~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to plug-ins/common/struc.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2008-10-06 13:30:41 UTC
  • mto: This revision was merged to the branch mainline in revision 35.
  • Revision ID: james.westby@ubuntu.com-20081006133041-3panbkcanaymfsmp
Tags: upstream-2.6.0
ImportĀ upstreamĀ versionĀ 2.6.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * This is the Struc plug-in for GIMP 0.99
3
 
 * Version 1.01
4
 
 *
5
 
 * Copyright (C) 1997 Karl-Johan Andersson (t96kja@student.tdb.uu.se)
6
 
 *
7
 
 * This program is free software; you can redistribute it and/or modify
8
 
 * it under the terms of the GNU General Public License as published by
9
 
 * the Free Software Foundation; either version 2 of the License, or
10
 
 * (at your option) any later version.
11
 
 *
12
 
 * This program is distributed in the hope that it will be useful,
13
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
 
 * GNU General Public License for more details.
16
 
 *
17
 
 * You should have received a copy of the GNU General Public License
18
 
 * along with this program; if not, write to the Free Software
19
 
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20
 
 *
21
 
 */
22
 
 
23
 
/* Don't ask me why its called "Struc". The first .c-file
24
 
 * just happend to be called struc.c
25
 
 *
26
 
 * Some code for the dialog was taken from Motion Blur plug-in for
27
 
 * GIMP 0.99 by Daniel Skarda (0rfelyus@atrey.karlin.mff.cuni.cz)
28
 
 *
29
 
 * Please send any comments or suggestions to me,
30
 
 * Karl-Johan Andersson (t96kja@student.tdb.uu.se)
31
 
 *
32
 
 */
33
 
 
34
 
#include "config.h"
35
 
 
36
 
#include <string.h>
37
 
 
38
 
#include <libgimp/gimp.h>
39
 
#include <libgimp/gimpui.h>
40
 
 
41
 
#include "libgimp/stdplugins-intl.h"
42
 
 
43
 
 
44
 
#define PLUG_IN_PROC   "plug-in-apply-canvas"
45
 
#define PLUG_IN_BINARY "struc"
46
 
 
47
 
 
48
 
static const gchar sdata[] =
49
 
