castanet 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,60 @@
1
+ require 'castanet'
2
+
3
+ module Castanet
4
+ ##
5
+ # Contains a method to build query strings.
6
+ module QueryBuilding
7
+ ##
8
+ # Generates query strings.
9
+ #
10
+ # Given a list of the form
11
+ #
12
+ # [ [k1, v1],
13
+ # ...
14
+ # [kn, vn]
15
+ # ]
16
+ #
17
+ # produces the query string
18
+ #
19
+ # e(k1)=e(v1)&...&e(kn)=e(vn)
20
+ #
21
+ # where `e` is a function that escapes strings for query strings. The
22
+ # implementation of `e` in this module is the `escape` method from
23
+ # `Rack::Utils`.
24
+ #
25
+ # Key-value pairs that have null values will be removed from the query
26
+ # string.
27
+ #
28
+ # @param [Array<Array<String>>] key_value_pairs an array of key-value pairs
29
+ def query(*key_value_pairs)
30
+ key_value_pairs.reject { |_, v| !v }.
31
+ map { |x, y| escape(x) + '=' + escape(y) }.join('&')
32
+ end
33
+
34
+ private
35
+
36
+ ##
37
+ # From Rack::Utils v1.2.1.
38
+ #
39
+ # Copied here to avoid dragging in all of Rack for just this method.
40
+ def escape(s)
41
+ s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) {
42
+ '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase
43
+ }.tr(' ', '+')
44
+ end
45
+
46
+ # Returns the bytesize of String; uses String#size under Ruby 1.8 and
47
+ # String#bytesize under 1.9.
48
+ #
49
+ # Also taken from Rack::Utils v1.2.1.
50
+ if ''.respond_to?(:bytesize)
51
+ def bytesize(string)
52
+ string.bytesize
53
+ end
54
+ else
55
+ def bytesize(string)
56
+ string.size
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,24 @@
1
+ require 'castanet'
2
+
3
+ module Castanet
4
+ module Responses
5
+ autoload :Proxy, 'castanet/responses/proxy'
6
+ autoload :TicketValidate, 'castanet/responses/ticket_validate'
7
+
8
+ ##
9
+ # Parses a response from `/proxy`.
10
+ #
11
+ # @return [Proxy]
12
+ def parsed_proxy_response(response)
13
+ Proxy.from_cas(response)
14
+ end
15
+
16
+ ##
17
+ # Parses a response from `/serviceValidate` or `/proxyValidate`.
18
+ #
19
+ # @return [TicketValidate]
20
+ def parsed_ticket_validate_response(response)
21
+ TicketValidate.from_cas(response)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,44 @@
1
+ %%{
2
+ machine common;
3
+
4
+ # Needed to support XML's character set, i.e. Unicode minus surrogate blocks.
5
+ # See http://www.w3.org/TR/REC-xml/#charsets.
6
+ alphtype int;
7
+
8
+ # Actions
9
+ # -------
10
+
11
+ action buffer { buffer << fc }
12
+
13
+ # XML definitions
14
+ # ---------------
15
+
16
+ quote = '"' | "'";
17
+
18
+ # See http://www.w3.org/TR/REC-xml/#syntax.
19
+ char_data = [^<&]* - ([^<&]* "]]>" [^<&]*);
20
+
21
+ # CAS definitions
22
+ # ---------------
23
+
24
+ # Section 3.7
25
+ ticket_character = 'A' .. 'Z' | 'a' .. 'z' | '0' .. '9' | '-';
26
+ ticket = ticket_character*;
27
+
28
+ # All service responses (Appendix A)
29
+ service_response_start = "<cas:serviceResponse xmlns:cas="
30
+ quote
31
+ "http://www.yale.edu/tp/cas"
32
+ quote
33
+ ">";
34
+ service_response_end = "</cas:serviceResponse>";
35
+
36
+ # Error codes and reasons
37
+ # -----------------------
38
+
39
+ # No specific section or prescription, but the CAS protocol always writes
40
+ # codes out with uppercase letters and underscores.
41
+ failure_code = ( ( upper | '_' ) @buffer )*;
42
+
43
+ failure_reason = char_data @buffer;
44
+ }%%
@@ -0,0 +1,526 @@
1
+
2
+ require 'castanet'
3
+
4
+
5
+
6
+
7
+ module Castanet::Responses
8
+ ##
9
+ # A parsed representation of responses from `/proxy`.
10
+ #
11
+ # The code in this class implements a state machine generated by Ragel. The
12
+ # state machine definition is in proxy.rl.
13
+ class Proxy
14
+ ##
15
+ # Whether or not a proxy ticket could be issued.
16
+ #
17
+ # @return [Boolean]
18
+ attr_accessor :ok
19
+
20
+ alias_method :ok?, :ok
21
+
22
+ ##
23
+ # The proxy ticket issued by the CAS server.
24
+ #
25
+ # If {#ok} is false, this will be `nil`.
26
+ #
27
+ # @return [String, nil]
28
+ attr_accessor :ticket
29
+
30
+ ##
31
+ # On ticket issuance failure, contains the code identifying the
32
+ # nature of the failure.
33
+ #
34
+ # On success, is nil.
35
+ #
36
+ # @see http://www.jasig.org/cas/protocol CAS protocol, sections 2.7.2 and 2.7.3
37
+ # @return [String, nil]
38
+ attr_accessor :failure_code
39
+
40
+ ##
41
+ # On ticket issuance failure, contains the failure reason.
42
+ #
43
+ # On success, is nil.
44
+ #
45
+ # @see http://www.jasig.org/cas/protocol CAS protocol, section 2.7.2
46
+ # @return [String, nil]
47
+ attr_accessor :failure_reason
48
+
49
+ ##
50
+ # Generates a {Proxy} object from a CAS response.
51
+ #
52
+ # @param [String] response the CAS response
53
+ # @return [Proxy]
54
+ def self.from_cas(response)
55
+ data = response.strip.unpack('U*')
56
+ buffer = ''
57
+
58
+
59
+ begin
60
+ p ||= 0
61
+ pe ||= data.length
62
+ cs = proxy_start
63
+ end
64
+
65
+
66
+ new.tap do |r|
67
+
68
+ begin
69
+ _klen, _trans, _keys, _acts, _nacts = nil
70
+ _goto_level = 0
71
+ _resume = 10
72
+ _eof_trans = 15
73
+ _again = 20
74
+ _test_eof = 30
75
+ _out = 40
76
+ while true
77
+ _trigger_goto = false
78
+ if _goto_level <= 0
79
+ if p == pe
80
+ _goto_level = _test_eof
81
+ next
82
+ end
83
+ if cs == 0
84
+ _goto_level = _out
85
+ next
86
+ end
87
+ end
88
+ if _goto_level <= _resume
89
+ _keys = _proxy_key_offsets[cs]
90
+ _trans = _proxy_index_offsets[cs]
91
+ _klen = _proxy_single_lengths[cs]
92
+ _break_match = false
93
+
94
+ begin
95
+ if _klen > 0
96
+ _lower = _keys
97
+ _upper = _keys + _klen - 1
98
+
99
+ loop do
100
+ break if _upper < _lower
101
+ _mid = _lower + ( (_upper - _lower) >> 1 )
102
+
103
+ if data[p] < _proxy_trans_keys[_mid]
104
+ _upper = _mid - 1
105
+ elsif data[p] > _proxy_trans_keys[_mid]
106
+ _lower = _mid + 1
107
+ else
108
+ _trans += (_mid - _keys)
109
+ _break_match = true
110
+ break
111
+ end
112
+ end # loop
113
+ break if _break_match
114
+ _keys += _klen
115
+ _trans += _klen
116
+ end
117
+ _klen = _proxy_range_lengths[cs]
118
+ if _klen > 0
119
+ _lower = _keys
120
+ _upper = _keys + (_klen << 1) - 2
121
+ loop do
122
+ break if _upper < _lower
123
+ _mid = _lower + (((_upper-_lower) >> 1) & ~1)
124
+ if data[p] < _proxy_trans_keys[_mid]
125
+ _upper = _mid - 2
126
+ elsif data[p] > _proxy_trans_keys[_mid+1]
127
+ _lower = _mid + 2
128
+ else
129
+ _trans += ((_mid - _keys) >> 1)
130
+ _break_match = true
131
+ break
132
+ end
133
+ end # loop
134
+ break if _break_match
135
+ _trans += _klen
136
+ end
137
+ end while false
138
+ cs = _proxy_trans_targs[_trans]
139
+ if _proxy_trans_actions[_trans] != 0
140
+ _acts = _proxy_trans_actions[_trans]
141
+ _nacts = _proxy_actions[_acts]
142
+ _acts += 1
143
+ while _nacts > 0
144
+ _nacts -= 1
145
+ _acts += 1
146
+ case _proxy_actions[_acts - 1]
147
+ when 0 then
148
+ begin
149
+ buffer << data[p] end
150
+ when 1 then
151
+ begin
152
+ r.failure_code = buffer; buffer = '' end
153
+ when 2 then
154
+ begin
155
+ r.failure_reason = buffer.strip; buffer = '' end
156
+ when 3 then
157
+ begin
158
+ r.ticket = buffer; buffer = '' end
159
+ when 4 then
160
+ begin
161
+ r.ok = true end
162
+ end # action switch
163
+ end
164
+ end
165
+ if _trigger_goto
166
+ next
167
+ end
168
+ end
169
+ if _goto_level <= _again
170
+ if cs == 0
171
+ _goto_level = _out
172
+ next
173
+ end
174
+ p += 1
175
+ if p != pe
176
+ _goto_level = _resume
177
+ next
178
+ end
179
+ end
180
+ if _goto_level <= _test_eof
181
+ end
182
+ if _goto_level <= _out
183
+ break
184
+ end
185
+ end
186
+ end
187
+
188
+ end
189
+ end
190
+
191
+
192
+ class << self
193
+ attr_accessor :_proxy_actions
194
+ private :_proxy_actions, :_proxy_actions=
195
+ end
196
+ self._proxy_actions = [
197
+ 0, 1, 0, 1, 1, 1, 2, 1,
198
+ 3, 1, 4
199
+ ]
200
+
201
+ class << self
202
+ attr_accessor :_proxy_key_offsets
203
+ private :_proxy_key_offsets, :_proxy_key_offsets=
204
+ end
205
+ self._proxy_key_offsets = [
206
+ 0, 0, 1, 2, 3, 4, 5, 6,
207
+ 7, 8, 9, 10, 11, 12, 13, 14,
208
+ 15, 16, 17, 18, 19, 20, 21, 22,
209
+ 23, 24, 25, 26, 27, 28, 29, 30,
210
+ 31, 33, 34, 35, 36, 37, 38, 39,
211
+ 40, 41, 42, 43, 44, 45, 46, 47,
212
+ 48, 49, 50, 51, 52, 53, 54, 55,
213
+ 56, 57, 58, 59, 61, 62, 66, 67,
214
+ 68, 69, 70, 71, 72, 73, 74, 75,
215
+ 77, 78, 79, 80, 81, 82, 83, 84,
216
+ 85, 86, 87, 88, 89, 91, 96, 97,
217
+ 100, 101, 102, 103, 104, 105, 106, 107,
218
+ 108, 109, 110, 111, 112, 113, 114, 115,
219
+ 116, 117, 118, 122, 123, 124, 125, 126,
220
+ 127, 128, 129, 130, 131, 132, 133, 134,
221
+ 135, 136, 137, 138, 139, 140, 141, 142,
222
+ 143, 146, 150, 151, 152, 153, 154, 155,
223
+ 156, 157, 161, 162, 163, 164, 165, 166,
224
+ 167, 168, 169, 170, 171, 172, 173, 174,
225
+ 175, 176, 177, 185, 186, 187, 188, 189,
226
+ 190, 191, 192, 193, 194, 195, 196, 197,
227
+ 198, 199, 200, 201, 202, 206, 210, 211,
228
+ 212, 213, 214, 215, 216, 217, 218, 219,
229
+ 220, 221, 222, 223, 224, 225, 226, 227,
230
+ 228, 232, 233, 234, 235, 236, 237, 238,
231
+ 239, 240, 241, 242, 243, 244, 245, 246,
232
+ 247, 248, 249, 250, 251, 252, 253
233
+ ]
234
+
235
+ class << self
236
+ attr_accessor :_proxy_trans_keys
237
+ private :_proxy_trans_keys, :_proxy_trans_keys=
238
+ end
239
+ self._proxy_trans_keys = [
240
+ 60, 99, 97, 115, 58, 115, 101, 114,
241
+ 118, 105, 99, 101, 82, 101, 115, 112,
242
+ 111, 110, 115, 101, 32, 120, 109, 108,
243
+ 110, 115, 58, 99, 97, 115, 61, 34,
244
+ 39, 104, 116, 116, 112, 58, 47, 47,
245
+ 119, 119, 119, 46, 121, 97, 108, 101,
246
+ 46, 101, 100, 117, 47, 116, 112, 47,
247
+ 99, 97, 115, 34, 39, 62, 32, 60,
248
+ 9, 13, 99, 97, 115, 58, 112, 114,
249
+ 111, 120, 121, 70, 83, 97, 105, 108,
250
+ 117, 114, 101, 32, 99, 111, 100, 101,
251
+ 61, 34, 39, 34, 39, 95, 65, 90,
252
+ 62, 38, 60, 93, 47, 99, 97, 115,
253
+ 58, 112, 114, 111, 120, 121, 70, 97,
254
+ 105, 108, 117, 114, 101, 62, 32, 60,
255
+ 9, 13, 47, 99, 97, 115, 58, 115,
256
+ 101, 114, 118, 105, 99, 101, 82, 101,
257
+ 115, 112, 111, 110, 115, 101, 62, 38,
258
+ 60, 93, 38, 60, 62, 93, 117, 99,
259
+ 99, 101, 115, 115, 62, 32, 60, 9,
260
+ 13, 99, 97, 115, 58, 112, 114, 111,
261
+ 120, 121, 84, 105, 99, 107, 101, 116,
262
+ 62, 45, 60, 48, 57, 65, 90, 97,
263
+ 122, 47, 99, 97, 115, 58, 112, 114,
264
+ 111, 120, 121, 84, 105, 99, 107, 101,
265
+ 116, 62, 32, 60, 9, 13, 32, 60,
266
+ 9, 13, 47, 99, 97, 115, 58, 112,
267
+ 114, 111, 120, 121, 83, 117, 99, 99,
268
+ 101, 115, 115, 62, 32, 60, 9, 13,
269
+ 47, 99, 97, 115, 58, 115, 101, 114,
270
+ 118, 105, 99, 101, 82, 101, 115, 112,
271
+ 111, 110, 115, 101, 62, 0
272
+ ]
273
+
274
+ class << self
275
+ attr_accessor :_proxy_single_lengths
276
+ private :_proxy_single_lengths, :_proxy_single_lengths=
277
+ end
278
+ self._proxy_single_lengths = [
279
+ 0, 1, 1, 1, 1, 1, 1, 1,
280
+ 1, 1, 1, 1, 1, 1, 1, 1,
281
+ 1, 1, 1, 1, 1, 1, 1, 1,
282
+ 1, 1, 1, 1, 1, 1, 1, 1,
283
+ 2, 1, 1, 1, 1, 1, 1, 1,
284
+ 1, 1, 1, 1, 1, 1, 1, 1,
285
+ 1, 1, 1, 1, 1, 1, 1, 1,
286
+ 1, 1, 1, 2, 1, 2, 1, 1,
287
+ 1, 1, 1, 1, 1, 1, 1, 2,
288
+ 1, 1, 1, 1, 1, 1, 1, 1,
289
+ 1, 1, 1, 1, 2, 3, 1, 3,
290
+ 1, 1, 1, 1, 1, 1, 1, 1,
291
+ 1, 1, 1, 1, 1, 1, 1, 1,
292
+ 1, 1, 2, 1, 1, 1, 1, 1,
293
+ 1, 1, 1, 1, 1, 1, 1, 1,
294
+ 1, 1, 1, 1, 1, 1, 1, 1,
295
+ 3, 4, 1, 1, 1, 1, 1, 1,
296
+ 1, 2, 1, 1, 1, 1, 1, 1,
297
+ 1, 1, 1, 1, 1, 1, 1, 1,
298
+ 1, 1, 2, 1, 1, 1, 1, 1,
299
+ 1, 1, 1, 1, 1, 1, 1, 1,
300
+ 1, 1, 1, 1, 2, 2, 1, 1,
301
+ 1, 1, 1, 1, 1, 1, 1, 1,
302
+ 1, 1, 1, 1, 1, 1, 1, 1,
303
+ 2, 1, 1, 1, 1, 1, 1, 1,
304
+ 1, 1, 1, 1, 1, 1, 1, 1,
305
+ 1, 1, 1, 1, 1, 1, 0
306
+ ]
307
+
308
+ class << self
309
+ attr_accessor :_proxy_range_lengths
310
+ private :_proxy_range_lengths, :_proxy_range_lengths=
311
+ end
312
+ self._proxy_range_lengths = [
313
+ 0, 0, 0, 0, 0, 0, 0, 0,
314
+ 0, 0, 0, 0, 0, 0, 0, 0,
315
+ 0, 0, 0, 0, 0, 0, 0, 0,
316
+ 0, 0, 0, 0, 0, 0, 0, 0,
317
+ 0, 0, 0, 0, 0, 0, 0, 0,
318
+ 0, 0, 0, 0, 0, 0, 0, 0,
319
+ 0, 0, 0, 0, 0, 0, 0, 0,
320
+ 0, 0, 0, 0, 0, 1, 0, 0,
321
+ 0, 0, 0, 0, 0, 0, 0, 0,
322
+ 0, 0, 0, 0, 0, 0, 0, 0,
323
+ 0, 0, 0, 0, 0, 1, 0, 0,
324
+ 0, 0, 0, 0, 0, 0, 0, 0,
325
+ 0, 0, 0, 0, 0, 0, 0, 0,
326
+ 0, 0, 1, 0, 0, 0, 0, 0,
327
+ 0, 0, 0, 0, 0, 0, 0, 0,
328
+ 0, 0, 0, 0, 0, 0, 0, 0,
329
+ 0, 0, 0, 0, 0, 0, 0, 0,
330
+ 0, 1, 0, 0, 0, 0, 0, 0,
331
+ 0, 0, 0, 0, 0, 0, 0, 0,
332
+ 0, 0, 3, 0, 0, 0, 0, 0,
333
+ 0, 0, 0, 0, 0, 0, 0, 0,
334
+ 0, 0, 0, 0, 1, 1, 0, 0,
335
+ 0, 0, 0, 0, 0, 0, 0, 0,
336
+ 0, 0, 0, 0, 0, 0, 0, 0,
337
+ 1, 0, 0, 0, 0, 0, 0, 0,
338
+ 0, 0, 0, 0, 0, 0, 0, 0,
339
+ 0, 0, 0, 0, 0, 0, 0
340
+ ]
341
+
342
+ class << self
343
+ attr_accessor :_proxy_index_offsets
344
+ private :_proxy_index_offsets, :_proxy_index_offsets=
345
+ end
346
+ self._proxy_index_offsets = [
347
+ 0, 0, 2, 4, 6, 8, 10, 12,
348
+ 14, 16, 18, 20, 22, 24, 26, 28,
349
+ 30, 32, 34, 36, 38, 40, 42, 44,
350
+ 46, 48, 50, 52, 54, 56, 58, 60,
351
+ 62, 65, 67, 69, 71, 73, 75, 77,
352
+ 79, 81, 83, 85, 87, 89, 91, 93,
353
+ 95, 97, 99, 101, 103, 105, 107, 109,
354
+ 111, 113, 115, 117, 120, 122, 126, 128,
355
+ 130, 132, 134, 136, 138, 140, 142, 144,
356
+ 147, 149, 151, 153, 155, 157, 159, 161,
357
+ 163, 165, 167, 169, 171, 174, 179, 181,
358
+ 185, 187, 189, 191, 193, 195, 197, 199,
359
+ 201, 203, 205, 207, 209, 211, 213, 215,
360
+ 217, 219, 221, 225, 227, 229, 231, 233,
361
+ 235, 237, 239, 241, 243, 245, 247, 249,
362
+ 251, 253, 255, 257, 259, 261, 263, 265,
363
+ 267, 271, 276, 278, 280, 282, 284, 286,
364
+ 288, 290, 294, 296, 298, 300, 302, 304,
365
+ 306, 308, 310, 312, 314, 316, 318, 320,
366
+ 322, 324, 326, 332, 334, 336, 338, 340,
367
+ 342, 344, 346, 348, 350, 352, 354, 356,
368
+ 358, 360, 362, 364, 366, 370, 374, 376,
369
+ 378, 380, 382, 384, 386, 388, 390, 392,
370
+ 394, 396, 398, 400, 402, 404, 406, 408,
371
+ 410, 414, 416, 418, 420, 422, 424, 426,
372
+ 428, 430, 432, 434, 436, 438, 440, 442,
373
+ 444, 446, 448, 450, 452, 454, 456
374
+ ]
375
+
376
+ class << self
377
+ attr_accessor :_proxy_trans_targs
378
+ private :_proxy_trans_targs, :_proxy_trans_targs=
379
+ end
380
+ self._proxy_trans_targs = [
381
+ 2, 0, 3, 0, 4, 0, 5, 0,
382
+ 6, 0, 7, 0, 8, 0, 9, 0,
383
+ 10, 0, 11, 0, 12, 0, 13, 0,
384
+ 14, 0, 15, 0, 16, 0, 17, 0,
385
+ 18, 0, 19, 0, 20, 0, 21, 0,
386
+ 22, 0, 23, 0, 24, 0, 25, 0,
387
+ 26, 0, 27, 0, 28, 0, 29, 0,
388
+ 30, 0, 31, 0, 32, 0, 33, 33,
389
+ 0, 34, 0, 35, 0, 36, 0, 37,
390
+ 0, 38, 0, 39, 0, 40, 0, 41,
391
+ 0, 42, 0, 43, 0, 44, 0, 45,
392
+ 0, 46, 0, 47, 0, 48, 0, 49,
393
+ 0, 50, 0, 51, 0, 52, 0, 53,
394
+ 0, 54, 0, 55, 0, 56, 0, 57,
395
+ 0, 58, 0, 59, 0, 60, 60, 0,
396
+ 61, 0, 61, 62, 61, 0, 63, 0,
397
+ 64, 0, 65, 0, 66, 0, 67, 0,
398
+ 68, 0, 69, 0, 70, 0, 71, 0,
399
+ 72, 130, 0, 73, 0, 74, 0, 75,
400
+ 0, 76, 0, 77, 0, 78, 0, 79,
401
+ 0, 80, 0, 81, 0, 82, 0, 83,
402
+ 0, 84, 0, 85, 85, 0, 86, 86,
403
+ 85, 85, 0, 87, 0, 0, 88, 128,
404
+ 87, 89, 0, 90, 0, 91, 0, 92,
405
+ 0, 93, 0, 94, 0, 95, 0, 96,
406
+ 0, 97, 0, 98, 0, 99, 0, 100,
407
+ 0, 101, 0, 102, 0, 103, 0, 104,
408
+ 0, 105, 0, 106, 0, 106, 107, 106,
409
+ 0, 108, 0, 109, 0, 110, 0, 111,
410
+ 0, 112, 0, 113, 0, 114, 0, 115,
411
+ 0, 116, 0, 117, 0, 118, 0, 119,
412
+ 0, 120, 0, 121, 0, 122, 0, 123,
413
+ 0, 124, 0, 125, 0, 126, 0, 127,
414
+ 0, 214, 0, 0, 88, 129, 87, 0,
415
+ 88, 0, 129, 87, 131, 0, 132, 0,
416
+ 133, 0, 134, 0, 135, 0, 136, 0,
417
+ 137, 0, 137, 138, 137, 0, 139, 0,
418
+ 140, 0, 141, 0, 142, 0, 143, 0,
419
+ 144, 0, 145, 0, 146, 0, 147, 0,
420
+ 148, 0, 149, 0, 150, 0, 151, 0,
421
+ 152, 0, 153, 0, 154, 0, 154, 155,
422
+ 154, 154, 154, 0, 156, 0, 157, 0,
423
+ 158, 0, 159, 0, 160, 0, 161, 0,
424
+ 162, 0, 163, 0, 164, 0, 165, 0,
425
+ 166, 0, 167, 0, 168, 0, 169, 0,
426
+ 170, 0, 171, 0, 172, 0, 173, 174,
427
+ 173, 0, 173, 174, 173, 0, 175, 0,
428
+ 176, 0, 177, 0, 178, 0, 179, 0,
429
+ 180, 0, 181, 0, 182, 0, 183, 0,
430
+ 184, 0, 185, 0, 186, 0, 187, 0,
431
+ 188, 0, 189, 0, 190, 0, 191, 0,
432
+ 192, 0, 192, 193, 192, 0, 194, 0,
433
+ 195, 0, 196, 0, 197, 0, 198, 0,
434
+ 199, 0, 200, 0, 201, 0, 202, 0,
435
+ 203, 0, 204, 0, 205, 0, 206, 0,
436
+ 207, 0, 208, 0, 209, 0, 210, 0,
437
+ 211, 0, 212, 0, 213, 0, 214, 0,
438
+ 0, 0
439
+ ]
440
+
441
+ class << self
442
+ attr_accessor :_proxy_trans_actions
443
+ private :_proxy_trans_actions, :_proxy_trans_actions=
444
+ end
445
+ self._proxy_trans_actions = [
446
+ 0, 0, 0, 0, 0, 0, 0, 0,
447
+ 0, 0, 0, 0, 0, 0, 0, 0,
448
+ 0, 0, 0, 0, 0, 0, 0, 0,
449
+ 0, 0, 0, 0, 0, 0, 0, 0,
450
+ 0, 0, 0, 0, 0, 0, 0, 0,
451
+ 0, 0, 0, 0, 0, 0, 0, 0,
452
+ 0, 0, 0, 0, 0, 0, 0, 0,
453
+ 0, 0, 0, 0, 0, 0, 0, 0,
454
+ 0, 0, 0, 0, 0, 0, 0, 0,
455
+ 0, 0, 0, 0, 0, 0, 0, 0,
456
+ 0, 0, 0, 0, 0, 0, 0, 0,
457
+ 0, 0, 0, 0, 0, 0, 0, 0,
458
+ 0, 0, 0, 0, 0, 0, 0, 0,
459
+ 0, 0, 0, 0, 0, 0, 0, 0,
460
+ 0, 0, 0, 0, 0, 0, 0, 0,
461
+ 0, 0, 0, 0, 0, 0, 0, 0,
462
+ 0, 0, 0, 0, 0, 0, 0, 0,
463
+ 0, 0, 0, 0, 0, 0, 0, 0,
464
+ 0, 0, 0, 0, 0, 0, 0, 0,
465
+ 0, 0, 0, 0, 0, 0, 0, 0,
466
+ 0, 0, 0, 0, 0, 0, 0, 0,
467
+ 0, 0, 0, 0, 0, 0, 3, 3,
468
+ 1, 1, 0, 0, 0, 0, 5, 1,
469
+ 1, 0, 0, 0, 0, 0, 0, 0,
470
+ 0, 0, 0, 0, 0, 0, 0, 0,
471
+ 0, 0, 0, 0, 0, 0, 0, 0,
472
+ 0, 0, 0, 0, 0, 0, 0, 0,
473
+ 0, 0, 0, 0, 0, 0, 0, 0,
474
+ 0, 0, 0, 0, 0, 0, 0, 0,
475
+ 0, 0, 0, 0, 0, 0, 0, 0,
476
+ 0, 0, 0, 0, 0, 0, 0, 0,
477
+ 0, 0, 0, 0, 0, 0, 0, 0,
478
+ 0, 0, 0, 0, 0, 0, 0, 0,
479
+ 0, 0, 0, 0, 5, 1, 1, 0,
480
+ 5, 0, 1, 1, 0, 0, 0, 0,
481
+ 0, 0, 0, 0, 0, 0, 0, 0,
482
+ 0, 0, 0, 0, 0, 0, 0, 0,
483
+ 0, 0, 0, 0, 0, 0, 0, 0,
484
+ 0, 0, 0, 0, 0, 0, 0, 0,
485
+ 0, 0, 0, 0, 0, 0, 0, 0,
486
+ 0, 0, 0, 0, 0, 0, 1, 0,
487
+ 1, 1, 1, 0, 0, 0, 0, 0,
488
+ 0, 0, 0, 0, 0, 0, 0, 0,
489
+ 0, 0, 0, 0, 0, 0, 0, 0,
490
+ 0, 0, 0, 0, 0, 0, 0, 0,
491
+ 0, 0, 0, 0, 0, 0, 7, 7,
492
+ 7, 0, 0, 0, 0, 0, 0, 0,
493
+ 0, 0, 0, 0, 0, 0, 0, 0,
494
+ 0, 0, 0, 0, 0, 0, 0, 0,
495
+ 0, 0, 0, 0, 0, 0, 0, 0,
496
+ 0, 0, 0, 0, 0, 0, 0, 0,
497
+ 0, 0, 0, 0, 0, 0, 0, 0,
498
+ 0, 0, 0, 0, 0, 0, 0, 0,
499
+ 0, 0, 0, 0, 0, 0, 0, 0,
500
+ 0, 0, 0, 0, 0, 0, 0, 0,
501
+ 0, 0, 0, 0, 0, 0, 0, 0,
502
+ 0, 0, 0, 0, 0, 0, 9, 0,
503
+ 0, 0
504
+ ]
505
+
506
+ class << self
507
+ attr_accessor :proxy_start
508
+ end
509
+ self.proxy_start = 1;
510
+ class << self
511
+ attr_accessor :proxy_first_final
512
+ end
513
+ self.proxy_first_final = 214;
514
+ class << self
515
+ attr_accessor :proxy_error
516
+ end
517
+ self.proxy_error = 0;
518
+
519
+ class << self
520
+ attr_accessor :proxy_en_main
521
+ end
522
+ self.proxy_en_main = 1;
523
+
524
+
525
+ end
526
+ end