maxmind-db 1.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +4 -0
  3. data/LICENSE-APACHE +202 -0
  4. data/LICENSE-MIT +17 -0
  5. data/README.dev.md +30 -0
  6. data/README.md +54 -0
  7. data/Rakefile +12 -0
  8. data/bin/mmdb-benchmark.rb +61 -0
  9. data/lib/maxmind/db.rb +274 -0
  10. data/lib/maxmind/db/decoder.rb +232 -0
  11. data/lib/maxmind/db/errors.rb +8 -0
  12. data/lib/maxmind/db/file_reader.rb +37 -0
  13. data/lib/maxmind/db/memory_reader.rb +24 -0
  14. data/lib/maxmind/db/metadata.rb +61 -0
  15. data/maxmind-db.gemspec +19 -0
  16. data/test/data/LICENSE +4 -0
  17. data/test/data/MaxMind-DB-spec.md +558 -0
  18. data/test/data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  19. data/test/data/README.md +4 -0
  20. data/test/data/bad-data/README.md +7 -0
  21. data/test/data/bad-data/libmaxminddb/libmaxminddb-offset-integer-overflow.mmdb +0 -0
  22. data/test/data/bad-data/maxminddb-golang/cyclic-data-structure.mmdb +0 -0
  23. data/test/data/bad-data/maxminddb-golang/invalid-bytes-length.mmdb +1 -0
  24. data/test/data/bad-data/maxminddb-golang/invalid-data-record-offset.mmdb +0 -0
  25. data/test/data/bad-data/maxminddb-golang/invalid-map-key-length.mmdb +0 -0
  26. data/test/data/bad-data/maxminddb-golang/invalid-string-length.mmdb +1 -0
  27. data/test/data/bad-data/maxminddb-golang/metadata-is-an-uint128.mmdb +1 -0
  28. data/test/data/bad-data/maxminddb-golang/unexpected-bytes.mmdb +0 -0
  29. data/test/data/perltidyrc +12 -0
  30. data/test/data/source-data/GeoIP2-Anonymous-IP-Test.json +41 -0
  31. data/test/data/source-data/GeoIP2-City-Test.json +12852 -0
  32. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +102 -0
  33. data/test/data/source-data/GeoIP2-Country-Test.json +11347 -0
  34. data/test/data/source-data/GeoIP2-DensityIncome-Test.json +14 -0
  35. data/test/data/source-data/GeoIP2-Domain-Test.json +452 -0
  36. data/test/data/source-data/GeoIP2-Enterprise-Test.json +673 -0
  37. data/test/data/source-data/GeoIP2-ISP-Test.json +12585 -0
  38. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +1598 -0
  39. data/test/data/source-data/GeoIP2-User-Count-Test.json +2824 -0
  40. data/test/data/source-data/GeoLite2-ASN-Test.json +37 -0
  41. data/test/data/source-data/README +15 -0
  42. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  49. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  50. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  51. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  52. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  53. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  54. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  66. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  67. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  68. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  69. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  70. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  71. data/test/data/test-data/README.md +26 -0
  72. data/test/data/test-data/maps-with-pointers.raw +0 -0
  73. data/test/data/test-data/write-test-data.pl +620 -0
  74. data/test/data/tidyall.ini +5 -0
  75. data/test/mmdb_util.rb +24 -0
  76. data/test/test_decoder.rb +241 -0
  77. data/test/test_reader.rb +415 -0
  78. metadata +126 -0