{
50
 
  0, 5, -3, -13, 13, 10, -11, 6, -11, -14, 29, 43, -18, -40, 24, 4,
51
 
  -32, 26, 39, -34, -16, 25, -22, 12, 2, -40, 9, 46, -13, -47, 17, 19,
52
 
  -21, 3, 51, -22, -46, 15, 0, -15, 5, 8, 0, 27, -5, -30, 3, -5,
53
 
  -4, 24, 0, -20, 15, 8, -18, 5, 51, -13, -51, 16, 23, -21, -3, 29,
54
 
  -18, -22, 16, 16, -3, 8, -2, -31, 7, 27, -16, -13, 30, -9, -32, 27,
55
 
  21, 3, 27, -11, -30, 18, 8, -38, -8, 6, -7, -7, -3, 8, -2, 19,
56
 
  19, -30, -12, 42, -16, -32, 9, -10, -10, 10, 13, 2, -5, -8, -4, 27,
57
 
  2, -29, 10, 12, -13, -8, 0, 41, 0, -43, 5, 3, 6, 4, -8, 0,
58
 
  -10, -5, -24, -47, -9, -7, -39, -3, -17, -32, 24, 41, -25, -66, -12, -17,
59
 
  -47, 13, 29, -48, -31, 24, -28, 2, 3, -58, -7, 46, -13, -49, 6, -13,
60
 
  -52, -19, 29, -30, -53, -11, -43, -50, -8, -11, -27, 21, -16, -51, -15, -42,
61
 
  -41, 12, -22, -56, -8, -18, -53, -29, 40, -8, -61, 6, 27, -11, 2, 41,
62
 
  -20, -50, 8, 17, 11, 19, -20, -47, -3, 17, -32, -22, 20, -18, -22, 9,
63
 
  -8, -19, 24, 7, -19, 27, 29, -20, -8, 6, -12, -14, -10, -15, -28, 13,
64
 
  8, -48, -21, 27, -28, -38, 1, -31, -24, 2, -5, -13, -9, -22, -30, 16,
65
 
  -19, -68, -8, 4, -43, -40, -29, 5, -24, -51, -3, -17, -8, 11, -17, -38,
66
 
  -4, 11, 13, -11, 12, 13, -30, 14, 2, -32, 16, 42, 11, -6, 18, -1,
67
 
  -40, 17, 68, 5, -14, 43, 11, 14, 29, -32, -5, 38, -17, -39, 32, 18,
68
 
  -38, -22, 11, -16, -16, 16, -10, -45, -3, 9, -42, 19, 15, -30, 24, 4,
69
 
  -30, 35, 24, -39, 11, 28, -13, -18, 43, 12, -58, -8, 15, -36, -32, 45,
70
 
  16, -39, 4, -8, -11, 39, -6, -30, 11, 10, -32, -6, 29, -26, -4, 30,
71
 
  4, 2, 47, 16, -22, 30, 35, -27, -23, 6, -32, -30, -4, -17, -29, 27,
72
 
  19, -27, 4, 21, -21, -13, 20, -24, -21, 15, -8, -9, 24, -2, -54, 18,
73
 
  35, -52, -11, 26, -35, -41, -19, -2, -27, -37, 12, -19, -28, 16, 2, -32,
74
 
  -28, -20, -24, -18, 19, -8, -45, 4, -11, -30, 13, 12, -19, 5, 30, 0,
75
 
  -40, -13, 42, -2, -29, 6, -3, 13, 24, -26, 1, 49, -10, -29, 38, 37,
76
 
  7, 29, 16, -21, 13, 37, 16, -27, -8, 30, -1, 29, 28, -19, 18, 6,
77
 
  -33, 22, 46, -6, 16, 38, 11, 6, 45, 29, -22, 0, 24, -13, -30, 26,
78
 
  19, -16, 26, 26, 8, 54, -6, -46, 29, 32, -8, 15, 43, -3, -5, 43,
79
 
  22, -15, 35, 2, -51, 0, 32, -7, -12, 43, 2, -33, 12, 14, -3, 41,
80
 
  24, -21, 23, 38, -6, 3, 37, -3, -19, 27, 11, -11, 24, 30, -22, 8,
81
 
  50, -30, -16, 64, 35, 16, 48, 47, -16, -27, 36, 13, 0, 46, 51, 35,
82
 
  22, 25, -3, -5, 41, 8, -24, 16, -23, -35, 35, 39, -41, -20, 38, 8,
83
 
  -46, -32, 27, -16, -35, -4, -24, -4, 4, -50, -35, 22, -19, -49, 13, 9,
84
 
  -20, 32, 23, -53, -17, 27, 0, -33, -35, -35, -27, 19, 6, -38, 3, 5,
85
 
  -47, -8, 16, -38, -11, 5, -45, -24, 10, -22, -30, 0, 0, -22, -16, -4,
86
 
  -38, -60, -30, -21, -30, 13, -16, -65, -22, -19, -47, -20, -8, -29, -51, -33,
87
 
  -30, -37, 22, -11, -67, -38, -16, -37, -54, -13, -2, -32, -28, -30, -31, -9,
88
 
  -19, -44, -30, 6, -29, -32, 4, -22, -38, -10, -24, -19, 13, -8, -41, -8,
89
 
  48, -19, -53, 0, -8, -14, 30, 48, -22, -51, -11, -38, -35, 19, 7, -1,
90
 
  33, 38, 21, 16, 51, 38, 20, 59, 29, -15, 28, 68, -13, -30, 56, 67,
91
 
  11, -1, 45, 24, 10, 34, 17, 28, 43, 4, -3, 27, -7, -28, 30, 31,
92
 
  -9, 28, 51, -35, -25, 45, 42, 30, 31, -30, -54, 23, 19, -27, 13, 48,
93
 
  5, 12, 30, -48, -20, 35, -35, -12, 43, -2, -9, 32, 15, -48, -22, 27,
94
 
  10, -23, -8, -10, -19, 27, 30, 5, 14, 3, -33, -7, 4, 4, 13, -4,
95
 
  -25, -6, 40, 10, -25, -1, 14, -13, -20, 10, 14, 9, 0, -30, -6, 25,
96
 
  18, -3, -20, 27, 10, -5, 31, 5, -11, 20, -2, 0, 48, 19, -51, -28,
97
 
  58, 16, -14, 12, -26, -36, 13, 36, -19, -51, -27, -39, -29, 30, -3, -25,
98
 
  -16, -11, -44, -48, -7, -5, -13, 16, -3, -46, -35, 18, -23, -51, -2, -4,
99
 
  -30, -20, -11, -35, -21, 8, -1, 13, 17, -14, 14, 53, -7, -38, -3, -13,
100
 
  -21, 6, 17, -38, -27, 21, 5, 20, 67, 7, -51, 27, 23, -29, -10, 14,
101
 
  -5, 0, 54, -8, -21, 56, 7, -3, 46, 5, -16, 38, 43, -6, -2, 43,
102
 
  38, 8, 38, 40, 21, 48, 36, 29, 54, 52, 20, 43, 51, 19, 49, 56,
103
 
  9, 9, 56, 36, -3, 32, 73, 36, 0, 36, 34, 35, 65, 24, 6, 39,
104
 
  40, 16, 5, 34, 31, 20, 44, 6, -13, 32, 24, -12, 24, 62, -16, -33,
105
 
  39, -3, -10, 41, 0, -22, 28, 62, 36, 24, 7, -20, -5, 47, 38, 32,
106
 
  -15, 17, -19, -33, -6, -19, -29, 12, 0, -22, -15, 15, -16, -23, 6, -27,
107
 
  -53, -12, 1, -54, -52, -8, -32, -11, 20, -53, -33, 43, -8, -50, -19, -49,
108
 
  -37, 21, 5, -57, -44, -1, -48, -38, 37, -3, -70, -5, 0, -48, -25, -19,
109
 
  -36, -24, 25, -18, -30, 28, -5, -19, 22, -26, -64, 17, 22, -31, -26, 14,
110
 
  -8, -48, -12, -21, -33, -9, -38, -38, -9, -20, -27, 0, 29, -22, -27, 9,
111
 
  -23, -45, 17, 20, -44, -24, 16, 3, -49, -29, -21, -34, 14, -3, -48, -16,
112
 
  -16, -53, -26, -3, -27, -17, 20, -29, -43, 1, 0, -43, -26, 35, -27, -37,
113
 
  26, -26, -55, -19, -43, -55, 5, 31, 10, 40, 30, -46, -32, 2, -17, 11,
114
 
  10, 43, -2, -7, 30, -1, -18, 32, 24, 16, 37, 46, 4, 9, 40, 8,
115
 
  -20, 13, 62, 19, -15, 19, -1, -1, 55, 8, -19, 48, 27, -6, 44, 1,
116
 
  -22, 51, 34, -29, -13, 35, -27, -30, 56, 40, -17, 19, 14, -34, -2, 12,
117
 
  0, 12, 42, -25, -41, 8, -38, -43, 43, 25, -40, 28, 43, -35, -47, 27,
118
 
  26, -15, 16, -12, -19, 23, -19, -19, 10, -35, -49, -24, 32, -1, -40, 11,
119
 
  6, -27, 24, 28, -30, -8, 16, 21, -16, -8, 2, -25, 17, 16, -20, 24,
120
 
  13, -61, -30, 20, -24, -16, 43, -13, -36, 21, 29, -25, -12, 34, -25, -16,
121
 
  35, 9, 9, 21, -24, -67, -11, 18, -39, -13, 49, 0, -7, 18, -35, -9,
122
 
  -1, 24, -30, -33, 35, -13, -32, 21, -5, -41, -7, 10, -37, -15, 45, 28,
123
 
  -35, -27, 23, -3, -16, -4, -14, -16, -8, -19, -41, 25, 27, -19, 49, 13,
124
 
  -51, 27, 26, -30, 5, 52, -19, -62, -4, 6, 0, 46, 14, -30, 21, 25,
125
 
  -2, 11, 53, -12, -34, 45, 10, -37, 25, 37, -23, 8, 41, 2, -17, 31,
126
 
  40, 16, 45, 24, -5, 38, 13, 6, 54, 6, -25, -2, 42, 21, -32, 20,
127
 
  40, -13, 22, 37, -8, 13, 25, 24, 13, 22, 9, -14, 25, 13, -8, 46,
128
 
  32, -38, -35, 19, 3, 1, 38, -19, -58, 13, 43, -8, 13, 41, -27, -10,
129
 
  42, 17, 31, 59, 16, -51, 0, 40, -22, -29, 8, 0, 16, 49, -3, -10,
130
 
  8, 38, 10, -15, 50, 17, -15, 38, 46, -12, 2, 32, -6, -16, 33, 44,
131
 
  -27, -27, 24, 0, 7, 8, -24, 7, 13, -23, -49, 11, 4, -54, 31, 33,
132
 
  -49, 16, 32, -48, -16, 45, 11, -37, -16, -32, -57, 23, 26, -32, 1, -9,
133
 
  -47, -14, 27, -17, -28, 33, 10, -25, 15, 13, -36, -11, 19, -27, -34, 5,
134
 
  -6, -43, -18, -9, -43, -11, -21, -29, 45, 8, -55, -16, 10, -3, -40, -14,
135
 
  17, -27, -13, -3, -35, -20, -20, -46, -21, 20, -25, -40, 14, -21, -34, 43,
136
 
  29, -24, -31, -13, -30, -37, 4, -8, -42, 1, 19, -24, 17, 37, -34, -30,
137
 
  14, -19, -42, -2, -5, -47, 5, 30, -38, -17, -1, -43, -19, 35, -3, -15,
138
 
  -5, 8, -13, -25, 25, 18, -20, 6, 15, -18, -7, 30, 9, -24, 26, 54,
139
 
  -3, -13, 31, 11, 10, 45, 16, 22, 61, 15, -16, 46, 32, -26, 32, 65,
140
 
  -7, 17, 46, -27, -9, 49, 55, 18, 37, 47, -16, 21, 40, -24, 9, 30,
141
 
  -11, 16, 19, -29, -14, 29, -16, -37, 29, 29, -18, 5, 43, -26, -47, 16,
142
 
  11, -24, 5, 19, -3, 26, 17, -14, 35, 35, -30, 5, 41, 25, -1, 9,
143
 
  34, 16, 31, 29, 9, 27, 38, -8, -9, 51, 27, -4, 32, 10, -12, 37,
144
 
  30, 7, 15, 29, -5, -26, 24, 24, -5, 24, 32, -10, 26, 36, -17, -16,
145
 
  27, 26, 5, 31, 23, -19, 24, 62, -7, 7, 56, 5, -12, 47, 30, 31,
146
 
  -16, -3, -28, -53, -17, -11, -56, -27, -25, -49, -49, -14, -25, -57, -19, -3,
147
 
  -32, -39, 2, -21, -61, -34, -32, -30, 21, -16, -45, 22, 13, -33, -22, 0,
148
 
  -22, 1, 22, -41, -43, -1, 19, 3, 0, 13, -19, -5, 16, -32, -8, 31,
149
 
  -6, 31, 28, -38, -12, 45, 0, -44, 20, 29, -24, -5, 43, -6, -30, 40,
150
 
  36, 8, 34, 31, 11, 33, 32, 6, 12, 22, -14, -9, 35, 15, -22, -4,
151
 
  8, -11, 20, 23, -7, 24, 43, 4, -7, 23, 5, 2, 22, 13, 10, 24,
152
 
  -3, -24, 8, 48, 16, -11, 25, -15, -37, 10, 9, -16, 7, -1, -41, -17,
153
 
  26, 21, 12, 37, 10, -39, -15, 29, -6, -34, 2, -6, -15, 14, -8, -2,
154
 
  25, 44, 29, -9, 16, 40, 4, 22, 48, 30, 8, 29, 17, 4, 8, -10,
155
 
  -14, -11, 36, 35, -8, -8, -10, -8, 34, -10, -48, 5, -8, -27, -10, -20,
156
 
  -51, -17, 8, -32, -40, -35, -46, -15, 2, -38, -54, -18, 8, -35, -27, 13,
157
 
  -28, -22, -6, -54, -44, -6, -26, -61, -10, 11, -48, -18, 15, -40, -48, 19,
158
 
  0, -41, -10, -23, -50, -22, -28, -16, -5, -24, -40, -56, -9, -14, -59, -50,
159
 
  -36, -58, -13, -3, -67, -32, -11, -54, -43, -5, -43, -61, -43, -53, -28, 29,
160
 
  -4, -60, -25, 13, -26, -43, 11, -29, -51, -3, -24, -30, 8, 7, -37, -27,
161
 
  -1, -43, -48, 9, -7, -64, -52, -27, -33, -44, -22, -40, -30, -1, -37, -15,
162
 
  -14, 7, -6, -22, 10, 10, -13, 3, 30, 11, 3, 16, -11, 5, 40, 24,
163
 
  -6, -22, 16, 38, 19, 34, 40, 25, 57, 16, -23, 37, 35, 14, 48, 56,
164
 
  10, 22, 38, 3, 21, 43, -22, -21, 39, 10, -22, 18, 40, -6, -4, 47,
165
 
  42, 24, 16, -26, -14, 21, 3, -36, 0, 43, -1, 20, 41, -17, -52, 12,
166
 
  13, -41, 7, 15, -27, 8, -18, -11, 37, 11, 7, -8, 31, 53, 17, 16,
167
 
  17, -12, 30, 53, -19, 8, 41, -8, -18, 38, 32, -9, -19, -48, -53, 30,
168
 
  32, -22, 11, 27, 5, 0, 48, 19, -10, 33, 25, 22, 38, 47, 19, 24,
169
 
  50, 12, -8, 35, 51, 16, 21, 35, 17, 9, 43, 10, -5, 40, 17, 32,
170
 
  -47, -23, -34, -48, -5, -19, -65, -54, -3, -27, -46, -25, -48, -51, -21, -14,
171
 
  -40, -51, -39, -24, -44, -32, -16, -27, 6, -17, -54, -5, 9, -33, -30, 0,
172
 
  -12, 0, 35, -12, -20, 24, -10, -38, 29, 27, -30, 5, 16, -24, -20, 21,
173
 
  35, 48, 54, -10, -7, 62, 46, -1, 12, 16, -23, 15, 54, 22, -14, 22,
174
 
  17, -49, -8, 27, -3, 33, 10, -21, 42, 39, 0, -13, 21, 35, 6, 5,
175
 
  -2, -30, -1, 14, -22, -4, 22, -8, -18, 23, 34, 42, 59, 7, -57, -16,
176
 
  2, -14, 25, 34, 11, -9, 8, -6, -24, 21, 27, 7, 0, 6, 0, 21,
177
 
  36, 1, 0, 5, 0, -8, 3, 35, 3, -12, 32, 16, -29, -26, -24, -19,
178
 
  32, 37, 28, 4, 38, 42, -11, -15, 42, 52, 29, 32, 3, -16, 14, 33,
179
 
  0, -1, 16, 5, -21, -11, -17, -43, -10, 7, -18, -6, 17, -9, -14, 4,
180
 
  -17, -33, 21, -5, -45, -5, -8, -47, 1, 16, -49, -16, -6, -43, -47, -14,
181
 
  -19, -11, 35, -24, -58, 19, 6, -30, 16, 2, -59, -24, 22, -18, -30, 26,
182
 
  16, -51, -31, -14, -51, -31, -20, -55, -19, 29, -26, -51, -2, -1, -26, -7,
183
 
  -3, -34, -28, -31, -41, -16, -4, -46, -53, -16, -36, -29, 31, 13, -33, -22,
184
 
  -24, -40, -29, 5, -6, -46, -32, -25, -43, -11, 8, -35, -55, -45, -48, -24,
185
 
  6, -32, -8, 13, -27, -46, -48, -5, -37, -55, -1, 3, -29, -46, -42, -42,
186
 
  24, 20, 25, 27, 48, 44, -16, -9, 24, 43, 56, 65, 32, 9, 43, 75,
187
 
  38, 21, 59, 46, 12, 32, 44, 14, 19, 43, 36, 34, 42, 19, 24, 48,
188
 
  41, 13, 45, 28, -4, 52, 43, -10, 27, 30, -32, 10, 38, 13, -11, 5,
189
 
  12, 12, 56, 2, -48, 27, 17, -25, 40, 43, -30, -13, 47, -5, -35, 41,
190
 
  59, 9, 7, 9, -7, -5, 6, -17, -19, 46, 16, -20, 38, 23, -9, 29,
191
 
  46, 35, 41, 11, -13, 29, 61, 18, -5, 35, 17, 2, 43, 46, 29, 27,
192
 
  18, 5, -18, 25, 43, 14, 30, 24, -7, -4, 37, 36, 14, 14, 0, 1,
193
 
  43, 22, 25, 65, 44, 16, 8, 43, 0, -31, 30, 43, 19, 28, 43, 34,
194
 
  -16, -14, -51, -43, -1, 19, -43, -32, -18, -50, -36, -12, -28, -29, 5, 20,
195
 
  -4, -16, -9, -22, -8, 19, 26, 11, -4, -20, -20, 16, 14, -24, -18, -19,
196
 
  -14, 8, 53, 40, -13, 18, 11, -12, 35, 33, -33, -10, 9, -12, 0, 14,
197
 
  8, 10, 61, 8, -44, 13, -3, -25, 34, 26, -38, -18, 49, 23, -22, 22,
198
 
  31, 22, 43, 35, 43, 49, 21, -2, 5, 42, 16, -32, 20, 24, -27, -12,
199
 
  2, 11, 50, 31, -20, 1, 51, 33, -1, 22, 21, 3, 36, 36, 22, 32,
200
 
  13, -13, -27, 15, 34, 22, 39, -3, -24, -2, 14, 27, 19, 0, -19, -11,
201
 
  11, 3, 10, 35, 13, -19, 3, 55, 15, -27, 32, 45, 6, 14, 31, 11,
202
 
  2, 27, -31, -49, -2, 42, -3, 1, 12, -27, -14, -1, -51, -61, 3, 15,
203
 
  -28, -7, 9, -49, -27, 18, -20, -21, 0, -39, -45, 7, 2, -19, 20, -15,
204
 
  -67, -34, 24, 22, -27, -30, -51, -59, -4, 26, -35, -23, -1, -59, -54, -32,
205
 
  -50, -34, 47, 1, -46, 15, -28, -70, 0, 3, -58, -30, 13, -16, -52, -16,
206
 
  -25, -40, 17, -2, -19, 13, -26, -59, -24, -7, -16, -38, -11, 13, -23, -35,
207
 
  -45, -52, -13, 3, -55, -45, -4, -17, -51, -25, -19, -56, -13, -11, -45, -19,
208
 
  -19, -49, -53, -33, -41, -39, 20, -14, -67, -41, -38, -43, -35, -34, -59, -58,
209
 
  -45, -64, -33, 8, -22, -71, -31, 25, -13, -61, -10, 1, -33, -21, -19, -43,
210
 
  -19, 28, 22, -24, -3, 19, -14, 19, 30, -4, 28, 47, -18, -65, -8, 24,
211
 
  -15, 12, 63, -19, -39, 34, 11, 10, 49, 14, -1, 19, -8, -11, 51, 43,
212
 
  -38, -38, 19, 34, 16, 25, 10, -18, 8, 38, -13, 6, 57, -8, -19, 14,
213
 
  -10, -18, 52, 29, -20, 50, 51, -12, 21, 36, -43, -21, 37, -1, -32, 19,
214
 
  12, -48, 1, -5, -39, 23, 19, -28, 1, 27, 18, 8, 18, 23, 9, 19,
215
 
  16, -2, 18, 30, -28, -16, 28, 15, -13, 21, 39, -12, 19, 40, 8, 21,
216
 
  21, -10, 4, 19, -17, -29, 41, 56, 2, -2, 11, 16, 24, 48, 14, -17,
217
 
  8, -16, -6, 53, 34, -39, -12, 47, 17, -32, 11, 22, -3, 22, 20, 14,
218
 
  10, 21, 48, -13, -11, 1, -41, 21, 46, -22, -2, 48, 2, -58, -41, -24,
219
 
  -57, -24, 50, -8, -62, -5, -10, -27, -4, -25, -5, 24, -27, -43, 19, 40,
220
 
  -30, -50, 14, 22, -1, 27, 17, -16, 18, 39, -20, -6, 48, -3, -7, 35,
221
 
  -2, -24, 27, 14, -26, 18, 41, 13, 29, 49, -30, -25, 61, 11, -32, 30,
222
 
  24, -29, 27, 26, -29, 9, 9, -35, -24, 24, 11, -15, 30, 19, -16, 26,
223
 
  41, 18, 31, 30, -27, -22, 20, 2, -19, 15, 34, -9, -6, 30, 25, 53,
224
 
  40, -31, -24, 30, 22, -11, 8, 20, 16, 37, 34, 13, 16, 56, 35, -18,
225
 
  13, 5, -12, 49, 43, -27, -31, 27, 25, -25, 11, 14, 5, 38, 12, 8,
226
 
  26, 8, 35, 22, 23, 43, 0, 19, 53, 8, 3, 56, 51, 7, 6, 24,
227
 
  -29, -32, 49, 38, -30, -2, 16, 0, 2, -27, -15, 33, 0, -46, 5, 36,
228
 
  -15, -42, 17, 4, -43, 10, -3, -65, -13, 21, -40, -14, 26, -33, -43, 13,
229
 
  -26, -53, 13, -6, -56, -12, -6, -37, 0, 24, -35, -40, 48, 8, -56, 11,
230
 
  1, -55, 9, 26, -29, 2, 15, -15, -29, 1, -20, -64, 21, 34, -39, -19,
231
 
  0, -22, 3, 6, -24, -28, -19, -46, -57, -27, -16, -43, -51, -21, -34, 8,
232
 
  30, -19, -35, -15, -3, -29, -17, -27, -59, -6, 10, -51, -34, 43, 36, -37,
233
 
  -35, -20, -43, 10, 26, -22, -30, 15, 11, -51, -9, -6, -16, 38, 8, -13,
234
 
  0, -7, -9, -22, -28, -9, -24, -29, -16, -14, -26, 3, 46, 32, 35, 54,
235
 
  20, -15, 27, 22, -18, 10, 17, 19, 27, -5, -27, 24, 47, 5, 26, 49,
236
 
  14, -9, 24, 3, -49, 21, 38, -45, 2, 47, -8, 22, 50, -22, -30, 51,
237
 
  26, -28, 32, 43, -15, 18, 32, -4, 32, 46, -16, -35, 42, 49, -13, 29,
238
 
  25, -48, 5, 39, -13, 13, 55, 39, 19, 42, 29, -30, 11, 45, -1, 6,
239
 
  26, 8, 31, 38, 31, 42, 51, 17, -3, 24, 34, 13, 0, 5, -27, 14,
240
 
  56, 27, 12, 11, 19, -10, 19, 46, -11, 11, 43, -34, -38, 38, 62, 33,
241
 
  5, 19, -8, 9, 49, 3, -5, 48, 45, -17, 12, 24, 2, 49, 52, 33,
242
 
  -8, -8, 0, -32, -42, -27, -27, -27, -37, -32, -38, -29, -8, -37, -16, -8,
243
 
  -32, -43, 1, -16, -46, -11, -37, -39, -13, -30, -45, -10, -5, -33, -17, 10,
244
 
  -24, -13, 40, 10, -59, 0, 37, -45, -5, 40, -14, 7, 42, -34, -48, 26,
245
 
  22, -12, 2, 2, -19, 3, 14, -8, 17, 35, -15, -32, 6, 12, -19, 24,
246
 
  32, -41, -3, 40, -26, -40, -6, -30, -11, 25, 18, -16, -5, 0, -30, -4,
247
 
  8, -24, 2, 14, -16, 10, 48, 14, -18, 25, 27, 2, 27, 32, -33, -18,
248
 
  34, -10, -33, 10, 47, -3, 0, 24, -6, 24, 55, 4, -38, -17, 7, 24,
249
 
  15, 15, -12, -8, 29, -18, -37, 20, 30, -23, -14, -8, -24, 10, 21, 3,
250
 
  -8, -3, 45, 10, 11, 24, 18, 36, 37, 27, 8, 19, 28, -17, 12, 29,
251
 
  -6, -29, 24, 8, -22, 38, 29, 17, 46, 0, -35, 11, -2, -36, -33, 11,
252
 
  -23, -37, 52, 49, -27, 18, 40, -47, -26, 12, -42, -16, 51, -23, -53, -16,
253
 
  -36, -31, -5, -32, -59, -38, -35, -51, -15, 21, -29, -25, -3, -35, -54, -11,
254
 
  7, -50, -18, 35, -20, -34, 2, -51, -43, -3, -26, -49, -7, 3, -48, -26,
255
 
  -11, -56, -20, 19, -51, -56, -6, -23, -67, -18, -11, -63, 0, 39, -38, -45,
256
 
  17, -19, -50, -9, 17, -36, -23, -19, -58, -21, -4, -12, -38, -39, -32, -46,
257
 
  -34, -18, -25, -15, -16, -48, -59, -31, -11, -38, -21, -24, -61, -21, -13, -36,
258
 
  -33, -38, 8, -24, -3, 13, -32, 2, 37, 10, -19, 6, 11, -30, -7, 40,
259
 
  22, -7, 35, -1, -38, 17, 23, 19, 54, -2, -55, 8, 31, 22, 10, 46,
260
 
  34, -22, 32, 51, -16, 22, 49, -38, -12, 29, -27, -10, 69, 15, -24, 19,
261
 
  -5, -1, 46, 47, 15, 23, 29, -8, 2, 39, -24, -11, 54, 19, 4, 28,
262
 
  32, -8, 8, 54, 17, 12, 56, 3, -23, 25, 29, -8, 19, 46, 9, 21,
263
 
  36, -5, 0, 42, -17, -39, 19, 31, -15, 17, 28, -49, 0, 56, -3, -10,
264
 
  51, 8, -21, 16, 5, -32, 18, 25, -25, -2, 16, 19, -5, 8, 22, -24,
265
 
  -15, 8, 16, 46, 43, 21, 13, 11, 0, -15, 26, 40, -11, 17, 39, 26,
266
 
  19, 10, 23, -16, 0, 43, -9, -21, 2, -17, -25, 12, -1, -46, -33, 0,
267
 
  -27, -30, 38, 14, -38, -32, -32, -40, -5, -12, -49, -22, -5, -21, -25, -2,
268
 
  -12, -41, -5, 20, -42, -6, 50, -33, -3, 40, -35, -30, 39, 6, -32, 17,
269
 
  1, -13, 14, 5, 3, 34, 46, 0, -19, 16, -37, -35, 39, 8, -3, 27,
270
 
  6, -31, -16, 23, 1, -2, 23, -11, -11, 27, 16, -17, -10, 10, -6, 6,
271
 
  21, 0, 6, 27, -13, -29, 25, 30, -7, 31, 35, -43, -10, 41, 7, -12,
272
 
  13, -27, -25, 44, 5, -48, 9, 30, -19, 8, 57, 38, -2, 20, 33, -13,
273
 
  -17, -3, -5, 23, 24, -5, 11, 52, 19, -41, -5, 37, 3, -6, 4, 11,
274
 
  27, 29, 59, 18, -7, 10, -11, 3, 8, -25, -21, 40, 49, -4, 13, 29,
275
 
  -11, -11, 42, 51, 29, 17, 16, 2, 12, 35, 14, 8, 24, -16, -24, 14,
276
 
  -7, -39, -7, 25, -37, -14, 59, 3, 8, 46, -35, -37, 35, 8, -42, 1,
277
 
  -11, -36, 6, -23, -43, -5, 22, -19, -19, 33, -20, -55, 6, -14, -49, -2,
278
 
  -12, -56, -46, -8, -37, -19, 16, -41, -32, 11, -24, -51, -29, -14, -45, -37,
279
 
  1, -5, 19, 43, 7, -27, 13, 0, -51, 12, 32, -37, -22, 4, -17, 0,
280
 
  20, -37, -33, 54, 35, -53, -15, 40, -20, -26, 34, 0, -37, 24, 35, -6,
281
 
  -29, -20, -25, -5, 0, -43, -36, 25, 42, -31, -43, 9, 3, -18, -41, -35,
282
 
  -23, -42, 0, -23, -22, -29, -61, -24, 6, -35, -62, 3, 34, -16, 18, 20,
283
 
  -35, -48, -7, 6, -1, 24, 43, 27, 14, 23, 10, 14, 55, 26, -3, 46,
284
 
  35, -17, 19, 56, -2, -5, 39, 0, 0, 56, 3, -11, 53, 29, -22, 22,
285
 
  32, 2, 43, 16, -31, 4, 58, 13, -3, 64, 45, -3, 37, 32, -24, 31,
286
 
  64, 13, -22, 19, 16, 13, 53, 9, -5, 51, 30, -12, 19, 54, 18, 0,
287
 
  30, 21, 29, 32, -10, -30, 32, 30, -34, 18, 49, -12, -4, 37, 13, 29,
288
 
  65, 8, -21, 39, 68, 11, 4, 47, 5, -16, 45, 30, -21, 34, 46, 21,
289
 
  19, 19, 8, 37, 39, -23, -28, 11, 34, -10, -25, 26, 43, 49, 24, 27,
290
 
  19, 0, 34, 7, 28, 49, 14, 0, 38, 40, -16, 5, 13, -35, 18, 43,
291
 
  -17, -57, -3, -3, -46, -19, -8, -29, -42, -43, -62, -32, 16, -11, -54, 0,
292
 
  18, -52, -24, 23, -24, -30, 5, -35, -29, 19, -24, -35, 33, 16, -38, 0,
293
 
  -6, -26, 27, 5, -59, -29, 43, 2, -42, 6, 17, 6, 34, 37, -15, -6,
294
 
  29, 32, -1, -6, 21, 18, 8, -10, -22, 31, 40, -24, -4, 40, 0, -35,
295
 
  -12, -8, 18, 21, -39, -43, 29, 22, -35, 2, 31, -24, -17, 26, 0, -20,
296
 
  -6, -27, -34, 4, 3, -19, -8, 11, -24, -48, 5, 17, -14, 16, 6, -35,
297
 
  -13, -14, -36, 22, 49, -30, -55, 9, 10, -49, -38, -9, -3, 32, 7, -12,
298
 
  16, 17, 51, 18, 17, 43, 17, -16, -4, 15, 2, 32, 19, -47, -6, 67,
299
 
  25, -27, 31, 28, -11, 19, 29, 16, 18, 26, -15, -8, 38, 16, -48, -9,
300
 
  49, -24, -33, 21, -14, -17, 31, -11, -9, 8, -49, -67, 14, 16, -50, 6,
301
 
  -3, -51, 11, 19, -51, -38, 30, 0, -51, -41, -59, -35, 8, -6, -27, -14,
302
 
  -8, -10, 7, -22, -42, 4, -5, -36, -33, 16, 33, -41, -43, 14, -16, -67,
303
 
  -42, -39, -4, 49, 0, -18, 26, 2, -50, -8, 16, -45, -30, 5, -8, -4,
304
 
  -9, -53, -48, 13, -11, -50, -12, 24, -7, -35, -2, -20, -41, 8, 9, -43,
305
 
  -14, 7, -37, 3, 65, 16, -38, 35, 57, -21, -16, 0, -26, 19, 19, -29,
306
 
  -26, -32, 14, -27, -27, 22, -8, -42, -51, -63, -51, 24, 24, -56, -51, 26,
307
 
  -6, -46, 8, -9, -42, 2, 30, 18, 19, 17, -11, -15, 26, 37, -21, -8,
308
 
  42, -14, -18, 37, 13, 10, 37, 2, 23, 65, 9, -45, 19, 46, -35, -1,
309
 
  35, -15, 26, 57, 4, 2, 49, 50, 28, 28, -21, -21, 31, 8, -38, -5,
310
 
  32, -25, 3, 35, -18, 19, 51, 6, -10, 32, 59, 8, -11, 37, 23, -14,
311
 
  18, -8, -16, 22, -15, -6, 51, 12, -42, 17, 45, -38, -33, 19, 12, 30,
312
 
  47, -4, -23, 39, 22, -26, 4, 53, 32, 7, 44, 10, -19, 34, 42, -5,
313
 
  11, 40, -2, -2, 50, 29, -28, 16, 43, -5, 8, 29, -17, 2, 50, 12,
314
 
  2, -26, 34, -10, -22, 51, 41, 17, 22, -12, -51, 16, 39, -16, -18, 30,
315
 
  -13, -31, 16, 2, -27, -11, -5, -33, -14, -16, -38, -50, -10, 11, -33, 3,
316
 
  24, -46, -28, 6, -37, -25, -10, -43, -32, 42, 25, -46, -16, 17, -35, -30,
317
 
  10, -25, 4, 20, -30, -24, 20, 29, 37, 45, -11, -43, 16, 38, -39, -39,
318
 
  19, -35, -40, -3, -37, -32, -8, -34, -55, -25, 0, -17, -2, 27, -13, -30,
319
 
  31, 5, -19, 9, -52, -53, 45, 18, -57, 8, 43, -32, -48, -15, -27, -14,
320
 
  7, -25, -43, 16, 5, -51, -21, 5, -30, -34, 29, 3, -35, 4, 0, -43,
321
 
  -30, -16, -52, -49, 11, 7, -58, -24, -6, -54, -28, 3, -37, -43, -2, -14,
322
 
  29, 6, 53, 27, -8, 24, 14, 6, 49, 39, -17, 27, 55, 25, 28, 59,
323
 
  -4, -13, 50, 30, 0, 22, 40, 9, 30, 51, 43, 8, 23, 15, -36, 24,
324
 
  56, -9, -2, 27, -35, -14, 31, 2, -28, 24, 28, -33, 0, 29, -15, -7,
325
 
  24, -23, 0, 13, -39, -37, 0, -21, -37, -7, -10, -32, 4, 30, -37, -40,
326
 
  11, -5, -15, -20, -44, -26, -14, -29, -31, -19, -28, -67, -9, 51, -7, -37,
327
 
  21, -3, -11, 46, -7, -47, 31, 29, -62, -3, 59, 23, 16, 24, -23, -20,
328
 
  24, 2, -31, 19, 35, -40, -24, 11, -32, -38, 3, -17, -36, 5, 14, -17,
329
 
  0, 9, -43, -52, 16, 36, -30, -14, 23, -36, -18, 32, -10, -5, 27, 5,
330
 
  -45, -47, -22, -27, -11, 16, -31, -43, 19, 17, -37, -26, -13, -29, -12, 39,
331
 
  -11, -54, 9, 11, -45, -29, 9, -7, -3, 14, 29, 24, 35, 0, -35, 0,
332
 
  13, 2, 24, 56, -2, -2, 46, 27, 8, 44, 56, 11, 34, 51, 8, 12,
333
 
  25, 0, 32, 38, -12, -16, 29, 32, 6, 21, 16, -10, 35, 68, 4, -4,
334
 
  30, 25, 53, 46, 5, 35, 47, 16, 14, 50, 53, -9, 5, 61, 6, -20,
335
 
  42, 24, 11, 48, 5, -27, 39, 56, -18, 0, 37, 5, 13, 65, 35, -4,
336
 
  43, 35, -16, -7, 44, 23, 15, 51, 8, 6, 47, 24, 15, 43, 34, 2,
337
 
  25, 65, 18, -17, 35, 47, 10, 20, 57, 19, 9, 65, 16, 10, 70, 45,
338
 
  -11, -15, -2, -34, -5, 61, 14, -22, 27, 27, -22, -27, -25, -40, -15, 29,
339
 
  2, -51, -10, 19, -45, -44, -16, -32, -35, -46, -58, -8, 25, -28, -46, -33,
340
 
  -59, -64, -22, 17, -24, -31, 8, -34, -41, 4, 6, -4, 16, -4, -35, -4,
341
 
  -25, -54, 0, 7, -47, -43, -7, 13, 17, 33, -3, -49, -3, 42, 0, -4,
342
 
  6, -37, 15, 49, 3, 23, 32, -21, -48, -13, 6, -33, -30, 36, -4, -56,
343
 
  0, -4, -13, 20, -22, -67, 0, 36, -13, -6, 0, -48, -41, 14, 16, -13,
344
 
  16, 9, -35, -46, -10, 2, -8, 6, -37, -32, 25, -2, -21, 9, -13, -49,
345
 
  -24, 38, 13, -35, 15, 5, -30, -1, 13, -11, -28, 22, -6, -30, 18, -9,
346
 
  8, -3, 40, 26, 3, 31, 2, -29, 17, 49, 19, 26, 36, 5, 24, 57,
347
 
  41, 3, 31, 61, 8, 8, 32, 18, 25, 14, -40, 2, 54, 19, 12, 28,
348
 
  6, -30, -26, 7, -18, -21, 35, -17, -47, -3, -37, -40, 29, 20, -24, 23,
349
 
  22, -24, 8, 23, -27, -22, -4, -35, -43, 21, 12, -39, -11, 5, -24, 3,
350
 
  19, -53, -24, 9, -32, 5, 35, -1, -17, -8, -14, -43, -41, 38, 21, -51,
351
 
  -16, -16, -12, 14, -16, -60, -20, 12, -38, 3, 43, -29, -24, 3, -40, -32,
352
 
  32, 29, -13, -22, -25, -43, -30, 0, -35, -55, 3, -14, -43, 16, 15, -44,
353
 
  -36, 7, -15, -47, -6, -12, -65, -26, 2, -25, -24, 1, -27, -17, 19, -22,
354
 
  -31, -61, -19, -8, -40, -32, -43, -57, -16, 13, -22, -8, 1, -39, -27, -5,
355
 
  -19, -19, 11, 18, -13, -2, 11, -8, 27, 48, -18, -37, 24, 34, 14, 35,
356
 
  39, 11, 9, 28, 2, -8, 54, 34, -2, 40, 13, -19, 28, 33, 0, 29,
357
 
  51, 24, 33, 36, -14, -1, 36, 9, -21, 32, 26, -19, 28, 29, -30, 8,
358
 
  62, 3, 2, 10, -47, -3, 51, 26, 30, 56, 49, 5, -17, 43, 29, -31,
359
 
  1, -2, 24, 60, 24, -14, 9, 43, -10, 13, 72, 10, 5, 50, -15, -39,
360
 
  33, 24, -19, 13, 13, -15, 16, 58, 14, -25, 38, 34, -12, 42, 65, -22,
361
 
  -29, 20, -5, 0, 33, 19, -31, 6, 54, 23, 26, 40, -4, -6, 42, 27,
362
 
  25, -19, 13, 29, 7, 20, 22, -6, 13, 27, -23, -13, 0, -26, -10, -3,
363
 
  -54, -46, 2, -14, -40, -5, 3, -55, -29, 25, -2, -45, -8, -5, -44, -16,
364
 
  0, -30, -27, 13, -24, -40, 2, -13, -34, 0, -1, -38, -3, -12, -58, -38,
365
 
  -10, -27, -24, -1, -38, -42, -6, -17, -25, 17, -1, -46, 3, 22, -39, -25,
366
 
  13, -27, -2, 26, -41, -41, -8, -30, -42, -1, 25, -27, -36, 24, 6, -38,
367
 
  -26, -45, -12, 30, -13, -45, -5, 29, -27, -21, 32, -5, -22, 27, -7, -32,
368
 
  33, 8, -51, 11, 35, -23, -14, 27, -12, -51, 9, 12, -36, -2, 41, -26,
369
 
  -42, 11, -18, -14, 42, 19, -43, -14, 32, -7, -9, 19, -2, -11, 9, -9,
370
 
  31, -8, 17, 42, 38, 37, 19, -5, 30, 51, 27, 35, 44, 13, 25, 70,
371
 
  12, -20, 40, 33, -15, 16, 56, -8, -20, 32, 16, -10, 40, 43, 5, 26,
372
 
  43, -6, -48, 14, -1, -45, -13, -19, -61, -29, 10, -46, -6, 35, -14, -23,
373
 
  13, 11, 3, 29, 15, 1, 22, -18, -30, 32, 16, -40, -2, 30, -26, -12,
374
 
  9, -40, -21, 29, -6, -24, -5, -14, -36, -10, 16, -48, -33, 40, 24, -12,
375
 
  -14, -38, -7, 24, -25, -54, -9, 26, -45, -43, 22, -7, -35, 12, -13, -24,
376
 
  49, 40, -14, 13, 46, -13, -19, 23, -9, -59, -27, -4, -36, -5, 38, 0,
377
 
  -24, 19, -2, -26, 31, 28, -32, -29, 21, -19, -40, 4, -14, -10, 15, -30,
378
 
  -10, -25, 5, -16, -43, -21, -28, -63, -14, -1, -20, 0, 29, -20, -43, 29,
379
 
  10, -26, 26, 19, -42, -35, 32, 24, 8, 30, -16, -30, 31, 35, 12, 26,
380
 
  64, 44, -13, 29, 48, 13, 37, 52, -5, 0, 56, 4, 1, 37, 14, 13,
381
 
  43, 30, 20, 51, 30, 1, 41, 27, -16, 42, 34, -11, 34, 48, -12, 8,
382
 
  62, 32, 15, 49, 32, 7, 45, 35, -8, 30, 64, -5, -10, 55, 43, 19,
383
 
  33, 11, 30, 68, 11, -31, 18, 62, 8, -17, 45, 29, -10, 38, 24, -3,
384
 
  43, 31, -6, 1, 43, 23, 13, 56, 43, 5, 12, 31, 11, 9, 34, 15,
385
 
  -5, 38, 25, -2, 35, 29, -12, -3, 53, 27, -16, 32, 16, 14, 60, 38,
386
 
  5, -20, 32, 26, -19, 8, 23, -41, -19, 6, -54, -44, 35, 0, -45, 10,
387
 
  -17, -55, 9, 32, -30, -43, -5, -19, -13, 22, -27, -39, -1, -29, -56, -27,
388
 
  27, 6, -25, -2, -5, -4, 21, 8, -19, 0, 15, -22, -6, -11, -46, -16,
389
 
  9, -36, -44, -2, -21, -46, -6, 5, -44, 1, -8, -46, 9, 15, -40, -29,
390
 
  12, 0, -2, 12, -10, -46, 5, 10, -45, 4, 35, -20, -29, 33, 13, -17,
391
 
  -2, -27, -3, 57, -2, -63, -12, 8, -30, -30, 17, -5, -37, -10, -27, -43,
392
 
  -8, -22, -42, -27, -6, -19, -48, 5, 18, -16, 7, 7, -16, -25, -3, -19,
393
 
  -38, -5, -30, -39, 13, -9, -66, -35, 7, -11, -46, -13, -11, -8, 36, 11,
394
 
  -12, -43, 11, 27, 0, 24, 45, 3, 13, 43, -32, -43, 50, 27, -19, 40,
395
 
  13, -38, 20, 62, -2, -12, 36, 5, 0, 36, -3, -15, 28, -1, -53, -26,
396
 
  40, 8, -11, 26, -13, -16, 35, -3, -36, 18, 23, -24, 19, 22, -30, 10,
397
 
  35, -33, -39, 17, -10, -19, 9, 2, -22, 15, -11, -59, -12, -1, -41, -23,
398
 
  7, -33, -11, 17, -12, -38, 12, 11, -44, -4, 1, -54, -40, 22, -15, -36,
399
 
  -12, -58, -37, 53, 14, -51, 0, 8, -50, -37, 25, 5, -11, 3, -34, -33,
400
 
  7, -6, -26, 6, 16, -4, -38, 3, 16, -45, -11, -1, -21, 1, 38, 16,
401
 
  -4, 13, -24, -23, 38, 34, -40, -16, 18, -16, -53, -13, -22, -40, 21, -22,
402
 
  -19, -45, 8, 0, -50, -16, -13, -29, 21, 58, -23, -63, 24, 20, -39, 28,
403
 
  18, -36, 0, 19, -37, -54, -5, -8, -15, 0, -29, -35, 40, 31, -35, -29,
404
 
  7, -5, -13, 32, 8, -18, 41, 21, -29, 16, 16, -24, 22, 27, -16, 27,
405
 
  67, -2, -14, 55, 15, -3, 40, 30, 21, 54, 42, 7, 33, 40, 2, 10,
406
 
  40, 0, 19, 59, 0, -24, 45, 38, -14, 31, 52, -14, -8, 53, 16, -11,
407
 
  34, -9, -40, 48, 25, -40, 21, 53, -11, -19, 27, -6, 0, 54, 34, 26,
408
 
  55, 38, -8, 16, 51, 43, 13, 23, 24, -24, 10, 30, -3, 5, 17, -5,
409
 
  19, 54, 13, -4, 41, 52, -7, 0, 58, 43, -9, 27, 6, -36, 30, 14,
410
 
  35, -2, 37, 43, -22, 2, 6, -28, 14, 71, 31, -39, 17, 39, -20, 25,
411
 
  14, -43, 6, 16, -25, -22, -5, -22, -29, -8, -19, -34, 27, 17, -33, -9,
412
 
  -15, -32, -38, 0, -14, -56, 5, 8, -43, 6, 0, -59, -13, -12, -54, -8,
413
 
  51, -7, -28, 27, -9, -35, 6, -3, -30, 9, 13, -5, 29, 22, -25, -14,
414
 
  5, -35, -19, 25, -30, -69, -6, 3, -40, 0, 49, -13, -25, 35, 24, -27,
415
 
  12, 9, -51, 3, -1, -62, -11, 38, -27, -32, 6, -40, -48, 11, 0, -20,
416
 
  19, 11, -35, -38, 2, -5, -27, -16, -19, -29, 10, 19, -36, -41, -28, -59,
417
 
  -51, 11, -3, -43, -8, 3, -33, -51, -3, 4, -26, 1, -19, -52, -8, -5,
418
 
  10, -10, 11, 40, 10, 12, 14, -22, -5, 40, 45, -2, 13, 15, -25, 26,
419
 
  48, 0, 40, 49, -7, 18, 59, 40, 25, 34, 14, -10, 35, 43, 10, 42,
420
 
  38, 11, -5, 29, 26, -24, 5, 21, -14, 33, 41, -42, -25, -7, -43, -11,
421
 
  50, -13, -32, 28, -11, -45, 3, -6, -48, 2, -15, -47, 5, 14, -45, -22,
422
 
  24, -9, -11, 14, -14, -51, -6, 19, -30, -22, 30, -17, -43, 8, 20, -18,
423
 
  6, 35, 6, 19, 15, -26, -4, 49, -16, -12, 53, 3, -48, -1, -11, -59,
424
 
  0, 10, -24, -35, -8, 11, 9, 25, 19, 10, 37, 40, -9, 2, 37, -4,
425
 
  -59, -5, 5, -45, 2, 28, 13, -13, 8, -7, -40, -14, -15, -21, 14, 8,
426
 
  -40, -46, -38, -28, -34, -24, -28, -55, -32, -21, -30, -48, -9, -16, -74, -31,
427
 
  3, -23, 11, 34, -38, -33, 16, -10, 3, 11, -24, -25, 5, 8, -27, 3,
428
 
  16, -21, -15, 30, 27, 7, 10, -11, -14, 26, 38, 12, 8, -6, -44, -27,
429
 
  42, 11, -5, 51, -1, -47, 32, 24, -20, 45, 9, -32, 27, 57, -4, -14,
430
 
  43, 23, 24, 61, 42, 5, 19, 29, 6, -7, 13, -22, -24, 39, 32, 0,
431
 
  -13, 11, 48, 61, 30, -2, 15, 64, 2, -17, 68, 45, -7, 38, 49, -16,
432
 
  24, 55, 27, 18, 17, 35, 44, 48, 16, -9, 32, 63, 32, 20, 54, 22,
433
 
  -25, 32, 29, -20, 25, 40, 19, 16, 49, 55, 30, 24, -13, -21, 29, 28,
434
 
  11, 6, 21, 16, -14, 6, 5, -28, 13, 24, 6, -24, 18, 32, -43, -43,
435
 
  -24, -45, -13, 28, -39, -35, 22, -35, -12, 21, -36, -25, 7, -16, -61, -28,
436
 
  16, -38, -45, 3, -24, -13, 31, -37, -38, 10, -14, 14, 47, 1, -43, -35,
437
 
  -5, -26, -14, 41, -10, -57, 23, 3, -56, 22, -11, -57, -10, 19, -21, -35,
438
 
  12, -27, -29, 15, -13, -21, 8, -19, -16, 26, 14, -44, -49, 6, -13, -21,
439
 
  -35, -62, -26, 18, -14, -46, -9, 35, -21, -53, 16, -1, -24, 5, 11, -14,
440
 
  1, 2, -32, -6, 2, -29, -40, -2, -27, -69, -21, -3, -25, -33, 9, -13,
441
 
  -52, 3, -10, -42, 11, 5, -53, -41, 7, 14, 11, 41, -6, -53, -10, -3,
442
 
  25, 19, 45, 53, 12, 32, 16, -38, 16, 54, 36, 5, 41, 56, 3, 10,
443
 
  37, 10, 14, 59, -15, -27, 56, -12, -10, 59, -11, -22, 50, 28, -15, 7,
444
 
  59, 25, -15, 19, -3, -5, 57, 6, -6, 50, -2, -5, 35, 20, -2, -14,
445
 
  -6, -30, -15, 40, -6, -31, 41, 29, -33, 25, 8, -52, -2, 31, -24, -28,
446
 
  29, -23, -32, 3, -37, -38, 27, 6, -33, 41, 51, -31, -51, 11, 3, -13,
447
 
  14, -29, -57, 6, 2, -51, -8, 27, -18, -24, 28, -24, -50, 5, -12, -46,
448
 
  -8, -6, -51, -19, 21, -4, -38, 21, 27, -32, -5, -12, -30, -4, 36, 14,
449
 
  -18, 12, -27, -49, 28, 42, -40, -50, 11, 0, -48, 16, 37, -26, -34, -41,
450
 
  -24, -42, 6, 5, -22, 13, -7, -58, -32, 8, -24, -55, 11, 33, -18, 0,
451
 
  29, -11, -6, 51, -11, -51, 27, -19, -37, 35, -16, -30, 56, 16, -30, -2,
452
 
  4, 1, 8, 10, -16, -5, 29, -6, -20, 27, -1, 8, 27, -11, -11, -13,
453
 
  22, 16, 7, 30, -35, -54, 11, 32, 8, 44, 52, -9, 10, 51, 19, 14,
454
 
  59, 0, -11, 56, 21, -18, 32, 26, -44, 13, 67, 10, -19, 38, 27, -24,
455
 
  31, 51, -2, 29, 43, -6, 11, 34, -4, -10, 43, 2, -45, 29, 26, -33,
456
 
  20, 48, -7, -16, 8, 23, 5, 29, 37, -11, 39, 35, -22, 4, 31, 14,
457
 
  19, 57, -5, -41, 29, 43, -13, -30, 40, 49, -29, -10, 40, 31, 20, 12,
458
 
  12, -23, 14, 11, 3, 36, 24, -10, -3, 24, -3, -29, 24, 40, -43, -40,
459
 
  16, -35, -32, 38, -8, -31, 21, -16, -22, 27, -16, -27, 44, -5, -50, -1,
460
 
  -17, -36, 7, 3, -55, -19, 19, -19, -37, 6, -26, -16, 32, -3, -19, -19,
461
 
  19, -3, 5, 35, -32, -51, -17, -25, -32, 10, 15, -27, -19, 9, -16, -22,
462
 
  24, -13, -37, 15, -18, -44, 14, 16, -54, -16, 45, -8, -27, 27, 10, -54,
463
 
  -19, 21, -21, -28, -21, -25, -14, 2, -29, -30, 17, -14, -64, -2, 14, -37,
464
 
  -10, -6, -32, -32, -41, -32, -33, -29, -14, -54, -2, 24, -55, -29, 1, -41,
465
 
  -45, 16, -17, -46, 6, -1, -33, -57, 8, 35, -37, -35, -13, -16, 0, 0,
466
 
  -14, -20, -29, -37, -19, 19, 16, -22, 11, 37, -8, -16, 27, 40, -26, -29,
467
 
  45, 3, -13, 41, -13, -2, 53, 10, 11, 40, -7, -11, 56, 7, -36, 25,
468
 
  29, -5, 13, 43, -8, -15, 37, 26, -1, 40, 21, -5, 46, 53, 3, -25,
469
 
  32, -3, 0, 65, 15, -12, 27, -10, -41, 16, 21, -30, -14, 26, -24, -40,
470
 
  17, 8, -15, -5, -39, -48, 19, 26, -49, -22, 37, -30, -42, 38, 27, -53,
471
 
  -31, 11, -19, -18, -6, -24, -15, 20, -24, -6, 54, 26, -20, 18, 19, -26,
472
 
  3, 7, 1, 19, 16, -1, -5, -13, -16, -35, -1, 41, -25, -2, 39, -14,
473
 
  -24, 22, -14, -29, 35, 24, 1, -29, 11, 38, -24, -26, -19, -54, -30, -17,
474
 
  -16, 7, -3, -27, -41, -25, -2, -46, -8, 26, -39, -52, 13, 27, -23, -21,
475
 
  7, -29, -36, 1, -43, -56, -18, -36, -21, 0, -48, -35, 35, -7, -54, -3,
476
 
  9, -22, -17, 9, -17, -45, -21, -16, -21, 18, 10, -24, -3, 9, -19, -26,
477
 
  29, -9, -38, 38, 9, -43, 14, 13, -30, 24, 42, -17, -6, 57, 27, 2,
478
 
  37, 38, 43, 47, -8, -30, 41, 59, -3, 8, 69, 24, -14, 51, 62, -11,
479
 
  3, 59, 45, 36, 46, -3, -3, 61, 17, 10, 59, 54, 18, 37, 34, -8,
480
 
  27, 42, 4, 5, 48, 48, 56, 57, 27, 13, 24, 54, 0, 9, 66, 29,
481
 
  22, 51, 14, -5, 50, 45, 11, 0, 20, 22, 11, 38, 57, 0, 5, 42,
482
 
  35, 41, 54, 40, 13, 9, 43, 4, 12, 52, 16, -21, 30, 48, -10, 13,
483
 
  27, -2, 3, 18, -2, -20, -19, -49, -17, 35, -16, -10, 36, 4, -45, -11,
484
 
  27, -14, -13, 13, -9, -27, -9, -20, -30, -3, -17, -40, -22, -23, -55, -18,
485
 
  34, -14, -49, 16, 9, -49, -17, -13, -56, -3, 13, -52, -21, 35, -4, -33,
486
 
  -24, -33, -8, 23, -15, -61, -11, 6, -22, -3, 32, 0, -43, 10, 27, -34,
487
 
  -26, -3, -2, 14, 8, -38, -27, 19, -20, -44, -9, -1, -40, -10, 8, -25,
488
 
  3, 12, -50, -51, 3, -8, -1, 33, 5, -9, -5, 0, -32, -27, 29, -4,
489
 
  -17, 3, -8, -17, 13, 5, -54, -47, 8, -11, -27, 17, 58, -6, -46, -9,
490
 
  -24, -29, 13, 8, -24, 0, 18, -24, -29, 26, 26, -32, -21, 0, -22, 16,
491
 
  30, 10, 40, 44, 21, 27, 53, -6, -22, 43, 12, 15, 54, 29, -35, -13,
492
 
  55, 23, 14, 52, 30, -3, 32, 24, -5, 26, 14, -3, 36, 48, -10, 11,
493
 
  71, 31, -6, 45, 54, 11, 21, 29, -13, 23, 39, -49, -24, 25, -27, -19,
494
 
  8, -21, -16, 20, 11, -43, -12, -13, -59, -17, 10, -27, -53, -14, 0, -52,
495
 
  -25, -13, -19, 21, 0, -39, -10, 17, -19, -45, -16, -5, -30, 4, -3, -27,
496
 
  32, 45, -32, -34, 9, -27, -39, 11, -18, -27, 22, 19, -19, -36, 2, -19,
497
 
  -19, -14, -42, -32, 21, 33, -32, -52, 16, 14, -51, -23, 25, -15, -57, -48,
498
 
  -8, -38, 9, 22, -48, -19, 24, -23, -67, -18, 13, -27, -25, -29, -54, -27,
499
 
  -16, -52, -10, 12, -31, -27, 37, 1, -53, -20, -41, -37, 18, 19, -49, -41,
500
 
  1, -24, -33, 24, 16, -50, -22, -14, -38, 12, 25, -21, 5, 22, -27, -31,
501
 
  13, -9, -32, 1, 5, -17, -18, -10, -12, 27, 41, -38, -18, 40, -19, 7,
502
 
  54, 29, 22, 51, 37, -27, 15, 24, -48, 2, 44, -8, -10, 33, 50, -1,
503
 
  0, 8, -2, 49, 32, -9, 21, 54, 30, 9, 38, 20, -1, 46, 22, -11,
504
 
  40, 43, -40, -24, 53, 22, -10, 38, 19, -18, 8, 21, 1, -5, 29, -2,
505
 
  15, 39, -3, -16, 30, 61, 10, -25, 25, 51, -18, -3, 41, 13, 15, 17,
506
 
  32, -6, 24, 56, 11, 8, 65, 29, -29, 19, 38, 17, 41, 43, 14, 20,
507
 
  24, -39, -6, 49, 12, -25, 24, 26, -3, 13, -18, -20, 24, 35, -25, -21,
508
 
  3, -13, -29, 20, 40, -25, -14, 12, -13, 3, 27, -34, -24, 14, -26, -28,
509
 
  -6, -35, -43, -14, -19, -25, -14, -41, -50, -3, 12, -39, -30, 27, -33, -32,
510
 
  5, -32, -45, 11, 17, -54, -21, 2, -59, -17, 45, -21, -37, 25, 32, -22,
511
 
  -25, -16, -39, 10, 8, -35, -3, 24, -16, -17, 30, -15, -48, 9, -3, -32,
512
 
  32, 40, -36, -27, 25, -13, -27, 16, 1, -6, -2, -25, -51, -19, 38, -14,
513
 
  -11, 44, 7, -37, 7, 41, -15, -35, 13, 33, -29, -13, 28, -12, 22, 30,
514
 
  4, -12, -10, -20, -25, -19, 44, 11, -46, 21, 25, -9, 20, 28, 13, 41,
515
 
  58, 0, 5, 35, 17, -13, 11, 28, 34, 51, 4, -5, 43, 48, 11, 28,
516
 
  40, 6, -7, 22, 51, 40, 33, 35, 24, 27, 55, 9, 2, 49, 23, 30,
517
 
  56, 36, 27, 48, 31, 11, 49, 20, -5, 34, 45, 14, 2, 45, -6, -7,
518
 
  41, 0, -45, 8, 38, -21, 10, 46, 5, 2, 46, -1, -51, 9, 30, -9,
519
 
  1, 33, -8, -1, 0, -56, -19, 37, -5, -15, 37, -4, -41, 11, 3, -33,
520
 
  35, 53, -12, -8, 28, -29, -48, 14, 3, 13, 55, 34, -38, -33, 33, -12,
521
 
  -29, 29, 20, -31, 7, 59, 5, -35, 8, 32, -25, 2, 47, -8, 8, 4,
522
 
  -11, -8, 14, -35, -56, -37, 31, -1, -47, 1, -8, -56, -16, -5, -58, -16,
523
 
  13, -34, -16, -6, -35, -51, -47, -40, -29, 12, -22, -61, -17, -14, -35, -8,
524
 
  30, -23, -39, -13, -29, -16, -11, -34, -46, -33, 3, -1, 0, 8, -35, -30,
525
 
  -1, 7, 11, 27, -3, -27, 28, 12, -8, 35, 38, 19, 19, 56, 28, 14,
526
 
  62, 53, 5, 30, 64, 19, 18, 22, 7, 23, 61, 30, -38, 7, 39, -5,
527
 
  -25, 8, 21, 39, 37, -43, -29, 43, 11, -5, 51, 7, -48, 12, 30, -6,
528
 
  26, 15, -46, -19, 62, 29, -24, 22, 7, -5, 20, 21, -19, -25, 18, -20,
529
 
  -24, 31, 31, -11, 5, 36, 2, -40, 13, 49, -7, -14, 3, -5, 22, 5,
530
 
  8, 6, 64, 48, 5, 0, 45, -5, -38, 22, 27, -21, 11, 53, -15, -5,
531
 
  11, -57, -13, 44, 13, -1, 2, -13, -37, 13, 27, -40, -35, -17, -37, -42,
532
 
  27, 14, -22, -6, -42, -40, -9, -13, -35, -37, -37, -56, -12, 11, -44, -48,
533
 
  -40, -48, -36, -6, -37, -54, 3, -16, -58, -11, -16, -54, -36, -18, -30, -45,
534
 
  -19, -11, -15, -5, -7, -29, -7, -21, -61, -21, 16, 5, -49, -31, 8, -22,
535
 
  -59, -65, -41, 20, 33, -51, -49, 10, -30, -46, 15, -8, -57, -24, -23, -49,
536
 
  8, 14, -59, -45, 16, -3, -46, -27, -45, -12, 24, -7, -38, -27, 13, -39,
537
 
  -63, -19, -25, -48, -19, 11, -17, -56, -8, 8, -27, -32, -62, -58, 1, -24,
538
 
  -13, -25, 27, 38, -13, -18, 43, -4, -64, -7, 31, 6, 5, 33, 4, 21,
539
 
  54, -22, -17, 45, 23, 13, 46, 43, 4, 26, 59, 34, 29, 28, 8, -8,
540
 
  27, 48, 35, 44, 37, 27, 43, 58, 35, 21, 19, -31, 3, 68, 26, 22,
541
 
  37, -4, -2, 46, -2, -32, 27, 8, -53, 5, 28, -38, -40, -21, -31, -26,
542
 
  -3, -30, -16, 5, -24, -41, 15, 29, -36, -10, 5, -5, -15, 5, 44, 18,
543
 
  5, -13, -61, 3, 47, -40, -32, 27, -24, -33, 35, 16, -27, 12, 14, -26,
544
 
  27, 44, -27, -8, 27, -8, -17, 19, -10, 9, 65, 43, 3, 0, 40, -5,
545
 
  -40, 2, -14, -32, 2, 47, 18, -41, 7, 23, 0, 30, 0, -32, 26, 8,
546
 
  -13, -42, 0, 32, 3, -10, 25, 13, -19, -8, -21, -35, -6, 3, -36, -5,
547
 
  41, -19, -24, 24, 0, -47, -8, -2, -37, 0, 5, -2, 38, 26, -28, -32,
548
 
  -6, 2, 13, 9, -10, -8, 13, 15, -5, -5, 29, -13, -22, 36, -3, -3,
549
 
  65, 19, -21, 29, -8, -47, 21, 32, -32, 0, 43, 19, 20, 39, 31, 32,
550
 
  53, 11, 13, 56, 18, -35, -2, 11, -40, 13, 49, 13, -18, 10, 66, 6,
551
 
  0, 46, -30, -5, 60, -23, -14, 57, -3, -27, 41, 11, -48, 4, 19, -11,
552
 
  40, 40, -22, 13, 59, 10, -8, 41, 16, 10, 48, 33, 5, 12, 51, 16,
553
 
  -13, 43, 11, -27, 7, 48, 17, -35, 24, 51, 3, 25, 37, -7, 19, 22,
554
 
  37, -4, 12, 32, 21, 34, 39, -8, -2, 47, 18, -36, 3, 48, -21, -21,
555
 
  41, 1, -6, 39, 37, -11, 19, 8, -39, 21, 13, -27, 3, 35, -20, -45,
556
 
  8, 3, 8, 12, -42, -67, -5, 22, 0, 3, 35, -3, -36, 16, -17, -37,
557
 
  48, 19, -27, 17, 3, -35, 5, 24, -25, -2, 6, -11, 22, 16, -27, -16,
558
 
  16, -16, -34, 34, 24, -49, -24, -3, -49, -21, 21, -6, -54, -30, 33, -21,
559
 
  -30, 46, -2, -29, 19, -33, -27, 57, 3, -38, 20, 4, -34, 4, -16, -50,
560
 
  9, 0, -45, -3, 47, -11, -57, -8, -24, -30, 24, 4, -46, -15, 43, 2,
561
 
  -48, 10, 11, -56, -32, 36, 9, -32, 13, 29, -39, -35, 22, -20, -40, -18,
562
 
  -12, -28, -16, -27, -56, 6, 50, -30, -43, 15, 9, -43, -22, 44, -6, -48,
563
 
  -2, -14, -25, 5, -5, -24, 16, -1, -40, 18, 10, -8, 5, 35, 25, -12,
564
 
  19, -2, 13, 69, 47, -37, -17, 33, -3, 0, 51, 33, 1, 29, -6, -46,
565
 
  27, 41, 21, 48, 29, 5, 31, 43, 8, 35, 22, -33, 11, 40, -34, -43,
566
 
  18, -3, -43, 24, 50, -6, 15, 46, 8, 0, 33, 19, -39, -8, 46, 5,
567
 
  -7, 42, 38, 17, 30, -27, -40, 49, 24, -5, 48, 5, -16, 51, 35, -5,
568
 
  32, 13, -55, -19, 57, 26, -18, 20, -10, -38, 27, 29, -43, -16, 52, 35,
569
 
  -3, 15, 46, -2, -15, 46, 20, -32, 10, 54, -4, -30, 32, 18, -18, 2,
570
 
  -4, -9, 16, 12, -36, -2, 36, -28, -24, 21, 0, -34, -11, 32, 10, -29,
571
 
  -37, -51, -34, 5, -37, -57, -16, -34, -70, -9, -16, -45, -8, -10, -29, -41,
572
 
  -19, -50, -41, 13, 22, -22, -42, -3, -44, -41, 5, -15, -8, 8, -29, -70,
573
 
  -23, 3, -9, 19, -16, -35, 8, 16, -11, 19, 19, -38, -24, 41, 16, -42,
574
 
  14, 22, -22, 24, 45, 8, 18, 31, -10, -7, 54, 49, -16, 6, 40, -12,
575
 
  -32, 1, 3, 19, 51, -17, -48, 27, 23, -13, 43, -3, -51, 18, 25, -13,
576
 
  16, 38, -38, -32, 24, 1, -13, 27, -5, -40, 16, 28, -39, -38, 9, -7,
577
 
  -4, -3, 2, -2, -3, 20, -8, -54, -28, 25, -10, -26, 18, 2, -8, 6,
578
 
  9, 5, 38, 48, 3, 22, 46, -2, 8, 56, 26, -19, 16, 47, 35, 43,
579
 
  31, -8, 6, 59, 43, 12, 34, 27, -23, 17, 30, -29, 0, 13, -16, -20,
580
 
  14, 0, -7, 18, 0, -14, -3, 34, 0, -4, 19, -30, -1, 53, 27, -29,
581
 
  -10, -14, -38, 27, -6, -58, -11, -10, -57, -9, 17, -37, -56, -17, 5, -45,
582
 
  -22, -11, -52, -27, -16, -46, -37, -15, -54, -47, 0, -8, -24, 2, 20, -32,
583
 
  -51, 3, -32, -38, 25, -23, -53, 0, -3, -47, 11, 2, -69, -21, 4, -43,
584
 
  -15, 35, -31, -20, 8, -33, -43, 9, -5, -33, 8, 8, -35, -45, -17, -46,
585
 
  -24, 10, -22, -42, -7, 26, -3, -34, -18, 3, -45, -32, 8, -45, -49, -35,
586
 
  -38, -46, -15, 3, -34, 5, 16, -32, -32, 15, -2, -52, -14, 2, -27, 16,
587
 
  24, -21, -8, 25, 29, 13, 34, 30, -3, 23, 34, 0, 18, 49, 29, 16,
588
 
  30, 13, 21, 66, 32, -5, 19, 30, 6, 20, 58, 4, -6, 51, 32, -13,
589
 
  35, 21, -34, 39, 46, -12, 21, 44, -16, 10, 58, 13, -2, 31, 43, 2,
590
 
  11, 36, 15, 10, 3, -6, 14, 39, -26, -21, 33, -21, -48, 2, 59, 25,
591
 
  -8, 40, 16, -10, 42, -4, -41, 24, 11, -27, 32, 29, -33, 11, 38, -22,
592
 
  3, 33, -34, -2, 51, 19, -16, 23, 26, 3, 44, 45, 22, 24, 39, 10,
593
 
  -16, 27, 37, -19, 0, 50, 27, 3, 30, 52, -16, -8, 56, 19, 8, 13,
594
 
  18, -8, -1, 11, -50, -9, 24, -27, -31, 0, -13, -58, -32, -14, -61, -22,
595
 
  -2, -59, -40, -6, -24, -56, -17, -21, -40, -6, -15, -41, -31, 15, -19, -30,
596
 
  -15, -50, -45, 31, 13, -43, -21, -33, -54, -40, 11, -19, -43, -2, -28, -61,
597
 
  11, 11, -51, -5, 10, -33, -6, 21, -21, 1, 42, -8, -17, 40, 45, 10,
598
 
  13, 16, 19, 34, 14, 10, 27, 46, -22, -30, 46, 2, -60, -24, 25, -11,
599
 
  -20, 8, 4, 5, 32, -14, -59, 19, 1, -30, 18, -8, -46, 15, 43, -21,
600
 
  6, 16, -52, -35, 10, -7, -30, 3, 1, -35, 13, 36, -1, 15, 17, -7,
601
 
  -46, -42, 27, -16, -23, 20, -21, -43, 3, 46, -16, -17, 38, 8, 3, 29,
602
 
  22, 5, 12, 48, -7, 10, 61, 22, 21, 47, 35, 19, 32, 44, -13, 5,
603
 
  54, 12, 2, 30, 14, -36, 6, 21, 5, 21, 2, -21, -14, 28, -29, -27,
604
 
  24, -13, -40, 19, 32, -9, 14, 1, -32, -46, -5, -10, -2, 29, -18, -44,
605
 
  15, 10, -51, -9, -1, -49, -18, -1, -51, -4, 37, -32, -72, -8, -3, -38,
606
 
  -3, -31, -43, -2, -28, -49, -21, 6, -33, -33, 25, 2, -52, -17, 16, -41,
607
 
  -39, -1, -27, -17, 23, -15, -53, -5, -24, -28, 22, -13, -54, -2, 22, -27,
608
 
  22, 27, -35, -21, -3, -37, -55, -2, 5, -62, -31, 18, -44, -26, 18, 0,
609
 
  -25, -53, 17, 3, -18, 21, -22, -53, -8, 32, -37, -44, 10, -22, -43, -10,
610
 
  -41, -43, -43, -10, -26, -14, 11, -21, -16, 34, 27, 10, 26, 55, -3, -16,
611
 
  19, 6, 16, 46, 30, -34, -19, -4, 14, 51, 40, 10, 18, 57, -6, -9,
612
 
  47, 35, -2, -3, 24, 28, 46, 59, 43, 22, 34, 8, 14, 40, -6, -13,
613
 
  50, 48, -6, 30, 54, 6, 29, 52, -2, 21, 59, 5, -62, -15, 24, -8,
614
 
  27, 24, 8, 44, 30, -16, 16, 47, -17, -11, 55, 16, -29, 20, 59, 20,
615
 
  1, 40, 23, 10, 56, 23, -5, 37, 21, 16, 61, 44, -1, 25, 36, -9,
616
 
  38, 59, 16, 38, 64, 12, -20, 40, 69, 5, 2, 59, 15, 6, 64, 55,
617
 
  19, -11, 33, 36, 21, 48, 26, -5, 20, 64, 12, -8, 43, 29, 3, 12,
618
 
  -11, -8, -38, -42, -57, -51, 0, -2, -53, -24, 9, -32, -56, 14, -11, -41,
619
 
  -12, -39, -35, 24, 20, -45, -51, -45, -41, 0, 21, -30, -39, 26, 7, -32,
620
 
  -14, 3, -16, -61, -54, -36, -37, -15, -13, -22, 8, -8, -21, -1, -44, -56,
621
 
  9, 21, -17, 14, 30, -21, -24, 3, -16, -13, 38, 48, -20, -45, 6, 24,
622
 
  15, 3, -9, 19, 57, 8, -5, 54, -5, -40, 24, 0, -43, -8, 19, -8,
623
 
  -30, -3, 13, 7, 57, 28, -34, -3, 7, -16, 10, 11, -30, -3, 8, -27,
624
 
  -3, 27, -13, -17, 39, 31, -10, 10, 30, 0, -16, 8, -11, -32, -3, 11,
625
 
  -11, -16, 14, 8, 10, 19, -18, -27, 6, 27, -1, -6, 4, -19, -18, -21,
626
 
  -3, 18, -8, 10, 13, -22, 4, 46, -11, -28, 43, 43, -18, 24, 30, -4,
627
 
  37, 21, -23, 25, 64, 37, 21, 26, -10, -16, 38, 13, -38, -3, 28, -26,
628
 
  -30, 22, 25, 0, -2, -3, -26, -16, -14, -39, 8, 32, 16, 33, 2, -50,
629
 
  -9, 10, -49, -19, 25, -11, -37, -24, -24, -50, -8, 51, 19, -51, -37, 0,
630
 
  -13, 0, -21, -30, 32, 22, -46, -1, 23, -16, 1, 16, -9, -29, -19, -35,
631
 
  -56, -40, -19, -29, 28, 42, -34, -54, -39, -55, -19, 18, -37, -42, -16, -38,
632
 
  -49, 5, -8, -64, -49, -9, -14, -45, -20, -15, -38, -27, -25, -48, -35, -8,
633
 
  -48, -62, -11, -21, -29, 8, -30, -62, -9, -2, -52, -22, -3, -51, -43, -35,
634
 
  -9, 13, -18, -10, 6, -24, -25, 25, 8, -47, -11, 17, -9, 17, 29, -21,
635
 
  12, 33, -15, 0, 42, 21, 10, 31, -4, -29, 32, 55, -6, -21, 30, -19,
636
 
  -27, 40, 37, 32, 56, 51, 18, 31, 41, 11, 36, 49, 15, 39, 56, 5,
637
 
  5, 42, -27, -33, 45, 40, 8, 25, 52, -17, -25, 46, 50, 2, 5, 19,
638
 
  -8, 29, 30, -14, 15, 56, 10, -3, 44, 30, -6, 23, 35, 14, 30, 45,
639
 
  24, 12, 21, -2, 23, 62, 46, 30, 30, -4, 0, 59, 41, 8, 32, 32,
640
 
  -8, 33, 62, 16, -18, 5, 32, -22, -2, 51, 30, 33, 51, 2, -6, 43,
641
 
  4, -46, 6, 30, 5, 48, 27, -40, 11, 48, -24, 1, 61, 26, 17, 32,
642
 
  40, 48, 21, 6, 16, -3, -9, 19, 6, -51, -38, -18, -43, -7, 21, -51,
643
 
  -33, 24, -23, -36, 16, -24, -50, -10, -35, -64, -16, 30, -15, -33, 18, -26,
644
 
  -62, -12, -8, -16, 16, 8, -36, -35, -32, -34, 11, 10, -49, -32, 20, 10,
645
 
  -24, -3, -30, -57, 10, 20, -27, -6, 48, -19, -48, 25, 21, -15, 6, 7,
646
 
  -38, -21, 16, -22, -19, 21, 5, -2, 10, -14, -35, 10, 14, -21, 2, 35,
647
 
  11, -4, 1, -31, -32, 12, 18, 24, 29, -20, -40, 16, 35, -4, -6, 4,
648
 
  -14, 5, 46, 29, -9, -2, 29, -21, -43, 19, 33, 22, 57, 16, -10, 48,
649
 
  27, -29, -2, 32, -3, 13, 11, -38, 6, 55, -9, -27, 34, 29, 16, 35,
650
 
  42, 50, 45, 38, 53, 32, 17, 44, 53, 18, 18, 27, -11, 8, 58, -8,
651
 
  -25, 43, 15, -18, 45, 22, -10, 38, 27, -21, -8, 43, 19, 5, 52, 42,
652
 
  -15, -22, -33, -33, 29, 23, -5, 1, -35, -50, 18, 45, -19, -33, -13, -9,
653
 
  -6, 19, 10, -27, 15, 28, -42, -26, 40, -5, -67, -11, 3, -38, 1, 16,
654
 
  -40, -40, 22, -7, -9, 7, -32, 3, 19, -38, -49, 20, 27, -30, -31, 8,
655
 
  -29, -35, 13, -18, -43, 0, -24, -35, 10, -16, -30, -2, -3, -40, -27, -27,
656
 
  -55, -36, 16, 11, -42, -35, 7, -15, -63, -35, -11, -32, 14, -4, -38, 16,
657
 
  3, -47, -27, -10, -34, -11, -6, -50, -14, 34, -6, -48, -6, -8, -37, -7,
658
 
  -13, -6, -24, -24, -3, -21, -22, 31, 48, 25, 29, 10, -38, -21, 34, 19,
659
 
  -6, 17, -14, -32, 31, 36, 6, 23, 29, -10, -8, 48, 30, 8, 37, 50,
660
 
  38, 39, 10, -20, 42, 24, 5, 46, 16, -16, 17, 54, 20, 16, 23, -2,
661
 
  13, 43, 15, -18, 34, 60, 5, 7, 59, 43, -35, -9, 39, 3, 28, 66,
662
 
  14, -13, 36, 22, 25, 42, 0, 31, 74, 19, -26, 27, 52, 13, 7, 48,
663
 
  21, -1, 46, 32, 0, 41, 27, 5, 46, 22, 0, 33, 47, 11, 30, 43,
664
 
  -21, -38, 24, 59, 27, 14, 51, 51, -7, 0, 24, -8, 24, 4, -35, 23,
665
 
  24, -16, 16, 39, 29, 22, 9, -41, -24, 45, 37, -4, 8, -9, -42, 0,
666
 
  -8, 12, -30, -57, -21, -23, -43, -3, -17, -48, 9, 16, -53, -56, -35, -35,
667
 
  -11, 23, -36, -64, -9, -2, -31, -35, -10, -39, -44, 7, -23, -39, -2, -16,
668
 
  -24, 13, 1, -42, 15, 2, -48, -24, -37, -49, -22, -5, -31, 13, 41, -19,
669
 
  -45, 0, -24, -51, 2, 11, -21, -27, 18, 31, -17, -7, 16, -12, -14, 6,
670
 
  -6, -18, -16, -35, -14, 19, -18, -18, 41, 38, -2, 8, 20, -26, -32, 18,
671
 
  11, -10, 0, -22, -24, 10, 6, 3, 25, -5, -32, 18, 41, -8, -15, 43,
672
 
  -3, -43, 11, 37, 20, 8, 30, 23, -13, 6, 29, -9, 24, 21, -19, 32,
673
 
  30, -2, 23, 38, 49, 30, 26, -16, -42, 22, 14, 0, 36, 17, -24, 0,
674
 
  18, 55, 44, 3, 23, 20, -25, 15, 16, -35, 17, 48, -7, -3, 0, -48,
675
 
  -19, 57, 6, -39, -9, -3, -27, -19, 30, -18, -39, 24, -26, -53, 21, -5,
676
 
  -41, 2, 5, -35, 6, 32, 12, 22, 5, -33, -15, -5, -66, -33, 18, -12,
677
 
  -37, 19, -5, -36, 7, -15, -42, -36, 16, 4, -38, -18, -10, -32, -45, -41,
678
 
  -42, -12, -16, -67, -56, 17, -10, -59, -23, -21, -50, -38, 7, -26, -64, -37,
679
 
  -40, -44, -16, -42, -37, -19, -58, -55, 5, 4, -43, -13, 1, -34, -50, 22,
680
 
  -3, -54, -16, -25, -50, -54, -24, -35, -55, -29, -10, -49, -32, -19, -60, -35,
681
 
  -32, -56, -40, -38, -13, -13, 3, -6, -69, -16, -26, -57, -8, -5, -45, -27,
682
 
  -8, 13, 2, 4, 18, -7, -48, 5, 32, -29, 15, 54, -8, 0, 48, -14,
683
 
  -26, 40, 2, -27, 19, 44, -11, -32, 46, 2, -41, 49, 3, -52, 37, 33,
684
 
  -15, 25, 40, 14, 22, 20, 11, 41, 56, 11, 26, 44, -24, -21, 32, 16,
685
 
  -6, 50, 19, -21, 36, 40, 5, 2, 51, 14, -29, 0, 27, 29, 13, 16,
686
 
  4, 37, 59, 8, -24, 38, 43, -12, 11, 11, -34, -25, 41, 31, -3, 24,
687
 
  26, 3, 29, 16, 14, 43, 1, -27, 19, 27, -25, 16, 51, 27, -5, 39,
688
 
  32, -7, 29, 7, -28, -14, 21, -8, -26, 8, 27, 12, 9, 13, -16, -14,
689
 
  -4, -22, -5, -10, 2, 4, 12, 32, -21, 21, 35, -29, -22, -3, -31, 0,
690
 
  -5, 23, -30, -19, 14, -8, -32, 3, 24, -53, -31, 35, -19, -35, 35, -9,
691
 
  -21, 37, -3, -44, -8, 51, -2, -45, 30, 7, -46, 31, 2, -59, 6, 6,
692
 
  -46, -11, 5, -25, 0, -13, -53, -18, 11, -22, 14, 59, -8, -38, 16, -10,
693
 
  -42, 21, 5, -49, -10, 13, -26, -13, 31, -2, -24, -11, 4, 11, 11, 14,
694
 
  -18, 0, 39, 13, -24, 7, 17, -7, 35, 46, -20, -24, 30, 7, -2, 32,
695
 
  21, -11, 0, 2, 0, 47, 41, 5, 9, 5, -34, -8, 35, 11, -14, 18,
696
 
  5, -13, 50, 51, -11, 14, 51, -10, -27, 22, 37, 27, 38, 45, 27, 36,
697
 
  24, -7, 32, 27, 11, 27, 37, 33, 4, 30, 43, 16, 29, 40, 3, 23,
698
 
  16, 53, 11, 11, 54, 22, -13, 19, 69, 11, -19, 39, 22, -5, 44, 19,
699
 
  6, 63, 36, -29, -20, 51, 12, -22, 40, 26, -8, 43, 31, -18, 22, 27,
700
 
  -27, -4, 32, -22, 0, 29, -16, 2, 8, -46, -11, 50, 17, -22, 21, 5,
701
 
  -41, 14, 29, -10, 5, 11, -48, -18, 16, -29, -38, -29, -24, -53, -40, 3,
702
 
  -33, -59, -13, -21, -59, -28, -29, -46, 13, 50, -30, -43, 27, -16, -28, 14,
703
 
  -11, -51, -29, -21, -40, -5, 11, 5, 4, -1, -19, -31, 5, -14, -46, 3,
704
 
  -6, -40, 18, 48, -29, -11, 49, -2, -52, -27, 14, -5, 2, 11, -22, 20,
705
 
  12, -57, -21, -2, -37, -18, 24, -14, -42, 14, -2, -35, 5, 16, -31, -12,
706
 
  1, 22, -11, -25, 29, 5, -49, -17, 35, 10, -8, 25, -2, -19, 19, 2,
707
 
  -21, 24, 19, -32, -23, 21, -11, -24, 14, -17, -20, 33, 31, -11, 15, 43,
708
 
  -13, -16, 38, 7, 10, 27, -7, 30, 41, -17, 1, 40, 20, 9, 46, 34,
709
 
  -19, 15, 38, 24, 45, 54, -17, 8, 45, -7, -19, 12, 46, -7, -13, 48,
710
 
  41, -2, 30, 51, 16, 29, 19, -20, 9, 71, 11, -35, 35, -2, -21, 54,
711
 
  53, 3, 19, 25, -10, -1, 16, 34, 40, 27, 10, -3, 35, 34, -12, 24,
712
 
  28, -11, 18, 51, -1, -3, 48, 38, 0, -11, 24, 14, 20, 27, -18, 25,
713
 
  64, -5, -10, 25, -9, -20, 40, 19, -23, 37, 29, -40, -11, 32, -29, -14,
714
 
  -22, 11, -15, -35, 13, 4, -46, -11, 16, -35, -51, -2, -32, -49, 9, -11,
715
 
  -42, -6, -10, -33, 0, 11, -41, -35, 11, -41, -64, -13, -5, -46, -43, 8,
716
 
  -32, -38, 7, -30, -13, -10, -56, -6, 33, -18, -11, 14, -39, -42, 16, 10,
717
 
  -32, -24, -33, -36, 15, 32, -28, 0, 63, 17, -34, -5, 43, -3, -16, 19,
718
 
  8, -4, 24, 33, 19, 14, -1, -30, -29, 15, -4, -43, 19, -9, -54, 18,
719
 
  34, -13, -4, 0, -23, -13, -15, -22, -3, 13, -19, -24, -5, -13, -27, 4,
720
 
  2, -32, 2, 10, -31, -29, -3, -13, -10, -3, -19, -35, 0, 11, -21, -3,
721
 
  26, 4, -16, -8, -32, -32, 22, 22, -6, 30, 40, -20, -16, 39, -19, -8,
722
 
  -13, 25, 3, -6, 40, 39, -11, 20, 59, 7, -46, 16, 23, -19, 35, 38,
723
 
  17, 40, 27, 1, 37, 61, 8, -5, 54, 35, -21, 7, 37, 2, -10, 42,
724
 
  14, 5, 40, -8, 12, 45, -5, -10, 20, -24, -18, 40, -13, -34, 25, 18,
725
 
  -13, 14, -19, -55, 8, 27, -35, -15, 62, 38, -32, -11, 26, -30, -54, -2,
726
 
  -20, -40, -7, -29, -38, -23, -25, -48, -33, 7, -17, -45, 27, 17, -51, -4,
727
 
  16, -35, -15, -5, -30, -18, -21, -42, -26, 4, -35, -13, 17, -24, -49, -1,
728
 
  13, -49, -30, -19, -55, -40, -8, -45, -62, -4, -3, -61, -27, -12, -35, -14,
729
 
  -25, -36, -30, -21, -41, -35, -11, -36, -54, -5, 17, -41, -27, 17, -35, -4,
730
 
  -10, 1, -10, -27, 0, 0, -43, -19, 36, 22, -30, -13, -9, -40, 0, 4,
731
 
  -8, 22, 3, -35, -11, 40, 21, -7, 22, 17, -11, 14, 45, 13, 6, 27,
732
 
  -4, -11, 22, -8, -3, 34, -3, -6, 40, 2, -9, 53, 15, -38, 12, 23,
733
 
  -4, 37, 13, -58, 2, 52, -4, -8, 53, 51, -15, 0, 54, 24, -32, 15,
734
 
  24, -3, 37, 32, 21, 36, 51, 29, 26, 59, 24, -22, 33, 43, -18, 12,
735
 
  48, 8, 16, 32, 14, 32, 33, 8, 19, 43, -3, 1, 55, 44, 0, 14,
736
 
  50, 19, 17, 41, 30, 25, 48, 31, -9, 27, 67, 16, 17, 30, 16, 46,
737
 
  38, 13, 23, 43, 16, 13, 36, 15, -23, 10, 35, -28, 3, 57, 2, 22,
738
 
  -8, -18, 2, -22, -7, -18, -44, -21, 22, -3, -35, -3, -11, -53, -32, -38,
739
 
  -64, -10, -2, -59, -59, 3, -14, -47, -4, -26, -64, -34, -6, -46, -34, -14,
740
 
  -51, -62, -24, -42, -37, 4, -51, -45, 19, -19, -46, -6, -14, -59, -27, -10,
741
 
  -39, 4, 5, -59, -49, -8, -35, -33, 5, 9, -40, -49, 20, 32, -30, -24,
742
 
  -17, -40, -10, 9, -1, 10, 22, 0, -6, 16, -6, -35, 6, 4, -46, -30,
743
 
  15, -5, -27, -24, -29, -6, 3, -29, -7, 21, -22, -49, -21, 14, -5, -8,
744
 
  5, -1, 7, 15, 4, 9, 23, 2, -31, -32, 14, 10, 1, 8, -9, 21,
745
 
  37, 0, -1, 14, -16, -19, 19, 22, -15, 3, 14, -41, -20, 24, -17, -5,
746
 
  32, 19, 24, -5, 40, 39, 0, 11, 59, 37, -18, 27, 62, 37, 38, 11,
747
 
  -36, 14, 61, -8, -47, 25, 27, -12, 38, 38, -19, -4, 24, -18, 3, 36,
748
 
  12, -11, 16, -20, -22, 47, 1, -14, 33, 1, -14, 28, 39, 6, 14, 20,
749
 
  -8, 34, 43, 8, -9, -16, -48, -40, -18, -19, -29, -48, 7, 21, -36, -16,
750
 
  0, -27, -38, -32, -55, -27, 4, -43, -33, -3, -37, -56, 4, 6, -49, -51,
751
 
  -6, -13, -27, -8, -25, -29, -14, -51, -22, 20, -7, -22, -24, 0, -25, -14,
752
 
  13, -27, -19, -2, -39, -33, -11, -29, -39, -55, -18, -11, -43, -34, -48, -25,
753
 
  -3, -55, -51, 4, -9, -51, -30, -12, -32, -5, 0, -42, -27, 7, -43, -27,
754
 
  16, 26, 18, -38, -5, 29, -16, -38, 14, 35, -10, -4, 8, 14, 49, 20,
755
 
  -31, 2, 47, -9, -37, 16, 29, 0, 27, 58, 24, 33, 55, 26, 34, 51,
756
 
  24, 13, 55, 22, 1, 44, 21, 10, 47, 33, 11, 37, 30, 13, 37, 42,
757
 
  15, 35, 43, 32, 51, 61, 17, 19, 44, 8, -11, -11, 36, 62, 16, 30,
758
 
  56, 50, 40, 41, 3, 8, 61, 3, 2, 61, 10, -34, 35, 64, 17, 0,
759
 
  39, 31, 20, 52, 41, 38, 53, 6, 11, 58, 38, 19, 15, 43, 24, 18,
760
 
  48, 17, 28, 54, 27, 29, 48, 48, 46, 8, 18, 46, 30, 25, 8, 22,
761
 
  54, 9, -16, 33, 59, 20, 19, 42, 35, 51, 49, 16, 21, 66, 21, 21,
762
 
  -15, 12, 29, -45, -56, 15, 11, -43, -18, -11, -47, -18, -31, -56, -1, -9,
763
 
  -51, -3, 46, -27, -36, 1, -6, -30, -22, -5, -25, -3, -8, -39, -38, -11,
764
 
  -35, -46, 14, 9, -5, 13, -21, -32, -4, -14, -34, -11, -39, -55, -3, 3,
765
 
  -28, -16, 2, -28, -12, 19, -16, -8, 59, 32, -42, -32, 18, 23, -11, -13,
766
 
  -6, 5, 30, 34, -7, -13, 49, -2, -24, 53, 12, -31, 23, 23, -11, -1,
767
 
  30, 8, -11, 15, 1, 5, 24, -11, -35, 0, -15, -32, -3, 15, 7, 10,
768
 
  -5, -39, -9, 5, -12, -7, 17, 22, 8, 6, -11, -15, 11, 8, -21, 1,
769
 
  48, 13, -25, 0, 24, 3, 0, 1, -11, 9, 27, -1, -28, 5, 8, 14,
770
 
  -5, 17, 59, 11, -17, 28, 43, -14, 13, 24, -35, 10, 24, -28, 18, 23,
771
 
  -24, 11, 69, -6, -34, 24, 17, -16, 0, 2, -27, 11, 10, -18, -10, 25,
772
 
  15, -16, 4, -16, -23, 26, -5, -32, 13, 1, -11, 35, 5, -57, -26, -8,
773
 
  -40, -17, 21, -29, -25, 14, -33, -56, 19, 56, -22, -41, 3, -13, -52, -33,
774
 
  -35, -51, -8, 9, -33, -32, 19, -32, -35, 22, -27, -64, -5, -3, -59, -30,
775
 
  5, -35, -47, -5, -29, -48, -19, -23, -43, 0, -8, -45, -24, -38, -54, -18,
776
 
  -14, -59, -26, -4, -35, -65, -39, -3, -34, 3, 22, -38, -43, -8, -38, -45,
777
 
  0, -29, -59, -24, -10, -47, -38, -30, -63, -56, -11, -16, -54, -46, -43, -32,
778
 
  7, 11, 41, 1, -22, 12, 24, -30, -14, 21, -16, 23, 46, -24, 8, 32,
779
 
  -29, -19, 38, -12, -59, 11, 14, -35, 8, 19, -25, 16, 46, 9, 9, 34,
780
 
  13, -5, 15, -8, -39, 21, 19, -24, 15, 8, -11, 42, 49, 1, 22, 24,
781
 
  -24, -7, 41, 5, -6, 56, 13, -43, 1, 40, -15, -46, 19, 44, 0, 16,
782
 
  13, -44, -6, 43, -2, 8, 50, -17, -6, 51, 7, -60, -14, 32, -27, -11,
783
 
  38, 1, -21, 30, 26, 6, 32, 35, 11, 37, 37, 16, 32, 23, 11, 28,
784
 
  43, -17, -10, 52, 49, 5, -3, 33, 7, 17, 69, 51, 18, 45, 27, 4,
785
 
  43, 32, -3, 18, 43, 17, 29, 39, 4, -9, 37, 57, 32, 29, 16, 18,
786
 
  1, -5, 16, 2, -45, -6, 43, 16, 1, -11, -33, 16, 61, -3, -6, 30,
787
 
  -29, -28, 35, 11, -35, 13, 10, -58, -10, 19, -32, -14, 26, -33, -43, 1,
788
 
  -21, -37, 2, 4, -51, -14, -2, -47, -29, -41, -55, -5, 3, -19, 35, 43,
789
 
  -25, -23, 17, -12, -42, 32, 16, -57, -11, 13, -27, -56, -3, 40, -6, 13,
790
 
  24, -50, -47, -5, -30, -22, 27, -19, -42, 10, 22, -25, -11, 15, -35, -39,
791
 
  13, -3, -36, -11, -13, -11, 16, 5, -20, -5, -13, -16, 10, 24, 11, 1,
792
 
  30, -17, -52, -4, 5, -2, 0, -9, -35, -36, -7, 10, 0, 0, -15, -13,
793
 
  30, 20, -19, 4, 22, 2, 24, 45, 8, -1, 31, 24, 1, 8, 22, 31,
794
 
  -16, -14, 4, 26, -24, -13, 16, 22, 56, 29, -15, 5, 45, 8, -2, 53,
795
 
  21, 1, 45, 34, -6, 34, 36, -30, 5, 42, 4, 7, 54, 16, -7, 38,
796
 
  32, -2, 21, 38, -15, 14, 41, 16, 33, 2, -33, 11, -6, -57, -4, 53,
797
 
  -8, -27, 30, 5, -34, 29, 20, -51, 10, 59, 38, -1, 0, 26, -37, -13,
798
 
  40, -14, -27, 6, 5, -10, 16, 11, -6, 16, 9, -18, 18, 34, -2, -39,
799
 
  -6, 2, -30, -16, -41, -69, -20, -12, -31, -1, -21, -48, -56, -28, -21, -29,
800
 
  16, 6, -35, -22, -32, -52, -5, -5, -52, -50, -32, -39, -27, -5, -32, -59,
801
 
  -11, -8, -61, -29, -16, -57, -54, -10, -35, -43, 11, -10, -51, -59, -40, -24,
802
 
  -18, -22, -8, -14, -48, -35, -37, -57, -22, -17, -45, -47, -4, -25, -38, 0,
803
 
  -25, -46, -5, 1, -39, 15, 30, -43, -23, 8, -17, -11, 7, -19, -24, 8,
804
 
  13, -19, -8, 2, -34, -6, 14, -2, 41, 30, -30, 27, 35, -41, -22, 49,
805
 
  19, -16, 44, 15, -17, 46, 37, -24, -5, 18, -4, -24, -8, 46, -12, -30,
806
 
  53, 47, 27, 40, 37, 27, 43, 40, 35, 67, 47, 0, 26, 58, 46, -10,
807
 
  8, 53, 40, 61, 30, -28, 13, 34, 12, 51, 29, 11, 18, 24, 33, 24,
808
 
  46, 46, 29, 40, 35, -31, 10, 71, 33, 19, 34, 19, 18, 50, 43, -4,
809
 
  29, 36, -22, 16, 45, 14, -7, 25, -14, -48, 35, 55, 13, -6, 5, 11,
810
 
  13, 3, 39, 20, 7, 15, 5, -32, -23, -16, -37, -56, 3, -3, -34, -3,
811
 
  -32, -65, -14, 10, -48, -13, 10, -53, -45, -2, -29, -14, -15, -62, -66, -31,
812
 
  -6, -28, -21, -19, -46, -33, -22, -43, -10, 9, -46, 2, 38, -40, -35, 14,
813
 
  -16, -40, 24, -11, -45, 14, 0, -37, -35, -27, -48, -64, -37, 22, -8, -62,
814
 
  -32, -13, -13, -19, -41, -46, -17, -23, -36, 6, 10, -36, -33, 14, 18, -21,
815
 
  -12, 5, -14, 28, 26, -43, -13, 11, -5, 49, 22, -21, 20, 24, 4, -16,
816
 
  9, 0, -14, 8, 35, -5, -18, 37, 14, -19, 3, 21, 5, 1, -5, -11,
817
 
  35, 36, -14, 18, 48, 22, 14, 53, 1, -48, 19, 35, -8, -3, 11, -8,
818
 
  11, 7, 49, 35, 30, 54, 53, 27, 46, 45, 15, -7, 32, 37, 14, 56,
819
 
  23, -31, 23, 49, 1, 16, 43, -11, -23, 27, 3, 30, 62, 29, -2, 8,
820
 
  46, 44, 46, 35, 20, 31, 29, 15, 29, 43, -2, 11, 47, -9, -5, 37,
821
 
  6, -24, 34, 17, -11, 35, 19, 5, 26, 52, 24, -29, -1, 40, 29, 7,
822
 
  -27, -45, -10, 6, -15, -33, -15, -26, -57, -2, 19, -39, -57, 16, 29, -2,
823
 
  4, -8, -34, 9, 40, -29, -32, -26, -53, 21, 29, -49, -27, 7, -26, -45,
824
 
  11, -9, -41, -6, 27, 6, -47, -26, -22, -59, -38, -3, -5, 3, -28, -35,
825
 
  13, 0, -46, -32, 4, -21, -18, 43, 3, -38, 24, 24, -40, -19, 8, -35,
826
 
  -40, -55, -11, -6, -39, -19, -8, -22, 22, 22, -32, -38, -18, -16, -9, 54,
827
 
  14, -47, 8, 15, -17, 4, 57, 0, -28, 28, -6, -3, 35, 16, -3, 8,
828
 
  7, -5, 20, 28, 5, 10, -2, -25, -8, 11, -15, -11, 8, -27, -22, 29,
829
 
  27, -1, 16, -5, -19, 37, 39, 5, 21, 64, 32, -45, -10, 41, 24, 37,
830
 
  33, -3, 12, 39, 27, 9, 35, 31, -21, 11, 57, 4, -37, 19, 12, -16,
831
 
  23, 30, -6, -2, 37, 10, 15, 11, -45, 3, 43, -19, -24, 34, -2, -44,
832
 
  29, 45, -7, -8, 27, 42, 14, 27, 27, -31, -20, 16, 6, 35, 21, -2,
833
 
  37, 9, -35, -16, 22, 8, 5, 45, 3, -25, 40, 58, -3, 3, 54, 32,
834
 
  7, -29, 3, 38, 15, 11, -24, -45, 25, 49, -24, -36, -1, -19, -28, 43,
835
 
  19, -46, 3, 20, -19, -21, 40, -3, -40, 27, 4, -26, 11, -20, -46, 7,
836
 
  5, -40, -23, 8, -29, -22, 2, -24, -19, -3, -30, -27, -10, -40, -44, -15,
837
 
  -34, -33, 3, -25, -67, -22, 9, -51, -56, 2, 3, -46, -46, 3, -17, -43,
838
 
  -22, -30, -34, -15, -16, -38, -22, -9, -37, -27, 24, -11, -61, -31, -31, -53,
839
 
  -6, 19, -33, -54, -33, -37, -6, 7, -40, -19, 5, -30, -35, 38, 23, -47,
840
 
  -16, 4, -30, -59, -20, 10, 14, 41, 22, -45, -54, 0, -12, -15, -9, -36,
841
 
  35, 32, -42, -22, -1, -29, -32, 6, -25, -43, 11, 36, -6, -20, 20, 15,
842
 
  16, -15, 8, 23, 15, 59, 27, -35, 11, 65, 13, -9, 40, 16, -26, 15,
843
 
  26, -29, 5, 36, 5, 3, 52, 30, -14, 30, 32, 8, 46, 36, -5, 35,
844
 
  56, 7, 1, 42, 17, 19, 48, 29, 31, 56, 39, 29, 51, -1, -19, 36,
845
 
  8, -6, 43, 46, -11, 0, 54, 9, -24, 13, 33, 17, -8, 29, 36, 1,
846
 
  12, 11, 2, 14, 28, 14, 5, 2, -29, -21, 36, 10, -26, 5, 17, -18,
847
 
  -3, 37, 9, 2, 10, 2, 19, 14, -24, 5, 31, 5, -13, 35, 44, 4,
848
 
  10, 11, 5, -19, -8, -31, -37, 28, 36, 9, -36, -8, 9, 11, 22, -27,
849
 
  24, 51, -43, -40, 5, -19, -25, 20, -3, -39, -7, 28, 13, -9, 0, -26,
850
 
  -13, -41, 0, -11, -54, 11, 27, -45, -22, 36, -11, -32, 14, -6, -32, -17,
851
 
  7, -30, -17, 0, -53, -32, 18, 5, -35, -16, -19, -27, 11, 2, -27, 0,
852
 
  21, -27, -24, 16, -7, 0, 8, -23, -13, 22, 8, -8, 51, 8, -43, 27,
853
 
  23, -3, 27, 40, -2, -2, 38, 42, 14, 16, 17, -13, -15, 30, 43, 24,
854
 
  40, 48, 38, 40, 33, 23, 41, 54, 2, -4, 59, 47, 30, 50, 39, -4,
855
 
  8, 50, 30, 37, 48, 38, 56, 56, 15, 18, 48, 19, -6, 21, 23, 1,
856
 
  25, 46, 40, 29, 53, 27, -2, 41, 37, 24, 14, 13, 18, 32, 46, 14,
857
 
  28, 75, 28, 6, 51, 32, 8, 41, 32, -7, -7, 16, 26, 21, 36, 12,
858
 
  35, -5, 38, 47, -11, 13, 50, 0, 6, 56, -1, -24, 38, 31, 18, 21,
859
 
  31, 7, 13, 45, -21, -32, 12, -5, -47, -13, -18, -36, 9, -11, -64, -30,
860
 
  7, -45, -30, 4, -43, -27, 13, -29, -35, 3, -18, -43, 28, 16, -53, -10,
861
 
  -16, -52, -11, 5, -49, -48, -27, -16, -30, -14, 11, -49, -65, -32, -29, -48,
862
 
  -29, -16, -24, -10, -29, -62, -14, 28, -35, -41, 13, -8, -38, -11, 3, -41,
863
 
  -37, -9, -42, -36, -16, -32, -13, 5, -26, -46, -12, -27, -48, -1, -10, -51,
864
 
  -49, -34, -42, -32, -12, -25, -43, 4, 11, -40, -38, -37, -51, -22, -18, -43,
865
 
  -18, 11, -12, -31, 13, -5, -39, -3, -10, -33, -48, -56, -40, -13, -2, -26,
866
 
  -19, -38, -10, 11, -3, 2, 13, -11, -17, 33, -5, -43, 22, 20, -3, 14,
867
 
  15, -10, 8, 43, 4, -21, 35, 33, -17, 23, 18, -34, 14, 43, -14, 8,
868
 
  48, -29, -19, 50, 3, -13, 40, 19, 2, 39, 25, -5, 43, 46, -7, 24,
869
 
  35, -15, 10, 51, 8, 2, 21, -5, -35, 6, 68, 19, -20, 3, -7, -37,
870
 
  -8, -16, -19, 28, 16, -37, -3, 47, -23, -35, 11, -17, -58, -15, 27, -3,
871
 
  5, 15, -32, -28, 0, -40, -24, 14, -4, -16, 19, 0, -40, 22, 30, -8,
872
 
  -5, -3, -27, -6, 8, -12, -39, 1, 49, -11, -25, -3, -36, -10, 4, -44,
873
 
  -12, 9, -17, -37, 10, 10, -32, 0, -14, -24, -3, -21, -40, -2, 12, -20,
874
 
  -32, -42, -17, -28, -27, -3, -19, -32, -48, 7, 1, -59, -4, -5, -52, -33,
875
 
  -32, -65, -36, -11, -41, -62, 3, 16, -41, -5, 3, -53, -40, -5, -30, -4,
876
 
  41, -31, -44, 25, -8, -36, -11, -26, -27, 18, -3, -32, 8, 3, -35, -11,
877
 
  27, -2, -3, 24, -3, 8, 70, 32, -35, -7, 51, 28, -6, 46, 26, -27,
878
 
  24, 5, -17, 45, 58, 0, 7, 54, -1, -28, 27, 14, -34, 11, 30, -14,
879
 
  7, 38, -5, -3, 37, -26, -22, 35, 19, 11, 38, 7, -43, 8, 41, 8,
880
 
  24, 45, -5, 3, 48, 48, 0, -11, 37, 21, 12, 47, 21, 26, 42, -5,
881
 
  14, 40, 14, -8, 18, 19, -12, 33, 25, -8, 38, 48, 5, 26, 48, 30,
882
 
  35, 5, 22, 16, 3, 35, 38, 28, 0, 33, 37, -32, 12, 48, 16, 26,
883
 
  29, -14, 3, 28, 10, -23, 11, 34, -22, 13, 43, -4, -7, 1, -51, -33,
884
 
  30, -11, -30, 27, 7, -11, 16, -10, -44, 5, -1, -30, 14, 2, -28, -21,
885
 
  -5, -34, -11, 21, -40, -44, 42, 28, -54, -43, 3, -12, -41, 13, -4, -49,
886
 
  0, -15, -61, -28, 18, -24, -23, 28, -1, -25, 16, -2, -57, -8, 11, -39,
887
 
  -22, 19, -30, -19, 49, -7, -48, -30, -45, -24, 25, 9, -27, -19, 22, -14,
888
 
  -18, 31, -19, -46, -6, 16, -14, -31, -17, -29, -44, -15, -8, -24, -24, -43,
889
 
  -13, 10, -34, -53, -27, -24, -53, 7, 16, -59, -22, 8, -33, -8, 10, -11,
890
 
  16, 0, -1, -2, -18, -10, 19, 26, 8, 34, 36, -16, -1, 27, 10, 34,
891
 
  55, 14, 25, 42, 16, 5, 29, 40, -4, 24, 63, 21, 28, 70, 17, 3,
892
 
  48, 2, -19, 39, 39, 3, 27, 43, 5, 31, 36, 10, 49, 38, 0, 16,
893
 
  43, 9, 21, 67, 16, -21, 20, 38, -1, -1, 8, -8, -1, 39, 26, 0,
894
 
  35, 38, -3, -19, 24, 2, -5, 42, 30, 20, 51, 43, -12, 19, 48, 8,
895
 
  15, 54, 11, -1, 58, 51, 23, 13, -10, 0, 40, 38, 21, 8, 28, 8,
896
 
  1, 51, 32, -10, 3, 30, 29, 30, 27, -10, -38, -5, 18, 10, 11, -11,
897
 
  8, 45, 14, -13, 15, 30, -16, 13, 40, -39, -16, 32, -29, -11, 39, 5,
898
 
  -24, -23, 0, -16, -39, -55, -48, -50, -58, -31, -19, -48, -47, -27, -53, -27,
899
 
  7, -42, -32, 16, -27, -54, 2, 5, -48, -18, 20, -26, -15, 32, -4, -22,
900
 
  30, -14, -47, -9, -6, -25, -19, -11, -24, 5, -5, -23, 18, 15, -46, -27,
901
 
  24, -3, -11, 18, -11, -13, 14, 15, 19, 45, 13, -40, -18, 29, 24, 3,
902
 
  33, 48, 35, 3, 13, 2, -16, 24, 3, -16, 19, 33, -7, -6, 23, -13,
903
 
  -11, 30, 14, -6, 10, 16, 30, 33, -7, -19, 11, -3, -24, -5, -11, -35,
904
 
  -23, 12, -1, -20, 4, 1, -5, 25, 63, 20, -25, 20, 30, 28, 33, 2,
905
 
  8, 56, 55, 27, 38, 48, 17, 32, 63, 0, -3, 64, 21, -4, 46, 29,
906
 
  -20, -43, 22, 43, 22, 17, 14, -5, -18, -5, -3, -7, 9, 10, -35, -8,
907
 
  27, -12, -31, 31, 13, -56, 8, 33, -30, -6, 24, -47, -29, 32, -21, -59,
908
 
  22, 0, -36, 7, -7, -31, 1, -16, -49, 5, -10, -51, -9, 25, -32, -35,
909
 
  4, -32, -34, 9, -36, -32, 10, -28, -35, 31, 39, -39, -61, -21, -22, -54,
910
 
  -19, -20, -25, -34, -43, -43, -62, -8, -21, -68, -52, -28, -37, -54, -19, -43,
911
 
  -52, -29, -48, -51, -37, -53, -40, -8, -41, -65, -32, -37, -67, -31, -28, -63,
912
 
  -63, -35, -51, -70, -27, -35, -68, -60, 7, -5, -65, -32, -38, -44, -22, -50,
913
 
  -56, -29, -33, -46, -30, -30, -41, -11, 5, -39, -54, -16, -26, -30, -20, -35,
914
 
  0, -40, 3, 13, -19, 14, 55, 34, 19, 52, 21, -5, 51, 46, -33, -17,
915
 
  35, 25, 0, 24, 16, -28, 17, 27, -14, 19, 60, -8, -26, 51, 35, -19,
916
 
  34, 28, -1, 46, 43, -5, 30, 34, -12, 32, 41, -8, 10, 49, 0, -3,
917
 
  41, 16, 3, 54, 16, -14, 35, 18, -17, 21, 65, 13, -35, 8, -2, -45,
918
 
  11, 18, -7, 14, 21, 7, -16, 31, 25, -16, 5, 19, 23, 10, 35, 15,
919
 
  -2, 13, -8, 2, 24, 2, 1, 46, 31, 4, 26, 27, -14, 9, 45, 21,
920
 
  10, 32, 27, 8, 22, 19, -5, -28, 12, 13, -35, -6, 2, -6, 25, -8,
921
 
  -37, -16, -29, -32, 2, -17, -52, -7, 13, -12, -21, -11, -37, -11, 18, 0,
922
 
  13, -23, -2, -18, -54, -31, 22, -4, -24, 37, 1, -62, 2, 52, -6, -49,
923
 
  -8, -14, -14, 11, -27, -27, 11, -19, -61, -35, 3, -23, -51, 3, 7, -31,
924
 
  3, -6, -39, -15, 4, -11, -8, -18, -43, -17, 6, -15, 1, 18, -35, -18,
925
 
  26, -4, -8, 36, 3, -34, 26, 27, -21, -1, 55, 19, -35, 32, 21, -50,
926
 
  10, 51, 3, 9, 49, 23, -10, 21, 6, -5, 48, 33, 1, 11, 34, 10,
927
 
  22, 46, 14, 25, 42, 16, 11, 46, 42, 27, 53, 60, 18, 18, 58, 25,
928
 
  19, 50, 34, 35, 55, 54, 35, 21, 44, 34, 10, 37, 46, 31, 58, 39,
929
 
  16, 52, 40, 8, 43, 21, -38, 8, 40, 22, 24, 55, -3, -13, 50, 46,
930
 
  29, 15, 45, 33, 7, 3, 37, 10, -19, 44, 46, -20, -7, 55, 51, -14,
931
 
  9, 5, 4, 35, -18, 3, 46, 32, -9, -10, 4, -21, -35, 11, -3, -48,
932
 
  2, 14, -21, -14, -11, -13, 5, -8, -22, -8, 3, -39, -17, 26, -22, -16,
933
 
  16, -42, -44, 25, -8, -55, 3, 5, -63, -36, 50, 28, -49, 11, 32, -59,
934
 
  -27, 42, -11, -57, -7, -5, -30, 0, -31, -45, 2, -15, -62, -32, 10, -29,
935
 
  -12, 16, -42, -37, -13, -46, -56, -6, -6, -40, -4, 5, -31, -24, 32, -17,
936
 
  -53, -11, -38, -53, -14, 20, -13, -8, 36, -4, -34, -8, -16, -32, 18, 7,
937
 
  -24, 21, 24, -32, 6, 27, -40, -33, -10, -33, -24, 36, -14, -47, 8, -11,
938
 
  -8, -5, 29, 15, -13, -11, 26, -3, -54, 0, 30, -19, -19, 17, 17, -4,
939
 
  28, 32, 34, 44, -6, 3, 43, 44, 7, 24, 67, 33, 5, 45, 45, -8,
940
 
  19, 42, 13, 25, 36, 21, 44, 38, 9, 23, 55, 13, 1, 39, -10, -12,
941
 
  55, -5, -43, 45, 18, -45, 19, 59, -8, -32, 31, 41, -13, 14, 64, -3,
942
 
  -13, 53, 50, -4, 16, 34, 24, 50, -4, -15, 38, 35, -22, -13, 42, -1,
943
 
  -3, 43, -12, -19, 34, 16, -22, 11, 29, -3, 28, 0, -50, -23, 50, 19,
944
 
  -28, 21, 18, -22, -16, 28, -4, -7, 46, 6, -51, -12, -2, -36, 17, 0,
945
 
  -57, -6, 38, -21, -3, 51, 12, 11, 26, -30, -32, 43, 10, -24, 25, 1,
946
 
  -26, -41, -16, 5, -23, -36, 16, 17, -48, -29, -13, -53, -25, 16, -32, -37,
947
 
  -13, -37, -16, 17, -32, -48, 11, 19, -44, -40, 19, -9, -22, 20, 9, -35,
948
 
  -6, -1, -46, -18, 6, -29, -5, 1, -46, -31, -1, -19, -14, 22, -33, -45,
949
 
  40, -2, -49, 35, 16, -69, -19, 37, 5, -20, 9, 10, -27, -3, 48, 13,
950
 
  -13, 21, 23, 9, 22, 7, -5, 34, -6, -32, 27, 49, 0, -18, 16, -22,
951
 
  -19, 44, 6, -16, 33, 32, 7, 8, 16, 18, 63, 28, -42, -20, 37, 32,
952
 
  -8, 26, 25, -12, -3, 29, 7, -8, 25, 20, -14, 18, 33, -11, 35, 22,
953
 
  -47, -6, 64, 17, 2, 25, 6, 35, 64, 5, -27, 33, 24, -3, 16, -4,
954
 
  27, -2, -8, 31, 2, -29, 22, 51, 17, 27, 10, -49, -14, 56, 11, -2,
955
 
  22, -27, -28, 36, 10, -32, 27, 53, -22, -44, 14, -20, -33, 29, 16, -31,
956
 
  13, 19, -42, -13, 24, -18, 3, 34, -8, 3, 12, -29, -16, 51, 0, -40,
957
 
  25, 1, -34, 21, 19, -48, -27, -8, -35, -45, -4, -3, -65, -40, 11, -22,
958
 
  -59, -33, -46, -32, 0, -38, -51, 8, -3, -70, -57, -27, -40, -37, 3, -40,
959
 
  -42, 19, -16, -45, -8, -29, -33, -23, -56, -56, 8, 16, -54, -42, 6, -4,
960
 
  -35, 5, -9, -51, -13, -7, -41, -43, -21, -35, -38, 13, 9, -39, 21, 23,
961
 
  -50, -21, 24, -14, -3, 2, -43, -25, 1, -19, -48, -11, -19, -39, -31, -48,
962
 
  -21, -29, -36, 16, -3, -53, -38, -27, -16, 45, 47, -43, -36, 26, 3, -7,
963
 
  16, -19, -38, 19, 19, -32, 9, 57, -6, -30, 38, 9, -24, 33, 25, -20,
964
 
  29, 33, -28, -4, 19, -10, 4, 15, -3, 23, 30, -11, -13, 49, 26, -8,
965
 
  34, 3, -10, 44, 40, -7, 19, 32, -11, -44, 10, 54, -19, -29, 32, 25,
966
 
  -13, -8, -40, -5, 57, 15, -13, 40, 57, 14, 8, 8, -3, 7, 53, 9,
967
 
  -16, 37, 15, -16, 25, 18, 8, 35, 2, -44, -11, 41, -6, -17, 29, 13,
968
 
  -19, 35, 30, -22, 20, 38, 11, 16, 37, -1, -40, 11, 36, -10, 32, 40,
969
 
  -46, -27, 25, -35, -13, 39, 11, 24, 31, 6, -26, 11, 2, -16, 22, 8,
970
 
  -14, -20, -28, 23, 18, -17, -8, -27, -49, 6, 55, -27, -57, -4, -13, -19,
971
 
  2, -28, -64, -19, -3, -55, -19, 24, -35, -46, 8, -23, -47, 16, 2, -56,
972
 
  3, 19, -36, -5, -8, -53, -17, -19, -43, -17, -20, -59, -45, 8, -8, -35,
973
 
  6, -16, -45, 18, 11, -34, 19, 62, 13, -28, -8, 8, -32, -54, -2, 35,
974
 
  45, 35, -39, -43, 21, 5, -24, 14, 14, 13, 54, 42, 2, 5, 29, 1,
975
 
  -18, 5, -11, -21, 17, 13, -8, 12, 33, 2, -5, 32, 4, -11, 11, -7,
976
 
  -20, 22, 16, -19, 2, 36, 27, 18, 46, 34, -16, -19, -8, -13, 26, 48,
977
 
  -8, -11, 56, -8, -37, 25, 22, 22, 38, 24, -5, 42, 21, -19, 32, 27,
978
 
  24, 8, -6, 49, 48, 28, 56, 51, 3, 8, 64, 11, -34, 26, 37, 27,
979
 
  60, 47, -8, 19, 30, -23, 8, 27, -30, -27, 31, -10, -51, 24, 46, -9,
980
 
  14, 38, -2, 28, 49, -2, 15, 34, 11, 31, 25, -30, -24, 24, 6, -22,
981
 
  22, 23, -43, -5, 17, -27, 10, 54, -3, -21, 14, 2, -8, -31, -19, -21,
982
 
  6, 48, 2, -37, -16, -28, -46, -3, -35, -70, -8, 19, -46, -29, 5, -29,
983
 
  -30, -5, -35, -58, -19, -20, -29, -24, -9, -24, -20, -11, -40, -38, -22, -53,
984
 
  -48, -12, -31, -44, -51, -19, -20, -51, -21, -9, -27, -35, -57, -62, -22, -5,
985
 
  -32, -41, 5, -27, -75, -41, -31, -46, -23, -29, -47, 16, 0, -54, -16, 1,
986
 
  -11, -22, -42, 32, 7, -33, 0, 23, -10, -6, 43, 10, -28, 12, 16, -12,
987
 
  18, 28, -10, 28, 30, -19, 24, 40, -10, -10, 51, 13, -48, 7, 36, 13,
988
 
  18, 32, 9, 15, 40, 26, 23, 23, 9, 43, 54, 2, -10, 40, 33, -13,
989
 
  24, 61, 9, 16, 19, -26, 11, 46, -11, -13, 52, 49, 26, 8, 35, -1,
990
 
  -22, 38, 32, 17, 48, 26, 5, 46, 36, -16, 0, 49, -20, -13, 50, 29,
991
 
  17, 49, 18, -27, 19, 35, 27, 28, 19, -19, 10, 40, 21, 25, 45, -3,
992
 
  -21, 29, 21, 8, -8, 22, 29, -3, 18, 29, 24, 34, 28, -3, 8, 19,
993
 
  -12, -13, 25, 6, -35, -8, 19, -1, 17, 1, -31, 30, 47, 8, 13, 16,
994
 
  17, 11, -32, 28, 10, -47, -23, -2, -39, -17, 20, -16, -38, 2, 0, -42,
995
 
  -10, 3, -35, 11, 19, -24, 9, 12, -41, -48, 28, 16, -54, -21, -16, -43,
996
 
  -21, -8, -32, -21, -11, -37, -16, 0, -37, -14, 0, -35, -48, -8, 0, -56,
997
 
  -27, 6, -27, 5, -4, -72, -13, 40, -18, -34, 9, 11, -32, -38, 39, 21,
998
 
  -45, 4, -3, -30, 21, 7, -19, 6, 11, -12, 7, 51, -13, -30, 29, 21,
999
 
  6, 38, 32, 0, 17, 19, 12, 29, 32, -16, 3, 45, 14, 6, 53, 17,
1000
 
  -27, 28, 54, 39, 16, 19, 21, 16, 37, 45, 32, 31, 51, 39, 37, 48,
1001
 
  23, 24, 64, 57, 21, 29, 36, 13, 43, 51, 12, 33, 32, -11, 3, 13,
1002
 
  -3, -8, -34, 28, 45, -6, 10, 11, -38, 2, 46, 3, -28, 22, 38, -10,
1003
 
  13, 13, -43, -13, 21, 3, 23, 42, 2, -27, 32, 51, -10, 10, 22, -32,
1004
 
  -14, 26, -12, -5, 27, -17, -11, 38, 8, 13, 28, 0, -14, 17, 19, -31,
1005
 
  1, 17, -24, 26, 51, -39, -19, 43, -12, -43, 8, 24, -39, -54, 30, 39,
1006
 
  -40, 5, 4, -56, -14, -14, -45, -30, -32, -67, -43, 6, -29, -46, -7, -25,
1007
 
  -49, -30, -29, -32, -7, -21, -29, 16, 14, -48, -35, 21, -25, -51, 23, 8,
1008
 
  -64, -35, -8, -20, -7, -21, -53, -29, 12, -7, -35, -18, -6, -32, -13, 6,
1009
 
  -38, -31, 14, -2, -33, -16, -21, -33, 8, 2, -43, -17, -1, -43, -33, -29,
1010
 
  -37, -45, -63, -8, 3, -34, 15, 7, -62, -21, 38, -5, -51, -8, 5, -43,
1011
 
  -2, 19, -38, -48, -32, -35, -22, 31, 11, -28, -8, -5, -21, 6, 36, -19,
1012
 
  -27, 27, -3, -25, 26, 16, -6, 16, 0, 6, 41, 19, -11, 37, 19, -37,
1013
 
  11, 27, -1, 29, 67, 11, -7, 46, 11, -31, 27, 70, 5, -38, 26, 60,
1014
 
  -18, 8, 45, -4, 24, 43, 25, 35, 45, 0, -2, 28, 5, -5, 29, 34,
1015
 
  8, -1, -11, -16, 25, 19, -33, 5, 43, -9, -15, 40, -3, -28, 40, 38,
1016
 
  -31, -19, 10, -14, 17, 37, -21, -29, 29, 20, -31, -5, 26, -18, 0, 45,
1017
 
  -16, -22, 24, -12, -41, 15, 0, -41, 13, 14, -28, 3, 35, -14, -11, 3,
1018
 
  32, 24, -18, 13, 19, -18, 36, 41, -27, -21, 37, 4, -49, -1, 24, -29,
1019
 
  -3, 47, 7, -8, -3, -30, -38, 11, -10, -43, -5, -32, -66, -34, 19, -26,
1020
 
  -54, -16, -32, -59, -17, -18, -32, -20, -45, -50, -3, -3, -43, 15, 0, -65,
1021
 
  -28, -24, -55, -13, 13, -29, -44, -6, -13, -54, -14, 26, -16, -58, -28, 28,
1022
 
  -18, -27, 7, -24, -9, 13, 5, 20, 27, -8, -10, -1, -23, -8, 9, 8,
1023
 
  6, 16, 3, -18, 15, 19, -33, -30, 19, -10, -6, 25, -37, -57, 19, 38,
1024
 
  -11, -3, 9, -30, -32, 21, 8, -20, 10, -2, -46, -26, 22, -8, -2, 30,
1025
 
  -26, -18, 39, -4, -26, 28, 6, -48, 9, 29, -23, 0, 34, -19, -26, 18,
1026
 
  31, 30, 5, 27, 33, 10, 30, 47, 14, -18, 35, 53, 0, 26, 61, 24,
1027
 
  8, 56, 33, 22, 54, 32, 8, 48, 30, -15, 44, 49, -4, -5, 53, 18,
1028
 
  -11, 28, 9, -26, 13, 21, 13, 31, -9, -27, 22, 31, -8, 38, 51, 0,
1029
 
  6, 19, -37, -10, 32, -4, -5, 14, 1, -50, -13, 33, 5, -27, -28, 14,
1030
 
  -5, -24, -13, -25, -12, -5, -24, 8, 24, -13, -8, -8, -61, -38, 7, -6,
1031
 
  -12, 11, -23, -59, 5, 40, 8, -15, 7, -24, 0, 51, 3, -38, 5, 12,
1032
 
  -31, 0, 7, -15, -29, -11, -19, -16, 18, -5, -32, -13, 13, -43, -23, 21,
1033
 
  -43, -14, 42, -31, -35, 25, 8, -33, 9, 24, -44, -14, 41, 0, -34, 0,
1034
 
  -18, -18, -29, 0, -13, -14, -5, 2, 0, -19, 3, 18, -18, -6, 9, -8,
1035
 
  -10, 28, 28, 8, 8, -9, -13, 38, 35, -10, 26, 37, 3, 3, 50, 39,
1036
 
  22, 59, 20, -19, 16, 26, 37, 67, 11, -24, 27, 34, 8, 30, 41, 9,
1037
 
  -9, 30, 14, 9, 53, 30, 35, 69, 60, 5, 12, 61, 38, 11, 24, 43,
1038
 
  36, 32, 8, -3, 28, 32, 7, 31, 59, 32, 41, 70, 4, -16, 40, 36,
1039
 
  24, 58, 40, -16, 16, 53, 37, 19, 40, 14, 13, 59, 43, 7, 32, 39,
1040
 
  0, 28, 42, 21, 16, 34, -4, -1, 57, 32, 3, 25, 64, 14, 13, 61,
1041
 
  8, 17, 59, -6, -13, 50, 40, 4, 31, 61, 16, 16, 41, 9, -4, 19,
1042
 
  14, 15, -10, 15, -8, -27, -10, 3, -16, -12, 11, -18, -50, -8, 9, -29,
1043
 
  -43, -11, 9, 15, 11, -35, -43, 14, 10, -32, 2, 3, -51, -42, 11, -3,
1044
 
  -18, 36, -5, -51, -18, -37, -17, 39, -13, -43, 7, -1, -22, 0, -3, -19,
1045
 
  -24, -15, -24, -20, 5, -39, -30, 26, 21, -24, -19, 29, -8, -48, -6, 8,
1046
 
  0, 33, -7, -51, -15, -13, -27, -8, 13, -24, -24, 43, 25, -15, 3, -14,
1047
 
  -25, 16, 21, -14, -10, 4, -7, -6, -6, -35, -24, 16, -15, -43, -6, 5,
1048
 
  -25, -20, 0, -26, -23, 24, -19, -38, 29, 1, -45, -25, -2, -14, -21, 0,
1049
 
  -22, -24, 12, -8, -32, 3, -4, -26, -15, -17, -32, -3, 16, -23, -29, -18,
1050
 
  -15, -12, -33, -3, 16, -29, -6, 17, -38, -45, 21, 3, -43, 11, 35, 4,
1051
 
  -22, -19, -29, -27, 20, 5, -41, -2, 4, -47, -1, 48, 1, -32, 1, -19,
1052
 
  -39, 42, 31, -15, 21, -8, -13, 45, -5, -38, 12, -13, -47, 18, 31, 3,
1053
 
  21, 7, -45, -16, 30, -42, -56, 13, 8, -53, -34, 46, 10, -69, -26, 6,
1054
 
  -29, 20, 27, -17, -4, -31, -62, -35, 9, -34, -53, 0, -16, -41, -6, -11,
1055
 
  -35, -8, -16, -53, -30, 1, -19, 0, 8, -43, -27, 32, -4, -45, -19, -13,
1056
 
  -24, -24, 5, -24, -27, 14, -27, -51, 14, 11, -40, -25, -19, -27, -25, -13,
1057
 
  -28, -46, -22, -3, -24, -4, -8, -24, -3, -30, -59, -23, 19, -8, -22, -33,
1058
 
  -24, -13, -40, -21, 12, -32, 3, 22, -43, -53, 18, 6, -59, -8, 13, -18,
1059
 
  -13, 8, -27, -56, -28, -13, -50, -11, 24, -48, -28, 12, -11, -35, -21, -32,
1060
 
  -43, 18, 14, -24, -3, -10, -18, 23, -12, -66, -8, -9, -48, 16, 17, -34,
1061
 
  10, 43, 2, 9, 49, -16, -72, 4, 38, -27, -23, 49, 48, -27, -14, 27,
1062
 
  -3, 15, 19, -2, 37, 24, -30, -11, 51, 21, -7, 33, 5, -28, 17, 22,
1063
 
  -12, 21, 29, -29, -22, 25, 2, 23, 42, -13, -11, 51, 35, 1, 35, 41,
1064
 
  28, 21, 44, 5, -22, 27, 17, -10, 33, 45, -2, 10, 30, 22, 27, 53,
1065
 
  46, 11, -7, -6, -6, 30, 37, 29, 58, 37, -10, -5, 22, 20, 27, 14,
1066
 
  0, 21, -26, -16, 22, -23, 14, 41, -16, -35, 18, 14, -45, 5, 29, -21,
1067
 
  -13, 43, 16, -19, -5, 11, -27, -6, 35, -33, -16, 22, 8, 10, 6, -25,
1068
 
  -35, 14, 21, -4, -6, -7, -2, 27, 13, -22, 19, 0, -43, 13, 16, -24,
1069
 
  2, 8, -18, 9, 43, 6, -48, 8, 30, -38, -23, 37, 32, -25, -20, 0,
1070
 
  -18, 8, 15, -6, 28, 22, -35, -24, 20, -5, -14, 32, 3, -35, 1, 8,
1071
 
  -13, 20, 28, -27, -27, 16, -8, 10, 14, -29, -14, 34, 8, -19, 10, -2,
1072
 
  -16, -9, 28, 26, -7, -6, -17, -22, 21, 33, -11, -15, 0, -12, -2, 22,
1073
 
  11, -4, 2, -14, -26, 3, 3, 2, 28, 13, -27, -18, 5, 5, 13, 0
1074
 
};
1075
 
 
1076
 
 
1077
 
