]> gitweb.factorcode.org Git - factor.git/commitdiff
Merge branch 'master' of git://github.com/slavapestov/factor
authorErik Charlebois <erikcharlebois@gmail.com>
Sat, 10 Apr 2010 06:49:40 +0000 (23:49 -0700)
committerErik Charlebois <erikcharlebois@gmail.com>
Sat, 10 Apr 2010 06:49:40 +0000 (23:49 -0700)
66 files changed:
basis/alien/parser/parser.factor
basis/alien/syntax/syntax-docs.factor
basis/alien/syntax/syntax.factor
basis/cairo/ffi/ffi.factor
basis/core-graphics/core-graphics.factor
basis/images/pgm/authors.txt [new file with mode: 0644]
basis/images/pgm/pgm-tests.factor [new file with mode: 0644]
basis/images/pgm/pgm.factor [new file with mode: 0644]
basis/images/pgm/summary.txt [new file with mode: 0644]
basis/images/ppm/authors.txt [new file with mode: 0644]
basis/images/ppm/ppm-tests.factor [new file with mode: 0644]
basis/images/ppm/ppm.factor [new file with mode: 0644]
basis/images/ppm/summary.txt [new file with mode: 0644]
basis/pango/fonts/fonts.factor
basis/windows/advapi32/advapi32.factor
basis/windows/ddk/winusb/winusb.factor
basis/windows/directx/d3d11shader/d3d11shader.factor
basis/windows/directx/d3d9types/d3d9types.factor
basis/windows/directx/d3dcsx/d3dcsx.factor
basis/windows/directx/d3dx9shader/d3dx9shader.factor
basis/windows/directx/dcommon/dcommon.factor
basis/windows/directx/dwrite/dwrite.factor
basis/windows/directx/dxgitype/dxgitype.factor
basis/windows/directx/xapo/xapo.factor
basis/windows/kernel32/kernel32.factor
basis/windows/usp10/usp10.factor
basis/x11/constants/constants.factor
extra/chipmunk/ffi/ffi.factor
extra/elf/elf.factor
extra/fluids/authors.txt [new file with mode: 0644]
extra/fluids/colors.ppm [new file with mode: 0644]
extra/fluids/fluids.factor [new file with mode: 0644]
extra/fluids/particle2.pgm [new file with mode: 0644]
extra/freetype/freetype.factor
extra/gpu/effects/blur/authors.txt [new file with mode: 0644]
extra/gpu/effects/blur/blur.factor [new file with mode: 0644]
extra/gpu/effects/blur/summary.txt [new file with mode: 0644]
extra/gpu/effects/quad/authors.txt [new file with mode: 0644]
extra/gpu/effects/quad/quad.factor [new file with mode: 0644]
extra/gpu/effects/quad/summary.txt [new file with mode: 0644]
extra/gpu/effects/step/authors.txt [new file with mode: 0644]
extra/gpu/effects/step/step.factor [new file with mode: 0644]
extra/gpu/effects/step/summary.txt [new file with mode: 0644]
extra/gpu/util/util.factor
extra/images/testing/pgm/radial.ascii.fig [new file with mode: 0644]
extra/images/testing/pgm/radial.ascii.pgm [new file with mode: 0644]
extra/images/testing/pgm/radial.binary.fig [new file with mode: 0644]
extra/images/testing/pgm/radial.binary.pgm [new file with mode: 0644]
extra/images/testing/ppm/ascii.fig [new file with mode: 0644]
extra/images/testing/ppm/ascii.ppm [new file with mode: 0644]
extra/images/testing/ppm/binary.fig [new file with mode: 0644]
extra/images/testing/ppm/binary.ppm [new file with mode: 0644]
extra/libusb/libusb.factor
extra/llvm/core/core.factor
extra/macho/authors.txt [new file with mode: 0644]
extra/macho/macho.factor [new file with mode: 0644]
extra/macho/summary.txt [new file with mode: 0644]
extra/tokyo/alien/tcadb/tcadb.factor
extra/tokyo/alien/tcbdb/tcbdb.factor
extra/tokyo/alien/tcrdb/tcrdb.factor
extra/tokyo/alien/tctdb/tctdb.factor
extra/tokyo/alien/tcutil/tcutil.factor
misc/fuel/fuel-font-lock.el
misc/fuel/fuel-syntax.el
unmaintained/cryptlib/libcl/libcl.factor
unmaintained/pdf/libhpdf/libhpdf.factor

index 4c5f5dbd6aa0f189d6dd0f8aed5e379f35cc3c68..0891caa04ab9c54c12b9e441a175e4c14ee518cb 100644 (file)
@@ -4,7 +4,7 @@ USING: accessors alien alien.c-types alien.libraries arrays
 assocs classes combinators combinators.short-circuit
 compiler.units effects grouping kernel parser sequences
 splitting words fry locals lexer namespaces summary math
-vocabs.parser ;
+vocabs.parser words.constant ;
 IN: alien.parser
 
 : parse-c-type-name ( name -- word )
@@ -51,14 +51,17 @@ ERROR: *-in-c-type-name name ;
     dup "*" tail?
     [ *-in-c-type-name ] when ;
 
-: CREATE-C-TYPE ( -- word )
-    scan validate-c-type-name current-vocab create {
+: (CREATE-C-TYPE) ( word -- word )
+    validate-c-type-name current-vocab create {
         [ fake-definition ]
         [ set-word ]
         [ reset-c-type ]
         [ ]
     } cleave ;
 
+: CREATE-C-TYPE ( -- word )
+    scan (CREATE-C-TYPE) ;
+
 <PRIVATE
 GENERIC: return-type-name ( type -- name )
 
@@ -72,6 +75,18 @@ M: pointer return-type-name to>> return-type-name CHAR: * suffix ;
 
 PRIVATE>
 
+: define-enum-member ( word-string value -- next-value )
+     [ create-in ] dip [ define-constant ] keep 1 + ;
+
+: parse-enum-member ( word-string value -- next-value )
+     over "{" =
+     [ 2drop scan scan-object define-enum-member "}" expect ]
+     [ define-enum-member ] if ;
+
+: parse-enum-members ( counter -- )
+     scan dup ";" = not
+     [ swap parse-enum-member parse-enum-members ] [ 2drop ] if ;
+
 : scan-function-name ( -- return function )
     scan-c-type scan parse-pointers ;
 
index 58b43cec31f5668d6bac99c8a785113fab7cf25f..df2092648077b4240cf3fcad55281ad99debde7e 100644 (file)
@@ -58,15 +58,15 @@ HELP: TYPEDEF:
 { $notes "This word differs from " { $link typedef } " in that it runs at parse time, to ensure correct ordering of operations when loading source files. Words defined in source files are compiled before top-level forms are run, so if a source file defines C binding words and uses " { $link typedef } ", the type alias won't be available at compile time." } ;
 
 HELP: C-ENUM:
-{ $syntax "C-ENUM: words... ;" }
-{ $values { "words" "a sequence of word names" } }
-{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to its index in the enumeration definition. The first word pushes 0." }
+{ $syntax "C-ENUM: type/f words... ;" }
+{ $values { "type" "a name to typedef to int or f" } { "words" "a sequence of word names" } }
+{ $description "Creates a sequence of word definitions in the current vocabulary. Each word pushes an integer according to the rules of C enums." }
 { $notes "This word emulates a C-style " { $snippet "enum" } " in Factor. While this feature can be used for any purpose, using integer constants is discouraged unless it is for interfacing with C libraries. Factor code should use " { $link "words.symbol" } " or " { $link "singletons" } " instead." }
 { $examples
     "Here is an example enumeration definition:"
-    { $code "C-ENUM: red green blue ;" }
+    { $code "C-ENUM: color_t red { green 3 } blue ;" }
     "It is equivalent to the following series of definitions:"
-    { $code "CONSTANT: red 0" "CONSTANT: green 1" "CONSTANT: blue 2" }
+    { $code "CONSTANT: red 0" "CONSTANT: green 3" "CONSTANT: blue 4" }
 } ;
 
 HELP: C-TYPE:
index 9eb8ca6287291f8f55a1c3de932e5367abec5e44..00148a82d4db3e1b60e16486560480e1714ff712 100644 (file)
@@ -25,8 +25,10 @@ SYNTAX: TYPEDEF:
     scan-c-type CREATE-C-TYPE dup save-location typedef ;
 
 SYNTAX: C-ENUM:
-    ";" parse-tokens
-    [ [ create-in ] dip define-constant ] each-index ;
+    scan dup "f" =
+    [ drop ]
+    [ (CREATE-C-TYPE) dup save-location int swap typedef ] if
+    0 parse-enum-members ;
 
 SYNTAX: C-TYPE:
     void CREATE-C-TYPE typedef ;
index c4700d2dadec0adbb1b05dd9ee4205951a8e3854..42b281c33c47bae7b7d4e9e2761ecb531f89f183 100644 (file)
@@ -44,8 +44,7 @@ TYPEDEF: void* cairo_destroy_func_t
 STRUCT: cairo_user_data_key_t
     { unused int } ;
 
-TYPEDEF: int cairo_status_t
-C-ENUM:
+C-ENUM: cairo_status_t
     CAIRO_STATUS_SUCCESS
     CAIRO_STATUS_NO_MEMORY
     CAIRO_STATUS_INVALID_RESTORE
@@ -125,8 +124,7 @@ FUNCTION: void
 cairo_pop_group_to_source ( cairo_t* cr ) ;
 
 ! Modify state
-TYPEDEF: int cairo_operator_t
-C-ENUM:
+C-ENUM: cairo_operator_t
     CAIRO_OPERATOR_CLEAR
 
     CAIRO_OPERATOR_SOURCE
@@ -163,8 +161,7 @@ cairo_set_source_surface ( cairo_t* cr, cairo_surface_t* surface, double x, doub
 FUNCTION: void
 cairo_set_tolerance ( cairo_t* cr, double tolerance ) ;
 
-TYPEDEF: int cairo_antialias_t
-C-ENUM:
+C-ENUM: cairo_antialias_t
     CAIRO_ANTIALIAS_DEFAULT
     CAIRO_ANTIALIAS_NONE
     CAIRO_ANTIALIAS_GRAY
@@ -173,8 +170,7 @@ C-ENUM:
 FUNCTION: void
 cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ;
 
-TYPEDEF: int cairo_fill_rule_t
-C-ENUM:
+C-ENUM: cairo_fill_rule_t
     CAIRO_FILL_RULE_WINDING
     CAIRO_FILL_RULE_EVEN_ODD ;
 
@@ -184,8 +180,7 @@ cairo_set_fill_rule ( cairo_t* cr, cairo_fill_rule_t fill_rule ) ;
 FUNCTION: void
 cairo_set_line_width ( cairo_t* cr, double width ) ;
 
-TYPEDEF: int cairo_line_cap_t
-C-ENUM:
+C-ENUM: cairo_line_cap_t
     CAIRO_LINE_CAP_BUTT
     CAIRO_LINE_CAP_ROUND
     CAIRO_LINE_CAP_SQUARE ;
@@ -193,8 +188,7 @@ C-ENUM:
 FUNCTION: void
 cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ;
 
-TYPEDEF: int cairo_line_join_t
-C-ENUM:
+C-ENUM: cairo_line_join_t
     CAIRO_LINE_JOIN_MITER
     CAIRO_LINE_JOIN_ROUND
     CAIRO_LINE_JOIN_BEVEL ;
@@ -379,35 +373,30 @@ STRUCT: cairo_font_extents_t
     { max_x_advance double }
     { max_y_advance double } ;
 
-TYPEDEF: int cairo_font_slant_t
-C-ENUM:
+C-ENUM: cairo_font_slant_t
     CAIRO_FONT_SLANT_NORMAL
     CAIRO_FONT_SLANT_ITALIC
     CAIRO_FONT_SLANT_OBLIQUE ;
 
-TYPEDEF: int cairo_font_weight_t
-C-ENUM:
+C-ENUM: cairo_font_weight_t
     CAIRO_FONT_WEIGHT_NORMAL
     CAIRO_FONT_WEIGHT_BOLD ;
 
-TYPEDEF: int cairo_subpixel_order_t
-C-ENUM:
+C-ENUM: cairo_subpixel_order_t
     CAIRO_SUBPIXEL_ORDER_DEFAULT
     CAIRO_SUBPIXEL_ORDER_RGB
     CAIRO_SUBPIXEL_ORDER_BGR
     CAIRO_SUBPIXEL_ORDER_VRGB
     CAIRO_SUBPIXEL_ORDER_VBGR ;
 
-TYPEDEF: int cairo_hint_style_t
-C-ENUM:
+C-ENUM: cairo_hint_Style_t
     CAIRO_HINT_STYLE_DEFAULT
     CAIRO_HINT_STYLE_NONE
     CAIRO_HINT_STYLE_SLIGHT
     CAIRO_HINT_STYLE_MEDIUM
     CAIRO_HINT_STYLE_FULL ;
 
-TYPEDEF: int cairo_hint_metrics_t
-C-ENUM:
+C-ENUM: cairo_hint_metrics_t
     CAIRO_HINT_METRICS_DEFAULT
     CAIRO_HINT_METRICS_OFF
     CAIRO_HINT_METRICS_ON ;
@@ -527,8 +516,7 @@ cairo_font_face_get_reference_count ( cairo_font_face_t* font_face ) ;
 FUNCTION: cairo_status_t
 cairo_font_face_status ( cairo_font_face_t* font_face ) ;
 
-TYPEDEF: int cairo_font_type_t
-C-ENUM:
+C-ENUM: cairo_font_type_t
     CAIRO_FONT_TYPE_TOY
     CAIRO_FONT_TYPE_FT
     CAIRO_FONT_TYPE_WIN32
@@ -640,8 +628,7 @@ cairo_get_target ( cairo_t* cr ) ;
 FUNCTION: cairo_surface_t*
 cairo_get_group_target ( cairo_t* cr ) ;
 
-TYPEDEF: int cairo_path_data_type_t
-C-ENUM:
+C-ENUM: cairo_path_data_type_t
     CAIRO_PATH_MOVE_TO
     CAIRO_PATH_LINE_TO
     CAIRO_PATH_CURVE_TO
index 1b7693da142081b62ff765af7e9e693dd928737f..92925f5d645819da6ef0660d1371714f230f3780 100644 (file)
@@ -6,8 +6,7 @@ images images.memory core-graphics.types core-foundation.utilities
 opengl.gl literals ;
 IN: core-graphics
 
-! CGImageAlphaInfo
-C-ENUM:
+C-ENUM: CGImageAlphaInfo
 kCGImageAlphaNone
 kCGImageAlphaPremultipliedLast
 kCGImageAlphaPremultipliedFirst
diff --git a/basis/images/pgm/authors.txt b/basis/images/pgm/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/basis/images/pgm/pgm-tests.factor b/basis/images/pgm/pgm-tests.factor
new file mode 100644 (file)
index 0000000..7bfade4
--- /dev/null
@@ -0,0 +1,7 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: images.testing ;
+IN: images.pgm.tests
+
+"vocab:images/testing/pgm/radial.binary.pgm" decode-test
+"vocab:images/testing/pgm/radial.ascii.pgm" decode-test
diff --git a/basis/images/pgm/pgm.factor b/basis/images/pgm/pgm.factor
new file mode 100644 (file)
index 0000000..e673565
--- /dev/null
@@ -0,0 +1,63 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors alien.c-types ascii combinators images images.loader
+io io.encodings.ascii io.encodings.string kernel locals make math
+math.parser sequences specialized-arrays ;
+SPECIALIZED-ARRAY: ushort
+IN: images.pgm
+
+SINGLETON: pgm-image
+"pgm" pgm-image register-image-class
+
+: read-token ( -- token )
+    [ read1 dup blank?
+      [ t ]
+      [ dup CHAR: # =
+        [ "\n" read-until 2drop t ]
+        [ f ] if
+      ] if
+    ] [ drop ] while
+    " \n\r\t" read-until drop swap
+    prefix ascii decode ;
+
+: read-number ( -- number )
+    read-token string>number ;
+
+:: read-numbers ( n lim -- )
+    n lim = [
+        read-number ,
+        n 1 + lim read-numbers
+    ] unless ;
+
+ERROR: INSPECT a ;
+:: read-pgm ( -- image )
+    read-token         :> type
+    read-number        :> width
+    read-number        :> height
+    read-number        :> max
+    width height *     :> npixels
+    max 256 >=         :> wide
+    
+    type {
+        { "P2" [ [ 0 npixels read-numbers ] wide [ ushort-array{ } ] [ B{ } ] if make ] }
+        { "P5" [ wide [ 2 ] [ 1 ] if npixels * read ] }
+    } case :> data
+    
+    image new
+    L                                                  >>component-order
+    { width height }                                   >>dim
+    f                                                  >>upside-down?
+    data                                               >>bitmap
+    wide [ ushort-components ] [ ubyte-components ] if >>component-type ;
+
+M: pgm-image stream>image
+    drop [ read-pgm ] with-input-stream ;
+
+M: pgm-image image>stream
+    drop {
+        [ drop "P5\n" ascii encode write ]
+        [ dim>> first number>string " " append ascii encode write ]
+        [ dim>> second number>string "\n" append ascii encode write ]
+        [ component-type>> ubyte-components = [ "255\n" ] [ "65535\n" ] if ascii encode write ]
+        [ bitmap>> write ]
+    } cleave ;
diff --git a/basis/images/pgm/summary.txt b/basis/images/pgm/summary.txt
new file mode 100644 (file)
index 0000000..f558b7c
--- /dev/null
@@ -0,0 +1 @@
+Image loading for PGM image files.
diff --git a/basis/images/ppm/authors.txt b/basis/images/ppm/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/basis/images/ppm/ppm-tests.factor b/basis/images/ppm/ppm-tests.factor
new file mode 100644 (file)
index 0000000..208af76
--- /dev/null
@@ -0,0 +1,7 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: images.testing ;
+IN: images.ppm.tests
+
+"vocab:images/testing/ppm/binary.ppm" decode-test
+"vocab:images/testing/ppm/ascii.ppm" decode-test
diff --git a/basis/images/ppm/ppm.factor b/basis/images/ppm/ppm.factor
new file mode 100644 (file)
index 0000000..d50d517
--- /dev/null
@@ -0,0 +1,59 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors ascii combinators images images.loader io
+io.encodings.ascii io.encodings.string kernel locals make math
+math.parser prettyprint sequences ;
+IN: images.ppm
+
+SINGLETON: ppm-image
+"ppm" ppm-image register-image-class
+
+: read-token ( -- token )
+    [ read1 dup blank?
+      [ t ]
+      [ dup CHAR: # =
+        [ "\n" read-until 2drop t ]
+        [ f ] if
+      ] if
+    ] [ drop ] while
+    " \n\r\t" read-until drop swap
+    prefix ascii decode ;
+
+: read-number ( -- number )
+    read-token string>number ;
+
+:: read-numbers ( n lim -- )
+    n lim = [
+        read-number ,
+        n 1 + lim read-numbers
+    ] unless ;
+
+:: read-ppm ( -- image )
+    read-token         :> type
+    read-number        :> width
+    read-number        :> height
+    read-number        :> max
+    width height 3 * * :> npixels
+    type {
+        { "P3" [ [ 0 npixels read-numbers ] B{ } make ] }
+        { "P6" [ npixels read ] }
+    } case :> data
+    
+    image new
+    RGB              >>component-order
+    { width height } >>dim
+    f                >>upside-down?
+    data             >>bitmap
+    ubyte-components >>component-type ;
+
+M: ppm-image stream>image
+    drop [ read-ppm ] with-input-stream ;
+
+M: ppm-image image>stream
+    drop {
+        [ drop "P6\n" ascii encode write ]
+        [ dim>> first number>string " " append ascii encode write ]
+        [ dim>> second number>string "\n" append ascii encode write ]
+        [ drop "255\n" ascii encode write ]
+        [ bitmap>> write ]
+    } cleave ;
diff --git a/basis/images/ppm/summary.txt b/basis/images/ppm/summary.txt
new file mode 100644 (file)
index 0000000..f527e2a
--- /dev/null
@@ -0,0 +1 @@
+Image loading for PPM image files.
index c2a7ef128ddda668b8f29b6e2794ef7c7219b19c..7ea4e0a0c201cade2829181f38cbc093d24f8523 100644 (file)
@@ -8,8 +8,7 @@ IN: pango.fonts
 
 LIBRARY: pango
 
-TYPEDEF: int PangoStyle
-C-ENUM:
+C-ENUM: PangoStyle
 PANGO_STYLE_NORMAL
 PANGO_STYLE_OBLIQUE
 PANGO_STYLE_ITALIC ;
index 72769971e603fb3a5de2c87ecd82d36854c3b9e2..1e6a1c0b0b880787db7ab90c6eba73b82e81b01f 100755 (executable)
@@ -146,8 +146,7 @@ CONSTANT: TokenSessionReference 14
 CONSTANT: TokenSandBoxInert 15
 ! } TOKEN_INFORMATION_CLASS;
 
-TYPEDEF: DWORD ACCESS_MODE
-C-ENUM:
+C-ENUM: ACCESS_MODE
     NOT_USED_ACCESS
     GRANT_ACCESS
     SET_ACCESS
index 3b98e7e8cac04a2750c8f8a1c35468358642d664..5e43b7f884821e95a34242f01a78c60237030843 100644 (file)
@@ -22,12 +22,11 @@ STRUCT: USB_INTERFACE_DESCRIPTOR
     { iInterface         UCHAR } ;
 TYPEDEF: USB_INTERFACE_DESCRIPTOR* PUSB_INTERFACE_DESCRIPTOR
 
-C-ENUM:
+C-ENUM: USBD_PIPE_TYPE
     UsbdPipeTypeControl
     UsbdPipeTypeIsochronous
     UsbdPipeTypeBulk
     UsbdPipeTypeInterrupt ;
-TYPEDEF: int USBD_PIPE_TYPE
 
 STRUCT: WINUSB_PIPE_INFORMATION
     { PipeType                   USBD_PIPE_TYPE }
index 02ab9bb1771555b8f0b86f73c32c753cd68e2513..08146300f275564fdf9b8ff0d2e3b10fec771648 100644 (file)
@@ -24,11 +24,11 @@ CONSTANT: D3D11_RETURN_TYPE_DOUBLE    7
 CONSTANT: D3D11_RETURN_TYPE_CONTINUED 8
 TYPEDEF: int D3D11_RESOURCE_RETURN_TYPE
 
-C-ENUM: D3D11_CT_CBUFFER
-        D3D11_CT_TBUFFER
-        D3D11_CT_INTERFACE_POINTERS
-        D3D11_CT_RESOURCE_BIND_INFO ;
-TYPEDEF: int D3D11_CBUFFER_TYPE
+C-ENUM: D3D11_CBUFFER_TYPE
+    D3D11_CT_CBUFFER
+    D3D11_CT_TBUFFER
+    D3D11_CT_INTERFACE_POINTERS
+    D3D11_CT_RESOURCE_BIND_INFO ;
 TYPEDEF: D3D11_CBUFFER_TYPE* LPD3D11_CBUFFER_TYPE
 
 STRUCT: D3D11_SIGNATURE_PARAMETER_DESC
index a9485a8fcfc4ee2ca1d7131e0c284aed494703b9..09c19bcae44523f0c81e2fdba971f14ec5f28d06 100644 (file)
@@ -502,8 +502,7 @@ CONSTANT: MAXD3DDECLUSAGE         13
 CONSTANT: MAXD3DDECLUSAGEINDEX    15
 CONSTANT: MAXD3DDECLLENGTH        64
 
-TYPEDEF: int D3DDECLMETHOD
-C-ENUM:
+C-ENUM: D3DDECLMETHOD
     D3DDECLMETHOD_DEFAULT
     D3DDECLMETHOD_PARTIALU
     D3DDECLMETHOD_PARTIALV
index c2d3af8cf34399b3b869317b153cf08c593708eb..c6d0105fdc609bb151ad8e400c142d2f9bafd423 100644 (file)
@@ -48,10 +48,9 @@ COM-INTERFACE: ID3DX11FFT IUnknown {b3f7a938-4c93-4310-a675-b30d6de50553}
     HRESULT ForwardTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer )
     HRESULT InverseTransform ( ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer ) ;
 
-C-ENUM:
+C-ENUM: D3DX11_FFT_DATA_TYPE
     D3DX11_FFT_DATA_TYPE_REAL
     D3DX11_FFT_DATA_TYPE_COMPLEX ;
-TYPEDEF: int D3DX11_FFT_DATA_TYPE
 
 CONSTANT: D3DX11_FFT_DIM_MASK_1D 1
 CONSTANT: D3DX11_FFT_DIM_MASK_2D 3
index 12ba902fc5639548debc4eedd6cc463482fac8dd..4490acc7c9eb5b6d60470ba503604730282ec516 100644 (file)
@@ -41,22 +41,20 @@ STRUCT: D3DXSEMANTIC
     { UsageIndex UINT } ;
 TYPEDEF: D3DXSEMANTIC* LPD3DXSEMANTIC
 
-C-ENUM:
+C-ENUM: D3DXREGISTER_SET
     D3DXRS_BOOL
     D3DXRS_INT4
     D3DXRS_FLOAT4
     D3DXRS_SAMPLER ;
-TYPEDEF: int D3DXREGISTER_SET
 TYPEDEF: D3DXREGISTER_SET* LPD3DXREGISTER_SET
 
-C-ENUM:
+C-ENUM: D3DXPARAMETER_CLASS
     D3DXPC_SCALAR
     D3DXPC_VECTOR
     D3DXPC_MATRIX_ROWS
     D3DXPC_MATRIX_COLUMNS
     D3DXPC_OBJECT
     D3DXPC_STRUCT ;
-TYPEDEF: int D3DXPARAMETER_CLASS
 TYPEDEF: D3DXPARAMETER_CLASS* LPD3DXPARAMETER_CLASS
 
 C-ENUM:
index 3b80bd450957b486d10f1ce88136b6f2ccccff28..32d69f924c44a314c36d80644dddcbafdde04798 100644 (file)
@@ -1,7 +1,7 @@
 USING: alien.c-types alien.syntax ;
 IN: windows.directx.dcommon
 
-C-ENUM: DWRITE_MEASURING_MODE_NATURAL
-        DWRITE_MEASURING_MODE_GDI_CLASSIC
-        DWRITE_MEASURING_MODE_GDI_NATURAL ;
-TYPEDEF: int DWRITE_MEASURING_MODE
+C-ENUM: DWRITE_MEASURING_MODE
+    DWRITE_MEASURING_MODE_NATURAL
+    DWRITE_MEASURING_MODE_GDI_CLASSIC
+    DWRITE_MEASURING_MODE_GDI_NATURAL ;
index 3e4167ebad2001dfa1e3886a94da4af72b31340f..3d635a0dc481a5251e616b7949a920b5223ec1ac 100644 (file)
@@ -5,7 +5,7 @@ IN: windows.directx.dwrite
 
 LIBRARY: dwrite
 
-C-ENUM:
+C-ENUM: DWRITE_FONT_FILE_TYPE
     DWRITE_FONT_FILE_TYPE_UNKNOWN
     DWRITE_FONT_FILE_TYPE_CFF
     DWRITE_FONT_FILE_TYPE_TRUETYPE
@@ -14,9 +14,8 @@ C-ENUM:
     DWRITE_FONT_FILE_TYPE_TYPE1_PFB
     DWRITE_FONT_FILE_TYPE_VECTOR
     DWRITE_FONT_FILE_TYPE_BITMAP ;
-TYPEDEF: int DWRITE_FONT_FILE_TYPE
 
-C-ENUM:
+C-ENUM: DWRITE_FONT_FACE_TYPE
     DWRITE_FONT_FACE_TYPE_CFF
     DWRITE_FONT_FACE_TYPE_TRUETYPE
     DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTION
@@ -24,51 +23,49 @@ C-ENUM:
     DWRITE_FONT_FACE_TYPE_VECTOR
     DWRITE_FONT_FACE_TYPE_BITMAP
     DWRITE_FONT_FACE_TYPE_UNKNOWN ;
-TYPEDEF: int DWRITE_FONT_FACE_TYPE
-
-CONSTANT: DWRITE_FONT_SIMULATIONS_NONE    0
-CONSTANT: DWRITE_FONT_SIMULATIONS_BOLD    1
-CONSTANT: DWRITE_FONT_SIMULATIONS_OBLIQUE 2
-TYPEDEF: int DWRITE_FONT_SIMULATIONS
-
-CONSTANT: DWRITE_FONT_WEIGHT_THIN        100
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200
-CONSTANT: DWRITE_FONT_WEIGHT_LIGHT       300
-CONSTANT: DWRITE_FONT_WEIGHT_NORMAL      400
-CONSTANT: DWRITE_FONT_WEIGHT_REGULAR     400
-CONSTANT: DWRITE_FONT_WEIGHT_MEDIUM      500
-CONSTANT: DWRITE_FONT_WEIGHT_DEMI_BOLD   600
-CONSTANT: DWRITE_FONT_WEIGHT_SEMI_BOLD   600
-CONSTANT: DWRITE_FONT_WEIGHT_BOLD        700
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BOLD  800
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BOLD  800
-CONSTANT: DWRITE_FONT_WEIGHT_BLACK       900
-CONSTANT: DWRITE_FONT_WEIGHT_HEAVY       900
-CONSTANT: DWRITE_FONT_WEIGHT_EXTRA_BLACK 950
-CONSTANT: DWRITE_FONT_WEIGHT_ULTRA_BLACK 950
-TYPEDEF: int DWRITE_FONT_WEIGHT
-
-CONSTANT: DWRITE_FONT_STRETCH_UNDEFINED       0
-CONSTANT: DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1
-CONSTANT: DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2
-CONSTANT: DWRITE_FONT_STRETCH_CONDENSED       3
-CONSTANT: DWRITE_FONT_STRETCH_SEMI_CONDENSED  4
-CONSTANT: DWRITE_FONT_STRETCH_NORMAL          5
-CONSTANT: DWRITE_FONT_STRETCH_MEDIUM          5
-CONSTANT: DWRITE_FONT_STRETCH_SEMI_EXPANDED   6
-CONSTANT: DWRITE_FONT_STRETCH_EXPANDED        7
-CONSTANT: DWRITE_FONT_STRETCH_EXTRA_EXPANDED  8
-CONSTANT: DWRITE_FONT_STRETCH_ULTRA_EXPANDED  9
-TYPEDEF: int DWRITE_FONT_STRETCH
-
-C-ENUM:
+
+C-ENUM: DWRITE_FONT_SIMULATIONS
+    DWRITE_FONT_SIMULATIONS_NONE
+    DWRITE_FONT_SIMULATIONS_BOLD
+    DWRITE_FONT_SIMULATIONS_OBLIQUE ;
+
+C-ENUM: DWRITE_FONT_WEIGHT
+    { DWRITE_FONT_WEIGHT_THIN        100 }
+    { DWRITE_FONT_WEIGHT_EXTRA_LIGHT 200 }
+    { DWRITE_FONT_WEIGHT_ULTRA_LIGHT 200 }
+    { DWRITE_FONT_WEIGHT_LIGHT       300 }
+    { DWRITE_FONT_WEIGHT_NORMAL      400 }
+    { DWRITE_FONT_WEIGHT_REGULAR     400 }
+    { DWRITE_FONT_WEIGHT_MEDIUM      500 }
+    { DWRITE_FONT_WEIGHT_DEMI_BOLD   600 }
+    { DWRITE_FONT_WEIGHT_SEMI_BOLD   600 }
+    { DWRITE_FONT_WEIGHT_BOLD        700 }
+    { DWRITE_FONT_WEIGHT_EXTRA_BOLD  800 }
+    { DWRITE_FONT_WEIGHT_ULTRA_BOLD  800 }
+    { DWRITE_FONT_WEIGHT_BLACK       900 }
+    { DWRITE_FONT_WEIGHT_HEAVY       900 }
+    { DWRITE_FONT_WEIGHT_EXTRA_BLACK 950 }
+    { DWRITE_FONT_WEIGHT_ULTRA_BLACK 950 } ;
+
+C-ENUM: DWRITE_FONT_STRETCH
+    { DWRITE_FONT_STRETCH_UNDEFINED       0 }
+    { DWRITE_FONT_STRETCH_ULTRA_CONDENSED 1 }
+    { DWRITE_FONT_STRETCH_EXTRA_CONDENSED 2 }
+    { DWRITE_FONT_STRETCH_CONDENSED       3 }
+    { DWRITE_FONT_STRETCH_SEMI_CONDENSED  4 }
+    { DWRITE_FONT_STRETCH_NORMAL          5 }
+    { DWRITE_FONT_STRETCH_MEDIUM          5 }
+    { DWRITE_FONT_STRETCH_SEMI_EXPANDED   6 }
+    { DWRITE_FONT_STRETCH_EXPANDED        7 }
+    { DWRITE_FONT_STRETCH_EXTRA_EXPANDED  8 }
+    { DWRITE_FONT_STRETCH_ULTRA_EXPANDED  9 } ;
+
+C-ENUM: DWRITE_FONT_STYLE
     DWRITE_FONT_STYLE_NORMAL
     DWRITE_FONT_STYLE_OBLIQUE
     DWRITE_FONT_STYLE_ITALIC ;
-TYPEDEF: int DWRITE_FONT_STYLE
 
-C-ENUM:
+C-ENUM: DWRITE_INFORMATIONAL_STRING_ID
     DWRITE_INFORMATIONAL_STRING_NONE
     DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE
     DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS
@@ -85,7 +82,6 @@ C-ENUM:
     DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES
     DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES
     DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT ;
-TYPEDEF: int DWRITE_INFORMATIONAL_STRING_ID
 
 STRUCT: DWRITE_FONT_METRICS
     { designUnitsPerEm       USHORT }
@@ -112,10 +108,9 @@ STRUCT: DWRITE_GLYPH_OFFSET
     { advanceOffset  FLOAT }
     { ascenderOffset FLOAT } ;
 
-C-ENUM:
+C-ENUM: DWRITE_FACTORY_TYPE
     DWRITE_FACTORY_TYPE_SHARED
     DWRITE_FACTORY_TYPE_ISOLATED ;
-TYPEDEF: int DWRITE_FACTORY_TYPE
 
 C-TYPE: IDWriteFontFileStream
 
@@ -138,14 +133,12 @@ COM-INTERFACE: IDWriteFontFile IUnknown {739d886a-cef5-47dc-8769-1a8b41bebbb0}
     HRESULT GetLoader ( IDWriteFontFileLoader** fontFileLoader )
     HRESULT Analyze ( BOOL* isSupportedFontType, DWRITE_FONT_FILE_TYPE* fontFileType, DWRITE_FONT_FACE_TYPE* fontFaceType, UINT32* numberOfFaces ) ;
 
-TYPEDEF: int DWRITE_PIXEL_GEOMETRY
-C-ENUM:
+C-ENUM: DWRITE_PIXEL_GEOMETRY
     DWRITE_PIXEL_GEOMETRY_FLAT
     DWRITE_PIXEL_GEOMETRY_RGB
     DWRITE_PIXEL_GEOMETRY_BGR ;
 
-TYPEDEF: int DWRITE_RENDERING_MODE
-C-ENUM:
+C-ENUM: DWRITE_RENDERING_MODE
     DWRITE_RENDERING_MODE_DEFAULT
     DWRITE_RENDERING_MODE_ALIASED
     DWRITE_RENDERING_MODE_CLEARTYPE_GDI_CLASSIC
@@ -240,39 +233,32 @@ COM-INTERFACE: IDWriteFont IUnknown {acd16696-8c14-4f5d-877e-fe3fc1d32737}
     HRESULT HasCharacter ( UINT32 unicodeValue, BOOL* exists )
     HRESULT CreateFontFace ( IDWriteFontFace** fontFace ) ;
 
-TYPEDEF: int DWRITE_READING_DIRECTION
-C-ENUM:
+C-ENUM: DWRITE_READING_DRECTION
     DWRITE_READING_DIRECTION_LEFT_TO_RIGHT
     DWRITE_READING_DIRECTION_RIGHT_TO_LEFT ;
 
-TYPEDEF: int DWRITE_FLOW_DIRECTION
-C-ENUM:
+C-ENUM: DWRITE_FLOW_DIRECTION
     DWRITE_FLOW_DIRECTION_TOP_TO_BOTTOM ;
 
-TYPEDEF: int DWRITE_TEXT_ALIGNMENT
-C-ENUM:
+C-ENUM: DWRITE_TEXT_ALIGNMENT
     DWRITE_TEXT_ALIGNMENT_LEADING
     DWRITE_TEXT_ALIGNMENT_TRAILING
     DWRITE_TEXT_ALIGNMENT_CENTER ;
 
-TYPEDEF: int DWRITE_PARAGRAPH_ALIGNMENT
-C-ENUM:
+C-ENUM: DWRITE_PARAGRAPH_ALIGNMENT
     DWRITE_PARAGRAPH_ALIGNMENT_NEAR
     DWRITE_PARAGRAPH_ALIGNMENT_FAR
     DWRITE_PARAGRAPH_ALIGNMENT_CENTER ;
 
-TYPEDEF: int DWRITE_WORD_WRAPPING
-C-ENUM:
+C-ENUM: DWRITE_WORD_WRAPPING
     DWRITE_WORD_WRAPPING_WRAP
     DWRITE_WORD_WRAPPING_NO_WRAP ;
 
-TYPEDEF: int DWRITE_LINE_SPACING_METHOD
-C-ENUM:
+C-ENUM: DWRITE_LINE_SPACING_METHOD
     DWRITE_LINE_SPACING_METHOD_DEFAULT
     DWRITE_LINE_SPACING_METHOD_UNIFORM ;
 
-TYPEDEF: int DWRITE_TRIMMING_GRANULARITY
-C-ENUM:
+C-ENUM: DWRITE_TRIMMING_GRANULARITY
     DWRITE_TRIMMING_GRANULARITY_NONE
     DWRITE_TRIMMING_GRANULARITY_CHARACTER
     DWRITE_TRIMMING_GRANULARITY_WORD ;
@@ -410,31 +396,29 @@ COM-INTERFACE: IDWriteTypography IUnknown {55f1112b-1dc2-4b3c-9541-f46894ed85b6}
     UINT32 GetFontFeatureCount ( )
     HRESULT GetFontFeature ( UINT32 fontFeatureIndex, DWRITE_FONT_FEATURE* fontFeature ) ;
 
-CONSTANT: DWRITE_SCRIPT_SHAPES_DEFAULT   0
-CONSTANT: DWRITE_SCRIPT_SHAPES_NO_VISUAL 1
-TYPEDEF: int DWRITE_SCRIPT_SHAPES
+C-ENUM: DWRITE_SCRIPT_SHAPES
+    DWRITE_SCRIPT_SHAPES_DEFAULT
+    DWRITE_SCRIPT_SHAPES_NO_VISUAL ;
 
 STRUCT: DWRITE_SCRIPT_ANALYSIS
     { script USHORT               }
     { shapes DWRITE_SCRIPT_SHAPES } ;
 
-C-ENUM:
+C-ENUM: DWRITE_BREAK_CONDITION
     DWRITE_BREAK_CONDITION_NEUTRAL
     DWRITE_BREAK_CONDITION_CAN_BREAK
     DWRITE_BREAK_CONDITION_MAY_NOT_BREAK
     DWRITE_BREAK_CONDITION_MUST_BREAK ;
-TYPEDEF: int DWRITE_BREAK_CONDITION
 
 STRUCT: DWRITE_LINE_BREAKPOINT
     { data BYTE } ;
 
-C-ENUM:
+C-ENUM: DWRITE_NUMBER_SUBSTITUTION_METHOD
     DWRITE_NUMBER_SUBSTITUTION_METHOD_FROM_CULTURE
     DWRITE_NUMBER_SUBSTITUTION_METHOD_CONTEXTUAL
     DWRITE_NUMBER_SUBSTITUTION_METHOD_NONE
     DWRITE_NUMBER_SUBSTITUTION_METHOD_NATIONAL
     DWRITE_NUMBER_SUBSTITUTION_METHOD_TRADITIONAL ;
-TYPEDEF: int DWRITE_NUMBER_SUBSTITUTION_METHOD
 
 COM-INTERFACE: IDWriteNumberSubstitution IUnknown {14885CC9-BAB0-4f90-B6ED-5C366A2CD03D} ;
 
@@ -628,9 +612,9 @@ COM-INTERFACE: IDWriteGdiInterop IUnknown {1edd9491-9853-4299-898f-6432983b6f3a}
     HRESULT CreateFontFaceFromHdc ( HDC hdc, IDWriteFontFace** fontFace )
     HRESULT CreateBitmapRenderTarget ( HDC hdc, UINT32 width, UINT32 height, IDWriteBitmapRenderTarget** renderTarget ) ;
 
-C-ENUM: DWRITE_TEXTURE_ALIASED_1x1
-        DWRITE_TEXTURE_CLEARTYPE_3x1 ;
-TYPEDEF: int DWRITE_TEXTURE_TYPE
+C-ENUM: DWRITE_TEXTURE_TYPE
+    DWRITE_TEXTURE_ALIASED_1x1
+    DWRITE_TEXTURE_CLEARTYPE_3x1 ;
 
 CONSTANT: DWRITE_ALPHA_MAX 255
 
index 0b318f7af13e484c4a8469329c4fe65180e8c1ed..bdab49e6523ab96765bbca9bde1689984fc82654 100644 (file)
@@ -47,23 +47,23 @@ STRUCT: DXGI_RATIONAL
 { Numerator UINT }
 { Denominator UINT } ;
 
-C-ENUM: DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
-        DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
-        DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
-        DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
-TYPEDEF: int DXGI_MODE_SCANLINE_ORDER
+C-ENUM: DXGI_MODE_SCANLINE_ORDER
+    DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
+    DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
+    DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
+    DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST ;
 
-C-ENUM: DXGI_MODE_SCALING_UNSPECIFIED
-        DXGI_MODE_SCALING_CENTERED
-        DXGI_MODE_SCALING_STRETCHED ;
-TYPEDEF: int DXGI_MODE_SCALING
+C-ENUM: DXGI_MODE_SCALING
+    DXGI_MODE_SCALING_UNSPECIFIED
+    DXGI_MODE_SCALING_CENTERED
+    DXGI_MODE_SCALING_STRETCHED ;
 
-C-ENUM: DXGI_MODE_ROTATION_UNSPECIFIED
-        DXGI_MODE_ROTATION_IDENTITY
-        DXGI_MODE_ROTATION_ROTATE90
-        DXGI_MODE_ROTATION_ROTATE180
-        DXGI_MODE_ROTATION_ROTATE270 ;
-TYPEDEF: int DXGI_MODE_ROTATION
+C-ENUM: DXGI_MODE_ROTATION
+    DXGI_MODE_ROTATION_UNSPECIFIED
+    DXGI_MODE_ROTATION_IDENTITY
+    DXGI_MODE_ROTATION_ROTATE90
+    DXGI_MODE_ROTATION_ROTATE180
+    DXGI_MODE_ROTATION_ROTATE270 ;
 
 STRUCT: DXGI_MODE_DESC
 { Width UINT }
index 5878af80e02a9ffce25f824bc9499ab9459ed495..f071ea08d5af9ec7ef2577170b21445465c02606 100644 (file)
@@ -39,10 +39,9 @@ STRUCT: XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS
     { pFormat                    WAVEFORMATEX* }
     { MaxFrameCount              UINT32        } ;
 
-C-ENUM:
-        XAPO_BUFFER_SILENT
-        XAPO_BUFFER_VALID ;
-TYPEDEF: int XAPO_BUFFER_FLAGS
+C-ENUM: XAPO_BUFFER_FLAGS
+    XAPO_BUFFER_SILENT
+    XAPO_BUFFER_VALID ;
 
 STRUCT: XAPO_PROCESS_BUFFER_PARAMETERS
     { pBuffer                    void*             }
index c2622cbf4851fa8ed6e07f7bd8a4981350e4d9a0..a7c460f52583a2fb2e9a4aa78e0c5d903c23d8a9 100644 (file)
@@ -199,7 +199,7 @@ CONSTANT: THREAD_PRIORITY_LOWEST -2
 CONSTANT: THREAD_PRIORITY_NORMAL 0
 CONSTANT: THREAD_PRIORITY_TIME_CRITICAL 15
 
-C-ENUM:
+C-ENUM: COMPUTER_NAME_FORMAT
     ComputerNameNetBIOS
     ComputerNameDnsHostname
     ComputerNameDnsDomain
@@ -210,8 +210,6 @@ C-ENUM:
     ComputerNamePhysicalDnsFullyQualified
     ComputerNameMax ;
 
-TYPEDEF: uint COMPUTER_NAME_FORMAT
-
 STRUCT: OVERLAPPED
     { internal UINT_PTR }
     { internal-high UINT_PTR }
index 1c33aaf94018816a99d465aa84487a7290292ce9..21b4f77434ae8603668ada2ef7b76f65ab20f2f5 100644 (file)
@@ -37,22 +37,23 @@ FUNCTION: HRESULT ScriptLayout (
     int* piLogicalToVisual
 ) ;
 
-C-ENUM: SCRIPT_JUSTIFY_NONE
-SCRIPT_JUSTIFY_ARABIC_BLANK
-SCRIPT_JUSTIFY_CHARACTER
-SCRIPT_JUSTIFY_RESERVED1
-SCRIPT_JUSTIFY_BLANK
-SCRIPT_JUSTIFY_RESERVED2
-SCRIPT_JUSTIFY_RESERVED3
-SCRIPT_JUSTIFY_ARABIC_NORMAL
-SCRIPT_JUSTIFY_ARABIC_KASHIDA
-SCRIPT_JUSTIFY_ALEF
-SCRIPT_JUSTIFY_HA
-SCRIPT_JUSTIFY_RA
-SCRIPT_JUSTIFY_BA
-SCRIPT_JUSTIFY_BARA
-SCRIPT_JUSTIFY_SEEN
-SCRIPT_JUSTIFFY_RESERVED4 ;
+C-ENUM: f
+    SCRIPT_JUSTIFY_NONE
+    SCRIPT_JUSTIFY_ARABIC_BLANK
+    SCRIPT_JUSTIFY_CHARACTER
+    SCRIPT_JUSTIFY_RESERVED1
+    SCRIPT_JUSTIFY_BLANK
+    SCRIPT_JUSTIFY_RESERVED2
+    SCRIPT_JUSTIFY_RESERVED3
+    SCRIPT_JUSTIFY_ARABIC_NORMAL
+    SCRIPT_JUSTIFY_ARABIC_KASHIDA
+    SCRIPT_JUSTIFY_ALEF
+    SCRIPT_JUSTIFY_HA
+    SCRIPT_JUSTIFY_RA
+    SCRIPT_JUSTIFY_BA
+    SCRIPT_JUSTIFY_BARA
+    SCRIPT_JUSTIFY_SEEN
+    SCRIPT_JUSTIFFY_RESERVED4 ;
 
 STRUCT: SCRIPT_VISATTR
     { flags WORD } ;
index 763cddaaf10877f581eafc14d8bbe7f501bbbc7e..64c7e2f8ddd0639801a161f2f8717a79abe79a08 100644 (file)
@@ -406,4 +406,4 @@ CONSTANT: MSBFirst 1
 ! * EXTENDED WINDOW MANAGER HINTS
 ! *****************************************************************
 
-C-ENUM: _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;
+C-ENUM: _NET_WM_STATE_REMOVE _NET_WM_STATE_ADD _NET_WM_STATE_TOGGLE ;
index 0142b57a7727a87190cedf48b8da46fa4f699d44..7e46baf551c46a4ce18c3e5e641888971feb5b1f 100644 (file)
@@ -348,12 +348,11 @@ STRUCT: cpSegmentQueryInfo
     { t     cpFloat  }
     { n     cpVect   } ;
 
-C-ENUM:
+C-ENUM: cpShapeType
     CP_CIRCLE_SHAPE
     CP_SEGMENT_SHAPE
     CP_POLY_SHAPE
     CP_NUM_SHAPES ;
-TYPEDEF: int cpShapeType
 
 CALLBACK: cpBB cacheData_cb ( cpShape* shape, cpVect p, cpVect rot ) ;
 CALLBACK: void destroy_cb ( cpShape* shape ) ;
@@ -482,11 +481,10 @@ STRUCT: cpContact
 
 FUNCTION: cpContact* cpContactInit ( cpContact* con, cpVect p, cpVect n, cpFloat dist, cpHashValue hash ) ;
 
-C-ENUM:
+C-ENUM: cpArbiterState
     cpArbiterStateNormal
     cpArbiterStateFirstColl
     cpArbiterStateIgnore ;
-TYPEDEF: int cpArbiterState
 
 STRUCT: cpArbiter
     { numContacts int                 }
index 2ad82bc23cd7e2d003ecf7c2d99213471ad8457d..bf4de754d14004f0e4676aaf31e9f7493b7cd87e 100644 (file)
@@ -1,8 +1,11 @@
 ! Copyright (C) 2010 Erik Charlebois.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.c-types alien.syntax classes.struct ;
+USING: accessors alien alien.c-types alien.strings alien.syntax arrays
+classes.struct io.encodings.ascii kernel locals math math.intervals
+sequences specialized-arrays strings typed ;
 IN: elf
 
+! FFI data
 CONSTANT: EI_NIDENT 16
 CONSTANT: EI_MAG0       0
 CONSTANT: EI_MAG1       1
@@ -456,3 +459,154 @@ STRUCT: Elf32_Dyn
 STRUCT: Elf64_Dyn
     { d_tag Elf64_Sxword }
     { d_val Elf64_Xword  } ;
+
+! Low-level interface
+SPECIALIZED-ARRAYS: Elf32_Shdr Elf64_Shdr Elf32_Sym Elf64_Sym Elf32_Phdr Elf64_Phdr uchar ;
+UNION: Elf32/64_Ehdr Elf32_Ehdr Elf64_Ehdr ;
+UNION: Elf32/64_Shdr Elf32_Shdr Elf64_Shdr ;
+UNION: Elf32/64_Shdr-array Elf32_Shdr-array Elf64_Shdr-array ;
+UNION: Elf32/64_Sym Elf32_Sym Elf64_Sym ;
+UNION: Elf32/64_Sym-array Elf32_Sym-array Elf64_Sym-array ;
+UNION: Elf32/64_Phdr Elf32_Phdr Elf64_Phdr ;
+UNION: Elf32/64_Phdr-array Elf32_Phdr-array Elf64_Phdr-array ;
+
+TYPED: 64-bit? ( elf: Elf32/64_Ehdr -- ? )
+    e_ident>> EI_CLASS swap nth ELFCLASS64 = ;
+
+TYPED: elf-header ( c-ptr -- elf: Elf32/64_Ehdr )
+    [ Elf64_Ehdr memory>struct 64-bit? ] keep swap
+    [ Elf64_Ehdr memory>struct ]
+    [ Elf32_Ehdr memory>struct ] if ;
+
+TYPED:: elf-section-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Shdr-array )
+    elf [ e_shoff>> ] [ e_shnum>> ] bi :> ( off num )
+    off elf >c-ptr <displaced-alien> num
+    elf 64-bit?
+    [ <direct-Elf64_Shdr-array> ]
+    [ <direct-Elf32_Shdr-array> ] if ;
+
+TYPED:: elf-program-headers ( elf: Elf32/64_Ehdr -- headers: Elf32/64_Phdr-array )
+    elf [ e_phoff>> ] [ e_phnum>> ] bi :> ( off num )
+    off elf >c-ptr <displaced-alien> num
+    elf 64-bit?
+    [ <direct-Elf64_Phdr-array> ]
+    [ <direct-Elf32_Phdr-array> ] if ;
+
+TYPED: elf-loadable-segments ( headers: Elf32/64_Phdr-array -- headers: Elf32/64_Phdr-array )
+    [ p_type>> PT_LOAD = ] filter ;
+
+TYPED:: elf-segment-sections ( segment: Elf32/64_Phdr sections: Elf32/64_Shdr-array -- sections )
+    segment [ p_offset>> dup ] [ p_filesz>> + ] bi [a,b)                            :> segment-interval
+    sections [ dup [ sh_offset>> dup ] [ sh_size>> + ] bi [a,b) 2array ] { } map-as :> section-intervals
+    section-intervals [ second segment-interval interval-intersect empty-interval = not ]
+    filter [ first ] map ;
+
+TYPED:: virtual-address-segment ( elf: Elf32/64_Ehdr address -- program-header/f )
+    elf elf-program-headers elf-loadable-segments [
+        [ p_vaddr>> dup ] [ p_memsz>> + ] bi [a,b)
+        address swap interval-contains?
+    ] filter [ f ] [ first ] if-empty ;
+
+TYPED:: virtual-address-section ( elf: Elf32/64_Ehdr address -- section-header/f )
+    elf address virtual-address-segment :> segment
+    segment elf elf-section-headers elf-segment-sections :> sections
+    address segment p_vaddr>> - segment p_offset>> + :> faddress
+    sections [
+        [ sh_offset>> dup ] [ sh_size>> + ] bi [a,b)
+        faddress swap interval-contains?
+    ] filter [ f ] [ first ] if-empty ;
+
+TYPED:: elf-segment-data ( elf: Elf32/64_Ehdr header: Elf32/64_Phdr -- uchar-array/f )
+    header [ p_offset>> elf >c-ptr <displaced-alien> ] [ p_filesz>> ] bi <direct-uchar-array> ;
+
+TYPED:: elf-section-data ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- uchar-array/f )
+    header [ sh_offset>> elf >c-ptr <displaced-alien> ] [ sh_size>> ] bi <direct-uchar-array> ;
+
+TYPED:: elf-section-data-by-index ( elf: Elf32/64_Ehdr index -- header/f uchar-array/f )
+    elf elf-section-headers     :> sections
+    index sections nth          :> header
+    elf header elf-section-data :> data
+    header data ;
+
+TYPED:: elf-section-name ( elf: Elf32/64_Ehdr header: Elf32/64_Shdr -- name: string )
+    elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
+    header sh_name>> section-names <displaced-alien> ascii alien>string ;
+
+TYPED:: elf-section-data-by-name ( elf: Elf32/64_Ehdr name: string -- header/f uchar-array/f )
+    elf elf-section-headers                      :> sections
+    elf e_shstrndx>>                             :> ndx
+    elf ndx sections nth elf-section-data >c-ptr :> section-names
+    sections 1 tail [
+        sh_name>> section-names <displaced-alien> ascii alien>string name =
+    ] find nip
+    [ dup elf swap elf-section-data ]
+    [ f f ] if* ;
+
+TYPED:: elf-sections ( elf: Elf32/64_Ehdr -- sections )
+    elf elf-section-headers                                   :> sections
+    elf elf e_shstrndx>> elf-section-data-by-index nip >c-ptr :> section-names
+    sections [
+        [ sh_name>> section-names <displaced-alien>
+          ascii alien>string ] keep 2array
+    ] { } map-as ;
+
+TYPED:: elf-symbols ( elf: Elf32/64_Ehdr section-data: uchar-array -- symbols )
+    elf ".strtab" elf-section-data-by-name nip >c-ptr :> strings
+    section-data [ >c-ptr ] [ length ] bi
+    elf 64-bit?
+    [ Elf64_Sym heap-size / <direct-Elf64_Sym-array> ]
+    [ Elf32_Sym heap-size / <direct-Elf32_Sym-array> ] if
+    [ [ st_name>> strings <displaced-alien> ascii alien>string ] keep 2array ] { } map-as ;
+
+! High level interface
+TUPLE: elf elf-header ;
+TUPLE: section name elf-header section-header data ;
+TUPLE: segment elf-header program-header data ;
+TUPLE: symbol name elf-header sym data ;
+
+GENERIC: sections ( obj -- sections )
+    
+: <elf> ( c-ptr -- elf )
+    elf-header elf boa ;
+
+M:: elf sections ( elf -- sections )
+    elf elf-header>> elf-sections
+    [
+        first2 :> ( name header )
+        elf elf-header>> header elf-section-data :> data
+        name elf elf-header>> header data section boa
+    ] { } map-as ;
+
+:: segments ( elf -- segments )
+    elf elf-header>> elf-program-headers
+    [| header |
+        elf elf-header>> header elf-segment-data :> data
+        elf elf-header>> header data segment boa
+    ] { } map-as ;
+
+M:: segment sections ( segment -- sections )
+    segment program-header>>
+    segment elf-header>> elf-section-headers
+    elf-segment-sections
+
+    [| header |
+        segment elf-header>> header elf-section-name :> name
+        segment elf-header>> header elf-section-data :> data
+        name segment elf-header>> header data section boa
+    ] { } map-as ;
+
+:: symbols ( section -- symbols )
+    section elf-header>>
+    section data>>
+    elf-symbols
+    [
+        first2 :> ( name sym )
+        name section elf-header>> sym f symbol boa
+    ] { } map-as ;
+    
+:: symbol-data ( symbol -- data )
+    symbol [ elf-header>> ] [ sym>> st_value>> ] bi virtual-address-segment :> segment
+    symbol sym>> st_value>> segment p_vaddr>> - segment p_offset>> + :> faddress
+    faddress symbol elf-header>> >c-ptr <displaced-alien>
+    symbol sym>> st_size>> <direct-uchar-array> ;
+    
diff --git a/extra/fluids/authors.txt b/extra/fluids/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/extra/fluids/colors.ppm b/extra/fluids/colors.ppm
new file mode 100644 (file)
index 0000000..c12c455
Binary files /dev/null and b/extra/fluids/colors.ppm differ
diff --git a/extra/fluids/fluids.factor b/extra/fluids/fluids.factor
new file mode 100644 (file)
index 0000000..1fff38b
--- /dev/null
@@ -0,0 +1,142 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: accessors arrays classes.struct destructors game.loop
+game.worlds gpu gpu.buffers gpu.effects.blur gpu.framebuffers
+gpu.render gpu.shaders gpu.state gpu.textures gpu.util images
+images.loader kernel literals locals make math math.rectangles
+math.vectors namespaces opengl.gl sequences specialized-arrays
+ui.gadgets.worlds ui.gestures ui.pixel-formats gpu.effects.step
+images.pgm images.ppm ;
+FROM: alien.c-types => float ;
+SPECIALIZED-ARRAY: float
+IN: fluids
+
+STRUCT: float2_t
+    { x float }
+    { y float } ;
+
+: f2+ ( lhs rhs -- res )
+    [ [ x>> ] bi@ + ]
+    [ [ y>> ] bi@ + ]
+    2bi float2_t <struct-boa> ; inline
+
+: f2- ( lhs rhs -- res )
+    [ [ x>> ] bi@ - ]
+    [ [ y>> ] bi@ - ]
+    2bi float2_t <struct-boa> ; inline
+
+: f2*n ( lhs rhs -- res ) 
+    [ [ x>> ] dip * ]
+    [ [ y>> ] dip * ]
+    2bi float2_t <struct-boa> ; inline
+
+STRUCT: particle_t
+    { p  float2_t }
+    { p' float2_t }
+    { m  float    } ;
+SPECIALIZED-ARRAY: particle_t
+
+CONSTANT: gravity S{ float2_t f 0.0 -0.1 }
+
+:: verlet-integrate-particle ( p dt -- p' )
+    p p>> 2.0 f2*n :> v1
+    p p'>> :> v2
+    gravity dt dt * 1.0 p m>> 2.0 * / * f2*n :> v3
+    v1 v2 f2- v3 f2+
+    p p m>> particle_t <struct-boa> ; inline
+
+CONSTANT: initial-particles
+particle_t-array{
+    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.499 0.599 } 1.0 }
+    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.501 0.599 } 3.0 }
+    
+    S{ particle_t f S{ float2_t f 0.5 0.5 } S{ float2_t f 0.5 0.5 } 2.0 }
+    S{ particle_t f S{ float2_t f 0.5 0.6 } S{ float2_t f 0.5 0.599 } 1.0 }
+    S{ particle_t f S{ float2_t f 0.6 0.5 } S{ float2_t f 0.6 0.5 } 3.0 }
+    S{ particle_t f S{ float2_t f 0.7 0.5 } S{ float2_t f 0.7 0.5 } 1.0 }
+    S{ particle_t f S{ float2_t f 0.1 0.5 } S{ float2_t f 0.1 0.5 } 5.0 }
+    S{ particle_t f S{ float2_t f 0.2 0.5 } S{ float2_t f 0.2 0.5 } 1.0 }
+    S{ particle_t f S{ float2_t f 0.3 0.3 } S{ float2_t f 0.3 0.3 } 4.0 }
+    S{ particle_t f S{ float2_t f 0.5 0.15 } S{ float2_t f 0.5 0.15 } 1.0 }
+    S{ particle_t f S{ float2_t f 0.5 0.1 } S{ float2_t f 0.5 0.1 } 9.0 }
+}
+
+: integrate-particles! ( particles dt -- particles )
+    [ verlet-integrate-particle ] curry map! ;
+
+TUPLE: fluids-world < game-world
+    particles texture ramp { paused boolean initial: f } ;
+
+: make-texture ( pathname -- texture )
+    load-image
+    [
+        [ component-order>> ]
+        [ component-type>> ] bi
+        T{ texture-parameters
+           { wrap clamp-texcoord-to-edge }
+           { min-filter filter-nearest }
+           { mag-filter filter-nearest }
+           { min-mipmap-filter f } }
+        <texture-2d>
+    ]
+    [
+        0 swap [ allocate-texture-image ] 3keep 2drop
+    ] bi ;
+
+SYMBOL: fluid
+
+: integrate ( world -- )
+    particles>> $[ 60 fps 1000000 /f ] integrate-particles! drop ;
+
+: pause ( -- )
+    fluid get [ not ] change-paused drop ;
+
+: step ( -- )
+    fluid get paused>> [ fluid get integrate ] when ;
+
+M: fluids-world begin-game-world
+    dup fluid set
+    init-gpu
+    initial-particles clone >>particles
+    "resource:extra/fluids/particle2.pgm" make-texture >>texture
+    "resource:extra/fluids/colors.ppm" make-texture >>ramp
+    drop ;
+
+M: fluids-world end-game-world
+    drop ;
+
+M: fluids-world tick-game-world
+    dup paused>> [ drop ] [ integrate ] if ;
+
+M:: fluids-world draw-world* ( world -- )
+    world particles>> [
+        [ p>> [ x>> , ] [ y>> , ] bi ] each
+    ] curry float-array{ } make :> verts
+    
+    [ 
+        verts world texture>> 50.0 { 320 240 } blended-point-sprite-batch &dispose
+        
+        blend-state new set-gpu-state
+        
+        gaussian-blur &dispose world ramp>> { 1024 768 } step-texture &dispose
+        { 1024 768 } draw-texture
+    ] with-destructors
+    ;
+
+GAME: fluids {
+    { world-class fluids-world }
+    { title "Fluids Test" }
+    { pixel-format-attributes {
+        windowed double-buffered T{ depth-bits { value 24 } } } }
+    { pref-dim { 1024 768 } }
+    { tick-interval-micros $[ 60 fps ] }
+} ;
+
+MAIN: fluids
+
+fluids-world H{
+    { T{ button-down } [ [
+        hand-loc get { 1024 768 } v/ 2 v*n 1 v-n { 1 -1 } v* first2 float2_t <struct-boa>
+        dup 2.0 particle_t <struct-boa> suffix
+    ] change-particles drop ] }
+} set-gestures
diff --git a/extra/fluids/particle2.pgm b/extra/fluids/particle2.pgm
new file mode 100644 (file)
index 0000000..99bf7a4
--- /dev/null
@@ -0,0 +1,16388 @@
+P2
+# CREATOR: GIMP PNM Filter Version 1.1
+128 128
+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
+1
+1
+2
+2
+3
+3
+3
+4
+4
+4
+4
+4
+4
+4
+4
+3
+4
+3
+3
+3
+2
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+3
+3
+4
+5
+6
+6
+7
+7
+7
+7
+8
+8
+8
+8
+8
+8
+8
+8
+7
+7
+6
+6
+5
+5
+4
+4
+2
+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
+1
+2
+4
+4
+5
+6
+7
+7
+8
+8
+10
+10
+10
+11
+12
+12
+12
+12
+12
+12
+12
+12
+12
+11
+11
+11
+11
+10
+10
+9
+8
+7
+7
+6
+5
+5
+3
+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
+2
+3
+5
+6
+7
+7
+9
+10
+10
+11
+12
+13
+13
+14
+14
+15
+15
+15
+15
+16
+16
+16
+15
+15
+16
+15
+15
+15
+15
+14
+13
+13
+12
+12
+11
+10
+9
+7
+6
+6
+5
+4
+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
+0
+0
+0
+0
+0
+1
+1
+3
+4
+6
+7
+9
+9
+10
+12
+13
+13
+15
+15
+16
+17
+17
+18
+18
+19
+19
+19
+20
+20
+20
+20
+20
+20
+20
+19
+19
+19
+19
+18
+17
+17
+16
+15
+14
+13
+13
+12
+10
+9
+8
+7
+6
+5
+3
+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
+1
+2
+4
+6
+7
+9
+9
+11
+12
+14
+15
+15
+16
+17
+19
+19
+19
+20
+21
+21
+23
+23
+23
+23
+23
+24
+24
+24
+24
+24
+24
+24
+22
+23
+23
+21
+21
+20
+19
+19
+19
+18
+16
+16
+15
+13
+12
+11
+10
+8
+6
+5
+4
+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
+1
+3
+4
+6
+8
+9
+11
+12
+13
+14
+16
+17
+18
+19
+20
+21
+22
+23
+23
+25
+25
+26
+26
+26
+27
+27
+27
+27
+28
+27
+28
+28
+27
+27
+27
+26
+26
+26
+25
+25
+24
+23
+22
+21
+21
+19
+18
+17
+16
+15
+13
+12
+10
+9
+8
+5
+4
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+5
+6
+8
+9
+11
+13
+14
+16
+17
+19
+19
+20
+21
+23
+24
+25
+26
+27
+28
+28
+28
+29
+30
+30
+31
+31
+31
+32
+31
+32
+31
+32
+31
+32
+31
+31
+30
+29
+29
+28
+27
+27
+26
+25
+24
+23
+22
+20
+19
+18
+16
+15
+14
+13
+11
+9
+8
+6
+5
+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
+3
+4
+7
+8
+10
+12
+13
+15
+16
+18
+19
+20
+22
+23
+25
+26
+27
+28
+29
+30
+30
+32
+32
+33
+33
+34
+34
+35
+35
+35
+35
+35
+36
+35
+35
+35
+35
+34
+35
+34
+33
+33
+32
+32
+30
+30
+28
+28
+27
+26
+25
+23
+22
+21
+19
+18
+17
+15
+13
+11
+10
+8
+6
+5
+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
+2
+3
+6
+7
+10
+12
+13
+15
+17
+18
+20
+21
+22
+24
+26
+27
+28
+30
+31
+31
+32
+33
+34
+35
+36
+37
+37
+37
+38
+38
+39
+39
+40
+39
+39
+39
+39
+40
+39
+39
+38
+38
+37
+36
+36
+36
+34
+33
+33
+32
+30
+30
+29
+26
+26
+25
+23
+22
+20
+19
+17
+15
+14
+11
+9
+8
+5
+3
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+7
+9
+11
+13
+15
+16
+19
+20
+22
+23
+25
+27
+28
+30
+30
+32
+33
+34
+35
+37
+37
+39
+40
+39
+40
+41
+42
+42
+43
+43
+43
+43
+44
+43
+44
+43
+43
+43
+42
+43
+41
+41
+40
+40
+39
+38
+38
+37
+35
+34
+34
+32
+30
+30
+28
+27
+25
+24
+22
+21
+19
+17
+15
+13
+11
+9
+7
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+8
+11
+13
+15
+16
+18
+21
+22
+23
+25
+27
+28
+30
+32
+33
+35
+35
+37
+38
+39
+40
+41
+42
+43
+44
+45
+45
+45
+46
+47
+47
+47
+47
+47
+48
+47
+47
+47
+47
+47
+46
+45
+45
+45
+43
+43
+42
+41
+41
+40
+38
+37
+36
+34
+33
+32
+30
+28
+27
+26
+24
+22
+20
+18
+16
+15
+12
+10
+9
+6
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+10
+11
+14
+16
+17
+19
+22
+24
+25
+27
+29
+31
+32
+34
+36
+36
+38
+39
+40
+42
+42
+44
+45
+45
+47
+48
+48
+49
+49
+50
+51
+50
+51
+51
+52
+51
+51
+51
+51
+51
+50
+50
+50
+49
+48
+47
+47
+46
+44
+44
+43
+42
+41
+40
+38
+37
+35
+33
+32
+31
+28
+27
+25
+24
+22
+20
+18
+15
+13
+11
+10
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+8
+11
+12
+15
+17
+19
+21
+23
+25
+27
+29
+31
+32
+34
+35
+38
+39
+40
+42
+43
+44
+45
+47
+48
+49
+49
+51
+52
+52
+52
+53
+54
+54
+54
+55
+55
+55
+55
+55
+55
+55
+54
+54
+53
+54
+53
+52
+52
+50
+50
+49
+47
+46
+45
+44
+43
+42
+41
+39
+37
+36
+34
+32
+31
+29
+27
+25
+23
+21
+19
+17
+15
+13
+10
+8
+5
+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
+1
+4
+7
+8
+11
+13
+16
+18
+21
+22
+25
+27
+28
+30
+32
+34
+35
+37
+39
+41
+42
+44
+45
+47
+48
+50
+50
+51
+53
+54
+55
+55
+55
+56
+57
+58
+58
+58
+59
+58
+59
+59
+59
+59
+58
+58
+58
+57
+57
+57
+56
+55
+54
+53
+52
+52
+50
+49
+48
+47
+46
+44
+42
+41
+40
+37
+36
+34
+32
+31
+29
+26
+24
+22
+20
+18
+16
+13
+11
+9
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+4
+7
+9
+12
+14
+17
+19
+21
+23
+26
+28
+30
+32
+34
+36
+37
+39
+41
+43
+44
+46
+48
+49
+51
+52
+53
+55
+55
+56
+57
+58
+59
+59
+60
+61
+62
+62
+62
+63
+63
+63
+63
+63
+63
+62
+62
+62
+62
+61
+60
+60
+59
+58
+57
+56
+55
+54
+53
+52
+51
+49
+47
+46
+44
+43
+41
+40
+37
+36
+34
+32
+30
+28
+25
+23
+21
+19
+17
+15
+12
+10
+7
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+10
+13
+15
+17
+20
+22
+24
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+46
+48
+50
+51
+53
+54
+56
+57
+58
+60
+60
+61
+62
+63
+63
+64
+65
+66
+66
+66
+67
+67
+67
+66
+67
+67
+67
+66
+66
+65
+65
+64
+64
+63
+62
+61
+61
+59
+58
+57
+55
+54
+53
+51
+50
+49
+46
+44
+43
+41
+39
+37
+35
+33
+31
+29
+27
+24
+22
+20
+17
+15
+12
+10
+7
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+10
+13
+16
+19
+21
+23
+26
+28
+30
+32
+34
+37
+38
+41
+43
+45
+47
+48
+50
+52
+53
+55
+57
+58
+59
+60
+61
+63
+64
+65
+65
+67
+68
+68
+69
+69
+70
+70
+70
+70
+70
+71
+71
+71
+70
+71
+70
+69
+68
+68
+67
+66
+66
+65
+64
+63
+62
+60
+59
+58
+56
+55
+53
+52
+50
+49
+46
+44
+43
+40
+38
+37
+34
+32
+30
+28
+26
+23
+21
+18
+16
+13
+11
+8
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+11
+14
+16
+18
+21
+24
+26
+29
+31
+33
+36
+37
+40
+42
+44
+46
+48
+50
+51
+54
+55
+56
+58
+60
+61
+63
+64
+65
+67
+67
+69
+70
+71
+71
+72
+73
+73
+74
+74
+74
+74
+75
+75
+75
+75
+75
+74
+74
+73
+73
+72
+71
+70
+70
+69
+68
+66
+65
+64
+63
+62
+60
+59
+56
+55
+53
+51
+50
+48
+46
+44
+41
+39
+37
+35
+33
+31
+28
+26
+24
+21
+19
+16
+14
+11
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+9
+11
+13
+16
+19
+22
+24
+26
+30
+32
+34
+36
+39
+41
+43
+46
+48
+50
+51
+53
+55
+57
+58
+60
+62
+63
+65
+66
+68
+70
+70
+72
+73
+73
+75
+75
+76
+76
+77
+78
+78
+79
+78
+78
+79
+79
+78
+78
+78
+78
+77
+76
+75
+75
+75
+73
+73
+72
+70
+69
+68
+66
+65
+64
+62
+60
+59
+57
+56
+53
+51
+50
+48
+45
+44
+40
+39
+36
+34
+32
+29
+27
+24
+21
+19
+16
+14
+11
+9
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+6
+8
+11
+14
+16
+19
+22
+24
+27
+30
+32
+35
+37
+40
+42
+44
+46
+48
+50
+53
+55
+57
+58
+61
+62
+64
+65
+67
+69
+70
+72
+73
+74
+75
+77
+78
+78
+79
+80
+80
+81
+81
+82
+82
+82
+83
+83
+83
+83
+82
+82
+81
+81
+81
+80
+79
+78
+78
+77
+75
+74
+73
+72
+71
+68
+67
+66
+64
+62
+61
+59
+57
+55
+52
+50
+49
+46
+44
+42
+39
+37
+35
+32
+30
+28
+24
+22
+19
+17
+14
+11
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+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
+6
+9
+11
+14
+17
+19
+22
+25
+28
+31
+33
+35
+38
+41
+43
+45
+48
+50
+52
+54
+56
+58
+61
+62
+64
+65
+67
+69
+71
+72
+74
+75
+77
+78
+79
+80
+81
+82
+83
+84
+84
+85
+85
+86
+87
+87
+86
+86
+86
+86
+86
+86
+85
+85
+84
+84
+82
+82
+81
+80
+79
+78
+76
+75
+74
+73
+71
+69
+68
+66
+64
+62
+60
+58
+56
+54
+52
+50
+48
+45
+43
+40
+38
+35
+33
+30
+27
+25
+22
+20
+16
+13
+11
+8
+6
+2
+0
+0
+0
+0
+0
+0
+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
+5
+8
+11
+14
+17
+19
+22
+25
+28
+31
+33
+35
+38
+41
+43
+45
+48
+51
+52
+54
+57
+59
+62
+64
+65
+68
+69
+71
+73
+75
+76
+78
+79
+80
+82
+83
+84
+85
+86
+87
+87
+89
+89
+89
+90
+90
+90
+90
+90
+90
+91
+90
+90
+89
+89
+88
+88
+87
+85
+85
+84
+82
+81
+81
+79
+77
+76
+75
+73
+71
+69
+68
+66
+63
+61
+59
+57
+55
+52
+50
+48
+45
+43
+40
+38
+36
+33
+31
+28
+25
+22
+19
+16
+14
+11
+8
+5
+2
+0
+0
+0
+0
+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
+5
+8
+10
+13
+16
+20
+22
+25
+27
+31
+33
+36
+38
+41
+43
+46
+49
+51
+54
+56
+58
+60
+62
+64
+67
+69
+71
+73
+75
+77
+78
+80
+81
+83
+84
+85
+87
+88
+88
+89
+91
+91
+92
+93
+93
+94
+94
+94
+94
+94
+95
+94
+94
+94
+93
+93
+92
+91
+90
+90
+89
+87
+87
+86
+84
+83
+81
+80
+78
+77
+75
+73
+70
+69
+67
+65
+62
+60
+58
+56
+54
+51
+48
+46
+43
+42
+38
+36
+33
+31
+28
+25
+22
+19
+16
+13
+11
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+7
+10
+13
+17
+19
+22
+25
+28
+30
+33
+36
+39
+41
+44
+47
+50
+52
+54
+56
+59
+61
+64
+66
+68
+70
+72
+74
+76
+77
+80
+82
+83
+85
+87
+87
+89
+90
+92
+92
+93
+94
+96
+96
+97
+97
+97
+98
+98
+98
+98
+98
+98
+98
+98
+97
+97
+95
+95
+94
+93
+92
+92
+90
+89
+88
+86
+84
+83
+81
+79
+78
+76
+74
+72
+70
+68
+66
+64
+61
+59
+57
+54
+52
+50
+46
+44
+41
+39
+36
+33
+30
+27
+25
+22
+19
+16
+13
+10
+7
+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
+3
+6
+10
+13
+16
+19
+21
+24
+27
+30
+33
+36
+39
+41
+45
+47
+50
+53
+55
+57
+59
+62
+64
+67
+69
+72
+74
+76
+77
+79
+81
+84
+85
+86
+89
+90
+91
+92
+94
+95
+96
+97
+98
+99
+100
+100
+101
+101
+101
+102
+102
+102
+102
+102
+102
+101
+101
+100
+100
+99
+99
+98
+96
+95
+94
+93
+91
+90
+88
+87
+85
+83
+82
+79
+78
+75
+74
+71
+69
+66
+65
+63
+60
+57
+54
+52
+50
+47
+44
+42
+39
+36
+33
+30
+27
+24
+22
+19
+15
+12
+9
+6
+4
+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
+6
+9
+12
+16
+18
+21
+24
+27
+30
+34
+36
+39
+41
+44
+48
+49
+53
+55
+57
+61
+63
+66
+68
+70
+73
+75
+77
+79
+81
+82
+85
+87
+89
+90
+92
+93
+95
+97
+98
+99
+100
+101
+102
+103
+104
+104
+105
+105
+106
+106
+106
+106
+106
+106
+105
+106
+104
+104
+104
+102
+102
+101
+100
+99
+97
+96
+95
+93
+91
+91
+88
+87
+85
+83
+81
+79
+77
+75
+72
+71
+67
+65
+63
+60
+58
+55
+53
+50
+47
+44
+41
+39
+36
+33
+30
+27
+25
+21
+18
+15
+12
+9
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+11
+14
+18
+21
+24
+26
+30
+33
+35
+38
+42
+44
+47
+50
+53
+55
+58
+61
+63
+66
+68
+71
+73
+75
+77
+80
+82
+84
+87
+88
+90
+92
+94
+95
+97
+99
+100
+101
+103
+103
+105
+106
+107
+108
+108
+109
+109
+109
+110
+110
+110
+110
+110
+110
+109
+109
+108
+107
+106
+106
+105
+104
+102
+101
+100
+99
+97
+95
+94
+91
+90
+88
+86
+85
+82
+80
+77
+75
+73
+70
+69
+66
+63
+60
+58
+55
+53
+50
+47
+44
+41
+39
+36
+33
+30
+27
+24
+20
+18
+14
+12
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+7
+11
+14
+17
+20
+23
+26
+29
+33
+35
+38
+41
+44
+47
+50
+53
+55
+58
+61
+64
+66
+69
+71
+73
+77
+78
+81
+83
+86
+87
+90
+92
+93
+96
+97
+99
+100
+102
+103
+105
+107
+107
+108
+110
+110
+111
+112
+113
+113
+113
+114
+113
+113
+114
+113
+114
+113
+113
+112
+112
+110
+110
+108
+108
+106
+105
+104
+102
+100
+99
+97
+96
+94
+92
+90
+88
+85
+84
+81
+79
+76
+74
+71
+69
+66
+63
+61
+59
+55
+53
+50
+47
+44
+41
+39
+35
+32
+29
+26
+23
+20
+17
+13
+10
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+16
+19
+23
+26
+28
+32
+35
+38
+41
+44
+47
+50
+53
+56
+58
+61
+64
+67
+69
+72
+74
+77
+80
+82
+85
+86
+89
+91
+93
+95
+97
+99
+101
+103
+104
+106
+108
+108
+110
+111
+112
+114
+114
+115
+116
+117
+117
+117
+118
+118
+117
+118
+118
+117
+117
+116
+116
+115
+115
+113
+113
+111
+110
+108
+107
+106
+104
+102
+101
+99
+97
+95
+93
+91
+89
+86
+85
+82
+79
+76
+74
+72
+69
+66
+64
+61
+58
+56
+52
+49
+47
+44
+41
+38
+35
+31
+28
+26
+22
+19
+16
+12
+9
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+19
+21
+25
+28
+30
+34
+37
+40
+43
+47
+49
+52
+56
+58
+61
+63
+67
+70
+72
+75
+78
+80
+83
+85
+87
+90
+92
+94
+96
+99
+100
+102
+104
+106
+108
+109
+111
+112
+114
+115
+116
+117
+118
+119
+120
+120
+121
+121
+121
+121
+121
+122
+121
+122
+120
+120
+120
+119
+118
+118
+116
+115
+113
+112
+111
+109
+108
+106
+104
+102
+101
+98
+97
+94
+92
+90
+87
+85
+82
+80
+78
+75
+72
+70
+66
+64
+61
+58
+55
+52
+50
+46
+44
+40
+37
+34
+31
+27
+25
+21
+18
+15
+12
+9
+5
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+7
+11
+13
+17
+20
+23
+27
+30
+34
+37
+39
+43
+46
+48
+52
+55
+58
+61
+63
+66
+69
+72
+75
+77
+80
+83
+85
+88
+91
+93
+95
+97
+99
+102
+104
+106
+107
+110
+111
+113
+115
+116
+117
+119
+120
+121
+122
+123
+123
+124
+124
+125
+125
+125
+126
+125
+125
+125
+125
+124
+124
+122
+122
+120
+120
+118
+117
+116
+115
+112
+111
+109
+108
+105
+104
+102
+99
+97
+95
+93
+90
+88
+86
+83
+80
+77
+75
+72
+70
+66
+64
+61
+58
+54
+52
+48
+46
+43
+39
+36
+33
+30
+26
+23
+21
+17
+13
+10
+7
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+9
+12
+16
+19
+22
+25
+29
+32
+35
+39
+42
+45
+48
+51
+54
+57
+60
+63
+66
+70
+72
+75
+78
+81
+83
+86
+89
+90
+94
+96
+98
+101
+103
+105
+107
+109
+111
+113
+115
+116
+118
+119
+121
+122
+124
+125
+126
+127
+127
+128
+128
+129
+129
+129
+130
+129
+129
+129
+129
+128
+127
+126
+126
+124
+123
+122
+122
+119
+118
+116
+114
+113
+112
+109
+107
+105
+103
+101
+98
+96
+93
+91
+88
+86
+83
+81
+78
+75
+72
+69
+66
+63
+60
+57
+54
+51
+48
+45
+41
+38
+36
+32
+29
+26
+23
+19
+16
+13
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+8
+11
+14
+18
+21
+24
+28
+31
+34
+38
+41
+44
+47
+51
+53
+57
+60
+62
+66
+68
+72
+75
+78
+80
+83
+86
+89
+92
+93
+97
+99
+102
+104
+106
+109
+111
+112
+115
+116
+118
+120
+122
+124
+125
+126
+128
+128
+129
+131
+131
+132
+133
+133
+133
+134
+134
+133
+134
+133
+132
+132
+132
+130
+129
+129
+127
+126
+125
+123
+122
+120
+119
+116
+115
+112
+110
+108
+106
+104
+102
+99
+97
+94
+91
+89
+86
+83
+80
+78
+75
+72
+69
+66
+63
+60
+57
+53
+50
+47
+44
+41
+38
+34
+32
+28
+25
+21
+18
+15
+11
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+9
+13
+16
+20
+23
+27
+30
+33
+37
+40
+43
+46
+50
+53
+56
+59
+62
+65
+68
+72
+74
+77
+81
+83
+86
+89
+92
+94
+97
+100
+102
+105
+106
+109
+112
+114
+115
+118
+120
+122
+124
+125
+127
+129
+130
+131
+133
+134
+134
+135
+136
+136
+137
+137
+138
+137
+137
+137
+137
+137
+136
+135
+135
+133
+132
+131
+130
+128
+127
+125
+124
+122
+120
+118
+116
+114
+111
+109
+107
+105
+102
+100
+97
+95
+92
+89
+86
+83
+80
+77
+74
+71
+68
+66
+62
+59
+56
+53
+49
+46
+43
+39
+37
+33
+30
+27
+23
+20
+17
+13
+10
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+5
+8
+12
+15
+19
+22
+25
+29
+32
+35
+38
+42
+46
+48
+51
+55
+58
+61
+64
+68
+71
+74
+77
+80
+83
+86
+88
+91
+94
+97
+99
+103
+105
+108
+110
+113
+115
+117
+119
+121
+123
+125
+127
+129
+130
+132
+133
+135
+136
+137
+138
+139
+140
+140
+140
+141
+141
+141
+141
+141
+140
+140
+140
+138
+138
+137
+136
+135
+133
+132
+130
+128
+127
+125
+123
+121
+119
+117
+115
+113
+110
+108
+105
+103
+100
+97
+94
+92
+88
+86
+83
+80
+77
+74
+71
+68
+65
+62
+58
+55
+52
+48
+45
+42
+39
+36
+31
+29
+26
+22
+19
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+14
+17
+20
+24
+27
+30
+34
+37
+41
+44
+47
+51
+53
+57
+61
+64
+67
+70
+73
+76
+80
+82
+85
+88
+91
+94
+97
+100
+102
+105
+108
+110
+113
+116
+118
+121
+122
+125
+126
+128
+131
+133
+134
+135
+137
+139
+139
+141
+142
+143
+144
+144
+145
+145
+146
+146
+145
+145
+144
+145
+143
+142
+142
+141
+140
+139
+137
+135
+134
+132
+131
+128
+127
+125
+123
+120
+118
+116
+113
+110
+107
+105
+103
+100
+97
+95
+91
+89
+85
+82
+79
+76
+73
+70
+67
+63
+61
+57
+54
+50
+48
+44
+41
+37
+34
+30
+27
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+5
+8
+11
+15
+19
+21
+25
+29
+32
+36
+39
+43
+46
+50
+53
+56
+60
+63
+66
+69
+72
+76
+78
+82
+85
+87
+91
+94
+97
+100
+103
+106
+108
+111
+114
+116
+119
+121
+124
+126
+128
+130
+132
+134
+136
+138
+140
+141
+143
+143
+144
+145
+146
+147
+148
+148
+149
+149
+149
+149
+149
+148
+148
+148
+146
+146
+145
+144
+142
+141
+139
+138
+136
+134
+132
+130
+128
+126
+123
+121
+119
+116
+114
+111
+109
+105
+102
+99
+97
+94
+91
+88
+85
+81
+79
+76
+72
+69
+66
+63
+60
+56
+53
+49
+46
+43
+39
+36
+32
+29
+26
+22
+19
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+9
+13
+17
+20
+23
+27
+31
+34
+38
+41
+45
+48
+51
+55
+58
+61
+64
+68
+72
+74
+77
+81
+85
+87
+91
+93
+96
+99
+103
+106
+108
+111
+114
+116
+119
+121
+124
+126
+128
+131
+133
+136
+137
+139
+141
+143
+144
+146
+147
+148
+150
+151
+151
+152
+153
+153
+153
+153
+153
+152
+153
+152
+151
+151
+150
+149
+147
+146
+145
+143
+141
+140
+137
+136
+134
+131
+129
+126
+124
+121
+119
+116
+113
+110
+108
+105
+103
+99
+97
+93
+91
+88
+84
+81
+78
+74
+72
+68
+65
+61
+58
+55
+52
+48
+45
+41
+37
+34
+31
+27
+23
+20
+17
+13
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+18
+22
+25
+29
+33
+36
+39
+42
+46
+49
+53
+57
+60
+64
+66
+70
+74
+77
+80
+84
+86
+90
+93
+96
+99
+102
+105
+108
+111
+113
+116
+119
+122
+125
+127
+130
+132
+134
+136
+139
+141
+143
+145
+147
+148
+150
+151
+153
+153
+155
+155
+156
+156
+157
+157
+157
+157
+157
+156
+156
+155
+154
+153
+153
+151
+150
+148
+146
+144
+142
+140
+139
+136
+134
+131
+129
+127
+124
+122
+119
+117
+114
+111
+108
+105
+102
+99
+96
+93
+89
+86
+84
+80
+76
+73
+70
+67
+63
+60
+56
+54
+50
+46
+43
+39
+36
+32
+29
+25
+22
+18
+14
+11
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+9
+12
+16
+20
+24
+26
+31
+34
+38
+42
+45
+48
+52
+55
+59
+62
+65
+69
+72
+75
+79
+83
+86
+89
+92
+95
+98
+102
+104
+107
+111
+113
+116
+119
+122
+124
+128
+130
+133
+135
+137
+139
+142
+144
+146
+148
+150
+151
+153
+154
+156
+157
+158
+159
+160
+161
+161
+160
+161
+161
+161
+160
+160
+159
+158
+157
+156
+155
+154
+152
+150
+148
+147
+144
+142
+140
+137
+135
+133
+130
+128
+124
+122
+119
+116
+113
+111
+107
+104
+101
+98
+95
+92
+89
+85
+82
+79
+75
+72
+68
+65
+62
+58
+55
+52
+48
+45
+41
+38
+35
+30
+27
+23
+19
+16
+13
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+4
+7
+11
+14
+18
+22
+25
+28
+32
+36
+39
+43
+46
+50
+54
+57
+60
+64
+67
+71
+74
+77
+81
+84
+87
+91
+94
+98
+100
+104
+107
+110
+113
+116
+119
+122
+124
+127
+130
+133
+135
+139
+140
+143
+145
+147
+149
+152
+153
+155
+157
+158
+159
+161
+162
+163
+164
+164
+164
+164
+165
+165
+164
+165
+164
+162
+162
+161
+159
+158
+156
+155
+153
+152
+150
+147
+145
+142
+141
+138
+136
+133
+130
+127
+124
+122
+119
+116
+113
+110
+107
+104
+101
+97
+94
+91
+88
+84
+81
+77
+74
+71
+67
+64
+61
+57
+54
+50
+47
+43
+39
+36
+33
+28
+25
+22
+18
+14
+11
+6
+3
+0
+0
+0
+0
+0
+0
+1
+5
+9
+12
+16
+19
+23
+26
+30
+33
+38
+41
+44
+48
+51
+55
+58
+62
+66
+69
+73
+76
+80
+83
+86
+90
+93
+96
+99
+103
+106
+109
+112
+115
+118
+122
+125
+127
+130
+133
+136
+138
+141
+144
+146
+149
+150
+152
+154
+157
+158
+160
+162
+163
+165
+166
+166
+167
+168
+168
+169
+169
+168
+169
+168
+167
+167
+166
+165
+164
+162
+160
+158
+157
+155
+153
+150
+149
+146
+144
+141
+139
+136
+133
+130
+127
+124
+121
+118
+116
+113
+109
+106
+102
+99
+96
+93
+89
+86
+83
+80
+77
+73
+69
+66
+62
+59
+55
+51
+48
+44
+41
+37
+34
+31
+26
+23
+19
+16
+12
+8
+5
+1
+0
+0
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+28
+31
+35
+39
+43
+46
+50
+53
+57
+61
+63
+68
+71
+74
+78
+81
+85
+88
+92
+95
+99
+102
+105
+108
+112
+115
+118
+121
+124
+127
+130
+132
+136
+138
+142
+144
+146
+149
+151
+154
+157
+159
+160
+162
+164
+165
+167
+168
+169
+170
+171
+172
+172
+172
+172
+173
+173
+172
+172
+171
+169
+168
+167
+165
+164
+162
+160
+158
+156
+154
+152
+149
+147
+144
+142
+139
+136
+133
+131
+127
+124
+121
+118
+114
+112
+108
+105
+101
+98
+95
+92
+88
+85
+81
+78
+74
+71
+68
+64
+60
+57
+54
+49
+46
+43
+38
+35
+31
+28
+25
+21
+17
+13
+9
+6
+3
+0
+0
+0
+0
+0
+3
+7
+11
+14
+18
+22
+26
+29
+33
+37
+40
+44
+48
+51
+55
+58
+62
+66
+69
+73
+76
+80
+83
+86
+90
+94
+97
+100
+104
+107
+110
+114
+117
+120
+123
+127
+130
+133
+136
+139
+142
+144
+147
+150
+152
+155
+157
+159
+161
+163
+166
+168
+169
+171
+172
+173
+174
+175
+176
+176
+177
+177
+177
+176
+176
+175
+174
+174
+172
+170
+169
+167
+166
+164
+161
+159
+157
+154
+152
+149
+147
+144
+141
+138
+135
+133
+130
+127
+123
+120
+117
+114
+110
+107
+104
+101
+97
+93
+90
+87
+83
+80
+77
+73
+69
+66
+62
+58
+55
+51
+48
+44
+40
+37
+33
+30
+26
+22
+18
+15
+11
+7
+4
+0
+0
+0
+0
+1
+5
+8
+12
+16
+20
+23
+27
+30
+34
+38
+42
+45
+49
+53
+57
+60
+63
+67
+71
+75
+78
+81
+85
+89
+92
+95
+99
+102
+106
+109
+113
+116
+119
+122
+126
+128
+132
+135
+138
+141
+144
+147
+149
+153
+155
+157
+160
+163
+165
+167
+169
+171
+173
+174
+175
+177
+178
+178
+179
+181
+180
+180
+180
+180
+179
+178
+178
+177
+175
+174
+172
+171
+169
+167
+165
+163
+160
+158
+155
+152
+150
+147
+144
+141
+138
+135
+132
+129
+126
+122
+119
+116
+112
+109
+106
+102
+99
+96
+92
+88
+85
+82
+78
+74
+71
+68
+63
+60
+56
+52
+49
+45
+42
+38
+34
+30
+27
+24
+19
+16
+12
+9
+4
+1
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+28
+32
+35
+40
+43
+47
+51
+54
+58
+62
+65
+68
+72
+76
+79
+83
+87
+90
+93
+97
+101
+104
+108
+111
+114
+118
+121
+125
+128
+131
+134
+137
+141
+144
+147
+150
+153
+155
+158
+161
+163
+166
+168
+170
+172
+174
+177
+178
+179
+181
+182
+182
+184
+184
+184
+185
+185
+184
+184
+182
+182
+181
+179
+177
+176
+174
+172
+170
+168
+166
+163
+160
+158
+155
+152
+149
+147
+144
+140
+137
+134
+131
+128
+125
+121
+118
+115
+111
+108
+104
+101
+98
+94
+90
+87
+84
+80
+76
+72
+69
+65
+62
+58
+54
+50
+47
+43
+40
+36
+32
+29
+24
+21
+17
+13
+10
+6
+2
+0
+0
+0
+3
+7
+10
+15
+18
+22
+25
+30
+33
+37
+40
+45
+48
+52
+56
+59
+63
+67
+71
+74
+78
+81
+84
+88
+92
+95
+99
+102
+106
+109
+113
+117
+120
+124
+126
+130
+134
+137
+140
+143
+146
+150
+153
+155
+158
+161
+164
+166
+169
+171
+173
+176
+178
+179
+181
+183
+184
+186
+187
+187
+187
+188
+189
+189
+188
+187
+187
+186
+184
+183
+181
+180
+178
+175
+174
+171
+169
+166
+163
+160
+158
+155
+153
+149
+146
+143
+140
+137
+133
+130
+126
+123
+120
+116
+113
+110
+106
+103
+99
+95
+92
+88
+84
+82
+78
+73
+70
+66
+63
+59
+55
+52
+48
+45
+40
+37
+33
+29
+25
+22
+18
+14
+11
+7
+3
+0
+0
+0
+4
+8
+12
+15
+19
+23
+26
+31
+35
+38
+42
+46
+50
+53
+57
+61
+64
+67
+71
+75
+79
+83
+87
+90
+93
+97
+100
+104
+107
+112
+115
+119
+122
+125
+129
+132
+136
+139
+142
+145
+148
+152
+155
+158
+161
+164
+166
+169
+171
+174
+176
+179
+181
+183
+185
+186
+188
+190
+190
+191
+192
+192
+192
+193
+192
+191
+190
+189
+188
+187
+185
+183
+181
+179
+177
+174
+172
+169
+166
+164
+161
+158
+154
+151
+149
+145
+142
+138
+136
+132
+129
+125
+122
+118
+114
+111
+108
+105
+100
+97
+94
+89
+86
+82
+79
+76
+71
+68
+64
+60
+56
+53
+49
+46
+42
+39
+34
+31
+27
+23
+19
+16
+11
+8
+4
+1
+0
+1
+5
+9
+13
+16
+20
+24
+28
+32
+35
+39
+43
+47
+50
+55
+58
+61
+65
+69
+73
+77
+80
+84
+87
+91
+94
+99
+102
+106
+110
+113
+116
+120
+123
+127
+130
+134
+137
+140
+145
+148
+151
+154
+157
+160
+163
+166
+169
+172
+175
+177
+180
+182
+185
+186
+189
+190
+192
+193
+194
+195
+196
+196
+196
+196
+195
+195
+194
+193
+191
+190
+188
+187
+184
+182
+180
+177
+174
+171
+169
+166
+163
+160
+157
+153
+151
+148
+144
+140
+137
+134
+130
+127
+124
+121
+116
+113
+110
+105
+102
+98
+95
+91
+87
+84
+80
+77
+73
+69
+65
+62
+58
+54
+50
+46
+43
+39
+36
+32
+27
+24
+21
+17
+12
+9
+5
+2
+0
+2
+6
+9
+14
+17
+21
+25
+29
+32
+36
+40
+44
+48
+51
+55
+59
+63
+66
+70
+74
+78
+82
+85
+89
+92
+96
+100
+103
+108
+111
+114
+118
+121
+125
+128
+132
+136
+140
+143
+146
+149
+153
+156
+160
+162
+166
+169
+171
+174
+177
+180
+183
+185
+188
+189
+192
+194
+195
+197
+198
+199
+199
+200
+200
+200
+200
+199
+198
+197
+195
+194
+191
+190
+188
+185
+182
+180
+177
+175
+172
+169
+166
+163
+159
+156
+153
+150
+146
+143
+140
+136
+132
+129
+126
+121
+118
+115
+111
+107
+103
+100
+97
+93
+89
+85
+81
+78
+74
+71
+66
+63
+60
+55
+51
+47
+44
+40
+36
+32
+29
+25
+21
+17
+14
+10
+6
+2
+0
+3
+7
+11
+15
+18
+22
+26
+29
+33
+37
+41
+45
+49
+53
+56
+60
+63
+68
+72
+75
+79
+83
+87
+90
+94
+97
+101
+105
+109
+113
+116
+119
+124
+127
+131
+134
+137
+141
+145
+148
+152
+155
+158
+162
+165
+168
+171
+175
+177
+180
+183
+185
+188
+191
+193
+195
+197
+199
+200
+201
+203
+203
+204
+204
+204
+203
+202
+202
+200
+199
+197
+195
+193
+190
+188
+186
+183
+180
+177
+174
+171
+168
+165
+162
+158
+155
+151
+148
+144
+142
+138
+134
+131
+127
+123
+119
+116
+113
+109
+105
+102
+98
+94
+90
+86
+83
+79
+76
+71
+68
+64
+60
+56
+53
+49
+45
+41
+38
+34
+30
+26
+22
+18
+14
+10
+7
+3
+0
+4
+7
+11
+16
+19
+23
+26
+31
+35
+38
+42
+46
+49
+53
+57
+61
+65
+69
+72
+77
+80
+84
+87
+92
+96
+99
+102
+106
+110
+113
+117
+122
+124
+128
+132
+135
+139
+143
+146
+150
+153
+157
+160
+163
+167
+170
+173
+177
+180
+183
+186
+188
+191
+194
+196
+199
+200
+203
+204
+206
+207
+207
+208
+208
+208
+208
+206
+206
+204
+203
+201
+198
+196
+194
+191
+189
+186
+183
+180
+177
+174
+170
+167
+164
+160
+157
+153
+150
+146
+143
+140
+135
+132
+128
+125
+121
+117
+113
+110
+106
+103
+99
+95
+92
+88
+84
+80
+76
+72
+69
+64
+62
+57
+53
+50
+46
+42
+38
+35
+30
+27
+23
+19
+15
+11
+8
+3
+1
+4
+8
+12
+16
+20
+23
+28
+31
+36
+39
+43
+47
+51
+54
+59
+62
+66
+70
+74
+78
+81
+85
+89
+93
+96
+100
+104
+108
+111
+115
+119
+122
+126
+130
+134
+137
+140
+144
+148
+152
+155
+159
+162
+165
+169
+173
+176
+179
+183
+185
+189
+191
+194
+197
+199
+201
+204
+206
+208
+209
+211
+211
+212
+212
+212
+212
+210
+209
+208
+206
+204
+201
+199
+197
+194
+191
+188
+185
+182
+179
+175
+173
+169
+166
+162
+159
+155
+151
+148
+144
+140
+137
+134
+130
+126
+122
+119
+115
+112
+107
+104
+100
+96
+92
+89
+85
+81
+77
+73
+70
+66
+62
+58
+54
+50
+47
+43
+39
+36
+32
+28
+24
+20
+16
+12
+8
+5
+2
+6
+9
+13
+16
+21
+25
+28
+32
+36
+40
+44
+47
+51
+55
+59
+63
+66
+71
+74
+78
+82
+86
+89
+93
+97
+101
+104
+108
+113
+116
+120
+124
+128
+131
+135
+139
+142
+145
+149
+153
+156
+160
+164
+168
+171
+174
+178
+181
+184
+187
+191
+194
+196
+200
+202
+205
+208
+210
+211
+213
+214
+215
+216
+216
+215
+215
+214
+213
+211
+209
+207
+205
+202
+199
+197
+194
+191
+187
+185
+181
+178
+174
+170
+168
+164
+160
+157
+154
+149
+145
+142
+139
+135
+131
+128
+124
+120
+116
+112
+108
+104
+101
+98
+94
+90
+86
+82
+78
+74
+70
+67
+63
+59
+55
+51
+47
+43
+40
+36
+32
+28
+24
+21
+17
+13
+9
+5
+1
+5
+10
+13
+17
+21
+25
+29
+33
+37
+40
+45
+48
+52
+56
+60
+63
+67
+71
+75
+79
+83
+87
+90
+94
+98
+102
+106
+109
+113
+117
+121
+124
+128
+132
+136
+139
+143
+147
+151
+155
+158
+162
+165
+169
+172
+176
+179
+183
+187
+190
+193
+196
+199
+202
+205
+208
+210
+213
+215
+216
+218
+219
+219
+220
+219
+219
+218
+217
+215
+213
+211
+207
+205
+202
+200
+197
+193
+190
+187
+183
+179
+176
+172
+169
+165
+162
+158
+155
+151
+148
+143
+140
+136
+132
+128
+124
+121
+117
+113
+110
+106
+102
+98
+94
+90
+87
+83
+79
+76
+72
+67
+64
+60
+56
+52
+48
+45
+40
+37
+32
+29
+25
+21
+17
+13
+10
+6
+3
+7
+10
+14
+18
+21
+26
+30
+33
+37
+41
+45
+49
+52
+56
+61
+64
+68
+72
+76
+80
+84
+87
+92
+95
+99
+103
+107
+110
+114
+118
+121
+125
+130
+133
+137
+141
+145
+148
+152
+155
+160
+163
+167
+171
+174
+178
+181
+185
+189
+192
+195
+198
+202
+205
+208
+211
+214
+216
+218
+220
+222
+222
+224
+223
+224
+223
+221
+220
+218
+216
+213
+211
+208
+205
+202
+199
+195
+192
+188
+185
+181
+178
+174
+171
+167
+164
+159
+156
+152
+149
+145
+141
+138
+133
+129
+126
+122
+118
+114
+110
+107
+103
+99
+96
+91
+87
+84
+80
+75
+72
+69
+64
+61
+57
+53
+49
+45
+41
+37
+34
+30
+26
+22
+18
+13
+10
+6
+2
+7
+10
+14
+18
+22
+26
+30
+34
+38
+41
+46
+49
+54
+57
+61
+65
+68
+73
+76
+81
+84
+88
+92
+96
+100
+103
+107
+111
+115
+119
+123
+127
+130
+134
+138
+142
+146
+150
+153
+157
+161
+164
+168
+172
+175
+180
+183
+186
+190
+193
+197
+200
+204
+208
+211
+214
+217
+219
+222
+223
+225
+226
+227
+228
+227
+227
+225
+223
+222
+219
+216
+214
+211
+207
+204
+200
+197
+194
+190
+187
+183
+179
+175
+172
+168
+164
+161
+157
+153
+150
+145
+142
+138
+134
+130
+126
+123
+118
+115
+111
+107
+103
+100
+96
+92
+88
+85
+80
+76
+73
+69
+65
+61
+57
+53
+49
+45
+41
+37
+34
+29
+27
+22
+18
+15
+10
+7
+3
+7
+11
+15
+19
+22
+27
+30
+34
+38
+42
+46
+50
+53
+58
+62
+66
+70
+73
+77
+81
+85
+89
+93
+97
+101
+104
+109
+112
+116
+119
+123
+128
+132
+135
+139
+143
+146
+151
+154
+158
+161
+165
+169
+173
+177
+181
+185
+188
+191
+196
+199
+203
+206
+209
+212
+215
+219
+222
+224
+226
+229
+231
+231
+231
+231
+230
+229
+226
+224
+221
+219
+216
+212
+209
+206
+203
+199
+195
+191
+188
+184
+180
+177
+174
+170
+166
+162
+158
+155
+151
+146
+142
+139
+135
+131
+127
+123
+119
+116
+112
+109
+104
+100
+96
+92
+89
+85
+81
+78
+73
+70
+66
+62
+57
+54
+50
+46
+42
+39
+34
+31
+27
+23
+19
+15
+11
+7
+3
+7
+11
+15
+19
+23
+27
+31
+34
+39
+43
+46
+51
+54
+58
+62
+66
+70
+73
+78
+82
+86
+90
+93
+97
+101
+105
+109
+113
+116
+120
+124
+128
+132
+136
+139
+143
+147
+152
+155
+159
+163
+167
+170
+175
+178
+182
+185
+189
+193
+197
+200
+205
+207
+211
+215
+218
+221
+225
+227
+229
+232
+234
+235
+235
+235
+234
+232
+230
+227
+225
+221
+218
+215
+211
+207
+204
+200
+197
+193
+189
+185
+181
+178
+175
+170
+166
+163
+159
+155
+152
+147
+144
+140
+135
+132
+128
+124
+120
+116
+112
+108
+105
+101
+97
+93
+89
+85
+82
+78
+74
+69
+66
+62
+58
+54
+51
+46
+42
+39
+35
+31
+27
+23
+19
+15
+11
+7
+4
+7
+12
+16
+19
+24
+28
+31
+35
+39
+43
+46
+51
+55
+59
+63
+66
+70
+74
+78
+82
+86
+90
+93
+97
+102
+105
+110
+113
+117
+121
+125
+129
+133
+136
+140
+144
+148
+152
+156
+159
+163
+168
+171
+175
+179
+183
+187
+191
+194
+198
+202
+205
+209
+213
+216
+220
+224
+227
+230
+233
+235
+237
+239
+239
+239
+237
+235
+232
+230
+226
+224
+220
+217
+213
+209
+205
+201
+198
+194
+190
+186
+183
+179
+175
+171
+167
+164
+160
+156
+152
+148
+144
+141
+137
+132
+129
+125
+121
+117
+113
+109
+105
+101
+98
+94
+90
+85
+82
+78
+74
+70
+66
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+19
+15
+12
+7
+4
+8
+12
+15
+19
+23
+27
+31
+36
+39
+43
+47
+51
+55
+59
+63
+67
+70
+75
+78
+82
+86
+90
+94
+97
+102
+106
+110
+113
+117
+122
+125
+129
+133
+137
+141
+144
+148
+152
+156
+160
+164
+168
+171
+175
+180
+183
+188
+191
+195
+199
+203
+207
+210
+214
+218
+222
+225
+229
+232
+235
+238
+241
+242
+243
+242
+241
+238
+235
+232
+228
+225
+222
+218
+214
+210
+206
+203
+199
+195
+192
+187
+183
+180
+176
+172
+168
+164
+160
+156
+152
+148
+145
+141
+137
+133
+129
+126
+122
+117
+113
+109
+105
+102
+98
+93
+90
+86
+82
+79
+75
+70
+67
+63
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+28
+32
+36
+39
+44
+47
+51
+55
+59
+63
+67
+70
+74
+79
+83
+87
+91
+94
+98
+102
+106
+110
+114
+117
+122
+125
+129
+133
+138
+141
+145
+149
+153
+156
+161
+165
+168
+172
+176
+180
+184
+188
+191
+195
+199
+203
+207
+212
+215
+219
+222
+226
+230
+234
+237
+241
+244
+246
+247
+246
+244
+240
+237
+234
+230
+227
+222
+219
+215
+212
+208
+204
+200
+196
+192
+188
+184
+181
+176
+173
+168
+165
+160
+157
+153
+149
+145
+141
+137
+133
+129
+125
+121
+117
+114
+110
+106
+102
+98
+94
+90
+86
+83
+78
+74
+71
+67
+63
+59
+55
+51
+47
+43
+40
+35
+31
+28
+24
+19
+15
+12
+8
+4
+8
+12
+16
+20
+23
+28
+31
+36
+39
+44
+47
+51
+55
+59
+63
+67
+71
+75
+79
+83
+86
+91
+95
+98
+102
+106
+110
+114
+118
+121
+126
+130
+134
+137
+141
+145
+149
+153
+157
+160
+165
+169
+173
+177
+180
+185
+188
+193
+196
+200
+204
+207
+211
+215
+219
+223
+227
+232
+235
+239
+243
+246
+249
+252
+250
+247
+243
+239
+235
+231
+227
+223
+220
+215
+212
+208
+204
+200
+196
+192
+188
+185
+181
+177
+172
+169
+165
+161
+157
+153
+149
+145
+141
+137
+134
+129
+126
+121
+118
+114
+110
+106
+102
+98
+94
+91
+86
+83
+79
+74
+71
+67
+63
+59
+55
+52
+47
+43
+39
+36
+31
+28
+24
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+27
+31
+36
+40
+43
+47
+51
+55
+59
+62
+67
+70
+75
+78
+83
+87
+90
+95
+98
+102
+106
+110
+114
+118
+122
+126
+130
+133
+138
+141
+145
+149
+153
+157
+161
+165
+169
+173
+176
+181
+184
+189
+193
+196
+200
+204
+208
+212
+216
+220
+224
+227
+231
+235
+239
+243
+247
+251
+255
+251
+247
+243
+240
+236
+232
+227
+224
+219
+216
+212
+208
+204
+200
+196
+192
+189
+184
+180
+177
+173
+169
+165
+161
+157
+153
+149
+145
+142
+138
+134
+130
+126
+122
+117
+114
+110
+106
+102
+98
+95
+90
+86
+83
+78
+75
+71
+67
+63
+59
+55
+51
+47
+43
+39
+36
+32
+27
+24
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+28
+32
+36
+39
+43
+47
+51
+55
+59
+63
+66
+70
+75
+78
+83
+86
+90
+94
+99
+102
+106
+110
+114
+118
+122
+126
+130
+133
+137
+142
+145
+149
+153
+157
+161
+164
+168
+173
+176
+180
+184
+188
+192
+196
+200
+203
+208
+211
+216
+220
+223
+227
+231
+235
+239
+243
+246
+249
+251
+249
+246
+243
+238
+235
+231
+228
+224
+219
+215
+212
+208
+204
+200
+196
+192
+188
+184
+181
+177
+172
+168
+165
+161
+157
+153
+149
+145
+141
+138
+133
+129
+126
+122
+118
+114
+110
+106
+102
+98
+94
+91
+86
+82
+79
+75
+70
+66
+63
+59
+55
+51
+47
+43
+39
+36
+32
+28
+24
+20
+16
+12
+9
+4
+8
+12
+15
+20
+23
+28
+32
+35
+39
+43
+47
+51
+55
+59
+63
+67
+70
+75
+79
+82
+86
+90
+94
+98
+102
+105
+110
+114
+118
+121
+125
+130
+133
+138
+141
+145
+149
+153
+156
+161
+165
+168
+172
+177
+180
+184
+188
+192
+196
+199
+203
+207
+211
+215
+219
+222
+227
+230
+234
+237
+241
+244
+246
+247
+246
+244
+241
+237
+234
+231
+226
+222
+218
+215
+211
+207
+204
+200
+195
+192
+188
+184
+181
+176
+173
+168
+165
+161
+157
+153
+149
+145
+141
+138
+133
+130
+125
+122
+117
+114
+109
+106
+102
+98
+94
+90
+86
+83
+79
+74
+71
+67
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+24
+19
+16
+12
+8
+4
+8
+12
+16
+19
+23
+27
+31
+35
+39
+43
+47
+50
+55
+59
+63
+67
+70
+74
+79
+82
+86
+90
+94
+98
+102
+105
+110
+113
+118
+121
+125
+129
+133
+137
+141
+145
+149
+152
+156
+160
+164
+168
+172
+176
+180
+184
+188
+191
+195
+199
+202
+207
+211
+214
+217
+221
+225
+229
+232
+236
+239
+241
+242
+244
+242
+241
+238
+235
+232
+229
+226
+222
+218
+214
+210
+206
+202
+199
+195
+191
+188
+183
+180
+176
+171
+168
+164
+160
+157
+152
+148
+145
+141
+137
+133
+129
+125
+121
+118
+114
+109
+106
+102
+98
+94
+90
+86
+82
+79
+75
+70
+66
+62
+59
+55
+51
+47
+43
+39
+35
+31
+28
+23
+20
+16
+12
+8
+4
+8
+12
+16
+20
+24
+27
+31
+35
+39
+43
+47
+50
+54
+59
+62
+66
+70
+74
+78
+82
+85
+90
+93
+98
+101
+105
+109
+113
+117
+121
+124
+128
+133
+136
+140
+144
+148
+152
+155
+160
+163
+167
+171
+176
+179
+183
+187
+190
+194
+198
+201
+206
+209
+213
+216
+220
+223
+227
+230
+233
+236
+237
+238
+239
+238
+237
+236
+233
+230
+227
+223
+220
+216
+212
+209
+205
+202
+198
+194
+190
+186
+182
+179
+175
+171
+167
+164
+160
+156
+152
+148
+144
+140
+136
+132
+129
+125
+121
+117
+113
+109
+105
+101
+98
+93
+89
+86
+82
+78
+74
+70
+66
+62
+59
+54
+51
+47
+43
+39
+35
+31
+27
+23
+20
+15
+12
+7
+4
+8
+11
+15
+19
+23
+27
+31
+34
+39
+43
+47
+50
+54
+58
+62
+66
+70
+73
+77
+82
+85
+89
+93
+97
+101
+105
+109
+113
+116
+120
+124
+128
+132
+136
+139
+143
+148
+151
+155
+158
+163
+167
+170
+174
+178
+182
+185
+190
+193
+197
+201
+204
+207
+211
+214
+218
+222
+224
+227
+229
+232
+234
+235
+236
+235
+234
+232
+230
+228
+224
+221
+218
+215
+211
+207
+204
+200
+197
+193
+189
+186
+182
+178
+174
+171
+166
+162
+159
+155
+151
+148
+143
+140
+135
+132
+128
+124
+120
+117
+113
+109
+104
+101
+97
+93
+89
+86
+81
+78
+73
+69
+66
+62
+58
+55
+51
+46
+42
+39
+35
+31
+27
+23
+19
+15
+12
+7
+3
+7
+11
+14
+19
+23
+26
+30
+34
+38
+42
+46
+50
+53
+58
+61
+66
+69
+74
+77
+81
+84
+89
+93
+97
+101
+104
+108
+112
+116
+119
+124
+128
+131
+135
+139
+142
+146
+151
+154
+158
+162
+165
+170
+174
+177
+181
+185
+188
+192
+196
+199
+202
+206
+209
+213
+216
+219
+222
+224
+227
+228
+230
+232
+232
+231
+231
+229
+227
+225
+222
+219
+216
+213
+209
+205
+202
+199
+196
+192
+188
+185
+180
+176
+173
+169
+166
+162
+158
+154
+151
+146
+143
+139
+135
+131
+127
+124
+120
+116
+112
+108
+105
+100
+96
+92
+89
+85
+81
+77
+73
+69
+65
+61
+58
+54
+50
+46
+42
+38
+34
+30
+26
+23
+19
+14
+10
+6
+2
+6
+11
+15
+18
+22
+26
+30
+34
+37
+42
+46
+50
+53
+57
+61
+65
+69
+73
+76
+80
+84
+88
+92
+96
+100
+103
+107
+112
+115
+119
+122
+126
+131
+134
+138
+142
+146
+149
+153
+157
+161
+164
+169
+172
+176
+179
+183
+186
+190
+194
+197
+200
+204
+208
+210
+214
+216
+219
+222
+224
+225
+227
+227
+228
+227
+226
+225
+224
+221
+219
+217
+214
+210
+207
+204
+201
+197
+194
+190
+186
+183
+180
+176
+172
+169
+164
+160
+157
+153
+150
+146
+142
+138
+134
+131
+126
+123
+119
+115
+111
+107
+103
+99
+96
+92
+88
+84
+80
+76
+73
+69
+65
+61
+57
+54
+49
+45
+42
+37
+34
+30
+26
+23
+18
+14
+11
+7
+2
+6
+10
+14
+18
+22
+26
+29
+33
+38
+41
+45
+49
+53
+56
+60
+64
+68
+72
+76
+79
+84
+87
+91
+95
+99
+103
+106
+111
+114
+119
+122
+126
+129
+133
+137
+141
+145
+149
+152
+155
+160
+163
+167
+170
+175
+178
+182
+185
+188
+191
+196
+198
+201
+205
+208
+210
+213
+216
+218
+220
+222
+222
+223
+224
+224
+222
+222
+220
+218
+215
+213
+210
+208
+205
+201
+198
+195
+192
+188
+185
+181
+178
+174
+171
+167
+163
+160
+156
+152
+149
+145
+141
+137
+134
+130
+126
+122
+118
+115
+110
+106
+103
+99
+95
+91
+88
+84
+80
+76
+72
+68
+64
+60
+57
+53
+48
+45
+41
+38
+33
+29
+25
+22
+17
+14
+10
+6
+2
+5
+9
+13
+18
+22
+25
+29
+33
+36
+41
+44
+49
+52
+56
+60
+64
+67
+72
+75
+79
+83
+87
+91
+94
+98
+102
+106
+109
+114
+117
+121
+125
+129
+132
+136
+140
+144
+147
+151
+155
+158
+162
+165
+169
+173
+177
+179
+183
+187
+190
+193
+196
+199
+202
+205
+207
+210
+213
+215
+216
+218
+218
+220
+220
+220
+218
+218
+216
+214
+213
+210
+208
+205
+202
+199
+197
+193
+190
+187
+183
+180
+176
+172
+169
+165
+162
+159
+154
+151
+147
+144
+140
+136
+133
+129
+125
+121
+117
+114
+109
+106
+102
+98
+94
+91
+87
+83
+79
+76
+71
+67
+63
+60
+56
+52
+48
+44
+40
+36
+32
+29
+25
+21
+17
+13
+9
+5
+1
+5
+8
+13
+17
+21
+25
+28
+32
+36
+39
+44
+48
+51
+55
+59
+63
+67
+70
+74
+78
+82
+86
+90
+94
+97
+102
+105
+108
+112
+116
+120
+124
+127
+131
+135
+139
+142
+146
+149
+153
+157
+161
+164
+167
+171
+175
+177
+181
+184
+188
+191
+194
+197
+200
+202
+205
+207
+209
+211
+213
+214
+215
+215
+216
+216
+215
+214
+212
+211
+209
+207
+205
+202
+200
+197
+194
+191
+188
+184
+181
+177
+174
+171
+167
+164
+161
+156
+153
+150
+146
+142
+138
+134
+131
+128
+123
+120
+116
+112
+108
+105
+101
+98
+94
+89
+86
+82
+78
+75
+70
+67
+63
+59
+55
+51
+48
+44
+39
+36
+32
+28
+24
+20
+17
+12
+9
+5
+1
+5
+9
+12
+16
+20
+24
+27
+31
+35
+39
+43
+47
+50
+54
+58
+62
+65
+70
+74
+77
+81
+85
+88
+92
+96
+100
+104
+107
+112
+115
+118
+122
+126
+130
+133
+137
+140
+144
+148
+151
+155
+159
+162
+166
+169
+173
+175
+179
+183
+185
+188
+191
+194
+197
+199
+201
+204
+206
+208
+209
+210
+211
+212
+212
+212
+211
+210
+209
+207
+206
+204
+201
+199
+197
+194
+191
+189
+186
+182
+179
+176
+172
+169
+165
+162
+158
+155
+151
+148
+145
+140
+138
+133
+130
+126
+123
+119
+115
+111
+107
+103
+100
+96
+93
+89
+85
+81
+77
+74
+69
+65
+62
+58
+54
+51
+47
+42
+39
+35
+32
+27
+24
+20
+16
+13
+8
+4
+0
+3
+8
+12
+16
+19
+23
+27
+31
+35
+38
+42
+45
+49
+54
+57
+61
+65
+69
+72
+76
+80
+84
+88
+91
+96
+99
+103
+106
+110
+114
+118
+121
+125
+128
+132
+135
+140
+143
+146
+150
+153
+157
+160
+163
+167
+170
+174
+177
+179
+183
+186
+188
+191
+194
+197
+198
+201
+202
+204
+206
+207
+207
+208
+208
+208
+207
+207
+205
+204
+203
+200
+199
+196
+194
+191
+188
+185
+183
+180
+176
+174
+170
+167
+163
+160
+156
+154
+149
+147
+143
+139
+135
+132
+129
+125
+121
+117
+113
+110
+106
+102
+99
+96
+91
+87
+84
+80
+76
+73
+68
+65
+61
+57
+54
+49
+46
+42
+39
+34
+31
+26
+23
+19
+15
+12
+7
+4
+0
+3
+6
+11
+15
+18
+23
+26
+30
+34
+37
+41
+44
+49
+52
+57
+61
+64
+68
+71
+75
+79
+83
+86
+90
+94
+98
+101
+105
+108
+113
+116
+120
+123
+127
+130
+134
+137
+141
+145
+148
+152
+155
+158
+162
+165
+168
+171
+174
+177
+180
+183
+186
+189
+191
+193
+195
+197
+199
+201
+202
+203
+203
+204
+204
+204
+203
+203
+202
+201
+199
+197
+195
+193
+191
+188
+186
+183
+180
+177
+174
+171
+168
+164
+162
+158
+155
+151
+148
+144
+141
+137
+134
+130
+127
+123
+120
+116
+112
+108
+105
+101
+98
+94
+90
+87
+83
+79
+75
+71
+68
+64
+60
+57
+53
+49
+45
+42
+38
+33
+29
+26
+22
+18
+15
+11
+7
+3
+0
+2
+5
+10
+14
+17
+21
+25
+29
+33
+36
+40
+44
+48
+52
+55
+59
+63
+67
+70
+74
+78
+81
+85
+89
+93
+96
+100
+104
+108
+111
+114
+118
+122
+125
+129
+132
+135
+140
+143
+146
+149
+153
+156
+160
+162
+166
+168
+172
+174
+177
+180
+182
+186
+188
+190
+191
+194
+195
+196
+198
+199
+200
+200
+201
+200
+200
+199
+198
+197
+195
+194
+191
+189
+187
+185
+183
+180
+177
+174
+171
+168
+166
+162
+160
+156
+153
+149
+147
+143
+139
+135
+132
+129
+125
+122
+119
+114
+111
+108
+103
+100
+96
+93
+89
+85
+81
+78
+74
+70
+67
+63
+59
+55
+52
+48
+44
+40
+37
+33
+28
+25
+22
+18
+14
+10
+6
+2
+0
+1
+5
+9
+13
+17
+21
+24
+28
+32
+35
+39
+42
+47
+51
+54
+58
+61
+65
+69
+72
+77
+80
+84
+88
+91
+95
+99
+102
+106
+109
+113
+117
+120
+123
+127
+130
+134
+138
+141
+144
+148
+150
+154
+157
+160
+163
+166
+169
+172
+174
+177
+179
+182
+185
+186
+188
+190
+192
+193
+195
+195
+196
+196
+197
+196
+196
+195
+194
+193
+191
+190
+188
+186
+184
+182
+180
+177
+174
+171
+169
+166
+163
+160
+157
+154
+150
+148
+144
+141
+137
+134
+130
+127
+124
+120
+116
+113
+109
+106
+102
+98
+94
+91
+87
+84
+81
+76
+73
+69
+65
+61
+58
+54
+50
+47
+43
+39
+35
+31
+28
+24
+20
+17
+13
+9
+5
+1
+0
+0
+4
+8
+11
+16
+19
+23
+26
+30
+34
+39
+42
+45
+49
+53
+57
+60
+64
+68
+72
+75
+79
+83
+86
+89
+93
+97
+101
+104
+107
+111
+115
+118
+122
+125
+129
+132
+136
+139
+142
+145
+148
+151
+155
+157
+161
+164
+166
+169
+171
+174
+176
+179
+181
+183
+185
+186
+188
+189
+191
+191
+192
+192
+193
+192
+192
+191
+190
+190
+188
+187
+184
+183
+181
+179
+177
+174
+172
+169
+166
+163
+161
+158
+155
+152
+148
+145
+142
+139
+135
+132
+129
+125
+122
+118
+115
+111
+108
+104
+100
+97
+93
+89
+86
+83
+79
+75
+71
+68
+64
+61
+57
+53
+49
+46
+42
+38
+35
+31
+27
+23
+19
+15
+11
+8
+4
+0
+0
+0
+3
+7
+10
+14
+18
+22
+25
+29
+33
+37
+40
+44
+48
+52
+55
+60
+63
+66
+71
+74
+77
+81
+85
+88
+92
+95
+99
+102
+106
+110
+113
+117
+120
+123
+127
+130
+134
+137
+140
+143
+146
+149
+152
+155
+158
+161
+163
+166
+169
+171
+173
+176
+178
+179
+182
+183
+184
+186
+187
+187
+188
+188
+188
+188
+188
+187
+186
+186
+184
+183
+181
+179
+178
+175
+173
+171
+169
+166
+164
+161
+158
+155
+153
+150
+146
+143
+139
+136
+134
+130
+126
+124
+120
+116
+113
+109
+106
+102
+99
+96
+91
+89
+85
+81
+78
+74
+70
+66
+63
+59
+56
+52
+48
+44
+41
+37
+33
+30
+26
+22
+18
+15
+11
+7
+3
+0
+0
+0
+2
+6
+10
+13
+17
+21
+24
+29
+32
+36
+39
+43
+47
+50
+54
+58
+61
+65
+69
+73
+76
+80
+83
+86
+90
+94
+97
+101
+105
+107
+111
+114
+118
+121
+124
+128
+131
+134
+138
+140
+144
+147
+150
+153
+155
+158
+160
+163
+166
+168
+170
+172
+174
+176
+177
+179
+180
+181
+183
+184
+184
+184
+184
+184
+184
+184
+183
+181
+181
+179
+177
+176
+174
+172
+170
+168
+166
+163
+160
+158
+155
+153
+149
+146
+143
+141
+138
+135
+131
+128
+124
+121
+118
+115
+111
+108
+105
+100
+97
+94
+90
+86
+84
+80
+75
+73
+69
+65
+61
+57
+54
+51
+47
+43
+40
+35
+32
+28
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+1
+5
+8
+12
+16
+19
+23
+27
+31
+35
+38
+41
+46
+49
+53
+56
+60
+64
+67
+71
+75
+78
+81
+85
+89
+92
+96
+99
+102
+105
+109
+112
+116
+119
+122
+126
+128
+132
+135
+138
+141
+144
+147
+150
+153
+155
+157
+160
+162
+164
+167
+169
+171
+173
+175
+176
+177
+178
+179
+179
+180
+180
+180
+181
+180
+179
+179
+178
+177
+175
+174
+172
+171
+169
+167
+164
+162
+160
+158
+155
+152
+149
+146
+144
+141
+138
+135
+132
+129
+125
+123
+119
+116
+112
+109
+106
+102
+99
+95
+92
+88
+85
+82
+78
+74
+71
+67
+63
+60
+56
+53
+49
+46
+42
+38
+35
+31
+27
+23
+20
+16
+12
+8
+5
+1
+0
+0
+0
+0
+3
+7
+11
+15
+18
+22
+26
+29
+33
+37
+41
+44
+47
+51
+55
+59
+62
+66
+70
+72
+76
+80
+83
+87
+90
+93
+97
+101
+103
+107
+111
+113
+117
+121
+124
+126
+130
+133
+136
+138
+141
+144
+147
+149
+152
+155
+157
+159
+162
+163
+165
+167
+169
+171
+172
+173
+174
+175
+176
+176
+176
+177
+177
+176
+176
+175
+174
+173
+172
+170
+169
+167
+165
+163
+162
+159
+157
+155
+152
+149
+147
+144
+141
+138
+136
+133
+129
+127
+123
+120
+117
+114
+110
+107
+104
+101
+97
+94
+91
+87
+83
+80
+76
+72
+69
+65
+62
+59
+55
+51
+48
+44
+40
+37
+33
+29
+26
+22
+18
+15
+11
+8
+3
+0
+0
+0
+0
+0
+3
+5
+10
+14
+17
+20
+24
+28
+32
+35
+39
+42
+46
+50
+54
+57
+60
+64
+67
+71
+74
+78
+82
+84
+88
+91
+95
+99
+102
+105
+108
+112
+114
+117
+121
+124
+128
+130
+133
+136
+139
+141
+144
+147
+149
+151
+154
+156
+158
+160
+163
+164
+165
+167
+169
+169
+170
+171
+172
+173
+173
+173
+173
+172
+172
+171
+170
+170
+169
+167
+166
+164
+162
+160
+158
+156
+154
+151
+149
+146
+144
+142
+139
+136
+133
+130
+127
+124
+121
+118
+114
+111
+108
+105
+102
+99
+95
+92
+89
+84
+81
+78
+75
+71
+68
+64
+61
+57
+53
+50
+46
+42
+39
+35
+32
+28
+24
+20
+17
+14
+9
+6
+2
+0
+0
+0
+0
+0
+1
+4
+8
+12
+16
+19
+23
+26
+30
+34
+37
+41
+45
+48
+52
+56
+58
+62
+66
+69
+73
+76
+80
+83
+87
+90
+93
+97
+100
+103
+106
+110
+112
+116
+118
+121
+124
+127
+131
+133
+136
+138
+141
+144
+146
+148
+151
+153
+155
+157
+159
+161
+161
+163
+165
+165
+167
+167
+168
+169
+169
+168
+168
+168
+168
+167
+166
+166
+165
+163
+162
+160
+159
+157
+155
+153
+151
+148
+146
+144
+141
+139
+136
+133
+131
+127
+125
+122
+118
+115
+113
+109
+106
+103
+100
+96
+93
+90
+86
+83
+80
+76
+72
+69
+66
+63
+59
+55
+52
+48
+45
+41
+38
+33
+30
+27
+23
+20
+16
+12
+9
+4
+0
+0
+0
+0
+0
+0
+0
+3
+6
+11
+14
+17
+21
+25
+29
+32
+36
+39
+43
+47
+50
+53
+57
+61
+63
+67
+71
+74
+77
+81
+84
+88
+91
+94
+97
+101
+103
+107
+110
+113
+116
+119
+122
+125
+128
+130
+133
+135
+138
+141
+143
+145
+148
+149
+152
+154
+155
+157
+158
+159
+161
+162
+162
+163
+164
+165
+165
+165
+165
+164
+164
+164
+163
+162
+160
+159
+158
+157
+156
+153
+152
+149
+147
+146
+143
+140
+138
+136
+133
+130
+127
+125
+122
+119
+116
+113
+109
+107
+103
+100
+97
+94
+90
+88
+84
+81
+77
+74
+71
+67
+64
+60
+57
+53
+50
+47
+43
+39
+36
+32
+28
+25
+22
+18
+15
+11
+7
+3
+0
+0
+0
+0
+0
+0
+0
+2
+6
+10
+13
+16
+20
+24
+27
+30
+34
+37
+42
+44
+48
+52
+55
+59
+62
+65
+68
+73
+76
+79
+82
+86
+89
+92
+95
+99
+101
+104
+108
+111
+114
+116
+119
+122
+125
+128
+130
+132
+135
+137
+139
+142
+144
+146
+148
+150
+151
+153
+155
+156
+157
+158
+159
+160
+160
+161
+161
+161
+161
+161
+161
+160
+159
+158
+157
+156
+154
+153
+152
+149
+148
+146
+144
+142
+140
+137
+135
+133
+130
+127
+125
+122
+120
+116
+114
+110
+107
+105
+102
+98
+95
+92
+89
+86
+82
+79
+76
+72
+68
+66
+62
+58
+55
+51
+48
+45
+42
+38
+34
+31
+27
+24
+20
+17
+13
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+19
+21
+26
+28
+32
+36
+40
+43
+47
+50
+54
+56
+60
+64
+67
+70
+74
+77
+80
+83
+87
+90
+93
+95
+99
+102
+105
+108
+111
+114
+117
+119
+122
+125
+127
+130
+132
+134
+136
+139
+141
+143
+145
+146
+148
+150
+151
+153
+153
+154
+156
+155
+156
+157
+157
+157
+157
+157
+156
+156
+155
+154
+153
+152
+151
+149
+148
+146
+145
+143
+140
+139
+137
+134
+131
+129
+127
+125
+122
+120
+116
+114
+111
+108
+105
+102
+99
+96
+93
+90
+87
+84
+80
+77
+74
+70
+67
+63
+60
+57
+53
+50
+46
+43
+40
+36
+33
+29
+25
+21
+18
+14
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+16
+20
+24
+27
+31
+34
+37
+41
+45
+48
+52
+54
+58
+61
+65
+68
+71
+74
+77
+81
+84
+87
+90
+94
+96
+100
+102
+105
+108
+111
+113
+116
+119
+122
+124
+127
+129
+131
+133
+135
+137
+139
+141
+143
+144
+146
+147
+148
+149
+150
+151
+152
+152
+153
+153
+153
+153
+153
+152
+152
+151
+150
+149
+148
+147
+146
+144
+143
+141
+140
+138
+136
+133
+131
+129
+127
+124
+121
+119
+117
+114
+111
+108
+105
+103
+99
+96
+94
+91
+88
+84
+81
+78
+74
+71
+68
+64
+61
+58
+55
+51
+48
+45
+41
+38
+34
+30
+27
+24
+20
+17
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+15
+19
+21
+25
+29
+32
+36
+39
+43
+46
+50
+53
+56
+59
+63
+66
+69
+72
+75
+78
+82
+85
+88
+91
+94
+97
+100
+103
+105
+108
+111
+113
+116
+118
+121
+124
+126
+128
+130
+132
+134
+135
+138
+139
+141
+142
+144
+145
+146
+147
+147
+148
+149
+149
+149
+149
+149
+149
+149
+148
+147
+147
+146
+144
+143
+143
+140
+139
+138
+136
+134
+132
+130
+128
+126
+124
+121
+119
+116
+113
+111
+108
+106
+102
+100
+97
+94
+91
+88
+85
+82
+78
+76
+72
+69
+66
+62
+59
+56
+52
+49
+46
+43
+39
+36
+32
+29
+25
+22
+18
+15
+11
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+10
+13
+17
+20
+24
+27
+31
+34
+37
+41
+44
+47
+51
+54
+58
+60
+63
+66
+70
+73
+76
+79
+82
+85
+88
+92
+94
+97
+100
+103
+105
+108
+110
+113
+116
+118
+121
+122
+125
+126
+129
+130
+132
+134
+136
+137
+138
+140
+141
+142
+143
+144
+144
+145
+145
+145
+145
+145
+145
+145
+144
+144
+143
+142
+141
+140
+138
+137
+135
+134
+132
+130
+128
+127
+124
+122
+121
+118
+116
+113
+111
+108
+105
+102
+100
+97
+94
+91
+88
+85
+82
+79
+76
+73
+70
+67
+63
+60
+57
+54
+50
+48
+44
+40
+37
+34
+30
+27
+24
+20
+16
+14
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+8
+11
+15
+18
+22
+25
+28
+32
+35
+39
+41
+45
+48
+51
+55
+58
+61
+65
+68
+70
+74
+77
+80
+83
+86
+88
+92
+95
+97
+99
+102
+105
+107
+110
+112
+115
+117
+119
+121
+123
+125
+128
+128
+131
+132
+134
+135
+136
+137
+138
+139
+139
+140
+140
+141
+141
+141
+141
+141
+141
+141
+140
+139
+138
+137
+136
+135
+133
+132
+131
+129
+127
+125
+123
+121
+119
+116
+115
+112
+110
+108
+104
+103
+100
+97
+94
+91
+89
+86
+83
+79
+76
+74
+71
+68
+64
+61
+58
+55
+52
+48
+45
+42
+39
+35
+32
+29
+25
+22
+19
+15
+12
+7
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+6
+10
+13
+17
+20
+23
+26
+30
+33
+37
+39
+43
+46
+50
+53
+56
+59
+62
+65
+69
+71
+75
+77
+80
+83
+86
+89
+92
+94
+97
+100
+102
+104
+107
+109
+112
+114
+116
+118
+120
+122
+123
+125
+127
+128
+130
+131
+132
+133
+135
+135
+136
+137
+136
+137
+137
+138
+138
+137
+137
+136
+136
+135
+134
+133
+133
+131
+130
+128
+126
+125
+124
+122
+120
+118
+115
+114
+112
+109
+107
+105
+102
+100
+97
+94
+91
+89
+86
+83
+81
+78
+74
+72
+68
+66
+62
+59
+56
+53
+49
+47
+43
+40
+36
+33
+30
+27
+23
+20
+16
+13
+10
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+8
+11
+14
+18
+21
+24
+27
+31
+35
+37
+41
+44
+47
+50
+53
+57
+59
+63
+66
+69
+72
+74
+78
+80
+83
+86
+88
+91
+94
+97
+99
+101
+104
+106
+108
+110
+112
+115
+116
+118
+120
+121
+123
+124
+126
+127
+128
+130
+130
+132
+132
+132
+133
+134
+134
+134
+134
+133
+133
+132
+132
+131
+130
+130
+129
+127
+126
+125
+123
+122
+120
+118
+116
+115
+113
+111
+109
+106
+103
+101
+99
+97
+94
+91
+89
+86
+83
+80
+77
+75
+72
+69
+66
+63
+60
+56
+54
+50
+47
+44
+41
+38
+34
+31
+28
+24
+22
+18
+14
+11
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+5
+9
+12
+16
+19
+22
+25
+29
+32
+36
+39
+42
+45
+48
+51
+54
+58
+60
+63
+66
+69
+72
+74
+78
+81
+83
+85
+89
+91
+93
+96
+98
+100
+103
+105
+107
+109
+112
+113
+115
+116
+118
+120
+121
+122
+123
+125
+126
+127
+127
+128
+129
+129
+130
+129
+130
+130
+129
+129
+128
+128
+127
+126
+126
+125
+123
+122
+121
+119
+118
+116
+115
+113
+111
+109
+108
+105
+103
+101
+98
+96
+94
+90
+88
+86
+83
+81
+77
+75
+72
+69
+66
+64
+60
+57
+54
+51
+48
+45
+42
+38
+36
+32
+29
+25
+22
+19
+16
+12
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+7
+10
+14
+17
+20
+24
+27
+30
+33
+36
+39
+42
+45
+49
+51
+54
+58
+61
+64
+67
+69
+72
+75
+77
+80
+82
+85
+88
+90
+93
+95
+98
+100
+102
+103
+105
+108
+109
+111
+113
+115
+116
+118
+119
+120
+121
+122
+123
+124
+125
+124
+125
+125
+125
+126
+126
+125
+125
+125
+124
+124
+123
+122
+121
+119
+119
+118
+116
+114
+113
+111
+110
+107
+106
+104
+101
+100
+97
+95
+92
+90
+88
+85
+83
+80
+78
+75
+72
+69
+67
+64
+60
+58
+55
+52
+49
+45
+43
+39
+36
+33
+30
+26
+24
+20
+17
+13
+10
+7
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+18
+21
+24
+27
+31
+34
+37
+40
+43
+47
+49
+52
+55
+58
+61
+64
+66
+69
+72
+75
+77
+80
+82
+84
+87
+90
+92
+94
+96
+99
+100
+103
+104
+106
+107
+109
+111
+113
+113
+115
+116
+117
+118
+119
+119
+120
+120
+121
+122
+122
+122
+122
+122
+122
+121
+121
+120
+119
+118
+117
+116
+115
+114
+113
+111
+110
+108
+106
+104
+103
+101
+98
+96
+94
+92
+90
+88
+85
+82
+80
+77
+74
+72
+69
+66
+64
+61
+58
+55
+52
+49
+46
+43
+40
+37
+34
+31
+28
+25
+22
+18
+15
+12
+9
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+9
+13
+16
+19
+22
+26
+28
+31
+34
+38
+40
+43
+47
+49
+53
+55
+58
+61
+64
+67
+69
+72
+74
+77
+79
+82
+84
+86
+88
+91
+93
+95
+97
+98
+101
+103
+104
+106
+107
+108
+110
+111
+112
+113
+114
+115
+116
+116
+117
+117
+118
+117
+118
+118
+118
+118
+117
+117
+116
+115
+115
+113
+112
+112
+110
+109
+108
+106
+104
+102
+101
+99
+97
+95
+93
+91
+89
+86
+85
+82
+80
+77
+74
+72
+69
+67
+63
+61
+58
+56
+53
+50
+47
+44
+41
+38
+34
+32
+28
+25
+22
+19
+16
+13
+10
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+4
+7
+10
+13
+17
+20
+23
+26
+29
+32
+36
+38
+41
+44
+47
+49
+53
+56
+58
+61
+63
+66
+69
+71
+74
+76
+78
+81
+84
+86
+88
+89
+91
+93
+96
+97
+99
+100
+102
+104
+105
+106
+108
+108
+110
+111
+111
+112
+112
+113
+113
+114
+114
+114
+114
+114
+113
+113
+112
+112
+111
+110
+110
+108
+108
+107
+105
+103
+102
+101
+99
+97
+96
+93
+92
+90
+88
+85
+83
+81
+79
+76
+74
+71
+69
+66
+64
+61
+59
+55
+53
+50
+47
+44
+41
+39
+35
+32
+30
+27
+23
+20
+16
+13
+10
+8
+4
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+8
+12
+15
+18
+20
+24
+27
+30
+33
+36
+39
+41
+44
+47
+50
+53
+55
+58
+60
+63
+66
+69
+70
+73
+76
+78
+80
+82
+84
+86
+88
+90
+92
+93
+95
+97
+98
+99
+101
+102
+104
+105
+106
+106
+107
+108
+109
+109
+110
+109
+110
+110
+110
+110
+109
+109
+109
+108
+108
+107
+106
+104
+104
+103
+102
+100
+99
+97
+96
+93
+92
+90
+88
+86
+85
+83
+80
+78
+75
+73
+71
+68
+65
+64
+61
+59
+55
+53
+50
+47
+44
+41
+39
+36
+33
+29
+27
+24
+21
+17
+14
+12
+8
+4
+1
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+3
+6
+8
+12
+15
+18
+22
+25
+27
+30
+33
+36
+39
+42
+45
+47
+50
+53
+55
+58
+60
+63
+65
+68
+70
+72
+75
+77
+78
+81
+83
+85
+87
+89
+90
+92
+93
+95
+96
+97
+99
+100
+101
+102
+102
+103
+104
+105
+105
+105
+106
+106
+106
+106
+106
+105
+105
+104
+104
+104
+103
+102
+101
+100
+99
+98
+96
+95
+94
+92
+91
+88
+87
+85
+83
+81
+79
+76
+74
+73
+70
+67
+66
+63
+60
+58
+55
+53
+49
+47
+44
+42
+39
+36
+33
+30
+27
+24
+21
+18
+15
+12
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+6
+10
+12
+16
+18
+22
+25
+27
+31
+33
+36
+39
+41
+44
+47
+49
+52
+55
+57
+60
+62
+64
+67
+69
+71
+73
+76
+77
+79
+81
+83
+85
+87
+88
+90
+92
+93
+94
+95
+96
+98
+99
+99
+100
+100
+101
+101
+102
+102
+102
+102
+102
+102
+102
+102
+100
+100
+100
+99
+98
+97
+96
+95
+94
+92
+92
+90
+88
+87
+85
+84
+82
+79
+78
+76
+73
+71
+69
+67
+64
+62
+59
+58
+55
+52
+50
+47
+45
+42
+39
+36
+33
+31
+27
+24
+22
+18
+16
+13
+9
+7
+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
+1
+4
+8
+10
+13
+16
+19
+22
+25
+27
+30
+34
+36
+39
+41
+44
+47
+49
+52
+55
+57
+59
+61
+64
+66
+68
+70
+73
+74
+76
+78
+79
+81
+83
+84
+87
+88
+89
+90
+92
+93
+93
+94
+95
+96
+96
+97
+98
+98
+98
+99
+98
+99
+98
+98
+97
+97
+97
+95
+95
+94
+94
+92
+92
+90
+89
+87
+86
+85
+83
+81
+80
+78
+76
+74
+72
+71
+68
+66
+64
+61
+59
+57
+54
+52
+49
+47
+45
+41
+39
+36
+33
+30
+27
+24
+22
+19
+16
+13
+11
+7
+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
+1
+4
+7
+11
+14
+16
+19
+23
+25
+28
+31
+34
+35
+38
+41
+44
+46
+48
+51
+53
+56
+58
+60
+62
+64
+67
+69
+70
+73
+75
+76
+78
+79
+81
+82
+84
+86
+87
+87
+89
+90
+91
+91
+92
+93
+93
+93
+94
+95
+94
+94
+94
+94
+94
+94
+93
+92
+92
+91
+90
+89
+88
+87
+87
+86
+84
+83
+81
+79
+78
+76
+74
+73
+71
+68
+67
+65
+63
+61
+58
+56
+54
+51
+49
+46
+43
+41
+38
+36
+33
+30
+27
+25
+22
+19
+17
+14
+11
+8
+5
+2
+0
+0
+0
+0
+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
+5
+8
+11
+13
+17
+20
+22
+25
+27
+30
+33
+36
+38
+40
+43
+45
+48
+50
+53
+55
+57
+59
+61
+63
+66
+67
+69
+71
+73
+74
+76
+77
+79
+81
+82
+83
+84
+84
+86
+86
+88
+88
+88
+89
+90
+90
+90
+91
+90
+91
+91
+90
+90
+89
+89
+88
+87
+87
+86
+85
+84
+83
+82
+80
+79
+78
+76
+75
+73
+71
+69
+68
+66
+63
+61
+59
+57
+55
+52
+50
+48
+46
+43
+40
+38
+35
+33
+30
+27
+25
+22
+20
+16
+13
+11
+8
+5
+2
+0
+0
+0
+0
+0
+0
+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
+5
+9
+11
+13
+16
+20
+22
+25
+28
+30
+33
+36
+38
+40
+42
+44
+48
+50
+51
+54
+56
+58
+60
+62
+64
+66
+68
+69
+70
+72
+74
+75
+77
+78
+79
+80
+81
+82
+83
+84
+85
+85
+86
+86
+86
+86
+86
+86
+86
+86
+86
+86
+86
+84
+85
+83
+83
+82
+81
+80
+79
+78
+77
+76
+73
+72
+71
+69
+68
+65
+64
+62
+60
+58
+56
+54
+51
+49
+47
+45
+42
+40
+37
+35
+33
+30
+27
+25
+22
+20
+17
+14
+11
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+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
+6
+9
+11
+14
+16
+19
+22
+25
+27
+30
+32
+34
+37
+39
+42
+44
+46
+49
+50
+52
+55
+57
+59
+60
+62
+64
+65
+68
+68
+70
+72
+72
+74
+75
+76
+77
+78
+79
+79
+80
+81
+81
+82
+82
+82
+83
+83
+83
+82
+83
+82
+81
+81
+80
+80
+79
+78
+77
+76
+76
+74
+72
+71
+70
+68
+67
+66
+64
+62
+61
+58
+56
+55
+53
+50
+48
+46
+45
+42
+39
+37
+35
+32
+29
+27
+25
+22
+20
+16
+14
+11
+9
+6
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+6
+8
+11
+13
+17
+20
+21
+25
+27
+29
+32
+34
+36
+39
+41
+43
+45
+48
+49
+51
+53
+55
+57
+58
+60
+62
+63
+65
+67
+68
+70
+70
+71
+72
+73
+75
+76
+75
+77
+77
+77
+78
+78
+79
+78
+78
+78
+78
+78
+78
+78
+77
+77
+76
+75
+75
+74
+73
+72
+70
+69
+67
+67
+65
+64
+62
+61
+59
+57
+56
+53
+51
+49
+47
+46
+43
+41
+39
+36
+34
+31
+29
+27
+24
+22
+19
+17
+14
+11
+8
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+11
+13
+16
+18
+21
+24
+26
+29
+30
+33
+36
+37
+40
+42
+44
+46
+48
+50
+51
+53
+55
+56
+58
+60
+61
+62
+64
+66
+66
+67
+69
+70
+70
+71
+72
+73
+74
+73
+74
+75
+75
+74
+75
+74
+75
+74
+74
+74
+73
+73
+72
+72
+70
+70
+68
+67
+67
+65
+64
+62
+61
+60
+58
+57
+55
+54
+52
+50
+48
+46
+44
+42
+40
+37
+35
+33
+31
+29
+27
+24
+22
+19
+16
+14
+11
+8
+6
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+6
+8
+11
+13
+16
+18
+21
+23
+25
+28
+30
+32
+34
+36
+39
+40
+43
+44
+46
+48
+50
+52
+53
+55
+56
+58
+59
+60
+62
+63
+64
+65
+66
+67
+67
+68
+68
+70
+70
+70
+70
+71
+70
+71
+70
+71
+70
+70
+70
+69
+68
+69
+67
+66
+66
+64
+64
+62
+62
+60
+59
+58
+57
+55
+53
+52
+50
+48
+46
+45
+43
+40
+38
+36
+35
+32
+29
+28
+25
+23
+20
+18
+16
+13
+11
+8
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+8
+10
+13
+15
+18
+20
+22
+25
+27
+29
+31
+33
+35
+37
+39
+41
+42
+45
+47
+48
+49
+51
+53
+54
+55
+56
+58
+59
+60
+61
+62
+63
+63
+64
+65
+65
+66
+67
+66
+67
+67
+67
+67
+67
+67
+66
+66
+66
+64
+65
+64
+63
+62
+61
+60
+59
+58
+57
+56
+54
+53
+51
+50
+48
+46
+45
+43
+41
+40
+37
+35
+33
+31
+29
+26
+24
+22
+20
+18
+15
+13
+10
+7
+5
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+5
+7
+9
+12
+14
+17
+19
+22
+24
+26
+28
+30
+31
+34
+35
+37
+39
+41
+43
+45
+46
+48
+49
+50
+52
+53
+54
+56
+56
+57
+59
+59
+60
+61
+61
+61
+62
+63
+62
+63
+63
+63
+63
+62
+63
+62
+62
+61
+61
+61
+59
+59
+58
+57
+56
+55
+54
+53
+52
+50
+49
+47
+46
+44
+43
+41
+40
+37
+36
+34
+32
+30
+28
+25
+24
+21
+19
+17
+14
+12
+10
+7
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+4
+6
+9
+12
+14
+16
+18
+21
+22
+24
+27
+28
+30
+32
+35
+36
+37
+40
+41
+43
+44
+45
+47
+48
+49
+50
+52
+52
+54
+55
+55
+56
+56
+58
+57
+58
+59
+58
+58
+59
+59
+59
+59
+59
+59
+58
+58
+57
+57
+56
+55
+55
+53
+53
+52
+51
+49
+48
+47
+45
+44
+42
+41
+39
+37
+36
+34
+32
+31
+29
+27
+25
+22
+20
+18
+16
+14
+11
+8
+6
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+6
+9
+11
+12
+15
+17
+19
+21
+23
+25
+27
+28
+31
+33
+34
+36
+37
+39
+40
+42
+43
+44
+46
+46
+48
+49
+50
+51
+52
+52
+53
+54
+54
+54
+54
+55
+55
+55
+55
+56
+55
+54
+54
+54
+54
+53
+52
+52
+52
+50
+49
+49
+48
+47
+46
+44
+43
+42
+40
+39
+37
+36
+34
+33
+30
+29
+27
+25
+23
+21
+19
+16
+15
+12
+11
+8
+6
+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
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+2
+5
+7
+9
+12
+14
+16
+18
+20
+22
+24
+26
+27
+29
+31
+33
+33
+35
+37
+38
+40
+40
+41
+42
+44
+45
+46
+46
+48
+48
+49
+50
+49
+51
+50
+51
+51
+52
+51
+51
+51
+51
+50
+50
+50
+49
+48
+49
+47
+47
+46
+45
+44
+43
+42
+41
+39
+38
+37
+35
+34
+32
+30
+28
+27
+25
+23
+21
+19
+17
+15
+14
+12
+10
+7
+5
+3
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+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
+4
+6
+8
+10
+13
+15
+17
+18
+21
+22
+23
+25
+27
+29
+30
+32
+33
+35
+35
+37
+38
+39
+40
+41
+42
+43
+44
+44
+45
+46
+46
+46
+47
+47
+47
+48
+47
+47
+47
+47
+47
+47
+46
+46
+45
+44
+43
+43
+42
+41
+40
+39
+38
+37
+35
+34
+33
+32
+30
+29
+27
+26
+24
+22
+20
+19
+17
+15
+13
+11
+8
+6
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+5
+7
+9
+11
+13
+15
+17
+18
+20
+22
+23
+25
+27
+28
+29
+30
+32
+33
+34
+36
+36
+37
+38
+39
+40
+40
+41
+42
+42
+42
+43
+43
+44
+43
+43
+44
+43
+43
+43
+42
+42
+41
+41
+41
+40
+39
+38
+37
+37
+35
+34
+33
+32
+31
+29
+28
+26
+25
+23
+22
+20
+19
+16
+15
+12
+11
+9
+7
+5
+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
+2
+4
+5
+7
+9
+12
+13
+15
+16
+19
+20
+21
+23
+24
+25
+27
+29
+29
+31
+32
+33
+33
+34
+35
+35
+37
+37
+38
+39
+38
+38
+39
+39
+39
+40
+40
+39
+39
+39
+38
+38
+38
+37
+37
+36
+35
+34
+34
+33
+31
+31
+30
+28
+26
+26
+25
+23
+21
+20
+18
+17
+14
+13
+11
+10
+7
+6
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+2
+4
+6
+8
+9
+11
+13
+15
+17
+17
+19
+20
+22
+23
+24
+26
+27
+28
+29
+30
+31
+32
+32
+33
+34
+34
+34
+35
+35
+35
+35
+36
+35
+36
+35
+35
+35
+35
+34
+34
+33
+32
+32
+31
+31
+29
+29
+28
+27
+26
+25
+24
+22
+21
+19
+18
+16
+15
+13
+12
+10
+7
+6
+4
+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
+1
+3
+5
+6
+8
+9
+11
+13
+14
+16
+17
+18
+20
+20
+21
+23
+24
+25
+26
+26
+28
+28
+29
+29
+30
+31
+31
+31
+32
+31
+31
+31
+31
+32
+31
+31
+30
+30
+30
+29
+28
+29
+28
+27
+26
+25
+24
+23
+21
+21
+20
+18
+17
+15
+14
+13
+11
+10
+8
+6
+4
+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
+3
+4
+6
+7
+9
+10
+12
+13
+15
+15
+17
+18
+19
+20
+21
+22
+23
+24
+24
+25
+26
+26
+26
+27
+27
+27
+28
+28
+28
+28
+28
+27
+27
+27
+27
+26
+26
+25
+25
+24
+23
+22
+21
+20
+20
+18
+17
+15
+15
+13
+12
+11
+9
+8
+6
+5
+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
+3
+4
+5
+7
+8
+10
+10
+12
+14
+15
+16
+16
+18
+19
+19
+19
+20
+21
+22
+22
+23
+23
+23
+24
+23
+24
+24
+24
+24
+23
+24
+23
+23
+22
+22
+21
+20
+20
+19
+19
+18
+16
+15
+14
+13
+12
+11
+10
+9
+7
+6
+4
+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
+0
+1
+3
+4
+6
+7
+9
+10
+11
+11
+12
+13
+14
+15
+16
+17
+17
+18
+18
+18
+19
+20
+20
+20
+20
+20
+19
+19
+19
+19
+19
+19
+18
+18
+17
+17
+16
+15
+14
+14
+13
+11
+11
+9
+8
+8
+6
+4
+4
+2
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+0
+1
+3
+4
+4
+6
+6
+8
+9
+9
+11
+11
+12
+13
+14
+14
+14
+15
+15
+15
+16
+16
+16
+16
+16
+16
+15
+15
+15
+15
+14
+14
+13
+13
+12
+11
+11
+9
+9
+8
+7
+5
+4
+4
+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
+1
+2
+3
+4
+5
+6
+7
+8
+9
+9
+9
+10
+10
+11
+11
+11
+12
+11
+12
+12
+12
+12
+12
+11
+11
+11
+11
+10
+9
+9
+8
+7
+7
+6
+6
+4
+3
+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
+1
+2
+3
+4
+5
+5
+6
+6
+7
+7
+7
+7
+8
+8
+8
+8
+8
+8
+8
+7
+8
+7
+6
+6
+6
+5
+5
+4
+3
+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
index d131d2eb3579ccaa738823196c3e2b2f63396cb7..588f1670c219d4ebf3cbc98a42dcb42057bcb667 100644 (file)
@@ -176,14 +176,14 @@ FUNCTION: FT_Error FT_Set_Char_Size ( face* face, FT_F26Dot6 char_width, FT_F26D
 
 FUNCTION: FT_Error FT_Load_Char ( face* face, FT_ULong charcode, FT_Int32 load_flags ) ;
 
-C-ENUM:
+C-ENUM: f
     FT_RENDER_MODE_NORMAL
     FT_RENDER_MODE_LIGHT
     FT_RENDER_MODE_MONO
     FT_RENDER_MODE_LCD
     FT_RENDER_MODE_LCD_V ;
 
-C-ENUM:
+C-ENUM: f
     FT_PIXEL_MODE_NONE
     FT_PIXEL_MODE_MONO
     FT_PIXEL_MODE_GRAY
diff --git a/extra/gpu/effects/blur/authors.txt b/extra/gpu/effects/blur/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/extra/gpu/effects/blur/blur.factor b/extra/gpu/effects/blur/blur.factor
new file mode 100644 (file)
index 0000000..ed72b28
--- /dev/null
@@ -0,0 +1,82 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: arrays destructors fry gpu.framebuffers gpu.render gpu.shaders
+gpu.state gpu.textures gpu.util images kernel locals math
+math.rectangles sequences ;
+IN: gpu.effects.blur
+
+GLSL-SHADER: blur-fragment-shader fragment-shader
+uniform sampler2D texture;
+uniform bool horizontal;
+uniform float blurSize;
+varying vec2 texcoord;
+void main()
+{
+    vec4 col = 0.16 * texture2D(texture, texcoord);
+    if (horizontal)
+    {
+        vec2 blurX1 = vec2(blurSize, 0.0);
+        vec2 blurX2 = vec2(blurSize * 2.0, 0.0);
+        vec2 blurX3 = vec2(blurSize * 3.0, 0.0);
+        vec2 blurX4 = vec2(blurSize * 4.0, 0.0);
+        col += 0.15 * (  texture2D(texture, texcoord - blurX1)
+                       + texture2D(texture, texcoord + blurX1));
+        col += 0.12 * (  texture2D(texture, texcoord - blurX2)
+                       + texture2D(texture, texcoord + blurX2));
+        col += 0.09 * (  texture2D(texture, texcoord - blurX3)
+                       + texture2D(texture, texcoord + blurX3));
+        col += 0.05 * (  texture2D(texture, texcoord - blurX4)
+                       + texture2D(texture, texcoord + blurX4));
+    }
+    else
+    {
+        vec2 blurY1 = vec2(0.0, blurSize);
+        vec2 blurY2 = vec2(0.0, blurSize * 2.0);
+        vec2 blurY3 = vec2(0.0, blurSize * 3.0);
+        vec2 blurY4 = vec2(0.0, blurSize * 4.0);
+        col += 0.15 * (  texture2D(texture, texcoord - blurY1)
+                       + texture2D(texture, texcoord + blurY1));
+        col += 0.12 * (  texture2D(texture, texcoord - blurY2)
+                       + texture2D(texture, texcoord + blurY2));
+        col += 0.09 * (  texture2D(texture, texcoord - blurY3)
+                       + texture2D(texture, texcoord + blurY3));
+        col += 0.05 * (  texture2D(texture, texcoord - blurY4)
+                       + texture2D(texture, texcoord + blurY4));
+    }
+    gl_FragColor = col;
+}
+;
+   
+UNIFORM-TUPLE: blur-uniforms
+    { "texture"    texture-uniform f }
+    { "horizontal" bool-uniform    f }
+    { "blurSize"   float-uniform   f } ;
+
+GLSL-PROGRAM: blur-program window-vertex-shader blur-fragment-shader window-vertex-format ;
+                        
+:: (blur) ( texture horizontal? framebuffer dim -- )
+    { 0 0 } dim <rect> <viewport-state> set-gpu-state
+    texture horizontal? 1.0 dim horizontal? [ first ] [ second ] if / blur-uniforms boa framebuffer {
+        { "primitive-mode" [ 2drop triangle-strip-mode ] }
+        { "uniforms"       [ drop ] }
+        { "vertex-array"   [ 2drop blur-program <program-instance> <window-vertex-array> &dispose ] }
+        { "indexes"        [ 2drop T{ index-range f 0 4 } ] }
+        { "framebuffer"    [ nip ] }
+    } 2<render-set> render ;
+                         
+:: blur ( texture horizontal? -- texture )
+    texture 0 texture-dim :> dim
+    dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+    texture horizontal? target-framebuffer dim (blur)
+    target-framebuffer dispose
+    target-texture ;
+                         
+: horizontal-blur ( texture -- texture ) t blur ; inline
+                         
+: vertical-blur ( texture -- texture ) f blur ; inline
+
+: discompose ( quot1 quot2 -- compose )
+    '[ @ &dispose @ ] with-destructors ; inline
+
+: gaussian-blur ( texture -- texture )
+    [ horizontal-blur ] [ vertical-blur ] discompose ;
diff --git a/extra/gpu/effects/blur/summary.txt b/extra/gpu/effects/blur/summary.txt
new file mode 100644 (file)
index 0000000..a9c5314
--- /dev/null
@@ -0,0 +1 @@
+Blur effects for textures.
diff --git a/extra/gpu/effects/quad/authors.txt b/extra/gpu/effects/quad/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/extra/gpu/effects/quad/quad.factor b/extra/gpu/effects/quad/quad.factor
new file mode 100644 (file)
index 0000000..5a770ba
--- /dev/null
@@ -0,0 +1,4 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: ;
+IN: gpu.effects.quad
diff --git a/extra/gpu/effects/quad/summary.txt b/extra/gpu/effects/quad/summary.txt
new file mode 100644 (file)
index 0000000..8952404
--- /dev/null
@@ -0,0 +1 @@
+Render a screen-aligned quad.
diff --git a/extra/gpu/effects/step/authors.txt b/extra/gpu/effects/step/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/extra/gpu/effects/step/step.factor b/extra/gpu/effects/step/step.factor
new file mode 100644 (file)
index 0000000..bd3b013
--- /dev/null
@@ -0,0 +1,40 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http://factorcode.org/license.txt for BSD license.
+USING: destructors gpu.render gpu.shaders gpu.state gpu.textures
+gpu.util images kernel locals math.rectangles ;
+IN: gpu.effects.step
+
+GLSL-SHADER: step-fragment-shader fragment-shader
+const vec4 luminance = vec4(0.3, 0.59, 0.11, 0.0);
+uniform sampler2D texture;
+uniform sampler2D ramp;
+varying vec2 texcoord;
+void main()
+{
+    vec4 col = texture2D(texture, texcoord);
+    float l = dot(col, luminance);
+    gl_FragColor = texture2D(ramp, vec2(l, 0.0));
+}
+;
+
+UNIFORM-TUPLE: step-uniforms
+    { "texture" texture-uniform f }
+    { "ramp"    texture-uniform f } ;
+
+GLSL-PROGRAM: step-program window-vertex-shader step-fragment-shader window-vertex-format ;
+
+: (step-texture) ( texture ramp texture dim -- )
+    { 0 0 } swap <rect> <viewport-state> set-gpu-state
+    [ step-uniforms boa ] dip {
+        { "primitive-mode" [ 2drop triangle-strip-mode ] }
+        { "uniforms"       [ drop ] }
+        { "vertex-array"   [ 2drop <window-vertex-buffer> step-program <program-instance> <vertex-array> ] }
+        { "indexes"        [ 2drop T{ index-range f 0 4 } ] }
+        { "framebuffer"    [ nip ] }
+    } 2<render-set> render ;
+
+:: step-texture ( texture ramp dim -- texture )
+    dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+    texture ramp target-framebuffer dim (step-texture)
+    target-framebuffer dispose
+    target-texture ;
diff --git a/extra/gpu/effects/step/summary.txt b/extra/gpu/effects/step/summary.txt
new file mode 100644 (file)
index 0000000..61028dd
--- /dev/null
@@ -0,0 +1 @@
+Render a quad with a step texture.
index d33fcf8c09799f8a99d3b50a4c2b4b40a8db35e1..2678f0452c950cd6213047bdc13eab9b159cf015 100644 (file)
@@ -1,6 +1,7 @@
 ! (c)2009 Joe Groff bsd license
-USING: gpu.buffers gpu.render gpu.shaders gpu.textures images kernel
-specialized-arrays ;
+USING: arrays destructors gpu.buffers gpu.framebuffers gpu.render
+gpu.shaders gpu.state gpu.textures images kernel locals math
+math.rectangles opengl.gl sequences specialized-arrays ;
 FROM: alien.c-types => float ;
 SPECIALIZED-ARRAY: float
 IN: gpu.util
@@ -44,10 +45,59 @@ CONSTANT: environment-cube-map-mv-matrices
             {  0.0  0.0  0.0  1.0 }
         } }
     }
+    
+GLSL-SHADER: window-vertex-shader vertex-shader
+attribute vec2 vertex;
+varying vec2 texcoord;
+void main()
+{
+    texcoord = vertex * vec2(0.5) + vec2(0.5);
+    gl_Position = vec4(vertex, 0.0, 1.0);
+}
+;
 
-VERTEX-FORMAT: window-vertex
+GLSL-SHADER: window-fragment-shader fragment-shader
+uniform sampler2D texture;
+varying vec2 texcoord;
+void main()
+{
+    gl_FragColor = texture2D(texture, texcoord);
+}
+;
+
+VERTEX-FORMAT: window-vertex-format
     { "vertex" float-components 2 f } ;
 
+UNIFORM-TUPLE: window-uniforms
+    { "texture" texture-uniform f } ;
+
+GLSL-PROGRAM: window-program window-vertex-shader window-fragment-shader window-vertex-format ;
+
+GLSL-SHADER: window-point-vertex-shader vertex-shader
+uniform float point_size;
+attribute vec2 vertex;
+void main()
+{
+    gl_Position  = vec4(vertex, 0.0, 1.0);
+    gl_PointSize = point_size;
+}
+;
+
+GLSL-SHADER: window-point-fragment-shader fragment-shader
+#version 120
+uniform sampler2D texture;
+void main()
+{
+    gl_FragColor = texture2D(texture, gl_PointCoord);
+}
+;
+
+UNIFORM-TUPLE: window-point-uniforms
+    { "texture"    texture-uniform f }
+    { "point_size" float-uniform   f } ;
+
+GLSL-PROGRAM: window-point-program window-point-vertex-shader window-point-fragment-shader window-vertex-format ;
+
 CONSTANT: window-vertexes
     float-array{
         -1.0 -1.0
@@ -62,4 +112,47 @@ CONSTANT: window-vertexes
     byte-array>buffer ; inline
 
 : <window-vertex-array> ( program-instance -- vertex-array )
-    [ <window-vertex-buffer> ] dip window-vertex <vertex-array*> ; inline
+    [ <window-vertex-buffer> ] dip window-vertex-format <vertex-array*> ; inline
+
+:: <2d-render-texture> ( dim order type -- renderbuffer texture )
+    order type
+    T{ texture-parameters
+       { wrap clamp-texcoord-to-edge }
+       { min-filter filter-linear }
+       { min-mipmap-filter f } }
+    <texture-2d> [
+        0 <texture-2d-attachment> 1array f f dim <framebuffer>
+        dup { { default-attachment { 0 0 0 } } } clear-framebuffer
+    ] keep ;
+
+: draw-texture ( texture dim -- )
+    { 0 0 } swap <rect> <viewport-state> set-gpu-state
+    {
+        { "primitive-mode" [ drop triangle-strip-mode ] }
+        { "uniforms"       [ window-uniforms boa ] }
+        { "vertex-array"   [ drop window-program <program-instance> <window-vertex-array> &dispose ] }
+        { "indexes"        [ drop T{ index-range f 0 4 } ] }
+    } <render-set> render ;
+
+:: <streamed-vertex-array> ( verts program-instance -- vertex-array )
+    verts stream-upload draw-usage vertex-buffer byte-array>buffer &dispose
+    program-instance <vertex-array> &dispose ;
+
+: (blended-point-sprite-batch) ( verts framebuffer texture point-size dim -- )
+    f eq-add func-one func-one <blend-mode> dup <blend-state> set-gpu-state
+    f origin-upper-left 1.0 <point-state> set-gpu-state
+    GL_POINT_SPRITE glEnable
+    { 0 0 } swap <rect> <viewport-state> set-gpu-state
+    window-point-uniforms boa {
+        { "primitive-mode" [ 3drop points-mode ] }
+        { "uniforms"       [ 2nip ] }
+        { "vertex-array"   [ 2drop window-point-program <program-instance> <streamed-vertex-array> ] }
+        { "indexes"        [ 2drop length 2 / 0 swap <index-range> ] }
+        { "framebuffer"    [ drop nip ] }
+    } 3<render-set> render ;
+    
+:: blended-point-sprite-batch ( verts texture point-size dim -- texture )
+    dim RGB float-components <2d-render-texture> :> ( target-framebuffer target-texture )
+    verts target-framebuffer texture point-size dim (blended-point-sprite-batch)
+    target-framebuffer dispose
+    target-texture ;
diff --git a/extra/images/testing/pgm/radial.ascii.fig b/extra/images/testing/pgm/radial.ascii.fig
new file mode 100644 (file)
index 0000000..6e52311
Binary files /dev/null and b/extra/images/testing/pgm/radial.ascii.fig differ
diff --git a/extra/images/testing/pgm/radial.ascii.pgm b/extra/images/testing/pgm/radial.ascii.pgm
new file mode 100644 (file)
index 0000000..1a7a6a8
--- /dev/null
@@ -0,0 +1,16388 @@
+P2
+# CREATOR: GIMP PNM Filter Version 1.1
+128 128
+255
+0
+2
+4
+6
+8
+10
+12
+13
+16
+17
+19
+21
+22
+24
+26
+28
+30
+32
+33
+35
+36
+38
+40
+41
+42
+44
+45
+46
+48
+49
+51
+52
+54
+55
+56
+57
+58
+59
+60
+61
+63
+63
+65
+65
+66
+67
+67
+68
+69
+70
+71
+71
+72
+72
+72
+73
+74
+74
+74
+74
+74
+74
+75
+74
+75
+75
+74
+75
+74
+74
+74
+74
+73
+73
+73
+72
+72
+71
+70
+69
+69
+69
+67
+66
+66
+65
+64
+63
+62
+61
+60
+59
+58
+57
+56
+55
+54
+52
+51
+49
+48
+46
+45
+43
+42
+41
+39
+38
+36
+34
+33
+31
+29
+27
+26
+25
+23
+21
+19
+18
+16
+14
+12
+10
+8
+6
+4
+2
+2
+4
+6
+8
+10
+12
+13
+16
+18
+20
+21
+23
+24
+27
+29
+31
+32
+34
+35
+37
+38
+40
+41
+43
+45
+46
+48
+49
+50
+52
+54
+55
+56
+57
+59
+60
+61
+61
+63
+64
+66
+66
+67
+68
+69
+69
+70
+71
+72
+73
+73
+74
+74
+75
+76
+76
+76
+77
+76
+77
+77
+78
+77
+77
+77
+77
+77
+77
+78
+77
+77
+77
+76
+76
+75
+75
+74
+74
+74
+73
+72
+71
+71
+70
+68
+68
+67
+67
+65
+64
+63
+62
+60
+59
+59
+57
+56
+54
+54
+52
+51
+49
+47
+46
+45
+43
+41
+41
+38
+37
+35
+34
+32
+30
+29
+27
+25
+23
+21
+19
+18
+15
+14
+12
+10
+8
+6
+4
+4
+6
+8
+10
+12
+14
+16
+18
+20
+21
+23
+25
+27
+28
+30
+32
+34
+36
+37
+39
+40
+43
+44
+46
+47
+49
+50
+51
+53
+54
+56
+58
+58
+60
+60
+62
+63
+65
+66
+67
+68
+68
+70
+71
+72
+73
+73
+74
+74
+75
+76
+76
+78
+77
+78
+78
+79
+80
+79
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+80
+79
+79
+78
+78
+78
+78
+77
+77
+76
+75
+75
+74
+73
+72
+71
+70
+70
+69
+67
+67
+65
+64
+63
+62
+61
+60
+59
+57
+56
+54
+53
+52
+51
+49
+47
+46
+44
+42
+41
+39
+38
+35
+34
+32
+31
+29
+27
+25
+23
+22
+19
+18
+16
+14
+12
+10
+8
+6
+6
+8
+10
+12
+14
+16
+18
+19
+22
+23
+26
+27
+29
+31
+33
+35
+37
+38
+39
+41
+43
+45
+47
+48
+49
+51
+53
+54
+56
+57
+58
+60
+61
+63
+64
+65
+66
+67
+69
+69
+70
+71
+72
+73
+74
+75
+76
+77
+77
+78
+79
+79
+80
+80
+81
+81
+81
+82
+82
+83
+82
+83
+83
+83
+83
+83
+83
+83
+83
+83
+82
+82
+82
+82
+80
+80
+80
+79
+79
+78
+77
+76
+75
+75
+74
+73
+73
+72
+71
+69
+68
+67
+66
+65
+64
+62
+61
+59
+59
+57
+55
+54
+52
+51
+50
+48
+47
+45
+43
+42
+40
+38
+36
+35
+33
+31
+29
+27
+25
+24
+22
+20
+18
+16
+14
+12
+10
+7
+8
+9
+12
+14
+16
+18
+19
+22
+24
+25
+27
+30
+31
+34
+35
+37
+38
+41
+42
+44
+45
+47
+49
+50
+52
+53
+55
+56
+58
+59
+61
+62
+63
+65
+66
+67
+69
+70
+71
+72
+73
+73
+75
+76
+77
+77
+78
+80
+80
+81
+81
+82
+82
+84
+83
+84
+84
+84
+85
+86
+85
+86
+86
+86
+86
+85
+86
+86
+86
+86
+85
+85
+84
+84
+84
+83
+83
+82
+81
+80
+80
+80
+78
+78
+77
+76
+75
+74
+73
+72
+71
+69
+68
+68
+66
+65
+64
+62
+61
+59
+58
+57
+55
+53
+52
+50
+49
+47
+46
+44
+42
+40
+39
+36
+35
+33
+31
+29
+28
+26
+23
+22
+20
+18
+16
+14
+12
+10
+10
+12
+14
+16
+18
+20
+22
+23
+26
+28
+30
+31
+33
+36
+37
+38
+41
+42
+45
+45
+48
+50
+51
+53
+55
+56
+58
+59
+60
+62
+63
+64
+66
+68
+69
+69
+71
+73
+74
+74
+76
+77
+77
+78
+79
+80
+82
+82
+82
+84
+85
+85
+85
+86
+86
+87
+87
+88
+88
+89
+88
+88
+89
+88
+89
+89
+88
+89
+88
+88
+88
+88
+87
+87
+86
+86
+86
+85
+85
+84
+82
+82
+82
+81
+80
+79
+78
+77
+75
+74
+73
+72
+71
+70
+68
+67
+66
+64
+64
+62
+60
+59
+57
+56
+54
+53
+51
+49
+48
+46
+44
+42
+40
+39
+37
+35
+34
+31
+30
+28
+26
+24
+21
+20
+18
+16
+14
+12
+12
+14
+16
+18
+20
+22
+24
+26
+28
+30
+32
+34
+36
+38
+39
+41
+43
+45
+47
+48
+50
+52
+53
+55
+57
+58
+59
+61
+63
+64
+65
+67
+69
+70
+71
+73
+74
+74
+76
+77
+78
+79
+80
+81
+83
+83
+84
+85
+85
+86
+87
+87
+89
+89
+90
+89
+90
+90
+91
+91
+91
+92
+92
+92
+92
+92
+91
+92
+92
+91
+91
+91
+90
+89
+89
+89
+88
+87
+87
+86
+86
+85
+84
+83
+82
+81
+80
+79
+78
+77
+76
+75
+74
+72
+71
+69
+68
+67
+66
+64
+63
+61
+59
+58
+56
+55
+53
+52
+50
+49
+46
+45
+43
+41
+39
+37
+36
+33
+32
+30
+28
+26
+24
+22
+20
+18
+15
+14
+14
+15
+18
+20
+22
+24
+26
+28
+30
+31
+33
+36
+37
+40
+42
+43
+45
+47
+48
+50
+52
+54
+56
+57
+59
+61
+62
+64
+65
+67
+68
+70
+71
+72
+74
+75
+76
+77
+78
+80
+81
+82
+83
+84
+85
+86
+87
+87
+88
+89
+89
+90
+90
+91
+92
+92
+93
+93
+94
+94
+94
+95
+94
+94
+94
+94
+94
+94
+94
+94
+94
+94
+93
+92
+92
+92
+90
+91
+90
+89
+88
+87
+86
+86
+85
+84
+83
+82
+81
+80
+78
+77
+76
+75
+73
+72
+70
+69
+68
+67
+65
+63
+62
+61
+59
+57
+56
+54
+52
+50
+49
+47
+45
+43
+41
+40
+38
+35
+34
+32
+30
+28
+26
+24
+22
+20
+17
+16
+15
+17
+20
+22
+24
+26
+28
+30
+32
+34
+35
+38
+40
+41
+44
+45
+48
+49
+51
+53
+54
+56
+58
+60
+62
+63
+65
+66
+68
+69
+70
+72
+73
+74
+76
+77
+79
+80
+81
+82
+84
+84
+85
+87
+87
+89
+89
+90
+91
+91
+92
+93
+94
+94
+94
+95
+96
+96
+96
+97
+97
+97
+97
+97
+98
+98
+98
+97
+97
+96
+96
+96
+95
+95
+95
+95
+94
+93
+92
+92
+91
+90
+89
+88
+88
+87
+86
+84
+83
+82
+81
+80
+79
+77
+76
+74
+73
+72
+71
+69
+68
+66
+64
+63
+61
+59
+58
+57
+54
+53
+51
+49
+48
+45
+43
+42
+39
+37
+35
+34
+31
+30
+28
+26
+24
+21
+20
+18
+17
+20
+22
+23
+26
+28
+30
+31
+34
+36
+38
+40
+42
+44
+46
+48
+49
+51
+53
+55
+57
+59
+60
+62
+63
+65
+66
+68
+70
+72
+73
+74
+76
+78
+78
+79
+81
+83
+83
+84
+86
+87
+89
+89
+90
+91
+92
+92
+94
+95
+95
+96
+96
+97
+98
+98
+99
+98
+99
+100
+100
+99
+100
+100
+100
+100
+100
+100
+100
+99
+99
+98
+99
+98
+98
+97
+96
+96
+95
+95
+93
+93
+92
+91
+90
+89
+89
+87
+86
+85
+84
+83
+81
+79
+78
+77
+75
+74
+73
+71
+70
+69
+67
+65
+64
+62
+60
+59
+57
+55
+53
+51
+49
+47
+46
+44
+41
+40
+38
+36
+34
+32
+30
+27
+26
+24
+21
+19
+19
+21
+24
+26
+28
+30
+32
+34
+35
+38
+40
+41
+44
+45
+48
+50
+52
+54
+56
+56
+59
+61
+62
+64
+66
+67
+69
+71
+73
+74
+76
+77
+78
+79
+81
+83
+84
+85
+86
+87
+89
+90
+91
+92
+93
+93
+95
+96
+97
+97
+97
+98
+99
+100
+100
+100
+101
+101
+102
+103
+102
+102
+103
+103
+102
+103
+102
+102
+103
+102
+102
+102
+101
+100
+100
+99
+99
+98
+98
+98
+97
+96
+95
+94
+92
+91
+91
+89
+89
+88
+87
+85
+84
+83
+81
+79
+78
+77
+75
+74
+73
+71
+69
+68
+66
+64
+62
+61
+59
+57
+55
+54
+51
+49
+48
+46
+43
+42
+40
+38
+36
+33
+32
+29
+27
+26
+23
+21
+21
+23
+25
+27
+30
+32
+33
+35
+38
+40
+42
+44
+45
+48
+50
+52
+53
+55
+57
+59
+61
+63
+64
+67
+68
+69
+71
+73
+75
+76
+77
+79
+81
+82
+83
+85
+87
+88
+89
+90
+91
+92
+93
+95
+95
+96
+97
+98
+99
+99
+101
+101
+102
+102
+103
+104
+104
+105
+105
+105
+105
+105
+106
+106
+106
+106
+106
+106
+105
+105
+105
+104
+104
+103
+103
+103
+102
+101
+101
+100
+99
+98
+97
+96
+96
+95
+93
+93
+91
+90
+88
+87
+86
+85
+83
+82
+81
+79
+77
+76
+74
+73
+71
+69
+68
+66
+65
+63
+61
+59
+57
+56
+54
+51
+50
+48
+46
+43
+42
+40
+38
+35
+34
+32
+30
+27
+25
+23
+22
+25
+27
+29
+32
+34
+35
+38
+40
+42
+44
+45
+48
+50
+52
+53
+56
+57
+60
+61
+64
+65
+67
+69
+70
+72
+74
+76
+77
+79
+80
+81
+83
+84
+86
+87
+88
+90
+91
+92
+94
+95
+96
+97
+98
+99
+100
+101
+102
+102
+103
+104
+105
+105
+106
+106
+107
+108
+108
+108
+108
+108
+108
+108
+109
+109
+108
+108
+108
+108
+107
+107
+106
+106
+106
+105
+104
+104
+103
+103
+102
+101
+100
+99
+98
+97
+96
+95
+94
+92
+91
+90
+89
+87
+86
+84
+83
+82
+80
+79
+76
+75
+74
+71
+70
+69
+67
+65
+63
+61
+59
+57
+56
+54
+51
+49
+48
+46
+44
+42
+40
+38
+35
+34
+31
+29
+27
+25
+24
+26
+29
+31
+33
+35
+37
+39
+42
+44
+46
+48
+49
+51
+54
+56
+57
+60
+61
+63
+65
+67
+69
+71
+73
+74
+76
+77
+79
+81
+82
+84
+85
+87
+89
+90
+91
+92
+94
+95
+96
+97
+99
+99
+100
+102
+103
+104
+104
+106
+106
+107
+108
+108
+109
+109
+110
+110
+110
+111
+111
+111
+111
+111
+111
+112
+111
+111
+111
+111
+111
+110
+110
+109
+109
+108
+108
+107
+106
+105
+105
+103
+102
+101
+100
+99
+99
+97
+96
+95
+94
+92
+91
+90
+88
+87
+86
+84
+82
+80
+79
+77
+75
+74
+72
+71
+69
+67
+65
+63
+61
+60
+58
+56
+54
+52
+50
+48
+46
+44
+42
+39
+37
+35
+34
+31
+28
+27
+26
+28
+31
+33
+35
+37
+39
+41
+44
+45
+47
+50
+52
+54
+56
+58
+59
+62
+64
+66
+67
+69
+71
+73
+75
+76
+78
+80
+82
+83
+85
+86
+88
+90
+91
+92
+94
+95
+97
+97
+98
+100
+101
+103
+103
+104
+105
+106
+107
+108
+109
+109
+110
+111
+111
+112
+112
+113
+113
+114
+114
+114
+114
+114
+115
+114
+114
+114
+113
+113
+113
+113
+112
+111
+111
+110
+110
+109
+108
+108
+107
+106
+106
+104
+103
+102
+102
+99
+99
+97
+97
+95
+94
+92
+91
+89
+87
+87
+84
+83
+81
+80
+78
+77
+75
+73
+71
+69
+67
+66
+63
+62
+60
+58
+56
+54
+51
+50
+48
+46
+44
+42
+39
+37
+35
+33
+31
+28
+28
+31
+32
+35
+36
+39
+41
+43
+46
+47
+49
+52
+54
+56
+57
+60
+62
+63
+65
+68
+69
+71
+73
+75
+77
+79
+80
+82
+84
+85
+87
+88
+90
+91
+93
+95
+96
+97
+99
+100
+101
+102
+104
+105
+106
+107
+108
+109
+109
+111
+111
+113
+113
+113
+114
+114
+115
+116
+116
+116
+117
+117
+117
+117
+117
+117
+117
+117
+117
+117
+116
+115
+115
+115
+115
+113
+113
+112
+111
+111
+110
+109
+108
+107
+106
+104
+103
+102
+102
+100
+98
+97
+96
+95
+93
+92
+90
+89
+87
+85
+84
+82
+80
+79
+77
+75
+73
+72
+69
+67
+66
+64
+61
+60
+57
+56
+53
+52
+49
+48
+46
+43
+41
+38
+37
+35
+33
+30
+30
+31
+34
+36
+39
+40
+42
+45
+47
+49
+52
+54
+56
+57
+60
+62
+64
+65
+68
+69
+71
+74
+76
+77
+79
+81
+83
+84
+86
+87
+89
+90
+93
+94
+96
+97
+99
+100
+101
+103
+104
+106
+106
+108
+109
+110
+111
+112
+112
+114
+114
+115
+115
+117
+117
+117
+117
+119
+118
+119
+119
+119
+120
+119
+120
+119
+120
+120
+119
+119
+119
+119
+118
+118
+117
+116
+116
+115
+114
+114
+113
+111
+111
+110
+109
+108
+106
+105
+104
+103
+101
+100
+99
+97
+96
+94
+92
+91
+89
+87
+86
+84
+83
+80
+79
+77
+76
+73
+71
+70
+67
+65
+64
+62
+59
+57
+55
+54
+51
+49
+47
+45
+43
+41
+38
+37
+34
+31
+32
+34
+35
+38
+40
+43
+45
+46
+49
+52
+53
+55
+57
+59
+62
+64
+66
+68
+70
+72
+73
+75
+77
+79
+81
+83
+85
+86
+88
+90
+91
+93
+95
+97
+98
+99
+101
+102
+103
+105
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+117
+119
+119
+120
+121
+120
+121
+121
+122
+122
+122
+122
+123
+123
+122
+123
+122
+122
+122
+121
+121
+120
+121
+120
+119
+118
+117
+117
+116
+115
+114
+113
+112
+111
+110
+108
+107
+106
+105
+104
+102
+100
+99
+98
+96
+95
+93
+91
+90
+88
+86
+84
+83
+81
+79
+77
+75
+74
+71
+70
+68
+66
+63
+62
+59
+57
+55
+53
+51
+49
+47
+45
+42
+40
+38
+36
+33
+33
+35
+37
+40
+42
+44
+47
+49
+51
+53
+56
+57
+59
+61
+63
+66
+68
+70
+72
+74
+76
+78
+80
+82
+83
+86
+87
+88
+90
+93
+94
+95
+97
+99
+101
+102
+103
+105
+106
+107
+108
+110
+111
+113
+113
+115
+116
+116
+118
+118
+120
+120
+121
+121
+122
+123
+124
+124
+125
+124
+125
+126
+126
+125
+125
+125
+125
+126
+125
+125
+124
+124
+124
+123
+122
+122
+121
+121
+119
+118
+117
+116
+116
+115
+113
+112
+111
+110
+109
+107
+106
+105
+103
+102
+100
+98
+97
+96
+93
+92
+90
+89
+87
+85
+83
+81
+79
+78
+76
+74
+71
+70
+68
+65
+64
+62
+59
+58
+56
+53
+51
+48
+46
+44
+42
+39
+38
+35
+35
+36
+39
+42
+43
+46
+48
+50
+53
+54
+57
+59
+61
+64
+65
+68
+69
+72
+74
+75
+78
+80
+81
+83
+86
+87
+89
+91
+93
+94
+96
+98
+99
+101
+102
+104
+105
+107
+109
+110
+111
+113
+114
+116
+116
+117
+119
+120
+121
+121
+122
+123
+124
+124
+126
+126
+126
+127
+127
+128
+128
+128
+128
+128
+128
+128
+128
+128
+128
+127
+127
+127
+127
+126
+125
+125
+124
+123
+123
+121
+121
+120
+118
+118
+116
+115
+114
+112
+111
+110
+108
+107
+105
+104
+102
+101
+99
+98
+96
+94
+93
+91
+89
+87
+85
+84
+82
+80
+78
+75
+74
+71
+70
+68
+65
+63
+61
+59
+57
+55
+52
+50
+49
+46
+44
+41
+39
+37
+37
+39
+40
+43
+46
+48
+49
+52
+54
+57
+59
+61
+63
+66
+68
+70
+72
+73
+76
+77
+80
+82
+84
+86
+88
+90
+92
+94
+95
+97
+98
+100
+101
+103
+105
+107
+108
+110
+111
+112
+113
+115
+116
+118
+118
+120
+121
+122
+123
+124
+124
+126
+127
+127
+128
+128
+129
+129
+129
+130
+131
+131
+131
+131
+131
+131
+131
+131
+130
+130
+130
+129
+129
+129
+128
+127
+126
+126
+125
+124
+123
+122
+121
+120
+119
+118
+116
+115
+114
+113
+111
+110
+108
+107
+104
+103
+102
+100
+98
+96
+95
+93
+91
+90
+87
+85
+84
+82
+79
+78
+75
+74
+72
+69
+67
+65
+63
+60
+59
+56
+55
+52
+49
+47
+46
+43
+41
+38
+37
+40
+42
+44
+47
+49
+52
+54
+56
+58
+61
+62
+65
+67
+69
+72
+73
+75
+77
+80
+82
+83
+86
+88
+89
+92
+93
+95
+97
+99
+101
+102
+104
+106
+108
+108
+110
+112
+114
+115
+116
+118
+119
+120
+121
+122
+124
+125
+126
+127
+128
+128
+130
+130
+130
+131
+132
+132
+133
+133
+133
+133
+134
+134
+134
+134
+133
+134
+133
+133
+132
+133
+132
+131
+131
+130
+129
+128
+127
+126
+126
+125
+124
+123
+121
+120
+119
+118
+117
+115
+114
+112
+111
+109
+107
+105
+104
+103
+101
+99
+97
+95
+94
+91
+90
+87
+86
+83
+82
+80
+78
+76
+73
+71
+69
+67
+65
+62
+61
+59
+56
+53
+52
+49
+47
+45
+43
+40
+39
+41
+44
+46
+48
+51
+54
+56
+58
+60
+63
+64
+66
+69
+71
+73
+76
+78
+80
+81
+84
+86
+88
+89
+92
+93
+95
+97
+100
+100
+103
+104
+106
+108
+110
+112
+113
+114
+116
+118
+119
+120
+122
+123
+124
+126
+126
+128
+128
+129
+130
+131
+132
+133
+134
+134
+134
+135
+136
+136
+136
+137
+137
+137
+137
+137
+137
+136
+136
+136
+136
+135
+134
+134
+133
+133
+131
+132
+130
+130
+128
+127
+126
+125
+124
+123
+121
+121
+118
+117
+116
+114
+112
+111
+110
+108
+107
+105
+102
+101
+100
+98
+95
+94
+91
+90
+88
+86
+83
+82
+79
+78
+76
+73
+71
+69
+67
+65
+62
+60
+58
+55
+54
+51
+49
+47
+44
+42
+41
+44
+46
+47
+50
+53
+55
+57
+60
+61
+64
+66
+68
+71
+72
+75
+77
+79
+82
+84
+85
+88
+90
+91
+93
+95
+98
+99
+101
+103
+105
+107
+108
+110
+112
+113
+115
+117
+118
+120
+121
+122
+124
+126
+126
+128
+129
+130
+131
+132
+133
+134
+135
+135
+136
+137
+138
+138
+139
+138
+139
+139
+140
+139
+139
+140
+139
+139
+139
+139
+138
+137
+138
+136
+136
+135
+135
+134
+133
+132
+131
+130
+129
+128
+127
+126
+124
+122
+121
+119
+119
+117
+115
+113
+112
+111
+109
+107
+105
+103
+101
+99
+98
+96
+94
+92
+90
+87
+86
+84
+82
+79
+78
+75
+73
+71
+68
+66
+64
+61
+60
+58
+55
+53
+50
+48
+46
+43
+42
+44
+47
+50
+52
+54
+56
+58
+61
+64
+66
+68
+70
+72
+74
+77
+79
+81
+83
+85
+87
+90
+92
+93
+95
+98
+99
+101
+103
+105
+107
+109
+111
+112
+115
+116
+117
+119
+120
+123
+123
+125
+126
+128
+129
+130
+132
+132
+134
+135
+136
+137
+137
+138
+139
+140
+140
+141
+141
+141
+141
+142
+143
+142
+143
+142
+142
+142
+142
+142
+141
+141
+141
+140
+139
+138
+137
+137
+135
+134
+134
+132
+132
+130
+129
+128
+126
+125
+124
+122
+121
+119
+118
+115
+115
+112
+110
+109
+107
+106
+104
+101
+100
+98
+96
+93
+92
+90
+88
+85
+83
+81
+79
+77
+74
+72
+70
+67
+66
+63
+61
+59
+56
+54
+52
+49
+47
+45
+44
+46
+49
+51
+54
+56
+58
+61
+62
+65
+67
+70
+72
+74
+76
+78
+81
+83
+85
+87
+89
+92
+93
+96
+98
+100
+102
+104
+106
+107
+110
+111
+113
+115
+117
+118
+120
+121
+123
+125
+126
+127
+129
+130
+132
+132
+134
+136
+136
+137
+139
+139
+140
+141
+142
+142
+143
+143
+144
+144
+145
+145
+145
+145
+145
+145
+145
+144
+145
+145
+144
+143
+143
+142
+142
+141
+140
+139
+138
+138
+136
+135
+134
+133
+132
+130
+129
+128
+126
+124
+123
+121
+120
+118
+116
+114
+113
+111
+109
+107
+106
+104
+102
+100
+98
+95
+94
+91
+90
+87
+86
+83
+81
+79
+76
+74
+72
+70
+68
+65
+63
+61
+58
+55
+54
+51
+48
+46
+45
+48
+50
+52
+55
+58
+60
+62
+64
+67
+69
+71
+74
+76
+78
+80
+83
+84
+86
+90
+91
+93
+95
+97
+99
+101
+103
+105
+108
+109
+111
+113
+115
+117
+118
+120
+122
+124
+126
+127
+128
+130
+132
+132
+134
+136
+136
+138
+139
+140
+141
+141
+143
+144
+144
+145
+146
+146
+147
+147
+148
+148
+148
+148
+148
+148
+147
+148
+147
+147
+146
+147
+145
+145
+144
+143
+143
+142
+141
+140
+138
+138
+137
+135
+135
+133
+131
+130
+128
+127
+125
+124
+122
+120
+119
+117
+115
+114
+111
+109
+108
+106
+103
+102
+99
+97
+95
+93
+92
+89
+87
+85
+83
+81
+78
+76
+74
+71
+69
+66
+65
+62
+60
+57
+55
+52
+50
+48
+47
+50
+52
+54
+57
+58
+61
+64
+66
+68
+71
+72
+75
+77
+80
+82
+85
+86
+89
+91
+93
+95
+98
+100
+102
+104
+105
+108
+110
+111
+114
+115
+117
+119
+121
+122
+125
+126
+127
+129
+131
+133
+134
+136
+137
+138
+140
+140
+142
+143
+144
+144
+145
+146
+147
+148
+148
+149
+150
+150
+150
+151
+150
+151
+151
+151
+150
+150
+151
+149
+149
+149
+148
+148
+147
+146
+145
+145
+144
+142
+141
+140
+139
+138
+137
+135
+133
+132
+131
+129
+127
+126
+125
+123
+121
+119
+117
+116
+113
+111
+109
+107
+105
+104
+101
+99
+98
+95
+94
+91
+89
+87
+84
+82
+79
+78
+75
+73
+71
+68
+65
+64
+61
+59
+56
+54
+52
+49
+48
+50
+53
+56
+58
+60
+62
+65
+67
+69
+72
+75
+77
+79
+81
+83
+86
+88
+90
+93
+95
+97
+99
+102
+104
+105
+108
+110
+111
+113
+116
+117
+119
+121
+123
+124
+127
+128
+129
+131
+133
+134
+136
+137
+139
+140
+142
+143
+144
+146
+146
+147
+148
+149
+150
+151
+151
+152
+152
+153
+153
+153
+154
+154
+153
+154
+153
+153
+153
+152
+152
+152
+151
+151
+150
+149
+149
+148
+146
+145
+144
+143
+142
+140
+139
+138
+137
+135
+134
+132
+130
+128
+126
+125
+123
+122
+119
+117
+115
+113
+111
+110
+108
+106
+104
+101
+99
+97
+95
+93
+90
+88
+86
+83
+81
+79
+76
+75
+72
+70
+67
+65
+62
+60
+58
+56
+53
+50
+49
+52
+55
+57
+59
+61
+64
+66
+69
+71
+74
+76
+78
+81
+83
+85
+88
+90
+93
+95
+96
+98
+101
+103
+105
+107
+109
+111
+114
+115
+118
+119
+121
+123
+125
+127
+129
+130
+132
+134
+136
+137
+139
+140
+141
+143
+144
+145
+147
+148
+149
+150
+151
+151
+152
+153
+154
+154
+155
+156
+156
+156
+157
+156
+157
+156
+156
+156
+155
+155
+155
+155
+154
+153
+153
+152
+151
+150
+149
+147
+147
+145
+144
+143
+141
+140
+138
+137
+136
+134
+132
+130
+128
+127
+125
+124
+122
+120
+118
+116
+113
+112
+110
+107
+105
+103
+101
+99
+97
+94
+92
+90
+88
+86
+83
+81
+78
+76
+73
+72
+69
+67
+65
+62
+59
+57
+55
+51
+51
+53
+55
+58
+60
+63
+66
+68
+71
+73
+75
+77
+80
+82
+85
+87
+89
+91
+93
+96
+98
+101
+103
+105
+108
+110
+111
+114
+115
+118
+120
+122
+123
+125
+127
+129
+131
+132
+134
+136
+137
+139
+141
+142
+144
+145
+147
+148
+149
+150
+151
+153
+154
+154
+155
+156
+157
+157
+158
+158
+158
+159
+159
+159
+159
+160
+159
+159
+158
+158
+158
+157
+157
+155
+155
+155
+153
+152
+151
+150
+149
+147
+147
+146
+144
+142
+141
+140
+138
+136
+134
+133
+131
+129
+127
+126
+123
+121
+119
+118
+115
+113
+112
+109
+107
+105
+103
+101
+98
+96
+94
+91
+89
+87
+84
+82
+80
+78
+76
+73
+71
+68
+66
+63
+61
+58
+55
+54
+52
+55
+57
+60
+63
+65
+67
+69
+72
+74
+77
+79
+81
+84
+86
+89
+91
+93
+95
+98
+100
+102
+104
+106
+109
+111
+113
+115
+118
+120
+122
+123
+126
+128
+130
+131
+133
+135
+136
+138
+140
+142
+143
+144
+146
+148
+149
+150
+151
+152
+154
+155
+156
+157
+158
+159
+159
+160
+161
+161
+162
+162
+162
+162
+162
+162
+162
+162
+161
+161
+161
+160
+159
+159
+158
+157
+157
+155
+154
+153
+151
+151
+150
+148
+146
+145
+143
+142
+140
+138
+137
+135
+133
+131
+129
+127
+126
+123
+121
+119
+118
+115
+114
+111
+108
+107
+104
+102
+100
+98
+95
+94
+91
+89
+86
+84
+82
+79
+77
+74
+72
+70
+67
+64
+62
+60
+57
+54
+54
+56
+58
+61
+64
+66
+69
+71
+74
+76
+78
+80
+83
+86
+88
+90
+93
+95
+97
+100
+102
+104
+106
+109
+111
+113
+115
+117
+119
+121
+123
+125
+127
+130
+132
+133
+135
+137
+138
+140
+142
+144
+146
+147
+149
+150
+152
+153
+154
+155
+156
+158
+159
+159
+161
+161
+162
+162
+163
+164
+164
+164
+164
+165
+165
+165
+165
+165
+164
+164
+163
+163
+162
+161
+160
+160
+159
+158
+156
+155
+155
+153
+151
+150
+148
+147
+146
+144
+142
+141
+139
+137
+135
+133
+132
+129
+127
+126
+123
+121
+119
+117
+115
+112
+110
+108
+107
+104
+102
+100
+97
+95
+92
+90
+88
+85
+83
+81
+79
+75
+73
+71
+69
+66
+63
+61
+58
+56
+55
+57
+60
+62
+65
+67
+69
+72
+74
+77
+80
+82
+84
+87
+89
+92
+94
+96
+99
+101
+103
+106
+108
+110
+112
+115
+117
+119
+121
+123
+125
+127
+130
+132
+133
+136
+137
+139
+141
+143
+145
+146
+148
+149
+151
+153
+154
+156
+157
+158
+159
+160
+161
+162
+163
+164
+165
+166
+166
+166
+167
+168
+167
+168
+168
+168
+168
+167
+167
+167
+166
+165
+165
+164
+163
+163
+162
+161
+159
+158
+156
+155
+154
+152
+151
+149
+148
+146
+144
+143
+141
+139
+138
+135
+133
+131
+130
+127
+126
+123
+121
+119
+117
+115
+113
+111
+108
+106
+104
+101
+99
+97
+95
+91
+89
+87
+84
+82
+79
+77
+74
+72
+70
+67
+65
+62
+59
+57
+56
+58
+60
+63
+66
+68
+71
+73
+76
+79
+81
+84
+86
+89
+91
+94
+96
+98
+100
+103
+105
+107
+110
+112
+114
+116
+118
+121
+123
+125
+127
+130
+131
+133
+136
+137
+139
+141
+143
+145
+146
+149
+150
+152
+153
+155
+156
+158
+159
+161
+162
+163
+164
+165
+165
+167
+168
+168
+169
+170
+169
+170
+171
+171
+171
+170
+171
+170
+169
+170
+169
+168
+167
+166
+166
+165
+164
+163
+162
+160
+159
+158
+156
+155
+153
+151
+151
+148
+146
+145
+143
+142
+140
+137
+136
+133
+131
+130
+127
+125
+123
+121
+119
+116
+114
+111
+110
+107
+105
+102
+100
+98
+96
+93
+91
+89
+86
+84
+81
+79
+76
+74
+71
+68
+66
+64
+61
+58
+57
+60
+62
+65
+67
+70
+72
+75
+78
+80
+82
+84
+87
+90
+92
+95
+97
+99
+102
+105
+106
+109
+111
+114
+116
+118
+121
+122
+125
+127
+130
+132
+134
+136
+137
+139
+142
+144
+145
+147
+149
+151
+153
+154
+155
+157
+159
+160
+161
+163
+165
+165
+167
+168
+169
+170
+171
+171
+172
+172
+173
+173
+173
+173
+173
+173
+173
+173
+172
+172
+171
+171
+170
+169
+169
+168
+167
+166
+165
+163
+162
+161
+158
+157
+156
+154
+153
+151
+148
+147
+145
+143
+141
+139
+137
+136
+133
+131
+129
+127
+124
+123
+120
+118
+116
+113
+111
+109
+107
+104
+102
+99
+97
+95
+92
+89
+87
+85
+82
+80
+77
+75
+72
+70
+67
+65
+62
+60
+58
+61
+63
+66
+69
+71
+74
+76
+79
+81
+84
+86
+89
+91
+93
+96
+98
+101
+103
+105
+108
+110
+113
+116
+118
+120
+122
+125
+126
+129
+131
+133
+135
+137
+139
+142
+144
+145
+148
+149
+151
+153
+154
+156
+158
+160
+161
+163
+164
+165
+166
+168
+169
+171
+171
+172
+173
+174
+174
+175
+175
+176
+176
+176
+176
+176
+176
+175
+175
+175
+174
+174
+173
+172
+171
+170
+169
+168
+167
+165
+165
+163
+161
+160
+158
+156
+155
+153
+151
+149
+147
+145
+144
+141
+140
+137
+135
+133
+131
+129
+127
+124
+122
+120
+117
+115
+113
+110
+108
+106
+103
+100
+98
+96
+94
+91
+89
+86
+83
+81
+78
+76
+74
+71
+68
+66
+64
+60
+59
+62
+65
+67
+70
+73
+75
+78
+80
+83
+85
+88
+90
+92
+95
+97
+100
+103
+105
+107
+109
+112
+114
+117
+119
+121
+123
+126
+128
+131
+133
+135
+137
+139
+141
+143
+146
+148
+149
+152
+153
+155
+156
+158
+160
+162
+164
+165
+167
+168
+169
+170
+172
+173
+174
+175
+175
+177
+177
+177
+178
+178
+179
+179
+179
+179
+179
+179
+178
+178
+177
+177
+176
+175
+173
+173
+171
+171
+170
+168
+167
+165
+163
+162
+161
+159
+157
+155
+153
+151
+150
+148
+146
+143
+141
+139
+137
+134
+133
+130
+128
+126
+124
+122
+119
+117
+114
+112
+109
+107
+105
+102
+100
+97
+95
+92
+90
+88
+84
+83
+80
+77
+75
+72
+70
+67
+65
+62
+61
+63
+66
+68
+71
+73
+76
+79
+81
+84
+86
+89
+91
+94
+96
+99
+102
+104
+106
+109
+111
+113
+116
+119
+120
+123
+125
+127
+130
+132
+134
+137
+139
+141
+143
+145
+147
+150
+151
+154
+155
+157
+159
+161
+162
+165
+165
+167
+169
+171
+172
+173
+174
+176
+177
+178
+178
+179
+180
+181
+181
+181
+182
+182
+182
+182
+182
+181
+181
+180
+180
+179
+178
+178
+176
+176
+175
+173
+172
+170
+169
+167
+166
+164
+162
+160
+159
+157
+155
+154
+152
+149
+147
+146
+143
+141
+139
+136
+134
+132
+130
+128
+125
+123
+120
+118
+116
+114
+111
+109
+106
+104
+101
+98
+96
+94
+91
+89
+87
+83
+81
+79
+76
+73
+71
+69
+65
+63
+61
+64
+66
+69
+72
+74
+77
+80
+82
+85
+88
+90
+93
+95
+98
+100
+102
+105
+107
+110
+112
+115
+117
+120
+122
+124
+127
+129
+131
+134
+136
+139
+141
+143
+145
+147
+150
+151
+154
+155
+158
+159
+161
+163
+164
+167
+168
+170
+171
+173
+174
+176
+177
+178
+179
+180
+181
+182
+183
+183
+183
+184
+185
+185
+185
+185
+185
+184
+184
+183
+183
+182
+182
+180
+179
+178
+177
+175
+174
+173
+172
+169
+168
+167
+165
+163
+161
+159
+158
+155
+153
+151
+149
+147
+145
+143
+141
+138
+136
+134
+131
+130
+127
+124
+122
+120
+117
+115
+113
+110
+108
+105
+103
+100
+97
+95
+92
+90
+87
+85
+82
+79
+77
+74
+72
+69
+66
+64
+63
+65
+68
+70
+73
+75
+78
+81
+83
+86
+88
+91
+94
+97
+99
+101
+104
+106
+109
+111
+114
+116
+118
+121
+124
+126
+128
+131
+133
+136
+138
+140
+142
+145
+147
+149
+151
+154
+156
+157
+159
+161
+164
+166
+167
+169
+170
+172
+173
+175
+177
+178
+180
+180
+182
+183
+184
+185
+185
+186
+187
+187
+187
+187
+188
+187
+187
+186
+186
+186
+186
+184
+184
+183
+182
+181
+179
+178
+177
+176
+174
+172
+171
+169
+167
+165
+163
+162
+159
+157
+155
+154
+151
+149
+146
+144
+142
+140
+138
+135
+133
+131
+128
+126
+123
+121
+119
+116
+114
+112
+109
+107
+104
+101
+99
+96
+94
+91
+88
+86
+84
+81
+78
+76
+73
+70
+67
+65
+64
+66
+69
+72
+74
+76
+79
+82
+84
+87
+90
+92
+95
+97
+100
+103
+105
+108
+110
+113
+115
+118
+120
+122
+125
+128
+130
+132
+135
+137
+139
+142
+144
+146
+149
+151
+153
+155
+158
+160
+161
+163
+166
+167
+169
+171
+172
+174
+176
+178
+179
+180
+181
+183
+184
+186
+186
+187
+188
+188
+189
+190
+190
+191
+190
+190
+190
+190
+189
+188
+188
+187
+187
+185
+184
+184
+182
+180
+179
+177
+176
+175
+172
+171
+169
+168
+166
+163
+161
+160
+157
+155
+153
+151
+148
+146
+144
+141
+140
+137
+134
+133
+130
+128
+125
+122
+120
+118
+115
+112
+110
+108
+105
+103
+100
+97
+95
+92
+90
+88
+84
+82
+79
+77
+74
+71
+68
+66
+64
+67
+70
+73
+75
+77
+80
+83
+86
+88
+91
+93
+96
+99
+101
+104
+106
+109
+112
+114
+116
+119
+122
+124
+126
+129
+131
+134
+137
+138
+141
+144
+145
+148
+150
+152
+155
+157
+159
+161
+163
+166
+168
+170
+171
+173
+175
+177
+179
+180
+181
+183
+184
+186
+187
+188
+189
+189
+191
+191
+192
+193
+193
+193
+193
+193
+193
+193
+192
+192
+191
+190
+189
+188
+187
+186
+185
+183
+181
+180
+179
+177
+175
+173
+171
+169
+168
+165
+163
+161
+159
+157
+155
+152
+150
+148
+146
+143
+141
+138
+136
+134
+131
+129
+126
+124
+121
+119
+117
+114
+111
+108
+107
+104
+102
+98
+96
+94
+90
+88
+85
+83
+80
+77
+75
+72
+70
+67
+65
+68
+71
+73
+76
+79
+81
+84
+86
+89
+91
+94
+97
+100
+102
+105
+108
+110
+112
+115
+118
+120
+123
+125
+128
+130
+133
+135
+138
+140
+142
+145
+147
+150
+152
+154
+157
+158
+161
+163
+165
+167
+169
+171
+174
+175
+178
+179
+181
+182
+184
+185
+187
+188
+189
+190
+192
+193
+193
+194
+194
+195
+195
+195
+196
+196
+196
+196
+195
+194
+193
+193
+191
+190
+189
+188
+187
+185
+184
+182
+180
+179
+177
+175
+173
+171
+169
+167
+165
+163
+160
+159
+156
+154
+152
+149
+147
+144
+143
+140
+138
+135
+132
+130
+127
+125
+123
+120
+117
+115
+113
+110
+108
+104
+102
+100
+97
+94
+92
+89
+86
+83
+81
+78
+75
+73
+71
+68
+66
+69
+71
+74
+76
+79
+82
+84
+88
+90
+93
+96
+98
+100
+104
+106
+108
+111
+114
+116
+119
+121
+124
+126
+129
+132
+134
+136
+139
+141
+144
+146
+149
+151
+153
+156
+158
+160
+163
+165
+167
+169
+171
+173
+175
+177
+179
+181
+183
+185
+186
+188
+189
+191
+192
+193
+194
+195
+196
+197
+197
+198
+198
+199
+199
+199
+198
+198
+198
+197
+196
+196
+195
+193
+192
+190
+190
+188
+186
+185
+183
+181
+180
+177
+175
+173
+171
+170
+167
+165
+163
+160
+158
+155
+154
+151
+149
+146
+144
+141
+139
+136
+134
+131
+129
+127
+124
+122
+119
+116
+114
+111
+109
+105
+103
+101
+98
+96
+93
+90
+88
+85
+82
+80
+77
+74
+72
+68
+67
+70
+73
+75
+77
+81
+83
+86
+88
+91
+93
+97
+99
+101
+104
+107
+110
+112
+115
+117
+120
+123
+126
+128
+131
+133
+135
+138
+140
+143
+145
+148
+150
+152
+155
+158
+160
+162
+164
+166
+169
+171
+173
+175
+178
+180
+182
+183
+185
+187
+188
+190
+192
+193
+194
+196
+197
+198
+199
+199
+201
+200
+201
+201
+201
+201
+202
+201
+200
+199
+199
+198
+197
+196
+194
+193
+192
+190
+189
+187
+185
+183
+181
+180
+178
+175
+173
+171
+169
+166
+165
+162
+160
+157
+155
+153
+150
+148
+145
+143
+140
+138
+136
+132
+131
+127
+125
+123
+120
+118
+115
+113
+110
+107
+104
+101
+99
+97
+94
+91
+88
+86
+83
+81
+78
+75
+72
+70
+67
+71
+74
+76
+78
+82
+84
+87
+89
+92
+95
+97
+100
+103
+105
+108
+110
+113
+116
+119
+121
+123
+126
+129
+131
+134
+137
+140
+141
+145
+147
+149
+152
+154
+156
+159
+161
+163
+166
+168
+171
+172
+175
+177
+179
+181
+183
+185
+187
+189
+191
+192
+194
+195
+197
+198
+199
+200
+202
+202
+203
+203
+204
+205
+205
+204
+204
+204
+203
+202
+201
+201
+199
+199
+197
+195
+194
+192
+191
+189
+187
+185
+183
+181
+179
+177
+175
+172
+171
+168
+166
+164
+162
+159
+156
+154
+152
+149
+146
+144
+141
+139
+137
+133
+131
+129
+126
+124
+121
+118
+116
+113
+110
+108
+105
+103
+100
+97
+94
+92
+89
+86
+84
+81
+79
+76
+73
+71
+69
+71
+73
+77
+79
+82
+85
+88
+90
+93
+95
+98
+101
+104
+106
+109
+111
+114
+117
+120
+122
+125
+128
+130
+133
+135
+137
+141
+143
+145
+148
+151
+153
+155
+157
+161
+163
+165
+168
+170
+172
+175
+177
+179
+181
+183
+185
+187
+189
+191
+193
+194
+196
+197
+199
+200
+202
+203
+204
+205
+206
+207
+207
+207
+207
+207
+207
+207
+206
+205
+205
+204
+202
+200
+200
+198
+197
+194
+193
+191
+189
+188
+185
+183
+181
+179
+176
+175
+173
+170
+167
+165
+163
+160
+158
+155
+153
+150
+148
+146
+142
+140
+137
+135
+133
+129
+127
+125
+122
+119
+117
+114
+112
+109
+106
+103
+101
+98
+95
+93
+90
+87
+85
+82
+79
+76
+74
+71
+69
+72
+74
+77
+80
+83
+85
+88
+90
+94
+96
+99
+102
+104
+107
+110
+113
+115
+118
+120
+123
+126
+129
+131
+134
+136
+139
+141
+144
+147
+149
+152
+154
+157
+159
+161
+165
+166
+169
+171
+174
+176
+178
+180
+183
+185
+187
+189
+191
+193
+195
+197
+199
+201
+202
+203
+205
+206
+207
+208
+208
+210
+210
+210
+210
+210
+209
+209
+209
+208
+207
+206
+204
+204
+202
+201
+199
+197
+195
+193
+191
+189
+187
+185
+183
+181
+178
+176
+174
+171
+169
+167
+165
+162
+159
+157
+154
+151
+149
+147
+144
+141
+139
+137
+134
+131
+129
+126
+123
+120
+118
+115
+112
+109
+107
+105
+102
+99
+96
+94
+91
+88
+86
+83
+80
+78
+74
+72
+70
+73
+76
+78
+81
+84
+86
+88
+92
+95
+98
+100
+103
+106
+108
+111
+114
+116
+118
+121
+124
+126
+129
+132
+134
+137
+140
+142
+145
+148
+150
+153
+155
+158
+160
+163
+165
+168
+171
+173
+175
+178
+180
+182
+185
+187
+189
+191
+194
+195
+197
+199
+201
+203
+204
+206
+207
+209
+209
+211
+212
+212
+212
+213
+212
+213
+213
+212
+212
+211
+210
+209
+207
+206
+204
+202
+201
+199
+198
+195
+193
+191
+189
+187
+184
+182
+180
+177
+175
+173
+170
+168
+166
+163
+160
+158
+155
+152
+151
+148
+145
+142
+140
+138
+134
+132
+129
+127
+124
+121
+119
+116
+113
+110
+108
+105
+102
+100
+97
+94
+91
+89
+86
+83
+81
+78
+75
+72
+71
+73
+76
+78
+81
+85
+87
+90
+92
+95
+98
+100
+103
+106
+109
+112
+114
+116
+119
+123
+125
+127
+130
+133
+135
+139
+141
+143
+146
+149
+152
+154
+157
+160
+162
+164
+167
+170
+172
+175
+177
+179
+181
+184
+186
+189
+191
+193
+195
+197
+199
+202
+203
+205
+207
+208
+210
+211
+212
+213
+214
+215
+215
+216
+216
+215
+215
+215
+214
+213
+212
+211
+209
+208
+207
+205
+203
+201
+199
+198
+195
+193
+191
+189
+186
+184
+181
+179
+177
+175
+171
+170
+167
+164
+162
+159
+157
+154
+152
+149
+146
+144
+141
+138
+136
+133
+131
+128
+125
+122
+119
+117
+114
+111
+109
+106
+103
+101
+98
+95
+93
+90
+87
+84
+81
+79
+76
+73
+71
+74
+77
+79
+82
+85
+88
+91
+93
+95
+98
+101
+104
+106
+109
+112
+114
+118
+120
+123
+126
+128
+131
+134
+136
+139
+142
+145
+147
+149
+153
+155
+158
+160
+163
+165
+169
+171
+173
+176
+178
+181
+183
+186
+188
+190
+192
+195
+197
+199
+201
+203
+206
+207
+209
+210
+212
+213
+215
+216
+216
+218
+218
+218
+219
+218
+218
+217
+217
+216
+215
+214
+212
+211
+208
+207
+205
+204
+201
+199
+197
+195
+192
+190
+188
+185
+183
+181
+178
+175
+173
+171
+168
+165
+163
+161
+158
+156
+152
+149
+147
+144
+141
+139
+136
+133
+131
+128
+126
+123
+120
+118
+115
+112
+109
+107
+104
+101
+99
+96
+93
+90
+87
+85
+82
+79
+77
+74
+71
+74
+77
+80
+82
+85
+88
+91
+94
+96
+99
+102
+104
+107
+110
+113
+116
+118
+122
+124
+126
+129
+132
+135
+137
+141
+143
+145
+148
+150
+153
+156
+158
+161
+164
+167
+170
+172
+174
+177
+179
+182
+185
+187
+190
+191
+194
+197
+199
+201
+203
+205
+207
+209
+211
+213
+214
+216
+217
+218
+220
+221
+220
+221
+221
+221
+221
+220
+219
+218
+217
+216
+215
+212
+211
+209
+207
+205
+203
+201
+198
+197
+194
+192
+190
+187
+185
+182
+179
+177
+174
+172
+169
+167
+164
+161
+159
+156
+154
+150
+148
+145
+143
+140
+138
+134
+132
+129
+126
+124
+121
+118
+115
+112
+110
+108
+105
+102
+100
+96
+94
+91
+88
+86
+82
+80
+77
+74
+72
+75
+77
+80
+83
+86
+89
+92
+95
+97
+100
+102
+105
+108
+111
+113
+117
+119
+122
+124
+128
+130
+133
+135
+139
+140
+144
+146
+149
+152
+154
+157
+160
+162
+165
+168
+171
+173
+175
+178
+181
+183
+186
+188
+190
+193
+195
+198
+201
+203
+205
+207
+209
+211
+213
+214
+217
+219
+220
+221
+222
+223
+223
+223
+224
+224
+223
+223
+222
+221
+219
+218
+217
+215
+213
+211
+209
+207
+205
+203
+200
+198
+196
+193
+191
+188
+185
+184
+180
+178
+175
+173
+170
+167
+165
+163
+160
+157
+154
+151
+149
+146
+143
+141
+138
+136
+133
+130
+127
+125
+122
+119
+116
+113
+110
+108
+106
+102
+100
+97
+94
+92
+89
+86
+83
+81
+77
+75
+73
+75
+78
+81
+84
+87
+89
+92
+95
+97
+101
+103
+106
+108
+111
+114
+117
+119
+122
+125
+128
+131
+134
+136
+139
+142
+145
+147
+150
+152
+155
+158
+161
+163
+166
+168
+171
+174
+177
+179
+182
+185
+187
+190
+192
+195
+197
+200
+201
+205
+206
+209
+211
+213
+215
+217
+219
+221
+222
+224
+224
+226
+227
+226
+227
+227
+226
+225
+225
+224
+222
+221
+219
+217
+215
+214
+211
+208
+207
+204
+202
+200
+197
+194
+192
+190
+187
+184
+182
+179
+177
+174
+172
+168
+166
+164
+161
+158
+156
+153
+150
+147
+144
+142
+139
+136
+133
+131
+128
+125
+122
+120
+117
+114
+112
+109
+106
+103
+100
+97
+95
+92
+89
+87
+83
+80
+78
+75
+73
+76
+78
+81
+84
+87
+89
+92
+95
+98
+101
+104
+106
+109
+112
+115
+117
+120
+123
+126
+128
+132
+134
+137
+140
+142
+145
+148
+150
+154
+156
+158
+161
+164
+167
+170
+172
+175
+177
+180
+183
+185
+188
+191
+193
+196
+198
+201
+203
+205
+208
+210
+213
+215
+218
+219
+221
+223
+225
+226
+227
+229
+229
+230
+229
+229
+229
+228
+227
+226
+224
+223
+221
+219
+217
+215
+213
+210
+208
+206
+203
+201
+199
+196
+193
+191
+188
+185
+183
+180
+178
+175
+172
+169
+167
+164
+161
+159
+156
+154
+150
+148
+145
+143
+140
+136
+134
+131
+129
+125
+123
+120
+118
+114
+112
+110
+107
+103
+101
+98
+95
+93
+90
+87
+84
+82
+78
+76
+74
+76
+79
+81
+85
+88
+90
+93
+95
+98
+101
+104
+107
+109
+112
+115
+117
+121
+123
+126
+129
+132
+135
+137
+140
+142
+146
+148
+151
+154
+156
+159
+162
+164
+167
+170
+173
+176
+179
+181
+184
+186
+189
+192
+194
+197
+200
+202
+205
+207
+210
+212
+215
+217
+219
+221
+223
+225
+227
+228
+229
+231
+231
+232
+233
+232
+232
+231
+229
+228
+227
+225
+223
+221
+219
+216
+214
+212
+209
+207
+204
+202
+200
+197
+194
+192
+189
+187
+184
+181
+178
+176
+173
+170
+168
+164
+163
+160
+157
+154
+151
+148
+146
+143
+140
+137
+134
+131
+129
+126
+124
+120
+117
+115
+113
+110
+106
+104
+102
+98
+95
+93
+90
+87
+84
+81
+78
+76
+74
+76
+80
+83
+85
+88
+90
+94
+96
+99
+101
+104
+107
+110
+113
+116
+118
+122
+124
+127
+129
+132
+135
+138
+140
+144
+146
+149
+151
+155
+157
+160
+163
+166
+168
+171
+174
+176
+179
+181
+185
+187
+190
+192
+195
+198
+200
+203
+206
+208
+210
+214
+216
+218
+221
+223
+225
+227
+229
+231
+232
+233
+235
+235
+235
+235
+234
+234
+232
+231
+229
+228
+225
+223
+221
+219
+216
+214
+211
+209
+206
+203
+201
+198
+196
+193
+190
+187
+184
+182
+179
+177
+174
+171
+168
+166
+163
+160
+157
+154
+151
+149
+146
+143
+141
+138
+135
+132
+129
+127
+124
+121
+118
+115
+113
+110
+107
+104
+102
+98
+96
+93
+91
+88
+85
+82
+79
+76
+73
+76
+80
+82
+85
+88
+91
+94
+96
+100
+102
+105
+107
+110
+113
+115
+119
+122
+125
+127
+130
+133
+136
+138
+141
+144
+147
+149
+152
+155
+158
+161
+164
+166
+169
+172
+174
+177
+179
+182
+185
+188
+191
+193
+197
+199
+202
+204
+207
+210
+212
+215
+217
+220
+222
+225
+227
+229
+232
+233
+235
+236
+237
+238
+238
+238
+238
+236
+235
+233
+231
+229
+226
+224
+222
+219
+218
+215
+212
+210
+207
+205
+202
+199
+196
+193
+191
+188
+186
+183
+179
+177
+175
+171
+169
+166
+163
+161
+158
+155
+152
+150
+146
+144
+141
+138
+135
+132
+130
+127
+125
+121
+119
+116
+113
+111
+107
+105
+102
+99
+96
+94
+91
+88
+86
+82
+80
+76
+75
+76
+80
+82
+86
+88
+91
+93
+97
+99
+102
+105
+108
+111
+113
+116
+119
+121
+124
+127
+130
+133
+136
+139
+141
+144
+147
+150
+153
+155
+159
+161
+163
+166
+169
+172
+174
+178
+180
+183
+186
+188
+192
+194
+196
+200
+202
+205
+208
+210
+213
+215
+218
+221
+224
+226
+229
+231
+233
+235
+237
+239
+240
+240
+241
+241
+240
+239
+237
+235
+233
+231
+228
+226
+223
+221
+218
+216
+213
+210
+208
+205
+202
+200
+197
+194
+191
+189
+186
+183
+181
+177
+175
+172
+169
+167
+163
+161
+158
+155
+152
+149
+147
+144
+141
+139
+136
+133
+130
+127
+125
+122
+119
+116
+113
+110
+108
+105
+102
+100
+97
+94
+91
+88
+85
+83
+80
+77
+75
+77
+80
+83
+85
+88
+91
+94
+97
+99
+102
+105
+108
+111
+114
+116
+120
+122
+125
+128
+130
+133
+136
+139
+142
+145
+148
+150
+153
+156
+158
+161
+164
+167
+169
+173
+176
+178
+180
+184
+186
+189
+192
+195
+197
+200
+203
+206
+209
+212
+214
+217
+220
+222
+225
+227
+230
+232
+234
+237
+240
+241
+243
+243
+244
+243
+242
+241
+239
+237
+235
+232
+230
+227
+224
+222
+219
+216
+214
+211
+208
+206
+203
+200
+197
+194
+192
+190
+186
+183
+181
+178
+175
+173
+170
+166
+164
+161
+158
+156
+153
+150
+147
+145
+141
+139
+136
+134
+131
+128
+125
+122
+119
+117
+114
+111
+108
+105
+102
+99
+97
+94
+91
+88
+85
+83
+80
+77
+74
+77
+80
+83
+86
+88
+92
+94
+97
+100
+102
+105
+108
+111
+113
+117
+119
+123
+125
+128
+131
+133
+137
+139
+141
+145
+148
+151
+153
+156
+159
+161
+164
+168
+170
+173
+176
+178
+181
+184
+187
+189
+193
+196
+198
+200
+204
+206
+209
+212
+214
+218
+220
+223
+226
+229
+231
+234
+236
+239
+241
+243
+245
+246
+247
+246
+245
+243
+241
+239
+236
+234
+231
+228
+226
+223
+220
+217
+214
+212
+209
+206
+204
+201
+198
+196
+193
+190
+187
+184
+181
+179
+176
+173
+170
+168
+164
+162
+159
+156
+153
+151
+148
+145
+142
+139
+137
+133
+130
+128
+125
+122
+119
+117
+114
+111
+108
+105
+103
+100
+97
+94
+92
+88
+86
+83
+80
+77
+75
+77
+80
+83
+86
+88
+92
+94
+97
+100
+103
+106
+109
+111
+114
+117
+119
+122
+125
+128
+131
+134
+136
+140
+142
+145
+148
+151
+153
+156
+159
+162
+165
+167
+170
+173
+176
+178
+182
+185
+187
+190
+193
+196
+199
+202
+204
+207
+209
+213
+215
+218
+220
+223
+227
+229
+232
+235
+238
+240
+242
+245
+247
+249
+250
+249
+247
+245
+242
+240
+237
+234
+232
+229
+226
+224
+221
+218
+216
+213
+210
+206
+204
+201
+198
+196
+193
+190
+187
+185
+182
+178
+175
+173
+170
+168
+164
+162
+159
+156
+153
+150
+148
+145
+142
+139
+136
+133
+131
+128
+126
+122
+120
+117
+114
+111
+109
+106
+103
+100
+97
+94
+91
+89
+85
+83
+80
+77
+75
+77
+80
+83
+86
+89
+91
+94
+97
+100
+102
+106
+109
+112
+115
+117
+120
+123
+125
+128
+131
+134
+137
+139
+142
+145
+147
+151
+154
+156
+159
+162
+164
+167
+171
+174
+176
+179
+181
+185
+187
+190
+193
+196
+198
+202
+204
+207
+210
+213
+216
+218
+221
+224
+227
+230
+232
+235
+238
+241
+243
+246
+248
+251
+252
+251
+249
+246
+244
+241
+238
+235
+232
+229
+226
+224
+221
+219
+216
+213
+209
+207
+204
+202
+199
+195
+193
+190
+187
+185
+182
+179
+176
+173
+171
+168
+165
+162
+159
+156
+154
+151
+148
+146
+142
+139
+137
+134
+131
+129
+125
+123
+120
+117
+114
+112
+109
+105
+102
+100
+98
+95
+92
+89
+86
+84
+80
+77
+75
+77
+81
+83
+86
+88
+92
+94
+98
+100
+103
+105
+108
+111
+114
+117
+120
+123
+126
+128
+131
+134
+136
+139
+143
+145
+148
+151
+154
+157
+159
+163
+164
+168
+170
+174
+176
+179
+181
+185
+187
+190
+193
+196
+199
+201
+204
+207
+210
+213
+215
+219
+221
+224
+226
+230
+233
+235
+238
+241
+244
+247
+250
+252
+255
+252
+250
+246
+244
+241
+238
+236
+233
+230
+227
+224
+222
+218
+216
+213
+210
+207
+204
+202
+199
+196
+193
+190
+188
+185
+182
+179
+176
+173
+171
+167
+164
+162
+159
+156
+154
+150
+148
+145
+142
+139
+136
+133
+131
+128
+125
+122
+120
+117
+115
+111
+108
+106
+103
+100
+97
+94
+92
+89
+86
+83
+81
+78
+74
+78
+80
+83
+86
+88
+92
+95
+97
+100
+103
+106
+109
+111
+114
+117
+119
+123
+125
+128
+131
+134
+136
+140
+142
+145
+148
+151
+153
+157
+159
+162
+165
+168
+170
+173
+177
+179
+182
+185
+187
+190
+192
+196
+199
+201
+204
+207
+210
+213
+216
+218
+221
+224
+227
+230
+232
+235
+238
+241
+243
+246
+249
+251
+253
+251
+249
+246
+243
+241
+238
+235
+233
+230
+227
+224
+221
+218
+216
+213
+210
+207
+204
+201
+198
+196
+192
+191
+187
+184
+182
+179
+176
+173
+170
+168
+165
+162
+159
+156
+153
+151
+148
+145
+142
+140
+137
+133
+131
+129
+125
+122
+120
+117
+114
+111
+108
+106
+103
+100
+98
+95
+92
+89
+86
+83
+80
+78
+74
+78
+80
+83
+86
+89
+91
+94
+97
+100
+103
+105
+109
+111
+114
+116
+120
+123
+126
+128
+131
+134
+136
+139
+142
+145
+148
+150
+153
+156
+159
+162
+165
+167
+170
+173
+176
+179
+182
+184
+188
+190
+193
+196
+198
+201
+204
+207
+209
+212
+215
+218
+221
+223
+226
+229
+232
+235
+237
+239
+242
+244
+247
+249
+249
+249
+247
+245
+243
+239
+238
+235
+232
+229
+227
+224
+220
+218
+215
+213
+210
+206
+204
+201
+199
+196
+193
+189
+188
+184
+181
+179
+176
+173
+170
+168
+165
+162
+159
+156
+153
+150
+147
+145
+143
+139
+137
+133
+131
+128
+126
+122
+120
+117
+114
+112
+109
+105
+103
+100
+97
+94
+92
+89
+86
+83
+81
+77
+74
+77
+81
+83
+86
+89
+92
+95
+97
+100
+103
+105
+108
+111
+114
+116
+120
+122
+125
+128
+131
+134
+136
+140
+142
+145
+147
+151
+154
+156
+159
+162
+165
+167
+170
+172
+175
+178
+181
+184
+187
+190
+193
+195
+198
+201
+203
+206
+209
+212
+215
+217
+220
+223
+226
+229
+231
+234
+236
+239
+241
+243
+245
+246
+246
+246
+245
+243
+241
+238
+236
+234
+231
+228
+226
+222
+220
+217
+215
+212
+209
+207
+203
+201
+198
+195
+193
+190
+187
+184
+181
+178
+176
+173
+170
+167
+164
+161
+159
+156
+154
+150
+148
+145
+142
+139
+136
+134
+131
+128
+125
+122
+120
+117
+114
+111
+108
+105
+103
+100
+97
+95
+91
+89
+86
+83
+80
+77
+75
+77
+80
+83
+86
+88
+92
+94
+97
+99
+103
+106
+109
+111
+113
+117
+120
+122
+125
+128
+131
+133
+137
+139
+142
+145
+147
+151
+153
+155
+158
+161
+164
+167
+170
+173
+175
+178
+180
+183
+187
+189
+192
+194
+197
+200
+203
+205
+209
+212
+214
+217
+219
+222
+225
+227
+229
+232
+234
+237
+239
+241
+242
+243
+244
+243
+242
+241
+240
+237
+235
+233
+229
+227
+225
+222
+219
+217
+213
+211
+208
+206
+203
+200
+198
+195
+192
+189
+186
+184
+181
+178
+175
+172
+170
+167
+164
+161
+158
+156
+153
+150
+147
+144
+142
+139
+136
+133
+131
+128
+125
+122
+119
+117
+114
+111
+108
+106
+103
+100
+97
+94
+91
+89
+86
+83
+80
+77
+75
+77
+79
+83
+85
+88
+91
+94
+97
+100
+102
+105
+108
+111
+114
+116
+119
+122
+124
+127
+130
+133
+136
+139
+141
+145
+147
+150
+152
+155
+159
+161
+164
+166
+170
+172
+175
+177
+181
+184
+186
+189
+191
+195
+197
+199
+202
+205
+208
+211
+213
+216
+219
+221
+224
+226
+228
+231
+233
+235
+237
+239
+239
+241
+241
+241
+239
+238
+237
+235
+233
+231
+228
+226
+223
+221
+219
+216
+213
+210
+207
+205
+202
+200
+197
+195
+192
+189
+186
+183
+181
+177
+175
+172
+169
+166
+164
+161
+159
+155
+152
+149
+147
+144
+141
+139
+136
+133
+130
+128
+125
+122
+119
+116
+114
+110
+108
+105
+102
+100
+97
+94
+91
+89
+86
+83
+80
+77
+74
+77
+79
+82
+85
+88
+90
+93
+96
+99
+102
+105
+107
+110
+113
+116
+119
+121
+125
+127
+130
+133
+135
+138
+141
+143
+147
+149
+152
+155
+158
+161
+163
+166
+169
+172
+174
+177
+180
+182
+185
+188
+191
+194
+196
+199
+201
+204
+207
+209
+212
+215
+217
+220
+222
+224
+227
+229
+231
+233
+235
+236
+237
+238
+238
+237
+238
+236
+235
+233
+231
+229
+227
+224
+223
+219
+218
+214
+212
+209
+207
+204
+201
+199
+197
+193
+190
+188
+185
+183
+180
+177
+174
+171
+169
+166
+163
+160
+157
+155
+152
+149
+147
+144
+141
+139
+135
+132
+130
+127
+124
+122
+118
+116
+113
+111
+108
+105
+102
+99
+96
+94
+91
+88
+86
+82
+80
+77
+74
+77
+79
+82
+85
+87
+90
+93
+96
+99
+102
+104
+107
+110
+113
+115
+118
+121
+123
+127
+130
+132
+135
+138
+141
+144
+147
+149
+152
+155
+157
+160
+162
+166
+168
+171
+174
+176
+179
+182
+185
+187
+190
+193
+196
+198
+200
+203
+206
+208
+211
+213
+216
+219
+220
+223
+225
+227
+229
+231
+233
+234
+235
+235
+235
+235
+234
+233
+232
+231
+229
+227
+225
+223
+220
+218
+215
+213
+211
+208
+206
+203
+201
+198
+195
+192
+190
+187
+184
+182
+180
+176
+174
+171
+168
+165
+162
+160
+157
+155
+152
+149
+146
+143
+141
+138
+135
+132
+130
+126
+124
+121
+118
+116
+113
+110
+107
+104
+102
+99
+96
+93
+91
+88
+85
+82
+79
+76
+73
+77
+79
+81
+85
+88
+90
+93
+96
+98
+101
+104
+106
+109
+112
+115
+118
+120
+124
+126
+129
+132
+134
+137
+140
+143
+146
+149
+151
+154
+157
+159
+162
+165
+167
+170
+173
+176
+178
+181
+184
+187
+189
+191
+194
+197
+200
+202
+204
+207
+210
+212
+214
+217
+218
+221
+223
+225
+227
+228
+229
+231
+232
+233
+233
+233
+232
+230
+230
+229
+227
+225
+223
+221
+219
+217
+215
+212
+209
+208
+205
+202
+200
+197
+195
+191
+189
+186
+184
+181
+179
+175
+173
+170
+167
+165
+162
+159
+157
+153
+151
+148
+146
+143
+140
+137
+135
+132
+129
+127
+124
+120
+118
+115
+112
+109
+106
+104
+101
+99
+95
+93
+90
+87
+84
+82
+79
+76
+73
+76
+79
+81
+84
+86
+89
+93
+95
+98
+101
+104
+106
+109
+112
+114
+117
+121
+123
+126
+129
+131
+134
+136
+139
+142
+145
+147
+151
+153
+156
+158
+162
+164
+167
+170
+172
+175
+177
+180
+183
+185
+188
+191
+193
+196
+199
+201
+203
+205
+208
+210
+213
+215
+217
+219
+221
+222
+224
+226
+227
+228
+229
+230
+230
+229
+229
+228
+227
+226
+225
+223
+221
+219
+217
+215
+213
+210
+208
+206
+204
+201
+198
+196
+193
+191
+188
+186
+182
+180
+178
+174
+172
+169
+166
+164
+162
+159
+156
+153
+150
+148
+145
+142
+139
+137
+134
+131
+128
+126
+123
+121
+118
+115
+112
+109
+106
+103
+101
+98
+95
+92
+90
+87
+84
+81
+78
+75
+72
+76
+78
+81
+83
+87
+89
+92
+95
+97
+101
+103
+106
+109
+112
+115
+117
+119
+123
+126
+128
+130
+133
+136
+139
+142
+144
+147
+149
+153
+155
+158
+160
+163
+166
+169
+171
+173
+177
+179
+181
+184
+187
+189
+192
+194
+197
+199
+202
+204
+207
+209
+211
+214
+215
+217
+219
+221
+223
+223
+224
+226
+227
+227
+226
+226
+227
+226
+225
+223
+223
+221
+218
+217
+215
+214
+211
+209
+207
+204
+202
+200
+197
+195
+192
+190
+187
+184
+182
+179
+176
+173
+171
+168
+166
+163
+161
+158
+156
+153
+150
+147
+144
+142
+139
+136
+133
+131
+128
+125
+122
+119
+117
+114
+111
+109
+105
+103
+100
+97
+95
+92
+89
+86
+83
+80
+78
+75
+72
+75
+77
+80
+83
+86
+89
+91
+94
+97
+99
+102
+105
+108
+111
+114
+116
+119
+121
+124
+127
+130
+132
+136
+138
+141
+143
+146
+149
+151
+154
+157
+159
+163
+165
+168
+170
+173
+176
+178
+181
+184
+186
+188
+191
+193
+196
+198
+200
+203
+205
+207
+209
+211
+213
+215
+216
+218
+220
+221
+222
+223
+223
+224
+224
+224
+223
+223
+222
+220
+220
+219
+217
+215
+213
+211
+209
+207
+205
+202
+200
+198
+196
+193
+191
+188
+186
+183
+181
+178
+175
+173
+170
+168
+165
+162
+160
+157
+155
+152
+149
+146
+143
+140
+138
+135
+133
+130
+127
+124
+121
+119
+116
+113
+111
+108
+105
+102
+99
+97
+95
+92
+89
+86
+83
+80
+77
+75
+72
+74
+77
+80
+82
+85
+88
+91
+94
+97
+99
+102
+105
+107
+111
+112
+116
+119
+122
+124
+126
+130
+132
+134
+137
+140
+143
+146
+148
+151
+153
+156
+159
+161
+164
+167
+169
+172
+174
+176
+179
+182
+185
+186
+190
+192
+194
+196
+199
+200
+203
+206
+208
+209
+211
+213
+214
+216
+217
+219
+220
+220
+221
+221
+221
+221
+221
+220
+220
+218
+217
+215
+215
+212
+211
+209
+207
+205
+203
+201
+199
+197
+194
+192
+190
+186
+185
+182
+179
+177
+175
+172
+169
+167
+164
+161
+159
+156
+153
+151
+148
+145
+143
+140
+137
+135
+132
+129
+127
+124
+121
+118
+115
+113
+110
+107
+104
+102
+99
+96
+93
+91
+88
+86
+83
+79
+77
+74
+71
+74
+77
+79
+82
+85
+88
+91
+93
+95
+99
+102
+104
+106
+109
+112
+115
+117
+120
+123
+125
+129
+132
+134
+137
+139
+142
+145
+147
+150
+152
+155
+158
+161
+163
+165
+168
+171
+173
+175
+178
+180
+183
+186
+188
+190
+193
+194
+197
+199
+201
+203
+206
+207
+209
+210
+212
+213
+214
+215
+216
+217
+218
+218
+218
+218
+218
+217
+217
+216
+215
+214
+212
+211
+209
+207
+205
+203
+202
+199
+197
+195
+193
+190
+188
+185
+183
+180
+178
+176
+173
+170
+168
+166
+163
+160
+157
+155
+153
+150
+147
+145
+142
+139
+136
+134
+131
+128
+126
+123
+120
+117
+115
+112
+109
+107
+104
+101
+99
+96
+93
+90
+88
+85
+82
+80
+76
+74
+71
+73
+76
+79
+82
+84
+87
+90
+92
+95
+98
+100
+104
+106
+109
+112
+114
+116
+120
+122
+125
+128
+130
+133
+136
+138
+141
+143
+147
+149
+151
+154
+156
+159
+162
+165
+167
+169
+172
+174
+177
+179
+181
+184
+186
+188
+191
+193
+195
+197
+199
+201
+203
+205
+207
+208
+209
+211
+212
+214
+214
+214
+215
+216
+216
+215
+215
+215
+214
+213
+212
+211
+210
+208
+207
+205
+203
+201
+199
+198
+195
+193
+190
+188
+186
+184
+182
+180
+177
+174
+171
+169
+167
+164
+162
+159
+157
+154
+151
+149
+146
+144
+141
+139
+135
+133
+131
+128
+125
+122
+120
+117
+114
+112
+108
+106
+103
+101
+98
+96
+92
+90
+87
+84
+81
+79
+76
+73
+70
+72
+75
+78
+81
+83
+86
+89
+91
+94
+97
+100
+102
+105
+108
+110
+113
+116
+119
+121
+124
+127
+129
+132
+134
+137
+140
+142
+145
+148
+150
+153
+155
+158
+160
+163
+165
+168
+171
+173
+176
+178
+180
+182
+185
+187
+189
+191
+193
+195
+197
+199
+201
+203
+205
+206
+207
+208
+210
+210
+211
+212
+212
+213
+212
+213
+212
+212
+212
+211
+209
+208
+207
+206
+204
+203
+200
+199
+197
+195
+193
+191
+189
+187
+185
+182
+180
+178
+176
+173
+170
+168
+165
+163
+160
+158
+155
+153
+151
+148
+145
+142
+139
+138
+135
+132
+130
+126
+124
+121
+118
+116
+114
+111
+108
+106
+103
+100
+97
+94
+92
+89
+86
+83
+81
+78
+75
+72
+69
+72
+75
+77
+80
+83
+86
+88
+91
+93
+96
+99
+101
+104
+107
+110
+112
+115
+117
+120
+123
+126
+128
+131
+133
+136
+139
+142
+144
+147
+149
+152
+154
+157
+159
+161
+164
+166
+169
+171
+174
+176
+179
+180
+183
+185
+187
+189
+191
+193
+195
+197
+199
+200
+202
+203
+205
+206
+207
+208
+209
+209
+210
+210
+210
+210
+210
+209
+209
+208
+207
+206
+204
+203
+202
+200
+199
+197
+195
+193
+191
+189
+188
+185
+183
+180
+178
+176
+173
+172
+169
+167
+164
+161
+160
+156
+154
+152
+149
+147
+144
+142
+139
+136
+133
+131
+128
+125
+123
+120
+118
+115
+112
+110
+107
+104
+102
+99
+97
+94
+91
+89
+85
+83
+80
+78
+74
+72
+68
+71
+74
+76
+79
+82
+85
+88
+90
+93
+95
+98
+101
+104
+107
+109
+112
+114
+117
+119
+122
+125
+127
+130
+133
+136
+138
+140
+142
+146
+147
+151
+152
+156
+158
+160
+163
+165
+168
+170
+172
+174
+177
+179
+181
+183
+185
+187
+189
+191
+193
+195
+196
+198
+200
+200
+202
+204
+204
+205
+205
+206
+206
+207
+207
+207
+207
+206
+206
+205
+204
+203
+202
+201
+199
+198
+197
+195
+193
+191
+190
+187
+185
+183
+181
+179
+177
+175
+173
+169
+168
+166
+163
+160
+158
+156
+153
+150
+148
+146
+143
+140
+138
+135
+133
+130
+128
+125
+122
+119
+117
+114
+112
+109
+106
+104
+101
+99
+95
+93
+91
+87
+85
+82
+79
+77
+73
+71
+68
+70
+73
+76
+79
+81
+84
+87
+89
+92
+95
+97
+100
+103
+105
+108
+111
+113
+116
+118
+121
+124
+126
+129
+131
+134
+137
+139
+141
+144
+147
+149
+151
+154
+157
+159
+161
+163
+166
+168
+170
+172
+175
+177
+180
+181
+183
+185
+187
+189
+191
+192
+194
+196
+197
+198
+200
+201
+202
+203
+203
+203
+204
+204
+204
+205
+204
+204
+203
+202
+202
+201
+200
+198
+197
+195
+194
+193
+191
+189
+187
+185
+184
+181
+179
+177
+175
+173
+170
+168
+166
+164
+162
+158
+157
+154
+152
+149
+146
+144
+142
+139
+136
+134
+132
+129
+126
+123
+121
+118
+116
+113
+110
+108
+105
+102
+100
+97
+95
+92
+89
+87
+84
+81
+78
+76
+73
+70
+67
+70
+72
+75
+77
+81
+83
+86
+89
+91
+94
+97
+99
+102
+104
+107
+110
+113
+115
+118
+120
+123
+125
+128
+131
+132
+135
+138
+141
+142
+145
+147
+150
+152
+155
+158
+160
+162
+164
+167
+168
+171
+173
+175
+177
+179
+181
+184
+185
+187
+188
+190
+192
+193
+195
+196
+196
+198
+199
+200
+200
+201
+201
+201
+202
+202
+201
+201
+201
+200
+199
+198
+197
+196
+194
+193
+192
+190
+189
+187
+185
+183
+182
+180
+177
+176
+173
+171
+169
+167
+165
+162
+160
+157
+155
+153
+150
+148
+146
+143
+141
+138
+136
+133
+131
+128
+126
+123
+120
+117
+115
+112
+110
+107
+105
+102
+99
+97
+94
+91
+89
+86
+83
+80
+77
+75
+72
+69
+66
+69
+72
+74
+77
+79
+82
+85
+87
+90
+93
+96
+98
+100
+104
+106
+108
+111
+113
+116
+119
+121
+124
+126
+129
+132
+134
+136
+139
+141
+144
+146
+149
+151
+154
+155
+158
+160
+163
+165
+167
+169
+172
+174
+175
+177
+179
+181
+183
+185
+186
+188
+189
+190
+192
+194
+194
+196
+196
+197
+197
+198
+198
+198
+199
+199
+198
+198
+198
+197
+196
+196
+194
+194
+192
+190
+189
+187
+186
+185
+183
+181
+180
+177
+175
+173
+172
+169
+167
+164
+162
+160
+158
+155
+154
+151
+149
+146
+143
+141
+139
+136
+134
+132
+129
+127
+124
+122
+119
+117
+114
+111
+109
+106
+103
+100
+98
+95
+92
+90
+88
+85
+82
+79
+77
+74
+71
+68
+65
+68
+71
+73
+76
+78
+82
+84
+86
+90
+92
+94
+97
+99
+102
+105
+107
+110
+113
+115
+117
+120
+122
+126
+128
+130
+132
+136
+137
+140
+143
+145
+147
+149
+152
+154
+156
+159
+161
+163
+166
+168
+169
+172
+174
+175
+177
+179
+180
+182
+184
+186
+187
+188
+190
+190
+191
+193
+193
+194
+195
+196
+195
+196
+196
+195
+196
+195
+194
+194
+194
+193
+192
+191
+189
+188
+186
+186
+184
+182
+181
+179
+177
+175
+173
+171
+170
+167
+165
+163
+161
+159
+157
+154
+152
+150
+147
+144
+143
+140
+137
+135
+133
+130
+128
+125
+123
+120
+117
+115
+112
+110
+108
+105
+103
+99
+97
+94
+91
+89
+87
+84
+81
+78
+76
+73
+71
+68
+64
+67
+70
+72
+75
+77
+81
+83
+85
+88
+91
+93
+96
+99
+101
+104
+107
+109
+112
+114
+117
+119
+121
+124
+126
+129
+132
+133
+136
+138
+141
+143
+145
+148
+150
+152
+155
+157
+159
+161
+163
+165
+167
+169
+171
+173
+175
+177
+179
+180
+182
+183
+185
+186
+187
+188
+189
+190
+191
+191
+192
+193
+193
+193
+193
+193
+192
+192
+192
+192
+191
+190
+189
+188
+187
+186
+184
+183
+181
+180
+178
+176
+175
+173
+172
+170
+167
+166
+163
+161
+159
+157
+154
+153
+151
+148
+146
+143
+141
+139
+136
+133
+132
+128
+127
+124
+121
+119
+116
+114
+112
+109
+106
+103
+101
+98
+96
+94
+91
+88
+86
+83
+80
+77
+75
+72
+70
+67
+63
+66
+69
+71
+74
+76
+79
+82
+85
+87
+90
+92
+95
+98
+100
+102
+105
+107
+110
+113
+115
+118
+120
+122
+125
+128
+130
+132
+135
+137
+140
+141
+144
+146
+149
+151
+153
+155
+157
+159
+161
+163
+166
+168
+170
+171
+172
+174
+176
+178
+179
+180
+182
+183
+185
+185
+186
+187
+188
+189
+190
+190
+189
+190
+190
+190
+190
+189
+189
+189
+188
+187
+186
+186
+184
+183
+182
+181
+179
+178
+176
+175
+172
+170
+169
+167
+165
+163
+161
+159
+157
+155
+153
+151
+149
+146
+144
+142
+139
+137
+135
+132
+130
+128
+125
+122
+121
+118
+115
+112
+110
+107
+105
+102
+100
+98
+94
+93
+89
+87
+84
+82
+80
+77
+74
+72
+69
+66
+62
+65
+67
+71
+73
+76
+78
+80
+83
+86
+88
+91
+93
+96
+99
+101
+104
+106
+109
+111
+114
+117
+118
+121
+124
+126
+129
+130
+133
+135
+137
+140
+142
+144
+147
+149
+151
+153
+155
+157
+159
+161
+164
+166
+167
+169
+170
+172
+174
+175
+176
+178
+180
+181
+182
+183
+184
+185
+185
+186
+186
+186
+187
+187
+187
+188
+187
+187
+186
+186
+185
+185
+184
+183
+181
+180
+180
+178
+176
+176
+174
+172
+170
+169
+167
+165
+163
+161
+160
+158
+156
+154
+152
+149
+147
+145
+142
+140
+138
+136
+133
+131
+128
+126
+124
+121
+119
+116
+114
+111
+109
+106
+104
+102
+98
+96
+94
+91
+89
+86
+84
+81
+78
+75
+73
+70
+68
+65
+61
+64
+67
+69
+72
+75
+77
+80
+83
+85
+88
+90
+92
+95
+97
+100
+103
+105
+108
+110
+112
+115
+118
+120
+122
+125
+127
+129
+132
+134
+136
+139
+140
+142
+145
+147
+149
+151
+153
+156
+157
+159
+161
+163
+164
+166
+168
+170
+172
+173
+174
+175
+176
+178
+179
+180
+181
+182
+182
+184
+183
+184
+184
+185
+185
+184
+184
+184
+184
+184
+182
+182
+182
+180
+179
+178
+177
+176
+174
+173
+171
+170
+168
+167
+165
+163
+161
+159
+157
+156
+153
+152
+149
+147
+145
+142
+140
+138
+136
+134
+132
+129
+127
+124
+122
+120
+117
+115
+113
+110
+108
+105
+103
+100
+98
+95
+92
+90
+88
+85
+82
+80
+77
+75
+72
+69
+66
+64
+61
+63
+66
+69
+71
+74
+76
+79
+81
+83
+86
+89
+91
+93
+96
+99
+101
+104
+106
+108
+111
+114
+116
+119
+121
+123
+125
+128
+130
+132
+135
+137
+139
+141
+144
+145
+147
+149
+151
+153
+156
+157
+159
+161
+163
+164
+166
+168
+169
+171
+171
+173
+175
+175
+177
+178
+179
+179
+179
+181
+181
+181
+181
+182
+182
+182
+181
+181
+181
+180
+180
+179
+179
+177
+177
+175
+174
+173
+171
+170
+169
+167
+165
+165
+163
+161
+159
+157
+155
+154
+151
+150
+147
+145
+143
+141
+139
+137
+134
+132
+130
+127
+125
+123
+121
+118
+116
+114
+111
+108
+106
+104
+101
+99
+96
+93
+91
+89
+87
+84
+81
+79
+76
+73
+71
+69
+65
+63
+59
+62
+65
+67
+70
+73
+74
+77
+80
+82
+85
+87
+90
+93
+95
+98
+99
+103
+105
+107
+110
+112
+114
+117
+119
+121
+123
+125
+128
+130
+132
+135
+137
+139
+141
+143
+146
+148
+149
+151
+154
+155
+157
+158
+160
+162
+163
+165
+166
+168
+169
+171
+172
+173
+174
+175
+175
+176
+177
+178
+178
+179
+179
+179
+179
+179
+179
+178
+178
+178
+177
+177
+176
+175
+174
+173
+171
+170
+169
+168
+166
+165
+164
+162
+161
+159
+157
+155
+153
+152
+149
+147
+145
+143
+141
+139
+137
+135
+133
+131
+128
+126
+124
+122
+119
+117
+114
+112
+110
+107
+105
+102
+100
+98
+95
+93
+90
+87
+84
+82
+80
+78
+75
+72
+70
+67
+65
+62
+59
+61
+63
+66
+68
+71
+73
+76
+79
+81
+83
+86
+88
+91
+93
+96
+99
+101
+103
+106
+108
+110
+113
+116
+117
+120
+122
+124
+127
+129
+131
+133
+135
+137
+139
+141
+143
+146
+147
+149
+151
+153
+155
+156
+158
+160
+161
+163
+164
+166
+167
+168
+169
+170
+171
+172
+173
+174
+175
+175
+176
+175
+176
+176
+176
+176
+176
+176
+176
+175
+174
+174
+173
+172
+172
+170
+169
+168
+167
+166
+164
+163
+161
+159
+158
+156
+155
+153
+151
+149
+147
+146
+143
+142
+139
+137
+136
+133
+131
+129
+126
+124
+122
+120
+117
+115
+113
+111
+108
+105
+104
+100
+99
+96
+94
+91
+89
+87
+84
+81
+79
+76
+74
+71
+68
+66
+64
+61
+57
+60
+62
+65
+67
+70
+73
+75
+78
+80
+82
+85
+87
+89
+92
+94
+97
+99
+102
+104
+107
+109
+111
+113
+116
+118
+121
+123
+124
+127
+129
+131
+133
+135
+138
+140
+141
+144
+146
+147
+149
+151
+153
+154
+156
+157
+159
+161
+162
+163
+164
+165
+166
+168
+169
+170
+170
+171
+171
+172
+172
+172
+173
+173
+173
+173
+173
+173
+172
+172
+171
+171
+170
+169
+169
+167
+166
+165
+165
+163
+162
+161
+159
+157
+156
+154
+152
+151
+149
+147
+145
+143
+141
+139
+137
+136
+133
+131
+129
+127
+124
+122
+121
+118
+116
+114
+111
+108
+106
+104
+101
+100
+97
+94
+92
+90
+88
+84
+82
+80
+77
+74
+72
+70
+67
+64
+62
+60
+56
+59
+61
+63
+66
+69
+71
+74
+76
+79
+81
+83
+86
+89
+91
+93
+96
+98
+100
+102
+105
+107
+110
+112
+114
+116
+119
+121
+123
+125
+128
+130
+131
+133
+136
+138
+139
+141
+143
+145
+147
+148
+150
+151
+154
+154
+156
+158
+159
+160
+162
+163
+164
+165
+166
+167
+168
+168
+169
+170
+170
+170
+170
+170
+171
+171
+170
+170
+170
+169
+169
+168
+167
+167
+166
+165
+164
+163
+161
+160
+159
+158
+156
+155
+154
+152
+151
+149
+147
+145
+143
+142
+140
+138
+135
+133
+131
+129
+127
+125
+123
+121
+118
+116
+114
+112
+110
+107
+105
+102
+100
+98
+96
+93
+90
+88
+86
+83
+81
+79
+76
+74
+71
+68
+66
+63
+61
+59
+54
+57
+60
+62
+65
+67
+69
+73
+75
+77
+80
+82
+84
+86
+90
+92
+94
+97
+98
+101
+103
+105
+108
+110
+112
+114
+117
+119
+121
+124
+125
+127
+129
+131
+134
+136
+137
+139
+142
+142
+144
+146
+148
+150
+151
+153
+154
+156
+157
+158
+159
+161
+162
+162
+163
+164
+165
+165
+166
+167
+167
+167
+168
+168
+168
+168
+168
+167
+167
+166
+166
+166
+165
+164
+163
+162
+161
+160
+159
+158
+157
+155
+154
+152
+152
+150
+148
+146
+144
+143
+141
+139
+137
+135
+134
+132
+130
+127
+125
+123
+121
+119
+116
+115
+113
+110
+108
+106
+103
+101
+99
+97
+94
+92
+89
+87
+84
+82
+80
+77
+74
+72
+69
+67
+65
+62
+59
+57
+53
+56
+59
+61
+64
+66
+68
+70
+73
+75
+78
+80
+83
+85
+88
+90
+92
+95
+97
+99
+102
+104
+107
+108
+110
+113
+115
+117
+119
+122
+124
+125
+127
+130
+132
+133
+135
+137
+139
+140
+142
+144
+146
+147
+149
+151
+152
+153
+154
+156
+157
+158
+159
+159
+160
+162
+162
+163
+163
+163
+164
+164
+165
+164
+165
+165
+165
+165
+164
+164
+163
+163
+162
+162
+160
+160
+159
+158
+157
+156
+155
+153
+152
+150
+149
+147
+145
+144
+142
+141
+139
+137
+135
+133
+131
+130
+128
+125
+123
+122
+119
+118
+115
+113
+111
+108
+106
+104
+101
+99
+97
+95
+92
+90
+88
+85
+83
+81
+78
+76
+73
+71
+68
+66
+63
+61
+59
+56
+52
+55
+57
+60
+62
+64
+67
+69
+72
+74
+76
+79
+81
+84
+86
+89
+91
+94
+96
+97
+100
+103
+105
+107
+109
+111
+113
+115
+117
+119
+121
+124
+126
+127
+129
+131
+133
+134
+136
+139
+140
+142
+143
+144
+147
+148
+149
+151
+151
+153
+154
+155
+156
+157
+158
+159
+159
+160
+161
+161
+161
+162
+162
+162
+162
+162
+161
+161
+161
+161
+161
+160
+159
+159
+158
+157
+156
+155
+154
+153
+152
+150
+150
+148
+147
+145
+144
+141
+140
+138
+136
+135
+134
+132
+129
+127
+125
+124
+121
+120
+117
+115
+113
+111
+109
+107
+104
+102
+100
+98
+96
+93
+91
+88
+87
+84
+82
+79
+76
+74
+71
+70
+67
+64
+62
+60
+57
+55
+51
+54
+56
+58
+61
+63
+66
+68
+70
+73
+75
+78
+80
+82
+84
+87
+89
+91
+94
+96
+99
+100
+102
+104
+107
+110
+111
+113
+116
+117
+120
+122
+123
+125
+128
+129
+131
+133
+134
+136
+137
+139
+140
+143
+144
+145
+147
+148
+149
+150
+151
+152
+153
+154
+155
+156
+157
+157
+158
+158
+159
+158
+159
+159
+159
+159
+159
+159
+158
+158
+158
+157
+156
+156
+155
+155
+153
+153
+152
+150
+149
+148
+147
+145
+144
+142
+140
+140
+138
+136
+135
+133
+131
+129
+127
+125
+123
+121
+119
+118
+115
+113
+111
+109
+107
+104
+102
+101
+98
+96
+94
+92
+89
+87
+84
+83
+80
+77
+76
+73
+70
+68
+66
+64
+61
+58
+56
+53
+49
+52
+55
+57
+60
+62
+64
+67
+69
+71
+73
+76
+79
+81
+83
+86
+88
+90
+92
+95
+96
+98
+101
+104
+105
+108
+110
+112
+113
+115
+118
+119
+121
+123
+125
+127
+128
+131
+132
+133
+135
+137
+138
+140
+142
+143
+144
+145
+147
+148
+149
+150
+151
+151
+152
+154
+153
+154
+155
+156
+155
+156
+157
+157
+156
+156
+156
+156
+156
+155
+155
+154
+154
+153
+152
+152
+150
+150
+149
+147
+146
+146
+144
+143
+142
+141
+139
+137
+135
+134
+132
+130
+129
+127
+125
+123
+121
+120
+117
+116
+113
+112
+109
+108
+105
+103
+101
+98
+97
+94
+92
+90
+88
+86
+83
+81
+78
+76
+73
+71
+69
+67
+64
+62
+59
+57
+54
+51
+48
+50
+53
+55
+58
+61
+63
+65
+68
+70
+72
+75
+77
+79
+81
+84
+85
+88
+91
+93
+95
+97
+100
+101
+103
+106
+107
+110
+112
+114
+116
+117
+120
+121
+123
+124
+127
+128
+130
+131
+133
+135
+136
+137
+139
+141
+142
+143
+144
+145
+146
+147
+148
+149
+149
+150
+151
+152
+152
+153
+153
+153
+154
+153
+153
+153
+153
+153
+153
+153
+152
+152
+151
+150
+150
+149
+149
+148
+146
+145
+144
+143
+141
+140
+139
+138
+136
+135
+133
+131
+130
+129
+127
+125
+123
+121
+119
+118
+115
+114
+112
+109
+108
+105
+104
+101
+99
+97
+95
+93
+91
+88
+86
+84
+81
+79
+77
+74
+73
+70
+68
+66
+63
+60
+58
+56
+53
+51
+47
+50
+51
+54
+56
+58
+61
+63
+65
+69
+71
+73
+75
+78
+80
+82
+84
+86
+89
+91
+93
+95
+97
+100
+102
+103
+105
+108
+109
+112
+114
+115
+117
+119
+120
+122
+124
+126
+128
+129
+130
+132
+134
+135
+136
+138
+139
+140
+141
+143
+143
+144
+145
+146
+147
+148
+148
+148
+150
+150
+150
+150
+151
+151
+151
+151
+150
+150
+151
+149
+150
+149
+148
+148
+147
+147
+146
+145
+144
+143
+141
+140
+139
+138
+137
+135
+133
+132
+130
+130
+127
+126
+124
+122
+121
+119
+117
+115
+114
+112
+109
+108
+105
+104
+101
+99
+97
+95
+93
+90
+89
+87
+84
+82
+79
+78
+75
+73
+71
+68
+66
+64
+61
+59
+56
+54
+52
+49
+45
+48
+50
+53
+55
+57
+60
+62
+64
+67
+69
+71
+73
+76
+79
+80
+82
+85
+87
+89
+91
+94
+95
+97
+100
+102
+104
+106
+107
+109
+111
+113
+115
+117
+119
+120
+122
+124
+125
+127
+129
+130
+131
+133
+134
+136
+137
+138
+139
+140
+141
+142
+142
+144
+144
+145
+146
+146
+147
+147
+147
+148
+148
+148
+148
+148
+148
+148
+147
+147
+147
+146
+145
+145
+144
+144
+143
+142
+141
+140
+139
+138
+137
+135
+134
+133
+132
+130
+128
+127
+125
+124
+122
+120
+119
+117
+115
+114
+111
+109
+108
+105
+104
+101
+100
+98
+95
+94
+92
+89
+87
+85
+82
+80
+78
+76
+73
+71
+69
+67
+64
+62
+60
+57
+55
+52
+50
+47
+44
+46
+49
+51
+54
+56
+58
+61
+63
+65
+67
+70
+72
+74
+76
+78
+81
+83
+85
+87
+89
+92
+93
+96
+98
+99
+101
+103
+106
+107
+110
+111
+113
+115
+116
+118
+120
+121
+123
+125
+126
+128
+129
+130
+131
+133
+134
+135
+136
+137
+138
+139
+140
+141
+141
+142
+143
+143
+143
+144
+145
+145
+145
+146
+145
+145
+145
+145
+145
+144
+144
+144
+143
+142
+141
+141
+140
+140
+138
+138
+137
+135
+134
+133
+131
+130
+129
+128
+126
+124
+123
+121
+119
+118
+117
+115
+113
+111
+109
+107
+105
+104
+102
+99
+97
+96
+93
+91
+90
+87
+85
+83
+81
+78
+77
+74
+72
+70
+67
+65
+63
+61
+58
+56
+54
+51
+48
+47
+43
+45
+47
+49
+52
+54
+56
+59
+61
+64
+66
+68
+70
+73
+74
+77
+79
+82
+84
+85
+88
+90
+92
+94
+96
+97
+100
+102
+103
+105
+107
+109
+111
+113
+114
+116
+117
+119
+121
+123
+124
+125
+126
+127
+129
+130
+131
+133
+134
+134
+135
+137
+138
+138
+138
+140
+140
+141
+141
+142
+142
+142
+142
+142
+142
+142
+143
+142
+142
+142
+141
+141
+141
+139
+139
+138
+137
+137
+135
+135
+134
+133
+132
+130
+129
+127
+127
+125
+124
+122
+120
+119
+118
+116
+114
+113
+111
+109
+107
+105
+104
+102
+100
+98
+96
+93
+91
+90
+87
+85
+84
+81
+79
+77
+74
+72
+70
+68
+66
+63
+61
+59
+56
+54
+52
+49
+47
+45
+41
+44
+45
+48
+50
+52
+55
+57
+59
+61
+64
+66
+68
+71
+72
+75
+78
+79
+82
+84
+86
+88
+90
+91
+93
+96
+98
+99
+102
+103
+105
+106
+108
+111
+112
+113
+115
+117
+119
+120
+121
+123
+124
+126
+127
+127
+129
+130
+131
+132
+133
+134
+135
+135
+136
+136
+137
+137
+139
+138
+139
+139
+139
+139
+139
+139
+139
+140
+139
+139
+139
+138
+137
+137
+136
+135
+135
+134
+133
+132
+131
+130
+129
+128
+127
+125
+124
+123
+121
+120
+118
+116
+115
+113
+111
+110
+108
+107
+105
+103
+102
+99
+97
+95
+93
+91
+90
+87
+86
+83
+81
+80
+77
+75
+73
+70
+68
+66
+64
+62
+60
+58
+55
+52
+51
+48
+46
+43
+39
+42
+44
+46
+49
+50
+53
+56
+58
+60
+62
+65
+67
+69
+71
+74
+76
+78
+79
+81
+84
+86
+87
+90
+91
+94
+96
+97
+99
+101
+103
+105
+106
+108
+109
+111
+112
+115
+116
+117
+118
+120
+122
+122
+124
+125
+127
+128
+129
+129
+130
+132
+132
+133
+133
+134
+135
+135
+136
+136
+136
+136
+136
+137
+137
+137
+136
+137
+136
+136
+136
+135
+135
+134
+133
+132
+132
+131
+131
+129
+128
+127
+127
+125
+124
+123
+121
+120
+119
+117
+116
+114
+112
+112
+110
+107
+107
+105
+103
+101
+99
+98
+96
+93
+91
+90
+87
+86
+84
+82
+79
+77
+75
+73
+71
+69
+67
+64
+62
+60
+58
+55
+54
+51
+49
+46
+44
+41
+38
+40
+43
+45
+47
+49
+51
+54
+56
+58
+61
+62
+65
+67
+69
+72
+73
+76
+77
+80
+81
+83
+85
+88
+90
+92
+94
+96
+97
+99
+101
+102
+104
+106
+107
+109
+110
+112
+114
+115
+116
+118
+119
+120
+121
+122
+124
+125
+126
+127
+127
+128
+129
+130
+131
+131
+132
+132
+132
+133
+133
+134
+134
+134
+134
+134
+134
+133
+134
+133
+132
+133
+131
+132
+131
+130
+129
+128
+128
+126
+126
+125
+124
+122
+121
+120
+119
+118
+116
+115
+114
+112
+111
+109
+107
+106
+104
+102
+101
+98
+97
+95
+93
+91
+90
+87
+86
+84
+82
+80
+78
+75
+73
+72
+69
+67
+65
+63
+60
+59
+56
+53
+51
+49
+47
+45
+43
+40
+36
+39
+41
+44
+45
+48
+50
+52
+55
+57
+59
+61
+63
+65
+67
+69
+71
+74
+76
+78
+80
+81
+84
+86
+87
+89
+91
+93
+95
+97
+99
+100
+101
+103
+105
+106
+109
+109
+111
+113
+114
+115
+117
+117
+119
+120
+121
+122
+123
+124
+125
+126
+126
+127
+128
+128
+129
+130
+130
+130
+130
+131
+131
+131
+131
+131
+131
+131
+131
+130
+130
+129
+129
+128
+128
+127
+126
+126
+125
+124
+124
+122
+121
+120
+119
+117
+116
+116
+113
+113
+111
+109
+108
+107
+105
+103
+102
+100
+99
+97
+94
+93
+91
+89
+88
+85
+83
+81
+80
+78
+76
+73
+72
+70
+67
+65
+63
+61
+59
+56
+54
+52
+50
+48
+46
+43
+41
+38
+34
+37
+39
+41
+44
+46
+48
+50
+53
+55
+57
+59
+61
+63
+66
+68
+70
+71
+73
+76
+77
+79
+82
+84
+85
+87
+89
+91
+93
+94
+96
+98
+100
+101
+103
+104
+106
+107
+108
+110
+112
+112
+114
+115
+116
+118
+119
+119
+121
+121
+122
+123
+124
+125
+125
+126
+127
+127
+127
+127
+128
+128
+128
+128
+129
+128
+128
+128
+128
+128
+127
+127
+126
+126
+125
+124
+124
+123
+122
+122
+120
+120
+118
+118
+116
+115
+114
+113
+111
+110
+108
+107
+106
+104
+103
+101
+100
+97
+96
+94
+92
+91
+89
+87
+86
+84
+82
+80
+78
+76
+73
+72
+70
+68
+66
+63
+61
+59
+56
+55
+53
+51
+48
+46
+44
+41
+40
+37
+33
+35
+37
+39
+42
+44
+46
+49
+51
+53
+55
+57
+59
+62
+63
+66
+67
+69
+71
+74
+76
+78
+80
+81
+84
+86
+87
+89
+90
+92
+94
+95
+97
+98
+100
+102
+104
+104
+106
+108
+109
+110
+111
+112
+114
+114
+116
+116
+118
+118
+120
+121
+121
+122
+123
+123
+123
+124
+124
+125
+125
+125
+126
+126
+125
+126
+125
+125
+125
+125
+125
+124
+123
+123
+123
+122
+121
+120
+120
+119
+118
+117
+116
+115
+113
+112
+111
+110
+109
+108
+107
+105
+103
+102
+100
+99
+97
+95
+94
+93
+90
+88
+87
+85
+83
+82
+80
+77
+76
+73
+72
+70
+68
+66
+63
+61
+59
+58
+56
+53
+51
+49
+47
+44
+42
+40
+37
+36
+31
+33
+36
+38
+41
+42
+45
+47
+49
+51
+53
+55
+57
+60
+61
+64
+65
+68
+70
+71
+74
+76
+77
+80
+81
+83
+85
+87
+89
+90
+92
+93
+95
+96
+98
+99
+101
+103
+104
+105
+107
+108
+108
+110
+111
+112
+113
+114
+115
+116
+117
+118
+118
+119
+120
+120
+121
+121
+122
+122
+122
+123
+122
+123
+122
+122
+123
+122
+123
+122
+122
+121
+120
+120
+120
+119
+119
+118
+117
+116
+115
+114
+113
+112
+111
+110
+109
+108
+106
+105
+104
+102
+101
+99
+98
+97
+95
+93
+92
+90
+88
+86
+84
+83
+81
+79
+77
+76
+73
+72
+70
+68
+66
+64
+62
+60
+58
+56
+53
+52
+49
+47
+44
+42
+40
+38
+36
+34
+29
+32
+34
+36
+38
+41
+43
+45
+47
+50
+52
+54
+56
+58
+60
+62
+64
+66
+68
+70
+71
+74
+75
+77
+79
+81
+83
+85
+86
+88
+89
+91
+92
+94
+95
+97
+99
+100
+101
+102
+104
+105
+106
+107
+108
+110
+111
+111
+113
+113
+114
+115
+116
+117
+117
+118
+118
+118
+119
+119
+119
+120
+120
+120
+120
+120
+120
+119
+120
+119
+119
+118
+118
+117
+117
+116
+116
+115
+114
+113
+113
+111
+110
+109
+108
+108
+107
+105
+104
+102
+101
+99
+98
+97
+95
+94
+92
+91
+89
+87
+86
+84
+83
+80
+79
+77
+76
+74
+72
+69
+68
+66
+64
+61
+60
+57
+55
+53
+51
+49
+47
+45
+43
+41
+39
+37
+34
+32
+28
+31
+33
+35
+37
+39
+41
+43
+46
+47
+50
+51
+53
+56
+58
+60
+61
+64
+65
+67
+70
+72
+73
+75
+77
+79
+80
+82
+83
+85
+87
+89
+90
+92
+93
+95
+96
+97
+99
+100
+102
+102
+103
+105
+106
+106
+108
+109
+110
+111
+111
+112
+113
+113
+114
+115
+115
+116
+116
+117
+116
+117
+117
+117
+116
+117
+117
+117
+117
+116
+115
+116
+115
+114
+114
+113
+113
+112
+111
+111
+110
+109
+108
+107
+106
+104
+104
+102
+101
+100
+98
+98
+96
+94
+93
+92
+90
+89
+87
+86
+84
+82
+81
+78
+77
+75
+73
+72
+69
+68
+66
+63
+61
+60
+57
+56
+54
+51
+50
+48
+46
+43
+41
+39
+37
+35
+32
+30
+27
+29
+31
+33
+35
+37
+39
+41
+43
+45
+48
+50
+52
+54
+56
+58
+59
+62
+64
+65
+68
+69
+71
+73
+74
+77
+78
+80
+81
+83
+84
+86
+88
+90
+90
+92
+94
+95
+96
+98
+99
+100
+101
+102
+103
+104
+105
+106
+107
+108
+109
+110
+110
+111
+112
+112
+112
+113
+113
+113
+113
+114
+114
+114
+114
+114
+114
+114
+113
+113
+114
+113
+112
+112
+111
+110
+110
+110
+109
+108
+107
+106
+105
+104
+104
+102
+101
+100
+99
+98
+96
+95
+93
+92
+91
+89
+87
+86
+85
+83
+81
+80
+78
+76
+74
+72
+71
+69
+68
+66
+63
+62
+60
+57
+56
+53
+52
+50
+47
+46
+44
+41
+39
+37
+35
+33
+31
+28
+25
+27
+29
+31
+33
+36
+37
+40
+41
+43
+46
+48
+50
+52
+54
+56
+58
+60
+61
+63
+65
+68
+69
+71
+72
+74
+75
+78
+79
+81
+82
+84
+85
+87
+88
+90
+91
+92
+93
+95
+96
+98
+98
+100
+101
+101
+102
+104
+105
+106
+106
+107
+108
+108
+109
+110
+110
+110
+110
+111
+111
+111
+111
+111
+112
+111
+111
+111
+111
+111
+110
+110
+109
+109
+109
+108
+107
+106
+106
+105
+105
+103
+103
+101
+101
+100
+98
+97
+96
+95
+94
+92
+91
+90
+89
+87
+85
+84
+82
+81
+79
+77
+76
+74
+72
+71
+69
+67
+66
+63
+61
+60
+58
+55
+53
+52
+49
+47
+45
+43
+42
+39
+38
+35
+34
+31
+29
+27
+22
+25
+27
+29
+31
+34
+35
+37
+40
+42
+44
+46
+48
+50
+52
+54
+56
+58
+59
+61
+63
+64
+66
+68
+71
+72
+74
+75
+77
+79
+80
+81
+83
+84
+85
+87
+89
+90
+91
+92
+93
+95
+96
+97
+98
+99
+100
+101
+102
+102
+103
+104
+105
+105
+105
+106
+107
+108
+107
+108
+108
+108
+109
+108
+108
+108
+108
+109
+108
+108
+108
+107
+107
+107
+105
+105
+105
+104
+103
+102
+102
+101
+100
+99
+98
+97
+96
+95
+93
+92
+91
+90
+88
+87
+86
+84
+83
+82
+80
+78
+77
+75
+74
+72
+70
+69
+66
+65
+63
+61
+60
+57
+56
+54
+51
+49
+48
+46
+43
+41
+40
+38
+35
+33
+31
+29
+27
+25
+21
+23
+25
+27
+29
+32
+33
+36
+38
+40
+42
+44
+46
+48
+50
+52
+54
+55
+57
+59
+61
+63
+64
+66
+68
+70
+71
+73
+74
+76
+77
+80
+81
+82
+84
+85
+86
+87
+89
+90
+92
+92
+93
+94
+95
+96
+97
+98
+99
+99
+100
+102
+102
+103
+103
+104
+104
+104
+105
+105
+105
+105
+105
+106
+106
+105
+105
+105
+106
+105
+105
+105
+104
+104
+103
+102
+102
+101
+101
+100
+99
+98
+97
+97
+95
+94
+94
+93
+91
+89
+88
+88
+86
+84
+83
+82
+80
+79
+77
+76
+75
+72
+71
+69
+68
+66
+65
+62
+61
+59
+58
+56
+54
+51
+50
+48
+46
+44
+42
+40
+38
+36
+34
+31
+30
+27
+25
+23
+19
+22
+24
+26
+27
+30
+32
+34
+36
+38
+39
+42
+43
+46
+47
+50
+51
+53
+55
+57
+58
+60
+63
+64
+66
+67
+69
+70
+73
+74
+75
+76
+78
+80
+81
+83
+83
+85
+86
+87
+89
+90
+91
+92
+93
+94
+95
+95
+96
+97
+98
+98
+99
+100
+100
+101
+102
+101
+102
+103
+103
+103
+102
+103
+103
+102
+102
+103
+102
+103
+102
+102
+101
+101
+100
+100
+100
+99
+98
+98
+97
+96
+94
+93
+93
+92
+91
+90
+89
+87
+87
+85
+83
+83
+81
+80
+78
+77
+75
+74
+72
+71
+69
+68
+65
+64
+63
+61
+59
+57
+55
+54
+51
+50
+47
+46
+44
+42
+40
+38
+36
+34
+32
+30
+28
+25
+24
+22
+17
+19
+21
+23
+25
+28
+30
+31
+34
+36
+37
+40
+42
+43
+46
+47
+50
+51
+53
+54
+57
+58
+60
+62
+64
+65
+67
+68
+70
+72
+73
+74
+76
+77
+79
+80
+81
+83
+83
+85
+86
+87
+88
+89
+91
+91
+92
+92
+93
+95
+95
+96
+96
+97
+98
+98
+99
+99
+99
+99
+100
+100
+100
+100
+100
+100
+100
+100
+100
+99
+99
+98
+99
+98
+97
+97
+97
+96
+95
+94
+94
+92
+92
+91
+90
+89
+89
+87
+86
+84
+84
+82
+81
+80
+79
+77
+75
+74
+73
+71
+70
+68
+67
+65
+63
+62
+60
+59
+56
+55
+53
+51
+49
+47
+46
+44
+42
+40
+38
+36
+34
+32
+29
+28
+25
+24
+21
+19
+16
+18
+19
+22
+24
+26
+28
+30
+31
+34
+36
+38
+40
+42
+44
+45
+47
+49
+50
+52
+54
+56
+57
+59
+61
+62
+65
+66
+67
+69
+71
+72
+73
+75
+76
+78
+79
+80
+81
+83
+83
+85
+86
+86
+87
+88
+89
+90
+91
+91
+92
+93
+94
+95
+95
+95
+95
+96
+96
+97
+97
+97
+97
+97
+97
+97
+98
+97
+97
+97
+96
+96
+96
+95
+95
+94
+94
+93
+92
+92
+91
+90
+89
+88
+87
+86
+86
+84
+83
+82
+81
+80
+78
+77
+76
+75
+73
+72
+71
+69
+68
+66
+64
+63
+61
+59
+58
+56
+54
+53
+50
+49
+47
+45
+44
+42
+40
+38
+35
+33
+32
+29
+28
+26
+24
+22
+19
+17
+13
+16
+18
+19
+22
+24
+26
+28
+30
+31
+34
+36
+38
+40
+42
+43
+45
+47
+48
+50
+52
+54
+55
+57
+59
+60
+62
+63
+65
+67
+68
+69
+71
+72
+74
+75
+76
+77
+79
+80
+81
+82
+82
+84
+85
+86
+87
+88
+88
+89
+89
+91
+91
+92
+92
+93
+93
+94
+93
+94
+94
+94
+94
+94
+95
+95
+95
+95
+94
+94
+94
+93
+93
+93
+92
+92
+91
+90
+89
+89
+88
+88
+87
+85
+84
+84
+82
+82
+80
+79
+79
+78
+76
+75
+73
+72
+70
+69
+68
+66
+65
+63
+62
+61
+59
+58
+56
+54
+52
+50
+48
+47
+45
+44
+41
+39
+37
+35
+34
+31
+30
+28
+26
+24
+22
+20
+18
+16
+12
+14
+16
+18
+20
+22
+24
+26
+28
+30
+32
+33
+36
+38
+39
+41
+43
+45
+46
+48
+50
+52
+54
+55
+57
+58
+59
+61
+63
+64
+65
+67
+68
+69
+71
+72
+74
+75
+76
+77
+78
+79
+80
+82
+82
+83
+84
+84
+86
+87
+87
+88
+88
+89
+89
+90
+90
+90
+90
+91
+91
+91
+92
+92
+92
+92
+91
+91
+92
+91
+91
+91
+90
+89
+89
+88
+88
+87
+87
+86
+85
+85
+84
+84
+82
+81
+80
+79
+78
+77
+76
+75
+74
+72
+71
+70
+68
+67
+66
+64
+63
+61
+60
+58
+56
+55
+53
+52
+50
+48
+46
+45
+43
+41
+39
+38
+36
+34
+32
+30
+28
+26
+24
+22
+20
+18
+15
+14
+9
+12
+14
+16
+18
+20
+22
+24
+25
+28
+30
+32
+34
+35
+37
+39
+41
+42
+44
+46
+48
+49
+50
+53
+54
+56
+58
+59
+60
+62
+63
+65
+66
+67
+69
+70
+71
+72
+73
+74
+75
+76
+78
+78
+80
+81
+81
+82
+83
+83
+85
+85
+86
+86
+86
+86
+88
+88
+87
+88
+89
+89
+88
+89
+89
+89
+88
+89
+88
+88
+88
+88
+88
+87
+87
+86
+85
+85
+84
+84
+83
+82
+81
+81
+80
+79
+78
+77
+76
+75
+73
+72
+71
+70
+68
+67
+66
+64
+63
+62
+60
+59
+57
+56
+54
+53
+51
+49
+48
+46
+45
+43
+41
+39
+37
+35
+34
+31
+30
+28
+26
+24
+22
+20
+18
+16
+14
+12
+8
+10
+12
+14
+16
+18
+20
+22
+24
+25
+27
+29
+32
+33
+35
+37
+38
+40
+41
+44
+45
+48
+49
+50
+52
+53
+55
+56
+57
+60
+61
+62
+63
+65
+66
+67
+68
+69
+71
+72
+73
+74
+75
+76
+76
+78
+79
+79
+80
+80
+81
+82
+83
+83
+83
+84
+85
+85
+85
+86
+86
+86
+86
+86
+86
+86
+86
+86
+85
+85
+85
+85
+84
+84
+83
+83
+82
+82
+81
+81
+80
+79
+79
+78
+77
+75
+75
+74
+73
+72
+71
+69
+69
+67
+66
+65
+63
+62
+61
+59
+58
+57
+55
+54
+52
+50
+48
+47
+45
+44
+42
+40
+38
+36
+35
+33
+31
+30
+27
+26
+23
+22
+20
+18
+16
+14
+12
+10
+5
+8
+10
+12
+14
+16
+18
+20
+22
+24
+25
+27
+29
+31
+33
+34
+36
+38
+40
+42
+43
+45
+47
+48
+49
+52
+52
+54
+55
+56
+58
+60
+60
+62
+63
+65
+66
+67
+68
+69
+71
+72
+72
+73
+74
+75
+76
+77
+77
+78
+78
+79
+80
+80
+81
+82
+82
+82
+82
+82
+83
+83
+83
+83
+84
+83
+83
+82
+83
+82
+82
+82
+81
+81
+80
+81
+80
+80
+79
+78
+77
+77
+76
+75
+74
+74
+72
+72
+71
+69
+68
+67
+66
+64
+63
+62
+60
+60
+58
+57
+55
+54
+53
+51
+50
+48
+47
+45
+43
+41
+39
+38
+36
+34
+33
+31
+29
+27
+25
+23
+22
+20
+18
+16
+14
+12
+10
+8
+4
+6
+8
+10
+12
+14
+16
+17
+19
+21
+24
+25
+27
+29
+30
+33
+34
+36
+38
+39
+41
+43
+44
+46
+47
+49
+50
+52
+53
+55
+56
+57
+58
+60
+61
+62
+63
+65
+65
+67
+67
+68
+70
+71
+71
+72
+73
+74
+75
+75
+76
+76
+77
+77
+78
+79
+79
+79
+79
+80
+80
+80
+81
+81
+81
+80
+81
+80
+80
+80
+79
+79
+79
+79
+78
+78
+77
+77
+76
+75
+75
+74
+73
+72
+71
+71
+70
+69
+68
+67
+66
+65
+64
+62
+61
+60
+59
+57
+56
+54
+53
+52
+50
+48
+47
+46
+44
+43
+41
+39
+37
+36
+34
+33
+30
+29
+27
+26
+23
+21
+20
+18
+16
+13
+11
+10
+8
+6
+2
+4
+6
+8
+10
+11
+14
+16
+18
+19
+21
+23
+25
+27
+29
+30
+32
+33
+35
+37
+39
+40
+42
+43
+45
+46
+48
+49
+51
+52
+53
+55
+56
+57
+58
+60
+61
+62
+63
+64
+65
+66
+67
+68
+69
+69
+70
+71
+71
+72
+73
+74
+74
+74
+76
+75
+77
+77
+77
+77
+77
+78
+77
+77
+78
+77
+77
+77
+77
+77
+77
+77
+77
+76
+75
+75
+74
+74
+73
+73
+72
+71
+71
+70
+69
+68
+67
+66
+65
+64
+63
+62
+60
+60
+59
+57
+56
+54
+54
+52
+50
+49
+48
+46
+44
+43
+42
+40
+38
+37
+35
+33
+32
+30
+28
+27
+25
+23
+22
+20
+18
+16
+14
+11
+10
+8
+6
+4
diff --git a/extra/images/testing/pgm/radial.binary.fig b/extra/images/testing/pgm/radial.binary.fig
new file mode 100644 (file)
index 0000000..6e52311
Binary files /dev/null and b/extra/images/testing/pgm/radial.binary.fig differ
diff --git a/extra/images/testing/pgm/radial.binary.pgm b/extra/images/testing/pgm/radial.binary.pgm
new file mode 100644 (file)
index 0000000..598ee59
Binary files /dev/null and b/extra/images/testing/pgm/radial.binary.pgm differ
diff --git a/extra/images/testing/ppm/ascii.fig b/extra/images/testing/ppm/ascii.fig
new file mode 100644 (file)
index 0000000..68a1fa1
Binary files /dev/null and b/extra/images/testing/ppm/ascii.fig differ
diff --git a/extra/images/testing/ppm/ascii.ppm b/extra/images/testing/ppm/ascii.ppm
new file mode 100644 (file)
index 0000000..326b70e
--- /dev/null
@@ -0,0 +1,57604 @@
+P3
+# CREATOR: GIMP PNM Filter Version 1.1
+160 120
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+243
+50
+50
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+50
+86
+243
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+0
+0
+255
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+190
+255
+218
+71
+255
+207
+17
+255
+205
+4
+255
+210
+31
+255
+223
+95
+255
+243
+196
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+239
+174
+255
+204
+2
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+213
+43
+255
+204
+0
+255
+219
+77
+255
+247
+214
+255
+254
+251
+255
+251
+234
+255
+238
+169
+255
+217
+63
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+205
+5
+255
+204
+0
+255
+252
+238
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+210
+32
+255
+204
+0
+255
+230
+132
+255
+251
+237
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+204
+0
+255
+204
+1
+255
+211
+36
+255
+221
+87
+255
+237
+164
+255
+254
+250
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+190
+255
+219
+77
+255
+206
+11
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+214
+48
+255
+251
+233
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+254
+252
+255
+247
+213
+255
+234
+152
+255
+211
+35
+255
+204
+0
+255
+222
+92
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+248
+220
+255
+204
+0
+255
+208
+19
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+251
+235
+255
+204
+0
+255
+205
+5
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+1
+255
+204
+0
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+215
+54
+255
+234
+150
+255
+247
+215
+255
+254
+248
+255
+254
+249
+255
+245
+204
+255
+218
+68
+255
+204
+0
+255
+212
+42
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+19
+255
+204
+0
+255
+242
+190
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+247
+217
+255
+204
+2
+255
+206
+10
+255
+251
+236
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+206
+11
+255
+204
+2
+255
+247
+216
+255
+255
+255
+255
+241
+186
+255
+219
+75
+255
+207
+15
+255
+206
+9
+255
+215
+57
+255
+242
+188
+255
+255
+255
+255
+255
+255
+255
+247
+217
+255
+204
+2
+255
+206
+10
+255
+251
+236
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+206
+11
+255
+204
+2
+255
+247
+216
+255
+255
+255
+255
+241
+186
+255
+219
+75
+255
+207
+15
+255
+206
+9
+255
+215
+57
+255
+242
+188
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+2
+255
+238
+172
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+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
+221
+85
+255
+204
+0
+255
+230
+132
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+232
+138
+255
+204
+0
+255
+220
+80
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+5
+255
+245
+204
+255
+255
+255
+255
+255
+255
+255
+221
+85
+255
+204
+0
+255
+230
+132
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+232
+138
+255
+204
+0
+255
+220
+80
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+5
+255
+245
+204
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+245
+203
+255
+226
+111
+255
+213
+46
+255
+206
+9
+255
+205
+5
+255
+209
+27
+255
+221
+83
+255
+243
+195
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+250
+229
+255
+221
+83
+255
+208
+18
+255
+204
+1
+255
+204
+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
+245
+205
+255
+204
+0
+255
+209
+25
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+254
+251
+255
+210
+29
+255
+204
+0
+255
+244
+198
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+245
+205
+255
+254
+249
+255
+249
+227
+255
+222
+88
+255
+204
+0
+255
+222
+88
+255
+255
+255
+255
+255
+255
+255
+245
+205
+255
+204
+0
+255
+209
+25
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+254
+251
+255
+210
+29
+255
+204
+0
+255
+244
+198
+255
+255
+255
+255
+255
+255
+255
+221
+84
+255
+245
+205
+255
+254
+249
+255
+249
+227
+255
+222
+88
+255
+204
+0
+255
+222
+88
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+218
+71
+255
+204
+0
+255
+236
+159
+255
+255
+255
+255
+255
+255
+255
+238
+168
+255
+204
+0
+255
+216
+60
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+204
+0
+255
+210
+29
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+218
+71
+255
+204
+0
+255
+236
+159
+255
+255
+255
+255
+255
+255
+255
+238
+168
+255
+204
+0
+255
+216
+60
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+239
+255
+204
+0
+255
+210
+29
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+10
+255
+206
+11
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+10
+255
+206
+11
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+192
+255
+204
+0
+255
+213
+46
+255
+255
+255
+255
+255
+255
+255
+215
+56
+255
+204
+0
+255
+240
+178
+255
+255
+255
+255
+255
+255
+255
+254
+252
+255
+232
+139
+255
+214
+48
+255
+206
+10
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+6
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+242
+192
+255
+204
+0
+255
+213
+46
+255
+255
+255
+255
+255
+255
+255
+215
+56
+255
+204
+0
+255
+240
+178
+255
+255
+255
+255
+255
+255
+255
+254
+252
+255
+232
+139
+255
+214
+48
+255
+206
+10
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+205
+6
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+209
+26
+255
+209
+27
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+209
+26
+255
+209
+27
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+216
+58
+255
+204
+0
+255
+241
+187
+255
+244
+199
+255
+204
+0
+255
+212
+42
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+227
+113
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+216
+58
+255
+204
+0
+255
+241
+187
+255
+244
+199
+255
+204
+0
+255
+212
+42
+255
+255
+254
+255
+255
+255
+255
+255
+255
+255
+227
+113
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+213
+43
+255
+213
+43
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+213
+43
+255
+213
+43
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+240
+179
+255
+204
+0
+255
+218
+72
+255
+221
+86
+255
+204
+0
+255
+236
+158
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+18
+255
+204
+0
+255
+238
+168
+255
+252
+240
+255
+255
+254
+255
+252
+241
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+240
+179
+255
+204
+0
+255
+218
+72
+255
+221
+86
+255
+204
+0
+255
+236
+158
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+208
+18
+255
+204
+0
+255
+238
+168
+255
+252
+240
+255
+255
+254
+255
+252
+241
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+254
+255
+213
+45
+255
+204
+1
+255
+205
+3
+255
+209
+27
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+9
+255
+204
+0
+255
+239
+176
+255
+254
+248
+255
+248
+221
+255
+221
+87
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+254
+255
+213
+45
+255
+204
+1
+255
+205
+3
+255
+209
+27
+255
+254
+249
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+206
+9
+255
+204
+0
+255
+239
+176
+255
+254
+248
+255
+248
+221
+255
+221
+87
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+237
+165
+255
+204
+0
+255
+204
+0
+255
+232
+138
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+220
+81
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+76
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+237
+165
+255
+204
+0
+255
+204
+0
+255
+232
+138
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+220
+81
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+76
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+248
+218
+255
+204
+0
+255
+207
+15
+255
+252
+241
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+251
+235
+255
+220
+82
+255
+206
+10
+255
+207
+16
+255
+223
+96
+255
+252
+240
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+248
+218
+255
+204
+0
+255
+207
+15
+255
+252
+241
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+251
+235
+255
+220
+82
+255
+206
+10
+255
+207
+16
+255
+223
+96
+255
+252
+240
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+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
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+227
+116
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+236
+158
+255
+204
+0
+255
+227
+116
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+238
+255
+218
+71
+255
+204
+0
+255
+247
+213
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+252
+238
+255
+218
+71
+255
+204
+0
+255
+247
+213
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+74
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+204
+0
+255
+204
+0
+255
+219
+74
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+205
+4
+255
+217
+65
+255
+250
+229
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+204
+0
+255
+205
+4
+255
+217
+65
+255
+250
+229
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
+255
diff --git a/extra/images/testing/ppm/binary.fig b/extra/images/testing/ppm/binary.fig
new file mode 100644 (file)
index 0000000..68a1fa1
Binary files /dev/null and b/extra/images/testing/ppm/binary.fig differ
diff --git a/extra/images/testing/ppm/binary.ppm b/extra/images/testing/ppm/binary.ppm
new file mode 100644 (file)
index 0000000..b774663
Binary files /dev/null and b/extra/images/testing/ppm/binary.ppm differ
index d521015d6f6c60ad411f2fb83c88ad42b48ba9c9..e2ef40d81ea6fcbe063a9d4f56ba2251151ed033 100644 (file)
@@ -191,7 +191,7 @@ CONSTANT: LIBUSB_ERROR_NOT_SUPPORTED -12
 CONSTANT: LIBUSB_ERROR_OTHER         -99
 TYPEDEF: int libusb_error
 
-C-ENUM:
+C-ENUM: libusb_transfer_status
     LIBUSB_TRANSFER_COMPLETED
     LIBUSB_TRANSFER_ERROR
     LIBUSB_TRANSFER_TIMED_OUT
@@ -199,7 +199,6 @@ C-ENUM:
     LIBUSB_TRANSFER_STALL
     LIBUSB_TRANSFER_NO_DEVICE
     LIBUSB_TRANSFER_OVERFLOW ;
-TYPEDEF: int libusb_transfer_status
 
 CONSTANT: LIBUSB_TRANSFER_SHORT_NOT_OK  1
 CONSTANT: LIBUSB_TRANSFER_FREE_BUFFER   2
index f0a3cafe33fcd3962e7537a59c1dc98efac62011..b15a7150bfdb59baaa1caa8a13239dc75050da54 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Matthew Willis.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: alien.libraries alien.syntax system sequences combinators kernel ;
+USING: alien.libraries alien.syntax system sequences combinators kernel alien.c-types ;
 
 IN: llvm.core
 
@@ -28,20 +28,20 @@ LIBRARY: LLVMCore
 TYPEDEF: uint unsigned
 TYPEDEF: unsigned enum
 
-CONSTANT: LLVMZExtAttribute         BIN: 1
-CONSTANT: LLVMSExtAttribute         BIN: 10
-CONSTANT: LLVMNoReturnAttribute     BIN: 100
-CONSTANT: LLVMInRegAttribute        BIN: 1000
-CONSTANT: LLVMStructRetAttribute    BIN: 10000
-CONSTANT: LLVMNoUnwindAttribute     BIN: 100000
-CONSTANT: LLVMNoAliasAttribute      BIN: 1000000
-CONSTANT: LLVMByValAttribute        BIN: 10000000
-CONSTANT: LLVMNestAttribute         BIN: 100000000
-CONSTANT: LLVMReadNoneAttribute     BIN: 1000000000
-CONSTANT: LLVMReadOnlyAttribute     BIN: 10000000000
-TYPEDEF: enum LLVMAttribute;
-
-C-ENUM:
+C-ENUM: LLVMAttribute
+    { LLVMZExtAttribute         BIN: 1 }
+    { LLVMSExtAttribute         BIN: 10 }
+    { LLVMNoReturnAttribute     BIN: 100 }
+    { LLVMInRegAttribute        BIN: 1000 }
+    { LLVMStructRetAttribute    BIN: 10000 }
+    { LLVMNoUnwindAttribute     BIN: 100000 }
+    { LLVMNoAliasAttribute      BIN: 1000000 }
+    { LLVMByValAttribute        BIN: 10000000 }
+    { LLVMNestAttribute         BIN: 100000000 }
+    { LLVMReadNoneAttribute     BIN: 1000000000 }
+    { LLVMReadOnlyAttribute     BIN: 10000000000 } ;
+
+C-ENUM: LLVMTypeKind
   LLVMVoidTypeKind
   LLVMFloatTypeKind
   LLVMDoubleTypeKind
@@ -57,9 +57,8 @@ C-ENUM:
   LLVMPointerTypeKind
   LLVMOpaqueTypeKind
   LLVMVectorTypeKind ;
-TYPEDEF: enum LLVMTypeKind
 
-C-ENUM:
+C-ENUM: LLVMLinkage
   LLVMExternalLinkage
   LLVMLinkOnceLinkage
   LLVMWeakLinkage
@@ -69,34 +68,32 @@ C-ENUM:
   LLVMDLLExportLinkage
   LLVMExternalWeakLinkage
   LLVMGhostLinkage ;
-TYPEDEF: enum LLVMLinkage
 
-C-ENUM:
+C-ENUM: LLVMVisibility
   LLVMDefaultVisibility
   LLVMHiddenVisibility
   LLVMProtectedVisibility ;
-TYPEDEF: enum LLVMVisibility
-
-CONSTANT: LLVMCCallConv             0
-CONSTANT: LLVMFastCallConv          8
-CONSTANT: LLVMColdCallConv          9
-CONSTANT: LLVMX86StdcallCallConv    64
-CONSTANT: LLVMX86FastcallCallConv   65
-TYPEDEF: enum LLVMCallConv
-
-CONSTANT: LLVMIntEQ                 32
-CONSTANT: LLVMIntNE                 33
-CONSTANT: LLVMIntUGT                34
-CONSTANT: LLVMIntUGE                35
-CONSTANT: LLVMIntULT                36
-CONSTANT: LLVMIntULE                37
-CONSTANT: LLVMIntSGT                38
-CONSTANT: LLVMIntSGE                39
-CONSTANT: LLVMIntSLT                40
-CONSTANT: LLVMIntSLE                41
-TYPEDEF: enum LLVMIntPredicate
-
-C-ENUM:
+
+C-ENUM: LLVMCallConv
+  { LLVMCCallConv             0 }
+  { LLVMFastCallConv          8 }
+  { LLVMColdCallConv          9 }
+  { LLVMX86StdcallCallConv    64 }
+  { LLVMX86FastcallCallConv   65 } ;
+
+C-ENUM: LLVMIntPredicate
+  { LLVMIntEQ                 32 }
+  { LLVMIntNE                 33 }
+  { LLVMIntUGT                34 }
+  { LLVMIntUGE                35 }
+  { LLVMIntULT                36 }
+  { LLVMIntULE                37 }
+  { LLVMIntSGT                38 }
+  { LLVMIntSGE                39 }
+  { LLVMIntSLT                40 }
+  { LLVMIntSLE                41 } ;
+
+C-ENUM: LLVMRealPredicate
   LLVMRealPredicateFalse
   LLVMRealOEQ
   LLVMRealOGT
@@ -113,7 +110,6 @@ C-ENUM:
   LLVMRealULE
   LLVMRealUNE
   LLVMRealPredicateTrue ;
-TYPEDEF: enum LLVMRealPredicate
 
 ! Opaque Types
 
diff --git a/extra/macho/authors.txt b/extra/macho/authors.txt
new file mode 100644 (file)
index 0000000..6f03a12
--- /dev/null
@@ -0,0 +1 @@
+Erik Charlebois
diff --git a/extra/macho/macho.factor b/extra/macho/macho.factor
new file mode 100644 (file)
index 0000000..ea71583
--- /dev/null
@@ -0,0 +1,807 @@
+! Copyright (C) 2010 Erik Charlebois.
+! See http:// factorcode.org/license.txt for BSD license.
+USING: alien.c-types alien.syntax classes.struct kernel literals math
+unix.types ;
+IN: macho
+
+TYPEDEF: int       integer_t
+TYPEDEF: int       vm_prot_t
+TYPEDEF: integer_t cpu_type_t
+TYPEDEF: integer_t cpu_subtype_t
+TYPEDEF: integer_t cpu_threadtype_t
+
+CONSTANT: VM_PROT_NONE        HEX: 00
+CONSTANT: VM_PROT_READ        HEX: 01
+CONSTANT: VM_PROT_WRITE       HEX: 02
+CONSTANT: VM_PROT_EXECUTE     HEX: 04
+CONSTANT: VM_PROT_DEFAULT     HEX: 03
+CONSTANT: VM_PROT_ALL         HEX: 07
+CONSTANT: VM_PROT_NO_CHANGE   HEX: 08
+CONSTANT: VM_PROT_COPY        HEX: 10
+CONSTANT: VM_PROT_WANTS_COPY  HEX: 10
+
+! loader.h
+STRUCT: mach_header
+    { magic         uint32_t      }
+    { cputype       cpu_type_t    }
+    { cpusubtype    cpu_subtype_t }
+    { filetype      uint32_t      }
+    { ncmds         uint32_t      }
+    { sizeofcmds    uint32_t      }
+    { flags         uint32_t      } ;
+
+CONSTANT: MH_MAGIC    HEX: feedface
+CONSTANT: MH_CIGAM    HEX: cefaedfe
+
+STRUCT: mach_header_64
+    { magic         uint32_t      }
+    { cputype       cpu_type_t    }
+    { cpusubtype    cpu_subtype_t }
+    { filetype      uint32_t      }
+    { ncmds         uint32_t      }
+    { sizeofcmds    uint32_t      }
+    { flags         uint32_t      }
+    { reserved      uint32_t      } ;
+
+CONSTANT: MH_MAGIC_64 HEX: feedfacf
+CONSTANT: MH_CIGAM_64 HEX: cffaedfe
+
+CONSTANT: MH_OBJECT       HEX: 1
+CONSTANT: MH_EXECUTE      HEX: 2
+CONSTANT: MH_FVMLIB       HEX: 3
+CONSTANT: MH_CORE         HEX: 4
+CONSTANT: MH_PRELOAD      HEX: 5
+CONSTANT: MH_DYLIB        HEX: 6
+CONSTANT: MH_DYLINKER     HEX: 7
+CONSTANT: MH_BUNDLE       HEX: 8
+CONSTANT: MH_DYLIB_STUB   HEX: 9
+CONSTANT: MH_DSYM         HEX: a
+CONSTANT: MH_KEXT_BUNDLE  HEX: b
+
+CONSTANT: MH_NOUNDEFS                HEX: 1
+CONSTANT: MH_INCRLINK                HEX: 2
+CONSTANT: MH_DYLDLINK                HEX: 4
+CONSTANT: MH_BINDATLOAD              HEX: 8
+CONSTANT: MH_PREBOUND                HEX: 10
+CONSTANT: MH_SPLIT_SEGS              HEX: 20
+CONSTANT: MH_LAZY_INIT               HEX: 40
+CONSTANT: MH_TWOLEVEL                HEX: 80
+CONSTANT: MH_FORCE_FLAT              HEX: 100
+CONSTANT: MH_NOMULTIDEFS             HEX: 200
+CONSTANT: MH_NOFIXPREBINDING         HEX: 400
+CONSTANT: MH_PREBINDABLE             HEX: 800
+CONSTANT: MH_ALLMODSBOUND            HEX: 1000
+CONSTANT: MH_SUBSECTIONS_VIA_SYMBOLS HEX: 2000
+CONSTANT: MH_CANONICAL               HEX: 4000
+CONSTANT: MH_WEAK_DEFINES            HEX: 8000
+CONSTANT: MH_BINDS_TO_WEAK           HEX: 10000
+CONSTANT: MH_ALLOW_STACK_EXECUTION   HEX: 20000
+CONSTANT: MH_DEAD_STRIPPABLE_DYLIB   HEX: 400000
+CONSTANT: MH_ROOT_SAFE               HEX: 40000
+CONSTANT: MH_SETUID_SAFE             HEX: 80000
+CONSTANT: MH_NO_REEXPORTED_DYLIBS    HEX: 100000
+CONSTANT: MH_PIE                     HEX: 200000
+
+STRUCT: load_command
+    { cmd     uint32_t }
+    { cmdsize uint32_t } ;
+
+CONSTANT: LC_REQ_DYLD HEX: 80000000
+
+CONSTANT: LC_SEGMENT            HEX: 1
+CONSTANT: LC_SYMTAB             HEX: 2
+CONSTANT: LC_SYMSEG             HEX: 3
+CONSTANT: LC_THREAD             HEX: 4
+CONSTANT: LC_UNIXTHREAD         HEX: 5
+CONSTANT: LC_LOADFVMLIB         HEX: 6
+CONSTANT: LC_IDFVMLIB           HEX: 7
+CONSTANT: LC_IDENT              HEX: 8
+CONSTANT: LC_FVMFILE            HEX: 9
+CONSTANT: LC_PREPAGE            HEX: a
+CONSTANT: LC_DYSYMTAB           HEX: b
+CONSTANT: LC_LOAD_DYLIB         HEX: c
+CONSTANT: LC_ID_DYLIB           HEX: d
+CONSTANT: LC_LOAD_DYLINKER      HEX: e
+CONSTANT: LC_ID_DYLINKER        HEX: f
+CONSTANT: LC_PREBOUND_DYLIB     HEX: 10
+CONSTANT: LC_ROUTINES           HEX: 11
+CONSTANT: LC_SUB_FRAMEWORK      HEX: 12
+CONSTANT: LC_SUB_UMBRELLA       HEX: 13
+CONSTANT: LC_SUB_CLIENT         HEX: 14
+CONSTANT: LC_SUB_LIBRARY        HEX: 15
+CONSTANT: LC_TWOLEVEL_HINTS     HEX: 16
+CONSTANT: LC_PREBIND_CKSUM      HEX: 17
+CONSTANT: LC_LOAD_WEAK_DYLIB    HEX: 80000018
+CONSTANT: LC_SEGMENT_64         HEX: 19
+CONSTANT: LC_ROUTINES_64        HEX: 1a
+CONSTANT: LC_UUID               HEX: 1b
+CONSTANT: LC_RPATH              HEX: 8000001c
+CONSTANT: LC_CODE_SIGNATURE     HEX: 1d
+CONSTANT: LC_SEGMENT_SPLIT_INFO HEX: 1e
+CONSTANT: LC_REEXPORT_DYLIB     HEX: 8000001f
+CONSTANT: LC_LAZY_LOAD_DYLIB    HEX: 20
+CONSTANT: LC_ENCRYPTION_INFO    HEX: 21
+CONSTANT: LC_DYLD_INFO          HEX: 22
+CONSTANT: LC_DYLD_INFO_ONLY     HEX: 80000022
+
+UNION-STRUCT: lc_str
+    { offset    uint32_t }
+    { ptr       char*    } ;
+
+STRUCT: segment_command
+    { cmd            uint32_t  }
+    { cmdsize        uint32_t  }
+    { segname        char[16]  }
+    { vmaddr         uint32_t  }
+    { vmsize         uint32_t  }
+    { fileoff        uint32_t  }
+    { filesize       uint32_t  }
+    { maxprot        vm_prot_t }
+    { initprot       vm_prot_t }
+    { nsects         uint32_t  }
+    { flags          uint32_t  } ;
+
+STRUCT: segment_command_64
+    { cmd            uint32_t  }
+    { cmdsize        uint32_t  }
+    { segname        char[16]  }
+    { vmaddr         uint64_t  }
+    { vmsize         uint64_t  }
+    { fileoff        uint64_t  }
+    { filesize       uint64_t  }
+    { maxprot        vm_prot_t }
+    { initprot       vm_prot_t }
+    { nsects         uint32_t  }
+    { flags          uint32_t  } ;
+
+CONSTANT: SG_HIGHVM               HEX: 1
+CONSTANT: SG_FVMLIB               HEX: 2
+CONSTANT: SG_NORELOC              HEX: 4
+CONSTANT: SG_PROTECTED_VERSION_1  HEX: 8
+
+STRUCT: section
+    { sectname        char[16] }
+    { segname         char[16] }
+    { addr            uint32_t }
+    { size            uint32_t }
+    { offset          uint32_t }
+    { align           uint32_t }
+    { reloff          uint32_t }
+    { nreloc          uint32_t }
+    { flags           uint32_t }
+    { reserved1       uint32_t }
+    { reserved2       uint32_t } ;
+
+STRUCT: section_64
+    { sectname        char[16] }
+    { segname         char[16] }
+    { addr            uint64_t }
+    { size            uint64_t }
+    { offset          uint32_t }
+    { align           uint32_t }
+    { reloff          uint32_t }
+    { nreloc          uint32_t }
+    { flags           uint32_t }
+    { reserved1       uint32_t }
+    { reserved2       uint32_t }
+    { reserved3       uint32_t } ;
+
+CONSTANT: SECTION_TYPE         HEX: 000000ff
+CONSTANT: SECTION_ATTRIBUTES   HEX: ffffff00
+
+CONSTANT: S_REGULAR                       HEX: 0
+CONSTANT: S_ZEROFILL                      HEX: 1
+CONSTANT: S_CSTRING_LITERALS              HEX: 2
+CONSTANT: S_4BYTE_LITERALS                HEX: 3
+CONSTANT: S_8BYTE_LITERALS                HEX: 4
+CONSTANT: S_LITERAL_POINTERS              HEX: 5
+CONSTANT: S_NON_LAZY_SYMBOL_POINTERS      HEX: 6
+CONSTANT: S_LAZY_SYMBOL_POINTERS          HEX: 7
+CONSTANT: S_SYMBOL_STUBS                  HEX: 8
+CONSTANT: S_MOD_INIT_FUNC_POINTERS        HEX: 9
+CONSTANT: S_MOD_TERM_FUNC_POINTERS        HEX: a
+CONSTANT: S_COALESCED                     HEX: b
+CONSTANT: S_GB_ZEROFILL                   HEX: c
+CONSTANT: S_INTERPOSING                   HEX: d
+CONSTANT: S_16BYTE_LITERALS               HEX: e
+CONSTANT: S_DTRACE_DOF                    HEX: f
+CONSTANT: S_LAZY_DYLIB_SYMBOL_POINTERS    HEX: 10
+
+CONSTANT: SECTION_ATTRIBUTES_USR     HEX: ff000000
+CONSTANT: S_ATTR_PURE_INSTRUCTIONS   HEX: 80000000
+CONSTANT: S_ATTR_NO_TOC              HEX: 40000000
+CONSTANT: S_ATTR_STRIP_STATIC_SYMS   HEX: 20000000
+CONSTANT: S_ATTR_NO_DEAD_STRIP       HEX: 10000000
+CONSTANT: S_ATTR_LIVE_SUPPORT        HEX: 08000000
+CONSTANT: S_ATTR_SELF_MODIFYING_CODE HEX: 04000000
+CONSTANT: S_ATTR_DEBUG               HEX: 02000000
+CONSTANT: SECTION_ATTRIBUTES_SYS     HEX: 00ffff00
+CONSTANT: S_ATTR_SOME_INSTRUCTIONS   HEX: 00000400
+CONSTANT: S_ATTR_EXT_RELOC           HEX: 00000200
+CONSTANT: S_ATTR_LOC_RELOC           HEX: 00000100
+
+CONSTANT: SEG_PAGEZERO      "__PAGEZERO"
+CONSTANT: SEG_TEXT          "__TEXT"
+CONSTANT: SECT_TEXT         "__text"
+CONSTANT: SECT_FVMLIB_INIT0 "__fvmlib_init0"
+CONSTANT: SECT_FVMLIB_INIT1 "__fvmlib_init1"
+CONSTANT: SEG_DATA          "__DATA"
+CONSTANT: SECT_DATA         "__data"
+CONSTANT: SECT_BSS          "__bss"
+CONSTANT: SECT_COMMON       "__common"
+CONSTANT: SEG_OBJC          "__OBJC"
+CONSTANT: SECT_OBJC_SYMBOLS "__symbol_table"
+CONSTANT: SECT_OBJC_MODULES "__module_info"
+CONSTANT: SECT_OBJC_STRINGS "__selector_strs"
+CONSTANT: SECT_OBJC_REFS    "__selector_refs"
+CONSTANT: SEG_ICON          "__ICON"
+CONSTANT: SECT_ICON_HEADER  "__header"
+CONSTANT: SECT_ICON_TIFF    "__tiff"
+CONSTANT: SEG_LINKEDIT      "__LINKEDIT"
+CONSTANT: SEG_UNIXSTACK     "__UNIXSTACK"
+CONSTANT: SEG_IMPORT        "__IMPORT"
+
+STRUCT: fvmlib
+    { name             lc_str   }
+    { minor_version    uint32_t }
+    { header_addr      uint32_t } ;
+
+STRUCT: fvmlib_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { fvmlib     fvmlib   } ;
+
+STRUCT: dylib
+    { name                  lc_str   }
+    { timestamp             uint32_t }
+    { current_version       uint32_t }
+    { compatibility_version uint32_t } ;
+
+STRUCT: dylib_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { dylib      dylib    } ;
+
+STRUCT: sub_framework_command
+    { cmd         uint32_t }
+    { cmdsize     uint32_t }
+    { umbrella    lc_str   } ;
+
+STRUCT: sub_client_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { client     lc_str   } ;
+
+STRUCT: sub_umbrella_command
+    { cmd             uint32_t }
+    { cmdsize         uint32_t }
+    { sub_umbrella    lc_str   } ;
+
+STRUCT: sub_library_command
+    { cmd            uint32_t }
+    { cmdsize        uint32_t }
+    { sub_library    lc_str   } ;
+
+STRUCT: prebound_dylib_command
+    { cmd               uint32_t }
+    { cmdsize           uint32_t }
+    { name              lc_str   }
+    { nmodules          uint32_t }
+    { linked_modules    lc_str   } ;
+
+STRUCT: dylinker_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { name       lc_str   } ;
+
+STRUCT: thread_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t } ;
+
+STRUCT: routines_command
+    { cmd             uint32_t }
+    { cmdsize         uint32_t }
+    { init_address    uint32_t }
+    { init_module     uint32_t }
+    { reserved1       uint32_t }
+    { reserved2       uint32_t }
+    { reserved3       uint32_t }
+    { reserved4       uint32_t }
+    { reserved5       uint32_t }
+    { reserved6       uint32_t } ;
+
+STRUCT: routines_command_64
+    { cmd             uint32_t }
+    { cmdsize         uint32_t }
+    { init_address    uint64_t }
+    { init_module     uint64_t }
+    { reserved1       uint64_t }
+    { reserved2       uint64_t }
+    { reserved3       uint64_t }
+    { reserved4       uint64_t }
+    { reserved5       uint64_t }
+    { reserved6       uint64_t } ;
+
+STRUCT: symtab_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { symoff     uint32_t }
+    { nsyms      uint32_t }
+    { stroff     uint32_t }
+    { strsize    uint32_t } ;
+
+STRUCT: dysymtab_command
+    { cmd            uint32_t }
+    { cmdsize        uint32_t }
+    { ilocalsym      uint32_t }
+    { nlocalsym      uint32_t }
+    { iextdefsym     uint32_t }
+    { nextdefsym     uint32_t }
+    { iundefsym      uint32_t }
+    { nundefsym      uint32_t }
+    { tocoff         uint32_t }
+    { ntoc           uint32_t }
+    { modtaboff      uint32_t }
+    { nmodtab        uint32_t }
+    { extrefsymoff   uint32_t }
+    { nextrefsyms    uint32_t }
+    { indirectsymoff uint32_t }
+    { nindirectsyms  uint32_t }
+    { extreloff      uint32_t }
+    { nextrel        uint32_t }
+    { locreloff      uint32_t }
+    { nlocrel        uint32_t } ;
+
+CONSTANT: INDIRECT_SYMBOL_LOCAL HEX: 80000000
+CONSTANT: INDIRECT_SYMBOL_ABS   HEX: 40000000
+
+STRUCT: dylib_table_of_contents
+    { symbol_index uint32_t }
+    { module_index uint32_t } ;
+
+STRUCT: dylib_module
+    { module_name           uint32_t }
+    { iextdefsym            uint32_t }
+    { nextdefsym            uint32_t }
+    { irefsym               uint32_t }
+    { nrefsym               uint32_t }
+    { ilocalsym             uint32_t }
+    { nlocalsym             uint32_t }
+    { iextrel               uint32_t }
+    { nextrel               uint32_t }
+    { iinit_iterm           uint32_t }
+    { ninit_nterm           uint32_t }
+    { objc_module_info_addr uint32_t }
+    { objc_module_info_size uint32_t } ;
+
+STRUCT: dylib_module_64
+    { module_name           uint32_t }
+    { iextdefsym            uint32_t }
+    { nextdefsym            uint32_t }
+    { irefsym               uint32_t }
+    { nrefsym               uint32_t }
+    { ilocalsym             uint32_t }
+    { nlocalsym             uint32_t }
+    { iextrel               uint32_t }
+    { nextrel               uint32_t }
+    { iinit_iterm           uint32_t }
+    { ninit_nterm           uint32_t }
+    { objc_module_info_size uint32_t }
+    { objc_module_info_addr uint64_t } ;
+
+STRUCT: dylib_reference
+    { isym_flags uint32_t } ;
+
+STRUCT: twolevel_hints_command
+    { cmd     uint32_t }
+    { cmdsize uint32_t }
+    { offset  uint32_t }
+    { nhints  uint32_t } ;
+
+STRUCT: twolevel_hint
+    { isub_image_itoc uint32_t } ;
+
+STRUCT: prebind_cksum_command
+    { cmd     uint32_t }
+    { cmdsize uint32_t }
+    { cksum   uint32_t } ;
+
+STRUCT: uuid_command
+    { cmd        uint32_t    }
+    { cmdsize    uint32_t    }
+    { uuid       uint8_t[16] } ;
+
+STRUCT: rpath_command
+    { cmd         uint32_t }
+    { cmdsize     uint32_t }
+    { path        lc_str   } ;
+
+STRUCT: linkedit_data_command
+    { cmd         uint32_t }
+    { cmdsize     uint32_t }
+    { dataoff     uint32_t }
+    { datasize    uint32_t } ;
+
+STRUCT: encryption_info_command
+    { cmd       uint32_t }
+    { cmdsize   uint32_t }
+    { cryptoff  uint32_t }
+    { cryptsize uint32_t }
+    { cryptid   uint32_t } ;
+
+STRUCT: dyld_info_command
+    { cmd              uint32_t }
+    { cmdsize          uint32_t }
+    { rebase_off       uint32_t }
+    { rebase_size      uint32_t }
+    { bind_off         uint32_t }
+    { bind_size        uint32_t }
+    { weak_bind_off    uint32_t }
+    { weak_bind_size   uint32_t }
+    { lazy_bind_off    uint32_t }
+    { lazy_bind_size   uint32_t }
+    { export_off       uint32_t }
+    { export_size      uint32_t } ;
+
+CONSTANT: REBASE_TYPE_POINTER                     1
+CONSTANT: REBASE_TYPE_TEXT_ABSOLUTE32             2
+CONSTANT: REBASE_TYPE_TEXT_PCREL32                3
+
+CONSTANT: REBASE_OPCODE_MASK                                  HEX: F0
+CONSTANT: REBASE_IMMEDIATE_MASK                               HEX: 0F
+CONSTANT: REBASE_OPCODE_DONE                                  HEX: 00
+CONSTANT: REBASE_OPCODE_SET_TYPE_IMM                          HEX: 10
+CONSTANT: REBASE_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB           HEX: 20
+CONSTANT: REBASE_OPCODE_ADD_ADDR_ULEB                         HEX: 30
+CONSTANT: REBASE_OPCODE_ADD_ADDR_IMM_SCALED                   HEX: 40
+CONSTANT: REBASE_OPCODE_DO_REBASE_IMM_TIMES                   HEX: 50
+CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES                  HEX: 60
+CONSTANT: REBASE_OPCODE_DO_REBASE_ADD_ADDR_ULEB               HEX: 70
+CONSTANT: REBASE_OPCODE_DO_REBASE_ULEB_TIMES_SKIPPING_ULEB    HEX: 80
+
+CONSTANT: BIND_TYPE_POINTER                       1
+CONSTANT: BIND_TYPE_TEXT_ABSOLUTE32               2
+CONSTANT: BIND_TYPE_TEXT_PCREL32                  3
+
+CONSTANT: BIND_SPECIAL_DYLIB_SELF                     0
+CONSTANT: BIND_SPECIAL_DYLIB_MAIN_EXECUTABLE          -1
+CONSTANT: BIND_SPECIAL_DYLIB_FLAT_LOOKUP              -2
+
+CONSTANT: BIND_SYMBOL_FLAGS_WEAK_IMPORT                   HEX: 1
+CONSTANT: BIND_SYMBOL_FLAGS_NON_WEAK_DEFINITION           HEX: 8
+
+CONSTANT: BIND_OPCODE_MASK                                    HEX: F0
+CONSTANT: BIND_IMMEDIATE_MASK                                 HEX: 0F
+CONSTANT: BIND_OPCODE_DONE                                    HEX: 00
+CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_IMM                   HEX: 10
+CONSTANT: BIND_OPCODE_SET_DYLIB_ORDINAL_ULEB                  HEX: 20
+CONSTANT: BIND_OPCODE_SET_DYLIB_SPECIAL_IMM                   HEX: 30
+CONSTANT: BIND_OPCODE_SET_SYMBOL_TRAILING_FLAGS_IMM           HEX: 40
+CONSTANT: BIND_OPCODE_SET_TYPE_IMM                            HEX: 50
+CONSTANT: BIND_OPCODE_SET_ADDEND_SLEB                         HEX: 60
+CONSTANT: BIND_OPCODE_SET_SEGMENT_AND_OFFSET_ULEB             HEX: 70
+CONSTANT: BIND_OPCODE_ADD_ADDR_ULEB                           HEX: 80
+CONSTANT: BIND_OPCODE_DO_BIND                                 HEX: 90
+CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_ULEB                   HEX: A0
+CONSTANT: BIND_OPCODE_DO_BIND_ADD_ADDR_IMM_SCALED             HEX: B0
+CONSTANT: BIND_OPCODE_DO_BIND_ULEB_TIMES_SKIPPING_ULEB        HEX: C0
+
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_MASK                   HEX: 03
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_REGULAR                HEX: 00
+CONSTANT: EXPORT_SYMBOL_FLAGS_KIND_THREAD_LOCAL           HEX: 01
+CONSTANT: EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION             HEX: 04
+CONSTANT: EXPORT_SYMBOL_FLAGS_INDIRECT_DEFINITION         HEX: 08
+CONSTANT: EXPORT_SYMBOL_FLAGS_HAS_SPECIALIZATIONS         HEX: 10
+
+STRUCT: symseg_command
+    { cmd        uint32_t }
+    { cmdsize    uint32_t }
+    { offset     uint32_t }
+    { size       uint32_t } ;
+
+STRUCT: ident_command
+    { cmd     uint32_t }
+    { cmdsize uint32_t } ;
+
+STRUCT: fvmfile_command
+    { cmd            uint32_t }
+    { cmdsize        uint32_t }
+    { name           lc_str   }
+    { header_addr    uint32_t } ;
+
+! machine.h
+CONSTANT: CPU_STATE_MAX       4
+CONSTANT: CPU_STATE_USER      0
+CONSTANT: CPU_STATE_SYSTEM    1
+CONSTANT: CPU_STATE_IDLE      2
+CONSTANT: CPU_STATE_NICE      3
+
+CONSTANT: CPU_ARCH_MASK   HEX: ff000000
+CONSTANT: CPU_ARCH_ABI64  HEX: 01000000
+
+CONSTANT: CPU_TYPE_ANY            -1
+CONSTANT: CPU_TYPE_VAX            1
+CONSTANT: CPU_TYPE_MC680x0        6
+CONSTANT: CPU_TYPE_X86            7
+CONSTANT: CPU_TYPE_I386           $ CPU_TYPE_X86
+CONSTANT: CPU_TYPE_X86_64         $[ CPU_TYPE_X86 CPU_ARCH_ABI64 bitor ]
+CONSTANT: CPU_TYPE_MC98000        10
+CONSTANT: CPU_TYPE_HPPA           11
+CONSTANT: CPU_TYPE_ARM            12
+CONSTANT: CPU_TYPE_MC88000        13
+CONSTANT: CPU_TYPE_SPARC          14
+CONSTANT: CPU_TYPE_I860           15
+CONSTANT: CPU_TYPE_POWERPC        18
+CONSTANT: CPU_TYPE_POWERPC64      $[ $ CPU_TYPE_POWERPC CPU_ARCH_ABI64 bitor ]
+
+CONSTANT: CPU_SUBTYPE_MASK    HEX: ff000000
+CONSTANT: CPU_SUBTYPE_LIB64   HEX: 80000000
+
+CONSTANT: CPU_SUBTYPE_MULTIPLE        -1
+CONSTANT: CPU_SUBTYPE_LITTLE_ENDIAN   0
+CONSTANT: CPU_SUBTYPE_BIG_ENDIAN      1
+
+CONSTANT: CPU_THREADTYPE_NONE     0
+
+CONSTANT: CPU_SUBTYPE_VAX_ALL 0
+CONSTANT: CPU_SUBTYPE_VAX780  1
+CONSTANT: CPU_SUBTYPE_VAX785  2
+CONSTANT: CPU_SUBTYPE_VAX750  3
+CONSTANT: CPU_SUBTYPE_VAX730  4
+CONSTANT: CPU_SUBTYPE_UVAXI   5
+CONSTANT: CPU_SUBTYPE_UVAXII  6
+CONSTANT: CPU_SUBTYPE_VAX8200 7
+CONSTANT: CPU_SUBTYPE_VAX8500 8
+CONSTANT: CPU_SUBTYPE_VAX8600 9
+CONSTANT: CPU_SUBTYPE_VAX8650 10
+CONSTANT: CPU_SUBTYPE_VAX8800 11
+CONSTANT: CPU_SUBTYPE_UVAXIII 12
+
+CONSTANT: CPU_SUBTYPE_MC680x0_ALL     1
+CONSTANT: CPU_SUBTYPE_MC68030     1
+CONSTANT: CPU_SUBTYPE_MC68040     2
+CONSTANT: CPU_SUBTYPE_MC68030_ONLY    3
+
+: CPU_SUBTYPE_INTEL ( f m -- subtype ) 4 shift + ; inline
+
+CONSTANT: CPU_SUBTYPE_I386_ALL              3
+CONSTANT: CPU_SUBTYPE_386                   3
+CONSTANT: CPU_SUBTYPE_486                   4
+CONSTANT: CPU_SUBTYPE_486SX                 132
+CONSTANT: CPU_SUBTYPE_586                   5
+CONSTANT: CPU_SUBTYPE_PENT                  5
+CONSTANT: CPU_SUBTYPE_PENTPRO               22
+CONSTANT: CPU_SUBTYPE_PENTII_M3             54
+CONSTANT: CPU_SUBTYPE_PENTII_M5             86
+CONSTANT: CPU_SUBTYPE_CELERON               103
+CONSTANT: CPU_SUBTYPE_CELERON_MOBILE        119
+CONSTANT: CPU_SUBTYPE_PENTIUM_3             8
+CONSTANT: CPU_SUBTYPE_PENTIUM_3_M           24
+CONSTANT: CPU_SUBTYPE_PENTIUM_3_XEON        40
+CONSTANT: CPU_SUBTYPE_PENTIUM_M             9
+CONSTANT: CPU_SUBTYPE_PENTIUM_4             10
+CONSTANT: CPU_SUBTYPE_PENTIUM_4_M           26
+CONSTANT: CPU_SUBTYPE_ITANIUM               11
+CONSTANT: CPU_SUBTYPE_ITANIUM_2             27
+CONSTANT: CPU_SUBTYPE_XEON                  12
+CONSTANT: CPU_SUBTYPE_XEON_MP               28
+
+: CPU_SUBTYPE_INTEL_FAMILY ( x -- family ) 15 bitand ; inline
+
+CONSTANT: CPU_SUBTYPE_INTEL_FAMILY_MAX    15
+
+: CPU_SUBTYPE_INTEL_MODEL ( x -- model ) -4 shift ; inline
+
+CONSTANT: CPU_SUBTYPE_INTEL_MODEL_ALL 0
+CONSTANT: CPU_SUBTYPE_X86_ALL         3
+CONSTANT: CPU_SUBTYPE_X86_64_ALL      3
+CONSTANT: CPU_SUBTYPE_X86_ARCH1       4
+CONSTANT: CPU_THREADTYPE_INTEL_HTT    1
+
+CONSTANT: CPU_SUBTYPE_MIPS_ALL    0
+CONSTANT: CPU_SUBTYPE_MIPS_R2300  1
+CONSTANT: CPU_SUBTYPE_MIPS_R2600  2
+CONSTANT: CPU_SUBTYPE_MIPS_R2800  3
+CONSTANT: CPU_SUBTYPE_MIPS_R2000a 4
+CONSTANT: CPU_SUBTYPE_MIPS_R2000  5
+CONSTANT: CPU_SUBTYPE_MIPS_R3000a 6
+CONSTANT: CPU_SUBTYPE_MIPS_R3000  7
+
+CONSTANT: CPU_SUBTYPE_MC98000_ALL 0
+CONSTANT: CPU_SUBTYPE_MC98601     1
+
+CONSTANT: CPU_SUBTYPE_HPPA_ALL        0
+CONSTANT: CPU_SUBTYPE_HPPA_7100       0
+CONSTANT: CPU_SUBTYPE_HPPA_7100LC     1
+
+CONSTANT: CPU_SUBTYPE_MC88000_ALL 0
+CONSTANT: CPU_SUBTYPE_MC88100     1
+CONSTANT: CPU_SUBTYPE_MC88110     2
+
+CONSTANT: CPU_SUBTYPE_SPARC_ALL       0
+
+CONSTANT: CPU_SUBTYPE_I860_ALL    0
+CONSTANT: CPU_SUBTYPE_I860_860    1
+
+CONSTANT: CPU_SUBTYPE_POWERPC_ALL     0
+CONSTANT: CPU_SUBTYPE_POWERPC_601     1
+CONSTANT: CPU_SUBTYPE_POWERPC_602     2
+CONSTANT: CPU_SUBTYPE_POWERPC_603     3
+CONSTANT: CPU_SUBTYPE_POWERPC_603e    4
+CONSTANT: CPU_SUBTYPE_POWERPC_603ev   5
+CONSTANT: CPU_SUBTYPE_POWERPC_604     6
+CONSTANT: CPU_SUBTYPE_POWERPC_604e    7
+CONSTANT: CPU_SUBTYPE_POWERPC_620     8
+CONSTANT: CPU_SUBTYPE_POWERPC_750     9
+CONSTANT: CPU_SUBTYPE_POWERPC_7400    10
+CONSTANT: CPU_SUBTYPE_POWERPC_7450    11
+CONSTANT: CPU_SUBTYPE_POWERPC_970     100
+
+CONSTANT: CPU_SUBTYPE_ARM_ALL             0
+CONSTANT: CPU_SUBTYPE_ARM_V4T             5
+CONSTANT: CPU_SUBTYPE_ARM_V6              6
+CONSTANT: CPU_SUBTYPE_ARM_V5TEJ           7
+CONSTANT: CPU_SUBTYPE_ARM_XSCALE          8
+CONSTANT: CPU_SUBTYPE_ARM_V7              9
+
+CONSTANT: CPUFAMILY_UNKNOWN    0
+CONSTANT: CPUFAMILY_POWERPC_G3 HEX: cee41549
+CONSTANT: CPUFAMILY_POWERPC_G4 HEX: 77c184ae
+CONSTANT: CPUFAMILY_POWERPC_G5 HEX: ed76d8aa
+CONSTANT: CPUFAMILY_INTEL_6_13 HEX: aa33392b
+CONSTANT: CPUFAMILY_INTEL_6_14 HEX: 73d67300
+CONSTANT: CPUFAMILY_INTEL_6_15 HEX: 426f69ef
+CONSTANT: CPUFAMILY_INTEL_6_23 HEX: 78ea4fbc
+CONSTANT: CPUFAMILY_INTEL_6_26 HEX: 6b5a4cd2
+CONSTANT: CPUFAMILY_ARM_9      HEX: e73283ae
+CONSTANT: CPUFAMILY_ARM_11     HEX: 8ff620d8
+CONSTANT: CPUFAMILY_ARM_XSCALE HEX: 53b005f5
+CONSTANT: CPUFAMILY_ARM_13     HEX: 0cc90e64
+
+CONSTANT: CPUFAMILY_INTEL_YONAH   $ CPUFAMILY_INTEL_6_14
+CONSTANT: CPUFAMILY_INTEL_MEROM   $ CPUFAMILY_INTEL_6_15
+CONSTANT: CPUFAMILY_INTEL_PENRYN  $ CPUFAMILY_INTEL_6_23
+CONSTANT: CPUFAMILY_INTEL_NEHALEM $ CPUFAMILY_INTEL_6_26
+
+CONSTANT: CPUFAMILY_INTEL_CORE    $ CPUFAMILY_INTEL_6_14
+CONSTANT: CPUFAMILY_INTEL_CORE2   $ CPUFAMILY_INTEL_6_15
+
+! fat.h
+CONSTANT: FAT_MAGIC HEX: cafebabe
+CONSTANT: FAT_CIGAM HEX: bebafeca
+
+STRUCT: fat_header
+    { magic        uint32_t }
+    { nfat_arch    uint32_t } ;
+
+STRUCT: fat_arch
+    { cputype      cpu_type_t    }
+    { cpusubtype   cpu_subtype_t }
+    { offset       uint32_t      }
+    { size         uint32_t      }
+    { align        uint32_t      } ;
+
+! nlist.h
+STRUCT: nlist
+    { n_strx  int32_t  }
+    { n_type  uint8_t  }
+    { n_sect  uint8_t  }
+    { n_desc  int16_t  }
+    { n_value uint32_t } ;
+
+STRUCT: nlist_64
+    { n_strx  uint32_t }
+    { n_type  uint8_t  }
+    { n_sect  uint8_t  }
+    { n_desc  uint16_t }
+    { n_value uint64_t } ;
+
+CONSTANT: N_STAB  HEX: e0
+CONSTANT: N_PEXT  HEX: 10
+CONSTANT: N_TYPE  HEX: 0e
+CONSTANT: N_EXT   HEX: 01
+
+CONSTANT: N_UNDF  HEX: 0
+CONSTANT: N_ABS   HEX: 2
+CONSTANT: N_SECT  HEX: e
+CONSTANT: N_PBUD  HEX: c
+CONSTANT: N_INDR  HEX: a
+
+CONSTANT: NO_SECT     0
+CONSTANT: MAX_SECT    255
+
+: GET_COMM_ALIGN ( n_desc -- align )
+    -8 shift HEX: 0f bitand ; inline
+
+: SET_COMM_ALIGN ( n_desc align -- n_desc )
+    [ HEX: f0ff bitand ]
+    [ HEX: 000f bitand 8 shift ] bi* bitor ; inline
+
+CONSTANT: REFERENCE_TYPE                              7
+CONSTANT: REFERENCE_FLAG_UNDEFINED_NON_LAZY           0
+CONSTANT: REFERENCE_FLAG_UNDEFINED_LAZY               1
+CONSTANT: REFERENCE_FLAG_DEFINED                      2
+CONSTANT: REFERENCE_FLAG_PRIVATE_DEFINED              3
+CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_NON_LAZY   4
+CONSTANT: REFERENCE_FLAG_PRIVATE_UNDEFINED_LAZY       5
+
+CONSTANT: REFERENCED_DYNAMICALLY  HEX: 0010
+
+: GET_LIBRARY_ORDINAL ( n_desc -- ordinal )
+    -8 shift HEX: ff bitand ; inline
+
+: SET_LIBRARY_ORDINAL ( n_desc ordinal -- n_desc )
+    [ HEX: 00ff bitand ]
+    [ HEX: 00ff bitand 8 shift ] bi* bitor ; inline
+
+CONSTANT: SELF_LIBRARY_ORDINAL   HEX: 0
+CONSTANT: MAX_LIBRARY_ORDINAL    HEX: fd
+CONSTANT: DYNAMIC_LOOKUP_ORDINAL HEX: fe
+CONSTANT: EXECUTABLE_ORDINAL     HEX: ff
+
+CONSTANT: N_NO_DEAD_STRIP  HEX: 0020
+CONSTANT: N_DESC_DISCARDED HEX: 0020
+CONSTANT: N_WEAK_REF       HEX: 0040
+CONSTANT: N_WEAK_DEF       HEX: 0080
+CONSTANT: N_REF_TO_WEAK    HEX: 0080
+CONSTANT: N_ARM_THUMB_DEF  HEX: 0008
+
+! ranlib.h
+CONSTANT: SYMDEF        "__.SYMDEF"
+CONSTANT: SYMDEF_SORTED "__.SYMDEF SORTED"
+
+STRUCT: ranlib
+    { ran_strx uint32_t }
+    { ran_off  uint32_t } ;
+
+! reloc.h
+STRUCT: relocation_info
+    { r_address                            int32_t  }
+    { r_symbolnum_pcrel_length_extern_type uint32_t } ;
+
+CONSTANT: R_ABS   0
+CONSTANT: R_SCATTERED HEX: 80000000
+
+STRUCT: scattered_relocation_info_big_endian
+    { r_scattered_pcrel_length_type_address  uint32_t }
+    { r_value                                int32_t  } ;
+
+STRUCT: scattered_relocation_info_little_endian
+    { r_address_type_length_pcrel_scattered uint32_t }
+    { r_value                               int32_t  } ;
+
+C-ENUM: reloc_type_generic
+    GENERIC_RELOC_VANILLA
+    GENERIC_RELOC_PAIR
+    GENERIC_RELOC_SECTDIFF
+    GENERIC_RELOC_PB_LA_PTR
+    GENERIC_RELOC_LOCAL_SECTDIFF ;
+
+C-ENUM: reloc_type_x86_64
+    X86_64_RELOC_UNSIGNED
+    X86_64_RELOC_SIGNED
+    X86_64_RELOC_BRANCH
+    X86_64_RELOC_GOT_LOAD
+    X86_64_RELOC_GOT
+    X86_64_RELOC_SUBTRACTOR
+    X86_64_RELOC_SIGNED_1
+    X86_64_RELOC_SIGNED_2
+    X86_64_RELOC_SIGNED_4 ;
+
+C-ENUM: reloc_type_ppc
+    PPC_RELOC_VANILLA
+    PPC_RELOC_PAIR
+    PPC_RELOC_BR14
+    PPC_RELOC_BR24
+    PPC_RELOC_HI16
+    PPC_RELOC_LO16
+    PPC_RELOC_HA16
+    PPC_RELOC_LO14
+    PPC_RELOC_SECTDIFF
+    PPC_RELOC_PB_LA_PTR
+    PPC_RELOC_HI16_SECTDIFF
+    PPC_RELOC_LO16_SECTDIFF
+    PPC_RELOC_HA16_SECTDIFF
+    PPC_RELOC_JBSR
+    PPC_RELOC_LO14_SECTDIFF
+    PPC_RELOC_LOCAL_SECTDIFF ;
diff --git a/extra/macho/summary.txt b/extra/macho/summary.txt
new file mode 100644 (file)
index 0000000..aaef275
--- /dev/null
@@ -0,0 +1 @@
+Constants and structs related to the Mach object format.
index 7e3a2d47c2f83cdd0842afd94633ec6bc5d2d469..6107111be246c8e412c05271ea4a9d61af18d0f2 100644 (file)
@@ -9,7 +9,7 @@ LIBRARY: tokyocabinet
 
 TYPEDEF: void* TCADB
 
-C-ENUM:
+C-ENUM: f
     ADBOVOID
     ADBOMDB
     ADBONDB
index 6454e6b2fa1bd92088079272043fd7727e387719..04913eba7302671eb4d4e59380bfd9251d1578ce 100644 (file)
@@ -27,7 +27,7 @@ CONSTANT: BDBOTSYNC  64
 
 TYPEDEF: void* BDBCUR
 
-C-ENUM:
+C-ENUM: f
     BDBCPCURRENT
     BDBCPBEFORE
     BDBCPAFTER ;
index da4a75044462f7967f5ffbeb225421c7ab0fcd40..32938264ae746e38df2b3627d6513558f08d770a 100644 (file)
@@ -25,7 +25,7 @@ C-TYPE: TCRDB
 !     { timeout double }
 !     { opts int } ;
 
-C-ENUM:
+C-ENUM: f
     TTESUCCESS
     TTEINVALID
     TTENOHOST
index 82100e23c8c5900902bbc5750634ca9b53951cdc..e5a278e1b98d896da12ee89e2f036d3ea9f794d2 100644 (file)
@@ -27,7 +27,7 @@ CONSTANT: TDBONOLCK  16
 CONSTANT: TDBOLCKNB  32
 CONSTANT: TDBOTSYNC  64
 
-C-ENUM:
+C-ENUM: f
   TDBITLEXICAL
   TDBITDECIMAL ;
 
@@ -38,7 +38,7 @@ CONSTANT: TDBITKEEP 16777216
 C-TYPE: TDBCOND
 C-TYPE: TDBQRY
 
-C-ENUM:
+C-ENUM: f
     TDBQCSTREQ
     TDBQCSTRINC
     TDBQCSTRBW
@@ -58,7 +58,7 @@ C-ENUM:
 CONSTANT: TDBQCNEGATE 16777216
 CONSTANT: TDBQCNOIDX  33554432
 
-C-ENUM:
+C-ENUM: f
     TDBQOSTRASC
     TDBQOSTRDESC
     TDBQONUMASC
index afb78dba228ec02a1b44713ecb267adbde91d30b..14ddbe99d1aea96fec86e1c8bc9070086e0b4a90 100644 (file)
@@ -12,7 +12,7 @@ IN: tokyo.alien.tcutil
 
 LIBRARY: tokyocabinet
 
-C-ENUM:
+C-ENUM: f
     TCDBTHASH
     TCDBTBTREE
     TCDBTFIXED
index 983e1bcb98fff95635a780977e25fb622b187667..8d3990fcd8efddbfbe02ee98aee82235f327a84b 100644 (file)
     (,fuel-syntax--type-definition-regex 2 'factor-font-lock-type-name)
     (,fuel-syntax--method-definition-regex (1 'factor-font-lock-type-name)
                                            (2 'factor-font-lock-word))
+    (,fuel-syntax--before-definition-regex (1 'factor-font-lock-type-name)
+                                           (2 'factor-font-lock-word))
+    (,fuel-syntax--after-definition-regex  (1 'factor-font-lock-type-name)
+                                           (2 'factor-font-lock-word))
     (,fuel-syntax--tuple-decl-regex 2 'factor-font-lock-type-name)
     (,fuel-syntax--constructor-regex . 'factor-font-lock-constructor)
     (,fuel-syntax--setter-regex . 'factor-font-lock-setter-word)
index 114355b3db167ba3f64d8ce17ae05cecee4e0fd2..026a7738e0b95d58279bf774365308db81068dda 100644 (file)
@@ -44,8 +44,8 @@
 \r
 (defconst fuel-syntax--parsing-words\r
   '(":" "::" ";" "&:" "<<" "<PRIVATE" ">>"\r
-    "ABOUT:" "ALIAS:" "ALIEN:" "ARTICLE:"\r
-    "B" "BIN:"\r
+    "ABOUT:" "AFTER:" "ALIAS:" "ALIEN:" "ARTICLE:"\r
+    "B" "BEFORE:" "BIN:"\r
     "C:" "CALLBACK:" "C-ENUM:" "C-STRUCT:" "C-TYPE:" "C-UNION:" "CHAR:" "COM-INTERFACE:" "CONSTANT:" "call-next-method"\r
     "DEFER:"\r
     "EBNF:" ";EBNF" "ERROR:" "EXCLUDE:"\r
 (defconst fuel-syntax--method-definition-regex\r
   "^M::? +\\([^ ]+\\) +\\([^ ]+\\)")\r
 \r
+(defconst fuel-syntax--before-definition-regex\r
+  "^BEFORE: +\\([^ ]+\\) +\\([^ ]+\\)")\r
+\r
+(defconst fuel-syntax--after-definition-regex\r
+  "^AFTER: +\\([^ ]+\\) +\\([^ ]+\\)")\r
+\r
 (defconst fuel-syntax--integer-regex\r
   "\\_<-?[0-9]+\\_>")\r
 \r
   (format "\\_<\\(%s\\)?: +\\_<\\(\\w+\\)\\_>"\r
           (regexp-opt\r
            '(":" "GENERIC" "DEFER" "HOOK" "MAIN" "MATH" "POSTPONE"\r
-             "SYMBOL" "SYNTAX" "TYPED" "RENAME"))))\r
+             "SYMBOL" "SYNTAX" "TYPED" "TYPED:" "RENAME"))))\r
 \r
 (defconst fuel-syntax--alias-definition-regex\r
   "^ALIAS: +\\(\\_<.+?\\_>\\) +\\(\\_<.+?\\_>\\)")\r
   "\\_<CALLBACK: \\(\\w+\\) \\(\\w+\\)")\r
 \r
 (defconst fuel-syntax--indent-def-starts '("" ":"\r
+                                           "AFTER" "BEFORE"\r
                                            "C-ENUM" "C-STRUCT" "C-UNION" "COM-INTERFACE"\r
                                            "FROM" "FUNCTION:"\r
                                            "INTERSECTION:"\r
index 38e6817f6c6862be1fb200c3893c3a5b5ca036f1..946364efc16eea7869b65e7af9f15f64910803ed 100644 (file)
@@ -878,7 +878,7 @@ TYPEDEF: int CRYPT_KEYID_TYPE
 ! Internal keyset options
 ! (As _NONE but open for exclusive access, _CRYPT_DEFINED
 ! Last possible key option type, _CRYPT_DEFINED Last external keyset option)
-C-ENUM:
+C-ENUM: f
     CRYPT_KEYOPT_NONE
     CRYPT_KEYOPT_READONLY
     CRYPT_KEYOPT_CREATE
index a40b7cddeed165c3c81d51c7bb0f44a3fd5be0b8..c980ab0baf5548a1328e0ee59a5396ba8047bf1e 100644 (file)
@@ -24,7 +24,7 @@ IN: pdf.libhpdf
 : HPDF_COMP_MASK      HEX: FF ; inline
 
 ! page mode
-C-ENUM:
+C-ENUM: f
     HPDF_PAGE_MODE_USE_NONE
     HPDF_PAGE_MODE_USE_OUTLINE
     HPDF_PAGE_MODE_USE_THUMBS