diff options
292 files changed, 11 insertions, 34804 deletions
diff --git a/Android.mk b/Android.mk new file mode 100644 index 00000000..605f171c --- /dev/null +++ b/Android.mk @@ -0,0 +1,10 @@ +LOCAL_PATH := $(call my-dir) + +# a wrapper for curl which provides wget syntax, for compatibility +include $(CLEAR_VARS) +LOCAL_MODULE := wget +LOCAL_SRC_FILES := wget +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := EXECUTABLES +LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) +include $(BUILD_PREBUILT) diff --git a/README.mkdn b/README.mkdn index cda44d8a..c3f4ca9d 100644 --- a/README.mkdn +++ b/README.mkdn @@ -1,37 +1 @@ -LineageOS -=========== - -Getting started ---------------- - -To get started with Android/LineageOS, you'll need to get -familiar with [Repo](https://source.android.com/source/using-repo.html) and [Version Control with Git](https://source.android.com/source/version-control.html). - -To initialize your local repository using the LineageOS trees, use a command like this: -``` -repo init -u git://github.com/LineageOS/android.git -b lineage-16.0 -``` -Then to sync up: -``` -repo sync -``` -Please see the [LineageOS Wiki](https://wiki.lineageos.org/) for building instructions, by device. - - -Submitting patches ------------------- -Patches are always welcome! Please submit your patches via LineageOS Gerrit! - -Simply follow our guide on [how to submit patches](https://wiki.lineageos.org/submitting-patch-howto.html). - -To view the status of your and others' patches, visit [LineageOS Gerrit Code Review](https://review.lineageos.org/). - - -Buildbot --------- - -All supported devices are built weekly and periodically as changes are committed to ensure the source trees remain buildable. - -You can view the current build statuses at [LineageOS Jenkins](https://jenkins.lineageos.org/). - -Builds produced weekly by the buildbot can be downloaded from [LineageOS downloads](https://download.lineageos.org/). +This wget implementation comes from LineageOS's vendor/lineage repository. diff --git a/addonsu/51-addonsu.sh b/addonsu/51-addonsu.sh deleted file mode 100644 index f2d200b9..00000000 --- a/addonsu/51-addonsu.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/sbin/sh -# -# ADDOND_VERSION=2 -# - -. /tmp/backuptool.functions - -list_files() { -cat <<EOF -bin/su -etc/init/superuser.rc -xbin/su -EOF -} - -case "$1" in - backup) - list_files | while read FILE DUMMY; do - backup_file $S/"$FILE" - done - ;; - restore) - list_files | while read FILE REPLACEMENT; do - R="" - [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT" - restore_file $S/"$FILE" "$R" - done - ;; - pre-backup) - # Stub - ;; - post-backup) - # Stub - ;; - pre-restore) - # Stub - ;; - post-restore) - # Stub - ;; -esac diff --git a/addonsu/mount-system.sh b/addonsu/mount-system.sh deleted file mode 100644 index e5cc81ce..00000000 --- a/addonsu/mount-system.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/sbin/sh - -# Modern devices use /system as root ("/") -system_as_root=`getprop ro.build.system_root_image` -if [ "$system_as_root" == "true" ]; then - if mount /system_root; then - exit 0 - fi - - active_slot=`getprop ro.boot.slot_suffix` - if [ ! -z "$active_slot" ]; then - block=/dev/block/bootdevice/by-name/system$active_slot - else - block=/dev/block/bootdevice/by-name/system - fi - mkdir -p /system_root - if mount -o rw $block /system_root || - mount -o rw $block /system_root -t ext4 || - mount -o rw $block /system_root -t f2fs; then - exit 0 - fi -else - if mount /system; then - exit 0 - fi - - # Try to get the block from /etc/recovery.fstab - block=`cat /etc/recovery.fstab | cut -d '#' -f 1 | grep /system | grep -o '/dev/[^ ]*' | head -1` - if [ -n "$block" ] && mount $block /system; then - exit 0 - fi -fi - -exit 1 diff --git a/addonsu/unmount-system.sh b/addonsu/unmount-system.sh deleted file mode 100644 index 19b34311..00000000 --- a/addonsu/unmount-system.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/sbin/sh - -# Modern devices use /system as root ("/") -system_as_root=`getprop ro.build.system_root_image` -if [ "$system_as_root" == "true" ]; then - if umount /system_root; then - exit 0 - fi -else - if umount /system; then - exit 0 - fi -fi - -exit 1 diff --git a/addonsu/updater-script-install b/addonsu/updater-script-install deleted file mode 100644 index 996023c2..00000000 --- a/addonsu/updater-script-install +++ /dev/null @@ -1,25 +0,0 @@ -ui_print("Installing su addon..."); -ifelse(is_mounted("/system"), unmount("/system")); -package_extract_file("mount-system.sh", "/tmp/mount-system.sh"); -package_extract_file("unmount-system.sh", "/tmp/unmount-system.sh"); -set_metadata("/tmp/mount-system.sh", "uid", 0, "gid", 0, "mode", 0755); -set_metadata("/tmp/unmount-system.sh", "uid", 0, "gid", 0, "mode", 0755); -run_program("/tmp/mount-system.sh") == 0 || abort("Could not mount /system"); - -if getprop("ro.build.system_root_image") != "true" then - package_extract_dir("system", "/system"); - set_metadata("/system/addon.d/51-addonsu.sh", "uid", 0, "gid", 0, "mode", 0755, "selabel", "u:object_r:system_file:s0"); - set_metadata("/system/etc/init/superuser.rc", "uid", 0, "gid", 0, "mode", 0644, "selabel", "u:object_r:system_file:s0"); - set_metadata("/system/xbin/su", "uid", 0, "gid", 2000, "mode", 0755, "selabel", "u:object_r:su_exec:s0"); - symlink("/system/xbin/su", "/system/bin/su"); -else - package_extract_dir("system", "/system_root/system"); - set_metadata("/system_root/system/addon.d/51-addonsu.sh", "uid", 0, "gid", 0, "mode", 0755, "selabel", "u:object_r:system_file:s0"); - set_metadata("/system_root/system/etc/init/superuser.rc", "uid", 0, "gid", 0, "mode", 0644, "selabel", "u:object_r:system_file:s0"); - set_metadata("/system_root/system/xbin/su", "uid", 0, "gid", 2000, "mode", 0755, "selabel", "u:object_r:su_exec:s0"); - symlink("/system/xbin/su", "/system_root/system/bin/su"); -endif; - -run_program("/tmp/unmount-system.sh") == 0 || ui_print("Could not unmount /system"); -ui_print("Done"); -set_progress(1.000000); diff --git a/addonsu/updater-script-remove b/addonsu/updater-script-remove deleted file mode 100644 index 6531e55b..00000000 --- a/addonsu/updater-script-remove +++ /dev/null @@ -1,23 +0,0 @@ -ui_print("Removing su addon..."); -ifelse(is_mounted("/system"), unmount("/system")); -package_extract_file("mount-system.sh", "/tmp/mount-system.sh"); -package_extract_file("unmount-system.sh", "/tmp/unmount-system.sh"); -set_metadata("/tmp/mount-system.sh", "uid", 0, "gid", 0, "mode", 0755); -set_metadata("/tmp/unmount-system.sh", "uid", 0, "gid", 0, "mode", 0755); -run_program("/tmp/mount-system.sh") == 0 || abort("Could not mount /system"); - -if getprop("ro.build.system_root_image") != "true" then - delete("/system/addon.d/51-addonsu.sh"); - delete("/system/bin/su"); - delete("/system/etc/init/superuser.rc"); - delete("/system/xbin/su"); -else - delete("/system_root/system/addon.d/51-addonsu.sh"); - delete("/system_root/system/bin/su"); - delete("/system_root/system/etc/init/superuser.rc"); - delete("/system_root/system/xbin/su"); -endif; - -run_program("/tmp/unmount-system.sh") == 0 || ui_print("Could not unmount /system"); -ui_print("Done"); -set_progress(1.000000); diff --git a/bash_completion/git.bash b/bash_completion/git.bash deleted file mode 100644 index 93eba467..00000000 --- a/bash_completion/git.bash +++ /dev/null @@ -1,2766 +0,0 @@ -#!bash -# -# bash/zsh completion support for core Git. -# -# Copyright (C) 2006,2007 Shawn O. Pearce <spearce@spearce.org> -# Conceptually based on gitcompletion (http://gitweb.hawaga.org.uk/). -# Distributed under the GNU General Public License, version 2.0. -# -# The contained completion routines provide support for completing: -# -# *) local and remote branch names -# *) local and remote tag names -# *) .git/remotes file names -# *) git 'subcommands' -# *) tree paths within 'ref:path/to/file' expressions -# *) file paths within current working directory and index -# *) common --long-options -# -# To use these routines: -# -# 1) Copy this file to somewhere (e.g. ~/.git-completion.sh). -# 2) Add the following line to your .bashrc/.zshrc: -# source ~/.git-completion.sh -# 3) Consider changing your PS1 to also show the current branch, -# see git-prompt.sh for details. - -case "$COMP_WORDBREAKS" in -*:*) : great ;; -*) COMP_WORDBREAKS="$COMP_WORDBREAKS:" -esac - -# __gitdir accepts 0 or 1 arguments (i.e., location) -# returns location of .git repo -__gitdir () -{ - # Note: this function is duplicated in git-prompt.sh - # When updating it, make sure you update the other one to match. - if [ -z "${1-}" ]; then - if [ -n "${__git_dir-}" ]; then - echo "$__git_dir" - elif [ -n "${GIT_DIR-}" ]; then - test -d "${GIT_DIR-}" || return 1 - echo "$GIT_DIR" - elif [ -d .git ]; then - echo .git - else - git rev-parse --git-dir 2>/dev/null - fi - elif [ -d "$1/.git" ]; then - echo "$1/.git" - else - echo "$1" - fi -} - -__gitcomp_1 () -{ - local c IFS=$' \t\n' - for c in $1; do - c="$c$2" - case $c in - --*=*|*.) ;; - *) c="$c " ;; - esac - printf '%s\n' "$c" - done -} - -# The following function is based on code from: -# -# bash_completion - programmable completion functions for bash 3.2+ -# -# Copyright © 2006-2008, Ian Macdonald <ian@caliban.org> -# © 2009-2010, Bash Completion Maintainers -# <bash-completion-devel@lists.alioth.debian.org> -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# The latest version of this software can be obtained here: -# -# http://bash-completion.alioth.debian.org/ -# -# RELEASE: 2.x - -# This function can be used to access a tokenized list of words -# on the command line: -# -# __git_reassemble_comp_words_by_ref '=:' -# if test "${words_[cword_-1]}" = -w -# then -# ... -# fi -# -# The argument should be a collection of characters from the list of -# word completion separators (COMP_WORDBREAKS) to treat as ordinary -# characters. -# -# This is roughly equivalent to going back in time and setting -# COMP_WORDBREAKS to exclude those characters. The intent is to -# make option types like --date=<type> and <rev>:<path> easy to -# recognize by treating each shell word as a single token. -# -# It is best not to set COMP_WORDBREAKS directly because the value is -# shared with other completion scripts. By the time the completion -# function gets called, COMP_WORDS has already been populated so local -# changes to COMP_WORDBREAKS have no effect. -# -# Output: words_, cword_, cur_. - -__git_reassemble_comp_words_by_ref() -{ - local exclude i j first - # Which word separators to exclude? - exclude="${1//[^$COMP_WORDBREAKS]}" - cword_=$COMP_CWORD - if [ -z "$exclude" ]; then - words_=("${COMP_WORDS[@]}") - return - fi - # List of word completion separators has shrunk; - # re-assemble words to complete. - for ((i=0, j=0; i < ${#COMP_WORDS[@]}; i++, j++)); do - # Append each nonempty word consisting of just - # word separator characters to the current word. - first=t - while - [ $i -gt 0 ] && - [ -n "${COMP_WORDS[$i]}" ] && - # word consists of excluded word separators - [ "${COMP_WORDS[$i]//[^$exclude]}" = "${COMP_WORDS[$i]}" ] - do - # Attach to the previous token, - # unless the previous token is the command name. - if [ $j -ge 2 ] && [ -n "$first" ]; then - ((j--)) - fi - first= - words_[$j]=${words_[j]}${COMP_WORDS[i]} - if [ $i = $COMP_CWORD ]; then - cword_=$j - fi - if (($i < ${#COMP_WORDS[@]} - 1)); then - ((i++)) - else - # Done. - return - fi - done - words_[$j]=${words_[j]}${COMP_WORDS[i]} - if [ $i = $COMP_CWORD ]; then - cword_=$j - fi - done -} - -if ! type _get_comp_words_by_ref >/dev/null 2>&1; then -_get_comp_words_by_ref () -{ - local exclude cur_ words_ cword_ - if [ "$1" = "-n" ]; then - exclude=$2 - shift 2 - fi - __git_reassemble_comp_words_by_ref "$exclude" - cur_=${words_[cword_]} - while [ $# -gt 0 ]; do - case "$1" in - cur) - cur=$cur_ - ;; - prev) - prev=${words_[$cword_-1]} - ;; - words) - words=("${words_[@]}") - ;; - cword) - cword=$cword_ - ;; - esac - shift - done -} -fi - -# Generates completion reply with compgen, appending a space to possible -# completion words, if necessary. -# It accepts 1 to 4 arguments: -# 1: List of possible completion words. -# 2: A prefix to be added to each possible completion word (optional). -# 3: Generate possible completion matches for this word (optional). -# 4: A suffix to be appended to each possible completion word (optional). -__gitcomp () -{ - local cur_="${3-$cur}" - - case "$cur_" in - --*=) - COMPREPLY=() - ;; - *) - local IFS=$'\n' - COMPREPLY=($(compgen -P "${2-}" \ - -W "$(__gitcomp_1 "${1-}" "${4-}")" \ - -- "$cur_")) - ;; - esac -} - -# Generates completion reply with compgen from newline-separated possible -# completion words by appending a space to all of them. -# It accepts 1 to 4 arguments: -# 1: List of possible completion words, separated by a single newline. -# 2: A prefix to be added to each possible completion word (optional). -# 3: Generate possible completion matches for this word (optional). -# 4: A suffix to be appended to each possible completion word instead of -# the default space (optional). If specified but empty, nothing is -# appended. -__gitcomp_nl () -{ - local IFS=$'\n' - COMPREPLY=($(compgen -P "${2-}" -S "${4- }" -W "$1" -- "${3-$cur}")) -} - -# Generates completion reply with compgen from newline-separated possible -# completion filenames. -# It accepts 1 to 3 arguments: -# 1: List of possible completion filenames, separated by a single newline. -# 2: A directory prefix to be added to each possible completion filename -# (optional). -# 3: Generate possible completion matches for this word (optional). -__gitcomp_file () -{ - local IFS=$'\n' - - # XXX does not work when the directory prefix contains a tilde, - # since tilde expansion is not applied. - # This means that COMPREPLY will be empty and Bash default - # completion will be used. - COMPREPLY=($(compgen -P "${2-}" -W "$1" -- "${3-$cur}")) - - # Tell Bash that compspec generates filenames. - compopt -o filenames 2>/dev/null -} - -__git_index_file_list_filter_compat () -{ - local path - - while read -r path; do - case "$path" in - ?*/*) echo "${path%%/*}/" ;; - *) echo "$path" ;; - esac - done -} - -__git_index_file_list_filter_bash () -{ - local path - - while read -r path; do - case "$path" in - ?*/*) - # XXX if we append a slash to directory names when using - # `compopt -o filenames`, Bash will append another slash. - # This is pretty stupid, and this the reason why we have to - # define a compatible version for this function. - echo "${path%%/*}" ;; - *) - echo "$path" ;; - esac - done -} - -# Process path list returned by "ls-files" and "diff-index --name-only" -# commands, in order to list only file names relative to a specified -# directory, and append a slash to directory names. -__git_index_file_list_filter () -{ - # Default to Bash >= 4.x - __git_index_file_list_filter_bash -} - -# Execute git ls-files, returning paths relative to the directory -# specified in the first argument, and using the options specified in -# the second argument. -__git_ls_files_helper () -{ - ( - test -n "${CDPATH+set}" && unset CDPATH - # NOTE: $2 is not quoted in order to support multiple options - cd "$1" && git ls-files --exclude-standard $2 - ) 2>/dev/null -} - - -# Execute git diff-index, returning paths relative to the directory -# specified in the first argument, and using the tree object id -# specified in the second argument. -__git_diff_index_helper () -{ - ( - test -n "${CDPATH+set}" && unset CDPATH - cd "$1" && git diff-index --name-only --relative "$2" - ) 2>/dev/null -} - -# __git_index_files accepts 1 or 2 arguments: -# 1: Options to pass to ls-files (required). -# Supported options are --cached, --modified, --deleted, --others, -# and --directory. -# 2: A directory path (optional). -# If provided, only files within the specified directory are listed. -# Sub directories are never recursed. Path must have a trailing -# slash. -__git_index_files () -{ - local dir="$(__gitdir)" root="${2-.}" - - if [ -d "$dir" ]; then - __git_ls_files_helper "$root" "$1" | __git_index_file_list_filter | - sort | uniq - fi -} - -# __git_diff_index_files accepts 1 or 2 arguments: -# 1) The id of a tree object. -# 2) A directory path (optional). -# If provided, only files within the specified directory are listed. -# Sub directories are never recursed. Path must have a trailing -# slash. -__git_diff_index_files () -{ - local dir="$(__gitdir)" root="${2-.}" - - if [ -d "$dir" ]; then - __git_diff_index_helper "$root" "$1" | __git_index_file_list_filter | - sort | uniq - fi -} - -__git_heads () -{ - local dir="$(__gitdir)" - if [ -d "$dir" ]; then - git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ - refs/heads - return - fi -} - -__git_tags () -{ - local dir="$(__gitdir)" - if [ -d "$dir" ]; then - git --git-dir="$dir" for-each-ref --format='%(refname:short)' \ - refs/tags - return - fi -} - -# __git_refs accepts 0, 1 (to pass to __gitdir), or 2 arguments -# presence of 2nd argument means use the guess heuristic employed -# by checkout for tracking branches -__git_refs () -{ - local i hash dir="$(__gitdir "${1-}")" track="${2-}" - local format refs - if [ -d "$dir" ]; then - case "$cur" in - refs|refs/*) - format="refname" - refs="${cur%/*}" - track="" - ;; - *) - for i in HEAD FETCH_HEAD ORIG_HEAD MERGE_HEAD; do - if [ -e "$dir/$i" ]; then echo $i; fi - done - format="refname:short" - refs="refs/tags refs/heads refs/remotes" - ;; - esac - git --git-dir="$dir" for-each-ref --format="%($format)" \ - $refs - if [ -n "$track" ]; then - # employ the heuristic used by git checkout - # Try to find a remote branch that matches the completion word - # but only output if the branch name is unique - local ref entry - git --git-dir="$dir" for-each-ref --shell --format="ref=%(refname:short)" \ - "refs/remotes/" | \ - while read -r entry; do - eval "$entry" - ref="${ref#*/}" - if [[ "$ref" == "$cur"* ]]; then - echo "$ref" - fi - done | sort | uniq -u - fi - return - fi - case "$cur" in - refs|refs/*) - git ls-remote "$dir" "$cur*" 2>/dev/null | \ - while read -r hash i; do - case "$i" in - *^{}) ;; - *) echo "$i" ;; - esac - done - ;; - *) - git ls-remote "$dir" HEAD ORIG_HEAD 'refs/tags/*' 'refs/heads/*' 'refs/remotes/*' 2>/dev/null | \ - while read -r hash i; do - case "$i" in - *^{}) ;; - refs/*) echo "${i#refs/*/}" ;; - *) echo "$i" ;; - esac - done - ;; - esac -} - -# __git_refs2 requires 1 argument (to pass to __git_refs) -__git_refs2 () -{ - local i - for i in $(__git_refs "$1"); do - echo "$i:$i" - done -} - -# __git_refs_remotes requires 1 argument (to pass to ls-remote) -__git_refs_remotes () -{ - local i hash - git ls-remote "$1" 'refs/heads/*' 2>/dev/null | \ - while read -r hash i; do - echo "$i:refs/remotes/$1/${i#refs/heads/}" - done -} - -__git_remotes () -{ - local i IFS=$'\n' d="$(__gitdir)" - test -d "$d/remotes" && ls -1 "$d/remotes" - for i in $(git --git-dir="$d" config --get-regexp 'remote\..*\.url' 2>/dev/null); do - i="${i#remote.}" - echo "${i/.url*/}" - done -} - -__git_list_merge_strategies () -{ - git merge -s help 2>&1 | - sed -n -e '/[Aa]vailable strategies are: /,/^$/{ - s/\.$// - s/.*:// - s/^[ ]*// - s/[ ]*$// - p - }' -} - -__git_merge_strategies= -# 'git merge -s help' (and thus detection of the merge strategy -# list) fails, unfortunately, if run outside of any git working -# tree. __git_merge_strategies is set to the empty string in -# that case, and the detection will be repeated the next time it -# is needed. -__git_compute_merge_strategies () -{ - test -n "$__git_merge_strategies" || - __git_merge_strategies=$(__git_list_merge_strategies) -} - -__git_complete_revlist_file () -{ - local pfx ls ref cur_="$cur" - case "$cur_" in - *..?*:*) - return - ;; - ?*:*) - ref="${cur_%%:*}" - cur_="${cur_#*:}" - case "$cur_" in - ?*/*) - pfx="${cur_%/*}" - cur_="${cur_##*/}" - ls="$ref:$pfx" - pfx="$pfx/" - ;; - *) - ls="$ref" - ;; - esac - - case "$COMP_WORDBREAKS" in - *:*) : great ;; - *) pfx="$ref:$pfx" ;; - esac - - __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \ - | sed '/^100... blob /{ - s,^.* ,, - s,$, , - } - /^120000 blob /{ - s,^.* ,, - s,$, , - } - /^040000 tree /{ - s,^.* ,, - s,$,/, - } - s/^.* //')" \ - "$pfx" "$cur_" "" - ;; - *...*) - pfx="${cur_%...*}..." - cur_="${cur_#*...}" - __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" - ;; - *..*) - pfx="${cur_%..*}.." - cur_="${cur_#*..}" - __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" - ;; - *) - __gitcomp_nl "$(__git_refs)" - ;; - esac -} - - -# __git_complete_index_file requires 1 argument: the options to pass to -# ls-file -__git_complete_index_file () -{ - local pfx cur_="$cur" - - case "$cur_" in - ?*/*) - pfx="${cur_%/*}" - cur_="${cur_##*/}" - pfx="${pfx}/" - - __gitcomp_file "$(__git_index_files "$1" "$pfx")" "$pfx" "$cur_" - ;; - *) - __gitcomp_file "$(__git_index_files "$1")" "" "$cur_" - ;; - esac -} - -# __git_complete_diff_index_file requires 1 argument: the id of a tree -# object -__git_complete_diff_index_file () -{ - local pfx cur_="$cur" - - case "$cur_" in - ?*/*) - pfx="${cur_%/*}" - cur_="${cur_##*/}" - pfx="${pfx}/" - - __gitcomp_file "$(__git_diff_index_files "$1" "$pfx")" "$pfx" "$cur_" - ;; - *) - __gitcomp_file "$(__git_diff_index_files "$1")" "" "$cur_" - ;; - esac -} - -__git_complete_file () -{ - __git_complete_revlist_file -} - -__git_complete_revlist () -{ - __git_complete_revlist_file -} - -__git_complete_remote_or_refspec () -{ - local cur_="$cur" cmd="${words[1]}" - local i c=2 remote="" pfx="" lhs=1 no_complete_refspec=0 - if [ "$cmd" = "remote" ]; then - ((c++)) - fi - while [ $c -lt $cword ]; do - i="${words[c]}" - case "$i" in - --mirror) [ "$cmd" = "push" ] && no_complete_refspec=1 ;; - --all) - case "$cmd" in - push) no_complete_refspec=1 ;; - fetch) - COMPREPLY=() - return - ;; - *) ;; - esac - ;; - -*) ;; - *) remote="$i"; break ;; - esac - ((c++)) - done - if [ -z "$remote" ]; then - __gitcomp_nl "$(__git_remotes)" - return - fi - if [ $no_complete_refspec = 1 ]; then - COMPREPLY=() - return - fi - [ "$remote" = "." ] && remote= - case "$cur_" in - *:*) - case "$COMP_WORDBREAKS" in - *:*) : great ;; - *) pfx="${cur_%%:*}:" ;; - esac - cur_="${cur_#*:}" - lhs=0 - ;; - +*) - pfx="+" - cur_="${cur_#+}" - ;; - esac - case "$cmd" in - fetch) - if [ $lhs = 1 ]; then - __gitcomp_nl "$(__git_refs2 "$remote")" "$pfx" "$cur_" - else - __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" - fi - ;; - pull|remote) - if [ $lhs = 1 ]; then - __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_" - else - __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" - fi - ;; - push) - if [ $lhs = 1 ]; then - __gitcomp_nl "$(__git_refs)" "$pfx" "$cur_" - else - __gitcomp_nl "$(__git_refs "$remote")" "$pfx" "$cur_" - fi - ;; - esac -} - -__git_complete_strategy () -{ - __git_compute_merge_strategies - case "$prev" in - -s|--strategy) - __gitcomp "$__git_merge_strategies" - return 0 - esac - case "$cur" in - --strategy=*) - __gitcomp "$__git_merge_strategies" "" "${cur##--strategy=}" - return 0 - ;; - esac - return 1 -} - -__git_commands () { - if test -n "${GIT_TESTING_COMMAND_COMPLETION:-}" - then - printf "%s" "${GIT_TESTING_COMMAND_COMPLETION}" - else - git help -a|egrep '^ [a-zA-Z0-9]' - fi -} - -__git_list_all_commands () -{ - local i IFS=" "$'\n' - for i in $(__git_commands) - do - case $i in - *--*) : helper pattern;; - *) echo $i;; - esac - done -} - -__git_all_commands= -__git_compute_all_commands () -{ - test -n "$__git_all_commands" || - __git_all_commands=$(__git_list_all_commands) -} - -__git_list_porcelain_commands () -{ - local i IFS=" "$'\n' - __git_compute_all_commands - for i in $__git_all_commands - do - case $i in - *--*) : helper pattern;; - applymbox) : ask gittus;; - applypatch) : ask gittus;; - archimport) : import;; - cat-file) : plumbing;; - check-attr) : plumbing;; - check-ignore) : plumbing;; - check-ref-format) : plumbing;; - checkout-index) : plumbing;; - commit-tree) : plumbing;; - count-objects) : infrequent;; - credential-cache) : credentials helper;; - credential-store) : credentials helper;; - cvsexportcommit) : export;; - cvsimport) : import;; - cvsserver) : daemon;; - daemon) : daemon;; - diff-files) : plumbing;; - diff-index) : plumbing;; - diff-tree) : plumbing;; - fast-import) : import;; - fast-export) : export;; - fsck-objects) : plumbing;; - fetch-pack) : plumbing;; - fmt-merge-msg) : plumbing;; - for-each-ref) : plumbing;; - hash-object) : plumbing;; - http-*) : transport;; - index-pack) : plumbing;; - init-db) : deprecated;; - local-fetch) : plumbing;; - lost-found) : infrequent;; - ls-files) : plumbing;; - ls-remote) : plumbing;; - ls-tree) : plumbing;; - mailinfo) : plumbing;; - mailsplit) : plumbing;; - merge-*) : plumbing;; - mktree) : plumbing;; - mktag) : plumbing;; - pack-objects) : plumbing;; - pack-redundant) : plumbing;; - pack-refs) : plumbing;; - parse-remote) : plumbing;; - patch-id) : plumbing;; - peek-remote) : plumbing;; - prune) : plumbing;; - prune-packed) : plumbing;; - quiltimport) : import;; - read-tree) : plumbing;; - receive-pack) : plumbing;; - remote-*) : transport;; - repo-config) : deprecated;; - rerere) : plumbing;; - rev-list) : plumbing;; - rev-parse) : plumbing;; - runstatus) : plumbing;; - sh-setup) : internal;; - shell) : daemon;; - show-ref) : plumbing;; - send-pack) : plumbing;; - show-index) : plumbing;; - ssh-*) : transport;; - stripspace) : plumbing;; - symbolic-ref) : plumbing;; - tar-tree) : deprecated;; - unpack-file) : plumbing;; - unpack-objects) : plumbing;; - update-index) : plumbing;; - update-ref) : plumbing;; - update-server-info) : daemon;; - upload-archive) : plumbing;; - upload-pack) : plumbing;; - write-tree) : plumbing;; - var) : infrequent;; - verify-pack) : infrequent;; - verify-tag) : plumbing;; - *) echo $i;; - esac - done -} - -__git_porcelain_commands= -__git_compute_porcelain_commands () -{ - __git_compute_all_commands - test -n "$__git_porcelain_commands" || - __git_porcelain_commands=$(__git_list_porcelain_commands) -} - -__git_pretty_aliases () -{ - local i IFS=$'\n' - for i in $(git --git-dir="$(__gitdir)" config --get-regexp "pretty\..*" 2>/dev/null); do - case "$i" in - pretty.*) - i="${i#pretty.}" - echo "${i/ */}" - ;; - esac - done -} - -__git_aliases () -{ - local i IFS=$'\n' - for i in $(git --git-dir="$(__gitdir)" config --get-regexp "alias\..*" 2>/dev/null); do - case "$i" in - alias.*) - i="${i#alias.}" - echo "${i/ */}" - ;; - esac - done -} - -# __git_aliased_command requires 1 argument -__git_aliased_command () -{ - local word cmdline=$(git --git-dir="$(__gitdir)" \ - config --get "alias.$1") - for word in $cmdline; do - case "$word" in - \!gitk|gitk) - echo "gitk" - return - ;; - \!*) : shell command alias ;; - -*) : option ;; - *=*) : setting env ;; - git) : git itself ;; - *) - echo "$word" - return - esac - done -} - -# __git_find_on_cmdline requires 1 argument -__git_find_on_cmdline () -{ - local word subcommand c=1 - while [ $c -lt $cword ]; do - word="${words[c]}" - for subcommand in $1; do - if [ "$subcommand" = "$word" ]; then - echo "$subcommand" - return - fi - done - ((c++)) - done -} - -__git_has_doubledash () -{ - local c=1 - while [ $c -lt $cword ]; do - if [ "--" = "${words[c]}" ]; then - return 0 - fi - ((c++)) - done - return 1 -} - -# Try to count non option arguments passed on the command line for the -# specified git command. -# When options are used, it is necessary to use the special -- option to -# tell the implementation were non option arguments begin. -# XXX this can not be improved, since options can appear everywhere, as -# an example: -# git mv x -n y -# -# __git_count_arguments requires 1 argument: the git command executed. -__git_count_arguments () -{ - local word i c=0 - - # Skip "git" (first argument) - for ((i=1; i < ${#words[@]}; i++)); do - word="${words[i]}" - - case "$word" in - --) - # Good; we can assume that the following are only non - # option arguments. - ((c = 0)) - ;; - "$1") - # Skip the specified git command and discard git - # main options - ((c = 0)) - ;; - ?*) - ((c++)) - ;; - esac - done - - printf "%d" $c -} - -__git_whitespacelist="nowarn warn error error-all fix" - -_git_am () -{ - local dir="$(__gitdir)" - if [ -d "$dir"/rebase-apply ]; then - __gitcomp "--skip --continue --resolved --abort" - return - fi - case "$cur" in - --whitespace=*) - __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" - return - ;; - --*) - __gitcomp " - --3way --committer-date-is-author-date --ignore-date - --ignore-whitespace --ignore-space-change - --interactive --keep --no-utf8 --signoff --utf8 - --whitespace= --scissors - " - return - esac - COMPREPLY=() -} - -_git_apply () -{ - case "$cur" in - --whitespace=*) - __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" - return - ;; - --*) - __gitcomp " - --stat --numstat --summary --check --index - --cached --index-info --reverse --reject --unidiff-zero - --apply --no-add --exclude= - --ignore-whitespace --ignore-space-change - --whitespace= --inaccurate-eof --verbose - " - return - esac - COMPREPLY=() -} - -_git_add () -{ - case "$cur" in - --*) - __gitcomp " - --interactive --refresh --patch --update --dry-run - --ignore-errors --intent-to-add - " - return - esac - - # XXX should we check for --update and --all options ? - __git_complete_index_file "--others --modified" -} - -_git_archive () -{ - case "$cur" in - --format=*) - __gitcomp "$(git archive --list)" "" "${cur##--format=}" - return - ;; - --remote=*) - __gitcomp_nl "$(__git_remotes)" "" "${cur##--remote=}" - return - ;; - --*) - __gitcomp " - --format= --list --verbose - --prefix= --remote= --exec= - " - return - ;; - esac - __git_complete_file -} - -_git_bisect () -{ - __git_has_doubledash && return - - local subcommands="start bad good skip reset visualize replay log run" - local subcommand="$(__git_find_on_cmdline "$subcommands")" - if [ -z "$subcommand" ]; then - if [ -f "$(__gitdir)"/BISECT_START ]; then - __gitcomp "$subcommands" - else - __gitcomp "replay start" - fi - return - fi - - case "$subcommand" in - bad|good|reset|skip|start) - __gitcomp_nl "$(__git_refs)" - ;; - *) - COMPREPLY=() - ;; - esac -} - -_git_branch () -{ - local i c=1 only_local_ref="n" has_r="n" - - while [ $c -lt $cword ]; do - i="${words[c]}" - case "$i" in - -d|-m) only_local_ref="y" ;; - -r) has_r="y" ;; - esac - ((c++)) - done - - case "$cur" in - --set-upstream-to=*) - __gitcomp "$(__git_refs)" "" "${cur##--set-upstream-to=}" - ;; - --*) - __gitcomp " - --color --no-color --verbose --abbrev= --no-abbrev - --track --no-track --contains --merged --no-merged - --set-upstream-to= --edit-description --list - --unset-upstream - " - ;; - *) - if [ $only_local_ref = "y" -a $has_r = "n" ]; then - __gitcomp_nl "$(__git_heads)" - else - __gitcomp_nl "$(__git_refs)" - fi - ;; - esac -} - -_git_bundle () -{ - local cmd="${words[2]}" - case "$cword" in - 2) - __gitcomp "create list-heads verify unbundle" - ;; - 3) - # looking for a file - ;; - *) - case "$cmd" in - create) - __git_complete_revlist - ;; - esac - ;; - esac -} - -_git_checkout () -{ - __git_has_doubledash && return - - case "$cur" in - --conflict=*) - __gitcomp "diff3 merge" "" "${cur##--conflict=}" - ;; - --*) - __gitcomp " - --quiet --ours --theirs --track --no-track --merge - --conflict= --orphan --patch - " - ;; - *) - # check if --track, --no-track, or --no-guess was specified - # if so, disable DWIM mode - local flags="--track --no-track --no-guess" track=1 - if [ -n "$(__git_find_on_cmdline "$flags")" ]; then - track='' - fi - __gitcomp_nl "$(__git_refs '' $track)" - ;; - esac -} - -_git_cherry () -{ - __gitcomp "$(__git_refs)" -} - -_git_cherry_pick () -{ - case "$cur" in - --*) - __gitcomp "--edit --no-commit" - ;; - *) - __gitcomp_nl "$(__git_refs)" - ;; - esac -} - -_git_clean () -{ - case "$cur" in - --*) - __gitcomp "--dry-run --quiet" - return - ;; - esac - - # XXX should we check for -x option ? - __git_complete_index_file "--others" -} - -_git_clone () -{ - case "$cur" in - --*) - __gitcomp " - --local - --no-hardlinks - --shared - --reference - --quiet - --no-checkout - --bare - --mirror - --origin - --upload-pack - --template= - --depth - --single-branch - --branch - " - return - ;; - esac - COMPREPLY=() -} - -_git_commit () -{ - case "$prev" in - -c|-C) - __gitcomp_nl "$(__git_refs)" "" "${cur}" - return - ;; - esac - - case "$prev" in - -c|-C) - __gitcomp_nl "$(__git_refs)" "" "${cur}" - return - ;; - esac - - case "$cur" in - --cleanup=*) - __gitcomp "default strip verbatim whitespace - " "" "${cur##--cleanup=}" - return - ;; - --reuse-message=*|--reedit-message=*|\ - --fixup=*|--squash=*) - __gitcomp_nl "$(__git_refs)" "" "${cur#*=}" - return - ;; - --untracked-files=*) - __gitcomp "all no normal" "" "${cur##--untracked-files=}" - return - ;; - --*) - __gitcomp " - --all --author= --signoff --verify --no-verify - --edit --no-edit - --amend --include --only --interactive - --dry-run --reuse-message= --reedit-message= - --reset-author --file= --message= --template= - --cleanup= --untracked-files --untracked-files= - --verbose --quiet --fixup= --squash= - " - return - esac - - if git rev-parse --verify --quiet HEAD >/dev/null; then - __git_complete_diff_index_file "HEAD" - else - # This is the first commit - __git_complete_index_file "--cached" - fi -} - -_git_describe () -{ - case "$cur" in - --*) - __gitcomp " - --all --tags --contains --abbrev= --candidates= - --exact-match --debug --long --match --always - " - return - esac - __gitcomp_nl "$(__git_refs)" -} - -__git_diff_algorithms="myers minimal patience histogram" - -__git_diff_common_options="--stat --numstat --shortstat --summary - --patch-with-stat --name-only --name-status --color - --no-color --color-words --no-renames --check - --full-index --binary --abbrev --diff-filter= - --find-copies-harder - --text --ignore-space-at-eol --ignore-space-change - --ignore-all-space --exit-code --quiet --ext-diff - --no-ext-diff - --no-prefix --src-prefix= --dst-prefix= - --inter-hunk-context= - --patience --histogram --minimal - --raw - --dirstat --dirstat= --dirstat-by-file - --dirstat-by-file= --cumulative - --diff-algorithm= -" - -_git_diff () -{ - __git_has_doubledash && return - - case "$cur" in - --diff-algorithm=*) - __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" - return - ;; - --*) - __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex - --base --ours --theirs --no-index - $__git_diff_common_options - " - return - ;; - esac - __git_complete_revlist_file -} - -__git_mergetools_common="diffuse ecmerge emerge kdiff3 meld opendiff - tkdiff vimdiff gvimdiff xxdiff araxis p4merge bc3 codecompare -" - -_git_difftool () -{ - __git_has_doubledash && return - - case "$cur" in - --tool=*) - __gitcomp "$__git_mergetools_common kompare" "" "${cur##--tool=}" - return - ;; - --*) - __gitcomp "--cached --staged --pickaxe-all --pickaxe-regex - --base --ours --theirs - --no-renames --diff-filter= --find-copies-harder - --relative --ignore-submodules - --tool=" - return - ;; - esac - __git_complete_file -} - -__git_fetch_options=" - --quiet --verbose --append --upload-pack --force --keep --depth= - --tags --no-tags --all --prune --dry-run -" - -_git_fetch () -{ - case "$cur" in - --*) - __gitcomp "$__git_fetch_options" - return - ;; - esac - __git_complete_remote_or_refspec -} - -__git_format_patch_options=" - --stdout --attach --no-attach --thread --thread= --output-directory - --numbered --start-number --numbered-files --keep-subject --signoff - --signature --no-signature --in-reply-to= --cc= --full-index --binary - --not --all --cover-letter --no-prefix --src-prefix= --dst-prefix= - --inline --suffix= --ignore-if-in-upstream --subject-prefix= -" - -_git_format_patch () -{ - case "$cur" in - --thread=*) - __gitcomp " - deep shallow - " "" "${cur##--thread=}" - return - ;; - --*) - __gitcomp "$__git_format_patch_options" - return - ;; - esac - __git_complete_revlist -} - -_git_fsck () -{ - case "$cur" in - --*) - __gitcomp " - --tags --root --unreachable --cache --no-reflogs --full - --strict --verbose --lost-found - " - return - ;; - esac - COMPREPLY=() -} - -_git_gc () -{ - case "$cur" in - --*) - __gitcomp "--prune --aggressive" - return - ;; - esac - COMPREPLY=() -} - -_git_gitk () -{ - _gitk -} - -__git_match_ctag() { - awk "/^${1////\\/}/ { print \$1 }" "$2" -} - -_git_grep () -{ - __git_has_doubledash && return - - case "$cur" in - --*) - __gitcomp " - --cached - --text --ignore-case --word-regexp --invert-match - --full-name --line-number - --extended-regexp --basic-regexp --fixed-strings - --perl-regexp - --files-with-matches --name-only - --files-without-match - --max-depth - --count - --and --or --not --all-match - " - return - ;; - esac - - case "$cword,$prev" in - 2,*|*,-*) - if test -r tags; then - __gitcomp_nl "$(__git_match_ctag "$cur" tags)" - return - fi - ;; - esac - - __gitcomp_nl "$(__git_refs)" -} - -_git_help () -{ - case "$cur" in - --*) - __gitcomp "--all --info --man --web" - return - ;; - esac - __git_compute_all_commands - __gitcomp "$__git_all_commands $(__git_aliases) - attributes cli core-tutorial cvs-migration - diffcore gitk glossary hooks ignore modules - namespaces repository-layout tutorial tutorial-2 - workflows - " -} - -_git_init () -{ - case "$cur" in - --shared=*) - __gitcomp " - false true umask group all world everybody - " "" "${cur##--shared=}" - return - ;; - --*) - __gitcomp "--quiet --bare --template= --shared --shared=" - return - ;; - esac - COMPREPLY=() -} - -_git_ls_files () -{ - case "$cur" in - --*) - __gitcomp "--cached --deleted --modified --others --ignored - --stage --directory --no-empty-directory --unmerged - --killed --exclude= --exclude-from= - --exclude-per-directory= --exclude-standard - --error-unmatch --with-tree= --full-name - --abbrev --ignored --exclude-per-directory - " - return - ;; - esac - - # XXX ignore options like --modified and always suggest all cached - # files. - __git_complete_index_file "--cached" -} - -_git_ls_remote () -{ - __gitcomp_nl "$(__git_remotes)" -} - -_git_ls_tree () -{ - __git_complete_file -} - -# Options that go well for log, shortlog and gitk -__git_log_common_options=" - --not --all - --branches --tags --remotes - --first-parent --merges --no-merges - --max-count= - --max-age= --since= --after= - --min-age= --until= --before= - --min-parents= --max-parents= - --no-min-parents --no-max-parents -" -# Options that go well for log and gitk (not shortlog) -__git_log_gitk_options=" - --dense --sparse --full-history - --simplify-merges --simplify-by-decoration - --left-right --notes --no-notes -" -# Options that go well for log and shortlog (not gitk) -__git_log_shortlog_options=" - --author= --committer= --grep= - --all-match -" - -__git_log_pretty_formats="oneline short medium full fuller email raw format:" -__git_log_date_formats="relative iso8601 rfc2822 short local default raw" - -_git_log () -{ - __git_has_doubledash && return - - local g="$(git rev-parse --git-dir 2>/dev/null)" - local merge="" - if [ -f "$g/MERGE_HEAD" ]; then - merge="--merge" - fi - case "$cur" in - --pretty=*|--format=*) - __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) - " "" "${cur#*=}" - return - ;; - --date=*) - __gitcomp "$__git_log_date_formats" "" "${cur##--date=}" - return - ;; - --decorate=*) - __gitcomp "long short" "" "${cur##--decorate=}" - return - ;; - --*) - __gitcomp " - $__git_log_common_options - $__git_log_shortlog_options - $__git_log_gitk_options - --root --topo-order --date-order --reverse - --follow --full-diff - --abbrev-commit --abbrev= - --relative-date --date= - --pretty= --format= --oneline - --cherry-pick - --graph - --decorate --decorate= - --walk-reflogs - --parents --children - $merge - $__git_diff_common_options - --pickaxe-all --pickaxe-regex - " - return - ;; - esac - __git_complete_revlist -} - -__git_merge_options=" - --no-commit --no-stat --log --no-log --squash --strategy - --commit --stat --no-squash --ff --no-ff --ff-only --edit --no-edit -" - -_git_merge () -{ - __git_complete_strategy && return - - case "$cur" in - --*) - __gitcomp "$__git_merge_options" - return - esac - __gitcomp_nl "$(__git_refs)" -} - -_git_mergetool () -{ - case "$cur" in - --tool=*) - __gitcomp "$__git_mergetools_common tortoisemerge" "" "${cur##--tool=}" - return - ;; - --*) - __gitcomp "--tool=" - return - ;; - esac - COMPREPLY=() -} - -_git_merge_base () -{ - __gitcomp_nl "$(__git_refs)" -} - -_git_mv () -{ - case "$cur" in - --*) - __gitcomp "--dry-run" - return - ;; - esac - - if [ $(__git_count_arguments "mv") -gt 0 ]; then - # We need to show both cached and untracked files (including - # empty directories) since this may not be the last argument. - __git_complete_index_file "--cached --others --directory" - else - __git_complete_index_file "--cached" - fi -} - -_git_name_rev () -{ - __gitcomp "--tags --all --stdin" -} - -_git_notes () -{ - local subcommands='add append copy edit list prune remove show' - local subcommand="$(__git_find_on_cmdline "$subcommands")" - - case "$subcommand,$cur" in - ,--*) - __gitcomp '--ref' - ;; - ,*) - case "$prev" in - --ref) - __gitcomp_nl "$(__git_refs)" - ;; - *) - __gitcomp "$subcommands --ref" - ;; - esac - ;; - add,--reuse-message=*|append,--reuse-message=*|\ - add,--reedit-message=*|append,--reedit-message=*) - __gitcomp_nl "$(__git_refs)" "" "${cur#*=}" - ;; - add,--*|append,--*) - __gitcomp '--file= --message= --reedit-message= - --reuse-message=' - ;; - copy,--*) - __gitcomp '--stdin' - ;; - prune,--*) - __gitcomp '--dry-run --verbose' - ;; - prune,*) - ;; - *) - case "$prev" in - -m|-F) - ;; - *) - __gitcomp_nl "$(__git_refs)" - ;; - esac - ;; - esac -} - -_git_pull () -{ - __git_complete_strategy && return - - case "$cur" in - --*) - __gitcomp " - --rebase --no-rebase - $__git_merge_options - $__git_fetch_options - " - return - ;; - esac - __git_complete_remote_or_refspec -} - -_git_push () -{ - case "$prev" in - --repo) - __gitcomp_nl "$(__git_remotes)" - return - esac - case "$cur" in - --repo=*) - __gitcomp_nl "$(__git_remotes)" "" "${cur##--repo=}" - return - ;; - --*) - __gitcomp " - --all --mirror --tags --dry-run --force --verbose - --receive-pack= --repo= --set-upstream - " - return - ;; - esac - __git_complete_remote_or_refspec -} - -_git_rebase () -{ - local dir="$(__gitdir)" - if [ -d "$dir"/rebase-apply ] || [ -d "$dir"/rebase-merge ]; then - __gitcomp "--continue --skip --abort" - return - fi - __git_complete_strategy && return - case "$cur" in - --whitespace=*) - __gitcomp "$__git_whitespacelist" "" "${cur##--whitespace=}" - return - ;; - --*) - __gitcomp " - --onto --merge --strategy --interactive - --preserve-merges --stat --no-stat - --committer-date-is-author-date --ignore-date - --ignore-whitespace --whitespace= - --autosquash - " - - return - esac - __gitcomp_nl "$(__git_refs)" -} - -_git_reflog () -{ - local subcommands="show delete expire" - local subcommand="$(__git_find_on_cmdline "$subcommands")" - - if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" - else - __gitcomp_nl "$(__git_refs)" - fi -} - -__git_send_email_confirm_options="always never auto cc compose" -__git_send_email_suppresscc_options="author self cc bodycc sob cccmd body all" - -_git_send_email () -{ - case "$cur" in - --confirm=*) - __gitcomp " - $__git_send_email_confirm_options - " "" "${cur##--confirm=}" - return - ;; - --suppress-cc=*) - __gitcomp " - $__git_send_email_suppresscc_options - " "" "${cur##--suppress-cc=}" - - return - ;; - --smtp-encryption=*) - __gitcomp "ssl tls" "" "${cur##--smtp-encryption=}" - return - ;; - --thread=*) - __gitcomp " - deep shallow - " "" "${cur##--thread=}" - return - ;; - --*) - __gitcomp "--annotate --bcc --cc --cc-cmd --chain-reply-to - --compose --confirm= --dry-run --envelope-sender - --from --identity - --in-reply-to --no-chain-reply-to --no-signed-off-by-cc - --no-suppress-from --no-thread --quiet - --signed-off-by-cc --smtp-pass --smtp-server - --smtp-server-port --smtp-encryption= --smtp-user - --subject --suppress-cc= --suppress-from --thread --to - --validate --no-validate - $__git_format_patch_options" - return - ;; - esac - __git_complete_revlist -} - -_git_stage () -{ - _git_add -} - -__git_config_get_set_variables () -{ - local prevword word config_file= c=$cword - while [ $c -gt 1 ]; do - word="${words[c]}" - case "$word" in - --system|--global|--local|--file=*) - config_file="$word" - break - ;; - -f|--file) - config_file="$word $prevword" - break - ;; - esac - prevword=$word - c=$((--c)) - done - - git --git-dir="$(__gitdir)" config $config_file --list 2>/dev/null | - while read -r line - do - case "$line" in - *.*=*) - echo "${line/=*/}" - ;; - esac - done -} - -_git_config () -{ - case "$prev" in - branch.*.remote) - __gitcomp_nl "$(__git_remotes)" - return - ;; - branch.*.merge) - __gitcomp_nl "$(__git_refs)" - return - ;; - remote.*.fetch) - local remote="${prev#remote.}" - remote="${remote%.fetch}" - if [ -z "$cur" ]; then - COMPREPLY=("refs/heads/") - return - fi - __gitcomp_nl "$(__git_refs_remotes "$remote")" - return - ;; - remote.*.push) - local remote="${prev#remote.}" - remote="${remote%.push}" - __gitcomp_nl "$(git --git-dir="$(__gitdir)" \ - for-each-ref --format='%(refname):%(refname)' \ - refs/heads)" - return - ;; - pull.twohead|pull.octopus) - __git_compute_merge_strategies - __gitcomp "$__git_merge_strategies" - return - ;; - color.branch|color.diff|color.interactive|\ - color.showbranch|color.status|color.ui) - __gitcomp "always never auto" - return - ;; - color.pager) - __gitcomp "false true" - return - ;; - color.*.*) - __gitcomp " - normal black red green yellow blue magenta cyan white - bold dim ul blink reverse - " - return - ;; - help.format) - __gitcomp "man info web html" - return - ;; - log.date) - __gitcomp "$__git_log_date_formats" - return - ;; - sendemail.aliasesfiletype) - __gitcomp "mutt mailrc pine elm gnus" - return - ;; - sendemail.confirm) - __gitcomp "$__git_send_email_confirm_options" - return - ;; - sendemail.suppresscc) - __gitcomp "$__git_send_email_suppresscc_options" - return - ;; - --get|--get-all|--unset|--unset-all) - __gitcomp_nl "$(__git_config_get_set_variables)" - return - ;; - *.*) - COMPREPLY=() - return - ;; - esac - case "$cur" in - --*) - __gitcomp " - --system --global --local --file= - --list --replace-all - --get --get-all --get-regexp - --add --unset --unset-all - --remove-section --rename-section - " - return - ;; - branch.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp "remote merge mergeoptions rebase" "$pfx" "$cur_" - return - ;; - branch.*) - local pfx="${cur%.*}." cur_="${cur#*.}" - __gitcomp_nl "$(__git_heads)" "$pfx" "$cur_" "." - return - ;; - guitool.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp " - argprompt cmd confirm needsfile noconsole norescan - prompt revprompt revunmerged title - " "$pfx" "$cur_" - return - ;; - difftool.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp "cmd path" "$pfx" "$cur_" - return - ;; - man.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp "cmd path" "$pfx" "$cur_" - return - ;; - mergetool.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp "cmd path trustExitCode" "$pfx" "$cur_" - return - ;; - pager.*) - local pfx="${cur%.*}." cur_="${cur#*.}" - __git_compute_all_commands - __gitcomp_nl "$__git_all_commands" "$pfx" "$cur_" - return - ;; - remote.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp " - url proxy fetch push mirror skipDefaultUpdate - receivepack uploadpack tagopt pushurl - " "$pfx" "$cur_" - return - ;; - remote.*) - local pfx="${cur%.*}." cur_="${cur#*.}" - __gitcomp_nl "$(__git_remotes)" "$pfx" "$cur_" "." - return - ;; - url.*.*) - local pfx="${cur%.*}." cur_="${cur##*.}" - __gitcomp "insteadOf pushInsteadOf" "$pfx" "$cur_" - return - ;; - esac - __gitcomp " - add.ignoreErrors - advice.commitBeforeMerge - advice.detachedHead - advice.implicitIdentity - advice.pushNonFastForward - advice.resolveConflict - advice.statusHints - alias. - am.keepcr - apply.ignorewhitespace - apply.whitespace - branch.autosetupmerge - branch.autosetuprebase - browser. - clean.requireForce - color.branch - color.branch.current - color.branch.local - color.branch.plain - color.branch.remote - color.decorate.HEAD - color.decorate.branch - color.decorate.remoteBranch - color.decorate.stash - color.decorate.tag - color.diff - color.diff.commit - color.diff.frag - color.diff.func - color.diff.meta - color.diff.new - color.diff.old - color.diff.plain - color.diff.whitespace - color.grep - color.grep.context - color.grep.filename - color.grep.function - color.grep.linenumber - color.grep.match - color.grep.selected - color.grep.separator - color.interactive - color.interactive.error - color.interactive.header - color.interactive.help - color.interactive.prompt - color.pager - color.showbranch - color.status - color.status.added - color.status.changed - color.status.header - color.status.nobranch - color.status.untracked - color.status.updated - color.ui - commit.status - commit.template - core.abbrev - core.askpass - core.attributesfile - core.autocrlf - core.bare - core.bigFileThreshold - core.compression - core.createObject - core.deltaBaseCacheLimit - core.editor - core.eol - core.excludesfile - core.fileMode - core.fsyncobjectfiles - core.gitProxy - core.ignoreCygwinFSTricks - core.ignoreStat - core.ignorecase - core.logAllRefUpdates - core.loosecompression - core.notesRef - core.packedGitLimit - core.packedGitWindowSize - core.pager - core.preferSymlinkRefs - core.preloadindex - core.quotepath - core.repositoryFormatVersion - core.safecrlf - core.sharedRepository - core.sparseCheckout - core.symlinks - core.trustctime - core.warnAmbiguousRefs - core.whitespace - core.worktree - diff.autorefreshindex - diff.statGraphWidth - diff.external - diff.ignoreSubmodules - diff.mnemonicprefix - diff.noprefix - diff.renameLimit - diff.renames - diff.suppressBlankEmpty - diff.tool - diff.wordRegex - diff.algorithm - difftool. - difftool.prompt - fetch.recurseSubmodules - fetch.unpackLimit - format.attach - format.cc - format.headers - format.numbered - format.pretty - format.signature - format.signoff - format.subjectprefix - format.suffix - format.thread - format.to - gc. - gc.aggressiveWindow - gc.auto - gc.autopacklimit - gc.packrefs - gc.pruneexpire - gc.reflogexpire - gc.reflogexpireunreachable - gc.rerereresolved - gc.rerereunresolved - gitcvs.allbinary - gitcvs.commitmsgannotation - gitcvs.dbTableNamePrefix - gitcvs.dbdriver - gitcvs.dbname - gitcvs.dbpass - gitcvs.dbuser - gitcvs.enabled - gitcvs.logfile - gitcvs.usecrlfattr - guitool. - gui.blamehistoryctx - gui.commitmsgwidth - gui.copyblamethreshold - gui.diffcontext - gui.encoding - gui.fastcopyblame - gui.matchtrackingbranch - gui.newbranchtemplate - gui.pruneduringfetch - gui.spellingdictionary - gui.trustmtime - help.autocorrect - help.browser - help.format - http.lowSpeedLimit - http.lowSpeedTime - http.maxRequests - http.minSessions - http.noEPSV - http.postBuffer - http.proxy - http.sslCAInfo - http.sslCAPath - http.sslCert - http.sslCertPasswordProtected - http.sslKey - http.sslVerify - http.useragent - i18n.commitEncoding - i18n.logOutputEncoding - imap.authMethod - imap.folder - imap.host - imap.pass - imap.port - imap.preformattedHTML - imap.sslverify - imap.tunnel - imap.user - init.templatedir - instaweb.browser - instaweb.httpd - instaweb.local - instaweb.modulepath - instaweb.port - interactive.singlekey - log.date - log.decorate - log.showroot - mailmap.file - man. - man.viewer - merge. - merge.conflictstyle - merge.log - merge.renameLimit - merge.renormalize - merge.stat - merge.tool - merge.verbosity - mergetool. - mergetool.keepBackup - mergetool.keepTemporaries - mergetool.prompt - notes.displayRef - notes.rewrite. - notes.rewrite.amend - notes.rewrite.rebase - notes.rewriteMode - notes.rewriteRef - pack.compression - pack.deltaCacheLimit - pack.deltaCacheSize - pack.depth - pack.indexVersion - pack.packSizeLimit - pack.threads - pack.window - pack.windowMemory - pager. - pretty. - pull.octopus - pull.twohead - push.default - rebase.autosquash - rebase.stat - receive.autogc - receive.denyCurrentBranch - receive.denyDeleteCurrent - receive.denyDeletes - receive.denyNonFastForwards - receive.fsckObjects - receive.unpackLimit - receive.updateserverinfo - remotes. - repack.usedeltabaseoffset - rerere.autoupdate - rerere.enabled - sendemail. - sendemail.aliasesfile - sendemail.aliasfiletype - sendemail.bcc - sendemail.cc - sendemail.cccmd - sendemail.chainreplyto - sendemail.confirm - sendemail.envelopesender - sendemail.from - sendemail.identity - sendemail.multiedit - sendemail.signedoffbycc - sendemail.smtpdomain - sendemail.smtpencryption - sendemail.smtppass - sendemail.smtpserver - sendemail.smtpserveroption - sendemail.smtpserverport - sendemail.smtpuser - sendemail.suppresscc - sendemail.suppressfrom - sendemail.thread - sendemail.to - sendemail.validate - showbranch.default - status.relativePaths - status.showUntrackedFiles - status.submodulesummary - submodule. - tar.umask - transfer.unpackLimit - url. - user.email - user.name - user.signingkey - web.browser - branch. remote. - " -} - -_git_remote () -{ - local subcommands="add rename remove set-head set-branches set-url show prune update" - local subcommand="$(__git_find_on_cmdline "$subcommands")" - if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" - return - fi - - case "$subcommand" in - rename|remove|set-url|show|prune) - __gitcomp_nl "$(__git_remotes)" - ;; - set-head|set-branches) - __git_complete_remote_or_refspec - ;; - update) - local i c='' IFS=$'\n' - for i in $(git --git-dir="$(__gitdir)" config --get-regexp "remotes\..*" 2>/dev/null); do - i="${i#remotes.}" - c="$c ${i/ */}" - done - __gitcomp "$c" - ;; - *) - COMPREPLY=() - ;; - esac -} - -_git_replace () -{ - __gitcomp_nl "$(__git_refs)" -} - -_git_reset () -{ - __git_has_doubledash && return - - case "$cur" in - --*) - __gitcomp "--merge --mixed --hard --soft --patch" - return - ;; - esac - __gitcomp_nl "$(__git_refs)" -} - -_git_revert () -{ - case "$cur" in - --*) - __gitcomp "--edit --mainline --no-edit --no-commit --signoff" - return - ;; - esac - __gitcomp_nl "$(__git_refs)" -} - -_git_rm () -{ - case "$cur" in - --*) - __gitcomp "--cached --dry-run --ignore-unmatch --quiet" - return - ;; - esac - - __git_complete_index_file "--cached" -} - -_git_shortlog () -{ - __git_has_doubledash && return - - case "$cur" in - --*) - __gitcomp " - $__git_log_common_options - $__git_log_shortlog_options - --numbered --summary - " - return - ;; - esac - __git_complete_revlist -} - -_git_show () -{ - __git_has_doubledash && return - - case "$cur" in - --pretty=*|--format=*) - __gitcomp "$__git_log_pretty_formats $(__git_pretty_aliases) - " "" "${cur#*=}" - return - ;; - --diff-algorithm=*) - __gitcomp "$__git_diff_algorithms" "" "${cur##--diff-algorithm=}" - return - ;; - --*) - __gitcomp "--pretty= --format= --abbrev-commit --oneline - $__git_diff_common_options - " - return - ;; - esac - __git_complete_file -} - -_git_show_branch () -{ - case "$cur" in - --*) - __gitcomp " - --all --remotes --topo-order --current --more= - --list --independent --merge-base --no-name - --color --no-color - --sha1-name --sparse --topics --reflog - " - return - ;; - esac - __git_complete_revlist -} - -_git_stash () -{ - local save_opts='--keep-index --no-keep-index --quiet --patch' - local subcommands='save list show apply clear drop pop create branch' - local subcommand="$(__git_find_on_cmdline "$subcommands")" - if [ -z "$subcommand" ]; then - case "$cur" in - --*) - __gitcomp "$save_opts" - ;; - *) - if [ -z "$(__git_find_on_cmdline "$save_opts")" ]; then - __gitcomp "$subcommands" - else - COMPREPLY=() - fi - ;; - esac - else - case "$subcommand,$cur" in - save,--*) - __gitcomp "$save_opts" - ;; - apply,--*|pop,--*) - __gitcomp "--index --quiet" - ;; - show,--*|drop,--*|branch,--*) - COMPREPLY=() - ;; - show,*|apply,*|drop,*|pop,*|branch,*) - __gitcomp_nl "$(git --git-dir="$(__gitdir)" stash list \ - | sed -n -e 's/:.*//p')" - ;; - *) - COMPREPLY=() - ;; - esac - fi -} - -_git_submodule () -{ - __git_has_doubledash && return - - local subcommands="add status init update summary foreach sync" - if [ -z "$(__git_find_on_cmdline "$subcommands")" ]; then - case "$cur" in - --*) - __gitcomp "--quiet --cached" - ;; - *) - __gitcomp "$subcommands" - ;; - esac - return - fi -} - -_git_svn () -{ - local subcommands=" - init fetch clone rebase dcommit log find-rev - set-tree commit-diff info create-ignore propget - proplist show-ignore show-externals branch tag blame - migrate mkdirs reset gc - " - local subcommand="$(__git_find_on_cmdline "$subcommands")" - if [ -z "$subcommand" ]; then - __gitcomp "$subcommands" - else - local remote_opts="--username= --config-dir= --no-auth-cache" - local fc_opts=" - --follow-parent --authors-file= --repack= - --no-metadata --use-svm-props --use-svnsync-props - --log-window-size= --no-checkout --quiet - --repack-flags --use-log-author --localtime - --ignore-paths= $remote_opts - " - local init_opts=" - --template= --shared= --trunk= --tags= - --branches= --stdlayout --minimize-url - --no-metadata --use-svm-props --use-svnsync-props - --rewrite-root= --prefix= --use-log-author - --add-author-from $remote_opts - " - local cmt_opts=" - --edit --rmdir --find-copies-harder --copy-similarity= - " - - case "$subcommand,$cur" in - fetch,--*) - __gitcomp "--revision= --fetch-all $fc_opts" - ;; - clone,--*) - __gitcomp "--revision= $fc_opts $init_opts" - ;; - init,--*) - __gitcomp "$init_opts" - ;; - dcommit,--*) - __gitcomp " - --merge --strategy= --verbose --dry-run - --fetch-all --no-rebase --commit-url - --revision --interactive $cmt_opts $fc_opts - " - ;; - set-tree,--*) - __gitcomp "--stdin $cmt_opts $fc_opts" - ;; - create-ignore,--*|propget,--*|proplist,--*|show-ignore,--*|\ - show-externals,--*|mkdirs,--*) - __gitcomp "--revision=" - ;; - log,--*) - __gitcomp " - --limit= --revision= --verbose --incremental - --oneline --show-commit --non-recursive - --authors-file= --color - " - ;; - rebase,--*) - __gitcomp " - --merge --verbose --strategy= --local - --fetch-all --dry-run $fc_opts - " - ;; - commit-diff,--*) - __gitcomp "--message= --file= --revision= $cmt_opts" - ;; - info,--*) - __gitcomp "--url" - ;; - branch,--*) - __gitcomp "--dry-run --message --tag" - ;; - tag,--*) - __gitcomp "--dry-run --message" - ;; - blame,--*) - __gitcomp "--git-format" - ;; - migrate,--*) - __gitcomp " - --config-dir= --ignore-paths= --minimize - --no-auth-cache --username= - " - ;; - reset,--*) - __gitcomp "--revision= --parent" - ;; - *) - COMPREPLY=() - ;; - esac - fi -} - -_git_tag () -{ - local i c=1 f=0 - while [ $c -lt $cword ]; do - i="${words[c]}" - case "$i" in - -d|-v) - __gitcomp_nl "$(__git_tags)" - return - ;; - -f) - f=1 - ;; - esac - ((c++)) - done - - case "$prev" in - -m|-F) - COMPREPLY=() - ;; - -*|tag) - if [ $f = 1 ]; then - __gitcomp_nl "$(__git_tags)" - else - COMPREPLY=() - fi - ;; - *) - __gitcomp_nl "$(__git_refs)" - ;; - esac -} - -_git_whatchanged () -{ - _git_log -} - -__git_main () -{ - local i c=1 command __git_dir - - while [ $c -lt $cword ]; do - i="${words[c]}" - case "$i" in - --git-dir=*) __git_dir="${i#--git-dir=}" ;; - --bare) __git_dir="." ;; - --help) command="help"; break ;; - -c) c=$((++c)) ;; - -*) ;; - *) command="$i"; break ;; - esac - ((c++)) - done - - if [ -z "$command" ]; then - case "$cur" in - --*) __gitcomp " - --paginate - --no-pager - --git-dir= - --bare - --version - --exec-path - --exec-path= - --html-path - --info-path - --work-tree= - --namespace= - --no-replace-objects - --help - " - ;; - *) __git_compute_porcelain_commands - __gitcomp "$__git_porcelain_commands $(__git_aliases)" ;; - esac - return - fi - - local completion_func="_git_${command//-/_}" - declare -f $completion_func >/dev/null && $completion_func && return - - local expansion=$(__git_aliased_command "$command") - if [ -n "$expansion" ]; then - completion_func="_git_${expansion//-/_}" - declare -f $completion_func >/dev/null && $completion_func - fi -} - -__gitk_main () -{ - __git_has_doubledash && return - - local g="$(__gitdir)" - local merge="" - if [ -f "$g/MERGE_HEAD" ]; then - merge="--merge" - fi - case "$cur" in - --*) - __gitcomp " - $__git_log_common_options - $__git_log_gitk_options - $merge - " - return - ;; - esac - __git_complete_revlist -} - -if [[ -n ${ZSH_VERSION-} ]]; then - echo "WARNING: this script is deprecated, please see git-completion.zsh" 1>&2 - - autoload -U +X compinit && compinit - - __gitcomp () - { - emulate -L zsh - - local cur_="${3-$cur}" - - case "$cur_" in - --*=) - ;; - *) - local c IFS=$' \t\n' - local -a array - for c in ${=1}; do - c="$c${4-}" - case $c in - --*=*|*.) ;; - *) c="$c " ;; - esac - array[$#array+1]="$c" - done - compset -P '*[=:]' - compadd -Q -S '' -p "${2-}" -a -- array && _ret=0 - ;; - esac - } - - __gitcomp_nl () - { - emulate -L zsh - - local IFS=$'\n' - compset -P '*[=:]' - compadd -Q -S "${4- }" -p "${2-}" -- ${=1} && _ret=0 - } - - __gitcomp_file () - { - emulate -L zsh - - local IFS=$'\n' - compset -P '*[=:]' - compadd -Q -p "${2-}" -f -- ${=1} && _ret=0 - } - - __git_zsh_helper () - { - emulate -L ksh - local cur cword prev - cur=${words[CURRENT-1]} - prev=${words[CURRENT-2]} - let cword=CURRENT-1 - __${service}_main - } - - _git () - { - emulate -L zsh - local _ret=1 - __git_zsh_helper - let _ret && _default -S '' && _ret=0 - return _ret - } - - compdef _git git gitk - return -elif [[ -n ${BASH_VERSION-} ]]; then - if ((${BASH_VERSINFO[0]} < 4)); then - # compopt is not supported - __git_index_file_list_filter () - { - __git_index_file_list_filter_compat - } - fi -fi - -__git_func_wrap () -{ - local cur words cword prev - _get_comp_words_by_ref -n =: cur words cword prev - $1 -} - -# Setup completion for certain functions defined above by setting common -# variables and workarounds. -# This is NOT a public function; use at your own risk. -__git_complete () -{ - local wrapper="__git_wrap${2}" - eval "$wrapper () { __git_func_wrap $2 ; }" - complete -o bashdefault -o default -o nospace -F $wrapper $1 2>/dev/null \ - || complete -o default -o nospace -F $wrapper $1 -} - -# wrapper for backwards compatibility -_git () -{ - __git_wrap__git_main -} - -# wrapper for backwards compatibility -_gitk () -{ - __git_wrap__gitk_main -} - -__git_complete git __git_main -__git_complete gitk __gitk_main - -# The following are necessary only for Cygwin, and only are needed -# when the user has tab-completed the executable name and consequently -# included the '.exe' suffix. -# -if [ Cygwin = "$(uname -o 2>/dev/null)" ]; then -__git_complete git.exe __git_main -fi diff --git a/bash_completion/repo.bash b/bash_completion/repo.bash deleted file mode 100644 index 9ae5e00f..00000000 --- a/bash_completion/repo.bash +++ /dev/null @@ -1,655 +0,0 @@ -# -*- mode: sh; -*- - -declare -A CMD_HANDLERS -CMD_HANDLERS=( - ["init"]=_repo_init - ["help"]=_repo_help - ["abandon"]=_repo_abandon - ["branch"]=_repo_branch - ["branches"]=_repo_branches - ["checkout"]=_repo_checkout - ["cherry-pick"]=_repo_cherry_pick - ["diff"]=_repo_diff - ["download"]=_repo_download - ["forall"]=_repo_forall - ["grep"]=_repo_grep - ["list"]=_repo_list - ["prune"]=_repo_prune - ["rebase"]=_repo_rebase - ["selfupdate"]=_repo_selfupdate - ["smartsync"]=_repo_smartsync - ["stage"]=_repo_stage - ["start"]=_repo_start - ["status"]=_repo_status - ["sync"]=_repo_sync - ["upload"]=_repo_upload - ["version"]=_repo_version -) - -# To be populated by command handlers. -declare -a OPTIONS -declare -A ARG_OPTIONS - -declare cur -declare prev - -_init_cur_prev() { - cur=$(_get_cword "=") - prev=$(_get_cword "=" 1) - - _split_longopt -} - -_find_repo() { - local dir=$(pwd) - local found=1 - - while [ "${dir}" != / ] - do - if [ -e "${dir}/.repo/repo/main.py" ] - then - found=0 - break - fi - - dir=$(cd "${dir}/.." && pwd) - done - - if [ ${found} -eq 0 ] - then - echo "${dir}" - fi -} - -_is_repo_dir() { - local repo_root=$(_find_repo) - - [ -n "${repo_root}" ] -} - -_gen_comps() { - local completions="$1" - local suffix="${2:- }" - - local -i i - local -a tmp=( $(compgen -W "${completions}" -- ${cur}) ) - - for (( i=0; i < ${#tmp[*]}; i++ )) - do - tmp[$i]="${tmp[$i]}${suffix}" - done - - COMPREPLY=( - "${COMPREPLY[@]}" - "${tmp[@]}" - ) -} - -_strip_colors () { - # taken from http://goo.gl/7KlLZ - sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" -} - -_no_completion() { - true -} - -_command_completion() { - local cmds - - if _is_repo_dir - then - cmds=("abandon" "branch" "branches" "checkout" "cherry-pick" "diff" - "download" "forall" "grep" "help" "init" "list" "prune" "rebase" - "selfupdate" "smartsync" "stage" "start" "status" "sync" - "upload" "version") - else - cmds=("help" "init") - fi - - _gen_comps "${cmds[*]}" -} - -_branch_completion() { - local raw_branches - - # separate statement required to be able to access exit code - raw_branches=$(repo branches 2>/dev/null) - - if [ $? -eq 0 ] - then - local branches=$( - echo "${raw_branches}" | - _strip_colors | awk 'BEGIN { FS="|" } { print $1 }' | cut -c 3- - ) - - _gen_comps "${branches}" - fi -} - -_dir_completion() { - _filedir -d -} - -_project_completion() { - local repo_root=$(_find_repo) - - if [ -n "${repo_root}" -a -f "${repo_root}/.repo/project.list" ] - then - local projects=$(cat "${repo_root}/.repo/project.list") - _gen_comps "${projects}" - fi -} - -_manifest_completion() { - local repo_root=$(_find_repo) - - if [ -n "${repo_root}" ] - then - local manifests_dir="${repo_root}/.repo/manifests" - local git_dir="${manifests_dir}/.git" - local candidates - - manifests=$( - git --git-dir "${git_dir}" ls-files "*.xml" 2>/dev/null) - - if [ $? -eq 0 ] - then - _gen_comps "${manifests}" - fi - fi -} - -_path_cmd_completion() { - _gen_comps "$(compgen -c ${cur})" -} - -_is_option() { - local opt="$1" - - [[ "${opt}" == -* ]] -} - -_is_long_option() { - local opt="$1" - - [[ "${opt}" == --* ]] -} - -_expects_arg() { - local opt="$1" - - if [[ ${ARG_OPTIONS[$opt]} ]] - then - return 0 - else - return 1 - fi -} - -_handle_options() { - if _expects_arg "${prev}" - then - local handler=${ARG_OPTIONS[$prev]} - eval ${handler} "${cur}" - elif _is_option "${cur}" - then - _gen_comps "${OPTIONS[*]}" - - local arg_short - local arg_long - - for opt in "${!ARG_OPTIONS[@]}" - do - if _is_long_option "${opt}" - then - arg_long="${arg_long} ${opt}" - else - arg_short="${arg_short} ${opt}" - fi - done - - _gen_comps "${arg_short}" - _gen_comps "${arg_long}" "=" - else - return 1 - fi - - return 0 -} - -_is_known_shortopt() { - local needle="$1" - - for opt in ${OPTIONS[@]} - do - if [ "${opt}" = "${needle}" ] - then - return 0 - fi - done - - return 1 -} - -_is_known_longopt() { - local needle="$1" - - [[ ${ARG_OPTIONS[$1]} ]] -} - -_arg_index() { - local -i i=2 # skip repo and command - local -i ix=0 - - while [ ${i} -lt ${COMP_CWORD} ] - do - if _is_known_shortopt "${COMP_WORDS[i]}" - then - i+=1 - elif _is_known_longopt "${COMP_WORDS[i]}" - then - i+=2 - elif _is_option "${COMP_WORDS[i]}" - then - i+=1 - else - i+=1 - ix+=1 - fi - done - - eval $1="${ix}" -} - -_when_ix() { - local ix="$1" - local completion="$2" - - _arg_index arg_ix - - if [ ${arg_ix} -eq ${ix} ] - then - ${completion} - return 0 - else - return 1 - fi -} - -_when_first() { - _when_ix 0 "$1" -} - -_when_even() { - local completion="$1" - - _arg_index arg_ix - - if [ $(( ${arg_ix} % 2 )) -eq 0 ] - then - ${completion} - return 0 - else - return 1 - fi -} - -_cmp_opts() { - local opt="$1" - local word="$2" - - if _is_option "${opt}" && ! _is_long_option "${opt}" - then - [ "${word}" == "${opt}" ] - else - [[ "${word}" == "${opt}"=* || "${word}" == "${opt}" ]] - fi -} - -_before() { - local completion="$1" - local words - - shift - - _get_comp_words_by_ref -n = words - - for word in "${words[@]}" - do - for needle in "$@" - do - if _cmp_opts "${needle}" "${word}" - then - return 1 - fi - done - done - - ${completion} - return 0 -} - -_repo_init() { - OPTIONS=( - "-h" "--help" - "-q" "--quite" - "--mirror" - "--no-repo-verify" - ) - - ARG_OPTIONS=( - ["-u"]=_no_completion - ["--manifest-url"]=_no_completion - ["-b"]=_no_completion - ["--manifest-branch"]=_no_completion - ["-m"]=_manifest_completion - ["--manifest-name"]=_manifest_completion - ["--reference"]=_dir_completion - ["--repo-url"]=_no_completion - ["--repo-branch"]=_no_completion - ) - - _handle_options -} - -_repo_help() { - OPTIONS=( - "-a" "--all" - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _when_first _command_completion -} - -_repo_abandon() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _when_first _branch_completion || _project_completion -} - -_repo_branch() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options -} - -_repo_branches() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options -} - -_repo_checkout() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _when_first _branch_completion || _project_completion -} - -_repo_cherry_pick() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options -} - -_repo_diff() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _project_completion -} - -_repo_download() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _when_even _project_completion -} - -_repo_forall() { - OPTIONS=( - "-h" "--help" - "-p" - "-v" "--verbose" - ) - - ARG_OPTIONS=( - ["-c"]=_path_cmd_completion - ["--command"]=_path_cmd_completion - ) - - _handle_options || _before _project_completion -c --command || _filedir -} - -_repo_grep() { - OPTIONS=( - "-h" "--help" - "--cached" - "-r" "--revision" - "-i" "--ignore-case" - "-a" "--text" - "-I" - "-w" "--word-regexp" - "-v" "--invert-match" - "-G" "--basic-regexp" - "-E" "--extended-regexp" - "-F" "--fixed-strings" - "--all-match" - "--and" "--or" "--not" - "-(" "-)" - "-n" - "-l" "--name-only" "--files-with-matches" - "-L" "--files-without-match" - ) - - ARG_OPTIONS=( - ["-e"]=_no_completion - ["-C"]=_no_completion - ["-B"]=_no_completion - ["-A"]=_no_completion - ) - - _handle_options || _project_completion -} - -_repo_list() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _project_completion -} - -_repo_prune() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options || _project_completion -} - -_repo_rebase() { - OPTIONS=( - "-h" "--help" - "-i" "--interactive" - "-f" "--force-rebase" - "--no-ff" - "-q" "--quiet" - "--autosquash" - ) - - ARG_OPTIONS=( - ["--whitespace"]=_no_completion - ) - - _handle_options || _project_completion -} - -_repo_selfupdate() { - OPTIONS=( - "-h" "--help" - "--no-repo-verify" - ) - - ARG_OPTIONS=() - - _handle_options -} - -_repo_smartsync() { - OPTIONS=( - "-h" "--help" - "-f" "--force-broken" - "-l" "--local-only" - "-n" "--network-only" - "-d" "--detach" - "-q" "--quiet" - "--no-repo-verify" - ) - - ARG_OPTIONS=( - ["-j"]=_no_completion - ["--jobs"]=_no_completion - - ) - - _handle_options || _project_completion -} - -_repo_stage() { - OPTIONS=( - "-h" "--help" - "-i" "--interactive" - ) - - ARG_OPTIONS=() - - _handle_options || _project_completion -} - -_repo_start() { - OPTIONS=( - "-h" "--help" - "--all" - ) - - ARG_OPTIONS=() - - _handle_options || _when_first _branch_completion || _project_completion -} - -_repo_status() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=( - ["-j"]=_no_completion - ["--jobs"]=_no_completion - ) - - _handle_options || _project_completion -} - -_repo_sync() { - OPTIONS=( - "-h" "--help" - "-f" "--force-broken" - "--force-sync" - "-l" "--local-only" - "-n" "--network-only" - "-d" "--detach" - "-q" "--quiet" - "-s" "--smart-sync" - "--no-repo-verify" - ) - - ARG_OPTIONS=( - ["-j"]=_no_completion - ["--jobs"]=_no_completion - ) - - _handle_options || _project_completion -} - -_repo_upload() { - OPTIONS=( - "-h" "--help" - "-t" - "--no-verify" - "--verify" - ) - - ARG_OPTIONS=( - ["--re"]=_no_completion - ["--reviewers"]=_no_completion - ["--cc"]=_no_completion - ["--br"]=_branch_completion - ) - - _handle_options || _project_completion -} - -_repo_version() { - OPTIONS=( - "-h" "--help" - ) - - ARG_OPTIONS=() - - _handle_options -} - -_repo() { - COMPREPLY=() - - _init_cur_prev - - if [ ${COMP_CWORD} -eq 1 ] - then - _command_completion - else - local cmd=${COMP_WORDS[1]} - local handler=${CMD_HANDLERS["${cmd}"]} - if [ -n ${handler} ] - then - eval ${handler} - fi - fi - - return 0 -} - -complete -o nospace -F _repo repo diff --git a/bootanimation/Android.mk b/bootanimation/Android.mk deleted file mode 100644 index 7eaf96c4..00000000 --- a/bootanimation/Android.mk +++ /dev/null @@ -1,63 +0,0 @@ -# -# Copyright (C) 2016 The CyanogenMod Project -# 2017 The LineageOS Project -# -# 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. -# - -ifeq ($(TARGET_SCREEN_WIDTH),) - $(warning TARGET_SCREEN_WIDTH is not set, using default value: 1080) - TARGET_SCREEN_WIDTH := 1080 -endif -ifeq ($(TARGET_SCREEN_HEIGHT),) - $(warning TARGET_SCREEN_HEIGHT is not set, using default value: 1920) - TARGET_SCREEN_HEIGHT := 1920 -endif - -define build-bootanimation - $(shell) vendor/lineage/bootanimation/generate-bootanimation.sh \ - $(PRODUCT_OUT) \ - $(TARGET_SCREEN_WIDTH) \ - $(TARGET_SCREEN_HEIGHT) \ - $(TARGET_BOOTANIMATION_HALF_RES) -endef - -TARGET_GENERATED_BOOTANIMATION := $(TARGET_OUT_INTERMEDIATES)/BOOTANIMATION/bootanimation.zip -$(TARGET_GENERATED_BOOTANIMATION): - @echo "Building bootanimation" - $(build-bootanimation) - -ifeq ($(TARGET_BOOTANIMATION),) - TARGET_BOOTANIMATION := $(TARGET_GENERATED_BOOTANIMATION) - ifeq ($(shell command -v mogrify),) - $(info **********************************************) - $(info The boot animation could not be generated as) - $(info ImageMagick is not installed in your system.) - $(info $(space)) - $(info Please install ImageMagick from this website:) - $(info https://imagemagick.org/script/binary-releases.php) - $(info **********************************************) - $(error stop) - endif -endif - -include $(CLEAR_VARS) -LOCAL_MODULE := bootanimation.zip -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_OUT)/media - -include $(BUILD_SYSTEM)/base_rules.mk - -$(LOCAL_BUILT_MODULE): $(TARGET_BOOTANIMATION) - @mkdir -p $(dir $@) - @cp $(TARGET_BOOTANIMATION) $@ diff --git a/bootanimation/CleanSpec.mk b/bootanimation/CleanSpec.mk deleted file mode 100644 index a32a8837..00000000 --- a/bootanimation/CleanSpec.mk +++ /dev/null @@ -1,17 +0,0 @@ -# -# Copyright (C) 2017 The LineageOS Project -# -# 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. -# - -$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/BOOTANIMATION) diff --git a/bootanimation/bootanimation.tar b/bootanimation/bootanimation.tar Binary files differdeleted file mode 100644 index 7e4b0dc9..00000000 --- a/bootanimation/bootanimation.tar +++ /dev/null diff --git a/bootanimation/desc.txt b/bootanimation/desc.txt deleted file mode 100644 index 5ddacd6b..00000000 --- a/bootanimation/desc.txt +++ /dev/null @@ -1,5 +0,0 @@ -c 1 0 part0 -c 0 0 part1 -c 1 0 part2 -c 1 1 part3 -c 1 0 part4 diff --git a/bootanimation/generate-bootanimation.sh b/bootanimation/generate-bootanimation.sh deleted file mode 100755 index 41d8c022..00000000 --- a/bootanimation/generate-bootanimation.sh +++ /dev/null @@ -1,41 +0,0 @@ -#!/bin/bash - -PRODUCT_OUT="$1" -WIDTH="$2" -HEIGHT="$3" -HALF_RES="$4" - -OUT="$PRODUCT_OUT/obj/BOOTANIMATION" - -if [ "$HEIGHT" -lt "$WIDTH" ]; then - IMAGEWIDTH="$HEIGHT" -else - IMAGEWIDTH="$WIDTH" -fi - -IMAGESCALEWIDTH="$IMAGEWIDTH" -IMAGESCALEHEIGHT=$(expr $IMAGESCALEWIDTH / 3) - -if [ "$HALF_RES" = "true" ]; then - IMAGEWIDTH=$(expr $IMAGEWIDTH / 2) -fi - -IMAGEHEIGHT=$(expr $IMAGEWIDTH / 3) - -RESOLUTION=""$IMAGEWIDTH"x"$IMAGEHEIGHT"" - -for part_cnt in 0 1 2 3 4 -do - mkdir -p "$OUT/bootanimation/part$part_cnt" -done -tar xfp "vendor/lineage/bootanimation/bootanimation.tar" -C "$OUT/bootanimation/" -mogrify -resize $RESOLUTION -colors 250 "$OUT/bootanimation/"*"/"*".png" - -# Create desc.txt -echo "$IMAGESCALEWIDTH $IMAGESCALEHEIGHT" 60 > "$OUT/bootanimation/desc.txt" -cat "vendor/lineage/bootanimation/desc.txt" >> "$OUT/bootanimation/desc.txt" - -# Create bootanimation.zip -cd "$OUT/bootanimation" - -zip -qr0 "$OUT/bootanimation.zip" . diff --git a/build/core/apicheck_msg_current.txt b/build/core/apicheck_msg_current.txt deleted file mode 100644 index b02dd0a4..00000000 --- a/build/core/apicheck_msg_current.txt +++ /dev/null @@ -1,147 +0,0 @@ - -****************************** -You have tried to change the API from what has been previously approved. - -STOP. - Read this: - https://github.com/LineageOS/android_lineage-sdk/wiki/Creating-an-API-for-the-SDK#updating--verifying-the-api - -To make these errors go away, you have two choices: - 1) You can add "@hide" javadoc comments to the methods, etc. listed in the - errors above. - - 2) You can update current.txt (locally) by executing the following command: - make update-lineage-api - - ^^^^^^^^^^^^^^^^^^ - CONGRATS YOU EARNED A STINKEYE FROM CID! - - - . `` - `+++++ ;++++' - +++++++ ;++++++' - ++++++++, ++++++++ - +++++++++ :++++++++` - +++++++++ +++++++++` - ++++++++++ +++++++++ - +++++++++ ++++++++++ - +++++++++: +++++++++ - :+++++++++ ;+++++++++ - +++++++++` +++++++++, - ++++++++++ `+++++++++ - +++++++++ ++++++++++ - +++++++++; +++++++++ - ,+++++++++ '+++++++++ - +++++++++. +++++++++, - '+++++++++ .+++++++++ - +++++++++ +++++++++' - +++++++++' +++++++++ - .+++++++++ '+++++++++ - +++++++++, +++++++++. - ;+++++++++ ,+++++++++ - +++++++++ +++++++++; - ++++++++++ .,;;+++++++++++++++++++++++++++++++++;,,. +++++++++ - `+++++++++ ,;++++++++++++++++++++++++++++++++++++++++++++++++++++++++',` ++++++++++ - +++++++++, :++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;. +++++++++` - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - `+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'. ,+++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' .++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' `++++++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;++++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' +++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; ++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; +++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;+++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` +++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++. - ++++++++++++++++++ .,;+++++++++++++++++++++++++++++++++++++++++++++++++++++ .+++++++++++++. - ++++++++++++++++++ .,;++++++++++++++++++++++++++++++++++++++: +++++++++++++. - ++++++++++++++++++ .,+++++++++++++++++++++++++ +++++++++++++. - +++++++++++++++++. +++++++++++++++++++++++++ ,++++++++++++. - +++++++++++++++++ ;++++++++++++++++++++++++ ++++++++++++. - +++++++++++++++++ ,+++++++++++++++++++++++; ++++++++++++. - +++++++++++++++++ .+++++++++++++++++++++++, ++++++++++++. - +++++++++++++++++ .+++++++++++++++++++++++, ++++++++++++. - +++++++++++++++++ .+++++++++++++++++++++++, ++++++++++++. - +++++++++++++++++ :+++++++++++++++++++++++; ++++++++++++. - +++++++++++++++++` +++++++++++++++++++++++++ ++++++++++++. - +++++++++++++++++; +++++++++++++++++++++++++ ++++++++++++. - ++++++++++++++++++ +++++++++++++++++++++++++ ;++++++++++++. - ++++++++++++++++++ ,+++++++++++++++++++++++++ +++++++++++++. - ++++++++++++++++++: ++++++++++++++++++++++++++' +++++++++++++. - +++++++++++++++++++ +++++++++++++++++++++++++++ ;+++++++++++++. - +++++++++++++++++++, ++++++++++++++++++++++++++++, ++++++++++++++. - ++++++++++++++++++++ +++++++++++++++++++++++++++++ ;++++++++++++++. - ++++++++++++++++++++' ++++++++++++++++++++++++++++++' +++++++++++++++. - +++++++++++++++++++++, ++++++++++++++++++++++++++++++++ ++++++++++++++++. - ++++++++++++++++++++++ ;+++++++++++++++++++++++++++++++++ '++++++++++++++++. - +++++++++++++++++++++++ ;+++++++++++++++++++++++++++++++++++ :+++++++++++++++++. - ++++++++++++++++++++++++, '+++++++++++++++++++++++++++++++++++++ ;++++++++++++++++++. - +++++++++++++++++++++++++' ++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++. - +++++++++++++++++++++++++++, '++++++++++++++++++++++++++++++++++++++++++' +++++++++++++++++++++. - +++++++++++++++++++++++++++++: '++++++++++++++++++++++++++++++++++++++++++++++, +++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++;` .++++++++++++++++++++++++++++++++++++++++++++++++++++' ,+++++++++++++++++++++++++. - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++',..,;+++++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++. - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - .+++++++++++++++++++++++++++++++++++++++++++++++++++++++: .,++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++: :+++++++++++++++++++++++++++++++++++++++++++++++++++++++ - +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, .++++++++++++++++++++++++++++++++++++++++++++++++++++++' - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - '+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, - .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++' - ,+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++; - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` - :+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++` - ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, - .;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, - ,;+++++++++++++++++++++++++++++++++++++++++++++++++++++++:. - ..,;;+++++++++++++++++++++++++++++;:,. - - To submit the revised current.txt to the main LineageOS repository, - you will need approval. -****************************** diff --git a/build/core/clear_vars.mk b/build/core/clear_vars.mk deleted file mode 100644 index 1d8135cb..00000000 --- a/build/core/clear_vars.mk +++ /dev/null @@ -1,4 +0,0 @@ -# -# Lineage-specific variable clears -# -LOCAL_IGNORE_SUBDIR := diff --git a/build/core/config.mk b/build/core/config.mk deleted file mode 100644 index 3bf8e2c0..00000000 --- a/build/core/config.mk +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (C) 2015 The CyanogenMod Project -# (C) 2017-2018 The LineageOS Project -# -# 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. - -LINEAGE_SRC_API_DIR := $(TOPDIR)prebuilts/lineage-sdk/api -INTERNAL_LINEAGE_PLATFORM_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/lineage_public_api.txt -INTERNAL_LINEAGE_PLATFORM_REMOVED_API_FILE := $(TARGET_OUT_COMMON_INTERMEDIATES)/PACKAGING/lineage_removed.txt -FRAMEWORK_LINEAGE_PLATFORM_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_current.txt -FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE := $(TOPDIR)lineage-sdk/api/lineage_removed.txt -FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT := $(TOPDIR)vendor/lineage/build/core/apicheck_msg_current.txt - -BUILD_RRO_SYSTEM_PACKAGE := $(TOPDIR)vendor/lineage/build/core/system_rro.mk - -# Rules for QCOM targets -include $(TOPDIR)vendor/lineage/build/core/qcom_target.mk diff --git a/build/core/definitions.mk b/build/core/definitions.mk deleted file mode 100644 index 82ed55d4..00000000 --- a/build/core/definitions.mk +++ /dev/null @@ -1,12 +0,0 @@ -# -# Lineage-specific macros -# -define uniq -$(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1))) -endef - -# Include board/platform macros -include vendor/lineage/build/core/utils.mk - -# Include vendor platform definitions -include vendor/lineage/build/core/vendor/*.mk diff --git a/build/core/main.mk b/build/core/main.mk deleted file mode 100644 index 0793b8a7..00000000 --- a/build/core/main.mk +++ /dev/null @@ -1,2 +0,0 @@ -# Include LineageOS versions -include $(TOPDIR)vendor/lineage/build/core/main_version.mk diff --git a/build/core/main_version.mk b/build/core/main_version.mk deleted file mode 100644 index 96213b08..00000000 --- a/build/core/main_version.mk +++ /dev/null @@ -1,19 +0,0 @@ -# LineageOS System Version -ADDITIONAL_BUILD_PROPERTIES += \ - ro.lineage.version=$(LINEAGE_VERSION) \ - ro.lineage.releasetype=$(LINEAGE_BUILDTYPE) \ - ro.lineage.build.version=$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR) \ - ro.modversion=$(LINEAGE_VERSION) \ - ro.lineagelegal.url=https://lineageos.org/legal - -# LineageOS Platform Display Version -ADDITIONAL_BUILD_PROPERTIES += \ - ro.lineage.display.version=$(LINEAGE_DISPLAY_VERSION) - -# LineageOS Platform SDK Version -ADDITIONAL_BUILD_PROPERTIES += \ - ro.lineage.build.version.plat.sdk=$(LINEAGE_PLATFORM_SDK_VERSION) - -# LineageOS Platform Internal Version -ADDITIONAL_BUILD_PROPERTIES += \ - ro.lineage.build.version.plat.rev=$(LINEAGE_PLATFORM_REV) diff --git a/build/core/pathmap.mk b/build/core/pathmap.mk deleted file mode 100644 index b02868e1..00000000 --- a/build/core/pathmap.mk +++ /dev/null @@ -1,29 +0,0 @@ -# Enter project path into pathmap -# -# $(1): name -# $(2): path -# -define project-set-path -$(eval pathmap_PROJ += $(1):$(2)) -endef - -# Enter variant project path into pathmap -# -# $(1): name -# $(2): variable to check -# $(3): base path -# -define project-set-path-variant - $(call project-set-path,$(1),$(strip \ - $(if $($(2)), \ - $(3)-$($(2)), \ - $(3)))) -endef - -# Returns the path to the requested module's include directory, -# relative to the root of the source tree. -# -# $(1): a list of modules (or other named entities) to find the projects for -define project-path-for -$(foreach n,$(1),$(patsubst $(n):%,%,$(filter $(n):%,$(pathmap_PROJ)))) -endef diff --git a/build/core/qcom_target.mk b/build/core/qcom_target.mk deleted file mode 100644 index 0e43f76f..00000000 --- a/build/core/qcom_target.mk +++ /dev/null @@ -1,55 +0,0 @@ -define wlan-set-path-variant -$(call project-set-path-variant,wlan,TARGET_WLAN_VARIANT,hardware/qcom/$(1)) -endef -define bt-vendor-set-path-variant -$(call project-set-path-variant,bt-vendor,TARGET_BT_VENDOR_VARIANT,hardware/qcom/$(1)) -endef - -# Set device-specific HALs into project pathmap -define set-device-specific-path -$(if $(USE_DEVICE_SPECIFIC_$(1)), \ - $(if $(DEVICE_SPECIFIC_$(1)_PATH), \ - $(eval path := $(DEVICE_SPECIFIC_$(1)_PATH)), \ - $(eval path := $(TARGET_DEVICE_DIR)/$(2))), \ - $(eval path := $(3))) \ -$(call project-set-path,qcom-$(2),$(strip $(path))) -endef - -ifeq ($(BOARD_USES_QCOM_HARDWARE),true) - -$(call set-device-specific-path,AUDIO,audio,hardware/qcom/audio-caf/$(QCOM_HARDWARE_VARIANT)) -$(call set-device-specific-path,DISPLAY,display,hardware/qcom/display-caf/$(QCOM_HARDWARE_VARIANT)) -$(call set-device-specific-path,MEDIA,media,hardware/qcom/media-caf/$(QCOM_HARDWARE_VARIANT)) - -$(call set-device-specific-path,CAMERA,camera,hardware/qcom/camera) -$(call set-device-specific-path,DATA_IPA_CFG_MGR,data-ipa-cfg-mgr,vendor/qcom/opensource/data-ipa-cfg-mgr) -$(call set-device-specific-path,GPS,gps,hardware/qcom/gps) -$(call set-device-specific-path,SENSORS,sensors,hardware/qcom/sensors) -$(call set-device-specific-path,LOC_API,loc-api,vendor/qcom/opensource/location) -$(call set-device-specific-path,DATASERVICES,dataservices,vendor/qcom/opensource/dataservices) -$(call set-device-specific-path,POWER,power,hardware/qcom/power) -$(call set-device-specific-path,THERMAL,thermal,hardware/qcom/thermal) -$(call set-device-specific-path,VR,vr,hardware/qcom/vr) - -$(call wlan-set-path-variant,wlan-caf) -$(call bt-vendor-set-path-variant,bt-caf) - -PRODUCT_CFI_INCLUDE_PATHS += \ - hardware/qcom/wlan-caf/qcwcn/wpa_supplicant_8_lib -else - -$(call project-set-path,qcom-audio,hardware/qcom/audio/default) -$(call project-set-path,qcom-display,hardware/qcom/display/$(TARGET_BOARD_PLATFORM)) -$(call project-set-path,qcom-media,hardware/qcom/media/$(TARGET_BOARD_PLATFORM)) - -$(call project-set-path,qcom-camera,hardware/qcom/camera) -$(call project-set-path,qcom-data-ipa-cfg-mgr,hardware/qcom/data/ipacfg-mgr) -$(call project-set-path,qcom-gps,hardware/qcom/gps) -$(call project-set-path,qcom-sensors,hardware/qcom/sensors) -$(call project-set-path,qcom-loc-api,vendor/qcom/opensource/location) -$(call project-set-path,qcom-dataservices,$(TARGET_DEVICE_DIR)/dataservices) - -$(call wlan-set-path-variant,wlan) -$(call bt-vendor-set-path-variant,bt) - -endif diff --git a/build/core/sdllvm-lto-defs.mk b/build/core/sdllvm-lto-defs.mk deleted file mode 100644 index 0d202bd9..00000000 --- a/build/core/sdllvm-lto-defs.mk +++ /dev/null @@ -1,34 +0,0 @@ -ifeq ($(LOCAL_MODULE_CLASS), STATIC_LIBRARIES) -# For STATIC_LIBRARIES we need to use SD LLVM's archiver and archiver flags. - -AR := $(SDCLANG_PATH)/llvm-ar - -ifeq ($(LOCAL_SDCLANG_2),true) -AR := $(SDCLANG_PATH_2)/llvm-ar -endif - -ARFLAGS := crsD - -# For 32 bit -$(LOCAL_BUILT_MODULE) : $(combo_2nd_arch_prefix)TARGET_AR := $(AR) -$(LOCAL_BUILT_MODULE) : $(combo_var_prefix)GLOBAL_ARFLAGS := $(ARFLAGS) - -# For 64 bit -intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX)) -LOCAL_BUILT_MODULE_64 := $(intermediates)/$(my_installed_module_stem) - -$(LOCAL_BUILT_MODULE_64) : TARGET_AR := $(AR) -$(LOCAL_BUILT_MODULE_64) : TARGET_GLOBAL_ARFLAGS := $(ARFLAGS) - -else -# For SHARED_LIBRARIES and EXECUTABLES we need to filter out flags not -# needed/understood by SD LLVM's Linker. - -FLAGS_TO_BE_FILTERED := -Wl,--icf=safe -Wl,--no-undefined-version -Wl,--fix-cortex-a53-843419 -fuse-ld=gold -linked_module_32 := $(intermediates)/LINKED/$(my_installed_module_stem) -intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX)) -linked_module_64 := $(intermediates)/LINKED/$(my_installed_module_stem) - -$(linked_module_32) : PRIVATE_TARGET_GLOBAL_LDFLAGS := $(filter-out $(FLAGS_TO_BE_FILTERED),$(PRIVATE_TARGET_GLOBAL_LDFLAGS)) -$(linked_module_64) : PRIVATE_TARGET_GLOBAL_LDFLAGS := $(filter-out $(FLAGS_TO_BE_FILTERED),$(PRIVATE_TARGET_GLOBAL_LDFLAGS)) -endif diff --git a/build/core/system_rro.mk b/build/core/system_rro.mk deleted file mode 100644 index 9b1257a9..00000000 --- a/build/core/system_rro.mk +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (C) 2018 The LineageOS Project -# -# 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. - -LOCAL_IS_RUNTIME_RESOURCE_OVERLAY := true - -ifneq ($(LOCAL_SRC_FILES),) - $(error runtime resource overlay package should not contain sources) -endif - -ifeq ($(LOCAL_RRO_THEME),) - $(error runtime resource overlay package must define \'LOCAL_RRO_THEME\') -else - LOCAL_MODULE_PATH := $(TARGET_OUT)/app/$(LOCAL_RRO_THEME) -endif - -include $(BUILD_SYSTEM)/package.mk - diff --git a/build/core/utils.mk b/build/core/utils.mk deleted file mode 100644 index 23bd4c9b..00000000 --- a/build/core/utils.mk +++ /dev/null @@ -1,203 +0,0 @@ -# vars for use by utils -empty := -space := $(empty) $(empty) -colon := $(empty):$(empty) -underscore := $(empty)_$(empty) - -# $(call match-word,w1,w2) -# checks if w1 == w2 -# How it works -# if (w1-w2 not empty or w2-w1 not empty) then not_match else match -# -# returns true or empty -#$(warning :$(1): :$(2): :$(subst $(1),,$(2)):) \ -#$(warning :$(2): :$(1): :$(subst $(2),,$(1)):) \ -# -define match-word -$(strip \ - $(if $(or $(subst $(1),$(empty),$(2)),$(subst $(2),$(empty),$(1))),,true) \ -) -endef - -# $(call find-word-in-list,w,wlist) -# finds an exact match of word w in word list wlist -# -# How it works -# fill wlist spaces with colon -# wrap w with colon -# search word w in list wl, if found match m, return stripped word w -# -# returns stripped word or empty -define find-word-in-list -$(strip \ - $(eval wl:= $(colon)$(subst $(space),$(colon),$(strip $(2)))$(colon)) \ - $(eval w:= $(colon)$(strip $(1))$(colon)) \ - $(eval m:= $(findstring $(w),$(wl))) \ - $(if $(m),$(1),) \ -) -endef - -# $(call match-word-in-list,w,wlist) -# does an exact match of word w in word list wlist -# How it works -# if the input word is not empty -# return output of an exact match of word w in wordlist wlist -# else -# return empty -# returns true or empty -define match-word-in-list -$(strip \ - $(if $(strip $(1)), \ - $(call match-word,$(call find-word-in-list,$(1),$(2)),$(strip $(1))), \ - ) \ -) -endef - -# $(call match-prefix,p,delim,w/wlist) -# matches prefix p in wlist using delimiter delim -# -# How it works -# trim the words in wlist w -# if find-word-in-list returns not empty -# return true -# else -# return empty -# -define match-prefix -$(strip \ - $(eval w := $(strip $(1)$(strip $(2)))) \ - $(eval text := $(patsubst $(w)%,$(1),$(3))) \ - $(if $(call match-word-in-list,$(1),$(text)),true,) \ -) -endef - -# ---- -# The following utilities are meant for board platform specific -# featurisation - -ifndef get-vendor-board-platforms -# $(call get-vendor-board-platforms,v) -# returns list of board platforms for vendor v -define get-vendor-board-platforms -$(if $(call match-word,$(BOARD_USES_$(1)_HARDWARE),true),$($(1)_BOARD_PLATFORMS)) -endef -endif # get-vendor-board-platforms - -# $(call is-board-platform,bp) -# returns true or empty -define is-board-platform -$(call match-word,$(1),$(TARGET_BOARD_PLATFORM)) -endef - -# $(call is-not-board-platform,bp) -# returns true or empty -define is-not-board-platform -$(if $(call match-word,$(1),$(TARGET_BOARD_PLATFORM)),,true) -endef - -# $(call is-board-platform-in-list,bpl) -# returns true or empty -define is-board-platform-in-list -$(call match-word-in-list,$(TARGET_BOARD_PLATFORM),$(1)) -endef - -# $(call is-vendor-board-platform,vendor) -# returns true or empty -define is-vendor-board-platform -$(strip \ - $(call match-word-in-list,$(TARGET_BOARD_PLATFORM),\ - $(call get-vendor-board-platforms,$(1)) \ - ) \ -) -endef - -# $(call is-chipset-in-board-platform,chipset) -# does a prefix match of chipset in TARGET_BOARD_PLATFORM -# uses underscore as a delimiter -# -# returns true or empty -define is-chipset-in-board-platform -$(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)) -endef - -# $(call is-chipset-prefix-in-board-platform,prefix) -# does a chipset prefix match in TARGET_BOARD_PLATFORM -# assumes '_' and 'a' as the delimiter to the chipset prefix -# -# How it works -# if ($(prefix)_ or $(prefix)a match in board platform) -# return true -# else -# return empty -# -define is-chipset-prefix-in-board-platform -$(strip \ - $(eval delim_a := $(empty)a$(empty)) \ - $(if \ - $(or \ - $(call match-prefix,$(1),$(delim_a),$(TARGET_BOARD_PLATFORM)), \ - $(call match-prefix,$(1),$(underscore),$(TARGET_BOARD_PLATFORM)), \ - ), \ - true, \ - ) \ -) -endef - -#---- -# The following utilities are meant for Android Code Name -# specific featurisation -# -# refer http://source.android.com/source/build-numbers.html -# for code names and associated sdk versions -CUPCAKE_SDK_VERSIONS := 3 -DONUT_SDK_VERSIONS := 4 -ECLAIR_SDK_VERSIONS := 5 6 7 -FROYO_SDK_VERSIONS := 8 -GINGERBREAD_SDK_VERSIONS := 9 10 -HONEYCOMB_SDK_VERSIONS := 11 12 13 -ICECREAM_SANDWICH_SDK_VERSIONS := 14 15 -JELLY_BEAN_SDK_VERSIONS := 16 17 18 - -# $(call is-platform-sdk-version-at-least,version) -# version is a numeric SDK_VERSION defined above -define is-platform-sdk-version-at-least -$(strip \ - $(if $(filter 1,$(shell echo "$$(( $(PLATFORM_SDK_VERSION) >= $(1) ))" )), \ - true, \ - ) \ -) -endef - -# $(call is-android-codename,codename) -# codename is one of cupcake,donut,eclair,froyo,gingerbread,icecream -# please refer the $(codename)_SDK_VERSIONS declared above -define is-android-codename -$(strip \ - $(if \ - $(call match-word-in-list,$(PLATFORM_SDK_VERSION),$($(1)_SDK_VERSIONS)), \ - true, \ - ) \ -) -endef - -# $(call is-android-codename-in-list,cnlist) -# cnlist is combination/list of android codenames -define is-android-codename-in-list -$(strip \ - $(eval acn := $(empty)) \ - $(foreach \ - i,$(1),\ - $(eval acn += \ - $(if \ - $(call \ - match-word-in-list,\ - $(PLATFORM_SDK_VERSION),\ - $($(i)_SDK_VERSIONS)\ - ),\ - true,\ - )\ - )\ - ) \ - $(if $(strip $(acn)),true,) \ -) -endef diff --git a/build/core/vendor/mtk_boards.mk b/build/core/vendor/mtk_boards.mk deleted file mode 100644 index 48fd6605..00000000 --- a/build/core/vendor/mtk_boards.mk +++ /dev/null @@ -1,5 +0,0 @@ -# Board platforms lists to be used for -# TARGET_BOARD_PLATFORM specific featurization -MTK_BOARD_PLATFORMS := mt6592 -MTK_BOARD_PLATFORMS += mt6582 -MTK_BOARD_PLATFORMS += mt6572 diff --git a/build/core/vendor/qcom_boards.mk b/build/core/vendor/qcom_boards.mk deleted file mode 100644 index ed8f0898..00000000 --- a/build/core/vendor/qcom_boards.mk +++ /dev/null @@ -1,54 +0,0 @@ -# Board platforms lists to be used for -# TARGET_BOARD_PLATFORM specific featurization - -# Platform name variables - used in makefiles everywhere -MSMNILE := msmnile #SM8150 -MSMSTEPPE := sm6150 -TRINKET := trinket #SM6125 - -# A Family -QCOM_BOARD_PLATFORMS += msm7x27a -QCOM_BOARD_PLATFORMS += msm7x30 -QCOM_BOARD_PLATFORMS += msm8660 - -QCOM_BOARD_PLATFORMS += msm8960 - -# B Family -QCOM_BOARD_PLATFORMS += msm8226 -QCOM_BOARD_PLATFORMS += msm8610 -QCOM_BOARD_PLATFORMS += msm8974 - -QCOM_BOARD_PLATFORMS += apq8084 - -# B64 Family -QCOM_BOARD_PLATFORMS += msm8992 -QCOM_BOARD_PLATFORMS += msm8994 - -# BR Family -QCOM_BOARD_PLATFORMS += msm8909 -QCOM_BOARD_PLATFORMS += msm8916 - -QCOM_BOARD_PLATFORMS += msm8952 - -# UM Family -QCOM_BOARD_PLATFORMS += msm8937 -QCOM_BOARD_PLATFORMS += msm8953 -QCOM_BOARD_PLATFORMS += msm8996 - -QCOM_BOARD_PLATFORMS += msm8998 -QCOM_BOARD_PLATFORMS += sdm660 - -QCOM_BOARD_PLATFORMS += sdm710 -QCOM_BOARD_PLATFORMS += sdm845 - -QCOM_BOARD_PLATFORMS += $(TRINKET) -QCOM_BOARD_PLATFORMS += $(MSMSTEPPE) -QCOM_BOARD_PLATFORMS += $(MSMNILE) - -# MSM7000 Family -MSM7K_BOARD_PLATFORMS := msm7x30 -MSM7K_BOARD_PLATFORMS += msm7x27 -MSM7K_BOARD_PLATFORMS += msm7x27a -MSM7K_BOARD_PLATFORMS += msm7k - -QSD8K_BOARD_PLATFORMS := qsd8k diff --git a/build/envsetup.sh b/build/envsetup.sh deleted file mode 100644 index ccc05892..00000000 --- a/build/envsetup.sh +++ /dev/null @@ -1,997 +0,0 @@ -function __print_lineage_functions_help() { -cat <<EOF -Additional LineageOS functions: -- cout: Changes directory to out. -- mmp: Builds all of the modules in the current directory and pushes them to the device. -- mmap: Builds all of the modules in the current directory and its dependencies, then pushes the package to the device. -- mmmp: Builds all of the modules in the supplied directories and pushes them to the device. -- lineagegerrit: A Git wrapper that fetches/pushes patch from/to LineageOS Gerrit Review. -- lineagerebase: Rebase a Gerrit change and push it again. -- lineageremote: Add git remote for LineageOS Gerrit Review. -- aospremote: Add git remote for matching AOSP repository. -- cafremote: Add git remote for matching CodeAurora repository. -- githubremote: Add git remote for LineageOS Github. -- mka: Builds using SCHED_BATCH on all processors. -- mkap: Builds the module(s) using mka and pushes them to the device. -- cmka: Cleans and builds using mka. -- repodiff: Diff 2 different branches or tags within the same repo -- repolastsync: Prints date and time of last repo sync. -- reposync: Parallel repo sync using ionice and SCHED_BATCH. -- repopick: Utility to fetch changes from Gerrit. -- installboot: Installs a boot.img to the connected device. -- installrecovery: Installs a recovery.img to the connected device. -EOF -} - -function mk_timer() -{ - local start_time=$(date +"%s") - $@ - local ret=$? - local end_time=$(date +"%s") - local tdiff=$(($end_time-$start_time)) - local hours=$(($tdiff / 3600 )) - local mins=$((($tdiff % 3600) / 60)) - local secs=$(($tdiff % 60)) - local ncolors=$(tput colors 2>/dev/null) - echo - if [ $ret -eq 0 ] ; then - echo -n "#### make completed successfully " - else - echo -n "#### make failed to build some targets " - fi - if [ $hours -gt 0 ] ; then - printf "(%02g:%02g:%02g (hh:mm:ss))" $hours $mins $secs - elif [ $mins -gt 0 ] ; then - printf "(%02g:%02g (mm:ss))" $mins $secs - elif [ $secs -gt 0 ] ; then - printf "(%s seconds)" $secs - fi - echo " ####" - echo - return $ret -} - -function brunch() -{ - breakfast $* - if [ $? -eq 0 ]; then - mka bacon - else - echo "No such item in brunch menu. Try 'breakfast'" - return 1 - fi - return $? -} - -function breakfast() -{ - target=$1 - local variant=$2 - LINEAGE_DEVICES_ONLY="true" - unset LUNCH_MENU_CHOICES - add_lunch_combo full-eng - for f in `/bin/ls vendor/lineage/vendorsetup.sh 2> /dev/null` - do - echo "including $f" - . $f - done - unset f - - if [ $# -eq 0 ]; then - # No arguments, so let's have the full menu - lunch - else - echo "z$target" | grep -q "-" - if [ $? -eq 0 ]; then - # A buildtype was specified, assume a full device name - lunch $target - else - # This is probably just the Lineage model name - if [ -z "$variant" ]; then - variant="userdebug" - fi - - lunch lineage_$target-$variant - fi - fi - return $? -} - -alias bib=breakfast - -function eat() -{ - if [ "$OUT" ] ; then - ZIPPATH=`ls -tr "$OUT"/lineage-*.zip | tail -1` - if [ ! -f $ZIPPATH ] ; then - echo "Nothing to eat" - return 1 - fi - adb start-server # Prevent unexpected starting server message from adb get-state in the next line - if [ $(adb get-state) != device -a $(adb shell 'test -e /sbin/recovery 2> /dev/null; echo $?') != 0 ] ; then - echo "No device is online. Waiting for one..." - echo "Please connect USB and/or enable USB debugging" - until [ $(adb get-state) = device -o $(adb shell 'test -e /sbin/recovery 2> /dev/null; echo $?') = 0 ];do - sleep 1 - done - echo "Device Found.." - fi - if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD"); then - # if adbd isn't root we can't write to /cache/recovery/ - adb root - sleep 1 - adb wait-for-device - cat << EOF > /tmp/command ---sideload_auto_reboot -EOF - if adb push /tmp/command /cache/recovery/ ; then - echo "Rebooting into recovery for sideload installation" - adb reboot recovery - adb wait-for-sideload - adb sideload $ZIPPATH - fi - rm /tmp/command - else - echo "The connected device does not appear to be $LINEAGE_BUILD, run away!" - fi - return $? - else - echo "Nothing to eat" - return 1 - fi -} - -function omnom() -{ - brunch $* - eat -} - -function cout() -{ - if [ "$OUT" ]; then - cd $OUT - else - echo "Couldn't locate out directory. Try setting OUT." - fi -} - -function dddclient() -{ - local OUT_ROOT=$(get_abs_build_var PRODUCT_OUT) - local OUT_SYMBOLS=$(get_abs_build_var TARGET_OUT_UNSTRIPPED) - local OUT_SO_SYMBOLS=$(get_abs_build_var TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED) - local OUT_VENDOR_SO_SYMBOLS=$(get_abs_build_var TARGET_OUT_VENDOR_SHARED_LIBRARIES_UNSTRIPPED) - local OUT_EXE_SYMBOLS=$(get_symbols_directory) - local PREBUILTS=$(get_abs_build_var ANDROID_PREBUILTS) - local ARCH=$(get_build_var TARGET_ARCH) - local GDB - case "$ARCH" in - arm) GDB=arm-linux-androideabi-gdb;; - arm64) GDB=arm-linux-androideabi-gdb; GDB64=aarch64-linux-android-gdb;; - mips|mips64) GDB=mips64el-linux-android-gdb;; - x86) GDB=x86_64-linux-android-gdb;; - x86_64) GDB=x86_64-linux-android-gdb;; - *) echo "Unknown arch $ARCH"; return 1;; - esac - - if [ "$OUT_ROOT" -a "$PREBUILTS" ]; then - local EXE="$1" - if [ "$EXE" ] ; then - EXE=$1 - if [[ $EXE =~ ^[^/].* ]] ; then - EXE="system/bin/"$EXE - fi - else - EXE="app_process" - fi - - local PORT="$2" - if [ "$PORT" ] ; then - PORT=$2 - else - PORT=":5039" - fi - - local PID="$3" - if [ "$PID" ] ; then - if [[ ! "$PID" =~ ^[0-9]+$ ]] ; then - PID=`pid $3` - if [[ ! "$PID" =~ ^[0-9]+$ ]] ; then - # that likely didn't work because of returning multiple processes - # try again, filtering by root processes (don't contain colon) - PID=`adb shell ps | \grep $3 | \grep -v ":" | awk '{print $2}'` - if [[ ! "$PID" =~ ^[0-9]+$ ]] - then - echo "Couldn't resolve '$3' to single PID" - return 1 - else - echo "" - echo "WARNING: multiple processes matching '$3' observed, using root process" - echo "" - fi - fi - fi - adb forward "tcp$PORT" "tcp$PORT" - local USE64BIT="$(is64bit $PID)" - adb shell gdbserver$USE64BIT $PORT --attach $PID & - sleep 2 - else - echo "" - echo "If you haven't done so already, do this first on the device:" - echo " gdbserver $PORT /system/bin/$EXE" - echo " or" - echo " gdbserver $PORT --attach <PID>" - echo "" - fi - - OUT_SO_SYMBOLS=$OUT_SO_SYMBOLS$USE64BIT - OUT_VENDOR_SO_SYMBOLS=$OUT_VENDOR_SO_SYMBOLS$USE64BIT - - echo >|"$OUT_ROOT/gdbclient.cmds" "set solib-absolute-prefix $OUT_SYMBOLS" - echo >>"$OUT_ROOT/gdbclient.cmds" "set solib-search-path $OUT_SO_SYMBOLS:$OUT_SO_SYMBOLS/hw:$OUT_SO_SYMBOLS/ssl/engines:$OUT_SO_SYMBOLS/drm:$OUT_SO_SYMBOLS/egl:$OUT_SO_SYMBOLS/soundfx:$OUT_VENDOR_SO_SYMBOLS:$OUT_VENDOR_SO_SYMBOLS/hw:$OUT_VENDOR_SO_SYMBOLS/egl" - echo >>"$OUT_ROOT/gdbclient.cmds" "source $ANDROID_BUILD_TOP/development/scripts/gdb/dalvik.gdb" - echo >>"$OUT_ROOT/gdbclient.cmds" "target remote $PORT" - # Enable special debugging for ART processes. - if [[ $EXE =~ (^|/)(app_process|dalvikvm)(|32|64)$ ]]; then - echo >> "$OUT_ROOT/gdbclient.cmds" "art-on" - fi - echo >>"$OUT_ROOT/gdbclient.cmds" "" - - local WHICH_GDB= - # 64-bit exe found - if [ "$USE64BIT" != "" ] ; then - WHICH_GDB=$ANDROID_TOOLCHAIN/$GDB64 - # 32-bit exe / 32-bit platform - elif [ "$(get_build_var TARGET_2ND_ARCH)" = "" ]; then - WHICH_GDB=$ANDROID_TOOLCHAIN/$GDB - # 32-bit exe / 64-bit platform - else - WHICH_GDB=$ANDROID_TOOLCHAIN_2ND_ARCH/$GDB - fi - - ddd --debugger $WHICH_GDB -x "$OUT_ROOT/gdbclient.cmds" "$OUT_EXE_SYMBOLS/$EXE" - else - echo "Unable to determine build system output dir." - fi -} - -function lineageremote() -{ - if ! git rev-parse --git-dir &> /dev/null - then - echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up." - return 1 - fi - git remote rm lineage 2> /dev/null - local REMOTE=$(git config --get remote.github.projectname) - local LINEAGE="true" - if [ -z "$REMOTE" ] - then - REMOTE=$(git config --get remote.aosp.projectname) - LINEAGE="false" - fi - if [ -z "$REMOTE" ] - then - REMOTE=$(git config --get remote.caf.projectname) - LINEAGE="false" - fi - - if [ $LINEAGE = "false" ] - then - local PROJECT=$(echo $REMOTE | sed -e "s#platform/#android/#g; s#/#_#g") - local PFX="LineageOS/" - else - local PROJECT=$REMOTE - fi - - local LINEAGE_USER=$(git config --get review.review.lineageos.org.username) - if [ -z "$LINEAGE_USER" ] - then - git remote add lineage ssh://review.lineageos.org:29418/$PFX$PROJECT - else - git remote add lineage ssh://$LINEAGE_USER@review.lineageos.org:29418/$PFX$PROJECT - fi - echo "Remote 'lineage' created" -} - -function aospremote() -{ - if ! git rev-parse --git-dir &> /dev/null - then - echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up." - return 1 - fi - git remote rm aosp 2> /dev/null - local PROJECT=$(pwd -P | sed -e "s#$ANDROID_BUILD_TOP\/##; s#-caf.*##; s#\/default##") - # Google moved the repo location in Oreo - if [ $PROJECT = "build/make" ] - then - PROJECT="build" - fi - if (echo $PROJECT | grep -qv "^device") - then - local PFX="platform/" - fi - git remote add aosp https://android.googlesource.com/$PFX$PROJECT - echo "Remote 'aosp' created" -} - -function cafremote() -{ - if ! git rev-parse --git-dir &> /dev/null - then - echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up." - return 1 - fi - git remote rm caf 2> /dev/null - local PROJECT=$(pwd -P | sed -e "s#$ANDROID_BUILD_TOP\/##; s#-caf.*##; s#\/default##") - # Google moved the repo location in Oreo - if [ $PROJECT = "build/make" ] - then - PROJECT="build" - fi - if [[ $PROJECT =~ "qcom/opensource" ]]; - then - PROJECT=$(echo $PROJECT | sed -e "s#qcom\/opensource#qcom-opensource#") - fi - if (echo $PROJECT | grep -qv "^device") - then - local PFX="platform/" - fi - git remote add caf https://source.codeaurora.org/quic/la/$PFX$PROJECT - echo "Remote 'caf' created" -} - -function githubremote() -{ - if ! git rev-parse --git-dir &> /dev/null - then - echo ".git directory not found. Please run this from the root directory of the Android repository you wish to set up." - return 1 - fi - git remote rm github 2> /dev/null - local REMOTE=$(git config --get remote.aosp.projectname) - - if [ -z "$REMOTE" ] - then - REMOTE=$(git config --get remote.caf.projectname) - fi - - local PROJECT=$(echo $REMOTE | sed -e "s#platform/#android/#g; s#/#_#g") - - git remote add github https://github.com/LineageOS/$PROJECT - echo "Remote 'github' created" -} - -function installboot() -{ - if [ ! -e "$OUT/recovery/root/etc/recovery.fstab" ]; - then - echo "No recovery.fstab found. Build recovery first." - return 1 - fi - if [ ! -e "$OUT/boot.img" ]; - then - echo "No boot.img found. Run make bootimage first." - return 1 - fi - PARTITION=`grep "^\/boot" $OUT/recovery/root/etc/recovery.fstab | awk {'print $3'}` - if [ -z "$PARTITION" ]; - then - # Try for RECOVERY_FSTAB_VERSION = 2 - PARTITION=`grep "[[:space:]]\/boot[[:space:]]" $OUT/recovery/root/etc/recovery.fstab | awk {'print $1'}` - PARTITION_TYPE=`grep "[[:space:]]\/boot[[:space:]]" $OUT/recovery/root/etc/recovery.fstab | awk {'print $3'}` - if [ -z "$PARTITION" ]; - then - echo "Unable to determine boot partition." - return 1 - fi - fi - adb start-server - adb wait-for-online - adb root - sleep 1 - adb wait-for-online shell mount /system 2>&1 > /dev/null - adb wait-for-online remount - if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD"); - then - adb push $OUT/boot.img /cache/ - if [ -e "$OUT/system/lib/modules/*" ]; - then - for i in $OUT/system/lib/modules/*; - do - adb push $i /system/lib/modules/ - done - adb shell chmod 644 /system/lib/modules/* - fi - adb shell dd if=/cache/boot.img of=$PARTITION - adb shell rm -rf /cache/boot.img - echo "Installation complete." - else - echo "The connected device does not appear to be $LINEAGE_BUILD, run away!" - fi -} - -function installrecovery() -{ - if [ ! -e "$OUT/recovery/root/etc/recovery.fstab" ]; - then - echo "No recovery.fstab found. Build recovery first." - return 1 - fi - if [ ! -e "$OUT/recovery.img" ]; - then - echo "No recovery.img found. Run make recoveryimage first." - return 1 - fi - PARTITION=`grep "^\/recovery" $OUT/recovery/root/etc/recovery.fstab | awk {'print $3'}` - if [ -z "$PARTITION" ]; - then - # Try for RECOVERY_FSTAB_VERSION = 2 - PARTITION=`grep "[[:space:]]\/recovery[[:space:]]" $OUT/recovery/root/etc/recovery.fstab | awk {'print $1'}` - PARTITION_TYPE=`grep "[[:space:]]\/recovery[[:space:]]" $OUT/recovery/root/etc/recovery.fstab | awk {'print $3'}` - if [ -z "$PARTITION" ]; - then - echo "Unable to determine recovery partition." - return 1 - fi - fi - adb start-server - adb wait-for-online - adb root - sleep 1 - adb wait-for-online shell mount /system 2>&1 >> /dev/null - adb wait-for-online remount - if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD"); - then - adb push $OUT/recovery.img /cache/ - adb shell dd if=/cache/recovery.img of=$PARTITION - adb shell rm -rf /cache/recovery.img - echo "Installation complete." - else - echo "The connected device does not appear to be $LINEAGE_BUILD, run away!" - fi -} - -function makerecipe() { - if [ -z "$1" ] - then - echo "No branch name provided." - return 1 - fi - cd android - sed -i s/'default revision=.*'/'default revision="refs\/heads\/'$1'"'/ default.xml - git commit -a -m "$1" - cd .. - - repo forall -c ' - - if [ "$REPO_REMOTE" = "github" ] - then - pwd - lineageremote - git push lineage HEAD:refs/heads/'$1' - fi - ' -} - -function lineagegerrit() { - if [ "$(__detect_shell)" = "zsh" ]; then - # zsh does not define FUNCNAME, derive from funcstack - local FUNCNAME=$funcstack[1] - fi - - if [ $# -eq 0 ]; then - $FUNCNAME help - return 1 - fi - local user=`git config --get review.review.lineageos.org.username` - local review=`git config --get remote.github.review` - local project=`git config --get remote.github.projectname` - local command=$1 - shift - case $command in - help) - if [ $# -eq 0 ]; then - cat <<EOF -Usage: - $FUNCNAME COMMAND [OPTIONS] [CHANGE-ID[/PATCH-SET]][{@|^|~|:}ARG] [-- ARGS] - -Commands: - fetch Just fetch the change as FETCH_HEAD - help Show this help, or for a specific command - pull Pull a change into current branch - push Push HEAD or a local branch to Gerrit for a specific branch - -Any other Git commands that support refname would work as: - git fetch URL CHANGE && git COMMAND OPTIONS FETCH_HEAD{@|^|~|:}ARG -- ARGS - -See '$FUNCNAME help COMMAND' for more information on a specific command. - -Example: - $FUNCNAME checkout -b topic 1234/5 -works as: - git fetch http://DOMAIN/p/PROJECT refs/changes/34/1234/5 \\ - && git checkout -b topic FETCH_HEAD -will checkout a new branch 'topic' base on patch-set 5 of change 1234. -Patch-set 1 will be fetched if omitted. -EOF - return - fi - case $1 in - __cmg_*) echo "For internal use only." ;; - changes|for) - if [ "$FUNCNAME" = "lineagegerrit" ]; then - echo "'$FUNCNAME $1' is deprecated." - fi - ;; - help) $FUNCNAME help ;; - fetch|pull) cat <<EOF -usage: $FUNCNAME $1 [OPTIONS] CHANGE-ID[/PATCH-SET] - -works as: - git $1 OPTIONS http://DOMAIN/p/PROJECT \\ - refs/changes/HASH/CHANGE-ID/{PATCH-SET|1} - -Example: - $FUNCNAME $1 1234 -will $1 patch-set 1 of change 1234 -EOF - ;; - push) cat <<EOF -usage: $FUNCNAME push [OPTIONS] [LOCAL_BRANCH:]REMOTE_BRANCH - -works as: - git push OPTIONS ssh://USER@DOMAIN:29418/PROJECT \\ - {LOCAL_BRANCH|HEAD}:refs/for/REMOTE_BRANCH - -Example: - $FUNCNAME push fix6789:gingerbread -will push local branch 'fix6789' to Gerrit for branch 'gingerbread'. -HEAD will be pushed from local if omitted. -EOF - ;; - *) - $FUNCNAME __cmg_err_not_supported $1 && return - cat <<EOF -usage: $FUNCNAME $1 [OPTIONS] CHANGE-ID[/PATCH-SET][{@|^|~|:}ARG] [-- ARGS] - -works as: - git fetch http://DOMAIN/p/PROJECT \\ - refs/changes/HASH/CHANGE-ID/{PATCH-SET|1} \\ - && git $1 OPTIONS FETCH_HEAD{@|^|~|:}ARG -- ARGS -EOF - ;; - esac - ;; - __cmg_get_ref) - $FUNCNAME __cmg_err_no_arg $command $# && return 1 - local change_id patchset_id hash - case $1 in - */*) - change_id=${1%%/*} - patchset_id=${1#*/} - ;; - *) - change_id=$1 - patchset_id=1 - ;; - esac - hash=$(($change_id % 100)) - case $hash in - [0-9]) hash="0$hash" ;; - esac - echo "refs/changes/$hash/$change_id/$patchset_id" - ;; - fetch|pull) - $FUNCNAME __cmg_err_no_arg $command $# help && return 1 - $FUNCNAME __cmg_err_not_repo && return 1 - local change=$1 - shift - git $command $@ http://$review/p/$project \ - $($FUNCNAME __cmg_get_ref $change) || return 1 - ;; - push) - $FUNCNAME __cmg_err_no_arg $command $# help && return 1 - $FUNCNAME __cmg_err_not_repo && return 1 - if [ -z "$user" ]; then - echo >&2 "Gerrit username not found." - return 1 - fi - local local_branch remote_branch - case $1 in - *:*) - local_branch=${1%:*} - remote_branch=${1##*:} - ;; - *) - local_branch=HEAD - remote_branch=$1 - ;; - esac - shift - git push $@ ssh://$user@$review:29418/$project \ - $local_branch:refs/for/$remote_branch || return 1 - ;; - changes|for) - if [ "$FUNCNAME" = "lineagegerrit" ]; then - echo >&2 "'$FUNCNAME $command' is deprecated." - fi - ;; - __cmg_err_no_arg) - if [ $# -lt 2 ]; then - echo >&2 "'$FUNCNAME $command' missing argument." - elif [ $2 -eq 0 ]; then - if [ -n "$3" ]; then - $FUNCNAME help $1 - else - echo >&2 "'$FUNCNAME $1' missing argument." - fi - else - return 1 - fi - ;; - __cmg_err_not_repo) - if [ -z "$review" -o -z "$project" ]; then - echo >&2 "Not currently in any reviewable repository." - else - return 1 - fi - ;; - __cmg_err_not_supported) - $FUNCNAME __cmg_err_no_arg $command $# && return - case $1 in - #TODO: filter more git commands that don't use refname - init|add|rm|mv|status|clone|remote|bisect|config|stash) - echo >&2 "'$FUNCNAME $1' is not supported." - ;; - *) return 1 ;; - esac - ;; - #TODO: other special cases? - *) - $FUNCNAME __cmg_err_not_supported $command && return 1 - $FUNCNAME __cmg_err_no_arg $command $# help && return 1 - $FUNCNAME __cmg_err_not_repo && return 1 - local args="$@" - local change pre_args refs_arg post_args - case "$args" in - *--\ *) - pre_args=${args%%-- *} - post_args="-- ${args#*-- }" - ;; - *) pre_args="$args" ;; - esac - args=($pre_args) - pre_args= - if [ ${#args[@]} -gt 0 ]; then - change=${args[${#args[@]}-1]} - fi - if [ ${#args[@]} -gt 1 ]; then - pre_args=${args[0]} - for ((i=1; i<${#args[@]}-1; i++)); do - pre_args="$pre_args ${args[$i]}" - done - fi - while ((1)); do - case $change in - ""|--) - $FUNCNAME help $command - return 1 - ;; - *@*) - if [ -z "$refs_arg" ]; then - refs_arg="@${change#*@}" - change=${change%%@*} - fi - ;; - *~*) - if [ -z "$refs_arg" ]; then - refs_arg="~${change#*~}" - change=${change%%~*} - fi - ;; - *^*) - if [ -z "$refs_arg" ]; then - refs_arg="^${change#*^}" - change=${change%%^*} - fi - ;; - *:*) - if [ -z "$refs_arg" ]; then - refs_arg=":${change#*:}" - change=${change%%:*} - fi - ;; - *) break ;; - esac - done - $FUNCNAME fetch $change \ - && git $command $pre_args FETCH_HEAD$refs_arg $post_args \ - || return 1 - ;; - esac -} - -function lineagerebase() { - local repo=$1 - local refs=$2 - local pwd="$(pwd)" - local dir="$(gettop)/$repo" - - if [ -z $repo ] || [ -z $refs ]; then - echo "LineageOS Gerrit Rebase Usage: " - echo " lineagerebase <path to project> <patch IDs on Gerrit>" - echo " The patch IDs appear on the Gerrit commands that are offered." - echo " They consist on a series of numbers and slashes, after the text" - echo " refs/changes. For example, the ID in the following command is 26/8126/2" - echo "" - echo " git[...]ges_apps_Camera refs/changes/26/8126/2 && git cherry-pick FETCH_HEAD" - echo "" - return - fi - - if [ ! -d $dir ]; then - echo "Directory $dir doesn't exist in tree." - return - fi - cd $dir - repo=$(cat .git/config | grep git://github.com | awk '{ print $NF }' | sed s#git://github.com/##g) - echo "Starting branch..." - repo start tmprebase . - echo "Bringing it up to date..." - repo sync . - echo "Fetching change..." - git fetch "http://review.lineageos.org/p/$repo" "refs/changes/$refs" && git cherry-pick FETCH_HEAD - if [ "$?" != "0" ]; then - echo "Error cherry-picking. Not uploading!" - return - fi - echo "Uploading..." - repo upload . - echo "Cleaning up..." - repo abandon tmprebase . - cd $pwd -} - -function mka() { - m -j "$@" -} - -function cmka() { - if [ ! -z "$1" ]; then - for i in "$@"; do - case $i in - bacon|otapackage|systemimage) - mka installclean - mka $i - ;; - *) - mka clean-$i - mka $i - ;; - esac - done - else - mka clean - mka - fi -} - -function repolastsync() { - RLSPATH="$ANDROID_BUILD_TOP/.repo/.repo_fetchtimes.json" - RLSLOCAL=$(date -d "$(stat -c %z $RLSPATH)" +"%e %b %Y, %T %Z") - RLSUTC=$(date -d "$(stat -c %z $RLSPATH)" -u +"%e %b %Y, %T %Z") - echo "Last repo sync: $RLSLOCAL / $RLSUTC" -} - -function reposync() { - repo sync -j 4 "$@" -} - -function repodiff() { - if [ -z "$*" ]; then - echo "Usage: repodiff <ref-from> [[ref-to] [--numstat]]" - return - fi - diffopts=$* repo forall -c \ - 'echo "$REPO_PATH ($REPO_REMOTE)"; git diff ${diffopts} 2>/dev/null ;' -} - -# Return success if adb is up and not in recovery -function _adb_connected { - { - if [[ "$(adb get-state)" == device && - "$(adb shell 'test -e /sbin/recovery; echo $?')" != 0 ]] - then - return 0 - fi - } 2>/dev/null - - return 1 -}; - -# Credit for color strip sed: http://goo.gl/BoIcm -function dopush() -{ - local func=$1 - shift - - adb start-server # Prevent unexpected starting server message from adb get-state in the next line - if ! _adb_connected; then - echo "No device is online. Waiting for one..." - echo "Please connect USB and/or enable USB debugging" - until _adb_connected; do - sleep 1 - done - echo "Device Found." - fi - - if (adb shell getprop ro.lineage.device | grep -q "$LINEAGE_BUILD") || [ "$FORCE_PUSH" = "true" ]; - then - # retrieve IP and PORT info if we're using a TCP connection - TCPIPPORT=$(adb devices \ - | egrep '^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]):[0-9]+[^0-9]+' \ - | head -1 | awk '{print $1}') - adb root &> /dev/null - sleep 0.3 - if [ -n "$TCPIPPORT" ] - then - # adb root just killed our connection - # so reconnect... - adb connect "$TCPIPPORT" - fi - adb wait-for-device &> /dev/null - sleep 0.3 - adb remount &> /dev/null - - mkdir -p $OUT - ($func $*|tee $OUT/.log;return ${PIPESTATUS[0]}) - ret=$?; - if [ $ret -ne 0 ]; then - rm -f $OUT/.log;return $ret - fi - - is_gnu_sed=`sed --version | head -1 | grep -c GNU` - - # Install: <file> - if [ $is_gnu_sed -gt 0 ]; then - LOC="$(cat $OUT/.log | sed -r -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//' \ - | grep '^Install: ' | cut -d ':' -f 2)" - else - LOC="$(cat $OUT/.log | sed -E "s/"$'\E'"\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" -E "s/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//" \ - | grep '^Install: ' | cut -d ':' -f 2)" - fi - - # Copy: <file> - if [ $is_gnu_sed -gt 0 ]; then - LOC="$LOC $(cat $OUT/.log | sed -r -e 's/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g' -e 's/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//' \ - | grep '^Copy: ' | cut -d ':' -f 2)" - else - LOC="$LOC $(cat $OUT/.log | sed -E "s/"$'\E'"\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" -E 's/^\[ {0,2}[0-9]{1,3}% [0-9]{1,6}\/[0-9]{1,6}\] +//' \ - | grep '^Copy: ' | cut -d ':' -f 2)" - fi - - # If any files are going to /data, push an octal file permissions reader to device - if [ -n "$(echo $LOC | egrep '(^|\s)/data')" ]; then - CHKPERM="/data/local/tmp/chkfileperm.sh" -( -cat <<'EOF' -#!/system/xbin/sh -FILE=$@ -if [ -e $FILE ]; then - ls -l $FILE | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}' | cut -d ' ' -f1 -fi -EOF -) > $OUT/.chkfileperm.sh - echo "Pushing file permissions checker to device" - adb push $OUT/.chkfileperm.sh $CHKPERM - adb shell chmod 755 $CHKPERM - rm -f $OUT/.chkfileperm.sh - fi - - stop_n_start=false - for TARGET in $(echo $LOC | tr " " "\n" | sed "s#.*$OUT##" | sort | uniq); do - # Make sure file is in $OUT/system or $OUT/data - case $TARGET in - /system/*|/data/*) - # Get out file from target (i.e. /system/bin/adb) - FILE=$OUT$TARGET - ;; - *) continue ;; - esac - - case $TARGET in - /data/*) - # fs_config only sets permissions and se labels for files pushed to /system - if [ -n "$CHKPERM" ]; then - OLDPERM=$(adb shell $CHKPERM $TARGET) - OLDPERM=$(echo $OLDPERM | tr -d '\r' | tr -d '\n') - OLDOWN=$(adb shell ls -al $TARGET | awk '{print $2}') - OLDGRP=$(adb shell ls -al $TARGET | awk '{print $3}') - fi - echo "Pushing: $TARGET" - adb push $FILE $TARGET - if [ -n "$OLDPERM" ]; then - echo "Setting file permissions: $OLDPERM, $OLDOWN":"$OLDGRP" - adb shell chown "$OLDOWN":"$OLDGRP" $TARGET - adb shell chmod "$OLDPERM" $TARGET - else - echo "$TARGET did not exist previously, you should set file permissions manually" - fi - adb shell restorecon "$TARGET" - ;; - /system/priv-app/SystemUI/SystemUI.apk|/system/framework/*) - # Only need to stop services once - if ! $stop_n_start; then - adb shell stop - stop_n_start=true - fi - echo "Pushing: $TARGET" - adb push $FILE $TARGET - ;; - *) - echo "Pushing: $TARGET" - adb push $FILE $TARGET - ;; - esac - done - if [ -n "$CHKPERM" ]; then - adb shell rm $CHKPERM - fi - if $stop_n_start; then - adb shell start - fi - rm -f $OUT/.log - return 0 - else - echo "The connected device does not appear to be $LINEAGE_BUILD, run away!" - fi -} - -alias mmp='dopush mm' -alias mmmp='dopush mmm' -alias mmap='dopush mma' -alias mmmap='dopush mmma' -alias mkap='dopush mka' -alias cmkap='dopush cmka' - -function repopick() { - T=$(gettop) - $T/vendor/lineage/build/tools/repopick.py $@ -} - -function fixup_common_out_dir() { - common_out_dir=$(get_build_var OUT_DIR)/target/common - target_device=$(get_build_var TARGET_DEVICE) - if [ ! -z $LINEAGE_FIXUP_COMMON_OUT ]; then - if [ -d ${common_out_dir} ] && [ ! -L ${common_out_dir} ]; then - mv ${common_out_dir} ${common_out_dir}-${target_device} - ln -s ${common_out_dir}-${target_device} ${common_out_dir} - else - [ -L ${common_out_dir} ] && rm ${common_out_dir} - mkdir -p ${common_out_dir}-${target_device} - ln -s ${common_out_dir}-${target_device} ${common_out_dir} - fi - else - [ -L ${common_out_dir} ] && rm ${common_out_dir} - mkdir -p ${common_out_dir} - fi -} - -# Enable SD-LLVM if available -if [ -d $(gettop)/prebuilts/snapdragon-llvm/toolchains ]; then - case `uname -s` in - Darwin) - # Darwin is not supported yet - ;; - *) - export SDCLANG=true - export SDCLANG_PATH=$(gettop)/prebuilts/snapdragon-llvm/toolchains/llvm-Snapdragon_LLVM_for_Android_4.0/prebuilt/linux-x86_64/bin - export SDCLANG_PATH_2=$(gettop)/prebuilts/snapdragon-llvm/toolchains/llvm-Snapdragon_LLVM_for_Android_4.0/prebuilt/linux-x86_64/bin - export SDCLANG_LTO_DEFS=$(gettop)/vendor/lineage/build/core/sdllvm-lto-defs.mk - ;; - esac -fi diff --git a/build/soong/Android.bp b/build/soong/Android.bp deleted file mode 100644 index 382b68ee..00000000 --- a/build/soong/Android.bp +++ /dev/null @@ -1,46 +0,0 @@ -bootstrap_go_package { - name: "soong-lineage", - pkgPath: "lineage/soong/android", - srcs: [ - "android/config.go", - "android/variable.go", - ], -} - -bootstrap_go_package { - name: "soong-lineage-generator", - pkgPath: "lineage/soong/generator", - deps: [ - "blueprint", - "blueprint-pathtools", - "soong", - "soong-android", - "soong-shared", - ], - srcs: [ - "generator/generator.go", - "generator/variables.go", - ], - pluginFor: ["soong_build"], -} - -lineage_generator { - name: "generated_kernel_includes", - - // The headers make command - cmd: "make $(KERNEL_MAKE_FLAGS) -C $(TARGET_KERNEL_SOURCE) O=$(genDir) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) headers_install", - - // Directories that can be imported by a cc_* module generated_headers property - export_include_dirs: ["usr/include", "usr/techpack/audio/include"], - - // Sources for dependency tracking - dep_root: "$(TARGET_KERNEL_SOURCE)", - dep_files: [ "Makefile", "include/**/*", "arch/$(KERNEL_ARCH)/include/**/*", "techpack/audio/include/**/*"], -} - -cc_library_headers { - name: "generated_kernel_headers", - generated_headers: ["generated_kernel_includes"], - export_generated_headers: ["generated_kernel_includes"], - vendor_available: true, -} diff --git a/build/soong/android/config.go b/build/soong/android/config.go deleted file mode 100644 index e926c9d8..00000000 --- a/build/soong/android/config.go +++ /dev/null @@ -1,13 +0,0 @@ -package android - -// Global config used by Lineage soong additions -var LineageConfig = struct { - // List of packages that are permitted - // for java source overlays. - JavaSourceOverlayModuleWhitelist []string -}{ - // JavaSourceOverlayModuleWhitelist - []string{ - "org.lineageos.hardware", - }, -} diff --git a/build/soong/android/variable.go b/build/soong/android/variable.go deleted file mode 100644 index 2136f01e..00000000 --- a/build/soong/android/variable.go +++ /dev/null @@ -1,100 +0,0 @@ -package android -type Product_variables struct { - Additional_gralloc_10_usage_bits struct { - Cppflags []string - } - Apply_msm8974_1440p_egl_workaround struct { - Cflags []string - } - Bootloader_message_offset struct { - Cflags []string - } - Has_legacy_camera_hal1 struct { - Cflags []string - } - Should_skip_waiting_for_qsee struct { - Cflags []string - } - Supports_hw_fde struct { - Cflags []string - Header_libs []string - Shared_libs []string - } - Supports_hw_fde_perf struct { - Cflags []string - } - Supports_legacy_hw_fde struct { - Cflags []string - } - Target_omx_legacy_rescaling struct { - Cppflags []string - } - Target_process_sdk_version_override struct { - Cppflags []string - } - Target_shim_libs struct { - Cppflags []string - } - Uses_generic_camera_parameter_library struct { - Srcs []string - } - Uses_metadata_as_fde_key struct { - Cflags []string - } - Uses_nvidia_enhancements struct { - Cppflags []string - } - Uses_qcom_bsp_legacy struct { - Cppflags []string - } - Uses_qti_camera_device struct { - Cppflags []string - Shared_libs []string - } - Uses_qcom_um_family struct { - Cflags []string - Srcs []string - } - Uses_qcom_um_3_18_family struct { - Header_libs []string - Shared_libs []string - } - Uses_qcom_um_4_4_family struct { - Header_libs []string - Shared_libs []string - } - Uses_qcom_um_4_9_family struct { - Header_libs []string - Shared_libs []string - } - Uses_qcom_um_4_14_family struct { - Header_libs []string - Shared_libs []string - } -} - -type ProductVariables struct { - Additional_gralloc_10_usage_bits *string `json:",omitempty"` - Apply_msm8974_1440p_egl_workaround *bool `json:",omitempty"` - Bootloader_message_offset *int `json:",omitempty"` - Has_legacy_camera_hal1 *bool `json:",omitempty"` - Java_Source_Overlays *string `json:",omitempty"` - Should_skip_waiting_for_qsee *bool `json:",omitempty"` - Specific_camera_parameter_library *string `json:",omitempty"` - Supports_hw_fde *bool `json:",omitempty"` - Supports_hw_fde_perf *bool `json:",omitempty"` - Supports_legacy_hw_fde *bool `json:",omitempty"` - Target_omx_legacy_rescaling *bool `json:",omitempty"` - Target_process_sdk_version_override *string `json:",omitempty"` - Target_shim_libs *string `json:",omitempty"` - Uses_generic_camera_parameter_library *bool `json:",omitempty"` - Uses_metadata_as_fde_key *bool `json:",omitempty"` - Uses_nvidia_enhancements *bool `json:",omitempty"` - Uses_qcom_bsp_legacy *bool `json:",omitempty"` - Uses_qti_camera_device *bool `json:",omitempty"` - Uses_qcom_um_family *bool `json:",omitempty"` - Uses_qcom_um_3_18_family *bool `json:",omitempty"` - Uses_qcom_um_4_4_family *bool `json:",omitempty"` - Uses_qcom_um_4_9_family *bool `json:",omitempty"` - Uses_qcom_um_4_14_family *bool `json:",omitempty"` -} diff --git a/build/soong/generator/generator.go b/build/soong/generator/generator.go deleted file mode 100644 index 7da1fde3..00000000 --- a/build/soong/generator/generator.go +++ /dev/null @@ -1,310 +0,0 @@ -// Copyright 2015 Google Inc. All rights reserved. -// Copyright (C) 2018 The LineageOS Project -// -// 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. - -package generator - -import ( - "fmt" - "strings" - - "github.com/google/blueprint" - "github.com/google/blueprint/bootstrap" - "github.com/google/blueprint/proptools" - - "android/soong/android" - "android/soong/shared" - "path/filepath" -) - -func init() { - android.RegisterModuleType("lineage_generator", GeneratorFactory) - - pctx.HostBinToolVariable("sboxCmd", "sbox") -} - -var String = proptools.String - -var ( - pctx = android.NewPackageContext("android/soong/generator") -) - -type HostToolProvider interface { - HostToolPath() android.OptionalPath -} - -type hostToolDependencyTag struct { - blueprint.BaseDependencyTag -} - -var hostToolDepTag hostToolDependencyTag - -type generatorProperties struct { - // The command to run on one or more input files. Cmd supports substitution of a few variables - // (the actual substitution is implemented in GenerateAndroidBuildActions below) - // - // Available variables for substitution: - // - // $(location): the path to the first entry in tools or tool_files - // $(location <label>): the path to the tool or tool_file with name <label> - // $(genDir): the sandbox directory for this tool; contains $(out) - // $$: a literal $ - // - Cmd *string - - // name of the modules (if any) that produces the host executable. Leave empty for - // prebuilts or scripts that do not need a module to build them. - Tools []string - - // Local file that is used as the tool - Tool_files []string - - // List of directories to export as headers - Export_include_dirs []string - - // List of directories to export as sources - Export_source_dirs []string - - // Root directory for dep_files. - // Relative to top build dir. - Dep_root *string - - // Declare list of files that should be used for timestamp dependency checking - Dep_files []string -} - -type Module struct { - android.ModuleBase - - properties generatorProperties - - rule blueprint.Rule - - // Tool dependencies - implicitDeps android.Paths - // Deps from input files declared in dep_files property. - inputDeps android.Paths - - exportedIncludeDirs android.Paths - exportedSourceDirs android.Paths - - outputDeps android.Paths -} - -// These three methods satisfy genrule.SourceFileGenerator. -// Which cc modules check for when including headers etc. -func (g *Module) GeneratedHeaderDirs() android.Paths { - return g.exportedIncludeDirs -} - -func (g *Module) GeneratedSourceFiles() android.Paths { - return g.exportedSourceDirs -} - -func (g *Module) GeneratedDeps() android.Paths { - return g.outputDeps -} - -func (g *Module) DepsMutator(ctx android.BottomUpMutatorContext) { - android.ExtractSourcesDeps(ctx, g.properties.Dep_files) - android.ExtractSourcesDeps(ctx, g.properties.Tool_files) - if g, ok := ctx.Module().(*Module); ok { - if len(g.properties.Tools) > 0 { - ctx.AddFarVariationDependencies([]blueprint.Variation{ - {"arch", ctx.Config().BuildOsVariant}, - }, hostToolDepTag, g.properties.Tools...) - } - } -} - -func (g *Module) GenerateAndroidBuildActions(ctx android.ModuleContext) { - if len(g.properties.Export_include_dirs) > 0 { - for _, dir := range g.properties.Export_include_dirs { - g.exportedIncludeDirs = append(g.exportedIncludeDirs, - android.PathForModuleGen(ctx, dir)) - } - } else { - g.exportedIncludeDirs = append(g.exportedIncludeDirs, android.PathForModuleGen(ctx, "")) - } - if len(g.properties.Export_source_dirs) > 0 { - for _, dir := range g.properties.Export_source_dirs { - g.exportedSourceDirs = append(g.exportedSourceDirs, - android.PathForModuleGen(ctx, dir)) - } - } else { - g.exportedSourceDirs = append(g.exportedSourceDirs, android.PathForModuleGen(ctx, "")) - } - - tools := map[string]android.Path{} - - if len(g.properties.Tools) > 0 { - ctx.VisitDirectDepsBlueprint(func(module blueprint.Module) { - switch ctx.OtherModuleDependencyTag(module) { - case android.SourceDepTag: - // Nothing to do - case hostToolDepTag: - tool := ctx.OtherModuleName(module) - var path android.OptionalPath - - if t, ok := module.(HostToolProvider); ok { - if !t.(android.Module).Enabled() { - if ctx.Config().AllowMissingDependencies() { - ctx.AddMissingDependencies([]string{tool}) - } else { - ctx.ModuleErrorf("depends on disabled module %q", tool) - } - break - } - path = t.HostToolPath() - } else if t, ok := module.(bootstrap.GoBinaryTool); ok { - if s, err := filepath.Rel(android.PathForOutput(ctx).String(), t.InstallPath()); err == nil { - path = android.OptionalPathForPath(android.PathForOutput(ctx, s)) - } else { - ctx.ModuleErrorf("cannot find path for %q: %v", tool, err) - break - } - } else { - ctx.ModuleErrorf("%q is not a host tool provider", tool) - break - } - - if path.Valid() { - g.implicitDeps = append(g.implicitDeps, path.Path()) - if _, exists := tools[tool]; !exists { - tools[tool] = path.Path() - } else { - ctx.ModuleErrorf("multiple tools for %q, %q and %q", tool, tools[tool], path.Path().String()) - } - } else { - ctx.ModuleErrorf("host tool %q missing output file", tool) - } - default: - ctx.ModuleErrorf("unknown dependency on %q", ctx.OtherModuleName(module)) - } - }) - } - - if ctx.Failed() { - return - } - - toolFiles := ctx.ExpandSources(g.properties.Tool_files, nil) - for _, tool := range toolFiles { - g.implicitDeps = append(g.implicitDeps, tool) - if _, exists := tools[tool.Rel()]; !exists { - tools[tool.Rel()] = tool - } else { - ctx.ModuleErrorf("multiple tools for %q, %q and %q", tool, tools[tool.Rel()], tool.Rel()) - } - } - - // Determine root dir for dep_files. Defaults to current ctx ModuleDir. - depRoot := String(g.properties.Dep_root) - if depRoot == "" { - depRoot = ctx.ModuleDir() - } else { - depRoot = lineageExpandVariables(ctx, depRoot) - } - - // Glob dep_files property - for _, dep_file := range g.properties.Dep_files { - dep_file = lineageExpandVariables(ctx, dep_file) - globPath := filepath.Join(depRoot, dep_file) - paths, err := ctx.GlobWithDeps(globPath, nil) - if err != nil { - ctx.ModuleErrorf("unable to glob %s: %s", globPath, err.Error()) - return - } - for _, path := range paths { - g.inputDeps = append(g.inputDeps, android.PathForSourceRelaxed(ctx, path)) - } - } - - cmd := lineageExpandVariables(ctx, String(g.properties.Cmd)) - - rawCommand, err := android.Expand(cmd, func(name string) (string, error) { - switch name { - case "location": - if len(g.properties.Tools) == 0 && len(toolFiles) == 0 { - return "", fmt.Errorf("at least one `tools` or `tool_files` is required if $(location) is used") - } - - if len(g.properties.Tools) > 0 { - return tools[g.properties.Tools[0]].String(), nil - } else { - return tools[toolFiles[0].Rel()].String(), nil - } - case "genDir": - return "__SBOX_OUT_DIR__", nil - default: - if strings.HasPrefix(name, "location ") { - label := strings.TrimSpace(strings.TrimPrefix(name, "location ")) - if tool, ok := tools[label]; ok { - return tool.String(), nil - } else { - return "", fmt.Errorf("unknown location label %q", label) - } - } - return "", fmt.Errorf("unknown variable '$(%s)'", name) - } - }) - - if err != nil { - ctx.PropertyErrorf("cmd", "%s", err.Error()) - return - } - - // Dummy output dep - dummyDep := android.PathForModuleGen(ctx, ".dummy_dep") - - // tell the sbox command which directory to use as its sandbox root - buildDir := android.PathForOutput(ctx).String() - sandboxPath := shared.TempDirForOutDir(buildDir) - - genDir := android.PathForModuleGen(ctx) - // Escape the command for the shell - rawCommand = "'" + strings.Replace(rawCommand, "'", `'\''`, -1) + "'" - sandboxCommand := fmt.Sprintf("$sboxCmd --sandbox-path %s --output-root %s --copy-all-output -c %s && touch %s", - sandboxPath, genDir, rawCommand, dummyDep.String()) - - ruleParams := blueprint.RuleParams{ - Command: sandboxCommand, - CommandDeps: []string{"$sboxCmd"}, - } - g.rule = ctx.Rule(pctx, "generator", ruleParams) - - params := android.BuildParams{ - Rule: g.rule, - Description: "generate", - Output: dummyDep, - Inputs: g.inputDeps, - Implicits: g.implicitDeps, - } - - g.outputDeps = append(g.outputDeps, dummyDep) - - ctx.Build(pctx, params) -} - -func NewGenerator() *Module { - module := &Module{} - module.AddProperties(&module.properties) - return module -} - -func GeneratorFactory() android.Module { - m := NewGenerator() - android.InitAndroidModule(m) - return m -} diff --git a/build/soong/generator/variables.go b/build/soong/generator/variables.go deleted file mode 100644 index 8485f94b..00000000 --- a/build/soong/generator/variables.go +++ /dev/null @@ -1,28 +0,0 @@ -package generator - -import ( - "fmt" - - "android/soong/android" -) - -func lineageExpandVariables(ctx android.ModuleContext, in string) string { - lineageVars := ctx.Config().VendorConfig("lineageVarsPlugin") - - out, err := android.Expand(in, func(name string) (string, error) { - if lineageVars.IsSet(name) { - return lineageVars.String(name), nil - } - // This variable is not for us, restore what the original - // variable string will have looked like for an Expand - // that comes later. - return fmt.Sprintf("$(%s)", name), nil - }) - - if err != nil { - ctx.PropertyErrorf("%s: %s", in, err.Error()) - return "" - } - - return out -} diff --git a/build/soong/soong_config.mk b/build/soong/soong_config.mk deleted file mode 100644 index 0820d67b..00000000 --- a/build/soong/soong_config.mk +++ /dev/null @@ -1,34 +0,0 @@ -add_json_str_omitempty = $(if $(strip $(2)),$(call add_json_str, $(1), $(2))) -add_json_val_default = $(call add_json_val, $(1), $(if $(strip $(2)), $(2), $(3))) - -_contents := $(_contents) "Lineage":{$(newline) - -# See build/core/soong_config.mk for the add_json_* functions you can use here. -$(call add_json_str_omitempty, Additional_gralloc_10_usage_bits, $(TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS)) -$(call add_json_bool, Apply_msm8974_1440p_egl_workaround, $(filter true,$(TARGET_MSM8974_1440P_EGL_WORKAROUND))) -$(call add_json_val_default, Bootloader_message_offset, $(BOOTLOADER_MESSAGE_OFFSET), 0) -$(call add_json_bool, Has_legacy_camera_hal1, $(filter true,$(TARGET_HAS_LEGACY_CAMERA_HAL1))) -$(call add_json_str, Java_Source_Overlays, $(JAVA_SOURCE_OVERLAYS)) -$(call add_json_bool, Should_skip_waiting_for_qsee, $(filter true,$(TARGET_KEYMASTER_SKIP_WAITING_FOR_QSEE))) -$(call add_json_str, Specific_camera_parameter_library, $(TARGET_SPECIFIC_CAMERA_PARAMETER_LIBRARY)) -$(call add_json_bool, Supports_hw_fde, $(filter true,$(TARGET_HW_DISK_ENCRYPTION))) -$(call add_json_bool, Supports_hw_fde_perf, $(filter true,$(TARGET_HW_DISK_ENCRYPTION_PERF))) -$(call add_json_bool, Supports_legacy_hw_fde, $(filter true,$(TARGET_LEGACY_HW_DISK_ENCRYPTION))) -$(call add_json_bool, Target_omx_legacy_rescaling, $(filter true,$(TARGET_OMX_LEGACY_RESCALING))) -$(call add_json_str_omitempty, Target_process_sdk_version_override, $(TARGET_PROCESS_SDK_VERSION_OVERRIDE)) -$(call add_json_str_omitempty, Target_shim_libs, $(TARGET_LD_SHIM_LIBS)) -$(call add_json_bool, Uses_generic_camera_parameter_library, $(if $(TARGET_SPECIFIC_CAMERA_PARAMETER_LIBRARY),,true)) -$(call add_json_bool, Uses_metadata_as_fde_key, $(filter true,$(TARGET_USES_METADATA_AS_FDE_KEY))) -$(call add_json_bool, Uses_nvidia_enhancements, $(filter true,$(NV_ANDROID_FRAMEWORK_ENHANCEMENTS))) -$(call add_json_bool, Uses_qcom_bsp_legacy, $(filter true,$(TARGET_USES_QCOM_BSP_LEGACY))) -$(call add_json_bool, Uses_qti_camera_device, $(filter true,$(TARGET_USES_QTI_CAMERA_DEVICE))) -$(call add_json_bool, Uses_qcom_um_family, $(filter true,$(TARGET_USES_QCOM_UM_FAMILY))) -$(call add_json_bool, Uses_qcom_um_3_18_family, $(filter true,$(TARGET_USES_QCOM_UM_3_18_FAMILY))) -$(call add_json_bool, Uses_qcom_um_4_4_family, $(filter true,$(TARGET_USES_QCOM_UM_4_4_FAMILY))) -$(call add_json_bool, Uses_qcom_um_4_9_family, $(filter true,$(TARGET_USES_QCOM_UM_4_9_FAMILY))) -$(call add_json_bool, Uses_qcom_um_4_14_family, $(filter true,$(TARGET_USES_QCOM_UM_4_14_FAMILY))) - -# This causes the build system to strip out the last comma in our nested struct, to keep the JSON valid. -_contents := $(_contents)__SV_END - -_contents := $(_contents) },$(newline) diff --git a/build/target/product/AndroidProducts.mk b/build/target/product/AndroidProducts.mk deleted file mode 100644 index d92c4673..00000000 --- a/build/target/product/AndroidProducts.mk +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (C) 2018 The LineageOS Project -# -# 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. -# - -PRODUCT_MAKEFILES := \ - $(LOCAL_DIR)/lineage_arm.mk \ - $(LOCAL_DIR)/lineage_arm64.mk \ - $(LOCAL_DIR)/lineage_x86.mk \ - $(LOCAL_DIR)/lineage_x86_64.mk diff --git a/build/target/product/lineage_arm.mk b/build/target/product/lineage_arm.mk deleted file mode 100644 index 97bbe3e2..00000000 --- a/build/target/product/lineage_arm.mk +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2018-2019 The LineageOS Project -# -# 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. - -$(call inherit-product, build/target/product/aosp_arm.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -TARGET_USES_64_BIT_BINDER := true - -PRODUCT_NAME := lineage_arm diff --git a/build/target/product/lineage_arm64.mk b/build/target/product/lineage_arm64.mk deleted file mode 100644 index b46c4e51..00000000 --- a/build/target/product/lineage_arm64.mk +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2018-2019 The LineageOS Project -# -# 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. - -$(call inherit-product, build/target/product/aosp_arm64.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -PRODUCT_NAME := lineage_arm64 diff --git a/build/target/product/lineage_generic_target.mk b/build/target/product/lineage_generic_target.mk deleted file mode 100644 index aa380844..00000000 --- a/build/target/product/lineage_generic_target.mk +++ /dev/null @@ -1,24 +0,0 @@ -# Copyright (C) 2019 The LineageOS Project -# -# 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. - -$(call inherit-product, vendor/lineage/config/common_mobile.mk) - -PRODUCT_COPY_FILES += \ - device/generic/goldfish/data/etc/permissions/privapp-permissions-goldfish.xml:$(TARGET_COPY_OUT_SYSTEM)/etc/permissions/privapp-permissions-goldfish.xml \ - -# Allow building otatools -TARGET_FORCE_OTA_PACKAGE := true - -PRODUCT_SDK_ADDON_NAME := lineage -PRODUCT_SDK_ADDON_SYS_IMG_SOURCE_PROP := $(LOCAL_PATH)/source.properties diff --git a/build/target/product/lineage_x86.mk b/build/target/product/lineage_x86.mk deleted file mode 100644 index 8dc75757..00000000 --- a/build/target/product/lineage_x86.mk +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2018-2019 The LineageOS Project -# -# 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. - -$(call inherit-product, build/target/product/aosp_x86.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -TARGET_USES_64_BIT_BINDER := true - -PRODUCT_NAME := lineage_x86 diff --git a/build/target/product/lineage_x86_64.mk b/build/target/product/lineage_x86_64.mk deleted file mode 100644 index 69418b10..00000000 --- a/build/target/product/lineage_x86_64.mk +++ /dev/null @@ -1,19 +0,0 @@ -# Copyright (C) 2018-2019 The LineageOS Project -# -# 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. - -$(call inherit-product, build/target/product/aosp_x86_64.mk) - -include vendor/lineage/build/target/product/lineage_generic_target.mk - -PRODUCT_NAME := lineage_x86_64 diff --git a/build/target/product/security/lineage.x509.pem b/build/target/product/security/lineage.x509.pem deleted file mode 100644 index edbe4695..00000000 --- a/build/target/product/security/lineage.x509.pem +++ /dev/null @@ -1,23 +0,0 @@ ------BEGIN CERTIFICATE----- -MIIDszCCApugAwIBAgIJAOEEE8dzw8VPMA0GCSqGSIb3DQEBBQUAMHAxCzAJBgNV -BAYTAlVTMRMwEQYDVQQIDApXYXNoaW5ndG9uMRAwDgYDVQQHDAdTZWF0dGxlMRIw -EAYDVQQKDAlMaW5lYWdlT1MxEjAQBgNVBAsMCUxpbmVhZ2VPUzESMBAGA1UEAwwJ -TGluZWFnZU9TMB4XDTE3MDEwNzA0MjEyNVoXDTQ0MDUyNTA0MjEyNVowcDELMAkG -A1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1NlYXR0bGUx -EjAQBgNVBAoMCUxpbmVhZ2VPUzESMBAGA1UECwwJTGluZWFnZU9TMRIwEAYDVQQD -DAlMaW5lYWdlT1MwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCmTdPh -+EIDj/A/Z7jpvwlTD8KRPLU+NlTHjsINvIsecRNijKWrwIYFYMtELBtR+Yttzl5Z -xJA38n9k9IrvBJCrmRBvCAeiEw4aizqs2DTmVvCFS2Amd7ZsAHsUwtDCjQ3GE0He -ZI2HnbWannnhKIhzGjuxxh+1j3JawHHeErYQk97MVoWsJHTO4s8i8ORL8ghBDZHF -0fYKp5RVSIIrrXVqcOD+F8g/NeX6Wb5N0rRGBI+bQjMhhv8KpH7TnCEN6f2YHFVx -nsjzDKrEQVwhYF8T9X0OzfBoLEhOlFZ0jevoDi8uCxz0f7ldkv/0Zz4W9jeB87LH -zUuQQEGr6134UFmZAgMBAAGjUDBOMB0GA1UdDgQWBBRyljIn1mxMTV+gkWrCLHk8 -1F9DXDAfBgNVHSMEGDAWgBRyljIn1mxMTV+gkWrCLHk81F9DXDAMBgNVHRMEBTAD -AQH/MA0GCSqGSIb3DQEBBQUAA4IBAQCKJH4ByccucWfewkmT8j9TnAdhjCgZ7k0+ -rpbSgxc66+ESRpQFxMSAUu8exy8pSawGd7SerFBVvqL+dajdPfyLPM+I+xDEoMJ3 -ncKGHoC0RRKMGEhc4rS090/wOJJHZZtThlcjdND5vybMwmHngzl8o4CNWhneJvjb -hNkqxocrC9vGCsdo5Kx00ULn8sXVwcq7yl0bqtuSMlKxm6CVA3DVVnB8N8OZyTam -fgj9F0jOpWVtit1/ohd+1jB5bY3g+ulXCydKBFkJhNXAZf4welNG61SWLkH1gNGk -SEYxEuLV9JGjm7n5oqDKxYVcKKNfvbGtSmrqsq6i+QVuc/xIdzfr ------END CERTIFICATE----- - diff --git a/build/target/product/source.properties b/build/target/product/source.properties deleted file mode 100644 index 11d524e9..00000000 --- a/build/target/product/source.properties +++ /dev/null @@ -1,7 +0,0 @@ -Pkg.Desc=LineageOS System Image API ${PLATFORM_VERSION} ${TARGET_CPU_ABI} -Pkg.Revision=1 -AndroidVersion.ApiLevel=${PLATFORM_SDK_VERSION} -SystemImage.Abi=${TARGET_CPU_ABI} -SystemImage.TagId=lineage -SystemImage.TagDisplay=LineageOS - diff --git a/build/tasks/addonsu.mk b/build/tasks/addonsu.mk deleted file mode 100644 index 8f963872..00000000 --- a/build/tasks/addonsu.mk +++ /dev/null @@ -1,41 +0,0 @@ -ADDONSU_PREBUILTS_PATH := vendor/lineage/addonsu/ - -ADDONSU_INSTALL_OUT := $(PRODUCT_OUT)/addonsu-install/ -ADDONSU_INSTALL_TARGET := $(PRODUCT_OUT)/addonsu-$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_ARCH).zip - -$(ADDONSU_INSTALL_TARGET): $(ALL_MODULES.updater.BUILT) \ - $(ALL_MODULES.su.BUILT) $(ALL_MODULES.su.PATH)/superuser.rc - $(hide) rm -rf $@ $(ADDONSU_INSTALL_OUT) - $(hide) mkdir -p $(ADDONSU_INSTALL_OUT)/META-INF/com/google/android/ - $(hide) mkdir -p $(ADDONSU_INSTALL_OUT)/system/xbin - $(hide) mkdir -p $(ADDONSU_INSTALL_OUT)/system/addon.d - $(hide) mkdir -p $(ADDONSU_INSTALL_OUT)/system/etc/init - $(hide) cp $(ALL_MODULES.su.BUILT) $(ADDONSU_INSTALL_OUT)/system/xbin/ - $(hide) cp $(ALL_MODULES.su.PATH)/superuser.rc $(ADDONSU_INSTALL_OUT)/system/etc/init/ - $(hide) cp $(ALL_MODULES.updater.BUILT) $(ADDONSU_INSTALL_OUT)/META-INF/com/google/android/update-binary - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/51-addonsu.sh $(ADDONSU_INSTALL_OUT)/system/addon.d/ - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/mount-system.sh $(ADDONSU_INSTALL_OUT)/ - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/unmount-system.sh $(ADDONSU_INSTALL_OUT)/ - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/updater-script-install $(ADDONSU_INSTALL_OUT)/META-INF/com/google/android/updater-script - $(hide) (cd $(ADDONSU_INSTALL_OUT) && zip -qr $@ *) - -.PHONY: addonsu -addonsu: $(ADDONSU_INSTALL_TARGET) - @echo "Done: $(ADDONSU_INSTALL_TARGET)" - - -ADDONSU_REMOVE_OUT := $(PRODUCT_OUT)/addonsu-remove/ -ADDONSU_REMOVE_TARGET := $(PRODUCT_OUT)/addonsu-remove-$(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_ARCH).zip - -$(ADDONSU_REMOVE_TARGET): $(ALL_MODULES.updater.BUILT) - $(hide) rm -rf $@ $(ADDONSU_REMOVE_OUT) - $(hide) mkdir -p $(ADDONSU_REMOVE_OUT)/META-INF/com/google/android/ - $(hide) cp $(ALL_MODULES.updater.BUILT) $(ADDONSU_REMOVE_OUT)/META-INF/com/google/android/update-binary - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/mount-system.sh $(ADDONSU_REMOVE_OUT)/ - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/unmount-system.sh $(ADDONSU_REMOVE_OUT)/ - $(hide) cp $(ADDONSU_PREBUILTS_PATH)/updater-script-remove $(ADDONSU_REMOVE_OUT)/META-INF/com/google/android/updater-script - $(hide) (cd $(ADDONSU_REMOVE_OUT) && zip -qr $@ *) - -.PHONY: addonsu-remove -addonsu-remove: $(ADDONSU_REMOVE_TARGET) - @echo "Done: $(ADDONSU_REMOVE_TARGET)" diff --git a/build/tasks/apicheck.mk b/build/tasks/apicheck.mk deleted file mode 100644 index 6b2c85b9..00000000 --- a/build/tasks/apicheck.mk +++ /dev/null @@ -1,92 +0,0 @@ -# Copyright (C) 2015 The CyanogenMod Project -# -# 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. - -# -# Rules for running apicheck to confirm that you haven't broken -# api compatibility or added apis illegally. -# - -# skip api check for PDK buid -ifeq (,$(filter true, $(WITHOUT_CHECK_API) $(TARGET_BUILD_PDK) $(TARGET_DISABLE_LINEAGE_SDK))) - -.PHONY: checkapi-lineage - -# Run the checkapi rules by default. -droidcore: checkapi-lineage - -# Validate against previous release platform sdk version api text within prebuilts -lineage_last_released_sdk_version := $(LINEAGE_PLATFORM_SDK_VERSION) - -.PHONY: check-lineage-public-api -checkapi-lineage : check-lineage-public-api - -.PHONY: update-lineage-api - -# INTERNAL_LINEAGE_PLATFORM_API_FILE is the one build by droiddoc. -# Note that since INTERNAL_LINEAGE_PLATFORM_API_FILE is the byproduct of api-stubs module, -# (See lineage-sdk/Android.mk) -# we need to add api-stubs as additional dependency of the api check. - -$(INTERNAL_LINEAGE_PLATFORM_API_FILE): lineage-api-stubs-docs - -# Check that the API we're building hasn't broken the last-released -# SDK version. -$(eval $(call check-api, \ - checkpublicapi-lineage-last, \ - $(LINEAGE_SRC_API_DIR)/$(lineage_last_released_sdk_version).txt, \ - $(INTERNAL_LINEAGE_PLATFORM_API_FILE), \ - $(FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE), \ - $(INTERNAL_LINEAGE_PLATFORM_REMOVED_API_FILE), \ - -hide 2 -hide 3 -hide 4 -hide 5 -hide 6 -hide 24 -hide 25 -hide 26 -hide 27 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 , \ - cat $(FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT), \ - check-lineage-public-api, \ - $(call doc-timestamp-for,lineage-api-stubs) \ - )) - -# Check that the API we're building hasn't changed from the not-yet-released -# SDK version. -$(eval $(call check-api, \ - checkpublicapi-lineage-current, \ - $(FRAMEWORK_LINEAGE_PLATFORM_API_FILE), \ - $(INTERNAL_LINEAGE_PLATFORM_API_FILE), \ - $(FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE), \ - $(INTERNAL_LINEAGE_PLATFORM_REMOVED_API_FILE), \ - -error 2 -error 3 -error 4 -error 5 -error 6 \ - -error 7 -error 8 -error 9 -error 10 -error 11 -error 12 -error 13 -error 14 -error 15 \ - -error 16 -error 17 -error 18 -error 19 -error 20 -error 21 -error 23 -error 24 \ - -error 25 -error 26 -error 27, \ - cat $(FRAMEWORK_LINEAGE_API_NEEDS_UPDATE_TEXT), \ - check-lineage-public-api, \ - $(call doc-timestamp-for,lineage-api-stubs) \ - )) - -.PHONY: update-lineage-public-api -update-lineage-public-api: $(INTERNAL_LINEAGE_PLATFORM_API_FILE) | $(ACP) - @echo "Copying lineage_current.txt" - $(hide) $(ACP) $(INTERNAL_LINEAGE_PLATFORM_API_FILE) $(FRAMEWORK_LINEAGE_PLATFORM_API_FILE) - @echo "Copying lineage_removed.txt" - $(hide) $(ACP) $(INTERNAL_LINEAGE_PLATFORM_REMOVED_API_FILE) $(FRAMEWORK_LINEAGE_PLATFORM_REMOVED_API_FILE) - -update-lineage-api : update-lineage-public-api - -.PHONY: update-lineage-prebuilts-latest-public-api -current_sdk_release_text_file := $(LINEAGE_SRC_API_DIR)/$(lineage_last_released_sdk_version).txt - -update-lineage-prebuilts-latest-public-api: $(FRAMEWORK_LINEAGE_PLATFORM_API_FILE) | $(ACP) - @echo "Publishing lineage_current.txt as latest API release" - $(hide) $(ACP) $(FRAMEWORK_LINEAGE_PLATFORM_API_FILE) $(current_sdk_release_text_file) - -endif diff --git a/build/tasks/bacon.mk b/build/tasks/bacon.mk deleted file mode 100644 index f0184400..00000000 --- a/build/tasks/bacon.mk +++ /dev/null @@ -1,25 +0,0 @@ -# Copyright (C) 2017 Unlegacy-Android -# Copyright (C) 2017 The LineageOS Project -# -# 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. - -# ----------------------------------------------------------------- -# Lineage OTA update package - -LINEAGE_TARGET_PACKAGE := $(PRODUCT_OUT)/lineage-$(LINEAGE_VERSION).zip - -.PHONY: bacon -bacon: $(INTERNAL_OTA_PACKAGE_TARGET) - $(hide) ln -f $(INTERNAL_OTA_PACKAGE_TARGET) $(LINEAGE_TARGET_PACKAGE) - $(hide) $(MD5SUM) $(LINEAGE_TARGET_PACKAGE) | sed "s|$(PRODUCT_OUT)/||" > $(LINEAGE_TARGET_PACKAGE).md5sum - @echo "Package Complete: $(LINEAGE_TARGET_PACKAGE)" >&2 diff --git a/build/tasks/dt_image.mk b/build/tasks/dt_image.mk deleted file mode 100644 index 2e68bfb7..00000000 --- a/build/tasks/dt_image.mk +++ /dev/null @@ -1,65 +0,0 @@ -#---------------------------------------------------------------------- -# Generate device tree image (dt.img) -#---------------------------------------------------------------------- -ifeq ($(strip $(BOARD_CUSTOM_BOOTIMG_MK)),) -ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DT)),true) -INSTALLED_DTIMAGE_TARGET := $(PRODUCT_OUT)/dt.img - -ifeq ($(strip $(BOARD_KERNEL_PREBUILT_DT)),) - -ifeq ($(strip $(TARGET_CUSTOM_DTBTOOL)),) -DTBTOOL_NAME := dtbToolLineage -else -DTBTOOL_NAME := $(TARGET_CUSTOM_DTBTOOL) -endif - -DTBTOOL := $(HOST_OUT_EXECUTABLES)/$(DTBTOOL_NAME)$(HOST_EXECUTABLE_SUFFIX) - -ifeq ($(strip $(TARGET_CUSTOM_DTBTOOL)),) -# dtbToolLineage will search subdirectories -possible_dtb_dirs = $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/ -else -# Most specific paths must come first in possible_dtb_dirs -possible_dtb_dirs = $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/dts/ $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/ -endif - -define build-dtimage-target - $(call pretty,"Target dt image: $@") - $(hide) for dir in $(possible_dtb_dirs); do \ - if [ -d "$$dir" ]; then \ - dtb_dir="$$dir"; \ - break; \ - fi; \ - done; \ - $(DTBTOOL) $(BOARD_DTBTOOL_ARGS) -o $@ -s $(BOARD_KERNEL_PAGESIZE) -p $(KERNEL_OUT)/scripts/dtc/ "$$dtb_dir"; - $(hide) chmod a+r $@ -endef - -ifeq ($(strip $(BOARD_KERNEL_LZ4C_DT)),true) -LZ4_DT_IMAGE := $(PRODUCT_OUT)/dt-lz4.img -endif - -$(INSTALLED_DTIMAGE_TARGET): $(DTBTOOL) $(INSTALLED_KERNEL_TARGET) - $(build-dtimage-target) -ifeq ($(strip $(BOARD_KERNEL_LZ4C_DT)),true) - lz4 -9 < $@ > $(LZ4_DT_IMAGE) || lz4c -c1 -y $@ $(LZ4_DT_IMAGE) - $(hide) $(ACP) $(LZ4_DT_IMAGE) $@ -endif - @echo "Made DT image: $@" - -else - -$(INSTALLED_DTIMAGE_TARGET) : $(BOARD_KERNEL_PREBUILT_DT) | $(ACP) - $(transform-prebuilt-to-target) - -endif # BOARD_KERNEL_PREBUILT_DT - -ALL_DEFAULT_INSTALLED_MODULES += $(INSTALLED_DTIMAGE_TARGET) -ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(INSTALLED_DTIMAGE_TARGET) - -.PHONY: dtimage -dtimage: $(INSTALLED_DTIMAGE_TARGET) - - -endif -endif diff --git a/build/tasks/dtbo.mk b/build/tasks/dtbo.mk deleted file mode 100644 index 674eae0a..00000000 --- a/build/tasks/dtbo.mk +++ /dev/null @@ -1,27 +0,0 @@ -ifneq ($(TARGET_NO_KERNEL),true) -ifeq ($(strip $(BOARD_KERNEL_SEPARATED_DTBO)),true) - -MKDTIMG := $(HOST_OUT_EXECUTABLES)/mkdtimg$(HOST_EXECUTABLE_SUFFIX) - -BOARD_PREBUILT_DTBOIMAGE := $(PRODUCT_OUT)/dtbo-pre.img - -# Most specific paths must come first in possible_dtbo_dirs -possible_dtbo_dirs = $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/dts $(KERNEL_OUT)/arch/arm/boot/dts - -define build-dtboimage-target - $(call pretty,"Target dtbo image: $(BOARD_PREBUILT_DTBOIMAGE)") - $(hide) for dir in $(possible_dtbo_dirs); do \ - if [ -d "$$dir" ]; then \ - dtbo_dir="$$dir"; \ - break; \ - fi; \ - done; \ - $(MKDTIMG) create $@ --page_size=$(BOARD_KERNEL_PAGESIZE) $$(find "$$dtbo_dir" -name '*.dtbo') - $(hide) chmod a+r $@ -endef - -$(BOARD_PREBUILT_DTBOIMAGE): $(MKDTIMG) $(INSTALLED_KERNEL_TARGET) - $(build-dtboimage-target) - -endif # BOARD_KERNEL_SEPARATED_DTBO -endif # TARGET_NO_KERNEL diff --git a/build/tasks/generate_lineage_sdk_coverage.mk b/build/tasks/generate_lineage_sdk_coverage.mk deleted file mode 100644 index dca3df9f..00000000 --- a/build/tasks/generate_lineage_sdk_coverage.mk +++ /dev/null @@ -1,77 +0,0 @@ -# -# Copyright (C) 2010 The Android Open Source Project -# Copyright (C) 2016 The CyanogenMod Project -# -# 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. -# - -# Makefile for producing lineage sdk coverage reports. -# Run "make lineage-sdk-test-coverage" in the $ANDROID_BUILD_TOP directory. - -lineage_sdk_api_coverage_exe := $(HOST_OUT_EXECUTABLES)/lineage-sdk-api-coverage -dexdeps_exe := $(HOST_OUT_EXECUTABLES)/dexdeps - -coverage_out := $(HOST_OUT)/lineage-sdk-api-coverage - -api_text_description := lineage-sdk/api/lineage_current.txt -api_xml_description := $(coverage_out)/api.xml -$(api_xml_description) : $(api_text_description) $(APICHECK) - $(hide) echo "Converting API file to XML: $@" - $(hide) mkdir -p $(dir $@) - $(hide) $(APICHECK_COMMAND) -convert2xml $< $@ - -lineage-sdk-test-coverage-report := $(coverage_out)/lineage-sdk-test-coverage.html - -lineage_sdk_tests_apk := $(call intermediates-dir-for,APPS,LineagePlatformTests)/package.apk -lineagesettingsprovider_tests_apk := $(call intermediates-dir-for,APPS,LineageSettingsProviderTests)/package.apk -lineage_sdk_api_coverage_dependencies := $(lineage_sdk_api_coverage_exe) $(dexdeps_exe) $(api_xml_description) - -$(lineage-sdk-test-coverage-report): PRIVATE_TEST_CASES := $(lineage_sdk_tests_apk) $(lineagesettingsprovider_tests_apk) -$(lineage-sdk-test-coverage-report): PRIVATE_LINEAGE_SDK_API_COVERAGE_EXE := $(lineage_sdk_api_coverage_exe) -$(lineage-sdk-test-coverage-report): PRIVATE_DEXDEPS_EXE := $(dexdeps_exe) -$(lineage-sdk-test-coverage-report): PRIVATE_API_XML_DESC := $(api_xml_description) -$(lineage-sdk-test-coverage-report): $(lineage_sdk_tests_apk) $(lineagesettingsprovider_tests_apk) $(lineage_sdk_api_coverage_dependencies) | $(ACP) - $(call generate-lineage-coverage-report,"LINEAGE-SDK API Coverage Report",\ - $(PRIVATE_TEST_CASES),html) - -.PHONY: lineage-sdk-test-coverage -lineage-sdk-test-coverage : $(lineage-sdk-test-coverage-report) - -# Put the test coverage report in the dist dir if "lineage-sdk" is among the build goals. -ifneq ($(filter lineage-sdk, $(MAKECMDGOALS)),) - $(call dist-for-goals, lineage-sdk, $(lineage-sdk-test-coverage-report):lineage-sdk-test-coverage-report.html) -endif - -# Arguments; -# 1 - Name of the report printed out on the screen -# 2 - List of apk files that will be scanned to generate the report -# 3 - Format of the report -define generate-lineage-coverage-report - $(hide) mkdir -p $(dir $@) - $(hide) $(PRIVATE_LINEAGE_SDK_API_COVERAGE_EXE) -d $(PRIVATE_DEXDEPS_EXE) -a $(PRIVATE_API_XML_DESC) -f $(3) -o $@ $(2) -cm - @ echo $(1): file://$@ -endef - -# Reset temp vars -lineage_sdk_api_coverage_dependencies := -lineage-sdk-combined-coverage-report := -lineage-sdk-combined-xml-coverage-report := -lineage-sdk-verifier-coverage-report := -lineage-sdk-test-coverage-report := -api_xml_description := -api_text_description := -coverage_out := -dexdeps_exe := -lineage_sdk_api_coverage_exe := -lineage_sdk_verifier_apk := -android_lineage_sdk_zip := diff --git a/build/tasks/kernel.mk b/build/tasks/kernel.mk deleted file mode 100644 index e5e59604..00000000 --- a/build/tasks/kernel.mk +++ /dev/null @@ -1,311 +0,0 @@ -# Copyright (C) 2012 The CyanogenMod Project -# (C) 2017 The LineageOS Project -# -# 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. - - -# Android makefile to build kernel as a part of Android Build -# -# Configuration -# ============= -# -# These config vars are usually set in BoardConfig.mk: -# -# TARGET_KERNEL_CONFIG = Kernel defconfig -# TARGET_KERNEL_VARIANT_CONFIG = Variant defconfig, optional -# TARGET_KERNEL_SELINUX_CONFIG = SELinux defconfig, optional -# TARGET_KERNEL_ADDITIONAL_CONFIG = Additional defconfig, optional -# -# TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to false -# -# TARGET_KERNEL_CLANG_VERSION = Clang prebuilts version, optional, defaults to clang-stable -# -# TARGET_KERNEL_CLANG_PATH = Clang prebuilts path, optional -# -# BOARD_KERNEL_IMAGE_NAME = Built image name -# for ARM use: zImage -# for ARM64 use: Image.gz -# for uncompressed use: Image -# If using an appended DT, append '-dtb' -# to the end of the image name. -# For example, for ARM devices, -# use zImage-dtb instead of zImage. -# -# KERNEL_CC = The C Compiler used. This is automatically set based -# on whether the clang version is set, optional. -# -# KERNEL_CLANG_TRIPLE = Target triple for clang (e.g. aarch64-linux-gnu-) -# defaults to arm-linux-gnu- for arm -# aarch64-linux-gnu- for arm64 -# x86_64-linux-gnu- for x86 -# -# NEED_KERNEL_MODULE_ROOT = Optional, if true, install kernel -# modules in root instead of vendor -# NEED_KERNEL_MODULE_SYSTEM = Optional, if true, install kernel -# modules in system instead of vendor - -ifneq ($(TARGET_NO_KERNEL),true) - -## Externally influenced variables -KERNEL_SRC := $(TARGET_KERNEL_SOURCE) -# kernel configuration - mandatory -KERNEL_DEFCONFIG := $(TARGET_KERNEL_CONFIG) -VARIANT_DEFCONFIG := $(TARGET_KERNEL_VARIANT_CONFIG) -SELINUX_DEFCONFIG := $(TARGET_KERNEL_SELINUX_CONFIG) - -## Internal variables -KERNEL_OUT := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ -KERNEL_CONFIG := $(KERNEL_OUT)/.config -KERNEL_RELEASE := $(KERNEL_OUT)/include/config/kernel.release - -ifeq ($(KERNEL_ARCH),x86_64) -KERNEL_DEFCONFIG_ARCH := x86 -else -KERNEL_DEFCONFIG_ARCH := $(KERNEL_ARCH) -endif -KERNEL_DEFCONFIG_SRC := $(KERNEL_SRC)/arch/$(KERNEL_DEFCONFIG_ARCH)/configs/$(KERNEL_DEFCONFIG) - -ifeq ($(BOARD_KERNEL_IMAGE_NAME),) -$(error BOARD_KERNEL_IMAGE_NAME not defined.) -endif -TARGET_PREBUILT_INT_KERNEL := $(KERNEL_OUT)/arch/$(KERNEL_ARCH)/boot/$(BOARD_KERNEL_IMAGE_NAME) - -ifneq ($(TARGET_KERNEL_ADDITIONAL_CONFIG),) -KERNEL_ADDITIONAL_CONFIG := $(TARGET_KERNEL_ADDITIONAL_CONFIG) -KERNEL_ADDITIONAL_CONFIG_SRC := $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG) - ifeq ("$(wildcard $(KERNEL_ADDITIONAL_CONFIG_SRC))","") - $(warning TARGET_KERNEL_ADDITIONAL_CONFIG '$(TARGET_KERNEL_ADDITIONAL_CONFIG)' doesn't exist) - KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null - endif -else - KERNEL_ADDITIONAL_CONFIG_SRC := /dev/null -endif - -ifeq "$(wildcard $(KERNEL_SRC) )" "" - ifneq ($(TARGET_PREBUILT_KERNEL),) - HAS_PREBUILT_KERNEL := true - NEEDS_KERNEL_COPY := true - else - $(foreach cf,$(PRODUCT_COPY_FILES), \ - $(eval _src := $(call word-colon,1,$(cf))) \ - $(eval _dest := $(call word-colon,2,$(cf))) \ - $(ifeq kernel,$(_dest), \ - $(eval HAS_PREBUILT_KERNEL := true))) - endif - - ifneq ($(HAS_PREBUILT_KERNEL),) - $(warning ***************************************************************) - $(warning * Using prebuilt kernel binary instead of source *) - $(warning * THIS IS DEPRECATED, AND WILL BE DISCONTINUED *) - $(warning * Please configure your device to download the kernel *) - $(warning * source repository to $(KERNEL_SRC)) - $(warning * for more information *) - $(warning ***************************************************************) - FULL_KERNEL_BUILD := false - KERNEL_BIN := $(TARGET_PREBUILT_KERNEL) - else - $(warning ***************************************************************) - $(warning * *) - $(warning * No kernel source found, and no fallback prebuilt defined. *) - $(warning * Please make sure your device is properly configured to *) - $(warning * download the kernel repository to $(KERNEL_SRC)) - $(warning * and add the TARGET_KERNEL_CONFIG variable to BoardConfig.mk *) - $(warning * *) - $(warning * As an alternative, define the TARGET_PREBUILT_KERNEL *) - $(warning * variable with the path to the prebuilt binary kernel image *) - $(warning * in your BoardConfig.mk file *) - $(warning * *) - $(warning ***************************************************************) - $(error "NO KERNEL") - endif -else - NEEDS_KERNEL_COPY := true - ifeq ($(TARGET_KERNEL_CONFIG),) - $(warning **********************************************************) - $(warning * Kernel source found, but no configuration was defined *) - $(warning * Please add the TARGET_KERNEL_CONFIG variable to your *) - $(warning * BoardConfig.mk file *) - $(warning **********************************************************) - # $(error "NO KERNEL CONFIG") - else - #$(info Kernel source found, building it) - FULL_KERNEL_BUILD := true - KERNEL_BIN := $(TARGET_PREBUILT_INT_KERNEL) - endif -endif - -ifeq ($(FULL_KERNEL_BUILD),true) - -ifeq ($(NEED_KERNEL_MODULE_ROOT),true) -KERNEL_MODULES_OUT := $(TARGET_ROOT_OUT) -KERNEL_DEPMOD_STAGING_DIR := $(call intermediates-dir-for,PACKAGING,depmod_recovery) -KERNEL_MODULE_MOUNTPOINT := -else ifeq ($(NEED_KERNEL_MODULE_SYSTEM),true) -KERNEL_MODULES_OUT := $(TARGET_OUT) -KERNEL_DEPMOD_STAGING_DIR := $(call intermediates-dir-for,PACKAGING,depmod_system) -KERNEL_MODULE_MOUNTPOINT := system -else -KERNEL_MODULES_OUT := $(TARGET_OUT_VENDOR) -KERNEL_DEPMOD_STAGING_DIR := $(call intermediates-dir-for,PACKAGING,depmod_vendor) -KERNEL_MODULE_MOUNTPOINT := vendor -endif -MODULES_INTERMEDIATES := $(call intermediates-dir-for,PACKAGING,kernel_modules) - -ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true) - ifneq ($(TARGET_KERNEL_CLANG_VERSION),) - # Find the clang-* directory containing the specified version - KERNEL_CLANG_VERSION := $(shell find $(BUILD_TOP)/prebuilts/clang/host/$(HOST_OS)-x86/ -name AndroidVersion.txt -exec grep -l $(TARGET_KERNEL_CLANG_VERSION) "{}" \; | sed -e 's|/AndroidVersion.txt$$||g;s|^.*/||g') - else - # Use the default version of clang if TARGET_KERNEL_CLANG_VERSION hasn't been set by the device config - KERNEL_CLANG_VERSION := $(LLVM_PREBUILTS_VERSION) - endif - TARGET_KERNEL_CLANG_PATH ?= $(BUILD_TOP)/prebuilts/clang/host/$(HOST_OS)-x86/$(KERNEL_CLANG_VERSION)/bin - ifeq ($(KERNEL_ARCH),arm64) - KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=aarch64-linux-gnu- - else ifeq ($(KERNEL_ARCH),arm) - KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=arm-linux-gnu- - else ifeq ($(KERNEL_ARCH),x86) - KERNEL_CLANG_TRIPLE ?= CLANG_TRIPLE=x86_64-linux-gnu- - endif - PATH_OVERRIDE := PATH=$(TARGET_KERNEL_CLANG_PATH):$$PATH LD_LIBRARY_PATH=$(BUILD_TOP)/prebuilts/clang/host/$(HOST_OS)-x86/$(KERNEL_CLANG_VERSION)/lib64:$$LD_LIBRARY_PATH - ifeq ($(KERNEL_CC),) - KERNEL_CC := CC="$(CCACHE_BIN) clang" - endif -endif - -ifeq ($(TARGET_KERNEL_MODULES),) - TARGET_KERNEL_MODULES := INSTALLED_KERNEL_MODULES -endif - -KERNEL_ADDITIONAL_CONFIG_OUT := $(KERNEL_OUT)/.additional_config - -# Internal implementation of make-kernel-target -# $(1): output path (The value passed to O=) -# $(2): target to build (eg. defconfig, modules, dtbo.img) -define internal-make-kernel-target -$(PATH_OVERRIDE) $(MAKE) $(KERNEL_MAKE_FLAGS) -C $(KERNEL_SRC) O=$(1) ARCH=$(KERNEL_ARCH) $(KERNEL_CROSS_COMPILE) $(KERNEL_CLANG_TRIPLE) $(KERNEL_CC) $(2) -endef - -# Make a kernel target -# $(1): The kernel target to build (eg. defconfig, modules, modules_install) -define make-kernel-target -$(call internal-make-kernel-target,$(KERNEL_OUT),$(1)) -endef - -# Make a DTBO target -# $(1): The DTBO target to build (eg. dtbo.img, defconfig) -define make-dtbo-target -$(call internal-make-kernel-target,$(PRODUCT_OUT)/dtbo,$(1)) -endef - -.PHONY: force_additional_config -$(KERNEL_ADDITIONAL_CONFIG_OUT): force_additional_config - $(hide) cmp -s $(KERNEL_ADDITIONAL_CONFIG_SRC) $@ || cp $(KERNEL_ADDITIONAL_CONFIG_SRC) $@; - -$(KERNEL_CONFIG): $(KERNEL_DEFCONFIG_SRC) $(KERNEL_ADDITIONAL_CONFIG_OUT) - @echo "Building Kernel Config" - $(hide) mkdir -p $(KERNEL_OUT) - $(call make-kernel-target,VARIANT_DEFCONFIG=$(VARIANT_DEFCONFIG) SELINUX_DEFCONFIG=$(SELINUX_DEFCONFIG) $(KERNEL_DEFCONFIG)) - $(hide) if [ ! -z "$(KERNEL_CONFIG_OVERRIDE)" ]; then \ - echo "Overriding kernel config with '$(KERNEL_CONFIG_OVERRIDE)'"; \ - echo $(KERNEL_CONFIG_OVERRIDE) >> $(KERNEL_OUT)/.config; \ - $(call make-kernel-target,oldconfig); \ - fi - # Create defconfig build artifact - $(call make-kernel-target,savedefconfig) - $(hide) if [ ! -z "$(KERNEL_ADDITIONAL_CONFIG)" ]; then \ - echo "Using additional config '$(KERNEL_ADDITIONAL_CONFIG)'"; \ - $(KERNEL_SRC)/scripts/kconfig/merge_config.sh -m -O $(KERNEL_OUT) $(KERNEL_OUT)/.config $(KERNEL_SRC)/arch/$(KERNEL_ARCH)/configs/$(KERNEL_ADDITIONAL_CONFIG); \ - $(call make-kernel-target,KCONFIG_ALLCONFIG=$(KERNEL_OUT)/.config alldefconfig); \ - fi - -.PHONY: TARGET_KERNEL_BINARIES -TARGET_KERNEL_BINARIES: $(KERNEL_CONFIG) - @echo "Building Kernel" - $(call make-kernel-target,$(BOARD_KERNEL_IMAGE_NAME)) - $(hide) if grep -q '^CONFIG_OF=y' $(KERNEL_CONFIG); then \ - echo "Building DTBs"; \ - $(call make-kernel-target,dtbs); \ - fi - $(hide) if grep -q '=m' $(KERNEL_CONFIG); then \ - echo "Building Kernel Modules"; \ - $(call make-kernel-target,modules); \ - fi - -.PHONY: INSTALLED_KERNEL_MODULES -INSTALLED_KERNEL_MODULES: depmod-host - $(hide) if grep -q '=m' $(KERNEL_CONFIG); then \ - echo "Installing Kernel Modules"; \ - $(call make-kernel-target,INSTALL_MOD_PATH=$(MODULES_INTERMEDIATES) modules_install); \ - kernel_release=$$(cat $(KERNEL_RELEASE)) \ - modules=$$(find $(MODULES_INTERMEDIATES)/lib/modules/$$kernel_release -type f -name '*.ko'); \ - for f in $$modules; do \ - $(KERNEL_TOOLCHAIN_PATH)strip --strip-unneeded $$f; \ - done; \ - ($(call build-image-kernel-modules,$$modules,$(KERNEL_MODULES_OUT),$(KERNEL_MODULE_MOUNTPOINT)/,$(KERNEL_DEPMOD_STAGING_DIR))); \ - fi - -$(TARGET_KERNEL_MODULES): TARGET_KERNEL_BINARIES - -$(TARGET_PREBUILT_INT_KERNEL): $(TARGET_KERNEL_MODULES) - -.PHONY: kerneltags -kerneltags: $(KERNEL_CONFIG) - $(hide) mkdir -p $(KERNEL_OUT) - $(call make-kernel-target,tags) - -.PHONY: kernelsavedefconfig alldefconfig - -kernelsavedefconfig: - $(hide) mkdir -p $(KERNEL_OUT) - $(call make-kernel-target,$(KERNEL_DEFCONFIG)) - env KCONFIG_NOTIMESTAMP=true \ - $(call make-kernel-target,savedefconfig) - cp $(KERNEL_OUT)/defconfig $(KERNEL_DEFCONFIG_SRC) - -alldefconfig: - $(hide) mkdir -p $(KERNEL_OUT) - env KCONFIG_NOTIMESTAMP=true \ - $(call make-kernel-target,alldefconfig) - -ifeq ($(TARGET_NEEDS_DTBOIMAGE),true) -BOARD_PREBUILT_DTBOIMAGE = $(PRODUCT_OUT)/dtbo/arch/$(KERNEL_ARCH)/boot/dtbo.img -$(BOARD_PREBUILT_DTBOIMAGE): - echo -e ${CL_GRN}"Building DTBO.img"${CL_RST} - $(call make-dtbo-target,$(KERNEL_DEFCONFIG)) - $(call make-dtbo-target,dtbo.img) -endif # TARGET_NEEDS_DTBOIMAGE - -endif # FULL_KERNEL_BUILD - -## Install it - -ifeq ($(NEEDS_KERNEL_COPY),true) -file := $(INSTALLED_KERNEL_TARGET) -ALL_PREBUILT += $(file) -$(file) : $(KERNEL_BIN) | $(ACP) - $(transform-prebuilt-to-target) - -ALL_PREBUILT += $(INSTALLED_KERNEL_TARGET) -endif - -INSTALLED_DTBOIMAGE_TARGET := $(PRODUCT_OUT)/dtbo.img -ALL_PREBUILT += $(INSTALLED_DTBOIMAGE_TARGET) - -.PHONY: kernel -kernel: $(INSTALLED_KERNEL_TARGET) - -.PHONY: dtboimage -dtboimage: $(INSTALLED_DTBOIMAGE_TARGET) - -endif # TARGET_NO_KERNEL diff --git a/build/templates/extract-files.sh b/build/templates/extract-files.sh deleted file mode 100755 index fede6709..00000000 --- a/build/templates/extract-files.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2016 The CyanogenMod Project -# Copyright (C) 2017 The LineageOS Project -# -# 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. -# - -set -e - -DEVICE=**** FILL IN DEVICE NAME **** -VENDOR=*** FILL IN VENDOR **** - -# Load extract_utils and do some sanity checks -MY_DIR="${BASH_SOURCE%/*}" -if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi - -LINEAGE_ROOT="${MY_DIR}/../../.." - -HELPER="${LINEAGE_ROOT}/vendor/lineage/build/tools/extract_utils.sh" -if [ ! -f "${HELPER}" ]; then - echo "Unable to find helper script at ${HELPER}" - exit 1 -fi -source "${HELPER}" - -# Default to sanitizing the vendor folder before extraction -CLEAN_VENDOR=true -SECTION= -KANG= - -while [ "$1" != "" ]; do - case "$1" in - -n | --no-cleanup ) CLEAN_VENDOR=false - ;; - -k | --kang) KANG="--kang" - ;; - -s | --section ) shift - SECTION="$1" - CLEAN_VENDOR=false - ;; - * ) SRC="$1" - ;; - esac - shift -done - -if [ -z "${SRC}" ]; then - SRC=adb -fi - -# Initialize the helper -setup_vendor "${DEVICE}" "${VENDOR}" "${LINEAGE_ROOT}" false "${CLEAN_VENDOR}" - -extract "${MY_DIR}/proprietary-files.txt" "${SRC}" ${KANG} --section "${SECTION}" - -"${MY_DIR}/setup-makefiles.sh" diff --git a/build/templates/setup-makefiles.sh b/build/templates/setup-makefiles.sh deleted file mode 100755 index 51b4ba22..00000000 --- a/build/templates/setup-makefiles.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2016 The CyanogenMod Project -# Copyright (C) 2017 The LineageOS Project -# -# 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. -# - -set -e - -DEVICE=*** FILL IN DEVICE **** -VENDOR=*** FILL IN VENDOR **** - -INITIAL_COPYRIGHT_YEAR=**** FILL IN COPYRIGHT YEAR **** - -# Load extract_utils and do some sanity checks -MY_DIR="${BASH_SOURCE%/*}" -if [[ ! -d "$MY_DIR" ]]; then MY_DIR="$PWD"; fi - -LINEAGE_ROOT="$MY_DIR"/../../.. - -HELPER="$LINEAGE_ROOT"/vendor/lineage/build/tools/extract_utils.sh -if [ ! -f "$HELPER" ]; then - echo "Unable to find helper script at $HELPER" - exit 1 -fi -. "$HELPER" - -# Initialize the helper -setup_vendor "$DEVICE" "$VENDOR" "$LINEAGE_ROOT" - -# Copyright headers and guards -write_headers - -write_makefiles "$MY_DIR"/proprietary-files.txt - -# Finish -write_footers diff --git a/build/tools/Darwin/compact_dex_converter b/build/tools/Darwin/compact_dex_converter Binary files differdeleted file mode 100755 index 1c89476c..00000000 --- a/build/tools/Darwin/compact_dex_converter +++ /dev/null diff --git a/build/tools/Darwin/lib64/libart-dexlayout.dylib b/build/tools/Darwin/lib64/libart-dexlayout.dylib Binary files differdeleted file mode 100755 index 88e940fc..00000000 --- a/build/tools/Darwin/lib64/libart-dexlayout.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libart.dylib b/build/tools/Darwin/lib64/libart.dylib Binary files differdeleted file mode 100755 index 53f8712d..00000000 --- a/build/tools/Darwin/lib64/libart.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libbacktrace.dylib b/build/tools/Darwin/lib64/libbacktrace.dylib Binary files differdeleted file mode 100755 index c2e6d899..00000000 --- a/build/tools/Darwin/lib64/libbacktrace.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libbase.dylib b/build/tools/Darwin/lib64/libbase.dylib Binary files differdeleted file mode 100755 index 71130e5b..00000000 --- a/build/tools/Darwin/lib64/libbase.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libc++.dylib b/build/tools/Darwin/lib64/libc++.dylib Binary files differdeleted file mode 100755 index 739164b1..00000000 --- a/build/tools/Darwin/lib64/libc++.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libcutils.dylib b/build/tools/Darwin/lib64/libcutils.dylib Binary files differdeleted file mode 100755 index 73a6c073..00000000 --- a/build/tools/Darwin/lib64/libcutils.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libdexfile.dylib b/build/tools/Darwin/lib64/libdexfile.dylib Binary files differdeleted file mode 100755 index abb0fe28..00000000 --- a/build/tools/Darwin/lib64/libdexfile.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/liblog.dylib b/build/tools/Darwin/lib64/liblog.dylib Binary files differdeleted file mode 100755 index 66a34d8f..00000000 --- a/build/tools/Darwin/lib64/liblog.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/liblz4.dylib b/build/tools/Darwin/lib64/liblz4.dylib Binary files differdeleted file mode 100755 index 0a6bfc63..00000000 --- a/build/tools/Darwin/lib64/liblz4.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libmetricslogger.dylib b/build/tools/Darwin/lib64/libmetricslogger.dylib Binary files differdeleted file mode 100755 index 0b2ae0c6..00000000 --- a/build/tools/Darwin/lib64/libmetricslogger.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libnativebridge.dylib b/build/tools/Darwin/lib64/libnativebridge.dylib Binary files differdeleted file mode 100755 index f53c20e2..00000000 --- a/build/tools/Darwin/lib64/libnativebridge.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libnativehelper.dylib b/build/tools/Darwin/lib64/libnativehelper.dylib Binary files differdeleted file mode 100755 index 56a485a1..00000000 --- a/build/tools/Darwin/lib64/libnativehelper.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libnativeloader.dylib b/build/tools/Darwin/lib64/libnativeloader.dylib Binary files differdeleted file mode 100755 index cba9b63a..00000000 --- a/build/tools/Darwin/lib64/libnativeloader.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libsigchain.dylib b/build/tools/Darwin/lib64/libsigchain.dylib Binary files differdeleted file mode 100755 index 5f6ecbf9..00000000 --- a/build/tools/Darwin/lib64/libsigchain.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libz-host.dylib b/build/tools/Darwin/lib64/libz-host.dylib Binary files differdeleted file mode 100755 index 386865c5..00000000 --- a/build/tools/Darwin/lib64/libz-host.dylib +++ /dev/null diff --git a/build/tools/Darwin/lib64/libziparchive.dylib b/build/tools/Darwin/lib64/libziparchive.dylib Binary files differdeleted file mode 100755 index 394c1914..00000000 --- a/build/tools/Darwin/lib64/libziparchive.dylib +++ /dev/null diff --git a/build/tools/Darwin/vdexExtractor b/build/tools/Darwin/vdexExtractor Binary files differdeleted file mode 100755 index 34b2ee1a..00000000 --- a/build/tools/Darwin/vdexExtractor +++ /dev/null diff --git a/build/tools/Linux/compact_dex_converter b/build/tools/Linux/compact_dex_converter Binary files differdeleted file mode 100755 index 0a99e321..00000000 --- a/build/tools/Linux/compact_dex_converter +++ /dev/null diff --git a/build/tools/Linux/vdexExtractor b/build/tools/Linux/vdexExtractor Binary files differdeleted file mode 100755 index 39684111..00000000 --- a/build/tools/Linux/vdexExtractor +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/android-developer-docs.css b/build/tools/droiddoc/templates-lineage-sdk/assets/android-developer-docs.css deleted file mode 100644 index bc27b324..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/android-developer-docs.css +++ /dev/null @@ -1,2768 +0,0 @@ -/* file: android-developer-core.css - author: smain - date: september 2008 - info: core developer styles (developer.android.com) - Required by jdiff -*/ - - -/* RESET STYLES */ - -html,body,div,h1,h2,h3,h4,h5,h6,p,img, -dl,dt,dd,ol,ul,li,table,caption,tbody, -tfoot,thead,tr,th,td,form,fieldset, -embed,object,applet { - margin: 0; - padding: 0; - border: 0; -} - -/* BASICS */ - -html, body { - overflow:hidden; /* keeps scrollbar off IE */ - background-color:#fff; -} - -body { - font-family:arial,sans-serif; - color:#000; - font-size:13px; - color:#333; - background-image:url(images/bg_fade.jpg); - background-repeat:repeat-x; -} - -a, a code { - color:#006699; -} - -a:active, -a:active code { - color:#f00; -} - -a:visited, -a:visited code { - color:#006699; -} - -input, select, -textarea, option, label { - font-family:inherit; - font-size:inherit; - padding:0; - margin:0; - vertical-align:middle; -} - -option { - padding:0 4px; -} - -p, form { - padding:0; - margin:0 0 1em; -} - -code, pre { - color:#007000; - font-family:monospace; - line-height:1em; -} - -var { - color:#007000; - font-style:italic; -} - -pre { - border:1px solid #ccc; - background-color:#fafafa; - padding:10px; - margin:0 0 1em 1em; - overflow:auto; - line-height:inherit; /* fixes vertical scrolling in webkit */ -} - -h1,h2,h3,h4,h5 { - margin:1em 0; - padding:0; -} - -p,ul,ol,dl,dd,dt,li { - line-height:1.3em; -} - -ul,ol { - margin:0 0 .8em; - padding:0 0 0 2em; -} - -li { - padding:0 0 .5em; -} - -dl { - margin:0 0 1em 0; - padding:0; -} - -dt { - margin:0; - padding:0; -} - -dd { - margin:0 0 1em; - padding:0 0 0 2em; -} - -li p { - margin:.5em 0 0; -} - -dd p { - margin:1em 0 0; -} - -li pre, li table, li img { - margin:.5em 0 0 1em; -} - -dd pre, -#jd-content dd table, -#jd-content dd img { - margin:1em 0 0 1em; -} - -li ul, -li ol, -dd ul, -dd ol { - margin:0; - padding: 0 0 0 2em; -} - -li li, -dd li { - margin:0; - padding:.5em 0 0; -} - -dl dl, -ol dl, -ul dl { - margin:0 0 1em; - padding:0; -} - -table { - font-size:1em; - margin:0 0 1em; - padding:0; - border-collapse:collapse; - border-width:0; - empty-cells:show; -} - -td,th { - border:1px solid #ccc; - padding:6px 12px; - text-align:left; - vertical-align:top; - background-color:inherit; -} - -th { - background-color:#dee8f1; -} - -td > p:last-child { - margin:0; -} - -hr.blue { - background-color:#DDF0F2; - border:none; - height:5px; - margin:20px 0 10px; -} - -blockquote { - margin: 0 0 1em 1em; - padding: 0 4em 0 1em; - border-left:2px solid #eee; -} -/* LAYOUT */ - -#body-content { - /* "Preliminary" watermark for preview releases and interim builds. - background:transparent url(images/preliminary.png) repeat scroll 0 0; */ - margin:0; - position:relative; - width:100%; -} - -#header { - height: 114px; - position:relative; - z-index:100; - min-width:675px; /* min width for the tabs, before they wrap */ - padding:0 10px; - border-bottom:3px solid #94b922; -} - -#headerLeft{ - padding: 25px 0 0; -} - -#headerLeft img{ - height:50px; - width:180px; -} - -#headerRight { - position:absolute; - right:0; - top:0; - text-align:right; -} - -/* Tabs in the header */ - -#header ul { - list-style: none; - margin: 7px 0 0; - padding: 0; - height: 29px; -} - -#header li { - float: left; - margin: 0px 2px 0px 0px; - padding:0; -} - -#header li a { - text-decoration: none; - display: block; - background-image: url(images/bg_images_sprite.png); - background-position: 0 -58px; - background-repeat: no-repeat; - color: #666; - font-size: 13px; - font-weight: bold; - width: 94px; - height: 29px; - text-align: center; - margin: 0px; -} - -#header li a:hover { - background-image: url(images/bg_images_sprite.png); - background-position: 0 -29px; - background-repeat: no-repeat; -} - -#header li a span { - position:relative; - top:7px; -} - -#header li a span+span { - display:none; -} - -/* tab highlighting */ - -.home #home-link a, -.guide #guide-link a, -.reference #reference-link a, -.sdk #sdk-link a, -.resources #resources-link a, -.videos #videos-link a { - background-image: url(images/bg_images_sprite.png); - background-position: 0 0; - background-repeat: no-repeat; - color: #fff; - font-weight: bold; - cursor:default; -} - -.home #home-link a:hover, -.guide #guide-link a:hover, -.reference #reference-link a:hover, -.sdk #sdk-link a:hover, -.resources #resources-link a:hover, -.videos #videos-link a:hover { - background-image: url(images/bg_images_sprite.png); - background-position: 0 0; -} - -#headerLinks { - margin:10px 10px 0 0; - height:13px; - font-size: 11px; - vertical-align: top; -} - -#headerLinks a { - color: #7FA9B5; -} - -#headerLinks img { - vertical-align:middle; -} - -#language { - margin:0 10px 0 4px; -} - -#search { - height:45px; - margin:15px 10px 0 0; -} - -/* MAIN BODY */ - -#mainBodyFluid { - margin: 20px 10px; - color:#333; -} - -#mainBodyFixed { - margin: 20px 10px; - color: #333; - width:930px; - position:relative; -} - -#mainBodyFixed h3, -#mainBodyFluid h3 { - color:#336666; - font-size:1.25em; - margin: 0em 0em 0em 0em; - padding-bottom:.5em; -} - -#mainBodyFixed h2, -#mainBodyFluid h2 { - color:#336666; - font-size:1.25em; - margin: 0; - padding-bottom:.5em; -} - -#mainBodyFixed h1, -#mainBodyFluid h1 { - color:#435A6E; - font-size:1.7em; - margin: 1em 0; -} - -#mainBodyFixed .green, -#mainBodyFluid .green, -#jd-content .green { - color:#7BB026; - background-color:none; -} - -#mainBodyLeft { - float: left; - width: 600px; - margin-right: 20px; - color: #333; - position:relative; -} - -div.indent { - margin-left: 40px; - margin-right: 70px; -} - -#mainBodyLeft p { - color: #333; - font-size: 13px; -} - -#mainBodyLeft p.blue { - color: #669999; -} - -#mainBodyLeft #communityDiv { - float: left; - background-image:url(images/bg_community_leftDiv.jpg); - background-repeat: no-repeat; - width: 581px; - height: 347px; - padding: 20px 0px 0px 20px; -} - -#mainBodyRight { - float: left; - width: 300px; - color: #333; -} - -#mainBodyRight p { - padding-right: 50px; - color: #333; -} - -#mainBodyRight table { - width: 100%; -} - -#mainBodyRight td { - border:0px solid #666; - padding:0px 5px; - text-align:left; -} - -#mainBodyRight td p { - margin:0 0 1em 0; -} - -#mainBodyRight .blueBorderBox { - border:5px solid #ddf0f2; - padding:18px 18px 18px 18px; - text-align:left; -} - -#mainBodyFixed .seperator { - background-image:url(images/hr_gray_side.jpg); - background-repeat:no-repeat; - width: 100%; - float: left; - clear: both; -} - -#mainBodyBottom { - float: left; - width: 100%; - clear:both; - color: #333; -} - -#mainBodyBottom .seperator { - background-image:url(images/hr_gray_main.jpg); - background-repeat:no-repeat; - width: 100%; - float: left; - clear: both; -} - -/* FOOTER */ - -#footer { - float: left; - width:90%; - margin: 20px; - color: #aaa; - font-size: 11px; -} - -#footer a { - color: #aaa; - font-size: 11px; -} - -#footer a:hover { - text-decoration: underline; - color:#aaa; -} - -#footerlinks { - margin-top:2px; -} - -#footerlinks a, -#footerlinks a:visited { - color:#006699; -} - -/* SEARCH FILTER */ - -#search_autocomplete { - color:#aaa; -} - -#search-button { - display:inline; -} - -#search_filtered_div { - position:absolute; - margin-top:-1px; - z-index:101; - border:1px solid #BCCDF0; - background-color:#fff; -} - -#search_filtered { - min-width:100%; -} -#search_filtered td{ - background-color:#fff; - border-bottom: 1px solid #669999; - line-height:1.5em; -} - -#search_filtered .jd-selected { - background-color: #94b922; - cursor:pointer; -} -#search_filtered .jd-selected, -#search_filtered .jd-selected a { - color:#fff; -} - -.no-display { - display: none; -} - -.jd-autocomplete { - font-family: Arial, sans-serif; - padding-left: 6px; - padding-right: 6px; - padding-top: 1px; - padding-bottom: 1px; - font-size: 0.81em; - border: none; - margin: 0; - line-height: 1.05em; -} - -.show-row { - display: table-row; -} -.hide-row { - display: hidden; -} - -/* SEARCH */ - -/* restrict global search form width */ -#searchForm { - width:350px; -} - -#searchTxt { - width:200px; -} - -/* disable twiddle and size selectors for left column */ -#leftSearchControl div { - width: 100%; -} - -#leftSearchControl .gsc-twiddle { - background-image : none; -} - -#leftSearchControl td, #searchForm td { - border: 0px solid #000; -} - -#leftSearchControl .gsc-resultsHeader .gsc-title { - padding-left : 0px; - font-weight : bold; - font-size : 13px; - color:#006699; - display : none; -} - -#leftSearchControl .gsc-resultsHeader div.gsc-results-selector { - display : none; -} - -#leftSearchControl .gsc-resultsRoot { - padding-top : 6px; -} - -#leftSearchControl div.gs-visibleUrl-long { - display : block; - color:#006699; -} - -.gsc-webResult div.gs-visibleUrl-short, -table.gsc-branding, -.gsc-clear-button { - display : none; -} - -.gsc-cursor-box .gsc-cursor div.gsc-cursor-page, -.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results, -#leftSearchControl a, -#leftSearchControl a b { - color:#006699; -} - -.gsc-resultsHeader { - display: none; -} - -/* Disable built in search forms */ -.gsc-control form.gsc-search-box { - display : none; -} -table.gsc-search-box { - margin:6px 0 0 0; - border-collapse:collapse; -} - -td.gsc-input { - padding:0 2px; - width:100%; - vertical-align:middle; -} - -input.gsc-input { - border:1px solid #BCCDF0; - width:99%; - padding-left:2px; - font-size:.95em; -} - -td.gsc-search-button { - text-align: right; - padding:0; - vertical-align:top; -} - -#search-button { - margin:0 0 0 2px; - font-size:11px; -} - -/* search result tabs */ - -#doc-content .gsc-control { - position:relative; -} - -#doc-content .gsc-tabsArea { - position:relative; - white-space:nowrap; -} - -#doc-content .gsc-tabHeader { - padding: 3px 6px; - position:relative; - width:auto; -} - -#doc-content .gsc-tabHeader.gsc-tabhActive { - border-top: 2px solid #94B922; -} - -#doc-content h2#searchTitle { - padding:0; -} - -#doc-content .gsc-resultsbox-visible { - padding:1em 0 0 6px; -} - -/* CAROUSEL */ - -#homeMiddle { - padding: 0px 0px 0px 0px; - float: left; - width: 584px; - height: 627px; - position:relative; -} - -#topAnnouncement { - background:url(images/home/bg_home_announcement.png) no-repeat 0 0; -} - -#homeTitle { - padding:15px 15px 0; - height:30px; -} - -#homeTitle h2 { - padding:0; -} - -#announcement-block { - padding:0 15px 0; - overflow:hidden; - background: url(images/hr_gray_side.jpg) no-repeat 15px 0; - zoom:1; -} - -#announcement-block>* { - padding:15px 0 0; -} - -#announcement-block img { - float:left; - margin:0 30px 0 0; -} - -#announcement { - float:left; - margin:0; -} - -#carousel { - background:url(images/home/bg_home_carousel.png) no-repeat 0 0; - position:relative; - height:400px; -} - -#carouselMain { - background: url(images/home/bg_home_carousel_board.png) 0 0 no-repeat; - height:auto; - padding: 25px 21px 0; - overflow:hidden; - position:relative; - zoom:1; /*IE6*/ -} - -#carouselMain img { - margin:0; -} - -#carouselMain .bulletinDesc h3 { - margin:0; - padding:0; -} - -#carouselMain .bulletinDesc p { - margin:0; - padding:0.7em 0 0; -} - -#carouselWheel { - background: url(images/home/bg_home_carousel_wheel.png) 0 0 no-repeat; - padding-top:40px; - height:150px; -} - -.clearer { clear:both; } - -a#arrow-left, a#arrow-right { - float:left; - width:42px; - height:42px; - background-image:url(images/home/carousel_buttons_sprite.png); - background-repeat:no-repeat; -} -a#arrow-left { - margin:35px 3px 0 10px; -} -a#arrow-right { - margin:35px 10px 0 0; -} -a.arrow-left-off, -a#arrow-left.arrow-left-off:hover { - background-position:0 0; -} -a.arrow-right-off, -a#arrow-right.arrow-right-off:hover { - background-position:-42px 0; -} -a#arrow-left:hover { - background-position:0 -42px; -} -a#arrow-right:hover { - background-position:-42px -42px; -} -a.arrow-left-on { - background-position:0 0; -} -a.arrow-right-on { - background-position:-42px 0; -} -a.arrow-right-off, -a.arrow-left-off { - cursor:default; -} - -.app-list-container { - margin:0 20px; - position:relative; - width:100%; -} - -div#list-clip { - height:110px; - width:438px; - overflow:hidden; - position:relative; - float:left; -} - -div#app-list { - left:0; - z-index:1; - position:absolute; - margin:11px 0 0; - _margin-top:13px; - width:1000%; -} - -#app-list a { - display:block; - float:left; - height:90px; - width:90px; - margin:0 24px 0; - padding:3px; - background:#99cccc; - -webkit-border-radius:7px; - -moz-border-radius:7px; - border-radius:7px; - text-decoration:none; - text-align:center; - font-size:11px; - line-height:11px; -} - -#app-list a span { - position:relative; - top:-4px; -} - -#app-list img { - width:90px; - height:70px; - margin:0; -} - -#app-list a.selected, -#app-list a:active.selected, -#app-list a:hover.selected { - background:#A4C639; - color:#fff; - cursor:default; - text-decoration:none; -} - -#app-list a:hover, -#app-list a:active { - background:#ff9900; -} - -#app-list a:hover span, -#app-list a:active span { - text-decoration:underline; -} - -#droid-name { - padding-top:.5em; - color:#666; - padding-bottom:.25em; -} - -/*IE6*/ -* html #app-list a { zoom: 1; margin:0 24px 0 15px;} - -* html #list-clip { - width:430px !important; -} - -/*carousel bulletin layouts*/ -/*460px width*/ -/*185px height*/ -.img-left { - float:left; - width:230px; - overflow:hidden; - padding:8px 0 8px 8px; -} -.desc-right { - float:left; - width:270px; - padding:10px; -} -.img-right { - float:right; - width:220px; - overflow:hidden; - padding:8px 8px 8px 0; -} -.desc-left { - float:right; - width:280px; - padding:10px; - text-align:right; -} -.img-top { - padding:20px 20px 0; -} -.desc-bottom { - padding:10px; -} - - -/* VIDEO PAGE */ - -#mainBodyLeft.videoPlayer { - width:570px; -} - -#mainBodyRight.videoPlayer { - width:330px; -} - -/* player */ - -#videoPlayerBox { - background-color: #DAF3FC; - border-radius:7px; - -moz-border-radius:7px; - -webkit-border-radius:7px; - width:530px; - padding:20px; - border:1px solid #d3ecf5; - box-shadow:2px 3px 1px #eee; - -moz-box-shadow:2px 3px 1px #eee; - -webkit-box-shadow:2px 3px 1px #eee; -} - -#videoBorder { - background-color: #FFF; - min-height:399px; - height:auto !important; - border:1px solid #ccdada; - border-radius:7px 7px 0 0; - -moz-border-radius:7px 7px 0 0; - -webkit-border-top-left-radius:7px; - -webkit-border-top-right-radius:7px; -} - -#videoPlayerTitle { - width:500px; - padding:15px 15px 0; -} - -#videoPlayerTitle h2 { - font-weight:bold; - font-size:1.2em; - color:#336666; - margin:0; - padding:0; -} - -#objectWrapper { - padding:15px 15px; - height:334px; - width:500px; -} - -/* playlist tabs */ - -ul#videoTabs { - list-style-type:none; - padding:0; - clear:both; - margin:0; - padding: 20px 0 0 15px; - zoom:1; /* IE7/8, otherwise top-padding is double */ -} - -ul#videoTabs li { - display:inline; - padding:0; - margin:0 3px 0 0; - line-height:2em; -} - -ul#videoTabs li a { - border-radius:7px 7px 0 0; - -moz-border-radius:7px 7px 0 0; - -webkit-border-top-left-radius:7px; - -webkit-border-top-right-radius:7px; - background:#95c0d0; - color:#fff; - text-decoration:none; - padding:.45em 1.5em; - font-weight:bold; -} - -ul#videoTabs li.selected a { - font-weight:bold; - text-decoration:none; - color:#555; - background:#daf3fc; - border-bottom:1px solid #daf3fc; -} - -ul#videoTabs li:hover a { - background:#85acba; -} - -ul#videoTabs li.selected:hover a { - background:#daf3fc; -} - -/* playlists */ - -#videos { - background:#daf3fc; - margin-bottom:1.5em; - padding:15px; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - box-shadow:2px 3px 1px #eee; - -moz-box-shadow:2px 3px 1px #eee; - -webkit-box-shadow:2px 3px 1px #eee; -} - -#videos div { - display:none; -} - -#videos div.selected { - display:block; -} - -ul.videoPreviews { - list-style:none; - padding:0; - margin:0; - zoom:1; /* IE, otherwise, layout doesn't update when showing 'more' */ -} - -ul.videoPreviews li { - margin:0 0 5px; - padding:0; - overflow:hidden; - position:relative; -} - -#mainBodyFixed ul.videoPreviews h3 { - font-size: 12px; - margin:0 0 1em 130px; - padding:0; - font-weight:bold; - color:inherit; -} - -ul.videoPreviews a { - margin:1px; - padding:10px; - text-decoration:none; - height:90px; - display:block; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - background-color:transparent; -} - -ul.videoPreviews a:hover { - background-color:#FFF; - border:none; /* IE8, otherwise, bg doesn't work */ -} - -ul.videoPreviews a.selected { - background-color: #FF9900; -} - -ul.videoPreviews img { - float:left; - clear:left; - margin:0; -} - -ul.videoPreviews h3 { - font-size:12px; - font-weight:bold; - text-decoration:none; - margin:0 0 1em 130px; - padding:0; -} - -ul.videoPreviews p { - font-size: 12px; - text-decoration:none; - margin:0 0 1.2em 130px; -} - -ul.videoPreviews p.full { - display:none; -} - -ul.videoPreviews span.more { - padding:0 0 0 12px; - background:url(images/arrow_bluelink_down.png) 0 2px no-repeat; -} - -ul.videoPreviews span.less { - padding:0 0 0 12px; - background:url(images/arrow_bluelink_up.png) 0 2px no-repeat; - display:none; -} - -ul.videoPreviews p.toggle { - position:absolute; - margin:0; - margin-top:-23px; /* instead of bottom:23px, because IE won't do it correctly */ - left:140px; -} - -ul.videoPreviews p.toggle a { - height:auto; - margin:0; - padding:0; - zoom:1; /* IE6, otherwise the margin considers the img on redraws */ -} - -ul.videoPreviews p.toggle a:hover { - text-decoration:underline; - background:transparent; /* IE6, otherwise it inherits white */ -} - -/* featured videos */ - -#mainBodyRight h2 { - padding:0 0 5px; -} - -#mainBodyRight ul.videoPreviews { - margin:10px 0 0; -} - -#mainBodyRight ul.videoPreviews li { - font-size:11px; - line-height:13px; - margin:0 0 5px; - padding:0; -} - -#mainBodyRight ul.videoPreviews h3 { - padding:0; - margin:0; - font-size:100%; -} - -#mainBodyRight ul.videoPreviews a { - text-decoration:none; - height:108px; - border:1px solid #FFF; -} - -#mainBodyRight ul.videoPreviews a:hover { - border:1px solid #CCDADA; -} - -#mainBodyRight ul.videoPreviews a.selected { - border:1px solid #FFF; -} - -#mainBodyRight ul.videoPreviews p { - line-height:1.2em; - padding:0; - margin:4px 0 0 130px; -} - -#mainBodyRight ul.videoPreviews img { - margin-top:5px; -} - -/* Pretty printing styles. Used with prettify.js. */ - -.str { color: #080; } -.kwd { color: #008; } -.com { color: #800; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -dl.tag-list dt code, -.tag { color: #008; } -dl.atn-list dt code, -.atn { color: #828; } -.atv { color: #080; } -.dec { color: #606; } - -@media print { - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - - -#title { - border-bottom: 4px solid #ccc; - display:none; -} - -#title h1 { - color:#336666; - margin:0; - padding: 5px 10px; - font-size: 1em; - line-height: 15px; -} - -#title h1 .small{ - color:#000; - margin:0; - font-size: 13px; - padding:0 0 0 15px; -} - -/* SIDE NAVIGATION */ - -#side-nav { - padding:0 6px 0 0; - background-color: #fff; - font-size:12px; -} - -#resize-packages-nav { -/* keeps the resize handle below the h-scroll handle */ - height:270px; - overflow:hidden; - max-height:100%; -} - -#packages-nav { - height:270px; - max-height:inherit; - position:relative; - overflow:auto; -} - -#classes-nav, -#devdoc-nav { - overflow:auto; - position:relative; -} - -#side-nav ul { - list-style: none; - margin: 0; - padding:5px 0; -} - -#side-nav ul ul { - margin: .5em 0 0 0; - padding: 0; -} - -#side-nav li { - padding:0; - padding:1px 0 1px 0; - zoom:1; -} - -#side-nav li span.heading, -#side-nav li h2 { - display:block; - font-size:12px; - font-weight: bold; - margin:.5em 0 0 0; - padding: 3px 0 1px 9px; -} - -#side-nav li a { - display: inline-block; /* needed to apply padding to line-wraps */ - text-decoration:none; - padding: 0 0 0 18px; - zoom:1; -} - -#side-nav li a span+span { - display:none; -} - -#side-nav li a:hover { - text-decoration:underline; -} - -#side-nav li a+a { - padding: 0; -} -/*second level (nested) list*/ -#side-nav li li li a { - padding: 0 0 0 28px; -} -/*third level (nested) list*/ -#side-nav li li li li a { - padding: 0 0 0 38px; -} - -#side-nav .selected { - background-color: #435a6e; - color: #fff; - font-weight:bold; -} - -#side-nav .selected a { - color: #fff; - text-decoration:none; -} - -#side-nav strong { - display:block; -} - -#side-nav .toggle-list .toggle-img { - margin:0; - padding:0; - position:absolute; - top:0; - left:0; - height:16px; - width:15px; - outline-style:none; -} -/* second-level toggle */ -#side-nav .toggle-list .toggle-list .toggle-img { - left:10px; -} - -#side-nav .closed .toggle-img, -#side-nav .open .closed .toggle-img { - background:url('images/triangle-closed-small.png') 7px 4px no-repeat; -} -#side-nav .open .toggle-img { - background:url('images/triangle-opened-small.png') 7px 4px no-repeat; -} - -#side-nav .toggle-list { - position:relative; -} - -#side-nav .toggle-list ul { - margin:0; - display:none; -} - -#side-nav .toggle-list div { - display:block; -} - -#index-links .selected { - background-color: #fff; - color: #000; - font-weight:normal; - text-decoration:none; -} - -#index-links { - padding:7px 0 4px 10px; -} - -/* nav tree */ - -#nav-tree ul { - padding:5px 0 1.5em; -} - -#side-nav #nav-tree ul li a, -#side-nav #nav-tree ul li span.no-children { - padding: 0 0 0 0; - margin: 0; -} - -#nav-tree .plus { - margin: 0 3px 0 0; -} - -#nav-tree ul ul { - list-style: none; - margin: 0; - padding: 0 0 0 0; -} - -#nav-tree ul li { - margin: 0; - padding: 0 0 0 0; - white-space: nowrap; -} - -#nav-tree .children_ul { - margin:0; -} - -#nav-tree a.nolink { - color: black; - text-decoration: none; -} - -#nav-tree span.label { - width: 100%; -} - -#nav-tree { - overflow-x: auto; - overflow-y: scroll; -} - -#nav-swap { - font-size:10px; - line-height:10px; - margin-left:1em; - text-decoration:none; - display:block; -} - -#tree-link { - -} - -/* DOCUMENT BODY */ - -#doc-content { - overflow:auto; -} - -#jd-header { - background-color: #E2E2E2; - padding: 7px 15px; -} - -#jd-header h1 { - margin: 0 0 10px; - font-size:1.7em; -} - -#jd-header .crumb { - font-size:.9em; - line-height:1em; - color:#777; -} - -#jd-header .crumb a, -#jd-header .crumb a:visited { - text-decoration:none; - color:#777; -} - -#jd-header .crumb a:hover { - text-decoration:underline; -} - -#jd-header table { - margin:0; - padding:0; -} - -#jd-header td { - border:none; - padding:0; - vertical-align:top; -} - -#jd-header.guide-header { - background-color:#fff; - color:#435a6e; - height:50px; -} - -#jd-descr { - position:relative; -} - -/* summary tables for reference pages */ -.jd-sumtable { - margin: .5em 1em 1em 1em; - width:95%; /* consistent table widths; within IE's quirks */ - font-size:.9em; -} - -.jd-sumtable a { - text-decoration:none; -} - -.jd-sumtable a:hover { - text-decoration:underline; -} - -/* the link inside a sumtable for "Show All/Hide All" */ -.toggle-all { - display:block; - float:right; - font-weight:normal; - font-size:0.9em; -} - -/* adjustments for in/direct subclasses tables */ -.jd-sumtable-subclasses { - margin: 1em 0 0 0; - max-width:968px; -} - -/* extra space between end of method name and open-paren */ -.sympad { - margin-right: 2px; -} - -/* right alignment for the return type in sumtable */ -.jd-sumtable .jd-typecol { - text-align:right; -} - -/* adjustments for the expando table-in-table */ -.jd-sumtable-expando { - margin:.5em 0; - padding:0; -} - -/* a div that holds a short description */ -.jd-descrdiv { - padding:3px 1em 0 1em; - margin:0; - border:0; -} - -/* page-top-right container for reference pages (holds -links to summary tables) */ -#api-info-block { - font-size:.8em; - padding:6px 10px; - font-weight:normal; - float:right; - text-align:right; - color:#999; - max-width:70%; -} - -#api-level-toggle { - padding:0 10px; - font-size:11px; - float:right; -} - -#api-level-toggle label.disabled { - color:#999; -} - -div.api-level { - font-size:.8em; - font-weight:normal; - color:#999; - float:right; - padding:0 7px 0; - margin-top:-25px; -} - -#api-info-block div.api-level { - font-size:1.3em; - font-weight:bold; - float:none; - color:#444; - padding:0; - margin:0; -} - -/* Force link colors for IE6 */ -div.api-level a { - color:#999; -} -#api-info-block div.api-level a:link { - color:#444; -} -#api-level-toggle a { - color:#999; -} - -div#deprecatedSticker { - display:none; - z-index:99; - position:fixed; - right:15px; - top:114px; - margin:0; - padding:1em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-5px 5px 10px #ccc; - -moz-box-shadow:-5px 5px 10px #ccc; - -webkit-box-shadow:-5px 5px 10px #ccc; -} - -div#naMessage { - display:none; - width:555px; - height:0; - margin:0 auto; -} - -div#naMessage div { - z-index:99; - width:450px; - position:fixed; - margin:50px 0; - padding:4em 4em 3em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-10px 10px 40px #888; - -moz-box-shadow:-10px 10px 40px #888; - -webkit-box-shadow:-10px 10px 40px #888; -} -/* IE6 can't position fixed */ -* html div#naMessage div { position:absolute; } - -div#naMessage strong { - font-size:1.1em; -} - -.absent, -.absent a:link, -.absent a:visited, -.absent a:hover, -.absent * { - color:#bbb !important; - cursor:default !important; - text-decoration:none !important; -} - -#api-level-toggle a, -.api-level a { - color:inherit; - text-decoration:none; -} - -#api-level-toggle a:hover, -.api-level a:hover { - color:inherit; - text-decoration:underline !important; - cursor:pointer !important; -} - -#side-nav li.absent.selected, -#side-nav li.absent.selected *, -#side-nav div.label.absent.selected, -#side-nav div.label.absent.selected * { - background-color:#eaeaea !important; -} -/* IE6 quirk (won't chain classes, so just keep background blue) */ -* html #side-nav li.selected, -* html #side-nav li.selected *, -* html #side-nav div.label.selected, -* html #side-nav div.label.selected * { - background-color: #435a6e !important; -} - - -.absent h4.jd-details-title, -.absent h4.jd-details-title * { - background-color:#f6f6f6 !important; -} - -.absent img { - opacity: .3; - filter: alpha(opacity=30); - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; -} - - -/* applies to a div containing links to summary tables */ -.sum-details-links { - padding:0; - font-weight:normal; -} - -.sum-details-links a { - text-decoration:none; -} - -.sum-details-links a:hover { - text-decoration:underline; -} - - -/* inheritance table */ -.jd-inheritance-table { - border-spacing:0; - margin:0; - padding:0; - font-size:.9em; -} -.jd-inheritance-table td { - border: none; - margin: 0; - padding: 0; -} -.jd-inheritance-table .jd-inheritance-space { - font-weight:bold; - width:1em; -} -.jd-inheritance-table .jd-inheritance-interface-cell { - padding-left: 17px; -} - -#jd-content { - padding: 18px 15px; -} - -hr { - background-color:#ccc; - border-color:#fff; - margin:2em 0 1em; -} - -/* DOC CLASSES */ - -#jd-content h1 { -/*sdk page*/ - font-size:1.6em; - color:#336666; - margin:0 0 .5em; -} - -#jd-content h2 { - font-size:1.45em; - color:#111; - border-top:2px solid #ccc; - padding: .5em 0 0; - margin: 2em 0 1em 0; -} - -#jd-content h3 { - font-size:1.3em; - color:#3a3a3a; - padding: 0; - margin: 1.5em 0 .65em 0; -} - -#jd-content h4 { - font-size:1.1em; - color:#3a3a3a; - padding: 0; - margin: 1.25em 0 .65em 0; -} - -#jd-content h5 { - font-size:1.0em; - color:#3a3a3a; - padding: 0; - margin: 1em 0 .65em 0; -} - -#jd-content .small-header { - font-size:1em; - color:#000; - font-weight:bold; - border:none; - padding:0; - margin:1em 0 .5em; - position:inherit; -} - -#jd-content table { - margin: 0 0 1em 1em; -} - -#jd-content img { - margin: 0 0 1em 1em; -} - -#jd-content li img, -#jd-content dd img { - margin:.5em 0 .5em 1em; -} - -.nolist { - list-style:none; - padding:0; - margin:0 0 1em 1em; -} - -.nolist li { - padding:0 0 2px; - margin:0; -} - -h4 .normal { - font-size:.9em; - font-weight:normal; -} - -.caps { - font-variant:small-caps; - font-size:1.2em; -} - -dl.tag-list dl.atn-list { - padding:0 0 0 2em; -} - -.jd-details { -/* border:1px solid #669999; - padding:4px; */ - margin:0 0 1em; -} - -/* API reference: a container for the -.tagdata blocks that make up the detailed -description */ -.jd-details-descr { - padding:0; - margin:.5em .25em; -} - -/* API reference: a block containing -a detailed description, a params table, -seealso list, etc */ -.jd-tagdata { - margin:.5em 1em; -} - -.jd-tagdata p { - margin:0 0 1em 1em; -} - -/* API reference: adjustments to -the detailed description block */ -.jd-tagdescr { - margin:.25em 0 .75em 0; - line-height:1em; -} - -.jd-tagdescr p { - margin:.5em 0; - padding:0; - -} - -.jd-tagdescr ol, -.jd-tagdescr ul { - margin:0 2.5em; - padding:0; -} - -.jd-tagdescr table, -.jd-tagdescr img { - margin:.25em 1em; -} - -.jd-tagdescr li { -margin:0 0 .25em 0; -padding:0; -} - -/* API reference: heading marking -the details section for constants, -attrs, methods, etc. */ -h4.jd-details-title { - font-size:1.15em; - background-color: #E2E2E2; - margin:1.5em 0 .6em; - padding:3px 95px 3px 3px; /* room for api-level */ -} - -h4.jd-tagtitle { - margin:0; -} - -/* API reference: heading for "Parameters", "See Also", etc., -in details sections */ -h5.jd-tagtitle { - margin:0 0 .25em 0; - font-size:1em; -} - -.jd-tagtable { - margin:0; -} - -.jd-tagtable td, -.jd-tagtable th { - border:none; - background-color:#fff; - vertical-align:top; - font-weight:normal; - padding:2px 10px; -} - -.jd-tagtable th { - font-style:italic; -} - -#jd-content table h2 { - background-color: #d6d6d6; - font-size: 1.1em; - margin:0 0 10px; - padding:5px; - left:0; - width:auto; -} - -div.design-announce { - border-top:1px solid #167c80; - border-bottom:1px solid #167c80; - padding:5px 10px 10px 55px; - margin:2em 0; - background:url('images/icon_design.png') 5px 13px no-repeat; -} - -div.design-announce p { - margin: .5em 0 0 0; -} - -div.special { - padding: .5em 1em 1em 1em; - margin: 0 0 1em; - background-color: #DAF3FC; - border:1px solid #d3ecf5; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; -} - -div.special p { - margin: .5em 0 0 0; -} - -div.special ol { - margin: 0; -} - -div.special ol li { - margin: 0; - padding: 0; -} - -#jd-content div.special h2, -#jd-content div.special h3 { - color:#669999; - font-size:1.2em; - border:none; - margin:0 0 .5em; - padding:0; -} - -#jd-content div.special.reference h2, -#jd-content div.special.reference h3, -#jd-content div.special.reference h4 { - color:#000; - font-size:1em; - border:none; - font-weight:bold; - margin:.5em 0; - padding:0; -} - -p.note, div.note, -p.caution, div.caution, -p.warning, div.warning { - margin: 1em; - padding: 0 0 0 .5em; - border-left: 4px solid; -} - -p.special-note, -div.special-note { - background-color:#EBF3DB; - padding:10px 20px; - margin:0 0 1em; -} - -p.note, -div.note { - border-color: #99aacc; -} - -p.warning, -div.warning { - border-color: #aa0033; -} - -p.caution, -div.caution { - border-color: #ffcf00; -} - -li .note, -li .caution, -li .warning { - margin: .5em 0 0 0; - padding: .2em .5em .2em .9em; -} - -/* Makes sure the first paragraph does not add top-whitespace within the box*/ -li .note>p:first-child, -li .caution>p:first-child, -li .warning>p:first-child { - margin-top:0; - padding-top:0; -} - -dl.xml dt { - font-variant:small-caps; - font-size:1.2em; -} - -dl.xml dl { - padding:0; -} - -dl.xml dl dt { - font-variant:normal; - font-size:1em; -} - -.listhead li { - font-weight: bold; -} - -.listhead li *, /*ie*/.listhead li li { - font-weight: normal; -} - -ol.no-style, -ul.no-style { - list-style:none; - padding-left:1em; -} - -.new, -.new-child { - font-size: .78em; - font-weight: bold; - color: #ff3d3d; - text-decoration: none; - vertical-align:top; - line-height:.9em; - white-space:nowrap; -} - -.toggle-list.open .new-child { - display:none; -} - -pre.classic { - background-color:transparent; - border:none; - padding:0; -} - -p.img-caption { - margin: -0.5em 0 1em 1em; /* matches default img left-margin */ -} - -div.figure { - float:right; - clear:right; - margin:1em 0 0 0; - padding:0 0 0 3em; - background-color:#fff; - /* width must be defined w/ an inline style matching the image width */ -} - -#jd-content -div.figure img { - margin: 0 0 1em; -} - -div.figure p.img-caption { - margin: -0.5em 0 1em 0; -} - -p.table-caption { - margin: 0 0 0.5em 1em; /* matches default table left-margin */ -} - - -/* toggle for misc content (such as long sample code) - see toggleContent() script in android-developer-docs.js */ -.toggle-content.closed .toggle-content-toggleme { - display:none; -} - -.toggle-content a[href="#"] { - text-decoration:none; - color:inherit; -} - -.toggle-content-toggleme { - padding-bottom:1px; /* fixes animation bounce due to margins */ -} - -#jd-content .toggle-content img.toggle-content-img { - margin:0; -} - - -/* BEGIN quickview sidebar element styles */ - -#qv-wrapper { - float: right; - width:310px; /* +35px padding */ - background-color:#fff; - margin:-48px 0 2px 0; - padding:0 0 20px 35px; -} - -#qv { - background-color:#fff; - border:4px solid #dee8f1; - margin:0; - padding:0 5px 5px; - width:292px; /* +10px padding; +8px border */ - font-size:.9em; -} - -#qv ol { - list-style:none; - padding: 0; -} - -#qv ol ol{ - list-style:none; - padding: 0 0 0 12px; - margin:0; -} - -#qv ul { - padding: 0 10px 0 2em; -} - -#qv li { - padding: 0 10px 3px; - line-height: 1.2em; -} - -#qv li li { - padding: 3px 10px 0; -} - -#qv ul li { - padding: 0 10px 0 0; -} - -#qv li.selected a { - color:#555; - text-decoration:none; -} - -#qv a, -#qv a code { - color:#cc6600; -} - -#qv p { - margin:8px 0 0; - padding:0 10px; -} - -#jd-content #qv h2 { - font-size:1.05em; - font-weight:bold; - margin:12px 0 .25em 0; - padding:0 10px; - background-color:transparent; - color:#7BB026; - border:none; - left:0; - z-index:1; -} - -#qv-extra #rule { - padding: 0 10px; - margin: 0; -} - -#qv-sub-rule { - padding: 5px 15px 10px; - margin: 0; -} - -#jd-content -#qv-sub-rule h2 { - margin: 0 0 .5em 0; -} - -/* END quickview sidebar element styles */ - -/* Begin sidebox sidebar element styles */ - -.sidebox-wrapper { - float:right; - clear:right; - width:310px; /* +35px padding */ - background-color:#fff; - margin:0; - padding:0 0 20px 35px; -} - -.sidebox { - border-left:1px solid #dee8f1; - background-color:#ffffee; - margin:0; - padding:8px 12px; - font-size:0.9em; - width:285px; /* +24px padding; +1px border */ -} - -.sidebox p { - margin-bottom: .75em; -} - -.sidebox ul { - padding: 0 0 0 1.5em; -} - -.sidebox li ul { - margin-top:0; - margin-bottom:.1em; -} - -.sidebox li { -padding:0 0 0 0em; -} - -#jd-content .sidebox h2, -#jd-content .sidebox h3, -#jd-content .sidebox h4, -#jd-content .sidebox h5 { - border:none; - font-size:1em; - margin:0; - padding:0 0 8px; - left:0; - z-index:0; -} - -.sidebox hr { - background-color:#ccc; - border:none; -} - -/* End sidebox sidebar element styles */ - -/* BEGIN developer training bar styles */ - -div#tb-wrapper { - float: right; - clear:right; - width:380px; /* +25px padding = 405 */ - background-color:#fff; - margin:0 0 2px 0; - padding:0 0 20px 25px; -} - -div#tb { - margin:0; - padding:0 15px; - width:350px; /* +15px padding = 380 */ - font-size:.9em; - background:#e9e9e9; - border:1px solid #aaa; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - overflow:auto; -} - -div#tb h2 { - font-size:1.3em; - font-weight:bold; - margin:1em 0; - padding:0; - background-color:transparent; - border:none; - clear:both; -} - -div.download-box a.button { - color: #069; - font-size:1.1em; - font-weight:bold; - text-decoration:none; - height:27px; - line-height:27px; - text-align:center; - padding:5px 8px; - background-color: #fff; - border: 1px solid #aaa; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; -} - -div.download-box a.button:hover { - border-color: #09C; - background-color: #4CADCB; - background-image: -webkit-gradient(linear,left top,left bottom,from(#5dbcd9),to(#4cadcb)); - background-image: -webkit-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -moz-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -ms-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: -o-linear-gradient(top,#5dbcd9,#4cadcb); - background-image: linear-gradient(top,#5dbcd9,#4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9',EndColorStr='#4cadcb'); - color: #fff; -} - -div.download-box a.button:active { - background-color: #1E799A; - background-image: none; - border-color: #30B7E6; -} - -div.download-box p.filename { - font-size:0.85em; - color:#888; - margin:4px 0 1em 10px; -} - -/* End developer training bar */ - -/* Training nav bar (previous/next) */ - -div.training-nav-top { - float: right; - width:380px; /* +25px padding = 405 */ - margin:-58px 0 0 0; - padding:0 0 20px 25px; -} - -div.training-nav-bottom { - padding:1px; /* for weird FF bug (scrollbar appears) */ - margin:3em 0; - overflow:auto; -} - -div.training-nav-button-next a, -div.training-nav-button-previous a { - display:block; - width:160px; - height:55px; - padding:4px 7px; - border:1px solid #aaa; - border-radius:5px; - -moz-border-radius:5px; - -webkit-border-radius:5px; - text-decoration:none; - font-weight:bold; -} - -div.training-nav-button-next a:hover, -div.training-nav-button-previous a:hover { - border:1px solid #069; /* match link color */ -} - -div.training-nav-button-next a:active, -div.training-nav-button-previous a:active { - border:1px solid #f00; /* match link color */ -} - -div.training-nav-button-previous { - float:left; - text-align:left; -} - -div.training-nav-button-next { - float:right; - text-align:right; -} - -span.training-nav-button-title { - display:block; - font-size:.85em; - font-weight:normal; - line-height:1.3em; - margin:.5em 0 0; -} - -/* End training nav bar */ - -/* BEGIN image and caption styles (originally for UI Guidelines docs) */ - -table.image-caption { - padding:0; - margin:.5em 0; - border:0; -} - -td.image-caption-i { - font-size:92%; - padding:0 5px; - margin:0; - border:0; -} - -td.image-caption-i img { - padding:0 1em; - margin:0; -} - -.image-list { - width:24px; - text-align:center; -} - -td.image-caption-c { - font-size:92%; - padding:1em 2px 2px 2px; - margin:0; - border:0; - width:350px; -} - -.grad-rule-top { -background-image:url(images/grad-rule-qv.png); -background-repeat:no-repeat; -padding-top:1em; -margin-top:0; -} - -.image-caption-nested { - margin-top:0; - padding:0 0 0 1em; -} - -.image-caption-nested td { - padding:0 4px 2px 0; - margin:0; - border:0; -} - -/* END image and caption styles */ - -/* table of contents */ - -ol.toc { - margin: 0 0 1em 0; - padding: 0; - list-style: none; - font-size:95%; -} - -ol.toc li { - font-weight: bold; - margin: 0 0 .5em 1em; - padding: 0; -} - -ol.toc li p { - font-weight: normal; -} - -ol.toc li ol { - margin: 0; - padding: 0; -} - -ol.toc li li { - padding: 0; - margin: 0 0 0 1em; - font-weight: normal; - list-style: none; -} - -table ol.toc { - margin-left: 0; -} - -.columns td { - padding:0 5px; - border:none; -} - -/* link table */ -.jd-linktable { - margin: 0 0 1em; - border-bottom: 1px solid #888; -} -.jd-linktable th, -.jd-linktable td { - padding: 3px 5px; - vertical-align: top; - text-align: left; - border:none; -} -.jd-linktable tr { - background-color: #fff; -} -.jd-linktable td { - border-top: 1px solid #888; - background-color: inherit; -} -.jd-linktable td p { - padding: 0 0 5px; -} -.jd-linktable .jd-linkcol { -} -.jd-linktable .jd-descrcol { -} -.jd-linktable .jd-typecol { - text-align:right; -} -.jd-linktable .jd-valcol { -} -.jd-linktable .jd-commentrow { - border-top:none; - padding-left:25px; -} -.jd-deprecated-warning { - margin-top: 0; - margin-bottom: 10px; -} - -tr.alt-color { - background-color: #f6f6f6; -} - -/* expando trigger */ -#jd-content .jd-expando-trigger-img { - margin:0; -} - -/* jd-expando */ -.jd-inheritedlinks { - padding:0 0 0 13px -} - -/* SDK PAGE */ -table.download tr { - background-color:#d9d9d9; -} - -table.download tr.alt-color { - background-color:#ededed; -} - -table.download td, -table.download th { - border:2px solid #fff; - padding:10px 5px; -} - -table.download th { - background-color:#6d8293; - color:#fff; -} - -/* INLAY 180 COPY and 240PX EXTENSION */ -/* modified to 43px so that all browsers eliminate the package panel h-scroll */ -.g-tpl-240 .g-unit, -.g-unit .g-tpl-240 .g-unit, -.g-unit .g-unit .g-tpl-240 .g-unit { - display: block; - margin: 0 0 0 243px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-240 .g-first, -.g-unit .g-tpl-240 .g-first, -.g-tpl-240 .g-first { - display: block; - margin: 0; - width: 243px; - float: left; -} -/* 240px alt */ -.g-tpl-240-alt .g-unit, -.g-unit .g-tpl-240-alt .g-unit, -.g-unit .g-unit .g-tpl-240-alt .g-unit { - display: block; - margin: 0 243px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-240-alt .g-first, -.g-unit .g-tpl-240-alt .g-first, -.g-tpl-240-alt .g-first { - display: block; - margin: 0; - width: 243px; - float: right; -} - -/* 200px */ -.g-tpl-200 .g-unit, -.g-unit .g-tpl-200 .g-unit, -.g-unit .g-unit .g-tpl-200 .g-unit { - display: block; - margin: 0 0 0 200px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-200 .g-first, -.g-unit .g-tpl-200 .g-first, -.g-tpl-200 .g-first { - display: block; - margin: 0; - width: 200px; - float: left; -} -/* 200px alt */ -.g-tpl-200-alt .g-unit, -.g-unit .g-tpl-200-alt .g-unit, -.g-unit .g-unit .g-tpl-200-alt .g-unit { - display: block; - margin: 0 200px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-200-alt .g-first, -.g-unit .g-tpl-200-alt .g-first, -.g-tpl-200-alt .g-first { - display: block; - margin: 0; - width: 200px; - float: right; -} - -/* 190px */ -.g-tpl-190 .g-unit, -.g-unit .g-tpl-190 .g-unit, -.g-unit .g-unit .g-tpl-190 .g-unit { - display: block; - margin: 0 0 0 190px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-190 .g-first, -.g-unit .g-tpl-190 .g-first, -.g-tpl-190 .g-first { - display: block; - margin: 0; - width: 190px; - float: left; -} -/* 190px alt */ -.g-tpl-190-alt .g-unit, -.g-unit .g-tpl-190-alt .g-unit, -.g-unit .g-unit .g-tpl-190-alt .g-unit { - display: block; - margin: 0 190px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-190-alt .g-first, -.g-unit .g-tpl-190-alt .g-first, -.g-tpl-190-alt .g-first { - display: block; - margin: 0; - width: 190px; - float: right; -} - -/* 180px */ -.g-tpl-180 .g-unit, -.g-unit .g-tpl-180 .g-unit, -.g-unit .g-unit .g-tpl-180 .g-unit { - display: block; - margin: 0 0 0 180px; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-180 .g-first, -.g-unit .g-tpl-180 .g-first, -.g-tpl-180 .g-first { - display: block; - margin: 0; - width: 180px; - float: left; -} -/* 180px alt */ -.g-tpl-180-alt .g-unit, -.g-unit .g-tpl-180-alt .g-unit, -.g-unit .g-unit .g-tpl-180-alt .g-unit { - display: block; - margin: 0 180px 0 0; - width: auto; - float: none; -} -.g-unit .g-unit .g-tpl-180-alt .g-first, -.g-unit .g-tpl-180-alt .g-first, -.g-tpl-180-alt .g-first { - display: block; - margin: 0; - width: 180px; - float: right; -} - - -/* JQUERY RESIZABLE STYLES */ -.ui-resizable { position: relative; } -.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; } -.ui-resizable .ui-resizable-handle { display: block; } -body .ui-resizable-disabled .ui-resizable-handle { display: none; } -body .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-s { cursor: s-resize; height: 6px; width: 100%; bottom: 0px; left: 0px; - background: transparent url("images/resizable-s2.gif") repeat scroll center top; } -.ui-resizable-e { cursor: e-resize; width: 6px; right: 0px; top: 0px; height: 100%; - background: transparent url("images/resizable-e2.gif") repeat scroll right center; } - -@media print { - - body { - overflow:visible; - } - - #header { - height:60px; - } - - #headerLeft { - padding:0; - } - - #header-tabs, - #headerRight, - #side-nav, - #api-info-block { - display:none; - } - - #body-content { - position:inherit; - } - - #doc-content { - margin-left:0 !important; - height:auto !important; - width:auto !important; - overflow:inherit; - display:inline; - } - - #jd-header { - padding:10px 0; - } - - #jd-content { - padding:15px 0 0; - } - - #footer { - float:none; - margin:2em 0 0; - } - - h4.jd-details-title { - border-bottom:1px solid #666; - } - - pre { - /* these allow lines to break (if there's a white space) */ - overflow: visible; - text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ - white-space: pre-wrap; /* CSS3 */ - word-wrap: break-word; /* IE 5.5+ */ - } - - h1, h2, h3, h4, h5, h6 { - page-break-after: avoid; - } - - table, img { - page-break-inside: avoid; - } -} diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/css/default.css b/build/tools/droiddoc/templates-lineage-sdk/assets/css/default.css deleted file mode 100644 index 7e0926fc..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/css/default.css +++ /dev/null @@ -1,7439 +0,0 @@ -/* color definitions */ -/* 16 column layout */ -/* clearfix idiom */ -/* common mixins */ -/* page layout + top-level styles */ -::selection { - background-color: #167c80; - color: #fff; } -::-webkit-selection { - background-color: #167c80; - color: #fff; } -::-moz-selection { - background-color: #167c80; - color: #fff; } - -html, body { - height: 100%; - margin: 0; - padding: 0; - background-color:#F9F9F9; - -webkit-font-smoothing: antialiased; - /* prevent subpixel antialiasing, which thickens the text */ - /* text-rendering: optimizeLegibility; */ - /* turned off ligatures due to bug 5945455 */ } - -body { - color: #222; - font: 14px/19px Roboto, sans-serif; - font-weight: 400; - letter-spacing:.1; - padding:0 10px; } - -#page-container { - width: 940px; - margin: 0 40px; } - -#page-header { - height: 80px; - margin-bottom: 20px; - font-size: 48px; - line-height: 48px; - font-weight: 100; - padding-left: 10px; } - #page-header a { - display: block; - position: relative; - top: 20px; - text-decoration: none; - color: #555555 !important; } - -#main-row { - display: inline-block; } - #main-row:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; } - * html #main-row { - height: 1px; } - -#page-footer { - margin-left: 190px; - margin-top: 80px; - color: #999999; - padding-bottom: 40px; - font-size: 12px; - line-height: 15px; } - #page-footer a { - color: #777777; } - #page-footer #copyright { - margin-bottom: 10px; } - -#nav-container { - width: 160px; - min-height: 10px; - margin-right: 20px; - float: left; } - -#nav { - margin:0; - padding:0 0 30px; -} - -#side-nav { - min-height:5px; /* silly way to avoid doc floating left when nav goes fixed */ - margin-bottom:1px; -} -#devdoc-nav { - outline:none; - width:auto; - margin: 20px 0 0; } - -#devdoc-nav h2 { - border:0; -} - -#devdoc-nav.fixed { - position: fixed; - margin:0; - top: 65px; /* sticky-header height + 20px gutter */ -} - -#devdoc-nav span.small { - font-size:12px; - font-weight:normal; -} - -#content { - width: 760px; - float: left; } - -a:hover, -acronym:hover { - color: #0C4446 !important; } - -a:focus, -a:active { - color: #167c80 !important; } - -a.external-link { - background:url('../images/styles/open_new_page.png') no-repeat 100% 50%; - padding-right:16px; -} - -img { - border: none; } -#jd-content img { - margin-bottom:15px; -} - -ul { - margin: 0; - padding: 0; } - -strong { - font-weight: 500; } - -em { - font-style: italic; } - -acronym, -.tooltip-link { - border-bottom: 1px dotted #555555; - cursor: help; } - -acronym:hover, -.tooltip-link:hover { - color: #0C4446; - border-bottom-color: #0C4446; } - -img.with-shadow, -video.with-shadow { - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); } - -/* disclosures mixin */ -/* content layout */ -.layout-content-row { - display: inline-block; - margin-bottom: 10px; } - * html .layout-content-row { - height: 1px; } - -.layout-content-col { - float: left; - margin-left: 20px; } - .layout-content-col:first-child { - margin-left: 0; } - .layout-content-col h3, - .layout-content-col h4 { - margin-top:0; } - -.layout-content-col.span-1 { - width: 40px; } - -.layout-content-col.span-2 { - width: 100px; } - -.layout-content-col.span-3 { - width: 160px; } - -.layout-content-col.span-4 { - width: 220px; } - -.layout-content-col.span-5 { - width: 280px; } - -.layout-content-col.span-6 { - width: 340px; } - -.layout-content-col.span-7 { - width: 400px; } - -.layout-content-col.span-8 { - width: 460px; } - -.layout-content-col.span-9 { - width: 520px; } - -.layout-content-col.span-10 { - width: 580px; } - -.layout-content-col.span-11 { - width: 640px; } - -.layout-content-col.span-12 { - width: 700px; } - -.layout-content-col.span-13 { - width: 760px; } - -.vspace.size-1 { - height: 10px; } - -.vspace.size-2 { - height: 20px; } - -.vspace.size-3 { - height: 30px; } - -.vspace.size-4 { - height: 40px; } - -.vspace.size-5 { - height: 50px; } - -.vspace.size-6 { - height: 60px; } - -.vspace.size-7 { - height: 70px; } - -.vspace.size-8 { - height: 80px; } - -.vspace.size-9 { - height: 90px; } - -.vspace.size-10 { - height: 100px; } - -.vspace.size-11 { - height: 110px; } - -.vspace.size-12 { - height: 120px; } - -.vspace.size-13 { - height: 130px; } - -.vspace.size-14 { - height: 140px; } - -.vspace.size-15 { - height: 150px; } - -.vspace.size-16 { - height: 160px; } - -/* nav */ -#nav { - /* section header divs */ - /* expanded section header divs */ - /* sublinks */ } - #nav li { - list-style-type: none; - font-size: 14px; - margin:0; - padding:0; - line-height: 15px; } - #nav a { - color: #555555; - text-decoration: none; - word-wrap:break-word; } - #nav .nav-section-header { - position: relative; - margin-bottom: 1px; - padding: 0 30px 0 0; } - #nav li.selected a, #nav li.selected > .nav-section-header > a { - color: #09C; - } - #nav li.selected ul li a { - /* don't highlight child items */ - color: #555555; } - #nav .nav-section .nav-section .nav-section-header { - /* no white line between second level sections */ - margin-bottom: 0; } - /* section header links */ - #nav > li > div > a { - display: block; - color: #333333; - font-weight: 500; - padding: 10px 0 10px 10px; } - #nav .nav-section-header:after { - content: ''; - background: transparent url(../images/styles/disclosure_down.png) no-repeat scroll 50% 50%; - width: 34px; - height: 34px; - display: block; - position: absolute; - top: 0; - right: 0; } - #nav .nav-section-header.empty { - padding:0; } - #nav .nav-section-header.empty:after { - display: none; } - /* nested nav headers */ - #nav .nav-section .nav-section { - position: relative; - padding: 0; - margin: 0; } - #nav .nav-section li a { - /* first gen child (2nd level li) */ - display:block; - font-weight: normal; - text-transform: none; - padding: 7px 5px 7px 10px; - } - #nav .nav-section li li a { - /* second gen child (3rd level li) */ - padding: 5px 5px 5px 10px; - } - #nav li.expanded .nav-section-header { - background:#e9e9e9; - background: rgba(0, 0, 0, 0.05); } - #nav li.expanded li .nav-section-header { - background: transparent; } - #nav li.expanded li ul { - /* 3rd level ul */ - padding:0 0 0 10px; - } - #nav li.expanded > .nav-section-header:after { - content: ''; - background: transparent url(../images/styles/disclosure_up.png) no-repeat scroll 50% 50%; - width: 34px; - height: 34px; } - #nav li.expanded li ul.tree-list-children { - padding: 0; - } - #nav li.expanded li ul.tree-list-children .tree-list-children { - padding:0 0 0 10px; - } - #nav li span.tree-list-subtitle { - display:inline-block; - padding:5px 0 0 10px; - color:#555; - text-transform:uppercase; - font-size:12px; - } - #nav li span.tree-list-subtitle:before { - content: '—'; - } - #nav li span.tree-list-subtitle:after { - content: '—'; - } - #nav li span.tree-list-subtitle.package { - padding-top:15px; - cursor:default; - } - #nav li span.tree-list-subtitle.package:before { - content: ''; - } - #nav li span.tree-list-subtitle.package:after { - content: ''; - } - #nav li ul.tree-list-children.classes { - padding-left:10px; - } - #nav li ul { - display:none; - overflow: hidden; - margin: 0; } - #nav li ul.animate-height-in { - -webkit-transition: height 0.25s ease-in; - -moz-transition: height 0.25s ease-in; - transition: height 0.25s ease-in; } - #nav li ul.animate-height-out { - -webkit-transition: height 0.25s ease-out; - -moz-transition: height 0.25s ease-out; - transition: height 0.25s ease-out; } - #nav li ul li { - padding: 0; } - #nav li li li { - padding: 0; } - #nav li.expanded ul { - } - #nav li ul > li { - padding:0; - } - #nav li ul > li:last-child { - padding-bottom:5px; - } - #nav li ul.tree-list-children > li:last-child { - padding-bottom:0; - } - #nav li.expanded ul > li { - background:#efefef; - background: rgba(0, 0, 0, 0.03); } - #nav li.expanded ul > li li { - background:inherit; } - #nav li ul.tree-list-children ul { - display:block; } - -#nav.samples-nav li li li { - font-size:13px; -} -#nav.samples-nav li li li a { - padding-top:3px; - padding-bottom:3px; -} -#nav.samples-nav li li ul > li:last-child { - padding-bottom:3px; -} - -.new, -.new-child { - font-size: .78em; - font-weight: bold; - color: #ff3d3d; - vertical-align:top; - white-space:nowrap; -} - -/* content header */ -.content-header { - height: 30px; - margin:36px 0 23px; /* same as h1 */ - padding:0 0 10px;} /* same as h1 */ -.content-header.just-links { - margin-bottom:0; - padding-bottom:0;} - -.content-header h1 { - margin:0; - padding:0; - width: 700px; -} -.content-header > div:first-child { - height:1px; /* set fixed height for the header div to ensure the - next/prev links align with toc on training classes */ -} - -.content-footer { - border-top: 1px solid #ccc; - margin-top: 10px; - padding-top:10px; - width:100%; } - -.content-footer .col-9 { - margin-left:0; -} -.content-footer .col-4 { - margin-right:0; -} -.content-footer.wrap { - width:940px; -} -.content-footer .plus-container { - margin:5px 0 0; - text-align:right; - float:right; -} - -a.back-link { - text-decoration: none; - text-transform: uppercase; -} - -.content-header .paging-links { - margin-top:-25px; -} -.paging-links { - position: relative; - height:30px; } - .paging-links a { - position: absolute; } - .paging-links a, - .training-nav-top a { - color: #555555; - text-decoration: none; - text-transform: uppercase; } - .paging-links .prev-page-link:before, - .training-nav-top .prev-page-link:before, - a.back-link:before { - content: ''; - background: transparent url(../images/styles/disclosure_left.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-right: 5px; } - .training-nav-top .next-page-link, - .training-nav-top .start-class-link, - .training-nav-top .start-course-link { - right: 10px; } - .paging-links .prev-page-link { - left: -15px; } - .paging-links .next-page-link { - right: 0; } - .next-page-link:after, - .start-class-link:after, - .start-course-link:after, - .next-class-link:after, - .go-link:after { - content: ''; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-left: 5px; } - .prev-page-link.inline:before { - content: none; } - .next-page-link.inline:after { - content: none; } - - .content-footer .paging-links .next-page-link { - left:0; - } - - .training-nav-top a { - display:block; - float:left; - width:122px; - height:28px; - padding: 8px; - line-height:28px; - text-align:center; - border:1px solid #DADADA; - border-bottom:0; - } - - .training-nav-top a.next-page-link { - border-left:0; - width:123px; - } - - .paging-links a.disabled, - .training-nav-top a.disabled, - .content-footer a.disabled { - color:#bbb; - } - - .paging-links a.disabled:hover, - .training-nav-top a.disabled:hover, - .content-footer a.disabled:hover { - cursor:default; - color:#bbb !important; - } - - .training-nav-top a.start-class-link, - .training-nav-top a.start-course-link { - width:262px; - } - - .paging-links a.start-class-link { - width:100%; - } - - /* list of classes on course landing page */ - ol.class-list { - list-style:none; - margin-left:0; - } - ol.class-list>li { - margin:0 0 15px; - padding:5px 0 0; - overflow:hidden; - border-top:1px solid #ccc; - } - ol.class-list li a.title { - font-size:16px; - margin:0; - clear:left; - display:block; - height:32px; - padding:0 4px; - } - ol.class-list li a.title h2 { - color:inherit; - margin:0 0 10px; - display:block; - float:left; - width:675px; - } - ol.class-list li a.title span { - display:none; - float:left; - font-size:18px; - font-weight:bold; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 32px; - } - ol.class-list li a.title:hover { - background:#ddd; - color:#258AAF !important; - } - ol.class-list li a.title:hover span { - display:block; - } - - #jd-content - ol.class-list li img { - float:left; - clear:left; - width:64px; - margin:0 20px 0 0; - } - ol.class-list li p.description { - float:left; - display:block; - width:250px; - margin:0; - } - ol.class-list li p.description.article { - width: 550px; - } - ol.class-list ol { - float:left; - width:320px; - margin:0 0 0 30px; - list-style:none; - margin:0 0 0 20px; - } - ol.class-list div.lessons li { - margin:0 0 6px; - line-height:16px; - } - - - .hide { - display:none !important; - } - - - - /* inner-doc tabs w/ title */ - -div#title-tabs-wrapper { - border-bottom:1px solid #ccc; - margin:20px 0 30px; -} -h1.with-title-tabs { - display:inline-block; - margin:0 0 -1px 0; - padding:0 60px 0 0; - border-bottom:1px solid #F9F9F9; -} -ul#title-tabs { - list-style:none; - padding:0; - height:29px; - margin:0; - font-size:16px; - line-height:26px; - display:inline-block; - vertical-align:bottom; -} -ul#title-tabs li { - display:block; - float:left; - margin-right:40px; - border-bottom: 3px solid transparent; -} -ul#title-tabs li.selected { - border-bottom: 3px solid #93C; -} -ul#title-tabs li a { - color:#333; -} -ul#title-tabs li a:hover, -ul#title-tabs li a:active { - color:#93C !important; -} - - - -/* content body */ -@-webkit-keyframes glowheader { - from { - background-color: #167c80; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #167c80; - border-bottom-color: #167c80; } } - -@-moz-keyframes glowheader { - from { - background-color: #167c80; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #167c80; - border-bottom-color: #167c80; } } - -@keyframes glowheader { - from { - background-color: #167c80; - color: #000; - border-bottom-color: #000; } - - to { - background-color: transparent; - color: #167c80; - border-bottom-color: #167c80; } } - -h1:target, -h2:target, -h3:target { - -webkit-animation-name: glowheader; - -moz-animation-name: glowheader; - animation-name: glowheader; - -webkit-animation-duration: 0.7s; - -moz-animation-duration: 0.7s; - animation-duration: 0.7s; - -webkit-animation-timing-function: ease-out; - -moz-animation-timing-function: ease-out; - animation-timing-function: ease-out; } - -.design ol h4 { - margin-bottom:0; -} -.design ol { - counter-reset: item; } - .design ol>li { - font-size: 14px; - line-height: 20px; - list-style-type: none; - position: relative; } - .design ol>li:before { - content: counter(item) ". "; - counter-increment: item; - position: absolute; - left: -20px; - top: 0; } - .design ol li.value-1:before { - content: "1. "; } - .design ol li.value-2:before { - content: "2. "; } - .design ol li.value-3:before { - content: "3. "; } - .design ol li.value-4:before { - content: "4. "; } - .design ol li.value-5:before { - content: "5. "; } - .design ol li.value-6:before { - content: "6. "; } - .design ol li.value-7:before { - content: "7. "; } - .design ol li.value-8:before { - content: "8. "; } - .design ol li.value-9:before { - content: "9. "; } - .design ol li.value-10:before { - content: "10. "; } -.design .with-callouts ol>li { - list-style-position: inside; - margin-left: 0; } - .design .with-callouts ol>li:before { - display: inline; - left: -20px; - float: left; - width: 17px; - color: #167c80; - font-weight: 500; } -.design .with-callouts ul>li { - list-style-position: outside; } - -/* special list items */ -li.no-bullet { - list-style-type: none !important; } -li.no-bullet *{ - margin:0; } - -.design li.with-icon { - position: relative; - margin-left: 20px; - min-height: 30px; } - .design li.with-icon p { - margin-left: 0 !important; } - .design li.with-icon:before { - position: absolute; - left: -40px; - top: 0; - content: ''; - width: 30px; - height: 30px; } - .design li.with-icon.tablet:before { - background-image: url(../images/styles/ico_phone_tablet.png); } - .design li.with-icon.web:before { - background-image: url(../images/styles/ico_web.png); } - .design li.with-icon.action:before { - background-image: url(../images/styles/ico_action.png); } - .design li.with-icon.use:before { - background-image: url(../images/styles/ico_use.png); } - -/* figures and callouts */ -.figure { - position: relative; } - .figure.pad-below { - margin-bottom: 20px; } - .figure .figure-callout { - position: absolute; - color: #fff; - font-weight: 500; - font-size: 16px; - line-height: 23px; - text-align: center; - background: transparent url(../images/styles/callout.png) no-repeat scroll 50% 50%; - padding-right: 2px; - width: 30px; - height: 29px; - z-index: 1000; } - .figure .figure-callout.top { - top: -9px; } - .figure .figure-callout.right { - right: -5px; } - -.figure-caption { - margin: 0 10px 20px 0; - font-size: 14px; - line-height: 20px; - font-style: italic; } - -/* rows of figures */ -.figure-row { - font-size: 0; - line-height: 0; - /* to prevent space between figures */ } - .figure-row .figure { - display: inline-block; - vertical-align: top; } - .figure-row .figure + .figure { - margin-left: 10px; - /* reintroduce space between figures */ } - -/* video containers */ -.framed-galaxynexus-land-span-13 { - background: transparent url(../images/styles/device_galaxynexus_blank_land_span13.png) no-repeat -scroll top left; - padding: 42px 122px 62px 126px; - overflow: hidden; } - .framed-galaxynexus-land-span-13, .framed-galaxynexus-land-span-13 video, -.framed-galaxynexus-land-span-13 img { - width: 512px; - height: 286px; } - - -.framed-galaxynexus-land-span-8{ - background: transparent url(../images/styles/device_galaxynexus_blank_land_span8.png) no-repeat -scroll top left; - padding: 26px 68px 38px 72px; - overflow: hidden; } - .framed-galaxynexus-land-span-8, .framed-galaxynexus-land-span-8 video, -.framed-galaxynexus-land-span-8 img { - width: 320px; - height: 180px; } - -.framed-galaxynexus-port-span-9 { - background: transparent url(../images/styles/device_galaxynexus_blank_port_span9.png) no-repeat -scroll top left; - padding: 95px 122px 107px 124px; - overflow: hidden; } - .framed-galaxynexus-port-span-9, .framed-galaxynexus-port-span-9 video, -.framed-galaxynexus-port-span-9 img { - width: 274px; - height: 488px; } - -.framed-galaxynexus-port-span-5 { - background: transparent url(../images/styles/device_galaxynexus_blank_port_span5.png) no-repeat -scroll top left; - padding: 75px 31px 76px 33px; - overflow: hidden; } - .framed-galaxynexus-port-span-5, .framed-galaxynexus-port-span-5 video, -.framed-galaxynexus-port-span-5 img { - width: 216px; - height: 384px; } - -.framed-nexus4-port-216 { - background: transparent url(../images/styles/device_nexus4_blank_port_432.png) no-repeat -scroll top left; - background-size:240px 465px; - padding: 52px 12px 52px 12px; - overflow: hidden; } - .framed-nexus4-port-216, .framed-nexus4-port-216 video, - .framed-nexus4-port-216 img { - width: 216px; - height: 360px; } - -.framed-nexus5-port-span-5 { - background: transparent url(../images/styles/device_nexus5_blank_port_span5.png) no-repeat - scroll top left; - padding: 52px 33px 69px 31px; - overflow: hidden; -} - -.framed-nexus5-port-span-5, -.framed-nexus5-port-span-5 video, -.framed-nexus5-port-span-5 img { - width: 216px; - height: 384px; -} - -.framed-nexus5-land-span-13 { - background: transparent url(../images/styles/device_nexus5_blank_land_span13.png) no-repeat scroll top left; - padding: 36px 119px 54px 108px; - overflow: hidden; -} - -.framed-nexus5-land-span-13, -.framed-nexus5-land-span-13 video, -.framed-nexus5-land-span-13 img { - width: 533px; - height: 300px; -} - -.framed-nexus5-port-span-5, -.framed-nexus5-port-span-5 video, -.framed-nexus5-port-span-5 img { - width: 216px; - height: 384px; -} - -/* wear device frames */ - -.framed-wear-square { - background: transparent url(../images/styles/device_wear_square.png) no-repeat scroll top left; - background-size: 302px 302px; - height:222px; - width:222px; - padding:40px; - overflow:hidden; -} - -.framed-wear-square-small { - background: transparent url(../images/styles/device_wear_square_small.png) no-repeat scroll top left; - background-size: 169px 200px; - height:147px; - width:147px; - padding:27px 11px; - overflow:hidden; -} - -#jd-content -.framed-wear-square img { - height:222px; - width: 222px; - padding:0; - margin:0; -} - -#jd-content -.framed-wear-square-small img { - height:147px; - width: 147px; - padding:0; - margin:0; -} - - - - - - -/* landing page disclosures */ -.landing-page-link { - text-decoration: none; - font-weight: 500; - color: #333333; } - .landing-page-link:after { - content: ''; - background: transparent url(../images/styles/disclosure_right.png) no-repeat scroll 50% 50%; - width: 10px; - height: 10px; - display: inline-block; - margin-left: 5px; } - -/* tooltips */ -.tooltip-box { - position: absolute; - background-color: rgba(0, 0, 0, 0.9); - border-radius: 2px; - font-size: 14px; - line-height: 20px; - color: #fff; - padding: 6px 10px; - max-width: 250px; - z-index: 10000; } - .tooltip-box.below:after { - position: absolute; - content: ''; - line-height: 0; - display: block; - top: -10px; - left: 5px; - border: 5px solid transparent; - border-bottom-color: rgba(0, 0, 0, 0.9); } - -/* video note */ -.video-instructions { - margin-top: 10px; - margin-bottom: 10px; } - .video-instructions:before { - content: ''; - background: transparent url(../images/styles/ico_movie_inline.png) no-repeat scroll top left; - display: inline-block; - width: 12px; - height: 12px; - margin-right: 8px; } - .video-instructions:after { - content: 'Click device screen to replay movie.'; } - -/* download buttons */ -.download-button { - display: block; - margin-bottom: 5px; - text-decoration: none; - background-color: #167c80; - color: #fff !important; - font-weight: 500; - box-shadow: 0 1px 1px rgba(0, 0, 0, 0.12); - padding: 6px 12px; - border-radius: 2px; } - .download-button:hover, .download-button:focus { - background-color: #167c80; - color: #fff !important; } - .download-button:active { - background-color: #006699; } - -/* UI tables and other things found in Writing style and Settings pattern */ -.ui-table { - width: 100%; - background-color: #282828; - color: #fff; - border-radius: 2px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25); - border-collapse: separate; } - .ui-table th, - .ui-table td { - padding: 5px 10px; - background-color: inherit; - border:0;} - .ui-table thead th { - font-weight: bold; } - .ui-table tfoot td { - border-top: 1px solid #494949; - border-right: 1px solid #494949; - text-align: center; } - .ui-table tfoot td:last-child { - border-right: 0; } - -.layout-with-list-item-margins { - margin-left: 30px !important; } - -.emulate-content-left-padding { - margin-left: 10px; } - -.do-dont-label { - margin-bottom: 10px; - padding-left: 20px; - background: transparent none no-repeat scroll 0px 3px; } - .do-dont-label.bad { - background-image: url(../images/styles/ico_wrong.png); } - .do-dont-label.good { - background-image: url(../images/styles/ico_good.png); } - - - - - - - - - - - - - - - - - - - -/***** PREVIOUSLY style.css ******************/ - - - - - -@media screen, projection, print { -[dir='rtl'] { - direction: rtl; -} -html { - line-height: 20px; -} -pre, table, input, textarea, code { - font-size: 1em; -} -address, abbr, cite { - font-style: normal; -} -[dir='rtl'] th { - text-align: right; -} -html[lang^=ja] blockquote, html[lang^=ja] q, html[lang^=ko] blockquote, html[lang^=ko] q, -html[lang^=zh] blockquote, html[lang^=zh] q { - font-style: normal; -} -q { - font-style: italic; -} -fieldset, iframe, img { - border: 0; -} -img { - -ms-interpolation-mode: bicubic; - vertical-align: middle; - max-width: 100%; -} -q { - quotes: none; -} -sup, sub { - font-size: 11px; - line-height: 0; -} -} - -@media screen, projection { - -table, fieldset { - margin: 0; -} -h1 { - color:#333; - font-size: 34px; - margin: 36px 0 27px; - padding:0 0 10px; - font-weight:300; -} -h1, h2 { - line-height: 30px; -} -h1.short { - margin-right:320px; -} -h1.short { - margin-right:320px; -} -h1.super { - font-size: 37px; -} -h2 { - color:#333; - font-size: 26px; - margin: 32px 0 20px; - padding:0; - font-weight:300; -} -h3 { - color:#333; - font-size: 21px; - font-weight:400; - margin:21px 0 14px 0; -} -h3, h4 { - line-height: 21px; -} -h4 { - font-size: 18px; - margin: 12px 0; - font-weight:500; -} -h5 { - font-size: 14px; -} -h5, h6 { - margin: 5px 0; -} -h6 { - font-size: 12px; -} -hr { /* applied to the bottom of h2 elements */ - height: 1px; - margin: 3px 0 12px; - border: 0; - background: #ccc; -} -p, pre, table, form { - margin: 0 0 15px; -} -small { - font-size: 11.5px; - color: #000; -} -ul, ol { - margin: 0 0 15px 18px; - padding: 0; -} -[dir='rtl'] ul, [dir='rtl'] ol { - margin: 10px 30px 10px 10px; -} -ul ul, ul ol, ol ul, ol ol { - margin-bottom: 0; - margin-top: 0; -} -li { - margin:0 0 5px; -} -dd { - margin:0 0 10px 30px; -} -dd p, -dd pre, -dd ul, -dd ol, -dd dl { - margin-top:10px; -} -li p, -li pre, -li ul, -li ol, -li dl { - margin-top:5px; - margin-bottom:5px; -} -dl dd dl:first-child { - margin-top:0; -} -pre strong, pre b, a strong, a b, a code { - color: inherit; -} -pre, code { - color: #060; - font: 13px/1.5 monospace; -} -code { - font-weight:bold; - font: 13px/14px monospace; -} - -legend { - display: none; -} -a:link, a:visited, .link-color { - color: #167c80; - text-decoration: none; -} -a:focus, a:hover, a:active { - color: #167c80; - text-decoration: none; -} -a.white { - color: #fff; - text-decoration:underline; -} -a.white:hover, a.white:active { - color: #ccc !important; -} -strong, b { - font-weight:bold; - color: #222; -} -table { - border-collapse: collapse; - border-spacing: 0; - border:0; - margin: .5em 1em 1em 0; - width:100%; /* consistent table widths; within IE's quirks */ - background-color:#f7f7f7; -} -th, td { - padding: 4px 12px; - vertical-align: top; - text-align: left; -} -td { - background-color:inherit; - border:solid 1px #DDD; -} -td *:last-child { - margin-bottom:0; -} -th { - background-color: #999; - color: #fff; - border:solid 1px #DDD; - font-weight: normal; -} -tr:first-of-type th:first-of-type:empty { - visibility: hidden; -} - -/* -------------------------------------------------------------------------- -Footer -*/ -.line { - clear: both; - background: #acbc00; - background: -moz-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0, #acbc00), -color-stop(50%, #acbc00), color-stop(50%, #bdde00), color-stop(100%, #bdde00)); - background: -webkit-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -o-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: -ms-linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - background: linear-gradient(top, #acbc00 0, #acbc00 50%, #bdde00 50%, #bdde00 100%); - height: 2px; - margin-top: 150px; - position: relative; - z-index: 11; -} -#footer { - font-size:11px; - clear: both; - color: #999; - padding: 15px 0; - margin-top:10px; - width:auto; -} -#footer-local ul { - list-style: none; - margin: 5px 0 30px 0; -} -#footer-local li { - display: inline; -} -#footer-local li+li:before { - content: '|'; - padding: 0 3px; - color: #e5e5e5; -} -#footer-global { - padding: 10px 15px; - background: #f5f5f5; -} -#footer-global { - border-top: 1px solid #ebebeb; - font-size: 11.5px; - line-height: 1.8; - list-style: none; -} -#footer-global ul { - margin: 0; -} -#footer-global li { - display: inline; - font-weight: bold; -} -#footer-global li+li:before { - content: '¬?'; - padding: 0 3px; -} -* html #footer-global li { - margin: 0 13px 0 0; -} -* [dir='rtl'] #footer-global li { - margin: 0 0 0 13px; -} -*+html #footer-global li { - margin: 0 13px 0 0; -} -*+[dir='rtl'] #footer-global li { - margin: 0 0 0 13px; -} -#footer-global li a { - font-weight: normal; -} -.locales { - margin: 10px 0 0 0px; -} -[dir='rtl'] .locales { - background-position: right center; - float: left; - padding: 0 24px 0 0; -} -.locales form { - margin: 0; -} -.locales select, .sites select { - line-height: 3.08; - margin: 0px 0; - border: solid 1px #EBEBEB; - -webkit-appearance: none; - background: white url('../images/arrows-up-down.png') right center no-repeat; - height: 30px; - color: #222; - line-height: normal; - padding: 5px; - width: 230px; -} -} - -/* ============================================================================= - Print Only - ========================================================================== */ -@media print { - /* configure printed page */ - @page { - margin: 0.75in 1in; - widows: 4; - orphans: 4; - } - - /* reset spacing metrics */ - html, body, .wrap { - margin: 0 !important; - padding: 0 !important; - width: auto !important; - } - - /* leave enough space on the left for bullets */ - body { - padding-left: 20px !important; - } - #doc-col { - margin-left: 0; - } - - /* hide a bunch of non-content elements */ - #header, #footer, #nav-x, #side-nav, - .training-nav-top, .training-nav-bottom, - #doc-col .content-footer, - .nav-x, .nav-y, - .paging-links { - display: none !important; - } - - /* remove extra space above page titles */ - #doc-col .content-header { - margin-top: 0; - } - - /* bump up spacing above subheadings */ - h2 { - margin-top: 40px !important; - } - - /* print link URLs where possible and give links default text color */ - p a:after { - content: " (" attr(href) ")"; - font-size: 80%; - } - p a { - word-wrap: break-word; - } - a { - color: inherit; - } - - /* syntax highlighting rules */ - .str { color: #060; } - .kwd { color: #006; font-weight: bold; } - .com { color: #600; font-style: italic; } - .typ { color: #404; font-weight: bold; } - .lit { color: #044; } - .pun { color: #440; } - .pln { color: #000; } - .tag { color: #006; font-weight: bold; } - .atn { color: #404; } - .atv { color: #060; } -} - -/* ============================================================================= - Columns - ========================================================================== */ - -@media screen, projection, print { -.full { - padding: 2.5em 0; - border-top: solid 1px #ddd; - border-bottom: solid 1px #ddd; - background: #f7f7f7; -} -.wrap { - margin: 0 auto; - width: 940px; - clear: both; -} -.cols { - height: 1%; - margin: 0 -1.533742331288343558282%; - width: 103.06748466257669%} -*+html .cols { - margin-bottom: 20px; -} -.cols:after { - clear: both; - content: ' '; - display: block; - height: 0; - visibility: hidden; -} -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, -.col-13, .col-14, .col-15, .col-16 { - display: inline; - float: left; - margin-left: 10px; - margin-right: 10px; -} -/* -* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html -.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12 { - margin: 0; - padding: 0 1.4% 20px; -} -[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5, -[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10, -[dir='rtl'] .col-11, [dir='rtl'] .col-12 { - float: right; -} -*/ -.col-1 { width: 40px } -.col-2 { width: 100px } -.col-3 { width: 160px } -.col-4 { width: 220px } -.col-5 { width: 280px } -.col-6 { width: 340px } -.col-7 { width: 400px } -.col-8 { width: 460px } -.col-9 { width: 520px } -.col-10 { width: 580px } -.col-11 { width: 640px } -.col-12 { width: 700px } -.col-13 { width: 760px } -.col-14 { width: 820px } -.col-15 { width: 880px } -.col-16 { width: 940px } -} - -.col-right { - margin-right:0px; -} - -@media screen and (max-width:772px) { -.col-5, .col-6, .col-7 { - clear: both; - width: 97.0238096%} -} - -/* ============================================================================= - Layout - ========================================================================== */ -@media screen, projection, print { - -/* -------------------------------------------------------------------------- -Header, Login, Nav-X, Search -*/ -#header { - margin: 0; - padding: 0; -} -#header:before, #header:after { - content: ""; - display: table; - clear: both -} -.logo, .nav-x { - float: left; -} -.nav-x { - margin-top: -2px; - list-style-type: none; -} -.nav-x a { - color: #333; - font-size: 16px; -} -.about a.selected { - color: #9933CC; -} -.design a.selected { - color: #167c80; -} -.develop a.selected { - color: #F80; -} -.distribute a.selected { - color: #9C0; -} - - - -.nav-x li { - display: inline; - margin-right: 45px; -} -.search { - float: right; - position: relative; - width: 220px -} -.search .bottom, .search .left, .search .right { - position: absolute; - background-color: #a3a3a3; -} -.search .bottom { - width: 220px; - height: 1px; - top: 24px; - left: 0 -} -.search .left, .search .right { - height: 5px; - width: 1px -} -.search .left { top: 19px; left: 0 } -.search .right { top: 19px; right: 0 } -.search form { - float: left; - margin-top: 2px; - width: inherit; -} -.search .close, -#player-frame .close { - position: absolute; - right: 8px; - bottom: 4px; - width: 16px; - height: 16px; - margin: 0; - text-indent: -1000em; - background: url(../images/close.png) no-repeat 0 0; - z-index:9999; -} -.search .close:hover, .search .close:focus, -#player-frame .close:hover, #player-frame .close:focus { - background-position: -16px 0; - cursor:pointer; -} -#player-frame .close { - top: 6px; -} -.search form input { - color: #999; - font-size: 1em; - width: inherit; - border: none; - margin: 0; - padding:0 0 0 6px; - z-index: 1500; - background-color: transparent -} -.search:hover .bottom, .search:hover .left, .search:hover .right { - background-color: #167c80; -} -.search:hover .icon { - background-position: -8px 0 -} -.search form input:focus { - color: #222; - font-weight: bold; - outline:0; -} -/* Search Dropdown */ -.search-dropdown { - padding: 15px; - width: 192px; - border: solid 1px #c5c5c5; - background: #fff; - position: absolute; - top: 35px; - left: 0; - -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2); - -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.2); - box-shadow: 0 0 10px rgba(0,0,0,0.2) -} -.search-dropdown ul, .search-dropdown ul li { - list-style-type: none; - margin: 0; - padding: 0 -} -.search-dropdown ul li { - clear: both -} -.search-dropdown img { - float: left; - margin: 0 10px 10px 0 -} -.search-dropdown h6 { - color: #222; - margin: 0; - line-height: normal -} -.search-dropdown .desc { - color: #999; - font-size: 11.5px; - line-height: normal; - margin: 0; -} -.search-dropdown li a:hover h6, .search-dropdown li a:hover .desc { - color: #167c80 -} -/* -------------------------------------------------------------------------- -Buttons -*/ -.button, a.button, .button-secondary, a.button-secondary { - border-image: initial; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - cursor: pointer; -} -.button, a.button { - display:inline-block; - background-color: #09c; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c)); - background-image: -webkit-linear-gradient(top, #2faddb, #09c); - background-image: -moz-linear-gradient(top, #2faddb, #09c); - background-image: -ms-linear-gradient(top, #2faddb, #09c); - background-image: -o-linear-gradient(top, #2faddb, #09c); - background-image: linear-gradient(top, #2faddb, #09c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#167c80',GradientType=0); - border: 1px solid #3990ab; - color: #fff; -} -.button-secondary, a.button-secondary { - background-color: #f3f3f3; - border: 1px solid #dcdcdc; - color: #444; -} -a.button, a.button:visited, a.button-secondary, a.button-secondary:visited { - margin-right: 16px; - font-weight: 400; - min-width: 54px; - outline: 0; - padding: 8px 15px; - text-align: center; -} -.button, .button-secondary { - margin-right: 16px; - font-weight: 400; - min-width: 54px; - outline: 0; - padding: 0 15px; - text-align: center; -} -.button:hover, a.button:hover { - border-color: #09c; - background-color: #4cadcb; - background-image: -webkit-gradient(linear, left top, left bottom, from(#5dbcd9), to(#4cadcb)); - background-image: -webkit-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -moz-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -ms-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: -o-linear-gradient(top, #5dbcd9, #4cadcb); - background-image: linear-gradient(top, #5dbcd9, #4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9', -EndColorStr='#4cadcb',GradientType=0); - color: #fff !important; -} -.button:active, a.button:active { - background-color: #1e799a; - background-image: none; - border-color: #30b7e6; -} -a.button.big.subtitle { - line-height:18px; -} -.button-secondary:hover, a.button-secondary:hover { - border-color: #dbdbdb; - background-color: #f3f3f3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); - background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); - background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); - background-image: -o-linear-gradient(top, #f9f9f9, #ececec); - background-image: linear-gradient(top, #f9f9f9, #ececec); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #167c80 !important; -} -.button-secondary:active, a.button-secondary:active { - border-color: #dadada; - background: #ebebeb; /* Old browsers */ - /* IE9 SVG, needs conditional override of 'filter' to 'none' */ - background: -url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/ -Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0Jv -eD0iMCAwIDEgMSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSI+ -CiAgPGxpbmVhckdyYWRpZW50IGlkPSJncmFkLXVjZ2ctZ2VuZXJhdGVkIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIg -eDE9IjAlIiB5MT0iMCUiIHgyPSIwJSIgeTI9IjEwMCUiPgogICAgPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2ViZWJl -YiIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjEwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjUwJSIgc3RvcC1jb2xvcj0iI2ZhZmFmYSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjkwJSIgc3RvcC1jb2xvcj0iI2Y5ZjlmOSIgc3RvcC1vcGFjaXR5PSIxIi8+ -CiAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNmNmY2ZjYiIHN0b3Atb3BhY2l0eT0iMSIvPgogIDwvbGluZWFy -R3JhZGllbnQ+ -CiAgPHJlY3QgeD0iMCIgeT0iMCIgd2lkdGg9IjEiIGhlaWdodD0iMSIgZmlsbD0idXJsKCNncmFkLXVjZ2ctZ2VuZXJhdGVkKSIg -Lz4KPC9zdmc+); - background: -moz-linear-gradient(top, #ebebeb 0%, #f9f9f9 5%, #fafafa 50%, #f9f9f9 90%, -#ffffff 100%); /* FF3.6+ */ - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#ebebeb), -color-stop(5%,#f9f9f9), color-stop(50%,#fafafa), color-stop(90%,#f9f9f9), color-stop(100%,#ffffff)); -/* Chrome,Safari4+ */ - background: -webkit-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 -90%,#ffffff 100%); /* Chrome10+,Safari5.1+ */ - background: -o-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* Opera 11.10+ */ - background: -ms-linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* IE10+ */ - background: linear-gradient(top, #ebebeb 0%,#f9f9f9 5%,#fafafa 50%,#f9f9f9 90%,#ffffff -100%); /* W3C */ - filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ebebeb', -endColorstr='#ffffff',GradientType=0 ); /* IE6-8 */ - -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - color: #258AAF !important; -} -.button.big { - font-size:20px; - display:inline-block; -} -.button.big span.small { - font-size:14px; -} -.button-caption { - margin-top:10px; - font-size:12px; - font-style:italic; -} - -.button.disabled, -.button.disabled:hover, -.button.disabled:active { - background:#ebebeb; - color:#999 !important; - border-color:#999; - cursor:default; -} - -.training-nav-top a.button-secondary, -.training-nav-bottom a.button-secondary { - display:block; - float:left; - margin:0; - width:130px; - text-transform:uppercase; - font-weight:bold; - - background-color: #f3f3f3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#f9f9f9), to(#ececec)); - background-image: -webkit-linear-gradient(top, #f9f9f9, #ececec); - background-image: -moz-linear-gradient(top, #f9f9f9, #ececec); - background-image: -ms-linear-gradient(top, #f9f9f9, #ececec); - background-image: -o-linear-gradient(top, #f9f9f9, #ececec); - background-image: linear-gradient(top, #f9f9f9, #ececec); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #167c80; -} - -.training-nav-top a.button-secondary:hover, -.training-nav-bottom a.button-secondary:hover { - background-color: #09c; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2faddb), to(#09c)); - background-image: -webkit-linear-gradient(top, #2faddb, #09c); - background-image: -moz-linear-gradient(top, #2faddb, #09c); - background-image: -ms-linear-gradient(top, #2faddb, #09c); - background-image: -o-linear-gradient(top, #2faddb, #09c); - background-image: linear-gradient(top, #2faddb, #09c); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c'); - border: 1px solid #3990ab; - color: #fff !important; -} - -.training-nav-top a.button-secondary.last, -.training-nav-bottom a.button-secondary.last { - border-left:0; -} - -.training-nav-top a.button-secondary.double-size, -.training-nav-bottom a.button-secondary.double-size { - width:291px; -} - -.training-nav-top, -.training-nav-bottom { - float:right; - margin:0 0 0 20px; -} - -.training-nav-top { - position:relative; - top:73px; -} - -.training-nav-bottom { - padding:0 0 20px; -} - -#tb-wrapper, -#qv-wrapper { - float:right; - clear:right; - margin:6px 0 0 30px; /* negative top-margin to counter the content-header bottom margin */ - padding:0 0 30px; -} - -#tb-wrapper { - margin:51px 0 0 20px; /* negative top-margin to counter the content-header bottom margin */ -} - -#tb, -#qv { - font-size:13px; - line-height:18px; - width:238px; - border:1px solid #ccc; - float:right; -} - -#tb { - width:278px; -} - -#tb h2, -#qv h2 { - margin:10px 15px; - padding:0; - text-transform:uppercase; - border-bottom:1px solid gainsboro; -} - -#tb *, -#qv * { - font-size:inherit; -} - -#tb .download-box, -#qv .download-box { - padding:0 0 0 15px; -} - -#tb .download-box .filename, -#qv .download-box .filename { - font-size:11px; - margin:4px 4px 10px; - color:#666; -} - - -/* Dev guide quicknav */ - -.sidebox-wrapper { - float:right; - clear:right; - margin:0 0 0 20px; - padding:0 0 20px; -} - -.sidebox { - width:226px; - font-size:13px; - line-height:18px; - border-left:4px solid #99CC00; - float:right; - padding:0 0 0 10px; - margin:0 0 1em 20px; -} - -.sidebox h2, -.sidebox h3, -.sidebox h4, -.sidebox h5 { - font-weight:bold; - margin:0 0 10px; - line-height: 16px; -} - -.sidebox * { - font-size:inherit; -} - -.sidebox > *:last-child { - margin-bottom:0; -} - -#tb ol, -#tb ul, -#qv ul { - margin:0 15px 10px 35px; -} - -#tb p { - margin:0 15px 10px; -} - -#qv ol { - list-style:none; - margin:0 15px 15px; - font-size:inherit; - line-height:inherit; -} - -#tb ol ol, -#tb ul ul, -#qv ol ol, -#qv ul ul, -.sidebox ol ol, -.sidebox ul ul { - margin-bottom:0; -} - -#qv ol ol { - margin:3px 0 3px 15px; -} - -.sidebox p, -#qv p, -#tb p { - margin: 0 0 10px; -} - -/* related resources blocks in checklists */ - -/* related resources sections that have dynamic content */ - - - -h3.rel-resources { -margin:1.25em auto; -} - -/* -------------------------------------------------------------------------- -Form -*/ -.article form { - margin: 0 0 20px; -} -.article form .form-required { - color: #dd4b39; -} -.article form fieldset { - margin: 0 0 20px; - padding: 0; -} -.article form legend { - display: block; - line-height: 1.5; - margin: 0; - padding: 0; -} -/* -.article form ol, .article form ul { - margin: 0 0 0 1em; - padding: 0 0 0 1em; -} -[dir='rtl'] .article form ol, [dir='rtl'] .article form ul { - margin: 0 1em 0 0; - padding: 0 1em 0 0; -} -.article form ol ul, .article form ul ul, [dir='rtl'] .article form ol ul, [dir='rtl'] .article form -ul ul { - list-style: none; - margin: 0; - padding: 0; -} -.article form li { - margin: 0 0 20px; -} -.article form li li { - margin: 0 0 5px; -} -*/ -.article form label { - display: block; - margin: 0 0 5px; - padding: 0; -} -.article form input[type='text'], .article form select, .article form textarea, .article form -.checkbox-group, .article form .radio-group { - margin-bottom: 15px; -} -.checkbox-group input { - width: 13px; - height: 13px; - background: #fff; - border: solid 1px #c6c6c6; - float: left; -} -.article form .checkbox-group, .article form .radio-group { - display: block -} -.article form select { - border: solid 1px #ebebeb; - border-top-color: #ddd; - -webkit-appearance: none; - background: #f3f3f3 url(../images/arrows-up-down.png) right center no-repeat; - height: 30px; - color: #222; - line-height: normal; - padding: 5px; - width: 130px; -} - -.article form .browse .browse-msg { - font-size: 11.5px; -} -.article form .browse .button-secondary { - height: auto; - line-height: 25px; - font-size: 11px; - padding: 0 8px; - margin: 0 10px 15px 0; -} -.article form input[type='text'], .article form textarea { - border: 1px solid #ebebeb; - border-top-color: #dcdcdc; - color: #222; - line-height: normal; - padding: 6px 10px; - width: 300px; -} -.article form textarea { - height: 150px; -} -.article form input[type='text']:focus, .article form textarea:focus { - border-color: #167c80; - -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - -o-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - box-shadow: inset 0 1px 2px rgba(0, 0, 0, .2); - outline: 0; -} -.article form input[disabled], .article form textarea[disabled], .article form label.form-disabled { - color: #999; -} -.article form input[type='text'][disabled], .article form textarea[disabled] { - background-color: #ebebeb; -} -form .form-error input[type='text'], form .form-error textarea { - border-color: #dd4b39; - margin-right: 20px; -} -.aside { - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - margin: 10px 0; - padding: 20px; - color: #666; - position: relative; - background: #f9f9f9; -} -/* -.aside, .notification, .promo { - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-radius: 2px; - margin: 10px 0; - padding: 10px; - position: relative; -} -.aside>:first-child, .notification>:first-child, .promo>:first-child { - margin-top: 0; -} -.aside>:last-child, .notification>:last-child, .promo>:last-child { - margin-bottom: 0; -} -.aside { - background: #f9f9f9; -} -.notification { - background: #fffbe4; - border-color: #f8f6e6; -} -.promo { - background: #f6f9ff; - border-color: #eff2f9; -} -*/ - -/* SDK TOS styles */ - -div.sdk-terms { - white-space: pre-wrap; - word-wrap: break-word; - font-family: inherit; - font-size: inherit; - padding: 10px; - height: 370px; - width: 738px; - border: 1px solid #444; - background: transparent; - overflow:auto; - margin:0 0 10px; -} - -div.sdk-terms.fullsize { - padding: 0; - height: auto; - width: auto; - border:none; -} - -div.sdk-terms h3, -div.sdk-terms h2 { - margin:0; -} - -div#sdk-terms-form { - padding:0 0 0 10px; -} - -div#sdk-terms-form input { - display:inline; - margin:4px 4px 4px 0; -} - - -/* -------------------------------------------------------------------------- -Code Style -*/ -pre { - margin:0 0 1em 0; - padding: 1em; - overflow: auto; - border: solid 1px #ddd; - background: #f7f7f7; -} -.str { color: #800; } /* Code string */ -.kwd { color: #008; } -.typ { color: #606; } -.lit { color: #066; } -.pun { color: #660; } -.pln { color: #000; } -.tag { color: #008; } -.atn { color: #828; } -.atv { color: #800; } /* XML string */ -.dec { color: #606; } - -/* -------------------------------------------------------------------------- -Three-Pane -*/ -/* Package Nav & Classes Nav */ -.three-pane { - position: relative; - border-top: solid 1px #ebebeb; -} -#packages-nav .js-pane, -#classes-nav .js-pane { - overflow:visible; -} -#packages-nav { - height:270px; - max-height: inherit; - position: relative; -} -#classes-nav { - position: relative; -} -#packages-nav ul, #classes-nav ul { - list-style-type: none; - margin: 10px 0 20px 0; - padding: 0; -} -#classes-nav li { - font-weight: bold; - margin: 5px 0; -} -#packages-nav li, -#classes-nav li li { - margin: 0; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li a, #classes-nav li a:active, #classes-nav li a:visited { - padding: 0 0 0 4px; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited, -#nav-tree li a, #nav-tree li a:active, #nav-tree li a:visited { - color: #222; - font-weight: normal; -} -#packages-nav li a, #packages-nav li a:active, #packages-nav li a:visited, -#classes-nav li li a, #classes-nav li li a:active, #classes-nav li li a:visited { - display: block; -} -#packages-nav li.selected a, #packages-nav li.selected a:active, #packages-nav li.selected -a:visited, -#classes-nav li li.selected a, #classes-nav li li.selected a:active, #classes-nav li li.selected -a:visited, -#nav-tree li div.selected { - font-weight: 500; - color: #167c80; - background-color:#fff; } - #packages-nav li.selected ul li a, - #classes-nav li.selected ul li a { - /* don't highlight child items */ - color: #555555; } -#nav-tree li div.selected a { - font-weight: 500; - color: #167c80; -} -#nav-swap { - height:30px; - border-top:1px solid #ccc; -} -#nav-swap a { - display:inline-block; - height:100%; - color: #222; - font-size: 12px; - padding: 5px 0 5px 5px; -} - -#nav-swap .fullscreen { - float: right; - width: 24px; - height: 24px; - text-indent: -1000em; - padding:0; - margin:3px 5px 0; - background: url(../images/fullscreen.png) no-repeat -24px 0; -} -#nav-swap .fullscreen.disabled { - background-position: 0 0; -} -#nav-swap .fullscreen:hover, -#nav-swap .fullscreen:focus { - cursor:pointer; -} - - -/* nav tree */ -#side-nav, #swapper, -#nav-tree, #tree-list { - overflow:hidden; - margin-left:0; -} - -#devdoc-nav { - overflow:visible !important; /* To keep the "to top" button visible */ -} - -#nav-tree ul { - list-style:none; - padding:0; - margin:10px 0; -} - -#nav-tree ul li div { - padding:0 0 0 4px; -} - -#side-nav #nav-tree ul li a, -#side-nav #nav-tree ul li span.no-children { - padding: 0; - margin: 0; -} - -#nav-tree .plus { - margin: 0 3px 0 0; -} - -#nav-tree ul ul { - list-style: none; - margin: 0; - padding: 0 0 0 0; -} - -#nav-tree ul li { - margin: 0; - padding: 0 0 0 0; - white-space: nowrap; -} - -#nav-tree .children_ul { - padding:0; - margin:0; -} -#nav-tree .children_ul li div { - padding:0 0 0 10px; -} -#nav-tree .children_ul .children_ul li div { - padding:0 0 0 20px; -} - -#nav-tree a.nolink { - color: #222; - text-decoration: none; -} - -#nav-tree span.label { - width: 100%; -} - -#nav-tree { - overflow-x: auto; - overflow-y: scroll; - outline:0; -} - - -/* Content */ -#doc-col { - margin-right:0; -} - -/* Uncomment this for preview release watermark -#doc-col { - background: url('../images/preview.png') repeat; -} -*/ - -#doc-content-container { - margin-left: 291px -} -#doc-header, #doc-content { - padding: 1em 2em; -} -#doc-header { - background: #f7f7f7; -} -#doc-header h1 { - line-height: 0; - margin-bottom: 15px; -} -#api-info-block { - float: right; - font-weight: bold; -} -#api-info-block a, #api-info-block a:active, #api-info-block a:visited { - color: #222; -} -#api-info-block a:hover, #api-info-block a:focus { - color: #167c80; -} -#api-nav-header { - height:19px; /* plus 16px padding = 35; same as #nav li */ - font-size:14px; - padding: 8px 0; - margin: 0; - border-bottom: 1px solid #CCC; - background:#e9e9e9; - background: rgba(0, 0, 0, 0.05); /* matches #nav li.expanded */ - -} -#api-nav-title { - padding:0 5px; - white-space:nowrap; -} - -#api-level-toggle { - float:right; - padding:0 5px; - -} - -#api-level-toggle label { - margin:0; - vertical-align:top; - line-height: 19px; - font-size:13px; - height: 19px; -} - -#api-level-toggle .select-wrapper { - width: 35px; - display: inline-block; - overflow: hidden; -} -#api-level-toggle select { - border: 0; - appearance:none; - -moz-appearance:none; - -webkit-appearance: none; - background: transparent url(../images/arrows-up-down.png) 23px 5px no-repeat; - color: #222; - height: 19px; - line-height: 19px; - padding: 0; - margin:1px 0 0 0; - width:150%; - font-size:13px; - vertical-align:top; - outline:0; -} - - -/* Toggle for revision notes and stuff */ -div.toggle-content.closed .toggle-content-toggleme { - display:none; -} - -#jd-content img.toggle-content-img { - margin:0 5px 5px 0; -} - -div.toggle-content-toggleme { - padding:0 0 0 15px; -} - - -/* API LEVEL FILTERED MEMBERS */ - -.absent, -.absent a:link, -.absent a:visited, -.absent a:hover, -.absent * { - color:#bbb !important; - cursor:default !important; - text-decoration:none !important; -} -#devdoc-nav li.absent.selected, -#devdoc-nav li.absent.selected *, -#devdoc-nav div.label.absent.selected, -#devdoc-nav div.label.absent.selected * { - background-color:#eaeaea !important; -} -.absent h4.jd-details-title, -.absent h4.jd-details-title * { - background-color:#f6f6f6 !important; -} -.absent img { - opacity: .3; - filter: alpha(opacity=30); - -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)"; -} - - - - - - - - - -/* JQUERY RESIZABLE STYLES */ -.ui-resizable { position: relative; } -.ui-resizable-handle { position: absolute; display: none; font-size: 0.1px; z-index:1; } -.ui-resizable .ui-resizable-handle { display: block; border-bottom: 1px solid #e4e4e4; } -/*body .ui-resizable-disabled .ui-resizable-handle { display: none; } -body .ui-resizable-autohide .ui-resizable-handle { display: none; }*/ -.ui-resizable-s { cursor: s-resize; height: 10px; width: 100% !important; bottom: -11px; left: 0; -border-bottom: solid 1px #ededed; - background: #f7f7f7 url("../images/resizable-s2.png") no-repeat scroll center center; } -/* -.ui-resizable-e { -cursor: e-resize; width: 10px; right: 0; top: 0; height: 100%; border-right: solid -1px #ededed;background: #f7f7f7 url("../images/resizable-e2.png") no-repeat scroll center center; } -*/ - -/* -------------------------------------------------------------------------- -Lightbox -*/ -.lightbox { - width: 769px; - padding: 1.5em; - margin: 0 auto; - border: solid 1px #dcdcdc; - background: #fff; - -moz-box-shadow: 1px 1px 5px rgba(0,0,0,0.1); - -webkit-box-shadow: 1px 1px 5px rgba(0,0,0,0.1); - box-shadow: 1px 1px 5px rgba(0,0,0,0.1) -} -.lightbox .header { - float: left; - width: 720px; - margin: -10px 20px 10px 0; -} -.lightbox .close { - float: right; - width: 10px; - height: 10px; - margin: -10px -10px 10px 0; - text-indent: -1000em; - background: url(../images/close.png) no-repeat 0 0; -} -.lightbox .close:hover, .lightbox .close:focus { - background-position: -10px 0; -} - -/* -------------------------------------------------------------------------- -Styles for samples browser -*/ - -#codesample-wrapper { - width:100000px; /* super wide to contain floats, but doesn't cause scroll */ - overflow:visible; -} -pre#codesample-block { - float:left; - overflow:visible; - background:transparent; - border:none; -} -pre#codesample-block a.number { - display:none; -} -pre#codesample-block .code-line:hover { - background:#e7e7e7; -} -pre#codesample-line-numbers { - float:left; - width:2em; - background:transparent; - border:none; - border-right:1px solid #ccc; - padding-left:0; - font-family:monospace; - text-align:right; - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: -moz-none; - -ms-user-select: none; - user-select: none; -} -pre#codesample-line-numbers a { - color:#999; -} -pre#codesample-line-numbers.hidden { - display:none; -} -pre#codesample-block span.code-line { - width:100%; - display:inline-block; -} - -/* -Styles for displaying image or video resources in samples browser. -Resources are marked as no-display if they exceed the size limit. -*/ -div#codesample-resource img, div#codesample-resource video { - border: 1px solid #ececec; -} - -div#codesample-resource.noDisplay div { - border: 1px solid #ececec; - width:120px; - margin-bottom:4px; - padding:20px; -} - -div#codesample-resource .noDisplay-message:after { - font-style:italic; - font-size:12px; - content: 'This resource is not available for browsing. To view it, please download the project.'; -} - -/* -Styles for project structure (treeview) page -*/ -.structure-dir { -background-image:url(../../assets/images/folder.png); -background-repeat:no-repeat; -background-position:16px 2px; - margin:.25em 0 0 0; - padding:0 0 0 0; -} - -.structure-toggleme { - margin:0 0 0 3em; - padding:0 0 0 0; - text-decoration:none; -} - -.structure-java{ -background-image:url(../../assets/images/file-java.png); -background-repeat:no-repeat; -background-position:0px 2px; - margin:.3em 0 0 0; - padding:.3em 0 .3em 22px; -} - -.structure-file { -background-image:url(../../assets/images/file-generic.png); -background-repeat:no-repeat; -background-position:0px 2px; - margin:.3em 0 0 0; - padding:.3em 0 .3em 22px; -} - -.structure-xml { -background-image:url(../../assets/images/file-xml.png); -background-repeat:no-repeat; -background-position:0px 2px; - margin:.3em 0 0 0; - padding:.3em 0 .25em 22px; -} - -.structure-img { -background-image:url(../../assets/images/file-image.png); -background-repeat:no-repeat; -background-position:0px 2px; - margin:.3em 0 0 0; - padding:.3em 0 .25em 22px; -} - -.structure-manifest { -background-image:url(../../assets/images/file-manifest.png); -background-repeat:no-repeat; - margin:.0 0 0 1.25em; - padding:0 0 0 22px; - text-decoration:none; -} - -#jd-content .structure-toggle-img { - margin:.5em 0 0 0; -padding-right:2.1em; -} - -.dirInfo { - margin-left:2em; -} - -.structure-dir a { - text-decoration:none; -} - -.structure-manifest a { - text-decoration: none; -} -.structure-file a { - text-decoration: none; -} - -.sampleEmbed { - background-color:rgb(249, 249, 249); -} - -.sampleEmbed ol.lineNumbers { - list-style-type: decimal; - padding-left:1em; -} - -.sampleEmbed ol.lineNumbers li { -border-left:1px solid #ddd; -border-right:1px solid #ddd; -color:gray; -background-color:#f7f7f7; -margin:0 0 0 24px; -padding: 2px 2px 2px 6px; -} - -.sampleEmbed ol.lineNumbers li:hover { -background: #efefef; -} - -.samples-nav li a { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -/* -------------------------------------------------------------------------- -Styles for raw formatted line numbers (not used with listformatted version) -div.sampleLine div.lineNumber { - display: inline; -} -div.sampleLine div.lineCode { - display: inline; - padding-left:6px; -} -div.sampleLine { - padding:0; - margin:0; -}*/ - -/* -------------------------------------------------------------------------- -Butterbar -*/ -#butterbar-wrapper { - position:absolute; - top:0; - left:0; - width:100%; -} -#butterbar { - width:100%; - margin:0 auto; -} -#butterbar-message { - background-color:rgba(255, 187, 51, .4); - font-size:13px; - padding: 5px 0; - text-align:center; -} -a#butterbar-message { - cursor:pointer; - display:block; -} -a#butterbar-message:hover { - text-decoration:underline; -} - -/* -------------------------------------------------------------------------- -Misc -*/ - - -.clearfix:before, .clearfix:after { - content: ""; - display: table -} -.clearfix:after { - clear: both -} -.clearfix { - *zoom: 1 -} -table.blank th, table.blank td { - border: 0; - background: none -} -.caption { - margin: 0.5em 0 2em 0; - color: #000; - font-size: 11.5px; -} - -.nolist, .nolist ul, .nolist ol { - list-style:none; - margin-left:0; -} -#tb .nolist { - margin-left:15px; -} - -dl.xml>dt { - text-transform:uppercase; -} -dl.xml dl.attr { - margin-top:0; -} - -pre.classic { - background-color:transparent; - border:none; - padding:0; -} - -p.img-caption { - margin: -10px 0 20px; - font-size:13px; - color:#666; -} - -div.figure, -div.figure-right { - float:right; - clear:right; - margin:10px 0 0 0; - padding:0 0 0 20px; - /* width must be defined w/ an inline style matching the image width */ -} - -div.figure-left { - float:left; - clear:left; - margin:10px 0 0 0; - padding:0 20px 0 0; - /* width must be defined w/ an inline style matching the image width */ -} - -img.frame { - border:1px solid #DDD; - padding:4px; -} - -p.table-caption { - margin: 0 0 4px 0; - font-size:13px; - color:#666; -} - -p.code-caption { - margin-bottom: 4px; - font: 12px/1.5 monospace; - color:#666; -} - -div.note, -div.caution, -div.warning { - margin: 0 0 15px; -} - -p.note, div.note, -p.caution, div.caution, -p.warning, div.warning { - padding: 0 0 0 10px; - border-left: 4px solid; -} - -p.note, div.note { - border-color: #258AAF; -} - -p.caution, div.caution { - border-color: #FF8800; -} - -p.warning, div.warning { - border-color: #ff4443; -} - -div.note.design { - border-left: 4px solid #167c80; -} - -div.note.develop { - border-left: 4px solid #F80; -} - -div.note.distribute { - border-left: 4px solid #9C0; -} - -.note p, .caution p, .warning p { - margin:0 0 5px; -} - -.note p:last-child, .caution p:last-child, .warning p:last-child { - margin-bottom:0; -} - -body.about blockquote { - display:block; - float:right; - width:280px; - font-size:20px; - font-style:italic; - line-height:24px; - color:#167c80; - margin:0 0 20px 30px; -} - -div.design-announce p { - margin:0 0 10px; -} - -.expandable { - height:34px; - padding-left:20px; - position:relative; -} -.expandable:before { - content: ''; - background-image: url(../images/styles/disclosure_down.png); - background-repeat:no-repeat; - background-position: -12px -9px; - width: 20px; - height: 20px; - display: inline-block; - position: absolute; - top: 0; - left: 0; } -} -.expandable.expanded:before { - background-image: url(../images/styles/disclosure_up.png); -} - -/* notice box for cross links between Design/Develop docs */ -a.notice-developers-video, -a.notice-developers, -a.notice-designers-video, -a.notice-designers { - float:right; - clear:right; - width:238px; - min-height:50px; - margin:0 0 20px 20px; - border:1px solid #ddd; -} -a.notice-developers-video.wide, -a.notice-developers.wide, -a.notice-designers-video.wide, -a.notice-designers.wide { - width:278px; -} -a.notice-developers-video div, -a.notice-developers div, -a.notice-designers-video div, -a.notice-designers div { - min-height:40px; - background:url('../images/styles/notice-developers@2x.png') no-repeat 10px 10px; - background-size:40px 40px; - padding:10px 10px 10px 60px; -} -a.notice-designers div { - background:url('../images/styles/notice-designers@2x.png') no-repeat 10px 10px; - background-size:40px 40px; -} -a.notice-designers-video div { - background:url('../images/styles/notice-designers-video@2x.png') no-repeat 10px 10px; - background-size:40px 40px; -} -a.notice-developers-video div { - background:url('../images/styles/notice-developers-video@2x.png') no-repeat 10px 10px; - background-size:40px 40px; -} -a.notice-developers-video:hover, -a.notice-developers:hover, -a.notice-designers-video:hover, -a.notice-designers:hover { - background:#eee; -} -a.notice-developers-video h3, -a.notice-developers h3, -a.notice-designers-video h3, -a.notice-designers h3 { - font-size:13px; - line-height:18px; - font-weight:bold; - text-transform:uppercase; - color:#000 !important; - margin:0 0 1px; -} -a.notice-developers-video p, -a.notice-developers p, -a.notice-designers-video p, -a.notice-designers p { - margin:0; - line-height:14px; -} -a.notice-developers-video.left, -a.notice-developers.left, -a.notice-designers-video.left, -a.notice-designers.left { - margin-left:0; - float:left; -} - - -/* hide nested list items; companion to hideNestedLists() */ -.hide-nested li ol, -.hide-nested li ul { - display:none; -} - -a.header-toggle { - display:block; - float:right; - text-transform:uppercase; - font-size:.8em !important; - font-weight:normal; - margin-top:2px; -} - - -/* for IDE instruction toggle (Studio/Eclipse/Other) */ -select.ide { - background: transparent; - border: 1px solid #bbb; - border-left: 0; - border-right: 0; - margin: 10px 0; - padding: 10px 0; - color:#666; -} -select.ide, -select.ide option { - font-family: inherit; - font-size:16px; - font-weight:500; -} -/* hide all except studio by default */ -.select-ide.eclipse, -.select-ide.other { - display:none; -} -/* ... unless studio also includes one of the others */ -.select-ide.studio.eclipse, -.select-ide.studio.other { - display:none; -} - - -/* ----------------------------------------------- -good/bad example containers -*/ - -div.example-block { - background-repeat: no-repeat; - background-position:10px 8px; - background-color:#ccc; - padding:4px; - margin:.8em auto 1.5em 2em; - width:260px; - float:right; -} -/* red container */ -.example-block.bad { - background-image: url(/images/example-bad.png); - background-color:#f4cccc; -} -/* green container */ -.example-block.good { - background-image: url(/images/example-good.png); - background-color:#d9ead3; -} -/* container heading div */ -#jd-content .example-block .heading { - font-weight:bold; - margin:6px 0 9px 36px; - padding:6px auto; -} -/* container image (if any) */ -#jd-content .example-block img { - margin:0; - padding:0px; -} - -.example-block table { - margin:0; -} - -/* ----------------------------------------------- -Dialog box for popup messages -*/ - -div.dialog { - height:0; - margin:0 auto; -} - -div.dialog>div { - z-index:99; - position:fixed; - margin:70px 0; - width: 391px; - height: 200px; - background: #F7F7F7; --moz-box-shadow: 0 0 15px rgba(0,0,0,0.5); --webkit-box-shadow: 0 0 15px rgba(0,0,0,0.5); -box-shadow: 0 0 15px rgba(0,0,0,0.5); -} -/* IE6 can't position fixed */ -* html div.dialog div { position:absolute; } - - -div#deprecatedSticker { - display:none; - z-index:99; - position:fixed; - right:15px; - top:114px; - margin:0; - padding:1em; - background:#FFF; - border:1px solid #dddd00; - box-shadow:-5px 5px 10px #ccc; - -moz-box-shadow:-5px 5px 10px #ccc; - -webkit-box-shadow:-5px 5px 10px #ccc; -} - -div#langMessage, -div#naMessage { - display:none; - width:555px; - height:0; - margin:0 auto; -} - - -div#langMessage>div, -div#naMessage div { - z-index:99; - width:450px; - position:fixed; - margin:50px 0; - padding:4em 4em 3em; - background:#FFF; - border:1px solid #999; - box-shadow:-10px 10px 40px #888; - -moz-box-shadow:-10px 10px 40px #888; - -webkit-box-shadow:-10px 10px 40px #888; -} -/* IE6 can't position fixed */ -* html div#langMessage>div, -* html div#naMessage div { position:absolute; } - -div#naMessage strong { - font-size:1.1em; -} - -div#langMessage .lang { - display:none; -} - -/* -------------------------------------------------------------------------- -Slideshow Controls & Next/Prev -*/ -.slideshow-next, .slideshow-prev { - width: 20px; - height: 36px; - text-indent: -1000em; -} -.slideshow-container { - margin: 2em 0; -} -.slideshow-container:before, .slideshow-container:after { - content: ""; - display: table; - clear: both; -} -a.slideshow-next, a.slideshow-next:visited { - - float: right; - - background: url(../images/arrow-right.png) no-repeat 0 0 - -} - -a.slideshow-prev, a.slideshow-prev:visited { - - float: left; - - background: url(../images/arrow-left.png) no-repeat 0 0 - -} - -.slideshow-next:hover, .slideshow-prev:hover, .slideshow-next:focus, .slideshow-prev:focus { - - background-position: 0 -36px - -} - -.slideshow-next:active, .slideshow-prev:active { - - background-position: 0 -72px - -} -.slideshow-nav { - width: 74px; - margin: 0 auto; -} -.slideshow-nav a, .slideshow-nav a:visited { - display: inline-block; - width: 12px; - height: 12px; - margin: 0 2px 20px 2px; - background: #ccc; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border-radius: 50%; -} -.slideshow-nav a:hover, .slideshow-nav a:focus { - - background: #167c80 -} - -.slideshow-nav a:active { - - background: #1e799a; - background: #ebebeb; - -webkit-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - -moz-box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); - box-shadow: inset 0px 0px 5px 2px rgba(0, 0, 0, .05); -} -.slideshow-nav a.active, .slideshow-nav a.active:active, .slideshow-nav a.active:visited { - background: #167c80 -} -/* -------------------------------------------------------------------------- -Tabs -*/ -ul.tabs { - padding: 0; - margin: 2em 0 0 0; -} -ul.tabs:before, ul.tabs:after { - content: ""; - display: table; - clear: both; -} -ul.tabs li { - list-style-type: none; - float: left; -} -ul.tabs li a, ul.tabs li a:active, ul.tabs li a:visited { - display: block; - height: 36px; - line-height: 36px; - padding: 0 15px; - margin-right: 2px; - color: #222; - -moz-border-radius-topleft: 2px; - -moz-border-radius-topright: 2px; - -moz-border-radius-bottomright: px; - -moz-border-radius-bottomleft: px; - -webkit-border-radius: 2px 2px px px; - border-radius: 2px 2px px px; - border-top: solid 1px #ebebeb; - border-left: solid 1px #ebebeb; - border-right: solid 1px #ebebeb; - background-color: #fff; - background-image: -webkit-gradient(linear, left top, left bottom, from(#ffffff), to(#fafafa)); - background-image: -webkit-linear-gradient(top, #ffffff, #fafafa); - background-image: -moz-linear-gradient(top, #ffffff, #fafafa); - background-image: -ms-linear-gradient(top, #ffffff, #fafafa); - background-image: -o-linear-gradient(top, #ffffff, #fafafa); - background-image: linear-gradient(top, #ffffff, #fafafa); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff', -EndColorStr='#fafafa'); -} -ul.tabs li a:hover { - color: #167c80; -} -ul.tabs li a.selected { - height: 37px; - color: #167c80; - background-color: #f7f7f7; - background-image: none; - border-color: #ddd; -} -.tab-content { - padding: 1.2em; - margin: -1px 0 2em 0; - -webkit-border-radius: 2px; - -moz-border-radius: 2px; - border-radius: 2px; - border: solid 1px #ddd; - background: #f7f7f7; -} -/* -------------------------------------------------------------------------- -Feature Boxes -*/ -.feature-box { - width: 291px; - height: 200px; - position: relative; - background: #F7F7F7; -} -.box-border .top, .box-border .bottom, .box-border .left, .box-border .right { - z-index: 100; - position: absolute; - background-color: #aaa; -} -.box-border .top, .box-border .bottom { - width: 291px; - height: 1px; -} -.dialog .box-border .top, -.dialog .box-border .bottom { width:391px; } - -.box-border .left, .box-border .right { - width: 1px; - height: 8px; -} -.box-border .top { top: 0; left: 0 } -.box-border .top .left { top: 1px; left: 0 } -.box-border .top .right { top: 1px; right: 0 } -.box-border .bottom .left { top: -8px; left: 0 } -.box-border .bottom { top: 200px; left: 0 } -.box-border .bottom .right { top: -8px; right: 0 } - -.feature-box h4, -.dialog h4 { - margin: 15px 18px 10px; - padding:0; -} - -.feature-box p, -.dialog p { - margin: 10px 18px; - padding:0; -} -.feature-box .link, -.dialog .link { - border-top: 1px solid #dedede; - bottom: 0; - position: absolute; - width: inherit; -} -.feature-box a, .feature-box h4, -.dialog a, .dialog h4 { - -webkit-transition: color .4s ease; - -moz-transition: color .4s ease; - -o-transition: color .4s ease; - transition: color .4s ease; -} -.feature-box:hover { - cursor: pointer; -} -.feature-box:hover .box-border .top, .feature-box:hover .box-border .bottom, .feature-box:hover -.left, .feature-box:hover .right { - background-color: #167c80; -} -.feature-box:hover h4, .feature-box:hover a { - color: #167c80; -} -/* -------------------------------------------------------------------------- -Page-Specific Styles -*/ -.colors { - position: relative; - float: left; - width: 92px; - margin: 40px 0 20px; -} -.colors div { - color: #fff; - font-size: 11.5px; - width: 82px; - height: 82px; - margin-top:-30px; - line-height: 82px; - text-align: center; - border: solid 5px #fff; - -webkit-border-radius: 50%; - -moz-border-radius: 50%; - border-radius: 50%; -} - - - - - - - - - - - - - - -/* ########### REFERENCE DOCS ################## */ - -#packages-nav h2, -#classes-nav h2 { - font-size:18px; - margin:0; - padding:0 0 0 4px; -} - -#jd-header { - padding: 0 0 12px; - margin: 20px 0 12px; - font-size:12px; - padding-bottom:12px; - border-bottom:solid 1px #ccc; -} - -#jd-header h1 { - margin:0; - padding:0 0 6px 0; -} - -/* not sure if this is needed in the ref docs, disabling for now -.jd-descr h2 { - margin:16px 0; -} -*/ - -/* page-top-right container for reference pages (holds -links to summary tables) */ -#api-info-block { - font-size:12px; - margin:20px 0 0; - padding:0 10px 6px; - font-weight:normal; - float:right; - text-align:right; - color:#999; - max-width:80%; - font-size: 12px; - line-height:14px; -} - -#api-info-block div.api-level { - font-weight:bold; - font-size:inherit; - float:none; - color:#222; - padding:0; - margin:0; -} - -/* inheritance table */ -.jd-inheritance-table { - border-spacing:0; - margin:0; - padding:0; - font-size:12px; - line-height:14px; - background-color:transparent; -} -.jd-inheritance-table tr td { - border: none; - margin: 0; - padding: 0; - background-color:transparent; -} -.jd-inheritance-table .jd-inheritance-space { - font-weight:bold; - width:1em; -} -.jd-inheritance-table .jd-inheritance-interface-cell { - padding-left: 17px; -} - - - -.jd-sumtable a { - text-decoration:none; -} - -.jd-sumtable a:hover { - text-decoration:underline; -} - -/* the link inside a sumtable for "Show All/Hide All" */ -.toggle-all { - display:block; - float:right; - font-weight:normal; - font-size:0.9em; -} - -/* adjustments for in/direct subclasses tables */ -.jd-sumtable.jd-sumtable-subclasses { - margin: 1em 0 0 0; - max-width:968px; - background-color:transparent; - font-size:13px; -} - -/* extra space between end of method name and open-paren */ -.sympad { - margin-right: 2px; -} - -/* right alignment for the return type in sumtable */ -.jd-sumtable .jd-typecol { - text-align:right; -} - -/* adjustments for the expando table-in-table */ -.jd-sumtable-expando { - margin:.5em 0; - padding:0; -} - -/* a div that holds a short description */ -.jd-descrdiv { - padding:3px 1em 0 1em; - margin:0; - border:0; -} - -#jd-content img.jd-expando-trigger-img { - padding:0 4px 4px 0; - margin:0; -} - -.jd-sumtable-subclasses div#subclasses-direct, -.jd-sumtable-subclasses div#subclasses-indirect { - margin:0 0 0 13px; -} - - - -/********* MEMBER REF *************/ - - -.jd-details { -/* border:1px solid #669999; - padding:4px; */ - margin:0 0 1em; -} - -/* API reference: a container for the -.tagdata blocks that make up the detailed -description */ -.jd-details-descr { - padding:0; - margin:.5em .25em; -} - -/* API reference: a block containing -a detailed description, a params table, -seealso list, etc */ -.jd-tagdata { - margin:.5em 1em; -} - -.jd-tagdata p { - margin:0 0 1em 1em; -} - -/* API reference: adjustments to -the detailed description block */ -.jd-tagdescr { - margin:.25em 0 .75em 0; -} - -.jd-tagdescr ol, -.jd-tagdescr ul { - margin:0 2.5em; - padding:0; -} - -.jd-tagdescr table, -.jd-tagdescr img { - margin:.25em 1em; -} - -.jd-tagdescr li { -margin:0 0 .25em 0; -padding:0; -} - -/* API reference: heading marking -the details section for constants, -attrs, methods, etc. */ -h4.jd-details-title { - font-size:1.15em; - background-color: #E2E2E2; - margin:1.5em 0 .6em; - padding:3px 95px 3px 3px; /* room for api-level */ -} -body.google h4.jd-details-title { - background-color: #FFF; - padding-top:5px; - border-top: 1px solid #ccc; -} -body.google table.jd-sumtable th { - background-color: #FFF; - color:#000; -} - -h4.jd-tagtitle { - margin:0; -} - -h4 .normal { - font-weight:normal; -} - -/* API reference: heading for "Parameters", "See Also", etc., -in details sections */ -h5.jd-tagtitle { - margin:0 0 .25em 0; - font-size:1em; -} - -.jd-tagtable { - margin:0; - background-color:transparent; - width:auto; -} - -.jd-tagtable td, -.jd-tagtable th { - border:none; - background-color:#fff; - vertical-align:top; - font-weight:normal; - padding:2px 10px; -} - -.jd-tagtable th { - font-style:italic; -} - -/* Inline api level indicator for methods */ -div.api-level { - font-size:.8em; - font-weight:normal; - color:#999; - float:right; - padding:0 8px 0; - margin-top:-30px; -} - -table.jd-tagtable td, -table.jd-tagtable th { - background-color:transparent; -} - -table.jd-tagtable th { - color:inherit; -} - - - - - - - - - - - - - - - - - - - - - - - -/* SEARCH FILTER */ - -.menu-container { - position:relative; -} -#search_autocomplete { - font-weight:normal; -} - -.search_filtered_wrapper.reference { - width: 193px; - float: right; -} -.search_filtered_wrapper.docs { - width:875px; - float: left; - position:absolute; - top:26px; - right:66px; -} -.suggest-card { - position:relative; - width:170px; - min-height:90px; - padding:5px; - border: solid 1px #C5C5C5; - background: white; - top: 15px; - margin-right:-5px; - -moz-box-shadow: 0 0 10px rgba(0,0,0,0.2); - -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 0 10px rgba(0, 0, 0, 0.2); -} -.suggest-card.reference { - position:absolute; - z-index:999; - min-width:171px; /* +padding and border makes this match input width */ - min-height:93px; /* add 3px because this has 1 not 4px top border */ - width:auto; - top:41px; - margin:0; -} -.suggest-card.develop { - z-index:997; - border-top: solid 4px #F80; - float:right; -} -.suggest-card.design { - z-index:996; - border-top: solid 4px #167c80; - float:right; -} -.suggest-card.distribute { - z-index:995; - border-top: solid 4px #9C0; - float:right; -} -.child-card { - width:100%; -} -.suggest-card.dummy { - width:172px; - float:right; - border:0; - background:transparent; - -moz-box-shadow: none; - -webkit-box-shadow: none; - box-shadow: none; -} - -ul.search_filtered { - min-width:100%; - list-style: none; - margin: 0 0 5px; - padding: 0; -} -.search_filtered .jd-selected { - background:#efefef; - cursor:pointer; -} -.search_filtered .jd-selected, -.search_filtered .jd-selected a { - color:#09C !important; -} - -.no-display { - display: none; -} - -.search_filtered li.jd-autocomplete { - font-size: 0.81em; - border: none; - margin: 0 0 2px; - padding: 0; - line-height:1.5em; -} - -.search_filtered li a { - padding:0 5px; - color:#222 !important; - display:inline-block; - line-height:12px; -} - -.search_filtered li.header { - font-weight:bold; - color:#444; - border: none; - margin: 8px 0 2px; - padding:1px 5px; - line-height:1.5em; -} -.search_filtered li.header.small { - font-size:0.85em; -} - -.suggest-card.reference -.search_filtered li.header { - color:#aaa; - font-size: 0.81em; -} - -.search_filtered li.header:first-child { - margin: 0 0 2px; -} - -.show-item { - display: table-row; -} -.hide-item { - display: hidden; -} - - - - - -/* SEARCH RESULTS */ - - -#leftSearchControl .gsc-twiddle { - background-image : none; -} - -#leftSearchControl td, #searchForm td { - border: 0px solid #000; - padding:0; -} - -#leftSearchControl .gsc-resultsHeader .gsc-title { - padding-left : 0px; - font-weight : bold; - font-size : 13px; - color:#006699; - display : none; -} - -#leftSearchControl .gsc-resultsHeader div.gsc-results-selector { - display : none; -} - -#leftSearchControl .gsc-resultsRoot { - padding-top : 6px; -} - -#leftSearchControl div.gs-visibleUrl-long { - display : block; - color:#006699; -} - -#leftSearchControl .gsc-webResult { - padding:0 0 20px 0; -} - -.gsc-webResult div.gs-visibleUrl-short, -table.gsc-branding, -.gsc-clear-button { - display : none; -} - -.gsc-cursor-box .gsc-cursor div.gsc-cursor-page, -.gsc-cursor-box .gsc-trailing-more-results a.gsc-trailing-more-results, -#leftSearchControl a, -#leftSearchControl a b { - color:#006699; -} - -.gsc-resultsHeader { - display: none; -} - -/* Disable built in search forms */ -.gsc-control form.gsc-search-box { - display : none; -} -table.gsc-search-box { - margin:6px 0 0 0; - border-collapse:collapse; -} - -td.gsc-input { - padding:0 2px; - width:100%; - vertical-align:middle; -} - -input.gsc-input { - border:1px solid #BCCDF0; - width:99%; - padding-left:2px; - font-size:.95em; -} - -td.gsc-search-button { - text-align: right; - padding:0; - vertical-align:top; -} - - -#searchResults { - overflow:hidden; /* because the repositioned page links makes the section think it needs to scroll -(it doesn't) */ - height:auto; -} - -#searchResults .gsc-control { - position:relative; - width:auto; - padding:0 0 10px; -} - -#searchResults .gsc-tabsArea { - position:relative; - white-space:nowrap; - float:left; - width:200px; -} - -#searchResults .gsc-above-wrapper-area { - display:none; -} - -#searchResults .gsc-resultsbox-visible { - float:left; - width:720px; - margin-left:20px; -} - -#searchResults .gsc-tabHeader { - padding: 3px 6px; - position:relative; - width:auto; - display:block; -} - -#searchResults h2#searchTitle { - padding:0; - margin:5px 0; - border:none; -} - -#searchResults h2#searchTitle em { - font-style:normal; - color:#167c80; -} - -#searchResults .gsc-table-result { - margin:5px 0 10px 0; - background-color:transparent; -} -#searchResults .gs-web-image-box, .gs-promotion-image-box { - width:120px; -} -#searchResults .gs-web-image-box img.gs-image, .gs-promotion-image-box img.gs-promotion-image { - max-width:120px; -} - -#searchResults .gsc-table-result .gsc-thumbnail { - padding:0 20px 0 0; -} - -#searchResults td { - background-color:transparent; -} - -#searchResults .gsc-expansionArea { - position:relative; -} -#searchResults .gsc-tabsArea .gsc-cursor-box { - width:200px; - padding:20px 0 0 1px; -} -#searchResults .gsc-cursor-page { - display:inline-block; - float:left; - margin:-1px 0 0 -1px; - padding:0; - height:27px; - width:27px; - text-align:center; - line-height:2; -} - -#searchResults .gsc-tabHeader.gsc-tabhInactive, -#searchResults .gsc-cursor-page { - text-decoration:none; - color:#258AAF; - border: solid 1px #DADADA; -} - -#searchResults .gsc-tabHeader.gsc-tabhInactive:hover, -#searchResults .gsc-cursor-page:hover { - border-color: #DBDBDB; - background-color: #F3F3F3; - background-image: -webkit-gradient(linear, left top, left bottom, from(#F9F9F9), to(#ECECEC)); - background-image: -webkit-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -moz-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -ms-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: -o-linear-gradient(top, #F9F9F9, #ECECEC); - background-image: linear-gradient(top, #F9F9F9, #ECECEC); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f9f9f9', -EndColorStr='#ececec'); - color: #167c80; -} - -#searchResults .gsc-tabHeader.gsc-tabhActive, -#searchResults .gsc-tabHeader.gsc-tabhActive:hover, -#searchResults .gsc-cursor-page.gsc-cursor-current-page, -#searchResults .gsc-cursor-page.gsc-cursor-current-page:hover { - color:#fff; - background-color: #09C; - background-image: -webkit-gradient(linear, left top, left bottom, from(#2FADDB), to(#09C)); - background-image: -webkit-linear-gradient(top, #2FADDB, #09C); - background-image: -moz-linear-gradient(top, #2FADDB, #09C); - background-image: -ms-linear-gradient(top, #2FADDB, #09C); - background-image: -o-linear-gradient(top, #2FADDB, #09C); - background-image: linear-gradient(top, #2FADDB, #09C); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#2faddb', EndColorStr='#09c'); - border: 1px solid #3990AB; - z-index:100; -} - - - - - -/************ STICKY NAV BAR ******************/ - -#header-wrapper { - background: #f9f9f9; - margin: 0 -10px 0 -10px; - padding: 31px 10px 0px 10px; - position: relative; -} -#header-wrapper #nav-x div.wrap { - max-width: 940px; - height: 38px; -} -#header-wrapper #nav-x ul.nav-x li { - margin-right: 31px !important; - margin-top: 5px; - margin-bottom: 0px; - height: 30px; -} -#header-wrapper #nav-x > div.wrap ul.nav-x li.active { - color: #669900; - border-bottom: 3px solid #669900; -} -#header-wrapper #nav-x > div.wrap ul.nav-x li.active a { - color: #669900; -} -#header-wrapper #nav-x > div.wrap ul.nav-x a { - font-size: 14.5px; -} -#header-wrapper .developer-console-btn { - float: right; - background: #fefefe; - border-radius: 4px; - padding: 8px 14px; - box-shadow: 1px 1px 0px #7a7a7a; - font-size: 14px; - margin-top: -6px; - cursor: pointer; - color: #464646; - margin-right: 20px; -} -/* not currently used */ -#header-wrapper .shadow { - width: 1034px; - height: 4px; - position: absolute; - left: 50%; - margin-left: -517px; - bottom: -4px; - background-image: url(../images/header-shadow.png); -} - -#context { - clear: both; - padding-top: 14px; -} -#context .breadcrumb { - float: left; - margin-bottom: 10px; -} -#context .util { - float: right; - margin-right: 20px; -} - -.breadcrumb { - list-style: none; - margin: 0; - padding: 0; - position: relative; -} -.breadcrumb li { - float: left; - padding: 0 20px 0 0; - color: #000; - white-space: nowrap; -} -.breadcrumb li a { - color: #000; -} -.breadcrumb li:after { - content: url(../images/breadcrumb.png); - position: relative; - top: 1px; - left: 10px; - width: 5px; - height: 10px; -} -.breadcrumb li.current { - font-weight: 700; -} -.breadcrumb li.current:after { - display: none; -} - -/* Sticky Nav overrides */ -.sticky-menu { - position: fixed; - width: 940px; - height: 0px; - z-index: 51; - top: 12px; -} -#sticky-header { - display: none; - padding: 0 10px; - position: fixed; - background: #f9f9f9; - top: 0px; - left: 0px; - right: 0px; - height: 45px; - box-shadow: 0px 1px 5px rgba(0, 0, 0, 0.1); - border-bottom: 1px solid #a5c43a; - z-index: 50; -} -#sticky-header.design { - border-bottom: 1px solid #167c80; -} -#sticky-header.develop { - border-bottom: 1px solid #F80; -} -#sticky-header.distribute { - border-bottom: 1px solid #9C0; -} -#sticky-header.about { - border-bottom: 1px solid #9933CC; -} -#sticky-header > div { - overflow: hidden; - *zoom: 1; - width: 940px; - margin: 0 auto; - clear: both; - padding-top: 9px; -} -#sticky-header > div .logo { - float: left; - width: 26px; - height: 25px; - background: url(../images/dac_logo.png); - background-image: -webkit-image-set(url(../images/dac_logo.png) 1x, url(../images/dac_logo@2x.png) 2x); - z-index: 52; - position: relative; -} -#sticky-header > div .top { - float: left; - width: 38px; - height: 38px; - position: relative; - background: url(../images/styles/gototop.png); - z-index: 52; -} -#sticky-header > div .breadcrumb { - float: left; - padding: 0 0 0 10px; - border-left: 1px solid #d2d2d2; - line-height: 24px; - font-size: 14px; - position: relative; - top: 0px; - z-index: 52; -} - -/* offset the <a name=""> tags to account for sticky nav */ -body.reference a[name] { - visibility: hidden; - display: block; - position: relative; - top: -56px; -} - - -} - - - - - - - -/*********** PREVIOUSLY dac-styles.css ***************/ - - -#header { - border-bottom:0; -} - -#header .wrap { - max-width:940px; - height:41px; - border-bottom:1px solid; - border-color: #ccc; - position:relative; -} - -.about #header .wrap { - border-color: #9933CC; -} - -.design #header .wrap { - border-color: #167c80; -} - -.develop #header .wrap { - border-color: #F80; -} - -.distribute #header .wrap { - border-color: #9C0; -} - -.logo a { - float:left; -} - -#header .logo { - margin-top: -6px; - margin-left: 0px; - margin-bottom:0px; - width: 160px; - padding-right:10px; -} - - -#header-wrap .logo.landing-logo { - width:220px; - margin:0; - padding:0; - margin-bottom:22px; -} -#header-wrap .logo.landing-logo img { - padding:0 0 0 10px; -} - -.search { - height:25px; - margin-top: -3px; - margin-bottom: 0px; -} - - - -/* Quicknav */ -.btn-quicknav { - width:20px; - height:28px; - float:left; - margin-left:6px; - padding-right:10px; - position:relative; - cursor:pointer; - border-right:1px solid #CCC; -} - -.btn-quicknav a { - zoom:1; - position:absolute; - top:13px; - left:5px; - display:block; - text-indent:-9999em; - width:10px; - height:5px; - background:url(../images/quicknav_arrow.png) no-repeat; -} - -.btn-quicknav a.arrow-active { - background-position: 0 -5px; - display:none; -} - -#header-wrap.quicknav a.arrow-inactive { - display:none; -} - -.btn-quicknav.active a.arrow-active { - display:block; -} - -.nav-x li { - display:block; - float:left; - margin-right:45px; - -webkit-transition: all 0.25s linear; - -moz-transition: all 0.25s linear; - -ms-transition: all 0.25s linear; - -o-transition: all 0.25s linear; - transition: all 0.25s linear; -} - -#header-wrap.quicknav .nav-x li { - min-width:160px; - margin-right:20px; -} - -#header-wrap.quicknav li.last { - margin-right:0px; -} - -#quicknav { - float:none; - clear:both; - margin-left:0; - margin-top:-30px; - display:none; - overflow:hidden; -} - -#header-wrap.quicknav #quicknav { - -} - -#quicknav ul { - margin:10px 0; - padding:0; -} - -#quicknav ul li.about { - border-top:1px solid #9933CC; -} - -#quicknav ul li.design { - border-top:1px solid #167c80; -} - -#quicknav ul li.develop { - border-top:1px solid #FF8800; -} - -#quicknav ul li.distribute { - border-top:1px solid #99cc00; -} - -#quicknav ul li { - display:block; - float:left; - margin:0 20px 0 0; - min-width:140px; -} - -#quicknav ul li.last { - margin-right:0px; -} - -#quicknav ul li ul li { - float:none; -} - -#quicknav ul li ul li a { - color:#222; -} - -#quicknav ul li li ul, -#quicknav ul li li ul li { - margin:0; -} - -#quicknav ul li li ul li:before { - content:"\21B3"; -} - -#header-wrap { - -webkit-transition: all 0.25s ease-out; - -moz-transition: all 0.25s ease-out; - -ms-transition: all 0.25s ease-out; - -o-transition: all 0.25s ease-out; - transition: all 0.25s ease-out; - -} - -#header-wrap.quicknav { - height:216px; - -} - -/* SEARCH AND MORE */ -.search { - position: absolute; - width: 50px; - height:28px; - display: block; - margin-top:-3px; - margin-bottom:7px; - overflow:hidden; - z-index:100; - right:54px; - -webkit-transition: width 0.4s ease; - -moz-transition: width 0.4s ease; - -o-transition: width 0.4s ease; - transition: width 0.4s ease; -} - -.search #search-btn { - width:50px; - height:28px; - background:url(../images/icon_search.png) no-repeat; - float:left; -} - -.search-inner { - width:245px; -} - -.search:hover, .search.active { - width:245px; -} - -.search .bottom, .search .left, .search .right { - position: absolute; - background-color: #a2a2a2 -} - -.search .bottom { - width: 214px; - height: 1px; - top: 24px; - left: 0 -} - -.search .left, .search .right { - height: 5px; - width: 1px -} - -.search .left { - top: 22px; - left: 56px; - background-color:#CCC; -} - -.search .right { - top: 22px; - left: 238px; - background-color:#CCC; -} - -.search form { - margin-top: 2px; - width: 162px; - float:left; -} - -.search form input { - color: #2f2f2f; - font-size: 0.95em; - width: 178px; - border: none; - margin-left: 6px; - z-index: 1500; - position: relative; - background-color: transparent; - border-bottom:1px solid #CCC; - padding:0 0 0 4px; - outline:none; - height:24px; -} - -.search:hover form input { - border-bottom:1px solid #167c80; -} - -.search:hover .bottom, .search:hover .left, .search:hover .right { - background-color: #167c80; -} - -.search:hover #search-btn { - background-position: 0 -28px -} - -.search form input:focus { - color: #222; - font-weight: bold -} - -.moremenu { - float: right; - position: relative; - width: 50px; - height:28px; - display: block; - margin-top:-3px; - margin-bottom:7px; - overflow:hidden; - -webkit-transition: width 0.25s ease; - -moz-transition: width 0.25s ease; - -o-transition: width 0.25s ease; - transition: width 0.25s ease; -} - -.moremenu #more-btn { - width:40px; - height:28px; - background:url(../images/icon_more.png) no-repeat; - border-left:1px solid #CCC; - float:left; - cursor:pointer; -} - -.moremenu:hover #more-btn { - background-position:0 -28px; -} - -.morehover { - position:absolute; - right:6px; - top:-9px; - width:40px; - height:35px; - z-index:99; - overflow:hidden; - - -webkit-opacity:0; - -moz-opacity:0; - -o-opacity:0; - opacity:0; - - -webkit-transform-origin:100% 0%; - -moz-transform-origin:100% 0%; - -o-transform-origin:100% 0%; - transform-origin:100% 0%; - - -webkit-transition-property: -webkit-opacity; - -webkit-transition-duration: .25s; - -webkit-transition-timing-function:ease; - - -moz-transition-property: -moz-opacity; - -moz-transition-duration: .25s; - -moz-transition-timing-function:ease; - - -o-transition-property: -o-opacity; - -o-transition-duration: .25s; - -o-transition-timing-function:ease; - - transition-property: opacity; - transition-duration: .25s; - transition-timing-function:ease; -} - -.morehover:hover, -.morehover.hover { - opacity:1; - height:385px; - width:268px; - -webkit-transition-property:height, -webkit-opacity; -} - -.morehover .top { - width:268px; - height:39px; - background:url(../images/more_top.png) no-repeat; -} - -.morehover .mid { - width:228px; - background:url(../images/more_mid.png) repeat-y; - padding:10px 20px 0 20px; -} - -.morehover .mid .header { - border-bottom:1px solid #ccc; - font-weight:bold; -} - -.morehover .bottom { - width:268px; - height:6px; - background:url(../images/more_bottom.png) no-repeat; -} - -.morehover ul { - margin:10px 10px 20px 0; -} - -.morehover ul li { - list-style:none; -} - -.morehover ul li.active a, -.morehover ul li.active a:hover { - color:#222 !important; -} - -.morehover ul li.active img { - margin-right:4px; -} - - - - -/* MARQUEE */ -.slideshow-container { - width:100%; - overflow:hidden; - position:relative; -} -.slideshow-container .slideshow-prev { - position:absolute; - top:50%; - left:0px; - margin-top:-36px; - z-index:99; -} -.slideshow-container .slideshow-next { - position:absolute; - top:50%; - margin-top:-36px; - z-index:99; - right:0px; -} - -.slideshow-container .pagination { - position:absolute; - bottom:20px; - width:100%; - text-align:center; - z-index:99; -} -.slideshow-container .pagination ul { - margin:0; -} -.slideshow-container .pagination ul li{ - display: inline-block; - width:12px; - height:12px; - text-indent:-8000px; - list-style:none; - margin: 0 2px; - border-radius:6px; - background-color:#ccc; - cursor:pointer; - -webkit-transition:color .5s ease-in; - -moz-transition:color .5s ease-in; - -o-transition:color .5s ease-in; - transition:color .5s ease-in; -} -.slideshow-container .pagination ul li:hover { - background-color:#999; -} -.slideshow-container .pagination ul li.active { - background-color:#167c80; -} -.slideshow-container .pagination ul li.active:hover { - background-color:#167c80; -} -.slideshow-container ul li { - display:inline; - list-style:none; -} - - -#landing h1 { - margin:17px 0 20px 0 !important; -} - -a.download-sdk { - float:right; - margin:-10px 0; - height:30px; - padding-top:4px; - padding-bottom:0px; -} - -#nav-x { - padding-top: 13px; -} - -#nav-x .wrap { - min-height:32px; -} - -#nav-x .wrap, -#searchResults.wrap { - max-width:940px; - border-bottom:1px solid #CCC; -} - -#searchResults.wrap #leftSearchControl { - min-height:700px -} -.nav-x { - margin-left:0; - margin-bottom:0; -} - - - - - - - - - - -/* - * CSS Styles that are needed by jScrollPane for it to operate correctly. - */ - -.jspContainer { - overflow: hidden; - position: relative; -} - -.jspPane { - position: absolute; - width:100% !important; /* to avoid cut-off api names in reference in horiz scroll */ -} - -.jspVerticalBar { - position: absolute; - top: 0; - right: 0; - width: 4px; - height: 100%; - background: #f5f5f5; -} - -.jspHorizontalBar { - position: absolute; - bottom: 0; - left: 0; - width: 100%; - height: 4px; - background: #f5f5f5; -} - -.jspVerticalBar *, -.jspHorizontalBar * { - margin: 0; - padding: 0; -} -.jspCap { - display: block; -} - -.jspVerticalBar .jspCap { - height: 4px; -} - -.jspHorizontalBar .jspCap { - width: 0; - height: 100%; -} - -.jspHorizontalBar .jspCap { - float: left; -} - -.jspTrack { - position: relative; -} - -.jspDrag { - background: #bbb; - position: relative; - top: 0; - left: 0; - cursor: pointer; -} - -.jspDrag:hover, -.jspDrag:active { - border-color: #09c; - background-color: #4cadcb; - background-image: -webkit-gradient(linear, left top, right top, from(#5dbcd9), to(#4cadcb)); - background-image: -webkit-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -moz-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -ms-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: -o-linear-gradient(left, #5dbcd9, #4cadcb); - background-image: linear-gradient(left, #5dbcd9, #4cadcb); - filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#5dbcd9', EndColorStr='#4cadcb'); -} - -.jspHorizontalBar .jspTrack, -.jspHorizontalBar .jspDrag { - float: left; - height: 100%; -} - -.jspArrow { - background: #999; - text-indent: -20000px; - display: block; - cursor: pointer; -} - -.jspArrow.jspDisabled { - cursor: default; - background: #ccc; -} - -.jspVerticalBar .jspArrow { - height: 16px; -} - -.jspHorizontalBar .jspArrow { - width: 16px; - float: left; - height: 100%; -} - -.jspVerticalBar .jspArrow:focus { - outline: none; -} - -.jspCorner { - float: left; - height: 100%; -} - -/* Yuk! CSS Hack for IE6 3 pixel bug :( */ -* html .jspCorner { - margin: 0 -3px 0 0; -} -/******* end of jscrollpane *********/ - - - - - -/************ DEVELOP HOMEPAGE ******************/ - -/* Slideshow */ -.slideshow-develop { - height: 316px; - width: 940px; - position: relative; - overflow:hidden; -} -.slideshow-develop .frame { - width: 940px; - height: 316px; -} -.slideshow-develop img.play { - max-width:350px; - max-height:240px; - margin:20px 0 0 90px; - -webkit-transform: perspective(800px ) rotateY( 35deg ); - box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); - -moz-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); - -webkit-box-shadow: -16px 20px 40px rgba(0, 0, 0, 0.3); -} -.slideshow-develop img.play.no-shadow { - box-shadow: none; - -moz-box-shadow: none; - -webkit-box-shadow: none; -} -.slideshow-develop img.play.no-transform { - -webkit-transform: none; -} -.slideshow-develop a.slideshow-next { - background: url(../images/arrow-right-develop.png); -} -.slideshow-develop a.slideshow-prev { - background: url(../images/arrow-left-develop.png); -} -.slideshow-develop .content-right { - float: left; -} -.slideshow-develop .content-right h2 { - padding:0; - margin-bottom:10px; - border:none; - font-size:24px; -} -.slideshow-develop .item { - height: 300px; - width: 940px; -} -.slideshow-develop .pagination ul li.active { - background-color: #F80; -} -.slideshow-develop .pagination ul li.active:hover { - background-color: #F80; -} -.slideshow-develop .item hr { - margin:5px 0 10px; -} -.slideshow-develop .item p { - margin:10px 0; -} -.slideshow-develop .item p.title-intro { - position:absolute; - margin:0; -} - -/* Feeds */ -.feed ul { - margin: 0; -} -.feed .feed-nav { - height: 25px; - border-bottom: 1px solid #CCC; -} -.feed .feed-nav li { - list-style: none; - float: left; - height: 21px; /* +4px bottom border = 25px; same as .feed-nav */ - margin-right: 25px; - cursor: pointer; -} -.feed .feed-nav li.active { - color: #000; - border-bottom: 4px solid #F80; -} -.feed .feed-container { - overflow: hidden; - width: 460px; -} -.feed .feed-container .feed-frame { - width: 1000px; -} -.feed .feed-container .feed-frame ul { - float: left; - width:460px; -} -.feed .feed-container .feed-frame ul ul { - float: none; - margin:10px 0 0 30px; -} -.feed .feed-container .feed-frame li { - list-style: none; - margin: 20px 0 20px 0; - width: 460px; - height:93px; -} -.feed .feed-container .feed-frame li.playlist { - height:auto; -} -.feed .feed-container .feed-frame li.playlist a { - height:93px; - display:block; -} -.feed .feed-container .feed-frame li.more { - height:20px; - margin:10px 0 5px 5px; -} -.feed .feed-container .feed-frame li.more a { - height:inherit; -} -.feed .feed-container .feed-frame li.playlist-video { - list-style: none; - margin: 0; - width: 460px; - height:55px; - font-size:12px; -} -.feed .feed-container .feed-frame li.playlist-video a { - height:45px; - padding:5px; -} -.feed .feed-container .feed-frame li.playlist-video h5 { - font-size:12px; - line-height:13px; - margin:0; -} -.feed .feed-container .feed-frame li.playlist-video p { - margin:5px 0 0; - line-height:15px; -} -.feed-container .feed-frame div.feed-image { - float: left; - border: 1px solid #999; - margin:0 20px 0 0; - width:122px; - height:92px; - background:url('../images/blog-default.png') no-repeat 0 0; - background-size:180px; -} -#jd-content .feed .feed-container .feed-frame li img { - float: left; - border: 1px solid #999; - margin:0 20px 0 0; - width:122px; - height:92px; -} -#jd-content .feed .feed-container .feed-frame li.playlist-video img { - width:inherit; - height:inherit; -} - -.feed .feed-container .feed-frame li a, -.feed .feed-container .feed-frame li a:active { - color:#555 !important; -} - -.feed .feed-container .feed-frame li a:hover, -.feed .feed-container .feed-frame li a:hover * { - color:#7AA1B0 !important; -} - -/* Video player */ -#player-wrapper { - display:none; - margin: -1px auto 0; - position: relative; - width: 940px; - height: 0px; -} -#player-frame { - background: #EFEFEF; - border: 1px solid #CCC; - padding: 0px 207px; - z-index: 10; /* stay above marque, but below search suggestions */ - width: 525px; - height: 330px; - position: relative; -} - - - -/************ DEVELOP TOPIC CONTAINERS ************/ - -.landing-banner, -.landing-docs { - margin:20px 0; -} -.landing-banner > div:first-child, -.landing-docs > div:first-child, -.landing-docs > .col-12 { - margin-left:0; - min-height:280px; -} -.landing-banner.short > div { - min-height:50px; -} -.landing-banner > div:last-child, -.landing-docs > div:last-child, -.landing-docs > .col-12 { - margin-right:0; -} - -.landing-banner > div > *:last-child { - margin-bottom:0; -} -.landing-banner h1 { - margin-top:16px; - padding-bottom:24px; -} -.landing-docs, -.landing-banner { - clear:both; - overflow:hidden; -} -.landing-docs h3 { - font-size:14px; - line-height:21px; - color:#555; - text-transform:uppercase; - border-bottom:1px solid #CCC; - margin:0 0 20px; -} -.landing-docs a { - color:#333 !important; -} - -.landing-docs a:hover, -.landing-docs a:hover * { - color:#0C4446 !important -} - -.landing-docs .normal-links a { - color:#167c80 !important; -} - -.plusone { - float:right; -} - - - -.next-docs { - border-top:1px solid #ccc; - margin:40px 0 0; - padding:5px 0 0; - clear:left; - overflow:hidden; -} -.next-docs div:first-child { - margin-left:0; -} -.next-docs div:last-child { - margin-right:0; -} - -.next-docs h2 { - font-size:14px; - line-height:21px; - color:#555; - text-transform:uppercase; - border-bottom:none; - margin:0 0 1em; - padding:5px 0 0; -} - - - -/************* HOME/LANDING PAGE *****************/ - -.slideshow-home { - height: 500px; - width: 940px; - border-bottom: 1px solid #CCC; - position: relative; - margin: 0; -} -.slideshow-home .frame { - width: 940px; - height: 500px; -} -.slideshow-home .content-left { - float: left; - text-align: center; - vertical-align: center; - margin: 0 0 0 35px; -} -.slideshow-home .content-right { - margin: 80px 0 0 0; -} -.slideshow-home .content-right p { - margin-bottom: 10px; -} -.slideshow-home .content-right p:last-child { - margin-top: 15px; -} -.slideshow-home .content-right h1 { - padding:0; -} -.slideshow-home .item { - height: 500px; - width: 940px; -} -.home-sections { - padding: 30px 20px 20px; - margin: 20px 0; - background: -webkit-linear-gradient(top, #F6F6F6,#F9F9F9); -} -.home-sections ul { - margin: 0; -} -.home-sections ul li { - float: left; - display: block; - list-style: none; - width: 170px; - height: 35px; - border: 1px solid #ccc; - background: white; - margin-right: 10px; - border-radius: 1px; - -webkit-border-radius: 1px; - -moz-border-radius: 1px; - box-shadow: 1px 1px 5px #EEE; - -webkit-box-shadow: 1px 1px 5px #EEE; - -moz-box-shadow: 1px 1px 5px #EEE; - background: white; -} -.home-sections ul li:hover { - background: #F9F9F9; - border: 1px solid #CCC; -} -.home-sections ul li a, -.home-sections ul li a:hover { - font-weight: bold; - margin-top: 8px; - line-height: 18px; - float: left; - width: 100%; - text-align: center; - color: #09c !important; -} -.home-sections ul li a { - font-weight: bold; - margin-top: 8px; - line-height: 18px; - float: left; - width:100%; - text-align:center; -} -.home-sections ul li img { - float: left; - margin: -8px 0 0 10px; -} -.home-sections ul li.last { - margin-right: 0px; -} -.fullpage #footer { - margin-top: -40px; -} - -/************ DISTRIBUTE PAGES ******************/ - -.article-detail #body-content { - padding-top: 10px; -} - -/* A container for grid sets with uppercase h3 and rule */ -.dynamic-grid h3 { - font-size:14px; - line-height:21px; - color:#555; - text-transform:uppercase; - border-bottom:1px solid #CCC; - padding:8px 0 0 1px; - margin-bottom:14px; - clear:both; -} - -.top-right-float { - float: right; -} - -.clearfloat { - float: none; - clear: both; -} - -.border-img { - border: 1px solid #CCC; -} - -.center-img { - margin: auto; - text-align: center; -} -.center-img img { - margin-bottom: 15px; -} - -.figure img, .border-img { - margin-bottom: 15px; -} - -/************ RESOURCE CARDS ******************/ - -/* Resource cards, 12, 13, 16-col */ - -/* Basic card-styling with shadow */ -.resource-card { - border-radius: 1px; - box-shadow: 1px 2px 5px rgba(0, 0, 0, 0.12); - background: #fefefe; -} - -/* Styling for background image including tinting and section icons in stacks */ -.card-bg { - display: block; - position: absolute; - vertical-align: top; - width: 100%; - left: 0; - top: 0; - background-size: cover; - background-repeat: no-repeat; - background-position: center; - background-image: url(../images/resource-card-default-android.jpg); -} -.card-bg:after { - content: ""; - display: block; - height: 100%; - width: 100%; - opacity: 1; - background: rgba(0, 0, 0, 0.2); - -webkit-transition: opacity 0.5s; - -moz-transition: opacity 0.5s; - -o-transition: opacity 0.5s; - transition: opacity 0.5s; -} -.static .card-bg:after { - display:none; -} -.card-bg .card-section-icon { - position: absolute; - top: 50%; - width: 100%; - margin-top: -35px; - text-align: center; - padding-top: 65px; - z-index: 100; -} -.card-bg .card-section-icon .icon { - position: absolute; - left: 50%; - margin-left: -28px; - top: 0px; - width: 56px; - height: 56px; - background-repeat: no-repeat; - background-position: 50% 50%; - background-image: url(../images/stack-icon.png); -} -.card-bg .card-section-icon .section { - text-transform: uppercase; - color: white; - font-size: 14px; -} - -.card-info { - position: absolute; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - box-sizing: border-box; - top: 0; - right: 0; - bottom: 0; - left: 0; - overflow: hidden; - background: #fefefe; - padding: 4px 12px 6px 12px; -} -.card-info .section { - text-transform: uppercase; - color: #898989; - font-size: 12px; - margin-bottom: 1px; -} -.card-info .title { - color: #363636; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - padding-bottom: 5px; - margin-bottom: -2px; - font-size: 16px; -} -.card-info .description { - overflow: hidden; -} -.card-info .description .text { - color: #464646; - font: 13px/15px Roboto Condensed; - overflow: hidden; - width:100%; -} -.card-info .description .util { - position: absolute; - right: 5px; - bottom: 70px; /*-2px;*/ - opacity: 0; - -webkit-transition: opacity 0.5s; - -moz-transition: opacity 0.5s; - -o-transition: opacity 0.5s; - transition: opacity 0.5s; -} -.card-info.empty-desc .title { - white-space: normal; - overflow: visible; -} -.card-info.empty-desc .description { - display: none; -} -/* Truncate card summaries at bounding box and - * and apply ellipsis at lower right */ -.ellipsis { - overflow: hidden; - float:right; - line-height: 15px; - width:100%; -} -.resource-card-6x6 .card-info .description .teddddddxt { - float:left; - position:relative; - margin-left:0; -} -.ellipsis:before { - content:""; - float: left; - width: 5px; - height:100%; -} -.ellipsis > *:first-child.text { - float: right; - width: 100% !important; - margin-left: -5px; -} -.ellipsis:after { - content: "\02026"; - height:17px; - padding-bottom:4px; - - box-sizing: content-box; - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - - float: right; position: relative; - top: -16px; left: 100%; - width: 4em; margin-left: -4em; - padding-right: 5px; - - background: -webkit-gradient(linear, left top, right top, - from(rgba(255, 255, 255, 0)), to(white), color-stop(65%, white)); - background: -moz-linear-gradient(to right, rgba(255, 255, 255, 0), white 65%, white); - background: -o-linear-gradient(to right, rgba(255, 255, 255, 0), white 65%, white); - background: -ms-linear-gradient(to right, rgba(255, 255, 255, 0), white 65%, white); - background: linear-gradient(to right, rgba(255, 255, 255, 0), white 65%, white); -} -.ellipsis:after { - font-style: normal; color: #aaa; - font-size:13px; - text-align: right; -} - -/* Flow Layout */ -.resource-flow-layout { - display: inline-block; -} -.resource-flow-layout .resource-card, .resource-flow-layout .resource-card-stack { - float: left; - position: relative; -} -.resource-flow-layout .resource-card-stack > .resource-card { - margin-right: 0px !important; -} -.resource-flow-layout:after { - content: "."; - display: block; - height: 0; - position:relative; - clear: both; - visibility: hidden; -} -.resource-card:hover { - cursor: pointer; -} -.static .resource-card:hover { - cursor: auto; -} -.resource-card:hover .card-bg:after { - opacity: 0; -} -/* disabled to make way for fade/ellipsis truncation, - and the plusone moves up. -.resource-card:hover .card-info .description .text { - padding-right: 70px; -} */ -.resource-card:hover .card-info .description .util { - opacity: 1; -} - -/* Carousel Layout */ -/* Carousel styles for landing page */ -.resource-carousel-layout { - margin: 20px 0 20px 0; - position: relative; - overflow: hidden; -} -.resource-carousel-layout .slideshow-prev, .resource-carousel-layout .slideshow-next { - display: none; -} -.resource-carousel-layout .pagination { - bottom: 0px; -} -.resource-carousel-layout .frame li { - position: relative; -} -.resource-carousel-layout .frame li .card-bg { - height: 300px; -} -.resource-carousel-layout .frame li .card-info { - padding: 7px 15px 0px 15px; - top: 300px; -} -.resource-carousel-layout .frame li .card-info .section { - font-size: 13px; - margin-bottom: 7px; -} -.resource-carousel-layout .frame li .card-info .title { - font-size: 25px; - margin-bottom: 2px; -} -.resource-carousel-layout .frame li .card-info .description { - font-family: 15px/16px Roboto Condensed, sans-serif; -} -.resource-carousel-layout .frame li .card-info .description .text { - height: 40px; -} -.resource-carousel-layout .frame li .card-info .description .util { - bottom:97px; - right:4px; -} - -/* Stack Layout */ -.resource-stack-layout { - display: inline-block; -} -.resource-stack-layout .resource-card-stack { - float: left; - position: relative; -} -.resource-stack-layout .resource-card { - margin-bottom: 20px; - display: block; - position: relative; -} -.resource-stack-layout .section-card-menu > .card-info .section, .resource-stack-layout .section-card > .card-info .title { - /*text-transform: uppercase;*/ - color: #898989; - font-size: 17px; - line-height: 24px; - margin-bottom: 6px; -} -.resource-stack-layout .section-card { - height: 284px; -} -.resource-stack-layout .section-card > .card-bg { - height: 192px; -} -.resource-stack-layout .section-card > .card-info { - padding: 4px 12px 6px 12px; - top: 192px; -} -.resource-stack-layout .section-card > .card-info .section { - display: none; -} -.resource-stack-layout .section-card > .card-info .title { - font-size: 17px; - border-bottom: 1px solid #959595; - padding-bottom: 0px; -} -.resource-stack-layout .section-card > .card-info .description { - font-size: 13px; - line-height: 15px; -} -.resource-stack-layout .section-card > .card-info .description .text { - height: 30px; -} -.resource-stack-layout .related-card { - height: 90px; -} -.resource-stack-layout .related-card > .card-bg { - left: 0; - top: 0; - width: 90px; - height: 100%; - position: absolute; - display: block; -} -.resource-stack-layout .related-card > .card-info { - left: 90px; - padding: 4px 12px 4px 12px; -} -.resource-stack-layout .related-card > .card-info .section { - font-size: 12px; - margin-bottom: 1px; - display: none; -} -.resource-stack-layout .related-card > .card-info .title { - font-size: 16px; - margin-bottom: -2px; - white-space: normal; - overflow: visible; - text-overflow: ellipsis; -} -.resource-stack-layout .related-card > .card-info .title:after { - content: url(../images/link-out.png); - display: block; -} -.resource-stack-layout .related-card > .card-info .description { - display: none; -} -.resource-stack-layout .section-card-menu { - /* Flexible height */ - display: block; - height: auto; - width: auto; -} -.resource-stack-layout .section-card-menu .card-bg { - height: 155px; - /* Flexible height */ - position: relative; - display: inline-block; - vertical-align: top; -} -.resource-stack-layout .section-card-menu .card-info { - padding: 4px 12px 0px 12px; - /* Flexible height */ - position: relative; - left: auto; - top: auto; - right: auto; - bottom: auto; -} -.resource-stack-layout .section-card-menu .card-info ul { - list-style: none; - margin: 0; -} -.resource-stack-layout .section-card-menu .card-info ul li { - list-style: none; - margin: 0; - padding: 15px 0; - border-top-width: 1px; - border-top-style: solid; - border-top-color: #959595; -} -.resource-stack-layout .section-card-menu .card-info ul li a, .resource-stack-layout .section-card-menu .card-info ul li a:focus, .resource-stack-layout .section-card-menu .card-info ul li a:link, .resource-stack-layout .section-card-menu .card-info ul li a:visited, .resource-stack-layout .section-card-menu .card-info ul li a:active, .resource-stack-layout .section-card-menu .card-info ul li a:hover { - color: #363636 !important; -} -.resource-stack-layout .section-card-menu .card-info ul li:first-child { - border-top: none; -} -.resource-stack-layout .section-card-menu .card-info ul li:hover .title:after { - opacity: 1; - -webkit-transition: opacity 0.5s; - -moz-transition: opacity 0.5s; - -o-transition: opacity 0.5s; - transition: opacity 0.5s; -} -.resource-stack-layout .section-card-menu .card-info ul li:hover .description { - max-height: 30px; - opacity: 1; - -webkit-transition: max-height 0.5s, opacity 1s; - -moz-transition: max-height 0.5s, opacity 1s; - -o-transition: max-height 0.5s, opacity 1s; - transition: max-height 0.5s, opacity 1s; -} -.resource-stack-layout .section-card-menu .card-info .title { - font-size: 16px; - margin-bottom: -2px; - position: relative; -} -.resource-stack-layout .section-card-menu .card-info .title:after { - background: url(../images/stack-arrow-right.png); - content: ''; - opacity: 0; - -webkit-transition: opacity 0.25s; - -moz-transition: opacity 0.25s; - -o-transition: opacity 0.25s; - transition: opacity 0.25s; - position: absolute; - right: 0px; - top: 3px; - width: 10px; - height: 15px; -} -.resource-stack-layout .section-card-menu .card-info .title.more { - text-transform: uppercase; - color: #898989; - display: inline-block; -} -.resource-stack-layout .section-card-menu .card-info .title.more:after { - background: url(../images/stack-arrow-right.png); - content: ''; - display: block; - position: absolute; - right: -20px; - top: 3px; - width: 10px; - height: 15px; -} -.resource-stack-layout .section-card-menu .card-info .description { - max-height: 0px; - opacity: 0; - overflow: hidden; - font-size: 13px; - line-height: 15px; - /* Hover off */ - -webkit-transition: max-height 0.5s, opacity 0.5s; - -moz-transition: max-height 0.5s, opacity 0.5s; - -o-transition: max-height 0.5s, opacity 0.5s; - transition: max-height 0.5s, opacity 0.5s; -} -.resource-stack-layout .section-card-menu .card-info .description .text { - height: 30px; -} -.resource-stack-layout:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} - -/* Generate the flow layout styles for a 3-column 16-col span */ -.resource-flow-layout.col-16 { - margin: 0 -14px 0 0; - width: 954px; -} -.resource-flow-layout.col-16 .resource-card, .resource-flow-layout.col-16 .resource-card-stack { - margin: 0 14px 20px 0; -} -.resource-flow-layout.col-16 .resource-card-row-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-16 .resource-card-col-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-16 .resource-card-3x6 { - width: 145px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-3x12 { - width: 145px; - height: 588px; -} -.resource-flow-layout.col-16 .resource-card-3x18 { - width: 145px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-6x6 { - width: 304px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-6x12 { - width: 304px; - height: 588px; -} -.resource-flow-layout.col-16 .resource-card-6x18 { - width: 304px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-9x6 { - width: 463px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-9x12 { - width: 463px; - height: 588px; -} -.resource-flow-layout.col-16 .resource-card-9x18 { - width: 463px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-12x6 { - width: 622px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-12x12 { - width: 622px; - height: 588px; -} -.resource-flow-layout.col-16 .resource-card-12x18 { - width: 622px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-15x6 { - width: 781px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-15x12 { - width: 781px; - height: 588px; -} -.resource-flow-layout.col-16 .resource-card-15x18 { - width: 781px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-18x6 { - width: 940px; - height: 284px; -} -.resource-flow-layout.col-16 .resource-card-18x12 { - width: 940px; - height: 420px; -} -.resource-flow-layout.col-16 .resource-card-18x18 { - width: 940px; - height: 892px; -} -.resource-flow-layout.col-16 .resource-card-3x2 { - width: 145px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-3x2x3 { - width: 145px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-3x3 { - width: 145px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-3x3x2 { - width: 145px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-16 .resource-card-6x2 { - width: 304px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-6x2x3 { - width: 304px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-6x3 { - width: 304px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-6x3x2 { - width: 304px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-16 .resource-card-9x2 { - width: 463px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-9x2x3 { - width: 463px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-9x3 { - width: 463px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-9x3x2 { - width: 463px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-16 .resource-card-12x2 { - width: 622px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-12x2x3 { - width: 622px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-12x3 { - width: 622px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-12x3x2 { - width: 622px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-16 .resource-card-15x2 { - width: 781px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-15x2x3 { - width: 781px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-15x3 { - width: 781px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-15x3x2 { - width: 781px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-16 .resource-card-18x2 { - width: 940px; - height: 95px; -} -.resource-flow-layout.col-16 .resource-card-18x2x3 { - width: 940px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-16 .resource-card-18x3 { - width: 940px; - height: 142px; -} -.resource-flow-layout.col-16 .resource-card-18x3x2 { - width: 940px; - height: 138px; - margin-bottom: 8px; -} - -/* Generate the flow layout styles for a 3-column 16-col span */ -.resource-flow-layout.col-12 { - margin: 0 -14px 0 0; - width: 714px; -} - -.resource-flow-layout.col-12 .resource-card, .resource-flow-layout.col-12 .resource-card-stack { - margin: 0 14px 20px 0; -} -.resource-flow-layout.col-12 .resource-card-row-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-12 .resource-card-col-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-12 .resource-card-3x6 { - width: 105px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-3x12 { - width: 105px; - height: 588px; -} -.resource-flow-layout.col-12 .resource-card-3x18 { - width: 105px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-6x6 { - width: 224px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-6x12 { - width: 224px; - height: 588px; -} -.resource-flow-layout.col-12 .resource-card-6x18 { - width: 224px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-9x6 { - width: 343px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-9x12 { - width: 343px; - height: 588px; -} -.resource-flow-layout.col-12 .resource-card-9x18 { - width: 343px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-12x6 { - width: 462px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-12x12 { - width: 462px; - height: 588px; -} -.resource-flow-layout.col-12 .resource-card-12x18 { - width: 462px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-15x6 { - width: 581px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-15x12 { - width: 581px; - height: 588px; -} -.resource-flow-layout.col-12 .resource-card-15x18 { - width: 581px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-18x6 { - width: 700px; - height: 284px; -} -.resource-flow-layout.col-12 .resource-card-18x12 { - width: 700px; - height: 420px; -} -.resource-flow-layout.col-12 .resource-card-18x18 { - width: 700px; - height: 892px; -} -.resource-flow-layout.col-12 .resource-card-3x2 { - width: 105px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-3x2x3 { - width: 105px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-3x3 { - width: 105px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-3x3x2 { - width: 105px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-12 .resource-card-6x2 { - width: 224px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-6x2x3 { - width: 224px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-6x3 { - width: 224px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-6x3x2 { - width: 224px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-12 .resource-card-9x2 { - width: 343px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-9x2x3 { - width: 343px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-9x3 { - width: 343px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-9x3x2 { - width: 343px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-12 .resource-card-12x2 { - width: 462px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-12x2x3 { - width: 462px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-12x3 { - width: 462px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-12x3x2 { - width: 462px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-12 .resource-card-15x2 { - width: 581px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-15x2x3 { - width: 581px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-15x3 { - width: 581px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-15x3x2 { - width: 581px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-12 .resource-card-18x2 { - width: 700px; - height: 95px; -} -.resource-flow-layout.col-12 .resource-card-18x2x3 { - width: 700px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-12 .resource-card-18x3 { - width: 700px; - height: 142px; -} -.resource-flow-layout.col-12 .resource-card-18x3x2 { - width: 700px; - height: 138px; - margin-bottom: 8px; -} - -/* Generate the flow layout styles for a 3-column 13-col span */ - -.resource-flow-layout.col-13 { - margin: 0 -14px 0 0; - width: 774px; -} -.resource-flow-layout.col-13 .resource-card, .resource-flow-layout.col-13 .resource-card-stack { - margin: 0 14px 20px 0; -} -.resource-flow-layout.col-13 .resource-card-row-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-13 .resource-card-col-stack-last { - margin-bottom: 0px !important; -} -.resource-flow-layout.col-13 .resource-card-3x6 { - width: 115px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-3x12 { - width: 115px; - height: 588px; -} -.resource-flow-layout.col-13 .resource-card-3x18 { - width: 115px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-6x6 { - width: 244px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-6x12 { - width: 244px; - height: 588px; -} -.resource-flow-layout.col-13 .resource-card-6x18 { - width: 244px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-9x6 { - width: 373px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-9x12 { - width: 373px; - height: 588px; -} -.resource-flow-layout.col-13 .resource-card-9x18 { - width: 373px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-12x6 { - width: 502px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-12x12 { - width: 502px; - height: 588px; -} -.resource-flow-layout.col-13 .resource-card-12x18 { - width: 502px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-15x6 { - width: 631px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-15x12 { - width: 631px; - height: 588px; -} -.resource-flow-layout.col-13 .resource-card-15x18 { - width: 631px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-18x6 { - width: 760px; - height: 284px; -} -.resource-flow-layout.col-13 .resource-card-18x12 { - width: 760px; - height: 420px; -} -.resource-flow-layout.col-13 .resource-card-18x18 { - width: 760px; - height: 892px; -} -.resource-flow-layout.col-13 .resource-card-3x2 { - width: 115px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-3x2x3 { - width: 115px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-3x3 { - width: 115px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-3x3x2 { - width: 115px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-13 .resource-card-6x2 { - width: 244px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-6x2x3 { - width: 244px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-6x3 { - width: 244px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-6x3x2 { - width: 244px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-13 .resource-card-9x2 { - width: 373px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-9x2x3 { - width: 373px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-9x3 { - width: 373px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-9x3x2 { - width: 373px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-13 .resource-card-12x2 { - width: 502px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-12x2x3 { - width: 502px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-12x3 { - width: 502px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-12x3x2 { - width: 502px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-13 .resource-card-15x2 { - width: 631px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-15x2x3 { - width: 631px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-15x3 { - width: 631px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-15x3x2 { - width: 631px; - height: 138px; - margin-bottom: 8px; -} -.resource-flow-layout.col-13 .resource-card-18x2 { - width: 760px; - height: 95px; -} -.resource-flow-layout.col-13 .resource-card-18x2x3 { - width: 760px; - height: 90px; - margin-bottom: 7px; -} -.resource-flow-layout.col-13 .resource-card-18x3 { - width: 760px; - height: 142px; -} -.resource-flow-layout.col-13 .resource-card-18x3x2 { - width: 760px; - height: 138px; - margin-bottom: 8px; -} - -/* - The following are styles for cards in the flowlayout above, styled by the number of rows they span -*/ -/* Single row items, might be simpler to just apply a class */ -.resource-card-3x6 > .card-bg, .resource-card-6x6 > .card-bg, .resource-card-9x6 > .card-bg, .resource-card-12x6 > .card-bg, .resource-card-15x6 > .card-bg, .resource-card-18x6 > .card-bg { - height: 192px; -} -.resource-card-3x6 > .card-info, .resource-card-6x6 > .card-info, .resource-card-9x6 > .card-info, .resource-card-12x6 > .card-info, .resource-card-15x6 > .card-info, .resource-card-18x6 > .card-info { - padding: 4px 12px 6px 12px; - top: 192px; -} -.resource-card-3x6 > .card-info .section, .resource-card-6x6 > .card-info .section, .resource-card-9x6 > .card-info .section, .resource-card-12x6 > .card-info .section, .resource-card-15x6 > .card-info .section, .resource-card-18x6 > .card-info .section { - font-size: 12px; - margin-bottom: 1px; -} -.resource-card-3x6 > .card-info .title, .resource-card-6x6 > .card-info .title, .resource-card-9x6 > .card-info .title, .resource-card-12x6 > .card-info .title, .resource-card-15x6 > .card-info .title, .resource-card-18x6 > .card-info .title { - font-size: 16px; - margin-bottom: -2px; -} -.resource-card-3x6 > .card-info .description, .resource-card-6x6 > .card-info .description, .resource-card-9x6 > .card-info .description, .resource-card-12x6 > .card-info .description, .resource-card-15x6 > .card-info .description, .resource-card-18x6 > .card-info .description { - font-size: 13px; - line-height: 15px; -} -.resource-card-3x6 > .card-info .description .text, .resource-card-6x6 > .card-info .description .text, .resource-card-9x6 > .card-info .description .text, .resource-card-12x6 > .card-info .description .text, .resource-card-15x6 > .card-info .description .text, .resource-card-18x6 > .card-info .description .text { - height: 30px; -} - -/* Double row items */ -.resource-card-3x12 > .card-bg, .resource-card-6x12 > .card-bg, .resource-card-9x12 > .card-bg, .resource-card-12x12 > .card-bg, .resource-card-15x12 > .card-bg, .resource-card-18x12 > .card-bg { - height: 320px; -} -.resource-card-3x12 > .card-info, .resource-card-6x12 > .card-info, .resource-card-9x12 > .card-info, .resource-card-12x12 > .card-info, .resource-card-15x12 > .card-info, .resource-card-18x12 > .card-info { - padding: 4px 12px 6px 12px; - top: 320px; -} -.resource-card-3x12 > .card-info .section, .resource-card-6x12 > .card-info .section, .resource-card-9x12 > .card-info .section, .resource-card-12x12 > .card-info .section, .resource-card-15x12 > .card-info .section, .resource-card-18x12 > .card-info .section { - font-size: 12px; - margin-bottom: 1px; -} -.resource-card-3x12 > .card-info .title, .resource-card-6x12 > .card-info .title, .resource-card-9x12 > .card-info .title, .resource-card-12x12 > .card-info .title, .resource-card-15x12 > .card-info .title, .resource-card-18x12 > .card-info .title { - font-size: 16px; - margin-bottom: -2px; - white-space: normal; -} -.resource-card-3x12 > .card-info .description, .resource-card-6x12 > .card-info .description, .resource-card-9x12 > .card-info .description, .resource-card-12x12 > .card-info .description, .resource-card-15x12 > .card-info .description, .resource-card-18x12 > .card-info .description { - font-size: 13px; - line-height: 15px; -} - -/* 1/3 row items */ -.resource-card-3x2 > .card-bg, .resource-card-6x2 > .card-bg, .resource-card-9x2 > .card-bg, .resource-card-12x2 > .card-bg, .resource-card-15x2 > .card-bg, .resource-card-18x2 > .card-bg { - left: 0; - top: 0; - width: 90px; - height: 100%; - position: absolute; - display: block; -} -.resource-card-3x2 > .card-info, .resource-card-6x2 > .card-info, .resource-card-9x2 > .card-info, .resource-card-12x2 > .card-info, .resource-card-15x2 > .card-info, .resource-card-18x2 > .card-info { - left: 90px; - padding: 4px 12px 4px 12px; - height: 80px; - overflow: hidden; -} -.resource-card-3x2 > .card-info .section, .resource-card-6x2 > .card-info .section, .resource-card-6x3 > .card-info .section, .resource-card-9x2 > .card-info .section, .resource-card-12x2 > .card-info .section, .resource-card-15x2 > .card-info .section, .resource-card-18x2 > .card-info .section { - font-size: 12px; - margin-bottom: 1px; - /* display: none; */ -} -.resource-card-3x2 > .card-info .title, .resource-card-6x2 > .card-info .title, .resource-card-9x2 > .card-info .title, .resource-card-12x2 > .card-info .title, .resource-card-15x2 > .card-info .title, .resource-card-18x2 > .card-info .title { - font-size: 16px; - margin-bottom: -2px; - white-space: normal; - overflow: visible; - text-overflow: ellipsis; -} -.resource-card-3x2 > .card-info .title:after, .resource-card-6x2 > .card-info .title:after, .resource-card-9x2 > .card-info .title:after, .resource-card-12x2 > .card-info .title:after, .resource-card-15x2 > .card-info .title:after, .resource-card-18x2 > .card-info .title:after { - /* content: url(../images/link-out.png); */ - display: block; -} -.resource-card-3x2 > .card-info .description, .resource-card-6x2 > .card-info .description, .resource-card-9x2 > .card-info .description, .resource-card-12x2 > .card-info .description, .resource-card-15x2 > .card-info .description, .resource-card-18x2 > .card-info .description { - display: none; -} - - -/* Override to show the description instead of the content section */ -.no-section .resource-card-3x2 > .card-info .section, -.no-section .resource-card-6x2 > .card-info .section { - display: none; -} -.no-section .resource-card-3x2 > .card-info .description, -.no-section .resource-card-6x2 > .card-info .description { - display: block; -} - -/* 1/2 row items */ -.resource-card-3x3 > .card-bg, .resource-card-6x3 > .card-bg, .resource-card-9x3 > .card-bg, .resource-card-12x3 > .card-bg, .resource-card-15x3 > .card-bg, .resource-card-18x3 > .card-bg { - left: 0; - top: 0; - width: 90px; - height: 100%; - position: absolute; - display: block; -} -.resource-card-3x3 > .card-info, .resource-card-6x3 > .card-info, .resource-card-9x3 > .card-info, .resource-card-12x3 > .card-info, .resource-card-15x3 > .card-info, .resource-card-18x3 > .card-info { - left: 90px; - padding: 4px 12px 0px 12px; -} -.resource-card-3x3 > .card-info .section, .resource-card-6x3 > .card-info .section, .resource-card-9x3 > .card-info .section, .resource-card-12x3 > .card-info .section, .resource-card-15x3 > .card-info .section, .resource-card-18x3 > .card-info .section { - font-size: 12px; - margin-bottom: 1px; - display: none; -} -.resource-card-3x3 > .card-info .title, .resource-card-6x3 > .card-info .title, .resource-card-9x3 > .card-info .title, .resource-card-12x3 > .card-info .title, .resource-card-15x3 > .card-info .title, .resource-card-18x3 > .card-info .title { - font-size: 16px; - margin-bottom: -2px; - white-space: normal; - overflow: visible; -} -.resource-card-3x3 > .card-info .description .text, .resource-card-6x3 > .card-info .description .text, .resource-card-9x3 > .card-info .description .text, .resource-card-12x3 > .card-info .description .text, .resource-card-15x3 > .card-info .description .text, .resource-card-18x3 > .card-info .description .text { - font-size: 12px; - line-height: 15px; - padding-right: 0px !important; - height: 80px; -} -.resource-card-3x3 > .card-info .description .util, .resource-card-6x3 > .card-info .description .util, .resource-card-9x3 > .card-info .description .util, .resource-card-12x3 > .card-info .description .util, .resource-card-15x3 > .card-info .description .util, .resource-card-18x3 > .card-info .description .util { - display: none; -} -/* placement of plusone */ -.resource-card-6x12 > .card-info .description .util, .resource-card-9x12 > .card-info .description .util, .resource-card-12x12 > .card-info .description .util, .resource-card-15x12 > .card-info .description .util { - bottom:2px; -} -.resource-card-18x12 > .card-info .description .util { - bottom:2px; -} -/* Overrides for col-16 6x6 cards linking to local content on landing pages. - Suppresses "section" and puts the title above a hairline rule. */ -.landing .card-info .section, .resource-flow-layout.col-16.landing .resource-card-9x6 .card-info .section { - display:none; -} -.landing .card-info .title { - color: #898989; - font-size: 17px; - line-height: 24px; - margin-bottom: 6px; - border-bottom: 1px solid #959595; - padding-bottom: 0px; -} -.landing .card-info .description { - font-size: 13px; - line-height: 15px; -} -.landing .card-info .description .text { -height:30px; -} -.landing .resource-card-6x6 > .card-info .description .util, .landing .resource-card-9x6 > .card-info .description .util { - bottom:2px; -} -/* - Generate a resource stack layout for a 3 column widget spanning 16 grid cols -*/ -.resource-stack-layout.col-16 { - margin: 0 -14px 0 0; - width: 954px; -} -.resource-stack-layout.col-16 .resource-card-stack { - margin: 0 14px 0 0; - width: 304px; -} - -/* Example of card menu tinting */ -.resource-widget[data-section=distribute\/tools] .section-card-menu -.card-bg:after { - background: rgba(126, 55, 148, 0.4) !important; -} -.resource-widget[data-section=distribute\/tools] .section-card-menu -.card-section-icon .icon { - background-color: #7e3794 !important; -} -.resource-widget[data-section=distribute\/tools] .section-card-menu -.card-info ul li { - border-top-color: #7e3794 !important; -} - -/* tinting for stacks */ - -div.jd-descr > .resource-widget[data-section=distribute\/tools] -.section-card-menu .card-info ul li { - border-top-color: #7e3794 !important; -} - - - -/** - * UTILITIES - */ - - -.border-box { - box-sizing: border-box; -} - -.vertical-center-outer { - display: table; - height: 100%; - width: 100%; -} - -.vertical-center-inner { - display: table-cell; - vertical-align: middle; -} - -/** - * TYPE STYLES - */ - -.landing-h1 { - font-weight: 100; - font-size: 60px; - line-height: 78px; - text-align: center; - letter-spacing: -1px; -} - -.landing-pre-h1 { - font-weight: 400; - font-size: 28px; - color: #93B73F; - line-height: 36px; - text-align: center; - letter-spacing: -1px; - text-transform: uppercase; - -} - -.landing-h1.hero { - text-align: left; -} - -.landing-h2 { - font-weight: 300; - font-size: 42px; - line-height: 64px; - text-align: center; -} - -.landing-subhead { - color: #999999; - font-size: 20px; - line-height: 28px; - font-weight:300; - text-align: center; -} -.landing-subhead.hero { - text-align: left; - color: white; -} - -.landing-hero-description { - text-align: left; - margin: 1em 0; -} - -.landing-hero-description p { - font-weight: 300; - margin: 0; - font-size: 18px; - line-height: 24px; -} - -.landing-body .landing-small { - font-size: 14px; - line-height: 19px; -} - -.landing-body.landing-align-center { - text-align: center; -} - -.landing-align-left { - text-align: left; -} - -/** - * LAYOUT - */ - -#body-content, -.fullpage, -#jd-content, -.jd-descr, -.landing-body-content { - height: 100%; -} - -.landing-section { - padding: 80px 10px 80px; - width: 100%; - margin-left: -10px; - text-rendering: optimizeLegibility; -} - -#extending-android-to-wearables { - padding-top: 30px; -} - -.landing-short-section { - padding: 40px 10px 28px; -} - -.landing-gray-background { - background-color: #e9e9e9; -} - -.landing-white-background { - background-color: white; -} - -.landing-red-background { - color: white; - background-color: hsl(8, 70%, 54%); -} - -.landing-subhead-red { - color: hsl(8, 71%, 84%); - text-align: left; -} - -.landing-subhead-red p { - margin-top: 20px; -} - -.landing-hero-container { - height: 100%; -} - - -.preview-hero { - height: calc(100% - 110px); - min-height: 504px; - margin-top: -5px; - padding-top: 0; - padding-bottom: 0; - background-image: url(../../preview/images/hero.jpg); - background-size: cover; - background-position: right center; - color: white; - position: relative; - overflow: hidden; -} - -.wear-hero { - height: calc(100% - 110px); - min-height: 504px; - margin-top: -5px; - padding-top: 0; - padding-bottom: 0; - background-image: url(../../wear/images/hero.jpg); - background-size: cover; - background-position: top center; - color: white; - position: relative; - overflow: hidden; -} - -.tv-hero { - height: calc(100% - 110px); - min-height: 504px; - margin-top: -5px; - padding-top: 0; - padding-bottom: 0; - background-image: url(../../tv/images/hero.jpg); - background-size: cover; - background-position: right center; - color: white; - position: relative; - overflow: hidden; -} - -.auto-hero { - height: calc(100% - 110px); - min-height: 504px; - margin-top: -5px; - padding-top: 0; - padding-bottom: 0; - background-image: url(../../auto/images/hero.jpg); - background-size: cover; - background-position: right center; - color: white; - position: relative; - overflow: hidden; -} - -.landing-hero-scrim { - background: black; - opacity: .2; - position: absolute; - width: 100%; - height: 100%; - margin-left: -10px; -} - -.landing-hero-wrap { - margin: 0 auto; - width: 940px; - clear: both; - height: 100%; - position: relative; -} - -.landing-section-header { - margin-bottom: 40px; -} - -.landing-hero-wrap .landing-section-header { - margin-bottom: 16px; -} - -.landing-body { - font-size: 18px; - line-height: 24px; -} - -.landing-button { - white-space: nowrap; - display: inline-block; - padding: 16px 32px; - font-size: 18px; - font-weight: 500; - line-height: 24px; - cursor: pointer; - color: white; - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -webkit-transition: .2s background-color ease-in-out; - -moz-transition: .2s background-color ease-in-out; - -o-transition: .2s background-color ease-in-out; - transition: .2s background-color ease-in-out; -} - -.landing-primary { - background-color: hsl(8, 70%, 44%); - color: #f8f8f8; -} - -.landing-button.landing-primary:hover { - background-color: hsl(8, 70%, 36%); -} - -.landing-button.landing-primary:active { - background-color: hsl(8, 70%, 30%); -} - -.landing-button.landing-secondary { - background-color: #2faddb; -} - -.landing-button.landing-secondary:hover { - background-color: #09c; -} - -.landing-button.landing-secondary:active { - background-color: #3990ab; -} - -a.landing-button, -a.landing-button:hover, -a.landing-button:visited { - color: white !important; -} - -.landing-video-link { - white-space: nowrap; - display: inline-block; - padding: 16px 32px 16px 82px; - font-size: 18px; - font-weight: 400; - line-height: 24px; - cursor: pointer; - color: hsla(0, 0%, 100%, .8); - -webkit-user-select: none; - -moz-user-select: none; - -o-user-select: none; - user-select: none; - -webkit-transition: .2s color ease-in-out; - -moz-transition: .2s color ease-in-out; - -o-transition: .2s color ease-in-out; - transition: .2s color ease-in-out; -} - -.landing-video-link:before { - height: 64px; - width: 64px; - display: inline-block; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAFuklEQVR42u2dXWgcVRSAV9LWtBBTTZVWUhNqEQtq1QeroDRKFRFsROqTYPuo+JCiIoJKFC0USqlUfCiowRcfrBgVUUElefAPkW5T8aeaGn9aRbFsjP0x2cx8PuRMvFxmdjeb2Z17Z8+B85DsZPbO+eaec3/OPSkABdXsVI2gABSAqgJQAKoKQAGoKgAFoKoAFICqAlAAqgpAAai6DqDRAiwDeoFtwB7gPaAInABKwKToCWAMeB/YDdwJrAWWNLh9+QMAXABsBQ4A3wFTwAxQBmaBAAhjNJDPy3L938BXwAvArUCHAkh+kCXAVcA+YBw4bRg7MngtkgTlDPA98CywHmhTAP8/xCbgVeAvMZZpwDQllN7xB/AysKGlAQAXAvuBkzW85UVgCBgENlfQQbmuWAXELPAnsAvoaikAQBtwh/j3coLhS2LIfqCzzu/plL8fkvvFgZiR4L2lHrfkHQBgpQTFUwmGnwC212v0KjC2y/3jQPwDPA+05xYAcBHwubx1YZzhC02QBBBRbxgBzssdAOBy4JgRZE0ZTPuNr7FHDCbEhqNAd24AAN0yUbID7QSwsZChABut3hANXY8Bq70HIMb/Ocb4w81+66v0hmGrN0QQ1ngLQJYRvpWHMWWo4KDIaMnuCcVKgdlZAGL8t2J8vpPGrwChDLyWBMFlAA8D0z4ZvwKEs8D93gCQEc9Jy/jFgkdizaRDGUSs8wXAu1bQLQE9ngHosWbPAXDQeQAypT9rBd3+gociyxi2K9riLABZUj5iuZ6RgsciM2OzFxw2A7JrAO6VwGtKTwpG+Anoy9AVmb3gDHCPcwCAFcChRox6jPu9CazMeFQUAKNRL3AJwE2yopjq228BQPZ/d2bcCyaBTa4BeNGa8Q6naIA4GQWubiKEYWvBbp8zAGQt5VfL/fQ3GEAkTzXDLVkjokA2k5a7AuA2GaLNj/tTfvhq0pQgbcwLQtlQusYVALtlzSR191MjADNI9zbJDZWBR10BMGr5/4GMADQ0SAMDlht62xUAxy0AmzMEEMnhtIO0ZF2YAH5wITd0hQw/5wE04M1bjDyXZpC2hqMlYGnWAHqBf40APOEYgChI35VSWyasWfGqrAH0WVkOIw4CSC1IG2tDoSy7XJE1gPs8ArDoIG0BmJGk30wBDHgGYFFBOgbAtqwB7GxxAHerC8rOBU0Dt2gQzjYIb8gawDor+6HVhqFdrkzEwhabiAVOTMSkUb+06FLEUVfWgj5q0cW4g64AeNo66ZLlcnTDNmesBN4y8KArAG6QU42ttCEzBVzpCoAO4EfLDeV5SzIEvgHaXdqUP2BlQud1Ux55zj2uZUX02cPRnKalRLmu17qYmPWF5YbymJgVAh8Ay5wCII3ZEZOYm6fURGT2u9X43Mnk3CDHybmfmRVYXExPv9nKEcpLejqSC3SjdY2TBzTesHqB7wc0onTEV2KucxLApXKkJy9HlAI5anuJFwCkYQ/EuCJfD+mdBnYkXOssgHY53un7MdVZ4CVgqVcADAhjMafkfTioHc14P04yvvMApIEXy5F/+7S8y6UKolPyR4BVVf7Wi2IdawwIPhTrmAW+rmZ8bwBIQ7vloXwoVzNWS6UUrwAYy9YfOlqwKZDkgneA5Qu4l3cly84F9sqGhislywLmaozuYoGFXr0DII1ukxP1hxJ6QzR7HqLxRfumZaRzXZ3f4XXZyi7gCeB3kqsnzs+kSb9s5XHgMeD8RTxDLgq3rmeuYuFvNYCoR8wqujNi+L3UWBcu9wAMt3QZ8LiMlk5RuU50teq6kcEDgTolveIRYHUQBOek1O5cFu/ukLz7/ZJgNSm+OirebWpgaPS7slxfAr4EngGuX8jopqUBxGzyrAVuB54EXgc+lV4yLhO8cfn5E+ZqUD8kBu9sQvv0Hzj4rmoEBaAAVBWAAlBVAApAVQEoAFUFoABUFYACUFUACkC1CfofXVRJocowZVYAAAAASUVORK5CYII=); - background-size: contain; - position: absolute; - content: ""; - opacity: .7; - margin-top: -19px; - margin-left: -64px; - -webkit-transition: .2s opacity ease-in-out; - -moz-transition: .2s opacity ease-in-out; - -o-transition: .2s opacity ease-in-out; - transition: .2s opacity ease-in-out; -} - -.landing-video-link:hover { - color: hsla(0, 0%, 100%, 1); -} - -.landing-video-link:hover:before { - opacity: 1; -} - -.landing-social-image { - float: left; - margin-right: 14px; - height: 64px; - width: 64px; -} - -.landing-social-copy { - padding-left: 78px; -} - -.landing-scroll-down-affordance { - position: absolute; - bottom: 0; - width: 100%; - text-align: center; - z-index: 10; -} - -.landing-down-arrow { - padding: 24px; - display: inline-block; - opacity: .5; - -webkit-transition: .2s opacity ease-in-out; - -moz-transition: .2s opacity ease-in-out; - -o-transition: .2s opacity ease-in-out; - transition: .2s opacity ease-in-out; - - -webkit-animation-name: pulse-opacity; - -webkit-animation-duration: 4s; -} - -.landing-down-arrow:hover { - opacity: 1; -} - -.landing-down-arrow img { - height: 28px; - width: 28px; - margin: 0 auto; - display: block; -} - -.landing-divider { - display: inline-block; - height: 2px; - background-color: white; - position: relative; - margin: 10px 0; -} - -/* 3 CLOLUMN LAYOUT */ - -.landing-breakout { - margin-top: 40px; - margin-bottom: 40px; -} - -.landing-breakout img { - margin-bottom: 20px; -} - -.landing-partners img { - margin-bottom: 20px; -} - -.landing-breakout p { - padding: 0 23px; -} - -.landing-breakout.landing-partners img { - margin-bottom: 20px; -} - -.col-3-wide { - display: inline; - float: left; - margin-left: 10px; - margin-right: 10px; -} - -.col-3-wide { - width: 302px; -} - -/** - * ANIMATION - */ - -@-webkit-keyframes pulse-opacity { - 0% { - opacity: .5; - } - 20% { - opacity: .5; - } - 40% { - opacity: 1; - } - 60% { - opacity: .5; - } - 80% { - opacity: 1; - } - 100% { - opacity: .5; - } -} - - - -/** - * VIDEO - */ - -#video-container { - display:none; - position:fixed; - top:0; - left:0; - width:100%; - height:100%; - background-color:rgba(0,0,0,0.8); - z-index:9999; -} - -#video-frame { - width:940px; - height:100%; - margin:72px auto; - display:none; - position:relative; -} - -.video-close { - cursor: pointer; - position: absolute; - right: -49px; - top: -49px; - pointer-events: all; -} - -#icon-video-close { - background-image: url("../images/close-white.png"); - background-image: -webkit-image-set(url(../images/close-white.png) 1x, url(../images/close-white_2x.png) 2x); - background-repeat: no-repeat; - background-position: 0 0; - background-size: 36px 36px; - height: 36px; - width: 36px; - display:block; -} - -#icon-video-close:hover { - background-image: url("../images/close-grey.png"); - background-image: -webkit-image-set(url(../images/close-grey.png) 1x, url(../images/close-grey_2x.png) 2x); -} - -/* Preload the hover images */ -a.video-shadowbox-button.white:after { - display:none; - content:url("../images/close-grey.png") url("../images/close-grey_2x.png"); -} - -a.video-shadowbox-button.white { - background-image: url("../images/play-circle-white.png"); - background-image: -webkit-image-set(url(../images/play-circle-white.png) 1x, url(../images/play-circle-white_2x.png) 2x); - background-size: 36px 36px; - background-repeat: no-repeat; - background-position: right; - padding: 16px 42px 16px 8px; - font-size: 18px; - font-weight: 500; - line-height: 24px; - color: #fff; - text-decoration:none; -} - -a.video-shadowbox-button.white:hover { - color:#bababa !important; - background-image: url("../images/play-circle-grey.png"); - background-image: -webkit-image-set(url(../images/play-circle-grey.png) 1x, url(../images/play-circle-grey_2x.png) 2x); -} - -/* Preload the hover images */ -a.video-shadowbox-button.white:after { - display:none; - content:url("../images/play-circle-grey.png") url("../images/play-circle-grey_2x.png"); -} - -/****************** -Styles for d.a.c/index: -*******************/ - - - -/* Generic full screen carousel styling to be used across pages. */ -.fullscreen-carousel { - margin: 0 -10px; - width: 100%; - overflow: hidden; - position: relative; -} - -.fullscreen-carousel-content { - width: 100%; - height: 100%; - position: relative; - display: table; /* For vertical centering */ -} - -.fullscreen-carousel .vcenter { - display: table-cell; - vertical-align: middle; - position: relative; -} - -.fullscreen-carousel .vcenter > div { - margin: 10px auto; -} - -/* Styles for the full-bleed hero image type. */ -.fullscreen-carousel .hero, .fullscreen-carousel .hero h1 { - color: #fff; -} - -.fullscreen-carousel .hero h1 { - font-weight: 300; - font-size: 60px; - line-height: 68px; - letter-spacing: -1px; - margin-top: 0; -} - -.fullscreen-carousel .hero p { - font-weight: 300; - font-size: 18px; - line-height: 24px; - -webkit-font-smoothing: antialiased; -} - -.fullscreen-carousel .hero .hero-bg { - background-size: cover; - width: 100%; - height: 100%; - position: absolute; - left: 0px; - top: 0px; -} - - -/* Full screen carousel styling for the resource flow layout type of content */ -.fullscreen-carousel .resource-flow-layout:after { - height: 0; /* Dont know why this is set at 10 in default.css */ -} - -.fullscreen-carousel .resource-flow-layout { - margin-bottom: 20px; -} - - - -/* Generic Tab carousel styling to be used across multiple pages. */ - -.tab-carousel .tab-nav { - list-style: none; - position: relative; - text-align: center; -} - -.tab-carousel .tab-nav li { - display: inline-block; - font-size: 22px; - font-weight: 400; - line-height: 50px; - list-style: none; - margin: 0; - padding: 0 25px; - position: relative; -} - -.tab-carousel .tab-nav li a, -.tab-carousel .tab-nav li a:hover { - color: #333 !important; - padding: 10px 10px 13px 10px; - position: relative; - z-index: 1000; -} - -.tab-carousel .tab-nav li:after { - background: #ddd; - bottom: 0; - content: ''; - height: 4px; - left: 0; - position: absolute; - width: 100%; - z-index: 0; -} - -.tab-carousel .tab-nav .highlight { - position: absolute; - height: 4px; - width: 100px; - bottom: 0; - background: #167c80; -} - -.tab-carousel .tab-carousel-content { - position: relative; - overflow: hidden; - white-space: nowrap; -} - -.tab-carousel .tab-carousel-content [data-tab] { - display: inline-block; - white-space: normal; -} - - - -/* - Resource styling for the tab carousel. The tab carousel contains either - a 3 column layout of resources or a single full-width resource. The - latter has the 18x12 class applied to it and can be styled differently - that way. -*/ - -.tab-carousel .resource .image { - width: 100%; - height: 250px; - background-repeat: no-repeat; - background-size: contain; - background-position: 50% 50%; -} - -.tab-carousel .resource .info .title { - font-size: 18px; - line-height: 24px; -} - -.tab-carousel .resource .info .summary, -.tab-carousel .resource .info .cta { - line-height: 24px; - font-size: 16px; -} - -.tab-carousel .resource-card-18x12 { - position: relative; - padding-left: 450px; - box-sizing: border-box; - display: table-cell; - vertical-align: middle; -} - -.tab-carousel .resource-card-18x12 .image { - position: absolute; - width: 420px; - height: 100%; - left: 0; - top: 0; -} - -.tab-carousel .resource-card-18x12 .info { - display: inline-block; -} - -.tab-carousel .resource-card-18x12 .info .title { - margin-bottom: 26px; -} - - - - - -/* - Styles for the entity link used in the actions bar and in the cta of - the resources that appear in the tab carousel. -*/ -.actions-bar a:after, -.resource .cta:after { - content: '›'; - font-weight: 400; - font-size: 22px; - left: 5px; - line-height: 1; - position: relative; - top: 1px; - transition: left 190ms ease-out; -} - -.actions-bar a:hover:after, -.resource .cta:hover:after { - left: 10px; -} - - - - -/* - Styles for the actions bar. -*/ -.actions-bar { - background: #9acd00; - margin: 0 -10px; - text-align: center; -} - -.actions-bar .actions { - padding: 30px 0 30px; - text-align: justify; - font-size: 0.1px; - line-height: 0.1px; - margin: 0 10px 0 0; -} - -.actions-bar .actions:after { - content: ''; - width: 100%; - display: inline-block; -} - -.actions-bar .actions > div { - display: inline-block; -} - -.actions-bar a { - font-size: 21px; - line-height: 27px; - color: #fff; - font-weight: 300; - -webkit-font-smoothing: antialiased; -} - -.actions-bar a:after { - top: 0px; - font-size: 22px; -} - -.actions-bar a:hover { - color: #fff !important; -} - - - - - -/* - Specific styles for new home page layout of the carousels. -*/ - -/* Big blue button */ -a.home-new-cta-btn, -.home-new-carousel-1 .resource-card-18x6 .cta { - white-space: nowrap; - display: inline-block; - padding: 14px 32px; - font-size: 18px; - font-weight: 500; - line-height: 24px; - cursor: pointer; - background: #33b5e6; - border-radius: 4px; - margin-top: 20px; - color: #fff; - transition: 0.2s background-color ease-in-out; -} - -.home-new-carousel-1 .resource-card-18x6 .cta:after { - display: none; /* Hide the entity for this button */ -} - -a.home-new-cta-btn:hover, -.home-new-carousel-1 .resource-card-18x6 .cta:hover { - color: #fff !important; - background: #2d9fca; -} - -.home-new-carousel-1 .resource-card-18x6 .cta { - position: absolute; - bottom: 20px; - left: 16px; -} - -/* Fullscreen carousel. */ -.home-new-carousel-1 { - max-height: 700px; /* Set max height so doesn't get too long */ -} - -.home-new-carousel-1 .fullscreen-carousel-content { - min-height: 450px; /* Set min height for all content */ -} - -.home-new-carousel-1 .hero { - background: #000; -} - -.home-new-carousel-1 .hero-bg { - background-image: url(/home-new/images/hero.jpg); - background-position: right center; - opacity: 0.85; -} - -/* - Styling for special top card of full screen layout resource layout. - We need to specifically style the 18x6 card to adjust its size and layout, - since it's not a standard card, not sure if this is unique to the home page - layout or should be namespaced within the fullscreen-carousel container. -*/ -.home-new-carousel-1 .resource-flow-layout.col-16 .resource-card-18x6 { - height: 320px; - background-color:#F9F9F9; - border-radius: 0px; - box-shadow: 0px 0px 0px rgba(0, 0, 0, 0); - -} - -.home-new-carousel-1 .resource-card-18x6 .card-bg { - width: 636px; - height: 100%; -} - -.home-new-carousel-1 .resource-card-18x6 .card-info { - right: 0px; - left: 636px; - height: 100%; - top: 0px; - padding: 15px 22px; -} - -.home-new-carousel-1 .resource-card-18x6 .card-info .util { - display: none; -} - -.home-new-carousel-1 .resource-card-18x6 .card-info .title { - font-size: 20px; - font-weight: 500; - margin-top: 15px; - margin-bottom: 15px; -} - -.home-new-carousel-1 .resource-card-18x6 .card-info .text { - font-size: 15px; - line-height: 21px; -} - - -/* Tabbed carousel. */ -.home-new-carousel-2 { - margin: 35px auto 100px auto; -} - -.home-new-carousel-2 h1 { - font-size: 47px; - font-weight: 100; - line-height: 54px; - text-align: center; -} - -.annotation-message { - display: block; - font-style: italic; - color: #F80; -} - - - -/* Helpouts widget */ -.resource-card-6x2.helpouts-card { - width: 255px; - height: 40px; - position:absolute; - z-index:999; - top:-8px; - right:1px; -} - -.resource-card-6x2.helpouts-card > .card-info { - left:35px; - height:35px; - padding:4px 8px 4px 0; -} - -.resource-card-6x2.helpouts-card > .card-info .helpouts-description { - display:block; - overflow:visible; - font-size:12px; - line-height:12px; - text-align:right; - color:#666; -} - -.helpouts-description .link-color { - text-transform: uppercase; -} - -.resource-card-6x2 > .card-bg.helpouts-card-bg { - width:35px; - height:35px; - margin:2px 0 0 0; - background-image: url(../images/styles/helpouts-logo-35_2x.png); - background-image: -webkit-image-set(url(../images/styles/helpouts-logo-35.png) 1x, url(../images/styles/helpouts-logo-35_2x.png) 2x); -} - -.resource-card-6x2 > .card-bg.helpouts-card-bg:after { - display:none; -} diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/css/fullscreen.css b/build/tools/droiddoc/templates-lineage-sdk/assets/css/fullscreen.css deleted file mode 100644 index 7912e349..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/css/fullscreen.css +++ /dev/null @@ -1,208 +0,0 @@ - -/* ============================================================================= - Columns - ========================================================================== */ -/* Applied to body to debug layout alignments -.grid { - width:100%; - height:100%; - background:url(../images/grid.png) center repeat-y; - top:0px; - margin:auto; - position:absolute; -} -*/ - -@media screen, projection, print { -.full { - padding: 2.5em 0; - border-top: solid 1px #ddd; - border-bottom: solid 1px #ddd; - background: #f7f7f7; -} -.wrap { - margin: 0 auto; - width: 100%; - min-width:600px; - clear: both; -} -.cols { - height: 1%; - margin: 0 -1.533742331288343558282%; - width: 103.06748466257669%} -*+html .cols { - margin-bottom: 20px; -} -.cols:after { - clear: both; - content: ' '; - display: block; - height: 0; - visibility: hidden; -} -.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, -.col-13, .col-14, .col-15, .col-16 { - float: left; - margin: 0 1.063829787234% 20px 1.063829787234%; -} -* html .col-1, * html .col-2, * html .col-3, * html .col-4, * html .col-5, * html .col-6, * html -.col-7, * html .col-8, * html .col-9, * html .col-10, * html .col-11, * html .col-12, * html -.col-13, * html .col-14, * html .col-15, * html .col-16 { - margin: 0; - margin: 0 1.063829787234% 20px 1.063829787234%; -} -[dir='rtl'] .col-1, [dir='rtl'] .col-2, [dir='rtl'] .col-3, [dir='rtl'] .col-4, [dir='rtl'] .col-5, -[dir='rtl'] .col-6, [dir='rtl'] .col-7, [dir='rtl'] .col-8, [dir='rtl'] .col-9, [dir='rtl'] .col-10, -[dir='rtl'] .col-11, [dir='rtl'] .col-12 { - float: right; -} -.col-1 { - width: 4.16666666666667%; -} -.col-2 { - width: 10.4166666666667%; -} -.col-3 { - width: 16.6666666666667%; -} -.col-4 { - width: 22.9166666666667%; -} -.col-5 { - width: 29.1666666666667%; -} -.col-6 { - width: 35.4166666666667%; -} -.col-7 { - width: 41.6666666666667%; -} -.col-8 { - width: 47.9166666666667%; -} -.col-9 { - width: 55.3333333333333%; -} -.col-10 { - width: 60.4166666666667%; -} -.col-11 { - width: 66.6666666666667%; -} -.col-12 { - width: 72.9166666666667%; -} -.col-13 { - width: 79.1666666666667%; -} -.col-14 { - width: 85.4166666666667%; -} -.col-15 { - width: 91.6666666666667%; -} -.col-16 { - width: 97.9166666666667%; -} - - - - - - - -#header .col-1, -#nav-x .col-1 { width: 40px } -#header .col-2, -#nav-x .col-2 { width: 100px } -#header .col-3, -#nav-x .col-3 { width: 160px } -#header .col-4, -#nav-x .col-4 { width: 220px } -#header .col-5, -#nav-x .col-5 { width: 280px } -#header .col-6, -#nav-x .col-6 { width: 340px } -#header .col-7, -#nav-x .col-7 { width: 400px } -#header .col-8, -#nav-x .col-8 { width: 460px } -#header .col-9, -#nav-x .col-9 { width: 520px } -#header .col-10, -#nav-x .col-10 { width: 580px } -#header .col-11, -#nav-x .col-11 { width: 640px } -#header .col-12, -#nav-x .col-12 { width: 700px } -#header .col-13, -#nav-x .col-13 { width: 760px } -#header .col-14, -#nav-x .col-14 { width: 820px } -#header .col-15, -#nav-x .col-15 { width: 880px } -#header .col-16, -#nav-x .col-16 { width: 940px } - - - -body { - padding:0 20px; -} -#header, -#searchResults, -#nav-x { - margin:0; -} -#body-content { - margin:0; -} -#body-content > .col-12 { - width:77.9804965%; - margin:0 0 0 0.97%; /* this percentage chosen to make IE9 happy */ -} -#side-nav { - width: 19.9804965%; - margin:0 1.063829787234% 0 0; -} - -#header .wrap { - max-width: 100%; -} - -#header-wrapper #nav-x div.wrap, -#searchResults.wrap { - max-width:100%; -} - -.nav-x { - margin:-2px 0 0 0; -} - -#devdoc-nav.fixed, -#devdoc-nav.fixed a.totop { - left:20px; /* !important ... for IE i think */ -} - -#sticky-header { - padding: 0 20px; -} - -#sticky-header > div { - width: 100%; -} - -.sticky-menu { - width:100%; - left:-20px; -} - -.col-right { - margin-right:0px; -} - -@media screen and (max-width:772px) { -.col-5, .col-6, .col-7 { - clear: both; - width: 97.0238096%} -}
\ No newline at end of file diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/customizations.css b/build/tools/droiddoc/templates-lineage-sdk/assets/customizations.css deleted file mode 100755 index 958f6888..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/customizations.css +++ /dev/null @@ -1,14 +0,0 @@ -#masthead-title { - color: #373332; - text-decoration: none; - font-weight: bold; - margin-left: 5px; -} - -#headerLeft a { - text-decoration: none; -} - -#header { - border-bottom: 4px solid rgb(22, 124, 128); -} diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/design/design.js b/build/tools/droiddoc/templates-lineage-sdk/assets/design/design.js deleted file mode 100644 index 3ba84868..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/design/design.js +++ /dev/null @@ -1,188 +0,0 @@ -$(document).ready(function() { - // prep nav expandos - var pagePath = document.location.pathname; - if (pagePath.indexOf(SITE_ROOT) == 0) { - pagePath = pagePath.substr(SITE_ROOT.length); - if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') { - pagePath += 'index.html'; - } - } - - if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') { - // If running locally, SITE_ROOT will be a relative path, so account for that by - // finding the relative URL to this page. This will allow us to find links on the page - // leading back to this page. - var pathParts = pagePath.split('/'); - var relativePagePathParts = []; - var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3; - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push('..'); - } - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]); - } - relativePagePathParts.push(pathParts[pathParts.length - 1]); - pagePath = relativePagePathParts.join('/'); - } else { - // Otherwise the page path should be an absolute URL. - pagePath = SITE_ROOT + pagePath; - } - - // select current page in sidenav and set up prev/next links if they exist - var $selNavLink = $('.nav-y').find('a[href="' + pagePath + '"]'); - if ($selNavLink.length) { - $selListItem = $selNavLink.closest('li'); - - $selListItem.addClass('selected'); - $selListItem.closest('li>ul').addClass('expanded'); - - // set up prev links - var $prevLink = []; - var $prevListItem = $selListItem.prev('li'); - if ($prevListItem.length) { - if ($prevListItem.hasClass('nav-section')) { - // jump to last topic of previous section - $prevLink = $prevListItem.find('a:last'); - } else { - // jump to previous topic in this section - $prevLink = $prevListItem.find('a:eq(0)'); - } - } else { - // jump to this section's index page (if it exists) - $prevLink = $selListItem.parents('li').find('a'); - } - - if ($prevLink.length) { - var prevHref = $prevLink.attr('href'); - if (prevHref == SITE_ROOT + 'index.html') { - // Don't show Previous when it leads to the homepage - $('.prev-page-link').hide(); - } else { - $('.prev-page-link').attr('href', prevHref).show(); - } - } else { - $('.prev-page-link').hide(); - } - - // set up next links - var $nextLink = []; - if ($selListItem.hasClass('nav-section')) { - // we're on an index page, jump to the first topic - $nextLink = $selListItem.find('ul').find('a:eq(0)') - } else { - // jump to the next topic in this section (if it exists) - $nextLink = $selListItem.next('li').find('a:eq(0)'); - if (!$nextLink.length) { - // no more topics in this section, jump to the first topic in the next section - $nextLink = $selListItem.parents('li').next('li.nav-section').find('a:eq(0)'); - } - } - if ($nextLink.length) { - $('.next-page-link').attr('href', $nextLink.attr('href')).show(); - } else { - $('.next-page-link').hide(); - } - } - - // Set up expand/collapse behavior - $('.nav-y li').has('ul').click(function() { - if ($(this).hasClass('expanded')) { - return; - } - - // hide other - var $old = $('.nav-y li.expanded'); - if ($old.length) { - var $oldUl = $old.children('ul'); - $oldUl.css('height', $oldUl.height() + 'px'); - window.setTimeout(function() { - $oldUl - .addClass('animate-height') - .css('height', ''); - }, 0); - $old.removeClass('expanded'); - } - - // show me - $(this).addClass('expanded'); - var $ul = $(this).children('ul'); - var expandedHeight = $ul.height(); - $ul - .removeClass('animate-height') - .css('height', 0); - window.setTimeout(function() { - $ul - .addClass('animate-height') - .css('height', expandedHeight + 'px'); - }, 0); - }); - - // Stop expand/collapse behavior when clicking on nav section links (since we're navigating away - // from the page) - $('.nav-y li').has('ul').find('a:eq(0)').click(function(evt) { - window.location.href = $(this).attr('href'); - return false; - }); - - // Set up play-on-hover <video> tags. - $('video.play-on-hover').bind('click', function(){ - $(this).get(0).load(); // in case the video isn't seekable - $(this).get(0).play(); - }); - - // Set up tooltips - var TOOLTIP_MARGIN = 10; - $('acronym').each(function() { - var $target = $(this); - var $tooltip = $('<div>') - .addClass('tooltip-box') - .text($target.attr('title')) - .hide() - .appendTo('body'); - $target.removeAttr('title'); - - $target.hover(function() { - // in - var targetRect = $target.offset(); - targetRect.width = $target.width(); - targetRect.height = $target.height(); - - $tooltip.css({ - left: targetRect.left, - top: targetRect.top + targetRect.height + TOOLTIP_MARGIN - }); - $tooltip.addClass('below'); - $tooltip.show(); - }, function() { - // out - $tooltip.hide(); - }); - }); - - // Set up <h2> deeplinks - $('h2').click(function() { - var id = $(this).attr('id'); - if (id) { - document.location.hash = id; - } - }); - - // Set up fixed navbar - var navBarIsFixed = false; - $(window).scroll(function() { - var scrollTop = $(window).scrollTop(); - var navBarShouldBeFixed = (scrollTop > (100 - 40)); - if (navBarIsFixed != navBarShouldBeFixed) { - if (navBarShouldBeFixed) { - $('#nav') - .addClass('fixed') - .prependTo('#page-container'); - } else { - $('#nav') - .removeClass('fixed') - .prependTo('#nav-container'); - } - navBarIsFixed = navBarShouldBeFixed; - } - }); -});
\ No newline at end of file diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/docs.js b/build/tools/droiddoc/templates-lineage-sdk/assets/docs.js deleted file mode 100644 index 3ab4caf8..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/docs.js +++ /dev/null @@ -1,4339 +0,0 @@ -var classesNav; -var devdocNav; -var sidenav; -var cookie_namespace = 'android_developer'; -var NAV_PREF_TREE = "tree"; -var NAV_PREF_PANELS = "panels"; -var nav_pref; -var isMobile = false; // true if mobile, so we can adjust some layout -var mPagePath; // initialized in ready() function - -var basePath = getBaseUri(location.pathname); -var SITE_ROOT = toRoot + basePath.substring(1,basePath.indexOf("/",1)); -var GOOGLE_DATA; // combined data for google service apis, used for search suggest - -// Ensure that all ajax getScript() requests allow caching -$.ajaxSetup({ - cache: true -}); - -/****** ON LOAD SET UP STUFF *********/ - -$(document).ready(function() { - - // show lang dialog if the URL includes /intl/ - //if (location.pathname.substring(0,6) == "/intl/") { - // var lang = location.pathname.split('/')[2]; - // if (lang != getLangPref()) { - // $("#langMessage a.yes").attr("onclick","changeLangPref('" + lang - // + "', true); $('#langMessage').hide(); return false;"); - // $("#langMessage .lang." + lang).show(); - // $("#langMessage").show(); - // } - //} - - // load json file for JD doc search suggestions - $.getScript(toRoot + 'jd_lists_unified.js'); - // load json file for Android API search suggestions - $.getScript(toRoot + 'reference/lists.js'); - - // setup keyboard listener for search shortcut - $('body').keyup(function(event) { - if (event.which == 191) { - $('#search_autocomplete').focus(); - } - }); - - // init the fullscreen toggle click event - $('#nav-swap .fullscreen').click(function(){ - if ($(this).hasClass('disabled')) { - toggleFullscreen(true); - } else { - toggleFullscreen(false); - } - }); - - // initialize the divs with custom scrollbars - $('.scroll-pane').jScrollPane( {verticalGutter:0} ); - - // add HRs below all H2s (except for a few other h2 variants) - $('h2').not('#qv h2') - .not('#tb h2') - .not('.sidebox h2') - .not('#devdoc-nav h2') - .not('h2.norule').css({marginBottom:0}) - .after('<hr/>'); - - // set up the search close button - $('.search .close').click(function() { - $searchInput = $('#search_autocomplete'); - $searchInput.attr('value', ''); - $(this).addClass("hide"); - $("#search-container").removeClass('active'); - $("#search_autocomplete").blur(); - search_focus_changed($searchInput.get(), false); - hideResults(); - }); - - // Set up quicknav - var quicknav_open = false; - $("#btn-quicknav").click(function() { - if (quicknav_open) { - $(this).removeClass('active'); - quicknav_open = false; - collapse(); - } else { - $(this).addClass('active'); - quicknav_open = true; - expand(); - } - }) - - var expand = function() { - $('#header-wrap').addClass('quicknav'); - $('#quicknav').stop().show().animate({opacity:'1'}); - } - - var collapse = function() { - $('#quicknav').stop().animate({opacity:'0'}, 100, function() { - $(this).hide(); - $('#header-wrap').removeClass('quicknav'); - }); - } - - - //Set up search - $("#search_autocomplete").focus(function() { - $("#search-container").addClass('active'); - }) - $("#search-container").mouseover(function() { - $("#search-container").addClass('active'); - $("#search_autocomplete").focus(); - }) - $("#search-container").mouseout(function() { - if ($("#search_autocomplete").is(":focus")) return; - if ($("#search_autocomplete").val() == '') { - setTimeout(function(){ - $("#search-container").removeClass('active'); - $("#search_autocomplete").blur(); - },250); - } - }) - $("#search_autocomplete").blur(function() { - if ($("#search_autocomplete").val() == '') { - $("#search-container").removeClass('active'); - } - }) - - - // prep nav expandos - var pagePath = document.location.pathname; - // account for intl docs by removing the intl/*/ path - if (pagePath.indexOf("/intl/") == 0) { - pagePath = pagePath.substr(pagePath.indexOf("/",6)); // start after intl/ to get last / - } - - if (pagePath.indexOf(SITE_ROOT) == 0) { - if (pagePath == '' || pagePath.charAt(pagePath.length - 1) == '/') { - pagePath += 'index.html'; - } - } - - // Need a copy of the pagePath before it gets changed in the next block; - // it's needed to perform proper tab highlighting in offline docs (see rootDir below) - var pagePathOriginal = pagePath; - if (SITE_ROOT.match(/\.\.\//) || SITE_ROOT == '') { - // If running locally, SITE_ROOT will be a relative path, so account for that by - // finding the relative URL to this page. This will allow us to find links on the page - // leading back to this page. - var pathParts = pagePath.split('/'); - var relativePagePathParts = []; - var upDirs = (SITE_ROOT.match(/(\.\.\/)+/) || [''])[0].length / 3; - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push('..'); - } - for (var i = 0; i < upDirs; i++) { - relativePagePathParts.push(pathParts[pathParts.length - (upDirs - i) - 1]); - } - relativePagePathParts.push(pathParts[pathParts.length - 1]); - pagePath = relativePagePathParts.join('/'); - } else { - // Otherwise the page path is already an absolute URL - } - - // Highlight the header tabs... - // highlight Design tab - if ($("body").hasClass("design")) { - $("#header li.design a").addClass("selected"); - $("#sticky-header").addClass("design"); - - // highlight About tabs - } else if ($("body").hasClass("about")) { - var rootDir = pagePathOriginal.substring(1,pagePathOriginal.indexOf('/', 1)); - if (rootDir == "about") { - $("#nav-x li.about a").addClass("selected"); - } else if (rootDir == "wear") { - $("#nav-x li.wear a").addClass("selected"); - } else if (rootDir == "tv") { - $("#nav-x li.tv a").addClass("selected"); - } else if (rootDir == "auto") { - $("#nav-x li.auto a").addClass("selected"); - } - // highlight Develop tab - } else if ($("body").hasClass("develop") || $("body").hasClass("google")) { - $("#header li.develop a").addClass("selected"); - $("#sticky-header").addClass("develop"); - // In Develop docs, also highlight appropriate sub-tab - var rootDir = pagePathOriginal.substring(1,pagePathOriginal.indexOf('/', 1)); - if (rootDir == "training") { - $("#nav-x li.training a").addClass("selected"); - } else if (rootDir == "guide") { - $("#nav-x li.guide a").addClass("selected"); - } else if (rootDir == "reference") { - // If the root is reference, but page is also part of Google Services, select Google - if ($("body").hasClass("google")) { - $("#nav-x li.google a").addClass("selected"); - } else { - $("#nav-x li.reference a").addClass("selected"); - } - } else if ((rootDir == "tools") || (rootDir == "sdk")) { - $("#nav-x li.tools a").addClass("selected"); - } else if ($("body").hasClass("google")) { - $("#nav-x li.google a").addClass("selected"); - } else if ($("body").hasClass("samples")) { - $("#nav-x li.samples a").addClass("selected"); - } - - // highlight Distribute tab - } else if ($("body").hasClass("distribute")) { - $("#header li.distribute a").addClass("selected"); - $("#sticky-header").addClass("distribute"); - - var baseFrag = pagePathOriginal.indexOf('/', 1) + 1; - var secondFrag = pagePathOriginal.substring(baseFrag, pagePathOriginal.indexOf('/', baseFrag)); - if (secondFrag == "users") { - $("#nav-x li.users a").addClass("selected"); - } else if (secondFrag == "engage") { - $("#nav-x li.engage a").addClass("selected"); - } else if (secondFrag == "monetize") { - $("#nav-x li.monetize a").addClass("selected"); - } else if (secondFrag == "analyze") { - $("#nav-x li.analyze a").addClass("selected"); - } else if (secondFrag == "tools") { - $("#nav-x li.disttools a").addClass("selected"); - } else if (secondFrag == "stories") { - $("#nav-x li.stories a").addClass("selected"); - } else if (secondFrag == "essentials") { - $("#nav-x li.essentials a").addClass("selected"); - } else if (secondFrag == "googleplay") { - $("#nav-x li.googleplay a").addClass("selected"); - } - } else if ($("body").hasClass("about")) { - $("#sticky-header").addClass("about"); - } - - // set global variable so we can highlight the sidenav a bit later (such as for google reference) - // and highlight the sidenav - mPagePath = pagePath; - highlightSidenav(); - buildBreadcrumbs(); - - // set up prev/next links if they exist - var $selNavLink = $('#nav').find('a[href="' + pagePath + '"]'); - var $selListItem; - if ($selNavLink.length) { - $selListItem = $selNavLink.closest('li'); - - // set up prev links - var $prevLink = []; - var $prevListItem = $selListItem.prev('li'); - - var crossBoundaries = ($("body.design").length > 0) || ($("body.guide").length > 0) ? true : -false; // navigate across topic boundaries only in design docs - if ($prevListItem.length) { - if ($prevListItem.hasClass('nav-section') || crossBoundaries) { - // jump to last topic of previous section - $prevLink = $prevListItem.find('a:last'); - } else if (!$selListItem.hasClass('nav-section')) { - // jump to previous topic in this section - $prevLink = $prevListItem.find('a:eq(0)'); - } - } else { - // jump to this section's index page (if it exists) - var $parentListItem = $selListItem.parents('li'); - $prevLink = $selListItem.parents('li').find('a'); - - // except if cross boundaries aren't allowed, and we're at the top of a section already - // (and there's another parent) - if (!crossBoundaries && $parentListItem.hasClass('nav-section') - && $selListItem.hasClass('nav-section')) { - $prevLink = []; - } - } - - // set up next links - var $nextLink = []; - var startClass = false; - var isCrossingBoundary = false; - - if ($selListItem.hasClass('nav-section') && $selListItem.children('div.empty').length == 0) { - // we're on an index page, jump to the first topic - $nextLink = $selListItem.find('ul:eq(0)').find('a:eq(0)'); - - // if there aren't any children, go to the next section (required for About pages) - if($nextLink.length == 0) { - $nextLink = $selListItem.next('li').find('a'); - } else if ($('.topic-start-link').length) { - // as long as there's a child link and there is a "topic start link" (we're on a landing) - // then set the landing page "start link" text to be the first doc title - $('.topic-start-link').text($nextLink.text().toUpperCase()); - } - - // If the selected page has a description, then it's a class or article homepage - if ($selListItem.find('a[description]').length) { - // this means we're on a class landing page - startClass = true; - } - } else { - // jump to the next topic in this section (if it exists) - $nextLink = $selListItem.next('li').find('a:eq(0)'); - if ($nextLink.length == 0) { - isCrossingBoundary = true; - // no more topics in this section, jump to the first topic in the next section - $nextLink = $selListItem.parents('li:eq(0)').next('li').find('a:eq(0)'); - if (!$nextLink.length) { // Go up another layer to look for next page (lesson > class > course) - $nextLink = $selListItem.parents('li:eq(1)').next('li.nav-section').find('a:eq(0)'); - if ($nextLink.length == 0) { - // if that doesn't work, we're at the end of the list, so disable NEXT link - $('.next-page-link').attr('href','').addClass("disabled") - .click(function() { return false; }); - // and completely hide the one in the footer - $('.content-footer .next-page-link').hide(); - } - } - } - } - - if (startClass) { - $('.start-class-link').attr('href', $nextLink.attr('href')).removeClass("hide"); - - // if there's no training bar (below the start button), - // then we need to add a bottom border to button - if (!$("#tb").length) { - $('.start-class-link').css({'border-bottom':'1px solid #DADADA'}); - } - } else if (isCrossingBoundary && !$('body.design').length) { // Design always crosses boundaries - $('.content-footer.next-class').show(); - $('.next-page-link').attr('href','') - .removeClass("hide").addClass("disabled") - .click(function() { return false; }); - // and completely hide the one in the footer - $('.content-footer .next-page-link').hide(); - if ($nextLink.length) { - $('.next-class-link').attr('href',$nextLink.attr('href')) - .removeClass("hide") - .append(": " + $nextLink.html()); - $('.next-class-link').find('.new').empty(); - } - } else { - $('.next-page-link').attr('href', $nextLink.attr('href')) - .removeClass("hide"); - // for the footer link, also add the next page title - $('.content-footer .next-page-link').append(": " + $nextLink.html()); - } - - if (!startClass && $prevLink.length) { - var prevHref = $prevLink.attr('href'); - if (prevHref == SITE_ROOT + 'index.html') { - // Don't show Previous when it leads to the homepage - } else { - $('.prev-page-link').attr('href', $prevLink.attr('href')).removeClass("hide"); - } - } - - } - - - - // Set up the course landing pages for Training with class names and descriptions - if ($('body.trainingcourse').length) { - var $classLinks = $selListItem.find('ul li a').not('#nav .nav-section .nav-section ul a'); - - // create an array for all the class descriptions - var $classDescriptions = new Array($classLinks.length); - var lang = getLangPref(); - $classLinks.each(function(index) { - var langDescr = $(this).attr(lang + "-description"); - if (typeof langDescr !== 'undefined' && langDescr !== false) { - // if there's a class description in the selected language, use that - $classDescriptions[index] = langDescr; - } else { - // otherwise, use the default english description - $classDescriptions[index] = $(this).attr("description"); - } - }); - - var $olClasses = $('<ol class="class-list"></ol>'); - var $liClass; - var $imgIcon; - var $h2Title; - var $pSummary; - var $olLessons; - var $liLesson; - $classLinks.each(function(index) { - $liClass = $('<li></li>'); - $h2Title = $('<a class="title" href="'+$(this).attr('href')+'"><h2>' + $(this).html()+'</h2><span></span></a>'); - $pSummary = $('<p class="description">' + $classDescriptions[index] + '</p>'); - - $olLessons = $('<ol class="lesson-list"></ol>'); - - $lessons = $(this).closest('li').find('ul li a'); - - if ($lessons.length) { - $imgIcon = $('<img src="'+toRoot+'assets/images/resource-tutorial.png" ' - + ' width="64" height="64" alt=""/>'); - $lessons.each(function(index) { - $olLessons.append('<li><a href="'+$(this).attr('href')+'">' + $(this).html()+'</a></li>'); - }); - } else { - $imgIcon = $('<img src="'+toRoot+'assets/images/resource-article.png" ' - + ' width="64" height="64" alt=""/>'); - $pSummary.addClass('article'); - } - - $liClass.append($h2Title).append($imgIcon).append($pSummary).append($olLessons); - $olClasses.append($liClass); - }); - $('.jd-descr').append($olClasses); - } - - // Set up expand/collapse behavior - initExpandableNavItems("#nav"); - - - $(".scroll-pane").scroll(function(event) { - event.preventDefault(); - return false; - }); - - /* Resize nav height when window height changes */ - $(window).resize(function() { - if ($('#side-nav').length == 0) return; - var stylesheet = $('link[rel="stylesheet"][class="fullscreen"]'); - setNavBarLeftPos(); // do this even if sidenav isn't fixed because it could become fixed - // make sidenav behave when resizing the window and side-scolling is a concern - if (sticky) { - if ((stylesheet.attr("disabled") == "disabled") || stylesheet.length == 0) { - updateSideNavPosition(); - } else { - updateSidenavFullscreenWidth(); - } - } - resizeNav(); - }); - - - var navBarLeftPos; - if ($('#devdoc-nav').length) { - setNavBarLeftPos(); - } - - - // Set up play-on-hover <video> tags. - $('video.play-on-hover').bind('click', function(){ - $(this).get(0).load(); // in case the video isn't seekable - $(this).get(0).play(); - }); - - // Set up tooltips - var TOOLTIP_MARGIN = 10; - $('acronym,.tooltip-link').each(function() { - var $target = $(this); - var $tooltip = $('<div>') - .addClass('tooltip-box') - .append($target.attr('title')) - .hide() - .appendTo('body'); - $target.removeAttr('title'); - - $target.hover(function() { - // in - var targetRect = $target.offset(); - targetRect.width = $target.width(); - targetRect.height = $target.height(); - - $tooltip.css({ - left: targetRect.left, - top: targetRect.top + targetRect.height + TOOLTIP_MARGIN - }); - $tooltip.addClass('below'); - $tooltip.show(); - }, function() { - // out - $tooltip.hide(); - }); - }); - - // Set up <h2> deeplinks - $('h2').click(function() { - var id = $(this).attr('id'); - if (id) { - document.location.hash = id; - } - }); - - //Loads the +1 button - var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true; - po.src = 'https://apis.google.com/js/plusone.js'; - var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s); - - - // Revise the sidenav widths to make room for the scrollbar - // which avoids the visible width from changing each time the bar appears - var $sidenav = $("#side-nav"); - var sidenav_width = parseInt($sidenav.innerWidth()); - - $("#devdoc-nav #nav").css("width", sidenav_width - 4 + "px"); // 4px is scrollbar width - - - $(".scroll-pane").removeAttr("tabindex"); // get rid of tabindex added by jscroller - - if ($(".scroll-pane").length > 1) { - // Check if there's a user preference for the panel heights - var cookieHeight = readCookie("reference_height"); - if (cookieHeight) { - restoreHeight(cookieHeight); - } - } - - // Resize once loading is finished - resizeNav(); - // Check if there's an anchor that we need to scroll into view. - // A delay is needed, because some browsers do not immediately scroll down to the anchor - window.setTimeout(offsetScrollForSticky, 100); - - /* init the language selector based on user cookie for lang */ - loadLangPref(); - changeNavLang(getLangPref()); - - /* setup event handlers to ensure the overflow menu is visible while picking lang */ - $("#language select") - .mousedown(function() { - $("div.morehover").addClass("hover"); }) - .blur(function() { - $("div.morehover").removeClass("hover"); }); - - /* some global variable setup */ - resizePackagesNav = $("#resize-packages-nav"); - classesNav = $("#classes-nav"); - devdocNav = $("#devdoc-nav"); - - var cookiePath = ""; - if (location.href.indexOf("/reference/") != -1) { - cookiePath = "reference_"; - } else if (location.href.indexOf("/guide/") != -1) { - cookiePath = "guide_"; - } else if (location.href.indexOf("/tools/") != -1) { - cookiePath = "tools_"; - } else if (location.href.indexOf("/training/") != -1) { - cookiePath = "training_"; - } else if (location.href.indexOf("/design/") != -1) { - cookiePath = "design_"; - } else if (location.href.indexOf("/distribute/") != -1) { - cookiePath = "distribute_"; - } - - - /* setup shadowbox for any videos that want it */ - var $videoLinks = $("a.video-shadowbox-button, a.notice-developers-video"); - if ($videoLinks.length) { - // if there's at least one, add the shadowbox HTML to the body - $('body').prepend( -'<div id="video-container">'+ - '<div id="video-frame">'+ - '<div class="video-close">'+ - '<span id="icon-video-close" onclick="closeVideo()"> </span>'+ - '</div>'+ - '<div id="youTubePlayer"></div>'+ - '</div>'+ -'</div>'); - - // loads the IFrame Player API code asynchronously. - $.getScript("https://www.youtube.com/iframe_api"); - - $videoLinks.each(function() { - var videoId = $(this).attr('href').split('?v=')[1]; - $(this).click(function(event) { - event.preventDefault(); - startYouTubePlayer(videoId); - }); - }); - } -}); -// END of the onload event - - -var youTubePlayer; -function onYouTubeIframeAPIReady() { -} - -/* Returns the height the shadowbox video should be. It's based on the current - height of the "video-frame" element, which is 100% height for the window. - Then minus the margin so the video isn't actually the full window height. */ -function getVideoHeight() { - var frameHeight = $("#video-frame").height(); - var marginTop = $("#video-frame").css('margin-top').split('px')[0]; - return frameHeight - (marginTop * 2); -} - -var mPlayerPaused = false; - -function startYouTubePlayer(videoId) { - $("#video-container").show(); - $("#video-frame").show(); - mPlayerPaused = false; - - // compute the size of the player so it's centered in window - var maxWidth = 940; // the width of the web site content - var videoAspect = .5625; // based on 1280x720 resolution - var maxHeight = maxWidth * videoAspect; - var videoHeight = getVideoHeight(); - var videoWidth = videoHeight / videoAspect; - if (videoWidth > maxWidth) { - videoWidth = maxWidth; - videoHeight = maxHeight; - } - $("#video-frame").css('width', videoWidth); - - // check if we've already created this player - if (youTubePlayer == null) { - // check if there's a start time specified - var idAndHash = videoId.split("#"); - var startTime = 0; - if (idAndHash.length > 1) { - startTime = idAndHash[1].split("t=")[1] != undefined ? idAndHash[1].split("t=")[1] : 0; - } - // enable localized player - var lang = getLangPref(); - var captionsOn = lang == 'en' ? 0 : 1; - - youTubePlayer = new YT.Player('youTubePlayer', { - height: videoHeight, - width: videoWidth, - videoId: idAndHash[0], - playerVars: {start: startTime, hl: lang, cc_load_policy: captionsOn}, - events: { - 'onReady': onPlayerReady, - 'onStateChange': onPlayerStateChange - } - }); - } else { - // reset the size in case the user adjusted the window since last play - youTubePlayer.setSize(videoWidth, videoHeight); - // if a video different from the one already playing was requested, cue it up - if (videoId != youTubePlayer.getVideoUrl().split('?v=')[1].split('&')[0].split('%')[0]) { - youTubePlayer.cueVideoById(videoId); - } - youTubePlayer.playVideo(); - } -} - -function onPlayerReady(event) { - event.target.playVideo(); - mPlayerPaused = false; -} - -function closeVideo() { - try { - youTubePlayer.pauseVideo(); - } catch(e) { - } - $("#video-container").fadeOut(200); -} - -/* Track youtube playback for analytics */ -function onPlayerStateChange(event) { - // Video starts, send the video ID - if (event.data == YT.PlayerState.PLAYING) { - if (mPlayerPaused) { - ga('send', 'event', 'Videos', 'Resume', - youTubePlayer.getVideoUrl().split('?v=')[1].split('&')[0].split('%')[0]); - } else { - // track the start playing event so we know from which page the video was selected - ga('send', 'event', 'Videos', 'Start: ' + - youTubePlayer.getVideoUrl().split('?v=')[1].split('&')[0].split('%')[0], - 'on: ' + document.location.href); - } - mPlayerPaused = false; - } - // Video paused, send video ID and video elapsed time - if (event.data == YT.PlayerState.PAUSED) { - ga('send', 'event', 'Videos', 'Paused', - youTubePlayer.getVideoUrl().split('?v=')[1].split('&')[0].split('%')[0], - youTubePlayer.getCurrentTime()); - mPlayerPaused = true; - } - // Video finished, send video ID and video elapsed time - if (event.data == YT.PlayerState.ENDED) { - ga('send', 'event', 'Videos', 'Finished', - youTubePlayer.getVideoUrl().split('?v=')[1].split('&')[0].split('%')[0], - youTubePlayer.getCurrentTime()); - mPlayerPaused = true; - } -} - - - -function initExpandableNavItems(rootTag) { - $(rootTag + ' li.nav-section .nav-section-header').click(function() { - var section = $(this).closest('li.nav-section'); - if (section.hasClass('expanded')) { - /* hide me and descendants */ - section.find('ul').slideUp(250, function() { - // remove 'expanded' class from my section and any children - section.closest('li').removeClass('expanded'); - $('li.nav-section', section).removeClass('expanded'); - resizeNav(); - }); - } else { - /* show me */ - // first hide all other siblings - var $others = $('li.nav-section.expanded', $(this).closest('ul')).not('.sticky'); - $others.removeClass('expanded').children('ul').slideUp(250); - - // now expand me - section.closest('li').addClass('expanded'); - section.children('ul').slideDown(250, function() { - resizeNav(); - }); - } - }); - - // Stop expand/collapse behavior when clicking on nav section links - // (since we're navigating away from the page) - // This selector captures the first instance of <a>, but not those with "#" as the href. - $('.nav-section-header').find('a:eq(0)').not('a[href="#"]').click(function(evt) { - window.location.href = $(this).attr('href'); - return false; - }); -} - - -/** Create the list of breadcrumb links in the sticky header */ -function buildBreadcrumbs() { - var $breadcrumbUl = $("#sticky-header ul.breadcrumb"); - // Add the secondary horizontal nav item, if provided - var $selectedSecondNav = $("div#nav-x ul.nav-x a.selected").clone().removeClass("selected"); - if ($selectedSecondNav.length) { - $breadcrumbUl.prepend($("<li>").append($selectedSecondNav)) - } - // Add the primary horizontal nav - var $selectedFirstNav = $("div#header-wrap ul.nav-x a.selected").clone().removeClass("selected"); - // If there's no header nav item, use the logo link and title from alt text - if ($selectedFirstNav.length < 1) { - $selectedFirstNav = $("<a>") - .attr('href', $("div#header .logo a").attr('href')) - .text($("div#header .logo img").attr('alt')); - } - $breadcrumbUl.prepend($("<li>").append($selectedFirstNav)); -} - - - -/** Highlight the current page in sidenav, expanding children as appropriate */ -function highlightSidenav() { - // if something is already highlighted, undo it. This is for dynamic navigation (Samples index) - if ($("ul#nav li.selected").length) { - unHighlightSidenav(); - } - // look for URL in sidenav, including the hash - var $selNavLink = $('#nav').find('a[href="' + mPagePath + location.hash + '"]'); - - // If the selNavLink is still empty, look for it without the hash - if ($selNavLink.length == 0) { - $selNavLink = $('#nav').find('a[href="' + mPagePath + '"]'); - } - - var $selListItem; - if ($selNavLink.length) { - // Find this page's <li> in sidenav and set selected - $selListItem = $selNavLink.closest('li'); - $selListItem.addClass('selected'); - - // Traverse up the tree and expand all parent nav-sections - $selNavLink.parents('li.nav-section').each(function() { - $(this).addClass('expanded'); - $(this).children('ul').show(); - }); - } -} - -function unHighlightSidenav() { - $("ul#nav li.selected").removeClass("selected"); - $('ul#nav li.nav-section.expanded').removeClass('expanded').children('ul').hide(); -} - -function toggleFullscreen(enable) { - var delay = 20; - var enabled = true; - var stylesheet = $('link[rel="stylesheet"][class="fullscreen"]'); - if (enable) { - // Currently NOT USING fullscreen; enable fullscreen - stylesheet.removeAttr('disabled'); - $('#nav-swap .fullscreen').removeClass('disabled'); - $('#devdoc-nav').css({left:''}); - setTimeout(updateSidenavFullscreenWidth,delay); // need to wait a moment for css to switch - enabled = true; - } else { - // Currently USING fullscreen; disable fullscreen - stylesheet.attr('disabled', 'disabled'); - $('#nav-swap .fullscreen').addClass('disabled'); - setTimeout(updateSidenavFixedWidth,delay); // need to wait a moment for css to switch - enabled = false; - } - writeCookie("fullscreen", enabled, null); - setNavBarLeftPos(); - resizeNav(delay); - updateSideNavPosition(); - setTimeout(initSidenavHeightResize,delay); -} - - -function setNavBarLeftPos() { - navBarLeftPos = $('#body-content').offset().left; -} - - -function updateSideNavPosition() { - var newLeft = $(window).scrollLeft() - navBarLeftPos; - $('#devdoc-nav').css({left: -newLeft}); - $('#devdoc-nav .totop').css({left: -(newLeft - parseInt($('#side-nav').css('margin-left')))}); -} - -// TODO: use $(document).ready instead -function addLoadEvent(newfun) { - var current = window.onload; - if (typeof window.onload != 'function') { - window.onload = newfun; - } else { - window.onload = function() { - current(); - newfun(); - } - } -} - -var agent = navigator['userAgent'].toLowerCase(); -// If a mobile phone, set flag and do mobile setup -if ((agent.indexOf("mobile") != -1) || // android, iphone, ipod - (agent.indexOf("blackberry") != -1) || - (agent.indexOf("webos") != -1) || - (agent.indexOf("mini") != -1)) { // opera mini browsers - isMobile = true; -} - - -$(document).ready(function() { - $("pre:not(.no-pretty-print)").addClass("prettyprint"); - prettyPrint(); -}); - - - - -/* ######### RESIZE THE SIDENAV HEIGHT ########## */ - -function resizeNav(delay) { - var $nav = $("#devdoc-nav"); - var $window = $(window); - var navHeight; - - // Get the height of entire window and the total header height. - // Then figure out based on scroll position whether the header is visible - var windowHeight = $window.height(); - var scrollTop = $window.scrollTop(); - var headerHeight = $('#header-wrapper').outerHeight(); - var headerVisible = scrollTop < stickyTop; - - // get the height of space between nav and top of window. - // Could be either margin or top position, depending on whether the nav is fixed. - var topMargin = (parseInt($nav.css('margin-top')) || parseInt($nav.css('top'))) + 1; - // add 1 for the #side-nav bottom margin - - // Depending on whether the header is visible, set the side nav's height. - if (headerVisible) { - // The sidenav height grows as the header goes off screen - navHeight = windowHeight - (headerHeight - scrollTop) - topMargin; - } else { - // Once header is off screen, the nav height is almost full window height - navHeight = windowHeight - topMargin; - } - - - - $scrollPanes = $(".scroll-pane"); - if ($scrollPanes.length > 1) { - // subtract the height of the api level widget and nav swapper from the available nav height - navHeight -= ($('#api-nav-header').outerHeight(true) + $('#nav-swap').outerHeight(true)); - - $("#swapper").css({height:navHeight + "px"}); - if ($("#nav-tree").is(":visible")) { - $("#nav-tree").css({height:navHeight}); - } - - var classesHeight = navHeight - parseInt($("#resize-packages-nav").css("height")) - 10 + "px"; - //subtract 10px to account for drag bar - - // if the window becomes small enough to make the class panel height 0, - // then the package panel should begin to shrink - if (parseInt(classesHeight) <= 0) { - $("#resize-packages-nav").css({height:navHeight - 10}); //subtract 10px for drag bar - $("#packages-nav").css({height:navHeight - 10}); - } - - $("#classes-nav").css({'height':classesHeight, 'margin-top':'10px'}); - $("#classes-nav .jspContainer").css({height:classesHeight}); - - - } else { - $nav.height(navHeight); - } - - if (delay) { - updateFromResize = true; - delayedReInitScrollbars(delay); - } else { - reInitScrollbars(); - } - -} - -var updateScrollbars = false; -var updateFromResize = false; - -/* Re-initialize the scrollbars to account for changed nav size. - * This method postpones the actual update by a 1/4 second in order to optimize the - * scroll performance while the header is still visible, because re-initializing the - * scroll panes is an intensive process. - */ -function delayedReInitScrollbars(delay) { - // If we're scheduled for an update, but have received another resize request - // before the scheduled resize has occured, just ignore the new request - // (and wait for the scheduled one). - if (updateScrollbars && updateFromResize) { - updateFromResize = false; - return; - } - - // We're scheduled for an update and the update request came from this method's setTimeout - if (updateScrollbars && !updateFromResize) { - reInitScrollbars(); - updateScrollbars = false; - } else { - updateScrollbars = true; - updateFromResize = false; - setTimeout('delayedReInitScrollbars()',delay); - } -} - -/* Re-initialize the scrollbars to account for changed nav size. */ -function reInitScrollbars() { - var pane = $(".scroll-pane").each(function(){ - var api = $(this).data('jsp'); - if (!api) { setTimeout(reInitScrollbars,300); return;} - api.reinitialise( {verticalGutter:0} ); - }); - $(".scroll-pane").removeAttr("tabindex"); // get rid of tabindex added by jscroller -} - - -/* Resize the height of the nav panels in the reference, - * and save the new size to a cookie */ -function saveNavPanels() { - var basePath = getBaseUri(location.pathname); - var section = basePath.substring(1,basePath.indexOf("/",1)); - writeCookie("height", resizePackagesNav.css("height"), section); -} - - - -function restoreHeight(packageHeight) { - $("#resize-packages-nav").height(packageHeight); - $("#packages-nav").height(packageHeight); - // var classesHeight = navHeight - packageHeight; - // $("#classes-nav").css({height:classesHeight}); - // $("#classes-nav .jspContainer").css({height:classesHeight}); -} - - - -/* ######### END RESIZE THE SIDENAV HEIGHT ########## */ - - - - - -/** Scroll the jScrollPane to make the currently selected item visible - This is called when the page finished loading. */ -function scrollIntoView(nav) { - var $nav = $("#"+nav); - var element = $nav.jScrollPane({/* ...settings... */}); - var api = element.data('jsp'); - - if ($nav.is(':visible')) { - var $selected = $(".selected", $nav); - if ($selected.length == 0) { - // If no selected item found, exit - return; - } - // get the selected item's offset from its container nav by measuring the item's offset - // relative to the document then subtract the container nav's offset relative to the document - var selectedOffset = $selected.offset().top - $nav.offset().top; - if (selectedOffset > $nav.height() * .8) { // multiply nav height by .8 so we move up the item - // if it's more than 80% down the nav - // scroll the item up by an amount equal to 80% the container nav's height - api.scrollTo(0, selectedOffset - ($nav.height() * .8), false); - } - } -} - - - - - - -/* Show popup dialogs */ -function showDialog(id) { - $dialog = $("#"+id); - $dialog.prepend('<div class="box-border"><div class="top"> <div class="left"></div> <div class="right"></div></div><div class="bottom"> <div class="left"></div> <div class="right"></div> </div> </div>'); - $dialog.wrapInner('<div/>'); - $dialog.removeClass("hide"); -} - - - - - -/* ######### COOKIES! ########## */ - -function readCookie(cookie) { - var myCookie = cookie_namespace+"_"+cookie+"="; - if (document.cookie) { - var index = document.cookie.indexOf(myCookie); - if (index != -1) { - var valStart = index + myCookie.length; - var valEnd = document.cookie.indexOf(";", valStart); - if (valEnd == -1) { - valEnd = document.cookie.length; - } - var val = document.cookie.substring(valStart, valEnd); - return val; - } - } - return 0; -} - -function writeCookie(cookie, val, section) { - if (val==undefined) return; - section = section == null ? "_" : "_"+section+"_"; - var age = 2*365*24*60*60; // set max-age to 2 years - var cookieValue = cookie_namespace + section + cookie + "=" + val - + "; max-age=" + age +"; path=/"; - document.cookie = cookieValue; -} - -/* ######### END COOKIES! ########## */ - - -var sticky = false; -var stickyTop; -var prevScrollLeft = 0; // used to compare current position to previous position of horiz scroll -/* Sets the vertical scoll position at which the sticky bar should appear. - This method is called to reset the position when search results appear or hide */ -function setStickyTop() { - stickyTop = $('#header-wrapper').outerHeight() - $('#sticky-header').outerHeight(); -} - -/* - * Displays sticky nav bar on pages when dac header scrolls out of view - */ -$(window).scroll(function(event) { - - setStickyTop(); - var hiding = false; - var $stickyEl = $('#sticky-header'); - var $menuEl = $('.menu-container'); - // Exit if there's no sidenav - if ($('#side-nav').length == 0) return; - // Exit if the mouse target is a DIV, because that means the event is coming - // from a scrollable div and so there's no need to make adjustments to our layout - if ($(event.target).nodeName == "DIV") { - return; - } - - var top = $(window).scrollTop(); - // we set the navbar fixed when the scroll position is beyond the height of the site header... - var shouldBeSticky = top >= stickyTop; - // ... except if the document content is shorter than the sidenav height. - // (this is necessary to avoid crazy behavior on OSX Lion due to overscroll bouncing) - if ($("#doc-col").height() < $("#side-nav").height()) { - shouldBeSticky = false; - } - // Account for horizontal scroll - var scrollLeft = $(window).scrollLeft(); - // When the sidenav is fixed and user scrolls horizontally, reposition the sidenav to match - if (sticky && (scrollLeft != prevScrollLeft)) { - updateSideNavPosition(); - prevScrollLeft = scrollLeft; - } - - // Don't continue if the header is sufficently far away - // (to avoid intensive resizing that slows scrolling) - if (sticky == shouldBeSticky) { - return; - } - - // If sticky header visible and position is now near top, hide sticky - if (sticky && !shouldBeSticky) { - sticky = false; - hiding = true; - // make the sidenav static again - $('#devdoc-nav') - .removeClass('fixed') - .css({'width':'auto','margin':''}) - .prependTo('#side-nav'); - // delay hide the sticky - $menuEl.removeClass('sticky-menu'); - $stickyEl.fadeOut(250); - hiding = false; - - // update the sidenaav position for side scrolling - updateSideNavPosition(); - } else if (!sticky && shouldBeSticky) { - sticky = true; - $stickyEl.fadeIn(10); - $menuEl.addClass('sticky-menu'); - - // make the sidenav fixed - var width = $('#devdoc-nav').width(); - $('#devdoc-nav') - .addClass('fixed') - .css({'width':width+'px'}) - .prependTo('#body-content'); - - // update the sidenaav position for side scrolling - updateSideNavPosition(); - - } else if (hiding && top < 15) { - $menuEl.removeClass('sticky-menu'); - $stickyEl.hide(); - hiding = false; - } - resizeNav(250); // pass true in order to delay the scrollbar re-initialization for performance -}); - -/* - * Manages secion card states and nav resize to conclude loading - */ -(function() { - $(document).ready(function() { - - // Stack hover states - $('.section-card-menu').each(function(index, el) { - var height = $(el).height(); - $(el).css({height:height+'px', position:'relative'}); - var $cardInfo = $(el).find('.card-info'); - - $cardInfo.css({position: 'absolute', bottom:'0px', left:'0px', right:'0px', overflow:'visible'}); - }); - - }); - -})(); - - - - - - - - - - - - - - -/* MISC LIBRARY FUNCTIONS */ - - - - - -function toggle(obj, slide) { - var ul = $("ul:first", obj); - var li = ul.parent(); - if (li.hasClass("closed")) { - if (slide) { - ul.slideDown("fast"); - } else { - ul.show(); - } - li.removeClass("closed"); - li.addClass("open"); - $(".toggle-img", li).attr("title", "hide pages"); - } else { - ul.slideUp("fast"); - li.removeClass("open"); - li.addClass("closed"); - $(".toggle-img", li).attr("title", "show pages"); - } -} - - -function buildToggleLists() { - $(".toggle-list").each( - function(i) { - $("div:first", this).append("<a class='toggle-img' href='#' title='show pages' onClick='toggle(this.parentNode.parentNode, true); return false;'></a>"); - $(this).addClass("closed"); - }); -} - - - -function hideNestedItems(list, toggle) { - $list = $(list); - // hide nested lists - if($list.hasClass('showing')) { - $("li ol", $list).hide('fast'); - $list.removeClass('showing'); - // show nested lists - } else { - $("li ol", $list).show('fast'); - $list.addClass('showing'); - } - $(".more,.less",$(toggle)).toggle(); -} - - -/* Call this to add listeners to a <select> element for Studio/Eclipse/Other docs */ -function setupIdeDocToggle() { - $( "select.ide" ).change(function() { - var selected = $(this).find("option:selected").attr("value"); - $(".select-ide").hide(); - $(".select-ide."+selected).show(); - - $("select.ide").val(selected); - }); -} - - - - - - - - - - - - - - - - - - - - - - - - -/* REFERENCE NAV SWAP */ - - -function getNavPref() { - var v = readCookie('reference_nav'); - if (v != NAV_PREF_TREE) { - v = NAV_PREF_PANELS; - } - return v; -} - -function chooseDefaultNav() { - nav_pref = getNavPref(); - if (nav_pref == NAV_PREF_TREE) { - $("#nav-panels").toggle(); - $("#panel-link").toggle(); - $("#nav-tree").toggle(); - $("#tree-link").toggle(); - } -} - -function swapNav() { - if (nav_pref == NAV_PREF_TREE) { - nav_pref = NAV_PREF_PANELS; - } else { - nav_pref = NAV_PREF_TREE; - init_default_navtree(toRoot); - } - writeCookie("nav", nav_pref, "reference"); - - $("#nav-panels").toggle(); - $("#panel-link").toggle(); - $("#nav-tree").toggle(); - $("#tree-link").toggle(); - - resizeNav(); - - // Gross nasty hack to make tree view show up upon first swap by setting height manually - $("#nav-tree .jspContainer:visible") - .css({'height':$("#nav-tree .jspContainer .jspPane").height() +'px'}); - // Another nasty hack to make the scrollbar appear now that we have height - resizeNav(); - - if ($("#nav-tree").is(':visible')) { - scrollIntoView("nav-tree"); - } else { - scrollIntoView("packages-nav"); - scrollIntoView("classes-nav"); - } -} - - - -/* ############################################ */ -/* ########## LOCALIZATION ############ */ -/* ############################################ */ - -function getBaseUri(uri) { - var intlUrl = (uri.substring(0,6) == "/intl/"); - if (intlUrl) { - base = uri.substring(uri.indexOf('intl/')+5,uri.length); - base = base.substring(base.indexOf('/')+1, base.length); - //alert("intl, returning base url: /" + base); - return ("/" + base); - } else { - //alert("not intl, returning uri as found."); - return uri; - } -} - -function requestAppendHL(uri) { -//append "?hl=<lang> to an outgoing request (such as to blog) - var lang = getLangPref(); - if (lang) { - var q = 'hl=' + lang; - uri += '?' + q; - window.location = uri; - return false; - } else { - return true; - } -} - - -function changeNavLang(lang) { - var $links = $("#devdoc-nav,#header,#nav-x,.training-nav-top,.content-footer").find("a["+lang+"-lang]"); - $links.each(function(i){ // for each link with a translation - var $link = $(this); - if (lang != "en") { // No need to worry about English, because a language change invokes new request - // put the desired language from the attribute as the text - $link.text($link.attr(lang+"-lang")) - } - }); -} - -function changeLangPref(lang, submit) { - writeCookie("pref_lang", lang, null); - - // ####### TODO: Remove this condition once we're stable on devsite ####### - // This condition is only needed if we still need to support legacy GAE server - if (devsite) { - // Switch language when on Devsite server - if (submit) { - $("#setlang").submit(); - } - } else { - // Switch language when on legacy GAE server - if (submit) { - window.location = getBaseUri(location.pathname); - } - } -} - -function loadLangPref() { - var lang = readCookie("pref_lang"); - if (lang != 0) { - $("#language").find("option[value='"+lang+"']").attr("selected",true); - } -} - -function getLangPref() { - var lang = $("#language").find(":selected").attr("value"); - if (!lang) { - lang = readCookie("pref_lang"); - } - return (lang != 0) ? lang : 'en'; -} - -/* ########## END LOCALIZATION ############ */ - - - - - - -/* Used to hide and reveal supplemental content, such as long code samples. - See the companion CSS in android-developer-docs.css */ -function toggleContent(obj) { - var div = $(obj).closest(".toggle-content"); - var toggleMe = $(".toggle-content-toggleme:eq(0)",div); - if (div.hasClass("closed")) { // if it's closed, open it - toggleMe.slideDown(); - $(".toggle-content-text:eq(0)", obj).toggle(); - div.removeClass("closed").addClass("open"); - $(".toggle-content-img:eq(0)", div).attr("title", "hide").attr("src", toRoot - + "assets/images/triangle-opened.png"); - } else { // if it's open, close it - toggleMe.slideUp('fast', function() { // Wait until the animation is done before closing arrow - $(".toggle-content-text:eq(0)", obj).toggle(); - div.removeClass("open").addClass("closed"); - div.find(".toggle-content").removeClass("open").addClass("closed") - .find(".toggle-content-toggleme").hide(); - $(".toggle-content-img", div).attr("title", "show").attr("src", toRoot - + "assets/images/triangle-closed.png"); - }); - } - return false; -} - - -/* New version of expandable content */ -function toggleExpandable(link,id) { - if($(id).is(':visible')) { - $(id).slideUp(); - $(link).removeClass('expanded'); - } else { - $(id).slideDown(); - $(link).addClass('expanded'); - } -} - -function hideExpandable(ids) { - $(ids).slideUp(); - $(ids).prev('h4').find('a.expandable').removeClass('expanded'); -} - - - - - -/* - * Slideshow 1.0 - * Used on /index.html and /develop/index.html for carousel - * - * Sample usage: - * HTML - - * <div class="slideshow-container"> - * <a href="" class="slideshow-prev">Prev</a> - * <a href="" class="slideshow-next">Next</a> - * <ul> - * <li class="item"><img src="images/marquee1.jpg"></li> - * <li class="item"><img src="images/marquee2.jpg"></li> - * <li class="item"><img src="images/marquee3.jpg"></li> - * <li class="item"><img src="images/marquee4.jpg"></li> - * </ul> - * </div> - * - * <script type="text/javascript"> - * $('.slideshow-container').dacSlideshow({ - * auto: true, - * btnPrev: '.slideshow-prev', - * btnNext: '.slideshow-next' - * }); - * </script> - * - * Options: - * btnPrev: optional identifier for previous button - * btnNext: optional identifier for next button - * btnPause: optional identifier for pause button - * auto: whether or not to auto-proceed - * speed: animation speed - * autoTime: time between auto-rotation - * easing: easing function for transition - * start: item to select by default - * scroll: direction to scroll in - * pagination: whether or not to include dotted pagination - * - */ - - (function($) { - $.fn.dacSlideshow = function(o) { - - //Options - see above - o = $.extend({ - btnPrev: null, - btnNext: null, - btnPause: null, - auto: true, - speed: 500, - autoTime: 12000, - easing: null, - start: 0, - scroll: 1, - pagination: true - - }, o || {}); - - //Set up a carousel for each - return this.each(function() { - - var running = false; - var animCss = o.vertical ? "top" : "left"; - var sizeCss = o.vertical ? "height" : "width"; - var div = $(this); - var ul = $("ul", div); - var tLi = $("li", ul); - var tl = tLi.size(); - var timer = null; - - var li = $("li", ul); - var itemLength = li.size(); - var curr = o.start; - - li.css({float: o.vertical ? "none" : "left"}); - ul.css({margin: "0", padding: "0", position: "relative", "list-style-type": "none", "z-index": "1"}); - div.css({position: "relative", "z-index": "2", left: "0px"}); - - var liSize = o.vertical ? height(li) : width(li); - var ulSize = liSize * itemLength; - var divSize = liSize; - - li.css({width: li.width(), height: li.height()}); - ul.css(sizeCss, ulSize+"px").css(animCss, -(curr*liSize)); - - div.css(sizeCss, divSize+"px"); - - //Pagination - if (o.pagination) { - var pagination = $("<div class='pagination'></div>"); - var pag_ul = $("<ul></ul>"); - if (tl > 1) { - for (var i=0;i<tl;i++) { - var li = $("<li>"+i+"</li>"); - pag_ul.append(li); - if (i==o.start) li.addClass('active'); - li.click(function() { - go(parseInt($(this).text())); - }) - } - pagination.append(pag_ul); - div.append(pagination); - } - } - - //Previous button - if(o.btnPrev) - $(o.btnPrev).click(function(e) { - e.preventDefault(); - return go(curr-o.scroll); - }); - - //Next button - if(o.btnNext) - $(o.btnNext).click(function(e) { - e.preventDefault(); - return go(curr+o.scroll); - }); - - //Pause button - if(o.btnPause) - $(o.btnPause).click(function(e) { - e.preventDefault(); - if ($(this).hasClass('paused')) { - startRotateTimer(); - } else { - pauseRotateTimer(); - } - }); - - //Auto rotation - if(o.auto) startRotateTimer(); - - function startRotateTimer() { - clearInterval(timer); - timer = setInterval(function() { - if (curr == tl-1) { - go(0); - } else { - go(curr+o.scroll); - } - }, o.autoTime); - $(o.btnPause).removeClass('paused'); - } - - function pauseRotateTimer() { - clearInterval(timer); - $(o.btnPause).addClass('paused'); - } - - //Go to an item - function go(to) { - if(!running) { - - if(to<0) { - to = itemLength-1; - } else if (to>itemLength-1) { - to = 0; - } - curr = to; - - running = true; - - ul.animate( - animCss == "left" ? { left: -(curr*liSize) } : { top: -(curr*liSize) } , o.speed, o.easing, - function() { - running = false; - } - ); - - $(o.btnPrev + "," + o.btnNext).removeClass("disabled"); - $( (curr-o.scroll<0 && o.btnPrev) - || - (curr+o.scroll > itemLength && o.btnNext) - || - [] - ).addClass("disabled"); - - - var nav_items = $('li', pagination); - nav_items.removeClass('active'); - nav_items.eq(to).addClass('active'); - - - } - if(o.auto) startRotateTimer(); - return false; - }; - }); - }; - - function css(el, prop) { - return parseInt($.css(el[0], prop)) || 0; - }; - function width(el) { - return el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight'); - }; - function height(el) { - return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom'); - }; - - })(jQuery); - - -/* - * dacSlideshow 1.0 - * Used on develop/index.html for side-sliding tabs - * - * Sample usage: - * HTML - - * <div class="slideshow-container"> - * <a href="" class="slideshow-prev">Prev</a> - * <a href="" class="slideshow-next">Next</a> - * <ul> - * <li class="item"><img src="images/marquee1.jpg"></li> - * <li class="item"><img src="images/marquee2.jpg"></li> - * <li class="item"><img src="images/marquee3.jpg"></li> - * <li class="item"><img src="images/marquee4.jpg"></li> - * </ul> - * </div> - * - * <script type="text/javascript"> - * $('.slideshow-container').dacSlideshow({ - * auto: true, - * btnPrev: '.slideshow-prev', - * btnNext: '.slideshow-next' - * }); - * </script> - * - * Options: - * btnPrev: optional identifier for previous button - * btnNext: optional identifier for next button - * auto: whether or not to auto-proceed - * speed: animation speed - * autoTime: time between auto-rotation - * easing: easing function for transition - * start: item to select by default - * scroll: direction to scroll in - * pagination: whether or not to include dotted pagination - * - */ - (function($) { - $.fn.dacTabbedList = function(o) { - - //Options - see above - o = $.extend({ - speed : 250, - easing: null, - nav_id: null, - frame_id: null - }, o || {}); - - //Set up a carousel for each - return this.each(function() { - - var curr = 0; - var running = false; - var animCss = "margin-left"; - var sizeCss = "width"; - var div = $(this); - - var nav = $(o.nav_id, div); - var nav_li = $("li", nav); - var nav_size = nav_li.size(); - var frame = div.find(o.frame_id); - var content_width = $(frame).find('ul').width(); - //Buttons - $(nav_li).click(function(e) { - go($(nav_li).index($(this))); - }) - - //Go to an item - function go(to) { - if(!running) { - curr = to; - running = true; - - frame.animate({ 'margin-left' : -(curr*content_width) }, o.speed, o.easing, - function() { - running = false; - } - ); - - - nav_li.removeClass('active'); - nav_li.eq(to).addClass('active'); - - - } - return false; - }; - }); - }; - - function css(el, prop) { - return parseInt($.css(el[0], prop)) || 0; - }; - function width(el) { - return el[0].offsetWidth + css(el, 'marginLeft') + css(el, 'marginRight'); - }; - function height(el) { - return el[0].offsetHeight + css(el, 'marginTop') + css(el, 'marginBottom'); - }; - - })(jQuery); - - - - - -/* ######################################################## */ -/* ################ SEARCH SUGGESTIONS ################## */ -/* ######################################################## */ - - - -var gSelectedIndex = -1; // the index position of currently highlighted suggestion -var gSelectedColumn = -1; // which column of suggestion lists is currently focused - -var gMatches = new Array(); -var gLastText = ""; -var gInitialized = false; -var ROW_COUNT_FRAMEWORK = 20; // max number of results in list -var gListLength = 0; - - -var gGoogleMatches = new Array(); -var ROW_COUNT_GOOGLE = 15; // max number of results in list -var gGoogleListLength = 0; - -var gDocsMatches = new Array(); -var ROW_COUNT_DOCS = 100; // max number of results in list -var gDocsListLength = 0; - -function onSuggestionClick(link) { - // When user clicks a suggested document, track it - ga('send', 'event', 'Suggestion Click', 'clicked: ' + $(link).attr('href'), - 'query: ' + $("#search_autocomplete").val().toLowerCase()); -} - -function set_item_selected($li, selected) -{ - if (selected) { - $li.attr('class','jd-autocomplete jd-selected'); - } else { - $li.attr('class','jd-autocomplete'); - } -} - -function set_item_values(toroot, $li, match) -{ - var $link = $('a',$li); - $link.html(match.__hilabel || match.label); - $link.attr('href',toroot + match.link); -} - -function set_item_values_jd(toroot, $li, match) -{ - var $link = $('a',$li); - $link.html(match.title); - $link.attr('href',toroot + match.url); -} - -function new_suggestion($list) { - var $li = $("<li class='jd-autocomplete'></li>"); - $list.append($li); - - $li.mousedown(function() { - window.location = this.firstChild.getAttribute("href"); - }); - $li.mouseover(function() { - $('.search_filtered_wrapper li').removeClass('jd-selected'); - $(this).addClass('jd-selected'); - gSelectedColumn = $(".search_filtered:visible").index($(this).closest('.search_filtered')); - gSelectedIndex = $("li", $(".search_filtered:visible")[gSelectedColumn]).index(this); - }); - $li.append("<a onclick='onSuggestionClick(this)'></a>"); - $li.attr('class','show-item'); - return $li; -} - -function sync_selection_table(toroot) -{ - var $li; //list item jquery object - var i; //list item iterator - - // if there are NO results at all, hide all columns - if (!(gMatches.length > 0) && !(gGoogleMatches.length > 0) && !(gDocsMatches.length > 0)) { - $('.suggest-card').hide(300); - return; - } - - // if there are api results - if ((gMatches.length > 0) || (gGoogleMatches.length > 0)) { - // reveal suggestion list - $('.suggest-card.dummy').show(); - $('.suggest-card.reference').show(); - var listIndex = 0; // list index position - - // reset the lists - $(".search_filtered_wrapper.reference li").remove(); - - // ########### ANDROID RESULTS ############# - if (gMatches.length > 0) { - - // determine android results to show - gListLength = gMatches.length < ROW_COUNT_FRAMEWORK ? - gMatches.length : ROW_COUNT_FRAMEWORK; - for (i=0; i<gListLength; i++) { - var $li = new_suggestion($(".suggest-card.reference ul")); - set_item_values(toroot, $li, gMatches[i]); - set_item_selected($li, i == gSelectedIndex); - } - } - - // ########### GOOGLE RESULTS ############# - if (gGoogleMatches.length > 0) { - // show header for list - $(".suggest-card.reference ul").append("<li class='header'>in Google Services:</li>"); - - // determine google results to show - gGoogleListLength = gGoogleMatches.length < ROW_COUNT_GOOGLE ? gGoogleMatches.length : ROW_COUNT_GOOGLE; - for (i=0; i<gGoogleListLength; i++) { - var $li = new_suggestion($(".suggest-card.reference ul")); - set_item_values(toroot, $li, gGoogleMatches[i]); - set_item_selected($li, i == gSelectedIndex); - } - } - } else { - $('.suggest-card.reference').hide(); - $('.suggest-card.dummy').hide(); - } - - // ########### JD DOC RESULTS ############# - if (gDocsMatches.length > 0) { - // reset the lists - $(".search_filtered_wrapper.docs li").remove(); - - // determine google results to show - // NOTE: The order of the conditions below for the sugg.type MUST BE SPECIFIC: - // The order must match the reverse order that each section appears as a card in - // the suggestion UI... this may be only for the "develop" grouped items though. - gDocsListLength = gDocsMatches.length < ROW_COUNT_DOCS ? gDocsMatches.length : ROW_COUNT_DOCS; - for (i=0; i<gDocsListLength; i++) { - var sugg = gDocsMatches[i]; - var $li; - if (sugg.type == "design") { - $li = new_suggestion($(".suggest-card.design ul")); - } else - if (sugg.type == "distribute") { - $li = new_suggestion($(".suggest-card.distribute ul")); - } else - if (sugg.type == "samples") { - $li = new_suggestion($(".suggest-card.develop .child-card.samples")); - } else - if (sugg.type == "training") { - $li = new_suggestion($(".suggest-card.develop .child-card.training")); - } else - if (sugg.type == "about"||"guide"||"tools"||"google") { - $li = new_suggestion($(".suggest-card.develop .child-card.guides")); - } else { - continue; - } - - set_item_values_jd(toroot, $li, sugg); - set_item_selected($li, i == gSelectedIndex); - } - - // add heading and show or hide card - if ($(".suggest-card.design li").length > 0) { - $(".suggest-card.design ul").prepend("<li class='header'>Design:</li>"); - $(".suggest-card.design").show(300); - } else { - $('.suggest-card.design').hide(300); - } - if ($(".suggest-card.distribute li").length > 0) { - $(".suggest-card.distribute ul").prepend("<li class='header'>Distribute:</li>"); - $(".suggest-card.distribute").show(300); - } else { - $('.suggest-card.distribute').hide(300); - } - if ($(".child-card.guides li").length > 0) { - $(".child-card.guides").prepend("<li class='header'>Guides:</li>"); - $(".child-card.guides li").appendTo(".suggest-card.develop ul"); - } - if ($(".child-card.training li").length > 0) { - $(".child-card.training").prepend("<li class='header'>Training:</li>"); - $(".child-card.training li").appendTo(".suggest-card.develop ul"); - } - if ($(".child-card.samples li").length > 0) { - $(".child-card.samples").prepend("<li class='header'>Samples:</li>"); - $(".child-card.samples li").appendTo(".suggest-card.develop ul"); - } - - if ($(".suggest-card.develop li").length > 0) { - $(".suggest-card.develop").show(300); - } else { - $('.suggest-card.develop').hide(300); - } - - } else { - $('.search_filtered_wrapper.docs .suggest-card:not(.dummy)').hide(300); - } -} - -/** Called by the search input's onkeydown and onkeyup events. - * Handles navigation with keyboard arrows, Enter key to invoke search, - * otherwise invokes search suggestions on key-up event. - * @param e The JS event - * @param kd True if the event is key-down - * @param toroot A string for the site's root path - * @returns True if the event should bubble up - */ -function search_changed(e, kd, toroot) -{ - var currentLang = getLangPref(); - var search = document.getElementById("search_autocomplete"); - var text = search.value.replace(/(^ +)|( +$)/g, ''); - // get the ul hosting the currently selected item - gSelectedColumn = gSelectedColumn >= 0 ? gSelectedColumn : 0; - var $columns = $(".search_filtered_wrapper").find(".search_filtered:visible"); - var $selectedUl = $columns[gSelectedColumn]; - - // show/hide the close button - if (text != '') { - $(".search .close").removeClass("hide"); - } else { - $(".search .close").addClass("hide"); - } - // 27 = esc - if (e.keyCode == 27) { - // close all search results - if (kd) $('.search .close').trigger('click'); - return true; - } - // 13 = enter - else if (e.keyCode == 13) { - if (gSelectedIndex < 0) { - $('.suggest-card').hide(); - if ($("#searchResults").is(":hidden") && (search.value != "")) { - // if results aren't showing (and text not empty), return true to allow search to execute - $('body,html').animate({scrollTop:0}, '500', 'swing'); - return true; - } else { - // otherwise, results are already showing, so allow ajax to auto refresh the results - // and ignore this Enter press to avoid the reload. - return false; - } - } else if (kd && gSelectedIndex >= 0) { - // click the link corresponding to selected item - $("a",$("li",$selectedUl)[gSelectedIndex]).get()[0].click(); - return false; - } - } - // If Google results are showing, return true to allow ajax search to execute - else if ($("#searchResults").is(":visible")) { - // Also, if search_results is scrolled out of view, scroll to top to make results visible - if ((sticky ) && (search.value != "")) { - $('body,html').animate({scrollTop:0}, '500', 'swing'); - } - return true; - } - // 38 UP ARROW - else if (kd && (e.keyCode == 38)) { - // if the next item is a header, skip it - if ($($("li", $selectedUl)[gSelectedIndex-1]).hasClass("header")) { - gSelectedIndex--; - } - if (gSelectedIndex >= 0) { - $('li', $selectedUl).removeClass('jd-selected'); - gSelectedIndex--; - $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); - // If user reaches top, reset selected column - if (gSelectedIndex < 0) { - gSelectedColumn = -1; - } - } - return false; - } - // 40 DOWN ARROW - else if (kd && (e.keyCode == 40)) { - // if the next item is a header, skip it - if ($($("li", $selectedUl)[gSelectedIndex+1]).hasClass("header")) { - gSelectedIndex++; - } - if ((gSelectedIndex < $("li", $selectedUl).length-1) || - ($($("li", $selectedUl)[gSelectedIndex+1]).hasClass("header"))) { - $('li', $selectedUl).removeClass('jd-selected'); - gSelectedIndex++; - $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); - } - return false; - } - // Consider left/right arrow navigation - // NOTE: Order of suggest columns are reverse order (index position 0 is on right) - else if (kd && $columns.length > 1 && gSelectedColumn >= 0) { - // 37 LEFT ARROW - // go left only if current column is not left-most column (last column) - if (e.keyCode == 37 && gSelectedColumn < $columns.length - 1) { - $('li', $selectedUl).removeClass('jd-selected'); - gSelectedColumn++; - $selectedUl = $columns[gSelectedColumn]; - // keep or reset the selected item to last item as appropriate - gSelectedIndex = gSelectedIndex > - $("li", $selectedUl).length-1 ? - $("li", $selectedUl).length-1 : gSelectedIndex; - // if the corresponding item is a header, move down - if ($($("li", $selectedUl)[gSelectedIndex]).hasClass("header")) { - gSelectedIndex++; - } - // set item selected - $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); - return false; - } - // 39 RIGHT ARROW - // go right only if current column is not the right-most column (first column) - else if (e.keyCode == 39 && gSelectedColumn > 0) { - $('li', $selectedUl).removeClass('jd-selected'); - gSelectedColumn--; - $selectedUl = $columns[gSelectedColumn]; - // keep or reset the selected item to last item as appropriate - gSelectedIndex = gSelectedIndex > - $("li", $selectedUl).length-1 ? - $("li", $selectedUl).length-1 : gSelectedIndex; - // if the corresponding item is a header, move down - if ($($("li", $selectedUl)[gSelectedIndex]).hasClass("header")) { - gSelectedIndex++; - } - // set item selected - $('li:nth-child('+(gSelectedIndex+1)+')', $selectedUl).addClass('jd-selected'); - return false; - } - } - - // if key-up event and not arrow down/up/left/right, - // read the search query and add suggestions to gMatches - else if (!kd && (e.keyCode != 40) - && (e.keyCode != 38) - && (e.keyCode != 37) - && (e.keyCode != 39)) { - gSelectedIndex = -1; - gMatches = new Array(); - matchedCount = 0; - gGoogleMatches = new Array(); - matchedCountGoogle = 0; - gDocsMatches = new Array(); - matchedCountDocs = 0; - - // Search for Android matches - for (var i=0; i<DATA.length; i++) { - var s = DATA[i]; - if (text.length != 0 && - s.label.toLowerCase().indexOf(text.toLowerCase()) != -1) { - gMatches[matchedCount] = s; - matchedCount++; - } - } - rank_autocomplete_api_results(text, gMatches); - for (var i=0; i<gMatches.length; i++) { - var s = gMatches[i]; - } - - - // Search for Google matches - for (var i=0; i<GOOGLE_DATA.length; i++) { - var s = GOOGLE_DATA[i]; - if (text.length != 0 && - s.label.toLowerCase().indexOf(text.toLowerCase()) != -1) { - gGoogleMatches[matchedCountGoogle] = s; - matchedCountGoogle++; - } - } - rank_autocomplete_api_results(text, gGoogleMatches); - for (var i=0; i<gGoogleMatches.length; i++) { - var s = gGoogleMatches[i]; - } - - highlight_autocomplete_result_labels(text); - - - - // Search for matching JD docs - if (text.length >= 2) { - // Regex to match only the beginning of a word - var textRegex = new RegExp("\\b" + text.toLowerCase(), "g"); - - - // Search for Training classes - for (var i=0; i<TRAINING_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = TRAINING_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Don't consider doc title for lessons (only for class landing pages), - // unless the lesson has a tag that already matches - if ((s.lang == currentLang) && - (!(s.type == "training" && s.url.indexOf("index.html") == -1) || matched)) { - // it matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for API Guides - for (var i=0; i<GUIDE_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = GUIDE_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for Tools Guides - for (var i=0; i<TOOLS_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = TOOLS_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for About docs - for (var i=0; i<ABOUT_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = ABOUT_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for Design guides - for (var i=0; i<DESIGN_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = DESIGN_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for Distribute guides - for (var i=0; i<DISTRIBUTE_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = DISTRIBUTE_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for Google guides - for (var i=0; i<GOOGLE_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = GOOGLE_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - - // Search for Samples - for (var i=0; i<SAMPLES_RESOURCES.length; i++) { - // current search comparison, with counters for tag and title, - // used later to improve ranking - var s = SAMPLES_RESOURCES[i]; - s.matched_tag = 0; - s.matched_title = 0; - var matched = false; - // Check if query matches any tags; work backwards toward 1 to assist ranking - for (var j = s.keywords.length - 1; j >= 0; j--) { - // it matches a tag - if (s.keywords[j].toLowerCase().match(textRegex)) { - matched = true; - s.matched_tag = j + 1; // add 1 to index position - } - } - // Check if query matches the doc title, but only for current language - if (s.lang == currentLang) { - // if query matches the doc title.t - if (s.title.toLowerCase().match(textRegex)) { - matched = true; - s.matched_title = 1; - } - } - if (matched) { - gDocsMatches[matchedCountDocs] = s; - matchedCountDocs++; - } - } - - // Rank/sort all the matched pages - rank_autocomplete_doc_results(text, gDocsMatches); - } - - // draw the suggestions - sync_selection_table(toroot); - return true; // allow the event to bubble up to the search api - } -} - -/* Order the jd doc result list based on match quality */ -function rank_autocomplete_doc_results(query, matches) { - query = query || ''; - if (!matches || !matches.length) - return; - - var _resultScoreFn = function(match) { - var score = 1.0; - - // if the query matched a tag - if (match.matched_tag > 0) { - // multiply score by factor relative to position in tags list (max of 3) - score *= 3 / match.matched_tag; - - // if it also matched the title - if (match.matched_title > 0) { - score *= 2; - } - } else if (match.matched_title > 0) { - score *= 3; - } - - return score; - }; - - for (var i=0; i<matches.length; i++) { - matches[i].__resultScore = _resultScoreFn(matches[i]); - } - - matches.sort(function(a,b){ - var n = b.__resultScore - a.__resultScore; - if (n == 0) // lexicographical sort if scores are the same - n = (a.label < b.label) ? -1 : 1; - return n; - }); -} - -/* Order the result list based on match quality */ -function rank_autocomplete_api_results(query, matches) { - query = query || ''; - if (!matches || !matches.length) - return; - - // helper function that gets the last occurence index of the given regex - // in the given string, or -1 if not found - var _lastSearch = function(s, re) { - if (s == '') - return -1; - var l = -1; - var tmp; - while ((tmp = s.search(re)) >= 0) { - if (l < 0) l = 0; - l += tmp; - s = s.substr(tmp + 1); - } - return l; - }; - - // helper function that counts the occurrences of a given character in - // a given string - var _countChar = function(s, c) { - var n = 0; - for (var i=0; i<s.length; i++) - if (s.charAt(i) == c) ++n; - return n; - }; - - var queryLower = query.toLowerCase(); - var queryAlnum = (queryLower.match(/\w+/) || [''])[0]; - var partPrefixAlnumRE = new RegExp('\\b' + queryAlnum); - var partExactAlnumRE = new RegExp('\\b' + queryAlnum + '\\b'); - - var _resultScoreFn = function(result) { - // scores are calculated based on exact and prefix matches, - // and then number of path separators (dots) from the last - // match (i.e. favoring classes and deep package names) - var score = 1.0; - var labelLower = result.label.toLowerCase(); - var t; - t = _lastSearch(labelLower, partExactAlnumRE); - if (t >= 0) { - // exact part match - var partsAfter = _countChar(labelLower.substr(t + 1), '.'); - score *= 200 / (partsAfter + 1); - } else { - t = _lastSearch(labelLower, partPrefixAlnumRE); - if (t >= 0) { - // part prefix match - var partsAfter = _countChar(labelLower.substr(t + 1), '.'); - score *= 20 / (partsAfter + 1); - } - } - - return score; - }; - - for (var i=0; i<matches.length; i++) { - // if the API is deprecated, default score is 0; otherwise, perform scoring - if (matches[i].deprecated == "true") { - matches[i].__resultScore = 0; - } else { - matches[i].__resultScore = _resultScoreFn(matches[i]); - } - } - - matches.sort(function(a,b){ - var n = b.__resultScore - a.__resultScore; - if (n == 0) // lexicographical sort if scores are the same - n = (a.label < b.label) ? -1 : 1; - return n; - }); -} - -/* Add emphasis to part of string that matches query */ -function highlight_autocomplete_result_labels(query) { - query = query || ''; - if ((!gMatches || !gMatches.length) && (!gGoogleMatches || !gGoogleMatches.length)) - return; - - var queryLower = query.toLowerCase(); - var queryAlnumDot = (queryLower.match(/[\w\.]+/) || [''])[0]; - var queryRE = new RegExp( - '(' + queryAlnumDot.replace(/\./g, '\\.') + ')', 'ig'); - for (var i=0; i<gMatches.length; i++) { - gMatches[i].__hilabel = gMatches[i].label.replace( - queryRE, '<b>$1</b>'); - } - for (var i=0; i<gGoogleMatches.length; i++) { - gGoogleMatches[i].__hilabel = gGoogleMatches[i].label.replace( - queryRE, '<b>$1</b>'); - } -} - -function search_focus_changed(obj, focused) -{ - if (!focused) { - if(obj.value == ""){ - $(".search .close").addClass("hide"); - } - $(".suggest-card").hide(); - } -} - -function submit_search() { - var query = document.getElementById('search_autocomplete').value; - location.hash = 'q=' + query; - loadSearchResults(); - $("#searchResults").slideDown('slow', setStickyTop); - return false; -} - - -function hideResults() { - $("#searchResults").slideUp('fast', setStickyTop); - $(".search .close").addClass("hide"); - location.hash = ''; - - $("#search_autocomplete").val("").blur(); - - // reset the ajax search callback to nothing, so results don't appear unless ENTER - searchControl.setSearchStartingCallback(this, function(control, searcher, query) {}); - - // forcefully regain key-up event control (previously jacked by search api) - $("#search_autocomplete").keyup(function(event) { - return search_changed(event, false, toRoot); - }); - - return false; -} - - - -/* ########################################################## */ -/* ################ CUSTOM SEARCH ENGINE ################## */ -/* ########################################################## */ - -var searchControl; -google.load('search', '1', {"callback" : function() { - searchControl = new google.search.SearchControl(); - } }); - -function loadSearchResults() { - document.getElementById("search_autocomplete").style.color = "#000"; - - searchControl = new google.search.SearchControl(); - - // use our existing search form and use tabs when multiple searchers are used - drawOptions = new google.search.DrawOptions(); - drawOptions.setDrawMode(google.search.SearchControl.DRAW_MODE_TABBED); - drawOptions.setInput(document.getElementById("search_autocomplete")); - - // configure search result options - searchOptions = new google.search.SearcherOptions(); - searchOptions.setExpandMode(GSearchControl.EXPAND_MODE_OPEN); - - // configure each of the searchers, for each tab - devSiteSearcher = new google.search.WebSearch(); - devSiteSearcher.setUserDefinedLabel("All"); - devSiteSearcher.setSiteRestriction("001482626316274216503:zu90b7s047u"); - - designSearcher = new google.search.WebSearch(); - designSearcher.setUserDefinedLabel("Design"); - designSearcher.setSiteRestriction("http://developer.android.com/design/"); - - trainingSearcher = new google.search.WebSearch(); - trainingSearcher.setUserDefinedLabel("Training"); - trainingSearcher.setSiteRestriction("http://developer.android.com/training/"); - - guidesSearcher = new google.search.WebSearch(); - guidesSearcher.setUserDefinedLabel("Guides"); - guidesSearcher.setSiteRestriction("http://developer.android.com/guide/"); - - referenceSearcher = new google.search.WebSearch(); - referenceSearcher.setUserDefinedLabel("Reference"); - referenceSearcher.setSiteRestriction("http://developer.android.com/reference/"); - - googleSearcher = new google.search.WebSearch(); - googleSearcher.setUserDefinedLabel("Google Services"); - googleSearcher.setSiteRestriction("http://developer.android.com/google/"); - - blogSearcher = new google.search.WebSearch(); - blogSearcher.setUserDefinedLabel("Blog"); - blogSearcher.setSiteRestriction("http://android-developers.blogspot.com"); - - // add each searcher to the search control - searchControl.addSearcher(devSiteSearcher, searchOptions); - searchControl.addSearcher(designSearcher, searchOptions); - searchControl.addSearcher(trainingSearcher, searchOptions); - searchControl.addSearcher(guidesSearcher, searchOptions); - searchControl.addSearcher(referenceSearcher, searchOptions); - searchControl.addSearcher(googleSearcher, searchOptions); - searchControl.addSearcher(blogSearcher, searchOptions); - - // configure result options - searchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET); - searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF); - searchControl.setTimeoutInterval(google.search.SearchControl.TIMEOUT_SHORT); - searchControl.setNoResultsString(google.search.SearchControl.NO_RESULTS_DEFAULT_STRING); - - // upon ajax search, refresh the url and search title - searchControl.setSearchStartingCallback(this, function(control, searcher, query) { - updateResultTitle(query); - var query = document.getElementById('search_autocomplete').value; - location.hash = 'q=' + query; - }); - - // once search results load, set up click listeners - searchControl.setSearchCompleteCallback(this, function(control, searcher, query) { - addResultClickListeners(); - }); - - // draw the search results box - searchControl.draw(document.getElementById("leftSearchControl"), drawOptions); - - // get query and execute the search - searchControl.execute(decodeURI(getQuery(location.hash))); - - document.getElementById("search_autocomplete").focus(); - addTabListeners(); -} -// End of loadSearchResults - - -google.setOnLoadCallback(function(){ - if (location.hash.indexOf("q=") == -1) { - // if there's no query in the url, don't search and make sure results are hidden - $('#searchResults').hide(); - return; - } else { - // first time loading search results for this page - $('#searchResults').slideDown('slow', setStickyTop); - $(".search .close").removeClass("hide"); - loadSearchResults(); - } -}, true); - -/* Adjust the scroll position to account for sticky header, only if the hash matches an id. - This does not handle <a name=""> tags. Some CSS fixes those, but only for reference docs. */ -function offsetScrollForSticky() { - // Ignore if there's no search bar (some special pages have no header) - if ($("#search-container").length < 1) return; - - var hash = escape(location.hash.substr(1)); - var $matchingElement = $("#"+hash); - // Sanity check that there's an element with that ID on the page - if ($matchingElement.length) { - // If the position of the target element is near the top of the page (<20px, where we expect it - // to be because we need to move it down 60px to become in view), then move it down 60px - if (Math.abs($matchingElement.offset().top - $(window).scrollTop()) < 20) { - $(window).scrollTop($(window).scrollTop() - 60); - } - } -} - -// when an event on the browser history occurs (back, forward, load) requery hash and do search -$(window).hashchange( function(){ - // Ignore if there's no search bar (some special pages have no header) - if ($("#search-container").length < 1) return; - - // If the hash isn't a search query or there's an error in the query, - // then adjust the scroll position to account for sticky header, then exit. - if ((location.hash.indexOf("q=") == -1) || (query == "undefined")) { - // If the results pane is open, close it. - if (!$("#searchResults").is(":hidden")) { - hideResults(); - } - offsetScrollForSticky(); - return; - } - - // Otherwise, we have a search to do - var query = decodeURI(getQuery(location.hash)); - searchControl.execute(query); - $('#searchResults').slideDown('slow', setStickyTop); - $("#search_autocomplete").focus(); - $(".search .close").removeClass("hide"); - - updateResultTitle(query); -}); - -function updateResultTitle(query) { - $("#searchTitle").html("Results for <em>" + escapeHTML(query) + "</em>"); -} - -// forcefully regain key-up event control (previously jacked by search api) -$("#search_autocomplete").keyup(function(event) { - return search_changed(event, false, toRoot); -}); - -// add event listeners to each tab so we can track the browser history -function addTabListeners() { - var tabHeaders = $(".gsc-tabHeader"); - for (var i = 0; i < tabHeaders.length; i++) { - $(tabHeaders[i]).attr("id",i).click(function() { - /* - // make a copy of the page numbers for the search left pane - setTimeout(function() { - // remove any residual page numbers - $('#searchResults .gsc-tabsArea .gsc-cursor-box.gs-bidi-start-align').remove(); - // move the page numbers to the left position; make a clone, - // because the element is drawn to the DOM only once - // and because we're going to remove it (previous line), - // we need it to be available to move again as the user navigates - $('#searchResults .gsc-webResult .gsc-cursor-box.gs-bidi-start-align:visible') - .clone().appendTo('#searchResults .gsc-tabsArea'); - }, 200); - */ - }); - } - setTimeout(function(){$(tabHeaders[0]).click()},200); -} - -// add analytics tracking events to each result link -function addResultClickListeners() { - $("#searchResults a.gs-title").each(function(index, link) { - // When user clicks enter for Google search results, track it - $(link).click(function() { - ga('send', 'event', 'Google Click', 'clicked: ' + $(this).attr('href'), - 'query: ' + $("#search_autocomplete").val().toLowerCase()); - }); - }); -} - - -function getQuery(hash) { - var queryParts = hash.split('='); - return queryParts[1]; -} - -/* returns the given string with all HTML brackets converted to entities - TODO: move this to the site's JS library */ -function escapeHTML(string) { - return string.replace(/</g,"<") - .replace(/>/g,">"); -} - - - - - - - -/* ######################################################## */ -/* ################# JAVADOC REFERENCE ################### */ -/* ######################################################## */ - -/* Initialize some droiddoc stuff, but only if we're in the reference */ -if (location.pathname.indexOf("/reference") == 0) { - if(!(location.pathname.indexOf("/reference-gms/packages.html") == 0) - && !(location.pathname.indexOf("/reference-gcm/packages.html") == 0) - && !(location.pathname.indexOf("/reference/com/google") == 0)) { - $(document).ready(function() { - // init available apis based on user pref - changeApiLevel(); - initSidenavHeightResize() - }); - } -} - -var API_LEVEL_COOKIE = "api_level"; -var minLevel = 1; -var maxLevel = 1; - -/******* SIDENAV DIMENSIONS ************/ - - function initSidenavHeightResize() { - // Change the drag bar size to nicely fit the scrollbar positions - var $dragBar = $(".ui-resizable-s"); - $dragBar.css({'width': $dragBar.parent().width() - 5 + "px"}); - - $( "#resize-packages-nav" ).resizable({ - containment: "#nav-panels", - handles: "s", - alsoResize: "#packages-nav", - resize: function(event, ui) { resizeNav(); }, /* resize the nav while dragging */ - stop: function(event, ui) { saveNavPanels(); } /* once stopped, save the sizes to cookie */ - }); - - } - -function updateSidenavFixedWidth() { - if (!sticky) return; - $('#devdoc-nav').css({ - 'width' : $('#side-nav').css('width'), - 'margin' : $('#side-nav').css('margin') - }); - $('#devdoc-nav a.totop').css({'display':'block','width':$("#nav").innerWidth()+'px'}); - - initSidenavHeightResize(); -} - -function updateSidenavFullscreenWidth() { - if (!sticky) return; - $('#devdoc-nav').css({ - 'width' : $('#side-nav').css('width'), - 'margin' : $('#side-nav').css('margin') - }); - $('#devdoc-nav .totop').css({'left': 'inherit'}); - - initSidenavHeightResize(); -} - -function buildApiLevelSelector() { - maxLevel = SINCE_DATA.length; - var userApiLevel = parseInt(readCookie(API_LEVEL_COOKIE)); - userApiLevel = userApiLevel == 0 ? maxLevel : userApiLevel; // If there's no cookie (zero), use the max by default - - minLevel = parseInt($("#doc-api-level").attr("class")); - // Handle provisional api levels; the provisional level will always be the highest possible level - // Provisional api levels will also have a length; other stuff that's just missing a level won't, - // so leave those kinds of entities at the default level of 1 (for example, the R.styleable class) - if (isNaN(minLevel) && minLevel.length) { - minLevel = maxLevel; - } - var select = $("#apiLevelSelector").html("").change(changeApiLevel); - for (var i = maxLevel-1; i >= 0; i--) { - var option = $("<option />").attr("value",""+SINCE_DATA[i]).append(""+SINCE_DATA[i]); - // if (SINCE_DATA[i] < minLevel) option.addClass("absent"); // always false for strings (codenames) - select.append(option); - } - - // get the DOM element and use setAttribute cuz IE6 fails when using jquery .attr('selected',true) - var selectedLevelItem = $("#apiLevelSelector option[value='"+userApiLevel+"']").get(0); - selectedLevelItem.setAttribute('selected',true); -} - -function changeApiLevel() { - maxLevel = SINCE_DATA.length; - var selectedLevel = maxLevel; - - selectedLevel = parseInt($("#apiLevelSelector option:selected").val()); - toggleVisisbleApis(selectedLevel, "body"); - - writeCookie(API_LEVEL_COOKIE, selectedLevel, null); - - if (selectedLevel < minLevel) { - var thing = ($("#jd-header").html().indexOf("package") != -1) ? "package" : "class"; - $("#naMessage").show().html("<div><p><strong>This " + thing - + " requires API level " + minLevel + " or higher.</strong></p>" - + "<p>This document is hidden because your selected API level for the documentation is " - + selectedLevel + ". You can change the documentation API level with the selector " - + "above the left navigation.</p>" - + "<p>For more information about specifying the API level your app requires, " - + "read <a href='" + toRoot + "training/basics/supporting-devices/platforms.html'" - + ">Supporting Different Platform Versions</a>.</p>" - + "<input type='button' value='OK, make this page visible' " - + "title='Change the API level to " + minLevel + "' " - + "onclick='$(\"#apiLevelSelector\").val(\"" + minLevel + "\");changeApiLevel();' />" - + "</div>"); - } else { - $("#naMessage").hide(); - } -} - -function toggleVisisbleApis(selectedLevel, context) { - var apis = $(".api",context); - apis.each(function(i) { - var obj = $(this); - var className = obj.attr("class"); - var apiLevelIndex = className.lastIndexOf("-")+1; - var apiLevelEndIndex = className.indexOf(" ", apiLevelIndex); - apiLevelEndIndex = apiLevelEndIndex != -1 ? apiLevelEndIndex : className.length; - var apiLevel = className.substring(apiLevelIndex, apiLevelEndIndex); - if (apiLevel.length == 0) { // for odd cases when the since data is actually missing, just bail - return; - } - apiLevel = parseInt(apiLevel); - - // Handle provisional api levels; if this item's level is the provisional one, set it to the max - var selectedLevelNum = parseInt(selectedLevel) - var apiLevelNum = parseInt(apiLevel); - if (isNaN(apiLevelNum)) { - apiLevelNum = maxLevel; - } - - // Grey things out that aren't available and give a tooltip title - if (apiLevelNum > selectedLevelNum) { - obj.addClass("absent").attr("title","Requires API Level \"" - + apiLevel + "\" or higher. To reveal, change the target API level " - + "above the left navigation."); - } - else obj.removeClass("absent").removeAttr("title"); - }); -} - - - - -/* ################# SIDENAV TREE VIEW ################### */ - -function new_node(me, mom, text, link, children_data, api_level) -{ - var node = new Object(); - node.children = Array(); - node.children_data = children_data; - node.depth = mom.depth + 1; - - node.li = document.createElement("li"); - mom.get_children_ul().appendChild(node.li); - - node.label_div = document.createElement("div"); - node.label_div.className = "label"; - if (api_level != null) { - $(node.label_div).addClass("api"); - $(node.label_div).addClass("api-level-"+api_level); - } - node.li.appendChild(node.label_div); - - if (children_data != null) { - node.expand_toggle = document.createElement("a"); - node.expand_toggle.href = "javascript:void(0)"; - node.expand_toggle.onclick = function() { - if (node.expanded) { - $(node.get_children_ul()).slideUp("fast"); - node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png"; - node.expanded = false; - } else { - expand_node(me, node); - } - }; - node.label_div.appendChild(node.expand_toggle); - - node.plus_img = document.createElement("img"); - node.plus_img.src = me.toroot + "assets/images/triangle-closed-small.png"; - node.plus_img.className = "plus"; - node.plus_img.width = "8"; - node.plus_img.border = "0"; - node.expand_toggle.appendChild(node.plus_img); - - node.expanded = false; - } - - var a = document.createElement("a"); - node.label_div.appendChild(a); - node.label = document.createTextNode(text); - a.appendChild(node.label); - if (link) { - a.href = me.toroot + link; - } else { - if (children_data != null) { - a.className = "nolink"; - a.href = "javascript:void(0)"; - a.onclick = node.expand_toggle.onclick; - // This next line shouldn't be necessary. I'll buy a beer for the first - // person who figures out how to remove this line and have the link - // toggle shut on the first try. --joeo@android.com - node.expanded = false; - } - } - - - node.children_ul = null; - node.get_children_ul = function() { - if (!node.children_ul) { - node.children_ul = document.createElement("ul"); - node.children_ul.className = "children_ul"; - node.children_ul.style.display = "none"; - node.li.appendChild(node.children_ul); - } - return node.children_ul; - }; - - return node; -} - - - - -function expand_node(me, node) -{ - if (node.children_data && !node.expanded) { - if (node.children_visited) { - $(node.get_children_ul()).slideDown("fast"); - } else { - get_node(me, node); - if ($(node.label_div).hasClass("absent")) { - $(node.get_children_ul()).addClass("absent"); - } - $(node.get_children_ul()).slideDown("fast"); - } - node.plus_img.src = me.toroot + "assets/images/triangle-opened-small.png"; - node.expanded = true; - - // perform api level toggling because new nodes are new to the DOM - var selectedLevel = $("#apiLevelSelector option:selected").val(); - toggleVisisbleApis(selectedLevel, "#side-nav"); - } -} - -function get_node(me, mom) -{ - mom.children_visited = true; - for (var i in mom.children_data) { - var node_data = mom.children_data[i]; - mom.children[i] = new_node(me, mom, node_data[0], node_data[1], - node_data[2], node_data[3]); - } -} - -function this_page_relative(toroot) -{ - var full = document.location.pathname; - var file = ""; - if (toroot.substr(0, 1) == "/") { - if (full.substr(0, toroot.length) == toroot) { - return full.substr(toroot.length); - } else { - // the file isn't under toroot. Fail. - return null; - } - } else { - if (toroot != "./") { - toroot = "./" + toroot; - } - do { - if (toroot.substr(toroot.length-3, 3) == "../" || toroot == "./") { - var pos = full.lastIndexOf("/"); - file = full.substr(pos) + file; - full = full.substr(0, pos); - toroot = toroot.substr(0, toroot.length-3); - } - } while (toroot != "" && toroot != "/"); - return file.substr(1); - } -} - -function find_page(url, data) -{ - var nodes = data; - var result = null; - for (var i in nodes) { - var d = nodes[i]; - if (d[1] == url) { - return new Array(i); - } - else if (d[2] != null) { - result = find_page(url, d[2]); - if (result != null) { - return (new Array(i).concat(result)); - } - } - } - return null; -} - -function init_default_navtree(toroot) { - // load json file for navtree data - $.getScript(toRoot + 'navtree_data.js', function(data, textStatus, jqxhr) { - // when the file is loaded, initialize the tree - if(jqxhr.status === 200) { - init_navtree("tree-list", toroot, NAVTREE_DATA); - } - }); - - // perform api level toggling because because the whole tree is new to the DOM - var selectedLevel = $("#apiLevelSelector option:selected").val(); - toggleVisisbleApis(selectedLevel, "#side-nav"); -} - -function init_navtree(navtree_id, toroot, root_nodes) -{ - var me = new Object(); - me.toroot = toroot; - me.node = new Object(); - - me.node.li = document.getElementById(navtree_id); - me.node.children_data = root_nodes; - me.node.children = new Array(); - me.node.children_ul = document.createElement("ul"); - me.node.get_children_ul = function() { return me.node.children_ul; }; - //me.node.children_ul.className = "children_ul"; - me.node.li.appendChild(me.node.children_ul); - me.node.depth = 0; - - get_node(me, me.node); - - me.this_page = this_page_relative(toroot); - me.breadcrumbs = find_page(me.this_page, root_nodes); - if (me.breadcrumbs != null && me.breadcrumbs.length != 0) { - var mom = me.node; - for (var i in me.breadcrumbs) { - var j = me.breadcrumbs[i]; - mom = mom.children[j]; - expand_node(me, mom); - } - mom.label_div.className = mom.label_div.className + " selected"; - addLoadEvent(function() { - scrollIntoView("nav-tree"); - }); - } -} - - - - - - - - -/* TODO: eliminate redundancy with non-google functions */ -function init_google_navtree(navtree_id, toroot, root_nodes) -{ - var me = new Object(); - me.toroot = toroot; - me.node = new Object(); - - me.node.li = document.getElementById(navtree_id); - me.node.children_data = root_nodes; - me.node.children = new Array(); - me.node.children_ul = document.createElement("ul"); - me.node.get_children_ul = function() { return me.node.children_ul; }; - //me.node.children_ul.className = "children_ul"; - me.node.li.appendChild(me.node.children_ul); - me.node.depth = 0; - - get_google_node(me, me.node); -} - -function new_google_node(me, mom, text, link, children_data, api_level) -{ - var node = new Object(); - var child; - node.children = Array(); - node.children_data = children_data; - node.depth = mom.depth + 1; - node.get_children_ul = function() { - if (!node.children_ul) { - node.children_ul = document.createElement("ul"); - node.children_ul.className = "tree-list-children"; - node.li.appendChild(node.children_ul); - } - return node.children_ul; - }; - node.li = document.createElement("li"); - - mom.get_children_ul().appendChild(node.li); - - - if(link) { - child = document.createElement("a"); - - } - else { - child = document.createElement("span"); - child.className = "tree-list-subtitle"; - - } - if (children_data != null) { - node.li.className="nav-section"; - node.label_div = document.createElement("div"); - node.label_div.className = "nav-section-header-ref"; - node.li.appendChild(node.label_div); - get_google_node(me, node); - node.label_div.appendChild(child); - } - else { - node.li.appendChild(child); - } - if(link) { - child.href = me.toroot + link; - } - node.label = document.createTextNode(text); - child.appendChild(node.label); - - node.children_ul = null; - - return node; -} - -function get_google_node(me, mom) -{ - mom.children_visited = true; - var linkText; - for (var i in mom.children_data) { - var node_data = mom.children_data[i]; - linkText = node_data[0]; - - if(linkText.match("^"+"com.google.android")=="com.google.android"){ - linkText = linkText.substr(19, linkText.length); - } - mom.children[i] = new_google_node(me, mom, linkText, node_data[1], - node_data[2], node_data[3]); - } -} - - - - - - -/****** NEW version of script to build google and sample navs dynamically ******/ -// TODO: update Google reference docs to tolerate this new implementation - -var NODE_NAME = 0; -var NODE_HREF = 1; -var NODE_GROUP = 2; -var NODE_TAGS = 3; -var NODE_CHILDREN = 4; - -function init_google_navtree2(navtree_id, data) -{ - var $containerUl = $("#"+navtree_id); - for (var i in data) { - var node_data = data[i]; - $containerUl.append(new_google_node2(node_data)); - } - - // Make all third-generation list items 'sticky' to prevent them from collapsing - $containerUl.find('li li li.nav-section').addClass('sticky'); - - initExpandableNavItems("#"+navtree_id); -} - -function new_google_node2(node_data) -{ - var linkText = node_data[NODE_NAME]; - if(linkText.match("^"+"com.google.android")=="com.google.android"){ - linkText = linkText.substr(19, linkText.length); - } - var $li = $('<li>'); - var $a; - if (node_data[NODE_HREF] != null) { - $a = $('<a href="' + toRoot + node_data[NODE_HREF] + '" title="' + linkText + '" >' - + linkText + '</a>'); - } else { - $a = $('<a href="#" onclick="return false;" title="' + linkText + '" >' - + linkText + '/</a>'); - } - var $childUl = $('<ul>'); - if (node_data[NODE_CHILDREN] != null) { - $li.addClass("nav-section"); - $a = $('<div class="nav-section-header">').append($a); - if (node_data[NODE_HREF] == null) $a.addClass('empty'); - - for (var i in node_data[NODE_CHILDREN]) { - var child_node_data = node_data[NODE_CHILDREN][i]; - $childUl.append(new_google_node2(child_node_data)); - } - $li.append($childUl); - } - $li.prepend($a); - - return $li; -} - - - - - - - - - - - -function showGoogleRefTree() { - init_default_google_navtree(toRoot); - init_default_gcm_navtree(toRoot); -} - -function init_default_google_navtree(toroot) { - // load json file for navtree data - $.getScript(toRoot + 'gms_navtree_data.js', function(data, textStatus, jqxhr) { - // when the file is loaded, initialize the tree - if(jqxhr.status === 200) { - init_google_navtree("gms-tree-list", toroot, GMS_NAVTREE_DATA); - highlightSidenav(); - resizeNav(); - } - }); -} - -function init_default_gcm_navtree(toroot) { - // load json file for navtree data - $.getScript(toRoot + 'gcm_navtree_data.js', function(data, textStatus, jqxhr) { - // when the file is loaded, initialize the tree - if(jqxhr.status === 200) { - init_google_navtree("gcm-tree-list", toroot, GCM_NAVTREE_DATA); - highlightSidenav(); - resizeNav(); - } - }); -} - -function showSamplesRefTree() { - init_default_samples_navtree(toRoot); -} - -function init_default_samples_navtree(toroot) { - // load json file for navtree data - $.getScript(toRoot + 'samples_navtree_data.js', function(data, textStatus, jqxhr) { - // when the file is loaded, initialize the tree - if(jqxhr.status === 200) { - // hack to remove the "about the samples" link then put it back in - // after we nuke the list to remove the dummy static list of samples - var $firstLi = $("#nav.samples-nav > li:first-child").clone(); - $("#nav.samples-nav").empty(); - $("#nav.samples-nav").append($firstLi); - - init_google_navtree2("nav.samples-nav", SAMPLES_NAVTREE_DATA); - highlightSidenav(); - resizeNav(); - if ($("#jd-content #samples").length) { - showSamples(); - } - } - }); -} - -/* TOGGLE INHERITED MEMBERS */ - -/* Toggle an inherited class (arrow toggle) - * @param linkObj The link that was clicked. - * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed. - * 'null' to simply toggle. - */ -function toggleInherited(linkObj, expand) { - var base = linkObj.getAttribute("id"); - var list = document.getElementById(base + "-list"); - var summary = document.getElementById(base + "-summary"); - var trigger = document.getElementById(base + "-trigger"); - var a = $(linkObj); - if ( (expand == null && a.hasClass("closed")) || expand ) { - list.style.display = "none"; - summary.style.display = "block"; - trigger.src = toRoot + "assets/images/triangle-opened.png"; - a.removeClass("closed"); - a.addClass("opened"); - } else if ( (expand == null && a.hasClass("opened")) || (expand == false) ) { - list.style.display = "block"; - summary.style.display = "none"; - trigger.src = toRoot + "assets/images/triangle-closed.png"; - a.removeClass("opened"); - a.addClass("closed"); - } - return false; -} - -/* Toggle all inherited classes in a single table (e.g. all inherited methods) - * @param linkObj The link that was clicked. - * @param expand 'true' to ensure it's expanded. 'false' to ensure it's closed. - * 'null' to simply toggle. - */ -function toggleAllInherited(linkObj, expand) { - var a = $(linkObj); - var table = $(a.parent().parent().parent()); // ugly way to get table/tbody - var expandos = $(".jd-expando-trigger", table); - if ( (expand == null && a.text() == "[Expand]") || expand ) { - expandos.each(function(i) { - toggleInherited(this, true); - }); - a.text("[Collapse]"); - } else if ( (expand == null && a.text() == "[Collapse]") || (expand == false) ) { - expandos.each(function(i) { - toggleInherited(this, false); - }); - a.text("[Expand]"); - } - return false; -} - -/* Toggle all inherited members in the class (link in the class title) - */ -function toggleAllClassInherited() { - var a = $("#toggleAllClassInherited"); // get toggle link from class title - var toggles = $(".toggle-all", $("#body-content")); - if (a.text() == "[Expand All]") { - toggles.each(function(i) { - toggleAllInherited(this, true); - }); - a.text("[Collapse All]"); - } else { - toggles.each(function(i) { - toggleAllInherited(this, false); - }); - a.text("[Expand All]"); - } - return false; -} - -/* Expand all inherited members in the class. Used when initiating page search */ -function ensureAllInheritedExpanded() { - var toggles = $(".toggle-all", $("#body-content")); - toggles.each(function(i) { - toggleAllInherited(this, true); - }); - $("#toggleAllClassInherited").text("[Collapse All]"); -} - - -/* HANDLE KEY EVENTS - * - Listen for Ctrl+F (Cmd on Mac) and expand all inherited members (to aid page search) - */ -var agent = navigator['userAgent'].toLowerCase(); -var mac = agent.indexOf("macintosh") != -1; - -$(document).keydown( function(e) { -var control = mac ? e.metaKey && !e.ctrlKey : e.ctrlKey; // get ctrl key - if (control && e.which == 70) { // 70 is "F" - ensureAllInheritedExpanded(); - } -}); - - - - - - -/* On-demand functions */ - -/** Move sample code line numbers out of PRE block and into non-copyable column */ -function initCodeLineNumbers() { - var numbers = $("#codesample-block a.number"); - if (numbers.length) { - $("#codesample-line-numbers").removeClass("hidden").append(numbers); - } - - $(document).ready(function() { - // select entire line when clicked - $("span.code-line").click(function() { - if (!shifted) { - selectText(this); - } - }); - // invoke line link on double click - $(".code-line").dblclick(function() { - document.location.hash = $(this).attr('id'); - }); - // highlight the line when hovering on the number - $("#codesample-line-numbers a.number").mouseover(function() { - var id = $(this).attr('href'); - $(id).css('background','#e7e7e7'); - }); - $("#codesample-line-numbers a.number").mouseout(function() { - var id = $(this).attr('href'); - $(id).css('background','none'); - }); - }); -} - -// create SHIFT key binder to avoid the selectText method when selecting multiple lines -var shifted = false; -$(document).bind('keyup keydown', function(e){shifted = e.shiftKey; return true;} ); - -// courtesy of jasonedelman.com -function selectText(element) { - var doc = document - , range, selection - ; - if (doc.body.createTextRange) { //ms - range = doc.body.createTextRange(); - range.moveToElementText(element); - range.select(); - } else if (window.getSelection) { //all others - selection = window.getSelection(); - range = doc.createRange(); - range.selectNodeContents(element); - selection.removeAllRanges(); - selection.addRange(range); - } -} - - - - -/** Display links and other information about samples that match the - group specified by the URL */ -function showSamples() { - var group = $("#samples").attr('class'); - $("#samples").html("<p>Here are some samples for <b>" + group + "</b> apps:</p>"); - - var $ul = $("<ul>"); - $selectedLi = $("#nav li.selected"); - - $selectedLi.children("ul").children("li").each(function() { - var $li = $("<li>").append($(this).find("a").first().clone()); - $ul.append($li); - }); - - $("#samples").append($ul); - -} - - - -/* ########################################################## */ -/* ################### RESOURCE CARDS ##################### */ -/* ########################################################## */ - -/** Handle resource queries, collections, and grids (sections). Requires - jd_tag_helpers.js and the *_unified_data.js to be loaded. */ - -(function() { - // Prevent the same resource from being loaded more than once per page. - var addedPageResources = {}; - - $(document).ready(function() { - $('.resource-widget').each(function() { - initResourceWidget(this); - }); - - /* Pass the line height to ellipsisfade() to adjust the height of the - text container to show the max number of lines possible, without - showing lines that are cut off. This works with the css ellipsis - classes to fade last text line and apply an ellipsis char. */ - - //card text currently uses 15px line height. - var lineHeight = 15; - $('.card-info .text').ellipsisfade(lineHeight); - }); - - /* - Three types of resource layouts: - Flow - Uses a fixed row-height flow using float left style. - Carousel - Single card slideshow all same dimension absolute. - Stack - Uses fixed columns and flexible element height. - */ - function initResourceWidget(widget) { - var $widget = $(widget); - var isFlow = $widget.hasClass('resource-flow-layout'), - isCarousel = $widget.hasClass('resource-carousel-layout'), - isStack = $widget.hasClass('resource-stack-layout'); - - // find size of widget by pulling out its class name - var sizeCols = 1; - var m = $widget.get(0).className.match(/\bcol-(\d+)\b/); - if (m) { - sizeCols = parseInt(m[1], 10); - } - - var opts = { - cardSizes: ($widget.data('cardsizes') || '').split(','), - maxResults: parseInt($widget.data('maxresults') || '100', 10), - itemsPerPage: $widget.data('itemsperpage'), - sortOrder: $widget.data('sortorder'), - query: $widget.data('query'), - section: $widget.data('section'), - sizeCols: sizeCols, - /* Added by LFL 6/6/14 */ - resourceStyle: $widget.data('resourcestyle') || 'card', - stackSort: $widget.data('stacksort') || 'true' - }; - - // run the search for the set of resources to show - - var resources = buildResourceList(opts); - - if (isFlow) { - drawResourcesFlowWidget($widget, opts, resources); - } else if (isCarousel) { - drawResourcesCarouselWidget($widget, opts, resources); - } else if (isStack) { - /* Looks like this got removed and is not used, so repurposing for the - homepage style layout. - Modified by LFL 6/6/14 - */ - //var sections = buildSectionList(opts); - opts['numStacks'] = $widget.data('numstacks'); - drawResourcesStackWidget($widget, opts, resources/*, sections*/); - } - } - - /* Initializes a Resource Carousel Widget */ - function drawResourcesCarouselWidget($widget, opts, resources) { - $widget.empty(); - var plusone = true; //always show plusone on carousel - - $widget.addClass('resource-card slideshow-container') - .append($('<a>').addClass('slideshow-prev').text('Prev')) - .append($('<a>').addClass('slideshow-next').text('Next')); - - var css = { 'width': $widget.width() + 'px', - 'height': $widget.height() + 'px' }; - - var $ul = $('<ul>'); - - for (var i = 0; i < resources.length; ++i) { - var $card = $('<a>') - .attr('href', cleanUrl(resources[i].url)) - .decorateResourceCard(resources[i],plusone); - - $('<li>').css(css) - .append($card) - .appendTo($ul); - } - - $('<div>').addClass('frame') - .append($ul) - .appendTo($widget); - - $widget.dacSlideshow({ - auto: true, - btnPrev: '.slideshow-prev', - btnNext: '.slideshow-next' - }); - }; - - /* Initializes a Resource Card Stack Widget (column-based layout) - Modified by LFL 6/6/14 - */ - function drawResourcesStackWidget($widget, opts, resources, sections) { - // Don't empty widget, grab all items inside since they will be the first - // items stacked, followed by the resource query - var plusone = true; //by default show plusone on section cards - var cards = $widget.find('.resource-card').detach().toArray(); - var numStacks = opts.numStacks || 1; - var $stacks = []; - var urlString; - - for (var i = 0; i < numStacks; ++i) { - $stacks[i] = $('<div>').addClass('resource-card-stack') - .appendTo($widget); - } - - var sectionResources = []; - - // Extract any subsections that are actually resource cards - if (sections) { - for (var i = 0; i < sections.length; ++i) { - if (!sections[i].sections || !sections[i].sections.length) { - // Render it as a resource card - sectionResources.push( - $('<a>') - .addClass('resource-card section-card') - .attr('href', cleanUrl(sections[i].resource.url)) - .decorateResourceCard(sections[i].resource,plusone)[0] - ); - - } else { - cards.push( - $('<div>') - .addClass('resource-card section-card-menu') - .decorateResourceSection(sections[i],plusone)[0] - ); - } - } - } - - cards = cards.concat(sectionResources); - - for (var i = 0; i < resources.length; ++i) { - var $card = createResourceElement(resources[i], opts); - - if (opts.resourceStyle.indexOf('related') > -1) { - $card.addClass('related-card'); - } - - cards.push($card[0]); - } - - if (opts.stackSort != 'false') { - for (var i = 0; i < cards.length; ++i) { - // Find the stack with the shortest height, but give preference to - // left to right order. - var minHeight = $stacks[0].height(); - var minIndex = 0; - - for (var j = 1; j < numStacks; ++j) { - var height = $stacks[j].height(); - if (height < minHeight - 45) { - minHeight = height; - minIndex = j; - } - } - - $stacks[minIndex].append($(cards[i])); - } - } - - }; - - /* - Create a resource card using the given resource object and a list of html - configured options. Returns a jquery object containing the element. - */ - function createResourceElement(resource, opts, plusone) { - var $el; - - // The difference here is that generic cards are not entirely clickable - // so its a div instead of an a tag, also the generic one is not given - // the resource-card class so it appears with a transparent background - // and can be styled in whatever way the css setup. - if (opts.resourceStyle == 'generic') { - $el = $('<div>') - .addClass('resource') - .attr('href', cleanUrl(resource.url)) - .decorateResource(resource, opts); - } else { - var cls = 'resource resource-card'; - - $el = $('<a>') - .addClass(cls) - .attr('href', cleanUrl(resource.url)) - .decorateResourceCard(resource, plusone); - } - - return $el; - } - - /* Initializes a flow widget, see distribute.scss for generating accompanying css */ - function drawResourcesFlowWidget($widget, opts, resources) { - $widget.empty(); - var cardSizes = opts.cardSizes || ['6x6']; - var i = 0, j = 0; - var plusone = true; // by default show plusone on resource cards - - while (i < resources.length) { - var cardSize = cardSizes[j++ % cardSizes.length]; - cardSize = cardSize.replace(/^\s+|\s+$/,''); - // Some card sizes do not get a plusone button, such as where space is constrained - // or for cards commonly embedded in docs (to improve overall page speed). - plusone = !((cardSize == "6x2") || (cardSize == "6x3") || - (cardSize == "9x2") || (cardSize == "9x3") || - (cardSize == "12x2") || (cardSize == "12x3")); - - // A stack has a third dimension which is the number of stacked items - var isStack = cardSize.match(/(\d+)x(\d+)x(\d+)/); - var stackCount = 0; - var $stackDiv = null; - - if (isStack) { - // Create a stack container which should have the dimensions defined - // by the product of the items inside. - $stackDiv = $('<div>').addClass('resource-card-stack resource-card-' + isStack[1] - + 'x' + isStack[2] * isStack[3]) .appendTo($widget); - } - - // Build each stack item or just a single item - do { - var resource = resources[i]; - - var $card = createResourceElement(resources[i], opts, plusone); - - $card.addClass('resource-card-' + cardSize + - ' resource-card-' + resource.type); - - if (isStack) { - $card.addClass('resource-card-' + isStack[1] + 'x' + isStack[2]); - if (++stackCount == parseInt(isStack[3])) { - $card.addClass('resource-card-row-stack-last'); - stackCount = 0; - } - } else { - stackCount = 0; - } - - $card.appendTo($stackDiv || $widget); - - } while (++i < resources.length && stackCount > 0); - } - } - - /* Build a site map of resources using a section as a root. */ - function buildSectionList(opts) { - if (opts.section && SECTION_BY_ID[opts.section]) { - return SECTION_BY_ID[opts.section].sections || []; - } - return []; - } - - function buildResourceList(opts) { - var maxResults = opts.maxResults || 100; - - var query = opts.query || ''; - var expressions = parseResourceQuery(query); - var addedResourceIndices = {}; - var results = []; - - for (var i = 0; i < expressions.length; i++) { - var clauses = expressions[i]; - - // build initial set of resources from first clause - var firstClause = clauses[0]; - var resources = []; - switch (firstClause.attr) { - case 'type': - resources = ALL_RESOURCES_BY_TYPE[firstClause.value]; - break; - case 'lang': - resources = ALL_RESOURCES_BY_LANG[firstClause.value]; - break; - case 'tag': - resources = ALL_RESOURCES_BY_TAG[firstClause.value]; - break; - case 'collection': - var urls = RESOURCE_COLLECTIONS[firstClause.value].resources || []; - resources = urls.map(function(url){ return ALL_RESOURCES_BY_URL[url]; }); - break; - case 'section': - var urls = SITE_MAP[firstClause.value].sections || []; - resources = urls.map(function(url){ return ALL_RESOURCES_BY_URL[url]; }); - break; - } - // console.log(firstClause.attr + ':' + firstClause.value); - resources = resources || []; - - // use additional clauses to filter corpus - if (clauses.length > 1) { - var otherClauses = clauses.slice(1); - resources = resources.filter(getResourceMatchesClausesFilter(otherClauses)); - } - - // filter out resources already added - if (i > 1) { - resources = resources.filter(getResourceNotAlreadyAddedFilter(addedResourceIndices)); - } - - // add to list of already added indices - for (var j = 0; j < resources.length; j++) { - // console.log(resources[j].title); - addedResourceIndices[resources[j].index] = 1; - } - - // concat to final results list - results = results.concat(resources); - } - - if (opts.sortOrder && results.length) { - var attr = opts.sortOrder; - - if (opts.sortOrder == 'random') { - var i = results.length, j, temp; - while (--i) { - j = Math.floor(Math.random() * (i + 1)); - temp = results[i]; - results[i] = results[j]; - results[j] = temp; - } - } else { - var desc = attr.charAt(0) == '-'; - if (desc) { - attr = attr.substring(1); - } - results = results.sort(function(x,y) { - return (desc ? -1 : 1) * (parseInt(x[attr], 10) - parseInt(y[attr], 10)); - }); - } - } - - results = results.filter(getResourceNotAlreadyAddedFilter(addedPageResources)); - results = results.slice(0, maxResults); - - for (var j = 0; j < results.length; ++j) { - addedPageResources[results[j].index] = 1; - } - - return results; - } - - - function getResourceNotAlreadyAddedFilter(addedResourceIndices) { - return function(resource) { - return !addedResourceIndices[resource.index]; - }; - } - - - function getResourceMatchesClausesFilter(clauses) { - return function(resource) { - return doesResourceMatchClauses(resource, clauses); - }; - } - - - function doesResourceMatchClauses(resource, clauses) { - for (var i = 0; i < clauses.length; i++) { - var map; - switch (clauses[i].attr) { - case 'type': - map = IS_RESOURCE_OF_TYPE[clauses[i].value]; - break; - case 'lang': - map = IS_RESOURCE_IN_LANG[clauses[i].value]; - break; - case 'tag': - map = IS_RESOURCE_TAGGED[clauses[i].value]; - break; - } - - if (!map || (!!clauses[i].negative ? map[resource.index] : !map[resource.index])) { - return clauses[i].negative; - } - } - return true; - } - - function cleanUrl(url) - { - if (url && url.indexOf('//') === -1) { - url = toRoot + url; - } - - return url; - } - - - function parseResourceQuery(query) { - // Parse query into array of expressions (expression e.g. 'tag:foo + type:video') - var expressions = []; - var expressionStrs = query.split(',') || []; - for (var i = 0; i < expressionStrs.length; i++) { - var expr = expressionStrs[i] || ''; - - // Break expression into clauses (clause e.g. 'tag:foo') - var clauses = []; - var clauseStrs = expr.split(/(?=[\+\-])/); - for (var j = 0; j < clauseStrs.length; j++) { - var clauseStr = clauseStrs[j] || ''; - - // Get attribute and value from clause (e.g. attribute='tag', value='foo') - var parts = clauseStr.split(':'); - var clause = {}; - - clause.attr = parts[0].replace(/^\s+|\s+$/g,''); - if (clause.attr) { - if (clause.attr.charAt(0) == '+') { - clause.attr = clause.attr.substring(1); - } else if (clause.attr.charAt(0) == '-') { - clause.negative = true; - clause.attr = clause.attr.substring(1); - } - } - - if (parts.length > 1) { - clause.value = parts[1].replace(/^\s+|\s+$/g,''); - } - - clauses.push(clause); - } - - if (!clauses.length) { - continue; - } - - expressions.push(clauses); - } - - return expressions; - } -})(); - -(function($) { - - /* - Utility method for creating dom for the description area of a card. - Used in decorateResourceCard and decorateResource. - */ - function buildResourceCardDescription(resource, plusone) { - var $description = $('<div>').addClass('description ellipsis'); - - $description.append($('<div>').addClass('text').html(resource.summary)); - - if (resource.cta) { - $description.append($('<a>').addClass('cta').html(resource.cta)); - } - - if (plusone) { - var plusurl = resource.url.indexOf("//") > -1 ? resource.url : - "//developer.android.com/" + resource.url; - - $description.append($('<div>').addClass('util') - .append($('<div>').addClass('g-plusone') - .attr('data-size', 'small') - .attr('data-align', 'right') - .attr('data-href', plusurl))); - } - - return $description; - } - - - /* Simple jquery function to create dom for a standard resource card */ - $.fn.decorateResourceCard = function(resource,plusone) { - var section = resource.group || resource.type; - var imgUrl = resource.image || - 'assets/images/resource-card-default-android.jpg'; - - if (imgUrl.indexOf('//') === -1) { - imgUrl = toRoot + imgUrl; - } - - $('<div>').addClass('card-bg') - .css('background-image', 'url(' + (imgUrl || toRoot + - 'assets/images/resource-card-default-android.jpg') + ')') - .appendTo(this); - - $('<div>').addClass('card-info' + (!resource.summary ? ' empty-desc' : '')) - .append($('<div>').addClass('section').text(section)) - .append($('<div>').addClass('title').html(resource.title)) - .append(buildResourceCardDescription(resource, plusone)) - .appendTo(this); - - return this; - }; - - /* Simple jquery function to create dom for a resource section card (menu) */ - $.fn.decorateResourceSection = function(section,plusone) { - var resource = section.resource; - //keep url clean for matching and offline mode handling - var urlPrefix = resource.image.indexOf("//") > -1 ? "" : toRoot; - var $base = $('<a>') - .addClass('card-bg') - .attr('href', resource.url) - .append($('<div>').addClass('card-section-icon') - .append($('<div>').addClass('icon')) - .append($('<div>').addClass('section').html(resource.title))) - .appendTo(this); - - var $cardInfo = $('<div>').addClass('card-info').appendTo(this); - - if (section.sections && section.sections.length) { - // Recurse the section sub-tree to find a resource image. - var stack = [section]; - - while (stack.length) { - if (stack[0].resource.image) { - $base.css('background-image', 'url(' + urlPrefix + stack[0].resource.image + ')'); - break; - } - - if (stack[0].sections) { - stack = stack.concat(stack[0].sections); - } - - stack.shift(); - } - - var $ul = $('<ul>') - .appendTo($cardInfo); - - var max = section.sections.length > 3 ? 3 : section.sections.length; - - for (var i = 0; i < max; ++i) { - - var subResource = section.sections[i]; - if (!plusone) { - $('<li>') - .append($('<a>').attr('href', subResource.url) - .append($('<div>').addClass('title').html(subResource.title)) - .append($('<div>').addClass('description ellipsis') - .append($('<div>').addClass('text').html(subResource.summary)) - .append($('<div>').addClass('util')))) - .appendTo($ul); - } else { - $('<li>') - .append($('<a>').attr('href', subResource.url) - .append($('<div>').addClass('title').html(subResource.title)) - .append($('<div>').addClass('description ellipsis') - .append($('<div>').addClass('text').html(subResource.summary)) - .append($('<div>').addClass('util') - .append($('<div>').addClass('g-plusone') - .attr('data-size', 'small') - .attr('data-align', 'right') - .attr('data-href', resource.url))))) - .appendTo($ul); - } - } - - // Add a more row - if (max < section.sections.length) { - $('<li>') - .append($('<a>').attr('href', resource.url) - .append($('<div>') - .addClass('title') - .text('More'))) - .appendTo($ul); - } - } else { - // No sub-resources, just render description? - } - - return this; - }; - - - - - /* Render other types of resource styles that are not cards. */ - $.fn.decorateResource = function(resource, opts) { - var imgUrl = resource.image || - 'assets/images/resource-card-default-android.jpg'; - var linkUrl = resource.url; - - if (imgUrl.indexOf('//') === -1) { - imgUrl = toRoot + imgUrl; - } - - if (linkUrl && linkUrl.indexOf('//') === -1) { - linkUrl = toRoot + linkUrl; - } - - $(this).append( - $('<div>').addClass('image') - .css('background-image', 'url(' + imgUrl + ')'), - $('<div>').addClass('info').append( - $('<h4>').addClass('title').html(resource.title), - $('<p>').addClass('summary').html(resource.summary), - $('<a>').attr('href', linkUrl).addClass('cta').html('Learn More') - ) - ); - - return this; - }; -})(jQuery); - - -/* Calculate the vertical area remaining */ -(function($) { - $.fn.ellipsisfade= function(lineHeight) { - this.each(function() { - // get element text - var $this = $(this); - var remainingHeight = $this.parent().parent().height(); - $this.parent().siblings().each(function () - { - if ($(this).is(":visible")) { - var h = $(this).height(); - remainingHeight = remainingHeight - h; - } - }); - - adjustedRemainingHeight = ((remainingHeight)/lineHeight>>0)*lineHeight - $this.parent().css({'height': adjustedRemainingHeight}); - $this.css({'height': "auto"}); - }); - - return this; - }; -}) (jQuery); - -/* - Fullscreen Carousel - - The following allows for an area at the top of the page that takes over the - entire browser height except for its top offset and an optional bottom - padding specified as a data attribute. - - HTML: - - <div class="fullscreen-carousel"> - <div class="fullscreen-carousel-content"> - <!-- content here --> - </div> - <div class="fullscreen-carousel-content"> - <!-- content here --> - </div> - - etc ... - - </div> - - Control over how the carousel takes over the screen can mostly be defined in - a css file. Setting min-height on the .fullscreen-carousel-content elements - will prevent them from shrinking to far vertically when the browser is very - short, and setting max-height on the .fullscreen-carousel itself will prevent - the area from becoming to long in the case that the browser is stretched very - tall. - - There is limited functionality for having multiple sections since that request - was removed, but it is possible to add .next-arrow and .prev-arrow elements to - scroll between multiple content areas. -*/ - -(function() { - $(document).ready(function() { - $('.fullscreen-carousel').each(function() { - initWidget(this); - }); - }); - - function initWidget(widget) { - var $widget = $(widget); - - var topOffset = $widget.offset().top; - var padBottom = parseInt($widget.data('paddingbottom')) || 0; - var maxHeight = 0; - var minHeight = 0; - var $content = $widget.find('.fullscreen-carousel-content'); - var $nextArrow = $widget.find('.next-arrow'); - var $prevArrow = $widget.find('.prev-arrow'); - var $curSection = $($content[0]); - - if ($content.length <= 1) { - $nextArrow.hide(); - $prevArrow.hide(); - } else { - $nextArrow.click(function() { - var index = ($content.index($curSection) + 1); - $curSection.hide(); - $curSection = $($content[index >= $content.length ? 0 : index]); - $curSection.show(); - }); - - $prevArrow.click(function() { - var index = ($content.index($curSection) - 1); - $curSection.hide(); - $curSection = $($content[index < 0 ? $content.length - 1 : 0]); - $curSection.show(); - }); - } - - // Just hide all content sections except first. - $content.each(function(index) { - if ($(this).height() > minHeight) minHeight = $(this).height(); - $(this).css({position: 'absolute', display: index > 0 ? 'none' : ''}); - }); - - // Register for changes to window size, and trigger. - $(window).resize(resizeWidget); - resizeWidget(); - - function resizeWidget() { - var height = $(window).height() - topOffset - padBottom; - $widget.width($(window).width()); - $widget.height(height < minHeight ? minHeight : - (maxHeight && height > maxHeight ? maxHeight : height)); - } - } -})(); - - - - - -/* - Tab Carousel - - The following allows tab widgets to be installed via the html below. Each - tab content section should have a data-tab attribute matching one of the - nav items'. Also each tab content section should have a width matching the - tab carousel. - - HTML: - - <div class="tab-carousel"> - <ul class="tab-nav"> - <li><a href="#" data-tab="handsets">Handsets</a> - <li><a href="#" data-tab="wearable">Wearable</a> - <li><a href="#" data-tab="tv">TV</a> - </ul> - - <div class="tab-carousel-content"> - <div data-tab="handsets"> - <!--Full width content here--> - </div> - - <div data-tab="wearable"> - <!--Full width content here--> - </div> - - <div data-tab="tv"> - <!--Full width content here--> - </div> - </div> - </div> - -*/ -(function() { - $(document).ready(function() { - $('.tab-carousel').each(function() { - initWidget(this); - }); - }); - - function initWidget(widget) { - var $widget = $(widget); - var $nav = $widget.find('.tab-nav'); - var $anchors = $nav.find('[data-tab]'); - var $li = $nav.find('li'); - var $contentContainer = $widget.find('.tab-carousel-content'); - var $tabs = $contentContainer.find('[data-tab]'); - var $curTab = $($tabs[0]); // Current tab is first tab. - var width = $widget.width(); - - // Setup nav interactivity. - $anchors.click(function(evt) { - evt.preventDefault(); - var query = '[data-tab=' + $(this).data('tab') + ']'; - transitionWidget($tabs.filter(query)); - }); - - // Add highlight for navigation on first item. - var $highlight = $('<div>').addClass('highlight') - .css({left:$li.position().left + 'px', width:$li.outerWidth() + 'px'}) - .appendTo($nav); - - // Store height since we will change contents to absolute. - $contentContainer.height($contentContainer.height()); - - // Absolutely position tabs so they're ready for transition. - $tabs.each(function(index) { - $(this).css({position: 'absolute', left: index > 0 ? width + 'px' : '0'}); - }); - - function transitionWidget($toTab) { - if (!$curTab.is($toTab)) { - var curIndex = $tabs.index($curTab[0]); - var toIndex = $tabs.index($toTab[0]); - var dir = toIndex > curIndex ? 1 : -1; - - // Animate content sections. - $toTab.css({left:(width * dir) + 'px'}); - $curTab.animate({left:(width * -dir) + 'px'}); - $toTab.animate({left:'0'}); - - // Animate navigation highlight. - $highlight.animate({left:$($li[toIndex]).position().left + 'px', - width:$($li[toIndex]).outerWidth() + 'px'}) - - // Store new current section. - $curTab = $toTab; - } - } - } -})(); diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/favicon.ico b/build/tools/droiddoc/templates-lineage-sdk/assets/favicon.ico Binary files differdeleted file mode 100755 index 35b571ac..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/favicon.ico +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/fullscreen.png b/build/tools/droiddoc/templates-lineage-sdk/assets/fullscreen.png Binary files differdeleted file mode 100644 index 01f971cd..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/fullscreen.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/images/fullscreen.png b/build/tools/droiddoc/templates-lineage-sdk/assets/images/fullscreen.png Binary files differdeleted file mode 100644 index 01f971cd..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/images/fullscreen.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_down.png b/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_down.png Binary files differdeleted file mode 100644 index 6a0a8eea..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_down.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_left.png b/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_left.png Binary files differdeleted file mode 100644 index e887b2a6..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_left.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_right.png b/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_right.png Binary files differdeleted file mode 100644 index ced7fa48..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_right.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_up.png b/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_up.png Binary files differdeleted file mode 100644 index ddd4ec93..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/images/styles/disclosure_up.png +++ /dev/null diff --git a/build/tools/droiddoc/templates-lineage-sdk/assets/lineage_logo.svg b/build/tools/droiddoc/templates-lineage-sdk/assets/lineage_logo.svg deleted file mode 100644 index f908c5ee..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/assets/lineage_logo.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 144 72"><defs><style>.cls-1{fill:#167c80;}</style></defs><title>lineage_logo_mark_ltrbox_teal_144x72</title><g id="mark_-_letterbox" data-name="mark - letterbox"><path class="cls-1" d="M112,36a10,10,0,0,0-7.78,3.72l-.38-.15A73.82,73.82,0,0,0,92,36s0,0,0,0a20,20,0,0,0-40,0v0l-.43.09a73.47,73.47,0,0,0-11.42,3.44l-.38.15a10.1,10.1,0,1,0,1.84,3.57h0A69.34,69.34,0,0,1,52.41,40a20,20,0,0,0,39.18,0,69.32,69.32,0,0,1,10.78,3.24h0A10,10,0,1,0,112,36ZM32,52a6,6,0,1,1,6-6A6,6,0,0,1,32,52Zm40,0A16,16,0,1,1,88,36,16,16,0,0,1,72,52Zm40,0a6,6,0,1,1,6-6A6,6,0,0,1,112,52ZM80,36a8,8,0,1,1-8-8A8,8,0,0,1,80,36Z"/></g></svg>
\ No newline at end of file diff --git a/build/tools/droiddoc/templates-lineage-sdk/class.cs b/build/tools/droiddoc/templates-lineage-sdk/class.cs deleted file mode 100644 index 7aa99f96..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/class.cs +++ /dev/null @@ -1,679 +0,0 @@ -<?cs include:"doctype.cs" ?> -<?cs include:"macros.cs" ?> -<?cs include:"macros_override.cs" ?> -<html<?cs if:devsite ?> devsite<?cs /if ?>> -<?cs include:"head_tag.cs" ?> -<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?> - <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs - if:reference ?> reference<?cs - /if ?><?cs - elif:design ?>design<?cs - elif:distribute ?>distribute<?cs - /if ?>" itemscope itemtype="http://schema.org/Article"> - <div id="doc-api-level" class="<?cs var:class.since ?>" style="display:none"></div> - <a name="top"></a> -<?cs include:"header.cs" ?> - -<div class="col-12" id="doc-col"> - -<div id="api-info-block"> - -<?cs # are there inherited members ?> -<?cs each:cl=class.inherited ?> - <?cs if:subcount(cl.methods) ?> - <?cs set:inhmethods = #1 ?> - <?cs /if ?> - <?cs if:subcount(cl.constants) ?> - <?cs set:inhconstants = #1 ?> - <?cs /if ?> - <?cs if:subcount(cl.fields) ?> - <?cs set:inhfields = #1 ?> - <?cs /if ?> - <?cs if:subcount(cl.attrs) ?> - <?cs set:inhattrs = #1 ?> - <?cs /if ?> -<?cs /each ?> - -<div class="sum-details-links"> -<?cs if:inhattrs || inhconstants || inhfields || inhmethods || (!class.subclasses.hidden && - (subcount(class.subclasses.direct) || subcount(class.subclasses.indirect))) ?> -Summary: -<?cs if:subcount(class.inners) ?> - <a href="#nestedclasses">Nested Classes</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.attrs) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#lattrs">XML Attrs</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:inhattrs ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#inhattrs">Inherited XML Attrs</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.enumConstants) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#enumconstants">Enums</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.constants) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#constants">Constants</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:inhconstants ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#inhconstants">Inherited Constants</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.fields) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#lfields">Fields</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:inhfields ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#inhfields">Inherited Fields</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.ctors.public) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#pubctors">Ctors</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.ctors.protected) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#proctors">Protected Ctors</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.methods.public) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#pubmethods">Methods</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:subcount(class.methods.protected) ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#promethods">Protected Methods</a> - <?cs set:linkcount = #1 ?> -<?cs /if ?> -<?cs if:inhmethods ?> - <?cs if:linkcount ?>| <?cs /if ?><a href="#inhmethods">Inherited Methods</a> -<?cs /if ?> -| <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a> -<?cs /if ?> -</div><!-- end sum-details-links --> -<div class="api-level"> - <?cs call:since_tags(class) ?><?cs - if:class.deprecatedsince - ?><br>Deprecated since <a href="<?cs var:toroot ?>guide/topics/manifest/uses-sdk-element.html#ApiLevels" - >API level <?cs var:class.deprecatedsince ?></a><?cs - /if ?> - <?cs call:federated_refs(class) ?> -</div> -</div><!-- end api-info-block --> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ======== START OF CLASS DATA ======== --> - -<div id="jd-header"> - <?cs var:class.scope ?> - <?cs var:class.static ?> - <?cs var:class.final ?> - <?cs var:class.abstract ?> - <?cs var:class.kind ?> -<h1 itemprop="name"><?cs var:class.name ?></h1> - -<?cs set:colspan = subcount(class.inheritance) ?> -<?cs each:supr = class.inheritance ?> - <?cs if:colspan == 2 ?> - extends <?cs call:type_link(supr.short_class) ?><br/> - <?cs /if ?> - <?cs if:last(supr) && subcount(supr.interfaces) ?> - implements - <?cs each:t=supr.interfaces ?> - <?cs call:type_link(t) ?> - <?cs /each ?> - <?cs /if ?> - <?cs set:colspan = colspan-1 ?> -<?cs /each ?> -<?cs call:show_annotations_list(class) ?> - -</div><!-- end header --> - -<div id="naMessage"></div> - -<div id="jd-content" class="api apilevel-<?cs var:class.since ?>"> -<table class="jd-inheritance-table"> -<?cs set:colspan = subcount(class.inheritance) ?> -<?cs each:supr = class.inheritance ?> - <tr> - <?cs loop:i = 1, (subcount(class.inheritance)-colspan), 1 ?> - <td class="jd-inheritance-space"> <?cs if:(subcount(class.inheritance)-colspan) == i ?> ↳<?cs /if ?></td> - <?cs /loop ?> - <td colspan="<?cs var:colspan ?>" class="jd-inheritance-class-cell"><?cs - if:colspan == 1 - ?><?cs call:class_name(class.qualifiedType) ?><?cs - else - ?><?cs call:type_link(supr.class) ?><?cs - /if ?></td> - </tr> - <?cs set:colspan = colspan-1 ?> -<?cs /each ?> -</table> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> - -<?cs if:subcount(class.subclasses.direct) && !class.subclasses.hidden ?> -<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;"> -<?cs call:expando_trigger("subclasses-direct", "closed") ?>Known Direct Subclasses -<?cs call:expandable_class_list("subclasses-direct", class.subclasses.direct, "list") ?> -</td></tr></table> -<?cs /if ?> - -<?cs if:subcount(class.subclasses.indirect) && !class.subclasses.hidden ?> -<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;"> -<?cs call:expando_trigger("subclasses-indirect", "closed") ?>Known Indirect Subclasses -<?cs call:expandable_class_list("subclasses-indirect", class.subclasses.indirect, "list") ?> -</td></tr></table> -<?cs /if ?> - -<div class="jd-descr"> -<?cs call:deprecated_warning(class) ?> -<?cs if:subcount(class.descr) ?> -<h2>Class Overview</h2> -<p itemprop="articleBody"><?cs call:tag_list(class.descr) ?></p> -<?cs /if ?> - -<?cs call:see_also_tags(class.seeAlso) ?> - -</div><!-- jd-descr --> - - -<?cs # summary macros ?> - -<?cs def:write_method_summary(methods, included) ?> -<?cs set:count = #1 ?> -<?cs each:method = methods ?> - <?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:method.since ?>" > - <td class="jd-typecol"><nobr> - <?cs var:method.abstract ?> - <?cs var:method.synchronized ?> - <?cs var:method.final ?> - <?cs var:method.static ?> - <?cs call:type_link(method.generic) ?> - <?cs call:type_link(method.returnType) ?></nobr> - </td> - <td class="jd-linkcol" width="100%"><nobr> - <span class="sympad"><?cs call:cond_link(method.name, toroot, method.href, included) ?></span>(<?cs call:parameter_list(method.params) ?>)</nobr> - <?cs if:subcount(method.shortDescr) || subcount(method.deprecated) ?> - <div class="jd-descrdiv"> - <?cs call:short_descr(method) ?> - <?cs call:show_annotations_list(method) ?> - </div> - <?cs /if ?> - </td></tr> -<?cs set:count = count + #1 ?> -<?cs /each ?> -<?cs /def ?> - -<?cs def:write_field_summary(fields, included) ?> -<?cs set:count = #1 ?> - <?cs each:field=fields ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" > - <td class="jd-typecol"><nobr> - <?cs var:field.scope ?> - <?cs var:field.static ?> - <?cs var:field.final ?> - <?cs call:type_link(field.type) ?></nobr></td> - <td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, included) ?></td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(field) ?> - <?cs call:show_annotations_list(field) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -<?cs /def ?> - -<?cs def:write_constant_summary(fields, included) ?> -<?cs set:count = #1 ?> - <?cs each:field=fields ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" > - <td class="jd-typecol"><?cs call:type_link(field.type) ?></td> - <td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, included) ?></td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(field) ?> - <?cs call:show_annotations_list(field) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -<?cs /def ?> - -<?cs def:write_attr_summary(attrs, included) ?> -<?cs set:count = #1 ?> - <tr> - <td><nobr><em>Attribute Name</em></nobr></td> - <td><nobr><em>Related Method</em></nobr></td> - <td><nobr><em>Description</em></nobr></td> - </tr> - <?cs each:attr=attrs ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:attr.since ?>" > - <td class="jd-linkcol"><?cs if:included ?><a href="<?cs var:toroot ?><?cs var:attr.href ?>"><?cs /if ?><?cs var:attr.name ?><?cs if:included ?></a><?cs /if ?></td> - <td class="jd-linkcol"><?cs each:m=attr.methods ?> - <?cs call:cond_link(m.name, toroot, m.href, included) ?> - <?cs /each ?> - </td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(attr) ?> - <?cs call:show_annotations_list(attr) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -<?cs /def ?> - -<?cs def:write_inners_summary(classes) ?> -<?cs set:count = #1 ?> - <?cs each:cl=class.inners ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.since ?>" > - <td class="jd-typecol"><nobr> - <?cs var:cl.scope ?> - <?cs var:cl.static ?> - <?cs var:cl.final ?> - <?cs var:cl.abstract ?> - <?cs var:cl.kind ?></nobr></td> - <td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(cl) ?> - <?cs call:show_annotations_list(cl) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -<?cs /def ?> - -<?cs # end macros ?> - -<div class="jd-descr"> -<?cs # make sure there's a summary view to display ?> -<?cs if:subcount(class.inners) - || subcount(class.attrs) - || inhattrs - || subcount(class.enumConstants) - || subcount(class.constants) - || inhconstants - || subcount(class.fields) - || inhfields - || subcount(class.ctors.public) - || subcount(class.ctors.protected) - || subcount(class.methods.public) - || subcount(class.methods.protected) - || inhmethods ?> -<h2>Summary</h2> - -<?cs if:subcount(class.inners) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ======== NESTED CLASS SUMMARY ======== --> -<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr> -<?cs call:write_inners_summary(class.inners) ?> -<?cs /if ?> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<?cs if:subcount(class.attrs) ?> -<!-- =========== FIELD SUMMARY =========== --> -<table id="lattrs" class="jd-sumtable"><tr><th colspan="12">XML Attributes</th></tr> -<?cs call:write_attr_summary(class.attrs, 1) ?> -<?cs /if ?> - -<?cs # if there are inherited attrs, write the table ?> -<?cs if:inhattrs ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== FIELD SUMMARY =========== --> -<table id="inhattrs" class="jd-sumtable"><tr><th> - <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a> - <div style="clear:left;">Inherited XML Attributes</div></th></tr> -<?cs each:cl=class.inherited ?> -<?cs if:subcount(cl.attrs) ?> -<tr class="api apilevel-<?cs var:cl.since ?>" > -<td colspan="12"> -<?cs call:expando_trigger("inherited-attrs-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?> -<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?> -<div id="inherited-attrs-<?cs var:cl.qualified ?>"> - <div id="inherited-attrs-<?cs var:cl.qualified ?>-list" - class="jd-inheritedlinks"> - </div> - <div id="inherited-attrs-<?cs var:cl.qualified ?>-summary" style="display: none;"> - <table class="jd-sumtable-expando"> - <?cs call:write_attr_summary(cl.attrs, cl.included) ?></table> - </div> -</div> -</td></tr> -<?cs /if ?> -<?cs /each ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.enumConstants) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== ENUM CONSTANT SUMMARY =========== --> -<table id="enumconstants" class="jd-sumtable"><tr><th colspan="12">Enum Values</th></tr> -<?cs set:count = #1 ?> - <?cs each:field=class.enumConstants ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:field.since ?>" > - <td class="jd-descrcol"><?cs call:type_link(field.type) ?> </td> - <td class="jd-linkcol"><?cs call:cond_link(field.name, toroot, field.href, cl.included) ?> </td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(field) ?> - <?cs call:show_annotations_list(field) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -<?cs /if ?> - -<?cs if:subcount(class.constants) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== ENUM CONSTANT SUMMARY =========== --> -<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr> -<?cs call:write_constant_summary(class.constants, 1) ?> -</table> -<?cs /if ?> - -<?cs # if there are inherited constants, write the table ?> -<?cs if:inhconstants ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== ENUM CONSTANT SUMMARY =========== --> -<table id="inhconstants" class="jd-sumtable"><tr><th> - <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a> - <div style="clear:left;">Inherited Constants</div></th></tr> -<?cs each:cl=class.inherited ?> -<?cs if:subcount(cl.constants) ?> -<tr class="api apilevel-<?cs var:cl.since ?>" > -<td colspan="12"> -<?cs call:expando_trigger("inherited-constants-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?> -<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?> -<div id="inherited-constants-<?cs var:cl.qualified ?>"> - <div id="inherited-constants-<?cs var:cl.qualified ?>-list" - class="jd-inheritedlinks"> - </div> - <div id="inherited-constants-<?cs var:cl.qualified ?>-summary" style="display: none;"> - <table class="jd-sumtable-expando"> - <?cs call:write_constant_summary(cl.constants, cl.included) ?></table> - </div> -</div> -</td></tr> -<?cs /if ?> -<?cs /each ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.fields) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== FIELD SUMMARY =========== --> -<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr> -<?cs call:write_field_summary(class.fields, 1) ?> -</table> -<?cs /if ?> - -<?cs # if there are inherited fields, write the table ?> -<?cs if:inhfields ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- =========== FIELD SUMMARY =========== --> -<table id="inhfields" class="jd-sumtable"><tr><th> - <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a> - <div style="clear:left;">Inherited Fields</div></th></tr> -<?cs each:cl=class.inherited ?> -<?cs if:subcount(cl.fields) ?> -<tr class="api apilevel-<?cs var:cl.since ?>" > -<td colspan="12"> -<?cs call:expando_trigger("inherited-fields-"+cl.qualified, "closed") ?>From <?cs var:cl.kind ?> -<?cs call:cond_link(cl.qualified, toroot, cl.link, cl.included) ?> -<div id="inherited-fields-<?cs var:cl.qualified ?>"> - <div id="inherited-fields-<?cs var:cl.qualified ?>-list" - class="jd-inheritedlinks"> - </div> - <div id="inherited-fields-<?cs var:cl.qualified ?>-summary" style="display: none;"> - <table class="jd-sumtable-expando"> - <?cs call:write_field_summary(cl.fields, cl.included) ?></table> - </div> -</div> -</td></tr> -<?cs /if ?> -<?cs /each ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.ctors.public) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr> -<?cs call:write_method_summary(class.ctors.public, 1) ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.ctors.protected) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ======== CONSTRUCTOR SUMMARY ======== --> -<table id="proctors" class="jd-sumtable"><tr><th colspan="12">Protected Constructors</th></tr> -<?cs call:write_method_summary(class.ctors.protected, 1) ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.methods.public) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========== METHOD SUMMARY =========== --> -<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr> -<?cs call:write_method_summary(class.methods.public, 1) ?> -</table> -<?cs /if ?> - -<?cs if:subcount(class.methods.protected) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========== METHOD SUMMARY =========== --> -<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr> -<?cs call:write_method_summary(class.methods.protected, 1) ?> -</table> -<?cs /if ?> - -<?cs # if there are inherited methods, write the table ?> -<?cs if:inhmethods ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========== METHOD SUMMARY =========== --> -<table id="inhmethods" class="jd-sumtable"><tr><th> - <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a> - <div style="clear:left;">Inherited Methods</div></th></tr> -<?cs each:cl=class.inherited ?> -<?cs if:subcount(cl.methods) ?> -<tr class="api apilevel-<?cs var:cl.since ?>" > -<td colspan="12"><?cs call:expando_trigger("inherited-methods-"+cl.qualified, "closed") ?> -From <?cs var:cl.kind ?> -<?cs if:cl.included ?> - <a href="<?cs var:toroot ?><?cs var:cl.link ?>"><?cs var:cl.qualified ?></a> -<?cs elif:cl.federated ?> - <a href="<?cs var:cl.link ?>"><?cs var:cl.qualified ?></a> -<?cs else ?> - <?cs var:cl.qualified ?> -<?cs /if ?> -<div id="inherited-methods-<?cs var:cl.qualified ?>"> - <div id="inherited-methods-<?cs var:cl.qualified ?>-list" - class="jd-inheritedlinks"> - </div> - <div id="inherited-methods-<?cs var:cl.qualified ?>-summary" style="display: none;"> - <table class="jd-sumtable-expando"> - <?cs call:write_method_summary(cl.methods, cl.included) ?></table> - </div> -</div> -</td></tr> -<?cs /if ?> -<?cs /each ?> -</table> -<?cs /if ?> -<?cs /if ?> -</div><!-- jd-descr (summary) --> - -<!-- Details --> - -<?cs def:write_field_details(fields) ?> -<?cs each:field=fields ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?> -<A NAME="<?cs var:field.anchor ?>"></A> -<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?> -<div class="jd-details api apilevel-<?cs var:field.since ?>"> - <h4 class="jd-details-title"> - <span class="normal"> - <?cs var:field.scope ?> - <?cs var:field.static ?> - <?cs var:field.final ?> - <?cs call:type_link(field.type) ?> - </span> - <?cs var:field.name ?> - </h4> - <div class="api-level"> - <?cs call:since_tags(field) ?> - <?cs call:federated_refs(field) ?> - </div> - <div class="jd-details-descr"> - <?cs call:show_annotations_list(field) ?> - <?cs call:description(field) ?> - <?cs if:subcount(field.constantValue) ?> - <div class="jd-tagdata"> - <span class="jd-tagtitle">Constant Value: </span> - <span> - <?cs if:field.constantValue.isString ?> - <?cs var:field.constantValue.str ?> - <?cs else ?> - <?cs var:field.constantValue.dec ?> - (<?cs var:field.constantValue.hex ?>) - <?cs /if ?> - </span> - </div> - <?cs /if ?> - </div> -</div> -<?cs /each ?> -<?cs /def ?> - -<?cs def:write_method_details(methods) ?> -<?cs each:method=methods ?> -<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?> -<A NAME="<?cs var:method.anchor ?>"></A> -<?cs # The apilevel-N class MUST BE LAST in the sequence of class names ?> -<div class="jd-details api apilevel-<?cs var:method.since ?>"> - <h4 class="jd-details-title"> - <span class="normal"> - <?cs var:method.scope ?> - <?cs var:method.static ?> - <?cs var:method.final ?> - <?cs var:method.abstract ?> - <?cs var:method.synchronized ?> - <?cs call:type_link(method.returnType) ?> - </span> - <span class="sympad"><?cs var:method.name ?></span> - <span class="normal">(<?cs call:parameter_list(method.params) ?>)</span> - </h4> - <div class="api-level"> - <div><?cs call:since_tags(method) ?></div> - <?cs call:federated_refs(method) ?> - </div> - <div class="jd-details-descr"> - <?cs call:show_annotations_list(method) ?> - <?cs call:description(method) ?> - </div> -</div> -<?cs /each ?> -<?cs /def ?> - -<?cs def:write_attr_details(attrs) ?> -<?cs each:attr=attrs ?> -<?cs # the A tag in the next line must remain where it is, so that Eclipse can parse the docs ?> -<A NAME="<?cs var:attr.anchor ?>"></A> -<div class="jd-details"> - <h4 class="jd-details-title"><?cs var:attr.name ?> - </h4> - <div class="jd-details-descr"> - <?cs call:show_annotations_list(attr) ?> - <?cs call:description(attr) ?> - - <div class="jd-tagdata"> - <h5 class="jd-tagtitle">Related Methods</h5> - <ul class="nolist"> - <?cs each:m=attr.methods ?> - <li><a href="<?cs var:toroot ?><?cs var:m.href ?>"><?cs var:m.name ?></a></li> - <?cs /each ?> - </ul> - </div> - </div> -</div> -<?cs /each ?> -<?cs /def ?> - - -<!-- XML Attributes --> -<?cs if:subcount(class.attrs) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= FIELD DETAIL ======== --> -<h2>XML Attributes</h2> -<?cs call:write_attr_details(class.attrs) ?> -<?cs /if ?> - -<!-- Enum Values --> -<?cs if:subcount(class.enumConstants) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= ENUM CONSTANTS DETAIL ======== --> -<h2>Enum Values</h2> -<?cs call:write_field_details(class.enumConstants) ?> -<?cs /if ?> - -<!-- Constants --> -<?cs if:subcount(class.constants) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= ENUM CONSTANTS DETAIL ======== --> -<h2>Constants</h2> -<?cs call:write_field_details(class.constants) ?> -<?cs /if ?> - -<!-- Fields --> -<?cs if:subcount(class.fields) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= FIELD DETAIL ======== --> -<h2>Fields</h2> -<?cs call:write_field_details(class.fields) ?> -<?cs /if ?> - -<!-- Public ctors --> -<?cs if:subcount(class.ctors.public) ?> -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<h2>Public Constructors</h2> -<?cs call:write_method_details(class.ctors.public) ?> -<?cs /if ?> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= CONSTRUCTOR DETAIL ======== --> -<!-- Protected ctors --> -<?cs if:subcount(class.ctors.protected) ?> -<h2>Protected Constructors</h2> -<?cs call:write_method_details(class.ctors.protected) ?> -<?cs /if ?> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= METHOD DETAIL ======== --> -<!-- Public methdos --> -<?cs if:subcount(class.methods.public) ?> -<h2>Public Methods</h2> -<?cs call:write_method_details(class.methods.public) ?> -<?cs /if ?> - -<?cs # this next line must be exactly like this to be parsed by eclipse ?> -<!-- ========= METHOD DETAIL ======== --> -<?cs if:subcount(class.methods.protected) ?> -<h2>Protected Methods</h2> -<?cs call:write_method_details(class.methods.protected) ?> -<?cs /if ?> - -<?cs # the next two lines must be exactly like this to be parsed by eclipse ?> -<!-- ========= END OF CLASS DATA ========= --> -<A NAME="navbar_top"></A> - -<?cs include:"footer.cs" ?> -</div> <!-- jd-content --> - -</div><!-- end doc-content --> - -<?cs include:"trailer.cs" ?> - -</body> -</html> diff --git a/build/tools/droiddoc/templates-lineage-sdk/classes.cs b/build/tools/droiddoc/templates-lineage-sdk/classes.cs deleted file mode 100644 index 0928d7c0..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/classes.cs +++ /dev/null @@ -1,53 +0,0 @@ -<?cs include:"doctype.cs" ?> -<?cs include:"macros.cs" ?> -<?cs include:"macros_override.cs" ?> -<html<?cs if:devsite ?> devsite<?cs /if ?>> -<?cs include:"head_tag.cs" ?> -<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?> - <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs - if:reference ?> reference<?cs - /if ?><?cs - elif:design ?>design<?cs - elif:distribute ?>distribute<?cs - /if ?>" itemscope itemtype="http://schema.org/Article"> - <a name="top"></a> -<?cs include:"header.cs" ?> - -<div class="col-12" id="doc-col"> - -<div id="jd-header"> -<h1><?cs var:page.title ?></h1> -</div> - -<div id="jd-content"> -<p>These are the LineageOS Platform API classes. See all <a href="packages.html">API packages</a>.</p> -<div class="jd-letterlist"><?cs each:letter=docs.classes ?> - <a href="#letter_<?cs name:letter ?>"><?cs name:letter ?></a> <?cs /each?> -</div> - -<?cs each:letter=docs.classes ?> -<?cs set:count = #1 ?> -<h2 id="letter_<?cs name:letter ?>"><?cs name:letter ?></h2> -<table class="jd-sumtable"> - <?cs set:cur_row = #0 ?> - <?cs each:cl = letter ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.since ?>" > - <td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(cl) ?> - <?cs call:show_annotations_list(cl) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> -</table> -<?cs /each ?> - -<?cs include:"footer.cs" ?> -</div><!-- end jd-content --> -</div><!-- end doc-content --> - -<?cs include:"trailer.cs" ?> - -</body> -</html> diff --git a/build/tools/droiddoc/templates-lineage-sdk/components/masthead.cs b/build/tools/droiddoc/templates-lineage-sdk/components/masthead.cs deleted file mode 100755 index f583642b..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/components/masthead.cs +++ /dev/null @@ -1,10 +0,0 @@ -<?cs def:custom_masthead() ?> - <div id="header"> - <div id="headerLeft"> - <a href="<?cs var:toroot ?>reference/packages.html" tabindex="-1"><img - src="<?cs var:toroot ?>assets/lineage_logo.svg" alt="CID" width="144" height="72"/> - <span id="masthead-title" style="font-size: 28px;">LineageOS Platform SDK</span></a> - </div> - </div><!-- header --><?cs -/def ?> - diff --git a/build/tools/droiddoc/templates-lineage-sdk/customizations.cs b/build/tools/droiddoc/templates-lineage-sdk/customizations.cs deleted file mode 100644 index e302e0c2..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/customizations.cs +++ /dev/null @@ -1,516 +0,0 @@ -<?cs -def:fullpage() ?> - <div id="body-content"> -<?cs /def ?> -<?cs -def:sdk_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/sdk/sdk_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> -<?cs /def ?><?cs - -def:no_nav() ?> - <div class="wrap clearfix" id="body-content"> -<?cs /def ?><?cs - -def:tools_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs - include:"../../../../frameworks/base/docs/html/tools/tools_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> -<?cs -def:training_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - - -<?cs - include:"../../../../frameworks/base/docs/html/training/training_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:googleplay_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/googleplay/googleplay_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:essentials_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/essentials/essentials_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:users_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/users/users_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:engage_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/engage/engage_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:analyze_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/analyze/analyze_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:monetize_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/monetize/monetize_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:disttools_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/tools/disttools_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:stories_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> -<?cs include:"../../../../frameworks/base/docs/html/distribute/stories/stories_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?><?cs - -def:guide_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/guide/guide_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> -<?cs -def:design_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - - -<?cs - include:"../../../../frameworks/base/docs/html/design/design_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> -<?cs -def:distribute_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/distribute/distribute_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - -<?cs -def:samples_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/samples/samples_toc.cs" ?> - - </div> - - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - -<?cs -def:google_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/google/google_toc.cs" ?> - - - </div> - <script type="text/javascript"> - showGoogleRefTree(); - - </script> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - -<?cs -def:about_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-3" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/about/about_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - - -<?cs -def:wear_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - -<?cs - include:"../../../../frameworks/base/docs/html/wear/wear_toc.cs" ?> - - - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - -<?cs -def:preview_nav() ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav" class="scroll-pane"> - <?cs - include:"../../../../frameworks/base/docs/html/preview/preview_toc.cs" ?> - </div> - </div> <!-- end side-nav --> - <script> - $(document).ready(function() { - scrollIntoView("devdoc-nav"); - }); - </script> -<?cs /def ?> - -<?cs # The default side navigation for the reference docs ?><?cs -def:default_left_nav() ?> -<?cs if:reference.gcm || reference.gms ?> - <?cs call:google_nav() ?> -<?cs else ?> - <div class="wrap clearfix" id="body-content"> - <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement"> - <div id="devdoc-nav"> - <div id="api-nav-header"> - <div id="api-level-toggle"> - <label for="apiLevelCheckbox" class="disabled" - title="Select your target API level to dim unavailable APIs">API level: </label> - <div class="select-wrapper"> - <select id="apiLevelSelector"> - <!-- option elements added by buildApiLevelSelector() --> - </select> - </div> - </div><!-- end toggle --> - <div id="api-nav-title">LineageOS APIs</div> - </div><!-- end nav header --> - <script> - var SINCE_DATA = [ <?cs - each:since = since ?>'<?cs - var:since.name ?>'<?cs - if:!last(since) ?>, <?cs /if ?><?cs - /each - ?> ]; - buildApiLevelSelector(); - </script> - - <div id="swapper"> - <div id="nav-panels"> - <div id="resize-packages-nav"> - <div id="packages-nav" class="scroll-pane"> - - <ul> - <?cs call:package_link_list(docs.packages) ?> - </ul><br/> - - </div> <!-- end packages-nav --> - </div> <!-- end resize-packages --> - <div id="classes-nav" class="scroll-pane"> - - -<?cs - if:subcount(class.package) ?> - <ul> - <?cs call:list("Annotations", class.package.annotations) ?> - <?cs call:list("Interfaces", class.package.interfaces) ?> - <?cs call:list("Classes", class.package.classes) ?> - <?cs call:list("Enums", class.package.enums) ?> - <?cs call:list("Exceptions", class.package.exceptions) ?> - <?cs call:list("Errors", class.package.errors) ?> - </ul><?cs - elif:subcount(package) ?> - <ul> - <?cs call:class_link_list("Annotations", package.annotations) ?> - <?cs call:class_link_list("Interfaces", package.interfaces) ?> - <?cs call:class_link_list("Classes", package.classes) ?> - <?cs call:class_link_list("Enums", package.enums) ?> - <?cs call:class_link_list("Exceptions", package.exceptions) ?> - <?cs call:class_link_list("Errors", package.errors) ?> - </ul><?cs - else ?> - <p style="padding:10px">Select a package to view its members</p><?cs - /if ?><br/> - - - </div><!-- end classes --> - </div><!-- end nav-panels --> - <div id="nav-tree" style="display:none" class="scroll-pane"> - <div id="tree-list"></div> - </div><!-- end nav-tree --> - </div><!-- end swapper --> - <div id="nav-swap"> - <a class="fullscreen">fullscreen</a> - <a href='#' onclick='swapNav();return false;'><span id='tree-link'>Use Tree Navigation</span><span id='panel-link' style='display:none'>Use Panel Navigation</span></a> - </div> - </div> <!-- end devdoc-nav --> - </div> <!-- end side-nav --> - <script type="text/javascript"> - // init fullscreen based on user pref - var fullscreen = readCookie("fullscreen"); - if (fullscreen != 0) { - if (fullscreen == "false") { - toggleFullscreen(false); - } else { - toggleFullscreen(true); - } - } - // init nav version for mobile - if (isMobile) { - swapNav(); // tree view should be used on mobile - $('#nav-swap').hide(); - } else { - chooseDefaultNav(); - if ($("#nav-tree").is(':visible')) { - init_default_navtree("<?cs var:toroot ?>"); - } - } - // scroll the selected page into view - $(document).ready(function() { - scrollIntoView("packages-nav"); - scrollIntoView("classes-nav"); - }); - </script> -<?cs /if ?> - <?cs -/def ?> - -<?cs -def:custom_left_nav() ?><?cs - if:fullpage ?><?cs - call:fullpage() ?><?cs - elif:nonavpage ?><?cs - call:no_nav() ?><?cs - elif:guide ?><?cs - call:guide_nav() ?><?cs - elif:design ?><?cs - call:design_nav() ?><?cs - elif:training ?><?cs - call:training_nav() ?><?cs - elif:tools ?><?cs - call:tools_nav() ?><?cs - elif:google ?><?cs - call:google_nav() ?><?cs - elif:samples ?><?cs - call:samples_nav() ?><?cs - elif:distribute ?><?cs - if:googleplay ?><?cs - call:googleplay_nav() ?><?cs - elif:essentials ?><?cs - call:essentials_nav() ?><?cs - elif:users ?><?cs - call:users_nav() ?><?cs - elif:engage ?><?cs - call:engage_nav() ?><?cs - elif:monetize ?><?cs - call:monetize_nav() ?><?cs - elif:analyze ?><?cs - call:analyze_nav() ?><?cs - elif:disttools ?><?cs - call:disttools_nav() ?><?cs - elif:stories ?><?cs - call:stories_nav() ?><?cs - /if ?><?cs - elif:about ?><?cs - call:about_nav() ?><?cs - elif:distribute ?><?cs - call:distribute_nav() ?><?cs - elif:wear ?><?cs - call:wear_nav() ?><?cs - elif:preview ?><?cs - call:preview_nav() ?><?cs - else ?><?cs - call:default_left_nav() ?> <?cs - /if ?><?cs -/def ?> - -<?cs # appears at the bottom of every page ?><?cs -def:custom_cc_copyright() ?> - Except as noted, this content is - licensed under <a href="http://creativecommons.org/licenses/by/2.5/"> - Creative Commons Attribution 2.5</a>. For details and - restrictions, see the <a href="<?cs var:toroot ?>license.html">Content - License</a>.<?cs -/def ?> - -<?cs -def:custom_copyright() ?> - Except as noted, this content is licensed under <a - href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. - For details and restrictions, see the <a href="<?cs var:toroot ?>license.html"> - Content License</a>.<?cs -/def ?> - -<?cs -def:custom_footerlinks() ?> - <p> - <a href="<?cs var:toroot ?>about/index.html">About Android</a> | - <a href="<?cs var:toroot ?>legal.html">Legal</a> | - <a href="<?cs var:toroot ?>support.html">Support</a> - </p><?cs -/def ?> - -<?cs # appears on the right side of the blue bar at the bottom off every page ?><?cs -def:custom_buildinfo() ?><?cs - if:!google && !reference.gcm && !reference.gms ?> - Android <?cs var:sdk.version ?> r<?cs var:sdk.rel.id ?> — <?cs - /if ?> -<script src="<?cs var:toroot ?>timestamp.js" type="text/javascript"></script> -<script>document.write(BUILD_TIMESTAMP)</script> -<?cs /def ?> - diff --git a/build/tools/droiddoc/templates-lineage-sdk/head_tag.cs b/build/tools/droiddoc/templates-lineage-sdk/head_tag.cs deleted file mode 100644 index 74621aa3..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/head_tag.cs +++ /dev/null @@ -1,87 +0,0 @@ -<head> -<?cs - ####### If building devsite, add some meta data needed for when generating the top nav ######### ?> -<?cs - if:devsite ?><?cs - if:guide||develop||training||reference||tools||sdk||google||samples - ?><meta name="top_category" value="develop" /><?cs - elif:google - ?><meta name="top_category" value="google" /><?cs - elif:reference && !(reference.gms || reference.gcm) - ?><meta name="top_category" value="css-fullscreen" /><?cs - /if ?> - <?cs - /if -?><?cs - # END if/else devsite ?> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="viewport" content="width=<?cs - if:page.viewport_width ?><?cs - var:page.viewport_width ?><?cs - else ?>device-width<?cs /if ?>" /> -<?cs - if:page.metaDescription ?> -<meta name="Description" content="<?cs var:page.metaDescription ?>"><?cs - /if ?> -<link rel="shortcut icon" type="image/x-icon" href="<?cs var:toroot ?>assets/favicon.ico" /> -<title><?cs - if:page.title ?><?cs - var:page.title ?> | <?cs - /if ?>Android Developers</title> - -<!-- STYLESHEETS --> -<link rel="stylesheet" -href="<?cs -if:android.whichdoc != 'online' ?>http:<?cs -/if ?>//fonts.googleapis.com/css?family=Roboto+Condensed"> -<link rel="stylesheet" href="<?cs -if:android.whichdoc != 'online' ?>http:<?cs -/if ?>//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold" - title="roboto"> -<link href="<?cs var:toroot ?>assets/css/default.css?v=5" rel="stylesheet" type="text/css"> - -<?cs if:reference && !(reference.gms || reference.gcm || preview) ?> -<!-- FULLSCREEN STYLESHEET --> -<link href="<?cs var:toroot ?>assets/css/fullscreen.css" rel="stylesheet" class="fullscreen" -type="text/css"> -<?cs /if ?> - -<!-- JAVASCRIPT --> -<script src="<?cs if:android.whichdoc != 'online' ?>http:<?cs /if ?>//www.google.com/jsapi" type="text/javascript"></script> -<?cs -if:devsite - ?><script src="<?cs var:toroot ?>_static/js/android_3p-bundle.js" type="text/javascript"></script><?cs -else - ?><script src="<?cs var:toroot ?>assets/js/android_3p-bundle.js" type="text/javascript"></script><?cs -/if ?><?cs - if:page.customHeadTag ?> -<?cs var:page.customHeadTag ?><?cs - /if ?> -<script type="text/javascript"> - var toRoot = "<?cs var:toroot ?>"; - var metaTags = [<?cs var:meta.tags ?>]; - var devsite = <?cs if:devsite ?>true<?cs else ?>false<?cs /if ?>; -</script> - -<?cs if:helpoutsWidget ?> -<script type="text/javascript" src="https://helpouts.google.com/ps/res/embed.js" defer async - data-helpouts-embed data-helpouts-vertical="programming" - data-helpouts-tags="<?cs var:page.tags ?>" data-helpouts-prefix="android" - data-helpouts-standalone="true"></script> -<?cs /if ?> - -<script> - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - - ga('create', 'UA-5831155-1', 'android.com'); - ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'}); // New tracker); - ga('send', 'pageview'); - ga('universal.send', 'pageview'); // Send page view for new tracker. -</script> - -<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> -<script src="<?cs var:toroot ?>assets/docs.js?v=3" type="text/javascript"></script> -</head> diff --git a/build/tools/droiddoc/templates-lineage-sdk/macros_override.cs b/build/tools/droiddoc/templates-lineage-sdk/macros_override.cs deleted file mode 100644 index 0a945986..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/macros_override.cs +++ /dev/null @@ -1,36 +0,0 @@ -<?cs # Create a comma separated list of annotations on obj that were in showAnnotations in Doclava ?> -<?cs # pre is an HTML string to start the list, post is an HTML string to close the list ?> -<?cs # for example call:show_annotations_list(cl, "<td>Annotations: ", "</td>") ?> -<?cs # if obj has nothing on obj.showAnnotations, nothing will be output ?> -<?cs def:show_annotations_list(obj) ?> - <?cs each:anno = obj.showAnnotations ?> - <?cs if:first(anno) ?> - <span class='annotation-message'> - Included in documentation by the annotations: - <?cs /if ?> - @<?cs var:anno.type.label ?> - <?cs if:last(anno) == 0 ?> - , - <?cs /if ?> - <?cs if:last(anno)?> - </span> - <?cs /if ?> - <?cs /each ?> -<?cs /def ?> - -<?cs # Override default class_link_table to display annotations ?> -<?cs def:class_link_table(classes) ?> - <?cs set:count = #1 ?> - <table class="jd-sumtable-expando"> - <?cs each:cl=classes ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:cl.type.since ?>" > - <td class="jd-linkcol"><?cs call:type_link(cl.type) ?></td> - <td class="jd-descrcol" width="100%"> - <?cs call:short_descr(cl) ?> - <?cs call:show_annotations_list(cl) ?> - </td> - </tr> - <?cs set:count = count + #1 ?> - <?cs /each ?> - </table> -<?cs /def ?>
\ No newline at end of file diff --git a/build/tools/droiddoc/templates-lineage-sdk/package.cs b/build/tools/droiddoc/templates-lineage-sdk/package.cs deleted file mode 100644 index 22255650..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/package.cs +++ /dev/null @@ -1,65 +0,0 @@ -<?cs include:"doctype.cs" ?> -<?cs include:"macros.cs" ?> -<?cs include:"macros_override.cs" ?> -<html<?cs if:devsite ?> devsite<?cs /if ?>> -<?cs include:"head_tag.cs" ?> - -<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?> - <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs - if:reference ?> reference<?cs - /if ?><?cs - elif:design ?>design<?cs - elif:distribute ?>distribute<?cs - /if ?>"> - <div id="doc-api-level" class="<?cs var:package.since ?>" style="display:none"></div> - <a name="top"></a> -<?cs include:"header.cs" ?> - -<div class="col-12" id="doc-col"> - -<div id="api-info-block"> -<div class="api-level"> - <?cs call:since_tags(package) ?> - <?cs call:federated_refs(package) ?> -</div> -</div> - -<div id="jd-header"> - package - <h1><?cs var:package.name ?></h1> -</div><!-- end header --> - -<div id="naMessage"></div> - -<div id="jd-content" class="api apilevel-<?cs var:package.since ?>"> - -<?cs if:subcount(package.descr) ?> - <div class="jd-descr"> - <?cs call:tag_list(package.descr) ?> - </div> -<?cs /if ?> - -<?cs def:class_table(label, classes) ?> - <?cs if:subcount(classes) ?> - <h2><?cs var:label ?></h2> - <div class="jd-sumtable"> - <?cs call:class_link_table(classes) ?> - </div> - <?cs /if ?> -<?cs /def ?> - -<?cs call:class_table("Annotations", package.annotations) ?> -<?cs call:class_table("Interfaces", package.interfaces) ?> -<?cs call:class_table("Classes", package.classes) ?> -<?cs call:class_table("Enums", package.enums) ?> -<?cs call:class_table("Exceptions", package.exceptions) ?> -<?cs call:class_table("Errors", package.errors) ?> - -<?cs include:"footer.cs" ?> -</div><!-- end jd-content --> -</div><!-- doc-content --> - -<?cs include:"trailer.cs" ?> - -</body> -</html> diff --git a/build/tools/droiddoc/templates-lineage-sdk/packages.cs b/build/tools/droiddoc/templates-lineage-sdk/packages.cs deleted file mode 100644 index 5056d3a5..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/packages.cs +++ /dev/null @@ -1,45 +0,0 @@ -<?cs include:"doctype.cs" ?> -<?cs include:"macros.cs" ?> -<html<?cs if:devsite ?> devsite<?cs /if ?>> -<?cs include:"head_tag.cs" ?> -<body class="gc-documentation <?cs if:(reference.gms || reference.gcm) ?>google<?cs /if ?> - <?cs if:(guide||develop||training||reference||tools||sdk) ?>develop<?cs - if:reference ?> reference<?cs - /if ?><?cs - elif:design ?>design<?cs - elif:distribute ?>distribute<?cs - /if ?>"> - <a name="top"></a> -<?cs include:"header.cs" ?> - -<div class="col-12" id="doc-col"> - -<div id="jd-header"> -<h1><?cs var:page.title ?></h1> -</div> - -<div id="jd-content"> - -<div class="jd-descr"> -<p><?cs call:tag_list(root.descr) ?></p> -</div> - -<?cs set:count = #1 ?> -<table class="jd-sumtable"> -<?cs each:pkg = docs.packages ?> - <tr class="<?cs if:count % #2 ?>alt-color<?cs /if ?> api apilevel-<?cs var:pkg.since ?>" > - <td class="jd-linkcol"><?cs call:package_link(pkg) ?></td> - <td class="jd-descrcol" width="100%"><?cs call:tag_list(pkg.shortDescr) ?></td> - </tr> -<?cs set:count = count + #1 ?> -<?cs /each ?> -</table> - -<?cs include:"footer.cs" ?> -</div><!-- end jd-content --> -</div> <!-- end doc-content --> - -<?cs include:"trailer.cs" ?> - -</body> -</html> diff --git a/build/tools/droiddoc/templates-lineage-sdk/timestamp.cs b/build/tools/droiddoc/templates-lineage-sdk/timestamp.cs deleted file mode 100644 index 4bf502a0..00000000 --- a/build/tools/droiddoc/templates-lineage-sdk/timestamp.cs +++ /dev/null @@ -1 +0,0 @@ -var BUILD_TIMESTAMP = "<?cs var:page.now ?>"; diff --git a/build/tools/extract_utils.sh b/build/tools/extract_utils.sh deleted file mode 100644 index 19820ba4..00000000 --- a/build/tools/extract_utils.sh +++ /dev/null @@ -1,1433 +0,0 @@ -#!/bin/bash -# -# Copyright (C) 2016 The CyanogenMod Project -# -# 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. -# - -PRODUCT_COPY_FILES_LIST=() -PRODUCT_COPY_FILES_HASHES=() -PRODUCT_COPY_FILES_FIXUP_HASHES=() -PRODUCT_PACKAGES_LIST=() -PRODUCT_PACKAGES_HASHES=() -PRODUCT_PACKAGES_FIXUP_HASHES=() -PACKAGE_LIST=() -VENDOR_STATE=-1 -VENDOR_RADIO_STATE=-1 -COMMON=-1 -ARCHES= -FULLY_DEODEXED=-1 - -TMPDIR=$(mktemp -d) - -# -# cleanup -# -# kill our tmpfiles with fire on exit -# -function cleanup() { - rm -rf "${TMPDIR:?}" -} - -trap cleanup 0 - -# -# setup_vendor -# -# $1: device name -# $2: vendor name -# $3: Lineage root directory -# $4: is common device - optional, default to false -# $5: cleanup - optional, default to true -# $6: custom vendor makefile name - optional, default to false -# -# Must be called before any other functions can be used. This -# sets up the internal state for a new vendor configuration. -# -function setup_vendor() { - local DEVICE="$1" - if [ -z "$DEVICE" ]; then - echo "\$DEVICE must be set before including this script!" - exit 1 - fi - - export VENDOR="$2" - if [ -z "$VENDOR" ]; then - echo "\$VENDOR must be set before including this script!" - exit 1 - fi - - export LINEAGE_ROOT="$3" - if [ ! -d "$LINEAGE_ROOT" ]; then - echo "\$LINEAGE_ROOT must be set and valid before including this script!" - exit 1 - fi - - export OUTDIR=vendor/"$VENDOR"/"$DEVICE" - if [ ! -d "$LINEAGE_ROOT/$OUTDIR" ]; then - mkdir -p "$LINEAGE_ROOT/$OUTDIR" - fi - - VNDNAME="$6" - if [ -z "$VNDNAME" ]; then - VNDNAME="$DEVICE" - fi - - export PRODUCTMK="$LINEAGE_ROOT"/"$OUTDIR"/"$VNDNAME"-vendor.mk - export ANDROIDMK="$LINEAGE_ROOT"/"$OUTDIR"/Android.mk - export BOARDMK="$LINEAGE_ROOT"/"$OUTDIR"/BoardConfigVendor.mk - - if [ "$4" == "true" ] || [ "$4" == "1" ]; then - COMMON=1 - else - COMMON=0 - fi - - if [ "$5" == "false" ] || [ "$5" == "0" ]; then - VENDOR_STATE=1 - VENDOR_RADIO_STATE=1 - else - VENDOR_STATE=0 - VENDOR_RADIO_STATE=0 - fi -} - -# Helper functions for parsing a spec. -# notes: an optional "|SHA1" that may appear in the format is stripped -# early from the spec in the parse_file_list function, and -# should not be present inside the input parameter passed -# to these functions. - -# -# input: spec in the form of "src[:dst][;args]" -# output: "src" -# -function src_file() { - local SPEC="$1" - local SPLIT=(${SPEC//:/ }) - local ARGS="$(target_args ${SPEC})" - # Regardless of there being a ":" delimiter or not in the spec, - # the source file is always either the first, or the only entry. - local SRC="${SPLIT[0]}" - # Remove target_args suffix, if present - echo "${SRC%;${ARGS}}" -} - -# -# input: spec in the form of "src[:dst][;args]" -# output: "dst" if present, "src" otherwise. -# -function target_file() { - local SPEC="$1" - local SPLIT=(${SPEC//:/ }) - local ARGS="$(target_args ${SPEC})" - local DST= - case ${#SPLIT[@]} in - 1) - # The spec doesn't have a : delimiter - DST="${SPLIT[0]}" - ;; - *) - # The spec actually has a src:dst format - DST="${SPLIT[1]}" - ;; - esac - # Remove target_args suffix, if present - echo "${DST%;${ARGS}}" -} - -# -# input: spec in the form of "src[:dst][;args]" -# output: "args" if present, "" otherwise. -# -function target_args() { - local SPEC="$1" - local SPLIT=(${SPEC//;/ }) - local ARGS= - case ${#SPLIT[@]} in - 1) - # No ";" delimiter in the spec. - ;; - *) - # The "args" are whatever comes after the ";" character. - # Basically the spec stripped of whatever is to the left of ";". - ARGS="${SPEC#${SPLIT[0]};}" - ;; - esac - echo "${ARGS}" -} - -# -# prefix_match: -# -# input: -# - $1: prefix -# - (global variable) PRODUCT_PACKAGES_LIST: array of [src:]dst[;args] specs. -# output: -# - new array consisting of dst[;args] entries where $1 is a prefix of ${dst}. -# -function prefix_match() { - local PREFIX="$1" - for LINE in "${PRODUCT_PACKAGES_LIST[@]}"; do - local FILE=$(target_file "$LINE") - if [[ "$FILE" =~ ^"$PREFIX" ]]; then - local ARGS=$(target_args "$LINE") - if [ -z "${ARGS}" ]; then - echo "${FILE#$PREFIX}" - else - echo "${FILE#$PREFIX};${ARGS}" - fi - fi - done -} - -# -# prefix_match_file: -# -# $1: the prefix to match on -# $2: the file to match the prefix for -# -# Internal function which returns true if a filename contains the -# specified prefix. -# -function prefix_match_file() { - local PREFIX="$1" - local FILE="$2" - if [[ "$FILE" =~ ^"$PREFIX" ]]; then - return 0 - else - return 1 - fi -} - -# -# suffix_match_file: -# -# $1: the suffix to match on -# $2: the file to match the suffix for -# -# Internal function which returns true if a filename contains the -# specified suffix. -# -function suffix_match_file() { - local SUFFIX="$1" - local FILE="$2" - if [[ "$FILE" = *"$SUFFIX" ]]; then - return 0 - else - return 1 - fi -} - -# -# truncate_file -# -# $1: the filename to truncate -# $2: the argument to output the truncated filename to -# -# Internal function which truncates a filename by removing the first dir -# in the path. ex. vendor/lib/libsdmextension.so -> lib/libsdmextension.so -# -function truncate_file() { - local FILE="$1" - RETURN_FILE="$2" - local FIND="${FILE%%/*}" - local LOCATION="${#FIND}+1" - echo ${FILE:$LOCATION} -} - -# -# write_product_copy_files: -# -# $1: make treble compatible makefile - optional, default to false -# -# Creates the PRODUCT_COPY_FILES section in the product makefile for all -# items in the list which do not start with a dash (-). -# -function write_product_copy_files() { - local COUNT=${#PRODUCT_COPY_FILES_LIST[@]} - local TARGET= - local FILE= - local LINEEND= - local TREBLE_COMPAT=$1 - - if [ "$COUNT" -eq "0" ]; then - return 0 - fi - - printf '%s\n' "PRODUCT_COPY_FILES += \\" >> "$PRODUCTMK" - for (( i=1; i<COUNT+1; i++ )); do - FILE="${PRODUCT_COPY_FILES_LIST[$i-1]}" - LINEEND=" \\" - if [ "$i" -eq "$COUNT" ]; then - LINEEND="" - fi - - TARGET=$(target_file "$FILE") - if [ "$TREBLE_COMPAT" == "true" ] || [ "$TREBLE_COMPAT" == "1" ]; then - if prefix_match_file "vendor/" $TARGET ; then - local OUTTARGET=$(truncate_file $TARGET) - printf ' %s/proprietary/%s:$(TARGET_COPY_OUT_VENDOR)/%s%s\n' \ - "$OUTDIR" "$TARGET" "$OUTTARGET" "$LINEEND" >> "$PRODUCTMK" - elif prefix_match_file "product/" $TARGET ; then - local OUTTARGET=$(truncate_file $TARGET) - printf ' %s/proprietary/%s:$(TARGET_COPY_OUT_PRODUCT)/%s%s\n' \ - "$OUTDIR" "$TARGET" "$OUTTARGET" "$LINEEND" >> "$PRODUCTMK" - else - printf ' %s/proprietary/%s:system/%s%s\n' \ - "$OUTDIR" "$TARGET" "$TARGET" "$LINEEND" >> "$PRODUCTMK" - fi - else - printf ' %s/proprietary/%s:system/%s%s\n' \ - "$OUTDIR" "$TARGET" "$TARGET" "$LINEEND" >> "$PRODUCTMK" - fi - done - return 0 -} - -# -# write_packages: -# -# $1: The LOCAL_MODULE_CLASS for the given module list -# $2: /product or /vendor partition -# $3: type-specific extra flags -# $4: Name of the array holding the target list -# -# Internal function which writes out the BUILD_PREBUILT stanzas -# for all modules in the list. This is called by write_product_packages -# after the modules are categorized. -# -function write_packages() { - - local CLASS="$1" - local PARTITION="$2" - local EXTRA="$3" - - # Yes, this is a horrible hack - we create a new array using indirection - local ARR_NAME="$4[@]" - local FILELIST=("${!ARR_NAME}") - - local FILE= - local ARGS= - local BASENAME= - local EXTENSION= - local PKGNAME= - local SRC= - - for P in "${FILELIST[@]}"; do - FILE=$(target_file "$P") - ARGS=$(target_args "$P") - - BASENAME=$(basename "$FILE") - DIRNAME=$(dirname "$FILE") - EXTENSION=${BASENAME##*.} - PKGNAME=${BASENAME%.*} - - # Add to final package list - PACKAGE_LIST+=("$PKGNAME") - - SRC="proprietary" - if [ "$PARTITION" = "vendor" ]; then - SRC+="/vendor" - elif [ "$PARTITION" = "product" ]; then - SRC+="/product" - fi - - printf 'include $(CLEAR_VARS)\n' - printf 'LOCAL_MODULE := %s\n' "$PKGNAME" - printf 'LOCAL_MODULE_OWNER := %s\n' "$VENDOR" - if [ "$CLASS" = "SHARED_LIBRARIES" ]; then - if [ "$EXTRA" = "both" ]; then - printf 'LOCAL_SRC_FILES_64 := %s/lib64/%s\n' "$SRC" "$FILE" - printf 'LOCAL_SRC_FILES_32 := %s/lib/%s\n' "$SRC" "$FILE" - #if [ "$VENDOR_PKG" = "true" ]; then - # echo "LOCAL_MODULE_PATH_64 := \$(TARGET_OUT_VENDOR_SHARED_LIBRARIES)" - # echo "LOCAL_MODULE_PATH_32 := \$(2ND_TARGET_OUT_VENDOR_SHARED_LIBRARIES)" - #else - # echo "LOCAL_MODULE_PATH_64 := \$(TARGET_OUT_SHARED_LIBRARIES)" - # echo "LOCAL_MODULE_PATH_32 := \$(2ND_TARGET_OUT_SHARED_LIBRARIES)" - #fi - elif [ "$EXTRA" = "64" ]; then - printf 'LOCAL_SRC_FILES := %s/lib64/%s\n' "$SRC" "$FILE" - else - printf 'LOCAL_SRC_FILES := %s/lib/%s\n' "$SRC" "$FILE" - fi - if [ "$EXTRA" != "none" ]; then - printf 'LOCAL_MULTILIB := %s\n' "$EXTRA" - fi - elif [ "$CLASS" = "APPS" ]; then - if [ "$EXTRA" = "priv-app" ]; then - SRC="$SRC/priv-app" - else - SRC="$SRC/app" - fi - printf 'LOCAL_SRC_FILES := %s/%s\n' "$SRC" "$FILE" - local CERT=platform - if [ ! -z "$ARGS" ]; then - CERT="$ARGS" - fi - printf 'LOCAL_CERTIFICATE := %s\n' "$CERT" - elif [ "$CLASS" = "JAVA_LIBRARIES" ]; then - printf 'LOCAL_SRC_FILES := %s/framework/%s\n' "$SRC" "$FILE" - local CERT=platform - if [ ! -z "$ARGS" ]; then - CERT="$ARGS" - fi - printf 'LOCAL_CERTIFICATE := %s\n' "$CERT" - elif [ "$CLASS" = "ETC" ]; then - printf 'LOCAL_SRC_FILES := %s/etc/%s\n' "$SRC" "$FILE" - elif [ "$CLASS" = "EXECUTABLES" ]; then - if [ "$ARGS" = "rootfs" ]; then - SRC="$SRC/rootfs" - if [ "$EXTRA" = "sbin" ]; then - SRC="$SRC/sbin" - printf '%s\n' "LOCAL_MODULE_PATH := \$(TARGET_ROOT_OUT_SBIN)" - printf '%s\n' "LOCAL_UNSTRIPPED_PATH := \$(TARGET_ROOT_OUT_SBIN_UNSTRIPPED)" - fi - else - SRC="$SRC/bin" - fi - printf 'LOCAL_SRC_FILES := %s/%s\n' "$SRC" "$FILE" - unset EXTENSION - else - printf 'LOCAL_SRC_FILES := %s/%s\n' "$SRC" "$FILE" - fi - printf 'LOCAL_MODULE_TAGS := optional\n' - printf 'LOCAL_MODULE_CLASS := %s\n' "$CLASS" - if [ "$CLASS" = "APPS" ]; then - printf 'LOCAL_DEX_PREOPT := false\n' - fi - if [ ! -z "$EXTENSION" ]; then - printf 'LOCAL_MODULE_SUFFIX := .%s\n' "$EXTENSION" - fi - if [ "$CLASS" = "SHARED_LIBRARIES" ] || [ "$CLASS" = "EXECUTABLES" ]; then - if [ "$DIRNAME" != "." ]; then - printf 'LOCAL_MODULE_RELATIVE_PATH := %s\n' "$DIRNAME" - fi - fi - if [ "$EXTRA" = "priv-app" ]; then - printf 'LOCAL_PRIVILEGED_MODULE := true\n' - fi - if [ "$PARTITION" = "vendor" ]; then - printf 'LOCAL_VENDOR_MODULE := true\n' - elif [ "$PARTITION" = "product" ]; then - printf 'LOCAL_PRODUCT_MODULE := true\n' - fi - printf 'include $(BUILD_PREBUILT)\n\n' - done -} - -# -# write_product_packages: -# -# This function will create BUILD_PREBUILT entries in the -# Android.mk and associated PRODUCT_PACKAGES list in the -# product makefile for all files in the blob list which -# start with a single dash (-) character. -# -function write_product_packages() { - PACKAGE_LIST=() - - local COUNT=${#PRODUCT_PACKAGES_LIST[@]} - - if [ "$COUNT" = "0" ]; then - return 0 - fi - - # Figure out what's 32-bit, what's 64-bit, and what's multilib - # I really should not be doing this in bash due to shitty array passing :( - local T_LIB32=( $(prefix_match "lib/") ) - local T_LIB64=( $(prefix_match "lib64/") ) - local MULTILIBS=( $(comm -12 <(printf '%s\n' "${T_LIB32[@]}") <(printf '%s\n' "${T_LIB64[@]}")) ) - local LIB32=( $(comm -23 <(printf '%s\n' "${T_LIB32[@]}") <(printf '%s\n' "${MULTILIBS[@]}")) ) - local LIB64=( $(comm -23 <(printf '%s\n' "${T_LIB64[@]}") <(printf '%s\n' "${MULTILIBS[@]}")) ) - - if [ "${#MULTILIBS[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "" "both" "MULTILIBS" >> "$ANDROIDMK" - fi - if [ "${#LIB32[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "" "32" "LIB32" >> "$ANDROIDMK" - fi - if [ "${#LIB64[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "" "64" "LIB64" >> "$ANDROIDMK" - fi - - local T_V_LIB32=( $(prefix_match "vendor/lib/") ) - local T_V_LIB64=( $(prefix_match "vendor/lib64/") ) - local V_MULTILIBS=( $(comm -12 <(printf '%s\n' "${T_V_LIB32[@]}") <(printf '%s\n' "${T_V_LIB64[@]}")) ) - local V_LIB32=( $(comm -23 <(printf '%s\n' "${T_V_LIB32[@]}") <(printf '%s\n' "${V_MULTILIBS[@]}")) ) - local V_LIB64=( $(comm -23 <(printf '%s\n' "${T_V_LIB64[@]}") <(printf '%s\n' "${V_MULTILIBS[@]}")) ) - - if [ "${#V_MULTILIBS[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "vendor" "both" "V_MULTILIBS" >> "$ANDROIDMK" - fi - if [ "${#V_LIB32[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "vendor" "32" "V_LIB32" >> "$ANDROIDMK" - fi - if [ "${#V_LIB64[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "vendor" "64" "V_LIB64" >> "$ANDROIDMK" - fi - - local T_P_LIB32=( $(prefix_match "product/lib/") ) - local T_P_LIB64=( $(prefix_match "product/lib64/") ) - local P_MULTILIBS=( $(comm -12 <(printf '%s\n' "${T_P_LIB32[@]}") <(printf '%s\n' "${T_P_LIB64[@]}")) ) - local P_LIB32=( $(comm -23 <(printf '%s\n' "${T_P_LIB32[@]}") <(printf '%s\n' "${P_MULTILIBS[@]}")) ) - local P_LIB64=( $(comm -23 <(printf '%s\n' "${T_P_LIB64[@]}") <(printf '%s\n' "${P_MULTILIBS[@]}")) ) - - if [ "${#P_MULTILIBS[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "product" "both" "P_MULTILIBS" >> "$ANDROIDMK" - fi - if [ "${#P_LIB32[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "product" "32" "P_LIB32" >> "$ANDROIDMK" - fi - if [ "${#P_LIB64[@]}" -gt "0" ]; then - write_packages "SHARED_LIBRARIES" "product" "64" "P_LIB64" >> "$ANDROIDMK" - fi - - # Apps - local APPS=( $(prefix_match "app/") ) - if [ "${#APPS[@]}" -gt "0" ]; then - write_packages "APPS" "" "" "APPS" >> "$ANDROIDMK" - fi - local PRIV_APPS=( $(prefix_match "priv-app/") ) - if [ "${#PRIV_APPS[@]}" -gt "0" ]; then - write_packages "APPS" "" "priv-app" "PRIV_APPS" >> "$ANDROIDMK" - fi - local V_APPS=( $(prefix_match "vendor/app/") ) - if [ "${#V_APPS[@]}" -gt "0" ]; then - write_packages "APPS" "vendor" "" "V_APPS" >> "$ANDROIDMK" - fi - local V_PRIV_APPS=( $(prefix_match "vendor/priv-app/") ) - if [ "${#V_PRIV_APPS[@]}" -gt "0" ]; then - write_packages "APPS" "vendor" "priv-app" "V_PRIV_APPS" >> "$ANDROIDMK" - fi - local P_APPS=( $(prefix_match "product/app/") ) - if [ "${#P_APPS[@]}" -gt "0" ]; then - write_packages "APPS" "product" "" "P_APPS" >> "$ANDROIDMK" - fi - local P_PRIV_APPS=( $(prefix_match "product/priv-app/") ) - if [ "${#P_PRIV_APPS[@]}" -gt "0" ]; then - write_packages "APPS" "product" "priv-app" "P_PRIV_APPS" >> "$ANDROIDMK" - fi - - # Framework - local FRAMEWORK=( $(prefix_match "framework/") ) - if [ "${#FRAMEWORK[@]}" -gt "0" ]; then - write_packages "JAVA_LIBRARIES" "" "" "FRAMEWORK" >> "$ANDROIDMK" - fi - local V_FRAMEWORK=( $(prefix_match "vendor/framework/") ) - if [ "${#V_FRAMEWORK[@]}" -gt "0" ]; then - write_packages "JAVA_LIBRARIES" "vendor" "" "V_FRAMEWORK" >> "$ANDROIDMK" - fi - local P_FRAMEWORK=( $(prefix_match "product/framework/") ) - if [ "${#P_FRAMEWORK[@]}" -gt "0" ]; then - write_packages "JAVA_LIBRARIES" "product" "" "P_FRAMEWORK" >> "$ANDROIDMK" - fi - - # Etc - local ETC=( $(prefix_match "etc/") ) - if [ "${#ETC[@]}" -gt "0" ]; then - write_packages "ETC" "" "" "ETC" >> "$ANDROIDMK" - fi - local V_ETC=( $(prefix_match "vendor/etc/") ) - if [ "${#V_ETC[@]}" -gt "0" ]; then - write_packages "ETC" "vendor" "" "V_ETC" >> "$ANDROIDMK" - fi - local P_ETC=( $(prefix_match "product/etc/") ) - if [ "${#P_ETC[@]}" -gt "0" ]; then - write_packages "ETC" "product" "" "P_ETC" >> "$ANDROIDMK" - fi - - # Executables - local BIN=( $(prefix_match "bin/") ) - if [ "${#BIN[@]}" -gt "0" ]; then - write_packages "EXECUTABLES" "" "" "BIN" >> "$ANDROIDMK" - fi - local V_BIN=( $(prefix_match "vendor/bin/") ) - if [ "${#V_BIN[@]}" -gt "0" ]; then - write_packages "EXECUTABLES" "vendor" "" "V_BIN" >> "$ANDROIDMK" - fi - local P_BIN=( $(prefix_match "product/bin/") ) - if [ "${#P_BIN[@]}" -gt "0" ]; then - write_packages "EXECUTABLES" "product" "" "P_BIN" >> "$ANDROIDMK" - fi - local SBIN=( $(prefix_match "sbin/") ) - if [ "${#SBIN[@]}" -gt "0" ]; then - write_packages "EXECUTABLES" "" "sbin" "SBIN" >> "$ANDROIDMK" - fi - - - # Actually write out the final PRODUCT_PACKAGES list - local PACKAGE_COUNT=${#PACKAGE_LIST[@]} - - if [ "$PACKAGE_COUNT" -eq "0" ]; then - return 0 - fi - - printf '\n%s\n' "PRODUCT_PACKAGES += \\" >> "$PRODUCTMK" - for (( i=1; i<PACKAGE_COUNT+1; i++ )); do - local LINEEND=" \\" - if [ "$i" -eq "$PACKAGE_COUNT" ]; then - LINEEND="" - fi - printf ' %s%s\n' "${PACKAGE_LIST[$i-1]}" "$LINEEND" >> "$PRODUCTMK" - done -} - -# -# write_header: -# -# $1: file which will be written to -# -# writes out the copyright header with the current year. -# note that this is not an append operation, and should -# be executed first! -# -function write_header() { - if [ -f $1 ]; then - rm $1 - fi - - YEAR=$(date +"%Y") - - [ "$COMMON" -eq 1 ] && local DEVICE="$DEVICE_COMMON" - - NUM_REGEX='^[0-9]+$' - if [[ $INITIAL_COPYRIGHT_YEAR =~ $NUM_REGEX ]] && [ $INITIAL_COPYRIGHT_YEAR -le $YEAR ]; then - if [ $INITIAL_COPYRIGHT_YEAR -lt 2016 ]; then - printf "# Copyright (C) $INITIAL_COPYRIGHT_YEAR-2016 The CyanogenMod Project\n" > $1 - elif [ $INITIAL_COPYRIGHT_YEAR -eq 2016 ]; then - printf "# Copyright (C) 2016 The CyanogenMod Project\n" > $1 - fi - if [ $YEAR -eq 2017 ]; then - printf "# Copyright (C) 2017 The LineageOS Project\n" >> $1 - elif [ $INITIAL_COPYRIGHT_YEAR -eq $YEAR ]; then - printf "# Copyright (C) $YEAR The LineageOS Project\n" >> $1 - elif [ $INITIAL_COPYRIGHT_YEAR -le 2017 ]; then - printf "# Copyright (C) 2017-$YEAR The LineageOS Project\n" >> $1 - else - printf "# Copyright (C) $INITIAL_COPYRIGHT_YEAR-$YEAR The LineageOS Project\n" >> $1 - fi - else - printf "# Copyright (C) $YEAR The LineageOS Project\n" > $1 - fi - - cat << EOF >> $1 -# -# 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. - -# This file is generated by device/$VENDOR/$DEVICE/setup-makefiles.sh - -EOF -} - -# -# write_headers: -# -# $1: devices falling under common to be added to guard - optional -# $2: custom guard - optional -# -# Calls write_header for each of the makefiles and creates -# the initial path declaration and device guard for the -# Android.mk -# -function write_headers() { - write_header "$ANDROIDMK" - - GUARD="$2" - if [ -z "$GUARD" ]; then - GUARD="TARGET_DEVICE" - fi - - cat << EOF >> "$ANDROIDMK" -LOCAL_PATH := \$(call my-dir) - -EOF - if [ "$COMMON" -ne 1 ]; then - cat << EOF >> "$ANDROIDMK" -ifeq (\$($GUARD),$DEVICE) - -EOF - else - if [ -z "$1" ]; then - echo "Argument with devices to be added to guard must be set!" - exit 1 - fi - cat << EOF >> "$ANDROIDMK" -ifneq (\$(filter $1,\$($GUARD)),) - -EOF - fi - - write_header "$BOARDMK" - write_header "$PRODUCTMK" -} - -# -# write_footers: -# -# Closes the inital guard and any other finalization tasks. Must -# be called as the final step. -# -function write_footers() { - cat << EOF >> "$ANDROIDMK" -endif -EOF -} - -# Return success if adb is up and not in recovery -function _adb_connected { - { - if [[ "$(adb get-state)" == device ]] - then - return 0 - fi - } 2>/dev/null - - return 1 -}; - -# -# parse_file_list: -# -# $1: input file -# $2: blob section in file - optional -# -# Sets PRODUCT_PACKAGES and PRODUCT_COPY_FILES while parsing the input file -# -function parse_file_list() { - if [ -z "$1" ]; then - echo "An input file is expected!" - exit 1 - elif [ ! -f "$1" ]; then - echo "Input file "$1" does not exist!" - exit 1 - fi - - if [ -n "$2" ]; then - echo "Using section \"$2\"" - LIST=$TMPDIR/files.txt - # Match all lines starting with first line found to start* with '#' - # comment and contain** $2, and ending with first line to be empty*. - # *whitespaces (tabs, spaces) at the beginning of lines are discarded - # **the $2 match is case-insensitive - cat $1 | sed -n '/^[[:space:]]*#.*'"$2"'/I,/^[[:space:]]*$/ p' > $LIST - else - LIST=$1 - fi - - - PRODUCT_PACKAGES_LIST=() - PRODUCT_PACKAGES_HASHES=() - PRODUCT_PACKAGES_FIXUP_HASHES=() - PRODUCT_COPY_FILES_LIST=() - PRODUCT_COPY_FILES_HASHES=() - PRODUCT_COPY_FILES_FIXUP_HASHES=() - - while read -r line; do - if [ -z "$line" ]; then continue; fi - - # If the line has a pipe delimiter, a sha1 hash should follow. - # This indicates the file should be pinned and not overwritten - # when extracting files. - local SPLIT=(${line//\|/ }) - local COUNT=${#SPLIT[@]} - local SPEC=${SPLIT[0]} - local HASH="x" - local FIXUP_HASH="x" - if [ "$COUNT" -gt "1" ]; then - HASH=${SPLIT[1]} - fi - if [ "$COUNT" -gt "2" ]; then - FIXUP_HASH=${SPLIT[2]} - fi - - # if line starts with a dash, it needs to be packaged - if [[ "$SPEC" =~ ^- ]]; then - PRODUCT_PACKAGES_LIST+=("${SPEC#-}") - PRODUCT_PACKAGES_HASHES+=("$HASH") - PRODUCT_PACKAGES_FIXUP_HASHES+=("$FIXUP_HASH") - else - PRODUCT_COPY_FILES_LIST+=("$SPEC") - PRODUCT_COPY_FILES_HASHES+=("$HASH") - PRODUCT_COPY_FILES_FIXUP_HASHES+=("$FIXUP_HASH") - fi - - done < <(egrep -v '(^#|^[[:space:]]*$)' "$LIST" | LC_ALL=C sort | uniq) -} - -# -# write_makefiles: -# -# $1: file containing the list of items to extract -# $2: make treble compatible makefile - optional -# -# Calls write_product_copy_files and write_product_packages on -# the given file and appends to the Android.mk as well as -# the product makefile. -# -function write_makefiles() { - parse_file_list "$1" - write_product_copy_files "$2" - write_product_packages -} - -# -# append_firmware_calls_to_makefiles: -# -# Appends to Android.mk the calls to all images present in radio folder -# (filesmap file used by releasetools to map firmware images should be kept in the device tree) -# -function append_firmware_calls_to_makefiles() { - cat << EOF >> "$ANDROIDMK" -ifeq (\$(LOCAL_PATH)/radio, \$(wildcard \$(LOCAL_PATH)/radio)) - -RADIO_FILES := \$(wildcard \$(LOCAL_PATH)/radio/*) -\$(foreach f, \$(notdir \$(RADIO_FILES)), \\ - \$(call add-radio-file,radio/\$(f))) -\$(call add-radio-file,../../../device/$VENDOR/$DEVICE/radio/filesmap) - -endif - -EOF -} - -# -# get_file: -# -# $1: input file -# $2: target file/folder -# $3: source of the file (can be "adb" or a local folder) -# -# Silently extracts the input file to defined target -# Returns success if file can be pulled from the device or found locally -# -function get_file() { - local SRC="$3" - - if [ "$SRC" = "adb" ]; then - # try to pull - adb pull "$1" "$2" >/dev/null 2>&1 && return 0 - - return 1 - else - # try to copy - cp -r "$SRC/$1" "$2" 2>/dev/null && return 0 - cp -r "$SRC/${1#/system}" "$2" 2>/dev/null && return 0 - cp -r "$SRC/system/$1" "$2" 2>/dev/null && return 0 - - return 1 - fi -}; - -# -# oat2dex: -# -# $1: extracted apk|jar (to check if deodex is required) -# $2: odexed apk|jar to deodex -# $3: source of the odexed apk|jar -# -# Convert apk|jar .odex in the corresposing classes.dex -# -function oat2dex() { - local LINEAGE_TARGET="$1" - local OEM_TARGET="$2" - local SRC="$3" - local TARGET= - local OAT= - local HOST="$(uname)" - - if [ -z "$BAKSMALIJAR" ] || [ -z "$SMALIJAR" ]; then - export BAKSMALIJAR="$LINEAGE_ROOT"/vendor/lineage/build/tools/smali/baksmali.jar - export SMALIJAR="$LINEAGE_ROOT"/vendor/lineage/build/tools/smali/smali.jar - fi - - if [ -z "$VDEXEXTRACTOR" ]; then - export VDEXEXTRACTOR="$LINEAGE_ROOT"/vendor/lineage/build/tools/"$HOST"/vdexExtractor - fi - - if [ -z "$CDEXCONVERTER" ]; then - export CDEXCONVERTER="$LINEAGE_ROOT"/vendor/lineage/build/tools/"$HOST"/compact_dex_converter - fi - - # Extract existing boot.oats to the temp folder - if [ -z "$ARCHES" ]; then - echo "Checking if system is odexed and locating boot.oats..." - for ARCH in "arm64" "arm" "x86_64" "x86"; do - mkdir -p "$TMPDIR/system/framework/$ARCH" - if get_file "/system/framework/$ARCH" "$TMPDIR/system/framework/" "$SRC"; then - ARCHES+="$ARCH " - else - rmdir "$TMPDIR/system/framework/$ARCH" - fi - done - fi - - if [ -z "$ARCHES" ]; then - FULLY_DEODEXED=1 && return 0 # system is fully deodexed, return - fi - - if [ ! -f "$LINEAGE_TARGET" ]; then - return; - fi - - if grep "classes.dex" "$LINEAGE_TARGET" >/dev/null; then - return 0 # target apk|jar is already odexed, return - fi - - for ARCH in $ARCHES; do - BOOTOAT="$TMPDIR/system/framework/$ARCH/boot.oat" - - local OAT="$(dirname "$OEM_TARGET")/oat/$ARCH/$(basename "$OEM_TARGET" ."${OEM_TARGET##*.}").odex" - local VDEX="$(dirname "$OEM_TARGET")/oat/$ARCH/$(basename "$OEM_TARGET" ."${OEM_TARGET##*.}").vdex" - - if get_file "$OAT" "$TMPDIR" "$SRC"; then - if get_file "$VDEX" "$TMPDIR" "$SRC"; then - "$VDEXEXTRACTOR" -o "$TMPDIR/" -i "$TMPDIR/$(basename "$VDEX")" > /dev/null - CLASSES=$(ls "$TMPDIR/$(basename "${OEM_TARGET%.*}")_classes"*) - for CLASS in $CLASSES; do - NEWCLASS=$(echo "$CLASS" | sed 's/.*_//;s/cdex/dex/') - # Check if we have to deal with CompactDex - if [[ "$CLASS" == *.cdex ]]; then - "$CDEXCONVERTER" "$CLASS" &>/dev/null - mv "$CLASS.new" "$TMPDIR/$NEWCLASS" - else - mv "$CLASS" "$TMPDIR/$NEWCLASS" - fi - done - else - java -jar "$BAKSMALIJAR" deodex -o "$TMPDIR/dexout" -b "$BOOTOAT" -d "$TMPDIR" "$TMPDIR/$(basename "$OAT")" - java -jar "$SMALIJAR" assemble "$TMPDIR/dexout" -o "$TMPDIR/classes.dex" - fi - elif [[ "$LINEAGE_TARGET" =~ .jar$ ]]; then - JAROAT="$TMPDIR/system/framework/$ARCH/boot-$(basename ${OEM_TARGET%.*}).oat" - JARVDEX="/system/framework/boot-$(basename ${OEM_TARGET%.*}).vdex" - if [ ! -f "$JAROAT" ]; then - JAROAT=$BOOTOAT - fi - # try to extract classes.dex from boot.vdex for frameworks jars - # fallback to boot.oat if vdex is not available - if get_file "$JARVDEX" "$TMPDIR" "$SRC"; then - "$VDEXEXTRACTOR" -o "$TMPDIR/" -i "$TMPDIR/$(basename "$JARVDEX")" > /dev/null - CLASSES=$(ls "$TMPDIR/$(basename "${JARVDEX%.*}")_classes"*) - for CLASS in $CLASSES; do - NEWCLASS=$(echo "$CLASS" | sed 's/.*_//;s/cdex/dex/') - # Check if we have to deal with CompactDex - if [[ "$CLASS" == *.cdex ]]; then - "$CDEXCONVERTER" "$CLASS" &>/dev/null - mv "$CLASS.new" "$TMPDIR/$NEWCLASS" - else - mv "$CLASS" "$TMPDIR/$NEWCLASS" - fi - done - else - java -jar "$BAKSMALIJAR" deodex -o "$TMPDIR/dexout" -b "$BOOTOAT" -d "$TMPDIR" "$JAROAT/$OEM_TARGET" - java -jar "$SMALIJAR" assemble "$TMPDIR/dexout" -o "$TMPDIR/classes.dex" - fi - else - continue - fi - - done - - rm -rf "$TMPDIR/dexout" -} - -# -# init_adb_connection: -# -# Starts adb server and waits for the device -# -function init_adb_connection() { - adb start-server # Prevent unexpected starting server message from adb get-state in the next line - if ! _adb_connected; then - echo "No device is online. Waiting for one..." - echo "Please connect USB and/or enable USB debugging" - until _adb_connected; do - sleep 1 - done - echo "Device Found." - fi - - # Retrieve IP and PORT info if we're using a TCP connection - TCPIPPORT=$(adb devices | egrep '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+:[0-9]+[^0-9]+' \ - | head -1 | awk '{print $1}') - adb root &> /dev/null - sleep 0.3 - if [ -n "$TCPIPPORT" ]; then - # adb root just killed our connection - # so reconnect... - adb connect "$TCPIPPORT" - fi - adb wait-for-device &> /dev/null - sleep 0.3 -} - -# -# fix_xml: -# -# $1: xml file to fix -# -function fix_xml() { - local XML="$1" - local TEMP_XML="$TMPDIR/`basename "$XML"`.temp" - - grep -a '^<?xml version' "$XML" > "$TEMP_XML" - grep -av '^<?xml version' "$XML" >> "$TEMP_XML" - - mv "$TEMP_XML" "$XML" -} - -function get_hash() { - local FILE="$1" - - if [ "$(uname)" == "Darwin" ]; then - shasum "${FILE}" | awk '{print $1}' - else - sha1sum "${FILE}" | awk '{print $1}' - fi -} - -function print_spec() { - local SPEC_PRODUCT_PACKAGE="$1" - local SPEC_SRC_FILE="$2" - local SPEC_DST_FILE="$3" - local SPEC_ARGS="$4" - local SPEC_HASH="$5" - local SPEC_FIXUP_HASH="$6" - - local PRODUCT_PACKAGE="" - if [ ${SPEC_PRODUCT_PACKAGE} = true ]; then - PRODUCT_PACKAGE="-" - fi - local SRC="" - if [ ! -z "${SPEC_SRC_FILE}" ] && [ "${SPEC_SRC_FILE}" != "${SPEC_DST_FILE}" ]; then - SRC="${SPEC_SRC_FILE}:" - fi - local DST="" - if [ ! -z "${SPEC_DST_FILE}" ]; then - DST="${SPEC_DST_FILE}" - fi - local ARGS="" - if [ ! -z "${SPEC_ARGS}" ]; then - ARGS=";${SPEC_ARGS}" - fi - local HASH="" - if [ ! -z "${SPEC_HASH}" ] && [ "${SPEC_HASH}" != "x" ]; then - HASH="|${SPEC_HASH}" - fi - local FIXUP_HASH="" - if [ ! -z "${SPEC_FIXUP_HASH}" ] && [ "${SPEC_FIXUP_HASH}" != "x" ] && [ "${SPEC_FIXUP_HASH}" != "${SPEC_HASH}" ]; then - FIXUP_HASH="|${SPEC_FIXUP_HASH}" - fi - printf '%s%s%s%s%s%s\n' "${PRODUCT_PACKAGE}" "${SRC}" "${DST}" "${ARGS}" "${HASH}" "${FIXUP_HASH}" -} - -# To be overridden by device-level extract-files.sh -# Parameters: -# $1: spec name of a blob. Can be used for filtering. -# If the spec is "src:dest", then $1 is "dest". -# If the spec is "src", then $1 is "src". -# $2: path to blob file. Can be used for fixups. -# -function blob_fixup() { - : -} - -# -# extract: -# -# Positional parameters: -# $1: file containing the list of items to extract (aka proprietary-files.txt) -# $2: path to extracted system folder, an ota zip file, or "adb" to extract from device -# $3: section in list file to extract - optional. Setting section via $3 is deprecated. -# -# Non-positional parameters (coming after $2): -# --section: preferred way of selecting the portion to parse and extract from -# proprietary-files.txt -# --kang: if present, this option will activate the printing of hashes for the -# extracted blobs. Useful with --section for subsequent pinning of -# blobs taken from other origins. -# -function extract() { - # Consume positional parameters - local PROPRIETARY_FILES_TXT="$1"; shift - local SRC="$1"; shift - local SECTION="" - local KANG=false - - # Consume optional, non-positional parameters - while [ "$#" -gt 0 ]; do - case "$1" in - -s|--section) - SECTION="$2"; shift - ;; - -k|--kang) - KANG=true - DISABLE_PINNING=1 - ;; - *) - # Backwards-compatibility with the old behavior, where $3, if - # present, denoted an optional positional ${SECTION} argument. - # Users of ${SECTION} are encouraged to migrate from setting it as - # positional $3, to non-positional --section ${SECTION}, the - # reason being that it doesn't scale to have more than 1 optional - # positional argument. - SECTION="$1" - ;; - esac - shift - done - - if [ -z "$OUTDIR" ]; then - echo "Output dir not set!" - exit 1 - fi - - parse_file_list "${PROPRIETARY_FILES_TXT}" "${SECTION}" - - # Allow failing, so we can try $DEST and/or $FILE - set +e - - local FILELIST=( ${PRODUCT_COPY_FILES_LIST[@]} ${PRODUCT_PACKAGES_LIST[@]} ) - local HASHLIST=( ${PRODUCT_COPY_FILES_HASHES[@]} ${PRODUCT_PACKAGES_HASHES[@]} ) - local FIXUP_HASHLIST=( ${PRODUCT_COPY_FILES_FIXUP_HASHES[@]} ${PRODUCT_PACKAGES_FIXUP_HASHES[@]} ) - local PRODUCT_COPY_FILES_COUNT=${#PRODUCT_COPY_FILES_LIST[@]} - local COUNT=${#FILELIST[@]} - local OUTPUT_ROOT="$LINEAGE_ROOT"/"$OUTDIR"/proprietary - local OUTPUT_TMP="$TMPDIR"/"$OUTDIR"/proprietary - - if [ "$SRC" = "adb" ]; then - init_adb_connection - fi - - if [ -f "$SRC" ] && [ "${SRC##*.}" == "zip" ]; then - DUMPDIR="$TMPDIR"/system_dump - - # Check if we're working with the same zip that was passed last time. - # If so, let's just use what's already extracted. - MD5=`md5sum "$SRC"| awk '{print $1}'` - OLDMD5=`cat "$DUMPDIR"/zipmd5.txt` - - if [ "$MD5" != "$OLDMD5" ]; then - rm -rf "$DUMPDIR" - mkdir "$DUMPDIR" - unzip "$SRC" -d "$DUMPDIR" - echo "$MD5" > "$DUMPDIR"/zipmd5.txt - - # Stop if an A/B OTA zip is detected. We cannot extract these. - if [ -a "$DUMPDIR"/payload.bin ]; then - echo "A/B style OTA zip detected. This is not supported at this time. Stopping..." - exit 1 - # If OTA is block based, extract it. - elif [ -a "$DUMPDIR"/system.new.dat ]; then - echo "Converting system.new.dat to system.img" - python "$LINEAGE_ROOT"/vendor/lineage/build/tools/sdat2img.py "$DUMPDIR"/system.transfer.list "$DUMPDIR"/system.new.dat "$DUMPDIR"/system.img 2>&1 - rm -rf "$DUMPDIR"/system.new.dat "$DUMPDIR"/system - mkdir "$DUMPDIR"/system "$DUMPDIR"/tmp - echo "Requesting sudo access to mount the system.img" - sudo mount -o loop "$DUMPDIR"/system.img "$DUMPDIR"/tmp - cp -r "$DUMPDIR"/tmp/* "$DUMPDIR"/system/ - sudo umount "$DUMPDIR"/tmp - rm -rf "$DUMPDIR"/tmp "$DUMPDIR"/system.img - fi - fi - - SRC="$DUMPDIR" - fi - - if [ "$VENDOR_STATE" -eq "0" ]; then - echo "Cleaning output directory ($OUTPUT_ROOT).." - rm -rf "${OUTPUT_TMP:?}" - mkdir -p "${OUTPUT_TMP:?}" - if [ -d "$OUTPUT_ROOT" ]; then - mv "${OUTPUT_ROOT:?}/"* "${OUTPUT_TMP:?}/" - fi - VENDOR_STATE=1 - fi - - echo "Extracting ${COUNT} files in ${PROPRIETARY_FILES_TXT} from ${SRC}:" - - for (( i=1; i<COUNT+1; i++ )); do - - local SPEC_SRC_FILE=$(src_file "${FILELIST[$i-1]}") - local SPEC_DST_FILE=$(target_file "${FILELIST[$i-1]}") - local SPEC_ARGS=$(target_args "${FILELIST[$i-1]}") - local OUTPUT_DIR= - local TMP_DIR= - local SRC_FILE= - local DST_FILE= - local IS_PRODUCT_PACKAGE=false - - # Note: this relies on the fact that the ${FILELIST[@]} array - # contains first ${PRODUCT_COPY_FILES_LIST[@]}, then ${PRODUCT_PACKAGES_LIST[@]}. - if [ "${i}" -gt "${PRODUCT_COPY_FILES_COUNT}" ]; then - IS_PRODUCT_PACKAGE=true - fi - - if [ "${SPEC_ARGS}" = "rootfs" ]; then - OUTPUT_DIR="${OUTPUT_ROOT}/rootfs" - TMP_DIR="${OUTPUT_TMP}/rootfs" - SRC_FILE="/${SPEC_SRC_FILE}" - DST_FILE="/${SPEC_DST_FILE}" - else - OUTPUT_DIR="${OUTPUT_ROOT}" - TMP_DIR="${OUTPUT_TMP}" - SRC_FILE="/system/${SPEC_SRC_FILE}" - DST_FILE="/system/${SPEC_DST_FILE}" - fi - - # Strip the file path in the vendor repo of "system", if present - local VENDOR_REPO_FILE="$OUTPUT_DIR/${DST_FILE#/system}" - local BLOB_DISPLAY_NAME="${DST_FILE#/system/}" - mkdir -p $(dirname "${VENDOR_REPO_FILE}") - - # Check pinned files - local HASH="$(echo ${HASHLIST[$i-1]} | awk '{ print tolower($0); }')" - local FIXUP_HASH="$(echo ${FIXUP_HASHLIST[$i-1]} | awk '{ print tolower($0); }')" - local KEEP="" - if [ "$DISABLE_PINNING" != "1" ] && [ "$HASH" != "x" ]; then - if [ -f "${VENDOR_REPO_FILE}" ]; then - local PINNED="${VENDOR_REPO_FILE}" - else - local PINNED="${TMP_DIR}${DST_FILE#/system}" - fi - if [ -f "$PINNED" ]; then - local TMP_HASH=$(get_hash "${PINNED}") - if [ "${TMP_HASH}" = "${HASH}" ] || [ "${TMP_HASH}" = "${FIXUP_HASH}" ]; then - KEEP="1" - if [ ! -f "${VENDOR_REPO_FILE}" ]; then - cp -p "$PINNED" "${VENDOR_REPO_FILE}" - fi - fi - fi - fi - - if [ "${KANG}" = false ]; then - printf ' - %s\n' "${BLOB_DISPLAY_NAME}" - fi - - if [ "$KEEP" = "1" ]; then - printf ' + keeping pinned file with hash %s\n' "${HASH}" - else - FOUND=false - # Try Lineage target first. - # Also try to search for files stripped of - # the "/system" prefix, if we're actually extracting - # from a system image. - for CANDIDATE in "${DST_FILE}" "${SRC_FILE}"; do - get_file ${CANDIDATE} ${VENDOR_REPO_FILE} ${SRC} && { - FOUND=true - break - } - done - - if [ "${FOUND}" = false ]; then - printf ' !! %s: file not found in source\n' "${BLOB_DISPLAY_NAME}" - continue - fi - fi - - # Blob fixup pipeline has 2 parts: one that is fixed and - # one that is user-configurable - local PRE_FIXUP_HASH=$(get_hash ${VENDOR_REPO_FILE}) - # Deodex apk|jar if that's the case - if [[ "$FULLY_DEODEXED" -ne "1" && "${VENDOR_REPO_FILE}" =~ .(apk|jar)$ ]]; then - oat2dex "${VENDOR_REPO_FILE}" "${SRC_FILE}" "$SRC" - if [ -f "$TMPDIR/classes.dex" ]; then - touch -t 200901010000 "$TMPDIR/classes"* - zip -gjq "${VENDOR_REPO_FILE}" "$TMPDIR/classes"* - rm "$TMPDIR/classes"* - printf ' (updated %s from odex files)\n' "${SRC_FILE}" - fi - elif [[ "${VENDOR_REPO_FILE}" =~ .xml$ ]]; then - fix_xml "${VENDOR_REPO_FILE}" - fi - # Now run user-supplied fixup function - blob_fixup "${BLOB_DISPLAY_NAME}" "${VENDOR_REPO_FILE}" - local POST_FIXUP_HASH=$(get_hash ${VENDOR_REPO_FILE}) - - if [ -f "${VENDOR_REPO_FILE}" ]; then - local DIR=$(dirname "${VENDOR_REPO_FILE}") - local TYPE="${DIR##*/}" - if [ "$TYPE" = "bin" -o "$TYPE" = "sbin" ]; then - chmod 755 "${VENDOR_REPO_FILE}" - else - chmod 644 "${VENDOR_REPO_FILE}" - fi - fi - - if [ "${KANG}" = true ]; then - print_spec "${IS_PRODUCT_PACKAGE}" "${SPEC_SRC_FILE}" "${SPEC_DST_FILE}" "${SPEC_ARGS}" "${PRE_FIXUP_HASH}" "${POST_FIXUP_HASH}" - fi - - # Check and print whether the fixup pipeline actually did anything. - # This isn't done right after the fixup pipeline because we want this print - # to come after print_spec above, when in kang mode. - if [ "${PRE_FIXUP_HASH}" != "${POST_FIXUP_HASH}" ]; then - printf " + Fixed up %s\n" "${BLOB_DISPLAY_NAME}" - # Now sanity-check the spec for this blob. - if [ "${KANG}" = false ] && [ "${FIXUP_HASH}" = "x" ] && [ "${HASH}" != "x" ]; then - printf "WARNING: The %s file was fixed up, but it is pinned.\n" ${BLOB_DISPLAY_NAME} - printf "This is a mistake and you want to either remove the hash completely, or add an extra one.\n" - fi - fi - - done - - # Don't allow failing - set -e -} - -# -# extract_firmware: -# -# $1: file containing the list of items to extract -# $2: path to extracted radio folder -# -function extract_firmware() { - if [ -z "$OUTDIR" ]; then - echo "Output dir not set!" - exit 1 - fi - - parse_file_list "$1" - - # Don't allow failing - set -e - - local FILELIST=( ${PRODUCT_COPY_FILES_LIST[@]} ) - local COUNT=${#FILELIST[@]} - local SRC="$2" - local OUTPUT_DIR="$LINEAGE_ROOT"/"$OUTDIR"/radio - - if [ "$VENDOR_RADIO_STATE" -eq "0" ]; then - echo "Cleaning firmware output directory ($OUTPUT_DIR).." - rm -rf "${OUTPUT_DIR:?}/"* - VENDOR_RADIO_STATE=1 - fi - - echo "Extracting $COUNT files in $1 from $SRC:" - - for (( i=1; i<COUNT+1; i++ )); do - local FILE="${FILELIST[$i-1]}" - printf ' - %s \n' "/radio/$FILE" - - if [ ! -d "$OUTPUT_DIR" ]; then - mkdir -p "$OUTPUT_DIR" - fi - cp "$SRC/$FILE" "$OUTPUT_DIR/$FILE" - chmod 644 "$OUTPUT_DIR/$FILE" - done -} - -function extract_img_data() { - local image_file="$1" - local out_dir="$2" - local logFile="$TMPDIR/debugfs.log" - - if [ ! -d "$out_dir" ]; then - mkdir -p "$out_dir" - fi - - if [[ "$HOST_OS" == "Darwin" ]]; then - debugfs -R "rdump / \"$out_dir\"" "$image_file" &> "$logFile" || { - echo "[-] Failed to extract data from '$image_file'" - abort 1 - } - else - debugfs -R 'ls -p' "$image_file" 2>/dev/null | cut -d '/' -f6 | while read -r entry - do - debugfs -R "rdump \"$entry\" \"$out_dir\"" "$image_file" >> "$logFile" 2>&1 || { - echo "[-] Failed to extract data from '$image_file'" - abort 1 - } - done - fi - - local symlink_err="rdump: Attempt to read block from filesystem resulted in short read while reading symlink" - if grep -Fq "$symlink_err" "$logFile"; then - echo "[-] Symlinks have not been properly processed from $image_file" - echo "[!] If you don't have a compatible debugfs version, modify 'execute-all.sh' to disable 'USE_DEBUGFS' flag" - abort 1 - fi -} - -declare -ra VENDOR_SKIP_FILES=( - "bin/toybox_vendor" - "bin/toolbox" - "bin/grep" - "build.prop" - "compatibility_matrix.xml" - "default.prop" - "etc/NOTICE.xml.gz" - "etc/vintf/compatibility_matrix.xml" - "etc/vintf/manifest.xml" - "etc/wifi/wpa_supplicant.conf" - "manifest.xml" - "overlay/DisplayCutoutEmulationCorner/DisplayCutoutEmulationCornerOverlay.apk" - "overlay/DisplayCutoutEmulationDouble/DisplayCutoutEmulationDoubleOverlay.apk" - "overlay/DisplayCutoutEmulationTall/DisplayCutoutEmulationTallOverlay.apk" - "overlay/DisplayCutoutNoCutout/NoCutoutOverlay.apk" - "overlay/framework-res__auto_generated_rro.apk" - "overlay/SysuiDarkTheme/SysuiDarkThemeOverlay.apk" -) - -function array_contains() { - local element - for element in "${@:2}"; do [[ "$element" == "$1" ]] && return 0; done - return 1 -} - -function generate_prop_list_from_image() { - local image_file="$1" - local image_dir="$TMPDIR/image-temp" - local output_list="$2" - local output_list_tmp="$TMPDIR/_proprietary-blobs.txt" - local -n skipped_vendor_files="$3" - - extract_img_data "$image_file" "$image_dir" - - find "$image_dir" -not -type d | sed "s#^$image_dir/##" | while read -r FILE - do - # Skip VENDOR_SKIP_FILES since it will be re-generated at build time - if array_contains "$FILE" "${VENDOR_SKIP_FILES[@]}"; then - continue - fi - # Skip device defined skipped files since they will be re-generated at build time - if array_contains "$FILE" "${skipped_vendor_files[@]}"; then - continue - fi - if suffix_match_file ".apk" "$FILE" ; then - echo "-vendor/$FILE" >> "$output_list_tmp" - else - echo "vendor/$FILE" >> "$output_list_tmp" - fi - done - - # Sort merged file with all lists - sort -u "$output_list_tmp" > "$output_list" - - # Clean-up - rm -f "$output_list_tmp" -} diff --git a/build/tools/getb64key.py b/build/tools/getb64key.py deleted file mode 100755 index 976a1576..00000000 --- a/build/tools/getb64key.py +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env python - -from __future__ import print_function - -import base64 -import sys - -pkFile = open(sys.argv[1], 'rb').readlines() -base64Key = "" -inCert = False -for line in pkFile: - if line.startswith(b"-"): - inCert = not inCert - continue - - base64Key += line.strip() - -print(base64.b16encode(base64.b64decode(base64Key)).lower()) diff --git a/build/tools/repopick.py b/build/tools/repopick.py deleted file mode 100755 index 7025dc67..00000000 --- a/build/tools/repopick.py +++ /dev/null @@ -1,480 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (C) 2013-15 The CyanogenMod Project -# (C) 2017 The LineageOS Project -# -# 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. -# - -# -# Run repopick.py -h for a description of this utility. -# - -from __future__ import print_function - -import sys -import json -import os -import subprocess -import re -import argparse -import textwrap -from functools import cmp_to_key -from xml.etree import ElementTree - -try: - import requests -except ImportError: - try: - # For python3 - import urllib.error - import urllib.request - except ImportError: - # For python2 - import imp - import urllib2 - urllib = imp.new_module('urllib') - urllib.error = urllib2 - urllib.request = urllib2 - - -# cmp() is not available in Python 3, define it manually -# See https://docs.python.org/3.0/whatsnew/3.0.html#ordering-comparisons -def cmp(a, b): - return (a > b) - (a < b) - - -# Verifies whether pathA is a subdirectory (or the same) as pathB -def is_subdir(a, b): - a = os.path.realpath(a) + '/' - b = os.path.realpath(b) + '/' - return b == a[:len(b)] - - -def fetch_query_via_ssh(remote_url, query): - """Given a remote_url and a query, return the list of changes that fit it - This function is slightly messy - the ssh api does not return data in the same structure as the HTTP REST API - We have to get the data, then transform it to match what we're expecting from the HTTP RESET API""" - if remote_url.count(':') == 2: - (uri, userhost, port) = remote_url.split(':') - userhost = userhost[2:] - elif remote_url.count(':') == 1: - (uri, userhost) = remote_url.split(':') - userhost = userhost[2:] - port = 29418 - else: - raise Exception('Malformed URI: Expecting ssh://[user@]host[:port]') - - - out = subprocess.check_output(['ssh', '-x', '-p{0}'.format(port), userhost, 'gerrit', 'query', '--format=JSON --patch-sets --current-patch-set', query]) - if not hasattr(out, 'encode'): - out = out.decode() - reviews = [] - for line in out.split('\n'): - try: - data = json.loads(line) - # make our data look like the http rest api data - review = { - 'branch': data['branch'], - 'change_id': data['id'], - 'current_revision': data['currentPatchSet']['revision'], - 'number': int(data['number']), - 'revisions': {patch_set['revision']: { - '_number': int(patch_set['number']), - 'fetch': { - 'ssh': { - 'ref': patch_set['ref'], - 'url': 'ssh://{0}:{1}/{2}'.format(userhost, port, data['project']) - } - }, - 'commit': { - 'parents': [{ 'commit': parent } for parent in patch_set['parents']] - }, - } for patch_set in data['patchSets']}, - 'subject': data['subject'], - 'project': data['project'], - 'status': data['status'] - } - reviews.append(review) - except: - pass - args.quiet or print('Found {0} reviews'.format(len(reviews))) - return reviews - - -def fetch_query_via_http(remote_url, query): - if "requests" in sys.modules: - auth = None - if os.path.isfile(os.getenv("HOME") + "/.gerritrc"): - f = open(os.getenv("HOME") + "/.gerritrc", "r") - for line in f: - parts = line.rstrip().split("|") - if parts[0] in remote_url: - auth = requests.auth.HTTPBasicAuth(username=parts[1], password=parts[2]) - statusCode = '-1' - if auth: - url = '{0}/a/changes/?q={1}&o=CURRENT_REVISION&o=ALL_REVISIONS&o=ALL_COMMITS'.format(remote_url, query) - data = requests.get(url, auth=auth) - statusCode = str(data.status_code) - if statusCode != '200': - #They didn't get good authorization or data, Let's try the old way - url = '{0}/changes/?q={1}&o=CURRENT_REVISION&o=ALL_REVISIONS&o=ALL_COMMITS'.format(remote_url, query) - data = requests.get(url) - reviews = json.loads(data.text[5:]) - else: - """Given a query, fetch the change numbers via http""" - url = '{0}/changes/?q={1}&o=CURRENT_REVISION&o=ALL_REVISIONS&o=ALL_COMMITS'.format(remote_url, query) - data = urllib.request.urlopen(url).read().decode('utf-8') - reviews = json.loads(data[5:]) - - for review in reviews: - review['number'] = review.pop('_number') - - return reviews - - -def fetch_query(remote_url, query): - """Wrapper for fetch_query_via_proto functions""" - if remote_url[0:3] == 'ssh': - return fetch_query_via_ssh(remote_url, query) - elif remote_url[0:4] == 'http': - return fetch_query_via_http(remote_url, query.replace(' ', '+')) - else: - raise Exception('Gerrit URL should be in the form http[s]://hostname/ or ssh://[user@]host[:port]') - -if __name__ == '__main__': - # Default to LineageOS Gerrit - default_gerrit = 'https://review.lineageos.org' - - parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, description=textwrap.dedent('''\ - repopick.py is a utility to simplify the process of cherry picking - patches from LineageOS's Gerrit instance (or any gerrit instance of your choosing) - - Given a list of change numbers, repopick will cd into the project path - and cherry pick the latest patch available. - - With the --start-branch argument, the user can specify that a branch - should be created before cherry picking. This is useful for - cherry-picking many patches into a common branch which can be easily - abandoned later (good for testing other's changes.) - - The --abandon-first argument, when used in conjunction with the - --start-branch option, will cause repopick to abandon the specified - branch in all repos first before performing any cherry picks.''')) - parser.add_argument('change_number', nargs='*', help='change number to cherry pick. Use {change number}/{patchset number} to get a specific revision.') - parser.add_argument('-i', '--ignore-missing', action='store_true', help='do not error out if a patch applies to a missing directory') - parser.add_argument('-s', '--start-branch', nargs=1, help='start the specified branch before cherry picking') - parser.add_argument('-r', '--reset', action='store_true', help='reset to initial state (abort cherry-pick) if there is a conflict') - parser.add_argument('-a', '--abandon-first', action='store_true', help='before cherry picking, abandon the branch specified in --start-branch') - parser.add_argument('-b', '--auto-branch', action='store_true', help='shortcut to "--start-branch auto --abandon-first --ignore-missing"') - parser.add_argument('-q', '--quiet', action='store_true', help='print as little as possible') - parser.add_argument('-v', '--verbose', action='store_true', help='print extra information to aid in debug') - parser.add_argument('-f', '--force', action='store_true', help='force cherry pick even if change is closed') - parser.add_argument('-p', '--pull', action='store_true', help='execute pull instead of cherry-pick') - parser.add_argument('-P', '--path', help='use the specified path for the change') - parser.add_argument('-t', '--topic', help='pick all commits from a specified topic') - parser.add_argument('-Q', '--query', help='pick all commits using the specified query') - parser.add_argument('-g', '--gerrit', default=default_gerrit, help='Gerrit Instance to use. Form proto://[user@]host[:port]') - parser.add_argument('-e', '--exclude', nargs=1, help='exclude a list of commit numbers separated by a ,') - parser.add_argument('-c', '--check-picked', type=int, default=10, help='pass the amount of commits to check for already picked changes') - args = parser.parse_args() - if not args.start_branch and args.abandon_first: - parser.error('if --abandon-first is set, you must also give the branch name with --start-branch') - if args.auto_branch: - args.abandon_first = True - args.ignore_missing = True - if not args.start_branch: - args.start_branch = ['auto'] - if args.quiet and args.verbose: - parser.error('--quiet and --verbose cannot be specified together') - - if (1 << bool(args.change_number) << bool(args.topic) << bool(args.query)) != 2: - parser.error('One (and only one) of change_number, topic, and query are allowed') - - # Change current directory to the top of the tree - if 'ANDROID_BUILD_TOP' in os.environ: - top = os.environ['ANDROID_BUILD_TOP'] - - if not is_subdir(os.getcwd(), top): - sys.stderr.write('ERROR: You must run this tool from within $ANDROID_BUILD_TOP!\n') - sys.exit(1) - os.chdir(os.environ['ANDROID_BUILD_TOP']) - - # Sanity check that we are being run from the top level of the tree - if not os.path.isdir('.repo'): - sys.stderr.write('ERROR: No .repo directory found. Please run this from the top of your tree.\n') - sys.exit(1) - - # If --abandon-first is given, abandon the branch before starting - if args.abandon_first: - # Determine if the branch already exists; skip the abandon if it does not - plist = subprocess.check_output(['repo', 'info']) - if not hasattr(plist, 'encode'): - plist = plist.decode() - needs_abandon = False - for pline in plist.splitlines(): - matchObj = re.match(r'Local Branches.*\[(.*)\]', pline) - if matchObj: - local_branches = re.split('\s*,\s*', matchObj.group(1)) - if any(args.start_branch[0] in s for s in local_branches): - needs_abandon = True - - if needs_abandon: - # Perform the abandon only if the branch already exists - if not args.quiet: - print('Abandoning branch: %s' % args.start_branch[0]) - subprocess.check_output(['repo', 'abandon', args.start_branch[0]]) - if not args.quiet: - print('') - - # Get the master manifest from repo - # - convert project name and revision to a path - project_name_to_data = {} - manifest = subprocess.check_output(['repo', 'manifest']) - xml_root = ElementTree.fromstring(manifest) - projects = xml_root.findall('project') - remotes = xml_root.findall('remote') - default_revision = xml_root.findall('default')[0].get('revision') - - #dump project data into the a list of dicts with the following data: - #{project: {path, revision}} - - for project in projects: - name = project.get('name') - # when name and path are equal, "repo manifest" doesn't return a path at all, so fall back to name - path = project.get('path', name) - revision = project.get('upstream') - if revision is None: - for remote in remotes: - if remote.get('name') == project.get('remote'): - revision = remote.get('revision') - if revision is None: - revision = default_revision - - if not name in project_name_to_data: - project_name_to_data[name] = {} - revision = revision.split('refs/heads/')[-1] - project_name_to_data[name][revision] = path - - # get data on requested changes - reviews = [] - change_numbers = [] - - def cmp_reviews(review_a, review_b): - current_a = review_a['current_revision'] - parents_a = [r['commit'] for r in review_a['revisions'][current_a]['commit']['parents']] - current_b = review_b['current_revision'] - parents_b = [r['commit'] for r in review_b['revisions'][current_b]['commit']['parents']] - if current_a in parents_b: - return -1 - elif current_b in parents_a: - return 1 - else: - return cmp(review_a['number'], review_b['number']) - - if args.topic: - reviews = fetch_query(args.gerrit, 'topic:{0}'.format(args.topic)) - change_numbers = [str(r['number']) for r in sorted(reviews, key=cmp_to_key(cmp_reviews))] - if args.query: - reviews = fetch_query(args.gerrit, args.query) - change_numbers = [str(r['number']) for r in sorted(reviews, key=cmp_to_key(cmp_reviews))] - if args.change_number: - change_url_re = re.compile('https?://.+?/([0-9]+(?:/[0-9]+)?)/?') - for c in args.change_number: - change_number = change_url_re.findall(c) - if change_number: - change_numbers.extend(change_number) - elif '-' in c: - templist = c.split('-') - for i in range(int(templist[0]), int(templist[1]) + 1): - change_numbers.append(str(i)) - else: - change_numbers.append(c) - reviews = fetch_query(args.gerrit, ' OR '.join('change:{0}'.format(x.split('/')[0]) for x in change_numbers)) - - # make list of things to actually merge - mergables = [] - - # If --exclude is given, create the list of commits to ignore - exclude = [] - if args.exclude: - exclude = args.exclude[0].split(',') - - for change in change_numbers: - patchset = None - if '/' in change: - (change, patchset) = change.split('/') - - if change in exclude: - continue - - change = int(change) - - if patchset: - patchset = int(patchset) - - review = next((x for x in reviews if x['number'] == change), None) - if review is None: - print('Change %d not found, skipping' % change) - continue - - mergables.append({ - 'subject': review['subject'], - 'project': review['project'], - 'branch': review['branch'], - 'change_id': review['change_id'], - 'change_number': review['number'], - 'status': review['status'], - 'fetch': None, - 'patchset': review['revisions'][review['current_revision']]['_number'], - }) - - mergables[-1]['fetch'] = review['revisions'][review['current_revision']]['fetch'] - mergables[-1]['id'] = change - if patchset: - try: - mergables[-1]['fetch'] = [review['revisions'][x]['fetch'] for x in review['revisions'] if review['revisions'][x]['_number'] == patchset][0] - mergables[-1]['id'] = '{0}/{1}'.format(change, patchset) - mergables[-1]['patchset'] = patchset - except (IndexError, ValueError): - args.quiet or print('ERROR: The patch set {0}/{1} could not be found, using CURRENT_REVISION instead.'.format(change, patchset)) - - for item in mergables: - args.quiet or print('Applying change number {0}...'.format(item['id'])) - # Check if change is open and exit if it's not, unless -f is specified - if (item['status'] != 'OPEN' and item['status'] != 'NEW' and item['status'] != 'DRAFT') and not args.query: - if args.force: - print('!! Force-picking a closed change !!\n') - else: - print('Change status is ' + item['status'] + '. Skipping the cherry pick.\nUse -f to force this pick.') - continue - - # Convert the project name to a project path - # - check that the project path exists - project_path = None - - if item['project'] in project_name_to_data and item['branch'] in project_name_to_data[item['project']]: - project_path = project_name_to_data[item['project']][item['branch']] - elif args.path: - project_path = args.path - elif args.ignore_missing: - print('WARNING: Skipping {0} since there is no project directory for: {1}\n'.format(item['id'], item['project'])) - continue - else: - sys.stderr.write('ERROR: For {0}, could not determine the project path for project {1}\n'.format(item['id'], item['project'])) - sys.exit(1) - - # If --start-branch is given, create the branch (more than once per path is okay; repo ignores gracefully) - if args.start_branch: - subprocess.check_output(['repo', 'start', args.start_branch[0], project_path]) - - # Determine the maximum commits to check already picked changes - check_picked_count = args.check_picked - branch_commits_count = int(subprocess.check_output(['git', 'rev-list', '--count', 'HEAD'], cwd=project_path)) - if branch_commits_count <= check_picked_count: - check_picked_count = branch_commits_count - 1 - - # Check if change is already picked to HEAD...HEAD~check_picked_count - found_change = False - for i in range(0, check_picked_count): - if subprocess.call(['git', 'cat-file', '-e', 'HEAD~{0}'.format(i)], cwd=project_path, stderr=open(os.devnull, 'wb')): - continue - output = subprocess.check_output(['git', 'show', '-q', 'HEAD~{0}'.format(i)], cwd=project_path).split() - if 'Change-Id:' in output: - head_change_id = '' - for j,t in enumerate(reversed(output)): - if t == 'Change-Id:': - head_change_id = output[len(output) - j] - break - if head_change_id.strip() == item['change_id']: - print('Skipping {0} - already picked in {1} as HEAD~{2}'.format(item['id'], project_path, i)) - found_change = True - break - if found_change: - continue - - # Print out some useful info - if not args.quiet: - print('--> Subject: "{0}"'.format(item['subject'].encode('utf-8'))) - print('--> Project path: {0}'.format(project_path)) - print('--> Change number: {0} (Patch Set {1})'.format(item['id'], item['patchset'])) - - if 'anonymous http' in item['fetch']: - method = 'anonymous http' - else: - method = 'ssh' - - # Try fetching from GitHub first if using default gerrit - if args.gerrit == default_gerrit: - if args.verbose: - print('Trying to fetch the change from GitHub') - - if args.pull: - cmd = ['git pull --no-edit github', item['fetch'][method]['ref']] - else: - cmd = ['git fetch github', item['fetch'][method]['ref']] - if args.quiet: - cmd.append('--quiet') - else: - print(cmd) - result = subprocess.call([' '.join(cmd)], cwd=project_path, shell=True) - FETCH_HEAD = '{0}/.git/FETCH_HEAD'.format(project_path) - if result != 0 and os.stat(FETCH_HEAD).st_size != 0: - print('ERROR: git command failed') - sys.exit(result) - # Check if it worked - if args.gerrit != default_gerrit or os.stat(FETCH_HEAD).st_size == 0: - # If not using the default gerrit or github failed, fetch from gerrit. - if args.verbose: - if args.gerrit == default_gerrit: - print('Fetching from GitHub didn\'t work, trying to fetch the change from Gerrit') - else: - print('Fetching from {0}'.format(args.gerrit)) - - if args.pull: - cmd = ['git pull --no-edit', item['fetch'][method]['url'], item['fetch'][method]['ref']] - else: - cmd = ['git fetch', item['fetch'][method]['url'], item['fetch'][method]['ref']] - if args.quiet: - cmd.append('--quiet') - else: - print(cmd) - result = subprocess.call([' '.join(cmd)], cwd=project_path, shell=True) - if result != 0: - print('ERROR: git command failed') - sys.exit(result) - # Perform the cherry-pick - if not args.pull: - cmd = ['git cherry-pick --ff FETCH_HEAD'] - if args.quiet: - cmd_out = open(os.devnull, 'wb') - else: - cmd_out = None - result = subprocess.call(cmd, cwd=project_path, shell=True, stdout=cmd_out, stderr=cmd_out) - if result != 0: - cmd = ['git diff-index --quiet HEAD --'] - result = subprocess.call(cmd, cwd=project_path, shell=True, stdout=cmd_out, stderr=cmd_out) - if result == 0: - print('WARNING: git command resulted with an empty commit, aborting cherry-pick') - cmd = ['git cherry-pick --abort'] - subprocess.call(cmd, cwd=project_path, shell=True, stdout=cmd_out, stderr=cmd_out) - elif args.reset: - print('ERROR: git command failed, aborting cherry-pick') - cmd = ['git cherry-pick --abort'] - subprocess.call(cmd, cwd=project_path, shell=True, stdout=cmd_out, stderr=cmd_out) - sys.exit(result) - else: - print('ERROR: git command failed') - sys.exit(result) - if not args.quiet: - print('') diff --git a/build/tools/roomservice.py b/build/tools/roomservice.py deleted file mode 100755 index bf502a53..00000000 --- a/build/tools/roomservice.py +++ /dev/null @@ -1,315 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012-2013, The CyanogenMod Project -# (C) 2017, The LineageOS Project -# -# 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. - -from __future__ import print_function - -import base64 -import json -import netrc -import os -import re -import sys -try: - # For python3 - import urllib.error - import urllib.parse - import urllib.request -except ImportError: - # For python2 - import imp - import urllib2 - import urlparse - urllib = imp.new_module('urllib') - urllib.error = urllib2 - urllib.parse = urlparse - urllib.request = urllib2 - -from xml.etree import ElementTree - -product = sys.argv[1] - -if len(sys.argv) > 2: - depsonly = sys.argv[2] -else: - depsonly = None - -try: - device = product[product.index("_") + 1:] -except: - device = product - -if not depsonly: - print("Device %s not found. Attempting to retrieve device repository from LineageOS Github (http://github.com/LineageOS)." % device) - -repositories = [] - -try: - authtuple = netrc.netrc().authenticators("api.github.com") - - if authtuple: - auth_string = ('%s:%s' % (authtuple[0], authtuple[2])).encode() - githubauth = base64.encodestring(auth_string).decode().replace('\n', '') - else: - githubauth = None -except: - githubauth = None - -def add_auth(githubreq): - if githubauth: - githubreq.add_header("Authorization","Basic %s" % githubauth) - -if not depsonly: - githubreq = urllib.request.Request("https://api.github.com/search/repositories?q=%s+user:LineageOS+in:name+fork:true" % device) - add_auth(githubreq) - try: - result = json.loads(urllib.request.urlopen(githubreq).read().decode()) - except urllib.error.URLError: - print("Failed to search GitHub") - sys.exit() - except ValueError: - print("Failed to parse return data from GitHub") - sys.exit() - for res in result.get('items', []): - repositories.append(res) - -local_manifests = r'.repo/local_manifests' -if not os.path.exists(local_manifests): os.makedirs(local_manifests) - -def exists_in_tree(lm, path): - for child in lm.getchildren(): - if child.attrib['path'] == path: - return True - return False - -# in-place prettyprint formatter -def indent(elem, level=0): - i = "\n" + level*" " - if len(elem): - if not elem.text or not elem.text.strip(): - elem.text = i + " " - if not elem.tail or not elem.tail.strip(): - elem.tail = i - for elem in elem: - indent(elem, level+1) - if not elem.tail or not elem.tail.strip(): - elem.tail = i - else: - if level and (not elem.tail or not elem.tail.strip()): - elem.tail = i - -def get_manifest_path(): - '''Find the current manifest path - In old versions of repo this is at .repo/manifest.xml - In new versions, .repo/manifest.xml includes an include - to some arbitrary file in .repo/manifests''' - - m = ElementTree.parse(".repo/manifest.xml") - try: - m.findall('default')[0] - return '.repo/manifest.xml' - except IndexError: - return ".repo/manifests/{}".format(m.find("include").get("name")) - -def get_default_revision(): - m = ElementTree.parse(get_manifest_path()) - d = m.findall('default')[0] - r = d.get('revision') - return r.replace('refs/heads/', '').replace('refs/tags/', '') - -def get_from_manifest(devicename): - try: - lm = ElementTree.parse(".repo/local_manifests/roomservice.xml") - lm = lm.getroot() - except: - lm = ElementTree.Element("manifest") - - for localpath in lm.findall("project"): - if re.search("android_device_.*_%s$" % device, localpath.get("name")): - return localpath.get("path") - - return None - -def is_in_manifest(projectpath): - try: - lm = ElementTree.parse(".repo/local_manifests/roomservice.xml") - lm = lm.getroot() - except: - lm = ElementTree.Element("manifest") - - for localpath in lm.findall("project"): - if localpath.get("path") == projectpath: - return True - - # Search in main manifest, too - try: - lm = ElementTree.parse(get_manifest_path()) - lm = lm.getroot() - except: - lm = ElementTree.Element("manifest") - - for localpath in lm.findall("project"): - if localpath.get("path") == projectpath: - return True - - # ... and don't forget the lineage snippet - try: - lm = ElementTree.parse(".repo/manifests/snippets/lineage.xml") - lm = lm.getroot() - except: - lm = ElementTree.Element("manifest") - - for localpath in lm.findall("project"): - if localpath.get("path") == projectpath: - return True - - return False - -def add_to_manifest(repositories, fallback_branch = None): - try: - lm = ElementTree.parse(".repo/local_manifests/roomservice.xml") - lm = lm.getroot() - except: - lm = ElementTree.Element("manifest") - - for repository in repositories: - repo_name = repository['repository'] - repo_target = repository['target_path'] - print('Checking if %s is fetched from %s' % (repo_target, repo_name)) - if is_in_manifest(repo_target): - print('LineageOS/%s already fetched to %s' % (repo_name, repo_target)) - continue - - print('Adding dependency: LineageOS/%s -> %s' % (repo_name, repo_target)) - project = ElementTree.Element("project", attrib = { "path": repo_target, - "remote": "github", "name": "LineageOS/%s" % repo_name }) - - if 'branch' in repository: - project.set('revision',repository['branch']) - elif fallback_branch: - print("Using fallback branch %s for %s" % (fallback_branch, repo_name)) - project.set('revision', fallback_branch) - else: - print("Using default branch for %s" % repo_name) - - lm.append(project) - - indent(lm, 0) - raw_xml = ElementTree.tostring(lm).decode() - raw_xml = '<?xml version="1.0" encoding="UTF-8"?>\n' + raw_xml - - f = open('.repo/local_manifests/roomservice.xml', 'w') - f.write(raw_xml) - f.close() - -def fetch_dependencies(repo_path, fallback_branch = None): - print('Looking for dependencies in %s' % repo_path) - dependencies_path = repo_path + '/lineage.dependencies' - syncable_repos = [] - verify_repos = [] - - if os.path.exists(dependencies_path): - dependencies_file = open(dependencies_path, 'r') - dependencies = json.loads(dependencies_file.read()) - fetch_list = [] - - for dependency in dependencies: - if not is_in_manifest(dependency['target_path']): - fetch_list.append(dependency) - syncable_repos.append(dependency['target_path']) - verify_repos.append(dependency['target_path']) - else: - verify_repos.append(dependency['target_path']) - - dependencies_file.close() - - if len(fetch_list) > 0: - print('Adding dependencies to manifest') - add_to_manifest(fetch_list, fallback_branch) - else: - print('%s has no additional dependencies.' % repo_path) - - if len(syncable_repos) > 0: - print('Syncing dependencies') - os.system('repo sync --force-sync %s' % ' '.join(syncable_repos)) - - for deprepo in verify_repos: - fetch_dependencies(deprepo) - -def has_branch(branches, revision): - return revision in [branch['name'] for branch in branches] - -if depsonly: - repo_path = get_from_manifest(device) - if repo_path: - fetch_dependencies(repo_path) - else: - print("Trying dependencies-only mode on a non-existing device tree?") - - sys.exit() - -else: - for repository in repositories: - repo_name = repository['name'] - if re.match(r"^android_device_[^_]*_" + device + "$", repo_name): - print("Found repository: %s" % repository['name']) - - manufacturer = repo_name.replace("android_device_", "").replace("_" + device, "") - - default_revision = get_default_revision() - print("Default revision: %s" % default_revision) - print("Checking branch info") - githubreq = urllib.request.Request(repository['branches_url'].replace('{/branch}', '')) - add_auth(githubreq) - result = json.loads(urllib.request.urlopen(githubreq).read().decode()) - - ## Try tags, too, since that's what releases use - if not has_branch(result, default_revision): - githubreq = urllib.request.Request(repository['tags_url'].replace('{/tag}', '')) - add_auth(githubreq) - result.extend (json.loads(urllib.request.urlopen(githubreq).read().decode())) - - repo_path = "device/%s/%s" % (manufacturer, device) - adding = {'repository':repo_name,'target_path':repo_path} - - fallback_branch = None - if not has_branch(result, default_revision): - if os.getenv('ROOMSERVICE_BRANCHES'): - fallbacks = list(filter(bool, os.getenv('ROOMSERVICE_BRANCHES').split(' '))) - for fallback in fallbacks: - if has_branch(result, fallback): - print("Using fallback branch: %s" % fallback) - fallback_branch = fallback - break - - if not fallback_branch: - print("Default revision %s not found in %s. Bailing." % (default_revision, repo_name)) - print("Branches found:") - for branch in [branch['name'] for branch in result]: - print(branch) - print("Use the ROOMSERVICE_BRANCHES environment variable to specify a list of fallback branches.") - sys.exit() - - add_to_manifest([adding], fallback_branch) - - print("Syncing repository to retrieve project.") - os.system('repo sync --force-sync %s' % repo_path) - print("Repository synced!") - - fetch_dependencies(repo_path, fallback_branch) - print("Done") - sys.exit() - -print("Repository for %s not found in the LineageOS Github repository list. If this is in error, you may need to manually add it to your local_manifests/roomservice.xml." % device) diff --git a/build/tools/sdat2img.py b/build/tools/sdat2img.py deleted file mode 100755 index 3efb2f78..00000000 --- a/build/tools/sdat2img.py +++ /dev/null @@ -1,142 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -#==================================================== -# FILE: sdat2img.py -# AUTHORS: xpirt - luxi78 - howellzhu -# DATE: 2016-11-23 16:20:11 CST -#==================================================== - -import sys, os, errno - -__version__ = '1.0' - -if sys.hexversion < 0x02070000: - print >> sys.stderr, "Python 2.7 or newer is required." - try: - input = raw_input - except NameError: pass - input('Press ENTER to exit...') - sys.exit(1) -else: - print('sdat2img binary - version: %s\n' % __version__) - -try: - TRANSFER_LIST_FILE = str(sys.argv[1]) - NEW_DATA_FILE = str(sys.argv[2]) -except IndexError: - print('\nUsage: sdat2img.py <transfer_list> <system_new_file> [system_img]\n') - print(' <transfer_list>: transfer list file') - print(' <system_new_file>: system new dat file') - print(' [system_img]: output system image\n\n') - print('Visit xda thread for more information.\n') - try: - input = raw_input - except NameError: pass - input('Press ENTER to exit...') - sys.exit() - -try: - OUTPUT_IMAGE_FILE = str(sys.argv[3]) -except IndexError: - OUTPUT_IMAGE_FILE = 'system.img' - -BLOCK_SIZE = 4096 - -def rangeset(src): - src_set = src.split(',') - num_set = [int(item) for item in src_set] - if len(num_set) != num_set[0]+1: - print('Error on parsing following data to rangeset:\n%s' % src) - sys.exit(1) - - return tuple ([ (num_set[i], num_set[i+1]) for i in range(1, len(num_set), 2) ]) - -def parse_transfer_list_file(path): - trans_list = open(TRANSFER_LIST_FILE, 'r') - - # First line in transfer list is the version number - version = int(trans_list.readline()) - - # Second line in transfer list is the total number of blocks we expect to write - new_blocks = int(trans_list.readline()) - - if version >= 2: - # Third line is how many stash entries are needed simultaneously - trans_list.readline() - # Fourth line is the maximum number of blocks that will be stashed simultaneously - trans_list.readline() - - # Subsequent lines are all individual transfer commands - commands = [] - for line in trans_list: - line = line.split(' ') - cmd = line[0] - if cmd in ['erase', 'new', 'zero']: - commands.append([cmd, rangeset(line[1])]) - else: - # Skip lines starting with numbers, they are not commands anyway - if not cmd[0].isdigit(): - print('Command "%s" is not valid.' % cmd) - trans_list.close() - sys.exit(1) - - trans_list.close() - return version, new_blocks, commands - -def main(argv): - version, new_blocks, commands = parse_transfer_list_file(TRANSFER_LIST_FILE) - - if version == 1: - print('Android Lollipop 5.0 detected!\n') - elif version == 2: - print('Android Lollipop 5.1 detected!\n') - elif version == 3: - print('Android Marshmallow 6.0 detected!\n') - elif version == 4: - print('Android Nougat 7.0 detected!\n') - else: - print('Unknown Android version!\n') - - # Don't clobber existing files to avoid accidental data loss - try: - output_img = open(OUTPUT_IMAGE_FILE, 'wb') - except IOError as e: - if e.errno == errno.EEXIST: - print('Error: the output file "{}" already exists'.format(e.filename)) - print('Remove it, rename it, or choose a different file name.') - sys.exit(e.errno) - else: - raise - - new_data_file = open(NEW_DATA_FILE, 'rb') - all_block_sets = [i for command in commands for i in command[1]] - max_file_size = max(pair[1] for pair in all_block_sets)*BLOCK_SIZE - - for command in commands: - if command[0] == 'new': - for block in command[1]: - begin = block[0] - end = block[1] - block_count = end - begin - print('Copying {} blocks into position {}...'.format(block_count, begin)) - - # Position output file - output_img.seek(begin*BLOCK_SIZE) - - # Copy one block at a time - while(block_count > 0): - output_img.write(new_data_file.read(BLOCK_SIZE)) - block_count -= 1 - else: - print('Skipping command %s...' % command[0]) - - # Make file larger if necessary - if(output_img.tell() < max_file_size): - output_img.truncate(max_file_size) - - output_img.close() - new_data_file.close() - print('Done! Output image: %s' % os.path.realpath(output_img.name)) - -if __name__ == '__main__': - main(sys.argv) diff --git a/build/tools/smali/NOTICE b/build/tools/smali/NOTICE deleted file mode 100644 index 76ad9aa7..00000000 --- a/build/tools/smali/NOTICE +++ /dev/null @@ -1,105 +0,0 @@ -The majority of smali/baksmali is written and copyrighted by me (Ben Gruver) -and released under the following license: - -******************************************************************************* -Copyright (c) 2010 Ben Gruver (JesusFreke) -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. The name of the author may not be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -******************************************************************************* - - -Unless otherwise stated in the code/commit message, any changes with the -committer of bgruv@google.com or wkal@google.com is copyrighted by -Google Inc. and released under the following license: - -******************************************************************************* -Copyright 2011, Google Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -******************************************************************************* - - -Various portions of the code are taken from the Android Open Source Project, -and are used in accordance with the following license: - -******************************************************************************* -Copyright (C) 2007 The Android Open Source Project - -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. -******************************************************************************* - - -Some parts of the smalidea plugin are based on code from the IDEA project, per the -following license - -******************************************************************************* -Copyright 2000-2014 JetBrains s.r.o. - -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. -******************************************************************************* diff --git a/build/tools/smali/baksmali.jar b/build/tools/smali/baksmali.jar Binary files differdeleted file mode 100644 index e800842d..00000000 --- a/build/tools/smali/baksmali.jar +++ /dev/null diff --git a/build/tools/smali/smali.jar b/build/tools/smali/smali.jar Binary files differdeleted file mode 100644 index 88e00256..00000000 --- a/build/tools/smali/smali.jar +++ /dev/null diff --git a/charger/Android.mk b/charger/Android.mk deleted file mode 100644 index 5d42e6a0..00000000 --- a/charger/Android.mk +++ /dev/null @@ -1,71 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -# Set healthd_density to the density bucket of the device. -healthd_density := unknown -ifneq (,$(TARGET_RECOVERY_DENSITY)) -healthd_density := $(filter %dpi,$(TARGET_RECOVERY_DENSITY)) -else -ifneq (,$(PRODUCT_AAPT_PREF_CONFIG)) -# If PRODUCT_AAPT_PREF_CONFIG includes a dpi bucket, then use that value. -healthd_density := $(filter %dpi,$(PRODUCT_AAPT_PREF_CONFIG)) -else -# Otherwise, use the default medium density. -healthd_density := mdpi -endif -endif - -include $(CLEAR_VARS) -LOCAL_SRC_FILES := healthd_board_lineage.cpp -LOCAL_MODULE := libhealthd.lineage -LOCAL_CFLAGS := -Werror -LOCAL_C_INCLUDES := \ - system/core/healthd/include \ - system/core/base/include \ - bootable/recovery/minui/include -ifneq ($(BACKLIGHT_PATH),) - LOCAL_CFLAGS += -DHEALTHD_BACKLIGHT_PATH=\"$(BACKLIGHT_PATH)\" -endif -ifneq ($(SECONDARY_BACKLIGHT_PATH),) - LOCAL_CFLAGS += -DHEALTHD_SECONDARY_BACKLIGHT_PATH=\"$(SECONDARY_BACKLIGHT_PATH)\" -endif -ifneq ($(HEALTHD_BACKLIGHT_LEVEL),) - LOCAL_CFLAGS += -DHEALTHD_BACKLIGHT_LEVEL=$(HEALTHD_BACKLIGHT_LEVEL) -endif -include $(BUILD_STATIC_LIBRARY) - -include $(CLEAR_VARS) -LOCAL_MODULE := font_log.png -LOCAL_SRC_FILES := fonts/$(healthd_density)/font_log.png -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT)/res/images -include $(BUILD_PREBUILT) - -include $(CLEAR_VARS) - -define _add-charger-image -include $$(CLEAR_VARS) -LOCAL_MODULE := vendor_lineage_charger_$(notdir $(1)) -LOCAL_MODULE_STEM := $(notdir $(1)) -_img_modules += $$(LOCAL_MODULE) -LOCAL_SRC_FILES := $1 -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_CLASS := ETC -LOCAL_MODULE_PATH := $$(TARGET_ROOT_OUT)/res/images/charger -include $$(BUILD_PREBUILT) -endef - -_img_modules := -_images := -$(foreach _img, $(call find-subdir-subdir-files, "images/$(healthd_density)", "*.png"), \ - $(eval $(call _add-charger-image,$(_img)))) - -include $(CLEAR_VARS) -LOCAL_MODULE := lineage_charger_res_images -LOCAL_MODULE_TAGS := optional -LOCAL_REQUIRED_MODULES := $(_img_modules) -LOCAL_OVERRIDES_PACKAGES := charger_res_images -include $(BUILD_PHONY_PACKAGE) - -_add-charger-image := -_img_modules := diff --git a/charger/fonts/560dpi b/charger/fonts/560dpi deleted file mode 120000 index 17ef829d..00000000 --- a/charger/fonts/560dpi +++ /dev/null @@ -1 +0,0 @@ -xxhdpi
\ No newline at end of file diff --git a/charger/fonts/640dpi b/charger/fonts/640dpi deleted file mode 120000 index af2d1fe7..00000000 --- a/charger/fonts/640dpi +++ /dev/null @@ -1 +0,0 @@ -xxxhdpi
\ No newline at end of file diff --git a/charger/fonts/hdpi/font_log.png b/charger/fonts/hdpi/font_log.png Binary files differdeleted file mode 100644 index ddf9bc7a..00000000 --- a/charger/fonts/hdpi/font_log.png +++ /dev/null diff --git a/charger/fonts/ldpi/font_log.png b/charger/fonts/ldpi/font_log.png Binary files differdeleted file mode 100644 index 72fa8cb5..00000000 --- a/charger/fonts/ldpi/font_log.png +++ /dev/null diff --git a/charger/fonts/mdpi/font_log.png b/charger/fonts/mdpi/font_log.png Binary files differdeleted file mode 100644 index d727fa1f..00000000 --- a/charger/fonts/mdpi/font_log.png +++ /dev/null diff --git a/charger/fonts/xhdpi/font_log.png b/charger/fonts/xhdpi/font_log.png Binary files differdeleted file mode 100644 index 9c16b772..00000000 --- a/charger/fonts/xhdpi/font_log.png +++ /dev/null diff --git a/charger/fonts/xxhdpi/font_log.png b/charger/fonts/xxhdpi/font_log.png Binary files differdeleted file mode 100644 index 5d122b72..00000000 --- a/charger/fonts/xxhdpi/font_log.png +++ /dev/null diff --git a/charger/fonts/xxxhdpi/font_log.png b/charger/fonts/xxxhdpi/font_log.png Binary files differdeleted file mode 100644 index 60dacec1..00000000 --- a/charger/fonts/xxxhdpi/font_log.png +++ /dev/null diff --git a/charger/healthd_board_lineage.cpp b/charger/healthd_board_lineage.cpp deleted file mode 100644 index dcfbc4a6..00000000 --- a/charger/healthd_board_lineage.cpp +++ /dev/null @@ -1,418 +0,0 @@ -/* - * Copyright (C) 2016 The CyanogenMod Project - * 2017 The LineageOS Project - * - * 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. - */ - -#include <errno.h> -#include <fcntl.h> -#include <stdbool.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> -#include <sys/types.h> -#include <time.h> -#include <unistd.h> - -#include <cutils/android_reboot.h> -#include <cutils/klog.h> -#include <cutils/misc.h> -#include <cutils/uevent.h> -#include <cutils/properties.h> - -#include <pthread.h> -#include <linux/rtc.h> -#include <linux/time.h> -#include <sys/epoll.h> -#include <sys/timerfd.h> - -#include "healthd/healthd.h" -#include "minui/minui.h" - -#define LOGE(x...) do { KLOG_ERROR("charger", x); } while (0) -#define LOGW(x...) do { KLOG_WARNING("charger", x); } while (0) -#define LOGI(x...) do { KLOG_INFO("charger", x); } while (0) -#define LOGV(x...) do { KLOG_DEBUG("charger", x); } while (0) - -static const GRFont* gr_font = NULL; - -struct frame { - int min_capacity; - GRSurface *surface; -}; - -struct animation { - struct frame *frames; - int cur_frame; - int num_frames; -}; - -static struct animation anim = { - .frames = NULL, - .cur_frame = 0, - .num_frames = 0, -}; - -static const GRFont* get_font() -{ - return gr_font; -} - -static int draw_surface_centered(GRSurface* surface) -{ - int w, h, x, y; - - w = gr_get_width(surface); - h = gr_get_height(surface); - x = (gr_fb_width() - w) / 2 ; - y = (gr_fb_height() - h) / 2 ; - - gr_blit(surface, 0, 0, w, h, x, y); - return y + h; -} - -#define STR_LEN 64 -static void draw_capacity(int capacity) -{ - char cap_str[STR_LEN]; - snprintf(cap_str, (STR_LEN - 1), "%d%%", capacity); - - struct frame *f = &anim.frames[0]; - int font_x, font_y; - gr_font_size(get_font(), &font_x, &font_y); - int w = gr_measure(get_font(), cap_str); - int h = gr_get_height(f->surface); - int x = (gr_fb_width() - w) / 2; - int y = (gr_fb_height() + h) / 2; - - gr_color(255, 255, 255, 255); - gr_text(get_font(), x, y + font_y / 2, cap_str, 0); -} - -#ifdef QCOM_HARDWARE -enum alarm_time_type { - ALARM_TIME, - RTC_TIME, -}; - -static int alarm_get_time(enum alarm_time_type time_type, - time_t *secs) -{ - struct tm tm; - unsigned int cmd; - int rc, fd = -1; - - if (!secs) - return -1; - - fd = open("/dev/rtc0", O_RDONLY); - if (fd < 0) { - LOGE("Can't open rtc devfs node\n"); - return -1; - } - - switch (time_type) { - case ALARM_TIME: - cmd = RTC_ALM_READ; - break; - case RTC_TIME: - cmd = RTC_RD_TIME; - break; - default: - LOGE("Invalid time type\n"); - goto err; - } - - rc = ioctl(fd, cmd, &tm); - if (rc < 0) { - LOGE("Unable to get time\n"); - goto err; - } - - *secs = mktime(&tm) + tm.tm_gmtoff; - if (*secs < 0) { - LOGE("Invalid seconds = %ld\n", *secs); - goto err; - } - - close(fd); - return 0; - -err: - close(fd); - return -1; -} - -static void alarm_reboot(void) -{ - LOGI("alarm time is up, reboot the phone!\n"); - syscall(__NR_reboot, LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, - LINUX_REBOOT_CMD_RESTART2, "rtc"); -} - -static int alarm_set_reboot_time_and_wait(time_t secs) -{ - int rc, epollfd, nevents; - int fd = 0; - struct timespec ts; - epoll_event event, events[1]; - struct itimerspec itval; - - epollfd = epoll_create(1); - if (epollfd < 0) { - LOGE("epoll_create failed\n"); - goto err; - } - - fd = timerfd_create(CLOCK_REALTIME_ALARM, 0); - if (fd < 0) { - LOGE("timerfd_create failed\n"); - goto err; - } - - event.events = EPOLLIN | EPOLLWAKEUP; - event.data.ptr = (void *)alarm_reboot; - rc = epoll_ctl(epollfd, EPOLL_CTL_ADD, fd, &event); - if (rc < 0) { - LOGE("epoll_ctl(EPOLL_CTL_ADD) failed \n"); - goto err; - } - - itval.it_value.tv_sec = secs; - itval.it_value.tv_nsec = 0; - - itval.it_interval.tv_sec = 0; - itval.it_interval.tv_nsec = 0; - - rc = timerfd_settime(fd, TFD_TIMER_ABSTIME, &itval, NULL); - if (rc < 0) { - LOGE("timerfd_settime failed %d\n",rc); - goto err; - } - - nevents = epoll_wait(epollfd, events, 1, -1); - - if (nevents <= 0) { - LOGE("Unable to wait on alarm\n"); - goto err; - } else { - (*(void (*)())events[0].data.ptr)(); - } - - close(epollfd); - close(fd); - return 0; - -err: - if (epollfd > 0) - close(epollfd); - - if (fd >= 0) - close(fd); - return -1; -} - -/* - * 10s the estimated time from timestamp of alarm thread start - * to timestamp of android boot completed. - */ -#define TIME_DELTA 10 - -/* seconds of 1 minute*/ -#define ONE_MINUTE 60 -static void *alarm_thread(void *) -{ - time_t rtc_secs, alarm_secs; - int rc; - timespec ts; - - /* - * to support power off alarm, the time - * stored in alarm register at latest - * shutdown time should be some time - * earlier than the actual alarm time - * set by user - */ - rc = alarm_get_time(ALARM_TIME, &alarm_secs); - if (rc < 0 || !alarm_secs) - goto err; - - rc = alarm_get_time(RTC_TIME, &rtc_secs); - if (rc < 0 || !rtc_secs) - goto err; - LOGI("alarm time in rtc is %ld, rtc time is %ld\n", alarm_secs, rtc_secs); - - if (alarm_secs <= rtc_secs) { - clock_gettime(CLOCK_BOOTTIME, &ts); - - /* - * It is possible that last power off alarm time is up at this point. - * (alarm_secs + ONE_MINUTE) is the final alarm time to fire. - * (rtc_secs + ts.tv_sec + TIME_DELTA) is the estimated time of next - * boot completed to fire alarm. - * If the final alarm time is less than the estimated time of next boot - * completed to fire, that means it is not able to fire the last power - * off alarm at the right time, so just miss it. - */ - if (alarm_secs + ONE_MINUTE < rtc_secs + ts.tv_sec + TIME_DELTA) { - LOGE("alarm is missed\n"); - goto err; - } - - alarm_reboot(); - } - - rc = alarm_set_reboot_time_and_wait(alarm_secs); - if (rc < 0) - goto err; - -err: - LOGE("Exit from alarm thread\n"); - return NULL; -} -#endif - -void healthd_board_init(struct healthd_config*) -{ - pthread_t tid; - char value[PROP_VALUE_MAX]; - int rc = 0, scale_count = 0, i; - GRSurface **scale_frames; - int scale_fps; // Not in use (charger/lineage_battery_scale doesn't have FPS text - // chunk). We are using hard-coded frame.disp_time instead. - - rc = res_create_multi_display_surface("charger/lineage_battery_scale", - &scale_count, &scale_fps, &scale_frames); - if (rc < 0) { - LOGE("%s: Unable to load battery scale image", __func__); - return; - } - - anim.frames = new frame[scale_count]; - anim.num_frames = scale_count; - for (i = 0; i < anim.num_frames; i++) { - anim.frames[i].surface = scale_frames[i]; - anim.frames[i].min_capacity = 100/(scale_count-1) * i; - } - -#ifdef QCOM_HARDWARE - property_get("ro.bootmode", value, ""); - if (!strcmp("charger", value)) { - rc = pthread_create(&tid, NULL, alarm_thread, NULL); - if (rc < 0) - LOGE("Create alarm thread failed\n"); - } -#endif -} - -int healthd_board_battery_update(struct android::BatteryProperties*) -{ - // return 0 to log periodic polled battery status to kernel log - return 1; -} - -void healthd_board_mode_charger_draw_battery( - struct android::BatteryProperties *batt_prop) -{ - int start_frame = 0; - int capacity = -1; - - if (batt_prop && batt_prop->batteryLevel >= 0) { - capacity = batt_prop->batteryLevel; - } - - if (anim.num_frames == 0 || capacity < 0) { - LOGE("%s: Unable to draw battery", __func__); - return; - } - - // Find starting frame to display based on current capacity - for (start_frame = 1; start_frame < anim.num_frames; start_frame++) { - if (capacity < anim.frames[start_frame].min_capacity) - break; - } - // Always start from the level just below the current capacity - start_frame--; - - if (anim.cur_frame < start_frame) - anim.cur_frame = start_frame; - - draw_surface_centered(anim.frames[anim.cur_frame].surface); - draw_capacity(capacity); - // Move to next frame, with max possible frame at max_idx - anim.cur_frame = ((anim.cur_frame + 1) % anim.num_frames); -} - -void healthd_board_mode_charger_battery_update( - struct android::BatteryProperties*) -{ -} - -#ifdef HEALTHD_BACKLIGHT_PATH -#ifndef HEALTHD_BACKLIGHT_LEVEL -#define HEALTHD_BACKLIGHT_LEVEL 100 -#endif - -void healthd_board_mode_charger_set_backlight(bool on) -{ - int fd; - char buffer[10]; - - memset(buffer, '\0', sizeof(buffer)); - fd = open(HEALTHD_BACKLIGHT_PATH, O_RDWR); - if (fd < 0) { - LOGE("Could not open backlight node : %s\n", strerror(errno)); - return; - } - LOGV("Enabling backlight\n"); - snprintf(buffer, sizeof(buffer), "%d\n", on ? HEALTHD_BACKLIGHT_LEVEL : 0); - if (write(fd, buffer, strlen(buffer)) < 0) { - LOGE("Could not write to backlight : %s\n", strerror(errno)); - } - close(fd); - -#ifdef HEALTHD_SECONDARY_BACKLIGHT_PATH - fd = open(HEALTHD_SECONDARY_BACKLIGHT_PATH, O_RDWR); - if (fd < 0) { - LOGE("Could not open second backlight node : %s\n", strerror(errno)); - return; - } - LOGV("Enabling secondary backlight\n"); - if (write(fd, buffer, strlen(buffer)) < 0) { - LOGE("Could not write to second backlight : %s\n", strerror(errno)); - return; - } - close(fd); -#endif -} - -#else -void healthd_board_mode_charger_set_backlight(bool) -{ -} -#endif - -void healthd_board_mode_charger_init(void) -{ - GRFont* tmp_font; - int res = gr_init_font("font_log", &tmp_font); - if (res == 0) { - gr_font = tmp_font; - } else { - LOGW("Couldn't open font, falling back to default!\n"); - gr_font = gr_sys_font(); - } - -} diff --git a/charger/images/400dpi b/charger/images/400dpi deleted file mode 120000 index 17ef829d..00000000 --- a/charger/images/400dpi +++ /dev/null @@ -1 +0,0 @@ -xxhdpi
\ No newline at end of file diff --git a/charger/images/420dpi b/charger/images/420dpi deleted file mode 120000 index 17ef829d..00000000 --- a/charger/images/420dpi +++ /dev/null @@ -1 +0,0 @@ -xxhdpi
\ No newline at end of file diff --git a/charger/images/560dpi b/charger/images/560dpi deleted file mode 120000 index af2d1fe7..00000000 --- a/charger/images/560dpi +++ /dev/null @@ -1 +0,0 @@ -xxxhdpi
\ No newline at end of file diff --git a/charger/images/640dpi b/charger/images/640dpi deleted file mode 120000 index af2d1fe7..00000000 --- a/charger/images/640dpi +++ /dev/null @@ -1 +0,0 @@ -xxxhdpi
\ No newline at end of file diff --git a/charger/images/hdpi/lineage_battery_scale.png b/charger/images/hdpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index 0052c0ae..00000000 --- a/charger/images/hdpi/lineage_battery_scale.png +++ /dev/null diff --git a/charger/images/ldpi/lineage_battery_scale.png b/charger/images/ldpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index b93c3af9..00000000 --- a/charger/images/ldpi/lineage_battery_scale.png +++ /dev/null diff --git a/charger/images/mdpi/lineage_battery_scale.png b/charger/images/mdpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index eb16a292..00000000 --- a/charger/images/mdpi/lineage_battery_scale.png +++ /dev/null diff --git a/charger/images/xhdpi/lineage_battery_scale.png b/charger/images/xhdpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index 078b2a66..00000000 --- a/charger/images/xhdpi/lineage_battery_scale.png +++ /dev/null diff --git a/charger/images/xxhdpi/lineage_battery_scale.png b/charger/images/xxhdpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index 2e6553ed..00000000 --- a/charger/images/xxhdpi/lineage_battery_scale.png +++ /dev/null diff --git a/charger/images/xxxhdpi/lineage_battery_scale.png b/charger/images/xxxhdpi/lineage_battery_scale.png Binary files differdeleted file mode 100644 index 90c627d4..00000000 --- a/charger/images/xxxhdpi/lineage_battery_scale.png +++ /dev/null diff --git a/config/BoardConfigKernel.mk b/config/BoardConfigKernel.mk deleted file mode 100644 index 9246da5f..00000000 --- a/config/BoardConfigKernel.mk +++ /dev/null @@ -1,128 +0,0 @@ -# Copyright (C) 2018 The LineageOS Project -# -# 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. -# -# -# Kernel build configuration variables -# ==================================== -# -# These config vars are usually set in BoardConfig.mk: -# -# TARGET_KERNEL_SOURCE = Kernel source dir, optional, defaults -# to kernel/$(TARGET_DEVICE_DIR) -# TARGET_KERNEL_ADDITIONAL_FLAGS = Additional make flags, optional -# TARGET_KERNEL_ARCH = Kernel Arch -# TARGET_KERNEL_CROSS_COMPILE_PREFIX = Compiler prefix (e.g. arm-eabi-) -# defaults to arm-linux-androidkernel- for arm -# aarch64-linux-androidkernel- for arm64 -# x86_64-linux-androidkernel- for x86 -# -# TARGET_KERNEL_CLANG_COMPILE = Compile kernel with clang, defaults to false -# -# KERNEL_TOOLCHAIN_PREFIX = Overrides TARGET_KERNEL_CROSS_COMPILE_PREFIX, -# Set this var in shell to override -# toolchain specified in BoardConfig.mk -# KERNEL_TOOLCHAIN = Path to toolchain, if unset, assumes -# TARGET_KERNEL_CROSS_COMPILE_PREFIX -# is in PATH -# USE_CCACHE = Enable ccache (global Android flag) - -BUILD_TOP := $(shell pwd) - -TARGET_AUTO_KDIR := $(shell echo $(TARGET_DEVICE_DIR) | sed -e 's/^device/kernel/g') -TARGET_KERNEL_SOURCE ?= $(TARGET_AUTO_KDIR) -ifneq ($(TARGET_PREBUILT_KERNEL),) -TARGET_KERNEL_SOURCE := -endif - -TARGET_KERNEL_ARCH := $(strip $(TARGET_KERNEL_ARCH)) -ifeq ($(TARGET_KERNEL_ARCH),) -KERNEL_ARCH := $(TARGET_ARCH) -else -KERNEL_ARCH := $(TARGET_KERNEL_ARCH) -endif - -TARGET_KERNEL_CROSS_COMPILE_PREFIX := $(strip $(TARGET_KERNEL_CROSS_COMPILE_PREFIX)) -ifneq ($(TARGET_KERNEL_CROSS_COMPILE_PREFIX),) -KERNEL_TOOLCHAIN_PREFIX ?= $(TARGET_KERNEL_CROSS_COMPILE_PREFIX) -else ifeq ($(KERNEL_ARCH),arm64) -ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true) - KERNEL_TOOLCHAIN_PREFIX ?= aarch64-linux-android- -else - KERNEL_TOOLCHAIN_PREFIX ?= aarch64-linux-androidkernel- -endif -else ifeq ($(KERNEL_ARCH),arm) -KERNEL_TOOLCHAIN_PREFIX ?= arm-linux-androidkernel- -else ifeq ($(KERNEL_ARCH),x86) -KERNEL_TOOLCHAIN_PREFIX ?= x86_64-linux-androidkernel- -endif - -ifeq ($(KERNEL_TOOLCHAIN),) -KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN_PREFIX) -else ifneq ($(KERNEL_TOOLCHAIN_PREFIX),) -KERNEL_TOOLCHAIN_PATH := $(KERNEL_TOOLCHAIN)/$(KERNEL_TOOLCHAIN_PREFIX) -endif - -ifneq ($(USE_CCACHE),) - # Detect if the system already has ccache installed to use instead of the prebuilt - CCACHE_BIN := $(shell which ccache) - - ifeq ($(CCACHE_BIN),) - CCACHE_BIN := $(BUILD_TOP)/prebuilts/misc/$(HOST_PREBUILT_TAG)/ccache/ccache - # Check that the executable is here. - CCACHE_BIN := $(strip $(wildcard $(CCACHE_BIN))) - endif -endif - -ifeq ($(TARGET_KERNEL_CLANG_COMPILE),true) - KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(KERNEL_TOOLCHAIN_PATH)" -else - KERNEL_CROSS_COMPILE := CROSS_COMPILE="$(CCACHE_BIN) $(KERNEL_TOOLCHAIN_PATH)" -endif - -# Needed for CONFIG_COMPAT_VDSO, safe to set for all arm64 builds -ifeq ($(KERNEL_ARCH),arm64) - KERNEL_CROSS_COMPILE += CROSS_COMPILE_ARM32="arm-linux-androideabi-" -endif - -# Clear this first to prevent accidental poisoning from env -KERNEL_MAKE_FLAGS := - -# Add back threads, ninja cuts this to $(nproc)/2 -KERNEL_MAKE_FLAGS += -j$$(nproc) - -ifeq ($(KERNEL_ARCH),arm) - # Avoid "Unknown symbol _GLOBAL_OFFSET_TABLE_" errors - KERNEL_MAKE_FLAGS += CFLAGS_MODULE="-fno-pic" -endif - -ifeq ($(KERNEL_ARCH),arm64) - # Avoid "unsupported RELA relocation: 311" errors (R_AARCH64_ADR_GOT_PAGE) - KERNEL_MAKE_FLAGS += CFLAGS_MODULE="-fno-pic" -endif - -ifeq ($(HOST_OS),darwin) - KERNEL_MAKE_FLAGS += C_INCLUDE_PATH=$(BUILD_TOP)/external/elfutils/libelf:/usr/local/opt/openssl/include - KERNEL_MAKE_FLAGS += LIBRARY_PATH=/usr/local/opt/openssl/lib -endif - -ifneq ($(TARGET_KERNEL_ADDITIONAL_FLAGS),) - KERNEL_MAKE_FLAGS += $(TARGET_KERNEL_ADDITIONAL_FLAGS) -endif - -# Set DTBO image locations so the build system knows to build them -ifeq ($(TARGET_NEEDS_DTBOIMAGE),true) -BOARD_PREBUILT_DTBOIMAGE ?= $(PRODUCT_OUT)/dtbo/arch/$(KERNEL_ARCH)/boot/dtbo.img -else ifeq ($(BOARD_KERNEL_SEPARATED_DTBO),true) -BOARD_PREBUILT_DTBOIMAGE ?= $(PRODUCT_OUT)/dtbo-pre.img -endif diff --git a/config/BoardConfigLineage.mk b/config/BoardConfigLineage.mk deleted file mode 100644 index 547792fd..00000000 --- a/config/BoardConfigLineage.mk +++ /dev/null @@ -1,12 +0,0 @@ -# Charger -ifeq ($(WITH_LINEAGE_CHARGER),true) - BOARD_HAL_STATIC_LIBRARIES := libhealthd.lineage -endif - -include vendor/lineage/config/BoardConfigKernel.mk - -ifeq ($(BOARD_USES_QCOM_HARDWARE),true) -include vendor/lineage/config/BoardConfigQcom.mk -endif - -include vendor/lineage/config/BoardConfigSoong.mk diff --git a/config/BoardConfigQcom.mk b/config/BoardConfigQcom.mk deleted file mode 100644 index d699edd8..00000000 --- a/config/BoardConfigQcom.mk +++ /dev/null @@ -1,98 +0,0 @@ -# Platform names -MSMNILE := msmnile #SM8150 -MSMSTEPPE := sm6150 -TRINKET := trinket #SM6125 - -B_FAMILY := msm8226 msm8610 msm8974 -B64_FAMILY := msm8992 msm8994 -BR_FAMILY := msm8909 msm8916 -UM_3_18_FAMILY := msm8937 msm8953 msm8996 -UM_4_4_FAMILY := msm8998 sdm660 -UM_4_9_FAMILY := sdm845 sdm710 -UM_4_14_FAMILY := $(MSMNILE) $(MSMSTEPPE) $(TRINKET) -UM_PLATFORMS := $(UM_3_18_FAMILY) $(UM_4_4_FAMILY) $(UM_4_9_FAMILY) $(UM_4_14_FAMILY) - -BOARD_USES_ADRENO := true - -# UM platforms no longer need this set on O+ -ifneq ($(filter $(B_FAMILY) $(B64_FAMILY) $(BR_FAMILY),$(TARGET_BOARD_PLATFORM)),) - TARGET_USES_QCOM_BSP := true -endif - -# Tell HALs that we're compiling an AOSP build with an in-line kernel -TARGET_COMPILE_WITH_MSM_KERNEL := true - -ifneq ($(filter msm7x27a msm7x30 msm8660 msm8960,$(TARGET_BOARD_PLATFORM)),) - TARGET_USES_QCOM_BSP_LEGACY := true - # Enable legacy audio functions - ifeq ($(BOARD_USES_LEGACY_ALSA_AUDIO),true) - USE_CUSTOM_AUDIO_POLICY := 1 - endif -endif - -# Enable media extensions -TARGET_USES_MEDIA_EXTENSIONS := true - -# Allow building audio encoders -TARGET_USES_QCOM_MM_AUDIO := true - -# Enable color metadata for every UM platform -ifneq ($(filter $(UM_PLATFORMS),$(TARGET_BOARD_PLATFORM)),) - TARGET_USES_COLOR_METADATA := true -endif - -# Enable DRM PP driver on UM platforms that support it -ifneq ($(filter $(UM_4_9_FAMILY) $(UM_4_14_FAMILY),$(TARGET_BOARD_PLATFORM)),) - TARGET_USES_DRM_PP := true -endif - -# Mark GRALLOC_USAGE_PRIVATE_WFD as valid gralloc bits -TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS ?= 0 -TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS += | (1 << 21) - -# Mark GRALLOC_USAGE_PRIVATE_10BIT_TP as valid gralloc bits on UM platforms that support it -ifneq ($(filter $(UM_4_9_FAMILY) $(UM_4_14_FAMILY),$(TARGET_BOARD_PLATFORM)),) - TARGET_ADDITIONAL_GRALLOC_10_USAGE_BITS += | (1 << 27) -endif - -# List of targets that use master side content protection -MASTER_SIDE_CP_TARGET_LIST := msm8996 $(UM_4_4_FAMILY) $(UM_4_9_FAMILY) $(UM_4_14_FAMILY) - -ifneq ($(filter $(B_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(B_FAMILY) - QCOM_HARDWARE_VARIANT := msm8974 -else ifneq ($(filter $(B64_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(B64_FAMILY) - QCOM_HARDWARE_VARIANT := msm8994 -else ifneq ($(filter $(BR_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(BR_FAMILY) - QCOM_HARDWARE_VARIANT := msm8916 -else ifneq ($(filter $(UM_3_18_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(UM_3_18_FAMILY) - QCOM_HARDWARE_VARIANT := msm8996 - TARGET_USES_QCOM_UM_FAMILY := true - TARGET_USES_QCOM_UM_3_18_FAMILY := true -else ifneq ($(filter $(UM_4_4_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(UM_4_4_FAMILY) - QCOM_HARDWARE_VARIANT := msm8998 - TARGET_USES_QCOM_UM_FAMILY := true - TARGET_USES_QCOM_UM_4_4_FAMILY := true -else ifneq ($(filter $(UM_4_9_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(UM_4_9_FAMILY) - QCOM_HARDWARE_VARIANT := sdm845 - TARGET_USES_QCOM_UM_FAMILY := true - TARGET_USES_QCOM_UM_4_9_FAMILY := true -else ifneq ($(filter $(UM_4_14_FAMILY),$(TARGET_BOARD_PLATFORM)),) - MSM_VIDC_TARGET_LIST := $(UM_4_14_FAMILY) - QCOM_HARDWARE_VARIANT := sm8150 - TARGET_USES_QCOM_UM_FAMILY := true - TARGET_USES_QCOM_UM_4_14_FAMILY := true -else - MSM_VIDC_TARGET_LIST := $(TARGET_BOARD_PLATFORM) - QCOM_HARDWARE_VARIANT := $(TARGET_BOARD_PLATFORM) -endif - -PRODUCT_SOONG_NAMESPACES += \ - hardware/qcom/audio-caf/$(QCOM_HARDWARE_VARIANT) \ - hardware/qcom/display-caf/$(QCOM_HARDWARE_VARIANT) \ - hardware/qcom/media-caf/$(QCOM_HARDWARE_VARIANT) diff --git a/config/BoardConfigSoong.mk b/config/BoardConfigSoong.mk deleted file mode 100644 index 82dedad4..00000000 --- a/config/BoardConfigSoong.mk +++ /dev/null @@ -1,22 +0,0 @@ -# Add variables that we wish to make available to soong here. -EXPORT_TO_SOONG := \ - KERNEL_ARCH \ - KERNEL_CROSS_COMPILE \ - KERNEL_MAKE_FLAGS \ - TARGET_KERNEL_CONFIG \ - TARGET_KERNEL_SOURCE - -# Setup SOONG_CONFIG_* vars to export the vars listed above. -# Documentation here: -# https://github.com/LineageOS/android_build_soong/commit/8328367c44085b948c003116c0ed74a047237a69 - -SOONG_CONFIG_NAMESPACES += lineageVarsPlugin - -SOONG_CONFIG_lineageVarsPlugin := - -define addVar - SOONG_CONFIG_lineageVarsPlugin += $(1) - SOONG_CONFIG_lineageVarsPlugin_$(1) := $$(subst ",\",$$($1)) -endef - -$(foreach v,$(EXPORT_TO_SOONG),$(eval $(call addVar,$(v)))) diff --git a/config/aosp_audio.mk b/config/aosp_audio.mk deleted file mode 100644 index e458f7d9..00000000 --- a/config/aosp_audio.mk +++ /dev/null @@ -1,201 +0,0 @@ -# Copyright 2013 The Android Open Source Project -# Copyright 2019 The LineageOS Project -# -# 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. - -LOCAL_PATH := frameworks/base/data/sounds - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/Alarm_Beep_01.ogg:system/media/audio/alarms/Alarm_Beep_01.ogg \ - $(LOCAL_PATH)/Alarm_Beep_02.ogg:system/media/audio/alarms/Alarm_Beep_02.ogg \ - $(LOCAL_PATH)/Alarm_Beep_03.ogg:system/media/audio/alarms/Alarm_Beep_03.ogg \ - $(LOCAL_PATH)/Alarm_Buzzer.ogg:system/media/audio/alarms/Alarm_Buzzer.ogg \ - $(LOCAL_PATH)/Alarm_Rooster_02.ogg:system/media/audio/alarms/Alarm_Rooster_02.ogg \ - $(LOCAL_PATH)/alarms/ogg/Argon.ogg:system/media/audio/alarms/Argon-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Barium.ogg:system/media/audio/alarms/Barium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Carbon.ogg:system/media/audio/alarms/Carbon-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Hassium.ogg:system/media/audio/alarms/Hassium.ogg \ - $(LOCAL_PATH)/alarms/ogg/Krypton.ogg:system/media/audio/alarms/Krypton-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Neon.ogg:system/media/audio/alarms/Neon-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Osmium.ogg:system/media/audio/alarms/Osmium-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Oxygen.ogg:system/media/audio/alarms/Oxygen-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Platinum.ogg:system/media/audio/alarms/Platinum-old.ogg \ - $(LOCAL_PATH)/alarms/ogg/Scandium.ogg:system/media/audio/alarms/Scandium.ogg - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/F1_New_SMS.ogg:system/media/audio/notifications/F1_New_SMS.ogg \ - $(LOCAL_PATH)/newwavelabs/CaffeineSnake.ogg:system/media/audio/notifications/CaffeineSnake.ogg \ - $(LOCAL_PATH)/newwavelabs/DearDeer.ogg:system/media/audio/notifications/DearDeer.ogg \ - $(LOCAL_PATH)/newwavelabs/DontPanic.ogg:system/media/audio/notifications/DontPanic.ogg \ - $(LOCAL_PATH)/newwavelabs/Highwire.ogg:system/media/audio/notifications/Highwire.ogg \ - $(LOCAL_PATH)/newwavelabs/KzurbSonar.ogg:system/media/audio/notifications/KzurbSonar.ogg \ - $(LOCAL_PATH)/newwavelabs/OnTheHunt.ogg:system/media/audio/notifications/OnTheHunt.ogg \ - $(LOCAL_PATH)/newwavelabs/Voila.ogg:system/media/audio/notifications/Voila.ogg \ - $(LOCAL_PATH)/notifications/Aldebaran.ogg:system/media/audio/notifications/Aldebaran.ogg \ - $(LOCAL_PATH)/notifications/Altair.ogg:system/media/audio/notifications/Altair.ogg \ - $(LOCAL_PATH)/notifications/Antares.ogg:system/media/audio/notifications/Antares.ogg \ - $(LOCAL_PATH)/notifications/Beat_Box_Android.ogg:system/media/audio/notifications/Beat_Box_Android.ogg \ - $(LOCAL_PATH)/notifications/Betelgeuse.ogg:system/media/audio/notifications/Betelgeuse.ogg \ - $(LOCAL_PATH)/notifications/Canopus.ogg:system/media/audio/notifications/Canopus.ogg \ - $(LOCAL_PATH)/notifications/Castor.ogg:system/media/audio/notifications/Castor.ogg \ - $(LOCAL_PATH)/notifications/Cricket.ogg:system/media/audio/notifications/Cricket.ogg \ - $(LOCAL_PATH)/notifications/Deneb.ogg:system/media/audio/notifications/Deneb.ogg \ - $(LOCAL_PATH)/notifications/Doink.ogg:system/media/audio/notifications/Doink.ogg \ - $(LOCAL_PATH)/notifications/Drip.ogg:system/media/audio/notifications/Drip.ogg \ - $(LOCAL_PATH)/notifications/Electra.ogg:system/media/audio/notifications/Electra.ogg \ - $(LOCAL_PATH)/notifications/Fomalhaut.ogg:system/media/audio/notifications/Fomalhaut.ogg \ - $(LOCAL_PATH)/notifications/Heaven.ogg:system/media/audio/notifications/Heaven.ogg \ - $(LOCAL_PATH)/notifications/Merope.ogg:system/media/audio/notifications/Merope.ogg \ - $(LOCAL_PATH)/notifications/moonbeam.ogg:system/media/audio/notifications/moonbeam.ogg \ - $(LOCAL_PATH)/notifications/ogg/Adara.ogg:system/media/audio/notifications/Adara.ogg \ - $(LOCAL_PATH)/notifications/ogg/Alya.ogg:system/media/audio/notifications/Alya.ogg \ - $(LOCAL_PATH)/notifications/ogg/Antimony.ogg:system/media/audio/notifications/Antimony.ogg \ - $(LOCAL_PATH)/notifications/ogg/Arcturus.ogg:system/media/audio/notifications/Arcturus.ogg \ - $(LOCAL_PATH)/notifications/ogg/Argon.ogg:system/media/audio/notifications/Argon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Bellatrix.ogg:system/media/audio/notifications/Bellatrix.ogg \ - $(LOCAL_PATH)/notifications/ogg/Beryllium.ogg:system/media/audio/notifications/Beryllium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Capella.ogg:system/media/audio/notifications/Capella.ogg \ - $(LOCAL_PATH)/notifications/ogg/CetiAlpha.ogg:system/media/audio/notifications/CetiAlpha.ogg \ - $(LOCAL_PATH)/notifications/ogg/Cobalt.ogg:system/media/audio/notifications/Cobalt.ogg \ - $(LOCAL_PATH)/notifications/ogg/Fluorine.ogg:system/media/audio/notifications/Fluorine.ogg \ - $(LOCAL_PATH)/notifications/ogg/Gallium.ogg:system/media/audio/notifications/Gallium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Helium.ogg:system/media/audio/notifications/Helium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Hojus.ogg:system/media/audio/notifications/Hojus.ogg \ - $(LOCAL_PATH)/notifications/ogg/Iridium.ogg:system/media/audio/notifications/Iridium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Krypton.ogg:system/media/audio/notifications/Krypton.ogg \ - $(LOCAL_PATH)/notifications/ogg/Mira.ogg:system/media/audio/notifications/Mira.ogg \ - $(LOCAL_PATH)/notifications/ogg/Palladium.ogg:system/media/audio/notifications/Palladium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Polaris.ogg:system/media/audio/notifications/Polaris.ogg \ - $(LOCAL_PATH)/notifications/ogg/Pollux.ogg:system/media/audio/notifications/Pollux.ogg \ - $(LOCAL_PATH)/notifications/ogg/Procyon.ogg:system/media/audio/notifications/Procyon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Proxima.ogg:system/media/audio/notifications/Proxima.ogg \ - $(LOCAL_PATH)/notifications/ogg/Radon.ogg:system/media/audio/notifications/Radon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Rubidium.ogg:system/media/audio/notifications/Rubidium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Selenium.ogg:system/media/audio/notifications/Selenium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Shaula.ogg:system/media/audio/notifications/Shaula.ogg \ - $(LOCAL_PATH)/notifications/ogg/Spica.ogg:system/media/audio/notifications/Spica.ogg \ - $(LOCAL_PATH)/notifications/ogg/Strontium.ogg:system/media/audio/notifications/Strontium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Syrma.ogg:system/media/audio/notifications/Syrma.ogg \ - $(LOCAL_PATH)/notifications/ogg/Talitha.ogg:system/media/audio/notifications/Talitha.ogg \ - $(LOCAL_PATH)/notifications/ogg/Thallium.ogg:system/media/audio/notifications/Thallium.ogg \ - $(LOCAL_PATH)/notifications/ogg/Upsilon.ogg:system/media/audio/notifications/Upsilon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Vega.ogg:system/media/audio/notifications/Vega.ogg \ - $(LOCAL_PATH)/notifications/ogg/Xenon.ogg:system/media/audio/notifications/Xenon.ogg \ - $(LOCAL_PATH)/notifications/ogg/Zirconium.ogg:system/media/audio/notifications/Zirconium.ogg \ - $(LOCAL_PATH)/notifications/pixiedust.ogg:system/media/audio/notifications/pixiedust.ogg \ - $(LOCAL_PATH)/notifications/pizzicato.ogg:system/media/audio/notifications/pizzicato.ogg \ - $(LOCAL_PATH)/notifications/Plastic_Pipe.ogg:system/media/audio/notifications/Plastic_Pipe.ogg \ - $(LOCAL_PATH)/notifications/regulus.ogg:system/media/audio/notifications/regulus.ogg \ - $(LOCAL_PATH)/notifications/sirius.ogg:system/media/audio/notifications/sirius.ogg \ - $(LOCAL_PATH)/notifications/Sirrah.ogg:system/media/audio/notifications/Sirrah.ogg \ - $(LOCAL_PATH)/notifications/TaDa.ogg:system/media/audio/notifications/TaDa.ogg \ - $(LOCAL_PATH)/notifications/tweeters.ogg:system/media/audio/notifications/tweeters.ogg - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/Ring_Classic_02.ogg:system/media/audio/ringtones/Ring_Classic_02.ogg \ - $(LOCAL_PATH)/Ring_Digital_02.ogg:system/media/audio/ringtones/Ring_Digital_02.ogg \ - $(LOCAL_PATH)/Ring_Synth_02.ogg:system/media/audio/ringtones/Ring_Synth_02.ogg \ - $(LOCAL_PATH)/Ring_Synth_04.ogg:system/media/audio/ringtones/Ring_Synth_04.ogg \ - $(LOCAL_PATH)/newwavelabs/Backroad.ogg:system/media/audio/ringtones/Backroad.ogg \ - $(LOCAL_PATH)/newwavelabs/BeatPlucker.ogg:system/media/audio/ringtones/BeatPlucker.ogg \ - $(LOCAL_PATH)/newwavelabs/BentleyDubs.ogg:system/media/audio/ringtones/BentleyDubs.ogg \ - $(LOCAL_PATH)/newwavelabs/Big_Easy.ogg:system/media/audio/ringtones/Big_Easy.ogg \ - $(LOCAL_PATH)/newwavelabs/BirdLoop.ogg:system/media/audio/ringtones/BirdLoop.ogg \ - $(LOCAL_PATH)/newwavelabs/Bollywood.ogg:system/media/audio/ringtones/Bollywood.ogg \ - $(LOCAL_PATH)/newwavelabs/BussaMove.ogg:system/media/audio/ringtones/BussaMove.ogg \ - $(LOCAL_PATH)/newwavelabs/Cairo.ogg:system/media/audio/ringtones/Cairo.ogg \ - $(LOCAL_PATH)/newwavelabs/Calypso_Steel.ogg:system/media/audio/ringtones/Calypso_Steel.ogg \ - $(LOCAL_PATH)/newwavelabs/CaribbeanIce.ogg:system/media/audio/ringtones/CaribbeanIce.ogg \ - $(LOCAL_PATH)/newwavelabs/Champagne_Edition.ogg:system/media/audio/ringtones/Champagne_Edition.ogg \ - $(LOCAL_PATH)/newwavelabs/Club_Cubano.ogg:system/media/audio/ringtones/Club_Cubano.ogg \ - $(LOCAL_PATH)/newwavelabs/CrayonRock.ogg:system/media/audio/ringtones/CrayonRock.ogg \ - $(LOCAL_PATH)/newwavelabs/CrazyDream.ogg:system/media/audio/ringtones/CrazyDream.ogg \ - $(LOCAL_PATH)/newwavelabs/CurveBall.ogg:system/media/audio/ringtones/CurveBall.ogg \ - $(LOCAL_PATH)/newwavelabs/DancinFool.ogg:system/media/audio/ringtones/DancinFool.ogg \ - $(LOCAL_PATH)/newwavelabs/DonMessWivIt.ogg:system/media/audio/ringtones/DonMessWivIt.ogg \ - $(LOCAL_PATH)/newwavelabs/DreamTheme.ogg:system/media/audio/ringtones/DreamTheme.ogg \ - $(LOCAL_PATH)/newwavelabs/Eastern_Sky.ogg:system/media/audio/ringtones/Eastern_Sky.ogg \ - $(LOCAL_PATH)/newwavelabs/Enter_the_Nexus.ogg:system/media/audio/ringtones/Enter_the_Nexus.ogg \ - $(LOCAL_PATH)/newwavelabs/EtherShake.ogg:system/media/audio/ringtones/EtherShake.ogg \ - $(LOCAL_PATH)/newwavelabs/FriendlyGhost.ogg:system/media/audio/ringtones/FriendlyGhost.ogg \ - $(LOCAL_PATH)/newwavelabs/Funk_Yall.ogg:system/media/audio/ringtones/Funk_Yall.ogg \ - $(LOCAL_PATH)/newwavelabs/GameOverGuitar.ogg:system/media/audio/ringtones/GameOverGuitar.ogg \ - $(LOCAL_PATH)/newwavelabs/Gimme_Mo_Town.ogg:system/media/audio/ringtones/Gimme_Mo_Town.ogg \ - $(LOCAL_PATH)/newwavelabs/Glacial_Groove.ogg:system/media/audio/ringtones/Glacial_Groove.ogg \ - $(LOCAL_PATH)/newwavelabs/Growl.ogg:system/media/audio/ringtones/Growl.ogg \ - $(LOCAL_PATH)/newwavelabs/HalfwayHome.ogg:system/media/audio/ringtones/HalfwayHome.ogg \ - $(LOCAL_PATH)/newwavelabs/InsertCoin.ogg:system/media/audio/ringtones/InsertCoin.ogg \ - $(LOCAL_PATH)/newwavelabs/LoopyLounge.ogg:system/media/audio/ringtones/LoopyLounge.ogg \ - $(LOCAL_PATH)/newwavelabs/LoveFlute.ogg:system/media/audio/ringtones/LoveFlute.ogg \ - $(LOCAL_PATH)/newwavelabs/MidEvilJaunt.ogg:system/media/audio/ringtones/MidEvilJaunt.ogg \ - $(LOCAL_PATH)/newwavelabs/Nairobi.ogg:system/media/audio/ringtones/Nairobi.ogg \ - $(LOCAL_PATH)/newwavelabs/Nassau.ogg:system/media/audio/ringtones/Nassau.ogg \ - $(LOCAL_PATH)/newwavelabs/NewPlayer.ogg:system/media/audio/ringtones/NewPlayer.ogg \ - $(LOCAL_PATH)/newwavelabs/Noises2.ogg:system/media/audio/ringtones/Noises2.ogg \ - $(LOCAL_PATH)/newwavelabs/Noises3.ogg:system/media/audio/ringtones/Noises3.ogg \ - $(LOCAL_PATH)/newwavelabs/No_Limits.ogg:system/media/audio/ringtones/No_Limits.ogg \ - $(LOCAL_PATH)/newwavelabs/OrganDub.ogg:system/media/audio/ringtones/OrganDub.ogg \ - $(LOCAL_PATH)/newwavelabs/Paradise_Island.ogg:system/media/audio/ringtones/Paradise_Island.ogg \ - $(LOCAL_PATH)/newwavelabs/Playa.ogg:system/media/audio/ringtones/Playa.ogg \ - $(LOCAL_PATH)/newwavelabs/Revelation.ogg:system/media/audio/ringtones/Revelation.ogg \ - $(LOCAL_PATH)/newwavelabs/Road_Trip.ogg:system/media/audio/ringtones/Road_Trip.ogg \ - $(LOCAL_PATH)/newwavelabs/RomancingTheTone.ogg:system/media/audio/ringtones/RomancingTheTone.ogg \ - $(LOCAL_PATH)/newwavelabs/Safari.ogg:system/media/audio/ringtones/Safari.ogg \ - $(LOCAL_PATH)/newwavelabs/Savannah.ogg:system/media/audio/ringtones/Savannah.ogg \ - $(LOCAL_PATH)/newwavelabs/Seville.ogg:system/media/audio/ringtones/Seville.ogg \ - $(LOCAL_PATH)/newwavelabs/Shes_All_That.ogg:system/media/audio/ringtones/Shes_All_That.ogg \ - $(LOCAL_PATH)/newwavelabs/SilkyWay.ogg:system/media/audio/ringtones/SilkyWay.ogg \ - $(LOCAL_PATH)/newwavelabs/SitarVsSitar.ogg:system/media/audio/ringtones/SitarVsSitar.ogg \ - $(LOCAL_PATH)/newwavelabs/SpringyJalopy.ogg:system/media/audio/ringtones/SpringyJalopy.ogg \ - $(LOCAL_PATH)/newwavelabs/Steppin_Out.ogg:system/media/audio/ringtones/Steppin_Out.ogg \ - $(LOCAL_PATH)/newwavelabs/Terminated.ogg:system/media/audio/ringtones/Terminated.ogg \ - $(LOCAL_PATH)/newwavelabs/Third_Eye.ogg:system/media/audio/ringtones/Third_Eye.ogg \ - $(LOCAL_PATH)/newwavelabs/Thunderfoot.ogg:system/media/audio/ringtones/Thunderfoot.ogg \ - $(LOCAL_PATH)/newwavelabs/TwirlAway.ogg:system/media/audio/ringtones/TwirlAway.ogg \ - $(LOCAL_PATH)/newwavelabs/VeryAlarmed.ogg:system/media/audio/ringtones/VeryAlarmed.ogg \ - $(LOCAL_PATH)/newwavelabs/World.ogg:system/media/audio/ringtones/World.ogg \ - $(LOCAL_PATH)/ringtones/BOOTES.ogg:system/media/audio/ringtones/BOOTES.ogg \ - $(LOCAL_PATH)/ringtones/CASSIOPEIA.ogg:system/media/audio/ringtones/CASSIOPEIA.ogg \ - $(LOCAL_PATH)/ringtones/Eridani.ogg:system/media/audio/ringtones/Eridani.ogg \ - $(LOCAL_PATH)/ringtones/FreeFlight.ogg:system/media/audio/ringtones/FreeFlight.ogg \ - $(LOCAL_PATH)/ringtones/Lyra.ogg:system/media/audio/ringtones/Lyra.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Andromeda.ogg:system/media/audio/ringtones/Andromeda.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Aquila.ogg:system/media/audio/ringtones/Aquila.ogg \ - $(LOCAL_PATH)/ringtones/ogg/ArgoNavis.ogg:system/media/audio/ringtones/ArgoNavis.ogg \ - $(LOCAL_PATH)/ringtones/ogg/CanisMajor.ogg:system/media/audio/ringtones/CanisMajor.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Carina.ogg:system/media/audio/ringtones/Carina.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Centaurus.ogg:system/media/audio/ringtones/Centaurus.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Cygnus.ogg:system/media/audio/ringtones/Cygnus.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Draco.ogg:system/media/audio/ringtones/Draco.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Girtab.ogg:system/media/audio/ringtones/Girtab.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Hydra.ogg:system/media/audio/ringtones/Hydra.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Kuma.ogg:system/media/audio/ringtones/Kuma.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Machina.ogg:system/media/audio/ringtones/Machina.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Orion.ogg:system/media/audio/ringtones/Orion.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Pegasus.ogg:system/media/audio/ringtones/Pegasus.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Perseus.ogg:system/media/audio/ringtones/Perseus.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Pyxis.ogg:system/media/audio/ringtones/Pyxis.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Rasalas.ogg:system/media/audio/ringtones/Rasalas.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Rigel.ogg:system/media/audio/ringtones/Rigel.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Scarabaeus.ogg:system/media/audio/ringtones/Scarabaeus.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Sceptrum.ogg:system/media/audio/ringtones/Sceptrum.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Solarium.ogg:system/media/audio/ringtones/Solarium.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Themos.ogg:system/media/audio/ringtones/Themos.ogg \ - $(LOCAL_PATH)/ringtones/ogg/UrsaMinor.ogg:system/media/audio/ringtones/UrsaMinor.ogg \ - $(LOCAL_PATH)/ringtones/ogg/Zeta.ogg:system/media/audio/ringtones/Zeta.ogg \ - $(LOCAL_PATH)/ringtones/Testudo.ogg:system/media/audio/ringtones/Testudo.ogg \ - $(LOCAL_PATH)/ringtones/Vespa.ogg:system/media/audio/ringtones/Vespa.ogg - -PRODUCT_COPY_FILES += \ - $(LOCAL_PATH)/effects/ogg/ChargingStarted.ogg:system/media/audio/notifications/ChargingStarted.ogg \ - $(LOCAL_PATH)/effects/material/ogg/WirelessChargingStarted.ogg:system/media/audio/notifications/WirelessChargingStarted.ogg diff --git a/config/common.mk b/config/common.mk deleted file mode 100644 index 1e649082..00000000 --- a/config/common.mk +++ /dev/null @@ -1,321 +0,0 @@ -# Allow vendor/extra to override any property by setting it first -$(call inherit-product-if-exists, vendor/extra/product.mk) - -PRODUCT_BRAND ?= LineageOS - -PRODUCT_BUILD_PROP_OVERRIDES += BUILD_UTC_DATE=0 - -ifeq ($(PRODUCT_GMS_CLIENTID_BASE),) -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.com.google.clientidbase=android-google -else -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.com.google.clientidbase=$(PRODUCT_GMS_CLIENTID_BASE) -endif - -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.build.selinux=1 - -ifeq ($(TARGET_BUILD_VARIANT),eng) -# Disable ADB authentication -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=0 -else -# Enable ADB authentication -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += ro.adb.secure=1 -endif - -# Backup Tool -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/bin/backuptool.sh:install/bin/backuptool.sh \ - vendor/lineage/prebuilt/common/bin/backuptool.functions:install/bin/backuptool.functions \ - vendor/lineage/prebuilt/common/bin/50-lineage.sh:system/addon.d/50-lineage.sh - -ifeq ($(AB_OTA_UPDATER),true) -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/bin/backuptool_ab.sh:system/bin/backuptool_ab.sh \ - vendor/lineage/prebuilt/common/bin/backuptool_ab.functions:system/bin/backuptool_ab.functions \ - vendor/lineage/prebuilt/common/bin/backuptool_postinstall.sh:system/bin/backuptool_postinstall.sh -endif - -# Backup Services whitelist -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/backup.xml:system/etc/sysconfig/backup.xml - -# Lineage-specific broadcast actions whitelist -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/lineage-sysconfig.xml:system/etc/sysconfig/lineage-sysconfig.xml - -# init.d support -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/etc/init.d/00banner:system/etc/init.d/00banner \ - vendor/lineage/prebuilt/common/bin/sysinit:system/bin/sysinit - -ifneq ($(TARGET_BUILD_VARIANT),user) -# userinit support -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/etc/init.d/90userinit:system/etc/init.d/90userinit -endif - -# Copy all Lineage-specific init rc files -$(foreach f,$(wildcard vendor/lineage/prebuilt/common/etc/init/*.rc),\ - $(eval PRODUCT_COPY_FILES += $(f):system/etc/init/$(notdir $f))) - -# Copy over added mimetype supported in libcore.net.MimeUtils -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/lib/content-types.properties:system/lib/content-types.properties - -# Enable SIP+VoIP on all targets -PRODUCT_COPY_FILES += \ - frameworks/native/data/etc/android.software.sip.voip.xml:system/etc/permissions/android.software.sip.voip.xml - -# Enable wireless Xbox 360 controller support -PRODUCT_COPY_FILES += \ - frameworks/base/data/keyboards/Vendor_045e_Product_028e.kl:system/usr/keylayout/Vendor_045e_Product_0719.kl - -# This is Lineage! -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/org.lineageos.android.xml:system/etc/permissions/org.lineageos.android.xml \ - vendor/lineage/config/permissions/privapp-permissions-lineage.xml:system/etc/permissions/privapp-permissions-lineage.xml \ - vendor/lineage/config/permissions/privapp-permissions-cm-legacy.xml:system/etc/permissions/privapp-permissions-cm-legacy.xml - -# Enforce privapp-permissions whitelist -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.control_privapp_permissions=enforce - -# Hidden API whitelist -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/lineage-hiddenapi-package-whitelist.xml:system/etc/permissions/lineage-hiddenapi-package-whitelist.xml - -# Power whitelist -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/lineage-power-whitelist.xml:system/etc/sysconfig/lineage-power-whitelist.xml - -# Include AOSP audio files -include vendor/lineage/config/aosp_audio.mk - -# Include Lineage audio files -include vendor/lineage/config/lineage_audio.mk - -ifneq ($(TARGET_DISABLE_LINEAGE_SDK), true) -# Lineage SDK -include vendor/lineage/config/lineage_sdk_common.mk -endif - -# TWRP -ifeq ($(WITH_TWRP),true) -include vendor/lineage/config/twrp.mk -endif - -# Do not include art debug targets -PRODUCT_ART_TARGET_INCLUDE_DEBUG_BUILD := false - -# Strip the local variable table and the local variable type table to reduce -# the size of the system image. This has no bearing on stack traces, but will -# leave less information available via JDWP. -PRODUCT_MINIMIZE_JAVA_DEBUG_INFO := true - -# Bootanimation -PRODUCT_PACKAGES += \ - bootanimation.zip - -# Required Lineage packages -PRODUCT_PACKAGES += \ - LineageParts \ - Development \ - Profiles - -# Optional packages -PRODUCT_PACKAGES += \ - Terminal - -# Custom Lineage packages -PRODUCT_PACKAGES += \ - LineageSettingsProvider \ - LineageSetupWizard \ - Updater - -# Extra tools in Lineage -PRODUCT_PACKAGES += \ - 7z \ - awk \ - bash \ - bzip2 \ - curl \ - getcap \ - htop \ - lib7z \ - libsepol \ - pigz \ - powertop \ - setcap \ - unrar \ - unzip \ - vim \ - wget \ - zip - -# Filesystems tools -PRODUCT_PACKAGES += \ - fsck.exfat \ - fsck.ntfs \ - mke2fs \ - mkfs.exfat \ - mkfs.ntfs \ - mount.ntfs - -# Openssh -PRODUCT_PACKAGES += \ - scp \ - sftp \ - ssh \ - sshd \ - sshd_config \ - ssh-keygen \ - start-ssh - -# rsync -PRODUCT_PACKAGES += \ - rsync - -# Storage manager -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.storage_manager.enabled=true - -# These packages are excluded from user builds -PRODUCT_PACKAGES_DEBUG += \ - micro_bench \ - procmem \ - procrank \ - strace - -# Conditionally build in su -ifneq ($(TARGET_BUILD_VARIANT),user) -ifeq ($(WITH_SU),true) -PRODUCT_PACKAGES += \ - su -endif -endif - -PRODUCT_ENFORCE_RRO_EXCLUDED_OVERLAYS += vendor/lineage/overlay -DEVICE_PACKAGE_OVERLAYS += vendor/lineage/overlay/common - -PRODUCT_VERSION_MAJOR = 16 -PRODUCT_VERSION_MINOR = 0 -PRODUCT_VERSION_MAINTENANCE := 0 - -ifeq ($(TARGET_VENDOR_SHOW_MAINTENANCE_VERSION),true) - LINEAGE_VERSION_MAINTENANCE := $(PRODUCT_VERSION_MAINTENANCE) -else - LINEAGE_VERSION_MAINTENANCE := 0 -endif - -# Set LINEAGE_BUILDTYPE from the env RELEASE_TYPE, for jenkins compat - -ifndef LINEAGE_BUILDTYPE - ifdef RELEASE_TYPE - # Starting with "LINEAGE_" is optional - RELEASE_TYPE := $(shell echo $(RELEASE_TYPE) | sed -e 's|^LINEAGE_||g') - LINEAGE_BUILDTYPE := $(RELEASE_TYPE) - endif -endif - -# Filter out random types, so it'll reset to UNOFFICIAL -ifeq ($(filter RELEASE NIGHTLY SNAPSHOT EXPERIMENTAL,$(LINEAGE_BUILDTYPE)),) - LINEAGE_BUILDTYPE := -endif - -ifdef LINEAGE_BUILDTYPE - ifneq ($(LINEAGE_BUILDTYPE), SNAPSHOT) - ifdef LINEAGE_EXTRAVERSION - # Force build type to EXPERIMENTAL - LINEAGE_BUILDTYPE := EXPERIMENTAL - # Remove leading dash from LINEAGE_EXTRAVERSION - LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//') - # Add leading dash to LINEAGE_EXTRAVERSION - LINEAGE_EXTRAVERSION := -$(LINEAGE_EXTRAVERSION) - endif - else - ifndef LINEAGE_EXTRAVERSION - # Force build type to EXPERIMENTAL, SNAPSHOT mandates a tag - LINEAGE_BUILDTYPE := EXPERIMENTAL - else - # Remove leading dash from LINEAGE_EXTRAVERSION - LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//') - # Add leading dash to LINEAGE_EXTRAVERSION - LINEAGE_EXTRAVERSION := -$(LINEAGE_EXTRAVERSION) - endif - endif -else - # If LINEAGE_BUILDTYPE is not defined, set to UNOFFICIAL - LINEAGE_BUILDTYPE := UNOFFICIAL - LINEAGE_EXTRAVERSION := -endif - -ifeq ($(LINEAGE_BUILDTYPE), UNOFFICIAL) - ifneq ($(TARGET_UNOFFICIAL_BUILD_ID),) - LINEAGE_EXTRAVERSION := -$(TARGET_UNOFFICIAL_BUILD_ID) - endif -endif - -ifeq ($(LINEAGE_BUILDTYPE), RELEASE) - ifndef TARGET_VENDOR_RELEASE_BUILD_ID - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(LINEAGE_BUILD) - else - ifeq ($(TARGET_BUILD_VARIANT),user) - ifeq ($(LINEAGE_VERSION_MAINTENANCE),0) - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD) - else - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD) - endif - else - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(PRODUCT_VERSION_MAINTENANCE)$(PRODUCT_VERSION_DEVICE_SPECIFIC)-$(LINEAGE_BUILD) - endif - endif -else - ifeq ($(LINEAGE_VERSION_MAINTENANCE),0) - ifeq ($(LINEAGE_VERSION_APPEND_TIME_OF_DAY),true) - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d_%H%M%S)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD) - else - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(shell date -u +%Y%m%d)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD) - endif - else - ifeq ($(LINEAGE_VERSION_APPEND_TIME_OF_DAY),true) - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(shell date -u +%Y%m%d_%H%M%S)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD) - else - LINEAGE_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(shell date -u +%Y%m%d)-$(LINEAGE_BUILDTYPE)$(LINEAGE_EXTRAVERSION)-$(LINEAGE_BUILD) - endif - endif -endif - -PRODUCT_EXTRA_RECOVERY_KEYS += \ - vendor/lineage/build/target/product/security/lineage - --include vendor/lineage-priv/keys/keys.mk - -LINEAGE_DISPLAY_VERSION := $(LINEAGE_VERSION) - -ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),) -ifneq ($(PRODUCT_DEFAULT_DEV_CERTIFICATE),build/target/product/security/testkey) - ifneq ($(LINEAGE_BUILDTYPE), UNOFFICIAL) - ifndef TARGET_VENDOR_RELEASE_BUILD_ID - ifneq ($(LINEAGE_EXTRAVERSION),) - # Remove leading dash from LINEAGE_EXTRAVERSION - LINEAGE_EXTRAVERSION := $(shell echo $(LINEAGE_EXTRAVERSION) | sed 's/-//') - TARGET_VENDOR_RELEASE_BUILD_ID := $(LINEAGE_EXTRAVERSION) - else - TARGET_VENDOR_RELEASE_BUILD_ID := $(shell date -u +%Y%m%d) - endif - else - TARGET_VENDOR_RELEASE_BUILD_ID := $(TARGET_VENDOR_RELEASE_BUILD_ID) - endif - ifeq ($(LINEAGE_VERSION_MAINTENANCE),0) - LINEAGE_DISPLAY_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD) - else - LINEAGE_DISPLAY_VERSION := $(PRODUCT_VERSION_MAJOR).$(PRODUCT_VERSION_MINOR).$(LINEAGE_VERSION_MAINTENANCE)-$(TARGET_VENDOR_RELEASE_BUILD_ID)-$(LINEAGE_BUILD) - endif - endif -endif -endif - --include $(WORKSPACE)/build_env/image-auto-bits.mk --include vendor/lineage/config/partner_gms.mk diff --git a/config/common_full.mk b/config/common_full.mk deleted file mode 100644 index 67bfa73c..00000000 --- a/config/common_full.mk +++ /dev/null @@ -1,8 +0,0 @@ -# Inherit common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_mobile.mk) - -PRODUCT_SIZE := full - -# Recorder -PRODUCT_PACKAGES += \ - Recorder diff --git a/config/common_full_phone.mk b/config/common_full_phone.mk deleted file mode 100644 index 224e454e..00000000 --- a/config/common_full_phone.mk +++ /dev/null @@ -1,11 +0,0 @@ -# Inherit full common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_full.mk) - -# Required packages -PRODUCT_PACKAGES += \ - LatinIME - -# Include Lineage LatinIME dictionaries -PRODUCT_PACKAGE_OVERLAYS += vendor/lineage/overlay/dictionaries - -$(call inherit-product, vendor/lineage/config/telephony.mk) diff --git a/config/common_full_tablet_wifionly.mk b/config/common_full_tablet_wifionly.mk deleted file mode 100644 index f75d42a4..00000000 --- a/config/common_full_tablet_wifionly.mk +++ /dev/null @@ -1,9 +0,0 @@ -# Inherit full common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_full.mk) - -# Required packages -PRODUCT_PACKAGES += \ - LatinIME - -# Include Lineage LatinIME dictionaries -PRODUCT_PACKAGE_OVERLAYS += vendor/lineage/overlay/dictionaries diff --git a/config/common_full_tv.mk b/config/common_full_tv.mk deleted file mode 100644 index 416fed01..00000000 --- a/config/common_full_tv.mk +++ /dev/null @@ -1,4 +0,0 @@ -# This config is for legacy purposes, there are no atv product size variants - -# Inherit common atv Lineage stuff -$(call inherit-product, vendor/lineage/config/common_tv.mk) diff --git a/config/common_mini.mk b/config/common_mini.mk deleted file mode 100644 index 8e8f88f2..00000000 --- a/config/common_mini.mk +++ /dev/null @@ -1,4 +0,0 @@ -# Inherit mini common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_mobile.mk) - -PRODUCT_SIZE := mini diff --git a/config/common_mini_phone.mk b/config/common_mini_phone.mk deleted file mode 100644 index 6b2c57ad..00000000 --- a/config/common_mini_phone.mk +++ /dev/null @@ -1,8 +0,0 @@ -# Inherit mini common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_mini.mk) - -# Required packages -PRODUCT_PACKAGES += \ - LatinIME - -$(call inherit-product, vendor/lineage/config/telephony.mk) diff --git a/config/common_mini_tablet_wifionly.mk b/config/common_mini_tablet_wifionly.mk deleted file mode 100644 index 9d803d2d..00000000 --- a/config/common_mini_tablet_wifionly.mk +++ /dev/null @@ -1,6 +0,0 @@ -# Inherit mini common Lineage stuff -$(call inherit-product, vendor/lineage/config/common_mini.mk) - -# Required packages -PRODUCT_PACKAGES += \ - LatinIME diff --git a/config/common_mini_tv.mk b/config/common_mini_tv.mk deleted file mode 100644 index 416fed01..00000000 --- a/config/common_mini_tv.mk +++ /dev/null @@ -1,4 +0,0 @@ -# This config is for legacy purposes, there are no atv product size variants - -# Inherit common atv Lineage stuff -$(call inherit-product, vendor/lineage/config/common_tv.mk) diff --git a/config/common_mobile.mk b/config/common_mobile.mk deleted file mode 100644 index 8424a1cd..00000000 --- a/config/common_mobile.mk +++ /dev/null @@ -1,63 +0,0 @@ -# Inherit common mobile Lineage stuff -$(call inherit-product, vendor/lineage/config/common.mk) - -# Default notification/alarm sounds -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.config.notification_sound=Argon.ogg \ - ro.config.alarm_alert=Hassium.ogg - -ifneq ($(TARGET_BUILD_VARIANT),user) -# Thank you, please drive thru! -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += persist.sys.dun.override=0 -endif - -# Optional packages -PRODUCT_PACKAGES += \ - LiveWallpapersPicker \ - PhotoTable - -# Custom Lineage packages -PRODUCT_PACKAGES += \ - AudioFX \ - Backgrounds \ - Eleven \ - ExactCalculator \ - Jelly \ - LockClock \ - TrebuchetQuickStep \ - WeatherProvider - -# Exchange support -PRODUCT_PACKAGES += \ - Exchange2 - -# Berry styles -PRODUCT_PACKAGES += \ - LineageBlackTheme \ - LineageDarkTheme \ - LineageBlackAccent \ - LineageBlueAccent \ - LineageBrownAccent \ - LineageCyanAccent \ - LineageGreenAccent \ - LineageOrangeAccent \ - LineagePinkAccent \ - LineagePurpleAccent \ - LineageRedAccent \ - LineageYellowAccent - -# Charger -PRODUCT_PACKAGES += \ - charger_res_images - -# Custom off-mode charger -ifeq ($(WITH_LINEAGE_CHARGER),true) -PRODUCT_PACKAGES += \ - lineage_charger_res_images \ - font_log.png \ - libhealthd.lineage -endif - -# Media -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - media.recorder.show_manufacturer_and_model=true diff --git a/config/common_tv.mk b/config/common_tv.mk deleted file mode 100644 index 2a431681..00000000 --- a/config/common_tv.mk +++ /dev/null @@ -1,16 +0,0 @@ -# Inherit common Lineage stuff -$(call inherit-product, vendor/lineage/config/common.mk) - -# Inherit Lineage atv device tree -$(call inherit-product, device/lineage/atv/lineage_atv.mk) - -# Google source built packages -PRODUCT_PACKAGES += \ - LeanbackIME - -# Custom Lineage packages -PRODUCT_PACKAGES += \ - AppDrawer \ - LineageCustomizer - -DEVICE_PACKAGE_OVERLAYS += vendor/lineage/overlay/tv diff --git a/config/data_only.mk b/config/data_only.mk deleted file mode 100644 index e45a2d5c..00000000 --- a/config/data_only.mk +++ /dev/null @@ -1,8 +0,0 @@ -# World APN list -PRODUCT_PACKAGES += \ - apns-conf.xml - -# Telephony packages -PRODUCT_PACKAGES += \ - Stk \ - CellBroadcastReceiver diff --git a/config/lineage_audio.mk b/config/lineage_audio.mk deleted file mode 100644 index 5d97102e..00000000 --- a/config/lineage_audio.mk +++ /dev/null @@ -1,42 +0,0 @@ -# -# Lineage Audio Files -# - -ALARM_PATH := vendor/lineage/prebuilt/common/media/audio/alarms -NOTIFICATION_PATH := vendor/lineage/prebuilt/common/media/audio/notifications -RINGTONE_PATH := vendor/lineage/prebuilt/common/media/audio/ringtones - -# Alarms -PRODUCT_COPY_FILES += \ - $(ALARM_PATH)/CyanAlarm.ogg:system/media/audio/alarms/CyanAlarm.ogg \ - $(ALARM_PATH)/NuclearLaunch.ogg:system/media/audio/alarms/NuclearLaunch.ogg - -# Notifications -PRODUCT_COPY_FILES += \ - $(NOTIFICATION_PATH)/CyanDoink.ogg:system/media/audio/notifications/CyanDoink.ogg \ - $(NOTIFICATION_PATH)/CyanMail.ogg:system/media/audio/notifications/CyanMail.ogg \ - $(NOTIFICATION_PATH)/CyanMessage.ogg:system/media/audio/notifications/CyanMessage.ogg \ - $(NOTIFICATION_PATH)/Laser.ogg:system/media/audio/notifications/Laser.ogg \ - $(NOTIFICATION_PATH)/Naughty.ogg:system/media/audio/notifications/Naughty.ogg \ - $(NOTIFICATION_PATH)/Pong.ogg:system/media/audio/notifications/Pong.ogg \ - $(NOTIFICATION_PATH)/Rang.ogg:system/media/audio/notifications/Rang.ogg \ - $(NOTIFICATION_PATH)/Stone.ogg:system/media/audio/notifications/Stone.ogg - -# Ringtones -ifeq ($(TARGET_NEEDS_BOOSTED_SOUNDS),true) -PRODUCT_COPY_FILES += \ - $(RINGTONE_PATH)/boosted/Boxbeat.ogg:system/media/audio/ringtones/Boxbeat.ogg \ - $(RINGTONE_PATH)/boosted/CyanTone.ogg:system/media/audio/ringtones/CyanTone.ogg \ - $(RINGTONE_PATH)/boosted/Highscore.ogg:system/media/audio/ringtones/Highscore.ogg \ - $(RINGTONE_PATH)/boosted/Lyon.ogg:system/media/audio/ringtones/Lyon.ogg \ - $(RINGTONE_PATH)/boosted/Rockin.ogg:system/media/audio/ringtones/Rockin.ogg -else -PRODUCT_COPY_FILES += \ - $(RINGTONE_PATH)/Boxbeat.ogg:system/media/audio/ringtones/Boxbeat.ogg \ - $(RINGTONE_PATH)/CyanTone.ogg:system/media/audio/ringtones/CyanTone.ogg \ - $(RINGTONE_PATH)/Highscore.ogg:system/media/audio/ringtones/Highscore.ogg \ - $(RINGTONE_PATH)/Lyon.ogg:system/media/audio/ringtones/Lyon.ogg \ - $(RINGTONE_PATH)/Rockin.ogg:system/media/audio/ringtones/Rockin.ogg \ - $(RINGTONE_PATH)/Sheep.mp3:system/media/audio/ringtones/Sheep.mp3 \ - $(RINGTONE_PATH)/Yukaay.ogg:system/media/audio/ringtones/Yukaay.ogg -endif diff --git a/config/lineage_sdk_common.mk b/config/lineage_sdk_common.mk deleted file mode 100644 index cce8d931..00000000 --- a/config/lineage_sdk_common.mk +++ /dev/null @@ -1,42 +0,0 @@ -# Permissions for lineage sdk services -PRODUCT_COPY_FILES += \ - vendor/lineage/config/permissions/org.lineageos.audio.xml:system/etc/permissions/org.lineageos.audio.xml \ - vendor/lineage/config/permissions/org.lineageos.livedisplay.xml:system/etc/permissions/org.lineageos.livedisplay.xml \ - vendor/lineage/config/permissions/org.lineageos.performance.xml:system/etc/permissions/org.lineageos.performance.xml \ - vendor/lineage/config/permissions/org.lineageos.profiles.xml:system/etc/permissions/org.lineageos.profiles.xml \ - vendor/lineage/config/permissions/org.lineageos.settings.xml:system/etc/permissions/org.lineageos.settings.xml \ - vendor/lineage/config/permissions/org.lineageos.style.xml:system/etc/permissions/org.lineageos.style.xml \ - vendor/lineage/config/permissions/org.lineageos.trust.xml:system/etc/permissions/org.lineageos.trust.xml \ - vendor/lineage/config/permissions/org.lineageos.weather.xml:system/etc/permissions/org.lineageos.weather.xml - -# Lineage Platform Library -PRODUCT_PACKAGES += \ - org.lineageos.platform-res \ - org.lineageos.platform \ - org.lineageos.platform.xml - -# Lineage Hardware Abstraction Framework -PRODUCT_PACKAGES += \ - org.lineageos.hardware \ - org.lineageos.hardware.xml - -# JNI Libraries -PRODUCT_PACKAGES += \ - liblineage-sdk_platform_jni - -ifndef LINEAGE_PLATFORM_SDK_VERSION - # This is the canonical definition of the SDK version, which defines - # the set of APIs and functionality available in the platform. It - # is a single integer that increases monotonically as updates to - # the SDK are released. It should only be incremented when the APIs for - # the new release are frozen (so that developers don't write apps against - # intermediate builds). - LINEAGE_PLATFORM_SDK_VERSION := 9 -endif - -ifndef LINEAGE_PLATFORM_REV - # For internal SDK revisions that are hotfixed/patched - # Reset after each LINEAGE_PLATFORM_SDK_VERSION release - # If you are doing a release and this is NOT 0, you are almost certainly doing it wrong - LINEAGE_PLATFORM_REV := 0 -endif diff --git a/config/partner_gms.mk b/config/partner_gms.mk deleted file mode 100644 index 273aaa68..00000000 --- a/config/partner_gms.mk +++ /dev/null @@ -1,15 +0,0 @@ -ifeq ($(WITH_GMS),true) -ifeq ($(PRODUCT_IS_ATV),true) -$(call inherit-product-if-exists, vendor/partner_gms-tv/products/gms.mk) -else -ifeq ($(WITH_GMS_FI),true) -$(call inherit-product-if-exists, vendor/partner_gms/products/fi.mk) -else -ifeq ($(WITH_GMS_MINIMAL),true) -$(call inherit-product-if-exists, vendor/partner_gms/products/gms_minimal.mk) -else -$(call inherit-product-if-exists, vendor/partner_gms/products/gms.mk) -endif -endif -endif -endif diff --git a/config/permissions/backup.xml b/config/permissions/backup.xml deleted file mode 100644 index c335b298..00000000 --- a/config/permissions/backup.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> -<config> - <!-- Whitelist of what components are permitted as backup data transports. The - 'service' attribute here is a flattened ComponentName string. --> - <backup-transport-whitelisted-service - service="android/com.android.internal.backup.LocalTransportService" /> - <backup-transport-whitelisted-service - service="com.google.android.gms/.backup.BackupTransportService" /> - <backup-transport-whitelisted-service - service="com.google.android.gms/.backup.component.D2dTransportService" /> -</config>
\ No newline at end of file diff --git a/config/permissions/lineage-hiddenapi-package-whitelist.xml b/config/permissions/lineage-hiddenapi-package-whitelist.xml deleted file mode 100644 index f1cd1fa1..00000000 --- a/config/permissions/lineage-hiddenapi-package-whitelist.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - ~ Copyright (C) 2018 The LineageOS Project - ~ - ~ 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 - --> - -<!-- -This XML file declares which system apps should be exempted from the hidden API blacklisting, i.e. -which apps should be allowed to access the entire private API. Only apps NOT signed with the -platform cert need to be included, as apps signed with the platform cert are exempted by default. ---> - -<config> - <hidden-api-whitelisted-app package="org.lineageos.jelly" /> -</config> diff --git a/config/permissions/lineage-power-whitelist.xml b/config/permissions/lineage-power-whitelist.xml deleted file mode 100644 index b6545ba0..00000000 --- a/config/permissions/lineage-power-whitelist.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The LineageOS Project - - 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. ---> - -<config> - <allow-in-power-save package="com.android.deskclock" /> - <allow-in-power-save package="com.android.messaging" /> -</config> diff --git a/config/permissions/lineage-sysconfig.xml b/config/permissions/lineage-sysconfig.xml deleted file mode 100644 index 3330b1b8..00000000 --- a/config/permissions/lineage-sysconfig.xml +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017-2018 The LineageOS Project - - 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. ---> - -<config> - - <!-- Broadcast actions that are currently exempted from O+ background - delivery restrictions. --> - <allow-implicit-broadcast action="android.intent.action.CAMERA_BUTTON" /> - <allow-implicit-broadcast action="lineageos.intent.action.INITIALIZE_LINEAGE_HARDWARE" /> - <allow-implicit-broadcast action="lineageos.intent.action.LID_STATE_CHANGED" /> - -</config> diff --git a/config/permissions/org.lineageos.android.xml b/config/permissions/org.lineageos.android.xml deleted file mode 100644 index 970658d3..00000000 --- a/config/permissions/org.lineageos.android.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2012 The CyanogenMod Project - - 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. ---> - -<!-- This feature shows that this is LineageOS --> -<permissions> - <feature name="org.lineageos.android" /> -</permissions> - diff --git a/config/permissions/org.lineageos.audio.xml b/config/permissions/org.lineageos.audio.xml deleted file mode 100644 index f5f5f4db..00000000 --- a/config/permissions/org.lineageos.audio.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the PerformanceManagerService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.audio" /> -</permissions> diff --git a/config/permissions/org.lineageos.livedisplay.xml b/config/permissions/org.lineageos.livedisplay.xml deleted file mode 100644 index 22adee51..00000000 --- a/config/permissions/org.lineageos.livedisplay.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the PerformanceManagerService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.livedisplay" /> -</permissions> diff --git a/config/permissions/org.lineageos.performance.xml b/config/permissions/org.lineageos.performance.xml deleted file mode 100644 index 9468b6d3..00000000 --- a/config/permissions/org.lineageos.performance.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the PerformanceManagerService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.performance" /> -</permissions> diff --git a/config/permissions/org.lineageos.profiles.xml b/config/permissions/org.lineageos.profiles.xml deleted file mode 100644 index 2e55912f..00000000 --- a/config/permissions/org.lineageos.profiles.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the ProfileManagerService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.profiles" /> -</permissions> diff --git a/config/permissions/org.lineageos.settings.xml b/config/permissions/org.lineageos.settings.xml deleted file mode 100644 index f9dc00fc..00000000 --- a/config/permissions/org.lineageos.settings.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 The LineageOS Project - - 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. ---> - -<permissions> - <feature name="org.lineageos.settings" /> -</permissions> diff --git a/config/permissions/org.lineageos.style.xml b/config/permissions/org.lineageos.style.xml deleted file mode 100644 index d039fce0..00000000 --- a/config/permissions/org.lineageos.style.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 The LineageOS Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the StyleInterfaceService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.style" /> -</permissions> diff --git a/config/permissions/org.lineageos.trust.xml b/config/permissions/org.lineageos.trust.xml deleted file mode 100644 index 12b5b766..00000000 --- a/config/permissions/org.lineageos.trust.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2018 The LineageOS Project - - 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. ---> - -<permissions> - <!-- The feature listed here coincides with the TrustInterfaceService declared as - part of the external lineage service init in SystemServer. If this xml isn't present - on the device, the service will not be published as a binder service! - --> - <feature name="org.lineageos.trust" /> -</permissions> diff --git a/config/permissions/org.lineageos.weather.xml b/config/permissions/org.lineageos.weather.xml deleted file mode 100644 index d8d012a5..00000000 --- a/config/permissions/org.lineageos.weather.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<permissions> - <feature name="org.lineageos.weather" /> -</permissions> diff --git a/config/permissions/privapp-permissions-cm-legacy.xml b/config/permissions/privapp-permissions-cm-legacy.xml deleted file mode 100644 index e1157cac..00000000 --- a/config/permissions/privapp-permissions-cm-legacy.xml +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The LineageOS Project - - 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. ---> - -<permissions> - <privapp-permissions package="org.cyanogenmod.cmsettings"> - <permission name="android.permission.MANAGE_USERS"/> - </privapp-permissions> - - <privapp-permissions package="com.cyanogenmod.eleven"> - <permission name="android.permission.WRITE_MEDIA_STORAGE"/> - </privapp-permissions> - - <privapp-permissions package="org.cyanogenmod.snap"> - <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> - <permission name="android.permission.PREVENT_POWER_KEY"/> - <permission name="android.permission.WRITE_MEDIA_STORAGE"/> - </privapp-permissions> - -</permissions> diff --git a/config/permissions/privapp-permissions-lineage.xml b/config/permissions/privapp-permissions-lineage.xml deleted file mode 100644 index a53eb30d..00000000 --- a/config/permissions/privapp-permissions-lineage.xml +++ /dev/null @@ -1,104 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017-2019 The LineageOS Project - - 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. ---> - -<permissions> - <privapp-permissions package="com.android.camera2"> - <permission name="android.permission.BIND_WALLPAPER"/> - <permission name="android.permission.PREVENT_POWER_KEY"/> - </privapp-permissions> - - <!-- Additional permissions on top of privapp-permissions-platform.xml --> - <privapp-permissions package="com.android.dialer"> - <permission name="android.permission.CAPTURE_AUDIO_OUTPUT"/> - </privapp-permissions> - - <privapp-permissions package="com.android.fmradio"> - <permission name="android.permission.ACCESS_FM_RADIO"/> - <permission name="android.permission.MODIFY_AUDIO_ROUTING"/> - <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> - </privapp-permissions> - - <!-- Additional permissions on top of privapp-permissions-platform.xml --> - <privapp-permissions package="com.android.launcher3"> - <permission name="android.permission.MANAGE_ACTIVITY_STACKS"/> - <permission name="android.permission.STATUS_BAR"/> - </privapp-permissions> - - <!-- Additional permissions on top of privapp-permissions-platform.xml --> - <privapp-permissions package="com.android.systemui"> - <permission name="android.permission.MODIFY_DAY_NIGHT_MODE"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.audiofx"> - <permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/> - <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> - <permission name="android.permission.MODIFY_AUDIO_ROUTING"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.eleven"> - <permission name="android.permission.WRITE_MEDIA_STORAGE"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.flipflap"> - <permission name="android.permission.ACCESS_NOTIFICATIONS"/> - <permission name="android.permission.MODIFY_PHONE_STATE"/> - <permission name="android.permission.WRITE_SECURE_SETTINGS"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.lineageparts"> - <permission name="android.permission.CHANGE_CONFIGURATION"/> - <permission name="android.permission.CHANGE_OVERLAY_PACKAGES"/> - <permission name="android.permission.READ_SEARCH_INDEXABLES"/> - <permission name="android.permission.WRITE_MEDIA_STORAGE"/> - <permission name="android.permission.WRITE_SECURE_SETTINGS"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.lineagesettings"> - <permission name="android.permission.MANAGE_USERS"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.recorder"> - <permission name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT"/> - <permission name="android.permission.CAPTURE_VIDEO_OUTPUT"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.setupwizard"> - <permission name="android.permission.BACKUP"/> - <permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/> - <permission name="android.permission.CHANGE_CONFIGURATION"/> - <permission name="android.permission.GET_ACCOUNTS_PRIVILEGED"/> - <permission name="android.permission.INTERACT_ACROSS_USERS"/> - <permission name="android.permission.MANAGE_USERS"/> - <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/> - <permission name="android.permission.SET_TIME"/> - <permission name="android.permission.SET_TIME_ZONE"/> - <permission name="android.permission.STATUS_BAR"/> - <permission name="android.permission.WRITE_SECURE_SETTINGS"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.snap"> - <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> - <permission name="android.permission.PREVENT_POWER_KEY"/> - <permission name="android.permission.WRITE_MEDIA_STORAGE"/> - </privapp-permissions> - - <privapp-permissions package="org.lineageos.updater"> - <permission name="android.permission.ACCESS_CACHE_FILESYSTEM"/> - <permission name="android.permission.REBOOT"/> - <permission name="android.permission.RECOVERY"/> - </privapp-permissions> - -</permissions> diff --git a/config/permissions/vendor.lineage.biometrics.fingerprint.inscreen.xml b/config/permissions/vendor.lineage.biometrics.fingerprint.inscreen.xml deleted file mode 100644 index 2728e39a..00000000 --- a/config/permissions/vendor.lineage.biometrics.fingerprint.inscreen.xml +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2019 The LineageOS Project - - 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. ---> - -<permissions> - <feature name="vendor.lineage.biometrics.fingerprint.inscreen" /> -</permissions> diff --git a/config/telephony.mk b/config/telephony.mk deleted file mode 100644 index 069e82a1..00000000 --- a/config/telephony.mk +++ /dev/null @@ -1,22 +0,0 @@ -# Sensitive Phone Numbers list -PRODUCT_COPY_FILES += \ - vendor/lineage/prebuilt/common/etc/sensitive_pn.xml:system/etc/sensitive_pn.xml - -# World APN list -PRODUCT_PACKAGES += \ - apns-conf.xml - -# Telephony packages -PRODUCT_PACKAGES += \ - messaging \ - Stk \ - CellBroadcastReceiver - -# Default ringtone -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - ro.config.ringtone=Orion.ogg - -# Tethering - allow without requiring a provisioning app -# (for devices that check this) -PRODUCT_SYSTEM_DEFAULT_PROPERTIES += \ - net.tethering.noprovisioning=true diff --git a/config/twrp.mk b/config/twrp.mk deleted file mode 100644 index 6f755401..00000000 --- a/config/twrp.mk +++ /dev/null @@ -1 +0,0 @@ -RECOVERY_VARIANT := twrp diff --git a/libbfqio/Android.bp b/libbfqio/Android.bp deleted file mode 100644 index d9a7edbe..00000000 --- a/libbfqio/Android.bp +++ /dev/null @@ -1,44 +0,0 @@ -// -// Copyright (C) 2017-2019 The LineageOS Project -// -// 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. -// - -cc_library_headers { - name: "libbfqio_headers", - vendor_available: true, - export_include_dirs: ["include"], -} - -cc_library { - name: "libbfqio", - vendor_available: true, - srcs: [ - "bfqio.c", - ], - - shared_libs: [ - "libcutils", - "liblog", - ], - header_libs: [ - "libbfqio_headers", - ], - export_header_lib_headers: ["libbfqio_headers"], - - cflags: [ - "-Werror", - "-Wall", - "-Wextra", - ], -} diff --git a/libbfqio/bfqio.c b/libbfqio/bfqio.c deleted file mode 100644 index 0a4a21d3..00000000 --- a/libbfqio/bfqio.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2017 The LineageOS Project - * - * 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. - */ - -#define LOG_TAG "bfqio" - -#include <errno.h> -#include <fcntl.h> -#include <cutils/iosched_policy.h> -#include <log/log.h> -#include <pthread.h> -#include <string.h> -#include <sys/stat.h> -#include <unistd.h> - -static int __rtio_cgroup_supported = -1; -static pthread_once_t __rtio_init_once = PTHREAD_ONCE_INIT; - -static void __initialize_rtio(void) { - if (!access("/dev/bfqio/tasks", W_OK) || !access("/dev/bfqio/rt-display/tasks", W_OK)) { - __rtio_cgroup_supported = 1; - } else { - __rtio_cgroup_supported = 0; - } -} - -int android_set_rt_ioprio(int tid, int rt) { - int fd = -1, rc = -1; - - pthread_once(&__rtio_init_once, __initialize_rtio); - if (__rtio_cgroup_supported != 1) { - return -1; - } - - if (rt) { - fd = open("/dev/bfqio/rt-display/tasks", O_WRONLY | O_CLOEXEC); - } else { - fd = open("/dev/bfqio/tasks", O_WRONLY | O_CLOEXEC); - } - - if (fd < 0) { - return -1; - } - -#ifdef HAVE_GETTID - if (tid == 0) { - tid = gettid(); - } -#endif - - // specialized itoa -- works for tid > 0 - char text[22]; - char *end = text + sizeof(text) - 1; - char *ptr = end; - *ptr = '\0'; - while (tid > 0) { - *--ptr = '0' + (tid % 10); - tid = tid / 10; - } - - rc = write(fd, ptr, end - ptr); - if (rc < 0) { - /* - * If the thread is in the process of exiting, - * don't flag an error - */ - if (errno == ESRCH) { - rc = 0; - } else { - SLOGV("android_set_rt_ioprio failed to write '%s' (%s); fd=%d\n", - ptr, strerror(errno), fd); - } - } - - close(fd); - return rc; -} diff --git a/libbfqio/include/bfqio/bfqio.h b/libbfqio/include/bfqio/bfqio.h deleted file mode 100644 index 14392d94..00000000 --- a/libbfqio/include/bfqio/bfqio.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (C) 2017 The LineageOS Project - * - * 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. - */ - -#pragma once - -#ifdef __cplusplus -extern "C" { -#endif - -int android_set_rt_ioprio(int pid, int rt); - -#ifdef __cplusplus -} -#endif diff --git a/overlay/common/frameworks/base/core/res/res/drawable-hdpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-hdpi/default_wallpaper.png Binary files differdeleted file mode 100644 index 7d034789..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-hdpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png Binary files differdeleted file mode 100644 index 7259cc4b..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-nodpi/stat_sys_adb.xml b/overlay/common/frameworks/base/core/res/res/drawable-nodpi/stat_sys_adb.xml deleted file mode 100644 index 549d42f3..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-nodpi/stat_sys_adb.xml +++ /dev/null @@ -1,26 +0,0 @@ -<!-- - Copyright (C) 2017 The LineageOS Project - - 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. ---> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="24dp" - android:height="24dp" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:fillColor="#FFFFFFFF" - android:pathData="M12,6 C15.3,6,18,8.7,18,12 S15.3,18,12,18 S6,15.3,6,12 S8.7,6,12,6 M12,4 -C7.6,4,4,7.6,4,12 S7.6,20,12,20 S20,16.4,20,12 S16.4,4,12,4 Z M12,9 -C10.3,9,9,10.3,9,12 S10.3,15,12,15 S15,13.7,15,12 S13.7,9,12,9 Z" /> -</vector> diff --git a/overlay/common/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png Binary files differdeleted file mode 100644 index b37f4379..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-sw600dp-nodpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png Binary files differdeleted file mode 100644 index b37f4379..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-sw720dp-nodpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-xhdpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-xhdpi/default_wallpaper.png Binary files differdeleted file mode 100644 index e09990d7..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-xhdpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-xxhdpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-xxhdpi/default_wallpaper.png Binary files differdeleted file mode 100644 index b37f4379..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-xxhdpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/drawable-xxxhdpi/default_wallpaper.png b/overlay/common/frameworks/base/core/res/res/drawable-xxxhdpi/default_wallpaper.png Binary files differdeleted file mode 100644 index 734bfa65..00000000 --- a/overlay/common/frameworks/base/core/res/res/drawable-xxxhdpi/default_wallpaper.png +++ /dev/null diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc02/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc02/config.xml deleted file mode 100644 index e729cf4d..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc02/config.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The CyanogenMod Project - - 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. ---> - -<resources> - <!-- Configures the voicemail number for this MCC/MNC pair //--> - <string-array translatable="false" name="config_default_vm_number"> - <item>901</item> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml deleted file mode 100644 index e729cf4d..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc10/config.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The CyanogenMod Project - - 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. ---> - -<resources> - <!-- Configures the voicemail number for this MCC/MNC pair //--> - <string-array translatable="false" name="config_default_vm_number"> - <item>901</item> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc11/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc11/config.xml deleted file mode 100644 index e729cf4d..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc234-mnc11/config.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The CyanogenMod Project - - 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. ---> - -<resources> - <!-- Configures the voicemail number for this MCC/MNC pair //--> - <string-array translatable="false" name="config_default_vm_number"> - <item>901</item> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc268-mnc06/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc268-mnc06/config.xml deleted file mode 100644 index 238599c1..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc268-mnc06/config.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The CyanogenMod Project - - 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. ---> - -<resources> - <!-- Configures the voicemail number for this MCC/MNC pair //--> - <string-array translatable="false" name="config_default_vm_number"> - <item>200</item> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml deleted file mode 100644 index 4eb38e41..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc440-mnc20/config.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright 2013 The Android Open Source Project - - 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. ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources> - <!-- SoftBank maintains a MMS UserAgent whitelist, we must use one of the white-listed strings to be able to send/receive --> - <string name="config_mms_user_agent">Nexus5</string> - <string name="config_mms_user_agent_profile_url">http://www.google.com/oha/rdf/ua-profile-kila.xml</string> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values-mcc460/config.xml b/overlay/common/frameworks/base/core/res/res/values-mcc460/config.xml deleted file mode 100644 index 6a9b2088..00000000 --- a/overlay/common/frameworks/base/core/res/res/values-mcc460/config.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 2018, The LineageOS Project -** Copyright 2018-2019, The MoKee Open Source Project -** -** 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. -*/ ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Remote server that can provide NTP responses. --> - <string translatable="false" name="config_ntpServer">ntp.ntsc.ac.cn</string> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/colors.xml b/overlay/common/frameworks/base/core/res/res/values/colors.xml deleted file mode 100644 index 27fd690c..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/colors.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (c) 2018, The LineageOS Project - - 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. ---> -<resources> - <color name="accent_device_default_700">#167C80</color> - <color name="accent_device_default_dark">#167C80</color> - <color name="accent_device_default_light">#167C80</color> - <color name="material_deep_teal_200">#167C80</color> - <color name="material_deep_teal_500">#167C80</color> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/config.xml b/overlay/common/frameworks/base/core/res/res/values/config.xml deleted file mode 100644 index 51237257..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/config.xml +++ /dev/null @@ -1,97 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2013 The CyanogenMod Project - (C) 2017 The LineageOS Project - - 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. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string-array name="config_locationProviderPackageNames" translatable="false"> - <!-- The Google provider --> - <item>com.google.android.gms</item> - <!-- The standard AOSP fused location provider --> - <item>com.android.location.fused</item> - </string-array> - - <bool name="config_cellBroadcastAppLinks">true</bool> - - <!-- Disable stock OTA components if installed --> - <string-array name="config_globallyDisabledComponents" translatable="false"> - <item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateActivity</item> - <item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService$Receiver</item> - <item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService$SecretCodeReceiver</item> - <item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateServiceReceiver</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateActivity</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$Receiver</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$ActiveReceiver</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService$SecretCodeReceiver</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateServiceReceiver</item> - <item>com.google.android.setupwizard/com.google.android.setupwizard.time.DateTimeCheck</item> - </string-array> - - <!-- Force enabling of some services that could have been previously disabled --> - <string-array name="config_forceEnabledComponents" translatable="false"> - <item>com.google.android.gsf/com.google.android.gsf.update.SystemUpdateService</item> - <item>com.google.android.gms/com.google.android.gms.update.SystemUpdateService</item> - </string-array> - - <string name="config_mms_user_agent">LineageOS</string> - <string name="config_mms_user_agent_profile_url">http://www.google.com/oha/rdf/ua-profile-kila.xml</string> - - <!-- Enable lockscreen rotation by default --> - <bool name="config_enableLockScreenRotation">true</bool> - - <!-- Set this to true to enable the platform's auto-power-save modes like doze and - app standby. These are not enabled by default because they require a standard - cloud-to-device messaging service for apps to interact correctly with the modes - (such as to be able to deliver an instant message to the device even when it is - dozing). This should be enabled if you have such services and expect apps to - correctly use them when installed on your device. Otherwise, keep this disabled - so that applications can still use their own mechanisms. --> - <bool name="config_enableAutoPowerModes">true</bool> - - <!-- If this is true, long press on power button will be available from a - non-interactive state. --> - <bool name="config_supportLongPressPowerWhenNonInteractive">true</bool> - - <!-- Whether Multiuser UI should be shown --> - <bool name="config_enableMultiUserUI">true</bool> - - <!-- Maximum number of supported users --> - <integer name="config_multiuserMaximumUsers">4</integer> - - <!-- Flag indicating which package name can access the persistent data partition --> - <string name="config_persistentDataPackageName" translatable="false">com.google.android.gms</string> - - <!-- Set icon mask to circle --> - <string name="config_icon_mask" translatable="false">"M50 0A50 50,0,1,1,50 100A50 50,0,1,1,50 0"</string> - - <!-- Whether action menu items should be displayed in ALLCAPS or not. - Defaults to true. If this is not appropriate for specific locales - it should be disabled in that locale's resources. --> - <bool name="config_buttonTextAllCaps">false</bool> - - <!-- Flag indicating whether round icons should be parsed from the application manifest. --> - <bool name="config_useRoundIcon">true</bool> - - <!-- Whether or not swipe up gesture's opt-in setting is available on this device --> - <bool name="config_swipe_up_gesture_setting_available">true</bool> - - <!-- Whether or not we should show the option to show battery percentage --> - <bool name="config_battery_percentage_setting_available">false</bool> - - <!-- When true, the tethering upstream network follows the current default - Internet network (except when the current default network is mobile, - in which case a DUN network will be used if required). --> - <bool name="config_tether_upstream_automatic">true</bool> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/dimens.xml b/overlay/common/frameworks/base/core/res/res/values/dimens.xml deleted file mode 100644 index fe1baca5..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/dimens.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (c) 2006, The Android Open Source Project - * - * 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. -*/ ---> -<resources> - <dimen name="config_dialogCornerRadius">8.0dip</dimen> - <dimen name="config_buttonCornerRadius">4.0dip</dimen> - <dimen name="config_progressBarCornerRadius">1000.0dip</dimen> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml b/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml deleted file mode 100644 index 37c5f13e..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_device.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (C) 2017 The Android Open Source Project - * 2019 The LineageOS Project - * - * 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. - */ ---> -<resources> - <!-- A list of apps to be retained on the managed device by a particular vendor. - Takes precedence over the disallowed apps lists. --> - <string-array translatable="false" name="vendor_required_apps_managed_device"> - <item>com.android.vending</item> <!-- Google Play --> - <item>com.google.android.gms</item> <!-- Required by Play --> - <item>com.google.android.contacts</item> <!-- Google Contacts --> - <item>com.android.contacts</item> <!-- AOSP Contacts --> - <item>com.google.android.googlequicksearchbox</item> <!-- Google Launcher --> - <item>com.google.android.launcher</item> <!-- Google Launcher --> - <item>com.android.launcher3</item> <!-- AOSP Launcher --> - <item>com.google.android.dialer</item> <!-- Google dialer to enable making phone calls --> - <item>com.android.dialer</item> <!-- AOSP dialer --> - <item>com.google.android.apps.messaging</item> <!-- Google messaging to enable text messaging --> - <item>com.android.messaging</item> <!-- AOSP messaging --> - <item>com.google.android.setupwizard</item> <!-- Google SetupWizard --> - <item>org.lineageos.setupwizard</item> <!-- LineageOS SetupWizard --> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml b/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml deleted file mode 100644 index a27d4bfd..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_profile.xml +++ /dev/null @@ -1,29 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (C) 2017 The Android Open Source Project - * 2019 The LineageOS Project - * - * 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. - */ ---> -<resources> - <!-- A list of apps to be retained in the managed profile by a particular vendor. - Takes precedence over the disallowed apps lists. --> - <string-array translatable="false" name="vendor_required_apps_managed_profile"> - <item>com.android.vending</item> <!-- Google Play --> - <item>com.google.android.gms</item> <!-- Required by Play --> - <item>com.google.android.contacts</item> <!-- Google Contacts --> - <item>com.android.contacts</item> <!-- AOSP Contacts --> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_user.xml b/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_user.xml deleted file mode 100644 index 0099c83b..00000000 --- a/overlay/common/frameworks/base/core/res/res/values/vendor_required_apps_managed_user.xml +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (C) 2017 The Android Open Source Project - * 2019 The LineageOS Project - * - * 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. - */ ---> -<resources> - <!-- A list of apps to be retained on the managed user by a particular vendor. - Takes precedence over the disallowed apps lists. --> - <string-array translatable="false" name="vendor_required_apps_managed_user"> - <item>com.android.vending</item> <!-- Google Play --> - <item>com.google.android.gms</item> <!-- Required by Play --> - <item>com.google.android.contacts</item> <!-- Google Contacts --> - <item>com.android.contacts</item> <!-- AOSP Contacts --> - <item>com.google.android.googlequicksearchbox</item> <!-- Google Launcher --> - <item>com.google.android.launcher</item> <!-- Google Launcher --> - <item>com.android.launcher3</item> <!-- AOSP Launcher --> - <item>com.google.android.dialer</item> <!-- Google dialer to enable making phone calls --> - <item>com.android.dialer</item> <!-- AOSP dialer --> - <item>com.google.android.apps.messaging</item> <!-- Google messaging to enable text messaging --> - <item>com.android.messaging</item> <!-- AOSP messaging --> - </string-array> -</resources> diff --git a/overlay/common/frameworks/base/core/res/res/xml/config_webview_packages.xml b/overlay/common/frameworks/base/core/res/res/xml/config_webview_packages.xml deleted file mode 100644 index e05f4aa6..00000000 --- a/overlay/common/frameworks/base/core/res/res/xml/config_webview_packages.xml +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2016 The CyanogenMod Project - - 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. ---> - -<webviewproviders> - - <webviewprovider description="Chrome Stable" packageName="com.android.chrome" availableByDefault="true"> - <signature>MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK</signature> - </webviewprovider> - <webviewprovider description="Chrome Beta" packageName="com.chrome.beta"> - <signature>MIIDwzCCAqugAwIBAgIJAOoj9MXoVhH6MA0GCSqGSIb3DQEBBQUAMHgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEUMBIGA1UEAwwLY2hyb21lX2JldGEwHhcNMTYwMjI5MTUxNTIzWhcNNDMwNzE3MTUxNTIzWjB4MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91bnRhaW4gVmlldzEUMBIGA1UECgwLR29vZ2xlIEluYy4xEDAOBgNVBAsMB0FuZHJvaWQxFDASBgNVBAMMC2Nocm9tZV9iZXRhMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo/wW27nRxVqGbFOyXr8jtv2pc2Ke8XMr6Sfs+3JK2licVaAljGFpLtWH4wUdb50w/QQSPALNLSSyuK/94rtp5Jjs4RSJI+whuewV/R6El+mFXBO3Ek5/op4UrOsR91IM4emvS67Ji2u8gp5EmttVgJtllFZCbtZLPmKuTaOkOB+EdWIxrYiHVEEaAcQpEHa9UgWUZ0bMfPj8j3F0w+Ak2ttmTjoFGLaZjuBAYwfdctN1b0sdLT9Lif45kMCb8QwPp0F9/ozs0rrTc+I6vnTS8kfFQfk7GIE4Hgm+cYQEHkIA6gLJxUVWvPZGdulAZw7wPt/neOkazHNZPcV4pYuNLQIDAQABo1AwTjAdBgNVHQ4EFgQU5t7dhcZfOSixRsiJ1E46JhzPlwowHwYDVR0jBBgwFoAU5t7dhcZfOSixRsiJ1E46JhzPlwowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAZO2jB8P1d8ki3KZILvp27a2VM3DInlp8I8UgG3gh7nBQfTrnZr5M1PL8eFHqX7MEvAiGCMTcrPklEhjtcHK/c7BcdeCWq6oL56UK3JTl33RxJcjmjrz3e3VI6ehRSm1feNAkMD0Nr2RWr2LCYheAEmwTPtluLOJS+i7WhnXJzBtg5UpUFEbdFYenqUbDzya+cUVp0197k7hUTs8/Hxs0wf79o/TZXzTBq9eYQkiITonRN8+5QCBl1XmZKV0IHkzGFES1RP+fTiZpIjZT+W4tasHgs9QTTks4CCpyHBAy+uy7tApe1AxCzihgecCfUN1hWIltKwGZS6EE0bu0OXPzaQ==</signature> - </webviewprovider> - <webviewprovider description="Chrome Dev" packageName="com.chrome.dev"> - <signature>MIIDwTCCAqmgAwIBAgIJAOSN+O0cdii5MA0GCSqGSIb3DQEBBQUAMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDETMBEGA1UEAwwKY2hyb21lX2RldjAeFw0xNjAyMjkxNzUwMDdaFw00MzA3MTcxNzUwMDdaMHcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDETMBEGA1UEAwwKY2hyb21lX2RldjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOYPj6Y9rVt8xizSHDYjDEkDfFZAgSiZ9T6tevkQXsFyfaq3Gk3h2qssi29G6cTPJ2VXFKlVB71wSXv5p9/LEcDQPWQiO3Q2cLmgUXxyhJWXI3g96tPAhZQX2q6SC37ZQdiBR/raMO70DAkvCyBGtNplsvutzSE3oZ7LYfzB8vTbe7zCh3fDYSS/7xb3ZVvFqydHS40uVq1qqg1S80Pge7tW3pDGsPMZN7yA4yfmsvA1rbHm9N8t3Rc9hqzh6OxNAAgRB535YcsWL7iF+mpdFILXk3jLYT0nMvMnB83rsdgnRREjlGQYHl2mh8+6CqujsW/eICDq/LR6BYDyqHhk0ECAwEAAaNQME4wHQYDVR0OBBYEFKzsl07JglgpbeYDYGqsgqRDo+01MB8GA1UdIwQYMBaAFKzsl07JglgpbeYDYGqsgqRDo+01MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBACka6SFF6xAcj8L8O6R36++E09DTiGZEjvKT8eIycgcQQ+p1WUmPb6M2EJpN6zvvSE62ussmXdzf8rIyc0JXA8jbViZt62Y39epNENFxPTLN9QzXlT+w8AW73Ka3cnbOuL5EgoDl8fM79WVlARY3X+wB/jGNrkiGIdRm2IZIeAodWgC2mtXMiferyYBKz2/F2bhnU6DwgCbegS8trFjEWviijWdJ+lBdobn7LRc3orZCtHl8UyvRDi7cye3sK9y3BM39k0g20F21wTNHAonnvL6zbuNgpd+UEsVxDpOeWrEdBFN7Md0CI2wnu8eA8ljJD45v0WWMEoxsIi131g5piNM=</signature> - </webviewprovider> - <webviewprovider description="Chrome Canary" packageName="com.chrome.canary"> - <signature>MIIDxzCCAq+gAwIBAgIJAML7APITsgV7MA0GCSqGSIb3DQEBBQUAMHoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEWMBQGA1UEAwwNY2hyb21lX2NhbmFyeTAeFw0xNjAyMjkxOTA5MDdaFw00MzA3MTcxOTA5MDdaMHoxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEWMBQGA1UEAwwNY2hyb21lX2NhbmFyeTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANXfeAoZlr0ya1HBzIfAz/nLLjpPJeAPvuX5dueaxmiQgv2hNG22acriFuiiJI6TU0t8AIVJD5Ifbc4OOuA0zeFhdzWWGnmTRH6x27WI7bzOKnAqOvv21ZBmE9i8Vo++K13xWdTs3qVn1bn9oUONxFu0wKDzXYZhoj1Jom0RZGjXm16xuPlEuOzMcjiNBDoYuxPAXkMcK/G1gP4P4nAV8Rd/GGIjKRS/SUtcShhoAMOQhs4WIEkUrvEVRwhBDIbpM87oFbCVdBH38r0XS6F6CdhPJsKFhoEfq4c01HZqNmDpCPA8AAcCuSWqmXoTIqs7OqkWgduE2bInbWU7WMaTl+kCAwEAAaNQME4wHQYDVR0OBBYEFB/AsC4iPAqaLoNytNSx29qByI7+MB8GA1UdIwQYMBaAFB/AsC4iPAqaLoNytNSx29qByI7+MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAMb2Td3ro/+MGVnCPAbwBSOZMVLUKGqt6zr8CShW9mtFHnmy29EaWSYYAj1M4+6Vpkq85NsgBEck7rnUjV8A3Q0NKdTys1KRKJqVvQRBN6SwqQenSf/abxQCa8Z+69rh+3BkIU1HLtu5lrMDZwon5H91L5mpORn6vItd20uW132lwSDeUEW2CHslTrodoFuTUcSUlRiq/URfUH3baO1QHXkxpQwrBPKL5deJfcZnxh5MAtAGSQL7gHvayEFlDppETXdDO7vgGTH2dEK2TjKWALbGiKkxSqjRyTNt4/FOj10TqNRdUamj+ydVJgzGQ8bki4Vc6NnKm/r4asusxapkVR4=</signature> - </webviewprovider> - <webviewprovider description="Google WebView" packageName="com.google.android.webview" availableByDefault="true"> - <signature>MIIDuzCCAqOgAwIBAgIJANi6DgBQG4ZTMA0GCSqGSIb3DQEBBQUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEQMA4GA1UEAwwHd2VidmlldzAeFw0xNDA4MDgyMzIwMjBaFw00MTEyMjQyMzIwMjBaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQHDA1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKDAtHb29nbGUgSW5jLjEQMA4GA1UECwwHQW5kcm9pZDEQMA4GA1UEAwwHd2VidmlldzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbtaFX0r5aZJMAbPVMAgK1ZZ29dTn91VsGxXv2hqrQo7IpqEy2JmPvPnoMsSiuTAe+UcQy8oKDQ2aYVSAd1DGIy+nSRyFTt3LSIAdwSBkB1qT4a+OqkpsR6bSNXQXQ18lCQu9gREY3h3QlYBQAyzRxw4hRGlrXAzuSz1Ec4W+6x4nLG5DG61MAMR8ClF9XSqbmGB3kyZ70A0X9OPYYxiMWP1ExaYvpaVqjyZZcrPwr+vtW8oCuGBUtHpBUH3OoG+9s2YMcgLG7vCK9awKDqlPcJSpIAAj6uGs4gORmkqxZRMskLSTWbhP4p+3Ap8jYzTVB6Y1/DMVmYTWRMcPW0macCAwEAAaNQME4wHQYDVR0OBBYEFJ6bAR6/QVm4w9LRSGQiaR5Rhp3TMB8GA1UdIwQYMBaAFJ6bAR6/QVm4w9LRSGQiaR5Rhp3TMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAEQu8QiVxax7/diEiJrgKE1LwdXsIygJK/KnaKdnYEkAQpeu/QmrLiycm+OFbL1qHJIB7OuI/PQBUtcaNSiJSCVgtwtEbZWWIdsynqG/Nf4aGOndXegSQNRH54M05sRHLoeRycPrY7xQlEwGikNFR76+5UdwFBQI3Gn22g6puJnVukQm/wXQ+ajoiS4QclrNlixoDQsZ4STLH4+Wju2wIWKFFArIhVEIlbamq+p6BghuzH3aIz/Fy0YTQKi7SA+0fuNeCaqlSm5pYSt6p5CH89y1Fr+wFc5r3iLRnUwRcy08ESC7bZJnxV3d/YQ5valTxBbzku/dQbXVj/xg69H8l8M</signature> - </webviewprovider> - - <!-- The default WebView implementation --> - <webviewprovider description="AOSP WebView" packageName="com.android.webview" availableByDefault="true" /> - -</webviewproviders> diff --git a/overlay/common/frameworks/base/packages/Keyguard/res/values/config.xml b/overlay/common/frameworks/base/packages/Keyguard/res/values/config.xml deleted file mode 100644 index 1e69bdaf..00000000 --- a/overlay/common/frameworks/base/packages/Keyguard/res/values/config.xml +++ /dev/null @@ -1,24 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2013 The CyanogenMod Project - - 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. ---> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- default to disabling the menu key. The Lineage setting to - do this is a no-op unless the below item is true --> - <bool name="config_disableMenuKeyInLockScreen">true</bool> - - <!-- config for showing AM/PM on lock screen in 12hour format --> - <bool name="config_showAmpm">false</bool> -</resources> diff --git a/overlay/common/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/overlay/common/frameworks/base/packages/SettingsProvider/res/values/defaults.xml deleted file mode 100644 index fd15ab86..00000000 --- a/overlay/common/frameworks/base/packages/SettingsProvider/res/values/defaults.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2009, The Android Open Source Project - * - * 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. - */ ---> -<resources> - <bool name="def_wifi_on">true</bool> - - <string name="def_backup_transport">com.google.android.gms/.backup.BackupTransportService</string> -</resources> diff --git a/overlay/common/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml b/overlay/common/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml deleted file mode 100644 index eb509505..00000000 --- a/overlay/common/frameworks/base/packages/SystemUI/res/values-sw600dp/config.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2019 The LineageOS Project - - 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. ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <!-- Set to true to enable the user switcher on the keyguard. --> - <bool name="config_keyguardUserSwitcher">false</bool> -</resources> diff --git a/overlay/common/frameworks/base/packages/SystemUI/res/values/config.xml b/overlay/common/frameworks/base/packages/SystemUI/res/values/config.xml deleted file mode 100644 index 363e254b..00000000 --- a/overlay/common/frameworks/base/packages/SystemUI/res/values/config.xml +++ /dev/null @@ -1,34 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2014 The CyanogenMod Project - - 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. ---> - -<!-- These resources are around just to allow their values to be customized - for different hardware and product builds. --> -<resources> - <!-- Control whether status bar should distinguish HSPA data icon - from UMTS data icon on devices --> - <bool name="config_hspa_data_distinguishable">true</bool> - - <!-- Should "4G" be shown instead of "LTE" when the network is NETWORK_TYPE_LTE? --> - <bool name="config_show4GForLTE">false</bool> - - <bool name="quick_settings_show_full_alarm">true</bool> - - <!-- If true, enable the advance anti-falsing classifier on the lockscreen. On some devices it - does not work well, particularly with noisy touchscreens. Note that disabling it may - increase the rate of unintentional unlocks. --> - <bool name="config_lockscreenAntiFalsingClassifierEnabled">false</bool> -</resources> diff --git a/overlay/common/frameworks/base/packages/SystemUI/res/values/dimens.xml b/overlay/common/frameworks/base/packages/SystemUI/res/values/dimens.xml deleted file mode 100644 index f380aad4..00000000 --- a/overlay/common/frameworks/base/packages/SystemUI/res/values/dimens.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - * Copyright (c) 2006, The Android Open Source Project - * - * 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. -*/ ---> -<resources> - <dimen name="rounded_corner_content_padding">8dp</dimen> -</resources> diff --git a/overlay/common/lineage-sdk/packages/LineageSettingsProvider/res/values/defaults.xml b/overlay/common/lineage-sdk/packages/LineageSettingsProvider/res/values/defaults.xml deleted file mode 100644 index 56031b7f..00000000 --- a/overlay/common/lineage-sdk/packages/LineageSettingsProvider/res/values/defaults.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2014-2015 The CyanogenMod Project - - 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. ---> -<resources> - <!-- Defaults for Secure --> - - <!-- Default for LineageSettings.Secure.STATS_COLLECTION --> - <bool name="def_stats_collection">true</bool> -</resources> diff --git a/overlay/common/packages/apps/DocumentsUI/res/values/config.xml b/overlay/common/packages/apps/DocumentsUI/res/values/config.xml deleted file mode 100644 index 3d40342e..00000000 --- a/overlay/common/packages/apps/DocumentsUI/res/values/config.xml +++ /dev/null @@ -1,27 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2015 The Android Open Source Project - - 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. ---> - -<resources> - - <!-- Flags setup as productivity oriented in which case Downloads app will be presented - as Files app. Including showing of the Documents and "advanced" roots. --> - <bool name="show_documents_root">true</bool> - - <!-- Indicates if internal storage is shown as default or not. --> - <bool name="config_default_show_device_root">true</bool> - - <string name="default_root_uri" translatable="false">content://com.android.externalstorage.documents/root/primary</string> -</resources> diff --git a/overlay/common/packages/apps/Settings/res/values/bools.xml b/overlay/common/packages/apps/Settings/res/values/bools.xml deleted file mode 100644 index 2060de12..00000000 --- a/overlay/common/packages/apps/Settings/res/values/bools.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright 2017 The Android Open Source Project - - 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. ---> - -<resources> - <!-- Whether to show a preference item for mobile plan --> - <bool name="config_show_mobile_plan">false</bool> - - <!-- Whether wallpaper attribution should be shown or not. --> - <bool name="config_show_wallpaper_attribution">false</bool> -</resources> diff --git a/overlay/common/packages/apps/Settings/res/values/config.xml b/overlay/common/packages/apps/Settings/res/values/config.xml deleted file mode 100644 index 79be7c5d..00000000 --- a/overlay/common/packages/apps/Settings/res/values/config.xml +++ /dev/null @@ -1,26 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright 2016 The ??? Project - - 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. ---> -<resources> - <!-- When true enable gesture setting. --> - <bool name="config_gesture_settings_enabled">true</bool> - - <!-- If the Storage Manager settings are enabled. --> - <bool name="config_storage_manager_settings_enabled">true</bool> - - <!-- Does the device allow updating the recovery. --> - <bool name="config_enableRecoveryUpdater">false</bool> -</resources> diff --git a/overlay/common/packages/apps/Settings/res/values/dimens.xml b/overlay/common/packages/apps/Settings/res/values/dimens.xml deleted file mode 100644 index 5c0b800e..00000000 --- a/overlay/common/packages/apps/Settings/res/values/dimens.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright 2018 The Android Open Source Project - - 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. ---> - -<resources> - <dimen name="search_bar_corner_radius">24.0dip</dimen> - <dimen name="suggestion_card_corner_radius">8.0dip</dimen> -</resources> diff --git a/overlay/common/packages/apps/Settings/res/values/strings.xml b/overlay/common/packages/apps/Settings/res/values/strings.xml deleted file mode 100644 index 93758ea3..00000000 --- a/overlay/common/packages/apps/Settings/res/values/strings.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright 2015 The CyanogenMod Project - - 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. ---> -<resources> - <!-- Help URL, Tap & pay [DO NOT TRANSLATE] --> - <string name="help_url_nfc_payment" translatable="false">https://support.google.com/wallet/answer/1347934</string> - - <!-- Help URL, Fingerprint [DO NOT TRANSLATE] --> - <string name="help_url_fingerprint" translatable="false">https://support.google.com</string> -</resources> - diff --git a/overlay/common/packages/apps/Trebuchet/res/values/config.xml b/overlay/common/packages/apps/Trebuchet/res/values/config.xml deleted file mode 100644 index ba160aef..00000000 --- a/overlay/common/packages/apps/Trebuchet/res/values/config.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright 2013 The Android Open Source Project - - 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. ---> -<resources> - - <!-- Enable backups --> - <bool name="enable_backup">true</bool> - <string name="backup_api_key">AEdPqrEAAAAIDoOx_2qXwj5RZmKa0fpkv1aqEldrwBp-pnv6Sg</string> - -</resources> diff --git a/overlay/common/packages/inputmethods/LatinIME/java/res/values/gesture-input.xml b/overlay/common/packages/inputmethods/LatinIME/java/res/values/gesture-input.xml deleted file mode 100644 index 445a389b..00000000 --- a/overlay/common/packages/inputmethods/LatinIME/java/res/values/gesture-input.xml +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** -** Copyright 2012, The Android Open Source Project -** -** 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. -*/ ---> -<resources> - <bool name="config_gesture_input_enabled_by_build_config">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc204-mnc04/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc204-mnc04/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc204-mnc04/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc00/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc00/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc00/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc002/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc002/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc002/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc003/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc003/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc003/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc004/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc004/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc004/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc005/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc005/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc005/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc006/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc006/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc006/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc012/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc012/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc012/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc480/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc480/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc480/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc481/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc481/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc481/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc483/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc483/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc483/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc486/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc486/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc486/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc489/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc489/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc489/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc99/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc310-mnc99/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc310-mnc99/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc480/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc311-mnc480/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc480/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc482/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc311-mnc482/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc482/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc485/config.xml b/overlay/common/packages/services/Telephony/res/values-mcc311-mnc485/config.xml deleted file mode 100644 index 31cacc4a..00000000 --- a/overlay/common/packages/services/Telephony/res/values-mcc311-mnc485/config.xml +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources> - <!-- Flag to enable VVM3 visual voicemail. VVM3 is used by Verizon Wireless. --> - <bool name="vvm3_enabled">true</bool> -</resources> diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_bg.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_bg.dict Binary files differdeleted file mode 100644 index 322186b5..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_bg.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_cs.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_cs.dict Binary files differdeleted file mode 100644 index 475bcd94..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_cs.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_da.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_da.dict Binary files differdeleted file mode 100644 index bed1e0a3..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_da.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_el.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_el.dict Binary files differdeleted file mode 100644 index 89c479a5..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_el.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_au.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_au.dict Binary files differdeleted file mode 100644 index 644e7ff4..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_au.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_gb.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_gb.dict Binary files differdeleted file mode 100644 index 77145c7d..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_gb.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_us.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_us.dict Binary files differdeleted file mode 100644 index 21be6e24..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_en_us.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_fi.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_fi.dict Binary files differdeleted file mode 100644 index ca63abba..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_fi.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hr.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hr.dict Binary files differdeleted file mode 100644 index fb799ce6..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hr.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hu.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hu.dict Binary files differdeleted file mode 100644 index 0b05b265..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_hu.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_iw.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_iw.dict Binary files differdeleted file mode 100644 index 448135f6..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_iw.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ka.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ka.dict Binary files differdeleted file mode 100644 index 86c49f5f..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ka.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lb.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lb.dict Binary files differdeleted file mode 100644 index 99cc4080..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lb.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lt.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lt.dict Binary files differdeleted file mode 100644 index 72849931..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lt.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lv.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lv.dict Binary files differdeleted file mode 100644 index 73bb20da..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_lv.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nb.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nb.dict Binary files differdeleted file mode 100644 index e99b5134..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nb.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nl.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nl.dict Binary files differdeleted file mode 100644 index 2be0fabc..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_nl.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pl.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pl.dict Binary files differdeleted file mode 100644 index f55af662..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pl.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pt_pt.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pt_pt.dict Binary files differdeleted file mode 100644 index f66c9d64..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_pt_pt.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ro.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ro.dict Binary files differdeleted file mode 100644 index 0c950bd0..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_ro.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sl.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sl.dict Binary files differdeleted file mode 100644 index 573231e2..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sl.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sr.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sr.dict Binary files differdeleted file mode 100644 index 0accc33b..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sr.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sv.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sv.dict Binary files differdeleted file mode 100644 index abad6b4a..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_sv.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_tr.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_tr.dict Binary files differdeleted file mode 100644 index 3951fa23..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_tr.dict +++ /dev/null diff --git a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_uk.dict b/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_uk.dict Binary files differdeleted file mode 100644 index 15715cf6..00000000 --- a/overlay/dictionaries/packages/inputmethods/LatinIME/java/res/raw/main_uk.dict +++ /dev/null diff --git a/overlay/tv/frameworks/base/packages/SettingsProvider/res/values/lineage_defaults.xml b/overlay/tv/frameworks/base/packages/SettingsProvider/res/values/lineage_defaults.xml deleted file mode 100644 index 27b61919..00000000 --- a/overlay/tv/frameworks/base/packages/SettingsProvider/res/values/lineage_defaults.xml +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/** - * Copyright (c) 2018, The LineageOS Project - * - * 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. - */ ---> -<resources> - <string name="def_tv_user_setup_complete" translatable="false">false</string> -</resources> diff --git a/overlay/tv/lineage-sdk/lineage/res/res/values/config.xml b/overlay/tv/lineage-sdk/lineage/res/res/values/config.xml deleted file mode 100644 index 6daf7b13..00000000 --- a/overlay/tv/lineage-sdk/lineage/res/res/values/config.xml +++ /dev/null @@ -1,39 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- - Copyright (C) 2017 The LineageOS Project - - 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. ---> - -<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - - <!-- Disable LiveDisplay on ATV --> - <integer name="config_defaultLiveDisplayMode">0</integer> - - <!-- Control the behavior when the user double-taps the home button. - 0 - Nothing - 1 - Menu key - 2 - Recent apps view in SystemUI - 3 - Launch assist intent - 4 - Voice Search - 5 - In-app Search - 6 - Launch camera - 7 - Sleep - 8 - Last app - 9 - Toggle split screen - This needs to match the enums in - sdk/src/java/org/lineageos/internal/util/DeviceKeysConstants.java. - --> - <integer name="config_doubleTapOnHomeBehavior">2</integer> - -</resources> diff --git a/prebuilt/common/Android.mk b/prebuilt/common/Android.mk deleted file mode 100644 index 83eecee9..00000000 --- a/prebuilt/common/Android.mk +++ /dev/null @@ -1,38 +0,0 @@ -LOCAL_PATH := $(call my-dir) - -# a wrapper for curl which provides wget syntax, for compatibility -include $(CLEAR_VARS) -LOCAL_MODULE := wget -LOCAL_SRC_FILES := bin/wget -LOCAL_MODULE_TAGS := optional -LOCAL_MODULE_CLASS := EXECUTABLES -LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES) -include $(BUILD_PREBUILT) - -################################ -# Copies the APN list file into system/etc for the product as apns-conf.xml. -# In the case where $(CUSTOM_APNS_FILE) is defined, the content of $(CUSTOM_APNS_FILE) -# is added or replaced to the $(DEFAULT_APNS_FILE). -include $(CLEAR_VARS) - -LOCAL_MODULE := apns-conf.xml -LOCAL_MODULE_CLASS := ETC - -DEFAULT_APNS_FILE := vendor/lineage/prebuilt/common/etc/apns-conf.xml - -ifdef CUSTOM_APNS_FILE -CUSTOM_APNS_SCRIPT := vendor/lineage/tools/custom_apns.py -FINAL_APNS_FILE := $(local-generated-sources-dir)/apns-conf.xml - -$(FINAL_APNS_FILE): PRIVATE_SCRIPT := $(CUSTOM_APNS_SCRIPT) -$(FINAL_APNS_FILE): PRIVATE_CUSTOM_APNS_FILE := $(CUSTOM_APNS_FILE) -$(FINAL_APNS_FILE): $(CUSTOM_APNS_SCRIPT) $(DEFAULT_APNS_FILE) - rm -f $@ - python $(PRIVATE_SCRIPT) $@ $(PRIVATE_CUSTOM_APNS_FILE) -else -FINAL_APNS_FILE := $(DEFAULT_APNS_FILE) -endif - -LOCAL_PREBUILT_MODULE_FILE := $(FINAL_APNS_FILE) - -include $(BUILD_PREBUILT) diff --git a/prebuilt/common/bin/50-lineage.sh b/prebuilt/common/bin/50-lineage.sh deleted file mode 100755 index 0158744d..00000000 --- a/prebuilt/common/bin/50-lineage.sh +++ /dev/null @@ -1,43 +0,0 @@ -#!/sbin/sh -# -# ADDOND_VERSION=2 -# -# /system/addon.d/50-lineage.sh -# During a LineageOS 16.0 upgrade, this script backs up /system/etc/hosts, -# /system is formatted and reinstalled, then the file is restored. -# - -. /tmp/backuptool.functions - -list_files() { -cat <<EOF -etc/hosts -EOF -} - -case "$1" in - backup) - list_files | while read FILE DUMMY; do - backup_file $S/"$FILE" - done - ;; - restore) - list_files | while read FILE REPLACEMENT; do - R="" - [ -n "$REPLACEMENT" ] && R="$S/$REPLACEMENT" - [ -f "$C/$S/$FILE" ] && restore_file $S/"$FILE" "$R" - done - ;; - pre-backup) - # Stub - ;; - post-backup) - # Stub - ;; - pre-restore) - # Stub - ;; - post-restore) - # Stub - ;; -esac diff --git a/prebuilt/common/bin/backuptool.functions b/prebuilt/common/bin/backuptool.functions deleted file mode 100644 index 4319b783..00000000 --- a/prebuilt/common/bin/backuptool.functions +++ /dev/null @@ -1,43 +0,0 @@ -#!/sbin/sh -# -# Functions for backuptool.sh -# - -copy_file() { - cp -dp "$1" "$2" - # symlinks don't have a context - if [ ! -L "$1" ]; then - # it is assumed that every label starts with 'u:object_r' and has no white-spaces - local context=`ls -Z "$1" | grep -o 'u:object_r:[^ ]*' | head -1` - chcon "$context" "$2" - fi -} - -backup_file() { - if [ -e "$1" -o -L "$1" ]; then - local F=`basename "$1"` - local D=`dirname "$1"` - # dont backup any apps that have odex files, they are useless - if ( echo "$F" | grep -q "\.apk$" ) && [ -e `echo "$1" | sed -e 's/\.apk$/\.odex/'` ]; then - echo "Skipping odexed apk $1"; - else - mkdir -p "$C/$D" - copy_file "$1" "$C/$D/$F" - fi - fi -} - -restore_file() { - local FILE=`basename "$1"` - local DIR=`dirname "$1"` - if [ -e "$C/$DIR/$FILE" -o -L "$C/$DIR/$FILE" ]; then - if [ ! -d "$DIR" ]; then - mkdir -p "$DIR"; - fi - copy_file "$C/$DIR/$FILE" "$1"; - if [ -n "$2" ]; then - echo "Deleting obsolete file $2" - rm "$2"; - fi - fi -} diff --git a/prebuilt/common/bin/backuptool.sh b/prebuilt/common/bin/backuptool.sh deleted file mode 100755 index 7ab703ee..00000000 --- a/prebuilt/common/bin/backuptool.sh +++ /dev/null @@ -1,122 +0,0 @@ -#!/sbin/sh -# -# Backup and restore addon /system files -# - -export C=/tmp/backupdir -export SYSDEV="$(readlink -nf "$2")" -export SYSFS="$3" -export V=16.0 - -export ADDOND_VERSION=1 - -# Scripts in /system/addon.d expect to find backuptool.functions in /tmp -cp -f /tmp/install/bin/backuptool.functions /tmp - -# Preserve /system/addon.d in /tmp/addon.d -preserve_addon_d() { - if [ -d $S/addon.d/ ]; then - mkdir -p /tmp/addon.d/ - cp -a $S/addon.d/* /tmp/addon.d/ - - # Discard any scripts that aren't at least our version level - for f in /postinstall/tmp/addon.d/*sh; do - SCRIPT_VERSION=$(grep "^# ADDOND_VERSION=" $f | cut -d= -f2) - if [ -z "$SCRIPT_VERSION" ]; then - SCRIPT_VERSION=1 - fi - if [ $SCRIPT_VERSION -lt $ADDOND_VERSION ]; then - rm $f - fi - done - - chmod 755 /tmp/addon.d/*.sh - fi -} - -# Restore /system/addon.d from /tmp/addon.d -restore_addon_d() { - if [ -d /tmp/addon.d/ ]; then - mkdir -p $S/addon.d/ - cp -a /tmp/addon.d/* $S/addon.d/ - rm -rf /tmp/addon.d/ - fi -} - -# Proceed only if /system is the expected major and minor version -check_prereq() { -# If there is no build.prop file the partition is probably empty. -if [ ! -r $S/build.prop ]; then - return 1 -fi -if ! grep -q "^ro.lineage.version=$V.*" $S/build.prop; then - echo "Not backing up files from incompatible version: $V" - return 2 -fi -return 0 -} - -# Execute /system/addon.d/*.sh scripts with $1 parameter -run_stage() { -if [ -d /tmp/addon.d/ ]; then - for script in $(find /tmp/addon.d/ -name '*.sh' |sort -n); do - $script $1 - done -fi -} - -determine_system_mount() { - if grep -q -e"^$SYSDEV" /proc/mounts; then - umount $(grep -e"^$SYSDEV" /proc/mounts | cut -d" " -f2) - fi - - if [ -d /system_root ]; then - SYSMOUNT="/system_root" - export S=/system_root/system - else - SYSMOUNT="/system" - export S=/system - fi - -} - -mount_system() { - mount -t $SYSFS $SYSDEV $SYSMOUNT -o rw,discard -} - -unmount_system() { - umount $SYSMOUNT -} - -determine_system_mount - -case "$1" in - backup) - mount_system - if check_prereq; then - mkdir -p $C - preserve_addon_d - run_stage pre-backup - run_stage backup - run_stage post-backup - fi - unmount_system - ;; - restore) - mount_system - if check_prereq; then - run_stage pre-restore - run_stage restore - run_stage post-restore - restore_addon_d - rm -rf $C - sync - fi - unmount_system - ;; - *) - echo "Usage: $0 {backup|restore}" - exit 1 -esac - -exit 0 diff --git a/prebuilt/common/bin/backuptool_ab.functions b/prebuilt/common/bin/backuptool_ab.functions deleted file mode 100644 index be42261f..00000000 --- a/prebuilt/common/bin/backuptool_ab.functions +++ /dev/null @@ -1,48 +0,0 @@ -#!/system/bin/sh -# -# Functions for backuptool_ab.sh -# - -export S=/system -export C=/postinstall/tmp/backupdir -export V=16.0 -export backuptool_ab=true - -copy_file() { - old=`umask` - umask 0322 - mkdir -m755 -p `dirname $2` - umask "$old" - - cp -dp --preserve=a "$1" "$2" -} - -move_file() { - old=`umask` - umask 0322 - mkdir -m755 -p `dirname $2` - umask "$old" - - mv "$1" "$2" -} - -backup_file() { - if [ -e "$1" -o -L "$1" ]; then - # dont backup any apps that have odex files, they are useless - if ( echo "$1" | grep -q "\.apk$" ) && [ -e `echo "$1" | sed -e 's/\.apk$/\.odex/'` ]; then - echo "Skipping odexed apk $1"; - else - copy_file "$1" "$C/$1" - fi - fi -} - -restore_file() { - if [ -e "$C/$1" -o -L "$C/$1" ]; then - move_file "$C/$1" "/postinstall/$1"; - if [ -n "$2" ]; then - echo "Deleting obsolete file $2" - rm "$2"; - fi - fi -} diff --git a/prebuilt/common/bin/backuptool_ab.sh b/prebuilt/common/bin/backuptool_ab.sh deleted file mode 100755 index 5b0dc08e..00000000 --- a/prebuilt/common/bin/backuptool_ab.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/system/bin/sh -# -# Backup and restore addon /system files -# - -export S=/system -export C=/postinstall/tmp/backupdir -export V=16.0 - -export ADDOND_VERSION=2 - -# Scripts in /system/addon.d expect to find backuptool.functions in /tmp -mkdir -p /postinstall/tmp/ -cp -f /postinstall/system/bin/backuptool_ab.functions /postinstall/tmp/backuptool.functions - -# Preserve /system/addon.d in /tmp/addon.d -preserve_addon_d() { - if [ -d /system/addon.d/ ]; then - mkdir -p /postinstall/tmp/addon.d/ - cp -a /system/addon.d/* /postinstall/tmp/addon.d/ - - # Discard any scripts that aren't at least our version level - for f in /postinstall/tmp/addon.d/*sh; do - SCRIPT_VERSION=$(grep "^# ADDOND_VERSION=" $f | cut -d= -f2) - if [ -z "$SCRIPT_VERSION" ]; then - SCRIPT_VERSION=1 - fi - if [ $SCRIPT_VERSION -lt $ADDOND_VERSION ]; then - rm $f - fi - done - - chmod 755 /postinstall/tmp/addon.d/*.sh - fi -} - -# Restore /postinstall/system/addon.d from /postinstall/tmp/addon.d -restore_addon_d() { - if [ -d /postinstall/tmp/addon.d/ ]; then - mkdir -p /postinstall/system/addon.d/ - cp -a /postinstall/tmp/addon.d/* /postinstall/system/addon.d/ - rm -rf /postinstall/tmp/addon.d/ - fi -} - -# Proceed only if /system is the expected major and minor version -check_prereq() { -# If there is no build.prop file the partition is probably empty. -if [ ! -r /system/build.prop ]; then - exit 127 -fi - -grep -q "^ro.lineage.version=$V.*" /system/build.prop && return 1 - -echo "Not backing up files from incompatible version: $V" -exit 127 -} - -# Execute /system/addon.d/*.sh scripts with $1 parameter -run_stage() { -if [ -d /postinstall/tmp/addon.d/ ]; then - for script in $(find /postinstall/tmp/addon.d/ -name '*.sh' |sort -n); do - # we have no /sbin/sh in android, only recovery - # use /system/bin/sh here instead - sed -i '0,/#!\/sbin\/sh/{s|#!/sbin/sh|#!/system/bin/sh|}' $script - # we can't count on /tmp existing on an A/B device, so utilize /postinstall/tmp - # as a pseudo-/tmp dir - sed -i 's|. /tmp/backuptool.functions|. /postinstall/tmp/backuptool.functions|g' $script - $script $1 - done -fi -} - -case "$1" in - backup) - mkdir -p $C - check_prereq - preserve_addon_d - run_stage pre-backup - run_stage backup - run_stage post-backup - ;; - restore) - check_prereq - run_stage pre-restore - run_stage restore - run_stage post-restore - restore_addon_d - rm -rf $C - rm -rf /postinstall/tmp - sync - ;; - *) - echo "Usage: $0 {backup|restore}" - exit 1 -esac - -exit 0 diff --git a/prebuilt/common/bin/backuptool_postinstall.sh b/prebuilt/common/bin/backuptool_postinstall.sh deleted file mode 100755 index eef04098..00000000 --- a/prebuilt/common/bin/backuptool_postinstall.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/system/bin/sh -# -# LineageOS A/B OTA Postinstall Script -# - -/postinstall/system/bin/backuptool_ab.sh backup -/postinstall/system/bin/backuptool_ab.sh restore - -sync - -exit 0 diff --git a/prebuilt/common/bin/sysinit b/prebuilt/common/bin/sysinit deleted file mode 100644 index 431afbc1..00000000 --- a/prebuilt/common/bin/sysinit +++ /dev/null @@ -1,9 +0,0 @@ -#!/system/bin/sh - -export PATH=/sbin:/system/sbin:/system/bin:/system/xbin -for i in /system/etc/init.d/*; do - if [ -x $i ]; then - /system/bin/log -t sysinit Running $i - $i - fi -done diff --git a/prebuilt/common/etc/apns-conf.xml b/prebuilt/common/etc/apns-conf.xml deleted file mode 100644 index 6072cfca..00000000 --- a/prebuilt/common/etc/apns-conf.xml +++ /dev/null @@ -1,3822 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* -** Copyright 2006, Google Inc. -** -** 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. -*/ ---> - -<!-- use empty string to specify no proxy or port --> -<!-- This version must agree with that in apps/common/res/apns.xml --> -<apns version="8"> - <apn carrier="Test Internet" mcc="001" mnc="01" apn="VZWINTERNET" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Test FOTA" mcc="001" mnc="01" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Test IMS" mcc="001" mnc="01" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Test CBS" mcc="001" mnc="01" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="SPRINT test ISP" mcc="001" mnc="01" apn="n.ispsn" type="default,mms" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="SPRINT test OTA" mcc="001" mnc="01" apn="otasn" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="SPRINT test PAM" mcc="001" mnc="01" apn="pamsn" type="dun" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test Internet" mcc="001" mnc="010" apn="VZWINTERNET" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test FOTA" mcc="001" mnc="010" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test IMS" mcc="001" mnc="010" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test CBS" mcc="001" mnc="010" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Virgin Mobile US" mcc="200" mnc="053" apn="0" port="" mmsproxy="205.239.233.136" mmsport="81" mmsc="http://mmsc.vmobl.com:8088/mms?" type="mms" /> - <apn carrier="Cosmote Internet" mcc="202" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Cosmote MMS" mcc="202" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc.cosmote.gr:8002" mmsproxy="10.10.10.20" mmsport="8080" type="mms" /> - <apn carrier="Vodafone Web" mcc="202" mnc="05" apn="internet.vodafone.gr" user="user" password="pass" authtype="3" type="default,supl" /> - <apn carrier="Vf live!" mcc="202" mnc="05" apn="wap.vodafone.gr" proxy="213.249.19.49" port="5080" mmsc="" user="user" password="pass" authtype="3" type="default,supl" /> - <apn carrier="Vf live! Prepay" mcc="202" mnc="05" apn="wapkarta.vodafone.gr" proxy="213.249.19.49" port="5080" mmsc="" user="user" password="pass" authtype="3" type="default,supl" /> - <apn carrier="Vf Mobile Broadband" mcc="202" mnc="05" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Vf Mobile Internet" mcc="202" mnc="05" apn="webonly.vodafone.gr" user="" password="" type="default,supl" /> - <apn carrier="Vf kartointernet" mcc="202" mnc="05" apn="websession" user="" password="" type="default,supl" /> - <apn carrier="Vf MMS" mcc="202" mnc="05" apn="mms.vodafone.net" proxy="" port="" mmsproxy="213.249.19.49" mmsport="5080" mmsc="http://mms.vodafone.gr" user="user" password="pass" authtype="1" type="mms" /> - <apn carrier="Vf Internet Corporate" mcc="202" mnc="05" apn="internet" user="user" password="pass" type="default,supl" /> - <apn carrier="Vodafone GR" mcc="202" mnc="05" apn="surfonly.vodafone.gr" type="default,supl" /> - <apn carrier="Vodafone GR Prepaid" mcc="202" mnc="05" apn="webkarta.vodafone.gr" type="default,supl" /> - <apn carrier="Q-Telecom Internet" mcc="202" mnc="09" apn="myq" type="default,supl" /> - <apn carrier="Q-Telecom MMS" mcc="202" mnc="09" apn="q-mms.myq.gr" mmsc="http://mms.myq.gr" mmsproxy="192.168.80.134" mmsport="8080" type="mms" /> - <apn carrier="WIND Internet" mcc="202" mnc="10" apn="gint.b-online.gr" user="" password="" type="default,supl" /> - <apn carrier="WIND MMS" mcc="202" mnc="10" apn="mnet.b-online.gr" proxy="" port="" mmsproxy="192.168.200.11" mmsport="9401" mmsc="http://192.168.200.95/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Cyta GR" mcc="202" mnc="14" apn="internet.cyta.gr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 NL" mcc="204" mnc="02" apn="internet.tele2.nl" mmsc="http://mmsc.tele2.nl" mmsproxy="193.12.40.64" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Tele2 GPRS" mcc="204" mnc="02" apn="Tele2 GPRS" proxy="130.244.196.090" port="8080" mmsproxy="193.012.040.064" mmsport="8080" mmsc="" user="" password="" type="default,supl,mms" /> - <apn carrier="MVNO NL" mcc="204" mnc="03" apn="internet.mvno.mobi" user="mvno" password="mvno" authtype="1" type="default,supl" mvno_match_data="20403" mvno_type="imsi" /> - <apn carrier="Sphone Pelephone" mcc="204" mnc="04" apn="sphone.pelephone.net.il" user="pcl@3g" password="pcl" type="default,supl" /> - <apn carrier="Multimedia Pelephone" mcc="204" mnc="04" apn="mms.pelephone.net.il" user="pcl@3g" password="pcl" mmsproxy="10.170.252.104" mmsport="9093" mmsc="http://mmsu.pelephone.net.il/" type="mms" /> - <apn carrier="Vodafone NL" mcc="204" mnc="04" apn="live.vodafone.com" proxy="192.168.251.150" port="8799" user="vodafone" password="vodafone" mmsc="http://mmsc.mms.vodafone.nl" mmsproxy="192.168.251.150" mmsport="8799" type="default,supl,mms" /> - <apn carrier="EHRPD - VZW Roaming Internet" mcc="204" mnc="04" apn="VZWINTERNET" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="0" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="LTE - VZW Roaming Internet" mcc="204" mnc="04" apn="VZWINTERNET" type="default,dun" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="0" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="EHRPD - VZW Roaming FOTA" mcc="204" mnc="04" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="3" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="LTE - VZW Roaming FOTA" mcc="204" mnc="04" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="3" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="LTE - VZW Roaming IMS" mcc="204" mnc="04" apn="VZWIMS" type="ims,ia" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="2" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="EHRPD - VZW Roaming IMS" mcc="204" mnc="04" apn="VZWIMS" type="ims,ia" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="2" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="LTE - VZW Roaming CBS" mcc="204" mnc="04" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vzwreseller.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="4" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="EHRPD - VZW Roaming CBS" mcc="204" mnc="04" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vzwreseller.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13" mvno_type="gid" mvno_match_data="BAE0000000000000" profile_id="4" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="Vodafone MMS Business" mcc="204" mnc="04" apn="office.vodafone.nl" user="vodafone" password="vodafone" mmsc="http://mmsc.mms.vodafone.nl" mmsproxy="192.168.251.150" mmsport="8799" type="mms" /> - <apn carrier="中国电信NET设置" mcc="204" mnc="04" apn="ctnet" user="ctnet@mycdma.cn" password="vnet.mobi" authtype="3" type="default,supl,dun" /> - <apn carrier="中国电信WAP设置" mcc="204" mnc="04" apn="ctwap" user="ctwap@mycdma.cn" password="vnet.mobi" proxy="10.0.0.200" port="80" mmsproxy="10.0.0.200" mmsport="80" mmsc="http://mmsc.vnet.mobi" authtype="3" type="default,supl,dun,mms" /> - <apn carrier="Ziggo Mobiel" mcc="204" mnc="04" apn="ziggo.dataxs.mobi" authtype="1" type="default,supl" /> - <apn carrier="hollandsnieuwe (type 1)" mcc="204" mnc="04" apn="data.dataxs.mobi" proxy="" port="" user="hollandsnieuwe" password="hollandsnieuwe" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="hollandsnieuwe (type 2)" mcc="204" mnc="04" apn="live.vodafone.com" user="vodafone" password="vodafone" authtype="1" type="default,supl" /> - <apn carrier="Truphone" mcc="204" mnc="04" apn="truphone.com" type="default,dun" mvno_match_data="204043914" mvno_type="imsi" /> - <apn carrier="Truphone" mcc="204" mnc="04" apn="truphone.com" type="default,dun" mvno_match_data="20404794" mvno_type="imsi" /> - <apn carrier="KPN 4G LTE" mcc="204" mnc="08" apn="KPN4G.nl" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" type="default,supl,mms" /> - <apn carrier="KPN GPRS" mcc="204" mnc="08" apn="internet" user="kpn" password="gprs" type="default,supl" /> - <apn carrier="KPN Mobiel Internet" mcc="204" mnc="08" apn="portalmmm.nl" proxy="" port="" user="" password="" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" type="*" spn="KPN" /> - <apn carrier="Hi Mobiel Internet" mcc="204" mnc="08" apn="portalmmm.nl" proxy="" port="" user="" password="" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" type="*" spn="HI" /> - <apn carrier="Simyo Mobiel Internet" mcc="204" mnc="08" apn="portalmmm.nl" proxy="" port="" user="" password="" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" authtype="1" type="default,supl,mms" /> - <apn carrier="Ortel Internet" mcc="204" mnc="08" apn="portalmmm.nl" proxy="" port="" user="" password="" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" authtype="1" type="default,supl,mms" /> - <apn carrier="Youfone Internet" mcc="204" mnc="08" apn="portalmmm.nl" proxy="" port="" user="" password="" type="default" /> - <apn carrier="Lebara Internet" mcc="204" mnc="08" apn="multimedia.lebara.nl" proxy="" port="" user="" password="" mmsc="http://mp.mobiel.kpn/mmsc" mmsproxy="10.10.100.20" mmsport="5080" authtype="1" type="default,supl,mms" /> - <apn carrier="AH Mobiel Internet" mcc="204" mnc="08" apn="multimedia.ah.nl" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="193.113.200.195" mmsport="8080" type="*" spn="AH Mobiel" /> - <apn carrier="MVNO NL" mcc="204" mnc="08" apn="internet.mvno.mobi" user="mvno" password="mvno" authtype="1" type="default,supl" mvno_match_data="204080950" mvno_type="imsi" /> - <apn carrier="Telfort Internet" mcc="204" mnc="08" apn="internet" mmsc="http://mms" mmsproxy="" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Lycamobile NL" mcc="204" mnc="09" apn="data.lycamobile.nl" user="lmnl" password="plus" type="default,supl" /> - <apn carrier="Telfort Internet" mcc="204" mnc="12" apn="internet" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="193.113.200.195" mmsport="8080" spn="Telfort" authtype="1" type="default,supl,mms" /> - <apn carrier="AH Mobiel Internet" mcc="204" mnc="12" apn="multimedia.ah.nl" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="193.113.200.195" mmsport="8080" type="default,supl,mms" spn="AH Mobiel" /> - <apn carrier="T-Mobile Internet" mcc="204" mnc="16" apn="internet" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile NL" mcc="204" mnc="16" apn="smartsites.t-mobile" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="204" mnc="16" apn="mms" proxy="" port="" user="tmobilemms" password="tmobilemms" mmsc="http://t-mobilemms" mmsproxy="010.010.010.011" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Ben" mcc="204" mnc="16" apn="internet.ben" authtype="1" type="default,supl" /> - <apn carrier="Ben MMS" mcc="204" mnc="16" apn="mms.ben" proxy="" port="" user="" password="" mmsc="http://benmms" mmsproxy="10.10.10.11" mmsport="8080" type="mms" /> - <apn carrier="Orange NL" mcc="204" mnc="20" apn="internet" proxy="" port="" user="" password="" mmsc="http://mms.orange.nl:8002" mmsproxy="10.250.255.183" mmsport="5080" authtype="3" type="default,supl" /> - <apn carrier="Orange NL MMS" mcc="204" mnc="20" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.orange.nl:8002" mmsproxy="10.250.255.183" mmsport="5080" authtype="3" type="mms" /> - <apn carrier="Proximus MMS" mcc="206" mnc="01" apn="event.proximus.be" user="mms" password="mms" mmsc="http://mmsc.proximus.be/mms" mmsproxy="10.55.14.75" mmsport="8080" type="mms" /> - <apn carrier="Proximus Internet" mcc="206" mnc="01" apn="internet.proximus.be" type="default,supl" /> - <apn carrier="Eastlink Internet" mcc="206" mnc="01" apn="wisp.mobi.eastlink.ca" type="default,supl" /> - <apn carrier="Eastlink MMS" mcc="206" mnc="01" apn="mms.mobi.eastlink.ca" mmsc="http://mmss.mobi.eastlink.ca" mmsproxy="10.232.12.49" mmsport="8080" type="mms" /> - <apn carrier="Telenet Intl Roam" mcc="206" mnc="01" apn="telenetwap.be" type="default,supl" /> - <apn carrier="Telenet MMS Intl Roam" mcc="206" mnc="01" apn="mms.be" mmsc="http://mmsc.telenet.be" mmsproxy="195.130.149.100" mmsport="80" type="mms" /> - <apn carrier="Iusacell Internet" mcc="206" mnc="01" apn="web.iusacellgsm.mx" authtype="0" user="iusacellgsm" password="iusacellgsm" type="default,supl" /> - <apn carrier="Iusacell MMS" mcc="206" mnc="01" apn="mms.iusacellgsm.mx" authtype="0" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Modem" mcc="206" mnc="01" apn="modem.iusacellgsm.mx" authtype="0" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Scarlet Internet" mcc="206" mnc="01" apn="internet.bmbpartner.be" type="default,supl" /> - <apn carrier="Scarlet MMS" mcc="206" mnc="01" apn="event.proximus.be" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc.proximus.be/mms" mmsproxy="10.55.14.75" mmsport="8080" type="mms" /> - <apn carrier="Telenet" mcc="206" mnc="05" apn="telenetwap.be" type="default,supl" /> - <apn carrier="Telenet MMS" mcc="206" mnc="05" apn="mms.be" mmsc="http://mmsc.telenet.be" mmsproxy="195.130.149.100" mmsport="80" type="mms" /> - <apn carrier="Voo Mobile" mcc="206" mnc="05" apn="telenetwap.be" user="" password="" type="default,supl" /> - <apn carrier="Voo MMS" mcc="206" mnc="05" apn="mms.be" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc.telenet.be" mmsproxy="195.130.149.100" mmsport="80" authtype="1" type="mms" /> - <apn carrier="Lycamobile BE" mcc="206" mnc="06" apn="data.lycamobile.be" user="lmbe" password="plus" type="default,supl" /> - <apn carrier="Mobistar" mcc="206" mnc="10" apn="mworld.be" proxy="212.65.63.143" port="8080" user="mobistar" password="mobistar" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Mobistar MMS" mcc="206" mnc="10" apn="mms.be" proxy="" port="" user="mobistar" password="mobistar" mmsc="http://mmsc.mobistar.be" mmsproxy="212.65.63.143" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Telenet" mcc="206" mnc="10" apn="telenetwap.be" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="BASE Belgium" mcc="206" mnc="20" apn="gprs.base.be" proxy="" port="" user="base" password="base" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="BASE MMS Belgium" mcc="206" mnc="20" apn="mms.base.be" proxy="" port="" user="base" password="base" mmsc="http://mmsc.base.be" mmsproxy="217.72.235.1" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Carrefour Belgium" mcc="206" mnc="20" apn="carrefourdata.be" user="carrefour" password="carrefour" type="default,supl" /> - <apn carrier="Carrefour Belgium MMS" mcc="206" mnc="20" apn="carrefourmms.be" user="carrefour" password="carrefour" mmsc="http://mmsc.base.be/" mmsproxy="217.72.235.1" mmsport="8080" type="mms" /> - <apn carrier="Mobile Vikings" mcc="206" mnc="20" apn="web.be" proxy="" port="" user="web" password="web" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Mobile Vikings MMS" mcc="206" mnc="20" apn="mms.be" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc.be" mmsproxy="217.72.235.1" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="JIM Mobile Internet" mcc="206" mnc="20" apn="gprs.base.be" proxy="" port="" user="base" password="base" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="JIM Mobile MMS" mcc="206" mnc="20" apn="mms.base.be" proxy="" port="" user="base" password="base" mmsc="http://mmsc.base.be" mmsproxy="217.72.235.1" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Orange Internet" mcc="208" mnc="01" apn="orange.fr" proxy="" port="" user="orange" password="orange" mmsc="" type="default,supl,dun" /> - <apn carrier="Orange MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" mmsproxy="192.168.010.200" mmsport="8080" mmsc="http://mms.orange.fr" user="orange" password="orange" type="mms" /> - <apn carrier="Orange World" mcc="208" mnc="01" apn="orange" user="orange" password="orange" authtype="2" type="default,supl" /> - <apn carrier="Orange Entreprise" mcc="208" mnc="01" apn="orange-mib" proxy="172.16.2.8" port="8000" user="orange" password="orange" authtype="2" type="default,supl" /> - <apn carrier="Orange France" mcc="208" mnc="01" apn="orange" proxy="" port="" user="orange" password="orange" mmsc="" type="default,supl" /> - <apn carrier="Orange FR-MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" server="*" mmsc="http://mms.orange.fr" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Orange MMS" mcc="208" mnc="01" apn="Orange.acte" proxy="" port="" user="Orange" password="orange" mmsc="http://mms.orange.fr" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Orange Internet" mcc="208" mnc="01" apn="ofnew.fr" proxy="192.168.10.100" port="8080" user="orange" password="orange" mmsc="" type="tethering" /> - <apn carrier="Carrefour WAP" mcc="208" mnc="01" apn="ofnew.fr" proxy="192.168.10.100" port="8080" mmsc="" user="orange" password="orange" spn="Carrefour" type="default,supl" /> - <apn carrier="Carrefour MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" mmsproxy="192.168.10.200" mmsport="8080" mmsc="http://mms.orange.fr" user="orange" password="orange" spn="Carrefour" type="mms" /> - <apn carrier="NRJ WAP" mcc="208" mnc="01" apn="ofnew.fr" proxy="192.168.10.100" port="8080" mmsc="" user="orange" password="orange" spn="NRJ (ORANGE)" type="default,supl" /> - <apn carrier="NRJ MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" mmsproxy="192.168.10.200" mmsport="8080" mmsc="http://mms.orange.fr" user="orange" password="orange" spn="NRJ (ORANGE)" type="mms" /> - <apn carrier="Tele2 WAP" mcc="208" mnc="01" apn="ofnew.fr" proxy="192.168.10.100" port="8080" user="orange" password="orange" spn="Tele 2" type="default,supl" /> - <apn carrier="Tele2 MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" mmsproxy="192.168.10.200" mmsport="8080" mmsc="http://mms.orange.fr" user="orange" password="orange" spn="Tele 2" type="mms" /> - <apn carrier="Virgin Mobile" mcc="208" mnc="01" apn="ofnew.fr" proxy="192.168.10.100" port="8080" user="orange" password="orange" spn="Virgin" type="default,supl" /> - <apn carrier="Virgin" mcc="208" mnc="01" apn="ofnew.fr" proxy="" port="" user="orange" password="orange" mmsc="" mvno_type="spn" mvno_match_data="Virgin" authtype="1" type="default,supl" /> - <apn carrier="Virgin Mobile MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" mmsproxy="192.168.10.200" mmsport="8080" mmsc="http://mms.orange.fr" user="orange" password="orange" spn="Virgin" type="mms" /> - <apn carrier="Internet Entreprise" mcc="208" mnc="01" apn="internet-entreprise" proxy="" port="" user="orange" password="orange" mmsc="" type="tethering" /> - <apn carrier="NRJ WEB" mcc="208" mnc="01" apn="ofnew.fr" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="NRJ Mobile" authtype="1" type="default,supl" /> - <apn carrier="NRJ MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" mvno_type="spn" mvno_match_data="NRJ Mobile" authtype="1" type="mms" /> - <apn carrier="C le WEB" mcc="208" mnc="01" apn="ofnew.fr" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="C le mobile" authtype="1" type="default,supl" /> - <apn carrier="C le MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" mvno_type="spn" mvno_match_data="C le mobile" authtype="1" type="mms" /> - <apn carrier="M6Mobile" mcc="208" mnc="01" apn="ofnew.fr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="M6Mobile" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Web Carrefour" mcc="208" mnc="01" apn="wap mms" proxy="192.168.10.100" port="8080" user="orange" password="orange" mmsc="" type="default,supl" /> - <apn carrier="Web Carrefour" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="internet68" mcc="208" mnc="01" apn="internet68" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="mms68" mcc="208" mnc="01" apn="mms68" proxy="" port="" user="" password="" mmsc="http://mms68/" mmsproxy="10.143.156.11" mmsport="8080" type="mms" /> - <apn carrier="Breizh Mobile" mcc="208" mnc="01" apn="orange" proxy="192.168.10.100" port="8080" user="orange" password="orange" mmsc="" mvno_type="spn" mvno_match_data="Breizh Mobile" type="default,supl" /> - <apn carrier="C MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Syma" mcc="208" mnc="01" apn="symamobile.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Syma" type="default,supl" /> - <apn carrier="Lebara internet" mcc="208" mnc="01" apn="fr.lebara.mobi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="NRJ WEB" mcc="208" mnc="01" apn="ofnew.fr" proxy="" port="" user="orange" password="orange" mmsc="" mvno_type="spn" mvno_match_data="NRJ Mobile" authtype="1" type="default,supl" /> - <apn carrier="NRJ MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" mvno_type="spn" mvno_match_data="NRJ Mobile" spn="NRJ Mobile" authtype="1" type="mms" /> - <apn carrier="C le MMS" mcc="208" mnc="01" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr" mmsproxy="192.168.10.200" mmsport="8080" mvno_type="spn" mvno_match_data="NRJ Mobile" authtype="1" type="mms" /> - <apn carrier="Orange GPRS ISP" mcc="208" mnc="02" apn="orange.fr" type="default,supl" /> - <apn carrier="MMS Orange GPRS" mcc="208" mnc="02" apn="orange.acte" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.fr/" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Orange GPRS" mcc="208" mnc="02" apn="orange.fr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="NRJWEB" mcc="208" mnc="02" apn="ofnew.fr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange GPRS ISP" mcc="208" mnc="02" apn="orange.fr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Simyo Web" mcc="208" mnc="02" apn="gprs-service-fr.net" proxy="195.230.105.25" port="8080" user="" password="" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="SFR MMS" mcc="208" mnc="09" apn="mmssfr" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" type="mms" /> - <apn carrier="SFR" mcc="208" mnc="09" apn="sl2sfr" server="*" type="default,supl" /> - <apn carrier="SFR WAP" mcc="208" mnc="09" apn="wapsfr" user="none" password="none" server="*" proxy="195.115.25.129" port="8080" type="default,supl" /> - <apn carrier="SFR ACCESS DATA" mcc="208" mnc="09" apn="websfr" type="default,supl" /> - <apn carrier="Auchan WAP" mcc="208" mnc="10" apn="wap65" proxy="192.168.21.8" port="8080" spn="Auchan" type="default,supl" /> - <apn carrier="Auchan MMS" mcc="208" mnc="10" apn="mms65" proxy="" port="" mmsproxy="10.143.156.8" mmsport="8080" mmsc="http://mms65" spn="Auchan" type="mms" /> - <apn carrier="WAP simplicime" mcc="208" mnc="10" apn="wapdebitel" proxy="192.168.21.3" port="8080" spn="Debitel" type="default,supl" /> - <apn carrier="MMS simplicime" mcc="208" mnc="10" apn="mmsdebitel" proxy="" port="" mmsproxy="10.143.156.3" mmsport="8080" mmsc="http://mmsdebitel" spn="Debitel" type="mms" /> - <apn carrier="WEB simplicime" mcc="208" mnc="10" apn="internetdebitel" spn="Debitel" type="default,supl" /> - <apn carrier="WAP LeclercMobile" mcc="208" mnc="10" apn="wap66" proxy="192.168.21.9" port="8080" spn="Leclerc" type="default,supl" /> - <apn carrier="MMS LeclercMobile" mcc="208" mnc="10" apn="mms66" proxy="" port="" mmsproxy="10.143.156.9" mmsport="8080" mmsc="http://mms65" spn="Leclerc" type="mms" /> - <apn carrier="NRJ WAP" mcc="208" mnc="10" apn="wapnrj" proxy="192.168.21.5" port="8080" spn="NRJ (SFR)" type="default,supl" /> - <apn carrier="NRJ MMS" mcc="208" mnc="10" apn="mmsnrj" proxy="" port="" mmsproxy="10.143.156.5" mmsport="8080" mmsc="http://mmsnrj" user="" password="" spn="NRJ (SFR)" type="mms" /> - <apn carrier="NRJ WEB" mcc="208" mnc="10" apn="fnetnrj" proxy="" port="" user="" password="" mmsc="" spn="NRJ (SFR)" type="default,supl" /> - <apn carrier="NRJ Mobile FR Internet" mcc="208" mnc="10" apn="internetnrj" proxy="" port="" user="" password="" mmsc="" type="dun" /> - <apn carrier="SFR Internet Mobile" mcc="208" mnc="10" apn="sl2sfr" user="" password="" spn="F SFR" type="default,supl" /> - <apn carrier="SFR MMS" mcc="208" mnc="10" apn="mmssfr" proxy="" port="" mmsproxy="10.151.0.1" mmsport="8080" mmsc="http://mms1" user="" password="" spn="F SFR" type="mms" /> - <apn carrier="SFR WEB" mcc="208" mnc="10" apn="websfr" user="" password="" spn="F SFR" type="default,dun" /> - <apn carrier="SFR WAP" mcc="208" mnc="10" apn="wapsfr" proxy="195.115.25.129" port="8080" user="none" password="none" server="*" mmsc="" type="default,supl" /> - <apn carrier="SFR MMS" mcc="208" mnc="10" apn="mmssfr" proxy="" port="" user="" password="" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" type="mms" /> - <apn carrier="SFR" mcc="208" mnc="10" apn="sl2sfr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="SFR Option Modem" mcc="208" mnc="10" apn="sl2sfr" proxy="" port="" user="" password="" mmsc="" type="default,dun" /> - <apn carrier="SFR MMS" mcc="208" mnc="10" apn="sl2sfr" proxy="" port="" user="" password="" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" type="mms" /> - <apn carrier="ACCESS DATA" mcc="208" mnc="10" apn="websfr" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="ACCESS DATA" type="supl" /> - <apn carrier="Internet Joe" mcc="208" mnc="10" apn="sl2sfr" authtype="0" type="default,supl,fota" /> - <apn carrier="Web La Poste" mcc="208" mnc="10" apn="wapdebitel" proxy="192.168.21.3" port="8080" type="default,supl" /> - <apn carrier="Coriolis WEB" mcc="208" mnc="10" apn="internetcoriolis" authtype="0" type="default,supl,fota,dun" /> - <apn carrier="RegloMobile WAP" mcc="208" mnc="10" apn="wap66" proxy="192.168.21.9" port="8080" authtype="0" type="default,supl,fota,dun" /> - <apn carrier="RegloMobile MMS" mcc="208" mnc="10" apn="mms66" authtype="0" mmsc="http://mms66" mmsproxy="10.143.156.9" mmsport="8080" type="mms" /> - <apn carrier="Keyyo Mobile Internet" mcc="208" mnc="10" apn="internet68" authtype="0" type="default,supl,fota,dun" /> - <apn carrier="Keyyo Mobile MMS" mcc="208" mnc="10" apn="mms68" authtype="0" mmsc="http://mms68" mmsproxy="10.143.156.11" mmsport="8080" type="mms" /> - <apn carrier="Keyyo Mobile Wap" mcc="208" mnc="10" apn="wap68" proxy="192.168.21.11" port="8080" authtype="0" type="default,supl,fota" /> - <apn carrier="internet68" mcc="208" mnc="10" apn="internet68" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="wap68" mcc="208" mnc="10" apn="wap68" proxy="192.168.21.11" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="mms68" mcc="208" mnc="10" apn="mms68" proxy="" port="" user="" password="" mmsc="http://mms68/" mmsproxy="10.143.156.11" mmsport="8080" type="mms" /> - <apn carrier="wap65" mcc="208" mnc="10" apn="wap65" proxy="192.168.21.8" port="8080" user="" password="" mmsc="http://wap.auchantelecom.fr" type="default,supl" /> - <apn carrier="mms65" mcc="208" mnc="10" apn="mms65" proxy="" port="" user="" password="" mmsc="http://mms65/" mmsproxy="10.143.156.8" mmsport="8080" type="mms" /> - <apn carrier="internet69" mcc="208" mnc="10" apn="internet69" proxy="10.143.156.12" port="8080" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="mms69" mcc="208" mnc="10" apn="mms69" proxy="10.143.156.12" port="8080" user="" password="" mmsc="http://mms69" authtype="1" type="mms" /> - <apn carrier="Internet Joe" mcc="208" mnc="10" apn="sl2sfr" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Joe" type="default,supl" /> - <apn carrier="MMS Joe" mcc="208" mnc="10" apn="mmssfr" proxy="" port="" user="" password="" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" mvno_type="spn" mvno_match_data="Joe" authtype="1" type="mms" /> - <apn carrier="ACCESS DATA" mcc="208" mnc="10" apn="websfr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="WEB La Poste Mobile" mcc="208" mnc="10" apn="wapdebitel" proxy="192.168.21.3" port="8080" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="La Poste Mobile" type="default,supl" /> - <apn carrier="MMS La Poste Mobile" mcc="208" mnc="10" apn="mmsdebitel" proxy="" port="" user="" password="" mmsc="http://mmsdebitel" mmsproxy="10.143.156.3" mmsport="8080" mvno_type="spn" mvno_match_data="La Poste Mobile" type="mms" /> - <apn carrier="WEB Leclerc Mobile" mcc="208" mnc="10" apn="wap66" proxy="192.168.21.9" port="8080" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="E.Leclerc Mobile" type="default,supl" /> - <apn carrier="MMS Leclerc Mobile" mcc="208" mnc="10" apn="mms66" proxy="" port="" user="" password="" mmsc="http://mms66" mmsproxy="10.143.156.9" mmsport="8080" mvno_type="spn" mvno_match_data="E.Leclerc Mobile" type="mms" /> - <apn carrier="WAP Mobisud" mcc="208" mnc="10" apn="wap62" proxy="192.168.21.7" port="8080" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Mobisud" type="default,supl" /> - <apn carrier="MMS Mobisud" mcc="208" mnc="10" apn="mms62" proxy="10.143.156.7" port="8080" user="" password="" mmsc="http://mms62" mvno_type="spn" mvno_match_data="Mobisud" type="mms" /> - <apn carrier="Web La Poste" mcc="208" mnc="10" apn="wapdebitel" proxy="192.168.21.3" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Coriolis Web" mcc="208" mnc="10" apn="fnetcoriolis" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="CORIOLIS" type="default,supl" /> - <apn carrier="Coriolis MMS" mcc="208" mnc="10" apn="mmscoriolis" proxy="" port="" user="" password="" mmsc="http://mmscoriolis" mmsproxy="10.143.156.6" mmsport="8080" mvno_type="spn" mvno_match_data="CORIOLIS" type="mms" /> - <apn carrier="MMS" mcc="208" mnc="11" apn="mmssfr" proxy="" port="" user="" password="" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" type="mms" /> - <apn carrier="ACCESS DATA" mcc="208" mnc="11" apn="websfr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="ACCESS DATA" mcc="208" mnc="13" apn="websfr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS" mcc="208" mnc="13" apn="mmssfr" proxy="" port="" user="" password="" mmsc="http://mms1" mmsproxy="10.151.0.1" mmsport="8080" type="mms" /> - <apn carrier="Free Mobile" mcc="208" mnc="15" apn="free" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Free Mobile MMS" mcc="208" mnc="15" apn="mmsfree" proxy="" port="" user="" password="" mmsc="http://mms.free.fr" type="mms" /> - <apn carrier="Iliad Int" mcc="208" mnc="15" apn="iliad" mmsc="http://mms.iliad-italia.it" type="default,supl,mms" mvno_match_data="F003" mvno_type="gid" /> - <apn carrier="Legos" mcc="208" mnc="17" apn="bornsip" type="default,supl" /> - <apn carrier="Legos MMS" mcc="208" mnc="17" apn="bornsipmms" mmsc="http://mms.bornsip.fr:8191" type="mms" /> - <apn carrier="Bouygues Telecom" mcc="208" mnc="20" apn="mmsbouygtel.com" proxy="" port="" user="" password="" mmsc="http://mms.bouyguestelecom.fr/mms/wapenc" mmsproxy="62.201.129.226" mmsport="8080" mvno_type="spn" mvno_match_data="Bouygues Telecom" type="default,supl,mms" /> - <apn carrier="Bouygues Pro" mcc="208" mnc="20" apn="a2bouygtel.com" user="a2b" password="acces" type="default,supl" /> - <apn carrier="Bouygues WAP" mcc="208" mnc="20" apn="mmsbouygtel.com" type="default,supl" /> - <apn carrier="Bouygues MMS" mcc="208" mnc="20" apn="mmsbouygtel.com" proxy="" port="" user="" password="" mmsc="http://mms.bouyguestelecom.fr/mms/wapenc" mmsproxy="62.201.129.226" mmsport="8080" mvno_type="spn" mvno_match_data="Bouygues Telecom" type="default,supl,mms" /> - <apn carrier="Web" mcc="208" mnc="20" apn="mmsbouygtel.com" proxy="" port="" user="" password="" mmsc="http://wap.bouygtel.fr/" type="default,supl" /> - <apn carrier="Lebara internet" mcc="208" mnc="20" apn="fr.lebara.mobi" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lebara" type="default,supl" /> - <apn carrier="Numericable 3G" mcc="208" mnc="20" apn="numericable.fr" proxy="" port="" user="" password="" mmsc="http://m.numericable.fr" mvno_type="spn" mvno_match_data="Numericable" type="default,supl" /> - <apn carrier="Simyo Web" mcc="208" mnc="20" apn="gprs-service-fr.net" proxy="195.230.105.25" port="8080" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Simyo" authtype="3" type="default,supl" /> - <apn carrier="BouyguesGPRS ISP" mcc="208" mnc="21" apn="ebouygtel.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS Bouygues" mcc="208" mnc="21" apn="mmsbouygtel.com" proxy="" port="" user="" password="" mmsc="http://mms.bouyguestelecom.fr/mms/wapenc" mmsproxy="62.201.129.226" mmsport="8080" type="mms" /> - <apn carrier="Virgin FR" mcc="208" mnc="23" apn="virgin-mobile.fr" mmsc="http://virginmms.fr" mmsproxy="10.6.10.1" mmsport="8080" type="default,mms" /> - <apn carrier="Virgin Mobile" mcc="208" mnc="23" apn="virgin-mobile.fr" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Virgin" type="default,supl" /> - <apn carrier="Virgin MMS" mcc="208" mnc="23" apn="virgin-mobile.fr" proxy="" port="" user="" password="" mmsc="http://virginmms.fr" mmsproxy="10.6.10.1" mmsport="8080" mvno_type="spn" mvno_match_data="Virgin" type="mms" /> - <apn carrier="VM WAP" mcc="208" mnc="23" apn="virgin-mobile.fr" proxy="10.6.10.1" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="VM MMS" mcc="208" mnc="23" apn="virgin-mobile.fr" proxy="" port="" user="" password="" mmsc="http://virginmms.fr" mmsproxy="10.6.10.1" mmsport="8080" type="mms" /> - <apn carrier="Lycamobile FR" mcc="208" mnc="25" apn="data.lycamobile.fr" user="lmfr" password="plus" type="default,supl" /> - <apn carrier="Lyca FR" mcc="208" mnc="25" apn="data.lycamobile.fr" proxy="" port="" user="Imfr" password="plus" mmsc="" type="Internet" /> - <apn carrier="NRJ WEB" mcc="208" mnc="26" apn="fnetnrj" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="NRJ MMS" mcc="208" mnc="26" apn="mmsnrj" proxy="" port="" user="" password="" mmsc="http://mmsnrj" mmsproxy="10.143.156.5" mmsport="8080" type="mms" /> - <apn carrier="EI Telecom" mcc="208" mnc="26" apn="fnetnrj" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="EI Telecom" type="default,supl" /> - <apn carrier="EI Telecom MMS" mcc="208" mnc="26" apn="mmsnrj" proxy="" port="" user="" password="" mmsc="http://mmsnrj" mmsproxy="10.143.156.5" mmsport="8080" mvno_type="spn" mvno_match_data="EI Telecom" type="mms" /> - <apn carrier="Syma" mcc="208" mnc="30" apn="symacom.fr" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="BouyguesGPRS ISP" mcc="208" mnc="88" apn="ebouygtel.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS Bouygues" mcc="208" mnc="88" apn="mmsbouygtel.com" proxy="" port="" user="" password="" mmsc="http://mms.bouyguestelecom.fr/mms/wapenc" mmsproxy="62.201.129.226" mmsport="8080" type="mms" /> - <apn carrier="NRJ WEB" mcc="209" mnc="01" apn="ofnew.fr" user="orange" password="orange" spn="NRJ (ORANGE)" type="default,supl" /> - <apn carrier="Vodafone ES" mcc="214" mnc="01" apn="airtelwap.es" proxy="" port="" mmsc="" user="wap@wap" password="wap125" authtype="0" type="default,supl" /> - <apn carrier="Vodafone ES MMS" mcc="214" mnc="01" apn="mms.vodafone.net" proxy="" port="" mmsproxy="212.73.32.10" mmsport="80" mmsc="http://mmsc.vodafone.es/servlets/mms" user="wap@wap" password="wap125" authtype="0" type="mms" /> - <apn carrier="Vodafone ES IMS" mcc="214" mnc="01" apn="ims" type="ims" protocol="IPV4V6" /> - <apn carrier="Movistar" mcc="214" mnc="02" apn="telefonica.es" proxy="10.138.255.133" port="8080" mmsc="" user="telefonica" password="telefonica" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="214" mnc="02" apn="telefonica.es" proxy="" port="" mmsproxy="10.138.255.5" mmsport="8080" mmsc="http://mms.movistar.com" user="telefonica" password="telefonica" type="mms" /> - <apn carrier="Movistar" mcc="214" mnc="02" apn="movistar.es" user="MOVISTAR" password="MOVISTAR" type="dun,default" /> - <apn carrier="Orange Internet Móvil" mcc="214" mnc="03" apn="orangeworld" mmsc="" user="orange" password="orange" authtype="1" type="default,supl" /> - <apn carrier="Orange Internet PC" mcc="214" mnc="03" apn="internet" user="orange" password="orange" authtype="1" type="dun" /> - <apn carrier="Orange MMS" mcc="214" mnc="03" apn="orangemms" proxy="" port="" user="orange" password="orange" mmsc="http://mms.orange.es" mmsproxy="172.22.188.25" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Suop" mcc="214" mnc="03" apn="inet.es" type="default,supl" /> - <apn carrier="Carrefour Internet" mcc="214" mnc="03" apn="CARREFOURINTERNET" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Carrefour" type="default,supl" /> - <apn carrier="Carrefour MMS" mcc="214" mnc="03" apn="carrefourmms" proxy="" port="" user="carrefour" password="carrefour" mmsc="http://mms.orange.es" mmsproxy="172.22.188.25" mmsport="8080" mvno_type="spn" mvno_match_data="Carrefour" type="mms" /> - <apn carrier="Llamaya Internet" mcc="214" mnc="03" apn="moreinternet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Llamaya MMS" mcc="214" mnc="03" apn="moremms" proxy="" port="" user="" password="" mmsc="http://mms.orange.es" mmsproxy="172.022.188.25" mmsport="8080" type="mms" /> - <apn carrier="MasMovil Internet" mcc="214" mnc="03" apn="internetmas" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="MasMovil" type="default,supl" /> - <apn carrier="MasMovil 30MB" mcc="214" mnc="03" apn="int.socialmas" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="MasMovil" type="default,supl" /> - <apn carrier="MasMovil MMS" mcc="214" mnc="03" apn="masvidamms" proxy="" port="" user="masvidamms" password="MMSmasvida" mmsc="http://mms.orange.es" mmsproxy="172.22.188.25" mmsport="8080" mvno_type="spn" mvno_match_data="MasMovil" type="mms" /> - <apn carrier="Jazztel MMS" mcc="214" mnc="03" apn="jazzmms" proxy="" port="" user="" password="" mmsc="http://jazztelmms.com/servlets/mms" mmsproxy="37.132.0.10" mmsport="8080" mvno_type="spn" mvno_match_data="JAZZTEL" type="mms" /> - <apn carrier="Jazztel" mcc="214" mnc="03" apn="jazzinternet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="JAZZTEL" type="default,supl" /> - <apn carrier="Yoigo Internet" mcc="214" mnc="04" apn="internet" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Yoigo MMS" mcc="214" mnc="04" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.141" mmsport="80" type="mms" /> - <apn carrier="Tuenti" mcc="214" mnc="05" apn="tuenti.com" user="tuenti" password="tuenti" mmsc="http://tuenti.com" mmsproxy="10.138.255.43" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Tuenti Internet" mcc="214" mnc="05" apn="tuenti.com" proxy="" port="" user="tuenti" password="tuenti" mmsc="" mvno_type="spn" mvno_match_data="Tuenti" type="default,supl" /> - <apn carrier="Tuenti MMS" mcc="214" mnc="05" apn="tuenti.com" proxy="" port="" user="tuenti" password="tuenti" mmsc="http://tuenti.com" mmsproxy="10.138.255.43" mmsport="8080" mvno_type="spn" mvno_match_data="Tuenti" authtype="1" type="mms" /> - <apn carrier="Pepephone 4G Internet" mcc="214" mnc="05" apn="gprs.pepephone.com" type="default,supl" /> - <apn carrier="Pepephone 4G MMS" mcc="214" mnc="05" apn="gprs.pepephone.com" mmsc="http://www.pepephone.com" mmsproxy="10.138.255.43" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="INET Roaming" mcc="214" mnc="05" apn="inet.es" user="" password="" port="" proxy="" type="default,supl,foat,hipri" roaming_protocol="IPV4V6" mvno_type="imsi" mvno_match_data="214050104xxxxxx" /> - <apn carrier="Pepephone Internet" mcc="214" mnc="06" apn="gprsmov.pepephone.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Pepephone" type="default,supl" /> - <apn carrier="Pepephone MMS" mcc="214" mnc="06" apn="mms.pepephone.com" proxy="" port="" user="wap@wap" password="wap125" mmsc="http://mms.pepephone.com/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" mvno_type="spn" mvno_match_data="Pepephone" type="mms" /> - <apn carrier="Lowi" mcc="214" mnc="06" apn="lowi.private.omv.es" type="default,supl" /> - <apn carrier="Lowi MMS" mcc="214" mnc="06" apn="mms.lowi.omv.es" proxy="" port="" user="wap@wap" password="wap125" mmsc="http://mms.lowi.omv.es/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" type="mms" /> - <apn carrier="Vodafone GPRS" mcc="214" mnc="06" apn="airtelnet.es" user="vodafone" password="vodafone" type="default,supl" /> - <apn carrier="Vodafone MMS" mcc="214" mnc="06" apn="mms.vodafone.net" proxy="" port="" user="wap@wap" password="wap125" mmsc="http://mmsc.vodafone.es/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" type="mms" /> - <apn carrier="Lebara Internet" mcc="214" mnc="06" apn="gprsmov.lebaramobile.es" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lebara" type="default,supl" /> - <apn carrier="Lebara MMS" mcc="214" mnc="06" apn="mms.lebaramobile.es" proxy="" port="" user="wap@wap" password="wap125" mmsc="http://mms.lebaramobile.es/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" mvno_type="spn" mvno_match_data="Lebara" type="mms" /> - <apn carrier="Eroski Movil MMS" mcc="214" mnc="06" apn="mms.eroskimovil.es" proxy="" port="" user="wap@wap" password="wap124" mmsc="http://mms.eroskimovil.es/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" mvno_type="spn" mvno_match_data="Eroski Movil" type="mms" /> - <apn carrier="Eroski Internet" mcc="214" mnc="06" apn="gprs.eroskimovil.es" proxy="" port="" user="wap@wap" password="wap125" mmsc="" type="default,supl" /> - <apn carrier="INTERNET GPRS" mcc="214" mnc="06" apn="airtelnet.es" proxy="" port="" user="vodafone" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="TeleCable Internet" mcc="214" mnc="06" apn="internet.telecable.es" proxy="" port="" user="telecable" password="telecable" mmsc="" mvno_type="spn" mvno_match_data="Telecable" type="default,supl" /> - <apn carrier="TeleCable MMS" mcc="214" mnc="06" apn="mms.telecable.es" proxy="" port="" user="telecable" password="telecable" mmsc="http://mms.telecable.es/mms/" mmsproxy="212.89.0.84" mmsport="8080" mvno_type="spn" mvno_match_data="Telecable" type="mms" /> - <apn carrier="Movistar" mcc="214" mnc="07" apn="telefonica.es" proxy="10.138.255.133" port="8080" user="telefonica" password="telefonica" mmsc="http://mms.movistar.com" mmsproxy="10.138.255.5" mmsport="8080" authtype="1" type="default,mms,supl" /> - <apn carrier="Conexión Compartida" mcc="214" mnc="07" apn="movistar.es" user="MOVISTAR" password="MOVISTAR" authtype="1" type="dun" /> - <apn carrier="Jazztel MMS" mcc="214" mnc="07" apn="jazzmms" proxy="" port="" user="" password="" mmsc="http://jazztelmms.com/servlets/mms" mmsproxy="37.132.0.10" mmsport="8080" mvno_type="spn" mvno_match_data="JAZZTEL" type="mms" /> - <apn carrier="Jazztel" mcc="214" mnc="07" apn="jazzinternet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="JAZZTEL" type="default,supl" /> - <apn carrier="Euskaltel" mcc="214" mnc="08" apn="internet.euskaltel.mobi" user="CLIENTE" password="EUSKALTEL" type="default,supl" /> - <apn carrier="Euskaltel MMS" mcc="214" mnc="08" apn="euskaltelmms.euskaltel.mobi" user="MMS" password="EUSKALTEL" mmsc="http://mms.euskaltel.mobi" mmsproxy="172.16.18.74" mmsport="8080" type="mms" /> - <apn carrier="Lebara Internet" mcc="214" mnc="08" apn="gprsmov.lebaramobile.es" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lebara" type="default,supl" /> - <apn carrier="Lebara MMS" mcc="214" mnc="08" apn="mms.lebaramobile.es" proxy="" port="" user="wap@wap" password="wap125" mmsc="http://mms.lebaramobile.es/servlets/mms" mmsproxy="212.73.32.10" mmsport="80" mvno_type="spn" mvno_match_data="Lebara" type="mms" /> - <apn carrier="Euskaltel Internet" mcc="214" mnc="08" apn="internet.euskaltel.mobi" proxy="" port="" user="CLIENTE" password="EUSKALTEL" mmsc="" type="default,supl" /> - <apn carrier="Euskaltel MMS" mcc="214" mnc="08" apn="euskaltelmms.euskaltel.mobi" proxy="" port="" user="MMS" password="EUSKALTEL" mmsc="http://mms.euskaltel.mobi" mmsproxy="172.16.18.74" mmsport="8080" type="mms" /> - <apn carrier="TeleCable Internet" mcc="214" mnc="16" apn="internet.telecable.es" user="telecable" password="telecable" type="default,supl" /> - <apn carrier="TeleCable MMS" mcc="214" mnc="16" apn="mms.telecable.es" user="telecable" password="telecable" mmsc="http://mms.telecable.es/mms/" mmsproxy="212.89.0.84" mmsport="8080" type="mms" /> - <apn carrier="ONO Internet" mcc="214" mnc="18" apn="internet.ono.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="ONO MMS" mcc="214" mnc="18" apn="mms.ono.com" proxy="" port="" user="" password="" mmsc="http://mms.ono.com" mmsproxy="10.126.0.50" mmsport="8080" type="mms" /> - <apn carrier="Simyo ES" mcc="214" mnc="19" apn="gprs-service.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="simyo" type="default,supl" /> - <apn carrier="Simyo ES MMS" mcc="214" mnc="19" apn="gprs-service.com" proxy="" port="" user="" password="" mmsc="http://mms-services.eu" mmsproxy="217.12.32.180" mmsport="8080" mvno_type="spn" mvno_match_data="simyo" type="mms" /> - <apn carrier="Blau ES" mcc="214" mnc="19" apn="gprs-service.com" proxy="" port="" user="" password="" mmsc="http://217.18.32.180:8080" mmsproxy="217.18.32.181" mmsport="8080" mvno_type="spn" mvno_match_data="Blau" type="default,supl,mms" /> - <apn carrier="Jazztel" mcc="214" mnc="21" apn="jazzinternet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="JAZZTEL" type="default,supl" /> - <apn carrier="Jazztel MMS" mcc="214" mnc="21" apn="jazzmms" proxy="" port="" user="" password="" mmsc="http://jazztelmms.com/servlets/mms" mmsproxy="37.132.0.10" mmsport="8080" mvno_type="spn" mvno_match_data="JAZZTEL" type="mms" /> - <apn carrier="Jazztel MMS" mcc="214" mnc="21" apn="jazzmms" mmsc="http://jazztelmms.com:8081" mmsproxy="217.18.32.183" mmsport="8081" type="mms" /> - <apn carrier="Digimobil Internet" mcc="214" mnc="22" apn="internet.digimobil.es" proxy="" port="" user="digi" password="digi" mmsc="" mvno_type="spn" mvno_match_data="DigiMobil" type="default,supl" /> - <apn carrier="Lycamobile" mcc="214" mnc="25" apn="data.lycamobile.es" proxy="" port="" user="lmes" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" type="default,supl,mms" /> - <apn carrier="Truphone" mcc="214" mnc="27" apn="truphone.com" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Tuenti" mcc="214" mnc="32" apn="tuenti.com" proxy="" port="" user="tuenti" password="tuenti" mmsc="" mvno_type="spn" mvno_match_data="Tuenti" type="default,supl,mms" /> - <apn carrier="Masmovil" mcc="214" mnc="32" apn="internetmas" type="default,supl" /> - <apn carrier="INET Internet" mcc="214" mnc="34" apn="inet.es" user="" password="" port="" proxy="" type="default,supl,foat,hipri" protocol="IPV4V6" /> - <apn carrier="Telenor Net" mcc="216" mnc="01" apn="net" type="default,supl" /> - <apn carrier="Telenor online" mcc="216" mnc="01" apn="online" user="" password="" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="216" mnc="01" apn="mms" proxy="" port="" mmsproxy="84.225.255.1" mmsport="8080" mmsc="http://mmsc.telenor.hu/" user="" password="" type="mms" /> - <apn carrier="Pannon" mcc="216" mnc="01" apn="net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Pannon MMS" mcc="216" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc.pgsm.hu/" mmsproxy="193.225.154.22" mmsport="8080" type="mms" /> - <apn carrier="Telenor Net" mcc="216" mnc="01" apn="net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-Mobile HU" mcc="216" mnc="30" apn="wnw" proxy="" port="" user="" password="" mmsc="http://mms.t-mobile.hu/servlets/mms" mmsproxy="212.51.126.10" mmsport="8080" type="default,supl" /> - <apn carrier="T-Mobile NET GPRS" mcc="216" mnc="30" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="216" mnc="30" apn="mms" proxy="" port="" mmsproxy="212.051.126.010" mmsport="8080" mmsc="http://mms.t-mobile.hu/servlets/mms" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="Telekom HU NET" mcc="216" mnc="30" apn="internet.telekom" type="default,supl" /> - <apn carrier="Telekom HU MMS" mcc="216" mnc="30" apn="internet.telekom" mmsc="http://mms.t-mobile.hu/servlets/mms" mmsproxy="212.51.126.10" mmsport="8080" type="mms" /> - <apn carrier="Vodafone HU" mcc="216" mnc="70" apn="internet.vodafone.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="VF Internet VitaMax" mcc="216" mnc="70" apn="vitamax.internet.vodafone.net" user="" password="" type="default,supl" /> - <apn carrier="Vodafone HU MMS" mcc="216" mnc="70" apn="mms.vodafone.net" proxy="" port="" user="" password="" mmsc="http://mms.vodafone.hu/servlets/mms" mmsproxy="80.244.97.2" mmsport="8080" type="mms" /> - <apn carrier="ERONET START" mcc="218" mnc="03" apn="gprs.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="ERONET MI 50" mcc="218" mnc="03" apn="web.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET MI 200" mcc="218" mnc="03" apn="web.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET 512" mcc="218" mnc="03" apn="data1.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET 1GB" mcc="218" mnc="03" apn="data4.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET 4GB" mcc="218" mnc="03" apn="data2.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET FLAT" mcc="218" mnc="03" apn="data3.eronet.ba" proxy="" port="" user="" password="" mmsc="" type="supl" /> - <apn carrier="ERONET MMS" mcc="218" mnc="03" apn="mms.eronet.ba" proxy="" port="" user="" password="" mmsc="http://mms.gprs.eronet.ba/mms/wapenc" mmsproxy="10.12.3.11" mmsport="8080" type="mms" /> - <apn carrier="M-tel" mcc="218" mnc="05" apn="3g1" proxy="192.168.61.10" port="80" type="default,supl" /> - <apn carrier="M-tel Frend" mcc="218" mnc="05" apn="mtelfrend" proxy="" port="" user="" password="" mmsc="" type="default,supl" protocol="IPV4" roaming_protocol="IPV4" /> - <apn carrier="M-tel mms" mcc="218" mnc="05" apn="mtelmms" mmsc="http://mmsc.mtel.ba/mms/wapenc" mmsproxy="192.168.61.11" mmsport="8080" type="mms" /> - <apn carrier="BH Mobile" mcc="218" mnc="90" apn="active.bhmobile.ba" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="BH Mobile MMS" mcc="218" mnc="90" apn="mms.bhmobile.ba" proxy="" port="" user="" password="" mmsc="http://mms.bhmobile.ba/cmmsc/post" mmsproxy="195.222.56.41" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile HR" mcc="219" mnc="01" apn="web.htgprs" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TM HR WAP" apn="www.htgprs.hr" proxy="10.12.0.3" port="8080" user="" password="" mmsc="" mcc="219" mnc="01" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile HR MMS" mcc="219" mnc="01" apn="mms.htgprs" proxy="" port="" user="" password="" mmsc="http://mms.t-mobile.hr/servlets/mms" mmsproxy="10.12.0.4" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile HR" mcc="219" mnc="01" apn="internet.ht.hr" type="default,supl" /> - <apn carrier="Tele2 HR" mcc="219" mnc="02" apn="wap.tele2.hr" mmsc="http://mmsc.tele2.hr" mmsproxy="193.12.40.66" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Tele2 HR" mcc="219" mnc="02" apn="wap.tele2.hr" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.hr" mmsproxy="193.12.40.66" mmsport="8080" type="default,supl,mms" /> - <apn carrier="VIPnet" mcc="219" mnc="10" apn="gprs0.vipnet.hr" type="default,supl" /> - <apn carrier="VIPnet" mcc="219" mnc="10" apn="data.vip.hr" user="38591" password="38591" server="219.91.99.91" type="default,supl" /> - <apn carrier="VIPnet MMS" mcc="219" mnc="10" apn="mms.vipnet.hr" mmsc="http://mms.vipnet.hr/servlets/mms" mmsproxy="212.91.99.91" mmsport="8080" type="mms" /> - <apn carrier="Telenor RS" mcc="220" mnc="01" apn="internet" user="telenor" password="gprs" proxy="217.65.192.33" port="8080" type="default,supl" /> - <apn carrier="Telenor RS MMS" mcc="220" mnc="01" apn="mms" mmsc="http://mms.telenor.rs/servlets/mms" mmsproxy="217.65.192.33" mmsport="8080" type="mms" /> - <apn carrier="Telenor MNE internet" mcc="220" mnc="02" apn="internet" proxy="192.168.246.005" port="8080" mmsc="" user="gprs" password="gprs" type="default,supl" /> - <apn carrier="Telenor MNE mms" mcc="220" mnc="02" apn="mms" proxy="" port="" mmsproxy="192.168.246.005" mmsport="8080" mmsc="http://mm.vor.telenor.me" user="mms" password="mms" type="mms" /> - <apn carrier="MTS RS INTERNET" mcc="220" mnc="03" apn="gprsinternet" user="mts" password="064" proxy="" port="" type="default,supl" /> - <apn carrier="MTS RS" mcc="220" mnc="03" apn="gprswap" proxy="172.17.88.198" port="8080" user="mts" password="064" mmsc="" type="default,supl" /> - <apn carrier="MTS RS MMS" mcc="220" mnc="03" apn="mms" proxy="" port="" user="mts" password="064" mmsc="http://mms.mts064.telekom.rs/mms/wapenc" mmsproxy="172.17.85.131" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile Internet" mcc="220" mnc="04" apn="tmcg-wnw" proxy="010.000.005.019" port="8080" user="38267" password="38267" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="220" mnc="04" apn="mms" proxy="" port="" user="38267" password="38267" mmsc="http://192.168.180.100/servlets/mms" mmsproxy="010.000.005.019" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Vip MMS" mcc="220" mnc="05" apn="vipmobile.mms" proxy="" port="" mmsproxy="212.15.182.82" mmsport="8080" mmsc="http://mmsc.vipmobile.rs" user="vipmobile" password="vipmobile" type="mms" /> - <apn carrier="Vip GPRS" mcc="220" mnc="05" apn="vipmobile" proxy="212.15.182.82" port="8080" mmsc="" user="vipmobile" password="vipmobile" authtype="1" type="default,supl" /> - <apn carrier="Vip MMS" mcc="220" mnc="05" apn="vipmobile.mms" proxy="" port="" mmsproxy="212.15.182.82" mmsport="8080" mmsc="http://mmsc.vipmobile.rs" user="vipmobile" password="vipmobile" authtype="1" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="01" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" mvno_type="spn" mvno_match_data="IUSACELL" /> - <apn carrier="Internet Modem" mcc="222" mnc="01" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" mvno_type="spn" mvno_match_data="IUSACELL" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="01" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" mvno_type="spn" mvno_match_data="IUSACELL" /> - <apn carrier="Unefon Internet" mcc="222" mnc="01" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" mvno_type="spn" mvno_match_data="UNEFON" /> - <apn carrier="Unefon Modem" mcc="222" mnc="01" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" mvno_type="spn" mvno_match_data="UNEFON" /> - <apn carrier="Unefon MMS" mcc="222" mnc="01" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" mvno_type="spn" mvno_match_data="UNEFON" /> - <apn carrier="TIM IT" mcc="222" mnc="01" apn="ibox.tim.it" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TIM IT WAP" mcc="222" mnc="01" apn="wap.tim.it" proxy="" port="" user="WAPTIM" password="WAPTIM" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="TIM MMS" mcc="222" mnc="01" apn="mms.tim.it" proxy="" port="" user="" password="" mmsc="http://mms.tim.it/servlets/mms" mmsproxy="213.230.130.89" mmsport="80" type="mms" /> - <apn carrier="iTIM" mcc="222" mnc="01" apn="unico.tim.it" proxy="213.230.130.89" port="80" user="" password="" mmsc="http://mms.tim.it/servlets/mms" mmsproxy="213.230.130.89" mmsport="80" type="mms" /> - <apn carrier="Tiscali INTERNET" mcc="222" mnc="01" apn="tiscalimobileinternet" type="default,supl" /> - <apn carrier="Tiscali MMS" mcc="222" mnc="01" apn="tiscalimobilemms" mmsc="http://mms.tiscali.mobi/servlets/mms" mmsproxy="213.230.130.89" mmsport="80" type="mms" /> - <apn carrier="COOPVOCE WEB" mcc="222" mnc="01" apn="web.coopvoce.it" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Coop Mobile" type="default,supl" /> - <apn carrier="COOPVOCE MMS" mcc="222" mnc="01" apn="mms.coopvoce.it" proxy="" port="" user="" password="" mmsc="http://mms.coop.it/servlets/mms" mmsproxy="213.230.130.89" mmsport="80" mvno_type="spn" mvno_match_data="Coop Mobile" authtype="1" type="mms" /> - <apn carrier="Fastweb 4G" mcc="222" mnc="08" apn="apn.fastweb.it" proxy="" port="" user="" password="" mmsc="http://mms.fastweb.it/mms/wapenc" mmsproxy="85.18.189.217" mmsport="8080" mvno_type="spn" mvno_match_data="FASTWEB" authtype="2" type="default,supl,mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="010" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="010" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="010" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="011" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="011" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="011" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="012" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="012" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="012" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="013" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="013" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="013" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="014" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="014" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="014" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="015" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="015" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="015" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="016" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="016" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="016" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="017" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="017" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="017" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="018" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="018" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="018" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="019" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="222" mnc="019" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="019" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Vodafone Tethering" mcc="222" mnc="10" apn="web.omnitel.it" type="dun" /> - <apn carrier="Vodafone IT" mcc="222" mnc="10" apn="mobile.vodafone.it" type="default,supl" /> - <apn carrier="Vodafone IT MMS" mcc="222" mnc="10" apn="mms.vodafone.it" mmsproxy="10.128.224.10" mmsport="80" mmsc="http://mms.vodafone.it/servlets/mms" type="mms" /> - <apn carrier="Vodafone IT IMS" mcc="222" mnc="10" apn="ims" type="ims" protocol="IPV4V6" /> - <apn carrier="Internet da cellulare" mcc="222" mnc="10" apn="wap.omnitel.it" proxy="10.128.201.76" port="80" type="default,supl" /> - <apn carrier="PosteMobile" mcc="222" mnc="10" apn="internet.postemobile.it" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="PosteMobile" type="default,supl" /> - <apn carrier="PosteMobile WAP" mcc="222" mnc="10" apn="wap.postemobile.it" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="PosteMobile" spn="Post mobile" type="default,supl" /> - <apn carrier="PosteMobile MMS" mcc="222" mnc="10" apn="mms.postemobile.it" proxy="" port="" user="" password="" mmsc="http://mms.postemobile.it/servlets/mms" mmsproxy="10.128.224.10" mmsport="80" mvno_type="spn" mvno_match_data="PosteMobile" spn="Post mobile" type="mms" /> - <apn carrier="Lycamobile" mcc="222" mnc="10" apn="data.lycamobile.it" user="lmit" password="plus" type="default,supl" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="11" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="11" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="11" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="12" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="12" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="12" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="13" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="13" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="13" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="14" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="14" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="14" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="15" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="15" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="15" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="16" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="16" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="16" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="17" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="17" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="17" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="18" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="18" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="18" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="222" mnc="19" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell Modem" mcc="222" mnc="19" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="222" mnc="19" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Lycamobile IT" mcc="222" mnc="35" apn="data.lycamobile.it" proxy="" port="" user="lmit" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" type="default,supl" /> - <apn carrier="Iliad" mcc="222" mnc="50" apn="iliad" mmsc="http://mms.iliad-italia.it" type="default,supl,mms" /> - <apn carrier="Wind IT WEB" mcc="222" mnc="88" apn="internet.wind" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Wind IT MMS" mcc="222" mnc="88" apn="mms.wind" proxy="" port="" user="" password="" mmsc="http://mms.wind.it" mmsproxy="212.245.244.11" mmsport="8080" type="mms" /> - <apn carrier="3" mcc="222" mnc="99" apn="tre.it" proxy="" port="" user="" password="" mmsc="http://10.216.59.240:10021/mmsc" mmsproxy="62.13.171.3" mmsport="8799" type="default,supl,mms" /> - <apn carrier="3 IT" mcc="222" mnc="99" apn="tre.it" proxy="" port="" user="" password="" mmsc="http://10.216.59.240:10021/mmsc" mmsproxy="wsb.treumts.it" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Fastweb 3G" mcc="222" mnc="99" apn="apn.fastweb.it" proxy="" port="" user="" password="" mmsc="http://mms.fastweb.it/mms/wapenc" mmsproxy="10.0.65.9" mmsport="8080" mvno_type="spn" mvno_match_data="FASTWEB" authtype="2" type="default,supl,mms" /> - <apn carrier="Vodafone Internet" mcc="226" mnc="01" apn="internet.vodafone.ro" proxy="" port="" user="internet.vodafone.ro" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="Vodafone RO" mcc="226" mnc="01" apn="internet.vodafone.ro" proxy="" port="" user="internet.vodafone.ro" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="Vodafone RO live! PRE" mcc="226" mnc="01" apn="live.pre.vodafone.com" proxy="193.230.161.231" port="8080" user="live" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="Vodafone RO live!" mcc="226" mnc="01" apn="live.vodafone.com" proxy="193.230.161.231" port="8080" user="live" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="Vodafone RO MMS PRE" mcc="226" mnc="01" apn="mms.pre.vodafone.ro" proxy="" port="" user="mms" password="vodafone" mmsc="http://multimedia/servlets/mms" mmsproxy="193.230.161.231" mmsport="8080" type="mms" /> - <apn carrier="Vodafone RO MMS" mcc="226" mnc="01" apn="mms.vodafone.ro" proxy="" port="" user="mms" password="vodafone" mmsc="http://multimedia/servlets/mms" mmsproxy="193.230.161.231" mmsport="8080" type="mms" /> - <apn carrier="Cosmote Internet" mcc="226" mnc="03" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Cosmote Broadband RO" mcc="226" mnc="03" apn="broadband" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Cosmote RO MMS" mcc="226" mnc="03" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc1.mms.cosmote.ro:8002" mmsproxy="10.252.1.62" mmsport="8080" type="mms" /> - <apn carrier="Cosmote WNW RO" mcc="226" mnc="03" apn="wnw" proxy="10.252.1.62" port="8080" user="wnw" password="wnw" mmsc="" type="default,supl" /> - <apn carrier="Telekom Romania Broadband" mcc="226" mnc="03" apn="broadband" type="default,supl" /> - <apn carrier="Digi Mobil" mcc="226" mnc="05" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="DIGI Proxy" mcc="226" mnc="05" apn="internet" proxy="10.10.3.130" port="8080" mmsc="" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="MMS" mcc="226" mnc="05" apn="mms" proxy="" port="" mmsc="http://10.10.3.133:8002" user="" password="" type="mms" /> - <apn carrier="Cosmote Internet" mcc="226" mnc="06" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Cosmote MMS" mcc="226" mnc="06" apn="mms" proxy="" port="" mmsproxy="10.252.1.62" mmsport="8080" mmsc="http://mmsc1.mms.cosmote.ro:8002" user="" password="" authtype="3" type="mms" /> - <apn carrier="web'n'walk" mcc="226" mnc="06" apn="wnw" user="wnw" password="wnw" type="default,supl" /> - <apn carrier="Orange MMS" mcc="226" mnc="10" apn="mms" proxy="" port="" mmsproxy="62.217.247.252" mmsport="8799" mmsc="http://wap.mms.orange.ro:8002" user="" password="" type="mms" /> - <apn carrier="Orange Internet" mcc="226" mnc="10" apn="net" user="" password="" type="default,supl" /> - <apn carrier="Swisscom" mcc="228" mnc="01" apn="gprs.swisscom.ch" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Swisscom-MMS" mcc="228" mnc="01" apn="event.swisscom.ch" proxy="" port="" mmsproxy="192.168.210.2" mmsport="8080" mmsc="http://mms.natel.ch:8079" user="" password="" authtype="3" type="mms" /> - <apn carrier="Sunrise Internet" mcc="228" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Sunrise MMS" mcc="228" mnc="02" apn="mms.sunrise.ch" proxy="" port="" user="" password="" mmsc="http://mmsc.sunrise.ch" mmsproxy="212.35.34.75" mmsport="8080" type="mms" /> - <apn carrier="Salt Internet" mcc="228" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="Salt MMS" mcc="228" mnc="03" apn="mms" mmsc="http://192.168.151.3:8002" mmsproxy="192.168.151.2" mmsport="8080" type="mms" /> - <apn carrier="Salt Prepay" mcc="228" mnc="03" apn="click" type="default,supl" /> - <apn carrier="Lycamobile CH" mcc="228" mnc="54" apn="data.lycamobile.ch" user="lmch" password="plus" type="default,supl" /> - <apn carrier="T-Mobile CZ IMS" mcc="230" mnc="01" apn="IMS" type="ims" protocol="IPV4V6" /> - <apn carrier="T-Mobile CZ" mcc="230" mnc="01" apn="internet.t-mobile.cz" user="wap" password="wap" server="*" mmsc="http://mms" mmsproxy="010.000.000.010" mmsport="80" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="230" mnc="01" apn="mms.t-mobile.cz" proxy="" port="" mmsproxy="010.000.000.010" mmsport="80" mmsc="http://mms" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="O2 CZ" mcc="230" mnc="02" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="O2 CZ" mcc="230" mnc="02" apn="wap" proxy="160.218.160.218" port="9201" mmsc="" user="O2" password="wap" type="default,supl" /> - <apn carrier="O2 CZ MMS" mcc="230" mnc="02" apn="mms" proxy="" port="" mmsproxy="160.218.160.218" mmsport="8080" mmsc="http://mms.o2active.cz:8002" user="" password="" authtype="3" type="mms" /> - <apn carrier="Vodafone CZ" mcc="230" mnc="03" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone CZ MMS" mcc="230" mnc="03" apn="mms" proxy="" port="" user="mms" password="mms" server="mms" mmsc="http://mms" mmsproxy="10.11.10.111" mmsport="80" type="mms" /> - <apn carrier="GPRS Web" mcc="230" mnc="99" apn="Internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="MMS" mcc="230" mnc="99" apn="MMS" proxy="" port="" mmsproxy="10.011.010.111" mmsport="80" mmsc="http://mms" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="Orange Internet" mcc="231" mnc="01" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Orange World" mcc="231" mnc="01" apn="orangewap" proxy="213.151.208.156" port="8799" mmsc="" user="wap" password="wap" type="default,supl" authtype="3" /> - <apn carrier="Orange MMS" mcc="231" mnc="01" apn="mms" proxy="" port="" mmsproxy="213.151.208.145" mmsport="8799" mmsc="http://imms.orange.sk" user="wap" password="wap" authtype="3" type="mms" /> - <apn carrier="Orange World" mcc="231" mnc="01" apn="orangewap" user="wap" password="wap" proxy="213.151.208.156" port="8799" type="default,supl" /> - <apn carrier="T-Mobile Internet" mcc="231" mnc="02" apn="internet" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="231" mnc="02" apn="mms" proxy="" port="" mmsproxy="192.168.001.001" mmsport="8080" mmsc="http://mms" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="Telekom SK" mcc="231" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="Telekom SK MMS" mcc="231" mnc="02" apn="mms" user="mms" password="mms" mmsc="http://mms" mmsproxy="192.168.1.1" mmsport="8080" type="mms" /> - <apn carrier="Telekom SK" mcc="231" mnc="04" apn="internet" type="default,supl" /> - <apn carrier="Telekom SK MMS" mcc="231" mnc="04" apn="mms" user="mms" password="mms" mmsc="http://mms" mmsproxy="192.168.1.1" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile SK" mcc="231" mnc="04" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-Mobile SK MMS" mcc="231" mnc="04" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms" mmsproxy="192.168.1.1" mmsport="8080" type="mms" /> - <apn carrier="Orange Internet" mcc="231" mnc="05" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange MMS" mcc="231" mnc="05" apn="mms" proxy="" port="" user="wap" password="wap" mmsc="http://imms.orange.sk" mmsproxy="213.151.208.145" mmsport="8799" type="mms" /> - <apn carrier="Internet" mcc="231" mnc="06" apn="O2 internet" user="" password="" type="default,supl" /> - <apn carrier="mms" mcc="231" mnc="06" apn="o2 mms" proxy="" port="" mmsproxy="10.97.1.11" mmsport="8080" mmsc="http://mms.o2world.sk:8002" user="" password="" type="mms" /> - <apn carrier="O2 SK" mcc="231" mnc="06" apn="o2internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="O2 SK MMS" mcc="231" mnc="06" apn="o2mms" proxy="" port="" user="" password="" mmsc="http://mms.o2world.sk:8002" mmsproxy="10.97.1.11" mmsport="8080" type="mms" /> - <apn carrier="live!" mcc="232" mnc="01" apn="A1.net" proxy="194.48.124.71" port="8001" mmsc="" user="ppp@A1plus.at" password="ppp" authtype="1" type="default,supl" /> - <apn carrier="A1 MMS" mcc="232" mnc="01" apn="free.A1.net" proxy="" port="" mmsproxy="194.48.124.71" mmsport="8001" mmsc="http://mmsc.A1.net" user="ppp@A1plus.at" password="ppp" authtype="1" type="mms" /> - <apn carrier="Mobilkom" mcc="232" mnc="01" apn="a1.net" user="ppp@a1plus.at" password="ppp" type="default,supl" /> - <apn carrier="A1" mcc="232" mnc="01" apn="a1.net" proxy="" port="" user="ppp@A1plus.at" password="ppp" server="*" mmsc="http://mmsc.A1.net" mmsproxy="194.48.124.71" mmsport="8001" type="default,supl,mms" /> - <apn carrier="Mobilkom MMS" mcc="232" mnc="01" apn="free.a1.net" proxy="" port="" user="ppp@a1plus.at" password="ppp" mmsc="http://mmsc.a1.net" mmsproxy="194.48.124.71" mmsport="8001" type="mms" /> - <apn carrier="T-Mobile Internet" mcc="232" mnc="03" apn="gprsinternet" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mmsc.t-mobile.at/servlets/mms" mmsproxy="010.012.000.020" mmsport="80" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile MMS" mcc="232" mnc="03" apn="gprsmms" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mmsc.t-mobile.at/servlets/mms" mmsproxy="010.012.000.020" mmsport="80" authtype="1" type="mms" /> - <apn carrier="3 AT" mcc="232" mnc="05" apn="drei.at" server="http://mobile.drei.at" mmsc="http://mmsc" mmsproxy="213.094.078.133" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Orange AT-MMS" mcc="232" mnc="05" apn="orange.mms" proxy="" port="" user="mms" password="mms" server="*" mmsc="http://mmsc.orange.at/mms/wapenc" mmsproxy="194.24.128.118" mmsport="8080" type="mms" /> - <apn carrier="Orange Web" mcc="232" mnc="05" apn="orange.smartphone" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="tele.ring web" mcc="232" mnc="07" apn="web" proxy="" port="" user="web@telering.at" password="web" mmsc="http://relay.mms.telering.at" mmsproxy="212.095.031.050" mmsport="80" authtype="1" type="default,supl" /> - <apn carrier="telering mms" mcc="232" mnc="07" apn="mms" proxy="" port="" user="web@telering.at" password="web" mmsc="http://relay.mms.telering.at" mmsproxy="212.095.031.050" mmsport="80" authtype="1" type="mms" /> - <apn carrier="HoT Internet" mcc="232" mnc="07" apn="webaut" type="default,supl" /> - <apn carrier="HoT MMS" mcc="232" mnc="07" apn="mmsaut" user="" password="" mmsc="http://mmsaut.at/send" mmsproxy="212.95.31.50" mmsport="80" type="mms" /> - <apn carrier="tele.ring MMS" mcc="232" mnc="07" apn="mms" proxy="" port="" user="wap@telering.at" password="wap" mmsc="http://relay.mms.telering.at" mmsproxy="212.95.31.50" mmsport="8080" type="mms" /> - <apn carrier="tele.ring WEB" mcc="232" mnc="07" apn="web" proxy="" port="" user="web@telering.at" password="web" mmsc="" type="default,supl" /> - <apn carrier="Planet 3" mcc="232" mnc="10" apn="drei.at" user="" password="" type="default,supl" /> - <apn carrier="3MMS" mcc="232" mnc="10" apn="drei.at" proxy="" port="" mmsproxy="213.94.78.133" mmsport="8799" mmsc="http://mmsc" user="" password="" type="mms" /> - <apn carrier="3 AT" mcc="232" mnc="10" apn="drei.at" server="http://mobile.drei.at" mmsc="http://mmsc" mmsproxy="213.094.078.133" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Drei A" mcc="232" mnc="10" apn="drei.at" proxy="" port="" user="drei" password="" server="http://mobile.drei.at" mmsc="http://mmsc" mmsproxy="213.94.78.133" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Bob" mcc="232" mnc="11" apn="bob.at" proxy="" port="" user="data@bob.at" password="ppp" server="http://start.bob.at/" mmsc="" type="default,supl" /> - <apn carrier="Bob MMS" mcc="232" mnc="11" apn="mms.bob.at" proxy="194.48.124.7" port="8001" user="data@bob.at" password="web" server="http://start.bob.at/" mmsc="http://mmsc.bob.at" mmsproxy="194.48.124.7" mmsport="8001" type="mms" /> - <apn carrier="Orange World" mcc="232" mnc="12" apn="orange.world" proxy="194.24.128.118" port="80" mmsc="" user="wap" password="wap" authtype="3" type="default,supl" /> - <apn carrier="Orange Web" mcc="232" mnc="12" apn="orange.web" user="web" password="web" authtype="3" type="default,supl" /> - <apn carrier="Orange MMS" mcc="232" mnc="12" apn="orange.mms" proxy="" port="" mmsproxy="194.24.128.118" mmsport="8080" mmsc="http://mmsc.orange.at/mms/wapenc" user="mms" password="mms" authtype="3" type="mms" /> - <apn carrier="Orange Video" mcc="232" mnc="12" apn="orange.video" user="video" password="" authtype="3" type="default,supl" /> - <apn carrier="Yesss" mcc="232" mnc="12" apn="webapn.at" type="default,supl" /> - <apn carrier="UPC Mobile" mcc="232" mnc="13" apn="internet.at.upcmobile.com" type="default,supl" /> - <apn carrier="spusu" mcc="232" mnc="17" apn="mass.at" type="default,supl" /> - <apn carrier="UBIQUISYS" mcc="234" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Vectone Mobile" type="default,supl,mms" /> - <apn carrier="Tesco Prepay" mcc="234" mnc="01" apn="prepay.tesco-mobile.com" user="tescowap" password="password" server="http://wap.tesco-mobile.com/" proxy="193.113.200.195" port="9201" type="default,supl,mms" /> - <apn carrier="Vectone Mobile" mcc="234" mnc="01" apn="webuk.mundio.com" type="default,supl" /> - <apn carrier="O2 Internet(pre)" mcc="234" mnc="02" apn="payandgo.o2.co.uk" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 Internet(post)" mcc="234" mnc="02" apn="mobile.o2.co.uk" user="O2web" password="password" type="default,supl" /> - <apn carrier="O2 WAP(pre)" mcc="234" mnc="02" apn="payandgo.o2.co.uk" proxy="193.113.200.195" port="8080" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 WAP(post)" mcc="234" mnc="02" apn="wap.o2.co.uk" proxy="193.113.200.195" port="8080" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 MMS(pre)" mcc="234" mnc="02" apn="payandgo.o2.co.uk" mmsproxy="193.113.200.195" mmsport="8080" mmsc="http://mmsc.mms.o2.co.uk:8002" user="payandgo" password="password" type="mms" /> - <apn carrier="O2 MMS(post)" mcc="234" mnc="02" apn="wap.o2.co.uk" proxy="" port="" mmsproxy="193.113.200.195" mmsport="8080" mmsc="http://mmsc.mms.o2.co.uk:8002" user="o2wap" password="password" type="mms" /> - <apn carrier="BT One Phone Internet" mcc="234" mnc="08" apn="btmobile.bt.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="BT" type="default,supl" /> - <apn carrier="BT MMS" mcc="234" mnc="08" apn="mms.btonephone.com" proxy="" port="" user="" password="" mmsc="http://mmsc" mmsproxy="proxy.btonephone.com" mmsport="8080" mvno_type="spn" mvno_match_data="BT" type="mms" /> - <apn carrier="Sure Internet" mcc="234" mnc="09" apn="internet" type="default,supl" /> - <apn carrier="Sure WAP" mcc="234" mnc="09" apn="wap" proxy="10.0.3.101" port="80" type="default,supl" /> - <apn carrier="Sure MMS" mcc="234" mnc="09" apn="mms" mmsproxy="10.0.3.101" mmsport="80" mmsc="http://mmsc.gprs.cw.com/" type="mms" /> - <apn carrier="TelecomDefault" mcc="234" mnc="10" apn="wap.telecom.co.nz" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="TelecomMMS" mcc="234" mnc="10" apn="wap.telecom.co.nz" proxy="" port="" mmsproxy="210.55.11.73" mmsport="8080" mmsc="http://lsmmsc.xtra.co.nz" user="" password="" authtype="3" type="mms" /> - <apn carrier="o2 Mobile Web" mcc="234" mnc="10" apn="mobile.o2.co.uk" user="mobileweb" password="password" type="default,supl" /> - <apn carrier="o2 MMS" mcc="234" mnc="10" apn="payandgo.o2.co.uk" proxy="" port="" mmsproxy="193.113.200.195" mmsport="8080" mmsc="http://mmsc.mms.o2.co.uk:8002" user="payandgo" password="password" type="mms" /> - <apn carrier="O2 UK" mcc="234" mnc="10" apn="mobile.o2.co.uk" user="o2web" password="password" mmsc="http://mmsc.mms.o2.co.uk:8002" mmsproxy="193.113.200.195" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="O2 Contract" mcc="234" mnc="10" apn="wap.o2.co.uk" proxy="193.113.200.195" port="8080" user="o2wap" password="password" mmsc="http://mmsc.mms.o2.co.uk:8002/" mmsproxy="193.113.200.195" mmsport="8080" type="default,hipri,supl,mms" /> - <apn carrier="O2 PAYG" mcc="234" mnc="10" apn="payandgo.o2.co.uk" proxy="193.113.200.195" port="8080" user="payandgo" password="password" mmsc="http://mmsc.mms.o2.co.uk:8002/" mmsproxy="193.113.200.195" mmsport="8080" type="default,hipri,supl,mms" /> - <apn carrier="O2 WEB" mcc="234" mnc="10" apn="mobile.o2.co.uk" proxy="" port="" user="O2web" password="O2web" mmsc="" type="default,supl" /> - <apn carrier="giffgaff" mcc="234" mnc="10" apn="giffgaff.com" user="giffgaff" password="password" mmsc="http://mmsc.mediamessaging.co.uk:8002" mmsproxy="82.132.254.1" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Tesco Mobile" mcc="234" mnc="10" apn="prepay.tesco-mobile.com" proxy="193.113.200.195" port="8080" user="tescowap" password="password" mmsc="http://mmsc.mms.o2.co.uk:10021/mmsc" mmsproxy="193.113.200.195" mmsport="8080" mvno_type="spn" mvno_match_data="TESCO" authtype="1" type="default,supl,mms" /> - <apn carrier="giffgaff GPRS" mcc="234" mnc="10" apn="giffgaff.com" proxy="193.113.200.195" port="8080" user="giffgaff" password="password" mmsc="" mvno_type="spn" mvno_match_data="giffgaff" authtype="1" type="default,supl" /> - <apn carrier="giffgaff MMS" mcc="234" mnc="10" apn="giffgaff.com" proxy="" port="" user="giffgaff" password="password" mmsc="http://mmsc.mediamessaging.co.uk:8002" mmsproxy="193.113.200.195" mmsport="8080" mvno_type="spn" mvno_match_data="giffgaff" authtype="1" type="mms" /> - <apn carrier="Tesco UK" mcc="234" mnc="10" apn="prepay.tesco-mobile.com" proxy="193.113.200.195" port="8080" user="tescowap" password="password" mmsc="http://mmsc.mms.02.co.uk:8002" mmsproxy="193.113.200.195" mmsport="8080" mvno_type="spn" mvno_match_data="TESCO" type="default,supl,mms,wap" /> - <apn carrier="O2 Internet(pre)" mcc="234" mnc="11" apn="payandgo.o2.co.uk" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 Internet(post)" mcc="234" mnc="11" apn="mobile.o2.co.uk" user="O2web" password="password" type="default,supl" /> - <apn carrier="O2 WAP(pre)" mcc="234" mnc="11" apn="payandgo.o2.co.uk" proxy="193.113.200.195" port="8080" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 WAP(post)" mcc="234" mnc="11" apn="wap.o2.co.uk" proxy="193.113.200.195" port="8080" user="payandgo" password="password" type="default,supl" /> - <apn carrier="O2 MMS(pre)" mcc="234" mnc="11" apn="payandgo.o2.co.uk" mmsproxy="193.113.200.195" mmsport="8080" mmsc="http://mmsc.mms.o2.co.uk:8002" user="payandgo" password="password" type="mms" /> - <apn carrier="O2 MMS(post)" mcc="234" mnc="11" apn="wap.o2.co.uk" proxy="193.113.200.195" port="8080" mmsc="http://mmsc.mms.o2.co.uk:8002" user="o2wap" password="password" type="mms" /> - <apn carrier="Vodafone Internet(Pre)" mcc="234" mnc="15" apn="pp.vodafone.co.uk" proxy="" port="" user="web" password="web" mmsc="" type="default,supl" /> - <apn carrier="Vodafone Internet(Post)" mcc="234" mnc="15" apn="internet" proxy="" port="" user="web" password="web" mmsc="" type="default,supl" /> - <apn carrier="Vodafone WAP(Pre)" mcc="234" mnc="15" apn="pp.vodafone.co.uk" proxy="212.183.137.12" port="8799" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Vodafone WAP(Post)" mcc="234" mnc="15" apn="wap.vodafone.co.uk" proxy="212.183.137.12" port="8799" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Vodafone MMS(Pre)" mcc="234" mnc="15" apn="pp.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="mms" /> - <apn carrier="Vodafone MMS(Post)" mcc="234" mnc="15" apn="wap.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="mms" /> - <apn carrier="Vodafone UK Contract Internet" mcc="234" mnc="15" apn="Internet" user="web" password="web" server="*" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.012" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Vodafone Post-pay ISP" mcc="234" mnc="15" apn="internet" user="web" password="web" type="default,supl" /> - <apn carrier="Talkmobile" mcc="234" mnc="15" apn="payg.talkmobile.co.uk" type="default,supl" /> - <apn carrier="Talkmobile MMS" mcc="234" mnc="15" apn="payg.talkmobile.co.uk" user="wap" password="password" mmsc="http://mms.talkmobile.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="mms" /> - <apn carrier="Vodafone Prepay" mcc="234" mnc="15" apn="pp.vodafone.co.uk" user="wap" password="wap" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Vodafone UK Contract WAP" mcc="234" mnc="15" apn="wap.vodafone.co.uk" user="wap" password="wap" server="*" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.012" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Lebara UK" mcc="234" mnc="15" apn="uk.lebara.mobi" user="web" password="web" type="default,supl" /> - <apn carrier="Lebara UK MMS" mcc="234" mnc="15" apn="uk.lebara.mobi" user="web" password="web" server="*" mmsc="http://mms.lebara.co.uk/servlets/mms" mmsproxy="212.183.137.012" mmsport="8799" type="mms" /> - <apn carrier="Talkmobile" mcc="234" mnc="15" apn="talkmobile.co.uk" user="wap" password="wap" mmsc="http://mms.talkmobile.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="default,supl,mms" /> - <apn carrier="OVIVO" mcc="234" mnc="15" apn="ovivomobile.com" type="default,supl" /> - <apn carrier="OVIVO MMS" mcc="234" mnc="15" apn="gprsconnect.com" mmsc="http://mms.gprsconnect.com/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="mms" /> - <apn carrier="TalkTalk" mcc="234" mnc="15" apn="mobile.talktalk.co.uk" mmsc="http://mms.talktalk.co.uk/servlets/mms" port="8799" mmsproxy="212.183.137.12" mmsport="8799" authtype="1" type="default" /> - <apn carrier="Sainsburys" mcc="234" mnc="15" apn="payg.mobilebysainsburys.co.uk" proxy="" port="" user="" password="" mmsc="http://mms.mobilesainsburys.co.uk/servltes/mms" mmsproxy="212.183.137.12" mmsport="8799" authtype="1" type="default,supl,mms" /> - <apn carrier="Sainsbury's Internet" mcc="234" mnc="15" apn="payg.mobilebysainsburys.co.uk" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Sainsbury's" type="default,supl" /> - <apn carrier="UK - Lebara Web" mcc="234" mnc="15" apn="uk.lebara.mobi" proxy="" port="" user="web" password="web" mmsc="" mvno_type="spn" mvno_match_data="Lebara" authtype="1" type="default,supl" /> - <apn carrier="UK - Lebara MMS" mcc="234" mnc="15" apn="" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lebara" authtype="1" type="mms" /> - <apn carrier="UK - Lebara GPRS" mcc="234" mnc="15" apn="uk.lebara.mobi" proxy="" port="" user="wap" password="wap" mmsc="http://mms.lebara.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="Lebara" authtype="1" type="default,supl,mms,wap" /> - <apn carrier="Sainsbury's MMS" mcc="234" mnc="15" apn="Sainsburys MMS" proxy="" port="" user="" password="" mmsc="http://mms.mobilebysainsburys.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="Sainsbury's" type="mms" /> - <apn carrier="Talkmobile Payg" mcc="234" mnc="15" apn="payg.talkmobile.co.uk" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Talkmobile" type="default,supl" /> - <apn carrier="Talkmobile MMS Payg" mcc="234" mnc="15" apn="payg.talkmobile.co.uk" proxy="" port="" user="wap" password="password" mmsc="http://mms.talkmobile.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="Talkmobile" type="mms" /> - <apn carrier="Talkmobile" mcc="234" mnc="15" apn="talkmobile.co.uk" proxy="" port="" user="wap" password="wap" mmsc="http://mms.talkmobile.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="Talkmobile" type="default,supl,mms" /> - <apn carrier="Contract WAP" mcc="234" mnc="15" apn="wap.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Contract WAP MMS" mcc="234" mnc="15" apn="wap.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Vodafone Pre Pay" mcc="234" mnc="15" apn="pp.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Vodafone Pre Pay MMS" mcc="234" mnc="15" apn="pp.vodafone.co.uk" proxy="" port="" user="wap" password="wap" mmsc="http://mms.vodafone.co.uk/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" type="mms" /> - <apn carrier="OVIVO" mcc="234" mnc="15" apn="ovivomobile.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Ovivo" type="default,supl,dun,fota" /> - <apn carrier="BT Mobile" mcc="234" mnc="15" apn="btmobile.bt.com" proxy="" port="" user="bt" password="bt" mmsc="" mvno_type="spn" mvno_match_data="BT" authtype="1" type="default,supl" /> - <apn carrier="BT Mobile" mcc="234" mnc="15" apn="btmobile.bt.com" proxy="" port="" user="bt" password="bt" mmsc="http://mms.bt.com/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="BT" authtype="1" type="mms" /> - <apn carrier="3 Internet" mcc="234" mnc="20" apn="three.co.uk" type="default,supl" /> - <apn carrier="3 Modem" mcc="234" mnc="20" apn="3internet" type="default,supl" /> - <apn carrier="3 MMS" mcc="234" mnc="20" apn="three.co.uk" proxy="" port="" user="" password="" mmsc="http://mms.um.three.co.uk:10021/mmsc" mmsproxy="217.171.129.2" mmsport="8799" type="mms" /> - <apn carrier="3 UK" mcc="234" mnc="20" apn="three.co.uk" proxy="" port="" user="" password="" mmsc="http://mms.um.three.co.uk:10021/mmsc" mmsproxy="217.171.129.2" mmsport="8799" type="default,supl,mms" /> - <apn carrier="FreedomPop" mcc="234" mnc="20" apn="freedompop.foggmobile.com" type="" /> - <apn carrier="Giffgaff" mcc="234" mnc="20" apn="giffgaff.com" proxy="" port="" user="giffgaff" password="user" mmsc="http://mmsc.mediamessaging.co.uk:8002" mmsproxy="193.113.200.195" mmsport="8080" mvno_type="spn" mvno_match_data="giffgaff" type="default,supl,mms" /> - <apn carrier="iD Mobile (UK)" mcc="234" mnc="20" apn="id" proxy="" port="" user="" password="" mmsc="http://mms.um.idmobile.co.uk:10021/mmsc" mmsproxy="mms.idmobile.co.uk" mmsport="8799" type="default,mms" /> - <apn carrier="BT Business" mcc="234" mnc="230" apn="btmobile.bt.com" user="bt" password="bt" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="Truphone UK" mcc="234" mnc="25" apn="truphone.com" type="default,supl" /> - <apn carrier="UK - Lycamobile Web" mcc="234" mnc="26" apn="data.lycamobile.co.uk" proxy="" port="" user="lmuk" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" authtype="1" type="default,supl" /> - <apn carrier="UK - Lycamobile MMS" mcc="234" mnc="26" apn="" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" authtype="1" type="mms" /> - <apn carrier="T-Mobile Internet" mcc="234" mnc="30" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile Broadband" mcc="234" mnc="30" apn="broadband.t-mobile.uk" user="T-Mobile" password="TM" type="default,dun" /> - <apn carrier="T-Mobile PictureMessage" mcc="234" mnc="30" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mmsc.t-mobile.co.uk:8002" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="30" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="EE MMS" mcc="234" mnc="30" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="30" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" mvno_type="pnn" mvno_match_data="EE" authtype="1" type="default,supl" /> - <apn carrier="EE MMS" mcc="234" mnc="30" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" mvno_type="pnn" mvno_match_data="EE" authtype="1" type="mms" /> - <apn carrier="virgin Mobile" mcc="234" mnc="30" apn="goto.virginmobile.uk" proxy="" port="" user="user" password="" mmsc="http://mms.virginmobile.co.uk:8002" mmsproxy="193.30.166.2" mmsport="8080" mvno_type="pnn" mvno_match_data="Virgin" authtype="1" type="default,mms,supl" /> - <apn carrier="Virgin Internet" mcc="234" mnc="30" apn="goto.virginmobile.uk" proxy="" port="" user="user" password="" mmsc="" mvno_type="pnn" mvno_match_data="Virgin" authtype="1" type="default,supl" /> - <apn carrier="Virgin MMS" mcc="234" mnc="30" apn="goto.virginmobile.uk" proxy="" port="" user="user" password="" mmsc="http://mms.virginmobile.co.uk:8002" mmsproxy="193.30.166.2" mmsport="8080" mvno_type="pnn" mvno_match_data="Virgin" authtype="1" type="mms" /> - <apn carrier="Asda Mobile" mcc="234" mnc="30" apn="everywhere" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="LIFE MMS" mcc="234" mnc="30" apn="tslpaygnet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="LIFE" authtype="1" type="default,supl" /> - <apn carrier="LIFE" mcc="234" mnc="30" apn="tslpaygoanet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="LIFE" authtype="1" type="default,supl" /> - <apn carrier="ASDA Internet" mcc="234" mnc="30" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" mvno_type="pnn" mvno_match_data="ASDA Mobile" authtype="1" type="default,supl" /> - <apn carrier="ASDA MMS" mcc="234" mnc="30" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms" mmsproxy="149.254.201.135" mmsport="8080" mvno_type="pnn" mvno_match_data="ASDA Mobile" authtype="1" type="mms" /> - <apn carrier="BT Internet" mcc="234" mnc="30" apn="btmobile.bt.com" proxy="" port="" user="bt" password="bt" mmsc="" mvno_type="spn" mvno_match_data="BT" authtype="1" type="default,supl" /> - <apn carrier="BT MMS" mcc="234" mnc="30" apn="mms.bt.com" proxy="" port="" user="bt" password="bt" mmsc="http://mms" mmsproxy="149.254.201.135" mmsport="8080" mvno_type="spn" mvno_match_data="BT" authtype="1" type="mms" /> - <apn carrier="BT One Phone Internet" mcc="234" mnc="30" apn="btmobile.bt.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="BT" type="default,supl" /> - <apn carrier="BT MMS" mcc="234" mnc="30" apn="mms.btonephone.com" proxy="" port="" user="" password="" mmsc="http://mmsc" mmsproxy="proxy.btonephone.com" mmsport="8080" mvno_type="spn" mvno_match_data="BT" type="mms" /> - <apn carrier="T-Mobile Internet" mcc="234" mnc="31" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile Broadband" mcc="234" mnc="31" apn="broadband.t-mobile.uk" user="T-Mobile" password="TM" type="default,dun" /> - <apn carrier="T-Mobile PictureMessage" mcc="234" mnc="31" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mmsc.t-mobile.co.uk:8002" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Virgin UK" mcc="234" mnc="31" apn="goto.virginmobile.uk" user="user" type="default,supl" /> - <apn carrier="Virgin UK MMS" mcc="234" mnc="31" apn="goto.virginmobile.uk" user="" password="" mmsc="http://mms.virginmobile.co.uk:8002" mmsproxy="193.30.166.2" mmsport="8080" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="31" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" authtype="1" type="default,supl,dun" /> - <apn carrier="EE MMS" mcc="234" mnc="31" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="T-Mobile Internet" mcc="234" mnc="32" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="T-Mobile Broadband" mcc="234" mnc="32" apn="broadband.t-mobile.uk" user="T-Mobile" password="TM" type="default,dun" /> - <apn carrier="T-Mobile PictureMessage" mcc="234" mnc="32" apn="general.t-mobile.uk" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mmsc.t-mobile.co.uk:8002" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Virgin UK" mcc="234" mnc="32" apn="goto.virginmobile.uk" user="user" type="default,supl" /> - <apn carrier="Virgin UK MMS" mcc="234" mnc="32" apn="goto.virginmobile.uk" user="" password="" mmsc="http://mms.virginmobile.co.uk:8002" mmsproxy="193.30.166.2" mmsport="8080" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="32" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" authtype="1" type="default,supl,dun" /> - <apn carrier="EE MMS" mcc="234" mnc="32" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Orange internet" mcc="234" mnc="33" apn="orangeinternet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange Broadband" mcc="234" mnc="33" apn="consumerbroadband" type="default,dun" /> - <apn carrier="Orange MMS" mcc="234" mnc="33" apn="orangemms" mmsproxy="192.168.224.10" mmsport="8081" mmsc="http://mms.orange.co.uk/" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="33" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" mvno_type="spn" mvno_match_data="EE" authtype="1" type="default,supl,dun" /> - <apn carrier="EE MMS" mcc="234" mnc="33" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" mvno_type="spn" mvno_match_data="EE" authtype="1" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="33" apn="everywhere" proxy="" port="" user="eesecure" password="secure" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="EE MMS" mcc="234" mnc="33" apn="eezone" proxy="" port="" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="UK - Lycamobile Web" mcc="234" mnc="33" apn="data.lycamobile.co.uk" proxy="" port="" user="lmuk" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" authtype="1" type="default,supl" /> - <apn carrier="UK - Lycamobile MMS" mcc="234" mnc="33" apn="" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" authtype="1" type="mms" /> - <apn carrier="Life Mobile" mcc="234" mnc="33" apn="tslpaymnet" proxy="" port="" user="" password="" mmsc="http://mms/" mmsproxy="193.35.133.194" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="LIFE MMS" mcc="234" mnc="33" apn="tslmms" proxy="" port="" user="wap" password="wap" mmsc="http://mms" mmsproxy="193.35.133.194" mmsport="8080" mvno_type="spn" mvno_match_data="LIFE" authtype="1" type="mms" /> - <apn carrier="LIFE" mcc="234" mnc="33" apn="tslpaygnet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="LIFE" authtype="1" type="default,supl" /> - <apn carrier="Now Mobile" mcc="234" mnc="33" apn="nowmobilenet" proxy="" port="" user="" password="" mmsc="http://mms/" mmsproxy="193.35.133.194" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="Now PAYG" mcc="234" mnc="33" apn="NowMobileNet" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Now PAYG" type="default,supl" /> - <apn carrier="Now PAYG MMS" mcc="234" mnc="33" apn="NowMobileMMS" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="193.35.133.194" mmsport="8080" mvno_type="spn" mvno_match_data="Now PAYG" type="mms" /> - <apn carrier="Orange Internet" mcc="234" mnc="34" apn="orangeinternet" type="default,supl" /> - <apn carrier="Orange WAP" mcc="234" mnc="34" apn="paygwap" proxy="192.168.71.35" port="8080" user="Orange" password="Multimedia" type="default,supl" /> - <apn carrier="Orange WAP" mcc="234" mnc="34" apn="orangewap" proxy="192.168.71.35" port="8080" user="Orange" password="Multimedia" type="default,supl" /> - <apn carrier="Orange MMS" mcc="234" mnc="34" apn="orangemms" mmsproxy="192.168.224.10" mmsport="8080" mmsc="http://mms.orange.co.uk/" user="Orange" password="Multimedia" type="mms" /> - <apn carrier="EE Internet" mcc="234" mnc="34" apn="everywhere" user="eesecure" password="secure" authtype="1" type="default,supl,dun" /> - <apn carrier="EE MMS" mcc="234" mnc="34" apn="eezone" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Truphone Internet" mcc="234" mnc="35" apn="truphone.com" type="default,supl" /> - <apn carrier="Virgin Mobile" mcc="234" mnc="38" apn="goto.virginmobile.uk" user="" password="" mmsc="http://mms.virginmobile.co.uk:8002" mmsproxy="193.30.166.2" mmsport="8080" authtype="2" type="default,supl,mms" /> - <apn carrier="Jersey Internet" mcc="234" mnc="50" apn="pepper" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Jersey WAP" mcc="234" mnc="50" apn="pepper" proxy="212.9.19.199" port="3130" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Jersey MMS" mcc="234" mnc="50" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms.surfmail.com/mmsc" mmsproxy="212.9.19.199" mmsport="3130" type="mms" /> - <apn carrier="Sure Internet" mcc="234" mnc="55" apn="internet" type="default,supl" /> - <apn carrier="Sure WAP" mcc="234" mnc="55" apn="wap" proxy="10.0.3.101" port="80" type="default,supl" /> - <apn carrier="Sure MMS" mcc="234" mnc="55" apn="mms" mmsproxy="10.0.3.101" mmsport="80" mmsc="http://mmsc.gprs.cw.com/" type="mms" /> - <apn carrier="Sure Mobile MMS" mcc="234" mnc="55" apn="MMS" mmsc="http://mmsc.gprs.cw.com/" mmsproxy="10.0.3.101" mmsport="80" type="mms" /> - <apn carrier="Lifestyle GPRS" mcc="234" mnc="55" apn="mobilefunemail" proxy="10.0.3.101" port="80" user="" password="" server="http://lifestyle.cw.com" mmsc="" type="default,supl,hipri" /> - <apn carrier="Lifestyle MMS" mcc="234" mnc="55" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc.gprs.cw.com/" mmsproxy="10.0.3.101" mmsport="80" type="mms" /> - <apn carrier="Manx Internet(Pre)" mcc="234" mnc="58" apn="web.prontogo.net" proxy="195.10.99.51" port="8080" user="webgo" password="webgo" mmsc="" type="default,supl" /> - <apn carrier="Manx WAP(Pre)" mcc="234" mnc="58" apn="wap.prontogo.net" proxy="195.10.99.41" port="8080" user="wapgo" password="wapgo" mmsc="" type="default,supl" /> - <apn carrier="Manx Internet(Post)" mcc="234" mnc="58" apn="3gpronto" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Manx Internet(Post)" mcc="234" mnc="58" apn="web.manxpronto.net" proxy="" port="" user="gprs" password="gprs" mmsc="" type="default,supl" /> - <apn carrier="Manx MMS(Pre)" mcc="234" mnc="58" apn="mms.prontogo.net" proxy="" port="" user="mmsgo" password="mmsgo" mmsc="http://mms.manxpronto.net:8002" mmsproxy="195.10.99.41" mmsport="8080" type="mms" /> - <apn carrier="Manx MMS(Post)" mcc="234" mnc="58" apn="mms.manxpronto.net" proxy="" port="" user="mms" password="mms" mmsc="http://mms.manxpronto.net:8002" mmsproxy="195.10.99.46" mmsport="8080" type="mms" /> - <apn carrier="Manx Telecom" mcc="234" mnc="58" apn="3gpronto" proxy="195.010.099.046" port="8080" mmsc="http://mms.manxpronto.net:8002" type="default,supl,mms" /> - <apn carrier="Manx Telecom Contract MMS" mcc="234" mnc="58" apn="mms.manxpronto.net" user="mms" password="mms" mmsc="http://mms.manxpronto.net:8002" mmsproxy="195.10.99.46" mmsport="8080" type="mms" /> - <apn carrier="Manx Telecom Prepay MMS" mcc="234" mnc="58" apn="mms.prontogo.net" user="mmsgo" password="mmsgo" mmsc="http://mms.manxpronto.net:8002" mmsproxy="195.10.99.41" mmsport="8080" type="mms" /> - <apn carrier="Manx Telecom Contract WEB" mcc="234" mnc="58" apn="web.manxpronto.net" user="gprs" password="gprs" type="default,supl" /> - <apn carrier="EE Internet" mcc="234" mnc="86" apn="everywhere" user="eesecure" password="secure" authtype="1" type="default,supl,dun" /> - <apn carrier="EE MMS" mcc="234" mnc="86" apn="eezone" user="eesecure" password="secure" mmsc="http://mms/" mmsproxy="149.254.201.135" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="OVIVO MMS" mcc="235" mnc="15" apn="ovivomvno.com" proxy="" port="" user="" password="" mmsc="http://mms.gprsconnect.com/servlets/mms" mmsproxy="212.183.137.12" mmsport="8799" mvno_type="spn" mvno_match_data="Ovivo" type="mms" /> - <apn carrier="TDC" mcc="238" mnc="01" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="TDC MMS" mcc="238" mnc="01" apn="MMS" proxy="" port="" mmsproxy="inetproxy.tdc.dk" mmsport="8080" mmsc="http://mmsc.tdc.dk:8002" user="" password="" authtype="3" type="mms" /> - <apn carrier="TDC Internet" mcc="238" mnc="01" apn="internet" proxy="62.135.173.214" authtype="1" mvno_match_data="2380101xxxxxxxx" mvno_type="imsi" type="default,supl" /> - <apn carrier="TDC MMS" mcc="238" mnc="01" apn="mms" mmsc="http://mmsc.tdc.dk:8002" mmsproxy="194.182.251.15" mmsport="8080" authtype="1" mvno_match_data="2380101xxxxxxxx" mvno_type="imsi" type="mms" /> - <apn carrier="TDC SE" mcc="238" mnc="01" apn="internet.se" proxy="" port="" user="" password="" mmsc="" type="" /> - <apn carrier="TDC NO" mcc="238" mnc="01" apn="internet.no" proxy="" port="" user="" password="" mmsc="" type="" /> - <apn carrier="coop mobil MMS" mcc="238" mnc="01" apn="mms" mmsc="http://192.168.241.114:8002" mmsproxy="194.182.251.15" mmsport="8080" type="mms" /> - <apn carrier="DLG Tele" mcc="238" mnc="01" apn="websp" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="DLG Tele MMS" mcc="238" mnc="01" apn="mmssp" proxy="" port="" mmsproxy="193.209.134.131" mmsport="8080" mmsc="http://mms.telia.dk" user="" password="" authtype="3" type="mms" /> - <apn carrier="Fullrate" mcc="238" mnc="01" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Fullrate MMS" mcc="238" mnc="01" apn="mms" proxy="" port="" mmsproxy="194.182.251.15" mmsport="8080" mmsc="http://mmsc.tdc.dk:8002" user="" password="" authtype="3" type="mms" /> - <apn carrier="Lycamobile" mcc="238" mnc="01" apn="data.lycamobile.dk" user="lmdk" password="plus" type="default,supl" /> - <apn carrier="Telmore" mcc="238" mnc="01" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Telmore MMS" mcc="238" mnc="01" apn="mms" proxy="" port="" mmsproxy="194.182.251.15" mmsport="8080" mmsc="http://192.168.241.114:8002" user="" password="" type="mms" /> - <apn carrier="Telmore WAP" mcc="238" mnc="01" apn="wap" proxy="194.182.251.15" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telmore MMS" mcc="238" mnc="01" apn="telenor" proxy="" port="" user="" password="" mmsc="http://192.168.241.114:8002" mmsproxy="194.182.251.15" mmsport="8080" type="mms" /> - <apn carrier="Telenor Internet" mcc="238" mnc="02" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="238" mnc="02" apn="telenor" proxy="" port="" mmsproxy="212.88.64.8" mmsport="8080" mmsc="http://mms.telenor.dk" user="" password="" type="mms" /> - <apn carrier="Onfone" mcc="238" mnc="02" apn="Internet" type="default,supl" /> - <apn carrier="Onfone MMS" mcc="238" mnc="02" apn="telenor" proxy="" port="" mmsproxy="212.88.64.8" mmsport="8080" mmsc="http://mms.telenor.dk" user="" password="" type="mms" /> - <apn carrier="DLG Internet" mcc="238" mnc="02" apn="websp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="DLG MMS" mcc="238" mnc="02" apn="mmssp" proxy="" port="" user="" password="" mmsc="http://mms.telia.dk" mmsproxy="193.209.134.131" mmsport="8080" type="mms" /> - <apn carrier="CBB GPRS" mcc="238" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="CBB WAP" mcc="238" mnc="02" apn="internet" proxy="212.88.64.8" port="8080" user="sonofon" password="" mmsc="" type="default,supl" /> - <apn carrier="CBB MMS" mcc="238" mnc="02" apn="sonofon" proxy="" port="" user="" password="" mmsc="http://mms.telenor.dk" mmsproxy="212.88.64.8" mmsport="8080" type="mms" /> - <apn carrier="Tele2 GRPS" mcc="238" mnc="02" apn="internet.tele2.dk" proxy="130.244.196.90" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 MMS" mcc="238" mnc="02" apn="internet.tele2.dk" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.dk/" mmsproxy="193.12.40.54" mmsport="8080" type="mms" /> - <apn carrier="BiBoB Internet" mcc="238" mnc="02" apn="internet.bibob.dk" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="BiBoB MMS" mcc="238" mnc="02" apn="mms.bibob.dk" proxy="" port="" user="" password="" mmsc="http://mms.sonofon.dk" mmsproxy="212.88.64.8" mmsport="8080" type="mms" /> - <apn carrier="BiBoB WAP" mcc="238" mnc="02" apn="internet.bibob.dk" proxy="212.88.64.8" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Lebara Internet" mcc="238" mnc="02" apn="internet.lebara.dk" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Lebara MMS" mcc="238" mnc="02" apn="mms.lebara.dk" proxy="" port="" user="" password="" mmsc="http://mms.sonofon.dk" mmsproxy="212.88.64.8" mmsport="8080" type="mms" /> - <apn carrier="3" mcc="238" mnc="06" apn="data.tre.dk" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="3MMS" mcc="238" mnc="06" apn="data.tre.dk" proxy="" port="" mmsproxy="172.016.001.025" mmsport="8799" mmsc="http://mms" user="" password="" authtype="3" type="mms" /> - <apn carrier="3 DK" mcc="238" mnc="06" apn="data.tre.dk" mmsc="http://mms.3.dk" mmsproxy="mmsproxy.3.dk" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Oister" mcc="238" mnc="06" apn="data.dk" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Oister MMS" mcc="238" mnc="06" apn="data.dk" proxy="" port="" user="" password="" mmsc="http://mms.oister.dk" mmsproxy="mmsproxy.oister.dk" mmsport="8799" type="mms" /> - <apn carrier="Telmore WAP" mcc="238" mnc="10" apn="wap" proxy="194.182.251.15" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telmore MMS" mcc="238" mnc="10" apn="mms" proxy="" port="" user="" password="" mmsc="http://192.168.241.114:8002" mmsproxy="194.182.251.15" mmsport="8080" type="mms" /> - <apn carrier="M1 Internet GPRS" mcc="238" mnc="10" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="M1 MMS GPRS" mcc="238" mnc="10" apn="mms" proxy="" port="" user="" password="" mmsc="http://192.168.241.114:8002" mmsproxy="194.182.251.15" mmsport="8080" type="mms" /> - <apn carrier="M1 WAP GPRS" mcc="238" mnc="10" apn="wap" proxy="194.182.251.15" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Lycamobile DK" mcc="238" mnc="12" apn="data.lycamobile.dk" user="lmdk" password="plus" type="default,supl" /> - <apn carrier="Call me Internet" mcc="238" mnc="20" apn="websp" user="" password="" spn="Callme" type="default,supl" /> - <apn carrier="CallMe MMS" mcc="238" mnc="20" apn="mmssp" proxy="" port="" mmsproxy="193.209.134.131" mmsport="80" mmsc="http://mms.telia.dk" user="" password="" type="mms" /> - <apn carrier="Call me Internet" mcc="238" mnc="20" apn="websp" authtype="2" mvno_match_data="Call me" mvno_type="spn" type="default,supl" /> - <apn carrier="Call me MMS" mcc="238" mnc="20" apn="mmssp" mmsc="http://mms.telia.dk" mmsproxy="193.209.134.131" mmsport="8080" authtype="2" mvno_match_data="Call me" mvno_type="spn" type="mms" /> - <apn carrier="Telia DK" mcc="238" mnc="20" apn="www.internet.mtelia.dk" mvno_match_data="2382010x" mvno_type="imsi" type="default,supl" /> - <apn carrier="Telia DK MMS" mcc="238" mnc="20" apn="www.mms.mtelia.dk" mmsc="http://mms.telia.dk" mmsproxy="193.209.134.131" mmsport="8080" mvno_match_data="2382010x" mvno_type="imsi" type="mms" /> - <apn carrier="DLG Tele" mcc="238" mnc="20" apn="websp" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="DLG Tele MMS" mcc="238" mnc="20" apn="mmssp" proxy="" port="" mmsproxy="193.209.134.131" mmsport="8080" mmsc="http://mms.telia.dk" user="" password="" authtype="3" type="mms" /> - <apn carrier="Waoo Mobil" mcc="238" mnc="20" apn="websp" user="" password="" type="default,supl" /> - <apn carrier="Waoo Mobil MMS" mcc="238" mnc="20" apn="mmssp" proxy="" port="" mmsproxy="193.209.134.131" mmsport="8080" mmsc="http://mms.telia.dk" user="" password="" type="mms" /> - <apn carrier="Siminn Internet" mcc="238" mnc="20" apn="websp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Siminn WAP" mcc="238" mnc="20" apn="websp" proxy="62.44.158.29" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Siminn MMS" mcc="238" mnc="20" apn="mmssp" proxy="" port="" user="" password="" mmsc="http://mms.telia.dk" mmsproxy="193.209.134.131" mmsport="8080" type="mms" /> - <apn carrier="Telia SuifPort" mcc="238" mnc="30" apn="www.internet.mtelia.dk" user="" password="" type="default,supl" /> - <apn carrier="Telia MMS" mcc="238" mnc="30" apn="www.mms.mtelia.dk" proxy="" port="" mmsproxy="193.209.134.131" mmsport="80" mmsc="http://mms.telia.dk" user="" password="" type="mms" /> - <apn carrier="Siminn Internet" mcc="238" mnc="30" apn="websp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Siminn WAP" mcc="238" mnc="30" apn="websp" proxy="62.44.158.29" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Siminn MMS" mcc="238" mnc="30" apn="mmssp" proxy="" port="" user="" password="" mmsc="http://mms.telia.dk" mmsproxy="193.209.134.131" mmsport="8080" type="mms" /> - <apn carrier="Telenor Internet" mcc="238" mnc="77" apn="Internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="238" mnc="77" apn="telenor" proxy="" port="" user="" password="" mmsc="http://mms.telenor.dk" mmsproxy="212.88.64.8" mmsport="8080" type="mms" /> - <apn carrier="Telia Internet" mcc="240" mnc="01" apn="online.telia.se" proxy="10.254.254.254" port="8080" mmsc="" user="" password="" type="default,supl" spn="Telia" /> - <apn carrier="Telia MMS" mcc="240" mnc="01" apn="mms.telia.se" proxy="" port="" mmsproxy="193.209.134.132" mmsport="80" mmsc="http://mmss" user="" password="" type="mms" spn="Telia" /> - <apn carrier="Halebop Internet" mcc="240" mnc="01" apn="halebop.telia.se" proxy="10.254.254.254" port="8080" mmsc="" user="" password="" type="default,supl" spn="Halebop" /> - <apn carrier="Halebop MMS" mcc="240" mnc="01" apn="mms.telia.se" proxy="" port="" mmsproxy="193.209.134.132" mmsport="80" mmsc="http://mmss" user="" password="" type="mms" spn="Halebop" /> - <apn carrier="Halebop Internet" mcc="240" mnc="01" apn="halebop.telia.se" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="halebop" type="default,supl" /> - <apn carrier="Halebop MMS" mcc="240" mnc="01" apn="mms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" mvno_type="spn" mvno_match_data="halebop" type="mms" /> - <apn carrier="Telia MMS" mcc="240" mnc="01" apn="mms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Telia Internet" mcc="240" mnc="01" apn="online.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TDC Internet" mcc="240" mnc="01" apn="internet.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TDC WAP" mcc="240" mnc="01" apn="internet.se" proxy="194.182.251.15" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TDC MMS" mcc="240" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.tdc.se:8002" mmsproxy="194.182.251.15" mmsport="8080" type="mms" /> - <apn carrier="Alltele Internet" mcc="240" mnc="01" apn="alltele.tmh-gprs.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Alltele MMS" mcc="240" mnc="01" apn="alltele.tmh-mms.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Bahnhof AB Internet" mcc="240" mnc="01" apn="bahnhofab.tmhgprs" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Bahnhof AB MMS" mcc="240" mnc="01" apn="bahnhofab.tmhmms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Bahnhof LDA Internet" mcc="240" mnc="01" apn="bahnhoflda.tmhgprs" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Bahnhof LDA MMS" mcc="240" mnc="01" apn="bahnhoflda.tmhmms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Bixia internet" mcc="240" mnc="01" apn="abbla.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Bixia MMS" mcc="240" mnc="01" apn="abblamms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="DGC internet" mcc="240" mnc="01" apn="dgc.tmhgprs" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="DGC MMS" mcc="240" mnc="01" apn="dgc.tmhmms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Mobil2 internet" mcc="240" mnc="01" apn="mobil2.tmhgprs" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Mobil2 MMS" mcc="240" mnc="01" apn="mobil2.tmhmms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Phonera internet" mcc="240" mnc="01" apn="phoneweb.tmh-gprs.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Phonera MMS" mcc="240" mnc="01" apn="phoneweb.tmh-mms.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="SKOMO internet" mcc="240" mnc="01" apn="scomo.tmh-gprs.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="SKOMO MMS" mcc="240" mnc="01" apn="scomo.tmh-mms.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Spinbox internet" mcc="240" mnc="01" apn="spinbox.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Spinbox MMS" mcc="240" mnc="01" apn="spinboxmms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Svea Billing internet" mcc="240" mnc="01" apn="inap2.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Svea Billing MMS" mcc="240" mnc="01" apn="inapmms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="SveaCom internet" mcc="240" mnc="01" apn="ct.tmh-gprs.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="SveaCom MMS" mcc="240" mnc="01" apn="ct.tmh-mms.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Telavox internet" mcc="240" mnc="01" apn="telavox.tmhgprs.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telavox MMS" mcc="240" mnc="01" apn="tel.tmhmms" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Telogic internet" mcc="240" mnc="01" apn="telogic.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telogic MMS" mcc="240" mnc="01" apn="telogicmms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Ventelo internet" mcc="240" mnc="01" apn="ventelo.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Ventelo MMS" mcc="240" mnc="01" apn="ventelomms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="WMG internet" mcc="240" mnc="01" apn="maingate.telia.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="WMG MMS" mcc="240" mnc="01" apn="wmgmms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss/" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="Halebop MMS" mcc="240" mnc="017" apn="mms.telia.se" proxy="" port="" user="" password="" mmsc="http://mmss" mmsproxy="193.209.134.132" mmsport="80" type="mms" /> - <apn carrier="3" mcc="240" mnc="02" apn="data.tre.se" proxy="" port="" user="" password="" mmsc="http://mms.tre.se" mmsproxy="mmsproxy.tre.se" mmsport="8799" type="default,supl,mms" /> - <apn carrier="3 SE" mcc="240" mnc="02" apn="data.tre.se" type="default,supl,mms" /> - <apn carrier="3 SE MMS" mcc="240" mnc="02" apn="data.tre.se" mmsc="http://mms.tre.se" mmsproxy="mmsproxy.tre.se" mmsport="8799" type="mms" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="04" apn="services.telenor.se" proxy="172.30.253.241" port="8799" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="240" mnc="04" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Telenor MMS" mcc="240" mnc="06" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="173.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="06" apn="services.telenor.se" proxy="173.30.253.241" port="8799" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Glocalnet Internet" mcc="240" mnc="06" apn="internet.glocalnet.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Glocalnet MMS" mcc="240" mnc="06" apn="services.glocalnet.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Glocalnet WAP GPRS" mcc="240" mnc="06" apn="services.glocalnet.se" proxy="172.30.253.241" port="8799" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 Internet" mcc="240" mnc="07" apn="4g.tele2.se" type="default,supl" /> - <apn carrier="Tele2 MMS" mcc="240" mnc="07" apn="4g.tele2.se" mmsc="http://mmsc.tele2.se" mmsproxy="130.244.202.30" mmsport="8080" type="mms" /> - <apn carrier="Tele2 Internet" mcc="240" mnc="07" apn="internet.tele2.no" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 MMS" mcc="240" mnc="07" apn="internet.tele2.no" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.no" mmsproxy="193.12.40.14" mmsport="8080" type="mms" /> - <apn carrier="Spring data" mcc="240" mnc="07" apn="data.springmobil.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Spring MMS" mcc="240" mnc="07" apn="mms.springmobil.se" proxy="" port="" user="" password="" mmsc="http://mms.springmobil.se" mmsproxy="213.88.184.37" mmsport="8080" type="mms" /> - <apn carrier="Glocalnet Mobilsurf" mcc="240" mnc="08" apn="services.glocalnet.se" proxy="172.30.253.241" port="8799" mmsc="" user="" password="" authtype="3" type="default,supl" spn="Glocalnet" /> - <apn carrier="Glocalnet MMS" mcc="240" mnc="08" apn="services.glocalnet.se" proxy="" port="" mmsproxy="172.30.253.241" mmsport="8799" mmsc="http://mms" user="" password="" authtype="3" type="mms" spn="Glocalnet" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="08" apn="services.telenor.se" proxy="172.30.253.241" port="8799" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="240" mnc="08" apn="services.telenor.se" proxy="" port="" mmsproxy="172.30.253.241" mmsport="8799" mmsc="http://mms" user="" password="" authtype="3" type="mms" /> - <apn carrier="Telenor SE" mcc="240" mnc="08" apn="internet.telenor.se" type="default,supl" /> - <apn carrier="Universal" mcc="240" mnc="08" apn="sp-services" proxy="172.030.253.241" port="8799" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Cellip" mcc="240" mnc="08" apn="services.telenor.se" proxy="172.30.253.241" port="8799" mmsproxy="172.030.253.241" mmsport="8799" mmsc="http://mms/" user="" password="" type="default,supl,mms" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="08" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="240" mnc="08" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Glocalnet Internet" mcc="240" mnc="08" apn="internet.glocalnet.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Glocalnet MMS" mcc="240" mnc="08" apn="services.glocalnet.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Telenor MMS" mcc="240" mnc="09" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="173.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="09" apn="services.telenor.se" proxy="173.30.253.241" port="8799" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Glocalnet Internet" mcc="240" mnc="09" apn="internet.glocalnet.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Glocalnet MMS" mcc="240" mnc="09" apn="services.glocalnet.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="172.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Spring data" mcc="240" mnc="10" apn="data.springmobil.se" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Spring MMS" mcc="240" mnc="10" apn="mms.springmobil.se" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.se" mmsproxy="130.244.202.30" mmsport="8080" type="mms" /> - <apn carrier="Spring data" mcc="240" mnc="10" apn="data.springmobil.se" type="default,supl" /> - <apn carrier="Spring MMS" mcc="240" mnc="10" apn="mms.springmobil.se" mmsc="http://mms.springmobil.se" mmsproxy="213.88.184.37" mmsport="8080" type="mms" /> - <apn carrier="Lycamobile SE" mcc="240" mnc="12" apn="data.lycamobile.se" user="lmse" password="plus" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="240" mnc="24" apn="services.telenor.se" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="173.30.253.241" mmsport="8799" type="mms" /> - <apn carrier="Telenor Mobilsurf" mcc="240" mnc="24" apn="services.telenor.se" proxy="173.30.253.241" port="8799" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telenor" mcc="242" mnc="01" apn="telenor.smart" mmsc="http://mmsc/" mmsproxy="mms-proxy.telenor.no" mmsport="8080" type="default,supl,mms" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="Mobitalk" mcc="242" mnc="01" apn="telenor" user="dj" password="dj" proxy="10.10.10.10" port="8080" mmsc="http://mmsc/" mmsproxy="10.10.10.11" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Phonero Internet" mcc="242" mnc="01" apn="internet.phonero.no" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Phonero MMS" mcc="242" mnc="01" apn="mms.phonero.no" proxy="" port="" user="phonero" password="1111" mmsc="http://mmsc" mmsproxy="10.10.10.11" mmsport="8080" type="mms" /> - <apn carrier="NetCom" mcc="242" mnc="02" apn="netcom" proxy="10.254.254.10" port="8080" mmsc="http://mm/" mmsproxy="212.169.66.4" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Tele2 Internet" mcc="242" mnc="04" apn="internet.tele2.no" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 MMS" mcc="242" mnc="04" apn="internet.tele2.no" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.no" mmsproxy="193.12.40.14" mmsport="8080" type="mms" /> - <apn carrier="NwN Internet" mcc="242" mnc="05" apn="internet" type="default,supl" /> - <apn carrier="NwN MMS" mcc="242" mnc="05" apn="mms" mmsc="http://mms.nwn.no" mmsproxy="188.149.250.10" mmsport="80" type="mms" /> - <apn carrier="TDC Internet" mcc="242" mnc="08" apn="internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="TDC MMS" mcc="242" mnc="08" apn="mms" proxy="" port="" mmsproxy="inetproxy.tdc.dk" mmsport="8080" mmsc="http://mmsc.tdc.dk:8002" user="" password="" authtype="3" type="mms" /> - <apn carrier="DNA Internet" mcc="244" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="DNA WAP" mcc="244" mnc="03" apn="wap" proxy="10.1.1.1" port="80" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="DNA MMS" mcc="244" mnc="03" apn="mms" user="dna" password="mms" mmsc="http://mmsc.dnafinland.fi/" mmsproxy="10.1.1.2" mmsport="8080" type="mms" /> - <apn carrier="DNA MMS" mcc="244" mnc="03" apn="mms" proxy="" port="" user="dna" password="mms" mmsc="http://mmsc.dnafinland.fi/" mmsproxy="10.1.10.2" mmsport="8080" type="mms" /> - <apn carrier="GSM Suomi Internet" mcc="244" mnc="03" apn="internet.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GSM Suomi MMS" mcc="244" mnc="03" apn="mms.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.gsm-suomi.fi" mmsproxy="" mmsport="8080" type="mms" /> - <apn carrier="Telia ISP GPRS" mcc="244" mnc="03" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telia MMS" mcc="244" mnc="03" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc:8002" mmsproxy="62.113.190.142" mmsport="9201" type="mms" /> - <apn carrier="OP WAP GPRS" mcc="244" mnc="03" apn="internet" proxy="157.124.248.60" port="9201" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Telia WAP GPRS" mcc="244" mnc="03" apn="internet" proxy="195.10.130.8" port="9201" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Telia Online GPRS" mcc="244" mnc="03" apn="wap" proxy="62.113.190.132" port="9201" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Aina Internet" mcc="244" mnc="03" apn="internet.aina.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Aina MMS" mcc="244" mnc="03" apn="mms.aina.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.aina.fi" mmsproxy="10.1.10.2" mmsport="8080" type="mms" /> - <apn carrier="DNA Internet" mcc="244" mnc="04" apn="internet" type="default,supl" /> - <apn carrier="DNA MMS" mcc="244" mnc="04" apn="mms" user="dna" password="mms" mmsc="http://mmsc.dnafinland.fi/" mmsproxy="10.1.1.2" mmsport="8080" type="mms" /> - <apn carrier="GSM Suomi Internet" mcc="244" mnc="04" apn="internet.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GSM Suomi MMS" mcc="244" mnc="04" apn="mms.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.gsm-suomi.fi" mmsproxy="" mmsport="8080" type="mms" /> - <apn carrier="Elisa Internet" mcc="244" mnc="05" apn="internet" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="Elisa MMS" mcc="244" mnc="05" apn="mms" proxy="" port="" mmsproxy="213.161.41.57" mmsport="80" mmsc="http://mms.elisa.fi" user="" password="" authtype="1" type="mms" /> - <apn carrier="Saunalahti Internet" mcc="244" mnc="05" apn="internet" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Saunalahti MMS" mcc="244" mnc="05" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.elisa.fi" mmsproxy="213.161.41.57" mmsport="80" authtype="1" type="mms" /> - <apn carrier="TDC Internet" mcc="244" mnc="10" apn="internet.song.fi" proxy="" port="" user="song@internet" password="songnet" mmsc="" type="default,supl" /> - <apn carrier="TDC MMS" mcc="244" mnc="10" apn="mms.song.fi" proxy="" port="" user="" password="" mmsc="http://mms.song.fi" mmsproxy="213.161.41.58" mmsport="80" type="mms" /> - <apn carrier="DNA Internet" mcc="244" mnc="12" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="DNA WAP" mcc="244" mnc="12" apn="wap" proxy="10.1.1.1" port="80" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="DNA MMS" mcc="244" mnc="12" apn="mms" user="dna" password="mms" mmsc="http://mmsc.dnafinland.fi" mmsproxy="10.1.1.2" mmsport="8080" type="mms" /> - <apn carrier="DNA MMS" mcc="244" mnc="12" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc.dna.fi/" mmsproxy="10.1.1.2" mmsport="8080" type="mms" /> - <apn carrier="DNA Pro Internet" mcc="244" mnc="12" apn="dnapro.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="DNA Pro MMS" mcc="244" mnc="12" apn="mms.dnapro.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.dnapro.fi" mmsproxy="10.1.1.21" mmsport="8080" type="mms" /> - <apn carrier="GSM Suomi Internet" mcc="244" mnc="12" apn="internet.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GSM Suomi MMS" mcc="244" mnc="12" apn="mms.gsm-suomi.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.gsm-suomi.fi" mmsproxy="" mmsport="8080" type="mms" /> - <apn carrier="Aina Internet" mcc="244" mnc="12" apn="internet.aina.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Aina MMS" mcc="244" mnc="12" apn="mms.aina.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.aina.fi" mmsproxy="10.1.10.2" mmsport="8080" type="mms" /> - <apn carrier="Go Mobile WAP" mcc="244" mnc="12" apn="wap.gomobile.fi" proxy="10.1.1.10" port="80" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Go Mobile MMS" mcc="244" mnc="12" apn="mms.gomobile.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.gomobile.fi" mmsproxy="10.1.1.11" mmsport="8080" type="mms" /> - <apn carrier="Go Mobile Internet" mcc="244" mnc="12" apn="internet.gomobile.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TDC Internet" mcc="244" mnc="12" apn="inet.tdc.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="TDC MMS" mcc="244" mnc="12" apn="mms.tdc.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.tdc.fi" mmsproxy="10.1.12.2" mmsport="8080" type="mms" /> - <apn carrier="KYMP Internet" mcc="244" mnc="12" apn="internet.kymp.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="KYMP MMS" mcc="244" mnc="12" apn="mms.kymp.net" proxy="" port="" user="" password="" mmsc="http://mmsc.kymp.net" mmsproxy="10.1.1.17" mmsport="8080" type="mms" /> - <apn carrier="Concept.10 Internet" mcc="244" mnc="12" apn="internet.c10.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Concept.10 MMS" mcc="244" mnc="12" apn="mms.c10.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.c10.fi" mmsproxy="10.1.1.19" mmsport="8080" type="mms" /> - <apn carrier="Setera Internet" mcc="244" mnc="12" apn="internet.setera.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Setera MMS" mcc="244" mnc="12" apn="mms.setera.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.setera.fi" mmsproxy="10.1.11.2" mmsport="8080" type="mms" /> - <apn carrier="Fujitsu Internet" mcc="244" mnc="12" apn="internet.invianet.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Fujitsu MMS" mcc="244" mnc="12" apn="mms.invianet.com" proxy="" port="" user="" password="" mmsc="http://mmsc.invianet.com" mmsproxy="10.1.2.3" mmsport="8080" type="mms" /> - <apn carrier="dicame Internet" mcc="244" mnc="12" apn="internet.dicame.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="dicame MMS" mcc="244" mnc="12" apn="mms.dicame.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.dicame.fi" mmsproxy="10.1.1.15" mmsport="8080" type="mms" /> - <apn carrier="Optimi Internet" mcc="244" mnc="12" apn="internet.dicame.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Optimi MMS" mcc="244" mnc="12" apn="mms.dicame.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.dicame.fi" mmsproxy="10.1.1.15" mmsport="8080" type="mms" /> - <apn carrier="Finora Internet" mcc="244" mnc="12" apn="internet.setera.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Finora MMS" mcc="244" mnc="12" apn="mms.setera.fi" proxy="" port="" user="" password="" mmsc="http://mmsc.setera.fi" mmsproxy="10.1.11.2" mmsport="8080" type="mms" /> - <apn carrier="DNA Internet" mcc="244" mnc="13" apn="internet" type="default,supl" /> - <apn carrier="DNA MMS" mcc="244" mnc="13" apn="mms" user="dna" password="mms" mmsc="http://mmsc.dnafinland.fi/" mmsproxy="10.1.1.2" mmsport="8080" type="mms" /> - <apn carrier="GSMAland internet" mcc="244" mnc="14" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GSMAland wap" mcc="244" mnc="14" apn="internet" proxy="194.110.177.70" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GSMAland mms" mcc="244" mnc="14" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.amt.aland.fi" mmsproxy="194.110.177.70" mmsport="8080" type="mms" /> - <apn carrier="Saunalahti Wap" mcc="244" mnc="21" apn="wap.saunalahti.fi" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Saunalahti Internet" mcc="244" mnc="21" apn="internet.saunalahti" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Saunalahti MMS" mcc="244" mnc="21" apn="mms.saunalahti.fi" proxy="" port="" user="" password="" mmsc="http://mms.saunalahti.fi:8002/" mmsproxy="62.142.4.197" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Sonera Internet" mcc="244" mnc="91" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Sonera MMS" mcc="244" mnc="91" apn="wap.sonera.net" proxy="" port="" user="" password="" mmsc="http://mms.sonera.fi:8002" mmsproxy="195.156.25.33" mmsport="80" type="mms" /> - <apn carrier="Tele Finland Internet" mcc="244" mnc="91" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele Finland MMS" mcc="244" mnc="91" apn="wap.sonera.net" proxy="" port="" user="" password="" mmsc="http://mms.sonera.fi:8002" mmsproxy="195.156.25.33" mmsport="80" type="mms" /> - <apn carrier="Omnitel MMS" mcc="246" mnc="01" apn="gprs.mms.lt" proxy="" port="" user="mms" password="mms" mmsc="http://mms.omnitel.net:8002/" mmsproxy="194.176.32.149" mmsport="8080" type="mms" /> - <apn carrier="Omnitel" mcc="246" mnc="01" apn="gprs.startas.lt" proxy="" port="" user="omni" password="omni" mmsc="" type="default,supl" /> - <apn carrier="Omnitel Internet" mcc="246" mnc="01" apn="omnitel" proxy="" port="" user="omni" password="omni" mmsc="" type="default,supl" /> - <apn carrier="Bite LT Internet" mcc="246" mnc="02" apn="banga" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Bite MMS" mcc="246" mnc="02" apn="mms" proxy="" port="" user="mms@mms" password="mms" mmsc="http://mmsc" mmsproxy="192.168.150.2" mmsport="8080" type="mms" /> - <apn carrier="Bite" mcc="246" mnc="02" apn="wap" proxy="" port="" user="" password="" server="213.226.131.133" mmsc="" type="default,supl" /> - <apn carrier="Tele2 Internet LT" mcc="246" mnc="03" apn="internet.tele2.lt" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 LT" mcc="246" mnc="03" apn="internet.vodafone.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tele2 MMS LT" mcc="246" mnc="03" apn="mms.tele2.lt" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.lt/" mmsproxy="193.12.40.29" mmsport="8080" type="mms" /> - <apn carrier="Tele2 LT MMS" mcc="246" mnc="03" apn="wap.tele2.lt" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.lt" mmsproxy="193.12.40.29" mmsport="8080" type="mms" /> - <apn carrier="VZW Test Internet" mcc="246" mnc="081" apn="VZWINTERNET" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test FOTA" mcc="246" mnc="081" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test IMS" mcc="246" mnc="081" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test CBS" mcc="246" mnc="081" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test Internet" mcc="246" mnc="81" apn="VZWINTERNET" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test FOTA" mcc="246" mnc="81" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test IMS" mcc="246" mnc="81" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="VZW Test CBS" mcc="246" mnc="81" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="LMT" mcc="247" mnc="01" apn="internet.lmt.lv" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="LMT MMS" mcc="247" mnc="01" apn="internet.lmt.lv" proxy="" port="" user="" password="" mmsc="http://mmsc.lmt.lv/mmsc" mmsproxy="212.93.97.201" mmsport="8080" type="mms" /> - <apn carrier="Tele2 Internet LV" mcc="247" mnc="02" apn="internet.tele2.lv" user="wap" password="wap" proxy="" port="" type="default,supl" /> - <apn carrier="Tele2 MMS LV" mcc="247" mnc="02" apn="mms.tele2.lv" proxy="" port="" user="wap" password="wap" mmsc="http://mmsc.tele2.lv/" mmsproxy="193.12.40.38" mmsport="8080" type="mms" /> - <apn carrier="Bite LV Internet" mcc="247" mnc="05" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Bite MMS" mcc="247" mnc="05" apn="mms" proxy="" port="" user="mms@mms" password="" mmsc="http://mmsc/servlets/mms" mmsproxy="192.168.150.2" mmsport="8080" type="mms" /> - <apn carrier="EMT" mcc="248" mnc="01" apn="internet.emt.ee" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="EMT MMS" mcc="248" mnc="01" apn="mms.emt.ee" proxy="" port="" user="" password="" mmsc="http://mms.emt.ee/servlets/mms" type="mms" /> - <apn carrier="Elisa EE" mcc="248" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Elisa EE MMS" mcc="248" mnc="02" apn="mms" proxy="" port="" user="" password="" mmsc="http://194.204.2.10" mmsproxy="194.204.2.6" mmsport="8080" type="mms" /> - <apn carrier="Tele2 EE" mcc="248" mnc="03" apn="internet.tele2.ee" proxy="" port="" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Tele2 EE MMS" mcc="248" mnc="03" apn="mms.emt.ee" proxy="" port="" user="" password="" mmsc="http://mms.emt.ee/servlets/mms" mmsproxy="217.71.32.82" mmsport="8080" type="mms" /> - <apn carrier="Tele2 MMS" mcc="248" mnc="03" apn="mms.tele2.ee" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.ee" mmsproxy="193.12.40.6" mmsport="8080" type="mms" /> - <apn carrier="MTS RU" mcc="250" mnc="01" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="ETK" mcc="250" mnc="01" apn="mms.etk.ru" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc" mmsproxy="10.10.30.60" mmsport="8080" type="default,supl,mms" /> - <apn carrier="MTS RU MMS" mcc="250" mnc="01" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Megafon Internet" mcc="250" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Megafon MMS" mcc="250" mnc="02" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mmsc:8002" mmsproxy="10.10.10.10" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="NCC" mcc="250" mnc="03" apn="mms" proxy="" port="" user="" password="" mmsc="http://10.0.3.50" mmsproxy="10.0.3.20" mmsport="8080" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="04" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="04" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="ETK" mcc="250" mnc="05" apn="internet.etk.ru" proxy="" port="" user="" password="" mmsc="" type="default,supl,mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="05" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="05" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Smarts RU internet" mcc="250" mnc="07" apn="internet.smarts.ru" type="default,supl" /> - <apn carrier="Smarts RU mms" mcc="250" mnc="07" apn="mms.smarts.ru" user="n@k" password="nok" mmsc="http://mmsc:8002" mmsproxy="172.24.121.5" mmsport="8080" type="mms" /> - <apn carrier="internet" mcc="250" mnc="07" apn="internet.smarts.ru" proxy="" port="" user="any" password="any" mmsc="" type="default,supl" /> - <apn carrier="mms" mcc="250" mnc="07" apn="mms.smarts.ru" proxy="" port="" user="wap" password="wap" mmsc="http://172.24.120.135/mms/wapenc" mmsproxy="172.24.128.5" mmsport="8080" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="10" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="10" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Beeline internet" mcc="250" mnc="11" apn="internet.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Beeline MMS" mcc="250" mnc="11" apn="mms.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="http://mms/" mmsproxy="192.168.94.23" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Yota" mcc="250" mnc="11" apn="internet.yota" authtype="1" type="default,supl" /> - <apn carrier="Yota MMS" mcc="250" mnc="11" apn="mms.yota" mmsc="http://mmsc:8002" mmsproxy="10.10.10.10" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="GPRS-Internet" mcc="250" mnc="12" apn="inet.bwc.ru" proxy="" port="" user="bwc" password="bwc" mmsc="" type="default,supl" /> - <apn carrier="BWC MMS" mcc="250" mnc="12" apn="mms.bwc.ru" proxy="" port="" user="bwc" password="bwc" mmsc="http://mmsc/mms" mmsproxy="10.10.17.2" mmsport="8080" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="13" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="13" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="MMS" mcc="250" mnc="16" apn="mms.ntc" proxy="" port="" user="" password="" mmsc="http://mmsc.vntc.ru/was" mmsproxy="80.243.64.68" mmsport="8080" type="mms" /> - <apn carrier="Internet" mcc="250" mnc="17" apn="internet.usi.ru" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS" mcc="250" mnc="17" apn="mms.usi.ru" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="192.168.168.192" mmsport="8080" type="mms" /> - <apn carrier="Tele2 RU" mcc="250" mnc="20" apn="internet.tele2.ru" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Tele2 RU MMS" mcc="250" mnc="20" apn="mms.tele2.ru" proxy="" port="" user="" password="" mmsc="http://mmsc.tele2.ru" mmsproxy="193.12.40.65" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="MegaFon Internet" mcc="250" mnc="30" apn="Internet" user="gdata" password="gdata" authtype="1" type="default,supl" /> - <apn carrier="MegaFon MMS" mcc="250" mnc="30" apn="mms" mmsproxy="10.10.10.10" mmsport="8080" mmsc="http://mmsc:8002" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="USI GPRS" mcc="250" mnc="39" apn="internet.usi.ru" type="default,supl" /> - <apn carrier="Utel MMS" mcc="250" mnc="39" apn="mms.usi.ru" mmsproxy="192.168.168.192" mmsport="8080" mmsc="http://mms" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="39" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="39" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Beeline internet" mcc="250" mnc="44" apn="internet.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Beeline MMS" mcc="250" mnc="44" apn="mms.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="http://mms/" mmsproxy="192.168.94.23" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="92" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="92" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="МТС-интернет" mcc="250" mnc="93" apn="internet.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="МТС Центр MMS" mcc="250" mnc="93" apn="mms.mts.ru" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.192" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="BeeLine RU" mcc="250" mnc="99" apn="internet.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="BeeLine RU MMS" mcc="250" mnc="99" apn="mms.beeline.ru" proxy="" port="" user="beeline" password="beeline" mmsc="http://mms/" mmsproxy="192.168.94.23" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Beeline Home" mcc="250" mnc="99" apn="home.beeline.ru" user="beeline" password="beeline" authtype="1" type="default,supl" /> - <apn carrier="Vodafone UA" mcc="255" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone UA MMS" mcc="255" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms" mmsproxy="192.168.10.10" mmsport="8080" type="mms" /> - <apn carrier="Beeline UA" mcc="255" mnc="02" apn="www.ab.kyivstar.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Beeline UA MMS" mcc="255" mnc="02" apn="mms.kyivstar.net" proxy="" port="" user="" password="" mmsc="http://mms.kyivstar.net/" mmsproxy="10.10.10.10" mmsport="8080" type="mms" /> - <apn carrier="Kyivstar" mcc="255" mnc="03" apn="www.kyivstar.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Kyivstar Prepaid" mcc="255" mnc="03" apn="www.ab.kyivstar.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Kyivstar MMS" mcc="255" mnc="03" apn="mms.kyivstar.net" proxy="" port="" user="" password="" mmsc="http://mms.kyivstar.net" mmsproxy="10.10.10.10" mmsport="8080" type="mms" /> - <apn carrier="lifecell" mcc="255" mnc="06" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="lifecell MMS" mcc="255" mnc="06" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.life" mmsproxy="10.10.10.10" mmsport="8080" type="mms" /> - <apn carrier="TriMob" mcc="255" mnc="07" apn="3g.utel.ua" proxy="" port="" user="" password="" mmsc="http://10.212.1.4/mms/wapenc" mmsproxy="10.212.3.148" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Velcom MMS" mcc="257" mnc="01" apn="mms.velcom.by" proxy="" port="" user="mms" password="mms" server="mms.velcom.by" mmsc="http://mms.velcom.by/servlets/mms" mmsproxy="10.200.15.15" mmsport="8080" type="mms" /> - <apn carrier="Velcom BY // Web Plus" mcc="257" mnc="01" apn="plus.velcom.by" proxy="" port="" user="plus" password="plus" mmsc="" type="default,supl" /> - <apn carrier="Velcom BY // Web 500" mcc="257" mnc="01" apn="vmi.velcom.by" proxy="" port="" user="vmi" password="vmi" mmsc="" type="default,supl" /> - <apn carrier="Velcom Web" mcc="257" mnc="01" apn="web.velcom.by" proxy="" port="" user="web" password="web" mmsc="" type="default,supl" /> - <apn carrier="Velcom BY // Web Basic" mcc="257" mnc="01" apn="web1.velcom.by" proxy="" port="" user="web1" password="web1" mmsc="" type="default,supl" /> - <apn carrier="Velcom BY // Web 25" mcc="257" mnc="01" apn="web2.velcom.by" proxy="" port="" user="web2" password="web2" mmsc="" type="default,supl" /> - <apn carrier="Velcom BY // Web 250" mcc="257" mnc="01" apn="web3.velcom.by" proxy="" port="" user="web3" password="web3" mmsc="" type="default,supl" /> - <apn carrier="MTS BY" mcc="257" mnc="02" apn="mts" proxy="" port="" user="mts" password="mts" mmsc="" type="default,supl" /> - <apn carrier="MTS BY MMS" mcc="257" mnc="02" apn="mts" proxy="" port="" user="mts" password="mts" mmsc="http://mmsc" mmsproxy="192.168.192.168" mmsport="8080" type="mms" /> - <apn carrier="life Internet" mcc="257" mnc="04" apn="internet.life.com.by" type="default,supl" /> - <apn carrier="life MMS" mcc="257" mnc="04" apn="mms.life.com.by" proxy="" port="" mmsproxy="10.10.10.20" mmsport="8080" mmsc="http://mms.life.com.by/mmsc" type="mms" /> - <apn carrier="Life:) // Internet" mcc="257" mnc="04" apn="mms.life.com.by" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Life:) // MMS" mcc="257" mnc="04" apn="mms.life.com.by" proxy="" port="" user="" password="" mmsc="http://mms.life.com.by/mmsc/" mmsproxy="10.10.10.20" mmsport="8080" type="mms" /> - <apn carrier="Orange IMO" mcc="259" mnc="01" apn="wap.orange.md" proxy="" port="" user="" password="" mmsc="http://wap.orange.md/" mmsproxy="9201" mmsport="8799" type="*" /> - <apn carrier="Orange MMS" mcc="259" mnc="01" apn="mms.orange.md" mmsc="http://mms/mms" mmsproxy="192.168.127.125" mmsport="3128" type="mms" /> - <apn carrier="Orange IMO" mcc="259" mnc="01" apn="wap.orange.md" proxy="192.168.127.124" mmsport="3128" type="default,supl" /> - <apn carrier="MD MOLDCELL" mcc="259" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="MD MOLDCELL" mcc="259" mnc="02" apn="mms" mmsproxy="10.0.10.10" mmsport="9401" mmsc="http://mms.moldcell.md/cmmsc/post" type="mms" /> - <apn carrier="Unite Internet PrePay" mcc="259" mnc="05" apn="internet3g.unite.md" type="default,supl" /> - <apn carrier="Unite Internet PostPay" mcc="259" mnc="05" apn="internet.unite.md" type="default,supl" /> - <apn carrier="Unite MMS" mcc="259" mnc="05" apn="mms.unite.md" mmsc="http://10.32.15.68:38090/was" mmsproxy="10.32.15.164" mmsport="8080" type="mms" /> - <apn carrier="Carrefour Mova" mcc="260" mnc="01" apn="www.mova.pl" type="default,supl" /> - <apn carrier="Carrefour Mova MMS" mcc="260" mnc="01" apn="mms.mova.pl" mmsc="http://mms.mova.pl:8002/" mmsproxy="212.2.96.16" mmsport="8080" type="mms" /> - <apn carrier="FM Group Mobile" mcc="260" mnc="01" apn="www.fmgmobie.pl" type="default,supl" /> - <apn carrier="FM Group Mobile MMS" mcc="260" mnc="01" apn="mms.fmgmobile.pl" mmsc="http://mms.fmgmobile.pl:8002/" mmsproxy="212.2.96.16" mmsport="8080" type="mms" /> - <apn carrier="GaduAIR" mcc="260" mnc="01" apn="internet.gadu-gadu.pl" type="default,supl" /> - <apn carrier="GaduAIR MMS" mcc="260" mnc="01" apn="mms.gadu-gadu.pl" mmsc="http://mms.gadu-gadu.pl:8002/" mmsproxy="212.2.96.16" mmsport="8080" type="mms" /> - <apn carrier="mBank mobile" mcc="260" mnc="01" apn="www.mobile.pl" type="default,supl" /> - <apn carrier="mBank mobile MMS" mcc="260" mnc="01" apn="mms.mobile.pl" mmsc="http://mms.mobile.pl:8080" mmsproxy="212.2.96.16" mmsport="8080" type="mms" /> - <apn carrier="Plus INTERNET" mcc="260" mnc="01" apn="plus" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Plus MMS" mcc="260" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.plusgsm.pl:8002" mmsproxy="212.2.96.16" mmsport="8080" type="mms" /> - <apn carrier="PlusWAP" mcc="260" mnc="01" apn="wap" user="plusgsm" password="plusgsm" proxy="212.2.96.16" mmsport="8080" type="default,supl" /> - <apn carrier="Era Internet" mcc="260" mnc="02" apn="erainternet" proxy="" port="" user="erainternet" password="erainternet" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Era MMS" mcc="260" mnc="02" apn="eramms" proxy="" port="" user="eramms" password="eramms" mmsc="http://mms.era.pl/servlets/mms" mmsproxy="213.158.194.226" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Era MMS" mcc="260" mnc="02" apn="eramms" user="eramms" password="eramms" server="*" mmsc="http://mms.era.pl/servlets/mms" mmsproxy="213.158.194.226" mmsport="8080" type="mms" /> - <apn carrier="Era Internet" mcc="260" mnc="02" apn="erainternet" user="erainternet" password="erainternet" type="default,supl" /> - <apn carrier="Tak-Tak" mcc="260" mnc="02" apn="erainternettt" user="erainternet" password="erainternet" type="default,supl" /> - <apn carrier="Heyah" mcc="260" mnc="02" apn="heyah.pl" user="heyah" password="heyah" type="default,supl" /> - <apn carrier="Heyah MMS" mcc="260" mnc="02" apn="heyahmms" user="heyah" password="heyah" mmsc="http:/mms.heyah.pl/servlets/mms" mmsproxy="213.158.194.057" mmsport="8080" type="mms" /> - <apn carrier="Mobilking MMS" mcc="260" mnc="02" apn="mmsMOBILKING" user="mobilking" password="mobilking" mmsc="http://mms.mobilking.pl/servlets/mms" mmsproxy="213.158.194.226" mmsport="8080" type="mms" /> - <apn carrier="Mobilking" mcc="260" mnc="02" apn="wapMOBILKING" user="mobilking" password="mobilking" type="default,supl" /> - <apn carrier="tuBiedronka" mcc="260" mnc="02" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="tuBiedronka MMS" mcc="260" mnc="02" apn="tubiedronkamms" user="tubiedronka" password="tubiedronka" mmsc="http://mms.tubiedronka.pl/servlets.mmsl" mmsproxy="213.158.194.226" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile.pl INTERNET" mcc="260" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-Mobile.pl MMS" mcc="260" mnc="02" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms/servlets/mms" mmsproxy="213.158.194.226" mmsport="8080" type="mms" /> - <apn carrier="Heyah INTERNET" mcc="260" mnc="02" apn="heyah.pl" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Heyah MMS" mcc="260" mnc="02" apn="heyahmms" proxy="" port="" user="" password="" mmsc="http://mms.heyah.pl/servlets/mms" mmsproxy="213.158.194.57" mmsport="8080" type="mms" /> - <apn carrier="Internet Orange" mcc="260" mnc="03" apn="internet" user="internet" password="internet" authtype="3" type="default,supl" /> - <apn carrier="MMS Orange" mcc="260" mnc="03" apn="mms" proxy="" port="" mmsproxy="192.168.006.104" mmsport="8080" mmsc="http://mms.orange.pl" user="mms" password="mms" authtype="3" type="mms" /> - <apn carrier="ASTER" mcc="260" mnc="03" apn="aster.internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="ASTER MMS" mcc="260" mnc="03" apn="aster.mms" user="mms" password="mms" mmsc="http://mms.aster.pl" mmsproxy="192.168.006.138" mmsport="8080" type="mms" /> - <apn carrier="Orange PL" mcc="260" mnc="03" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="MMS Orange" mcc="260" mnc="03" apn="mms" user="mms" password="mms" mmsc="http://mms.orange.pl" mmsproxy="192.168.6.104" mmsport="8080" type="mms" /> - <apn carrier="MNI" mcc="260" mnc="03" apn="mni.internet" user="mni.internet" password="mni.internet" type="default,supl" /> - <apn carrier="MNI MMS" mcc="260" mnc="03" apn="mni.mms" user="mni.mms" password="mni.mms" mmsc="http://mms.mni.pl/" mmsproxy="192.168.006.135" mmsport="8080" type="mms" /> - <apn carrier="Internet" mcc="260" mnc="06" apn="Internet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="MMS" mcc="260" mnc="06" apn="mms" proxy="" port="" mmsproxy="10.10.25.5" mmsport="8080" mmsc="http://10.10.28.164/mms/wapenc" user="" password="" authtype="3" type="mms" /> - <apn carrier="Play INTERNET" mcc="260" mnc="06" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Play MMS" mcc="260" mnc="06" apn="mms" proxy="" port="" user="" password="" mmsc="http://10.10.28.164/mms/wapenc" mmsproxy="10.10.25.5" mmsport="8080" type="mms" /> - <apn carrier="Lycamobile PL" mcc="260" mnc="09" apn="data.lycamobile.pl" user="lmpl" password="plus" type="default,supl" /> - <apn carrier="Cyfrowy Polsat INTERNET" mcc="260" mnc="12" apn="internet.cp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Cyfrowy Polsat MMS" mcc="260" mnc="12" apn="mms.cyfrowypolsat.pl" proxy="" port="" user="" password="" mmsc="http://mms.cyfrowypolsat.pl:8002" mmsproxy="79.171.2.33" mmsport="8080" type="mms" /> - <apn carrier="Aero2" mcc="260" mnc="17" apn="darmowy" type="default,supl" /> - <apn carrier="Truphone PL" mcc="260" mnc="33" apn="truphone.com" type="default,supl" /> - <apn carrier="Telekom IMS" mcc="262" mnc="01" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Telekom Internet" mcc="262" mnc="01" apn="internet.telekom" user="telekom" password="telekom" mmsc="http://mms.t-mobile.de/servlets/mms" mmsproxy="109.237.176.193" mmsport="8008" bearer_bitmask="1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17" authtype="1" type="mms,default,supl,ia" protocol="IPV4V6" /> - <apn carrier="Telekom Internet" mcc="262" mnc="01" apn="hos" user="telekom" password="telekom" mmsc="http://mms.t-mobile.de/servlets/mms" mmsproxy="109.237.176.193" mmsport="8008" bearer_bitmask="18" authtype="1" type="mms,supl" protocol="IPV4V6" user_visible="false" /> - <apn carrier="Telekom Internet" mcc="262" mnc="01" apn="internet.telekom" user="telekom" password="telekom" authtype="1" mmsproxy="172.28.23.131" mmsc="http://mms.t-mobile.de/servlets/mms" mmsport="8008" mvno_match_data="debitel" mvno_type="spn" protocol="IP" /> - <apn carrier="Vodafone DE" mcc="262" mnc="02" apn="" type="ia" protocol="IPV4V6" /> - <apn carrier="Vodafone DE-MMS" mcc="262" mnc="02" apn="event.vodafone.de" mmsc="http://139.7.24.1/servlets/mms" mmsproxy="139.7.29.17" mmsport="80" type="mms" /> - <apn carrier="Vodafone DE" mcc="262" mnc="02" apn="web.vodafone.de" type="default,supl" /> - <apn carrier="E-Plus Internet" mcc="262" mnc="03" apn="internet.eplus.de" user="eplus" password="internet" authtype="1" type="default,supl" /> - <apn carrier="E-Plus MMS" mcc="262" mnc="03" apn="mms.eplus.de" user="mms" password="eplus" mmsc="http://mms/eplus/" mmsproxy="212.23.97.153" mmsport="5080" authtype="1" type="mms" /> - <apn carrier="O2 Internet" mcc="262" mnc="07" apn="internet" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.5" mmsport="8080" authtype="1" type="default,supl,mms" protocol="IP" roaming_protocol="IP" /> - <apn carrier="O2 DE IMS" mcc="262" mnc="07" apn="ims" type="ims" protocol="IP" roaming_protocol="IP" /> - <apn carrier="O2 Internet Prepaid" mcc="262" mnc="07" apn="pinternet.interkom.de" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.6" mmsport="8080" type="default,supl,mms" mvno_match_data="2620749" mvno_type="imsi" /> - <apn carrier="Alice" mcc="262" mnc="07" apn="internet.partner1" authtype="0" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.41" mmsport="8080" mvno_type="spn" mvno_match_data="Alice" /> - <apn carrier="Fonic Prepaid" mcc="262" mnc="07" apn="pinternet.interkom.de" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.6" mmsport="8080" type="default,supl,mms" mvno_match_data="26207515" mvno_type="imsi" /> - <apn carrier="Lidl Mobile" mcc="262" mnc="07" apn="pinternet.interkom.de" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.6" mmsport="8080" type="default,supl,mms" mvno_match_data="26207520" mvno_type="imsi" /> - <apn carrier="Tchibo Internet" mcc="262" mnc="07" apn="webmobil1" mmsc="http://10.81.0.7:8002" mmsproxy="82.113.100.8" mmsport="8080" type="default,supl,mms" mvno_match_data="26207500" mvno_type="imsi" /> - <apn carrier="O2 DE IMS" mcc="262" mnc="08" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_match_data="2620739" mvno_type="imsi" /> - <apn carrier="Lebara" mcc="262" mnc="01" apn="internet.t-mobile" proxy="" port="" user="t-mobile" password="tm" mmsc="http://mms.t-mobile.de/servlets/mms" mmsproxy="172.28.23.131" mmsport="8008" mvno_type="spn" mvno_match_data="Lebara" type="default,supl,mms" /> - <apn carrier="Lebara Internet" mcc="262" mnc="01" apn="internet.t-d1.de" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Truphone" mcc="262" mnc="42" apn="truphone.com" type="default,dun" /> - <apn carrier="Lycamobile DE" mcc="262" mnc="43" apn="data.lycamobile.de" proxy="" port="" user="lmde" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" type="default,supl" /> - <apn carrier="Vodafone Net2" mcc="268" mnc="01" apn="net2.vodafone.pt" proxy="iproxy.vodafone.pt" port="80" mmsproxy="iproxy.vodafone.pt" mmsport="80" mmsc="http://mms.vodafone.pt/servlets/mms" user="vodafone" password="vodafone" authtype="3" type="default,mms" /> - <apn carrier="Vodafone PT Internet" mcc="268" mnc="01" apn="net2.vodafone.pt" proxy="iproxy.vodafone.pt" port="80" mmsc="http://mms.vodafone.pt/servlets/mms" mmsproxy="iproxy.vodafone.pt" mmsport="80" type="default,supl,mms" /> - <apn carrier="Vodafone PT WAP MMS" mcc="268" mnc="01" apn="vas.vodafone.pt" user="vas" password="vas" mmsc="http://mms/servlets/mms" mmsproxy="213.30.27.63" mmsport="8799" type="mms" /> - <apn carrier="Vodafone PT WAP" mcc="268" mnc="01" apn="wap.vodafone.pt" user="wap" password="wap" proxy="172.16.19.50" port="8799" type="default,supl" /> - <apn carrier="NOS/WTF Internet" mcc="268" mnc="03" apn="umts" type="default,supl,dun" /> - <apn carrier="NOS MMS" mcc="268" mnc="03" apn="mms" mmsc="http://mmsc:10021/mmsc" mmsproxy="62.169.66.5" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="WTF MMS" mcc="268" mnc="03" apn="umts" mmsc="http://mmsc:10021/mmsc" mmsproxy="62.169.66.5" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Lycamobile PT" mcc="268" mnc="04" apn="data.lycamobile.pt" user="lmpt" password="plus" type="default,supl"/> - <apn carrier="Lycamobile" mcc="268" mnc="04" apn="data.lycamobile.pt" proxy="" port="" user="lmpt" password="plus" mmsc="" mvno_type="spn" mvno_match_data="Lycamobile" type="default,supl" /> - <apn carrier="MEO Internet" mcc="268" mnc="06" apn="internet" type="default,supl" /> - <apn carrier="MEO MMS" mcc="268" mnc="06" apn="mmsc.tmn.pt" user="tmn" password="tmnnet" mmsc="http://mmsc" mmsproxy="10.111.2.16" mmsport="8080" type="mms" /> - <apn carrier="Vectone Mobile" mcc="268" mnc="07" apn="webpt.mundio.com" proxy="" port="" user="" password="" mmsc="" mvno_type="spn" mvno_match_data="Vectone Mobile" type="default,supl" /> - <apn carrier="Luxgsm Internet" mcc="270" mnc="01" apn="web.pt.lu" type="default,supl,mms" /> - <apn carrier="Post Internet" mcc="270" mnc="01" apn="web.pt.lu" proxy="194.154.192.88" port="8080" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Post MMS" mcc="270" mnc="01" apn="mms.pt.lu" proxy="194.154.192.88" port="8080" user="" password="" mmsc="http://mmsc.pt.lu" authtype="1" type="mms" /> - <apn carrier="Tango" mcc="270" mnc="77" apn="internet" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Tango MMS" mcc="270" mnc="77" apn="mms" proxy="" port="" user="tango" password="tango" mmsc="http://mms.tango.lu" mmsproxy="212.66.75.3" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Orange LU" mcc="270" mnc="99" apn="orange.lu" proxy="" port="" user="" password="" mmsc="http://mms.orange.lu" mmsproxy="212.88.139.44" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="Tesco" mcc="272" mnc="01" apn="tescomobile.liffeytelecom.com" mmsc="http://mmc1/servlets/mms" mmsproxy="10.1.11.19" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Vodafone WAP" mcc="272" mnc="01" apn="live.vodafone.com" proxy="10.24.59.100" port="80" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone Internet" mcc="272" mnc="01" apn="isp.vodafone.ie" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone MMS" mcc="272" mnc="01" apn="mms.vodafone.net" proxy="" port="" user="" password="" mmsc="http://www.vodafone.ie/mms" mmsproxy="10.24.59.200" mmsport="80" type="mms" /> - <apn carrier="Vodafone IE-ISP" mcc="272" mnc="01" apn="isp.vodafone.ie" proxy="" port="" user="vodafone" password="vodafone" mmsc="" type="default,supl" /> - <apn carrier="Vodafone IE" mcc="272" mnc="01" apn="live.vodafone.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone IE-MMS" mcc="272" mnc="01" apn="mms.vodafone.net" proxy="" port="" user="" password="" mmsc="http://www.vodafone.ie/mms" mmsproxy="10.24.59.200" mmsport="80" type="mms" /> - <apn carrier="O2 Internet" mcc="272" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="O2 WAP" mcc="272" mnc="02" apn="internet" proxy="62.40.32.40" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="O2 MMS" mcc="272" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="http://mmsc.mms.o2.ie:8002" mmsproxy="62.40.32.40" mmsport="8080" type="mms" /> - <apn carrier="O2 Ireland" mcc="272" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="http://mmsc.mms.o2.ie:8002" mmsproxy="62.40.32.40" mmsport="8080" type="default,supl,mms" /> - <apn carrier="O2 IE" mcc="272" mnc="02" apn="wap.dol.ie" proxy="62.40.32.40" port="8080" user="user" password="user" server="www.o2.ie" mmsc="http://mmsc.mms.o2.ie:8002" mmsproxy="62.40.32.40" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Meteor Internet" mcc="272" mnc="03" apn="data.mymeteor.ie" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Meteor WAP" mcc="272" mnc="03" apn="wap.mymeteor.ie" proxy="10.85.85.85" port="8799" user="my" password="wap" mmsc="" type="default,supl" /> - <apn carrier="Meteor MMS" mcc="272" mnc="03" apn="mms.mymeteor.ie" proxy="" port="" user="my" password="meteor" mmsc="http://mms.mymeteor.ie" mmsproxy="10.85.85.85" mmsport="8799" type="mms" /> - <apn carrier="Eircom/Meteor" mcc="272" mnc="03" apn="wap.mymeteor.ie" user="my" password="meteor" server="http://wap.mymeteor.ie" proxy="10.85.85.85" port="8799" mmsc="mms.mymeteor.ie" mmsproxy="10.85.85.85" mmsport="8799" type="default,supl" /> - <apn carrier="Eircom/Meteor MMS" mcc="272" mnc="03" apn="wap.mymeteor.ie" user="my" password="meteor" server="http://wap.mymeteor.ie" proxy="10.85.85.85" port="8799" mmsc="http://mms.mymeteor.ie" mmsproxy="10.85.85.85" mmsport="8799" type="mms" /> - <apn carrier="3 Internet" mcc="272" mnc="05" apn="3ireland.ie" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="3 MMS" mcc="272" mnc="05" apn="3ireland.ie" proxy="" port="" user="" password="" mmsc="http://mms.um.3ireland.ie:10021/mmsc" mmsproxy="mms.3ireland.ie" mmsport="8799" type="mms" /> - <apn carrier="3 IE MMS" mcc="272" mnc="05" apn="3ireland.ie" proxy="" port="" user="" password="" server="3ireland.ie" mmsc="http://mms.um.3ireland.ie:10021/mmsc" mmsproxy="mms.3ireland.ie" mmsport="8799" type="default,supl,mms" /> - <apn carrier="3 Ireland" mcc="272" mnc="05" apn="3ireland.ie" proxy="" port="" user="" password="" mmsc="http://mms.um.3ireland.ie:10021/mmsc" mmsproxy="mms.3ireland.ie" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Tesco" mcc="272" mnc="10" apn="tescomobile.liffeytelecom.com" mmsc="http://mmc1/servlets/mms" mmsproxy="10.1.11.19" mmsport="8080" type="default,supl,mms" /> - <apn carrier="TMI APN" mcc="272" mnc="11" apn="tescomobile.liffeytelecom.com" mmsc="http://mmc1/servlets/mms" mmsproxy="10.1.11.19" mmsport="8080" type="default,supl,mms" /> - <apn carrier="48months" mcc="272" mnc="11" apn="48months.liffeytelecom.com" mmsc="http://mmc1/servlets/mms" mmsproxy="10.1.11.19" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Lycamobile IE" mcc="272" mnc="13" apn="data.lycamobile.ie" user="lmie" password="plus" type="default,supl" /> - <apn carrier="Virgin Media Ireland" mcc="272" mnc="15" apn="internet" proxy="" port="" user="" password="" mmsc="" mmsproxy="" mmsport="" type="default,supl,mms" /> - <apn carrier="Siminn Internet" mcc="274" mnc="01" apn="internet" proxy="213.167.138.200" port="8080" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Siminn MMS" mcc="274" mnc="01" apn="mms.simi.is" proxy="" port="" mmsproxy="213.167.138.200" mmsport="8080" mmsc="http://mms.simi.is/servlets/mms" user="" password="" authtype="3" type="mms" /> - <apn carrier="Siminn Internet" mcc="274" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone Internet" mcc="274" mnc="02" apn="gprs.is" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone MMS" mcc="274" mnc="02" apn="mms.gprs.is" proxy="" port="" user="" password="" mmsc="http://mmsc.vodafone.is" mmsproxy="10.22.0.10" mmsport="8080" type="mms" /> - <apn carrier="MMS Nova" mcc="274" mnc="11" apn="mms.nova.is" proxy="" port="" user="" password="" mmsc="http://mmsc.nova.is" mmsproxy="10.10.2.60" mmsport="8080" type="mms" /> - <apn carrier="Net Nova" mcc="274" mnc="11" apn="net.nova.is" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Tal" mcc="274" mnc="12" apn="internet.tal.is" mmsc="http://mms.tal.is/servlets/mms" mmsproxy="213.167.138.210" mmsport="8080" type="default,supl,mms" /> - <apn carrier="AMC" mcc="276" mnc="01" apn="internet.amc" type="default,supl" /> - <apn carrier="AMC MMS" mcc="276" mnc="01" apn="mms" mmsc="http://195.167.65.220:8002" mmsproxy="10.10.10.20" mmsport="8080" type="mms" /> - <apn carrier="Vodafone AL" mcc="276" mnc="02" apn="vodafoneweb" type="default,supl" /> - <apn carrier="Vodafone AL" mcc="276" mnc="02" apn="Twa" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Vodafone AL MMS" mcc="276" mnc="02" apn="vfalmms" proxy="" port="" user="" password="" mmsc="http://mmsc.vodafone.al" mmsproxy="10.0.9.2" mmsport="8080" type="mms" /> - <apn carrier="Eagle Mobile" mcc="276" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="Eagle Mobile MMS" mcc="276" mnc="03" apn="mms" mmsc="http://192.168.140.164:38090" mmsproxy="192.168.141.25" mmsport="80" type="mms" /> - <apn carrier="Plus" mcc="276" mnc="04" apn="plusweb" type="default,supl" /> - <apn carrier="CYTA" mcc="280" mnc="01" apn="cytamobile" mmsc="http://mmsc.cyta.com.cy" mmsproxy="212.31.96.161" mmsport="8080" type="default,supl,mms"/> - <apn carrier="MTN MMS" mcc="280" mnc="10" apn="mms" user="mms" password="mms" mmsc="http://mms.mtn.com.cy/mmsc" mmsproxy="172.24.97.1" mmsport="3130" type="mms"/> - <apn carrier="MTN Internet" mcc="280" mnc="10" apn="internet" type="default,supl"/> - <apn carrier="PrimeTel" mcc="280" mnc="20" apn="ip.primetel" mmsc="http://mms.primetel" type="default,supl,mms"/> - <apn carrier="Geocell" mcc="282" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl,mms" /> - <apn carrier="Geocell Mms" mcc="282" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.geocell.com.ge/cmmsc/post" mmsproxy="10.11.240.7" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Beeline AM" mcc="283" mnc="01" apn="internet.beeline.am" proxy="" port="" user="internet" password="internet" mmsc="" type="default,supl" /> - <apn carrier="BeeLine AM MMS" mcc="283" mnc="01" apn="mms.beeline.am" proxy="" port="" user="" password="" mmsc="http://mms/" mmsproxy="10.3.2.205" mmsport="8080" type="mms" /> - <apn carrier="VivaCell-MTS Internet" mcc="283" mnc="05" apn="inet.vivacell.am" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="VivaCell-MTS MMS" mcc="283" mnc="05" apn="mms.vivacell.am" proxy="" port="" mmsproxy="83.217.226.72" mmsport="8080" mmsc="http://mms.vivacell.am/mmsc" user="" password="" authtype="1" type="mms" /> - <apn carrier="VivaCell" mcc="283" mnc="05" apn="connect.vivacell.am" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="VivaCell MMS" mcc="283" mnc="05" apn="mms.vivacell.am" proxy="" port="" user="" password="" mmsc="http://mms.vivacell.am/mmsc" mmsproxy="83.217.226.72" mmsport="8080" type="mms" /> - <apn carrier="Orange AM" mcc="283" mnc="10" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange AM MMS" mcc="283" mnc="10" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms/" mmsproxy="192.168.220.251" mmsport="3128" type="mms" /> - <apn carrier="A1" mcc="284" mnc="01" apn="internet.a1.bg" authtype="0" type="default,supl" /> - <apn carrier="A1 MMS" mcc="284" mnc="01" apn="mms.a1.bg" mmsc="http://mmsc/" mmsproxy="10.150.0.33" mmsport="8080" authtype="0" type="mms" /> - <apn carrier="VIVACOM INTERNET GPRS" mcc="284" mnc="03" apn="internet.vivacom.bg" user="VIVACOM" password="VIVACOM" authtype="0" type="default,supl" /> - <apn carrier="VIVACOM MMS GPRS" mcc="284" mnc="03" apn="mms.vivacom.bg" user="mms" password="mms" mmsc="http://mmsc.vivacom.bg" mmsproxy="192.168.123.123" mmsport="8080" authtype="0" type="mms" /> - <apn carrier="Telenor Internet" mcc="284" mnc="05" apn="telenorbg" user="telenor" authtype="0" type="default,supl" /> - <apn carrier="Telenor MMS" mcc="284" mnc="05" apn="mms" user="mms" mmsc="http://mmsc" mmsproxy="192.168.87.11" mmsport="8004" authtype="0" type="mms" /> - <apn carrier="Bulsatcom" mcc="284" mnc="11" apn="bulsat.com" type="default,supl" /> - <apn carrier="Turkcell Internet" mcc="286" mnc="01" apn="Internet" user="" password="" type="default,supl" /> - <apn carrier="Turkcell MMS" mcc="286" mnc="01" apn="mms" proxy="" port="" mmsproxy="212.252.169.217" mmsport="8080" mmsc="http://mms.turkcell.com.tr/servlets/mms" user="mms" password="mms" type="mms" /> - <apn carrier="Turkcell" mcc="286" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Turkcell MMS" mcc="286" mnc="01" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms.turkcell.com.tr/servlets/mms" mmsproxy="212.252.169.217" mmsport="9201" type="mms" /> - <apn carrier="Vodafone TR" mcc="286" mnc="02" apn="internet" proxy="" port="" user="vodafone" password="vodafone" mmsc="" type="default,supl" protocol="IPV4V6" /> - <apn carrier="Vodafone Live" mcc="286" mnc="02" apn="vflive" proxy="212.65.136.226" port="9401" mmsc="" user="vodafone" password="vodafone" authtype="3" type="default,supl" /> - <apn carrier="Vodafone TR MMS" mcc="286" mnc="02" apn="mms" proxy="" port="" user="vodafone" password="vodafone" mmsc="http://217.31.233.18:6001/MM1Servlet" mmsproxy="217.31.233.18" mmsport="9401" type="mms" /> - <apn carrier="MMS GPRS" mcc="286" mnc="02" apn="mms" proxy="" port="" mmsc="http://217.31.233.18:6001/MM1Servlet" user="vodafone" password="vodafone" authtype="3" type="mms" /> - <apn carrier="AVEA" mcc="286" mnc="03" apn="internet" proxy="" port="" user="wap" password="wap" mmsc="" type="default,supl" /> - <apn carrier="AVEA MMS" mcc="286" mnc="03" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms.avea.com.tr/servlets/mms" mmsproxy="213.161.151.201" mmsport="8080" type="mms" /> - <apn carrier="Tele MMS" mcc="290" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="http://mms.tele.gl/mms/wapenc" mmsproxy="10.112.222.37" mmsport="8080" type="mms" /> - <apn carrier="Tele GPRS" mcc="290" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Si.mobil Internet" mcc="293" mnc="40" apn="internet.simobil.si" proxy="" port="" user="simobil" password="internet" mmsc="" type="default,supl" /> - <apn carrier="Si.mobil MMS" mcc="293" mnc="40" apn="mms.simobil.si" proxy="" port="" user="simobil" password="internet" mmsc="http://mmc" mmsproxy="80.95.224.46" mmsport="9201" type="mms" /> - <apn carrier="Mobitel Internet" mcc="293" mnc="41" apn="internet" proxy="213.229.249.40" port="8080" user="mobitel" password="internet" mmsc="" type="default,supl,mms" /> - <apn carrier="Mobitel MMS" mcc="293" mnc="41" apn="internet" proxy="" port="" user="mobitel" password="internet" mmsc="http://mms.mobitel.si/servlets/mms" mmsproxy="213.229.249.40" mmsport="8080" type="mms" /> - <apn carrier="T-2 Internet" mcc="293" mnc="64" apn="internet.t-2.net" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="T-2 Mms" mcc="293" mnc="64" apn="mms.t-2.net" proxy="" port="" user="" password="" mmsc="http://www.mms.t-2.net:8002" mmsproxy="172.20.18.137" mmsport="8080" type="mms" /> - <apn carrier="Tusmobil Internet" mcc="293" mnc="70" apn="internet.tusmobil.si" proxy="" port="" user="tusmobil" password="internet" mmsc="" type="default,supl" /> - <apn carrier="Tusmobil MMS" mcc="293" mnc="70" apn="mms.tusmobil.si" proxy="" port="" user="tusmobil" password="mms" mmsc="http://mms.tusmobil.si:8002" mmsproxy="91.185.221.85" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile MK" mcc="294" mnc="01" apn="internet" proxy="" port="" user="internet" password="t-mobile" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="T-Mobile MK MMS" mcc="294" mnc="01" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms.t-mobile.com.mk" mmsproxy="62.162.155.227" mmsport="8080" authtype="3" type="mms" /> - <apn carrier="Vip internet" mcc="294" mnc="03" apn="vipoperator" proxy="78.40.0.1" port="8080" mmsc="" user="vipoperator" password="vipoperator" type="default,supl" /> - <apn carrier="Vip mms" mcc="294" mnc="03" apn="vipoperator.mms" proxy="" port="" mmsproxy="78.40.0.1" mmsport="8080" mmsc="http://mmsc.vipoperator.com.mk" user="" password="" type="mms" /> - <apn carrier="Telenor MNE internet" mcc="297" mnc="01" apn="internet" proxy="192.168.246.005" port="8080" mmsc="" user="gprs" password="gprs" type="default,supl" /> - <apn carrier="Telenor MNE mms" mcc="297" mnc="01" apn="mms" proxy="" port="" mmsproxy="192.168.246.005" mmsport="8080" mmsc="http://mm.vor.telenor.me" user="mms" password="mms" type="mms" /> - <apn carrier="ProMonte" mcc="297" mnc="01" apn="gprs.promonte.com" proxy="" port="" user="gprs" password="gprs" mmsc="" type="default,supl" /> - <apn carrier="ProMonte MMS" mcc="297" mnc="01" apn="mms.promonte.com" proxy="" port="" user="mms" password="mms" mmsc="http://mm.vor.promonte.com" mmsproxy="192.168.246.5" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile CG MMS" mcc="297" mnc="02" apn="mms" proxy="" port="" user="38267" password="38267" mmsc="http://192.168.180.100/servlets/mms" mmsproxy="10.0.5.19" mmsport="8080" type="mms" /> - <apn carrier="T-Mobile CG" mcc="297" mnc="02" apn="tmcg-wnw" proxy="" port="" user="38267" password="38267" mmsc="" type="default,supl" /> - <apn carrier="Telus SP" mcc="302" mnc="220" apn="sp.telus.com" mmsc="http://aliasredirect.net/proxy/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="54" mvno_type="gid" type="default,supl,mms" /> - <apn carrier="TELUS ISP" mcc="302" mnc="220" apn="isp.telus.com" type="dun" mvno_type="gid" mvno_match_data="54" /> - <apn carrier="Telus SP Tether" mcc="302" mnc="220" apn="isp.telus.com" mmsc="http://aliasredirect.net/proxy/mmsc" mmsproxy="74.49.0.18" mmsport="80" type="default,supl,mms" /> - <apn carrier="Koodo SP" mcc="302" mnc="220" apn="sp.koodo.com" proxy="" port="" mmsc="http://aliasredirect.net/proxy/koodo/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="4B" mvno_type="gid" type="default,supl,mms,dun" /> - <apn carrier="Mobile Internet" mcc="302" mnc="220" apn="sp.mb.com" type="default,mms,supl" mmsc="http://aliasredirect.net/proxy/mb/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="50" mvno_type="gid" /> - <apn carrier="Tethered Mobile Internet" mcc="302" mnc="220" apn="isp.mb.com" type="dun" mvno_type="gid" mvno_match_data="50" /> - <apn carrier="Mobile Internet" mcc="302" mnc="220" apn="sp.mb.com" type="default,mms,agps,supl,fota,hipri" mmsc="http://aliasredirect.net/proxy/mb/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_type="gid" mvno_match_data="4D4F" /> - <apn carrier="Tethered Mobile Internet" mcc="302" mnc="220" apn="isp.mb.com" type="dun" mvno_type="gid" mvno_match_data="4D4F" /> - <apn carrier="Public Mobile" mcc="302" mnc="220" apn="sp.mb.com" mmsc="http://aliasredirect.net/proxy/mb/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="50" mvno_type="gid" type="default,supl,mms" /> - <apn carrier="Koodo SP" mcc="302" mnc="220" apn="sp.koodo.com" proxy="" port="" user="" password="" mmsc="http://aliasredirect.net/proxy/koodo/mmsc" mmsproxy="74.49.0.18" mmsport="80" type="default,supl,mms" /> - <apn carrier="TELUS" mcc="302" mnc="221" apn="sp.telus.com" type="default,mms,supl" mmsc="http://aliasredirect.net/proxy/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="54" mvno_type="gid" /> - <apn carrier="Koodo" mcc="302" mnc="221" apn="sp.koodo.com" type="default,mms,supl" mmsc="http://aliasredirect.net/proxy/koodo/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="4B" mvno_type="gid" /> - <apn carrier="PC mobile" mcc="302" mnc="221" apn="sp.mb.com" type="default,mms,supl" mmsc="http://aliasredirect.net/proxy/mb/mmsc" mmsproxy="74.49.0.18" mmsport="80" mvno_match_data="50" mvno_type="gid" /> - <apn carrier="MMS" mcc="302" mnc="270" apn="mms.mobi.eastlink.ca" mmsc="http://mmss.mobi.eastlink.ca" mmsproxy="10.232.12.49" mmsport="8080" type="mms" /> - <apn carrier="Internet" mcc="302" mnc="270" apn="wisp.mobi.eastlink.ca" type="default,supl" /> - <apn carrier="Eastlink Internet" mcc="302" mnc="270" apn="wisp.mobi.eastlink.ca" type="default,supl" /> - <apn carrier="Eastlink MMS" mcc="302" mnc="270" apn="mms.mobi.eastlink.ca" mmsc="http://mmss.mobi.eastlink.ca" mmsproxy="10.232.12.49" mmsport="8080" type="mms" /> - <apn carrier="MOWAP" mcc="302" mnc="320" apn="wap.davewireless.com" proxy="10.100.3.4" port="8080" type="default,supl" /> - <apn carrier="MOMMS" mcc="302" mnc="320" apn="mms.davewireless.com" mmsc="http://mms.mobilicity.net" mmsproxy="10.100.3.4" mmsport="8080" type="mms" /> - <apn carrier="Mobilicity MMS" mcc="302" mnc="320" apn="mms.davewireless.com" proxy="" port="" user="" password="" mmsc="http://mms.mobilicity.net" mmsproxy="10.100.3.4" mmsport="8080" type="mms" /> - <apn carrier="Mobilicity" mcc="302" mnc="320" apn="wap.davewireless.com" proxy="" port="" user="dave" password="password" mmsc="" type="default,supl" /> - <apn carrier="Fido Tethering" mcc="302" mnc="370" apn="ltedata.apn" type="dun" mvno_match_data="DD" mvno_type="gid" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="Fido Internet" mcc="302" mnc="370" apn="ltemobile.apn" type="default,mms,agps,supl,fota,hipri" mmsproxy="mmsproxy.fido.ca" mmsc="http://mms.fido.ca" mmsport="80" mvno_match_data="DD" mvno_type="gid" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="MTS" mcc="302" mnc="370" apn="sp.mts" type="default,mms,supl" mmsc="http://mmsc2.mts.net/" mmsproxy="wapgw1.mts.net" mmsport="9201" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_match_data="2C" mvno_type="gid" /> - <apn carrier="MTS Tethering S" mcc="302" mnc="370" apn="internet.mts" type="dun" protocol="IPV4V6" roaming_protocol="IP" mvno_type="gid" mvno_match_data="2C" /> - <apn carrier="Fido LTE" mcc="302" mnc="370" apn="ltemobile.apn" mmsc="http://mms.fido.ca" mmsproxy="205.151.11.13" mmsport="80" type="default,supl,mms" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="Fido Default" mcc="302" mnc="370" apn="fido-core-appl1.apn" proxy="" port="" user="" password="" mmsc="http://mms.fido.ca" mmsproxy="205.151.11.13" mmsport="80" type="default,supl,mms" /> - <apn carrier="Fido Internet" mcc="302" mnc="370" apn="internet.fido.ca" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Fido Tethering" mcc="302" mnc="370" apn="isp.fido.apn" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Internet" mcc="302" mnc="490" apn="internet.windmobile.ca" user="" password="" type="default,supl" /> - <apn carrier="MMS" mcc="302" mnc="490" apn="mms.windmobile.ca" proxy="" port="" mmsproxy="74.115.197.70" mmsport="8080" mmsc="http://mms.windmobile.ca" user="" password="" type="mms" /> - <apn carrier="Wind CA" mcc="302" mnc="490" apn="internet.windmobile.ca" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Wind CA MMS" mcc="302" mnc="490" apn="mms.windmobile.ca" proxy="" port="" user="" password="" mmsc="http://mms.windmobile.ca" mmsproxy="74.115.197.70" mmsport="8080" type="mms" /> - <apn carrier="Videotron" mcc="302" mnc="500" apn="media.videotron" proxy="" port="" user="" password="" mmsc="http://media.videotron.com/" mmsproxy="10.208.89.17" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Media" mcc="302" mnc="500" apn="media.ng" mmsc="http://media.videotron.com" type="default,supl,mms" /> - <apn carrier="Media" mcc="302" mnc="510" apn="media.ng" mmsc="http://media.videotron.com" type="default,supl,mms" /> - <apn carrier="Media" mcc="302" mnc="520" apn="media.ng" mmsc="http://media.videotron.com" type="default,supl,mms" /> - <apn carrier="Virgin Mobile" mcc="302" mnc="610" apn="pda.stm.sk.ca" proxy="web.wireless.bell.ca" port="80" type="default,mms,supl" mmsc="http://mms.bell.ca/mms/wapenc" mmsproxy="web.wireless.bell.ca" mmsport="80" /> - <apn carrier="Bell" mcc="302" mnc="610" apn="pda.bell.ca" proxy="web.wireless.bell.ca" port="80" user="" password="" mmsc="http://mms.bell.ca/mms/wapenc" mmsproxy="web.wireless.bell.ca" mmsport="80" type="" /> - <apn carrier="Bell Flex" mcc="302" mnc="610" apn="inet.bell.ca" proxy="" port="" user="" password="" mmsc="http://mms.bell.ca/mms/wapenc" type="default,supl,mms" /> - <apn carrier="MTS" mcc="302" mnc="660" apn="sp.mts" type="default,mms,supl" mmsc="http://mmsc2.mts.net/" mmsproxy="wapgw1.mts.net" mmsport="9201" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_match_data="2C" mvno_type="gid" /> - <apn carrier="MTS Tethering" mcc="302" mnc="660" apn="internet.mts" type="dun" protocol="IPV4V6" roaming_protocol="IP" mvno_type="gid" mvno_match_data="2C" /> - <apn carrier="Rogers LTE" mcc="302" mnc="720" apn="ltemobile.apn" mmsc="http://mms.gprs.rogers.com" mmsproxy="10.128.1.69" mmsport="80" mvno_type="spn" mvno_match_data="ROGERS" type="default,supl,mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Rogers Tethering" mcc="302" mnc="720" apn="ltedata.apn" type="dun" mvno_match_data="ROGERS" mvno_type="spn" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Rogers" mcc="302" mnc="720" apn="rogers-core-appl1.apn" proxy="" port="" user="" password="" mmsc="http://mms.gprs.rogers.com" mmsproxy="10.128.1.69" mmsport="80" type="default,supl,mms" /> - <apn carrier="Rogers Tethering" mcc="302" mnc="720" apn="isp.apn" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Rogers WAP" mcc="302" mnc="720" apn="internet.com" proxy="" port="" user="" password="wap" mmsc="" type="default,supl,mms" /> - <apn carrier="chatr" mcc="302" mnc="720" apn="chatrweb.apn" type="default,mms,supl" mmsc="http://mms.chatrwireless.com" mmsproxy="205.151.11.11" mmsport="80" proxy="205.151.11.11" port="80" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_match_data="302720x94" mvno_type="imsi" /> - <apn carrier="Chatr Tethering" mcc="302" mnc="720" apn="chatrisp.apn" type="dun" mvno_type="imsi" mvno_match_data="302720x94" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="Tbaytel Tethering" mcc="302" mnc="720" apn="ltedata.apn" type="dun" protocol="IPV4V6" roaming_protocol="IP" mvno_type="gid" mvno_match_data="BA" /> - <apn carrier="Tbaytel Internet" mcc="302" mnc="720" apn="ltemobile.apn" type="default,mms,agps,supl,fota,hipri" protocol="IPV4V6" roaming_protocol="IP" mmsc="http://mms.gprs.rogers.com" mmsproxy="mmsproxy.rogers.com" mmsport="80" mvno_type="gid" mvno_match_data="BA" /> - <apn carrier="Cityfone Tethering" mcc="302" mnc="720" apn="ltedata.apn" type="dun" protocol="IPV4V6" roaming_protocol="IP" mvno_type="spn" mvno_match_data="CITYFONE" /> - <apn carrier="Cityfone Internet" mcc="302" mnc="720" apn="ltemobile.apn" type="default,mms,agps,supl,fota,hipri" protocol="IPV4V6" roaming_protocol="IP" mmsc="http://mms.gprs.rogers.com" mmsproxy="mmsproxy.rogers.com" mmsport="80" mvno_type="spn" mvno_match_data="CITYFONE" /> - <apn carrier="Petro-Canada Mobility" mcc="302" mnc="720" apn="rogers-core-appl1.apn" type="default,mms,supl" mmsproxy="mmsproxy.rogers.com" mmsc="http://mms.gprs.rogers.com" mmsport="80" protocol="IPV4V6" /> - <apn carrier="SaskTel" mcc="302" mnc="780" apn="pda.stm.sk.ca" type="default,mms,supl" mmsc="http://mms.sasktel.com/" mmsproxy="mig.sasktel.com" mmsport="80" /> - <apn carrier="Sasktel 3G" mcc="302" mnc="780" apn="inet.stm.sk.ca" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Sasktel MMS" mcc="302" mnc="780" apn="proxy.stm.sk.ca" proxy="" port="80" user="" password="" mmsc="http://mms.sasktel.com" mmsproxy="mig.sasktel.com" mmsport="80" type="mms" /> - <apn carrier="Verizon Internet" mcc="310" mnc="00" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6"/> - <apn carrier="Verizon FOTA" mcc="310" mnc="00" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6"/> - <apn carrier="Verizon IMS" mcc="310" mnc="00" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6"/> - <apn carrier="Verizon CBS" mcc="310" mnc="00" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6"/> - <apn carrier="Verizon Internet" mcc="310" mnc="002" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="002" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="002" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="002" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="003" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="003" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="003" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="003" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="004" apn="VZWINTERNET" type="default,dun,supl,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="004" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="004" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer_bitmask="13|14" profile_id="2" modem_cognitive="true" max_conns="1023" max_conns_time="300" /> - <apn carrier="Verizon CBS" mcc="310" mnc="004" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon" mcc="310" mnc="004" apn="internet" proxy="" port="" user="*" password="*" server="*" mmsc="http://mms.vtext.com/servlets/mms" type="default,supl,mms" /> - <apn carrier="Verizon Internet" mcc="310" mnc="005" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="005" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="005" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="005" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="006" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="006" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="006" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="006" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="012" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="012" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="012" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="012" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="UNIONINTERNET" mcc="310" mnc="020" apn="SMART.COM" user="" password="" authtype="0" type="default,supl" /> - <apn carrier="UNIONMMS" mcc="310" mnc="020" apn="union.mms.com" proxy="" port="" mmsc="http://mms.unionwireless.com" user="" password="" authtype="0" type="mms" /> - <apn carrier="Cellular South" mcc="310" mnc="023" apn="internet" proxy="" port="" user="" password="" mmsc="http://pix.cellularsouth.com/servlets/mms" authtype="3" type="mms" /> - <apn carrier="metropcs" mcc="310" mnc="027" apn="wap.metropcs.net" proxy="" port="" user="MDN@mymetropcs.com" password="metropcs" server="http://mms.metropcs.net/servlets/mmsc" mmsc="http://mms.metropcs.net/mmsc" mmsproxy="" mmsport="3128" type="default,supl,mms" /> - <apn carrier="myBlue Pix" mcc="310" mnc="030" apn="mmswap.centennialwireless.com" proxy="" port="" user="" password="" mmsc="http://mms.myblue.com/servlets/mms" mmsproxy="63.99.231.135" mmsport="8080" type="mms" /> - <apn carrier="Internet" mcc="310" mnc="030" apn="private.centennialwireless.com" proxy="" port="" user="privuser" password="priv" mmsc="" type="default,supl" /> - <apn carrier="Truphone" mcc="310" mnc="030" apn="truphone.com" type="default,dun" /> - <apn carrier="CorrMMS" mcc="310" mnc="080" apn="corrmms" proxy="" port="" user="" password="" mmsc="http://mms.iot1.com/corr/mms.php" mmsproxy="66.255.55.23" mmsport="80" type="mms" /> - <apn carrier="Internet" mcc="310" mnc="090" apn="isp" type="default,supl" /> - <apn carrier="MMS" mcc="310" mnc="090" apn="mms" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="Edge MMS Prepay" mcc="310" mnc="090" apn="ppmms" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="LTE INTERNET" mcc="310" mnc="090" apn="4g.mycricket.com" user="" password="" type="default,dun,mms" authtype="0" mmsc="http://mms.mycricket.com/servlets/mms" protocol="IP" roaming_protocol="IP" bearer="14"/> - <apn carrier="LTE ADMIN" mcc="310" mnc="090" apn="Apnota.4g.mycricket.com" user="" password="" type="fota" authtype="0" mmsc="http://mms.mycricket.com/servlets/mms" protocol="IP" roaming_protocol="IP" bearer="14"/> - <apn carrier="LTE DNSADMIN" mcc="310" mnc="090" apn="apndnsota.4g.mycricket.com" user="" password="" type="fota" authtype="0" mmsc="http://mms.mycricket.com/servlets/mms" protocol="IP" roaming_protocol="IP" bearer="14"/> - <apn carrier="Internet" mcc="310" mnc="090" apn="isp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS" mcc="310" mnc="090" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="Edge MMS Prepay" mcc="310" mnc="090" apn="ppmms" proxy="" port="" user="" password="" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="ATT WAP" mcc="310" mnc="70" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="70" apn="Broadband" type="default,supl" /> - <apn carrier="ATT WAP" mcc="310" mnc="90" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="90" apn="Broadband" type="default,supl" /> - <apn carrier="Verizon Internet" mcc="310" mnc="99" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="99" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="99" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="99" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="PLATWEB" mcc="310" mnc="100" apn="plateauweb" type="default,supl" /> - <apn carrier="PLAT-OTA-MMS" mcc="310" mnc="100" apn="plateaumms" proxy="" port="" user="" password="mmsc" mmsc="208.254.124.11:8514" mmsproxy="208.254.124.11" mmsport="8080" type="mms" /> - <apn carrier="PLATWEB" mcc="310" mnc="100" apn="plateauweb" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Sprint MMS" mcc="310" mnc="120" apn="Sprint" user="Sprint" server="*" type="mms" password="*" mmsc="http://oap7.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" authtype="3" /> - <apn carrier="Sprint LTE ota" mcc="310" mnc="120" apn="otasn" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Sprint EHRPD ota" mcc="310" mnc="120" apn="otasn" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Sprint LTE internet" mcc="310" mnc="120" apn="n.ispsn" type="default,mms,supl,hipri,dun" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="Sprint EHRPD internet" mcc="310" mnc="120" apn="n.ispsn" type="default,mms,supl,hipri" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="Sprint internet" mcc="310" mnc="120" apn="n.ispsn" type="mms,supl,hipri" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Boost" mcc="310" mnc="120" apn="cinet.spcs" type="supl,mms,dun,fota" mmsc="http://mm.myboostmobile.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Credo Mobile" mcc="310" mnc="120" apn="n.w1.ispsn" type="mms" mmsc="http://mms.plspictures.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Ting" mcc="310" mnc="120" apn="n.t8.ispsn" type="supl,mms" mmsc="http://mms.plspictures.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Ringplus" mcc="310" mnc="120" apn="n.r5.ispsn" type="supl,mms" mmsc="http://mms.plspictures.com" mmsproxy="68.28.31.7" mmsport="80" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Virgin Mobile" mcc="310" mnc="120" apn="n.vmu.ispsn" user="Sprint" password="*" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mmsc.vmobl.com:8088/mms?" type="supl,mms,fota,dun" /> - <apn carrier="FreedomPop LTE" mcc="310" mnc="120" apn="n.f6.ispsn" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mms.sprintpcs.com" type="supl,mms" bearer="14" /> - <apn carrier="FreedomPop EHRPD" mcc="310" mnc="120" apn="n.f6.ispsn" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mms.sprintpcs.com" type="supl,mms" bearer="13" /> - <apn carrier="Tello" mcc="310" mnc="120" apn="n.mi.ispsn" user="MDN@MVNO337.SPRINTPCS.COM" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mms.sprintpcs.com" type="default,mms" bearer_bitmask="13|14" /> - <apn carrier="Sprint" mcc="310" mnc="120" apn="sprint" type="default,supl,mms,ims,cbs" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" bearer_bitmask="4|5|6|7|8|12" /> - <apn carrier="Sprint" mcc="310" mnc="120" apn="sprint" type="default,supl,mms,ims,cbs,dun" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" bearer_bitmask="4|5|6|7|8|12" profile_id="1" /> - <apn carrier="USCC" mcc="310" mnc="120" apn="internet" proxy="" port="80" user="" password="" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsproxy="" mmsport="80" authtype="3" type="mms" /> - <apn carrier="SPCS Global" mcc="310" mnc="120" apn="cinet.spcs" mmsc="http://mms.sprintpcs.com" mmsproxy="68.28.31.7" mmsport="80" type="default,supl,mms,dun" bearer_bitmask="1|2|3|9|10|11|15|16" /> - <apn carrier="My Multi Media" mcc="310" mnc="130" apn="mms.c1.ama" proxy="" port="" user="cell1mms" password="cell1" mmsc="http://mms.iot1.com/amarillo/mms.php" type="mms" /> - <apn carrier="Cricket" mcc="310" mnc="16" apn="wap.mycricket.com" user="@mycricket.com" password="cricket" mmsc="http://mms.mycricket.com/servlets/mms" proxy="wap.mycricket.com" port="8080" authtype="2" type="*" /> - <apn carrier="Cricket AIO" mcc="310" mnc="150" apn="ndo" mmsc="http://mmsc.aiowireless.net" mmsproxy="proxy.aiowireless.net" mmsport="80" type="default,mms,fota,hipri,supl" /> - <apn carrier="ATT WAP" mcc="310" mnc="170" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="170" apn="Broadband" type="default,supl" /> - <apn carrier="DataConnect" mcc="310" mnc="170" apn="isp.cingular" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Cingular MMS" mcc="310" mnc="170" apn="wap.cingular" proxy="" port="" user="WAP@CINGULARGPRS.COM" password="CINGULAR1" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.32" mmsport="8080" type="mms" /> - <apn carrier="FreedomPop" mcc="310" mnc="170" apn="fp.com.attz" type="" /> - <apn carrier="ATT WAP" mcc="310" mnc="180" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="180" apn="Broadband" type="default,supl" /> - <apn carrier="WCW Internet" mcc="310" mnc="180" apn="internet.wcc.net" user="3257630000" password="mmsc" type="default,supl" authtype="0" /> - <apn carrier="WCW-MMS" mcc="310" mnc="180" apn="mms.wcc.net" proxy="209.55.70.246" port="80" mmsc="http://mms.wcc.net" mmsproxy="209.55.70.246" mmsport="80" user="13257630000" password="mmsc" type="mms" authtype="3" /> - <apn carrier="WCW-MMS only" mcc="310" mnc="180" apn="mms.wcc.net" proxy="209.55.70.244" port="80" mmsc="http://mms.wcc.net" mmsproxy="209.55.70.246" mmsport="80" user="3257630000" password="mmsc" type="default,mms" authtype="3" /> - <apn carrier="T-Mobile US LTE" mcc="310" mnc="260" apn="fast.t-mobile.com" mmsc="http://mms.msg.eng.t-mobile.com/mms/wapenc" type="default,supl,mms,ia" protocol="IPV6" roaming_protocol="IPV4V6" mtu="1440" /> - <apn carrier="Project Fi - T" mcc="310" mnc="260" apn="h2g2" type="ia" protocol="IPV4V6" roaming_protocol="IPV4V6" mvno_match_data="31026097" mvno_type="IMSI" /> - <apn carrier="Project Fi - T" mcc="310" mnc="260" apn="h2g2" user="none" server="*" password="none" mmsc="http://mmsc1.g-mms.com/mms/wapenc" protocol="IPV6" roaming_protocol="IP" mvno_match_data="31026097" mvno_type="IMSI" /> - <apn carrier="T-Mobile IMS" mcc="310" mnc="260" apn="ims" type="ims" modem_cognitive="true" protocol="IPV6" /> - <apn carrier="MetroPCS 260" mcc="310" mnc="260" apn="fast.metropcs.com" protocol="IPV6" roaming_protocol="IPV4V6" mvno_match_data="6D" mvno_type="gid" type="ia" mtu="1440" /> - <apn carrier="MetroPCS 260" mcc="310" mnc="260" apn="fast.metropcs.com" mmsc="http://metropcs.mmsmvno.com/mms/wapenc" protocol="IPV6" roaming_protocol="IP" mvno_match_data="6D" mvno_type="gid" type="default,supl,mms,dun" mtu="1440" /> - <apn carrier="MetroPCS 260 IMS" mcc="310" mnc="260" apn="ims" type="ims" mvno_match_data="6D" mvno_type="gid" protocol="IPV6" roaming_protocol="IPV6" mtu="1440" /> - <apn carrier="Net10" mcc="310" mnc="260" apn="wap.tracfone" port="8080" mmsc="http://mms.tracfone.com" type="default,mms,supl" /> - <apn carrier="Family Mobile" mcc="310" mnc="260" apn="web.omwtoday.com" port="" mmsc="http://wirelessfour.mmsmvno.com/mms/wapenc" mvno_type="gid" mvno_match_data="4d4b" type="default,mms,supl" /> - <apn carrier="I-Wireless" mcc="310" mnc="260" apn="i2.iwireless.com" proxy="" port="" user="" password="" mmsc="http://mmsc.iwireless.datonair.net:6672" type="default,supl,mms" /> - <apn carrier="Ultra" mcc="310" mnc="260" apn="Wholesale" port="8080" mmsc="http://wholesale.mmsmvno.com/mms/wapenc" mvno_type="gid" mvno_match_data="6132" type="default,mms,supl,dun" /> - <apn carrier="GIV Mobile" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://wholesale.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="ROK mobile" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://wholesale.mmsmvno.com/mms/wapenc" type="default,mms,supl,admin" /> - <apn carrier="UVA Wireless" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://wholesale.mmsmvno.com/mms/wapenc" type="default,mms,supl,admin" /> - <apn carrier="PTel" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://mms.wholesale.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="Ready SIM" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://mms.wholesale.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="Red Pocket" mcc="310" mnc="260" apn="wholesale" port="" mmsc="http://mms.wholesale.mmsmvno.com/mms/wapenc" mmsproxy="216.155.165.50" mmsport="8080" type="default,mms,supl" /> - <apn carrier="Univision Mobile" mcc="310" mnc="260" apn="multibrand" port="" mmsc="http://uvm.mmsmvno.com/mms/wapenc" mvno_type="gid" mvno_match_data="554d" type="default,mms,supl" /> - <apn carrier="Brightspot" mcc="310" mnc="260" apn="multibrand" port="" mmsc="http://brtspt.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="GoSmart" mcc="310" mnc="260" apn="multibrand" port="" mmsc="http://gsmt.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="Straight Talk" mcc="310" mnc="260" apn="wap.tracfone" port="8080" mmsc="http://mms.tracfone.com" mvno_type="gid" mvno_match_data="deff" type="default,mms,supl" /> - <apn carrier="Telcel America" mcc="310" mnc="260" apn="wap.tracfone" port="" mmsc="http://mms.tracfone.com" mmsproxy="216.155.165.40" mmsport="8080" type="default,mms,supl" /> - <apn carrier="Tracfone" mcc="310" mnc="260" apn="wap.tracfone" port="" mmsc="http://mms.tracfone.com" type="default,mms,supl" /> - <apn carrier="Solavei" mcc="310" mnc="260" apn="solavei" port="" mmsc="http://solavei.mmsmvno.com/mms/wapenc" type="default,mms,supl" /> - <apn carrier="CellOne WAP" mcc="310" mnc="260" apn="wap.cellular1.net" proxy="10.10.0.97" port="9201" mmsc="http://mms.cellular1.net/ecit/mms.php" mmsproxy="10.10.0.97" mmsport="9201" type="default,supl,mms" authtype="0" /> - <apn carrier="Simple" mcc="310" mnc="260" apn="simple" port="" mmsc="http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc" mvno_type="gid" mvno_match_data="534d" type="default,mms,supl" /> - <apn carrier="Simple" mcc="310" mnc="260" apn="simple" proxy="216.155.165.50" port="8080" user="" password="" mmsc="http://smpl.mms.msg.eng.t-mobile.com/mms/wapenc" mmsproxy="216.155.165.50" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Walmart Family Mobile" mcc="310" mnc="260" apn="web.omwtoday.com" mmsproxy="216.155.165.50" mmsport="8080" mmsc="http://wirelessfour.mmsmvno.com/mms/wapenc" type="default,supl,mms" /> - <apn carrier="Ting Data" mcc="310" mnc="260" apn="wholesale" type="default,admin,fota,mms,supl,hipri,internet,dun" protocol="IPV6" roaming_protocol="IPV6" /> - <apn carrier="Ting Data" mcc="310" mnc="260" apn="wholesale" type="default,admin,fota,mms,supl,hipri,internet,dun" protocol="IPV6" roaming_protocol="IPV6" /> - <apn carrier="Ting MMS" mcc="310" mnc="260" apn="wholesale" mmsc="http://wholesale.mmsmvno.com/mms/wapenc" type="mms" protocol="IP" roaming_protocol="IP" /> - <apn carrier="US Mobile" mcc="310" mnc="260" apn="pwg" mmsc="http://pwg.mmsmvno.com/mms/wapenc" type="default,supl,mms" /> - <apn carrier="StraightTalk T-Mobile" mcc="310" mnc="260" apn="wap.tracfone" proxy="" port="8080" user="" password="" mmsc="http://mmsc.tracfone.com" type="default,supl,mms" /> - <apn carrier="nep.data" mcc="310" mnc="290" apn="nep.data" proxy="" port="" type="default,supl" authtype="0" /> - <apn carrier="nep.mms" mcc="310" mnc="290" apn="nep.mms" mmsc="http://mmsgprs.com" mmsproxy="" mmsport="80" type="mms" authtype="0" /> - <apn carrier="Truphone" mcc="310" mnc="300" apn="truphone.com" type="default,dun" /> - <apn carrier="CellOne NEAZ" mcc="310" mnc="320" apn="isp.cellularoneaz.net" type="default,supl" authtype="0" /> - <apn carrier="CellOne NEAZ MMS" mcc="310" mnc="320" apn="wap.c1csky.net" mmsc="http://mmsc.c1neaz.csky.us:6672" mmsproxy="209.4.229.94" mmsport="9401" type="mms" authtype="0" /> - <apn carrier="Westlink Internet" mcc="310" mnc="340" apn="internet.westlink" type="default,supl" authtype="0" /> - <apn carrier="Westlink MMS" mcc="310" mnc="340" apn="mms.westlink" mmsc="http://mms2.westlinkcom.com/mms/" mmsproxy="199.221.134.43" mmsport="8080" type="mms" authtype="0" /> - <apn carrier="ATT WAP" mcc="310" mnc="380" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="380" apn="Broadband" type="default,supl" /> - <apn carrier="Cingular 380 ATT" mcc="310" mnc="380" apn="proxy" proxy="wireless.cingular.com" port="80" user="" password="" mmsc="http://mmsc.cingular.com/" mmsproxy="wireless.cingular.com" mmsport="" type="default,supl,mms" /> - <apn carrier="AWS MMS" mcc="310" mnc="380" apn="proxy" proxy="" port="" user="" password="" mmsc="http://mmsc.mymmode.com" mmsproxy="10.250.250.55" mmsport="8080" type="mms" /> - <apn carrier="COET Web" name="COET Web" apn="web.celloneet.com" user="user1@web.celloneet.com" password="celloneet" server="http://192.168.100.14" mmsc="http://192.168.100.14" mmsproxy="209.4.229.81" mmsport="9201" mcc="310" mnc="390" type="default,supl,mms" authtype="1" /> - <apn carrier="Celloneet MMS" mcc="310" mnc="390" apn="mms.celloneet.com" proxy="" port="" user="user1@mms.celloneet.com" password="celloneet" mmsc="http://mms.celloneet.com/servlets/mms" mmsproxy="63.99.231.135" mmsport="8080" type="mms" /> - <apn carrier="ATT" mcc="310" mnc="410" apn="phone" mmsc="http://mmsc.mobile.att.net/" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,supl" /> - <apn carrier="Net10" mcc="310" mnc="410" apn="tfdata" mmsc="http://mms-tf.net" mmsproxy="mms3.tracfone.com" mmsport="80" type="default,mms,supl" /> - <apn carrier="Straight Talk" mcc="310" mnc="410" apn="tfdata" port="80" mmsc="http://mms-tf.net" mmsproxy="mms3.tracfone.com" mmsport="80" mvno_type="gid" mvno_match_data="deff" type="default,mms,supl" /> - <apn carrier="Red Pocket" mcc="310" mnc="410" apn="PRODATA" port="" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" mvno_type="gid" mvno_match_data="4201" type="default,mms,supl" /> - <apn carrier="Black Wireless" mcc="310" mnc="410" apn="att.mvno" proxy="66.209.11.33" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.33" mmsport="80" type="default,mms,supl,agps,fota" authtype="1" /> - <apn carrier="H2O Wireless" mcc="310" mnc="410" apn="PRODATA" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,supl" /> - <apn carrier="Pure Talk USA" mcc="310" mnc="410" apn="att.mvno" proxy="" port="" mmsc="http://mmsc.cingular.com" mmsproxy="proxy.mvno.telrite.com" mmsport="80" type="default,mms,supl" /> - <apn carrier="AirVoice Wireless" mcc="310" mnc="410" apn="att.mvno" proxy="66.209.11.33" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.33" mmsport="80" type="default,mms,supl" /> - <apn carrier="Jolt Mobile" mcc="310" mnc="410" apn="att.mvno" proxy="66.209.11.33" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.33" mmsport="80" type="default,mms,supl" /> - <apn carrier="Consumer Cellular 3G" mcc="310" mnc="410" apn="att.mvno" proxy="66.209.11.32" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.32" mmsport="80" type="default,mms,supl,agps,fota" /> - <apn carrier="Consumer Cellular LTE" mcc="310" mnc="410" apn="ccdata" proxy="" port="" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,agps,supl,fota" /> - <apn carrier="Good 2Go Mobile" mcc="310" mnc="410" apn="att.mvno" proxy="proxy.mvno.att.ztarmobile.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="proxy.mvno.att.ztarmobile.com" mmsport="80" type="default,mms,supl,hipri" /> - <apn carrier="ATT IMS" mcc="310" mnc="410" apn="ims" type="ims" modem_cognitive="true" protocol="IPV4V6" /> - <apn carrier="ATT Nextgenphone" mcc="310" mnc="410" apn="nxtgenphone" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,supl,fota,hipri" protocol="IPV4V6" roaming_protocol="IPV4V6" mtu="1410" /> - <apn carrier="ATT Phone" mcc="310" mnc="410" apn="phone" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,supl,fota,hipri" protocol="IPV4V6" roaming_protocol="IPV4V6" mtu="1410" /> - <apn carrier="ATT" mcc="310" mnc="410" apn="wap.cingular" proxy="" port="" user="WAP@CINGULARGPRS.COM" password="" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,supl,mms" /> - <apn carrier="ATT LTE" mcc="310" mnc="410" apn="pta" proxy="" port="" user="" password="" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,supl,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="410" apn="broadband" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="ATT Activation" mcc="310" mnc="410" apn="lwaactivate" user="" password="" mmsc="" protocol="IP" /> - <apn carrier="StraightTalk ATT" mcc="310" mnc="410" apn="tfdata" port="80" mmsc="http://mms-tf.net" mmsproxy="mms3.tracfone.com" mmsport="80" type="default,supl,mms" /> - <apn carrier="StraightTalk ATT.mvno" mcc="310" mnc="410" apn="att.mvno" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.33" mmsport="80" type="default,supl,mms" /> - <apn carrier="StraightTalk ATT" mcc="310" mnc="410" apn="att.mvno" proxy="" port="" user="" password="" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.33" mmsport="80" type="default,supl,mms" /> - <apn carrier="ATT GoPhone" mcc="310" mnc="410" apn="pta" port="" mmsc="http://mmsc.mobile.att.net" mmsproxy="proxy.mobile.att.net" mmsport="80" type="default,mms,supl" /> - <apn carrier="CBW Wap" mcc="310" mnc="420" apn="wap.gocbw.com" user="cbw" server="*" password="*" mmsc="http://mms.gocbw.com:8088/mms" mmsproxy="216.68.79.202" mmsport="80" proxy="216.68.79.202" port="80" type="default,supl,mms" /> - <apn carrier="CBW Internet" mcc="310" mnc="420" apn="wap.gocbw.com" proxy="" port="" user="cbw" password="" server="216.68.79.199" mmsc="http://mms.gocbw.com:8088/mms" mmsproxy="216.68.79.202" mmsport="80" type="default,supl,mms" /> - <apn carrier="Viero" mcc="310" mnc="450" apn="internet.vedge.com" proxy="10.168.3.23" port="9401" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Viero MMS" mcc="310" mnc="450" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.viero.com" mmsproxy="10.168.3.23" mmsport="9401" type="mms" /> - <apn carrier="WAP" mcc="310" mnc="460" apn="wap" proxy="10.1.20.10" port="8080" type="default,supl" authtype="0" /> - <apn carrier="MMS" mmsc="http://10.1.20.11:8514" mmsproxy="10.1.20.10" mmsport="8080" mcc="310" mnc="460" apn="mms" type="mms" authtype="0" /> - <apn carrier="Docomo Pacific" mcc="310" mnc="470" apn="internet" user="" password="" /> - <apn carrier="Docomo Pacific MMS" mcc="310" mnc="470" apn="gcpos" mmsc="http://mmsc.guamcell.csky.us:6672/" user="" password="" proxy="209.004.229.082" port="9201" type="mms" /> - <apn carrier="DataConnect" mcc="310" mnc="470" apn="isp.cingular" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MediaNet" mcc="310" mnc="470" apn="wap.cingular" proxy="" port="" user="WAP@CINGULARGPRS.COM" password="CINGULAR1" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.32" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Verizon Internet" mcc="310" mnc="480" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="480" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="480" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="480" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="DataConnect" mcc="310" mnc="480" apn="isp.cingular" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MediaNet" mcc="310" mnc="480" apn="wap.cingular" proxy="" port="" user="WAP@CINGULARGPRS.COM" password="CINGULAR1" mmsc="http://mmsc.cingular.com" mmsproxy="66.209.11.32" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Verizon Internet" mcc="310" mnc="481" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="481" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="481" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="481" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="483" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="483" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="483" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="483" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="486" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="486" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="486" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="486" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="310" mnc="489" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="310" mnc="489" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="310" mnc="489" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="310" mnc="489" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="GoodCall Picture Message" mcc="310" mnc="490" apn="good.call" proxy="" port="" user="" password="" mmsc="http://mms.suncom.net:8088/mms" mmsproxy="66.150.33.125" mmsport="8080" type="mms" /> - <apn carrier="Suncom MMS" mcc="310" mnc="490" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.suncom.net:8088/mms" mmsproxy="66.150.33.125" mmsport="8080" type="mms" /> - <apn carrier="ATT WAP" mcc="310" mnc="560" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="560" apn="Broadband" type="default,supl" /> - <apn carrier="DobsonMMS" mcc="310" mnc="560" apn="dobsoncellularwap" proxy="" port="" user="" password="" mmsc="http://mmsc" mmsproxy="172.23.1.252" mmsport="8799" type="mms" /> - <apn carrier="Cellular One Smartphone" mcc="310" mnc="570" apn="internet" type="default,supl" authtype="0" /> - <apn carrier="Cellular One MMS" mcc="310" mnc="570" apn="clearsky" mmsc="http://mmsc.mtpcs.csky.us:6672/" mmsproxy="209.4.229.229" mmsport="9201" type="mms" authtype="0" /> - <apn carrier="ChinookMMS" mcc="310" mnc="570" apn="wapgw.chinookwireless.net" proxy="" port="" user="" password="" mmsc="http://mms.cellonenation.net/mms/" mmsproxy="204.181.155.195" mmsport="8080" type="mms" /> - <apn carrier="Inland Cellular" mcc="310" mnc="580" apn="internet.inland.com" type="default,mms" authtype="3" mmsc="http://mms.inland3g.com/inland/mms.php" /> - <apn carrier="Inland Cellular FOTA" mcc="310" mnc="580" apn="ota.inland.com" type="fota" bearer="14" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Inland Cellular LTE" mcc="310" mnc="580" apn="internet.inland.com" type="default,mms,supl" bearer="14" protocol="IPV4V6" roaming_protocol="IPV4V6" mmsc="http://mms.inland3g.com/inland/mms.php" /> - <apn carrier="Inland Cellular Tether" mcc="310" mnc="580" apn="modem.inland.com" type="dun" bearer="14" protocol="IPV4V6" roaming_protocol="IPV4V6" mmsc="http://mms.inland3g.com/inland/mms.php" /> - <apn carrier="CellularOne MMS" mcc="310" mnc="590" apn="cellular1wap" proxy="" port="" user="" password="" mmsc="http://mmsc" mmsproxy="172.23.1.252" mmsport="8799" type="mms" /> - <apn carrier="EpicINT" mcc="310" mnc="610" apn="internet.epictouch" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="EpicMMS" mcc="310" mnc="610" apn="mms.epictouch" proxy="" port="" user="" password="" mmsc="http://mmsc.westlinkcom.com/servlets/mms" mmsproxy="63.99.231.135" mmsport="8080" type="mms" /> - <apn carrier="Epic Internet" mcc="310" mnc="610" apn="internet.epictouch" type="default,supl" authtype="0" /> - <apn carrier="Epic Mms" mcc="310" mnc="610" apn="mms.epictouch" proxy="199.221.134.46" port="8080" mmsc="http://mms.epicpcs.com/mms/" mmsproxy="199.221.134.46" mmsport="8080" type="mms" authtype="0" /> - <apn carrier="Airfire GPRS" mcc="310" mnc="640" apn="internet.air.net" type="default,supl" authtype="0" /> - <apn carrier="Airfire MMS" mcc="310" mnc="640" apn="internet.air.net" mmsc="http://mms.airfiremobile.com/+1" type="mms" authtype="0" /> - <apn carrier="ATT Broadband" mcc="310" mnc="680" apn="Broadband" type="default,supl" /> - <apn carrier="ATT WAP" mcc="310" mnc="680" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ADAT" mcc="310" mnc="690" apn="biz.immix.com" proxy="209.4.229.79" port="9401" mmsc="http://mms.immix.csky.us:6672/" mmsproxy="209.4.229.79" mmsport="9401" type="default,supl,mms" authtype="0" /> - <apn carrier="ASTAC" mcc="310" mnc="710" apn="ningiq" type="default,supl" authtype="0" /> - <apn carrier="Internet" mcc="310" mnc="770" apn="i2.iwireless.com" type="default,supl" authtype="0" /> - <apn carrier="MMS" proxy="209.4.229.31" port="9201" mmsc="http://mmsc.iwireless.dataonair.net:6672" mmsproxy="209.4.229.31" mmsport="9201" mcc="310" mnc="770" apn="wap1.iwireless.com" type="mms" authtype="0" /> - <apn carrier="iWireless" mcc="310" mnc="770" apn="i2.iwireless.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="iWireless MMS" mcc="310" mnc="770" apn="wap1.iwireless.com" proxy="" port="" user="" password="" mmsc="http://mmsc.iwireless.dataonair.net:6672" mmsproxy="209.4.229.32" mmsport="9201" type="mms" /> - <apn carrier="IWS WAP" mcc="310" mnc="770" apn="wap1.iwireless.com" mmsc="http://mmsc.iwireless.dataonair.net:6672" mmsproxy="209.4.229.31" mmsport="9401" type="default,supl" /> - <apn carrier="PIAPicture Messaging" mcc="310" mnc="770" apn="wap9.iwireless.com" proxy="" port="" user="" password="" mmsc="http://mmsc.iwireless.dataonair.net:6672" mmsproxy="209.4.229.32" mmsport="9401" type="mms" /> - <apn carrier="Internet" mcc="310" mnc="840" apn="isp" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS" mcc="310" mnc="840" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="Edge MMS Prepay" mcc="310" mnc="840" apn="ppmms" proxy="" port="" user="" password="" mmsc="http://mms.edgemobile.net/mmsc" mmsproxy="12.108.12.13" mmsport="3128" type="mms" /> - <apn carrier="Pace Net" mcc="310" mnc="870" apn="data.kaplan" type="default,supl" authtype="0" /> - <apn carrier="Pace Pic" mcc="310" mnc="870" apn="mms.kaplan" mmsc="http://mms.iot1.com/kaplan/mms.php" mmsproxy="10.10.0.97" mmsport="9201" type="mms" authtype="0" /> - <apn carrier="DTC WAP" mcc="310" mnc="880" apn="wapdtcw.com" proxy="204.181.155.218" port="8080" type="default,supl" authtype="0" /> - <apn carrier="DTC MMS" mcc="310" mnc="880" apn="mmsdtcw.com" mmsc="http://mmsdtcw.com" proxy="192.168.20.42" port="80" mmsproxy="192.168.20.42" mmsport="80" type="mms" authtype="0" /> - <apn carrier="DTC MMS" mcc="310" mnc="880" apn="mms.adv.com" proxy="" port="" user="" password="" mmsc="http://mms.iot1.com/advantage/mms.php" type="mms" /> - <apn carrier="WOW_WAP" mcc="310" mnc="910" apn="wap.firstcellular.com" proxy="" port="" user="" password="" mmsc="mms.firstcellular.net/mmsc" mmsproxy="10.101.1.5" mmsport="3128" type="default,supl,mms" /> - <apn carrier="ATT WAP" mcc="310" mnc="980" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="310" mnc="980" apn="Broadband" type="default,supl" /> - <apn carrier="Chariton_WAP" mcc="311" mnc="020" apn="wap.cv" type="default,supl" authtype="0" /> - <apn carrier="Chariton_MMS" mcc="311" mnc="020" apn="mms.cv" mmsc="http://mms.cvalley.net/mms/" mmsproxy="199.221.134.36" mmsport="8080" type="mms" authtype="0" /> - <apn carrier="Indigo" mcc="311" mnc="030" apn="internet.indigoip" mmsc="http://mmsgprs.com" mmsproxy="10.213.2.68" mmsport="80" type="default,supl" authtype="0" /> - <apn carrier="Indigo MMS" mcc="311" mnc="030" apn="mms.indigo" mmsc="http://mmsgprs.com" mmsproxy="10.213.2.68" mmsport="80" user="mms" password="mms@indigo" type="mms" authtype="1" /> - <apn carrier="Pine WAP" mcc="311" mnc="080" apn="pine" proxy="69.8.34.146" port="9401" type="default,supl" authtype="0" /> - <apn carrier="Pine MMS" mcc="311" mnc="080" apn="pine" mmsc="http://69.8.34.146/mms/" mmsproxy="69.8.34.146" mmsport="9401" user="" password="" type="mms" authtype="0" /> - <apn carrier="ATT WAP" mcc="311" mnc="70" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="70" apn="Broadband" type="default,supl" /> - <apn carrier="ATT WAP" mcc="311" mnc="90" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="90" apn="Broadband" type="default,supl" /> - <apn carrier="Lyca Mobile" mcc="311" mnc="96" apn="data.lycamobile.com" proxy="" port="" user="lmus" password="plus" mmsc="http://lyca.mmsmvno.com/mms/wapenc" type="default,supl,admin,dun" /> - <apn carrier="Lycamobile US" mcc="311" mnc="96" apn="data.lycamobile.us" user="lmus" password="plus" type="default,supl" /> - <apn carrier="ATT WAP" mcc="311" mnc="150" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="150" apn="Broadband" type="default,supl" /> - <apn carrier="ATT WAP" mcc="311" mnc="170" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="170" apn="Broadband" type="default,supl" /> - <apn carrier="ATT WAP" mcc="311" mnc="180" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="180" apn="Broadband" type="default,supl" /> - <apn carrier="MMS" mcc="311" mnc="190" apn="wap.cellular1.net" proxy="" port="" user="" password="" mmsc="http://mms.cellular1.net/ecit/mms.php" type="mms" /> - <apn carrier="Farmers" mcc="311" mnc="210" apn="internet.farmerswireless.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Farmers MMS" mcc="311" mnc="210" apn="mms.farmers.com" proxy="" port="" user="" password="" mmsc="172.16.0.37:8514" type="mms" /> - <apn carrier="USCC" mcc="311" mnc="220" apn="internet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" authtype="3" port="80" mmsport="80" type="mms" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="220" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="220" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="220" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="221" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="221" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="221" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="222" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="222" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="222" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="223" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="223" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="223" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="224" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="224" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="224" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="225" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="225" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="LTE - USCC INTERNET 2" mcc="311" mnc="225" apn="usccinternet" type="default,dun,mms,fota" mmsc="http://mmsc1.uscc.net/mmsc/MMS" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="226" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="226" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="226" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="227" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="227" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="227" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="228" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="228" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="228" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="229" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="229" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="229" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="LTE INTERNET" mcc="311" mnc="230" apn="Internet.cs4glte.com" user="" password="" type="default,dun,mms" authtype="0" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="LTE IMS" mcc="311" mnc="230" apn="ims.cs4glte.com" type="ims" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="LTE ADMIN" mcc="311" mnc="230" apn="admin.cs4glte.com" type="fota" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="LTE Tethering" mcc="311" mnc="230" apn="tethering.cs4glte.com" type="tethering" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="EHRPD INTERNET" mcc="311" mnc="230" apn="Internet.cs4glte.com" user="" password="" type="default,dun,mms" authtype="0" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="13" /> - <apn carrier="EHRPD IMS" mcc="311" mnc="230" apn="ims.cs4glte.com" type="ims" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="13" /> - <apn carrier="EHRPD ADMIN" mcc="311" mnc="230" apn="admin.cs4glte.com" type="fota" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="13" /> - <apn carrier="EHRPD Tethering" mcc="311" mnc="230" apn="tethering.cs4glte.com" type="tethering" user="" password="" mmsc="http://pix.cspire.com/servlets/mms" mmsproxy="66.175.144.91" mmsport="80" protocol="IP" roaming_protocol="IP" bearer="13" /> - <apn carrier="AirFire" mcc="311" mnc="330" apn="internet.air.net" user="" password="" /> - <apn carrier="AirFire MMS" mcc="311" mnc="330" mmsc="http://mms.airfiremobile.com/+1" apn="internet.air.net" user="" password="" type="mms" /> - <apn carrier="GCI Web" mcc="311" mnc="370" apn="web.gci" type="default,supl" authtype="0" /> - <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" mmsc="http://mmsc.gci.csky.us:6672/" mmsproxy="209.4.229.92" mmsport="9201" type="mms" authtype="0" /> - <apn carrier="GCI Data" mcc="311" mnc="370" apn="web.gci" type="default,supl" /> - <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" mmsproxy="209.4.229.92" mmsport="9201" mmsc="http://mmsc.gci.csky.us:6672" type="mms" /> - <apn carrier="GCI Data" mcc="311" mnc="370" apn="web.gci" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="GCI MMS" mcc="311" mnc="370" apn="mms.gci" proxy="" port="" user="" password="" mmsc="http://mmsc.gci.csky.us:6672" mmsproxy="209.4.229.92" mmsport="9201" type="mms" /> - <apn carrier="ATT WAP" mcc="311" mnc="380" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="380" apn="Broadband" type="default,supl" /> - <!-- bearer 4, 5, 6, 7, 8, 12 --> - <apn carrier="Verizon" mcc="311" mnc="480" apn="internet" authtype="3" type="default,mms,supl,fota,cbs,dun" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" bearer_bitmask="4|5|6|7|8|12" user_visible="false" /> - <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 --> - <apn carrier="Verizon" mcc="311" mnc="480" apn="VZWINTERNET" type="default,dun,supl" authtype="0" protocol="IPV4V6" roaming_protocol="IP" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="0" modem_cognitive="true" max_conns="20" max_conns_time="300" /> - <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 --> - <apn carrier="Verizon" mcc="311" mnc="480" apn="VZWADMIN" type="fota" authtype="0" protocol="IPV4V6" roaming_protocol="IP" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="3" modem_cognitive="true" max_conns="20" max_conns_time="300" user_visible="false" /> - <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 --> - <apn carrier="Verizon" mcc="311" mnc="480" apn="IMS" type="ims,ia" authtype="0" protocol="IPV4V6" roaming_protocol="IPV6" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="2" modem_cognitive="true" max_conns="20" max_conns_time="300" user_visible="false" /> - <!-- bearer 1, 2, 3, 9, 10, 11, 13, 14, 15, 18 --> - <apn carrier="Verizon" mcc="311" mnc="480" apn="VZWAPP" type="cbs,mms" authtype="0" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IP" bearer_bitmask="1|2|3|9|10|11|13|14|15|18" profile_id="4" modem_cognitive="true" max_conns="20" max_conns_time="300" user_visible="false" /> - <apn carrier="StraightTalk Verizon" mcc="311" mnc="480" apn="TRACFONE.VZWENTP" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="XFINITY Mobile" mcc="311" mnc="480" apn="COMCAST.RSLR.VZWENTP" type="default,dun,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="311" mnc="482" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="311" mnc="482" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="311" mnc="482" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="311" mnc="482" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon Internet" mcc="311" mnc="485" apn="VZWINTERNET" type="default,dun,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon FOTA" mcc="311" mnc="485" apn="VZWADMIN" type="fota" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon IMS" mcc="311" mnc="485" apn="VZWIMS" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Verizon CBS" mcc="311" mnc="485" apn="VZWAPP" type="cbs,mms" mmsc="http://mms.vtext.com/servlets/mms" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Virgin Mobile US" mcc="311" mnc="490" apn="0" mmsproxy="205.239.233.136" mmsport="81" mmsc="http://mmsc.vmobl.com:8088/mms?" port="" type="mms" /> - <apn carrier="Virgin Mobile CdmaNai" mcc="311" mnc="490" apn="CdmaNai" mmsproxy="68.28.31.2" mmsport="80" mmsc="http://mmsc.vmobl.com:8088" type="mms" carrier_enabled="false" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="Mosiac WAP" mcc="311" mnc="500" apn="WAP" mmsc="http://mmsc.ctc.csky.us:6672" mmsproxy="209.4.229.46" mmsport="9201" type="default,supl,mms" /> - <apn carrier="Internet" mcc="311" mnc="530" apn="wap.mymobiletxt.com" mmsc="http://172.16.16.103/mms/" mmsproxy="172.16.16.102" mmsport="8080" type="" authtype="0" /> - <apn carrier="Internet" mcc="311" mnc="530" apn="mms.mymobiletxt.com" mmsc="http://mms2.mymobiletxt.net" type="default,supl,mms" authtype="0" /> - <apn carrier="ATT WAP" mcc="311" mnc="560" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="560" tapn="Broadband" ype="default" /> - <apn carrier="LTE - USCC INTERNET" mcc="311" mnc="580" apn="usccinternet" type="default,dun,mms,fota" mmsc="http://mmsc1.uscc.net/mmsc/MMS" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="580" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="580" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="8" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="580" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="580" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="581" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="581" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="581" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="582" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="582" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="582" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="583" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="583" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="583" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="584" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="584" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="584" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="585" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="585" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="585" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="586" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="586" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="586" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="587" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="587" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="587" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="588" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="588" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="588" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="589" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="13" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="589" apn="usccinternet" mmsc="http://mmsc1.uscc.net/mmsc/MMS" mmsc2="http://mmsc2.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="14" /> - <apn carrier="U.S. Cellular" mcc="311" mnc="589" apn="CdmaNai" mmsc="http://mmsc1.uscc.net/mmsc/MMS" type="default,mms,dun,hipri,fota" inactivetimer="-1" carrier_enabled="true" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="MetroPCS DEFAULT" mcc="311" mnc="660" apn="internet.metropcs" user="" password="" type="default,hipri,admin,mms" authtype="0" mmsc="http://mms.metropcs.net:3128/mmsc" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="MetroPCS IMS" mcc="311" mnc="660" apn="ims.metropcs" user="" password="" type="ims" authtype="0" mmsc="http://mms.metropcs.net:3128/mmsc" protocol="IP" roaming_protocol="IP" bearer="14" /> - <apn carrier="ATT WAP" mcc="311" mnc="680" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="680" apn="Broadband" type="default,supl" /> - <apn carrier="Boost Mobile CdmaNai" mcc="311" mnc="870" apn="CdmaNai" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mm.myboostmobile.com" type="mms" carrier_enabled="false" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="ATT WAP" mcc="311" mnc="980" apn="wap.cingular" proxy="wireless.cingular.com" port="80" mmsc="http://mmsc.cingular.com" mmsproxy="wireless.cingular.com" mmsport="80" type="default,mms" /> - <apn carrier="ATT Broadband" mcc="311" mnc="980" apn="Broadband" type="default,supl" /> - <apn carrier="Sprint CdmaNai" mcc="312" mnc="530" apn="CdmaNai" mmsproxy="68.28.31.7" mmsport="80" mmsc="http://mms.sprintpcs.com" type="mms" carrier_enabled="false" protocol="IPV4V6" roaming_protocol="IPV4V6" bearer="6" /> - <apn carrier="LTE CLARO" mcc="330" mnc="110" apn="lte.claropr.com" authtype="1" type="default,supl" /> - <apn carrier="MMS CLARO" mcc="330" mnc="110" apn="mmslte.claropr.com" mmsc="http://mmsg.claropr.com:10021/mmsc" mmsproxy="10.50.38.3" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Claro PR" mcc="330" mnc="11" apn="internet.claropr.com" proxy="" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Claro PR MMS" mcc="330" mnc="11" apn="mms.claropr.com" proxy="" port="" user="" password="" mmsc="http://mmsg.claropr.com:1021/mmsc" mmsproxy="10.50.38.3" mmsport="8799" type="mms" /> - <apn carrier="Telcel Internet" mcc="334" mnc="02" apn="internet.itelcel.com" proxy="" port="" user="webgprs" password="webgprs2002" mmsc="" type="default,supl" /> - <apn carrier="Mensajas Multimedia" mcc="334" mnc="02" apn="mms.itelcel.com" proxy="" port="" user="mmsgprs" password="mmsgprs2003" mmsc="http://mms.itelcel.com/servlets/mms" mmsproxy="148.233.151.240" mmsport="8080" type="mms" /> - <apn carrier="Telcel EDGE" mcc="334" mnc="020" apn="internet.itelcel.com" proxy="" port="" user="webgprs" password="webgprs2002" mmsc="" type="default,supl" /> - <apn carrier="Telcel MMS" mcc="334" mnc="020" apn="mms.itelcel.com" proxy="" port="" user="mmsgprs" password="mmsgprs2003" mmsc="http://mms.itelcel.com/servlets/mms" mmsproxy="148.233.151.240" mmsport="8080" type="mms" /> - <apn carrier="Movistar MX" mcc="334" mnc="03" apn="internet.movistar.mx" proxy="" port="" user="movistar" password="movistar" mmsc="" type="default,supl" /> - <apn carrier="Movistar MX MMS" mcc="334" mnc="03" apn="mms.movistar.mx" proxy="" port="" user="movistar" password="movistar" mmsc="http://mms.movistar.mx" mmsproxy="10.2.20.1" mmsport="9201" type="mms" /> - <apn carrier="Iusacell Internet" mcc="334" mnc="05" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Internet Modem" mcc="334" mnc="05" apn="modem.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" type="dun" /> - <apn carrier="Iusacell MMS" mcc="334" mnc="05" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Iusacell Internet" mcc="334" mnc="050" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Iusacell MMS" mcc="334" mnc="050" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Unefon Internet" mcc="334" mnc="050" apn="web.iusacellgsm.mx" user="iusacellgsm" password="iusacellgsm" authtype="0" type="default,supl" /> - <apn carrier="Unefon MMS" mcc="334" mnc="050" apn="mms.iusacellgsm.mx" mmsc="http://mms.iusacell3g.com/" user="mmsiusacellgsm" password="mmsiusacellgsm" type="mms" /> - <apn carrier="Nextel Navegación" mcc="334" mnc="090" apn="wap.nexteldata.com.mx" user="" password="" authtype="0" type="default,supl" /> - <apn carrier="Nextel MMS" mcc="334" mnc="090" apn="mms.nexteldata.com.mx" mmsproxy="129.192.129.104" mmsport="8080" mmsc="http://3gmms.nexteldata.com.mx" user="" password="" type="mms" /> - <apn carrier="Nextel Internet" mcc="334" mnc="090" apn="modem.nexteldata.com.mx" user="" password="" type="dun,tethering" /> - <apn carrier="Nextel Localización" mcc="334" mnc="090" apn="location.nexteldata.com.mx" server="supl.nexteldata.com.mx" port="7275" type="supl" /> - <apn carrier="Movistar INTERNET" mcc="334" mnc="30" apn="internet.movistar.mx" user="movistar" password="movistar" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="334" mnc="30" apn="mms.movistar.mx" proxy="" port="" mmsproxy="10.2.20.1" mmsport="80" mmsc="http://mms.movistar.mx" user="movistar" password="movistar" authtype="1" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="338" mnc="180" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="338" mnc="180" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="338" mnc="180" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="338" mnc="180" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Digicel Web" mcc="338" mnc="05" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="338" mnc="05" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel Haiti Web" mcc="338" mnc="05" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel Haiti MMS" mcc="338" mnc="05" mmsc="http://mmc.digicelhaiti.com/servlets/mms" apn="wap" user="" password="" mmsproxy="172.20.134.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel BVI Web" mcc="338" mnc="05" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel BVI MMS" mcc="338" mnc="05" mmsc="http://mmc.digiceljamaica.com/servlets/mms" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel Cayman Web" mcc="338" mnc="05" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Digicel Cayman MMS" mcc="338" mnc="05" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel LTE ANTIGUA" mcc="338" mnc="05" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Digicel Antigua MMS" mcc="338" mnc="05" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel Web" mcc="338" mnc="050" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="338" mnc="050" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel Haiti Web" mcc="338" mnc="050" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel Haiti MMS" mcc="338" mnc="050" mmsc="http://mmc.digicelhaiti.com/servlets/mms" apn="wap" user="" password="" mmsproxy="172.20.134.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel BVI Web" mcc="338" mnc="050" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel BVI MMS" mcc="338" mnc="050" mmsc="http://mmc.digiceljamaica.com/servlets/mms" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel Cayman Web" mcc="338" mnc="050" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Digicel Cayman MMS" mcc="338" mnc="050" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel LTE ANTIGUA" mcc="338" mnc="050" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Digicel ANTIGUA MMS" mcc="338" mnc="050" mmsc="http://mms.digicelgroup.com" apn="wap" user="" password="" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel JM" mcc="338" mnc="50" apn="wap.digiceljamaica.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Digicel JM MMS" mcc="338" mnc="50" apn="wap.digiceljamaica.com" proxy="" port="" user="wapuser" password="wap03jam" mmsc="http://mms.digicelgroup.com" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel BM" mcc="338" mnc="50" apn="web.digicelbermuda.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Claro JM" mcc="338" mnc="70" apn="internet.ideasclaro.com.jm" proxy="" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange World" mcc="340" mnc="01" apn="orangeweb" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange World" mcc="340" mnc="01" apn="Orange MMS" proxy="" port="" mmsproxy="10.0.0.10" mmsport="8082" mmsc="http://193.251.160.246/servlets/mms" user="orange" password="orange" type="mms" /> - <apn carrier="Orange web" mcc="340" mnc="01" apn="orangeweb" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange World Caraïbe" mcc="340" mnc="01" apn="orangewap" user="orange" password="wap" proxy="10.0.0.10" port="8082" type="default,supl" /> - <apn carrier="Orange MMS Caraïbe" mcc="340" mnc="01" apn="orangewap" user="orange" password="orange" mmsc="http://193.251.160.246/servlets/mms" mmsproxy="10.0.0.10" mmsport="8082" type="mms" /> - <apn carrier="Orangeweb" mcc="340" mnc="01" apn="orangeweb" user="orange" password="orange" type="default,supl" /> - <apn carrier="Onlyplanet" mcc="340" mnc="02" apn="onlywap" proxy="10.4.85.50" port="8080" user="only" password="only" type="default,supl" /> - <apn carrier="onlymms" mcc="340" mnc="02" apn="onlymms" proxy="" port="" mmsproxy="10.4.85.50" mmsport="8080" mmsc="http://10.4.85.50:8514" user="only" password="only" type="mms" /> - <apn carrier="Digicel FR Web" mcc="340" mnc="20" apn="web.digicelfr.com" user="" password="" type="default,supl" /> - <apn carrier="Digicel FR MMS" mcc="340" mnc="20" apn="wap" proxy="" port="" mmsproxy="172.24.2.101" mmsport="8080" mmsc="http://mmc.digicelfr.com/servlets/mms" user="wap" password="wap" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="342" mnc="600" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="342" mnc="600" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="342" mnc="600" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="342" mnc="600" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Digicel BB MMS" mcc="342" mnc="750" apn="wap.digicelbarbados.com" proxy="" port="" user="wapbarb" password="wap03barb" mmsc="http://mme.digiceljamaica.com/servlets/mms" mmsproxy="172.16.7.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel BB" mcc="342" mnc="750" apn="web.digicelbarbados.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Imobile" mcc="344" mnc="03" apn="ppnet.apuapcs.ag" mmsc="" server="http://208.083.080.131:40007" user="" password="" proxy="208.83.80.131" port="9090" type="default,supl" /> - <apn carrier="Imobile" mcc="344" mnc="03" apn="net.apuapcs.ag" mmsc="" server="http://208.083.080.131:40007" user="" password="" proxy="208.83.80.131" port="9090" type="default,supl" /> - <apn carrier="LIME Prepaid Internet" mcc="344" mnc="920" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="344" mnc="920" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="344" mnc="920" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="344" mnc="920" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME" mcc="344" mnc="920" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="LIME Prepaid Internet" mcc="346" mnc="140" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="346" mnc="140" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="346" mnc="140" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="346" mnc="140" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="348" mnc="170" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="348" mnc="170" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="348" mnc="170" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="348" mnc="170" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="352" mnc="110" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="352" mnc="110" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="352" mnc="110" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="352" mnc="110" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Digicel Web" mcc="348" mnc="770" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="348" mnc="770" apn="wap" proxy="" port="" mmsproxy="172.16.7.12" mmsport="8080" mmsc="http://mmc.digiceljamaica.com/servlets/mms" user="" password="" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="354" mnc="860" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="354" mnc="860" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="354" mnc="860" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="354" mnc="860" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="356" mnc="110" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="356" mnc="110" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="356" mnc="110" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="356" mnc="110" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="358" mnc="110" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="358" mnc="110" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="358" mnc="110" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="358" mnc="110" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="360" mnc="110" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="360" mnc="110" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="360" mnc="110" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="360" mnc="110" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Digicel VC" mcc="360" mnc="070" apn="wap.digiceloecs.com" user="wapoecs" password="wap03oecs" type="default,supl" /> - <apn carrier="Digicel VC" mcc="360" mnc="070" apn="wap.digiceloecs.com" proxy="" port="" user="wapoecs" password="wap03oecs" mmsc="" type="default,supl" /> - <apn carrier="Digicel Web" mcc="362" mnc="69" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="362" mnc="69" apn="wap" proxy="" port="" mmsproxy="172.16.7.12" mmsport="8080" mmsc="http://mms.digicelgroup.com" user="wapcu" password="wap03cur" type="mms" /> - <apn carrier="Setar MMS" mcc="363" mnc="01" apn="mms.setar.aw" proxy="" port="" user="" password="" mmsc="http://mms.setar.aw" mmsproxy="209.88.130.210" mmsport="8081" type="mms" /> - <apn carrier="Setar" mcc="363" mnc="01" apn="wap.setar.aw" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Digicel Web" mcc="363" mnc="02" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="363" mnc="02" apn="wap" proxy="" port="" mmsproxy="172.16.7.12" mmsport="8080" mmsc="http://mms.digicelgroup.com" user="waparuba" password="wap03aruba" type="mms" /> - <apn carrier="Postpaid Internet" mcc="364" mnc="390" apn="internet1.btcbahamas.com" user="" password="" proxy="" port="" /> - <apn carrier="Postpaid MMS" mcc="364" mnc="390" apn="ppmms1.btcbahamas.com" user="" password="" mmsproxy="172.16.220.44" mmsport="8080" /> - <apn carrier="BATELCO BS" mcc="364" mnc="390" apn="internet.btcbahamas.com" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Postpaid Internet" mcc="364" mnc="39" apn="internet1.btcbahamas.com" user="" password="" proxy="" port="" type="supl" /> - <apn carrier="Postpaid MMS" mcc="364" mnc="39" apn="ppmms1.btcbahamas.com" user="" password="" mmsproxy="172.16.220.44" mmsport="8080" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="365" mnc="840" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="365" mnc="840" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="365" mnc="840" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="365" mnc="840" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="366" mnc="110" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="366" mnc="110" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="366" mnc="110" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="366" mnc="110" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Orange DO" mcc="370" mnc="01" apn="orangenet.com.do" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Orange DO MMS" mcc="370" mnc="01" apn="orangeworld" proxy="" port="" user="" password="" mmsc="http://mmr.orangewi.com/servlets/mms" mmsproxy="172.16.126.70" mmsport="8080" type="mms" /> - <apn carrier="Orange Net" mcc="370" mnc="010" apn="orangenet.com.do" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange MMS" mcc="370" mnc="010" apn="orangeworld" proxy="" port="" mmsproxy="172.16.126.70" mmsport="8080" mmsc="http://mms.orange.com.do/servlets/mms" user="orange" password="orange" type="mms" /> - <apn carrier="Ideas CLARO" mcc="370" mnc="02" apn="internet.ideasclaro.com.do" user="" password="" type="default,supl" authtype="3" /> - <apn carrier="MMS CLARO" mcc="370" mnc="02" apn="internet.ideasclaro.com.do" proxy="" port="" mmsc="http://mms.ideasclaro.com.do/mms/wapenc" user="" password="" type="mms" authtype="3" /> - <apn carrier="Viva Edge" mcc="370" mnc="04" apn="edge.viva.net.do" user="viva" password="viva" mmsc="http://wap.viva.net.do/WapDeck/" proxy="192.168.016.010" port="9401" type="default,supl" /> - <apn carrier="Viva MMS" mcc="370" mnc="04" apn="mms.viva.net.do" user="viva" password="viva" mmsproxy="192.168.016.010" mmsport="9401" mmsc="http://10.200.16.4/mms/wapenc" type="mms" /> - <apn carrier="Trilogy Dominicana" mcc="370" mnc="04" apn="edge.viva.net.do" mmsproxy="192.168.16.10" mmsport="9401" user="viva" password="viva" type="default,supl,mms" /> - <apn carrier="Digicel Web" mcc="372" mnc="01" apn="web" user="" password="" mmsc="" proxy="" port="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="372" mnc="01" apn="wap" user="" password="" mmsproxy="172.20.134.12" mmsport="8080" mmsc="http://mmc.digicelhaiti.com/servlets/mms" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="12" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="12" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="12" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="BMobile Postpaid" mcc="374" mnc="12" apn="internet" type="default,supl" port="8080" /> - <apn carrier="BMobile Prepaid" mcc="374" mnc="12" apn="bconnected" type="default,supl" port="8080" /> - <apn carrier="BMobile MMS" mcc="374" mnc="12" apn="mms" type="mms" mmsc="http://192.168.210.104/mmrelay.app" mmsproxy="192.168.210.104" mmsport="8080"/> - <apn carrier="BMobile Buzz" mcc="374" mnc="12" apn="buzz" type="default,mms" proxy="192.168.210.104" port="8080" mmsc="http://192.168.210.103/operator/wap"/> - <apn carrier="Digicel Web" mcc="374" mnc="13" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="374" mnc="13" apn="wap" proxy="" port="" mmsproxy="172.20.6.12" mmsport="8080" mmsc="http://mmc.digiceltt.com/servlets/mms" user="wap" password="wap" type="mms" /> - <apn carrier="Digicel TT" mcc="374" mnc="13" apn="web.digiceltt.com" type="default,supl" /> - <apn carrier="Prepaid Data" mcc="374" mnc="120" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="120" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="120" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="121" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="121" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="121" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="122" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="122" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="122" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="123" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="123" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="123" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="124" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="124" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="124" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="125" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="125" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="125" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="126" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="126" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="126" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="127" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="127" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="127" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="128" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="128" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="128" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Prepaid Data" mcc="374" mnc="129" apn="bconnected" server="http://www.google.com" user="" password="" type="default,supl" /> - <apn carrier="Bmobile BUZZ" mcc="374" mnc="129" apn="buzz" proxy="192.168.210.104" port="8080" server="http://192.168.210.103/operator/wap" user="" password="" type="default,supl" /> - <apn carrier="Bmobile MMS" mcc="374" mnc="129" apn="mms" mmsproxy="192.168.210.104" mmsport="8080" mmsc="http://192.168.210.104/mmrelay.app" user="" password="" type="mms" /> - <apn carrier="Digicel Web" mcc="374" mnc="130" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="374" mnc="130" apn="wap" proxy="" port="" mmsproxy="172.20.6.12" mmsport="8080" mmsc="http://mmc.digiceltt.com/servlets/mms" user="wap" password="wap" type="mms" /> - <apn carrier="LIME Prepaid Internet" mcc="376" mnc="350" apn="ppinternet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Postpaid Internet" mcc="376" mnc="350" apn="internet" mmsc="" user="" password="" proxy="" port="8799" type="default,supl" /> - <apn carrier="LIME Prepaid MMS" mcc="376" mnc="350" apn="ppmms" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="LIME Postpaid MMS" mcc="376" mnc="350" apn="multimedia" mmsc="http://mmsc" user="" password="" proxy="10.20.5.34" port="8799" type="mms" /> - <apn carrier="Azercell" mcc="400" mnc="01" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Azercell MMS" mcc="400" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.azercell.com/cMMSC/post" mmsproxy="10.0.154.101" mmsport="8080" type="mms" /> - <apn carrier="Bakcell" mcc="400" mnc="02" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.bakcell.com/mms/wapenc" mmsproxy="213.172.91.46" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Nar" mcc="400" mnc="04" apn="nar" proxy="" port="" user="nar" password="nar" mmsc="http://mmsc" mmsproxy="10.20.0.40" mmsport="8080" type="default,supl,mms" /> - <apn carrier="BeeLine KZ" mcc="401" mnc="01" apn="internet.beeline.kz" proxy="" port="" user="internet.beeline" password="" mmsc="" type="default,supl" /> - <apn carrier="Kcell" mcc="401" mnc="02" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Kcell MMS" mcc="401" mnc="02" apn="mms" proxy="" port="" user="" password="" mmsc="http://mms.kcell.kz/post" mmsproxy="195.47.255.7" mmsport="8080" type="mms" /> - <apn carrier="Kcell WAP" mcc="401" mnc="02" apn="wap" proxy="195.47.255.7" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="MTS WAP" mcc="404" mnc="00" apn="WAP" user="wap@wap.mtsindia.in" password="MTS" authtype="3" type="default,supl" /> - <apn carrier="MTS MMS" mcc="404" mnc="00" apn="MMS" user="mms@mms.mtsindia.in" password="MTS" authtype="3" type="mms" /> - <apn carrier="MTS MODEM" mcc="404" mnc="00" apn="Modem" user="internet@internet.mtsindia.in" password="MTS" authtype="3" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="01" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="01" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="01" apn="www" type="default,supl" /> - <apn carrier="RCOM" mcc="404" mnc="13" apn="rcomnet" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="02" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="02" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="02" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="03" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="03" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="03" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="04" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="04" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="04" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="04" apn="mobile" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="05" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="05" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="05" apn="www" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="06" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="06" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="06" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="07" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="07" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="07" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="07" apn="mobile" type="default,supl" /> - <apn carrier="NetConnect" mcc="404" mnc="09" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="09" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Jio 4G" apn="jionet" type="default,supl" roaming_protocol="IPV4V6" /> - <apn carrier="Jio 4G" mcc="405" mnc="840" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="840" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="854" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="854" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="855" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="855" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="856" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="856" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="857" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="857" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="858" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="858" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="859" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="859" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="860" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="860" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="861" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="861" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="862" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="862" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="863" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="863" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="864" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="864" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="865" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="865" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="866" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="866" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="867" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="867" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="868" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="868" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="869" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="869" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="870" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="870" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="871" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="871" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="872" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="872" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="873" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="873" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Jio 4G" mcc="405" mnc="874" apn="jionet" type="default,supl" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="IMS" mcc="405" mnc="874" apn="ims" type="ims" protocol="IPV4V6" roaming_protocol="IPV4V6" user_visible="false" /> - <apn carrier="Smart MMS" mcc="404" mnc="09" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance RTel MMS" mcc="404" mnc="09" apn="MMS" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.7" mmsport="8080" type="mms" /> - <apn carrier="Reliance RTel" mcc="404" mnc="09" apn="SMARTNET" type="default,supl" /> - <apn carrier="Reliance WAP" mcc="404" mnc="09" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="10" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="10" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="10" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="11" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="11" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="11" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="12" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="12" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="12" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="12" apn="mobile" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="13" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="13" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="13" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="14" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="14" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="14" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="SPICE" mcc="404" mnc="14" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="404" mnc="14" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="15" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="15" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="15" apn="www" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="16" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="16" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="16" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Aircel Online" mcc="404" mnc="17" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="17" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="17" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="17" apn="aircelwap" type="default,supl" /> - <apn carrier="NetConnect" mcc="404" mnc="18" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="18" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="18" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="18" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="19" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="19" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="19" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="19" apn="mobile" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="20" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="20" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="20" apn="www" type="default,supl" /> - <apn carrier="Loop Internet" mcc="404" mnc="21" apn="www" type="default,supl" /> - <apn carrier="LOOP WAP" mcc="404" mnc="21" apn="mizone" proxy="10.0.0.10" port="9401" user="Mobile phone number" password="bplmmsc" authtype="1" type="default,supl" /> - <apn carrier="BPL MMS" mcc="404" mnc="21" apn="mizone" user="Mobile phone number" password="bplmmsc" mmsc="http://mms.bplmobile.com:8080" mmsproxy="10.0.0.10" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="BPL MMS" mcc="404" mnc="21" apn="mizone" user="MSISDN" password="bplmmsc" mmsc="http://mms.bplmobile.com:8080" mmsproxy="10.0.0.10" mmsport="8080" type="mms" /> - <apn carrier="BPL" mcc="404" mnc="21" apn="www" user="MSISDN" password="bplmmsc" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="22" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="22" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="22" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="22" apn="mobile" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="24" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="24" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="24" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="24" apn="mobile" type="default,supl" /> - <apn carrier="Aircel Online" mcc="404" mnc="25" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="25" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="25" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="27" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="27" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="27" apn="www" type="default,supl" /> - <apn carrier="Aircel Online" mcc="404" mnc="28" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="28" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="28" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="28" apn="aircelwap" type="default,supl" /> - <apn carrier="Aircel Online" mcc="404" mnc="29" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="29" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="29" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="29" apn="aircelwap" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="30" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="30" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="30" apn="www" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="31" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="31" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="31" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="33" apn="aircelwap" type="default,supl" /> - <apn carrier="Aircel Online" mcc="404" mnc="33" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="33" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="33" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="34" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="34" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="34" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="34" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="34" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="404" mnc="35" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="35" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="35" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="35" apn="aircelwap" type="default,supl" /> - <apn carrier="NetConnect" mcc="404" mnc="36" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="36" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="36" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="36" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="404" mnc="37" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="37" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="37" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="37" apn="aircelwap" type="default,supl" /> - <apn carrier="BSNL NET" mcc="404" mnc="38" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="38" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="38" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="38" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="38" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="40" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="40" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="40" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Aircel Online" mcc="404" mnc="41" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="41" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="41" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="41" apn="aircelwap" type="default,supl" /> - <apn carrier="Aircel Online" mcc="404" mnc="42" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="42" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="42" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="42" apn="aircelwap" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="43" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="43" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="43" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="44" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="44" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="44" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="SPICE" mcc="404" mnc="44" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="404" mnc="44" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="45" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="45" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="45" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="46" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="BPL MMS" mcc="404" mnc="46" apn="mizone" user="MSISDN" password="bplmmsc" mmsc="http://mms.bplmobile.com:8080" mmsproxy="10.0.0.10" mmsport="8080" type="mms" /> - <apn carrier="BPL" mcc="404" mnc="46" apn="www" user="MSISDN" password="bplmmsc" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="49" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="49" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="49" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="NetConnect" mcc="404" mnc="50" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="50" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="50" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="50" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="51" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="51" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="51" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="51" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="51" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="404" mnc="52" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="52" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="52" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="52" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="53" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="53" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="53" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="53" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="53" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="54" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="54" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="54" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="54" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="54" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="55" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="55" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="55" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="55" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="55" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="56" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="56" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="56" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="56" apn="mobile" type="default,supl" /> - <apn carrier="BSNL NET" mcc="404" mnc="57" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="57" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="57" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="57" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="57" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="58" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="58" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="58" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="58" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="58" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="59" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="59" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="59" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="59" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="59" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="60" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="60" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="60" apn="www" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="61" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="61" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="61" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.001.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="62" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="62" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="62" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="62" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="62" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="64" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="64" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="64" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="64" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="64" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="66" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="66" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="66" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="66" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="66" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="67" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="NetConnect" mcc="404" mnc="67" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="67" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="67" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="67" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="MTNL GPRS" mcc="404" mnc="68" apn="gprsppsmum" proxy="172.16.39.10" port="9401" user="mtnl" password="mtnl123" authtype="1" type="default,supl" /> - <apn carrier="MTNL MMS" mcc="404" mnc="68" apn="gprsppsmum" user="mtnl" password="mtnl123" mmsc="http://172.16.39.140/mms/" mmsproxy="172.16.39.10" mmsport="9401" authtype="1" type="mms" /> - <apn carrier="MTNL MMS" mcc="404" mnc="68" apn="gprsppsdel" user="mtnl" password="mtnl123" mmsc="http://172.16.39.140/mms/" mmsproxy="172.16.39.10" mmsport="9201" authtype="1" type="mms" /> - <apn carrier="MTNL GPRS" mcc="404" mnc="68" apn="gprsppsdel" user="mtnl" password="mtnl123" type="default,supl" /> - <apn carrier="MTNL" mcc="404" mnc="68" apn="mtnl.net" proxy="10.10.10.10" port="9401" user="mtnl" password="mtnl123" type="default,supl" /> - <apn carrier="MTNL MMS" mcc="404" mnc="68" apn="mtnl.net" user="mtnl" password="mtnl123" mmsc="http://mtnlmms/" mmsproxy="10.10.10.10" mmsport="9401" type="mms" /> - <apn carrier="MTNL GPRS" mcc="404" mnc="69" apn="gprsppsmum" proxy="172.16.39.10" port="9401" user="mtnl" password="mtnl123" authtype="1" type="default,supl" /> - <apn carrier="MTNL MMS" mcc="404" mnc="69" apn="gprsppsmum" user="mtnl" password="mtnl123" mmsc="http://172.16.39.140/mms/" mmsproxy="172.16.39.10" mmsport="9401" authtype="1" type="mms" /> - <apn carrier="MTNL MMS" mcc="404" mnc="69" apn="gprsppsdel" user="mtnl" password="mtnl123" mmsc="http://172.16.39.140/mms/" mmsproxy="172.16.39.10" mmsport="9201" authtype="1" type="mms" /> - <apn carrier="MTNL GPRS" mcc="404" mnc="69" apn="gprsppsmum" user="mtnl" password="mtnl123" type="default,supl" /> - <apn carrier="MTNL" mcc="404" mnc="69" apn="mtnl.net" proxy="10.10.10.10" port="9401" user="mtnl" password="mtnl123" type="default,supl" /> - <apn carrier="MTNL MMS" mcc="404" mnc="69" apn="mtnl.net" user="mtnl" password="mtnl123" mmsc="http://mtnlmms/" mmsproxy="10.10.10.10" mmsport="9401" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="70" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="70" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="70" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="71" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="71" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="71" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="71" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="71" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="72" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="72" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="72" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="72" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="72" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="73" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="73" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="73" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="73" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="73" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="74" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="74" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="74" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="74" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="74" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="75" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="75" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="75" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="75" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="75" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="76" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="76" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="76" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="76" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="76" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="77" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="77" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="77" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="77" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="77" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="78" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="78" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="78" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="78" apn="mobile" type="default,supl" /> - <apn carrier="BSNL NET" mcc="404" mnc="79" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="79" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="79" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="80" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="80" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="80" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="80" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="80" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL NET" mcc="404" mnc="81" apn="bsnlnet" type="default,supl" /> - <apn carrier="BSNL WAP" mcc="404" mnc="81" apn="WAPSOUTH.CELLONE.IN" proxy="10.31.54.2" port="9401" user="PPP" password="PPP123" type="default,supl" /> - <apn carrier="BSNL-mms" mcc="404" mnc="81" apn="bsnlmms" proxy="10.210.10.11" port="8080" mmsc="http://bsnlmmsc.in:8514" mmsproxy="10.210.10.11" mmsport="8080" type="mms" /> - <apn carrier="BSNL" mcc="404" mnc="81" apn="bsnlnet" user="MSISDN" password="MSISDN" type="default,supl" /> - <apn carrier="BSNL MMS" mcc="404" mnc="81" apn="mmssouth.cellone.in" user="MSISDN" password="mmsc" mmsc="http://10.7.236.11:8514" mmsproxy="10.7.236.11" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="404" mnc="82" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="82" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="82" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="82" apn="mobile" type="default,supl" /> - <apn carrier="NetConnect" mcc="404" mnc="83" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="83" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="83" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="83" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="84" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="84" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="84" apn="www" type="default,supl" /> - <apn carrier="NetConnect" mcc="404" mnc="85" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="404" mnc="85" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="404" mnc="85" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="404" mnc="85" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="404" mnc="86" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="86" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="86" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="87" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="87" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="87" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="87" apn="mobile" type="default,supl" /> - <apn carrier="Vodafone" mcc="404" mnc="88" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="404" mnc="88" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="404" mnc="88" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="404" mnc="89" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="404" mnc="89" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="404" mnc="89" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="404" mnc="89" apn="mobile" type="default,supl" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="90" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="90" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="90" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Aircel Online" mcc="404" mnc="91" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="404" mnc="91" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="91" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="404" mnc="91" apn="aircelwap" type="default,supl" /> - <apn carrier="Aircel" mcc="404" mnc="91" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="404" mnc="91" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="92" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="92" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="92" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="93" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="93" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="93" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="94" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="94" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="94" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="95" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="95" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="95" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="96" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="96" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="96" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel Live" mcc="404" mnc="97" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="97" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel GPRS" mcc="404" mnc="98" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="404" mnc="98" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="404" mnc="98" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="01" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="01" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="01" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="01" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="25" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="25" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="25" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="25" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="25" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="25" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="26" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="26" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="26" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="26" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="26" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="26" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="27" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="27" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="27" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="27" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="27" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="27" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="28" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="28" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="28" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="28" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="29" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="29" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="29" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="29" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="29" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="29" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="03" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="03" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="03" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="03" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="30" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="30" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="30" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="30" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="30" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="30" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="31" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="31" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="31" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="31" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="31" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="31" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="32" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="32" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="32" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="32" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="32" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="32" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="33" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="33" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="33" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="33" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="33" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="33" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="34" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="34" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="34" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="34" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="34" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="34" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="35" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="35" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="35" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="35" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="35" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="35" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="36" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="36" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="36" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="36" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="36" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="36" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="37" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="37" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="37" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="37" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="37" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="37" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="38" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="38" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="38" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="38" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="38" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="38" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="39" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="39" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="39" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="39" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="39" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="39" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="04" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="04" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="04" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="40" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="40" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="40" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="40" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="40" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="40" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="41" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="41" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="41" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="41" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="41" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="41" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="42" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="42" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="42" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="42" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="42" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="42" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="43" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="43" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="43" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="43" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="43" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="43" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="44" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="44" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="44" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="44" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="44" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="44" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="45" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="45" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="45" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="45" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="45" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="45" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="46" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="46" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="46" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="46" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="46" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="46" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="TATA DOCOMO INTERNET" mcc="405" mnc="47" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TATA GPRS" mcc="405" mnc="47" apn="Tata.Docomo.Dive.in" proxy="10.124.94.7" port="8080" type="default,supl" /> - <apn carrier="Tata MMS" mcc="405" mnc="47" apn="Tata.Docomo.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="Tata Docomo 3G" mcc="405" mnc="47" apn="tatadocomo3g" type="default,supl" /> - <apn carrier="TA TA DoCoMo" mcc="405" mnc="47" apn="TATA.DOCOMO.INTERNET" type="default,supl" /> - <apn carrier="TA TA DoCoMo MMS" mcc="405" mnc="47" apn="TATA.DOCOMO.MMS" mmsc="http://mmsc/" mmsproxy="10.124.26.94" mmsport="8799" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="05" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="05" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="05" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="05" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="06" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="06" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="06" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="06" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="07" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="07" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="07" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="07" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="08" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="08" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="08" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="08" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="MTS WAP" mcc="405" mnc="89" apn="WAP" user="wap@wap.mtsindia.in" password="MTS" authtype="3" type="default,supl" /> - <apn carrier="MTS MMS" mcc="405" mnc="89" apn="MMS" user="mms@mms.mtsindia.in" password="MTS" authtype="3" type="mms" /> - <apn carrier="MTS MODEM" mcc="405" mnc="89" apn="Modem" user="internet@internet.mtsindia.in" password="MTS" authtype="3" type="default,supl" /> - <apn carrier="NetConnect" mcc="405" mnc="09" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="09" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="09" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="09" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="10" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="10" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="10" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="10" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="11" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="11" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="11" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="11" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="12" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="12" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="12" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="12" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="13" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="13" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="13" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="13" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="14" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="14" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="14" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="14" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="15" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="15" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="15" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="15" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="17" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="17" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="17" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="17" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="18" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="18" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="18" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="18" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="19" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="19" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="19" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="19" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="20" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="20" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="20" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="20" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="21" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="21" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="21" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="21" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="22" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="22" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="22" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="22" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="NetConnect" mcc="405" mnc="23" apn="rcomnet" type="default,supl" /> - <apn carrier="Reliance GPRS" mcc="405" mnc="23" apn="rcomwap" proxy="10.239.221.5" port="8080" type="default,supl" /> - <apn carrier="Smart MMS" mcc="405" mnc="23" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://10.239.221.47/mms/" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Reliance MMS" mcc="405" mnc="23" apn="rcommms" proxy="10.239.221.5" port="8080" mmsc="http://mms.rcom.co.in/mms" mmsproxy="10.239.221.5" mmsport="8080" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="51" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="51" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="51" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="51" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="52" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="52" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="52" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="52" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="53" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="53" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="53" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="53" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="54" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="54" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="54" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="54" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="55" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="55" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="55" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="55" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Airtel GPRS" mcc="405" mnc="56" apn="airtelgprs.com" type="default,supl" /> - <apn carrier="Airtel Live" mcc="405" mnc="56" apn="airtelfun.com" proxy="100.1.200.99" port="8080" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="405" mnc="56" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" type="mms" /> - <apn carrier="Airtel MMS" mcc="405" mnc="56" apn="airtelmms.com" mmsc="http://100.1.201.171:10021/mmsc" mmsproxy="100.1.201.172" mmsport="8799" authtype="1" type="mms" /> - <apn carrier="Vodafone" mcc="405" mnc="66" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="66" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="66" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="67" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="67" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="67" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="405" mnc="70" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="70" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="70" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="70" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="70" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="70" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="Vodafone" mcc="405" mnc="750" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="750" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="750" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="751" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="751" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="752" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="752" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="752" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="753" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="753" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="753" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="754" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="754" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="754" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="755" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="755" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="755" apn="www" type="default,supl" /> - <apn carrier="Vodafone" mcc="405" mnc="756" apn="portalnmms" proxy="10.10.1.100" port="9401" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="default,supl,mms" /> - <apn carrier="Vodafone IN MMS" mcc="405" mnc="756" apn="portalnmms" mmsc="http://mms1.live.vodafone.in/mms/" mmsproxy="10.10.1.100" mmsport="9401" type="mms" /> - <apn carrier="Vodafone IN" mcc="405" mnc="756" apn="www" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="405" mnc="799" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="799" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="799" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="799" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="799" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="799" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="800" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="800" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="800" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="800" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="800" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="801" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="801" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="801" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="801" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="801" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="802" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="802" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="802" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="802" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="802" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="803" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="803" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="803" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="803" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="803" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="804" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="804" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="804" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="804" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="804" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="805" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="805" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="805" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="805" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="805" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="806" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="806" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="806" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="806" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="806" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="807" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="807" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="807" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="807" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="807" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="808" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="808" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="808" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="808" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="808" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="809" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="809" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="809" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="809" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="809" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="810" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="810" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="810" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="810" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="810" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="811" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="811" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="811" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="811" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="811" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel Online" mcc="405" mnc="812" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel GPRS" mcc="405" mnc="812" apn="aircelwap" proxy="172.17.83.69" port="8080" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="812" apn="aircelmms" mmsc="http://172.17.83.67/servlets/mms/" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Aircel" mcc="405" mnc="812" apn="aircelgprs" type="default,supl" /> - <apn carrier="Aircel MMS" mcc="405" mnc="812" apn="aircelmms" proxy="172.17.83.69" port="8080" mmsc="http://172.17.83.67//servlets/mms" mmsproxy="172.17.83.69" mmsport="8080" type="mms" /> - <apn carrier="Uninor" mcc="405" mnc="813" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="813" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="814" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="814" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="816" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="816" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="817" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="817" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="818" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="818" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="819" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="819" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="820" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="820" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="821" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="821" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="822" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="822" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="844" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="844" apn="Uninor" type="default,supl" /> - <apn carrier="IDEA Internet" mcc="405" mnc="845" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="845" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="845" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="845" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="845" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="845" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="846" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="846" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="846" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="846" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="846" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="846" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="847" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="847" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="847" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="847" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="847" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="847" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="848" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="848" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="848" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="848" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="848" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="848" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="849" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="849" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="849" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="849" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="849" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="849" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="850" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="850" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="850" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="850" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="850" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="850" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="851" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="851" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="851" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="851" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="851" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="851" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="852" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="852" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="852" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="852" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="852" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="852" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Internet" mcc="405" mnc="853" apn="internet" type="default,supl" /> - <apn carrier="IDEA Wap" mcc="405" mnc="853" apn="imis" proxy="10.4.42.15" port="8080" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="853" apn="mmsc" mmsc="http://10.4.42.21:8002" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="IDEA Mobile" mcc="405" mnc="853" apn="mobile" type="default,supl" /> - <apn carrier="IDEA" mcc="405" mnc="853" apn="internet" type="default,supl" /> - <apn carrier="IDEA MMS" mcc="405" mnc="853" apn="mmsc" mmsc="http://10.4.42.21:8002/" mmsproxy="10.4.42.15" mmsport="8080" type="mms" /> - <apn carrier="Uninor" mcc="405" mnc="875" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="875" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="876" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="876" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="877" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="877" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="878" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="878" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="879" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="879" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="880" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="880" apn="Uninor" type="default,supl" /> - <apn carrier="SPICE" mcc="405" mnc="908" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="405" mnc="908" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="SPICE" mcc="405" mnc="909" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="405" mnc="909" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="SPICE" mcc="405" mnc="910" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="405" mnc="910" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="SPICE" mcc="405" mnc="911" apn="spicegprs" type="default,supl" /> - <apn carrier="SPICE MMS" mcc="405" mnc="911" apn="spicemms" user="User Mobile number" password="spice" mmsc="http://10.200.200.3:8514" mmsproxy="10.200.200.3" mmsport="8080" type="mms" /> - <apn carrier="Uninor" mcc="405" mnc="925" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="925" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="926" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="926" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="927" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="927" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="928" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="928" apn="Uninor" type="default,supl" /> - <apn carrier="Uninor" mcc="405" mnc="929" apn="Uninor" proxy="10.58.10.58" port="8080" type="default,supl" /> - <apn carrier="Uninor Internet" mcc="405" mnc="929" apn="Uninor" type="default,supl" /> - <apn carrier="Mobilink" mcc="410" mnc="01" apn="connect.mobilinkworld.com" type="default,supl" /> - <apn carrier="Mobilink MMS" mcc="410" mnc="01" apn="mms.mobilinkworld.com" user="mobilink" password="mobilink" mmsc="http://mms" mmsproxy="172.25.20.12" mmsport="8080" type="mms" /> - <apn carrier="Ufone MMS" mcc="410" mnc="03" apn="ufone.mms" mmsc="http://www.ufone.com" mmsproxy="172.16.13.27" mmsport="8080" type="mms" /> - <apn carrier="Ufone" mcc="410" mnc="03" apn="ufone.pinternet" type="default,supl" /> - <apn carrier="Zong" mcc="410" mnc="04" apn="zonginternet" type="default,supl" /> - <apn carrier="Zong MMS" mcc="410" mnc="04" apn="zongmms" mmsc="10.81.6.11" mmsproxy="10.81.6.11" mmsport="8080" type="mms" /> - <apn carrier="Telenor PK" mcc="410" mnc="06" apn="internet" user="Telenor" password="Telenor" type="default,supl" /> - <apn carrier="Telenor PK MMS" mcc="410" mnc="06" apn="mms" user="Telenor" password="Telenor" mmsc="http://mmstelenor" mmsproxy="172.18.19.11" mmsport="8080" type="mms" /> - <apn carrier="Warid PK MMS" mcc="410" mnc="07" apn="mms.warid" mmsc="http://10.4.0.132/servlets/MMS" mmsproxy="10.4.2.1" mmsport="8080" type="mms" /> - <apn carrier="Warid PK" mcc="410" mnc="07" apn="warid" type="default,supl" /> - <apn carrier="Axis" mcc="410" mnc="08" apn="axis" user="axis" password="123456" type="default,supl" /> - <apn carrier="AWCC" mcc="412" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="AWCC MMS" mcc="412" mnc="01" apn="mms1" mmsc="http://172.17.81.2:8002" mmsproxy="172.17.81.2" mmsport="8002" type="mms" /> - <apn carrier="Roshan" mcc="412" mnc="20" apn="internet" user="gprs" password="roshan" type="default,supl" /> - <apn carrier="Roshan MMS" mcc="412" mnc="20" apn="mms" mmsc="http://mms.roshan.af" mmsproxy="172.31.37.16" mmsport="8080" type="mms" /> - <apn carrier="MTN Internet" mcc="412" mnc="40" apn="internet.mtn.com.af" type="default,supl" /> - <apn carrier="MTN MMS" mcc="412" mnc="40" apn="mms.mtn.com.af" mmsc="http://192.168.4.136/servlets/mms" mmsproxy="192.168.4.136" mmsport="8080" type="mms" /> - <apn carrier="Etisalat" mcc="412" mnc="50" apn="etisalat.af.web" type="default,supl" /> - <apn carrier="Etisalat WAP" mcc="412" mnc="50" apn="etisalat.af.wap" proxy="10.0.0.172" port="80" type="default,supl" /> - <apn carrier="Etisalat MMS" mcc="412" mnc="50" apn="etisalat.af.mms" proxy="10.0.0.172" port="80" type="mms" /> - <apn carrier="Mobitel" mcc="413" mnc="01" apn="mobitel3g" type="default,supl" /> - <apn carrier="Mobitel MMS" mcc="413" mnc="01" apn="wapmms" mmsc="http://192.168.50.165" mmsproxy="192.168.50.163" mmsport="8080" type="mms" /> - <apn carrier="Mobitel WAP" mcc="413" mnc="01" apn="mobitel3g" proxy="192.168.050.163" port="8080" type="default,supl" /> - <apn carrier="Dialog Mobile Broadband" mcc="413" mnc="02" apn="dialogbb" server="dialog" mmsc="http://mms.dialog.lk:3130/mmsc" mmsproxy="192.168.122.2" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Dialog WAP Prepaid" mcc="413" mnc="02" apn="ppwap" proxy="192.168.122.2" mmsport="8080" type="default,supl" /> - <apn carrier="Dialog Internet Prepaid" mcc="413" mnc="02" apn="www.dialogsl.com" proxy="192.168.122.2" port="8080" type="default,supl" /> - <apn carrier="Dialog Internet Postpaid" mcc="413" mnc="02" apn="dialogbb" type="default,supl" /> - <apn carrier="Dialog MMS Prepaid" mcc="413" mnc="02" apn="ppwap" mmsc="http://mms.dialog.lk:3130/mmsc" mmsproxy="192.168.122.2" type="mms" /> - <apn carrier="Dialog MMS Postpaid" mcc="413" mnc="02" apn="www.dialogsl.com" mmsc="http://mms.dialog.lk:3130/mmsc" mmsproxy="192.168.122.2" type="mms" /> - <apn carrier="Etisalat" mcc="413" mnc="03" apn="ebb" type="default,supl" /> - <apn carrier="Etisalat MMS" mcc="413" mnc="03" apn="mms" mmsc="http://mms.etisalt.lk:8085" mmsproxy="192.168.104.4" mmsport="9401" type="mms" /> - <apn carrier="Etisalat Internet Prepaid" mcc="413" mnc="03" apn="web" type="default,supl" /> - <apn carrier="Etisalat Internet Postpaid" mcc="413" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="Etisalat WAP" mcc="413" mnc="03" apn="wap" proxy="192.168.104.4" port="9401" type="default,supl" /> - <apn carrier="Airtel Postpaid" mcc="413" mnc="05" apn="airteldata" type="default,supl" /> - <apn carrier="Airtel MMS" mcc="413" mnc="05" apn="airtellive" mmsc="http://mms.airtel.lk" mmsproxy="10.200.184.86" mmsport="8080" type="mms" /> - <apn carrier="Airtel Prepaid" mcc="413" mnc="05" apn="airtellive" type="default,supl" /> - <apn carrier="Airtel" mcc="413" mnc="05" apn="default" type="default,supl" /> - <apn carrier="Hutch3G" mcc="413" mnc="08" apn="hutch3g" type="default,supl" /> - <apn carrier="Hutch WAP" mcc="413" mnc="08" apn="hutch3g" proxy="10.220.135.249" port="8080" type="default,supl" /> - <apn carrier="MPT" mcc="414" mnc="01" apn="mptnet" user="mptnet" password="mptnet" type="default,supl" /> - <apn carrier="ALFA_WAP" mcc="415" mnc="01" apn="wap.mic1.com.lb" proxy="192.168.23.50" port="80" user="mic1" password="mic1" type="default,supl" /> - <apn carrier="ALFA_INTERNET" mcc="415" mnc="01" apn="internet.mic1.com.lb" type="default,supl" /> - <apn carrier="Alfa" mcc="415" mnc="01" apn="internet.mic1.com.lb" user="mic1" password="mic1" type="default,supl" /> - <apn carrier="Alfa MMS" mcc="415" mnc="01" apn="mms.mic1.com.lb" user="mic1" password="mic1" mmsc="http://mms.mic1.com.lb" mmsproxy="192.168.23.51" mmsport="9201" type="mms" /> - <apn carrier="Alfa WAP" mcc="415" mnc="01" apn="wap.mic1.com.lb" user="mic1" password="mic1" proxy="192.168.23.50" port="80" type="default,supl" /> - <apn carrier="mtcgprs" mcc="415" mnc="03" apn="gprs.mtctouch.com.lb" type="default,supl" /> - <apn carrier="mtc touch" mcc="415" mnc="03" apn="gprs.mtctouch.com.lb" type="default,supl" /> - <apn carrier="mtc touch MMS" mcc="415" mnc="03" apn="mms.mtctouch.com.lb" user="mtctouch" mmsc="http://mms:8080/mms/" mmsproxy="192.168.4.103" mmsport="9201" type="mms" /> - <apn carrier="Alfa WAP" mcc="415" mnc="03" apn="wap.mic1.com.lb" user="mic1" password="mic1" proxy="192.168.023.050" port="80" type="default,supl" /> - <apn carrier="Alfa MMS" mcc="415" mnc="03" apn="mms.mic1.com.lb" user="mic1" password="mic1" mmsc="http://mms.mic1.com.lb" mmsproxy="192.168.23.51" mmsport="9201" type="mms" /> - <apn carrier="Zain JO Postpaid" mcc="416" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="Zain JO Prepaid" mcc="416" mnc="01" apn="internetpre" user="zain" password="zain" type="default,supl" /> - <apn carrier="Zain JO WAP" mcc="416" mnc="01" apn="zain" user="zain" password="zain" proxy="192.168.55.10" port="80" type="default,supl" /> - <apn carrier="Zain JO Internet" mcc="416" mnc="01" apn="zain" user="zain" password="zain" type="default,supl" /> - <apn carrier="Zain JO MMS" mcc="416" mnc="01" apn="mms" user="mms" password="mms" mmsc="http://mms.jo.zain.com" mmsproxy="192.168.55.10" mmsport="80" type="mms" /> - <apn carrier="Umniah MMS" mcc="416" mnc="03" apn="mms" mmsc="http://mms.umniah.com/" mmsproxy="10.1.1.10" mmsport="9201" type="mms" /> - <apn carrier="Umniah" mcc="416" mnc="03" apn="net" type="default,supl" /> - <apn carrier="Orange WAP" mcc="416" mnc="77" apn="Wap.orange.jo" proxy="172.16.1.2" port="8080" user="wap" password="wap" authtype="3" type="default,supl" /> - <apn carrier="Orange Internet" mcc="416" mnc="77" apn="net.orange.jo" user="net" password="net" type="default,supl" /> - <apn carrier="Orange MMS" mcc="416" mnc="77" apn="mms.orange.jo" user="mmc" password="mmc" mmsc="http://172.16.1.96/servlets/mms" mmsproxy="172.16.1.2" mmsport="8080" authtype="3" type="mms" /> - <apn carrier="Orange JO MMS" mcc="416" mnc="77" apn="mms.orangemobile.jo" proxy="" port="" user="mmc" password="mmc" mmsc="http://172.16.1.96/servlets/mms" mmsproxy="172.16.1.2" mmsport="8080" type="mms" /> - <apn carrier="Syriatel MMS" mcc="417" mnc="01" apn="mms.syriatel.com" mmsc="http://mymms.syriatel.com/" mmsproxy="172.20.5.6" mmsport="9201" type="mms" /> - <apn carrier="Syriatel" mcc="417" mnc="01" apn="net.syriatel.com" type="default,supl" /> - <apn carrier="MTN Syria" mcc="417" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="MTN SY" mcc="417" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="MTN SY MMS" mcc="417" mnc="02" apn="mms" mmsc="http://10.11.161.138/:10021/mmsc" mmsproxy="10.11.161.131" mmsport="8080" type="mms" /> - <apn carrier="Asiacell" mcc="418" mnc="05" apn="net.asiacell.com" type="default,supl" /> - <apn carrier="Asiacell MMS" mcc="418" mnc="05" apn="wap.asiacell.com" mmsc="http://192.168.107.10:19090/was" mmsproxy="192.168.107.50" mmsport="8080" type="mms" /> - <apn carrier="SanaTel" mcc="418" mnc="08" apn="default" type="default,supl" /> - <apn carrier="Zain-GPRS" mcc="418" mnc="20" apn="internet" user="atheer" password="atheer" type="default,supl" /> - <apn carrier="Zain-MMS" mcc="418" mnc="20" apn="MMS" user="atheer" password="atheer" mmsc="http://mms:8002/" mmsproxy="172.29.11.12" mmsport="8080" type="mms" /> - <apn carrier="Zain-GPRS" mcc="418" mnc="30" apn="internet" user="atheer" password="atheer" type="default,supl" /> - <apn carrier="Zain-MMS" mcc="418" mnc="30" apn="MMS" user="atheer" password="atheer" mmsc="http://mms:8002/" mmsproxy="172.29.11.12" mmsport="8080" type="mms" /> - <apn carrier="net.korek.com" mcc="418" mnc="40" apn="net.korek.com" user="korek" password="korek" type="default,supl" /> - <apn carrier="Korek" mcc="418" mnc="40" apn="internet.korek.com" type="default,supl" /> - <apn carrier="Korek GPRS" mcc="418" mnc="40" apn="net.korek.com" user="korek" password="korek" type="default,supl" /> - <apn carrier="Korek MMS" mcc="418" mnc="40" apn="mms.korek.com" user="korek" password="korek" mmsc="http://mms.korektel.com/mms/wapenc" mmsproxy="192.168.18.187" mmsport="8080" type="mms" /> - <apn carrier="Mobitel IQ" mcc="418" mnc="45" apn="default" type="default,supl" /> - <apn carrier="Itisaluna" mcc="418" mnc="62" apn="default" type="default,supl" /> - <apn carrier="Newroz" mcc="418" mnc="66" apn="Newroz" user="reber" password="reber" type="default,supl" /> - <apn carrier="Omnnea" mcc="418" mnc="92" apn="default" type="default,supl" /> - <apn carrier="MI" mcc="419" mnc="02" apn="pps" user="pps" password="pps" type="default,supl" /> - <apn carrier="MTC Vodafone KW" mcc="419" mnc="02" apn="apn01" type="default,supl" /> - <apn carrier="MTC Vodafone KW MMS" mcc="419" mnc="02" apn="mms" user="annyway" password="online" mmsc="http://176.000.000.021" mmsproxy="176.0.0.65" mmsport="8080" type="mms" /> - <apn carrier="Zain KW" mcc="419" mnc="02" apn="pps" user="pps" password="pps" type="default,supl" /> - <apn carrier="Zain KW MMS" mcc="419" mnc="02" apn="pps" user="mms" password="mms" mmsc="http://mms.zain" mmsproxy="176.0.0.65" mmsport="8080" type="mms" /> - <apn carrier="Wataniya Internet" mcc="419" mnc="03" apn="action.wataniya.com" type="*" /> - <apn carrier="wataniya" mcc="419" mnc="03" apn="action.wataniya.com" type="default,supl" /> - <apn carrier="wataniya MMS" mcc="419" mnc="03" apn="mms.wataniya.com" mmsc="http://action.wataniya.com" mmsproxy="194.126.053.064" mmsport="8080" type="mms" /> - <apn carrier="Viva KW" mcc="419" mnc="04" apn="viva" type="default,supl" /> - <apn carrier="Viva KW MMS" mcc="419" mnc="04" apn="viva" mmsc="http://172.16.128.80:38090/was" mmsproxy="172.16.128.228" mmsport="8080" type="mms" /> - <apn carrier="AL JA WAL" mcc="420" mnc="01" apn="jawalnet.com.sa" type="default,supl" /> - <apn carrier="AL JA WAL MMS" mcc="420" mnc="01" apn="mms.net.sa" mmsc="http://mms.net.sa:8002" mmsproxy="10.1.1.1" mmsport="9201" type="mms" /> - <apn carrier="Mobily MMS" mcc="420" mnc="03" apn="mms1" mmsc="http://10.3.3.133:9090/was" mmsproxy="10.3.2.133" mmsport="9201" type="mms" /> - <apn carrier="Mobily" mcc="420" mnc="03" apn="web1" type="default,supl" /> - <apn carrier="ZAIN-WAP" mcc="420" mnc="04" apn="zain" proxy="10.122.200.10" port="8080" type="default,supl" /> - <apn carrier="ZAIN-MMS" mcc="420" mnc="04" apn="zain" mmsproxy="10.122.200.10" mmsport="8080" mmsc="http:// 10.122.200.12:8002" type="mms" /> - <apn carrier="ZAIN-WEB" mcc="420" mnc="04" apn="zain" type="default,supl" /> - <apn carrier="Zain SA" mcc="420" mnc="04" apn="zain" mmsc="http://10.122.200.12:8002" mmsproxy="10.122.200.10" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Softbank(internet)" mcc="420" mnc="20" apn="andglobal.softbank.ne.jp" proxy="" port="" user="andg001softbank" password="pumbbghkpgyysxa" mmsc="http://mms/" mmsproxy="andmms.softbank.ne.jp" mmsport="8080" type="default,mms" /> - <apn carrier="MTN WAP" mcc="421" mnc="02" apn="fast-wap" proxy="192.168.96.100" port="8080" type="default,supl" /> - <apn carrier="MTN NET" mcc="421" mnc="02" apn="fast-internet" type="default,supl" /> - <apn carrier="MTN MMS" mcc="421" mnc="02" apn="fast-mms" proxy="" port="" mmsproxy="192.168.97.1" mmsport="3130" mmsc="http://192.168.97.1/mmsc" type="mms" /> - <apn carrier="Oman Mobile" mcc="422" mnc="02" apn="taif" user="taif" password="taif" type="default,supl" /> - <apn carrier="MMS" mcc="422" mnc="02" apn="mms" proxy="" port="" mmsproxy="192.168.203.35" mmsport="8080" mmsc="http://mmsc.omanmobile.om:10021/mmsc" user="mms" password="mms" type="mms" /> - <apn carrier="omantel wap" mcc="422" mnc="02" apn="wap" proxy="192.168.203.34" port="8080" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Oman Mobile MMS" mcc="422" mnc="02" apn="mms" user="mms" password="mms" mmsc="http://mmsc.omanmobile.com:10021/mmsc" mmsproxy="192.168.203.35" mmsport="9201" type="mms" /> - <apn carrier="Oman Mobile" mcc="422" mnc="02" apn="wap" user="wap" password="wap" type="default,supl" /> - <apn carrier="Nawras" mcc="422" mnc="03" apn="isp.nawras.com.om" user="" password="" type="default,supl" /> - <apn carrier="nawras wap" mcc="422" mnc="03" apn="wap.nawras.com.om" proxy="10.128.240.19" port="8080" mmsc="" user="test" password="test" type="default,supl" /> - <apn carrier="nawras mms" mcc="422" mnc="03" apn="mms.nawras.com.om" proxy="" port="" mmsproxy="10.128.240.19" mmsport="8080" mmsc="http://10.128.240.16/servlets/mms" user="test" password="test" type="mms" /> - <apn carrier="Nawras" mcc="422" mnc="03" apn="isp.nawras.com.om" user="test" password="test" type="default,supl" /> - <apn carrier="Nawras MMS" mcc="422" mnc="03" apn="mms.nawras.com.om" user="test" password="test" proxy="10.128.240.19" port="8080" mmsc="http://10.128.240.16/servlets/mms" mmsproxy="10.128.240.19" mmsport="8080" type="mms" /> - <apn carrier="Etisalat internet" mcc="424" mnc="02" apn="etisalat.ae" user="" password="" type="default,supl" /> - <apn carrier="Etisalat MMS" mcc="424" mnc="02" apn="etisalat" proxy="" port="" mmsproxy="10.12.0.32" mmsport="8080" mmsc="http://mms/servlets/mms" user="" password="" authtype="1" type="mms" /> - <apn carrier="Etisalat WAP" mcc="424" mnc="02" apn="etisalat" proxy="10.12.0.32" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Etisalat UAE" mcc="424" mnc="02" apn="etisalat.ae" type="default,supl" authtype="1" /> - <apn carrier="Etisalat UAE MMS" mcc="424" mnc="02" apn="mms" user="mms" password="mms" mmsc="http://mms/servlets/mms" mmsproxy="10.12.0.32" mmsport="8080" type="mms" authtype="1" /> - <apn carrier="Du internet" mcc="424" mnc="03" apn="du" user="" password="" type="default,supl" /> - <apn carrier="Du MMS" mcc="424" mnc="03" apn="du" proxy="" port="" mmsproxy="10.19.18.4" mmsport="8080" mmsc="http://mms.du.ae:8002" user="" password="" authtype="1" type="mms" /> - <apn carrier="Du WAP" mcc="424" mnc="03" apn="du" proxy="10.19.18.4" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="du" mcc="424" mnc="03" apn="du" mmsc="http://mms.du.ae" mmsproxy="10.19.18.4" mmsport="9201" type="default,supl,mms" /> - <apn carrier="3G Portal" mcc="425" mnc="01" apn="uwap.orange.co.il" mmsproxy="192.118.11.55" mmsport="8080" mmsc="http://192.168.220.15/servlets/mms" type="default,mms" /> - <apn carrier="3G Portal" mcc="425" mnc="01" apn="uwap.orange.co.il" port="8080" type="default,supl" /> - <apn carrier="MMS 3G" mcc="425" mnc="01" apn="uwap.orange.co.il" mmsc="http://192.168.220.15/servlets/mms" mmsport="8080" type="mms" /> - <apn carrier="Internet 3G" mcc="425" mnc="01" apn="modem.orange.net.il" type="default,supl" /> - <apn carrier="Orange IL" mcc="425" mnc="01" apn="internet" proxy="" port="" user="orange" password="orange" mmsc="" type="default,supl" /> - <apn carrier="Orange IL MMS" mcc="425" mnc="01" apn="wap.orange.co.il" proxy="" port="" user="" password="" mmsc="http://192.168.220.15/servlets/mms" mmsproxy="" mmsport="8080" type="mms" /> - <apn carrier="Vodafone MT" mcc="425" mnc="01" apn="Internet" proxy="" port="" user="" password="Internet" mmsc="" type="default,supl" /> - <apn carrier="Cellcom 3G" mcc="425" mnc="02" apn="internetg" type="default,supl" /> - <apn carrier="Cellcom MMS" mcc="425" mnc="02" apn="MMS" mmsproxy="172.31.29.38" mmsport="8080" mmsc="http://mms.cellcom.co.il" type="mms" /> - <apn carrier="CellCOM" mcc="425" mnc="02" apn="sphone" type="default,supl" /> - <apn carrier="CellCOM MMS" mcc="425" mnc="02" apn="mms" user="" password="" mmsc="http://mms.cellcom.co.il" mmsproxy="172.31.29.38" mmsport="8080" type="mms" /> - <apn carrier="Sphone Pelephone" mcc="425" mnc="03" apn="sphone.pelephone.net.il" user="pcl@3g" password="pcl" type="default,supl" /> - <apn carrier="Multimedia Pelephone" mcc="425" mnc="03" apn="mms.pelephone.net.il" user="pcl@3g" password="pcl" mmsproxy="10.170.252.104" mmsport="9093" mmsc="http://mmsu.pelephone.net.il/" type="mms" /> - <apn carrier="Pelephone" mcc="425" mnc="03" apn="internet.pelephone.net.il" user="pcl@3g" password="pcl" type="default,supl" /> - <apn carrier="Pelephone MMS" mcc="425" mnc="03" apn="mms.pelephone.net.il" user="pcl@3g" password="pcl" server="pelephone" mmsc="http://mmsu.pelephone.net.il" mmsproxy="10.170.9.54" mmsport="9093" type="mms" /> - <apn carrier="Rami Levy" mcc="425" mnc="03" apn="internet.rl" user="rl@3g" password="rl" type="default,supl" /> - <apn carrier="Rami Levey MMS" mcc="425" mnc="03" apn="internet.rl" user="rl@3g" password="rl" server="pelephone" mmsc="http://mmsu.pelephone.net.il" mmsproxy="10.170.9.54" mmsport="9093" type="mms" /> - <apn carrier="Pelephone Internet Static" mcc="425" mnc="03" apn="org.pelephone.net.il" user="pcl@rsingle" password="pcl" type="default,supl" /> - <apn carrier="Pelephone" mcc="425" mnc="03" apn="internet.pelephone.net.il" proxy="" port="" user="pcl@3g" password="pcl" mmsc="" type="default,supl" /> - <apn carrier="Pelephone MMS" mcc="425" mnc="03" apn="mms.pelephone.net.il" proxy="" port="" user="pcl@3g" password="pcl" server="pelephone" mmsc="http://mmsu.pelephone.net.il" mmsproxy="10.170.9.54" mmsport="9093" type="mms" /> - <apn carrier="Jawwal Internet" mcc="425" mnc="05" apn="internet" type="default,supl" /> - <apn carrier="Jawwal WAP" mcc="425" mnc="05" apn="wap" proxy="213.244.118.129" port="8080" type="default,supl" /> - <apn carrier="Jawwal MMS" mcc="425" mnc="05" apn="mms" mmsc="http://mms.jawwal.ps/servlets/mms" mmsproxy="213.244.118.129" mmsport="8080" type="mms" /> - <apn carrier="Hot Mobile" mcc="425" mnc="07" apn="net.hotm" type="default,supl" /> - <apn carrier="Hot Mobile MMS" mcc="425" mnc="07" apn="mms.hotm" mmsc="http://mms.hotmobile.co.il" mmsport="80" type="mms" /> - <apn carrier="Golan Telecom" mcc="425" mnc="08" apn="internet.golantelecom.net.il" authtype="0" type="default,supl" /> - <apn carrier="Golan Telecom MMS" mcc="425" mnc="08" apn="mms.golantelecom.net.il" mmsc="http://mmsc.golantelecom.co.il" mmsproxy="10.224.228.81" mmsport="80" authtype="0" type="mms" /> - <apn carrier="YouPhone 3G" mcc="425" mnc="14" apn="data.youphone.co.il" mmsc="http://192.168.220.15/servlets/mms" mmsport="80" type="default,supl,mms" /> - <apn carrier="Batelco Internet" mcc="426" mnc="01" apn="internet.batelco.com" type="default,supl" /> - <apn carrier="Batelco WAP" mcc="426" mnc="01" apn="wap.batelco.com" user="wap" password="wap" authtype="0" proxy="192.168.1.2" port="80" type="default,supl" /> - <apn carrier="Batelco MMS" mcc="426" mnc="01" apn="mms.batelco.com" user="mms" password="mms" authtype="0" mmsc="http://192.168.36.10/servlets/mms" mmsproxy="192.168.1.2" mmsport="80" type="mms" /> - <apn carrier="Zain BH WAP" mcc="426" mnc="02" apn="wap" user="wap" password="wap" authtype="0" proxy="172.18.85.33" port="80" type="default,supl" /> - <apn carrier="Zain BH Internet" mcc="426" mnc="02" apn="internet" user="internet" password="internet" authtype="0" type="default,supl" /> - <apn carrier="Zain BH MMS" mcc="426" mnc="02" apn="mms" user="mms" password="mms" authtype="0" mmsc="http://172.18.83.129:80/" mmsproxy="172.18.85.34" mmsport="80" type="mms" /> - <apn carrier="MTC Vodafone BH" mcc="426" mnc="02" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="MTC Vodafone BH MMS" mcc="426" mnc="02" apn="mms" user="mms" password="mms" mmsc="http://172.18.83.129" mmsproxy="172.18.85.34" mmsport="9201" type="mms" /> - <apn carrier="VIVA GPRS" mcc="426" mnc="04" apn="viva.bh" type="default,supl" /> - <apn carrier="VIVA WAP" mcc="426" mnc="04" apn="vivawap.bh" proxy="172.18.142.36" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="VIVA MMS" mcc="426" mnc="04" apn="vivawap.bh" proxy="" port="" mmsproxy="172.18.142.36" mmsport="8080" mmsc="http://mms.viva.com.bh:38090 " user="" password="" type="mms" /> - <apn carrier="Viva BH" mcc="426" mnc="04" apn="viva.bh" type="default,supl" /> - <apn carrier="Viva BH MMS" mcc="426" mnc="04" apn="vivawap.bh" mmsc="http://mms.viva.com.bh:38090" mmsproxy="172.18.142.36" mmsport="8080" type="mms" /> - <apn carrier="Qtel gprs" mcc="427" mnc="01" apn="gprs.qtel" proxy="10.23.8.3" port="8080" type="default,supl" /> - <apn carrier="Qtel mms" apn="mms.qtel" mmsc="http://mmsr.qtelmms.qa" mmsproxy="10.23.8.3" mmsport="8080" mcc="427" mnc="01" type="mms" /> - <apn carrier="Q-tel MMS" mcc="427" mnc="01" apn="mms.qtel" user="mms" password="gprs" mmsc="http://mmsr.qtelmma.qa" mmsproxy="10.23.8.3" mmsport="9201" type="mms" /> - <apn carrier="Q-tel" mcc="427" mnc="01" apn="web.qtel" user="gprs" password="gprs" type="default,supl" /> - <apn carrier="VFQ MMS" mcc="427" mnc="02" apn="vodafone.com.qa" proxy="10.101.97.102" port="80" mmsc="http://mms.vodafone.com.qa/mmsc" mmsproxy="10.101.97.102" mmsport="80" authtype="1" type="*" /> - <apn carrier="VFQ Internet" mcc="427" mnc="02" apn="web.vodafone.com.qa" authtype="1" type="default,supl" /> - <apn carrier="WAP" mcc="427" mnc="02" apn="vodafone.com.qa" proxy="10.101.97.102" port="80" type="default,supl" /> - <apn carrier="Vodafone QA MMS" mcc="427" mnc="02" apn="vodafone.com.qa" mmsc="http://mms.vodafone.com.qa/mmsc" mmsproxy="10.101.97.102" mmsport="80" type="mms" /> - <apn carrier="Vodafone QA" mcc="427" mnc="02" apn="web.vodafone.com.qa" type="default,supl" /> - <apn carrier="GPRS APN" mcc="429" mnc="01" apn="ntwap" proxy="192.80.7.133" port="8000" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="WEB" mcc="429" mnc="01" apn="ntnet" user="" password="" type="default,supl" /> - <apn carrier="MMS" mcc="429" mnc="01" apn="ntmms" proxy="" port="" mmsproxy="192.80.7.133" mmsport="8000" mmsc="http://192.80.11.180" user="" password="" type="mms" /> - <apn carrier="Nepal Telecom Internet" mcc="429" mnc="01" apn="ntnet" type="default,supl" /> - <apn carrier="Nepal Telecom MMS" mcc="429" mnc="01" apn="ntmms" mmsc="http://192.80.11.180" mmsproxy="192.80.7.133" mmsport="8000" type="mms" /> - <apn carrier="WEB" mcc="429" mnc="02" apn="web" proxy="192.168.19.15" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="MMS" mcc="429" mnc="02" apn="mms" proxy="" port="" mmsproxy="192.168.19.15" mmsport="8080" mmsc="http://192.168.19.15" user="" password="" type="mms" /> - <apn carrier="Nepal Telecom WAP" mcc="429" mnc="02" apn="ntwap" proxy="192.80.7.133" port="8000" type="default,supl" /> - <apn carrier="Ncell Internet" mcc="429" mnc="02" apn="web" type="default,supl" /> - <apn carrier="Ncell MMS" mcc="429" mnc="02" apn="mms" mmsc="http://192.168.19.15" mmsproxy="192.168.19.15" mmsport="8080" type="mms" /> - <apn carrier="Ncell WAP" mcc="429" mnc="02" apn="web" proxy="192.168.19.15" port="8080" type="default,supl" /> - <apn carrier="Rightel" mcc="432" mnc="20" apn="rightel" type="default,supl" /> - <apn carrier="Rightel MMS" mcc="432" mnc="20" apn="RighTel-WAP" mmsc="http://10.200.40.55:38090/was" mmsproxy="10.200.39.10" mmsport="8080" type="mms" /> - <apn carrier="IR-MCI" mcc="432" mnc="11" apn="mcinet" type="default,supl" /> - <apn carrier="IR-MCI MMS" mcc="432" mnc="20" apn="mcinet" mmsc="http://192.168.193.134:38090/was" mmsproxy="192.168.194.73" mmsport="8080" type="mms" /> - <apn carrier="Irancell" mcc="432" mnc="35" apn="irancell" type="default,supl" /> - <apn carrier="Irancell MMS" mcc="432" mnc="35" apn="irancell" mmsc="http://mms:8002" mmsproxy="10.131.26.138" mmsport="8080" type="mms" /> - <apn carrier="Beeline UZ" mcc="434" mnc="04" apn="internet.beeline.uz" user="beeline" password="beeline" type="default,supl" /> - <apn carrier="Beeline UZ MMS" mcc="434" mnc="04" apn="mms.beeline.uz" user="beeline" password="beeline" mmsc="http://mms" mmsproxy="172.30.30.166" mmsport="8080" type="mms" /> - <apn carrier="Ucell Internet" mcc="434" mnc="05" apn="internet" proxy="10.64.164.10" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Ucell MMS" mcc="434" mnc="05" apn="mms" proxy="" port="" mmsproxy="10.64.164.10" mmsport="8080" mmsc="http://mmsc:8002/" user="" password="" type="mms" /> - <apn carrier="Perfectum" mcc="434" mnc="06" apn="default" user="perfectum@perfectum.com" password="a" type="default,supl" /> - <apn carrier="MTS Internet" mcc="434" mnc="07" apn="net.mts.uz" user="mts" password="mts" authtype="1" type="default,supl" /> - <apn carrier="MTS MMS" mcc="434" mnc="07" apn="mms.mts.uz" proxy="" port="" mmsproxy="10.10.0.10" mmsport="8080" mmsc="http://mmsc/was" user="mts" password="mts" authtype="1" type="mms" /> - <apn carrier="em.std" mcc="440" mnc="00" apn="em.std" user="em" password="em" type="default,supl" bearer="14"/> - <apn carrier="@nifty do LTE" mcc="440" mnc="10" apn="lte.fenics.jp" user="nifty@lte.nifty.com" password="nifty" authtype="3" type="default,supl" /> - <apn carrier="AsahiNet 3G" mcc="440" mnc="10" apn="3g.mobac.net" user="d@w3.asahinet.jp" password="0000" authtype="3" type="default,supl" /> - <apn carrier="AsahiNet 3G 128K" mcc="440" mnc="10" apn="3g.mobac.net" user="d@x3.asahinet.jp" password="0000" authtype="3" type="default,supl" /> - <apn carrier="AsahiNet LTE" mcc="440" mnc="10" apn="lte.mobac.net" user="d@w.asahinet.jp" password="0000" authtype="3" type="default,supl" /> - <apn carrier="AsahiNet LTE 128K" mcc="440" mnc="10" apn="lte.mobac.net" user="d@x.asahinet.jp" password="0000" authtype="3" type="default,supl" /> - <apn carrier="BB.excite" mcc="440" mnc="10" apn="vmobile.jp" user="bb@excite.co.jp" password="excite" authtype="3" type="default,supl" /> - <apn carrier="BIGLOBE" mcc="440" mnc="10" apn="biglobe.jp" user="user" password="0000" authtype="2" type="default,supl" /> - <apn carrier="DMM mobile" mcc="440" mnc="10" apn="dmm.com" user="dmm@dmm.com" password="dmm" authtype="3" type="default,supl" /> - <apn carrier="DMM mobile" mcc="440" mnc="10" apn="vmobile.jp" user="dmm@dmm.com" password="dmm" authtype="3" type="default,supl" /> - <apn carrier="DTI" mcc="440" mnc="10" apn="dream.jp" user="user@dream.jp" password="dti" authtype="2" type="default,supl" /> - <apn carrier="FREETEL" mcc="440" mnc="10" apn="freetel.link" user="freetel@freetel.link" password="freetel" authtype="3" type="default,supl" /> - <apn carrier="IIJmio/BIC SIM" mcc="440" mnc="10" apn="iijmio.jp" user="mio@iij" password="iij" authtype="3" type="default,supl" /> - <apn carrier="MosimosiiX" mcc="440" mnc="10" apn="vdm.jp" user="talk@vdm" password="1010" authtype="3" type="default,supl" /> - <apn carrier="NifMo 3G" mcc="440" mnc="10" apn="mdb.nifty.com" user="mdb@nifty" password="nifty" authtype="3" type="default,supl" /> - <apn carrier="NifMo LTE" mcc="440" mnc="10" apn="mda.nifty.com" user="mda@nifty" password="nifty" authtype="3" type="default,supl" /> - <apn carrier="OCN 3G" mcc="440" mnc="10" apn="3g-d-2.ocn.ne.jp" user="mobileid@ocn" password="mobile" authtype="2" type="default,supl" /> - <apn carrier="OCN LTE" mcc="440" mnc="10" apn="lte-d.ocn.ne.jp" user="mobileid@ocn" password="mobile" authtype="2" type="default,supl" /> - <apn carrier="So-net" mcc="440" mnc="10" apn="so-net.jp" user="nuro" password="nuro" authtype="2" type="default,supl" /> - <apn carrier="U-mobile" mcc="440" mnc="10" apn="umobile.jp" user="umobile@umobile.jp" password="umobile" authtype="3" type="default,supl" /> - <apn carrier="U-mobile Max" mcc="440" mnc="10" apn="dm.jplat.net" user="umobile@umobile.jp" password="umobile" authtype="3" type="default,supl" /> - <apn carrier="U-mobile Premium" mcc="440" mnc="10" apn="umob.jp" user="umob" password="umob" authtype="3" type="default,supl" /> - <apn carrier="Wi-Ho!" mcc="440" mnc="10" apn="bbnw.jp" user="user" password="0000" authtype="3" type="default,supl" /> - <apn carrier="WirelessGate 3G" mcc="440" mnc="10" apn="foma01.wi-gate.net" user="wg@sim" password="wg" authtype="3" type="default,supl" /> - <apn carrier="WirelessGate LTE" mcc="440" mnc="10" apn="xi01.wi-gate.net" user="wg@sim" password="wg" authtype="3" type="default,supl" /> - <apn carrier="Wonderlink F" mcc="440" mnc="10" apn="lte.fenics.jp" user="wl@s.lte.fenics.jp" password="p123456w" authtype="1" type="default,supl" /> - <apn carrier="Wonderlink I" mcc="440" mnc="10" apn="vmobile.jp" user="wl@wlte.net" password="p123456w" authtype="2" type="default,supl" /> - <apn carrier="b-mobile 4g" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@4g" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile aeon" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@aeon" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile am" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@am" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile fr" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@fr" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile spd" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@spd" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile u300" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@u300" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile xsim" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@xsim" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="b-mobile zsim" mcc="440" mnc="10" apn="bmobile.ne.jp" user="bmobile@zsim" password="bmobile" authtype="3" type="default,supl" /> - <apn carrier="hi-ho" mcc="440" mnc="10" apn="vmobile.jp" user="lte@hi-ho" password="hi-ho" authtype="3" type="default,supl" /> - <apn carrier="mineo D" mcc="440" mnc="10" apn="mineo-d.jp" user="mineo@k-opti.com" password="mineo" authtype="2" type="default,supl" /> - <apn carrier="mopera U" mcc="440" mnc="10" apn="mopera.net" type="default,supl" /> - <apn carrier="mopera U Bizho" mcc="440" mnc="10" apn="mpr2.bizho.net" type="default,supl" /> - <apn carrier="mopera U FF" mcc="440" mnc="10" apn="open.mopera.net" type="default,supl" /> - <apn carrier="mopera U Flat" mcc="440" mnc="10" apn="mopera.flat.foma.ne.jp" type="default,supl" /> - <apn carrier="spモード" mcc="440" mnc="10" apn="spmode.ne.jp" type="default,supl" /> - <apn carrier="楽天ブロードバンドデータSIM エントリー2!" mcc="440" mnc="10" apn="mmtmobile.jp" user="mobile@rakutenbb.jp" password="rakutenbb" authtype="3" type="default,supl" /> - <apn carrier="楽天モバイル" mcc="440" mnc="10" apn="rmobile.jp" user="rm" password="0000" authtype="3" type="default,supl" /> - <apn carrier="楽天モバイル" mcc="440" mnc="10" apn="vdm.jp" user="rakuten@vdm" password="vrkt" authtype="3" type="default,supl" /> - <apn carrier="IMS" mcc="440" mnc="10" apn="ims" type="ims" protocol="IPV6" /> - <apn carrier="Y!mobile" mcc="440" mnc="20" apn="plus.acs.jp" user="ym" password="ym" mmsc="http://mms-s" mmsproxy="andmms.plusacs.ne.jp" mmsport="8080" authtype="2" type="default,supl,mms" /> - <apn carrier="andoworld" mcc="440" mnc="20" apn="andoworld.softbank.ne.jp" mmsc="http://mms/" mmsproxy="andmms.softbank.ne.jp" mmsport="8080" authtype="2" type="default,supl,mms" /> - <apn carrier="fourgsmartphone" mcc="440" mnc="20" apn="fourgsmartphone" user="" password="" mmsc="http://mms/" mmsproxy="andmms.softbank.ne.jp" mmsport="8080" authtype="2" type="default,supl,mms" /> - <apn carrier="jpspir" mcc="440" mnc="20" apn="jpspir" user="sirobit" password="amstkoi" mmsc="http://mms/" mmsproxy="smilemms.softbank.ne.jp" mmsport="8080" type="default,supl,mms" /> - <apn carrier="open" mcc="440" mnc="20" apn="open.softbank.ne.jp" user="opensoftbank" password="ebMNuX1FIHg9d3DA" mmsc="http://mms/" mmsproxy="mmsopen.softbank.ne.jp" mmsport="8080" type="default,supl,mms" /> - <apn carrier="plus.softbank" mcc="440" mnc="20" apn="plus.softbank" user="plus" password="softbank" mmsc="http://mms/" mmsproxy="andmms.softbank.ne.jp" mmsport="8080" authtype="3" type="default,supl,mms" /> - <apn carrier="plus.4g" mcc="440" mnc="20" apn="plus.4g" user="plus" password="4g" mmsc="http://mms/" mmsproxy="andmms.softbank.ne.jp" mmsport="8080" authtype="3" type="default,supl,mms" /> - <apn carrier="sbm" mcc="440" mnc="20" apn="sbm" user="data" password="softbank" type="default,supl" /> - <apn carrier="sbm4glte" mcc="440" mnc="20" apn="sbm4glte" user="data" password="softbank" type="default,supl" /> - <apn carrier="smile.world" mcc="440" mnc="20" apn="smile.world" user="dna1trop" password="so2t3k3m2a" mmsc="http://mms/" mmsproxy="smilemms.softbank.ne.jp" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="IMS" mcc="440" mnc="20" apn="IMS" type="ims" protocol="IPV6" /> - <apn carrier="U-mobile Super" mcc="440" mnc="20" apn="plus.acs.jp" user="ym" password="ym" authtype="2" type="default,supl" /> - <apn carrier="LTE NET" mcc="440" mnc="50" apn="uno.au-net.ne.jp" user="685840734641020@uno.au-net.ne.jp" password="KpyrR6BP" authtype="2" type="default,mms,supl,hipri" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="LTE NET for DATA" mcc="440" mnc="50" apn="au.au-net.ne.jp" user="user@au.au-net.ne.jp" password="au" authtype="2" type="default,mms,supl,hipri" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="UQ mobile" mcc="440" mnc="50" apn="uqmobile.jp" user="uq@uqmobile.jp" password="uq" mmsc="http://mms.ezweb.ne.jp/MMS" mmsport="80" authtype="2" type="default,supl,hipri,dun" /> - <apn carrier="mineo A" mcc="440" mnc="50" apn="mineo.jp" user="mineo@k-opti.com" password="mineo" authtype="2" type="default,supl,hipri" /> - <apn carrier="SKT IA" mcc="450" mnc="05" apn="" type="ia" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="SKT IMS" mcc="450" mnc="05" apn="IMS" type="ims" protocol="IPV4V6" /> - <apn carrier="SKT LTE INTERNET" mcc="450" mnc="05" apn="lte.sktelecom.com" type="default,mms,supl,fota,cbs" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" protocol="IPV4V6" /> - <apn carrier="SKT 3G INTERNET" mcc="450" mnc="05" apn="web.sktelecom.com" type="default,mms,supl,fota,cbs" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="SKT LTE Roaming" mcc="450" mnc="05" apn="lte-roaming.sktelecom.com" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="SKT 3G Roaming" mcc="450" mnc="05" apn="roaming.sktelecom.com" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="LG U+ IA" mcc="450" mnc="06" apn="" type="ia" protocol="IPV4V6" roaming_protocol="IP" /> - <apn carrier="LG U+ IMS" mcc="450" mnc="06" apn="IMS" type="ims" mmsc="http://omammsc.uplus.co.kr:9084" protocol="IPV4V6" /> - <apn carrier="LG U+" mcc="450" mnc="06" apn="internet.lguplus.co.kr" type="default,mms,supl,fota,cbs" mmsc="http://omammsc.uplus.co.kr:9084" protocol="IPV4V6" /> - <apn carrier="LG U+ LTE Roaming" mcc="450" mnc="06" apn="lte-roaming.lguplus.co.kr" mmsc="http://omammsc.uplus.co.kr:9084" authtype="0" /> - <apn carrier="LG U+ Roaming" mcc="450" mnc="06" apn="wroaming.lguplus.co.kr" mmsc="http://omammsc.uplus.co.kr:9084" authtype="0" /> - <apn carrier="KT IA" mcc="450" mnc="08" apn="" type="ia" protocol="IPV4V6" /> - <apn carrier="KT IMS" mcc="450" mnc="08" apn="IMS" type="ims" protocol="IPV4V6" /> - <apn carrier="KT" mcc="450" mnc="08" apn="lte.ktfwing.com" type="default,mms,supl,fota,cbs" mmsc="http://mmsc.ktfwing.com:9082" port="80" server="*" /> - <apn carrier="SKT 3G INTERNET" mcc="450" mnc="11" apn="web.sktelecom.com" type="default,mms,supl,fota,cbs" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="SKT LTE Roaming" mcc="450" mnc="11" apn="lte-roaming.sktelecom.com" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="SKT 3G Roaming" mcc="450" mnc="11" apn="roaming.sktelecom.com" mmsc="http://omms.nate.com:9082/oma_mms" mmsproxy="smart.nate.com" mmsport="9093" server="*" /> - <apn carrier="Mobifone 3G" mcc="452" mnc="01" apn="m-wap" user="mms" password="mms" authtype="1" type="default,supl" /> - <apn carrier="Mobifone MMS" mcc="452" mnc="01" apn="m-i090" proxy="" port="" mmsproxy="203.162.21.114" mmsport="8080" mmsc="http://203.162.21.114/mmsc" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="Vinaphone MMS" mcc="452" mnc="02" apn="m3-mms" user="mms" password="mms" mmsc="http://mms.vinaphone.vnn.vn:8002" mmsproxy="10.1.10.46" mmsport="9201" type="mms" /> - <apn carrier="Vinaphone 3G" mcc="452" mnc="02" apn="m3-world" user="mms" password="mms" type="default,supl" /> - <apn carrier="Viettel 3G" mcc="452" mnc="04" apn="v-internet" type="default,supl" /> - <apn carrier="Viettel MMS" mcc="452" mnc="04" apn="v-mms" mmsc="http://mms.viettelmobile.com.vn/mms" mmsproxy="192.168.233.10" mmsport="9201" type="mms" /> - <apn carrier="Vietnamobile 3G" mcc="452" mnc="05" apn="internet" type="default,supl" /> - <apn carrier="Vietnamobile MMS" mcc="452" mnc="05" apn="mms" proxy="" port="" mmsproxy="10.10.128.44" mmsport="8080" mmsc="http://10.10.128.58/servlets/mms" type="mms" /> - <apn carrier="BeeLine VN 3G" mcc="452" mnc="07" apn="internet" type="default,supl" /> - <apn carrier="Beeline VN MMS" mcc="452" mnc="07" apn="MMS" user="mms" password="mms" mmsc="http://mms" mmsproxy="10.16.70.199" mmsport="8080" type="mms" /> - <apn carrier="csl" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="csl Tethering" mcc="454" mnc="00" apn="lte.internet" type="dun" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="csl" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="csl Tethering" mcc="454" mnc="00" apn="lte.internet" type="dun" /> - <apn carrier="csl prepaid" mcc="454" mnc="00" apn="cslp1" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02020001" mvno_type="gid" /> - <apn carrier="csl prepaid" mcc="454" mnc="00" apn="cslp1" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02030001" mvno_type="gid" /> - <apn carrier="csl prepaid" mcc="454" mnc="00" apn="cslp3" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02020002" mvno_type="gid" /> - <apn carrier="Global Call" mcc="454" mnc="00" apn="globalcall" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01040000" mvno_type="gid" /> - <apn carrier="1O1O" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="SUN Mobile" mcc="454" mnc="00" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" authtype="3" type="default,mms" /> - <apn carrier="SUN Mobile" mcc="454" mnc="00" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" type="default,mms" authtype="3" mvno_match_data="01030000" mvno_type="gid" /> - <apn carrier="1O1O" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="00" apn="lte.internet" type="dun" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="00" apn="lte.internet" type="dun" /> - <apn carrier="1O1O" mcc="454" mnc="00" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="00" apn="lte.internet" type="dun" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="SUN Mobile" mcc="454" mnc="00" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" authtype="3" type="default,mms" /> - <apn carrier="SUN Mobile" mcc="454" mnc="00" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" type="default,mms" authtype="3" mvno_match_data="01030000" mvno_type="gid" /> - <apn carrier="New World internet" mcc="454" mnc="01" apn="internet" type="default" authtype="1" /> - <apn carrier="New World MMS" mcc="454" mnc="01" apn="MMS" mmsc="http://mmsc.nwmobility.com:8002" mmsproxy="192.168.111.1" mmsport="8080" type="mms" authtype="1" /> - <apn carrier="New World" mcc="454" mnc="01" apn="wap" user="wwm" password="wwm" proxy="192.168.111.1" port="8080" type="default" authtype="1" /> - <apn carrier="csl" mcc="454" mnc="02" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="csl Tethering" mcc="454" mnc="02" apn="lte.internet" type="dun" /> - <apn carrier="csl Tethering" mcc="454" mnc="02" apn="lte.internet" type="dun" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="csl" mcc="454" mnc="02" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="1O1O" mcc="454" mnc="02" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="1O1O" mcc="454" mnc="02" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="02" apn="lte.internet" type="dun" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="02" apn="lte.internet" type="dun" /> - <apn carrier="SUN Mobile" mcc="454" mnc="02" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" authtype="3" type="default,mms" /> - <apn carrier="SUN Mobile" mcc="454" mnc="02" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" type="default,mms" authtype="3" mvno_match_data="01030000" mvno_type="gid" /> - <apn carrier="Global Call" mcc="454" mnc="02" apn="globalcall" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01040000" mvno_type="gid" /> - <apn carrier="3" mcc="454" mnc="03" apn="mobile.three.com.hk" mmsc="http://mms.um.three.com.hk:10021/mmsc" mmsproxy="172.20.97.116" mmsport="8799" authtype="1" type="default,mms,supl,dun" /> - <apn carrier="3 LTE" mcc="454" mnc="03" apn="mobile.lte.three.com.hk" mmsc="http://mms.um.three.com.hk:10021/mmsc" mmsproxy="172.20.97.116" mmsport="8799" authtype="1" type="default,mms" /> - <apn carrier="3 Share" mcc="454" mnc="03" apn="share.lte.three.com.hk" authtype="1" type="dun" /> - <apn carrier="3 (2G) MMS" mcc="454" mnc="04" apn="mms-g.three.com.hk" mmsc="http://10.30.15.51:10021/mmsc" mmsproxy="10.30.15.53" mmsport="8080" type="mms" /> - <apn carrier="3-DB-GPRS" mcc="454" mnc="04" apn="web-g.three.com.hk" proxy="10.30.3.151" port="8080" type="default,supl" /> - <apn carrier="SmarTone" mcc="454" mnc="06" apn="SmarTone" mmsc="http://mms.smartone.com/server" mmsproxy="10.9.9.9" mmsport="8080" authtype="3" type="default,supl,mms" /> - <apn carrier="3gnet" mcc="454" mnc="07" apn="3gnet" type="default,supl" /> - <apn carrier="3gwap" mcc="454" mnc="07" apn="3gwap" proxy="10.0.0.172" port="80" type="default,supl" /> - <apn carrier="Truphone" mcc="454" mnc="08" apn="truphone.com" type="default,dun" /> - <apn carrier="SCT" mcc="454" mnc="09" apn="cmnet" type="default" /> - <apn carrier="csl" mcc="454" mnc="10" apn="hkcsl" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" /> - <apn carrier="csl Tethering" mcc="454" mnc="10" apn="internet" type="dun" /> - <apn carrier="csl prepaid" mcc="454" mnc="10" apn="cslp1" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02020001" mvno_type="gid" /> - <apn carrier="csl prepaid" mcc="454" mnc="10" apn="cslp1" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02030001" mvno_type="gid" /> - <apn carrier="csl prepaid" mcc="454" mnc="10" apn="cslp3" mmsc="http://mms.hkcsl.com:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="02020002" mvno_type="gid" /> - <apn carrier="CMHK" mcc="454" mnc="12" apn="cmhk" mmsc="http://mms.hk.chinamobile.com/mms" type="default,supl,mms" /> - <apn carrier="CMHK" mcc="454" mnc="13" apn="cmhk" mmsc="http://mms.hk.chinamobile.com/mms" type="default,supl,mms" /> - <apn carrier="3-DB-MMS" mcc="454" mnc="14" apn="mms-g.three.com.hk" mmsc="http://10.30.15.51:10021/mmsc" mmsproxy="10.30.15.53" mmsport="8080" type="mms" /> - <apn carrier="3-DB-GPRS" mcc="454" mnc="14" apn="web-g.three.com.hk" proxy="10.30.15.53" port="8080" type="default,supl" /> - <apn carrier="SmarTone HK" mcc="454" mnc="15" apn="SmarTone" mmsc="http://mms.smartone.com/server" mmsproxy="10.9.9.9" mmsport="8080" type="default,supl,mms" /> - <apn carrier="PCCW-HKT" mcc="454" mnc="16" apn="pccw" mmsc="http://3gmms.pccwmobile.com:8080/was" mmsproxy="10.140.14.10" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="PCCW GPRS" mcc="454" mnc="16" apn="pccwdata" proxy="10.131.2.8" port="8080" user="" password="" mmsc="" type="default" /> - <apn carrier="csl" mcc="454" mnc="16" apn="pccw" mmsc="http://mms.hkcsl.com:8080" mmsproxy="10.140.14.10" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="SmarTone HK" mcc="454" mnc="17" apn="SmarTone" mmsc="http://mms.smartone.com/server" mmsproxy="10.9.9.9" mmsport="8080" type="default,supl,mms" /> - <apn carrier="csl" mcc="454" mnc="18" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="csl Tethering" mcc="454" mnc="18" apn="lte.internet" type="dun" /> - <apn carrier="csl" mcc="454" mnc="18" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="csl Tethering" mcc="454" mnc="18" apn="lte.internet" type="dun" mvno_match_data="01020000" mvno_type="gid" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="18" apn="lte.internet" type="dun" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="1O1O" mcc="454" mnc="18" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="1O1O Tethering" mcc="454" mnc="18" apn="lte.internet" type="dun" /> - <apn carrier="1O1O" mcc="454" mnc="18" apn="mobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01010000" mvno_type="gid" /> - <apn carrier="SUN Mobile" mcc="454" mnc="18" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" authtype="3" type="default,mms" /> - <apn carrier="SUN Mobile" mcc="454" mnc="18" apn="SUNMobile" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.61" mmsport="8080" type="default,mms" authtype="3" mvno_match_data="01030000" mvno_type="gid" /> - <apn carrier="Global Call" mcc="454" mnc="18" apn="globalcall" mmsc="http://192.168.58.171:8002" mmsproxy="192.168.59.51" mmsport="8080" type="default,mms,hipri" authtype="3" mvno_match_data="01040000" mvno_type="gid" /> - <apn carrier="PCCW-HKT" mcc="454" mnc="19" apn="pccw" mmsc="http://3gmms.pccwmobile.com:8080/was" mmsproxy="10.140.14.10" mmsport="8080" authtype="1" type="default,supl,mms" /> - <apn carrier="csl" mcc="454" mnc="19" apn="pccw" mmsc="http://mms.hkcsl.com:8080" mmsproxy="10.140.14.10" mmsport="8080" authtype="3" type="default,mms,hipri" /> - <apn carrier="SmarTone Macau" mcc="455" mnc="00" apn="smartgprs" proxy="10.9.9.29" port="8080" user="" password="" mmsc="http://mms.smartone.com.mo/dmog/mo" mmsproxy="10.9.9.29" mmsport="8080" type="default,supl,mms" /> - <apn carrier="SmarTone MMS" mcc="455" mnc="00" apn="smartgprs" proxy="" port="" user="" password="" mmsc="http://mms.smartone.com.mo/dmog/mo" mmsproxy="10.9.9.29" mmsport="9201" type="mms" /> - <apn carrier="SmarTone" mcc="455" mnc="00" apn="smartweb" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="CTM Data" apn="ctm-mobile" proxy="192.168.99.2" port="8080" mmsc="" mcc="455" mnc="01" authtype="3" type="default,supl" /> - <apn carrier="CTM Data (Prepaid)" apn="ctmprepaid" proxy="192.168.99.2" port="8080" mmsc="http://mms.wap.ctm.net:8002" mmsproxy="192.168.99.3" mmsport="8080" mcc="455" mnc="01" authtype="3" type="default,mms" /> - <apn carrier="CTM MMS" mcc="455" mnc="01" apn="ctmmms" proxy="" port="" mmsc="http://mms.wap.ctm.net:8002" mmsproxy="192.168.99.3" mmsport="8080" authtype="3" type="mms" /> - <apn carrier="CTM" mcc="455" mnc="01" apn="ctm-mobile" type="default,supl" /> - <apn carrier="CTM MMS" mcc="455" mnc="01" apn="ctmmms" mmsc="http://mms.wap.ctm.net:8002" mmsproxy="192.168.99.3" mmsport="8080" type="mms" /> - <apn carrier="中国电信NET设置" mcc="455" mnc="02" apn="ctnet" user="ctnet@mycdma.cn" password="vnet.mobi" authtype="3" type="default,supl,dun" /> - <apn carrier="中国电信WAP设置" mcc="455" mnc="02" apn="ctwap" user="ctwap@mycdma.cn" password="vnet.mobi" proxy="10.0.0.200" port="80" mmsproxy="10.0.0.200" mmsport="80" mmsc="http://mmsc.vnet.mobi" authtype="3" type="default,supl,dun,mms" /> - <apn carrier="3MACAU" mcc="455" mnc="03" apn="mobile.three.com.mo" proxy="" port="" user="" password="" mmsc="http://mms.three.com.mo:10021/mmsc" mmsproxy="172.20.80.80" mmsport="8080" authtype="3" type="default,mms" /> - <apn carrier="Hutchison Macau MMS" mcc="455" mnc="03" apn="mms.hutchisonmacau.com" mmsc="http://10.30.15.51:10021/mmsc" mmsproxy="10.30.15.53" mmsport="8080" type="mms" /> - <apn carrier="Hutchison Macau" mcc="455" mnc="03" apn="web-g.three.com.hk" user="hutchison" password="1234" type="default,supl" /> - <apn carrier="CTM" mcc="455" mnc="04" apn="ctm-mobile" proxy="192.168.99.2" port="8080" type="default,supl" /> - <apn carrier="CTM MMS" mcc="455" mnc="04" apn="ctmmms" mmsc="http://mms.wap.ctm.net:8002" mmsproxy="192.168.99.3" mmsport="8080" type="mms" /> - <apn carrier="澳門電信LTE" mcc="455" mnc="07" apn="ctlte" user="" password="" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="澳門電信NET" mcc="455" mnc="07" apn="ctnet" user="" password="" protocol="IPV4V6" roaming_protocol="IPV4V6" /> - <apn carrier="Mobitel KH" mcc="456" mnc="01" apn="postpaid" user="mobitel" password="mobitel" type="default,supl" /> - <apn carrier="Mobitel Cellcard" mcc="456" mnc="01" apn="cellcard" user="mobitel" password="mobitel" type="default,supl" /> - <apn carrier="Mobitel MMS" mcc="456" mnc="01" apn="mms" user="mobitel" password="mobitel" mmsc="http://mms.mobitel.com.kh/mmsc" mmsproxy="203.144.95.98" mmsport="3130" type="mms" /> - <apn carrier="Smart" mcc="456" mnc="02" apn="smart" type="default,supl" /> - <apn carrier="Smart MMS" mcc="456" mnc="02" apn="mms" mmsc="http://mmsc" mmsproxy="10.12.1.142" mmsport="8080" type="mms" /> - <apn carrier="qbmore" mcc="456" mnc="04" apn="WAP" type="default,supl" /> - <apn carrier="qbmore MMS" mcc="456" mnc="04" apn="mms" mmsc="http://mms.qbmore.mobi" mmsproxy="172.16.96.66" mmsport="8080" type="mms" /> - <apn carrier="Star-Cell" mcc="456" mnc="05" apn="internet" type="default,supl" /> - <apn carrier="Metfone GPRS" mcc="456" mnc="08" apn="Metfone" type="default,supl" /> - <apn carrier="Metfone MMS" mcc="456" mnc="08" apn="mms" proxy="" port="" mmsproxy="192.168.23.85" mmsport="8080" mmsc="http://192.168.24.10:38090" user="" password="" type="mms" /> - <apn carrier="Metfone" mcc="456" mnc="08" apn="Metfone" type="default,supl" /> - <apn carrier="beeline GPRS" mcc="456" mnc="09" apn="wap.beeline.com.kh" proxy="10.18.34.135" port="8080" type="default,supl" /> - <apn carrier="beeline MMS" mcc="456" mnc="09" apn="mms.beeline.com.kh" proxy="" port="" mmsproxy="10.18.34.135" mmsport="8080" mmsc="http://mms" type="mms" /> - <apn carrier="Beeline Internet" mcc="456" mnc="09" apn="gprs.beeline.com.kh" type="default,supl" /> - <apn carrier="Beeline MMS" mcc="456" mnc="09" apn="mms.beeline.com.kh" mmsc="http://mms.qbmore.mobi" mmsproxy="10.18.34.135" mmsport="8080" type="mms" /> - <apn carrier="Camshin" mcc="456" mnc="18" apn="Camshin" mmsc="http://172.16.205.10:38090" mmsproxy="172.16.203.85" mmsport="8080" type="default,mms" /> - <apn carrier="中国移动因特网设置" mcc="460" mnc="00" apn="cmnet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国移动WAP设置" mcc="460" mnc="00" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国移动彩信设置" mcc="460" mnc="00" apn="cmwap" proxy="" port="" mmsproxy="10.0.0.172" mmsport="80" mmsc="http://mmsc.monternet.com" user="" password="" authtype="3" type="mms" /> - <apn carrier="中国移动 GPRS (China Mobile)" mcc="460" mnc="00" apn="cmnet" type="default,supl" /> - <apn carrier="中国移动 Wap 网络 (China Mobile)" mcc="460" mnc="00" apn="cmwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国移动彩信 (China Mobile)" mcc="460" mnc="00" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="China Mobile" mcc="460" mnc="00" apn="cmnet" type="default,supl" /> - <apn carrier="China Mobile MMS" mcc="460" mnc="00" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国联通 3g 网络 (China Unicom)" mcc="460" mnc="01" apn="3gnet" type="default,supl" /> - <apn carrier="中国联通 GPRS (China Unicom)" mcc="460" mnc="01" apn="uninet" type="default,supl" /> - <apn carrier="中国联通 Wap 网络 (China Unicom)" mcc="460" mnc="01" apn="3gwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国联通 Wap 网络 (China Unicom)" mcc="460" mnc="01" apn="uniwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国联通 3g 彩信 (China Unicom)" mcc="460" mnc="01" apn="3gwap" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国联通彩信 (China Unicom)" mcc="460" mnc="01" apn="uniwap" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国联通3g因特网设置" mcc="460" mnc="01" apn="3gnet" proxy="" port="" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国联通3gwap设置" mcc="460" mnc="01" apn="3gwap" proxy="10.0.0.172" port="80" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国联通3g彩信设置" mcc="460" mnc="01" apn="3gwap" proxy="" port="" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" user="" password="" authtype="3" type="mms" /> - <apn carrier="China Unicom 3G" mcc="460" mnc="01" apn="3gnet" port="80" type="default,supl" /> - <apn carrier="China Unicom MMS" mcc="460" mnc="01" apn="uniwap" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国移动因特网设置" mcc="460" mnc="02" apn="cmnet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国移动WAP设置" mcc="460" mnc="02" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="中国移动彩信设置" mcc="460" mnc="02" apn="cmwap" proxy="" port="" mmsproxy="10.0.0.172" mmsport="80" mmsc="http://mmsc.monternet.com" user="" password="" authtype="3" type="mms" /> - <apn carrier="中国移动 GPRS (China Mobile)" mcc="460" mnc="02" apn="cmnet" type="default,supl" /> - <apn carrier="中国移动 Wap 网络 (China Mobile)" mcc="460" mnc="02" apn="cmwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国移动彩信 (China Mobile)" mcc="460" mnc="02" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="China Mobile" mcc="460" mnc="02" apn="cmnet" type="default,supl" /> - <apn carrier="China Mobile MMS" mcc="460" mnc="02" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="China Mobile" mcc="460" mnc="02" apn="cmnet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="China Mobile MMS" mcc="460" mnc="02" apn="cmwap" proxy="10.0.0.172" port="80" user="" password="" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国电信互联网设置CTNET" mcc="460" mnc="03" apn="ctnet" proxy="" port="" user="ctnet@mycdma.cn" password="vnet.mobi" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="中国电信WAP设置CTWAP" mcc="460" mnc="03" apn="ctwap" proxy="10.0.0.200" port="80" user="ctwap@mycdma.cn" password="vnet.mobi" mmsc="http://mmsc.vnet.mobi" mmsproxy="10.0.0.200" mmsport="80" authtype="2" type="default,mms,supl" /> - <apn carrier="China Telecom" apn="ctlte" mcc="460" mnc="03" user="" password="" protocol="IPV4V6" roaming_protocol="IPV4V6" type="ia" /> - <apn carrier="中国移动 GPRS (China Mobile)" mcc="460" mnc="07" apn="cmnet" type="default,supl" /> - <apn carrier="中国移动 Wap 网络 (China Mobile)" mcc="460" mnc="07" apn="cmwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国移动彩信 (China Mobile)" mcc="460" mnc="07" apn="cmwap" proxy="10.0.0.172" port="80" mmsc="http://mmsc.monternet.com" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="China-Mobile" mcc="460" mnc="07" apn="cmnet" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="HW-KuiKe" mcc="460" mnc="07" apn="hwmobile" proxy="192.168.111.32" port="8080" mmsproxy="192.168.111.32" mmsport="8080" mmsc="http://192.168.111.12:19090/was" user="" password="" authtype="3" type="" /> - <apn carrier="中国移动 (China Mobile) GPRS" mcc="460" mnc="07" apn="cmnet" type="default,supl" /> - <apn carrier="中国联通 3g 网络 (China Unicom)" mcc="460" mnc="09" apn="3gnet" type="default,net" /> - <apn carrier="中国联通 GPRS (China Unicom)" mcc="460" mnc="09" apn="uninet" type="default,net" /> - <apn carrier="中国联通 Wap 网络 (China Unicom)" mcc="460" mnc="09" apn="3gwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国联通 Wap 网络 (China Unicom)" mcc="460" mnc="09" apn="uniwap" proxy="10.0.0.172" port="80" /> - <apn carrier="中国联通 3g 彩信 (China Unicom)" mcc="460" mnc="09" apn="3gwap" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="中国联通彩信 (China Unicom)" mcc="460" mnc="09" apn="uniwap" mmsc="http://mmsc.myuni.com.cn" mmsproxy="10.0.0.172" mmsport="80" type="mms" /> - <apn carrier="China Unicom 3G" mcc="460" mnc="09" apn="3gnet" port="80" type="default,supl"/> - <apn carrier="China Unicom wap" mcc="460" mnc="09" apn="3gwap" proxy="10.0.0.172" port="80" mmsproxy="10.0.0.172" mmsport="80" mmsc="http://mmsc.myuni.com.cn" type="default, mms" /> - <apn carrier="中国电信互联网设置CTLTE" mcc="460" mnc="11" apn="ctlte" proxy="" port="" user="ctlte@mycdma.cn" password="vnet.mobi" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="中国电信互联网设置CTNET" mcc="460" mnc="11" apn="ctnet" proxy="" port="" user="ctnet@mycdma.cn" password="vnet.mobi" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="中国电信WAP设置CTWAP" mcc="460" mnc="11" apn="ctwap" proxy="10.0.0.200" port="80" user="ctwap@mycdma.cn" password="vnet.mobi" mmsc="http://mmsc.vnet.mobi" mmsproxy="10.0.0.200" mmsport="80" authtype="2" type="default,mms,supl" /> - <apn carrier="China Telecom" apn="ctlte" mcc="460" mnc="11" user="" password="" protocol="IPV4V6" roaming_protocol="IPV4V6" type="ia" /> - <apn carrier="中国电信互联网设置CTNET" mcc="460" mnc="12" apn="ctnet" proxy="" port="" user="ctnet@mycdma.cn" password="vnet.mobi" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="中国电信WAP设置CTWAP" mcc="460" mnc="12" apn="ctwap" proxy="10.0.0.200" port="80" user="ctwap@mycdma.cn" password="vnet.mobi" mmsc="http://mmsc.vnet.mobi" mmsproxy="10.0.0.200" mmsport="80" authtype="2" type="default,mms,supl" /> - <apn carrier="中国电信互联网设置CTNET" mcc="460" mnc="13" apn="ctnet" user="ctnet@mycdma.cn" password="vnet.mobi" authtype="3" type="default,supl,dun" /> - <apn carrier="中国电信WAP设置CTWAP" mcc="460" mnc="13" apn="ctwap" user="ctwap@mycdma.cn" password="vnet.mobi" proxy="10.0.0.200" port="80" mmsproxy="10.0.0.200" mmsport="80" mmsc="http://mmsc.vnet.mobi" authtype="3" type="default,supl,dun,mms" /> - <apn carrier="中国电信互联网设置CTNET" mcc="460" mnc="99" apn="ctnet" proxy="" port="" user="ctnet@mycdma.cn" password="vnet.mobi" mmsc="" authtype="3" type="default,supl" /> - <apn carrier="中国电信WAP设置CTWAP" mcc="460" mnc="99" apn="ctwap" proxy="10.0.0.200" port="80" user="ctwap@mycdma.cn" password="vnet.mobi" mmsc="http://mmsc.vnet.mobi" mmsproxy="10.0.0.200" mmsport="80" authtype="2" type="default,mms,supl" /> - <apn carrier="遠傳網際網路" mcc="466" mnc="01" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="遠傳影音訊息" mcc="466" mnc="01" apn="fetnet01" proxy="" port="" mmsproxy="210.241.199.199" mmsport="9201" mmsc="http://mms" user="" password="" type="mms" /> - <apn carrier="FarEasTone" mcc="466" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="遠傳電信(Far EasTone) (Fetnet01)" mcc="466" mnc="01" apn="fetnet01" proxy="210.241.199.199" port="80" type="default,supl" /> - <apn carrier="FarEasTone MMS" mcc="466" mnc="01" apn="fetnet01" mmsc="http://mms" mmsproxy="210.241.199.199" mmsport="9201" type="mms" /> - <apn carrier="KGT" mcc="466" mnc="88" apn="internet" type="default,supl" /> - <apn carrier="KGT MMS" mcc="466" mnc="88" apn="kgtmms" mmsc="http://mms.kgtmms.net.tw/mms/wapenc" mmsproxy="172.28.33.5" mmsport="8080" type="mms" /> - <apn carrier="VIBO-vibo" mcc="466" mnc="89" apn="vibo" proxy="172.24.128.36" port="8080" mmsc="" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="VIBO-internet" mcc="466" mnc="89" apn="internet" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="VIBOONE" mcc="466" mnc="89" apn="viboone" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="VIBO-MMS " mcc="466" mnc="89" apn="vibo" proxy="" port="" mmsproxy="172.24.128.36" mmsport="8080" mmsc="http://mms" user="" password="" authtype="1" type="mms" /> - <apn carrier="震旦電信(AURORA) (MMS)" mcc="466" mnc="89" apn="aurorawap" mmsc="http://auroramms" mmsproxy="172.24.128.36" mmsport="8080" type="mms" /> - <apn carrier="震旦電信(AURORA) (Internet)" mcc="466" mnc="89" apn="auroraweb" type="default,supl" /> - <apn carrier="Vibo" mcc="466" mnc="89" apn="internet" type="default,supl" /> - <apn carrier="威寶電信(VIBO)" mcc="466" mnc="89" apn="vibo" mmsc="http://mms" mmsproxy="172.24.128.36" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Vibo" mcc="466" mnc="89" apn="vibo" mmsc="http://mms" mmsproxy="172.24.128.36" mmsport="8080" type="mms" /> - <apn carrier="中華電信 (emome)" mcc="466" mnc="92" apn="emome" user="" password="" type="default,supl" /> - <apn carrier="中華電信 (Internet)" mcc="466" mnc="92" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="中華電信 (MMS)" mcc="466" mnc="92" apn="emome" proxy="" port="" mmsproxy="10.1.1.1" mmsport="8080" mmsc="http://mms.emome.net:8002" user="" password="" type="mms" /> - <apn carrier="中華電信(Chunghwa)" mcc="466" mnc="92" apn="emome" mmsc="http://mms.emome.net:8002" mmsproxy="10.1.1.1" mmsport="8080" type="default,supl,mms" /> - <apn carrier="CHT MMS" mcc="466" mnc="92" apn="emome" mmsc="http://mms.emome.net:8002" mmsproxy="10.1.1.1" mmsport="8080" type="mms" /> - <apn carrier="CHT" mcc="466" mnc="92" apn="internet" type="default,supl" /> - <apn carrier="Mobitai MMS" mcc="466" mnc="93" apn="gprs1" user="gprs" password="gprs" mmsc="http://mms.mobeelife.net/mms/wapenc" mmsproxy="192.168.77.5" mmsport="80" type="mms" /> - <apn carrier="Mobitai" mcc="466" mnc="93" apn="internet" user="gprs" password="gprs" type="default,supl" /> - <apn carrier="台灣大哥大(TW Mobile) (MMS)" mcc="466" mnc="93" apn="mms" mmsc="http://mms.catch.net.tw" mmsproxy="10.1.1.2" mmsport="80" type="mms" /> - <apn carrier="台灣大哥大(TW Mobile) (twm)" mcc="466" mnc="93" apn="twm" type="default,supl" /> - <apn carrier="台灣大哥大TWM" mcc="466" mnc="97" apn="twm" user="" password="" type="default,supl" /> - <apn carrier="Internet" mcc="466" mnc="97" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="台灣大哥大MMS" mcc="466" mnc="97" apn="mms" proxy="10.1.1.2" port="80" mmsproxy="10.1.1.2" mmsport="80" mmsc="http://mms.catch.net.tw" user="" password="" type="mms" /> - <apn carrier="Taiwan Mobile Internet" mcc="466" mnc="97" apn="internet" type="default,supl" /> - <apn carrier="Taiwan Mobile MMS" mcc="466" mnc="97" apn="mms" mmsc="http://mms.catch.net.tw" mmsproxy="10.1.1.2" mmsport="80" type="mms" /> - <apn carrier="Taiwan Mobile" mcc="466" mnc="97" apn="twm" type="default,supl" /> - <apn carrier="TransAsia" mcc="466" mnc="99" apn="internet" type="default,supl" /> - <apn carrier="TransAsia MMS" mcc="466" mnc="99" apn="mms" mmsc="http://mms" mmsproxy="10.1.1.2" mmsport="80" type="mms" /> - <apn carrier="台灣大哥大(TW Mobile) (twm)" mcc="466" mnc="99" apn="twm" type="default,supl" /> - <apn carrier="MMS" mcc="467" mnc="05" apn="KL.M" proxy="" port="" mmsproxy="10.250.155.42" mmsport="8080" mmsc="http://10.250.155.30:38090" user="" password="" type="mms" /> - <apn carrier="KL.M" mcc="467" mnc="06" apn="KL.M" proxy="" port="" mmsproxy="10.250.155.42" mmsport="8080" mmsc="http://10.250.155.30:38090" user="" password="" type="mms" /> - <apn carrier="KL.M" mcc="467" mnc="07" apn="KL.M" proxy="" port="" mmsproxy="10.250.155.42" mmsport="8080" mmsc="http://10.250.155.30:38090" user="" password="" type="mms" /> - <apn carrier="GP-INTERNET" mcc="470" mnc="01" apn="gpinternet" user="" password="" type="default,supl" /> - <apn carrier="GP-MMS" mcc="470" mnc="01" apn="gpmms" proxy="" port="" mmsproxy="10.128.1.2" mmsport="8080" mmsc="http://mms.gpsurf.net/servlets/mms" user="" password="" type="mms" /> - <apn carrier="GP-WAP" mcc="470" mnc="01" apn="gpwap" proxy="10.128.1.2" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Grameenphone" mcc="470" mnc="01" apn="gpinternet" type="default,supl" /> - <apn carrier="Grameenphone MMS" mcc="470" mnc="01" apn="gpmms" mmsc="http://mms.gpsurf.net/servlets/mms" mmsproxy="10.128.1.2" mmsport="8080" type="mms" /> - <apn carrier="Grameenphone WAP" mcc="470" mnc="01" apn="gpinternet" proxy="10.128.1.2" port="8080" type="default,supl" /> - <apn carrier="Grameenphone" mcc="470" mnc="01" apn="gpinterneth" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Robi MMS" mcc="470" mnc="02" apn="wap" mmsc="http://192.168.23.4/was" mmsproxy="192.168.023.007" mmsport="9028" type="mms" /> - <apn carrier="Robi" mcc="470" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="Robi WAP" mcc="470" mnc="02" apn="wap" proxy="10.128.1.2" port="9208" type="default,supl" /> - <apn carrier="Banglalink MMS" mcc="470" mnc="03" apn="blmms" mmsc="http://" mmsproxy="10.10.55.34" mmsport="8799" type="mms" /> - <apn carrier="Banglalink" mcc="470" mnc="03" apn="blweb" type="default,supl" /> - <apn carrier="Banglalink WAP" mcc="470" mnc="03" apn="blwap" proxy="10.10.55.34" port="8799" type="default,supl" /> - <apn carrier="Tele Talk" mcc="470" mnc="04" apn="wap" type="default,supl" /> - <apn carrier="Tele Talk WAP" mcc="470" mnc="04" apn="wap" proxy="192.168.145.101" port="9201" type="default,supl" /> - <apn carrier="Airtel BD" mcc="470" mnc="07" apn="internet" type="default,supl" /> - <apn carrier="Airtel BD MMS" mcc="470" mnc="07" apn="mms" mmsc="http://10.6.0.21/servlets/mms" mmsproxy="10.6.0.2" mmsport="8080" type="mms" /> - <apn carrier="Airtel BD WAP" mcc="470" mnc="07" apn="wap" proxy="10.6.0.2" port="8080" type="default,supl" /> - <apn carrier="Warid BD" mcc="470" mnc="07" apn="internet" type="default,supl" /> - <apn carrier="Warid BD MMS" mcc="470" mnc="07" apn="mms" mmsc="http://mms.waridtel.com.bd/index.jsp" mmsproxy="10.128.5.6" mmsport="8080" type="mms" /> - <apn carrier="Maxis 3g Internet" mcc="502" mnc="12" apn="unet" user="maxis" password="" type="default,supl" /> - <apn carrier="Maxis 3G WAP GPRS" mcc="502" mnc="12" apn="unet" proxy="202.75.133.49" port="80" user="maxis" password="" type="default,supl" /> - <apn carrier="Maxis 3g MMS" mcc="502" mnc="12" apn="unet" proxy="" port="" mmsproxy="202.75.133.49" mmsport="80" mmsc="http://172.16.74.100:10021/mmsc" user="maxis" password="" type="mms" /> - <apn carrier="Maxis Internet" mcc="502" mnc="12" apn="unet" user="maxis" password="wap" mmsc="http://172.16.74.100:10021/mmsc" mmsproxy="202.75.133.49" mmsport="80" authtype="1" type="default,supl,mms" /> - <apn carrier="Maxis 2G Internet" mcc="502" mnc="12" apn="net" user="maxis" password="wap" type="default,supl" /> - <apn carrier="Maxis 2G MMS" mcc="502" mnc="12" apn="net" user="maxis" password="wap" server="202.75.133.49" mmsc="http://172.16.74.100:10021/mmsc" mmsproxy="202.75.133.49" mmsport="80" type="mms" /> - <apn carrier="Maxis 3G Internet" mcc="502" mnc="12" apn="unet" user="maxis" password="wap" type="default,supl" /> - <apn carrier="Maxis 3G MMS" mcc="502" mnc="12" apn="unet" user="maxis" password="wap" server="202.75.133.49" mmsc="http://172.16.74.100:10021/mmsc" mmsproxy="202.75.133.49" mmsport="80" type="mms" /> - <apn carrier="Xpax" mcc="502" mnc="13" apn="celcom" type="default,supl" /> - <apn carrier="Xpax MMS" mcc="502" mnc="13" apn="celcom3g" user="mms" password="mms" mmsc="http://mms.celcom.net.my" mmsproxy="10.128.1.242" mmsport="8080" type="mms" /> - <apn carrier="DiGi Internet" mcc="502" mnc="16" apn="3gdgnet" user="" password="" type="default,supl" /> - <apn carrier="DiGi MMS" mcc="502" mnc="16" apn="digimms" proxy="" port="" mmsproxy="203.92.128.160" mmsport="80" mmsc="http://mms.digi.com.my/servlets/mms" user="mms" password="mms" type="mms" /> - <apn carrier="DiGi GPRS" mcc="502" mnc="16" apn="digiwap" proxy="203.92.128.188" port="80" user="digi" password="" type="default,supl" /> - <apn carrier="Digi MMS" mcc="502" mnc="16" apn="digimms" user="mms" password="mms" mmsc="http://mms.digi.com.my/servlets/mms" mmsproxy="203.92.128.160" mmsport="80" type="mms" /> - <apn carrier="Digi" mcc="502" mnc="16" apn="diginet" user="digi" password="digi" type="default,supl" /> - <apn carrier="U Mobile Internet" mcc="502" mnc="18" apn="my3g" user="" password="" type="default,supl" /> - <apn carrier="U Mobile MMS" mcc="502" mnc="18" apn="my3g" proxy="" port="" mmsproxy="10.30.5.11" mmsport="8080" mmsc="http://10.30.3.11/servlets/mms" user="" password="" type="mms" /> - <apn carrier="U Mobile Internet" mcc="502" mnc="18" apn="my3g" type="default,supl" /> - <apn carrier="U Mobile MMS" mcc="502" mnc="18" apn="my3g" mmsc="http://10.30.3.11/servlets/mms" mmsproxy="10.30.5.11" mmsport="8080" type="mms" /> - <apn carrier="celcom" mcc="502" mnc="19" apn="celcom3g" user="" password="" type="default,supl" /> - <apn carrier="celcom MMS" mcc="502" mnc="19" apn="celcom3G" proxy="" port="" mmsproxy="10.128.1.242" mmsport="8080" mmsc="http://mms.celcom.net.my" user="" password="" type="mms" /> - <apn carrier="Celcom 3G Internet" mcc="502" mnc="19" apn="celcom3g" type="default,supl" /> - <apn carrier="Celcom 3G MMS" mcc="502" mnc="19" apn="celcom3g" mmsc="http://mms.celcom.net.my" mmsproxy="10.128.1.242" mmsport="8080" type="mms" /> - <apn carrier="Celcom 2G Internet" mcc="502" mnc="19" apn="celcom.net.my" type="default,supl" /> - <apn carrier="Celcom 2G MMS" mcc="502" mnc="19" apn="mms.celcom.net.my" mmsc="http://mms.celcom.net.my" mmsproxy="10.128.1.242" mmsport="8080" type="mms" /> - <apn carrier="Telstra Internet" mcc="505" mnc="01" apn="telstra.wap" user="" password="" type="default,supl" /> - <apn carrier="Telstra Broadband" mcc="505" mnc="01" apn="telstra.internet" user="" password="" type="dun" /> - <apn carrier="Telstra MMS" mcc="505" mnc="01" apn="telstra.mms" proxy="" port="" mmsproxy="10.1.1.180" mmsport="80" mmsc="http://mmsc.telstra.com:8002" user="" password="" type="mms" /> - <apn carrier="Telstra MMS" mcc="505" mnc="01" apn="Telstra.mms" mmsc="http://mmsc.telstra.com:8002" mmsproxy="10.1.1.180" mmsport="80" type="mms" /> - <apn carrier="Telstra Internet" mcc="505" mnc="01" apn="Telstra.wap" type="default,supl" /> - <apn carrier="Telstra w/ Portal" mcc="505" mnc="01" apn="telstra.internet" proxy="10.1.1.181" port="80" mmsc="http://mmsc.telstra.com:8002" mmsproxy="10.1.1.181" mmsport="80" type="default,supl,mms" /> - <apn carrier="Telstra 3G Pay by Time" mcc="505" mnc="01" apn="telstra.pcpack" password="telstra" type="default,supl,mms" /> - <apn carrier="Optus Preconnect" mcc="505" mnc="02" apn="preconnect" user="" password="" type="default,supl" /> - <apn carrier="Optus Yesinternet" mcc="505" mnc="02" apn="yesinternet" user="" password="" type="default,supl" /> - <apn carrier="Optus ConnectCap" mcc="505" mnc="02" apn="connectcap" user="" password="" type="default,supl" /> - <apn carrier="Optus Connect" mcc="505" mnc="02" apn="connect" user="" password="" type="default,supl" /> - <apn carrier="Optus Business Mobile Broadband" mcc="505" mnc="02" apn="yesbusiness" user="" password="" type="default,supl" /> - <apn carrier="Optus MMS" mcc="505" mnc="02" apn="mms" proxy="" port="" mmsproxy="61.88.190.10" mmsport="8070" mmsc="http://mmsc.optus.com.au:8002/" user="" password="" type="mms" /> - <apn carrier="Optus Streaming" mcc="505" mnc="02" apn="yesinternet" proxy="172.22.1.3" port="554" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Exetel" mcc="505" mnc="02" apn="exetel1" type="default,supl" /> - <apn carrier="Optus" mcc="505" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="Optus MMS" mcc="505" mnc="02" apn="mms" user="*" password="*" server="*" proxy="202.139.83.152" port="8070" mmsc="http://mmsc.optus.com.au:8002/" mmsproxy="61.88.190.10" mmsport="8070" type="mms" /> - <apn carrier="Virgin AU" mcc="505" mnc="02" apn="virgininternet" user="*" password="*" server="*" type="default,supl" /> - <apn carrier="Virgin AU MMS" mcc="505" mnc="02" apn="virginmms" user="*" password="*" server="*" proxy="202.139.083.152" port="8070" mmsc="http://mms.virginvibe.com.au:8002/" mmsproxy="202.139.083.152" mmsport="8070" type="mms" /> - <apn carrier="Optus Internet" mcc="505" mnc="02" apn="yesinternet" user="*" password="*" server="*" type="default,supl" /> - <apn carrier="Apex Telecom" mcc="505" mnc="02" apn="splns357" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Boost MMS" mcc="505" mnc="02" apn="mms" user="" password="" proxy="61.88.190.10" port="8070" mmsc="http://mmsc.optus.com.au:8002/" mmsproxy="61.88.190.10" mmsport="8070" type="mms" authtype="3"/> - <apn carrier="Boost Mobile" mcc="505" mnc="02" apn="yesinternet" user="" password="" proxy="" port="" mmsc="" type="default,supl" authtype="3"/> - <apn carrier="Truphone" mcc="505" mnc="02" apn="truphone.com" type="default,dun" mvno_match_data="50502100" mvno_type="imsi" /> - <apn carrier="Vodafone Live!" mcc="505" mnc="03" apn="live.vodafone.com" proxy="10.202.2.60" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Vodafone PXT" mcc="505" mnc="03" apn="live.vodafone.com" proxy="" port="" mmsproxy="10.202.2.60" mmsport="8080" mmsc="http://pxt.vodafone.net.au/pxtsend" user="" password="" type="mms" /> - <apn carrier="Vodafone AU" mcc="505" mnc="03" apn="live.vodafone.com" user="*" password="*" server="*" mmsc="http://pxt.vodafone.net.au/pxtsend" mmsproxy="10.202.2.60" mmsport="8080" type="mms,default,supl" /> - <apn carrier="3 AU" mcc="505" mnc="06" apn="3services" mmsc="http://mmsc.three.net.au:10021/mmsc" mmsproxy="10.176.57.25" mmsport="8799" type="default,supl,mms"/> - <apn carrier="VF AU PXT" mcc="505" mnc="07" apn="live.vodafone.com" mmsc="http://pxt.vodafone.net.au/pxtsend" mmsproxy="10.202.2.60" mmsport="8080" type="mms" /> - <apn carrier="VF Internet" mcc="505" mnc="07" apn="vfinternet.au" type="default,supl" /> - <apn carrier="Telstra MMS" mcc="505" mnc="11" apn="Telstra.mms" mmsc="http://mmsc.telstra.com:8002" mmsproxy="10.1.1.180" mmsport="80" type="mms" /> - <apn carrier="Telstra Internet" mcc="505" mnc="11" apn="Telstra.wap" type="default,supl" /> - <apn carrier="3Internet" mcc="505" mnc="12" apn="3netaccess" type="default,supl" /> - <apn carrier="3" mcc="505" mnc="12" apn="3services" mmsc="http://mmsc.three.net.au:10021/mmsc" mmsproxy="10.176.57.25" mmsport="8799" type="default,supl,mms" /> - <apn carrier="Lycamobile AU" mcc="505" mnc="19" apn="data.lycamobile.com.au" user="lmau" password="plus" type="default,supl" /> - <apn carrier="Truphone" mcc="505" mnc="38" apn="truphone.com" type="default,supl" /> - <apn carrier="Telstra MMS" mcc="505" mnc="71" apn="Telstra.mms" mmsc="http://mmsc.telstra.com:8002" mmsproxy="10.1.1.180" mmsport="80" type="mms" /> - <apn carrier="Telstra Internet" mcc="505" mnc="71" apn="Telstra.wap" type="default,supl" /> - <apn carrier="Telstra MMS" mcc="505" mnc="72" apn="Telstra.mms" mmsc="http://mmsc.telstra.com:8002" mmsproxy="10.1.1.180" mmsport="80" type="mms" /> - <apn carrier="Telstra Internet" mcc="505" mnc="72" apn="Telstra.wap" type="default,supl" /> - <apn carrier="Telstra Internet" mcc="505" mnc="72" apn="Telstra.wap" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="VF AU PXT" mcc="505" mnc="88" apn="live.vodafone.com" mmsc="http://pxt.vodafone.net.au/pxtsend" mmsproxy="10.202.2.60" mmsport="8080" type="mms" /> - <apn carrier="VF Internet" mcc="505" mnc="88" apn="vfinternet.au" type="default,supl" /> - <apn carrier="Optus Internet" mcc="505" mnc="90" apn="internet" type="default,supl" /> - <apn carrier="Optus MMS" mcc="505" mnc="90" apn="mms" mmsc="http://mmsc.optus.com.au:8002/" mmsproxy="61.88.190.10" mmsport="8070" type="mms" /> - <apn carrier="Indosat 3G" mcc="510" mnc="01" apn="indosatgprs" proxy="" port="" user="indosat" password="indosat" authtype="1" type="default,supl" /> - <apn carrier="Indosat 3.5G" mcc="510" mnc="01" apn="indosat3g" proxy="" port="" user="indosat" password="indosat" authtype="1" type="default,supl" /> - <apn carrier="Indosat MMS" mcc="510" mnc="01" apn="indosatmms" mmsproxy="10.19.19.19" mmsport="8080" mmsc="http://mmsc.indosat.com" user="indosat" password="indosat" authtype="1" type="mms" /> - <apn carrier="Indosat GPRS" mcc="510" mnc="01" apn="indosatgprs" user="indosat" password="indosat" type="default,supl" /> - <apn carrier="Indosat MMS" mcc="510" mnc="01" apn="indosatmms" user="indosat" password="indosat" mmsc="http://mmsc.indosat.com" mmsproxy="10.19.19.19" mmsport="8080" type="mms" /> - <apn carrier="AXIS internet" mcc="510" mnc="08" apn="axis" proxy="" port="" user="axis" password="123456" authtype="1" type="default,supl" /> - <apn carrier="AXIS MMS" mcc="510" mnc="08" apn="axismms" mmsproxy="10.8.3.8" mmsport="8080" mmsc="http://mmsc.axis" user="axis" password="123456" authtype="1" type="mms" /> - <apn carrier="AXIS" mcc="510" mnc="08" apn="AXIS" user="axis" password="123456" type="default,supl" /> - <apn carrier="AXIS MMS" mcc="510" mnc="08" apn="AXISmms" user="axis" password="123456" mmsc="http://mmsc.AXIS" mmsproxy="10.8.3.8" mmsport="8080" type="mms" /> - <apn carrier="Smartfren4G" mcc="510" mnc="09" apn="Smartfren4G" user="smartfren" password="smartfren" authtype="3" type="default,supl" protocol="IPV4V6" /> - <apn carrier="Smartfren MMS" mcc="510" mnc="09" apn="smartfren" user="smartfren" password="smartfren" mmsc="http://10.17.93.103:8080" mmsproxy="10.17.27.250" mmsport="8080" authtype="3" type="mms" protocol="IPV4V6" /> - <apn carrier="Smartfren IMS" mcc="510" mnc="09" apn="IMS" type="ims" /> - <apn carrier="AXIS" mcc="510" mnc="08" apn="AXIS" proxy="" port="" user="axis" password="123456" mmsc="" type="default,supl" /> - <apn carrier="AXIS MMS" mcc="510" mnc="08" apn="AXISmms" proxy="" port="" user="axis" password="123456" mmsc="http://mmsc.AXIS" mmsproxy="10.8.3.8" mmsport="8080" type="mms" /> - <apn carrier="TSEL BROADBAND" mcc="510" mnc="10" apn="internet" proxy="" port="" user="wap" password="wap123" authtype="1" type="default,supl" /> - <apn carrier="TSEL TIMEBASED" mcc="510" mnc="10" apn="flash" proxy="" port="" user="wap" password="wap123" authtype="1" type="default,supl" /> - <apn carrier="TSEL MMS" mcc="510" mnc="10" apn="mms" mmsproxy="10.1.89.150" mmsport="8000" mmsc="http://mms.telkomsel.com" user="wap" password="wap123" authtype="1" type="mms" /> - <apn carrier="Telkomsel" mcc="510" mnc="10" apn="internet" type="default,supl" /> - <apn carrier="Telkomsel MMS" mcc="510" mnc="10" apn="mms" user="wap" password="wap123" mmsc="http://mms.telkomsel.com" mmsproxy="10.1.89.150" mmsport="9201" type="mms" /> - <apn carrier="XL Unlimited" mcc="510" mnc="11" apn="xlunlimited" proxy="202.152.240.50" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="XL-GPRS" mcc="510" mnc="11" apn="www.xlgprs.net" proxy="202.152.240.50" port="8080" mmsc="" user="xlgprs" password="proxl" type="default,supl" /> - <apn carrier="XL-MMS" mcc="510" mnc="11" apn="www.xlmms.net" proxy="" port="" mmsproxy="202.152.240.50" mmsport="8080" mmsc="http://mmc.xl.net.id/servlets/mms" user="xlgprs" password="proxl" type="mms" /> - <apn carrier="XL-INTERNET" mcc="510" mnc="11" apn="internet" type="default,supl" /> - <apn carrier="XL-MMS" mcc="510" mnc="11" apn="www.xlmms.net" user="xlgprs" password="proxl" mmsc="http://mmc.xl.net.id/servlets/mms" mmsproxy="202.152.240.50" mmsport="8080" type="mms" /> - <apn carrier="IM3 MMS" mcc="510" mnc="21" apn="indosatmms" user="indosat" password="indosat" mmsc="http://mmsc.indosat.com" mmsproxy="10.19.19.19" mmsport="8080" type="mms" /> - <apn carrier="IM3 Internet" mcc="510" mnc="21" apn="www.indosat-m3.net" user="gprs" password="im3" type="default,supl" /> - <apn carrier="Smartfren4G" mcc="510" mnc="28" apn="Smartfren4G" user="smartfren" password="smartfren" authtype="3" type="default,supl" protocol="IPV4V6" /> - <apn carrier="Smartfren MMS" mcc="510" mnc="28" apn="smartfren" user="smartfren" password="smartfren" mmsc="http://10.17.93.103:8080" mmsproxy="10.17.27.250" mmsport="8080" authtype="3" type="mms" protocol="IPV4V6" /> - <apn carrier="Smartfren IMS" mcc="510" mnc="28" apn="IMS" type="ims" /> - <apn carrier="3 GPRS" mcc="510" mnc="89" apn="3gprs" user="3gprs" password="3gprs" authtype="1" type="default,supl" /> - <apn carrier="3 Unlimited" mcc="510" mnc="89" apn="3data" user="3data" password="3data" authtype="1" type="default,supl" /> - <apn carrier="3mms" mcc="510" mnc="89" apn="3mms" mmsproxy="10.4.0.10" mmsport="3128" mmsc="http://mms.three.co.id" user="3mms" password="3mms" authtype="2" type="mms" /> - <apn carrier="3 ID" mcc="510" mnc="89" apn="3gprs" user="3gprs" password="3gprs" type="default,supl" /> - <apn carrier="3 ID INTERNET" mcc="510" mnc="89" apn="3data" user="3data" password="3data" type="default,supl" /> - <apn carrier="3 ID MMS" mcc="510" mnc="89" apn="3mms" user="3mms" password="3mms" mmsc="http://mmsthree.co.id" mmsproxy="10.4.0.10" mmsport="3128" type="mms" /> - <apn carrier="myGlobe Prepaid" mcc="515" mnc="02" apn="http.globe.com.ph" type="default,supl" /> - <apn carrier="myGlobe Postpaid" mcc="515" mnc="02" apn="internet.globe.com.ph" type="default,supl" /> - <apn carrier="myGlobe Connect" mcc="515" mnc="02" apn="www.globe.com.ph" proxy="203.177.042.214" port="8080" type="default,supl" /> - <apn carrier="MyGlobe Stream" mcc="515" mnc="02" apn="real.globe.com.ph" type="default,supl" /> - <apn carrier="myGlobe MMS" mcc="515" mnc="02" apn="mms.globe.com.ph" mmsc="http://192.40.100.22:10021/mmsc" mmsproxy="203.177.42.214" mmsport="8080" type="mms" /> - <apn carrier="SMART Internet postpaid" mcc="515" mnc="03" apn="internet" authtype="1" type="default" /> - <apn carrier="SMART HTTP postpaid" mcc="515" mnc="03" apn="smart1" proxy="10.102.61.46" port="9201" user="smartwap" password="smartwap" authtype="1" type="default" /> - <apn carrier="SMART(3G) Internet postpaid" mcc="515" mnc="03" apn="internet" type="default,supl"/> - <apn carrier="SMART(3G) MMS postpaid" mcc="515" mnc="03" apn="mms" mmsc="http://10.102.61.238:8002" mmsproxy="10.102.61.46" mmsport="8080" type="mms" /> - <apn carrier="SMART(3G) Internet prepaid" mcc="515" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="SMART(3G) HTTP prepaid" mcc="515" mnc="03" apn="smart1" proxy="10.102.61.46" port="80" user="smartwap" password="smartwap" authtype="1" type="default" /> - <apn carrier="SMART(3G) MMS prepaid" mcc="515" mnc="03" apn="mms" user="smartwap" password="smartwap" mmsc="http://10.102.61.238:8002" mmsproxy="10.102.61.46" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="SMART MMS postpaid" mcc="515" mnc="03" apn="mms" user="smartwap" password="smartwap" mmsc="http://10.102.61.238:8002" mmsproxy="10.102.61.46" mmsport="9201" authtype="1" type="mms" /> - <apn carrier="SMART(3G) HTTP postpaid" mcc="515" mnc="03" apn="smart1" proxy="10.102.61.46" port="9201" authtype="1" type="default" /> - <apn carrier="Sun Internet" mcc="515" mnc="05" apn="minternet" type="default,supl" /> - <apn carrier="Sun Streaming" mcc="515" mnc="05" apn="minternet" type="default,supl" /> - <apn carrier="SUN WAP GPRS" mcc="515" mnc="05" apn="wap" proxy="202.138.159.078" port="8080" type="default,supl" /> - <apn carrier="SUN SBW" mcc="515" mnc="05" apn="fbband" type="default,supl" /> - <apn carrier="SUN MMS" mcc="515" mnc="05" apn="mms" mmsc="http://mmscenter.suncellular.com.ph" mmsproxy="202.138.159.78" mmsport="8080" type="mms" /> - <apn carrier="TrueMove-H" mcc="520" mnc="00" apn="internet" user="true" password="true" type="default,supl" /> - <apn carrier="TrueMove-H MMS" mcc="520" mnc="00" apn="hmms" user="true" password="true" mmsc="http://mms.trueh.com:8002" mmsproxy="10.4.7.39" mmsport="8080" type="mms" /> - <apn carrier="AIS GPRS Internet" mcc="520" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="AIS MMS" mcc="520" mnc="01" apn="multimedia" mmsc="http://mms.mobilelife.co.th" mmsproxy="203.170.229.34" mmsport="8080" type="mms" /> - <apn carrier="AIS Internet" mcc="520" mnc="03" apn="internet" type="default,supl" /> - <apn carrier="AIS MMS" mcc="520" mnc="03" apn="mms" mmsc="http://mms.ais.co.th" mmsproxy="203.170.229.34" mmsport="8080" type="mms" /> - <apn carrier="DTAC MMS" mcc="520" mnc="05" apn="mms" mmsc="http://mms2.dtac.co.th:8002" mmsproxy="10.10.10.10" mmsport="8080" type="mms" /> - <apn carrier="DTAC GPRS WEB" mcc="520" mnc="05" apn="www.dtac.co.th" type="default,supl" /> - <apn carrier="TOT 3G" mcc="520" mnc="15" apn="internet" type="default,supl" /> - <apn carrier="TOT 3G MMS" mcc="520" mnc="15" apn="mms" mmsc="http://mms.tot3g.net:8002" mmsproxy="10.218.24.83" mmsport="8080" type="mms" /> - <apn carrier="DTAC MMS" mcc="520" mnc="18" apn="mms" mmsc="http://mms.dtac.co.th:8002" mmsproxy="203.155.200.133" mmsport="8080" type="mms" /> - <apn carrier="DTAC GPRS WEB" mcc="520" mnc="18" apn="www.dtac.co.th" type="default,supl" /> - <apn carrier="True" mcc="520" mnc="99" apn="internet" user="true" password="true" type="default,supl" /> - <apn carrier="True MMS" mcc="520" mnc="99" apn="mms" user="true" password="true" mmsc="http://mms.trueworld.net:8002" mmsproxy="10.4.7.39" mmsport="8080" type="mms" /> - <apn carrier="SingTel (PostPaid)" mcc="525" mnc="01" apn="e-ideas" mmsproxy="165.21.42.84" mmsport="8080" mmsc="http://mms.singtel.com:10021/mmsc" type="default,supl,mms" /> - <apn carrier="SingTel (PrePaid)" mcc="525" mnc="01" apn="hicard" mmsproxy="165.21.42.84" mmsport="8080" mmsc="http://mms.singtel.com:10021/mmsc" type="default,supl,mms" /> - <apn carrier="SingTel (PostPaid)" mcc="525" mnc="02" apn="e-ideas" mmsproxy="165.21.42.84" mmsport="8080" mmsc="http://mms.singtel.com:10021/mmsc" type="default,supl,mms" /> - <apn carrier="SingTel (PrePaid)" mcc="525" mnc="02" apn="hicard" mmsproxy="165.21.42.84" mmsport="8080" mmsc="http://mms.singtel.com:10021/mmsc" type="default,supl,mms" /> - <apn carrier="Sunsurf Mobile" mcc="525" mnc="03" apn="sunsurf" type="default,supl" /> - <apn carrier="M1 MMS(3G)" mcc="525" mnc="03" apn="miworld" user="65" password="user123" mmsc="http://mmsgw:8002" mmsproxy="172.16.14.10" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Sunsurf Mobile" mcc="525" mnc="04" apn="sunsurf" type="default,supl" /> - <apn carrier="M1 MMS(3G)" mcc="525" mnc="04" apn="miworld" user="65" password="user123" authtype="1" mmsc="http://mmsgw:8002" mmsproxy="172.16.14.10" mmsport="8080" type="mms" /> - <apn carrier="SH Data Postpaid" mcc="525" mnc="05" apn="shwap" type="default,supl" /> - <apn carrier="SH Data Prepaid" mcc="525" mnc="05" apn="shppd" type="default,supl" /> - <apn carrier="SH MMS Postpaid" mcc="525" mnc="05" apn="shmms" mmsc="http://mms.starhubgee.com.sg:8002/" mmsproxy="10.12.1.80" mmsport="80" type="mms" /> - <apn carrier="B-Mobile MMS" mcc="528" mnc="02" apn="bmobilemms" mmsc="http://mms.bmobile.com.bn/was" mmsproxy="129.9.10.20" mmsport="6500" type="mms" /> - <apn carrier="B-Mobile" mcc="528" mnc="02" apn="bmobilewap" type="default,supl" /> - <apn carrier="DSTCom" mcc="528" mnc="11" apn="dst.internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="DSTCom MMS" mcc="528" mnc="11" apn="dst.mms" user="mms" password="mms" mmsc="http://mms.dst.com.bn/mmsc" mmsproxy="10.100.6.101" mmsport="9201" type="mms" /> - <apn carrier="Vodafone NZ" mcc="530" mnc="01" apn="www.vodafone.net.nz" user="" password="" type="default,supl" /> - <apn carrier="Vodafone NZ-MMS" mcc="530" mnc="01" apn="live.vodafone.com" proxy="" port="" mmsproxy="172.30.38.3" mmsport="8080" mmsc="http://pxt.vodafone.net.nz/pxtsend" user="" password="" type="mms" /> - <apn carrier="Vodafone NZ MMS" mcc="530" mnc="01" apn="live.vodafone.com" mmsc="http://pxt.vodafone.net.nz/pxtsend" mmsproxy="172.030.038.003" mmsport="8080" type="mms" /> - <apn carrier="Vodafone NZ" mcc="530" mnc="01" apn="www.vodafone.net.nz" type="default,supl" /> - <apn carrier="Telecom NZ" mcc="530" mnc="02" apn="internet.telecom.co.nz" type="default,supl" /> - <apn carrier="VFNZ PXT" mcc="530" mnc="02" apn="live.vodafone.com" mmsc="http://pxt.vodafone.net.nz/pxtsend" mmsproxy="172.30.38.3" mmsport="8080" type="mms" /> - <apn carrier="Telecom NZ MMS" mcc="530" mnc="02" apn="wap.telecom.co.nz" mmsc="http://lsmmsc.xtra.co.nz" mmsproxy="210.55.11.73" mmsport="80" type="mms" /> - <apn carrier="VFNZ Internet" mcc="530" mnc="02" apn="www.vodafone.net.nz" type="default,supl" /> - <apn carrier="Telecom NZ" mcc="530" mnc="03" apn="internet.telecom.co.nz" type="default,supl" /> - <apn carrier="Telecom NZ MMS" mcc="530" mnc="03" apn="wap.telecom.co.nz" mmsc="http://lsmmsc.xtra.co.nz" mmsproxy="210.55.11.73" mmsport="80" type="mms" /> - <apn carrier="TelecomDefault" mcc="530" mnc="05" apn="wap.telecom.co.nz" user="" password="" type="default,supl" /> - <apn carrier="TelecomMMS" mcc="530" mnc="05" apn="wap.telecom.co.nz" proxy="" port="" mmsproxy="210.55.11.73" mmsport="8080" mmsc="http://lsmmsc.xtra.co.nz" user="" password="" type="mms" /> - <apn carrier="XT Mobile" mcc="530" mnc="05" apn="internet.telecom.co.nz" type="default,supl" /> - <apn carrier="XT Mobile MMS" mcc="530" mnc="05" apn="wap.telecom.co.nz" mmsc="http://lsmmsc.xtra.co.nz" mmsproxy="210.55.11.73" mmsport="8080" type="mms" /> - <apn carrier="2degrees Internet" mcc="530" mnc="24" apn="internet" type="default,supl" /> - <apn carrier="2degrees MMS" mcc="530" mnc="24" apn="mms" mmsc="http://mms.2degreesmobile.net.nz:48090" mmsproxy="118.148.1.118" mmsport="8080" type="mms" /> - <apn carrier="2 degrees mobile" mcc="530" mnc="24" apn="2degrees" proxy="118.148.1.118" port="8080" user="" password="" mmsc="" type="default,supl,mms" /> - <apn carrier="Digicel Web" mcc="537" mnc="03" apn="internet.digicelpng.com" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="537" mnc="03" apn="wap.digicelpng.com" proxy="" port="" mmsproxy="10.149.83.116" mmsport="8080" mmsc="http://mms.digicelpng.com:8990" user="" password="" type="mms" /> - <apn carrier="Digicel Web" mcc="539" mnc="88" apn="web.digicelpacific.com" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="539" mnc="88" apn="wap.digicelpacific.com" proxy="" port="" mmsproxy="10.150.122.12" mmsport="8080" mmsc="http://mms.digicelpacific.com:8990" user="" password="" type="mms" /> - <apn carrier="Digicel Web" mcc="541" mnc="05" apn="web.digicelpacific.com" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="541" mnc="05" apn="wap.digicelpacific.com" proxy="" port="" mmsproxy="10.150.122.12" mmsport="8080" mmsc="http://mms.digicelpacific.com:8990" user="" password="" type="mms" /> - <apn carrier="vodafone fj" mcc="542" mnc="01" apn="live.vodafone.com.fj" proxy="10.202.2.40" port="8080" mmsproxy="10.202.2.40" mmsport="8080" mmsc="http://pxt.vodafone.net.fj/pxtsend" authtype="3" user="" password="" type="*" /> - <apn carrier="Vodafone FJ MMS" mcc="542" mnc="01" apn="live.vodafone.com.fj" mmsc="http://pxt.vodafone.net.fj/pxtsend" mmsproxy="010.202.002.040" mmsport="9201" type="mms" /> - <apn carrier="Vodafone FJ" mcc="542" mnc="01" apn="vfinternet.fj" type="default,supl" /> - <apn carrier="Digicel Web" mcc="542" mnc="02" apn="web.digicelpacific.com" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="542" mnc="02" apn="wap.digicelpacific.com" proxy="" port="" mmsproxy="10.150.122.12" mmsport="8080" mmsc="http://mms.digicelpacific.com:8990" user="" password="" type="mms" /> - <apn carrier="Digicel FJ MMS" mcc="542" mnc="02" apn="wap.digicelpacific.com" mmsc="http://mms.digicelpacific.com:8990" mmsproxy="10.150.122.12" mmsport="8080" type="mms" /> - <apn carrier="Digicel FJ" mcc="542" mnc="02" apn="web.digicelpacific.com" type="default,supl" /> - <apn carrier="Wap OPT KNC" mcc="546" mnc="01" apn="wap" user="Wap" password="Wap123" proxy="192.168.39.101" port="3130" type="default,supl" /> - <apn carrier="Internet OPT KNC" mcc="546" mnc="01" apn="internet" user="internet" type="default,supl" /> - <apn carrier="3g OPT KNC" mcc="546" mnc="01" apn="3g" user="3g" type="default,supl" /> - <apn carrier="Mms OPT KNC" mcc="546" mnc="01" apn="mms" user="mms" password="mms123" mmsproxy="192.168.39.201" mmsport="3130" mmsc="http://mms.mobitag.nc/mmsc/" type="mms" /> - <apn carrier="Digicel Web" mcc="549" mnc="00" apn="web.digicelsamoa.ws" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="549" mnc="00" apn="wap.digicelpacific.ws" proxy="" port="" mmsproxy="10.148.122.12" mmsport="8080" mmsc="http://mms.digicelsamoa.net:8990" user="" password="" type="mms" /> - <apn carrier="Mobinil" mcc="602" mnc="01" apn="mobinilweb" authtype="2" type="default,supl" /> - <apn carrier="mobinilmms" apn="mobinilmms" mmsc="http://10.7.13.24:8002/" mmsproxy="62.241.155.45" mmsport="8080" mcc="602" mnc="01" authtype="2" type="mms" /> - <apn carrier="Vodafone live!" mcc="602" mnc="02" apn="wap.Vodafone.com.eg" user="wap" password="wap" proxy="163.121.178.2" port="8080" authtype="1" type="default,supl" /> - <apn carrier="Vodafone GPRS Internet" mcc="602" mnc="02" apn="internet.vodafone.net" user="internet" password="internet" authtype="3" type="default,supl" /> - <apn carrier="Vodafone MMS" mcc="602" mnc="02" apn="mms.vodafone.com.eg" user="mms" password="mms" mmsc="http://mms.vodafone.com.eg/servlets/mms" mmsproxy="163.121.178.2" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Vodafone EG" mcc="602" mnc="02" apn="internet.vodafone.net" user="internet" password="internet" type="default,supl" /> - <apn carrier="Vodafone EG MMS" mcc="602" mnc="02" apn="mms.vodafone.com.eg" user="mms" password="mms" mmsc="http://mms.vodafone.com.eg/servlets/mms" mmsproxy="163.121.178.002" mmsport="8080" type="mms" /> - <apn carrier="Etisalat WAP" apn="etisalat" mmsc="http://10.71.131.7:38090" mmsproxy="10.71.130.29" mmsport="8080" mcc="602" mnc="03" authtype="1" type="*" /> - <apn carrier="Etisalat MMS" apn="etisalat" mmsc="http://10.71.131.7:38090" mmsproxy="10.71.130.29" mmsport="8080" mcc="602" mnc="03" type="mms" /> - <apn carrier="Etisalat internet" mcc="602" mnc="03" apn="Etisalat" mmsc="http://10.71.131.7:38090" mmsproxy="10.71.130.29" mmsport="8080" type="default,supl,mms" /> - <apn carrier="Vodafone GPRS Internet" mcc="602" mnc="12" apn="internet.vodafone.net" proxy="" port="" user="internet" password="internet" authtype="2" type="default,supl" /> - <apn carrier="Mobilis" mcc="603" mnc="01" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="Mobilis MMS" mcc="603" mnc="01" apn="mms" user="mms" password="mms" mmsc="http://172.025.049.009/servlets/mms" mmsproxy="172.25.49.2" mmsport="8080" type="mms" /> - <apn carrier="Djezzy" mcc="603" mnc="02" apn="djezzy.internet" type="default,supl,mms" /> - <apn carrier="Djezzy MMS" mcc="603" mnc="02" apn="djezzy.mms" mmsc="http://172.024.97.152:10021/mmsc" mmsproxy="172.024.97.158" mmsport="8799" type="mms" /> - <apn carrier="Nedjma" mcc="603" mnc="03" apn="internet" user="nedjma" password="nedjma" type="default,supl" /> - <apn carrier="Nedjma MMS" mcc="603" mnc="03" apn="nedjmaMMS" user="mms" password="mms" mmsc="http://10.10.111.1" mmsproxy="192.168.52.3" mmsport="9201" type="mms" /> - <apn carrier="Imédia" mcc="604" mnc="00" apn="wap.meditel.ma" proxy="10.8.8.8" port="8080" user="MEDIWAP" password="MEDIWAP" authtype="1" type="default,supl" /> - <apn carrier="Meditel Internet" mcc="604" mnc="00" apn="internet1.meditel.ma" user="MEDINET" password="MEDINET" authtype="1" type="default,supl" /> - <apn carrier="Meditel MMS" mcc="604" mnc="00" apn="mms.meditel.ma" user="MEDIMMS" password="MEDIMMS" mmsc="http://mms.meditel.ma:8088/mms" mmsproxy="10.8.8.9" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Mobile Zone" mcc="604" mnc="01" apn="wap.iamgprs.ma" proxy="212.217.54.133" port="8080" mmsc="" authtype="1" user="" password="" type="default,supl" /> - <apn carrier="Mobile Internet" mcc="604" mnc="01" apn="www.iamgprs1.ma" authtype="1" user="" password="" type="default,supl" /> - <apn carrier="MMS IAM" mcc="604" mnc="01" apn="Mmsiam" proxy="" port="" mmsproxy="10.16.35.50" mmsport="8080" mmsc="http://mms:8002/" user="" password="" type="mms" /> - <apn carrier="Mobile TV" mcc="604" mnc="01" apn="wap.iamgprs.ma" user="" password="" type="default,supl" /> - <apn carrier="IAM" mcc="604" mnc="01" apn="www.iamgprs1.ma" type="default,supl" /> - <apn carrier="IAM MMS" mcc="604" mnc="01" apn="mmsiam" mmsc="http://mms:8002" mmsproxy="10.16.35.50" mmsport="8080" type="default,supl,mms"/> - <apn carrier="weborange" mcc="605" mnc="01" apn="weborange" proxy="10.12.1.52" port="8080" type="default,supl" /> - <apn carrier="MMS Orange" apn="mms.otun" mmsc="https://mms.orange.tn" mmsproxy="10.12.1.52" mmsport="8080" mcc="605" mnc="01" type="mms" /> - <apn carrier="Orange TN" mcc="605" mnc="01" apn="keypro" type="default,supl" /> - <apn carrier="weborange" mcc="605" mnc="01" apn="weborange" type="default,supl" /> - <apn carrier="Orange MMS" mcc="605" mnc="01" apn="mms.otun" mmsc="http://mms.orange.tn" mmsproxy="10.12.1.52" mmsport="8080" type="mms" /> - <apn carrier="Tunisia Telecom MMS" mcc="605" mnc="02" apn="mms.tn" mmsc="http://192.168.0.3:19090/was" mmsproxy="192.168.0.2" mmsport="8080" type="mms" /> - <apn carrier="Tunisia Telecom WAP" mcc="605" mnc="02" apn="wap.tn" proxy="192.168.0.2" port="8080" user="wap@tt1" password="wap" type="default,supl" /> - <apn carrier="Tunisia Telecom Internet" mcc="605" mnc="02" apn="gprs.tn" proxy="" port="" user="mobinet" password="mobinet" type="default,supl" /> - <apn carrier="Tunisie Télécom TN" mcc="605" mnc="02" apn="internet.tn" type="default,supl" /> - <apn carrier="Tunisiana MMS" mcc="605" mnc="03" apn="mms.tunisiana.com" mmsproxy="10.3.2.100" mmsport="9201" mmsc="http://192.168.0.3:19090/was" user="mms" password="mms" type="mms" /> - <apn carrier="Tunisiana Wap" mcc="605" mnc="03" apn="internet.tunisiana.com" proxy="10.3.2.99" port="8080" user="internet" password="internet" type="default,supl" /> - <apn carrier="Ooredoo TN" mcc="605" mnc="03" apn="internet.ooredoo.tn" type="default,supl" /> - <apn carrier="Libyana MMS" mcc="606" mnc="00" apn="mms" mmsc="http://62.240.62.180:80" mmsproxy="192.168.8.148" mmsport="8000" type="mms" /> - <apn carrier="Libyana" mcc="606" mnc="00" apn="wap" proxy="192.168.8.148" port="8000" type="default,supl" /> - <apn carrier="Al-Madar MMS" mcc="606" mnc="01" apn="almadar.mms" mmsc="http://almadar.mms/servlets/mms" mmsproxy="41.208.82.50" mmsport="8080" type="mms" /> - <apn carrier="Al-Madar" mcc="606" mnc="01" apn="almadar.net" type="default,supl" /> - <apn carrier="Africell Gambia" mcc="607" mnc="02" apn="africellnet" type="default,supl" /> - <apn carrier="Orange WAP" apn="wap" proxy="172.16.30.9" port="8080" user="wap" password="wap" mcc="608" mnc="01" type="default,supl" /> - <apn carrier="Orange MMS" apn="mms" user="mms" password="mms" mmsc="http://mmsalize/servlets/mms" mmsproxy="172.16.30.9" mmsport="8080" mcc="608" mnc="01" type="mms" /> - <apn carrier="Orange GPRS" mcc="608" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="Orange MMS SN" mcc="608" mnc="01" apn="mms" user="mms" password="mms" mmsc="http://mmsalize/servlets/mms" mmsproxy="172.16.30.9" mmsport="8080" type="mms" /> - <apn carrier="Orange Wap SN" mcc="608" mnc="01" apn="wap" user="wap" password="wap" proxy="172.16.30.9" port="8080" type="default,supl" /> - <apn carrier="Orange Web SN" mcc="608" mnc="01" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="Orange Wap" apn="wap" proxy="10.109.4.35" port="8080" user="wap" password="wap" mcc="610" mnc="02" type="default,supl" /> - <apn carrier="Orange MMS" apn="mms" user="mms" password="mms" mmsc="http://10.109.6.2/servlets/mms" mmsproxy="10.109.4.35" mmsport="8080" mcc="610" mnc="02" type="mms" /> - <apn carrier="Orange ML" mcc="610" mnc="02" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="Orange ML MMS" mcc="610" mnc="02" apn="mms" user="mms" password="mms" mmsc="http://10.109.6.2/servlets/mms" mmsproxy="10.109.4.35" mmsport="8080" type="mms" /> - <apn carrier="Orange Wap ML" mcc="610" mnc="02" apn="wap" user="wap" password="wap" proxy="10.109.4.35" port="8080" type="default,supl" /> - <apn carrier="OWORLD" mcc="612" mnc="03" apn="orangeciwap" proxy="172.20.4.33" port="8080" user="wap" password="wap" type="default,supl" /> - <apn carrier="Omms" mcc="612" mnc="03" apn="orangecimms" user="mms" password="mms" mmsc="http://172.20.6.1/servlets/mms" mmsproxy="172.20.4.33" mmsport="8080" type="mms" /> - <apn carrier="Omms CI" mcc="612" mnc="03" apn="orangecimms" user="mms" password="mms" mmsc="http://172.20.6.1/servlets/mms" mmsproxy="172.20.4.33" mmsport="8080" type="mms" /> - <apn carrier="OWORLD CI" mcc="612" mnc="03" apn="orangeciwap" user="wap" password="wap" proxy="172.20.4.33" port="8080" type="default,supl" /> - <apn carrier="MTN CI MMS" mcc="612" mnc="05" apn="mms.mtn.ci" mmsc="http://mms.mtn.ci/mms/wapenc" mmsproxy="172.16.100.5" mmsport="9201" type="mms" /> - <apn carrier="MTN CI" mcc="612" mnc="05" apn="web.mtn.ci" server="*" type="default,supl" /> - <apn carrier="Orange MMS" mcc="614" mnc="04" apn="orange.mms" user="orange" password="orange" mmsc="http://10.10.10.35:38090/was" mmsproxy="10.10.10.36" mmsport="8080" type="mms" /> - <apn carrier="Orange Internet" mcc="614" mnc="04" apn="orange.ne" type="default,supl" /> - <apn carrier="Orange World" mcc="617" mnc="01" apn="Orangeworld" proxy="10.20.3.9" port="8080" type="default,supl" /> - <apn carrier="Orange MMS" mcc="617" mnc="01" apn="orangemms" user="mmsc" password="mmsc" mmsc="http://10.2.1.20:8514" mmsproxy="10.2.1.20" mmsport="8080" type="mms" /> - <apn carrier="Orange Internet" mcc="617" mnc="01" apn="orange" type="default,supl" /> - <apn carrier="Africell Sierra Leone" mcc="619" mnc="03" apn="africellnet" type="default,supl" /> - <apn carrier="MTN MMS" mcc="620" mnc="01" apn="MMS" mmsproxy="172.17.3.5" mmsport="8080" mmsc="http://172.17.3.7" type="mms" /> - <apn carrier="MTN INTERNET" mcc="620" mnc="01" apn="WAP" proxy="172.17.3.5" port="8080" type="default,supl" /> - <apn carrier="internet" mcc="620" mnc="02" apn="browse" type="default,supl" /> - <apn carrier="MMS" mcc="620" mnc="02" apn="MMS" mmsproxy="172.24.97.1" mmsport="8080" mmsc="http://mms.onetouch.com.gh/mmsc" type="mms" /> - <apn carrier="Tigo MMS" mcc="620" mnc="03" apn="wap.tigo.com.gh" mmsproxy="10.4.1.7" mmsport="8080" mmsc="http://mmsc.tigo.com.gh:19090" type="mms" /> - <apn carrier="Tigo WEB1" mcc="620" mnc="03" apn="web.tigo.com.gh" type="default,supl" /> - <apn carrier="Tigo WEB2" mcc="620" mnc="03" apn="tigo.3G" type="default,supl" /> - <apn carrier="Tigo WAP" mcc="620" mnc="03" apn="wap.tigo.com.gh" type="default,supl" /> - <apn carrier="Zain WAP" mcc="620" mnc="06" apn="wap" proxy="10.93.85.88" port="9401" type="default,supl" /> - <apn carrier="Zain MMS" mcc="620" mnc="06" apn="MMS" mmsproxy="10.93.85.88" mmsport="9401" mmsc="http://zainmms/servlets/mms" type="mms" /> - <apn carrier="Zain NG" mcc="621" mnc="20" apn="internet.ng.zain.com" type="default,supl" /> - <apn carrier="Visafone" mcc="621" mnc="25" apn="#777" proxy="192.168.165.201" port="8080" mmsc="" user="wap@wap.com" password="wap" authtype="3" type="default,supl" /> - <apn carrier="APTWAP" mcc="621" mnc="25" apn="#777" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="MTN NG" mcc="621" mnc="30" apn="web.gprs.mtnnigeria.net" user="web" password="web" proxy="10.199.212.2" type="default,supl" /> - <apn carrier="MTN NG MMS" mcc="621" mnc="30" apn="web.gprs.mtnnigeria.net" user="web" password="web" mmsc="http://10.199.212.8/servlets/mms" mmsproxy="10.199.212.2" mmsport="8080" type="mms" /> - <apn carrier="Glo Mobile Internet" mcc="621" mnc="50" apn="gloflat" user="flat" password="flat" proxy="10.100.98.22" type="default,supl" /> - <apn carrier="Glo PAYU" mcc="621" mnc="50" apn="glosecure" type="default,supl" /> - <apn carrier="Glo MMS" mcc="621" mnc="50" apn="glomms" user="mms" password="mms" mmsc="http://mms.gloworld.com/mmsc" mmsproxy="010.100.082.004" mmsport="3130" type="mms" /> - <apn carrier="Glo" mcc="621" mnc="50" apn="glo3gvideo" proxy="10.100.98.22" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Etisalat Internet" mcc="621" mnc="60" apn="etisalat" user="" password="" authtype="3" type="*" /> - <apn carrier="Etisalat NG" mcc="621" mnc="60" apn="etisalat" type="default,supl" /> - <apn carrier="Etisalat NG MMS" mcc="621" mnc="60" apn="etisalat" mmsc="http://10.71.170.30:38090/was" mmsproxy="10.71.170.5" mmsport="8080" type="mms" /> - <apn carrier="MTN CM" mcc="624" mnc="01" apn="INTERNET" user="guest" password="guest" type="default,supl" /> - <apn carrier="Orange CM WAP" mcc="624" mnc="02" apn="orangecmgprs" proxy="192.168.122.101" port="8080" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange CM MMS" mcc="624" mnc="02" apn="orangecmgprs" user="orange" password="orange" mmsc="http://mms.orange.cm" mmsproxy="192.168.122.101" mmsport="8080" type="mms" /> - <apn carrier="Orange CM" mcc="624" mnc="02" apn="orangecmgprs" user="orange" password="orange" proxy="192.168.122.101" port="8080" mmsc="http://mms.orange.cm" mmsproxy="192.168.122.101" mmsport="8080" type="default,mms" /> - <apn carrier="CVMóvel Internet" mcc="625" mnc="01" apn="internet-aac" proxy="" user="" password="" type="default" /> - <apn carrier="Orange GQ MMS" mcc="627" mnc="01" apn="orangemms" user="mms" password="mms" mmsc="http://192.168.17.34/servlets/mms" mmsproxy="192.168.17.2" mmsport="8080" type="mms" /> - <apn carrier="Orange GQ" mcc="627" mnc="01" apn="orangenet" user="net" password="net" type="default,supl" /> - <apn carrier="Vodacom CD" mcc="630" mnc="01" apn="vodanet" user="vodalive" type="default,supl" /> - <apn carrier="Vodacom CD" mcc="630" mnc="01" apn="vodanet" proxy="" port="" user="vodalive" password="" mmsc="" type="default,supl" /> - <apn carrier="Unitel Internet" mcc="631" mnc="02" apn="internet.unitel.co.ao" type="default,supl" /> - <apn carrier="Unitel MMS" mcc="631" mnc="02" apn="mms.unitel.co.ao" proxy="" port="" mmsproxy="10.128.2.70" mmsport="8080" mmsc="http://10.128.4.10/wapenc" type="mms" /> - <apn carrier="Movicel Angola" mcc="631" mnc="04" apn="internet.movicel.co.ao" type="default,supl" /> - <apn carrier="Movicel Angola MMS" mcc="631" mnc="04" apn="mms.movicel.co.ao" mmsc="http://10.33.14.180:8080" mmsproxy="10.33.15.133" mmsport="8080" type="mms" /> - <apn carrier="Zain Internet" mcc="634" mnc="01" apn="internet" authtype="1" type="default,supl" /> - <apn carrier="Zain MMS" mcc="634" mnc="01" apn="MMS" mmsc="http://mms.zain.sd" mmsproxy="172.20.2.124" mmsport="80" authtype="1" type="mms" /> - <apn carrier="MTN" mcc="634" mnc="02" apn="internet" authtype="1" type="default,supl" /> - <apn carrier="MMS" mcc="634" mnc="02" apn="mms" mmsc="http://mms.mtn.sd/mmsc" mmsproxy="172.24.97.20" mmsport="8080" type="mms" /> - <apn carrier="Sudina ONE" apn="sudaninet" user="sudani" password="sudani" mcc="634" mnc="07" authtype="1" type="default,supl" /> - <apn carrier="Sudani One MMS" mcc="634" mnc="07" apn="sudanimms" user="sudani" password="sudani" mmsc="http://10.50.182.30:38090/was" mmsproxy="10.50.189.114" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Tigo Connection" mcc="635" mnc="13" apn="web.tigo.rw" user="" password="" type="default,supl" /> - <apn carrier="MTN" mcc="636" mnc="01" apn="etc.com" user="etc" password="etc" type="*" /> - <apn carrier="Safaricom Live" mcc="639" mnc="02" apn="safaricom" proxy="172.22.2.38" port="8080" authtype="1" type="default,supl" /> - <apn carrier="Safaricom MMS" mcc="639" mnc="02" apn="safaricom" proxy="" port="" mmsproxy="172.22.2.38" mmsport="8080" mmsc="http://mms.gprs.safaricom.com" authtype="1" type="mms" /> - <apn carrier="Safaricom" mcc="639" mnc="02" apn="wap.safaricom.com" user="saf" password="data" mmsc="http://mms.gprs.safaricom.com" type="default,supl,mms" /> - <apn carrier="Airtel internet" mcc="639" mnc="03" apn="ke.celtel.com" proxy="172.30.8.50" port="8080" mmsc="" user="wap" password="wap" authtype="1" type="default,supl" /> - <apn carrier="yu" mcc="639" mnc="05" apn="internet" proxy="10.4.16.6" port="8080" type="default,supl" /> - <apn carrier="yu MMS" mcc="639" mnc="05" apn="iternet" mmsc="http://10.4.16.22/servlets/mms" mmsproxy="10.4.16.6" type="mms" /> - <apn carrier="Orange Ke" mcc="639" mnc="07" apn="bew.orange.co.ke" user="" password="" type="default,supl" /> - <apn carrier="Orange wap" mcc="639" mnc="07" apn="wap.orange.co.ke" proxy="10.36.17.130" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Orange MMS" mcc="639" mnc="07" apn="mms.orange.co.ke" proxy="" port="" mmsproxy="10.36.17.130" mmsport="8080" mmsc="http://10.36.16.5/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Orange KE" mcc="639" mnc="07" apn="bew.orange.co.ke" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange net KE" mcc="639" mnc="07" apn="wap.orange.co.ke" type="default,supl" /> - <apn carrier="Orange MMS" mcc="639" mnc="07" apn="mms.orange.co.ke" mmsproxy="10.36.16.5" mmsport="8080" mmsc="http://10.36.16.5/servlets/mms" type="mms" /> - <apn carrier="Vodacom Internet" mcc="640" mnc="04" apn="internet" user="" password="" type="default,supl" /> - <apn carrier="Vodacom MMS" mcc="640" mnc="04" apn="MMS" proxy="" port="" mmsproxy="10.154.0.8" mmsport="9401" mmsc="http://10.154.0.12/mms/" user="" password="" type="mms" /> - <apn carrier="Vodacom WAP" mcc="640" mnc="04" apn="wap" proxy="10.154.0.8" port="9401" type="default,supl" /> - <apn carrier="Airtel Tanzania" mcc="640" mnc="05" apn="internet" type="default,supl" /> - <apn carrier="Airtel UG" mcc="641" mnc="01" apn="web.ug.zain.com" type="default,supl" /> - <apn carrier="MTN UG" mcc="641" mnc="10" apn="yellopix.mtn.co.ug" type="default,supl" /> - <apn carrier="MTN" mcc="641" mnc="10" apn="yellopix.men.co.ug" proxy="10.120.0.138" port="8080" mmsproxy="10.120.0.138" mmsport="8080" mmsc="http://mtn.mmsc/servlets/mms" type="*" /> - <apn carrier="Uganda Telecom" mcc="641" mnc="11" apn="utweb" type="default,supl" /> - <apn carrier="ORANGE WAP" mcc="641" mnc="14" apn="orange.ug" proxy="10.201.20.4" port="9201" type="default,supl" /> - <apn carrier="Orange MMS" mcc="641" mnc="14" apn="orangemms" proxy="" port="" mmsproxy="10.201.20.4" mmsport="9201" mmsc="http://10.201.20.5" type="mms" /> - <apn carrier="Orange Internet UG" mcc="641" mnc="14" apn="orange.ug" type="default,supl" /> - <apn carrier="Orange MMS" mcc="641" mnc="14" apn="orangemms" mmsc="http://mms/" type="mms" /> - <apn carrier="Orange UG" mcc="641" mnc="14" apn="orange.ug" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Waridtel UG" mcc="641" mnc="22" apn="web.waridtel.co.ug" type="default,supl" /> - <apn carrier="Africell Burundi" mcc="642" mnc="02" apn="africellnet" type="default,supl" /> - <apn carrier="Zambia WAP" mcc="645" mnc="01" apn="wap" proxy="10.150.0.140" port="8080" type="default,supl" /> - <apn carrier="Zambia MMS" mcc="645" mnc="01" apn="mms" proxy="" port="" mmsproxy="10.150.0.140" mmsport="9201" mmsc="http://10.150.0.130/servlets/mms" type="mms" /> - <apn carrier="MTN MMS" mcc="645" mnc="02" apn="mms" proxy="" port="" mmsproxy="10.110.22.20" mmsport="8080" mmsc="http://010.110.022.12:38090" type="mms" /> - <apn carrier="MTN WAP" mcc="645" mnc="02" apn="wap" proxy="10.110.22.20" port="8080" type="default,supl" /> - <apn carrier="MTN GPRS" mcc="645" mnc="02" apn="Internet" type="default,supl" /> - <apn carrier="AirtelWAP" mcc="646" mnc="01" apn="wap.mg.airtel.com" proxy="10.77.48.50" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="AirtelWEB" mcc="646" mnc="01" apn="internet.mg.airtel.com" proxy="10.77.48.50" port="8080" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="AirtelMMS" mcc="646" mnc="01" apn="mms.mg.airtel.com" proxy="" port="" user="" password="" mmsc="http://10.77.48.35/servlets/mms" mmsproxy="10.77.48.50" mmsport="8080" type="mms" /> - <apn carrier="Orangenet" mcc="646" mnc="02" apn="orangenet" proxy="" port="" user="" password="" type="default,supl" /> - <apn carrier="Orange World" mcc="646" mnc="02" apn="orangeworld" proxy="10.150.0.115" port="8080" user="world" password="orange" type="default,supl" /> - <apn carrier="Orange MMS" mcc="646" mnc="02" apn="orangemms" user="mms" password="orange" mmsc="http://10.152.10.70:38090" mmsproxy="10.150.0.115" mmsport="8080" type="mms" /> - <apn carrier="Orange MG MMS" mcc="646" mnc="02" apn="orangemms" user="mms" password="orange" mmsc="http://10.152.10.70.38090" mmsproxy="10.150.0.115" mmsport="8080" type="mms" /> - <apn carrier="Orange World MG" mcc="646" mnc="02" apn="orangeworld" user="world" password="orange" proxy="10.150.0.115" port="8080" type="default,supl" /> - <apn carrier="Orange MG" mcc="646" mnc="02" apn="orangenet" type="default,supl" /> - <apn carrier="TELMA GPRS" mcc="646" mnc="04" apn="internet" proxy="" port="" mmsc="" type="default,supl" /> - <apn carrier="TELMA MMS" mcc="646" mnc="04" apn="mms" proxy="" port="" mmsc="http://10.6.4.34:1981" mmsproxy="10.6.4.34" mmsport="8080" type="mms" /> - <apn carrier="Orange World" mcc="647" mnc="00" apn="orangerun" proxy="192.168.010.100" port="8080" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange MMS" mcc="647" mnc="00" apn="orangerun.acte" proxy="" port="" mmsproxy="192.168.10.200" mmsport="8080" mmsc="http://mms.orange.re" user="orange" password="orange" type="mms" /> - <apn carrier="Internet" mcc="647" mnc="00" apn="orangerun" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange MMS" mcc="647" mnc="00" apn="orangerun.acte" user="orange" password="orange" mmsc="http://mms.orange.re/" mmsproxy="192.168.010.200" mmsport="8080" type="mms" /> - <apn carrier="Orange RE MMS" mcc="647" mnc="00" apn="orangerun.acte" user="orange" password="orange" mmsc="http://mms.orange.re/" mmsproxy="192.168.010.200" mmsport="8080" type="mms" /> - <apn carrier="Orange RE" mcc="647" mnc="00" apn="orangerun" user="orange" password="orange" type="default,supl" /> - <apn carrier="Orange MMS Réunion" mcc="647" mnc="00" apn="orangerun.acte" user="orange" password="orange" mmsc="http://mms.orange.re" mmsproxy="192.168.10.200" mmsport="8080" type="mms" /> - <apn carrier="Onlyplanet" mcc="647" mnc="02" apn="onlywap" proxy="10.4.85.50" port="8080" user="only" password="only" type="default,supl" /> - <apn carrier="onlymms" mcc="647" mnc="02" apn="onlymms" proxy="" port="" mmsproxy="10.4.85.50" mmsport="8080" mmsc="http://10.4.85.50:8514" user="only" password="only" type="mms" /> - <apn carrier="WAP GPRS SRR" mcc="647" mnc="10" apn="wapsfr" proxy="10.0.224.161" port="8080" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="MMS GPRS SRR" mcc="647" mnc="10" apn="mmssfr" proxy="" port="" mmsproxy="10.0.224.145" mmsport="8080" mmsc="http://mms" user="mms" password="mms" type="mms" /> - <apn carrier="WEB GPRS SRR" mcc="647" mnc="10" apn="websfr" type="default,supl" /> - <apn carrier="SFR MMS" mcc="647" mnc="10" apn="mmssfr" mmsc="http://mms" mmsproxy="10.0.224.145" mmsport="8080" type="mms" /> - <apn carrier="SFR NET" mcc="647" mnc="10" apn="sl2sfr" type="default,supl" /> - <apn carrier="Econet" mcc="648" mnc="04" apn="econet.net" user="" password="" type="default,supl" /> - <apn carrier="TNM" mcc="650" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="Mascom_Internet" mcc="652" mnc="01" apn="internet.mascom" user="" password="" type="default,supl" /> - <apn carrier="Mascom_Wap" mcc="652" mnc="01" apn="wap.mascom" proxy="192.168.33.138" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Orange BW MMS" mcc="652" mnc="02" apn="mms.orange.co.bw" mmsc="http://10.0.0.242/servlets/mms" mmsproxy="10.0.0.226" mmsport="8080" type="mms" /> - <apn carrier="Orange WAP BW" mcc="652" mnc="02" apn="internet.orange.co.bw" proxy="10.0.0.226" port="8080" type="default,supl" /> - <apn carrier="MTN" mcc="653" mnc="10" apn="mymtn.co.sz" proxy="" port="" user="" password="" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Vlive!" mcc="655" mnc="01" apn="internet" proxy="196.6.128.12" port="8080" mmsc="" user="" password="" authtype="3" type="default,supl" /> - <apn carrier="Vlive!MMS" mcc="655" mnc="01" apn="mms.vodacom.net" proxy="" port="" mmsproxy="196.6.128.13" mmsport="8080" mmsc="http://mmsc.vodacom4me.co.za" user="" password="" authtype="3" type="mms" /> - <apn carrier="Vodacom ZA" mcc="655" mnc="01" apn="internet" type="default,supl" /> - <apn carrier="Vodacom ZA MMS" mcc="655" mnc="01" apn="mms.vodacom.net" mmsc="http://mmsc.vodacom4me.co.za/" mmsproxy="196.6.128.13" mmsport="8080" type="mms" /> - <apn carrier="LTE.Vodacom" mcc="655" mnc="01" apn="lte.vodacom.za" type="default,supl" /> - <apn carrier="TelkomSA internet" mcc="655" mnc="02" apn="internet" type="default,supl" /> - <apn carrier="TelkomSA mms" mcc="655" mnc="02" apn="mms" mmsc="http://mms.8ta.com:38090/was" mmsproxy="41.151.254.162" mmsport="8080" type="mms" /> - <apn carrier="CELL C INTERNET" mcc="655" mnc="07" apn="internet" proxy="" port="8080" mmsproxy="196.31.116.250" mmsport="8080" mmsc="http://mms.cmobile.co.za" type="*" /> - <apn carrier="Cell C MMS" mcc="655" mnc="07" apn="mms" mmsc="http://mms.cmobile.co.za" mmsproxy="196.031.116.250" mmsport="8080" type="mms" /> - <apn carrier="Virgin Mobile SA Internet" mcc="655" mnc="07" apn="vdata" type="default,supl" /> - <apn carrier="Virgin Mobile SA Internet" mcc="655" mnc="07" apn="vmms" mmsc="http://mms.virginmobile.co.za" mmsproxy="196.31.116.242" mmsport="8080" type="mms" /> - <apn carrier="MTN" mcc="655" mnc="10" apn="myMTN" proxy="196.11.240.251" port="8080" mmsc="" user="mtnwap" password="mtnwap" type="default,supl" /> - <apn carrier="MTN MMS" mcc="655" mnc="10" apn="myMTN" proxy="" port="" mmsproxy="196.11.240.241" mmsport="8080" mmsc="" user="mtnmms" password="mtnmms" type="mms" /> - <apn carrier="MTN-WAP" mcc="655" mnc="10" apn="myMTN" proxy="196.11.240.251" port="9201" mmsc="" user="mtnwap" password="mtnwap" authtype="1" type="default,supl" /> - <apn carrier="MTN SA Web" mcc="655" mnc="10" apn="internet" type="default,supl" /> - <apn carrier="MTN ZA" mcc="655" mnc="10" apn="myMTN" user="mtn" password="mtn" server="*" type="default,supl" /> - <apn carrier="INTERNET TIGO GT" mcc="704" mnc="02" apn="internet.tigo.gt" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO GT" mcc="704" mnc="02" apn="mms.tigo.gt" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="704" mnc="03" apn="internet.movistar.gt" user="movistargt" password="movistargt" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="704" mnc="03" apn="mms.movistar.gt" proxy="" port="" mmsproxy="10.12.22.1" mmsport="80" mmsc="http://mms.movistar.gt" user="movistargt" password="movistargt" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="704" mnc="030" apn="internet.movistar.gt" user="movistargt" password="movistargt" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="704" mnc="030" apn="mms.movistar.gt" proxy="" port="" mmsproxy="10.12.22.1" mmsport="80" mmsc="http://mms.movistar.gt" user="movistargt" password="movistargt" type="mms" /> - <apn carrier="Claro SV" mcc="706" mnc="01" apn="internet.claro.sv" type="default,supl" /> - <apn carrier="Claro SV MMS" mcc="706" mnc="01" apn="mms.claro.sv" mmsc="http://mms.claro.sv" mmsproxy="216.230.133.66" mmsport="8080" type="mms" /> - <apn carrier="Digicel Web" mcc="706" mnc="02" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="706" mnc="02" apn="wap" proxy="" port="" mmsproxy="172.26.5.12" mmsport="8080" mmsc="http://mms.digicelgroup.com" user="" password="" type="mms" /> - <apn carrier="Digicel SV" mcc="706" mnc="02" apn="wap.digicelsv.com" type="default,supl" /> - <apn carrier="Digicel SV MMS" mcc="706" mnc="02" apn="wap.digicelsv.com" mmsc="http://172.26.5.132/servlets/mms" mmsproxy="172.26.5.12" mmsport="8080" type="mms" /> - <apn carrier="INTERNET TIGO SV" mcc="706" mnc="03" apn="internet.tigo.sv" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO SV" mcc="706" mnc="03" apn="mms.tigo.sv" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="INTERNET TIGO SV" mcc="706" mnc="030" apn="internet.tigo.sv" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO SV" mcc="706" mnc="030" apn="mms.tigo.sv" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="Movistar MMS" mcc="706" mnc="04" apn="mms.movistar.sv" proxy="" port="" mmsproxy="10.12.20.1" mmsport="80" mmsc="http://mms.movistar.sv" user="movistarsv" password="movistarsv" type="mms" /> - <apn carrier="Movistar SV" mcc="706" mnc="04" apn="internet.movistar.sv" proxy="" port="" user="movistarsv" password="movistarsv" mmsc="" type="default, supl" /> - <apn carrier="Movistar SV MMS" mcc="706" mnc="04" apn="mms.movistar.sv" proxy="" port="" user="movistarsv" password="movistarsv" mmsc="http://mms.movistar.sv" mmsproxy="10.12.20.1" mmsport="80" type="mms" /> - <apn carrier="Movistar SV" mcc="706" mnc="040" apn="internet.movistar.sv" proxy="" port="" user="movistarsv" password="movistarsv" mmsc="" type="default, supl" /> - <apn carrier="Movistar SV MMS" mcc="706" mnc="040" apn="mms.movistar.sv" proxy="" port="" user="movistarsv" password="movistarsv" mmsc="http://mms.movistar.sv" mmsproxy="10.12.20.1" mmsport="80" type="mms" /> - <apn carrier="INTERNET TIGO HN" mcc="708" mnc="02" apn="internet.tigo.hn" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO HN" mcc="708" mnc="02" apn="mms.tigo.hn" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="INTERNET TIGO HN" mcc="708" mnc="020" apn="internet.tigo.hn" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO HN" mcc="708" mnc="020" apn="mms.tigo.hn" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="710" mnc="300" apn="internet.movistar.ni" user="movistarni" password="movistarni" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="710" mnc="300" apn="mms.movistar.ni" proxy="" port="" mmsproxy="10.12.23.1" mmsport="80" mmsc="http://mms.movistar.ni" user="movistarni" password="movistarni" authtype="1" type="mms" /> - <apn carrier="Enitel" mcc="710" mnc="21" apn="internet.ideasalo.ni" type="default,supl,dun" user="internet" password="internet" authtype="1" /> - <apn carrier="Enitel MMS" mcc="710" mnc="21" apn="mms.ideasalo.ni" user="mms" password="mms" mmsproxy="10.6.32.2" mmsport="8080" mmsc="http://10.6.32.27/servlets/mms" authtype="1" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="710" mnc="30" apn="internet.movistar.ni" user="movistarni" password="movistarni" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="710" mnc="30" apn="mms.movistar.ni" proxy="" port="" mmsproxy="10.12.23.1" mmsport="80" mmsc="http://mms.movistar.ni" user="movistarni" password="movistarni" authtype="1" type="mms" /> - <apn carrier="Enitel" mcc="710" mnc="73" apn="internet.ideasalo.ni" user="internet" password="internet" authtype="1" type="default,supl,dun" /> - <apn carrier="Enitel MMS" mcc="710" mnc="73" apn="mms.ideasalo.ni" user="mms" password="mms" mmsproxy="10.6.32.2" mmsport="8080" mmsc="http://10.6.32.27/servlets/mms" authtype="1" type="mms" /> - <apn carrier="Enitel" mcc="710" mnc="730" apn="internet.ideasalo.ni" user="internet" password="internet" authtype="1" type="default,supl,dun" /> - <apn carrier="Enitel MMS" mcc="710" mnc="730" apn="mms.ideasalo.ni" user="mms" password="mms" mmsproxy="10.6.32.2" mmsport="8080" mmsc="http://10.6.32.27/servlets/mms" authtype="1" type="mms" /> - <apn carrier="Kolbi" mcc="712" mnc="01" apn="kolbi3g" type="default,supl" /> - <apn carrier="Kolbi MMS" mcc="712" mnc="01" apn="kolbimundo" mmsc="http://mmsice" mmsproxy="10.184.202.24" mmsport="8080" type="mms" /> - <apn carrier="Mundo Kolbi" mcc="712" mnc="01" apn="kolbi3g" proxy="172.27.10.4" port="8080" type="default,supl" /> - <apn carrier="Mundo Kolbi MMS" mcc="712" mnc="01" apn="mmscelular" mmsc="http://mmsice" mmsproxy="172.27.10.4" mmsport="8080" type="mms" /> - <apn carrier="Kolbi" mcc="712" mnc="02" apn="kolbi3g" type="default,supl" /> - <apn carrier="Kolbi MMS" mcc="712" mnc="02" apn="kolbimundo" mmsc="http://mmsice" mmsproxy="10.184.202.24" mmsport="8080" type="mms" /> - <apn carrier="Claro" mcc="712" mnc="03" apn="internet.ideasclaro" type="default,supl" /> - <apn carrier="Claro MMS" mcc="712" mnc="03" apn="mms.ideasclaro" mmsproxy="216.230.133.66" mmsport="8080" mmsc="http://mms.ideasclaro.com:8002" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="712" mnc="04" apn="internet.movistar.cr" user="movistarcr" password="movistarcr" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="712" mnc="04" apn="mms.movistar.cr" proxy="" port="" mmsproxy="10.221.79.83" mmsport="80" mmsc="http://mms.movistar.cr" user="movistarcr" password="movistarcr" authtype="1" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="714" mnc="002" apn="internet.movistar.pa" user="movistarpa" password="movistarpa" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="714" mnc="002" apn="mms.movistar.pa" proxy="" port="" mmsproxy="10.12.21.1" mmsport="80" mmsc="http://mms.movistar.pa/" user="movistarpamms" password="movistarpa" type="mms" /> - <apn carrier="+ movil internet" mcc="714" mnc="01" apn="apn01.cwpanama.com.pa" proxy="172.25.3.5" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="+movil MMS" mcc="714" mnc="01" apn="apn02.cwpanama.com.pa" proxy="" port="" mmsproxy="172.25.3.5" mmsport="8080" mmsc="http://mms.zonamovil.com.pa" user="" password="" type="mms" /> - <apn carrier="Cable and Wireless Panama" mcc="714" mnc="01" apn="apn01.cwpanama.com.pa" type="default,supl" /> - <apn carrier="Cable and Wireless Panama MMS" mcc="714" mnc="01" apn="apn02.cwpanama.com.pa" mmsc="http://mms.zonamovil.com.pa:80/i.bin" mmsproxy="172.25.3.5" mmsport="8080" type="mms" /> - <apn carrier="+movil internet" mcc="714" mnc="010" apn="apn01.cwpanama.com.pa" proxy="172.25.3.5" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="+movil MMS" mcc="714" mnc="010" apn="apn02.cwpanama.com.pa" proxy="" port="" mmsproxy="172.25.3.5" mmsport="8080" mmsc="http://mms.zonamovil.com.pa" user="" password="" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="714" mnc="02" apn="internet.movistar.pa" user="movistarpa" password="movistarpa" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="714" mnc="02" apn="mms.movistar.pa" proxy="" port="" mmsproxy="10.12.21.1" mmsport="80" mmsc="http://mms.movistar.pa/" user="movistarpamms" password="movistarpa" type="mms" /> - <apn carrier="Movistar PA" mcc="714" mnc="02" apn="internet.movistar.pa" user="movistarpa" password="movistarpa" type="default,supl"/> - <apn carrier="Movistar INTERNET" mcc="714" mnc="020" apn="internet.movistar.pa" user="movistarpa" password="movistarpa" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="714" mnc="020" apn="mms.movistar.pa" proxy="" port="" mmsproxy="10.12.21.1" mmsport="80" mmsc="http://mms.movistar.pa/" user="movistarpamms" password="movistarpa" type="mms" /> - <apn carrier="PA WAP CLARO" mcc="714" mnc="03" apn="wap.claro.com.pa" proxy="10.240.3.1" port="8799" mmsc="" user="CLAROWAP" password="CLAROWAP" type="default,supl" /> - <apn carrier="PA MMS CLARO" mcc="714" mnc="03" apn="mms.claro.com.pa" proxy="" port="" mmsproxy="10.240.3.129" mmsport="9201" mmsc="http://www.claro.com.pa/mms/" user="CLAROMMS" password="CLAROMMS" type="mms" /> - <apn carrier="Claro Web" mcc="714" mnc="03" apn="web.claro.com.pa" user="CLAROWEB" password="CLAROWEB" authtype="1" type="default,supl" /> - <apn carrier="Claro MMS" mcc="714" mnc="03" apn="mms.claro.com.pa" user="CLAROMMS" password="CLAROMMS" mmsc="http://www.claro.com.pa/mms" authtype="1" type="mms" /> - <apn carrier="Digicel Web" mcc="714" mnc="04" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="714" mnc="04" apn="wap" proxy="" port="" mmsproxy="172.27.99.99" mmsport="8080" mmsc="http://mmc.digicelpanama.com/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Digicel PA" mcc="714" mnc="04" apn="web.digicelpanama.com" type="default,supl" /> - <apn carrier="Digicel Web" mcc="714" mnc="040" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" apn="wap" mcc="714" mnc="040" proxy="" port="" mmsproxy="172.27.99.99" mmsport="8080" mmsc="http://mmc.digicelpanama.com/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="714" mnc="20" apn="internet.movistar.pa" user="movistarpa" password="movistarpa" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="714" mnc="20" apn="mms.movistar.pa" proxy="" port="" mmsproxy="10.12.21.1" mmsport="80" mmsc="http://mms.movistar.pa/" user="movistarpamms" password="movistarpa" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="716" mnc="06" apn="movistar.pe" user="movistar@datos" password="movistar" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="716" mnc="06" apn="mms.movistar.pe" proxy="" port="" mmsproxy="200.4.196.118" mmsport="8080" mmsc="http://mmsc.telefonicamovistar.com.pe:8088/mms/" user="movistar@mms" password="movistar" authtype="1" type="mms" /> - <apn carrier="CLARO DATOS" mcc="716" mnc="10" apn="claro.pe" user="claro" password="claro" authtype="1" type="default,supl" /> - <apn carrier="Claro MMS" mcc="716" mnc="10" apn="mms.claro.pe" proxy="" port="" mmsproxy="192.168.231.30" mmsport="80" mmsc="http://claro/servlets/mms" user="claro" password="claro" authtype="1" type="mms" /> - <apn carrier="Entel Internet" mcc="716" mnc="17" apn="entel.pe" user="" password="" authtype="0" type="default,supl" /> - <apn carrier="Entel MMS" mcc="716" mnc="17" apn="mms.entel.pe" proxy="" port="" mmsc="http://mms.nextel.pe" user="" password="" authtype="0" type="mms" /> - <apn carrier="Movistar AG" mcc="722" mnc="007" apn="internet.unifon" user="wap" password="password" type="default,supl" /> - <apn carrier="Movistar AG MMS" mcc="722" mnc="007" apn="mms.gprs.unifon.com.ar" user="mms" password="mms" mmsc="http://mms.tmovil.cl/" mmsproxy="200.068.032.239" mmsport="9201" type="mms" /> - <apn carrier="QUAM" mcc="722" mnc="01" apn="internet.movil" user="internet" password="internet" authtype="1" type="default,supl,dun" /> - <apn carrier="QUAM MMS" mcc="722" mnc="01" apn="mms.movil" user="mms" password="mms" mmsc="http://mms.quam.com.ar" mmsproxy="200.68.32.239" mmsport="9090" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="07" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="07" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" authtype="1" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="070" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="070" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="071" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="071" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="072" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="072" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="073" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="073" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="074" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="074" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="075" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="075" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="076" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="076" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="077" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="077" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="078" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="078" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar WAP" mcc="722" mnc="079" apn="wap.gprs.unifon.com.ar" mmsc="" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="722" mnc="079" apn="mms.gprs.unifon.com.ar" proxy="" port="" mmsproxy="200.68.32.239" mmsport="8080" mmsc="http://mms.movistar.com.ar" user="mms" password="mms" type="mms" /> - <apn carrier="Personal WAP" mcc="722" mnc="34" apn="gprs.personal.com" user="" password="" type="default,supl" /> - <apn carrier="Personal MMS" mcc="722" mnc="34" apn="mms" proxy="" port="" mmsproxy="172.25.7.31" mmsport="8080" mmsc="http://mms.personal.com" user="mms" password="mms" type="mms" /> - <apn carrier="Personal" mcc="722" mnc="34" apn="datos.personal.com" user="datos" password="datos" type="default,supl" /> - <apn carrier="Personal MMS" mcc="722" mnc="34" apn="mms" user="mms" password="mms" mmsc="http://mms.personal.com/" mmsproxy="172.025.007.031" mmsport="9201" type="mms" /> - <apn carrier="Personal" mcc="722" mnc="34" apn="gprs.personal.com" proxy="" port="" user="gprs" password="" mmsc="" type="default,supl" /> - <apn carrier="Personal MMS" mcc="722" mnc="34" apn="mms" proxy="" port="" user="mms" password="mms" mmsc="http://mms.personal.com/" mmsproxy="172.25.7.31" mmsport="9201" type="mms" /> - <apn carrier="Claro Internet" mcc="722" mnc="310" apn="igprs.claro.com.ar" user="ctigprs" password="ctigprs999" type="default,supl" /> - <apn carrier="Claro AR MMS" mcc="722" mnc="310" apn="mms.ctimovil.com.ar" user="ctimms" password="ctimms999" mmsc="http://mms.ctimovil.com.ar" mmsproxy="170.051.255.240" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="CTI" mcc="722" mnc="310" apn="internet.ctimovil.com.ar" user="guest" password="guest" type="default,supl" /> - <apn carrier="CTI MMS" mcc="722" mnc="310" apn="mms.ctimovil.com.ar" user="ctimms" password="ctimms999" mmsc="http://mms.ctimovil.com.ar" mmsproxy="170.051.255.240" mmsport="9201" type="mms" /> - <apn carrier="CTI" mcc="722" mnc="310" apn="internet.ctimovil.com.ar" proxy="" port="" user="guest" password="guest" mmsc="" type="default,supl" /> - <apn carrier="CTI MMS" mcc="722" mnc="310" apn="mms.ctimovil.com.ar" proxy="" port="" user="ctimms" password="ctimms999" mmsc="http://mms.ctimovil.com.ar" mmsproxy="170.51.255.240" mmsport="9201" type="mms" /> - <apn carrier="Claro AR" mcc="722" mnc="310" apn="igprs.claro.com.ar" proxy="" port="" user="ctigprs" password="ctigpr999" mmsc="" authtype="1" type="default,supl" /> - <apn carrier="Claro AR MMS" mcc="722" mnc="310" apn="mms.ctimovil.com.ar" proxy="" port="" user="ctimms" password="ctimms999" mmsc="http://mms.ctimovil.com.ar" mmsproxy="170.51.255.240" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Personal WAP" mcc="722" mnc="341" apn="gprs.personal.com" user="" password="" type="default,supl" /> - <apn carrier="Personal MMS" mcc="722" mnc="341" apn="mms" proxy="" port="" mmsproxy="172.25.7.31" mmsport="8080" mmsc="http://mms.personal.com" user="mms" password="mms" type="mms" /> - <apn carrier="Personal" mcc="722" mnc="341" apn="datos.personal.com" user="datos" password="datos" type="default,supl" /> - <apn carrier="Personal MMS" mcc="722" mnc="341" apn="mms" user="mms" password="mms" mmsc="http://mms.personal.com/" mmsproxy="172.025.007.031" mmsport="9201" type="mms" /> - <apn carrier="TIM Connect FAST" mcc="724" mnc="02" apn="timbrasil.br" user="tim" password="tim" mmsc="http://www.google.com.br" authtype="1" type="default,supl" /> - <apn carrier="TIM WAP FAST" mcc="724" mnc="02" apn="wap.tim.br" user="tim" password="tim" mmsc="http://wap.tim.com.br" proxy="200.244.116.65" port="8080" type="default,supl" /> - <apn carrier="TIM MMS" mcc="724" mnc="02" apn="mms.tim.br" user="tim" password="tim" mmsc="http://mms.tim.br" mmsproxy="200.179.66.242" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="TIM BR CONNECT FAST" mcc="724" mnc="02" apn="tim.br" proxy="" port="" user="tim" password="tim" mmsc="null" type="default,supl" /> - <apn carrier="TIM Connect FAST" mcc="724" mnc="03" apn="timbrasil.br" user="tim" password="tim" mmsc="http://www.google.com.br" authtype="1" type="default,supl" /> - <apn carrier="TIM WAP FAST" mcc="724" mnc="03" apn="wap.tim.br" user="tim" password="tim" mmsc="http://wap.tim.com.br" proxy="200.244.116.65" port="8080" type="default,supl" /> - <apn carrier="TIM MMS" mcc="724" mnc="03" apn="mms.tim.br" user="tim" password="tim" mmsc="http://mms.tim.br" mmsproxy="200.179.66.242" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="TIM BR CONNECT FAST" mcc="724" mnc="03" apn="tim.br" proxy="" port="" user="tim" password="tim" mmsc="null" type="default,supl" /> - <apn carrier="TIM Connect FAST" mcc="724" mnc="04" apn="timbrasil.br" user="tim" password="tim" mmsc="http://www.google.com.br" authtype="1" type="default,supl" /> - <apn carrier="TIM WAP FAST" mcc="724" mnc="04" apn="wap.tim.br" user="tim" password="tim" mmsc="http://wap.tim.com.br" proxy="200.244.116.65" port="8080" type="default,supl" /> - <apn carrier="TIM MMS" mcc="724" mnc="04" apn="mms.tim.br" user="tim" password="tim" mmsc="http://mms.tim.br" mmsproxy="200.179.66.242" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="TIM BR CONNECT FAST" mcc="724" mnc="04" apn="tim.br" proxy="" port="" user="tim" password="tim" mmsc="null" type="default,supl" /> - <apn carrier="Claro Dados" mcc="724" mnc="05" apn="claro.com.br" mmsc="http://www.google.com.br" user="claro" password="claro" authtype="1" type="default,supl" /> - <apn carrier="Portal Claro" mcc="724" mnc="05" apn="wap.claro.com.br" proxy="200.169.126.11" port="8799" mmsc="http://wap.claro.com.br" user="claro" password="claro" type="default,supl" /> - <apn carrier="Claro Foto" mcc="724" mnc="05" apn="mms.claro.com.br" proxy="" port="" mmsproxy="200.169.126.10" mmsport="8799" mmsc="http://mms.claro.com.br" user="claro" password="claro" authtype="1" type="mms" /> - <apn carrier="Vivo Internet" mcc="724" mnc="06" apn="zap.vivo.com.br" mmsc="http://www.google.com.br" user="vivo" password="vivo" authtype="1" type="default,supl" /> - <apn carrier="Vivo WAP" mcc="724" mnc="06" apn="wap.vivo.com.br" proxy="200.142.130.104" port="80" mmsc="http://termwapgsm2.vivo.com.br" user="vivo" password="vivo" type="default,supl" /> - <apn carrier="Vivo MMS" mcc="724" mnc="06" apn="mms.vivo.com.br" proxy="" port="" mmsproxy="200.142.130.104" mmsport="80" mmsc="http://termnat.vivomms.com.br:8088/mms" user="vivo" password="vivo" authtype="1" type="mms" /> - <apn carrier="SCTL MMS" mcc="724" mnc="07" apn="mms.sercomtel.com.br" user="sercomtel" password="sercomtel" mmsc="http://mms.claro.com.br" mmsproxy="200.169.126.10" mmsport="8799" type="mms" /> - <apn carrier="SCTL GPRS" mcc="724" mnc="07" apn="sercomtel.com.br" user="sercomtel" password="sercomtel" mmsc="null" type="default,supl" /> - <apn carrier="TIM Connect FAST" mcc="724" mnc="08" apn="timbrasil.br" user="tim" password="tim" mmsc="http://www.google.com.br" authtype="1" type="default,supl" /> - <apn carrier="TIM WAP FAST" mcc="724" mnc="08" apn="wap.tim.br" user="tim" password="tim" mmsc="http://wap.tim.com.br" proxy="200.244.116.65" port="8080" type="default,supl" /> - <apn carrier="TIM MMS" mcc="724" mnc="08" apn="mms.tim.br" user="tim" password="tim" mmsc="http://mms.tim.br" mmsproxy="200.179.66.242" mmsport="8080" authtype="1" type="mms" /> - <apn carrier="Vivo Internet" mcc="724" mnc="10" apn="zap.vivo.com.br" mmsc="http://www.google.com.br" user="vivo" password="vivo" authtype="1" type="default,supl" /> - <apn carrier="Vivo WAP" mcc="724" mnc="10" apn="wap.vivo.com.br" proxy="200.142.130.104" port="80" mmsc="http://termwapgsm2.vivo.com.br" user="vivo" password="vivo" type="default,supl" /> - <apn carrier="Vivo MMS" mcc="724" mnc="10" apn="mms.vivo.com.br" proxy="" port="" mmsproxy="200.142.130.104" mmsport="80" mmsc="http://termnat.vivomms.com.br:8088/mms" user="vivo" password="vivo" authtype="1" type="mms" /> - <apn carrier="VIVO ZAP" mcc="724" mnc="10" apn="zap.vivo.com.br" user="vivo" password="vivo" mmsc="null" type="default,supl" /> - <apn carrier="Vivo Internet" mcc="724" mnc="11" apn="zap.vivo.com.br" mmsc="http://www.google.com.br" user="vivo" password="vivo" authtype="1" type="default,supl" /> - <apn carrier="Vivo WAP" mcc="724" mnc="11" apn="wap.vivo.com.br" proxy="200.142.130.104" port="80" mmsc="http://termwapgsm2.vivo.com.br" user="vivo" password="vivo" type="default,supl" /> - <apn carrier="Vivo MMS" mcc="724" mnc="11" apn="mms.vivo.com.br" proxy="" port="" mmsproxy="200.142.130.104" mmsport="80" mmsc="http://termnat.vivomms.com.br:8088/mms" user="vivo" password="vivo" authtype="1" type="mms" /> - <apn carrier="VIVO ZAP" mcc="724" mnc="11" apn="zap.vivo.com.br" user="vivo" password="vivo" mmsc="null" type="default,supl" /> - <apn carrier="Oi Velox" mcc="724" mnc="16" apn="gprs.oi.com.br" mmsc="http://www.google.com.br" user="oi" password="oi" authtype="1" type="default,supl" /> - <apn carrier="Oi WAP GPRS" mcc="724" mnc="16" apn="wapgprs.oi.com.br" proxy="200.222.108.241" port="3128" mmsc="http://wap.oi.com.br" user="oiwap" password="oiwap" type="default,supl" /> - <apn carrier="Oi MMS" mcc="724" mnc="16" apn="mmsgprs.oi.com.br" proxy="" port="" mmsproxy="192.168.10.50" mmsport="3128" mmsc="http://200.222.42.204:8002/" user="oimms" password="oioioi" authtype="1" type="mms" /> - <apn carrier="BrT Internet" mcc="724" mnc="16" apn="brt.br" user="brt" password="brt" mmsc="null" type="default,supl" /> - <apn carrier="BrT MMS" mcc="724" mnc="16" apn="mms.brt.br" user="brt" password="brt" mmsc="http://mms.brasiltelecom.com.br/" mmsproxy="200.96.8.29" mmsport="8080" type="mms" /> - <apn carrier="Correios Celular" mcc="724" mnc="17" apn="internet.br" type="default,supl" /> - <apn carrier="Telemig GPRS" mcc="724" mnc="19" apn="gprs.telemigcelular.com.br" user="celular" password="celular" mmsc="null" type="default,supl" /> - <apn carrier="Telemig MMS" mcc="724" mnc="19" apn="mmsgprs.telemigcelular.com.br" user="celular" password="celular" mmsc="http://mms.telemigcelular.com.br" mmsproxy="200.192.230.142" mmsport="8080" type="mms" /> - <apn carrier="Vivo Internet" mcc="724" mnc="23" apn="zap.vivo.com.br" mmsc="http://www.google.com.br" user="vivo" password="vivo" authtype="1" type="default,supl" /> - <apn carrier="Vivo WAP" mcc="724" mnc="23" apn="wap.vivo.com.br" proxy="200.142.130.104" port="80" mmsc="http://termwapgsm2.vivo.com.br" user="vivo" password="vivo" type="default,supl" /> - <apn carrier="Vivo MMS" mcc="724" mnc="23" apn="mms.vivo.com.br" proxy="" port="" mmsproxy="200.142.130.104" mmsport="80" mmsc="http://termnat.vivomms.com.br:8088/mms" user="vivo" password="vivo" authtype="1" type="mms" /> - <apn carrier="Telemig GPRS" mcc="724" mnc="23" apn="gprs.telemigcelular.com.br" user="celular" password="celular" mmsc="null" type="default,supl" /> - <apn carrier="Telemig MMS" mcc="724" mnc="23" apn="mmsgprs.telemigcelular.com.br" user="celular" password="celular" mmsc="http://mms.telemigcelular.com.br" mmsproxy="200.192.230.142" mmsport="8080" type="mms" /> - <apn carrier="Telemig GPRS" mcc="724" mnc="23" apn="gprs.telemigcelular.com.br" proxy="" port="" user="celular" password="celular" mmsc="null" type="default,supl" /> - <apn carrier="Telemig MMS" mcc="724" mnc="23" apn="mmsgprs.telemigcelular.com.br" proxy="" port="" user="celular" password="celular" mmsc="http://mms.telemigcelular.com.br" mmsproxy="200.192.230.142" mmsport="8080" type="mms" /> - <apn carrier="Oi Velox" mcc="724" mnc="24" apn="gprs.oi.com.br" mmsc="http://www.google.com.br" user="oi" password="oi" authtype="1" type="default,supl" /> - <apn carrier="Oi WAP GPRS" mcc="724" mnc="24" apn="wapgprs.oi.com.br" proxy="200.222.108.241" port="3128" mmsc="http://wap.oi.com.br" user="oiwap" password="oiwap" type="default,supl" /> - <apn carrier="Oi MMS" mcc="724" mnc="24" apn="mmsgprs.oi.com.br" proxy="" port="" mmsproxy="192.168.10.50" mmsport="3128" mmsc="http://200.222.42.204:8002/" user="oimms" password="oioioi" authtype="1" type="mms" /> - <apn carrier="Amazonia GPRS" mcc="724" mnc="24" apn="gprs.amazoniacelular.com.br" user="celular" password="celular" mmsc="null" type="default,supl" /> - <apn carrier="Amazonia MMS" mcc="724" mnc="24" apn="mmsgprs.amazoniacelular.com.br" user="celular" password="celular" mmsc="http://mms.amazoniacelular.com.br" mmsproxy="200.192.230.142" mmsport="8080" type="mms" /> - <apn carrier="Oi Velox" mcc="724" mnc="31" apn="gprs.oi.com.br" mmsc="http://www.google.com.br" user="oi" password="oi" authtype="1" type="default,supl" /> - <apn carrier="Oi WAP GPRS" mcc="724" mnc="31" apn="wapgprs.oi.com.br" proxy="200.222.108.241" port="3128" mmsc="http://wap.oi.com.br" user="oiwap" password="oiwap" type="default,supl" /> - <apn carrier="Oi MMS" mcc="724" mnc="31" apn="mmsgprs.oi.com.br" proxy="" port="" mmsproxy="192.168.10.50" mmsport="3128" mmsc="http://200.222.42.204:8002/" user="oimms" password="oioioi" authtype="1" type="mms" /> - <apn carrier="Oi" mcc="724" mnc="31" apn="gprs.oi.com.br" proxy="" port="" user="oi" password="oi" mmsc="null" type="default,supl" /> - <apn carrier="CTBC MMS" mcc="724" mnc="32" apn="mms.ctbc.br" user="ctbc" password="1212" mmsc="http://mms.ctbccelular.com.br/was" mmsproxy="172.29.7.70" mmsport="8080" type="mms" /> - <apn carrier="CTBC MMS" mcc="724" mnc="33" apn="mms.ctbc.br" user="ctbc" password="1212" mmsc="http://mms.ctbccelular.com.br/was" mmsproxy="172.29.7.70" mmsport="8080" type="mms" /> - <apn carrier="CTBC 3G" mcc="724" mnc="34" apn="ctbc.br" mmsc="http://www.google.com.br" user="ctbc" password="1212" authtype="1" type="default,supl" /> - <apn carrier="CTBC WAP" mcc="724" mnc="34" apn="wap.ctbc.br" proxy="172.29.7.70" port="8080" mmsc="http://wap.ctbccelular.com.br" user="ctbc" password="1212" type="default,supl" /> - <apn carrier="CTBC MMS" mcc="724" mnc="34" apn="mms.ctbc.br" proxy="" port="" mmsproxy="172.29.7.70" mmsport="8080" mmsc="http://mms.ctbccelular.com.br/was" user="ctbc" password="1212" authtype="1" type="mms" /> - <apn carrier="Nextel Internet" mcc="724" mnc="39" apn="datacard.nextel3g.net.br" mmsc="http://www.google.com.br" user="Nextel3g" password="nextel" authtype="1" type="default,supl" /> - <apn carrier="Nextel WAP" mcc="724" mnc="39" apn="wap.nextel3g.net.br" user="" password="" type="default,supl" /> - <apn carrier="Nextel MMS" mcc="724" mnc="39" apn="mms.nextel3g.net.br" proxy="" port="" mmsproxy="129.129.129.104" mmsport="8080" mmsc="http://3gmms.nextel3g.net.br" user="" password="" authtype="1" type="mms" /> - <apn carrier="Nextel 3G" mcc="724" mnc="39" apn="datacard.nextel3g.net.br" type="default,supl" /> - <apn carrier="Internet Movil" mcc="730" mnc="01" apn="imovil.entelpcs.cl" user="entelpcs" password="entelpcs" type="default,supl" /> - <apn carrier="Entel PCS" mcc="730" mnc="01" apn="bam.entelpcs.cl" user="entelpcs" password="entelpcs" proxy="10.99.0.10" port="8080" type="default,supl" /> - <apn carrier="Entel MMS" mcc="730" mnc="01" apn="mms.entelpcs.cl" proxy="" port="" mmsproxy="10.99.0.10" mmsport="8080" mmsc="http://mmsc.entelpcs.cl" user="entelpcs" password="entelmms" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="730" mnc="02" apn="wap.tmovil.cl" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="730" mnc="02" apn="mms.tmovil.cl" proxy="" port="" mmsproxy="172.17.8.10" mmsport="8080" mmsc="http://mms.movistar.cl" user="mms" password="mms" type="mms" /> - <apn carrier="Movistar CL" mcc="730" mnc="02" apn="web.tmovil.cl" user="web" password="web" type="default,supl" /> - <apn carrier="Movistar CL MMS" mcc="730" mnc="02" apn="mms.tmovil.cl" user="mms" password="mms" mmsc="http://mms.tmovil.cl" mmsproxy="172.017.008.011" mmsport="9201" type="mms" /> - <apn carrier="BAM Claro" mcc="730" mnc="03" apn="bam.clarochile.cl" user="clarochile" password="clarochile" type="default,supl" /> - <apn carrier="MMS Claro" mcc="730" mnc="03" apn="mms.clarochile.cl" proxy="" port="" mmsproxy="172.23.200.200" mmsport="8080" mmsc="http://mms.clarochile.cl" user="clarochile" password="clarochile" type="mms" /> - <apn carrier="MMS CLARO" mcc="730" mnc="03" apn="mms.clarochile.cl" user="clarochile" password="clarochile" mmsc="http://mms.clarochile.cl" mmsproxy="172.23.200.200" mmsport="8080" type="mms" /> - <apn carrier="APLICACIONES" mcc="730" mnc="07" apn="wap.tmovil.cl" user="wap" password="wap" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="730" mnc="07" apn="mms.tmovil.cl" proxy="" port="" mmsproxy="172.17.8.10" mmsport="8080" mmsc="http://mms.movistar.cl" user="mms" password="mms" type="mms" /> - <apn carrier="Virgin Mobile CL" mcc="730" mnc="07" apn="imovil.virginmobile.cl" type="default,supl" /> - <apn carrier="Internet WOM" mmc="730" mnc="09" apn="internet" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="MMS WOM" mmc="730" mnc="09" apn="mms" proxy="" port="" user="" password="" mmsc="http://3gmms.nextelmovil.cl" mmsproxy="129.192.129.104" mmsport="8080" type="mms" /> - <apn carrier="Internet Movil" mcc="730" mnc="10" apn="imovil.entelpcs.cl" user="entelpcs" password="entelpcs" type="default,supl" /> - <apn carrier="MMS Entel PCS" mcc="730" mnc="10" apn="mms.entelpcs.cl" proxy="" port="" mmsproxy="10.99.0.10" mmsport="8080" mmsc="http://mmsc.entelpcs.cl" user="entelpcs" password="entelmms" type="mms" /> - <apn carrier="Internet Movil" mcc="730" mnc="10" apn="bam.entelpcs.cl" user="entelpcs" password="entelpcs" proxy="10.99.0.10" port="8080" type="default,supl" /> - <apn carrier="WEB EPCS" mcc="730" mnc="10" apn="imovil.entelpcs.cl" user="entelpcs" password="entelpcs" type="default,supl" /> - <apn carrier="MMS EPCS" mcc="730" mnc="10" apn="mms.entelpcs.cl" user="entelmms" password="entelpcs" mmsc="http://mmsc.entelpcs.cl" mmsproxy="10.99.0.10" mmsport="8080" type="mms" /> - <apn carrier="Movistar CL" mcc="730" mnc="10" apn="web.tmovil.cl" proxy="" port="" user="web" password="web" mmsc="" type="default,supl" /> - <apn carrier="Web Comcel 3GSM" mcc="732" mnc="101" apn="internet.comcel.com.co" user="COMCELWEB" password="COMCELWEB" authtype="1" type="default,supl" /> - <apn carrier="MMS COMCEL 3GSM" mcc="732" mnc="101" apn="mms.comcel.com.co " proxy="" port="" mmsproxy="198.228.90.228" mmsport="8799" mmsc="http://mms.movistar.com.co" user="COMCELMMS" password="COMCELMMS" authtype="1" type="mms" /> - <apn carrier="Movistar CO" mcc="732" mnc="102" apn="internet.movistar.com.co" user="movistar" password="movistar" type="default,supl" /> - <apn carrier="Movistar CO" mcc="732" mnc="102" apn="internet.movistar.com.co" proxy="" port="" user="movistar" password="movistar" mmsc="" type="default,supl" /> - <apn carrier="TIGO WEB" mcc="732" mnc="103" apn="web.colombiamovil.com.co" user="" password="" type="default,supl,dun" /> - <apn carrier="TIGO Multimedia" mcc="732" mnc="103" apn="mms.colombiamovil.com.co" user="mms-cm1900" password="mms-cm1900" mmsproxy="190.102.206.48" mmsport="8080" mmsc="http://mms.ola.com.co" authtype="1" type="mms" /> - <apn carrier="TIGO WEB" mcc="732" mnc="111" apn="web.colombiamovil.com.co" user="" password="" type="default,supl,dun" /> - <apn carrier="TIGO Multimedia" mcc="732" mnc="111" apn="mms.colombiamovil.com.co" user="mms-cm1900" password="mms-cm1900" mmsproxy="190.102.206.48" mmsport="8080" mmsc="http://mms.ola.com.co" authtype="1" type="mms" /> - <apn carrier="OLA" mcc="732" mnc="111" apn="internet" user="internet" password="internet" type="default,supl" /> - <apn carrier="OLA MMS" mcc="732" mnc="111" apn="mms.comcel.com.co" mmsc="http://mms.ola.com.co" mmsproxy="200.058.228.081" mmsport="9201" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="732" mnc="123" apn="internet.movistar.com.co" user="movistar" password="movistar" authtype="1" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="732" mnc="123" apn="mms.movistar.com.co" proxy="" port="" mmsproxy="192.168.222.7" mmsport="9001" mmsc="http://mms.movistar.com.co" user="movistar" password="movistar" authtype="1" type="mms" /> - <apn carrier="ETB 4G" mcc="732" mnc="187" apn="internetmovil.etb.net.co" authtype="0" type="default,supl" /> - <apn carrier="Digitel 412" mcc="734" mnc="01" apn="internet.digitel.ve" user="" password="" type="default,supl" /> - <apn carrier="MMS412" mcc="734" mnc="01" apn="expresate.digitel.ve" proxy="" port="" mmsproxy="10.99.0.10" mmsport="8080" mmsc="http://mms.412.com.ve/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Digitel 412" mcc="734" mnc="02" apn="internet.digitel.ve" user="" password="" type="default,supl" /> - <apn carrier="MMS412" mcc="734" mnc="02" apn="expresate.digitel.ve" proxy="" port="" mmsproxy="10.99.0.10" mmsport="8080" mmsc="http://mms.412.com.ve/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Digitel" mcc="734" mnc="02" apn="gprsweb.digitel.ve" type="default,supl" /> - <apn carrier="Digitel MMS" mcc="734" mnc="02" apn="expresate.digitel.ve" mmsc="http://expresate.digitel.ve" mmsproxy="213.026.205.001" mmsport="8080" type="mms" /> - <apn carrier="Digitel 412" mcc="734" mnc="03" apn="internet.digitel.ve" user="" password="" type="default,supl" /> - <apn carrier="MMS412" mcc="734" mnc="03" apn="expresate.digitel.ve" proxy="" port="" mmsproxy="10.99.0.10" mmsport="8080" mmsc="http://mms.412.com.ve/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="734" mnc="04" apn="internet.movistar.ve" user="http://www.movistar.com.ve/" password="" type="default,supl" /> - <apn carrier="Movistar WAP" mcc="734" mnc="04" apn="wap.movistar.ve" proxy="200.35.64.73" port="9001" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="734" mnc="04" apn="mms.movistar.ve" proxy="" port="" mmsproxy="200.35.64.73" mmsport="9001" mmsc="http://mms.movistar.com.ve:8088/mms" user="" password="" type="mms" /> - <apn carrier="Movistar VE" mcc="734" mnc="04" apn="internet.movistar.ve" mmsc="http://mms.movistar.ve" mmsproxy="200.35.64.73" mmsport="9001" type="default,supl,mms" /> - <apn carrier="Movilnet WAP" mcc="734" mnc="06" apn="app.movilnet.com.ve" proxy="192.168.201.170" port="8080" mmsc="" user="" password="" type="default,supl" /> - <apn carrier="Movilnet MMS" mcc="734" mnc="06" apn="mm.movilnet.com.ve" proxy="" port="" mmsproxy="192.168.16.12" mmsport="8080" mmsc="http://mms2.movilnet.com.ve/servlets/mms" user="" password="" type="mms" /> - <apn carrier="Movilnet" mcc="734" mnc="06" apn="int.movilnet.com.ve" type="default,supl" /> - <apn carrier="Viva Edge" mcc="736" mnc="01" apn="edge.viva.net.do" user="viva" password="viva" mmsc="http://wap.viva.net.do/WapDeck/" proxy="192.168.016.010" port="9401" type="default,supl" /> - <apn carrier="Viva MMS" mcc="736" mnc="01" apn="mms.viva.net.do" user="viva" password="viva" mmsproxy="192.168.016.010" mmsport="9401" mmsc="http://10.200.16.4/mms/wapenc" type="mms" /> - <apn carrier="Viva GPRS" mcc="736" mnc="01" apn="internet.nuevatel.com" proxy="192.168.101.4" port="3128" type="default,supl" /> - <apn carrier="Viva MMS" mcc="736" mnc="01" apn="mms.nuevatel.com" server="mmsgw.nuevatel.com:1981" mmsc="http://mmsgw.nuevatel.com:1981" mmsproxy="192.168.101.4" mmsport="3128" type="mms" /> - <apn carrier="ENTEL 4G" mcc="736" mnc="02" apn="4g.entel" user="" password="" type="default,supl" /> - <apn carrier="ENTEL MMS" mcc="736" mnc="02" apn="mms.movil.com.bo" proxy="" port="" mmsproxy="127.27.7.10" mmsport="8080" mmsc="http://mms.movil.com.bo/servlets/mms" user="" password="" type="mms" /> - <apn carrier="INTERNET TIGO BO" mcc="736" mnc="03" apn="internet.tigo.bo" user="" password="" proxy="" port="" type="default,supl,dun" /> - <apn carrier="MMS TIGO BO" mcc="736" mnc="03" apn="mms.tigo.bo" user="" password="" mmsproxy="172.25.100.8" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="G TT WEB" mcc="738" mnc="002" apn="internet.cellinkgy.com" user="cellink" password="cellink" type="default,supl" /> - <apn carrier="G TT MMS" mcc="738" mnc="002" apn="mms.cellinkgy.com" proxy="" port="" mmsproxy="10.0.1.99" mmsport="8080" mmsc="http://10.0.1.88/mms/wapenc" user="cellink" password="cellink" type="mms" /> - <apn carrier="Digicel Web" mcc="738" mnc="01" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="738" mnc="01" apn="wap" proxy="" port="" mmsproxy="172.20.6.12" mmsport="8080" mmsc="http://mmc.digicelgy.com/servlets/mms" user="wap" password="wap" type="mms" /> - <apn carrier="G TT WEB" mcc="738" mnc="02" apn="internet.cellinkgy.com" user="cellink" password="cellink" type="default,supl" /> - <apn carrier="G TT MMS" mcc="738" mnc="02" apn="mms.cellinkgy.com" proxy="" port="" mmsproxy="10.0.1.99" mmsport="8080" mmsc="http://10.0.1.88/mms/wapenc" user="cellink" password="cellink" type="mms" /> - <apn carrier="G TT WEB" mcc="738" mnc="020" apn="internet.cellinkgy.com" user="cellink" password="cellink" type="default,supl" /> - <apn carrier="G TT MMS" mcc="738" mnc="020" apn="mms.cellinkgy.com" proxy="" port="" mmsproxy="10.0.1.99" mmsport="8080" mmsc="http://10.0.1.88/mms/wapenc" user="cellink" password="cellink" type="mms" /> - <apn carrier="Movistar INTERNET" mcc="740" mnc="00" apn="internet.movistar.com.ec" user="movistar" password="movistar" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="740" mnc="00" apn="mms.movistar.com.ec" proxy="" port="" mmsproxy="10.3.5.50" mmsport="9001" mmsc="http://mms.movistar.com.ec:8088/mms/" user="movistar" password="movistar" type="mms" /> - <apn carrier="Banda Acha M??vil" mcc="740" mnc="01" apn="ba.amx" user="" password="" type="default,supl" /> - <apn carrier="MMS Claro" mcc="740" mnc="01" apn="mms.claro.com.ec" user="" password="" type="mms" /> - <apn carrier="Porta EC" mcc="740" mnc="010" apn="internet.porta.com.ec" type="default,supl" /> - <apn carrier="Movistar INTERNET" mcc="740" mnc="02" apn="internet.movistar.com.ec" user="movistar" password="movistar" authtype="3" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="740" mnc="02" apn="mms.movistar.com.ec" proxy="" port="" mmsproxy="10.3.5.50" mmsport="9001" mmsc="http://mms.movistar.com.ec:8088/mms/" user="movistar" password="movistar" authtype="3" type="mms" /> - <apn carrier="Vox MMS" mcc="744" mnc="01" apn="vox.mms" mmsc="http://mms.vox.com.py/mmsc" user="vox" password="vox" proxy="172.24.97.29" port="8080" type="mms" /> - <apn carrier="Vox INTERNET" mcc="744" mnc="01" apn="vox.internet" user="" password="" type="default,supl" /> - <apn carrier="Claro PY" mcc="744" mnc="02" apn="igprs.claro.com.py" user="ctigprs" password="ctigprs999" authtype="1" type="default,supl" /> - <apn carrier="MMS GPRS PY" mcc="744" mnc="02" apn="mms.ctimovil.com.py" user="ctimms" password="ctimms999" mmsproxy="170.51.255.240" mmsport="8080" mmsc="http://mms.ctimovil.com.py" authtype="1" type="mms" /> - <apn carrier="INTERNET TIGO PY" mcc="744" mnc="04" apn="internet.tigo.py" user="" password="" proxy="" port="" type="default,supl" /> - <apn carrier="MMS TIGO PY" mcc="744" mnc="04" apn="mms.tigo.py" user="" password="" mmsproxy="10.16.17.12" mmsport="8888" mmsc="http://mms" type="mms" /> - <apn carrier="Personal Datos Py" mcc="744" mnc="05" apn="internet" user="" password="" authtype="1" type="default,supl" /> - <apn carrier="Personal MMS Py" mcc="744" mnc="05" apn="mms" user="" password="" mmsproxy="172.16.192.7" mmsport="8080" mmsc="http://mms" authtype="1" type="mms" /> - <apn carrier="Digicel Web" mcc="746" mnc="03" apn="web" user="" password="" type="default,supl" /> - <apn carrier="Digicel MMS" mcc="746" mnc="03" apn="wap" proxy="" port="" mmsproxy="172.20.6.12" mmsport="8080" mmsc="http://mmc.digicelsr.com/servlets/mms" user="wap" password="wap" type="mms" /> - <apn carrier="gprsANCEL" mcc="748" mnc="01" apn="gprs.ancel" user="" password="" type="default,supl" /> - <apn carrier="mmsANCEL" mcc="748" mnc="01" apn="mms" proxy="" port="" mmsproxy="200.40.246.2" mmsport="3128" mmsc="http://mmsc.mms.ancelutil.com.uy" user="" password="" type="mms" /> - <apn carrier="Ancel" mcc="748" mnc="01" apn="ancel" type="default,supl" /> - <apn carrier="Ancel MMS" mcc="748" mnc="01" apn="mms" mmsc="http://mmsc.mms.ancelutil.com.uy" mmsproxy="200.40.246.2" mmsport="3128" type="mms" /> - <apn carrier="Antel" mcc="748" mnc="01" apn="wap" proxy="200.40.246.2" port="3128" server="www.dale.com.uy" mmsc="http://mmsc.mms.ancelutil.com.uy" mmsproxy="200.40.246.2" mmsport="3128" type="default,supl,mms" /> - <apn carrier="BAM Pepaga Antel" mcc="748" mnc="01" apn="prepago.ancel" user="bam" password="bam" type="default,supl" /> - <apn carrier="Ancel" mcc="748" mnc="01" apn="ancel" proxy="" port="" user="" password="" mmsc="" type="default,supl" /> - <apn carrier="Ancel MMS" mcc="748" mnc="01" apn="mms" proxy="" port="" user="" password="" mmsc="http://mmsc.mms.ancelutil.com.uy" mmsproxy="200.40.246.2" mmsport="3128" type="mms" /> - <apn carrier="Antel" mcc="748" mnc="01" apn="wap" proxy="200.40.246.2" port="3128" user="" password="" server="www.dale.com.uy" mmsc="http://mmsc.mms.ancelutil.com.uy" mmsproxy="200.40.246.2" mmsport="" type="default,supl,mms" /> - <apn carrier="BAM Pepaga Antel" mcc="748" mnc="01" apn="prepago.ancel" proxy="" port="" user="bam" password="bam" mmsc="" type="default,supl" /> - <apn carrier="Movistar INTERNET" mcc="748" mnc="07" apn="webapn.movistar.com.uy" user="movistar" password="movistar" type="default,supl" /> - <apn carrier="Movistar MMS" mcc="748" mnc="07" apn="apnmms.movistar.com.uy" proxy="" port="" mmsproxy="10.0.2.29" mmsport="8080" mmsc="http://mmsc.movistar.com.uy" user="mmsuy" password="mmsuy" type="mms" /> - <apn carrier="Movistar UY MMS" mcc="748" mnc="07" apn="apnmms.movistar.com.uy" user="mmsuy" password="mmsuy" mmsc="http://mmsc.movistar.com.uy" mmsproxy="010.000.002.029" mmsport="9201" type="mms" /> - <apn carrier="Movistar UY" mcc="748" mnc="07" apn="apnumt.movistar.com.uy" user="movistar" password="movistar" type="default,supl" /> - <apn carrier="Claro Internet" mcc="748" mnc="10" apn="igprs.claro.com.uy" user="ctigprs" password="ctigprs999" type="default,supl" /> - <apn carrier="Claro MMS" mcc="748" mnc="10" apn="mms.ctimovil.com.uy" proxy="" port="" mmsc="http://mms.ctimovil.com.uy" user="" password="" type="mms" /> - <apn carrier="Claro UY" mcc="748" mnc="10" apn="gprs.claro.com.uy" user="ctigpr" password="ctigpr999" type="default,supl" /> - <apn carrier="Claro UY MMS" mcc="748" mnc="10" apn="mms.ctimovil.com.uy" user="ctimms" password="ctimms999" mmsc="http://mms.ctimovil.com.uy" mmsproxy="170.051.255.240" mmsport="9201" type="mms" /> -</apns> diff --git a/prebuilt/common/etc/init.d/00banner b/prebuilt/common/etc/init.d/00banner deleted file mode 100644 index da6d487f..00000000 --- a/prebuilt/common/etc/init.d/00banner +++ /dev/null @@ -1,13 +0,0 @@ -#!/system/bin/sh -# -# Print startup info -# -L="log -p i -t lineage" - -$L "_ _ " -$L "| (_)_ __ ___ __ _ __ _ ___ ___ ___ " -$L "| | | '_ \\ / _ \\/ _\` |/ _\` |/ _ \\/ _ \\/ __|" -$L "| | | | | | __/ (_| | (_| | __/ (_) \\__ \\" -$L "|_|_|_| |_|\\___|\\__,_|\\__, |\\___|\\___/|___/" -$L " |___/" -$L "Welcome to Android `getprop ro.build.version.release` / LineageOS-`getprop ro.lineage.version`"; diff --git a/prebuilt/common/etc/init.d/90userinit b/prebuilt/common/etc/init.d/90userinit deleted file mode 100755 index fbf3360f..00000000 --- a/prebuilt/common/etc/init.d/90userinit +++ /dev/null @@ -1,9 +0,0 @@ -#!/system/bin/sh -# call userinit.sh if present in /data/local - -if [ -e /data/local/userinit.sh ]; -then - log -p i -t userinit "Executing /data/local/userinit.sh"; - /system/bin/sh /data/local/userinit.sh; - setprop lineage.userinit.active 1; -fi; diff --git a/prebuilt/common/etc/init/lineage-adb.rc b/prebuilt/common/etc/init/lineage-adb.rc deleted file mode 100644 index 95ede068..00000000 --- a/prebuilt/common/etc/init/lineage-adb.rc +++ /dev/null @@ -1,11 +0,0 @@ -# adb over network -on property:adb.network.port=* - setprop service.adb.tcp.port ${adb.network.port} - -on property:service.adb.tcp.port=5555 - stop adbd - start adbd - -on property:service.adb.tcp.port=-1 - stop adbd - start adbd diff --git a/prebuilt/common/etc/init/lineage-governor.rc b/prebuilt/common/etc/init/lineage-governor.rc deleted file mode 100644 index b805fc96..00000000 --- a/prebuilt/common/etc/init/lineage-governor.rc +++ /dev/null @@ -1,71 +0,0 @@ -on boot - # interactive governor - chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_rate - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/timer_rate - chown system system /sys/devices/system/cpu/cpufreq/interactive/timer_slack - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/timer_slack - chown system system /sys/devices/system/cpu/cpufreq/interactive/min_sample_time - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/min_sample_time - chown system system /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq - chown system system /sys/devices/system/cpu/cpufreq/interactive/target_loads - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/target_loads - chown system system /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load - chown system system /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay - chown system system /sys/devices/system/cpu/cpufreq/interactive/boost - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/boost - chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/boostpulse - chown system system /sys/devices/system/cpu/cpufreq/interactive/input_boost - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/input_boost - chown system system /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/boostpulse_duration - chown system system /sys/devices/system/cpu/cpufreq/interactive/io_is_busy - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/io_is_busy - chown system system /sys/devices/system/cpu/cpufreq/interactive/sync_freq - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/sync_freq - chown system system /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_freq - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_freq - chown system system /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_load - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/up_threshold_any_cpu_load - chown system system /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor - chown system system /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis - chmod 0664 /sys/devices/system/cpu/cpufreq/interactive/max_freq_hysteresis - - # ondemand governor - chown system system /sys/devices/system/cpu/cpufreq/ondemand/boostfreq - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/boostfreq - chown system system /sys/devices/system/cpu/cpufreq/ondemand/boostpulse - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/boostpulse - chown system system /sys/devices/system/cpu/cpufreq/ondemand/boosttime - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/boosttime - chown system system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy - chown system system /sys/devices/system/cpu/cpufreq/ondemand/down_differential - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/down_differential - chown system system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate - chown system system /sys/devices/system/cpu/cpufreq/ondemand/powersave_bias - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/powersave_bias - chown system system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor - chown system system /sys/devices/system/cpu/cpufreq/ondemand/up_threshold - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/up_threshold - chown system system /sys/devices/system/cpu/cpufreq/ondemand/input_boost - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/input_boost - chown system system /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core - chown system system /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core - chown system system /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq - chown system system /sys/devices/system/cpu/cpufreq/ondemand/sync_freq - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/sync_freq - chown system system /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load - chmod 0664 /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load - - chown system system /dev/cpuctl/cpu.notify_on_migrate - chmod 0664 /dev/cpuctl/cpu.notify_on_migrate diff --git a/prebuilt/common/etc/init/lineage-iosched.rc b/prebuilt/common/etc/init/lineage-iosched.rc deleted file mode 100644 index 263003fe..00000000 --- a/prebuilt/common/etc/init/lineage-iosched.rc +++ /dev/null @@ -1,70 +0,0 @@ -on init - # Set up the BFQIO hierarchy - mkdir /dev/bfqio 0755 root system - mount cgroup none /dev/bfqio bfqio - chown root system /dev/bfqio/tasks - chmod 0664 /dev/bfqio/tasks - chmod 0220 /dev/bfqio/cgroup.event_control - - # Soft realtime class for display service - mkdir /dev/bfqio/rt-display 0755 root system - write /dev/bfqio/rt-display/bfqio.ioprio_class 1 - chown system system /dev/bfqio/rt-display/tasks - chmod 0664 /dev/bfqio/rt-display/tasks - chmod 0220 /dev/bfqio/rt-display/cgroup.event_control - -on boot - restorecon --recursive /sys/block/mmcblk0/queue - chown system system /sys/block/mmcblk0/queue/scheduler - chmod 0664 /sys/block/mmcblk0/queue/scheduler - - restorecon --recursive /sys/block/sda/queue - chown system system /sys/block/sda/queue/scheduler - chmod 0664 /sys/block/sda/queue/scheduler - - restorecon --recursive /sys/block/sde/queue - chown system system /sys/block/sde/queue/scheduler - chmod 0664 /sys/block/sde/queue/scheduler - - restorecon --recursive /sys/block/dm-0/queue - chown system system /sys/block/dm-0/queue/scheduler - chmod 0664 /sys/block/dm-0/queue/scheduler - -# Configure IO scheduler -on property:sys.io.scheduler=* - write /sys/block/mmcblk0/queue/scheduler ${sys.io.scheduler} - write /sys/block/mmcblk1/queue/scheduler ${sys.io.scheduler} - write /sys/block/sda/queue/scheduler ${sys.io.scheduler} - write /sys/block/sde/queue/scheduler ${sys.io.scheduler} - write /sys/block/dm-0/queue/scheduler ${sys.io.scheduler} - -on property:persist.sys.io.scheduler=* - setprop sys.io.scheduler ${persist.sys.io.scheduler} - -# Set slice_idle to 0 for CFQ -on property:sys.io.scheduler=cfq - restorecon --recursive /sys/block/mmcblk0/queue - restorecon --recursive /sys/block/mmcblk1/queue - restorecon --recursive /sys/block/sda/queue - restorecon --recursive /sys/block/sde/queue - restorecon --recursive /sys/block/dm-0/queue - - write /sys/block/mmcblk0/queue/iosched/slice_idle 0 - write /sys/block/mmcblk1/queue/iosched/slice_idle 0 - write /sys/block/sda/queue/iosched/slice_idle 0 - write /sys/block/sde/queue/iosched/slice_idle 0 - write /sys/block/dm-0/queue/iosched/slice_idle 0 - -# Set slice_idle to 0 for BFQ -on property:sys.io.scheduler=bfq - restorecon --recursive /sys/block/mmcblk0/queue - restorecon --recursive /sys/block/mmcblk1/queue - restorecon --recursive /sys/block/sda/queue - restorecon --recursive /sys/block/sde/queue - restorecon --recursive /sys/block/dm-0/queue - - write /sys/block/mmcblk0/queue/iosched/slice_idle 0 - write /sys/block/mmcblk1/queue/iosched/slice_idle 0 - write /sys/block/sda/queue/iosched/slice_idle 0 - write /sys/block/sde/queue/iosched/slice_idle 0 - write /sys/block/dm-0/queue/iosched/slice_idle 0 diff --git a/prebuilt/common/etc/init/lineage-livedisplay.rc b/prebuilt/common/etc/init/lineage-livedisplay.rc deleted file mode 100644 index 8979369b..00000000 --- a/prebuilt/common/etc/init/lineage-livedisplay.rc +++ /dev/null @@ -1,16 +0,0 @@ -on boot - # LiveDisplay sysfs - chown system system /sys/devices/virtual/graphics/fb0/aco - chmod 0660 /sys/devices/virtual/graphics/fb0/aco - chown system system /sys/devices/virtual/graphics/fb0/cabc - chmod 0660 /sys/devices/virtual/graphics/fb0/cabc - chown system system /sys/devices/virtual/graphics/fb0/hbm - chmod 0660 /sys/devices/virtual/graphics/fb0/hbm - chown system system /sys/devices/virtual/graphics/fb0/rgb - chmod 0660 /sys/devices/virtual/graphics/fb0/rgb - chown system system /sys/devices/virtual/graphics/fb0/sre - chmod 0660 /sys/devices/virtual/graphics/fb0/sre - chown system system /sys/devices/virtual/graphics/fb0/color_enhance - chmod 0660 /sys/devices/virtual/graphics/fb0/color_enhance - chown system system /sys/devices/virtual/graphics/fb0/reading_mode - chmod 0660 /sys/devices/virtual/graphics/fb0/reading_mode diff --git a/prebuilt/common/etc/init/lineage-radio.rc b/prebuilt/common/etc/init/lineage-radio.rc deleted file mode 100644 index 22f1e64d..00000000 --- a/prebuilt/common/etc/init/lineage-radio.rc +++ /dev/null @@ -1,12 +0,0 @@ -# Disable ril services if noril prop is set -on property:ro.radio.noril=1 - stop ims_rtp_daemon - stop imsdatadaemon - stop imsqmidaemon - stop imsrcsservice - stop ril-daemon - stop qmuxd - stop netmgrd - -on property:persist.radio.noril=1 - setprop ro.radio.noril 1 diff --git a/prebuilt/common/etc/init/lineage-ssh.rc b/prebuilt/common/etc/init/lineage-ssh.rc deleted file mode 100644 index edf38638..00000000 --- a/prebuilt/common/etc/init/lineage-ssh.rc +++ /dev/null @@ -1,3 +0,0 @@ -on post-fs-data - mkdir /data/ssh 0750 root shell - mkdir /data/ssh/empty 0600 root shell diff --git a/prebuilt/common/etc/init/lineage-system.rc b/prebuilt/common/etc/init/lineage-system.rc deleted file mode 100644 index 619c6d82..00000000 --- a/prebuilt/common/etc/init/lineage-system.rc +++ /dev/null @@ -1,31 +0,0 @@ -# LineageOS core functionality -on init - export ANDROID_CACHE /cache - export TERMINFO /system/etc/terminfo - -on post-fs-data - mkdir /cache/recovery 0770 system cache - - # Run sysinit - start sysinit - - # Change permissions on fsck log so it can be added to the dropbox - chown root log /dev/fscklogs/log - chmod 0640 /dev/fscklogs/log - -on boot - # Persistent properties (only created if persist exists) - mkdir /persist/properties 0770 system system - -# sysinit (/system/etc/init.d) -service sysinit /system/bin/sysinit - user root - oneshot - disabled - -# bugreport is triggered by holding down volume down, volume up and power -service bugreport /system/bin/dumpstate -d -p -B -z \ - -o /data/user_de/0/com.android.shell/files/bugreports/bugreport - oneshot - disabled - keycodes 114 115 116 diff --git a/prebuilt/common/etc/init/lineage-updates.rc b/prebuilt/common/etc/init/lineage-updates.rc deleted file mode 100644 index 3a9b4813..00000000 --- a/prebuilt/common/etc/init/lineage-updates.rc +++ /dev/null @@ -1,4 +0,0 @@ -on post-fs-data - # Create an additional OTA package directory that unlike /data/ota_package - # will not be touched by GmsCore. - mkdir /data/lineageos_updates 0770 system cache diff --git a/prebuilt/common/etc/sensitive_pn.xml b/prebuilt/common/etc/sensitive_pn.xml deleted file mode 100644 index ee19edf5..00000000 --- a/prebuilt/common/etc/sensitive_pn.xml +++ /dev/null @@ -1,757 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!-- -/* - * Copyright (C) 2017 The Android Open Source Project - * Copyright (C) 2017-2018 The LineageOS Project - * - * 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. - */ ---> - -<!-- A few notes about maintaining this file: - - The sorting in the file is as follows: - - The MCC codes in the network field are sorted in ascending order, if the - country has multiple MCC codes, or has territories with different MCC codes - - The sensitivePN entries are sorted in ascending order by the first MCC code - - The phone numbers in a sensitivePN entry are grouped in increasing lengths, - and within the various lengths they are sorted in ascending order - - When adding a new country, please keep the following in mind: - - Whether the country has multiple MCC codes - - Whether the country has any territories with different MCC codes - - What the most recognizable name for the country is, to leave as a comment - - When adding a new phone number, please keep the following in mind: - - Whether there are multiple forms of the phone number (long and short) - - Whether the number is valid for any territories of the country - - Thank you for your contributions! --> - -<sensitivePNS> - <!--Greece--> - <sensitivePN network="202"> - <item>197</item> - <item>1018</item> - <item>1056</item> - <item>1065</item> - <item>1107</item> - <item>1109</item> - <item>15900</item> - <item>111525</item> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Netherlands--> - <sensitivePN network="204"> - <item>116006</item> - <item>116111</item> - <item>116123</item> - <item>08000432</item> - <item>08002000</item> - <item>09000101</item> - <item>0882342450</item> - <item>09009999001</item> - </sensitivePN> - <!--Belgium--> - <sensitivePN network="206"> - <item>102</item> - <item>106</item> - <item>111</item> - <item>116</item> - <item>1712</item> - <item>1813</item> - <item>116000</item> - <item>08000432</item> - <item>032185056</item> - <item>032391415</item> - <item>078150300</item> - <item>078151020</item> - <item>080097079</item> - <item>080099533</item> - </sensitivePN> - <!--France--> - <sensitivePN network="208,340,647"> - <item>119</item> - <item>3919</item> - </sensitivePN> - <!--Spain--> - <sensitivePN network="214"> - <item>016</item> - <item>116111</item> - </sensitivePN> - <!--Hungary--> - <sensitivePN network="216"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Bosnia and Herzegovina--> - <sensitivePN network="218"> - <item>080050305</item> - </sensitivePN> - <!--Croatia--> - <sensitivePN network="219"> - <item>116006</item> - <item>116111</item> - </sensitivePN> - <!--Serbia--> - <sensitivePN network="220"> - <item>116111</item> - <item>2645328</item> - <item>3192782</item> - <item>3626006</item> - <item>0800100600</item> - <item>0800123456</item> - </sensitivePN> - <!--Kosovo--> - <sensitivePN network="221"> - <item>080011112</item> - </sensitivePN> - <!--Italy--> - <sensitivePN network="222"> - <item>1522</item> - <item>19696</item> - </sensitivePN> - <!--Romania--> - <sensitivePN network="226"> - <item>116111</item> - <item>0213114636</item> - </sensitivePN> - <!--Switzerland--> - <sensitivePN network="228"> - <item>147</item> - <item>116000</item> - <item>116111</item> - </sensitivePN> - <!--Czech Republic--> - <sensitivePN network="230"> - <item>116006</item> - <item>116111</item> - <item>116123</item> - <item>222514040</item> - <item>222580697</item> - <item>224214214</item> - <item>241484149</item> - <item>283872186</item> - <item>284016292</item> - <item>284016666</item> - <item>596318080</item> - <item>596618908</item> - <item>737267939</item> - <item>777734173</item> - <item>777783146</item> - <item>777800983</item> - <item>800200007</item> - </sensitivePN> - <!--Slovakia--> - <sensitivePN network="231"> - <item>116111</item> - </sensitivePN> - <!--Austria--> - <sensitivePN network="232"> - <item>147</item> - <item>116006</item> - <item>116123</item> - <item>0800222555</item> - </sensitivePN> - <!--GB--> - <sensitivePN network="234,235"> - <item>116111</item> - <item>116123</item> - <item>08001111</item> - <item>0800555111</item> - <item>01179045999</item> - <item>01179250680</item> - <item>01642683045</item> - <item>01708765200</item> - <item>02070080151</item> - <item>02072516577</item> - <item>02072518887</item> - <item>02073830700</item> - <item>02073957700</item> - <item>02074907689</item> - <item>02076081137</item> - <item>02077042040</item> - <item>02078235430</item> - <item>02085710800</item> - <item>02085719595</item> - <item>02380338080</item> - <item>02920496920</item> - <item>03003300630</item> - <item>08000149084</item> - <item>08000271234</item> - <item>08005999247</item> - <item>08008010327</item> - <item>08009995428</item> - <item>08082000247</item> - <item>08088005000</item> - <item>08088010331</item> - <item>08088010456</item> - <item>08088010464</item> - <item>08088010800</item> - <item>08088020300</item> - <item>08088021414</item> - <item>08088029999</item> - <item>08088081111</item> - <item>08088088141</item> - <item>08453030900</item> - <item>08454582914</item> - </sensitivePN> - <!--Denmark--> - <sensitivePN network="238"> - <item>116006</item> - <item>116111</item> - </sensitivePN> - <!--Sweden--> - <sensitivePN network="240"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Norway--> - <sensitivePN network="242"> - <item>116111</item> - <item>22424202</item> - <item>22444050</item> - <item>23227930</item> - <item>80057000</item> - <item>81003940</item> - </sensitivePN> - <!--Finland--> - <sensitivePN network="244"> - <item>116111</item> - </sensitivePN> - <!--Lithuania--> - <sensitivePN network="246"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Latvia--> - <sensitivePN network="247"> - <item>116111</item> - </sensitivePN> - <!--Estonia--> - <sensitivePN network="248"> - <item>116111</item> - </sensitivePN> - <!--Russia--> - <sensitivePN network="250"> - <item>88002000122</item> - <item>88002500015</item> - </sensitivePN> - <!--Ukraine--> - <sensitivePN network="255"> - <item>386</item> - <item>772</item> - <item>116111</item> - <item>0800500225</item> - <item>0800500335</item> - </sensitivePN> - <!--Belarus--> - <sensitivePN network="257"> - <item>88011001611</item> - </sensitivePN> - <!--Moldova--> - <sensitivePN network="255,259"> - <item>116111</item> - </sensitivePN> - <!--Poland--> - <sensitivePN network="260"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Germany--> - <sensitivePN network="262"> - <item>116006</item> - <item>116111</item> - <item>116123</item> - <item>08000116016</item> - <item>08001110111</item> - <item>08001110222</item> - </sensitivePN> - <!--Portugal--> - <sensitivePN network="268"> - <item>116111</item> - <item>800202148</item> - </sensitivePN> - <!--Luxembourg--> - <sensitivePN network="270"> - <item>116111</item> - </sensitivePN> - <!--Ireland--> - <sensitivePN network="272"> - <item>116006</item> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Iceland--> - <sensitivePN network="274"> - <item>1717</item> - </sensitivePN> - <!--Malta--> - <sensitivePN network="278"> - <item>179</item> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Cyprus--> - <sensitivePN network="280"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Georgia--> - <sensitivePN network="282"> - <item>116111</item> - </sensitivePN> - <!--Armenia--> - <sensitivePN network="283"> - <item>240160</item> - </sensitivePN> - <!--Bulgaria--> - <sensitivePN network="284"> - <item>116111</item> - <item>028130250</item> - <item>028223510</item> - <item>029204238</item> - <item>029339010</item> - <item>029339011</item> - <item>029360011</item> - <item>029360535</item> - <item>029361026</item> - <item>029569529</item> - <item>029635357</item> - <item>029817686</item> - <item>029835205</item> - <item>029835305</item> - <item>029835405</item> - <item>030181771</item> - <item>030412049</item> - <item>030454240</item> - <item>030712038</item> - <item>030728824</item> - <item>031182290</item> - <item>031348618</item> - <item>031452059</item> - <item>031822316</item> - <item>032207253</item> - <item>032260708</item> - <item>032512989</item> - <item>032622322</item> - <item>032658150</item> - <item>032660530</item> - <item>032814072</item> - <item>032943444</item> - <item>033127352</item> - <item>033555771</item> - <item>033762547</item> - <item>034447530</item> - <item>035172233</item> - <item>035762023</item> - <item>035950344</item> - <item>036328858</item> - <item>036417274</item> - <item>036417275</item> - <item>036514145</item> - <item>037049991</item> - <item>037391076</item> - <item>038620392</item> - <item>038624685</item> - <item>038662138</item> - <item>039126095</item> - <item>041695554</item> - <item>042641111</item> - <item>042660328</item> - <item>043162866</item> - <item>044667257</item> - <item>046622056</item> - <item>047616468</item> - <item>051843021</item> - <item>052609677</item> - <item>052613830</item> - <item>052820693</item> - <item>052919779</item> - <item>053432050</item> - <item>053725343</item> - <item>054833124</item> - <item>054850777</item> - <item>054869958</item> - <item>055022125</item> - <item>055513072</item> - <item>055513074</item> - <item>055922113</item> - <item>056530405</item> - <item>056815618</item> - <item>056825205</item> - <item>056825601</item> - <item>058601088</item> - <item>058605472</item> - <item>059632435</item> - <item>060161142</item> - <item>060161144</item> - <item>060161146</item> - <item>060161148</item> - <item>060161632</item> - <item>060162889</item> - <item>060167025</item> - <item>061052712</item> - <item>061132620</item> - <item>061416934</item> - <item>061613713</item> - <item>061822181</item> - <item>061922187</item> - <item>062602604</item> - <item>063140086</item> - <item>064824156</item> - <item>064846713</item> - <item>065093117</item> - <item>065522034</item> - <item>066805419</item> - <item>066805770</item> - <item>066809818</item> - <item>067052014</item> - <item>067532790</item> - <item>067675574</item> - <item>068602928</item> - <item>070019559</item> - <item>070150441</item> - <item>071722085</item> - <item>072093336</item> - <item>072166663</item> - <item>072695038</item> - <item>074422316</item> - <item>075161157</item> - <item>076601010</item> - <item>076603360</item> - <item>076695005</item> - <item>077313010</item> - <item>077787488</item> - <item>078529171</item> - <item>078939608</item> - <item>080011977</item> - <item>080018017</item> - <item>080018676</item> - <item>080020100</item> - <item>081222033</item> - <item>082813380</item> - <item>082826770</item> - <item>084660283</item> - <item>084772560</item> - <item>084872020</item> - <item>086732268</item> - <item>086820487</item> - <item>086821495</item> - <item>091232064</item> - <item>092620063</item> - <item>092620484</item> - <item>094600606</item> - <item>095380116</item> - <item>096300134</item> - <item>096300491</item> - <item>096303270</item> - <item>097380953</item> - <item>0876244006</item> - <item>0876400660</item> - <item>0876552572</item> - <item>0877330225</item> - <item>0877622665</item> - <item>0877655353</item> - <item>0877966850</item> - <item>0878121910</item> - <item>0878238102</item> - <item>0878324320</item> - <item>0878394250</item> - <item>0878567620</item> - <item>0878567659</item> - <item>0878628756</item> - <item>0879260101</item> - <item>0879387620</item> - <item>0879453503</item> - <item>0879530460</item> - <item>0879532892</item> - <item>0879535905</item> - <item>0879606855</item> - <item>0879612223</item> - <item>0879816911</item> - <item>0879819195</item> - <item>0879993859</item> - <item>0882071603</item> - <item>0882165368</item> - <item>0882290920</item> - <item>0882290980</item> - <item>0882330008</item> - <item>0882384587</item> - <item>0882420038</item> - <item>0883256622</item> - <item>0884029213</item> - <item>0884199173</item> - <item>0884301016</item> - <item>0884843400</item> - <item>0884877595</item> - <item>0884940688</item> - <item>0884959367</item> - <item>0884977296</item> - <item>0885546493</item> - <item>0885584855</item> - <item>0886203742</item> - <item>0886207985</item> - <item>0886785906</item> - <item>0887302241</item> - <item>0887900324</item> - <item>0888111703</item> - <item>0888628146</item> - <item>0888818510</item> - <item>0888885909</item> - <item>0889040412</item> - <item>0889111848</item> - <item>0889393132</item> - <item>0889667600</item> - <item>0889799855</item> - <item>0893328940</item> - <item>0893455930</item> - <item>0893474238</item> - <item>0894412380</item> - <item>0894420941</item> - <item>0894438106</item> - <item>0895514923</item> - <item>0895140600</item> - <item>0896662766</item> - <item>0897013236</item> - <item>0898575963</item> - <item>0899846850</item> - </sensitivePN> - <!--Turkey--> - <sensitivePN network="286"> - <item>144</item> - <item>183</item> - <item>05493810183</item> - <item>05494412144</item> - <item>08504550070</item> - </sensitivePN> - <!--Slovenia--> - <sensitivePN network="293"> - <item>116111</item> - <item>116123</item> - </sensitivePN> - <!--Macedonia--> - <sensitivePN network="294"> - <item>192</item> - <item>193</item> - <item>194</item> - <item>080012222</item> - </sensitivePN> - <!--Montenegro--> - <sensitivePN network="297"> - <item>080081550</item> - </sensitivePN> - <!--Canada--> - <sensitivePN network="302"> - <item>6455195</item> - <item>2047868686</item> - <item>3064254090</item> - <item>3065255333</item> - <item>3066936511</item> - <item>3067570127</item> - <item>3067641011</item> - <item>4032347233</item> - <item>4166387800</item> - <item>4169244640</item> - <item>4169698510</item> - <item>5148739010</item> - <item>5192521171</item> - <item>5192715290</item> - <item>5193360623</item> - <item>5193520440</item> - <item>5193714453</item> - <item>5194559000</item> - <item>5195396176</item> - <item>5195760540</item> - <item>5195875437</item> - <item>5196311492</item> - <item>5197538681</item> - <item>5198242410</item> - <item>5199411530</item> - <item>6042556344</item> - <item>6044283359</item> - <item>6044371940</item> - <item>6045831295</item> - <item>6046871867</item> - <item>6048723311</item> - <item>6048750885</item> - <item>6049873374</item> - <item>6134982100</item> - <item>6135453227</item> - <item>6136735148</item> - <item>6137226914</item> - <item>6137356866</item> - <item>6137477800</item> - <item>6139332292</item> - <item>6139629291</item> - <item>7052689033</item> - <item>7053362229</item> - <item>7053607100</item> - <item>7054720910</item> - <item>7055663113</item> - <item>7057266587</item> - <item>7057439751</item> - <item>7058592100</item> - <item>7059490162</item> - <item>7099446900</item> - <item>7803101818</item> - <item>7804790058</item> - <item>7805232929</item> - <item>7805234357</item> - <item>7806721035</item> - <item>8072743201</item> - <item>8073436100</item> - <item>8074675437</item> - <item>8074686224</item> - <item>8076238511</item> - <item>8077373466</item> - <item>8669399915</item> - <item>8676337720</item> - <item>8676685733</item> - <item>8679793333</item> - <item>9053334441</item> - <item>9053636131</item> - <item>9054331551</item> - <item>9055221121</item> - <item>9055252012</item> - <item>9058952318</item> - <item>13065692724</item> - <item>17806322233</item> - <item>17806327070</item> - <item>18002507010</item> - <item>18002633045</item> - <item>18002653333</item> - <item>18002655609</item> - <item>18002658300</item> - <item>18002670570</item> - <item>18002675878</item> - <item>18002681899</item> - <item>18003639010</item> - <item>18003875437</item> - <item>18004651100</item> - <item>18004653624</item> - <item>18004653905</item> - <item>18004817834</item> - <item>18005630808</item> - <item>18006610844</item> - <item>18006612843</item> - <item>18006756168</item> - <item>18007183850</item> - <item>18553061443</item> - <item>18553224453</item> - <item>18554432660</item> - <item>18554453227</item> - <item>18555544325</item> - <item>18556871868</item> - <item>18664209990</item> - <item>18664371940</item> - <item>18665232929</item> - <item>18666067233</item> - <item>18666075437</item> - <item>18666613311</item> - <item>18668607082</item> - <item>18668630511</item> - <item>18668637868</item> - <item>18668720113</item> - <item>18669960991</item> - <item>18772724334</item> - <item>18773030910</item> - <item>18773362433</item> - <item>18773927583</item> - <item>18775211188</item> - <item>18776721010</item> - <item>18779770007</item> - <item>18882275437</item> - <item>18882982916</item> - <item>18883223019</item> - <item>18883320000</item> - <item>18884143571</item> - <item>18886616167</item> - <item>18887000996</item> - <item>18887538681</item> - <item>18887833111</item> - <item>18889377731</item> - </sensitivePN> - <!--USA--> - <sensitivePN network="310,311,312,313,316"> - <item>18004224453</item> - <item>18006214673</item> - <item>18006564673</item> - <item>18007997233</item> - <item>18662231111</item> - <item>18663852699</item> - <item>18666894357</item> - </sensitivePN> - <!--Antigua and Barbuda--> - <sensitivePN network="344"> - <item>8004357</item> - </sensitivePN> - <!--Former Dutch Antilles--> - <sensitivePN network="362"> - <item>4614444</item> - </sensitivePN> - <!--Aruba--> - <sensitivePN network="363"> - <item>131</item> - </sensitivePN> - <!--Azerbaijan--> - <sensitivePN network="400"> - <item>0124802280</item> - <item>0506802280</item> - <item>0518801180</item> - <item>0884802280</item> - </sensitivePN> - <!--India--> - <sensitivePN network="404,405"> - <item>1090</item> - <item>1091</item> - <item>1098</item> - </sensitivePN> - <!--Israel--> - <sensitivePN network="425"> - <item>1201</item> - <item>1202</item> - <item>1203</item> - <item>1204</item> - </sensitivePN> - <!--Taiwan--> - <sensitivePN network="466"> - <item>113</item> - <item>1955</item> - <item>88635557953</item> - <item>886253883095</item> - </sensitivePN> - <!--Bangladesh--> - <sensitivePN network="470"> - <item>10921</item> - </sensitivePN> - <!--Australia--> - <sensitivePN network="505"> - <item>1800737732</item> - </sensitivePN> - <!--Indonesia--> - <sensitivePN network="510"> - <item>0213903963</item> - </sensitivePN> - <!--New Zealand--> - <sensitivePN network="530"> - <item>0800733843</item> - </sensitivePN> - <!--Brazil--> - <sensitivePN network="724"> - <item>100</item> - <item>180</item> - <item>181</item> - </sensitivePN> -</sensitivePNS> diff --git a/prebuilt/common/lib/content-types.properties b/prebuilt/common/lib/content-types.properties deleted file mode 100644 index a8cdc00f..00000000 --- a/prebuilt/common/lib/content-types.properties +++ /dev/null @@ -1,44 +0,0 @@ -# If you want to support more recognized mimetypes in libcore.net.MimeUtils, add them here - -docm=application/vnd.ms-word.document.macroenabled.12 -xlsb=application/vnd.ms-excel.sheet.binary.macroenabled.12 -xlsm=application/vnd.ms-excel.sheet.macroenabled.12 -ppsm=application/vnd.ms-powerpoint.slideshow.macroenabled.12 -ppsx=application/vnd.openxmlformats-officedocument.presentationml.slideshow -pptm=application/vnd.ms-powerpoint.presentation.macroenabled.12 - -asm=text/x-asm -cc=text/x-c -conf=text/plain -cpp=text/x-c -css=text/css -c=text/x-c -cxx=text/x-c -def=text/plain -dic=text/x-c -f77=text/x-fortran -f90=text/x-fortran -for=text/x-fortran -f=text/x-fortran -hh=text/x-c -hpp=text/x-c -h=text/x-c -ics=text/calendar -ifb=text/calendar -in=text/plain -jad=text/vnd.sun.j2me.app-descriptor -java=text/x-java-source -ksh=text/plain -list=text/plain -log=text/plain -pas=text/x-pascal -pl=text/plain -properties=| -prop=text/plain -p=text/x-pascal -py=text/x-python -rc=text/plain -sgml=text/sgml -sgm=text/sgml -s=text/x-asm -vcs=text/x-vcalendar diff --git a/prebuilt/common/media/audio/alarms/CyanAlarm.ogg b/prebuilt/common/media/audio/alarms/CyanAlarm.ogg Binary files differdeleted file mode 100644 index 6755bb87..00000000 --- a/prebuilt/common/media/audio/alarms/CyanAlarm.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/alarms/NuclearLaunch.ogg b/prebuilt/common/media/audio/alarms/NuclearLaunch.ogg Binary files differdeleted file mode 100644 index 00a4a83e..00000000 --- a/prebuilt/common/media/audio/alarms/NuclearLaunch.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/CyanDoink.ogg b/prebuilt/common/media/audio/notifications/CyanDoink.ogg Binary files differdeleted file mode 100644 index e8135ce8..00000000 --- a/prebuilt/common/media/audio/notifications/CyanDoink.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/CyanMail.ogg b/prebuilt/common/media/audio/notifications/CyanMail.ogg Binary files differdeleted file mode 100644 index 9b6d8c1e..00000000 --- a/prebuilt/common/media/audio/notifications/CyanMail.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/CyanMessage.ogg b/prebuilt/common/media/audio/notifications/CyanMessage.ogg Binary files differdeleted file mode 100644 index 415bfdf4..00000000 --- a/prebuilt/common/media/audio/notifications/CyanMessage.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/Laser.ogg b/prebuilt/common/media/audio/notifications/Laser.ogg Binary files differdeleted file mode 100644 index 2448c52c..00000000 --- a/prebuilt/common/media/audio/notifications/Laser.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/Naughty.ogg b/prebuilt/common/media/audio/notifications/Naughty.ogg Binary files differdeleted file mode 100644 index 77f15a86..00000000 --- a/prebuilt/common/media/audio/notifications/Naughty.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/Pong.ogg b/prebuilt/common/media/audio/notifications/Pong.ogg Binary files differdeleted file mode 100644 index 330d1e78..00000000 --- a/prebuilt/common/media/audio/notifications/Pong.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/Rang.ogg b/prebuilt/common/media/audio/notifications/Rang.ogg Binary files differdeleted file mode 100644 index 2531b3a7..00000000 --- a/prebuilt/common/media/audio/notifications/Rang.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/notifications/Stone.ogg b/prebuilt/common/media/audio/notifications/Stone.ogg Binary files differdeleted file mode 100644 index 4f9f239b..00000000 --- a/prebuilt/common/media/audio/notifications/Stone.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Boxbeat.ogg b/prebuilt/common/media/audio/ringtones/Boxbeat.ogg Binary files differdeleted file mode 100644 index 773f4780..00000000 --- a/prebuilt/common/media/audio/ringtones/Boxbeat.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/CyanTone.ogg b/prebuilt/common/media/audio/ringtones/CyanTone.ogg Binary files differdeleted file mode 100644 index eea5142b..00000000 --- a/prebuilt/common/media/audio/ringtones/CyanTone.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Highscore.ogg b/prebuilt/common/media/audio/ringtones/Highscore.ogg Binary files differdeleted file mode 100644 index fe07c899..00000000 --- a/prebuilt/common/media/audio/ringtones/Highscore.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Lyon.ogg b/prebuilt/common/media/audio/ringtones/Lyon.ogg Binary files differdeleted file mode 100644 index 3e4c9250..00000000 --- a/prebuilt/common/media/audio/ringtones/Lyon.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Rockin.ogg b/prebuilt/common/media/audio/ringtones/Rockin.ogg Binary files differdeleted file mode 100644 index d48554d3..00000000 --- a/prebuilt/common/media/audio/ringtones/Rockin.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Sheep.mp3 b/prebuilt/common/media/audio/ringtones/Sheep.mp3 Binary files differdeleted file mode 100644 index f3f84a93..00000000 --- a/prebuilt/common/media/audio/ringtones/Sheep.mp3 +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/Yukaay.ogg b/prebuilt/common/media/audio/ringtones/Yukaay.ogg Binary files differdeleted file mode 100644 index a4c88203..00000000 --- a/prebuilt/common/media/audio/ringtones/Yukaay.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/boosted/Boxbeat.ogg b/prebuilt/common/media/audio/ringtones/boosted/Boxbeat.ogg Binary files differdeleted file mode 100644 index b2ef3cff..00000000 --- a/prebuilt/common/media/audio/ringtones/boosted/Boxbeat.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/boosted/CyanTone.ogg b/prebuilt/common/media/audio/ringtones/boosted/CyanTone.ogg Binary files differdeleted file mode 100644 index a9cd3e6b..00000000 --- a/prebuilt/common/media/audio/ringtones/boosted/CyanTone.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/boosted/Highscore.ogg b/prebuilt/common/media/audio/ringtones/boosted/Highscore.ogg Binary files differdeleted file mode 100644 index 70d6399b..00000000 --- a/prebuilt/common/media/audio/ringtones/boosted/Highscore.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/boosted/Lyon.ogg b/prebuilt/common/media/audio/ringtones/boosted/Lyon.ogg Binary files differdeleted file mode 100644 index 7f43481e..00000000 --- a/prebuilt/common/media/audio/ringtones/boosted/Lyon.ogg +++ /dev/null diff --git a/prebuilt/common/media/audio/ringtones/boosted/Rockin.ogg b/prebuilt/common/media/audio/ringtones/boosted/Rockin.ogg Binary files differdeleted file mode 100644 index d9ec09dd..00000000 --- a/prebuilt/common/media/audio/ringtones/boosted/Rockin.ogg +++ /dev/null diff --git a/product/nvidia.mk b/product/nvidia.mk deleted file mode 100644 index 5ae815d0..00000000 --- a/product/nvidia.mk +++ /dev/null @@ -1,18 +0,0 @@ -# Copyright (C) 2019 The LineageOS Project -# -# 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. - -# Baseline Nvidia framework enhancements -# Includes support for: -# 1) NvCPL / Application Profiles -NV_ANDROID_FRAMEWORK_ENHANCEMENTS := true diff --git a/tools/custom_apns.py b/tools/custom_apns.py deleted file mode 100644 index b58ece1b..00000000 --- a/tools/custom_apns.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# -# Copyright (C) 2018 The LineageOS Project -# -# 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. -# - -import sys -from xml.dom.minidom import parseString - -def main(argv): - reload(sys) - sys.setdefaultencoding('utf8') - original_file = 'vendor/lineage/prebuilt/common/etc/apns-conf.xml' - - if len(argv) == 3: - output_file_path = argv[1] - custom_override_file = argv[2] - else: - raise ValueError("Wrong number of arguments %s" % len(argv)) - - custom_apn_names = [] - with open(custom_override_file, 'r') as f: - for line in f: - xmltree = parseString(line) - carrier = xmltree.getElementsByTagName('apn')[0].getAttribute('carrier') - custom_apn_names.append(carrier) - - with open(original_file, 'r') as input_file: - with open(output_file_path, 'w') as output_file: - for line in input_file: - writeOriginalLine = True - for apn in custom_apn_names: - if apn in line: - with open(custom_override_file, 'r') as custom_file: - for override_line in custom_file: - if apn in override_line: - output_file.write(override_line) - writeOriginalLine = False - custom_apn_names.remove(apn) - if writeOriginalLine: - if "</apns>" in line: - if custom_apn_names: - for apn in custom_apn_names: - with open(custom_override_file, 'r') as custom_file: - for override_line in custom_file: - if apn in override_line: - output_file.write(override_line) - output_file.write(line) - -if __name__ == '__main__': - main(sys.argv) diff --git a/vendorsetup.sh b/vendorsetup.sh deleted file mode 100644 index 674364b0..00000000 --- a/vendorsetup.sh +++ /dev/null @@ -1,9 +0,0 @@ -for combo in $(curl -s https://raw.githubusercontent.com/LineageOS/hudson/master/lineage-build-targets | sed -e 's/#.*$//' | grep lineage-16.0 | awk '{printf "lineage_%s-%s\n", $1, $2}') -do - add_lunch_combo $combo -done - -add_lunch_combo lineage_arm-userdebug -add_lunch_combo lineage_arm64-userdebug -add_lunch_combo lineage_x86-userdebug -add_lunch_combo lineage_x86_64-userdebug diff --git a/verity_tool/Android.bp b/verity_tool/Android.bp deleted file mode 100644 index 0a2ecd88..00000000 --- a/verity_tool/Android.bp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright 2018 The LineageOS Project - -cc_library { - name: "libveritytool", - srcs: ["verity_tool.cpp"], - local_include_dirs: ["include"], - export_include_dirs: ["include"], - cflags: ["-Werror"], - shared_libs: [ - "libbase", - "libcrypto", - "libcrypto_utils", - "libfec", - ], - static_libs: [ - "libfs_mgr", - ], - whole_static_libs: [ - "libavb_user", - ], -} - -cc_binary { - name: "veritytool", - srcs: ["main.cpp"], - shared_libs: ["libveritytool"], - cflags: ["-Werror"], -} diff --git a/verity_tool/include/verity_tool.h b/verity_tool/include/verity_tool.h deleted file mode 100644 index b81eda1a..00000000 --- a/verity_tool/include/verity_tool.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (C) 2018 The LineageOS Project - * - * 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. - */ - -#pragma once - -#include <string> - -typedef enum { - VERITY_STATE_UNKNOWN, - VERITY_STATE_NO_DEVICE, - VERITY_STATE_DISABLED, - VERITY_STATE_ENABLED, - VERITY_STATE_MAX = VERITY_STATE_ENABLED -} verity_state_t; - -/* - * Return codes: - * - * true: verity state set - * false: verity state not set - */ -bool set_block_device_verity_enabled(const std::string& block_device, - bool enable); - -/* - * Return codes: - * - * verity state (unknown, disabled, enabled) - */ -verity_state_t get_verity_state(); - -/* - * Return codes: - * - * true: verity state set for all block devices - * false: verity state not for set all block devices - */ -bool set_verity_enabled(bool enable); diff --git a/verity_tool/main.cpp b/verity_tool/main.cpp deleted file mode 100644 index befdafac..00000000 --- a/verity_tool/main.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2018 The LineageOS Project - * - * 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. - */ - -#include "verity_tool.h" - -#include <getopt.h> -#include <stdio.h> -#include <string.h> - -static void print_usage() { - printf("veritytool - toggle block device verification\n" - " --help show this help\n" - " --enable enable dm-verity\n" - " --disable disable dm-verity\n" - " --show show current dm-verity state\n"); -} - -int main(int argc, char** argv) { - int c, rc; - int enable = 0; - int show = 0; - bool flag_set = false; - struct option long_opts[] = { - {"disable", no_argument, &enable, 0}, - {"enable", no_argument, &enable, 1}, - {"show", no_argument, &show, 1}, - {NULL, 0, NULL, 0}, - }; - - while ((c = getopt_long(argc, argv, "des", long_opts, NULL)) != -1) { - switch (c) { - case 0: - flag_set = true; - break; - default: - print_usage(); - exit(0); - } - } - - if (!flag_set) { - print_usage(); - exit(0); - } - - if (show) { - printf("dm-verity state: "); - switch (get_verity_state()) { - case VERITY_STATE_NO_DEVICE: - printf("NO DEVICE"); - break; - case VERITY_STATE_DISABLED: - printf("DISABLED"); - break; - case VERITY_STATE_ENABLED: - printf("ENABLED"); - break; - default: - printf("UNKNOWN"); - break; - } - printf("\n"); - return 0; - } - - if (!set_verity_enabled(enable)) { - printf("Error occurred in set_verity_enable\n"); - exit(EXIT_FAILURE); - } - - printf("Set verity mode to: %s\n", enable ? "enabled" : "disabled"); - printf("Now reboot your device for settings to take effect\n"); - return 0; -} diff --git a/verity_tool/verity_tool.cpp b/verity_tool/verity_tool.cpp deleted file mode 100644 index 48e95b67..00000000 --- a/verity_tool/verity_tool.cpp +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * 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. - */ - -#include "verity_tool.h" - -#include <android-base/logging.h> -#include <android-base/properties.h> -#include <fs_mgr.h> -#include <fec/io.h> -#include <libavb_user/libavb_user.h> - -#include <linux/fs.h> - -#include <errno.h> - -static int make_block_device_writable(const std::string& block_device) { - int fd = open(block_device.c_str(), O_RDONLY | O_CLOEXEC); - if (fd < 0) { - return -errno; - } - - int OFF = 0; - int rc = ioctl(fd, BLKROSET, &OFF); - if (rc < 0) { - rc = -errno; - goto out; - } - rc = 0; -out: - close(fd); - return rc; -} - -/* Turn verity on/off */ -bool set_block_device_verity_enabled(const std::string& block_device, - bool enable) { - int rc = make_block_device_writable(block_device); - if (rc) { - LOG(ERROR) << "Could not make block device " - << block_device << " writable:" << rc; - return false; - } - - fec::io fh(block_device, O_RDWR); - if (!fh) { - PLOG(ERROR) << "Could not open block device " << block_device; - return false; - } - - fec_verity_metadata metadata; - if (!fh.get_verity_metadata(metadata)) { - LOG(ERROR) << "Couldn't find verity metadata!"; - return false; - } - - if (!enable && metadata.disabled) { - LOG(ERROR) << "Verity already disabled on " << block_device; - return false; - } - - if (enable && !metadata.disabled) { - LOG(WARNING) << "Verity already enabled on " << block_device; - return false; - } - - if (!fh.set_verity_status(enable)) { - PLOG(ERROR) << "Could not set verity " - << (enable ? "enabled" : "disabled") - << " flag on device " << block_device; - return false; - } - - LOG(DEBUG) << "Verity " << (enable ? "enabled" : "disabled") - << " on " << block_device; - return true; -} - -/* Helper function to get A/B suffix, if any. If the device isn't - * using A/B the empty string is returned. Otherwise either "_a", - * "_b", ... is returned. - * - * Note that since sometime in O androidboot.slot_suffix is deprecated - * and androidboot.slot should be used instead. Since bootloaders may - * be out of sync with the OS, we check both and for extra safety - * prepend a leading underscore if there isn't one already. - */ -static std::string get_ab_suffix() { - std::string ab_suffix = android::base::GetProperty("ro.boot.slot_suffix", ""); - if (ab_suffix.empty()) { - ab_suffix = android::base::GetProperty("ro.boot.slot", ""); - } - if (ab_suffix.size() > 0 && ab_suffix[0] != '_') { - ab_suffix = std::string("_") + ab_suffix; - } - return ab_suffix; -} - -verity_state_t get_verity_state() { - verity_state_t rc = VERITY_STATE_NO_DEVICE; - std::string ab_suffix = get_ab_suffix(); - - // Figure out if we're using VB1.0 or VB2.0 (aka AVB) - by - // contract, androidboot.vbmeta.digest is set by the bootloader - // when using AVB). - bool using_avb = !android::base::GetProperty("ro.boot.vbmeta.digest", "").empty(); - - if (using_avb) { - // Yep, the system is using AVB. - AvbOps* ops = avb_ops_user_new(); - if (ops == nullptr) { - LOG(ERROR) << "Error getting AVB ops"; - avb_ops_user_free(ops); - return VERITY_STATE_UNKNOWN; - } - bool verity_enabled; - if (!avb_user_verity_get(ops, ab_suffix.c_str(), &verity_enabled)) { - LOG(ERROR) << "Error getting verity state"; - avb_ops_user_free(ops); - return VERITY_STATE_UNKNOWN; - } - rc = verity_enabled ? VERITY_STATE_ENABLED : VERITY_STATE_DISABLED; - avb_ops_user_free(ops); - } else { - // Not using AVB - assume VB1.0. - - // read all fstab entries at once from all sources - struct fstab* fstab = fs_mgr_read_fstab_default(); - if (!fstab) { - LOG(ERROR) << "Failed to read fstab"; - fs_mgr_free_fstab(fstab); - return VERITY_STATE_UNKNOWN; - } - - // Loop through entries looking for ones that vold manages. - for (int i = 0; i < fstab->num_entries; i++) { - if (fs_mgr_is_verified(&fstab->recs[i])) { - std::string block_device = fstab->recs[i].blk_device; - fec::io fh(block_device, O_RDONLY); - if (!fh) { - PLOG(ERROR) << "Could not open block device " << block_device; - rc = VERITY_STATE_UNKNOWN; - break; - } - - fec_verity_metadata metadata; - if (!fh.get_verity_metadata(metadata)) { - LOG(ERROR) << "Couldn't find verity metadata!"; - rc = VERITY_STATE_UNKNOWN; - break; - } - - rc = metadata.disabled ? VERITY_STATE_DISABLED : VERITY_STATE_ENABLED; - } - } - fs_mgr_free_fstab(fstab); - } - - return rc; -} - -/* Use AVB to turn verity on/off */ -static bool set_avb_verity_enabled_state(AvbOps* ops, bool enable_verity) { - std::string ab_suffix = get_ab_suffix(); - - bool verity_enabled; - if (!avb_user_verity_get(ops, ab_suffix.c_str(), &verity_enabled)) { - LOG(ERROR) << "Error getting verity state"; - return false; - } - - if ((verity_enabled && enable_verity) || - (!verity_enabled && !enable_verity)) { - LOG(WARNING) << "verity is already " - << verity_enabled ? "enabled" : "disabled"; - return false; - } - - if (!avb_user_verity_set(ops, ab_suffix.c_str(), enable_verity)) { - LOG(ERROR) << "Error setting verity"; - return false; - } - - LOG(DEBUG) << "Successfully " << (enable_verity ? "enabled" : "disabled") - << " verity"; - return true; -} - -bool set_verity_enabled(bool enable) { - bool rc = true; - - // Do not allow changing verity on user builds - bool is_user = (android::base::GetProperty("ro.build.type", "") == "user"); - if (is_user) { - LOG(ERROR) << "Cannot disable verity - USER BUILD"; - return false; - } - - // Figure out if we're using VB1.0 or VB2.0 (aka AVB) - by - // contract, androidboot.vbmeta.digest is set by the bootloader - // when using AVB). - bool using_avb = !android::base::GetProperty("ro.boot.vbmeta.digest", "").empty(); - - // If using AVB, dm-verity is used on any build so we want it to - // be possible to disable/enable on any build (except USER). For - // VB1.0 dm-verity is only enabled on certain builds. - if (using_avb) { - // Yep, the system is using AVB. - AvbOps* ops = avb_ops_user_new(); - if (ops == nullptr) { - LOG(ERROR) << "Error getting AVB ops"; - return false; - } - rc = set_avb_verity_enabled_state(ops, enable); - avb_ops_user_free(ops); - } else { - // Not using AVB - assume VB1.0. - - // read all fstab entries at once from all sources - struct fstab* fstab = fs_mgr_read_fstab_default(); - if (!fstab) { - LOG(ERROR) << "Failed to read fstab"; - return false; - } - - // Loop through entries looking for ones that vold manages. - for (int i = 0; i < fstab->num_entries; i++) { - if (fs_mgr_is_verified(&fstab->recs[i])) { - bool result = set_block_device_verity_enabled( - fstab->recs[i].blk_device, enable); - if (!result) { - // Warn, but continue if failure occurred - LOG(WARNING) << "Failed to set state " - << (enable ? "enabled" : "disabled") - << " on " << fstab->recs[i].mount_point; - } - rc = rc && result; - } - } - } - - return rc; -} diff --git a/prebuilt/common/bin/wget b/wget index 1d04de54..1d04de54 100755 --- a/prebuilt/common/bin/wget +++ b/wget |