/* --- Typedefs --- */
1078
 
enum
1079
 
{
1080
 
  TOP_RIGHT,
1081
 
  TOP_LEFT,
1082
 
  BOTTOM_LEFT,
1083
 
  BOTTOM_RIGHT
1084
 
};
1085
 
 
1086
 
typedef struct
1087
 
{
1088
 
  gint  direction;
1089
 
  gint  depth;
1090
 
} StrucValues;
1091
 
 
1092
 
 
1093
 
/* --- Declare local functions --- */
1094
 
static void      query (void);
1095
 
static void      run   (const gchar      *name,
1096
 
                        gint              nparams,
1097
 
                        const GimpParam  *param,
1098
 
                        gint             *nreturn_vals,
1099
 
                        GimpParam       **return_vals);
1100
 
 
1101
 
static gboolean  struc_dialog (GimpDrawable *drawable);
1102
 
static void      strucpi      (GimpDrawable *drawable,
1103
 
                               GimpPreview  *preview);
1104
 
 
1105
 
 
1106
 
/* --- Variables --- */
1107
 
 
1108
 
const GimpPlugInInfo PLUG_IN_INFO =
1109
 
{
1110
 
  NULL,  /* init_proc  */
1111
 
  NULL,  /* quit_proc  */
1112
 
  query, /* query_proc */
1113
 
  run,   /* run_proc   */
1114
 
};
1115
 
 
1116
 
