com.softcoil.ApnDefaults.java Source code

Java tutorial

Introduction

Here is the source code for com.softcoil.ApnDefaults.java

Source

package com.softcoil;

import android.content.Context;
import android.content.SharedPreferences;
import android.net.http.AndroidHttpClient;
import android.preference.PreferenceManager;
import android.telephony.TelephonyManager;

import org.apache.http.client.methods.HttpGet;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;

import java.net.URI;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

/**
 * This class is for building and using a public source of MMSC APN data for use when access to
 * the device APN data is not available. For instance when developing MMS apps for Android 4.2, 4.3.
 *
 * The class provides an in-app source for APN MMSC info for use as a fallback in
 * the event that the system APN DB is unavailable and the user has not provided
 * local MMSC configuration details of their own.
 *
 * It also provides a way for working APN configurations to report their parameters to a
 * central source so that the data can be integrated into this class and shared with the
 * public.
 *
 * Copyright 2014 SoftCoil Development, LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */
public class ApnDefaults {

    private static final String PREF_KEY_LAST_APN_REPORT = "com.softcoil.apn_data";
    private static final String REPORT_URL = "http://apn.softcoil.com/apnReport";

    /**
     * Currently known APN parameters stored by MCCMNC and sim parameters.
     */
    private static final Map<String, ApnParameters> APN_PARAMETERS_MAP = new HashMap<String, ApnParameters>() {
        {

            /// (Report Count: 1, Last Report: 2014-09-12 19:33:20)
            put("310000||123456| ", new ApnParameters("http://mms.vzwreseller.com/servlets/mms", null, null));

            // (Report Count: 1, Last Report: 2014-09-07 03:57:29)
            put("310000||31000| ", new ApnParameters("http://mms.vzwreseller.com/servlets/mms", null, null));

            // (Report Count: 1, Last Report: 2014-09-07 02:09:35)
            put("31000||31000|", new ApnParameters("null", null, null));

            // (Report Count: 1, Last Report: 2014-09-08 18:24:09)
            put("310410||310410| ", new ApnParameters("http://mmscUrl.cingular.com/", "wireless.cingular.com", 80));

            // (Report Count: 1, Last Report: 2014-07-22 13:50:03)
            put("||| ", new ApnParameters("http://mms.celcom.net.my", "10.128.1.242", 8080));

            // DiGi (Report Count: 1, Last Report: 2014-08-17 04:50:21)
            put("50216|DiGi|50216| DiGi ",
                    new ApnParameters("http://mms.digi.com.my/servlets/mms", "203.92.128.160", 80));

            // T-Mobile (Report Count: 1, Last Report: 2014-08-20 12:39:51)
            put("310260||310260| T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //1&1 (Report Count: 1, Last Report: 2014-09-05 16:14:27)
            put("26202|1&1|26202|1&1", new ApnParameters("http://139.7.24.1/servlets/mms", "139.7.29.17", 80));

            //3 (Report Count: 1, Last Report: 2014-09-12 14:53:42)
            put("23420||23420|3", new ApnParameters("http://mms.um.three.co.uk:10021/mmsc", "217.171.129.2", 8799));

            //3 (Report Count: 1, Last Report: 2014-09-11 13:53:09)
            put("24002|3|24002|3", new ApnParameters("http://mms.tre.se", "172.16.53.11", 8799));

            //3 (Report Count: 1, Last Report: 2014-07-24 10:38:38)
            put("27205||27205|3",
                    new ApnParameters("http://mms.um.3ireland.ie:10021/mmsc", "mms.3ireland.ie", 8799));

            //3 (Report Count: 1, Last Report: 2014-09-13 09:53:21)
            put("51089|3|51089|3", new ApnParameters("http://mmsc.indosat.com", "10.19.19.19", 8080));

            //3 AT (Report Count: 1, Last Report: 2014-09-07 10:27:27)
            put("23205||23205|3 AT", new ApnParameters("http://mmsc", "213.94.78.133", 8799));

            //3 ITA (Report Count: 1, Last Report: 2014-08-04 12:59:37)
            put("22299||22299|3 ITA", new ApnParameters("http://10.216.59.240:10021/mmsc", "62.13.171.3", 8799));

            //310260 (Report Count: 1, Last Report: 2014-08-01 06:36:16)
            put("310260||310260|310260", new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //425 02 (Report Count: 1, Last Report: 2014-08-15 09:47:07)
            put("42502|Cellcom|42502|425 02",
                    new ApnParameters("http://mms.cellcom.co.il", "vwapm2.ain.co.il", 8080));

            //A1 (Report Count: 1, Last Report: 2014-07-19 19:27:53)
            put("23201||23201|A1", new ApnParameters("http://mmsc.a1.net", "194.48.124.71", 8001));

            //airtel (Report Count: 1, Last Report: 2014-08-21 04:54:35)
            put("40402|airtel|40402|airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //Airtel (Report Count: 1, Last Report: 2014-08-08 08:48:33)
            put("40410|airtel|40410|Airtel",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //airtel (Report Count: 1, Last Report: 2014-07-30 10:31:29)
            put("40445|Airtel|40445|airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //Airtel (Report Count: 1, Last Report: 2014-07-17 22:35:12)
            put("40449|airtel|40449|Airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //AirTel (Report Count: 1, Last Report: 2014-08-17 14:36:28)
            put("40493|airtel|40493|AirTel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //airtel (Report Count: 1, Last Report: 2014-09-08 12:21:51)
            put("40494|airtel|40494|airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //airtel (Report Count: 1, Last Report: 2014-08-23 08:25:28)
            put("40554|airtel|40554|airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc/", "100.1.201.172", 8799));

            //Airtel A.P. (Report Count: 1, Last Report: 2014-08-19 06:45:49)
            put("40449|airtel|40449|Airtel A.P.",
                    new ApnParameters("http://100.1.201.171:10021/mmsc/", "100.1.201.172", 8799));

            //Airtel Mumbai (Report Count: 1, Last Report: 2014-08-16 03:56:54)
            put("40492|AirTel|40492|Airtel Mumbai",
                    new ApnParameters("http://100.1.201.171:10021/mmsc/", "100.1.201.172", 8799));

            //Airtel NG (Report Count: 1, Last Report: 2014-09-09 15:46:58)
            put("62120|Airtel NG|62120|Airtel NG",
                    new ApnParameters("http://10.199.212.8/servlets/mms", "10.199.212.2", 8080));

            //Airtel Rajasthan (Report Count: 1, Last Report: 2014-08-19 03:42:24)
            put("40470|airtel|40470|Airtel Rajasthan",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //Airtel T.N. (Report Count: 1, Last Report: 2014-09-13 11:13:49)
            put("40494|airtel|40494|Airtel T.N.",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //Airtel UP East (Report Count: 1, Last Report: 2014-06-23 17:48:42)
            put("40497|airtel|40554|Airtel UP East",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //AIRVOICE WIRELESS (Report Count: 1, Last Report: 2014-06-11 19:35:48)
            put("310410||310410|AIRVOICE WIRELESS",
                    new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //AIS (Report Count: 1, Last Report: 2014-08-02 17:06:44)
            put("52003|AIS|52001|AIS", new ApnParameters("http://mms.mobilelife.co.th", "203.170.229.34", 8080));

            //AIS (Report Count: 1, Last Report: 2014-09-07 02:07:22)
            put("52003|AIS|52003|AIS", new ApnParameters("http://mms.ais.co.th", "203.170.229.34", 8080));

            //amaysim (Report Count: 1, Last Report: 2014-09-13 02:16:27)
            put("50502|amaysim|50502|amaysim",
                    new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            //ANTEL (Report Count: 1, Last Report: 2014-08-06 21:59:12)
            put("74801|Antel|74801|ANTEL",
                    new ApnParameters("http://mmsc.mms.ancelutil.com.uy", "200.40.246.2", 3128));

            //AT T (Report Count: 1, Last Report: 2014-09-10 22:14:06)
            put("310410||310410|AT T", new ApnParameters("http://mms-tf.net", "mms3.tracfone.com", 80));

            //AT&T (Report Count: 1, Last Report: 2014-08-15 20:10:32)
            put("302370||310410|AT&T", new ApnParameters("http://mms.fido.ca", "mmsproxy.fido.ca", 80));

            //AT&T (Report Count: 1, Last Report: 2014-08-23 21:49:43)
            put("310150|Verizon|310410|AT&T",
                    new ApnParameters("http://mmsc.aiowireless.net", "proxy.aiowireless.net", 80));

            //AT&T (Report Count: 1, Last Report: 2014-08-19 00:08:49)
            put("310260|T-Mobile|310260|AT&T",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //AT&T (Report Count: 1, Last Report: 2014-09-10 21:23:06)
            put("310260||310260|AT&T", new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //AT&T (Report Count: 1, Last Report: 2014-09-08 21:21:07)
            put("310410|AT&T|310410|AT&T", new ApnParameters("http://mms-tf.net", "mms3.tracfone.com", 80));

            //AT&T (Report Count: 1, Last Report: 2014-08-02 16:15:37)
            put("310410|Verizon|310410|AT&T",
                    new ApnParameters("httt://mmsc.mobile.att.net", "proxy.mobile.att.net", 80));

            //AT&T (Report Count: 3, Last Report: 2014-09-14 01:34:02)
            put("310410||310410|AT&T", new ApnParameters("http://mmsc.mobile.att.net", "proxy.mobile.att.net", 80));

            //AT&T MicroCell (Report Count: 1, Last Report: 2014-09-11 18:23:24)
            put("310410||310410|AT&T MicroCell",
                    new ApnParameters("http://mmsc.mobile.att.net", "proxy.mobile.att.net", 80));

            //Banglalink (Report Count: 1, Last Report: 2014-07-29 17:47:53)
            put("47003|Banglalink|47003|Banglalink",
                    new ApnParameters("http://mmsc1:10021/mmsc/01", "10.10.55.34", 8799));

            //BASE (Report Count: 1, Last Report: 2014-08-22 07:58:59)
            put("20620|BASE|20620|BASE", new ApnParameters("http://mmsc.base.be", "217.72.235.1", 8080));

            //Beeline (Report Count: 1, Last Report: 2014-09-12 04:11:42)
            put("25099|Beeline|25099|Beeline", new ApnParameters("http://mms/", "192.168.94.23", 8080));

            //Bell (Report Count: 1, Last Report: 2014-09-12 19:47:02)
            put("302610||302610|Bell", new ApnParameters("http://mms.bell.ca/mms/wapenc", null, null));

            //BH Mobile (Report Count: 1, Last Report: 2014-06-19 08:06:51)
            put("21890|BH Mobile|21890|BH Mobile",
                    new ApnParameters("http://mms.bhmobile.ba/cmmsc/post", "195.222.56.41", 8080));

            //Black Wireless (Report Count: 1, Last Report: 2014-08-20 21:30:14)
            put("310410||310410|Black Wireless", new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //Boost Mobile (Report Count: 1, Last Report: 2014-05-28 19:27:08)
            put("310120|Sprint|310120|Boost Mobile",
                    new ApnParameters("http://mm.myboostmobile.com", "68.28.31.7", 80));

            //Boost Mobile (Report Count: 1, Last Report: 2014-09-13 23:35:35)
            put("311870|Boost Mobile|311870|Boost Mobile",
                    new ApnParameters("http://mm.myboostmobile.com", "68.28.31.7", 80));

            //Boost Mobile (Report Count: 1, Last Report: 2014-08-04 15:06:42)
            put("311870||31000|Boost Mobile", new ApnParameters("http://mm.myboostmobile.com", "68.28.31.7", 80));

            //Boost Mobile (Report Count: 1, Last Report: 2014-08-23 06:45:12)
            put("3118790|Boost Mobile|3118790|Boost Mobile", new ApnParameters("null", null, null));

            //Bouygtel (Report Count: 1, Last Report: 2014-07-25 22:34:08)
            put("20820|Bouygues Telecom|20820|Bouygtel",
                    new ApnParameters("http://mms.bouyguestelecom.fr/mms/wapenc", "62.201.129.226", 8080));

            //Bouygues Telecom (Report Count: 1, Last Report: 2014-09-08 15:31:56)
            put("20820|Bouygues Telecom|20820|Bouygues Telecom",
                    new ApnParameters("http://mms.bouyguestelecom.fr/mms/wapenc", "62.201.129.226", 8080));

            //BrightSpot (Report Count: 1, Last Report: 2014-08-05 08:20:02)
            put("310260||310260|BrightSpot",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //BYTEL (Report Count: 1, Last Report: 2014-09-08 18:05:53)
            put("20820|Bouygues Telecom|20820|BYTEL",
                    new ApnParameters("http://mms.bouyguestelecom.fr/mms/wapenc", "62.201.129.226", 8080));

            //C Spire (Report Count: 1, Last Report: 2014-09-08 05:53:28)
            put("311230|C Spire |311230|C Spire",
                    new ApnParameters("http://pix.cspire.com/servlets/mms", "66.175.144.91", 80));

            //C Spire (Report Count: 1, Last Report: 2014-09-10 00:58:55)
            put("311230|C-Spire|310120|C Spire",
                    new ApnParameters("http://pix.cspire.com/servlets/mms", "66.175.144.91", 80));

            //CamGSM (Report Count: 1, Last Report: 2014-09-09 07:52:11)
            put("45601||45601|CamGSM ", new ApnParameters("http://mms.mobitel.com.kh/mmsc", "203.144.95.98", 3130));

            //CAN Rogers Wireless Inc. (Report Count: 1, Last Report: 2014-09-13 17:57:30)
            put("302720|ROGERS|302720|CAN Rogers Wireless Inc.",
                    new ApnParameters("http://mms.gprs.rogers.com", "10.128.1.69", 80));

            //cell c (Report Count: 1, Last Report: 2014-09-11 10:33:53)
            put("65507| Cell C |65507|cell c",
                    new ApnParameters("http://mms.cmobile.co.za", "196.31.116.250", 8080));

            //CellOne (Report Count: 1, Last Report: 2014-08-05 01:24:38)
            put("40458|CellOne|40458|CellOne", new ApnParameters("http://10.4.42.21:8002/", "10.4.42.15", 8080));

            //Cellular One (Report Count: 1, Last Report: 2014-07-09 18:28:36)
            put("310260||310260|Cellular One",
                    new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //CELLULARONE (Report Count: 1, Last Report: 2014-09-06 16:52:46)
            put("311190||311190|CELLULARONE", new ApnParameters("http://mms.cellular1.net", "10.10.0.97", 9201));

            //CH (Report Count: 1, Last Report: 2014-08-03 05:04:33)
            put("42502|Cellcom|42502|CH", new ApnParameters("http://mms.cellcom.co.il", "vwapm2.ain.co.il", 8080));

            //Chameleon (Report Count: 1, Last Report: 2014-09-06 18:33:40)
            put("310000|Chameleon|310000|Chameleon",
                    new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //China Mobile HK (Report Count: 1, Last Report: 2014-09-12 06:14:26)
            put("45412|PEOPLES|45412|China Mobile HK",
                    new ApnParameters("http://mms.hk.chinamobile.com/mms", null, null));

            //CinBell USA (Report Count: 1, Last Report: 2014-09-08 21:40:55)
            put("310420||310260|CinBell USA",
                    new ApnParameters("http://mms.gocbw.com:8088/mms", "216.68.79.202", 80));

            //Cincinnati Bell (Report Count: 1, Last Report: 2014-07-18 13:23:31)
            put("310420||310420|Cincinnati Bell",
                    new ApnParameters("http://mms.gocbw.com:8088/mms", "216.68.79.202", 80));

            //Claro (Report Count: 1, Last Report: 2014-09-11 04:51:55)
            put("70401|Claro|70401|Claro",
                    new ApnParameters("http://mms.ideasclaro.com:8002", "216.230.133.66", 8080));

            //Claro (Report Count: 1, Last Report: 2014-07-29 05:30:47)
            put("71610|Claro|71610|Claro", new ApnParameters("http://claro/servlets/mms", "192.168.231.30", 80));

            //Claro AR (Report Count: 1, Last Report: 2014-08-24 20:51:01)
            put("722310|Claro AR|722310|Claro AR",
                    new ApnParameters("http://mms.ctimovil.com.ar", "170.51.255.240", 8080));

            //CMCC (Report Count: 1, Last Report: 2014-09-08 01:12:54)
            put("46000|CMCC|46000|CMCC", new ApnParameters("http://mmsc.monternet.com", "10.0.0.172", 80));

            //CMCC (Report Count: 1, Last Report: 2014-06-16 05:44:35)
            put("46002||46000|CMCC", new ApnParameters("http://mmsc.monternet.com", "10.0.0.172", 80));

            //CricKet (Report Count: 1, Last Report: 2014-09-06 04:07:55)
            put("310016|CricKet|123456|CricKet",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //CricKet (Report Count: 1, Last Report: 2014-09-12 18:43:55)
            put("310016|CricKet|31001|CricKet",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //CricKet (Report Count: 1, Last Report: 2014-09-12 00:45:26)
            put("310016|CricKet|310090|CricKet",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //Cricket (Report Count: 1, Last Report: 2014-09-13 02:25:52)
            put("310090|CricKet |31000|Cricket",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //Cricket (Report Count: 1, Last Report: 2014-06-17 02:30:43)
            put("310090|CricKet |31001|Cricket",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //Cricket (Report Count: 1, Last Report: 2014-09-13 16:34:06)
            put("310090|CricKet |310090|Cricket",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //cricket (Report Count: 1, Last Report: 2014-08-09 02:03:16)
            put("310150|Verizon|310410|cricket",
                    new ApnParameters("http://mmsc.aiowireless.net", "proxy.aiowireless.net", 80));

            //cricket (Report Count: 1, Last Report: 2014-09-14 00:21:09)
            put("310150||310410|cricket",
                    new ApnParameters("http://mmsc.aiowireless.net", "proxy.aiowireless.net", 80));

            //Cricket (Report Count: 1, Last Report: 2014-08-19 20:40:43)
            put("311230|C-Spire|311480|Cricket",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", "wap.mycricket.com", 8080));

            //CricKet (Report Count: 1, Last Report: 2014-09-12 23:32:12)
            put("310090|CricKet |31000|CricKet ",
                    new ApnParameters("http://mms.mycricket.com/servlets/mms", null, null));

            //Dialog (Report Count: 1, Last Report: 2014-07-01 08:59:15)
            put("41302|Dialog|41302|Dialog",
                    new ApnParameters("http://mms.dialog.lk:3130/mmsc", "192.168.122.2", 8080));

            //Digital Roaming (Report Count: 1, Last Report: 2014-08-14 17:11:53)
            put("310120|Sprint|00000|Digital Roaming",
                    new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Digital Roaming (Report Count: 1, Last Report: 2014-08-10 00:34:12)
            put("310120|Sprint|31000|Digital Roaming",
                    new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Digital Roaming (Report Count: 1, Last Report: 2014-09-08 22:11:48)
            put("310120|Sprint|31070|Digital Roaming",
                    new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //DTAC (Report Count: 1, Last Report: 2014-08-17 03:54:33)
            put("52005|DTAC|52005|DTAC", new ApnParameters("http://mms2.dtac.co.th:8002/", "10.10.10.10", 8080));

            //DTAC (Report Count: 1, Last Report: 2014-09-08 15:04:14)
            put("52005||52005|DTAC", new ApnParameters("http://mms2.dtac.co.th:8002", "10.10.10.10", 8080));

            //DTAC (Report Count: 1, Last Report: 2014-07-11 00:29:27)
            put("52005||52018|DTAC", new ApnParameters("http://mms.dtac.co.th:8002", "203.155.200.133", 8080));

            //dtac (Report Count: 1, Last Report: 2014-09-11 05:28:27)
            put("52005||52018|dtac", new ApnParameters("http://mms2.dtac.co.th:8002", "10.10.10.10", 8080));

            //DTAC (Report Count: 1, Last Report: 2014-07-05 09:49:18)
            put("52018||52018|DTAC", new ApnParameters("http://mms.dtac.co.th:8002", "203.155.200.133", 8080));

            //du (Report Count: 1, Last Report: 2014-07-31 12:48:16)
            put("42403|du|42403|du", new ApnParameters("http://mms.du.ae", "10.19.18.4", 8080));

            //EE (Report Count: 1, Last Report: 2014-09-07 08:58:20)
            put("23430||23430|EE", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //EE (Report Count: 1, Last Report: 2014-09-13 16:11:00)
            put("23430||23433|EE", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //EE (Report Count: 1, Last Report: 2014-09-12 18:17:23)
            put("23433|EE|23430|EE", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //EE (Report Count: 1, Last Report: 2014-08-10 10:31:29)
            put("23433|EE|23433|EE", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //ETISALAT (Report Count: 1, Last Report: 2014-07-20 08:22:16)
            put("62160|etisalat|62160|ETISALAT",
                    new ApnParameters("http://10.71.170.30:38090/was", "10.71.170.5", 8080));

            //Extended Network (Report Count: 1, Last Report: 2014-07-02 20:49:51)
            put("311480|Verizon Wireless|31000|Extended Network",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Extended Network (Report Count: 1, Last Report: 2014-08-26 02:12:16)
            put("311480|Verizon Wireless|3107|Extended Network",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Extended Network (Report Count: 1, Last Report: 2014-08-13 00:28:26)
            put("311480|Verizon Wireless|31135|Extended Network",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Extended Network (Report Count: 1, Last Report: 2014-09-12 22:24:47)
            put("311480|Verizon Wireless|311480|Extended Network",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Extended Network (Report Count: 1, Last Report: 2014-09-13 22:11:03)
            put("311480|Verizon|311480|Extended Network",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //F SFR (Report Count: 1, Last Report: 2014-07-12 14:41:09)
            put("20810|LeclercMobile|20810|F SFR", new ApnParameters("http://mms66", "10.143.156.9", 8080));

            //F SFR (Report Count: 1, Last Report: 2014-09-12 12:55:06)
            put("20810||20810|F SFR", new ApnParameters("http://mms1", "10.151.0.1", 8080));

            //F-Bouygues Telecom (Report Count: 1, Last Report: 2014-08-22 19:21:29)
            put("20820|Bouygues Telecom|20820|F-Bouygues Telecom",
                    new ApnParameters("http://mms.bouyguestelecom.fr/mms/wapenc", "62.201.129.226", 8080));

            //Family Mobile (Report Count: 1, Last Report: 2014-09-13 02:42:10)
            put("310260||310260|Family Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //Fido (Report Count: 1, Last Report: 2014-09-13 11:00:57)
            put("302370||302720|Fido", new ApnParameters("http://mms.fido.ca", "mmsproxy.fido.ca", 80));

            //Free (Report Count: 1, Last Report: 2014-09-12 15:19:50)
            put("20815|Free|20801|Free", new ApnParameters("http://mms.free.fr/", null, null));

            //Free (Report Count: 1, Last Report: 2014-09-11 12:25:43)
            put("20815|Free|20815|Free", new ApnParameters("http://mms.free.fr", null, null));

            //GCI (Report Count: 1, Last Report: 2014-06-22 16:50:34)
            put("311370|GCI|311370|GCI", new ApnParameters("http://mmsc.gci.csky.us:6672", "209.4.229.92", 9201));

            //GoSmart (Report Count: 1, Last Report: 2014-09-12 15:37:27)
            put("310260||310260|GoSmart",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //GrameenPhone (Report Count: 1, Last Report: 2014-09-08 01:56:52)
            put("47001||47001|GrameenPhone",
                    new ApnParameters("http://mms.gpsurf.net/servlets/mms", "10.128.1.2", 8080));

            //H2O (Report Count: 1, Last Report: 2014-09-10 23:29:33)
            put("310410||310410|H2O", new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //Home (Report Count: 1, Last Report: 2014-08-04 00:41:02)
            put("310000|Defalut|31000|Home", new ApnParameters("http://mms.mobipcs.com", null, null));

            //Home (Report Count: 1, Last Report: 2014-06-03 18:00:52)
            put("310000|Default|310000|Home", new ApnParameters("http://pix.cspire.com", null, null));

            //HOME (Report Count: 1, Last Report: 2014-09-12 15:34:00)
            put("310260||310260|HOME", new ApnParameters("http://mms.tracfone.com", null, null));

            //HOME (Report Count: 1, Last Report: 2014-08-19 18:35:03)
            put("310410|Verizon|310410|HOME", new ApnParameters("http://mms-tf.net", "mms3.tracfone.com", 80));

            //HOME (Report Count: 1, Last Report: 2014-09-13 17:34:03)
            put("310410||310410|HOME", new ApnParameters("http://mms-tf.net", "mms3.tracfone.com", 80));

            //Home (Report Count: 1, Last Report: 2014-09-05 03:58:48)
            put("311230|Default|311230|Home", new ApnParameters("http://pix.cspire.com/servlets/mms", null, null));

            //HTC (Report Count: 1, Last Report: 2014-09-13 19:58:54)
            put("000000|HTC|000000|HTC", new ApnParameters("null", null, null));

            //HTC (Report Count: 1, Last Report: 2014-09-12 04:00:04)
            put("000000|HTC|310120|HTC", new ApnParameters("null", null, null));

            //i wireless (Report Count: 1, Last Report: 2014-08-08 00:34:05)
            put("310770||310770|i wireless",
                    new ApnParameters("http://mmsc.iwireless.dataonair.net:6672", "209.4.229.31", 9401));

            //IDEA (Report Count: 1, Last Report: 2014-07-18 07:26:27)
            put("40414|Spice|40414|IDEA", new ApnParameters("http://10.4.42.21:8002/", "10.4.42.15", 8080));

            //IDEA (Report Count: 1, Last Report: 2014-09-12 14:59:35)
            put("40422|!dea|40422|IDEA", new ApnParameters("http://10.4.42.21:8002/", "10.4.42.15", 8080));

            //IDEA (Report Count: 1, Last Report: 2014-08-10 09:42:13)
            put("40478|!dea|40478|IDEA", new ApnParameters("http://10.4.42.21:8002/", "10.4.42.15", 8080));

            //IDEA (Report Count: 1, Last Report: 2014-08-19 07:22:09)
            put("40487|!dea|40487|IDEA",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //Idea (Report Count: 1, Last Report: 2014-08-13 06:26:53)
            put("405799|Idea|40492|Idea", new ApnParameters("http://10.4.42.21:8002/", "10.4.42.15", 8080));

            //IND airtel (Report Count: 1, Last Report: 2014-08-18 07:08:52)
            put("40449|airtel|40449|IND airtel",
                    new ApnParameters("http://100.1.201.171:10021/mmsc", "100.1.201.172", 8799));

            //IND XL (Report Count: 1, Last Report: 2014-09-05 08:18:22)
            put("51011|XL Axiata|51011|IND XL",
                    new ApnParameters("http://mmc.xl.net.id/servlets/mms", "202.152.240.50", 8080));

            //IND-TELKOMSEL (Report Count: 1, Last Report: 2014-09-08 10:19:32)
            put("51010||51010|IND-TELKOMSEL", new ApnParameters("http://mms.telkomsel.com", "10.1.89.150", 8000));

            //INDOSAT (Report Count: 1, Last Report: 2014-06-08 01:35:13)
            put("51001|INDOSAT|51001| ", new ApnParameters("http://mmsc.indosat.com", "10.19.19.19", 8080));

            //INDOSAT (Report Count: 1, Last Report: 2014-09-10 15:47:10)
            put("51001|INDOSAT|51001|INDOSAT", new ApnParameters("http://mmsc.indosat.com", "10.19.19.19", 8080));

            //Iowa Wireless USA (Report Count: 1, Last Report: 2014-08-05 17:20:12)
            put("310260||310770|Iowa Wireless USA",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //iWireless (Report Count: 1, Last Report: 2014-08-06 23:11:47)
            put("310770||310770|iWireless",
                    new ApnParameters("http://mmsc.iwireless.dataonair.net:6672", "209.4.229.31", 9201));

            //IWS (Report Count: 1, Last Report: 2014-07-12 16:46:33)
            put("310770||310770|IWS",
                    new ApnParameters("http://mmsc.iwireless.dataonair.net:6672", "209.4.229.31", 9401));

            //Koodo (Report Count: 1, Last Report: 2014-09-13 21:32:27)
            put("302220||302220|Koodo",
                    new ApnParameters("http://aliasredirect.net/proxy/koodo/mmsc", "74.49.0.18", 80));

            //KT, VIVA (Report Count: 1, Last Report: 2014-08-20 15:31:16)
            put("41904|VIVA|41904|KT, VIVA",
                    new ApnParameters("http://172.16.128.80:38090/was", "172.16.128.228", 8080));

            //La Poste Mobile (Report Count: 1, Last Report: 2014-08-05 11:06:32)
            put("20810|La Poste Mobile|20810|La Poste Mobile",
                    new ApnParameters("http://mmsdebitel", "10.143.156.3", 8080));

            //life:) (Report Count: 1, Last Report: 2014-06-24 20:08:45)
            put("25506|life:)|25506|life:)",
                    new ApnParameters("http://mms.life.com.ua/cmmsc/post", "212.58.162.230", 8080));

            //LIME (Report Count: 1, Last Report: 2014-08-24 00:54:12)
            put("338180|LIME|338180|LIME", new ApnParameters("http://mmsc", "10.20.5.34", 8799));

            //Lycamobile (Report Count: 1, Last Report: 2014-08-23 15:03:33)
            put("310260|Lycamobile|310260|Lycamobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //MegaFon (Report Count: 1, Last Report: 2014-09-11 04:03:35)
            put("25002|MegaFon|25002|MegaFon", new ApnParameters("http://mmsc:8002", "10.10.10.10", 8080));

            //MetroPCS (Report Count: 1, Last Report: 2014-06-25 16:50:47)
            put("25001|MTS|310260|MetroPCS",
                    new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //MetroPCS (Report Count: 1, Last Report: 2014-09-14 00:22:29)
            put("310260||310260|MetroPCS", new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //MetroPCS (Report Count: 1, Last Report: 2014-08-25 21:46:48)
            put("||310260|MetroPCS", new ApnParameters("http://metropcs.mmsmvno.com/mms/wapenc", null, null));

            //MOBILICITY (Report Count: 1, Last Report: 2014-09-12 02:33:46)
            put("302320||302320|MOBILICITY", new ApnParameters("hhtp://mms.mobilicity.net", "10.100.3.4", 8080));

            //Mobilicity (Report Count: 1, Last Report: 2014-08-07 05:20:11)
            put("302320||302320|Mobilicity", new ApnParameters("http://mms.mobilicity.net", "10.100.3.4", 8080));

            //Mobistar (Report Count: 1, Last Report: 2014-08-14 20:32:29)
            put("20610||20610|Mobistar", new ApnParameters("http://mmsc.mobistar.be", "212.65.63.143", 8080));

            //MOBITEL (Report Count: 1, Last Report: 2014-08-16 09:26:45)
            put("29341|Mobitel|29341|MOBITEL",
                    new ApnParameters("http://mms.mobitel.si/servlets/mms", "213.229.249.40", 8080));

            //Mobitel (Report Count: 1, Last Report: 2014-08-25 16:21:44)
            put("41301|Mobitel|41301|Mobitel",
                    new ApnParameters("http://mms.dialog.lk:3130/mmsc", "192.168.122.2", 8080));

            //Movistar (Report Count: 1, Last Report: 2014-09-08 18:46:48)
            put("26201|Telekom.de|21407|Movistar",
                    new ApnParameters("http://mms.t-mobile.de/servlets/mms", "172.28.23.131", 8008));

            //movistar (Report Count: 1, Last Report: 2014-08-17 02:23:50)
            put("334030|Movistar|33403|movistar", new ApnParameters("http://mms.movistar.mx", "10.2.20.1", 80));

            //movistar (Report Count: 1, Last Report: 2014-08-14 14:38:17)
            put("71606|movistar|71606|movistar",
                    new ApnParameters("http://mmsc.telefonicamovistar.com.pe:8088/mms/", "200.4.196.118", 8080));

            //Movistar (Report Count: 1, Last Report: 2014-07-03 18:01:58)
            put("72207|Movistar|72207|Movistar",
                    new ApnParameters("http://mms.movistar.com.ar", "200.68.32.239", 8080));

            //movistar (Report Count: 1, Last Report: 2014-09-05 12:34:41)
            put("73404|movistar|73404|movistar",
                    new ApnParameters("http://mms.movistar.com.ve:8088/mms", "200.35.64.73", 9001));

            //mt:s (Report Count: 1, Last Report: 2014-07-21 14:27:39)
            put("22003|mt:s|22003|mt:s",
                    new ApnParameters("http://mms.mts064.telekom.rs/mms/wapenc", "172.17.85.131", 8080));

            //MTN NG (Report Count: 1, Last Report: 2014-09-09 13:36:13)
            put("62130||62130|MTN NG", new ApnParameters("http://10.199.212.8/servlets/mms", "10.199.212.2", 8080));

            //MTN-SA (Report Count: 1, Last Report: 2014-09-12 13:04:51)
            put("65510||65510|MTN-SA",
                    new ApnParameters("http://mms.mtn.co.za/mms/wapenc", "196.11.240.241", 8080));

            //MTS (Report Count: 1, Last Report: 2014-07-06 04:49:13)
            put("302370|MTS|302720|MTS", new ApnParameters("http://mmsc2.mts.net/", "209.4.229.90", 9401));

            //MTS (Report Count: 1, Last Report: 2014-09-12 15:17:23)
            put("302660|MTS|302720|MTS", new ApnParameters("http://mmsc2.mts.net/", "wapgw1.mts.net", 9201));

            //MTS RUS (Report Count: 1, Last Report: 2014-09-11 11:19:46)
            put("25001|MTS RUS|25001|MTS RUS", new ApnParameters("http://mmsc", "192.168.192.192", 8080));

            //MTS-RUS (Report Count: 1, Last Report: 2014-08-02 16:23:34)
            put("25001|MTS RUS|25001|MTS-RUS", new ApnParameters("http://mmsc", "10.10.30.60", 8080));

            //MY CELCOM (Report Count: 1, Last Report: 2014-09-11 12:04:43)
            put("50219|MERCHANTRADE|50219|MY CELCOM",
                    new ApnParameters("http://mms.celcom.net.my", "10.128.1.242", 8080));

            //MY CELCOM (Report Count: 1, Last Report: 2014-08-21 12:36:09)
            put("50219|TuneTalk|50219|MY CELCOM",
                    new ApnParameters("http://mms.celcom.net.my", "10.128.1.242", 8080));

            //MY CELCOM (Report Count: 1, Last Report: 2014-09-11 15:39:44)
            put("50219||50219|MY CELCOM", new ApnParameters("http://mms.celcom.net.my", "10.128.1.242", 8080));

            //MY DiGi (Report Count: 1, Last Report: 2014-09-08 01:14:01)
            put("50216|DiGi|50216|MY DiGi",
                    new ApnParameters("http://mms.digi.com.my/servlets/mms", "203.92.128.160", 80));

            //MY MAXIS (Report Count: 1, Last Report: 2014-09-07 00:56:06)
            put("50212||50212|MY MAXIS", new ApnParameters("http://172.16.74.100:10021/mmsc", "202.75.133.49", 80));

            //My Network (Report Count: 1, Last Report: 2014-09-11 00:15:54)
            put("310410||310410|My Network",
                    new ApnParameters("http://mmsc.cingular.com", "proxy.mvno.ccmobileweb.com", 80));

            //NECCI (Report Count: 1, Last Report: 2014-08-02 01:37:50)
            put("310450||310450|NECCI", new ApnParameters("http://mms.viaero.com", "10.168.3.23", 9401));

            //NetCom (Report Count: 1, Last Report: 2014-08-19 17:16:29)
            put("24202|NetCom|24202|NetCom", new ApnParameters("http://mms/", "193.209.134.133", 8080));

            //Network Extender (Report Count: 1, Last Report: 2014-07-29 12:05:18)
            put("310002|Verizon Wireless|31000|Network Extender",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Network Extender (Report Count: 1, Last Report: 2014-08-16 22:15:24)
            put("311480|Verizon|311480|Network Extender",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Nextel (Report Count: 1, Last Report: 2014-09-09 22:51:57)
            put("72439|Nextel|72439|Nextel",
                    new ApnParameters("http://3gmms.nextel3g.net.br", "129.192.129.104", 8080));

            //nTelos (Report Count: 1, Last Report: 2014-07-22 14:15:19)
            put("310470|nTelos|310000|nTelos", new ApnParameters("http://mms.ntelospcs.net", null, null));

            //o2 - de (Report Count: 1, Last Report: 2014-08-24 21:28:16)
            put("26207|o2 - de|26207|o2 - de", new ApnParameters("http://10.81.0.7:8002/", "82.113.100.5", 8080));

            //O2 - UK (Report Count: 1, Last Report: 2014-08-09 16:43:57)
            put("23410|TESCO|23410|O2 - UK",
                    new ApnParameters("http://mmsc.mms.o2.co.uk:8002", "193.113.200.195", 8080));

            //O2 - UK (Report Count: 1, Last Report: 2014-09-07 08:58:55)
            put("23410|giffgaff|23410|O2 - UK",
                    new ApnParameters("http://mmsc.mediamessaging.co.uk:8002", "193.113.200.195", 8080));

            //O2 - UK (Report Count: 1, Last Report: 2014-09-09 18:54:10)
            put("23410||23410|O2 - UK", new ApnParameters("http://mmsc.mms.o2.co.uk:8002", "82.132.254.1", 8080));

            //Oi (Report Count: 1, Last Report: 2014-07-15 13:51:44)
            put("72431|Oi|72431|Oi", new ApnParameters("http://200.222.42.204:8002", "192.168.10.50", 3128));

            //OJSC VimpelCom (Report Count: 1, Last Report: 2014-06-27 12:45:11)
            put("25099|Beeline|25099|OJSC VimpelCom", new ApnParameters("http://mms/", "192.168.94.23", 8080));

            //olleh (Report Count: 1, Last Report: 2014-08-25 03:48:25)
            put("45008||45008|olleh", new ApnParameters("http://mmsc.ktfwing.com:9082", null, null));

            //Ooredoo (Report Count: 1, Last Report: 2014-07-31 05:01:17)
            put("41903|KT WATANIYA|41903|Ooredoo",
                    new ApnParameters("http://action.wataniya.com", "194.126.53.64", 8080));

            //Ooredoo (Report Count: 1, Last Report: 2014-09-07 20:49:42)
            put("41903|Ooredoo|41903|Ooredoo",
                    new ApnParameters("http://action.wataniya.com", "194.126.53.64", 8080));

            //Optus (Report Count: 1, Last Report: 2014-09-13 22:02:30)
            put("50502|TPG|50502|Optus", new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            //Orange (Report Count: 1, Last Report: 2014-06-12 15:36:53)
            put("21403|Orange|21403|Orange", new ApnParameters("http://mms.orange.es", "172.22.188.25", 8080));

            //Orange (Report Count: 1, Last Report: 2014-08-24 16:56:43)
            put("26003|Orange|26003|Orange", new ApnParameters("http://mms.orange.pl", "192.168.6.104", 8080));

            //Orange (Report Count: 1, Last Report: 2014-08-24 21:56:41)
            put("26003|nju|26003|Orange", new ApnParameters("http://mms.orange.pl", "192.168.6.104", 8080));

            //ORANGE (Report Count: 1, Last Report: 2014-09-07 13:28:18)
            put("42501|orange|42501|ORANGE", new ApnParameters("http://192.168.220.15/servlets/mms", null, null));

            //Orange F (Report Count: 1, Last Report: 2014-09-09 17:13:24)
            put("20801|Orange F|20801|Orange F", new ApnParameters("http://mms.orange.fr", "192.168.10.200", 8080));

            //ORANGE IL (Report Count: 1, Last Report: 2014-07-21 18:06:28)
            put("42501|orange|42501|ORANGE IL",
                    new ApnParameters("http://192.168.220.15/servlets/mms", null, null));

            //PC mobile (Report Count: 1, Last Report: 2014-08-23 20:20:04)
            put("302220||302220|PC mobile",
                    new ApnParameters("http://aliasredirect.net/proxy/mb/mmsc", "74.49.0.18", 80));

            //Pelephone (Report Count: 1, Last Report: 2014-08-19 14:05:59)
            put("42503|Pelephone|42503|Pelephone",
                    new ApnParameters("http://mmsu.pelephone.net.il", "10.170.9.54", 9093));

            //Plus (Report Count: 1, Last Report: 2014-08-24 16:47:06)
            put("26001||26001|Plus", new ApnParameters("http://mms.plusgsm.pl:8002", "212.2.96.16", 8080));

            //Preferred System (Report Count: 1, Last Report: 2014-07-19 12:33:00)
            put("310005|Verizon Wireless|311480|Preferred System",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //PrixTel (Report Count: 1, Last Report: 2014-09-09 14:42:45)
            put("20810|PrixTel|20810|PrixTel", new ApnParameters("http://mms1", "10.151.0.1", 8080));

            //PTEL MOBILE (Report Count: 1, Last Report: 2014-07-09 12:16:57)
            put("310260||310260|PTEL MOBILE", new ApnParameters("http://mms.tracfone.com", null, null));

            //Public Mobile (Report Count: 1, Last Report: 2014-09-11 12:15:26)
            put("302220|TELUS@|302220|Public Mobile ",
                    new ApnParameters("http://aliasredirect.net/proxy/mmsc", "74.49.0.18", 80));

            //Public Mobile (Report Count: 1, Last Report: 2014-09-11 15:31:56)
            put("302220||302220|Public Mobile ",
                    new ApnParameters("http://aliasredirect.net/proxy/mb/mmsc", "74.49.0.18", 80));

            //Red Pocket (Report Count: 1, Last Report: 2014-05-30 03:41:38)
            put("310410|AT&T@|310410|Red Pocket",
                    new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //Red Pocket (Report Count: 1, Last Report: 2014-08-24 01:17:52)
            put("310410|Red Pocket|310410|Red Pocket",
                    new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //Red Pocket (Report Count: 1, Last Report: 2014-09-06 17:42:37)
            put("310410||310410|Red Pocket", new ApnParameters("http://mmsc.cingular.com", "66.209.11.33", 80));

            //Republic (Report Count: 1, Last Report: 2014-09-07 18:01:33)
            put("310000|Motorola|310000|Republic", new ApnParameters("http://127.0.0.1:18181", null, null));

            //RO ORANGE (Report Count: 1, Last Report: 2014-09-09 10:09:19)
            put("22610|orange|22610|RO ORANGE",
                    new ApnParameters("http://wap.mms.orange.ro:8002", "62.217.247.252", 8799));

            //Roaming (Report Count: 1, Last Report: 2014-07-27 02:42:13)
            put("310000|Verizon|311480|Roaming", new ApnParameters("http://mms.ekn.com", null, null));

            //Roaming (Report Count: 1, Last Report: 2014-09-06 14:34:33)
            put("311580|US Cellular|311580|Roaming",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //Roaming Indicator Off (Report Count: 1, Last Report: 2014-08-23 16:03:36)
            put("310120|Sprint|310120|Roaming Indicator Off",
                    new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Roaming Indicator Off (Report Count: 1, Last Report: 2014-09-13 13:59:32)
            put("311480|Verizon Wireless|31000|Roaming Indicator Off", new ApnParameters("null", null, null));

            //ROGERS (Report Count: 1, Last Report: 2014-09-13 02:06:44)
            put("302720|ROGERS|302720|ROGERS",
                    new ApnParameters("http://mms.gprs.rogers.com", "mmsproxy.rogers.com", 80));

            //S COMVIQ (Report Count: 1, Last Report: 2014-09-12 07:20:44)
            put("24007|Comviq|24007|S COMVIQ", new ApnParameters("http://mmsc.tele2.se", "130.244.202.30", 8080));

            //Samsung (Report Count: 1, Last Report: 2014-09-09 19:23:41)
            put("310000|Samsung|310000|Samsung",
                    new ApnParameters("http://mm.myboostmobile.com", "68.28.31.7", 80));

            //SaskTel (Report Count: 1, Last Report: 2014-09-12 03:07:28)
            put("302780||302780|SaskTel", new ApnParameters("http://mms.sasktel.com/", "mig.sasktel.com", 80));

            //SFR (Report Count: 1, Last Report: 2014-08-24 17:05:01)
            put("20810|PrixTel|20810|SFR", new ApnParameters("http://mms1", "10.151.0.1", 8080));

            //SFR (Report Count: 1, Last Report: 2014-07-28 20:10:03)
            put("20810||20810|SFR", new ApnParameters("http://mms1", "10.151.0.1", 8080));

            //SFR REUNION (Report Count: 1, Last Report: 2014-09-13 04:56:42)
            put("64710||64710|SFR REUNION", new ApnParameters("http://mms", "10.0.224.145", 8080));

            //Si.mobil (Report Count: 1, Last Report: 2014-07-08 00:08:15)
            put("29340|SIMOBIL|29340|Si.mobil", new ApnParameters("http://mmc/", "80.95.224.46", 9201));

            //Si.mobil (Report Count: 1, Last Report: 2014-07-29 17:41:27)
            put("29340||29340|Si.mobil", new ApnParameters("http://mmc", "80.95.224.46", 9201));

            //Simple Mobile (Report Count: 1, Last Report: 2014-09-12 02:54:35)
            put("310260|Simple Mobile|310260|Simple Mobile",
                    new ApnParameters("http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //Simple Mobile (Report Count: 1, Last Report: 2014-09-12 18:31:55)
            put("310260|Verizon|310260|Simple Mobile",
                    new ApnParameters("http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //Simple Mobile (Report Count: 1, Last Report: 2014-09-13 17:42:15)
            put("310260||310260|Simple Mobile",
                    new ApnParameters("http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //SingTel (Report Count: 1, Last Report: 2014-09-06 13:14:22)
            put("52501|SingTel|52501|SingTel",
                    new ApnParameters("http://mms.singtel.com:10021/mmsc", "165.21.42.84", 8080));

            //SKTelecom (Report Count: 1, Last Report: 2014-09-11 07:31:25)
            put("45005|SKTelecom|45005|SKTelecom",
                    new ApnParameters("http://omms.nate.com:9082/oma_mms", "smart.nate.com", 9093));

            //SMART (Report Count: 1, Last Report: 2014-08-20 00:47:21)
            put("51503|SMART Buddy|51503|SMART",
                    new ApnParameters("http://10.102.61.238:8002", "10.102.61.46", 8080));

            //SMART (Report Count: 1, Last Report: 2014-09-11 08:40:17)
            put("51503|SMART Prepaid|51503|SMART",
                    new ApnParameters("http://10.102.61.238:8002", "10.102.61.46", 8080));

            //smartfren (Report Count: 1, Last Report: 2014-07-25 21:23:26)
            put("51009|smartfren|51009|smartfren",
                    new ApnParameters("http://10.17.93.103:8080", "10.17.27.250", 8080));

            //SmarToneVodafone (Report Count: 1, Last Report: 2014-06-24 09:40:23)
            put("45406||45406|SmarToneVodafone",
                    new ApnParameters("http://mms.smartone-vodafone.com/server", "10.9.9.9", 8080));

            //SoftBank (Report Count: 1, Last Report: 2014-09-11 10:46:28)
            put("44020|SoftBank|44020|SoftBank", new ApnParameters("http://mms-s", "andmms.plusacs.ne.jp", 8080));

            //Solavei (Report Count: 1, Last Report: 2014-09-10 20:07:49)
            put("310260||310260|Solavei", new ApnParameters("http://solavei.mmsmvno.com/mms/wapenc", null, null));

            //Spark NZ (Report Count: 1, Last Report: 2014-08-25 04:58:53)
            put("53005|Telecom NZ|53005|Spark NZ",
                    new ApnParameters("http://lsmmsc.xtra.co.nz", "210.55.11.73", 80));

            //Spot Mobile (Report Count: 1, Last Report: 2014-07-07 03:28:35)
            put("310260||310260|Spot Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //Sprint (Report Count: 1, Last Report: 2014-08-25 15:09:23)
            put("310120|Sprint|00000|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-07-20 15:40:09)
            put("310120|Sprint|123456|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-13 23:44:15)
            put("310120|Sprint|31000| ", new ApnParameters("http://mms.plspictures.com", "68.28.31.7", -1));

            //Sprint (Report Count: 1, Last Report: 2014-09-13 09:59:44)
            put("310120|Sprint|31000|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-07-30 01:49:34)
            put("310120|Sprint|310120| ", new ApnParameters("http://mms.plspictures.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-13 22:38:31)
            put("310120|Sprint|310120|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-07 01:23:21)
            put("310120|Sprint|31070|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-08-17 15:01:39)
            put("310120|Sprint|311480|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-12 18:08:16)
            put("310120|Sprint|311870|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-08-10 03:57:59)
            put("31012|Sprint|31000|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-11 04:20:16)
            put("31012|Sprint|310120|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-09-08 17:37:31)
            put("|Sprint|31000|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //Sprint (Report Count: 1, Last Report: 2014-08-09 02:31:59)
            put("|Sprint|310120|Sprint", new ApnParameters("http://mms.sprintpcs.com", "68.28.31.7", 80));

            //SRI DIALOG (Report Count: 1, Last Report: 2014-09-13 03:03:06)
            put("41302|Dialog|41302|SRI DIALOG", new ApnParameters("http://mms.dialog.lk:3130/mmsc", null, null));

            //Sweden 3G (Report Count: 1, Last Report: 2014-07-23 11:38:49)
            put("24205|One Call|24005|Sweden 3G", new ApnParameters("http://mms.nwn.no", "188.149.250.10", 80));

            //Swedfone (Report Count: 1, Last Report: 2014-09-08 04:04:01)
            put("24002|Swedfone|24002|Swedfone", new ApnParameters("http://mms.tre.se", "172.16.53.11", 8799));

            //Swisscom (Report Count: 1, Last Report: 2014-08-18 01:21:12)
            put("22801|Swisscom|22801|Swisscom",
                    new ApnParameters("http://mms.natel.ch:8079", "192.168.210.2", 8080));

            //T - Mobile (Report Count: 1, Last Report: 2014-09-06 18:21:41)
            put("310260|T-Mobile|310260|T - Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T - Mobile (Report Count: 1, Last Report: 2014-09-10 16:40:55)
            put("310260||310260|T - Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 1, Last Report: 2014-08-25 10:46:56)
            put("23430||23430|T-Mobile", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //T-Mobile (Report Count: 1, Last Report: 2014-07-28 00:39:12)
            put("310260|Simple Mobile|310260|T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 1, Last Report: 2014-08-05 21:14:38)
            put("310260|Sprint|310260|T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 1, Last Report: 2014-08-15 13:10:26)
            put("310260|T-Mobile@|310260|T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", "216.165.155.50", 8080));

            //T-Mobile (Report Count: 1, Last Report: 2014-09-12 00:24:18)
            put("310260|T-Mobile|310260|T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 1, Last Report: 2014-09-11 14:39:01)
            put("310260|Verizon|310260|T-Mobile",
                    new ApnParameters("http://smpl.mms.msg.eng.t-mobile..com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 6, Last Report: 2014-09-14 01:25:41)
            put("310260||310260|T-Mobile",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //T-Mobile (Report Count: 1, Last Report: 2014-07-18 21:14:01)
            put("310770||310260|T-Mobile",
                    new ApnParameters("http://mmsc.iwireless.dataonair.net:6672", "209.4.229.31", 9201));

            //T-Mobile (Report Count: 1, Last Report: 2014-08-14 14:09:38)
            put("310260||310260|T-Mobile ",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", "216.155.165.50", 8080));

            //T-Mobile A (Report Count: 1, Last Report: 2014-08-05 18:05:33)
            put("23203||23203|T-Mobile A",
                    new ApnParameters("http://mmsc.t-mobile.at/servlets/mms", "10.12.0.20", 80));

            //T-Mobile UK (Report Count: 1, Last Report: 2014-09-11 19:16:56)
            put("23430||23430|T-Mobile UK", new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //T-Mobile UK (Report Count: 1, Last Report: 2014-08-18 08:29:23)
            put("23433|@@@@@@@@@@@@@@@@|23430|T-Mobile UK",
                    new ApnParameters("http://mms/", "149.254.201.135", 8080));

            //TATA DOCOMO (Report Count: 1, Last Report: 2014-09-13 14:53:58)
            put("405031|TATA DOCOMO|405031|TATA DOCOMO", new ApnParameters("http://mmsc/", "10.124.26.94", 8799));

            //TATA DOCOMO (Report Count: 1, Last Report: 2014-08-15 16:56:40)
            put("405034|TATA DOCOMO|405034|TATA DOCOMO", new ApnParameters("http://mmsc/", "10.124.26.94", 8799));

            //TATA DOCOMO (Report Count: 1, Last Report: 2014-08-05 14:57:58)
            put("405042|TATA DOCOMO|405042|TATA DOCOMO", new ApnParameters("http://mmsc/", "10.124.26.94", 8799));

            //Tbaytel / Rogers (Report Count: 1, Last Report: 2014-08-14 13:36:38)
            put("302720|Tbaytel / Rogers|302720|Tbaytel / Rogers",
                    new ApnParameters("http://mms.gprs.rogers.com", "mmsproxy.rogers.com", 80));

            //TELCEL (Report Count: 1, Last Report: 2014-09-10 17:10:24)
            put("334020|TELCEL|334020|TELCEL",
                    new ApnParameters("http://mms.itelcel.com/servlets/mms", "148.233.151.240", 8080));

            //Telecom NZ (Report Count: 1, Last Report: 2014-08-06 07:26:19)
            put("53005|Telecom NZ|53005|Telecom NZ",
                    new ApnParameters("http://lsmmsc.xtra.co.nz", "210.55.11.73", 80));

            //Telenor PK (Report Count: 1, Last Report: 2014-07-25 21:01:04)
            put("41006||41006|Telenor PK", new ApnParameters("http://mmstelenor", "172.18.19.11", 8080));

            //TELKOMSEL (Report Count: 1, Last Report: 2014-06-23 09:34:12)
            put("51010|TELKOMSEL|51010|TELKOMSEL",
                    new ApnParameters("http://mms.telkomsel.com", "10.1.89.150", 8000));

            //TELKOMSEL (Report Count: 1, Last Report: 2014-09-13 05:07:07)
            put("51010||51010|TELKOMSEL", new ApnParameters("http://mms.telkomsel.com", "10.1.89.150", 8000));

            //Telstra (Report Count: 1, Last Report: 2014-09-06 08:51:37)
            put("50501|Telstra|50501|Telstra", new ApnParameters("http://mmsc.telstra.com:8002", "10.1.1.180", 80));

            //Telstra Mobile (Report Count: 1, Last Report: 2014-08-24 11:44:09)
            put("50501|BOOST|50501|Telstra Mobile",
                    new ApnParameters("http://mmsc.telstra.com:8002/", "10.1.1.180", 80));

            //Telstra Mobile (Report Count: 1, Last Report: 2014-09-13 03:05:13)
            put("50501|Telstra|50501|Telstra Mobile",
                    new ApnParameters("http://mmsc.telstra.com:8002/", "10.1.1.180", 80));

            //TELUS (Report Count: 1, Last Report: 2014-09-12 02:42:55)
            put("302220||302220|TELUS", new ApnParameters("http://aliasredirect.net/proxy/mmsc", "74.49.0.18", 80));

            //TELUS (Report Count: 1, Last Report: 2014-06-19 00:07:55)
            put("311480||302220|TELUS", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //TESCO (Report Count: 1, Last Report: 2014-08-14 16:01:56)
            put("23410|TESCO|23410|TESCO",
                    new ApnParameters("http://mmsc.mms.o2.co.uk:8002", "193.113.200.195", 8080));

            //TH GSM (Report Count: 1, Last Report: 2014-06-23 12:01:11)
            put("52003|AIS|52001|TH GSM", new ApnParameters("http://mms.mobilelife.co.th", "203.170.229.34", 8080));

            //TIM (Report Count: 1, Last Report: 2014-09-13 16:35:08)
            put("72402|TIM|72402|TIM", new ApnParameters("http://mms.tim.br", "200.179.66.242", 8080));

            //TIM (Report Count: 1, Last Report: 2014-07-21 16:53:18)
            put("72404|TIM|72404|TIM", new ApnParameters("http://mms.tim.br", "200.179.66.242", 8080));

            //TPG (Report Count: 1, Last Report: 2014-07-16 06:43:24)
            put("50502|TPG|50502|TPG", new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            //TR TURKCELL (Report Count: 1, Last Report: 2014-09-05 19:30:56)
            put("28601||28601|TR TURKCELL",
                    new ApnParameters("http://mms.turkcell.com.tr/servlets/mms", "212.252.169.217", 8080));

            //TracFone (Report Count: 1, Last Report: 2014-09-08 17:10:19)
            put("310000|TracFone|310000| ",
                    new ApnParameters("http://mms.vzwreseller.com/servlets/mms", null, null));

            //TracFone (Report Count: 1, Last Report: 2014-07-29 12:59:19)
            put("310410||310410|TracFone", new ApnParameters("http://mms-tf.net", "mms3.tracfone.com", 80));

            //TRUE-H (Report Count: 1, Last Report: 2014-07-19 10:41:10)
            put("52000|TRUE-H|52000|TRUE-H", new ApnParameters("http://mms.trueh.com:8002", "10.4.7.39", 8080));

            //TSTT (Report Count: 1, Last Report: 2014-08-17 14:47:05)
            put("374129||37412|TSTT",
                    new ApnParameters("http://192.168.210.104/mmrelay.app", "192.168.210.104", 8080));

            //Tuenti (Report Count: 1, Last Report: 2014-07-11 17:15:07)
            put("21405|Tuenti|21407|Tuenti", new ApnParameters("http://tuenti.com", "10.138.255.43", 8080));

            //TuneTalk (Report Count: 1, Last Report: 2014-07-15 07:21:08)
            put("50219|TuneTalk|50219|TuneTalk",
                    new ApnParameters("http://mms.celcom.net.my", "10.128.1.242", 8080));

            //U Mobile (Report Count: 1, Last Report: 2014-07-09 14:44:26)
            put("50218||50212|U Mobile", new ApnParameters("http://10.30.3.11/servlets/mms", "10.30.5.11", 8080));

            //U Mobile (Report Count: 1, Last Report: 2014-09-11 05:41:48)
            put("50218||50218|U Mobile", new ApnParameters("http://10.30.3.11/servlets/mms", "10.30.5.11", 8080));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-09-10 23:36:09)
            put("311580|U.S. Cellular|310000|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-08-25 15:43:57)
            put("311580|U.S. Cellular|31000|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-09-12 22:41:50)
            put("311580|U.S. Cellular|311580|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-09-06 15:27:59)
            put("311580|US Cellular|31000|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-07-26 18:05:30)
            put("311580|US Cellular|31099|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //U.S. Cellular (Report Count: 1, Last Report: 2014-09-11 16:40:59)
            put("311580|US Cellular|311580|U.S. Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //Ufone (Report Count: 1, Last Report: 2014-08-22 15:07:34)
            put("41003|Ufone|41003|Ufone", new ApnParameters("http://10.81.6.11:8080", "10.81.6.33", 8000));

            //Ultra.me (Report Count: 1, Last Report: 2014-09-11 18:05:36)
            put("310260||310260|Ultra.me",
                    new ApnParameters("http://wholesale.mmsmvno.com/mms/wapenc", null, null));

            //US (Report Count: 1, Last Report: 2014-08-05 19:57:43)
            put("310260|T-Mobile|310260|US",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //US (Report Count: 1, Last Report: 2014-09-13 01:46:33)
            put("310260||310260|US", new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //US - Union Telephone (Report Count: 1, Last Report: 2014-08-15 13:43:11)
            put("310260||310020|US - Union Telephone",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //US Cellular (Report Count: 1, Last Report: 2014-09-07 14:14:20)
            put("311580|US Cellular|31000|US Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //US Cellular (Report Count: 1, Last Report: 2014-09-13 02:23:21)
            put("311580|US Cellular|311580|US Cellular",
                    new ApnParameters("http://mmsc1.uscc.net/mmsc/MMS", null, null));

            //US PLATEAU (Report Count: 1, Last Report: 2014-07-14 18:57:27)
            put("310100||310100|US PLATEAU", new ApnParameters("http://mms", "172.23.253.206", 8080));

            //Verizon (Report Count: 1, Last Report: 2014-09-06 22:34:05)
            put("204043|Verizon|310004|", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-09 00:33:53)
            put("310000|Verizon|31000| ", new ApnParameters("null", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-10 21:39:48)
            put("310000|Verizon|311480| ", new ApnParameters("null", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-13 23:12:36)
            put("310090|Verizon|31001|", new ApnParameters("null", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-09 20:11:43)
            put("310260|Verizon|00000|",
                    new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-07-26 22:28:02)
            put("311480|Verizon|00000| ", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-08 22:25:21)
            put("311480|Verizon|31000| ", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-13 16:40:06)
            put("311480|Verizon|311480| ", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-07-22 16:09:56)
            put("|Verizon|310004| ", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon (Report Count: 1, Last Report: 2014-09-10 00:33:58)
            put("|Verizon|31000| ", new ApnParameters("null", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-07 00:02:40)
            put("310002|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-05 04:48:04)
            put("310003|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-23 23:12:30)
            put("310004|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-10 19:47:18)
            put("310004|Verizon|310000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-08 20:17:34)
            put("310004|Verizon|31000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-19 01:17:14)
            put("310004|Verizon|310012|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-05 21:47:17)
            put("310005|Verizon Wireless|000000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-07-31 17:18:18)
            put("310005|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-06-24 17:30:39)
            put("310006|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-26 03:03:01)
            put("310006|Verizon|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-14 22:43:43)
            put("310007|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-06-07 02:23:03)
            put("310008|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-23 17:41:41)
            put("31000|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-07-25 16:04:19)
            put("311480|Verizon Wireless|001001|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-11 00:47:37)
            put("311480|Verizon Wireless|123456|Verizon Wireless", new ApnParameters("null", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-07-21 13:21:38)
            put("311480|Verizon Wireless|310000| ",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 14:06:59)
            put("311480|Verizon Wireless|310000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 23:24:56)
            put("311480|Verizon Wireless|310004|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-11 12:43:34)
            put("311480|Verizon Wireless|31000| ",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 23:29:52)
            put("311480|Verizon Wireless|31000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-21 20:49:29)
            put("311480|Verizon Wireless|31007|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 17:04:45)
            put("311480|Verizon Wireless|3107|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-08 19:06:51)
            put("311480|Verizon Wireless|31099|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 02:07:48)
            put("311480|Verizon Wireless|311480| ",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 3, Last Report: 2014-09-14 01:18:01)
            put("311480|Verizon Wireless|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-11 02:20:29)
            put("311480|Verizon Wireless|3167| ",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-08 19:52:51)
            put("311480|Verizon Wireless|3167|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-07-14 12:53:36)
            put("311480|Verizon|00000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-06-28 00:59:52)
            put("311480|Verizon|310000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 00:10:47)
            put("311480|Verizon|31000|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-11 20:29:43)
            put("311480|Verizon|31072|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-06 03:08:17)
            put("311480|Verizon|31099|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-13 23:42:50)
            put("311480|Verizon|311480|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-08-08 00:05:40)
            put("311480||3167|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Verizon Wireless (Report Count: 1, Last Report: 2014-09-08 15:39:58)
            put("31148|Verizon Wireless|310004|Verizon Wireless",
                    new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Videotron (Report Count: 1, Last Report: 2014-08-11 23:20:08)
            put("302500|Videotron|302500|Videotron",
                    new ApnParameters("http://media.videotron.com/", "10.208.89.17", 8080));

            //Videotron (Report Count: 1, Last Report: 2014-09-12 00:03:20)
            put("302500|Vidotron|302500|Videotron", new ApnParameters("http://media.videotron.com", null, null));

            //Viettel Mobile (Report Count: 1, Last Report: 2014-09-09 15:36:31)
            put("45204|VIETTEL|45204|Viettel Mobile",
                    new ApnParameters("http://mms.viettelmobile.com.vn/mms/wapenc", "192.168.233.10", 8080));

            //Virgin (Report Count: 1, Last Report: 2014-08-25 13:16:54)
            put("20823|Virgin|20810|Virgin", new ApnParameters("http://virginmms.fr", "10.6.10.1", 8080));

            //Virgin (Report Count: 1, Last Report: 2014-09-05 16:30:36)
            put("23430||23430|Virgin",
                    new ApnParameters("http://mms.virginmobile.co.uk:8002", "193.30.166.2", 8080));

            //VIRGIN (Report Count: 1, Last Report: 2014-09-13 14:35:00)
            put("302610||302610|VIRGIN", new ApnParameters("http://mms.bell.ca/mms/wapenc", null, null));

            //Virgin (Report Count: 1, Last Report: 2014-08-18 21:37:34)
            put("50502|Virgin Mobile|50502|Virgin",
                    new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            //Virgin Mobile (Report Count: 1, Last Report: 2014-07-02 08:28:22)
            put("310120|Sprint|310120|Virgin Mobile",
                    new ApnParameters("http://mmsc.vmobl.com:8088/mms?type=null", "68.28.31.7", 80));

            //Virgin Mobile (Report Count: 1, Last Report: 2014-09-12 20:51:21)
            put("311490|Virgin Mobile|311490|Virgin Mobile",
                    new ApnParameters("http://mmsc.vmobl.com:8088/mms?", null, null));

            //VIVO (Report Count: 1, Last Report: 2014-09-12 14:58:58)
            put("72406|VIVO|72406|VIVO",
                    new ApnParameters("http://termnat.vivomms.com.br:8088/mms", "200.142.130.104", 80));

            //VIVO (Report Count: 1, Last Report: 2014-07-11 22:52:47)
            put("72410|VIVO|72410|VIVO",
                    new ApnParameters("http://termnat.vivomms.com.br:8088/mms", "200.142.130.104", 80));

            //VIVO (Report Count: 1, Last Report: 2014-09-05 21:49:36)
            put("72411|VIVO|72411|VIVO",
                    new ApnParameters("http://termnat.vivomms.com.br:8088/mms", "200.142.130.104", 80));

            //VIVO (Report Count: 1, Last Report: 2014-08-02 01:45:56)
            put("72411||72411|VIVO",
                    new ApnParameters("http://termnat.vivomms.com.br:8088/mms", "200.142.130.104", 80));

            //VMS(Mobiphone) (Report Count: 1, Last Report: 2014-09-12 15:14:35)
            put("45201|MOBIFONE|45201|VMS(Mobiphone)",
                    new ApnParameters("http://203.162.21.114/mmsc", "203.162.21.114", 8080));

            //VMS(Mobiphone) (Report Count: 1, Last Report: 2014-09-06 05:27:59)
            put("45201|Mobifone|45201|VMS(Mobiphone)",
                    new ApnParameters("http://203.162.21.114/mmsc", "203.162.21.114", 3130));

            //VN MobiFone (Report Count: 1, Last Report: 2014-07-15 10:59:06)
            put("45201|MOBIFONE|45201|VN MobiFone",
                    new ApnParameters("http://203.162.21.114/mmsc", "203.162.21.114", 8080));

            //VN MOBIFONE (Report Count: 1, Last Report: 2014-09-05 05:25:25)
            put("45201||45201|VN MOBIFONE",
                    new ApnParameters("http://203.162.21.114/mmsc", "203.162.21.114", 3130));

            //VN VINAPHONE (Report Count: 1, Last Report: 2014-08-13 10:37:33)
            put("45202||45202|VN VINAPHONE", new ApnParameters("http://mms.vinaphone.com.vn", "10.1.10.46", 8000));

            //Vodafone (Report Count: 1, Last Report: 2014-08-17 14:24:29)
            put("40413|Vodafone IN|40407|Vodafone",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone (Report Count: 1, Last Report: 2014-08-07 05:20:37)
            put("40488|Vodafone IN|40488|Vodafone",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone AU (Report Count: 1, Last Report: 2014-09-13 04:57:00)
            put("50503||50503|Vodafone AU",
                    new ApnParameters("http://pxt.vodafone.net.au/pxtsend", "10.202.2.60", 8080));

            //Vodafone IN (Report Count: 1, Last Report: 2014-07-24 18:19:01)
            put("40405|Hutch|40405|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone In (Report Count: 1, Last Report: 2014-09-07 11:38:41)
            put("40405|Vodafone IN|40405|Vodafone In",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-09-12 14:30:20)
            put("40411|Vodafone IN|40411|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-08-03 06:59:31)
            put("40413|Vodafone IN|40413|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-06-13 06:44:52)
            put("40413|Vodafone IN|40427|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-09-11 05:13:03)
            put("40420|Vodafone IN|40420|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-09-08 14:21:02)
            put("40427|BPL Mobile|40427|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-09-08 17:46:15)
            put("40427|Vodafone IN|40427|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-07-14 11:41:02)
            put("40430|Hutch|40430|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-09-09 15:46:02)
            put("40443|Vodafone IN|40484|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-07-03 07:18:46)
            put("40484||40484|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //Vodafone IN (Report Count: 1, Last Report: 2014-06-17 10:11:49)
            put("40488|Vodafone IN|40488|Vodafone IN",
                    new ApnParameters("http://mms1.live.vodafone.in/mms/", "10.10.1.100", 9401));

            //vodafone IT (Report Count: 1, Last Report: 2014-08-23 17:25:30)
            put("22210||22210|vodafone IT",
                    new ApnParameters("http://mms.vodafone.it/servlets/mms", "10.128.224.10", 80));

            //vodafone P (Report Count: 1, Last Report: 2014-09-12 20:26:44)
            put("26801||26801|vodafone P",
                    new ApnParameters("http://mms.vodafone.pt/servlets/mms", "iproxy.vodafone.pt", 80));

            //vodafone UK (Report Count: 1, Last Report: 2014-08-12 13:42:53)
            put("23415|Talkmobile|23415|vodafone UK",
                    new ApnParameters("http://mms.talkmobile.co.uk/servlets/mms", "212.183.137.12", 8799));

            //vodafone UK (Report Count: 1, Last Report: 2014-09-11 20:53:02)
            put("23415||23415|vodafone UK",
                    new ApnParameters("http://mms.vodafone.co.uk/servlets/mms", "212.183.137.12", 8799));

            //Vodafone.de (Report Count: 1, Last Report: 2014-09-06 05:43:39)
            put("26202||26202|Vodafone.de", new ApnParameters("http://139.7.24.1/servlets/mms", "139.7.29.17", 80));

            //WIND (Report Count: 1, Last Report: 2014-07-24 20:35:59)
            put("302490||302490|WIND", new ApnParameters("http://mms.windmobile.ca", "74.115.197.70", 8080));

            //XL (Report Count: 1, Last Report: 2014-09-13 09:14:26)
            put("51011|XL Axiata|51011|XL",
                    new ApnParameters("http://mmc.xl.net.id/servlets/mms", "202.152.240.50", 8080));

            //XL (Report Count: 1, Last Report: 2014-08-19 09:41:26)
            put("51011|XL|51011|XL",
                    new ApnParameters("http://mmc.xl.net.id/servlets/mms", "202.152.240.50", 8080));

            //XL IND (Report Count: 1, Last Report: 2014-09-09 02:09:37)
            put("51011|XL Axiata|51011|XL IND",
                    new ApnParameters("http://mmc.xl.net.id/servlets/mms", "202.152.240.50", 8080));

            //YES OPTUS (Report Count: 1, Last Report: 2014-09-11 22:17:23)
            put("50502|TPG|50502|YES OPTUS",
                    new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            //YES OPTUS (Report Count: 1, Last Report: 2014-08-19 10:30:49)
            put("50502|YES OPTUS|50502|YES OPTUS",
                    new ApnParameters("http://mmsc.optus.com.au:8002/", "61.88.190.10", 8070));

            // ******* Old data keyed only by mccmnc below!
            // ******* Sub-carriers will match the wrong entry here because they share MCCMNCs!

            //T-Mobile USA - Tested: Works
            put("310260", new ApnParameters("http://mms.msg.eng.t-mobile.com/mms/wapenc", null, null));

            //AT&T - Untested
            put("310410", new ApnParameters("http://mmscUrl.cingular.com/", "wireless.cingular.com", 80));

            //Verizon - Untested
            put("310004", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));
            put("310005", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));
            put("310012", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));
            put("311480", new ApnParameters("http://mms.vtext.com/servlets/mms", null, null));

            //Telenor Norway - Tested
            put("24201", new ApnParameters("http://mmscUrl", "10.10.10.11", 8080));

            // Rogers - Untested
            put("302720", new ApnParameters("http://mms.gprs.rogers.com", "10.128.1.69", 80));

            // Virgin Mobile US - Untested
            put("310053", new ApnParameters("http://mmscUrl.vmobl.com:8080/mms", "205.239.233.136", 81));
        }
    };

    /**
     * This is a purely static class.
     */
    private ApnDefaults() {
    }

    /**
     * Get the default ApnParameters for the current carrier from the APN_PARAMETERS_MAP. This uses
     * a combination of SIM MCCMNC, SIM operator name, network MCCMNC, and network name to try to
     * determine the correct parameters to use.
     *
     * If there is no match and fallback is true the method will attempt to return a match on the
     * SIM MCCMNC only. This will help in many cases but will return incorrect parameters in others.
     *
     * @param context The current context.
     * @param fallBack Should we attempt to fallback on matching just the SIM MCCMNC if we don't
     *                 find a match for the full key?
     * @return The ApnParameters or null.
     */
    public static ApnParameters getApnParameters(Context context, boolean fallBack) {
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

        StringBuffer sb = new StringBuffer().append(tm.getSimOperator()).append('|').append(tm.getSimOperatorName())
                .append('|').append(tm.getNetworkOperator()).append('|').append(tm.getNetworkOperatorName());

        ApnParameters apnParameters = APN_PARAMETERS_MAP.get(sb.toString());

        //Fallback on old data if we don't have new full network keys yet.
        if (apnParameters == null && fallBack) {
            apnParameters = APN_PARAMETERS_MAP.get(tm.getSimOperator());
        }

        return apnParameters;
    }

    /**
     * Get the default ApnParameters for the current carrier from the APN_PARAMETERS_MAP. This uses
     * a combination of SIM MCCMNC, SIM operator name, network MCCMNC, and network name to try to
     * determine the correct parameters to use.
     *
     * Fall back on using only the SIM MCCMNC if we don't have a match for the full key.
     *
     * @param context The current context.
     * @return The ApnParameters or null.
     */
    public static ApnParameters getApnParameters(Context context) {
        return getApnParameters(context, true);
    }

    /**
     * This method provides a means for clients to report new, good APN connection parameters
     * to a central repository so that they can be integrated with this class and shared with
     * the public.
     *
     * It contains protections so that new ApnParameters are only reported to the server the first
     * time this method is called. In addition, it uses a short connection timeout so it can be
     * safely called from your current worker thread without worry that it will unnecessarily
     * delay your process.
     *
     * It should be called immediately after successfully sending a MMS message. Example:<br/>
     *  <pre>
     *  //Send your MMS using whatever method you currently use.
     *  byte[] response = myMmsHttpPost(mmscUrl, mmsProxy, mmsProxyPort, sendReqPdu);
     *
     *  //Parse the response.
     *  SendConf sendConf = (SendConf) new PduParser(response).parse();
     *
     *  //Check to see if the response was success.
     *  if(sendConf != null && sendConf.getResponseStatus() == PduHeaders.RESPONSE_STATUS_OK) {
     *      //Report the ApnParameters used for the post.
     *      ApnParameters parameters = new ApnParameters(mmscUrl, mmsProxy, mmsProxyPort);
     *      ApnDefaults.reportApnData(context, parameters);
     *  }
     *
     *  //Continue your process.
     *  ...
     *  </pre>
     *
     *  In order for this class to be useful we must collect data from as many working
     *  configurations as possible. Adding a call to this method after a successful MMSC operation
     *  in your app will help us all to provide a good MMS experience to our users.
     *
     * @param context The current context.
     * @param apnParameters The known good ApnParameters to report.
     */
    public static void reportApnData(Context context, ApnParameters apnParameters) {

        if (apnParameters == null)
            return;

        String apnData = apnParameters.getMmscUrl() + "|" + apnParameters.getProxyAddress() + "|"
                + apnParameters.getProxyPort();

        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        String previousApnData = prefs.getString(PREF_KEY_LAST_APN_REPORT, null);

        if (!apnData.equals(previousApnData)) {

            //Save new apn data
            prefs.edit().putString(PREF_KEY_LAST_APN_REPORT, apnData).apply();

            //Report new apn data
            TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
            String networkOperator = tm.getNetworkOperator();
            String networkOperatorName = tm.getNetworkOperatorName();
            String simOperator = tm.getSimOperator();
            String simOperatorName = tm.getSimOperatorName();

            //Create HttpClient
            AndroidHttpClient client = AndroidHttpClient.newInstance("ApnDefaults/0.1");
            HttpParams params = client.getParams();
            HttpProtocolParams.setContentCharset(params, "UTF-8");
            HttpConnectionParams.setConnectionTimeout(params, 1 * 1000); //Set timeout to wait for a connection.
            HttpConnectionParams.setSoTimeout(params, 1 * 1000); //Set timeout to wait for a response.
            try {
                StringBuffer uriString = new StringBuffer(REPORT_URL).append("?")
                        //Report the MMSC connection used.
                        .append("apnData=").append(URLEncoder.encode(apnData, "UTF-8"))
                        //SIM and Network data are reported to enable determining which
                        //parameters work under which circumstances.
                        .append("&simOperator=").append(URLEncoder.encode(simOperator, "UTF-8"))
                        .append("&simOperatorName=").append(URLEncoder.encode(simOperatorName, "UTF-8"))
                        .append("&simCountry=").append(URLEncoder.encode(tm.getSimCountryIso(), "UTF-8"))
                        .append("&networkOperator=").append(URLEncoder.encode(networkOperator, "UTF-8"))
                        .append("&networkOperatorName=").append(URLEncoder.encode(networkOperatorName, "UTF-8"))
                        .append("&networkCountry=").append(URLEncoder.encode(tm.getNetworkCountryIso(), "UTF-8"));

                URI uri = new URI(uriString.toString());

                //Send request
                client.execute(new HttpGet(uri));
                client.close();
            } catch (Exception e) {
            }
        }
    }

    /**
     * Parameters necessary to establish a connection to a MMSC.
     */
    public static class ApnParameters {
        private final String mmscUrl;
        private final String proxyAddress;
        private final Integer proxyPort;

        public ApnParameters(String mmscUrl, String proxyAddress, Integer proxyPort) {
            this.mmscUrl = mmscUrl;
            this.proxyAddress = proxyAddress;
            this.proxyPort = proxyPort;
        }

        public boolean isProxySet() {
            return proxyAddress != null && proxyAddress.trim().length() != 0;
        }

        public String getMmscUrl() {
            return mmscUrl;
        }

        public String getProxyAddress() {
            if (!isProxySet()) {
                return null;
            }

            return proxyAddress;
        }

        public Integer getProxyPort() {
            if (isProxySet() && proxyPort == null) {
                return 80;
            }

            return proxyPort;
        }
    }
}