sevenwire-forgery 0.1.0
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.
- data/README.markdown +81 -0
- data/VERSION.yml +4 -0
- data/generators/forgery/USAGE +6 -0
- data/generators/forgery/forgery_generator.rb +12 -0
- data/lib/dictionaries/cities +478 -0
- data/lib/dictionaries/colors +19 -0
- data/lib/dictionaries/company_names +400 -0
- data/lib/dictionaries/countries +249 -0
- data/lib/dictionaries/female_first_names +100 -0
- data/lib/dictionaries/frequencies +8 -0
- data/lib/dictionaries/genders +2 -0
- data/lib/dictionaries/languages +97 -0
- data/lib/dictionaries/last_names +250 -0
- data/lib/dictionaries/lorem_ipsum +151 -0
- data/lib/dictionaries/male_first_names +100 -0
- data/lib/dictionaries/name_suffixes +5 -0
- data/lib/dictionaries/name_titles +6 -0
- data/lib/dictionaries/races +93 -0
- data/lib/dictionaries/shirt_sizes +7 -0
- data/lib/dictionaries/state_abbrevs +50 -0
- data/lib/dictionaries/states +50 -0
- data/lib/dictionaries/street_suffixes +21 -0
- data/lib/dictionaries/streets +500 -0
- data/lib/dictionaries/top_level_domains +9 -0
- data/lib/extensions/array.rb +11 -0
- data/lib/extensions/hash.rb +12 -0
- data/lib/extensions/range.rb +9 -0
- data/lib/extensions/string.rb +48 -0
- data/lib/forgeries/address_forgery.rb +117 -0
- data/lib/forgeries/basic_forgery.rb +73 -0
- data/lib/forgeries/internet_forgery.rb +19 -0
- data/lib/forgeries/lorem_ipsum_forgery.rb +107 -0
- data/lib/forgeries/monetary_forgery.rb +13 -0
- data/lib/forgeries/name_forgery.rb +36 -0
- data/lib/forgeries/personal_forgery.rb +23 -0
- data/lib/forgery.rb +82 -0
- data/lib/formats/phone +1 -0
- data/lib/formats/street_number +5 -0
- data/lib/formats/zip +2 -0
- data/spec/extensions/array_spec.rb +25 -0
- data/spec/extensions/range_spec.rb +17 -0
- data/spec/extensions/string_spec.rb +29 -0
- data/spec/forgeries/address_forgery_spec.rb +69 -0
- data/spec/forgeries/basic_forgery_spec.rb +175 -0
- data/spec/forgeries/internet_forgery_spec.rb +30 -0
- data/spec/forgeries/lorem_ipsum_forgery_spec.rb +128 -0
- data/spec/forgeries/monetary_forgery_spec.rb +4 -0
- data/spec/forgeries/name_forgery_spec.rb +4 -0
- data/spec/forgeries/personal_forgery_spec.rb +15 -0
- data/spec/forgery_spec.rb +36 -0
- data/spec/spec_helper.rb +31 -0
- metadata +110 -0
@@ -0,0 +1,50 @@
|
|
1
|
+
AL
|
2
|
+
AK
|
3
|
+
AZ
|
4
|
+
AR
|
5
|
+
CA
|
6
|
+
CO
|
7
|
+
CT
|
8
|
+
DE
|
9
|
+
FL
|
10
|
+
GA
|
11
|
+
HI
|
12
|
+
ID
|
13
|
+
IL
|
14
|
+
IN
|
15
|
+
IA
|
16
|
+
KS
|
17
|
+
KY
|
18
|
+
LA
|
19
|
+
ME
|
20
|
+
MD
|
21
|
+
MA
|
22
|
+
MI
|
23
|
+
MN
|
24
|
+
MS
|
25
|
+
MO
|
26
|
+
MT
|
27
|
+
NE
|
28
|
+
NV
|
29
|
+
NH
|
30
|
+
NJ
|
31
|
+
NM
|
32
|
+
NY
|
33
|
+
NC
|
34
|
+
ND
|
35
|
+
OH
|
36
|
+
OK
|
37
|
+
OR
|
38
|
+
PA
|
39
|
+
RI
|
40
|
+
SC
|
41
|
+
SD
|
42
|
+
TN
|
43
|
+
TX
|
44
|
+
UT
|
45
|
+
VT
|
46
|
+
VA
|
47
|
+
WA
|
48
|
+
WV
|
49
|
+
WI
|
50
|
+
WY
|
@@ -0,0 +1,50 @@
|
|
1
|
+
Alabama
|
2
|
+
Alaska
|
3
|
+
Arizona
|
4
|
+
Arkansas
|
5
|
+
California
|
6
|
+
Colorado
|
7
|
+
Connecticut
|
8
|
+
Delaware
|
9
|
+
Florida
|
10
|
+
Georgia
|
11
|
+
Hawaii
|
12
|
+
Idaho
|
13
|
+
Illinois
|
14
|
+
Indiana
|
15
|
+
Iowa
|
16
|
+
Kansas
|
17
|
+
Kentucky
|
18
|
+
Louisiana
|
19
|
+
Maine
|
20
|
+
Maryland
|
21
|
+
Massachusetts
|
22
|
+
Michigan
|
23
|
+
Minnesota
|
24
|
+
Mississippi
|
25
|
+
Missouri
|
26
|
+
Montana
|
27
|
+
Nebraska
|
28
|
+
Nevada
|
29
|
+
New Hampshire
|
30
|
+
New Jersey
|
31
|
+
New Mexico
|
32
|
+
New York
|
33
|
+
North Carolina
|
34
|
+
North Dakota
|
35
|
+
Ohio
|
36
|
+
Oklahoma
|
37
|
+
Oregon
|
38
|
+
Pennsylvania
|
39
|
+
Rhode Island
|
40
|
+
South Carolina
|
41
|
+
South Dakota
|
42
|
+
Tennessee
|
43
|
+
Texas
|
44
|
+
Utah
|
45
|
+
Vermont
|
46
|
+
Virginia
|
47
|
+
Washington
|
48
|
+
West Virginia
|
49
|
+
Wisconsin
|
50
|
+
Wyoming
|
@@ -0,0 +1,500 @@
|
|
1
|
+
1st
|
2
|
+
2nd
|
3
|
+
3rd
|
4
|
+
4th
|
5
|
+
5th
|
6
|
+
6th
|
7
|
+
7th
|
8
|
+
8th
|
9
|
+
Aberg
|
10
|
+
Acker
|
11
|
+
Algoma
|
12
|
+
Almo
|
13
|
+
Alpine
|
14
|
+
American
|
15
|
+
American Ash
|
16
|
+
Amoth
|
17
|
+
Anderson
|
18
|
+
Anhalt
|
19
|
+
Annamark
|
20
|
+
Anniversary
|
21
|
+
Anthes
|
22
|
+
Anzinger
|
23
|
+
Arapahoe
|
24
|
+
Arizona
|
25
|
+
Arkansas
|
26
|
+
Armistice
|
27
|
+
Arrowood
|
28
|
+
Artisan
|
29
|
+
Atwood
|
30
|
+
Autumn Leaf
|
31
|
+
Badeau
|
32
|
+
Banding
|
33
|
+
Barby
|
34
|
+
Barnett
|
35
|
+
Bartelt
|
36
|
+
Bartillon
|
37
|
+
Bashford
|
38
|
+
Basil
|
39
|
+
Bay
|
40
|
+
Bayside
|
41
|
+
Becker
|
42
|
+
Beilfuss
|
43
|
+
Bellgrove
|
44
|
+
Birchwood
|
45
|
+
Blackbird
|
46
|
+
Blaine
|
47
|
+
Blue Bill Park
|
48
|
+
Bluejay
|
49
|
+
Bluestem
|
50
|
+
Bobwhite
|
51
|
+
Bonner
|
52
|
+
Bowman
|
53
|
+
Boyd
|
54
|
+
Brentwood
|
55
|
+
Briar Crest
|
56
|
+
Brickson Park
|
57
|
+
Brown
|
58
|
+
Browning
|
59
|
+
Buell
|
60
|
+
Buena Vista
|
61
|
+
Buhler
|
62
|
+
Bultman
|
63
|
+
Bunker Hill
|
64
|
+
Bunting
|
65
|
+
Burning Wood
|
66
|
+
Burrows
|
67
|
+
Butterfield
|
68
|
+
Butternut
|
69
|
+
Caliangt
|
70
|
+
Calypso
|
71
|
+
Cambridge
|
72
|
+
Canary
|
73
|
+
Carberry
|
74
|
+
Cardinal
|
75
|
+
Carey
|
76
|
+
Carioca
|
77
|
+
Carpenter
|
78
|
+
Cascade
|
79
|
+
Center
|
80
|
+
Charing Cross
|
81
|
+
Cherokee
|
82
|
+
Chinook
|
83
|
+
Chive
|
84
|
+
Claremont
|
85
|
+
Clarendon
|
86
|
+
Clemons
|
87
|
+
Clove
|
88
|
+
Clyde Gallagher
|
89
|
+
Cody
|
90
|
+
Coleman
|
91
|
+
Colorado
|
92
|
+
Columbus
|
93
|
+
Comanche
|
94
|
+
Commercial
|
95
|
+
Continental
|
96
|
+
Coolidge
|
97
|
+
Corben
|
98
|
+
Cordelia
|
99
|
+
Corry
|
100
|
+
Corscot
|
101
|
+
Cottonwood
|
102
|
+
Crescent Oaks
|
103
|
+
Crest Line
|
104
|
+
Crowley
|
105
|
+
Crownhardt
|
106
|
+
Dahle
|
107
|
+
Dakota
|
108
|
+
Dapin
|
109
|
+
Darwin
|
110
|
+
David
|
111
|
+
Dawn
|
112
|
+
Daystar
|
113
|
+
Dayton
|
114
|
+
Debra
|
115
|
+
Debs
|
116
|
+
Declaration
|
117
|
+
Del Mar
|
118
|
+
Del Sol
|
119
|
+
Delaware
|
120
|
+
Delladonna
|
121
|
+
Dennis
|
122
|
+
Derek
|
123
|
+
Dexter
|
124
|
+
Di Loreto
|
125
|
+
Division
|
126
|
+
Dixon
|
127
|
+
Doe Crossing
|
128
|
+
Donald
|
129
|
+
Dorton
|
130
|
+
Dottie
|
131
|
+
Dovetail
|
132
|
+
Drewry
|
133
|
+
Dryden
|
134
|
+
Duke
|
135
|
+
Dunning
|
136
|
+
Dwight
|
137
|
+
Eagan
|
138
|
+
Eagle Crest
|
139
|
+
East
|
140
|
+
Eastlawn
|
141
|
+
Eastwood
|
142
|
+
Eggendart
|
143
|
+
Elgar
|
144
|
+
Eliot
|
145
|
+
Elka
|
146
|
+
Elmside
|
147
|
+
Emmet
|
148
|
+
Erie
|
149
|
+
Esch
|
150
|
+
Esker
|
151
|
+
Everett
|
152
|
+
Evergreen
|
153
|
+
Express
|
154
|
+
Fair Oaks
|
155
|
+
Fairfield
|
156
|
+
Fairview
|
157
|
+
Fallview
|
158
|
+
Farmco
|
159
|
+
Farragut
|
160
|
+
Farwell
|
161
|
+
Fieldstone
|
162
|
+
Fisk
|
163
|
+
Florence
|
164
|
+
Fordem
|
165
|
+
Forest
|
166
|
+
Forest Dale
|
167
|
+
Forest Run
|
168
|
+
Forster
|
169
|
+
Fremont
|
170
|
+
Fuller
|
171
|
+
Fulton
|
172
|
+
Gale
|
173
|
+
Garrison
|
174
|
+
Gateway
|
175
|
+
Gerald
|
176
|
+
Gina
|
177
|
+
Glacier Hill
|
178
|
+
Glendale
|
179
|
+
Golden Leaf
|
180
|
+
Golf
|
181
|
+
Golf Course
|
182
|
+
Golf View
|
183
|
+
Goodland
|
184
|
+
Graceland
|
185
|
+
Graedel
|
186
|
+
Granby
|
187
|
+
Grasskamp
|
188
|
+
Grayhawk
|
189
|
+
Green
|
190
|
+
Green Ridge
|
191
|
+
Grim
|
192
|
+
Grover
|
193
|
+
Gulseth
|
194
|
+
Haas
|
195
|
+
Hagan
|
196
|
+
Hallows
|
197
|
+
Hanover
|
198
|
+
Hanson
|
199
|
+
Hansons
|
200
|
+
Harbort
|
201
|
+
Harper
|
202
|
+
Hauk
|
203
|
+
Havey
|
204
|
+
Hayes
|
205
|
+
Hazelcrest
|
206
|
+
Heath
|
207
|
+
Heffernan
|
208
|
+
Helena
|
209
|
+
Hermina
|
210
|
+
High Crossing
|
211
|
+
Hintze
|
212
|
+
Hoard
|
213
|
+
Hoepker
|
214
|
+
Hoffman
|
215
|
+
Hollow Ridge
|
216
|
+
Holmberg
|
217
|
+
Holy Cross
|
218
|
+
Homewood
|
219
|
+
Hooker
|
220
|
+
Hovde
|
221
|
+
Hudson
|
222
|
+
Huxley
|
223
|
+
Ilene
|
224
|
+
Independence
|
225
|
+
International
|
226
|
+
Iowa
|
227
|
+
Jackson
|
228
|
+
Jana
|
229
|
+
Jay
|
230
|
+
Jenifer
|
231
|
+
Jenna
|
232
|
+
John Wall
|
233
|
+
Johnson
|
234
|
+
Judy
|
235
|
+
Karstens
|
236
|
+
Katie
|
237
|
+
Kedzie
|
238
|
+
Kennedy
|
239
|
+
Kensington
|
240
|
+
Kenwood
|
241
|
+
Killdeer
|
242
|
+
Kim
|
243
|
+
Kings
|
244
|
+
Kingsford
|
245
|
+
Kinsman
|
246
|
+
Kipling
|
247
|
+
Knutson
|
248
|
+
Kropf
|
249
|
+
La Follette
|
250
|
+
Lake View
|
251
|
+
Lakeland
|
252
|
+
Lakewood
|
253
|
+
Lakewood Gardens
|
254
|
+
Larry
|
255
|
+
Laurel
|
256
|
+
Lawn
|
257
|
+
Lerdahl
|
258
|
+
Leroy
|
259
|
+
Lien
|
260
|
+
Lighthouse Bay
|
261
|
+
Lillian
|
262
|
+
Lindbergh
|
263
|
+
Linden
|
264
|
+
Little Fleur
|
265
|
+
Loeprich
|
266
|
+
Loftsgordon
|
267
|
+
Logan
|
268
|
+
Londonderry
|
269
|
+
Longview
|
270
|
+
Loomis
|
271
|
+
Lotheville
|
272
|
+
Ludington
|
273
|
+
Lukken
|
274
|
+
Lunder
|
275
|
+
Luster
|
276
|
+
Lyons
|
277
|
+
Macpherson
|
278
|
+
Magdeline
|
279
|
+
Main
|
280
|
+
Mallard
|
281
|
+
Mallory
|
282
|
+
Mandrake
|
283
|
+
Manitowish
|
284
|
+
Manley
|
285
|
+
Manufacturers
|
286
|
+
Maple
|
287
|
+
Maple Wood
|
288
|
+
Marcy
|
289
|
+
Mariners Cove
|
290
|
+
Marquette
|
291
|
+
Maryland
|
292
|
+
Mayer
|
293
|
+
Mayfield
|
294
|
+
Maywood
|
295
|
+
Mcbride
|
296
|
+
Mccormick
|
297
|
+
Mcguire
|
298
|
+
Meadow Ridge
|
299
|
+
Meadow Vale
|
300
|
+
Meadow Valley
|
301
|
+
Melby
|
302
|
+
Melody
|
303
|
+
Melrose
|
304
|
+
Melvin
|
305
|
+
Memorial
|
306
|
+
Mendota
|
307
|
+
Menomonie
|
308
|
+
Merchant
|
309
|
+
Merrick
|
310
|
+
Merry
|
311
|
+
Messerschmidt
|
312
|
+
Mesta
|
313
|
+
Michigan
|
314
|
+
Mifflin
|
315
|
+
Miller
|
316
|
+
Milwaukee
|
317
|
+
Mitchell
|
318
|
+
Mockingbird
|
319
|
+
Moland
|
320
|
+
Monica
|
321
|
+
Montana
|
322
|
+
Monterey
|
323
|
+
Monument
|
324
|
+
Moose
|
325
|
+
Morning
|
326
|
+
Morningstar
|
327
|
+
Morrow
|
328
|
+
Mosinee
|
329
|
+
Moulton
|
330
|
+
Muir
|
331
|
+
Myrtle
|
332
|
+
Namekagon
|
333
|
+
Nancy
|
334
|
+
Nelson
|
335
|
+
Nevada
|
336
|
+
New Castle
|
337
|
+
Nobel
|
338
|
+
North
|
339
|
+
Northfield
|
340
|
+
Northland
|
341
|
+
Northport
|
342
|
+
Northridge
|
343
|
+
Northview
|
344
|
+
Northwestern
|
345
|
+
Norway Maple
|
346
|
+
Nova
|
347
|
+
Novick
|
348
|
+
Oak
|
349
|
+
Oak Valley
|
350
|
+
Oakridge
|
351
|
+
Ohio
|
352
|
+
Old Gate
|
353
|
+
Old Shore
|
354
|
+
Oneill
|
355
|
+
Onsgard
|
356
|
+
Orin
|
357
|
+
Oriole
|
358
|
+
Oxford
|
359
|
+
Packers
|
360
|
+
Paget
|
361
|
+
Pankratz
|
362
|
+
Park Meadow
|
363
|
+
Parkside
|
364
|
+
Pawling
|
365
|
+
Pearson
|
366
|
+
Pennsylvania
|
367
|
+
Pepper Wood
|
368
|
+
Petterle
|
369
|
+
Pierstorff
|
370
|
+
Pine View
|
371
|
+
Pleasure
|
372
|
+
Pond
|
373
|
+
Portage
|
374
|
+
Porter
|
375
|
+
Prairie Rose
|
376
|
+
Prairieview
|
377
|
+
Prentice
|
378
|
+
Quincy
|
379
|
+
Ramsey
|
380
|
+
Randy
|
381
|
+
Raven
|
382
|
+
Red Cloud
|
383
|
+
Redwing
|
384
|
+
Reindahl
|
385
|
+
Reinke
|
386
|
+
Ridge Oak
|
387
|
+
Ridgeview
|
388
|
+
Ridgeway
|
389
|
+
Rieder
|
390
|
+
Rigney
|
391
|
+
Riverside
|
392
|
+
Rockefeller
|
393
|
+
Ronald Regan
|
394
|
+
Roth
|
395
|
+
Rowland
|
396
|
+
Roxbury
|
397
|
+
Rusk
|
398
|
+
Ruskin
|
399
|
+
Russell
|
400
|
+
Rutledge
|
401
|
+
Ryan
|
402
|
+
Sachs
|
403
|
+
Sachtjen
|
404
|
+
Sage
|
405
|
+
Saint Paul
|
406
|
+
Sauthoff
|
407
|
+
Schiller
|
408
|
+
Schlimgen
|
409
|
+
Schmedeman
|
410
|
+
School
|
411
|
+
Schurz
|
412
|
+
Scofield
|
413
|
+
Scott
|
414
|
+
Scoville
|
415
|
+
Service
|
416
|
+
Shasta
|
417
|
+
Shelley
|
418
|
+
Sheridan
|
419
|
+
Sherman
|
420
|
+
Shopko
|
421
|
+
Shoshone
|
422
|
+
Sloan
|
423
|
+
Sommers
|
424
|
+
South
|
425
|
+
Southridge
|
426
|
+
Spaight
|
427
|
+
Spenser
|
428
|
+
Spohn
|
429
|
+
Springs
|
430
|
+
Springview
|
431
|
+
Stang
|
432
|
+
Starling
|
433
|
+
Steensland
|
434
|
+
Stephen
|
435
|
+
Stone Corner
|
436
|
+
Stoughton
|
437
|
+
Straubel
|
438
|
+
Stuart
|
439
|
+
Sugar
|
440
|
+
Sullivan
|
441
|
+
Summer Ridge
|
442
|
+
Summerview
|
443
|
+
Summit
|
444
|
+
Sunbrook
|
445
|
+
Sundown
|
446
|
+
Sunfield
|
447
|
+
Sunnyside
|
448
|
+
Superior
|
449
|
+
Surrey
|
450
|
+
Susan
|
451
|
+
Sutherland
|
452
|
+
Sutteridge
|
453
|
+
Swallow
|
454
|
+
Sycamore
|
455
|
+
Talisman
|
456
|
+
Talmadge
|
457
|
+
Tennessee
|
458
|
+
Tennyson
|
459
|
+
Texas
|
460
|
+
Thackeray
|
461
|
+
Thierer
|
462
|
+
Thompson
|
463
|
+
Toban
|
464
|
+
Tomscot
|
465
|
+
Tony
|
466
|
+
Towne
|
467
|
+
Trailsway
|
468
|
+
Transport
|
469
|
+
Troy
|
470
|
+
Truax
|
471
|
+
Twin Pines
|
472
|
+
Union
|
473
|
+
Upham
|
474
|
+
Utah
|
475
|
+
Vahlen
|
476
|
+
Valley Edge
|
477
|
+
Veith
|
478
|
+
Vera
|
479
|
+
Vermont
|
480
|
+
Vernon
|
481
|
+
Victoria
|
482
|
+
Vidon
|
483
|
+
Village
|
484
|
+
Village Green
|
485
|
+
Walton
|
486
|
+
Warbler
|
487
|
+
Warner
|
488
|
+
Warrior
|
489
|
+
Washington
|
490
|
+
Waubesa
|
491
|
+
Waxwing
|
492
|
+
Wayridge
|
493
|
+
Waywood
|
494
|
+
Weeping Birch
|
495
|
+
Welch
|
496
|
+
West
|
497
|
+
Westend
|
498
|
+
Westerfield
|
499
|
+
Westport
|
500
|
+
Westridge
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Hash
|
2
|
+
# Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second.
|
3
|
+
def reverse_merge(other_hash)
|
4
|
+
other_hash.merge(self)
|
5
|
+
end
|
6
|
+
|
7
|
+
# Performs the opposite of merge, with the keys and values from the first hash taking precedence over the second.
|
8
|
+
# Modifies the receiver in place.
|
9
|
+
def reverse_merge!(other_hash)
|
10
|
+
replace(reverse_merge(other_hash))
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class String
|
2
|
+
def to_numbers(replace='#')
|
3
|
+
self.gsub(/#{replace}/){ Kernel.rand(10) }
|
4
|
+
end
|
5
|
+
|
6
|
+
if !defined?(RAILS_ROOT)
|
7
|
+
def camelize(first_letter = :upper)
|
8
|
+
case first_letter
|
9
|
+
when :upper
|
10
|
+
to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
11
|
+
when :lower
|
12
|
+
first.downcase + camelize(self)[1..-1]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def underscore
|
17
|
+
to_s.gsub(/::/, '/').
|
18
|
+
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
|
19
|
+
gsub(/([a-z\d])([A-Z])/,'\1_\2').
|
20
|
+
tr("-", "_").
|
21
|
+
downcase
|
22
|
+
end
|
23
|
+
|
24
|
+
if Module.method(:const_get).arity == 1
|
25
|
+
def constantize
|
26
|
+
names = self.split('::')
|
27
|
+
names.shift if names.empty? || names.first.empty?
|
28
|
+
|
29
|
+
constant = Object
|
30
|
+
names.each do |name|
|
31
|
+
constant = constant.const_defined?(name) ? constant.const_get(name) : constant.const_missing(name)
|
32
|
+
end
|
33
|
+
constant
|
34
|
+
end
|
35
|
+
else
|
36
|
+
def constantize
|
37
|
+
names = self.split('::')
|
38
|
+
names.shift if names.empty? || names.first.empty?
|
39
|
+
|
40
|
+
constant = Object
|
41
|
+
names.each do |name|
|
42
|
+
constant = constant.const_get(name, false) || constant.const_missing(name)
|
43
|
+
end
|
44
|
+
constant
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|