static StrucValues svals =
1117
 
{
1118
 
  0,     /* direction */
1119
 
  4      /* depth     */
1120
 
};
1121
 
 
1122
 
 
1123
 
/* --- Functions --- */
1124
 
 
1125
 
MAIN ()
1126
 
 
1127
 
static void
1128
 
query (void)
1129
 
{
1130
 
  static const GimpParamDef args[] =
1131
 
  {
1132
 
    { GIMP_PDB_INT32,    "run-mode",  "Interactive, non-interactive" },
1133
 
    { GIMP_PDB_IMAGE,    "image",     "Input image (unused)"         },
1134
 
    { GIMP_PDB_DRAWABLE, "drawable",  "Input drawable"               },
1135
 
    { GIMP_PDB_INT32,    "direction", "Light direction (0 - 3)"      },
1136
 
    { GIMP_PDB_INT32,    "depth",     "Texture depth (1 - 50)"       }
1137
 
  };
1138
 
 
1139
 
  gimp_install_procedure (PLUG_IN_PROC,
1140
 
                          N_("Add a canvas texture to the image"),
1141
 
                          "This function applies a canvas texture map to the drawable.",
1142
 
                          "Karl-Johan Andersson", /* Author */
1143
 
                          "Karl-Johan Andersson", /* Copyright */
1144
 
                          "1997",
1145
 
                          N_("_Apply Canvas..."),
1146
 
                          "RGB*, GRAY*",
1147
 
                          GIMP_PLUGIN,
1148
 
                          G_N_ELEMENTS (args), 0,
1149
 
                          args, NULL);
1150
 
 
1151
 
  gimp_plugin_menu_register (PLUG_IN_PROC, "<Image>/Filters/Artistic");
1152
 
}
1153
 
 
1154
 