@@ -0,0 +1,673 @@
1
+ [
2
+ {
3
+ "::2.125.160.216/125" : {
4
+ "city" : {
5
+ "confidence" : 50,
6
+ "geoname_id" : "2655045",
7
+ "names" : {
8
+ "en" : "Boxford"
9
+ }
10
+ },
11
+ "continent" : {
12
+ "code" : "EU",
13
+ "geoname_id" : 6255148,
14
+ "names" : {
15
+ "de" : "Europa",
16
+ "en" : "Europe",
17
+ "es" : "Europa",
18
+ "fr" : "Europe",
19
+ "ja" : "ヨーロッパ",
20
+ "pt-BR" : "Europa",
21
+ "ru" : "Европа",
22
+ "zh-CN" : "欧洲"
23
+ }
24
+ },
25
+ "country" : {
26
+ "confidence" : 95,
27
+ "geoname_id" : 2635167,
28
+ "is_in_european_union" : true,
29
+ "iso_code" : "GB",
30
+ "names" : {
31
+ "de" : "Vereinigtes Königreich",
32
+ "en" : "United Kingdom",
33
+ "es" : "Reino Unido",
34
+ "fr" : "Royaume-Uni",
35
+ "ja" : "イギリス",
36
+ "pt-BR" : "Reino Unido",
37
+ "ru" : "Великобритания",
38
+ "zh-CN" : "英国"
39
+ }
40
+ },
41
+ "location" : {
42
+ "accuracy_radius" : 100,
43
+ "latitude" : "51.7500",
44
+ "longitude" : "-1.2500",
45
+ "time_zone" : "Europe/London"
46
+ },
47
+ "postal" : {
48
+ "code" : "OX1",
49
+ "confidence" : 20
50
+ },
51
+ "registered_country" : {
52
+ "geoname_id" : 3017382,
53
+ "is_in_european_union" : true,
54
+ "iso_code" : "FR",
55
+ "names" : {
56
+ "de" : "Frankreich",
57
+ "en" : "France",
58
+ "es" : "Francia",
59
+ "fr" : "France",
60
+ "ja" : "フランス共和国",
61
+ "pt-BR" : "França",
62
+ "ru" : "Франция",
63
+ "zh-CN" : "法国"
64
+ }
65
+ },
66
+ "subdivisions" : [
67
+ {
68
+ "confidence" : 70,
69
+ "geoname_id" : 6269131,
70
+ "iso_code" : "ENG",
71
+ "names" : {
72
+ "en" : "England",
73
+ "es" : "Inglaterra",
74
+ "fr" : "Angleterre",
75
+ "pt-BR" : "Inglaterra"
76
+ }
77
+ },
78
+ {
79
+ "geoname_id" : 3333217,
80
+ "iso_code" : "WBK",
81
+ "names" : {
82
+ "en" : "West Berkshire",
83
+ "ru" : "Западный Беркшир",
84
+ "zh-CN" : "西伯克郡"
85
+ }
86
+ }
87
+ ]
88
+ }
89
+ },
90
+ {
91
+ "::67.43.156.0/120" : {
92
+ "continent" : {
93
+ "code" : "AS",
94
+ "geoname_id" : 6255147,
95
+ "names" : {
96
+ "de" : "Asien",
97
+ "en" : "Asia",
98
+ "es" : "Asia",
99
+ "fr" : "Asie",
100
+ "ja" : "アジア",
101
+ "pt-BR" : "Ásia",
102
+ "ru" : "Азия",
103
+ "zh-CN" : "亚洲"
104
+ }
105
+ },
106
+ "country" : {
107
+ "confidence" : 99,
108
+ "geoname_id" : 1252634,
109
+ "iso_code" : "BT",
110
+ "names" : {
111
+ "de" : "Bhutan",
112
+ "en" : "Bhutan",
113
+ "es" : "Bután",
114
+ "fr" : "Bhutan",
115
+ "ja" : "ブータン王国",
116
+ "pt-BR" : "Butão",
117
+ "ru" : "Бутан",
118
+ "zh-CN" : "不丹"
119
+ }
120
+ },
121
+ "location" : {
122
+ "accuracy_radius" : 534,
123
+ "latitude" : "27.5000",
124
+ "longitude" : "90.5000",
125
+ "time_zone" : "Asia/Thimphu"
126
+ },
127
+ "registered_country" : {
128
+ "geoname_id" : 798549,
129
+ "is_in_european_union" : true,
130
+ "iso_code" : "RO",
131
+ "names" : {
132
+ "de" : "Rumänien",
133
+ "en" : "Romania",
134
+ "es" : "Rumanía",
135
+ "fr" : "Roumanie",
136
+ "ja" : "ルーマニア",
137
+ "pt-BR" : "Romênia",
138
+ "ru" : "Румыния",
139
+ "zh-CN" : "罗马尼亚"
140
+ }
141
+ },
142
+ "traits" : {
143
+ "autonomous_system_number" : 35908,
144
+ "domain" : "shoesfin.NET",
145
+ "is_anonymous_proxy" : true,
146
+ "isp" : "Loud Packet",
147
+ "organization" : "zudoarichikito_",
148
+ "user_type" : "search_engine_spider"
149
+ }
150
+ }
151
+ },
152
+ {
153
+ "::74.209.24.0/116" : {
154
+ "city" : {
155
+ "confidence" : "11",
156
+ "geoname_id" : "5112335",
157
+ "names" : {
158
+ "en" : "Chatham"
159
+ }
160
+ },
161
+ "continent" : {
162
+ "code" : "NA",
163
+ "geoname_id" : "6255149",
164
+ "names" : {
165
+ "de" : "Nordamerika",
166
+ "en" : "North America",
167
+ "es" : "Norteamérica",
168
+ "fr" : "Amérique du Nord",
169
+ "ja" : "北アメリカ",
170
+ "pt-BR" : "América do Norte",
171
+ "ru" : "Северная Америка",
172
+ "zh-CN" : "北美洲"
173
+ }
174
+ },
175
+ "country" : {
176
+ "confidence" : "99",
177
+ "geoname_id" : "6252001",
178
+ "iso_code" : "US",
179
+ "names" : {
180
+ "de" : "USA",
181
+ "en" : "United States",
182
+ "es" : "Estados Unidos",
183
+ "fr" : "États-Unis",
184
+ "ja" : "アメリカ合衆国",
185
+ "pt-BR" : "Estados Unidos",
186
+ "ru" : "США",
187
+ "zh-CN" : "美国"
188
+ }
189
+ },
190
+ "location" : {
191
+ "accuracy_radius" : "27",
192
+ "latitude" : "42.347800",
193
+ "longitude" : "-73.554900",
194
+ "metro_code" : "532",
195
+ "time_zone" : "America/New_York"
196
+ },
197
+ "postal" : {
198
+ "code" : "12037",
199
+ "confidence" : "11"
200
+ },
201
+ "registered_country" : {
202
+ "geoname_id" : "6252001",
203
+ "iso_code" : "US",
204
+ "names" : {
205
+ "de" : "USA",
206
+ "en" : "United States",
207
+ "es" : "Estados Unidos",
208
+ "fr" : "États-Unis",
209
+ "ja" : "アメリカ合衆国",
210
+ "pt-BR" : "Estados Unidos",
211
+ "ru" : "США",
212
+ "zh-CN" : "美国"
213
+ }
214
+ },
215
+ "subdivisions" : [
216
+ {
217
+ "confidence" : "93",
218
+ "geoname_id" : "5128638",
219
+ "iso_code" : "NY",
220
+ "names" : {
221
+ "de" : "New York",
222
+ "en" : "New York",
223
+ "es" : "Nueva York",
224
+ "fr" : "New York",
225
+ "ja" : "ニューヨーク州",
226
+ "pt-BR" : "Nova Iorque",
227
+ "ru" : "Нью-Йорк",
228
+ "zh-CN" : "纽约州"
229
+ }
230
+ }
231
+ ],
232
+ "traits" : {
233
+ "autonomous_system_number" : "14671",
234
+ "autonomous_system_organization" : "FairPoint Communications",
235
+ "connection_type" : "Cable/DSL",
236
+ "domain" : "frpt.net",
237
+ "is_anonymous_proxy" : true,
238
+ "is_legitimate_proxy" : true,
239
+ "is_satellite_provider" : true,
240
+ "isp" : "Fairpoint Communications",
241
+ "organization" : "Fairpoint Communications",
242
+ "user_type" : "residential"
243
+ }
244
+ }
245
+ },
246
+ {
247
+ "::81.2.69.160/123" : {
248
+ "city" : {
249
+ "confidence" : 42,
250
+ "geoname_id" : "2643743",
251
+ "names" : {
252
+ "de" : "London",
253
+ "en" : "London",
254
+ "es" : "Londres",
255
+ "fr" : "Londres",
256
+ "ja" : "ロンドン",
257
+ "pt-BR" : "Londres",
258
+ "ru" : "Лондон"
259
+ }
260
+ },
261
+ "continent" : {
262
+ "code" : "EU",
263
+ "geoname_id" : 6255148,
264
+ "names" : {
265
+ "de" : "Europa",
266
+ "en" : "Europe",
267
+ "es" : "Europa",
268
+ "fr" : "Europe",
269
+ "ja" : "ヨーロッパ",
270
+ "pt-BR" : "Europa",
271
+ "ru" : "Европа",
272
+ "zh-CN" : "欧洲"
273
+ }
274
+ },
275
+ "country" : {
276
+ "confidence" : 99,
277
+ "geoname_id" : 2635167,
278
+ "is_in_european_union" : true,
279
+ "iso_code" : "GB",
280
+ "names" : {
281
+ "de" : "Vereinigtes Königreich",
282
+ "en" : "United Kingdom",
283
+ "es" : "Reino Unido",
284
+ "fr" : "Royaume-Uni",
285
+ "ja" : "イギリス",
286
+ "pt-BR" : "Reino Unido",
287
+ "ru" : "Великобритания",
288
+ "zh-CN" : "英国"
289
+ }
290
+ },
291
+ "location" : {
292
+ "accuracy_radius" : 100,
293
+ "latitude" : "51.5142",
294
+ "longitude" : "-0.0931",
295
+ "time_zone" : "Europe/London"
296
+ },
297
+ "registered_country" : {
298
+ "geoname_id" : 6252001,
299
+ "iso_code" : "US",
300
+ "names" : {
301
+ "de" : "USA",
302
+ "en" : "United States",
303
+ "es" : "Estados Unidos",
304
+ "fr" : "États-Unis",
305
+ "ja" : "アメリカ合衆国",
306
+ "pt-BR" : "Estados Unidos",
307
+ "ru" : "США",
308
+ "zh-CN" : "美国"
309
+ }
310
+ },
311
+ "subdivisions" : [
312
+ {
313
+ "confidence" : 42,
314
+ "geoname_id" : 6269131,
315
+ "iso_code" : "ENG",
316
+ "names" : {
317
+ "en" : "England",
318
+ "es" : "Inglaterra",
319
+ "fr" : "Angleterre",
320
+ "pt-BR" : "Inglaterra"
321
+ }
322
+ }
323
+ ],
324
+ "traits" : {
325
+ "connection_type" : "Corporate",
326
+ "domain" : "in-addr.arpa",
327
+ "isp" : "Andrews & Arnold Ltd",
328
+ "organization" : "STONEHOUSE office network",
329
+ "user_type" : "government"
330
+ }
331
+ }
332
+ },
333
+ {
334
+ "::89.160.20.112/124" : {
335
+ "city" : {
336
+ "confidence" : 51,
337
+ "geoname_id" : "2694762",
338
+ "names" : {
339
+ "de" : "Linköping",
340
+ "en" : "Linköping",
341
+ "fr" : "Linköping",
342
+ "ja" : "リンシェーピング",
343
+ "zh-CN" : "林雪平"
344
+ }
345
+ },
346
+ "continent" : {
347
+ "code" : "EU",
348
+ "geoname_id" : 6255148,
349
+ "names" : {
350
+ "de" : "Europa",
351
+ "en" : "Europe",
352
+ "es" : "Europa",
353
+ "fr" : "Europe",
354
+ "ja" : "ヨーロッパ",
355
+ "pt-BR" : "Europa",
356
+ "ru" : "Европа",
357
+ "zh-CN" : "欧洲"
358
+ }
359
+ },
360
+ "country" : {
361
+ "confidence" : 99,
362
+ "geoname_id" : 2661886,
363
+ "is_in_european_union" : true,
364
+ "iso_code" : "SE",
365
+ "names" : {
366
+ "de" : "Schweden",
367
+ "en" : "Sweden",
368
+ "es" : "Suecia",
369
+ "fr" : "Suède",
370
+ "ja" : "スウェーデン王国",
371
+ "pt-BR" : "Suécia",
372
+ "ru" : "Швеция",
373
+ "zh-CN" : "瑞典"
374
+ }
375
+ },
376
+ "location" : {
377
+ "accuracy_radius" : 76,
378
+ "latitude" : "58.4167",
379
+ "longitude" : "15.6167",
380
+ "time_zone" : "Europe/Stockholm"
381
+ },
382
+ "registered_country" : {
383
+ "geoname_id" : 2921044,
384
+ "is_in_european_union" : true,
385
+ "iso_code" : "DE",
386
+ "names" : {
387
+ "de" : "Deutschland",
388
+ "en" : "Germany",
389
+ "es" : "Alemania",
390
+ "fr" : "Allemagne",
391
+ "ja" : "ドイツ連邦共和国",
392
+ "pt-BR" : "Alemanha",
393
+ "ru" : "Германия",
394
+ "zh-CN" : "德国"
395
+ }
396
+ },
397
+ "subdivisions" : [
398
+ {
399
+ "confidence" : 51,
400
+ "geoname_id" : 2685867,
401
+ "iso_code" : "E",
402
+ "names" : {
403
+ "en" : "Östergötland County",
404
+ "fr" : "Comté d'Östergötland"
405
+ }
406
+ }
407
+ ],
408
+ "traits" : {
409
+ "autonomous_system_number" : 29518,
410
+ "autonomous_system_organization" : "Bredband2 AB",
411
+ "connection_type" : "Corporate",
412
+ "domain" : "bredband2.com",
413
+ "isp" : "Bredband2 AB",
414
+ "organization" : "Bevtec",
415
+ "user_type" : "government"
416
+ }
417
+ }
418
+ },
419
+ {
420
+ "::175.16.199.0/120" : {
421
+ "city" : {
422
+ "confidence" : 50,
423
+ "geoname_id" : 2038180,
424
+ "names" : {
425
+ "de" : "Chángchūn",
426
+ "en" : "Changchun",
427
+ "fr" : "Changchun",
428
+ "ja" : "長春市",
429
+ "ru" : "Чанчунь",
430
+ "zh-CN" : "长春"
431
+ }
432
+ },
433
+ "continent" : {
434
+ "code" : "AS",
435
+ "geoname_id" : 6255147,
436
+ "names" : {
437
+ "de" : "Asien",
438
+ "en" : "Asia",
439
+ "es" : "Asia",
440
+ "fr" : "Asie",
441
+ "ja" : "アジア",
442
+ "pt-BR" : "Ásia",
443
+ "ru" : "Азия",
444
+ "zh-CN" : "亚洲"
445
+ }
446
+ },
447
+ "country" : {
448
+ "confidence" : 95,
449
+ "geoname_id" : 1814991,
450
+ "iso_code" : "CN",
451
+ "names" : {
452
+ "de" : "China",
453
+ "en" : "China",
454
+ "es" : "China",
455
+ "fr" : "Chine",
456
+ "ja" : "中国",
457
+ "pt-BR" : "China",
458
+ "ru" : "Китай",
459
+ "zh-CN" : "中国"
460
+ }
461
+ },
462
+ "location" : {
463
+ "accuracy_radius" : 100,
464
+ "latitude" : 43.88,
465
+ "longitude" : 125.3228,
466
+ "time_zone" : "Asia/Harbin"
467
+ },
468
+ "registered_country" : {
469
+ "geoname_id" : 1814991,
470
+ "iso_code" : "CN",
471
+ "names" : {
472
+ "de" : "China",
473
+ "en" : "China",
474
+ "es" : "China",
475
+ "fr" : "Chine",
476
+ "ja" : "中国",
477
+ "pt-BR" : "China",
478
+ "ru" : "Китай",
479
+ "zh-CN" : "中国"
480
+ }
481
+ },
482
+ "subdivisions" : [
483
+ {
484
+ "confidence" : 70,
485
+ "geoname_id" : 2036500,
486
+ "iso_code" : "22",
487
+ "names" : {
488
+ "en" : "Jilin Sheng",
489
+ "zh-CN" : "吉林"
490
+ }
491
+ }
492
+ ],
493
+ "traits" : {
494
+ "user_type" : "dialup"
495
+ }
496
+ }
497
+ },
498
+ {
499
+ "::202.196.224.0/116" : {
500
+ "continent" : {
501
+ "code" : "AS",
502
+ "geoname_id" : 6255147,
503
+ "names" : {
504
+ "de" : "Asien",
505
+ "en" : "Asia",
506
+ "es" : "Asia",
507
+ "fr" : "Asie",
508
+ "ja" : "アジア",
509
+ "pt-BR" : "Ásia",
510
+ "ru" : "Азия",
511
+ "zh-CN" : "亚洲"
512
+ }
513
+ },
514
+ "country" : {
515
+ "confidence" : 95,
516
+ "geoname_id" : 1694008,
517
+ "iso_code" : "PH",
518
+ "names" : {
519
+ "de" : "Philippinen",
520
+ "en" : "Philippines",
521
+ "es" : "Filipinas",
522
+ "fr" : "Philippines",
523
+ "ja" : "フィリピン共和国",
524
+ "pt-BR" : "Filipinas",
525
+ "ru" : "Филиппины",
526
+ "zh-CN" : "菲律宾"
527
+ }
528
+ },
529
+ "location" : {
530
+ "accuracy_radius" : 121,
531
+ "latitude" : "13",
532
+ "longitude" : "122",
533
+ "time_zone" : "Asia/Manila"
534
+ },
535
+ "postal" : {
536
+ "code" : "34021",
537
+ "confidence" : 20
538
+ },
539
+ "registered_country" : {
540
+ "geoname_id" : 1694008,
541
+ "iso_code" : "PH",
542
+ "names" : {
543
+ "de" : "Philippinen",
544
+ "en" : "Philippines",
545
+ "es" : "Filipinas",
546
+ "fr" : "Philippines",
547
+ "ja" : "フィリピン共和国",
548
+ "pt-BR" : "Filipinas",
549
+ "ru" : "Филиппины",
550
+ "zh-CN" : "菲律宾"
551
+ }
552
+ },
553
+ "represented_country" : {
554
+ "geoname_id" : 6252001,
555
+ "iso_code" : "US",
556
+ "names" : {
557
+ "de" : "USA",
558
+ "en" : "United States",
559
+ "es" : "Estados Unidos",
560
+ "fr" : "États-Unis",
561
+ "ja" : "アメリカ合衆国",
562
+ "pt-BR" : "Estados Unidos",
563
+ "ru" : "США",
564
+ "zh-CN" : "美国"
565
+ },
566
+ "type" : "military"
567
+ }
568
+ }
569
+ },
570
+ {
571
+ "::216.160.83.56/125" : {
572
+ "city" : {
573
+ "confidence" : 40,
574
+ "geoname_id" : "5803556",
575
+ "names" : {
576
+ "en" : "Milton",
577
+ "ru" : "Мильтон"
578
+ }
579
+ },
580
+ "continent" : {
581
+ "code" : "NA",
582
+ "geoname_id" : 6255149,
583
+ "names" : {
584
+ "de" : "Nordamerika",
585
+ "en" : "North America",
586
+ "es" : "América del Norte",
587
+ "fr" : "Amérique du Nord",
588
+ "ja" : "北アメリカ",
589
+ "pt-BR" : "América do Norte",
590
+ "ru" : "Северная Америка",
591
+ "zh-CN" : "北美洲"
592
+ }
593
+ },
594
+ "country" : {
595
+ "confidence" : 99,
596
+ "geoname_id" : 6252001,
597
+ "iso_code" : "US",
598
+ "names" : {
599
+ "de" : "USA",
600
+ "en" : "United States",
601
+ "es" : "Estados Unidos",
602
+ "fr" : "États-Unis",
603
+ "ja" : "アメリカ合衆国",
604
+ "pt-BR" : "Estados Unidos",
605
+ "ru" : "США",
606
+ "zh-CN" : "美国"
607
+ }
608
+ },
609
+ "location" : {
610
+ "accuracy_radius" : 22,
611
+ "latitude" : "47.2513",
612
+ "longitude" : "-122.3149",
613
+ "metro_code" : "819",
614
+ "time_zone" : "America/Los_Angeles"
615
+ },
616
+ "postal" : {
617
+ "code" : "98354",
618
+ "confidence" : 40
619
+ },
620
+ "registered_country" : {
621
+ "geoname_id" : 2635167,
622
+ "is_in_european_union" : true,
623
+ "iso_code" : "GB",
624
+ "names" : {
625
+ "de" : "Vereinigtes Königreich",
626
+ "en" : "United Kingdom",
627
+ "es" : "Reino Unido",
628
+ "fr" : "Royaume-Uni",
629
+ "ja" : "イギリス",
630
+ "pt-BR" : "Reino Unido",
631
+ "ru" : "Великобритания",
632
+ "zh-CN" : "英国"
633
+ }
634
+ },
635
+ "subdivisions" : [
636
+ {
637
+ "confidence" : 99,
638
+ "geoname_id" : 5815135,
639
+ "iso_code" : "WA",
640
+ "names" : {
641
+ "en" : "Washington",
642
+ "es" : "Washington",
643
+ "fr" : "État de Washington",
644
+ "ja" : "ワシントン州",
645
+ "ru" : "Вашингтон",
646
+ "zh-CN" : "华盛顿州"
647
+ }
648
+ }
649
+ ],
650
+ "traits" : {
651
+ "autonomous_system_number" : 209,
652
+ "connection_type" : "Cable/DSL",
653
+ "isp" : "Century Link",
654
+ "organization" : "Lariat Software",
655
+ "user_type" : "government"
656
+ }
657
+ }
658
+ },
659
+ {
660
+ "::212.47.235.81/128" : {
661
+ "traits" : {
662
+ "is_anonymous_proxy" : true
663
+ }
664
+ }
665
+ },
666
+ {
667
+ "::212.47.235.82/128" : {
668
+ "traits" : {
669
+ "is_satellite_provider" : true
670
+ }
671
+ }
672
+ }
673
+ ]