static void
1155
 
run (const gchar      *name,
1156
 
     gint              nparams,
1157
 
     const GimpParam  *param,
1158
 
     gint             *nreturn_vals,
1159
 
     GimpParam       **return_vals)
1160
 
{
1161
 
  static GimpParam   values[1];
1162
 
  GimpDrawable      *drawable;
1163
 
  GimpRunMode        run_mode;
1164
 
  GimpPDBStatusType  status = GIMP_PDB_SUCCESS;
1165
 
 
1166
 
  run_mode = param[0].data.d_int32;
1167
 
 
1168
 
  INIT_I18N ();
1169
 
 
1170
 
  *nreturn_vals = 1;
1171
 
  *return_vals  = values;
1172
 
 
1173
 
  values[0].type          = GIMP_PDB_STATUS;
1174
 
  values[0].data.d_status = status;
1175
 
 
1176
 
  /*  Get the specified drawable  */
1177
 
  drawable = gimp_drawable_get (param[2].data.d_drawable);
1178
 
 
1179
 
  switch (run_mode)
1180
 
    {
1181
 
    case GIMP_RUN_INTERACTIVE:
1182
 
      /*  Possibly retrieve data  */
1183
 
      gimp_get_data (PLUG_IN_PROC, &svals);
1184
 
 
1185
 
      /*  First acquire information with a dialog  */
1186
 
      if (! struc_dialog (drawable))
1187
 
        {
1188
 
          gimp_drawable_detach (drawable);
1189
 
          return;
1190
 
        }
1191
 
      break;
1192
 
 
1193
 
    case GIMP_RUN_NONINTERACTIVE:
1194
 
      /*  Make sure all the arguments are there!  */
1195
 
      if (nparams != 5)
1196
 
        {
1197
 
          status = GIMP_PDB_CALLING_ERROR;
1198
 
        }
1199
 
      else
1200
 
        {
1201
 
          svals.direction = (gint) param[3].data.d_int32;
1202
 
          svals.depth     = (gint) param[4].data.d_int32;
1203
 
 
1204
 
          if (svals.direction < 0 || svals.direction > 4)
1205
 
            status = GIMP_PDB_CALLING_ERROR;
1206
 
          if (svals.depth < 1 || svals.depth > 50)
1207
 
            status = GIMP_PDB_CALLING_ERROR;
1208
 
        }
1209
 
      break;
1210
 
 
1211
 
    case GIMP_RUN_WITH_LAST_VALS:
1212
 
      /*  Possibly retrieve data  */
1213
 
      gimp_get_data (PLUG_IN_PROC, &svals);
1214
 
      break;
1215
 
 
1216
 
    default:
1217
 
      break;
1218
 
    }
1219
 
 
1220
 
  if (status == GIMP_PDB_SUCCESS)
1221
 
    {
1222
 
      /*  Make sure that the drawable is gray or RGB color  */
1223
 
      if (gimp_drawable_is_rgb (drawable->drawable_id) ||
1224
 
          gimp_drawable_is_gray (drawable->drawable_id))
1225
 
        {
1226
 
          gimp_progress_init (_("Applying canvas"));
1227
 
          gimp_tile_cache_ntiles (2 * (drawable->width / gimp_tile_width () + 1));
1228
 
 
1229
 
          strucpi (drawable, NULL);
1230
 
 
1231
 
          if (run_mode != GIMP_RUN_NONINTERACTIVE)
1232
 
            gimp_displays_flush ();
1233
 
          /*  Store data  */
1234
 
          if (run_mode == GIMP_RUN_INTERACTIVE)
1235
 
            gimp_set_data (PLUG_IN_PROC, &svals, sizeof (StrucValues));
1236
 
        }
1237
 
      else
1238
 
        {
1239
 
          /* gimp_message ("struc: cannot operate on indexed color images"); */
1240
 
          status = GIMP_PDB_EXECUTION_ERROR;
1241
 
        }
1242
 
    }
1243
 
 
1244
 
  values[0].data.d_status = status;
1245
 
 
1246
 
  gimp_drawable_detach (drawable);
1247
 
}
1248
 
 
1249
 
static gboolean
1250
 
struc_dialog (GimpDrawable *drawable)
1251
 
{
1252
 
  GtkWidget *dialog;
1253
 
  GtkWidget *main_vbox;
1254
 
  GtkWidget *preview;
1255
 
  GtkWidget *frame;
1256
 
  GtkWidget *table;
1257
 
  GtkWidget *radio1, *radio2, *radio3, *radio4;
1258
 
  GtkObject *adj;
1259
 
  gboolean   run;
1260
 
 
1261
 
  gimp_ui_init (PLUG_IN_BINARY, FALSE);
1262
 
 
1263
 
  dialog = gimp_dialog_new (_("Apply Canvas"), PLUG_IN_BINARY,
1264
 
                            NULL, 0,
1265
 
                            gimp_standard_help_func, PLUG_IN_PROC,
1266
 
 
1267
 
                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
1268
 
                            GTK_STOCK_OK,     GTK_RESPONSE_OK,
1269
 
 
1270
 
                            NULL);
1271
 
 
1272
 
  gtk_dialog_set_alternative_button_order (GTK_DIALOG (dialog),
1273
 
                                           GTK_RESPONSE_OK,
1274
 
                                           GTK_RESPONSE_CANCEL,
1275
 
                                           -1);
1276
 
 
1277
 
  gimp_window_set_transient (GTK_WINDOW (dialog));
1278
 
 
1279
 
  main_vbox = gtk_vbox_new (FALSE, 12);
1280
 
  gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 12);
1281
 
  gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox);
1282
 
  gtk_widget_show (main_vbox);
1283
 
 
1284
 
  preview = gimp_drawable_preview_new (drawable, NULL);
1285
 
  gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0);
1286
 
  gtk_widget_show (preview);
1287
 
 
1288
 
  g_signal_connect_swapped (preview, "invalidated",
1289
 
                            G_CALLBACK (strucpi),
1290
 
                            drawable);
1291
 
 
1292
 
  frame = gimp_int_radio_group_new (TRUE, _("Direction"),
1293
 
                                    G_CALLBACK (gimp_radio_button_update),
1294
 
                                    &svals.direction, svals.direction,
1295
 
 
1296
 
                                    _("_Top-right"),    TOP_RIGHT,    &radio1,
1297
 
                                    _("Top-_left"),     TOP_LEFT,     &radio2,
1298
 
                                    _("_Bottom-left"),  BOTTOM_LEFT,  &radio3,
1299
 
                                    _("Bottom-_right"), BOTTOM_RIGHT, &radio4,
1300
 
 
1301
 
                                    NULL);
1302
 
  gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
1303
 
  gtk_widget_show (frame);
1304
 
 
1305
 
  g_signal_connect_swapped (radio1, "toggled",
1306
 
                            G_CALLBACK (gimp_preview_invalidate),
1307
 
                            preview);
1308
 
  g_signal_connect_swapped (radio2, "toggled",
1309
 
                            G_CALLBACK (gimp_preview_invalidate),
1310
 
                            preview);
1311
 
  g_signal_connect_swapped (radio3, "toggled",
1312
 
                            G_CALLBACK (gimp_preview_invalidate),
1313
 
                            preview);
1314
 
  g_signal_connect_swapped (radio4, "toggled",
1315
 
                            G_CALLBACK (gimp_preview_invalidate),
1316
 
                            preview);
1317
 
 
1318
 
  table = gtk_table_new (1, 3, FALSE);
1319
 
  gtk_table_set_col_spacings (GTK_TABLE (table), 6);
1320
 
  gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0);
1321
 
  gtk_widget_show (table);
1322
 
 
1323
 
  adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
1324
 
                              _("_Depth:"), 100, 0,
1325
 
                              svals.depth, 1, 50, 1, 5, 0,
1326
 
                              TRUE, 0, 0,
1327
 
                              NULL, NULL);
1328
 
  g_signal_connect (adj, "value-changed",
1329
 
                    G_CALLBACK (gimp_int_adjustment_update),
1330
 
                    &svals.depth);
1331
 
  g_signal_connect_swapped (adj, "value-changed",
1332
 
                            G_CALLBACK (gimp_preview_invalidate),
1333
 
                            preview);
1334
 
 
1335
 
  gtk_widget_show (dialog);
1336
 
 
1337
 
  run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
1338
 
 
1339
 
  gtk_widget_destroy (dialog);
1340
 
 
1341
 
  return run;
1342
 
}
1343
 
 
1344
 
/* Filter function */
1345
 
static void
1346
 
strucpi (GimpDrawable *drawable,
1347
 
         GimpPreview  *preview)
1348
 
{
1349
 
  GimpPixelRgn  srcPR, destPR;
1350
 
  gint          width, height;
1351
 
  gint          bytes;
1352
 
  guchar       *dest, *d;
1353
 
  guchar       *cur_row;
1354
 
  gint          row, col, rrow, rcol;
1355
 
  gint          x1, y1, x2, y2, varde;
1356
 
  gint          xm, ym, offs;
1357
 
  gfloat        mult;
1358
 
  guchar       *preview_buffer = NULL;
1359
 
 
1360
 
  if (preview)
1361
 
    {
1362
 
      gimp_preview_get_position (preview, &x1, &y1);
1363
 
      gimp_preview_get_size (preview, &width, &height);
1364
 
 
1365
 
      x2 = x1 + width;
1366
 
      y2 = y1 + height;
1367
 
    }
1368
 
  else
1369
 
    {
1370
 
      /* Get the input area. This is the bounding box of the selection in
1371
 
       *  the image (or the entire image if there is no selection). Only
1372
 
       *  operating on the input area is simply an optimization. It doesn't
1373
 
       *  need to be done for correct operation. (It simply makes it go
1374
 
       *  faster, since fewer pixels need to be operated on).
1375
 
       */
1376
 
      if (! gimp_drawable_mask_intersect (drawable->drawable_id,
1377
 
                                          &x1, &y1, &width, &height))
1378
 
        return;
1379
 
 
1380
 
      x2 = x1 + width;
1381
 
      y2 = y1 + height;
1382
 
    }
1383
 
 
1384
 
  bytes = drawable->bpp;
1385
 
 
1386
 
  /*  allocate row buffers  */
1387
 
  cur_row  = g_new (guchar, width * bytes);
1388
 
  dest     = g_new (guchar, width * bytes);
1389
 
 
1390
 
  /*  initialize the pixel regions  */
1391
 
  gimp_pixel_rgn_init (&srcPR, drawable, x1, y1, width, height, FALSE, FALSE);
1392
 
 
1393
 
  if (preview)
1394
 
    {
1395
 
      preview_buffer = g_new (guchar, width * height * bytes);
1396
 
    }
1397
 
  else
1398
 
    {
1399
 
      gimp_pixel_rgn_init (&destPR,
1400
 
                           drawable, x1, y1, width, height, TRUE, TRUE);
1401
 
    }
1402
 
 
1403
 
  mult = (gfloat) svals.depth * 0.25;
1404
 
 
1405
 
  switch (svals.direction)
1406
 
    {
1407
 
    case 0:
1408
 
      xm = 1;
1409
 
      ym = 128;
1410
 
      offs = 0;
1411
 
      break;
1412
 
 
1413
 
    case 1:
1414
 
      xm = -1;
1415
 
      ym = 128;
1416
 
      offs = 127;
1417
 
      break;
1418
 
 
1419
 
    case 2:
1420
 
      xm = 128;
1421
 
      ym = 1;
1422
 
      offs = 0;
1423
 
      break;
1424
 
 
1425
 
    case 3:
1426
 
      xm = 128;
1427
 
      ym = -1;
1428
 
      offs = 128;
1429
 
      break;
1430
 
 
1431
 
    default:
1432
 
      xm = 1;
1433
 
      ym = 128;
1434
 
      offs = 0;
1435
 
      break;
1436
 
    }
1437
 
 
1438
 
  /*  Loop through the rows */
1439
 
  rrow = 0; rcol = 0;
1440
 
  for (row = y1; row < y2; row++)
1441
 
    {
1442
 
      gimp_pixel_rgn_get_row (&srcPR, cur_row, x1, row, width);
1443
 
      d = dest;
1444
 
      rcol = 0;
1445
 
 
1446
 
      switch (bytes)
1447
 
        {
1448
 
        case 1:  /* Grayscale */
1449
 
        case 2:  /* Grayscale alpha */
1450
 
          for (col = 0; col < width * bytes; col+=bytes)
1451
 
            {
1452
 
              varde = cur_row[col] + mult * sdata[rcol * xm + rrow * ym + offs];
1453
 
 
1454
 
              *d++ = (guchar) CLAMP0255 (varde);
1455
 
              if (bytes == 2)
1456
 
                *d++ = cur_row[col + 1];
1457
 
              rcol++;
1458
 
              if (rcol == 128) rcol = 0;
1459
 
            }
1460
 
          break;
1461
 
        case 3:  /* RGB */
1462
 
        case 4:  /* RGB alpha */
1463
 
          for (col = 0; col < width * bytes; col+=bytes)
1464
 
            {
1465
 
              varde = cur_row[col + 0] +
1466
 
                        mult * sdata[rcol * xm + rrow * ym + offs];
1467
 
              *d++ = (guchar) CLAMP0255 (varde);
1468
 
              varde = cur_row[col + 1] +
1469
 
                        mult * sdata[rcol * xm + rrow * ym + offs];
1470
 
              *d++ = (guchar) CLAMP0255 (varde);
1471
 
              varde = cur_row[col + 2] +
1472
 
                        mult * sdata[rcol * xm + rrow * ym + offs];
1473
 
              *d++ = (guchar) CLAMP0255 (varde);
1474
 
              if (bytes == 4)
1475
 
                *d++ = cur_row[col + 3];
1476
 
              rcol++;
1477
 
              if (rcol == 128)
1478
 
                rcol = 0;
1479
 
            }
1480
 
          break;
1481
 
        }
1482
 
 
1483
 
      /*  store the dest  */
1484
 
      if (preview)
1485
 
        {
1486
 
          memcpy (preview_buffer + (row - y1) * width * bytes,
1487
 
                  dest,
1488
 
                  width * bytes);
1489
 
        }
1490
 
      else
1491
 
        {
1492
 
          gimp_pixel_rgn_set_row (&destPR, dest, x1, row, width);
1493
 
          if ((row % 5) == 0)
1494
 
            gimp_progress_update ((gdouble) row / (gdouble) height);
1495
 
        }
1496
 
 
1497
 
      rrow++;
1498
 
      if (rrow == 128)
1499
 
        rrow = 0;
1500
 
    }
1501
 
 
1502
 
  if (preview)
1503
 
    {
1504
 
      gimp_preview_draw_buffer (preview, preview_buffer, width * bytes);
1505
 
      g_free (preview_buffer);
1506
 
    }
1507
 
  else
1508
 
    {
1509
 
      /*  update the textured region  */
1510
 
      gimp_drawable_flush (drawable);
1511
 
      gimp_drawable_merge_shadow (drawable->drawable_id, TRUE);
1512
 
      gimp_drawable_update (drawable->drawable_id, x1, y1, width, height);
1513
 
    }
1514
 
 
1515
 
  g_free (cur_row);
1516
 
  g_free (dest);
1517
 
}