#!/usr/bin/perl -wT
# gsutil - GrandStream configuration dump/restore + reboot
# Copyright (C) 2009  Charles Howes <gsutil@ch.pkts.ca>
# 
# 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
# of the License, 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., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.

$main::VERSION="3.1"; # 2009-08-13

use strict;
use Getopt::Std;
use HTML::Form;
use HTTP::Request;
use LWP::UserAgent;
use Socket;
use POSIX qw(strftime);
use Data::Dumper;

# Backup the command line:
my $cmdline=join(" ",@ARGV);

# Stuff used by getopts:
$Getopt::Std::STANDARD_HELP_VERSION=1;

# Get command line options:
my %opts;
my $r=getopts('bdehnop:rw',\%opts);

# If the user is asking for help:
if (defined $opts{'h'}) {
  VERSION_MESSAGE(*STDOUT{IO});
  HELP_MESSAGE(*STDOUT{IO});
  exit 0;
}

# Version information, called by getopts if --version or --help given.
sub VERSION_MESSAGE {
  my $fh=$_[0];  # Passed a file handle.
  print $fh "Version $main::VERSION of GSutil, a GrandStream BudgeTone phone backup, restore\n";
  print $fh "and reboot utility.  Written by Charles Howes (gsutil\@ch.pkts.ca).\n";
  print $fh "http://www.pkts.ca/gsutil.shtml\n";
}

# Help information, called by getopts if --help given.
sub HELP_MESSAGE {
  my $fh=$_[0];  # Passed a file handle.
  print $fh "Usage: $0 -[b|d|e|h|r] [-w] [-n] [-o] [-p password] address..\n";
  print $fh "  -b : reboot\n";
  print $fh "  -d : dump to stdout\n";
  print $fh "  -e : show phone firmware versions\n";
  print $fh "  -r : restore from stdin\n";
  print $fh "  -w : wait for device to be free (moves busy devices to end of list)\n";
  print $fh "  -n : don't wait for reboot to finish\n";
  print $fh "  -o : don't translate configuration values\n";
  print $fh "  -p : password (default: admin)\n";
  print $fh "  -h, --help : print this help\n";
  print $fh "  --version : print the version of gsutil\n";
  # getopts exits after calling HELP_MESSAGE()
}

if (!defined $opts{'b'} and !defined $opts{'d'} and !defined $opts{'e'} and !defined $opts{'r'}) {
  print STDERR "No command was given.\n\n";
  print STDERR "Choose one of -b, -d, -e, or -r to do something.\n";
  print STDERR "Try `$0 --help' for more information.\n";
  exit 0;
}

# Get the password
my $password=$opts{'p'};
if (!defined $password) {$password='admin'};  # Default password

# The addresses are on the command line:
if (!defined $ARGV[0]) {
  print STDERR "No addresses of phones were given on the command line.\n";
  HELP_MESSAGE(*STDOUT{IO});
  exit(3);
}

# Convert and error-check all hosts:
my @todo=map {parseaddress($_)} @ARGV;

# The configuration variables get translated into english with this table.
# The translations themselves are stored in the __DATA__ block at the end.
my %translate;
my %untranslate;
while (<DATA>) {
  chomp;
  s/#.*//; # remove comments
  s/\s+$//; # remove trailing space
  # if no translation is available, use the key:
  if (/^\s*(P\d+):\s*(.*)/) {
    $translate{$1} = $2;
    $untranslate{uc($2)} = $1;
  }
}

# Lines of data from stdin
my $linenumber=0;

# For each host on the command line:
while (@todo) {
  my $address=shift(@todo);

  if ($address eq "-pause-") {warn("Pausing for 5 seconds\n");sleep(5);next;}

  # Set up the user agent:
  my $ua=LWP::UserAgent->new(timeout=>3);
  my $url="http://$address/";

  # Get the login page:
  my $req_login=HTTP::Request->new(GET=>$url);
  my $resp_login;

  $resp_login=$ua->request($req_login);
  if ($resp_login->code != 200) { show_error($address,$resp_login); next;}
  if ($resp_login->content =~ m/The device is busy now/i) {
    warn("$address is busy\n");
    if (defined $opts{'w'}) {
      warn("$address requeued\n");
      if (grep(/-pause-/,@todo)==0) {push @todo,"-pause-";}
      push @todo,$address;
    }
    next;
  }

  my $form_login=HTML::Form->parse($resp_login->content,$url);
  if (!defined $form_login) {
    warn("$address didn't respond with a form; is it a GS phone?\n");
    next;
  }


  # See if this is the right form
  if (grep(/^P2$/,$form_login->param)==0) {
    warn("$address The form didn't have the expected 'P2' (password) field in it!\n".
       "    Debug output:\n".Dumper($form_login));
    next;
  }

  # Stuff in the password
  $form_login->value('P2' => $password);

  # Log in and get main page
  my $resp_main = $ua->request($form_login->click);
  if ($resp_main->code != 200 or $resp_main->content =~ m/Your Login Password is not recognized/) { show_error($address,$resp_main); next;}
  my $form_main=HTML::Form->parse($resp_main->content,$form_login->action);

  # Find the cookie:
  my $cookie=$resp_main->headers->header("set-cookie");
  #1.0.5.x:'set-cookie' => 'SessionId=3bf1ca965d26edb9"; Version=1; Path=/'
  #1.0.6.x:'set-cookie' => 'SessionId="965c22e1bd86fece"; Version=1; Path=/'
  if (!defined $cookie) {
    warn("$address No cookie was sent, but the password was accepted?!  This may be a new firmware.\n");
    next;
  }
  if ($cookie!~m/SessionId="?([^"]*)"/) {
    warn("$address The cookie didn't contain 'SessionId'!  This may be a new firmware.\n".
       "  It said: $cookie\n");
    next;
  }
  my $sessionid=$1;

  # Get everything:
  my $domore=0;
  my $resp_index_htm=$ua->request(HTTP::Request->new(GET=>$url."index.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\"")));
  my $resp_config2_htm=$ua->request(HTTP::Request->new(GET=>$url."config2.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\"")));

  # Get extended phone configuration if your firmware supports it:
  my $resp_config_a1_htm=$ua->request(HTTP::Request->new(GET=>$url."config_a1.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\"")));
  if ($resp_config_a1_htm->code==200) {$domore=1;}  # Do a2-a4 only if a1 was found.
  my $resp_config_a2_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_a2.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_a3_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_a3.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_a4_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_a4.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_a5_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_a5.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_a6_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_a6.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_e1_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_e1.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;
  my $resp_config_e2_htm=$domore?$ua->request(HTTP::Request->new(GET=>$url."config_e2.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\""))):undef;

  # Do everything:
  if (defined $opts{'e'}) { show_version($address,$resp_main,$resp_index_htm); }
  if (defined $opts{'d'}) { dump_data($address,$resp_main,$resp_index_htm,$resp_config2_htm,$resp_config_a1_htm,$resp_config_a2_htm,$resp_config_a3_htm,$resp_config_a4_htm,$resp_config_a5_htm,$resp_config_a6_htm,$resp_config_e1_htm,$resp_config_e2_htm); }
  if (defined $opts{'r'}) { restore_data($address,$sessionid,$resp_main,$resp_index_htm,$resp_config2_htm,$resp_config_a1_htm,$resp_config_a2_htm,$resp_config_a3_htm,$resp_config_a4_htm,$resp_config_a5_htm,$resp_config_a6_htm,$resp_config_e1_htm,$resp_config_e2_htm); }
  if (defined $opts{'b'}) { reboot($address,$url,$sessionid,$opts{'n'}); }
}

# Show the phone's hardware model and version:
sub show_version {
  my ($address,$resp_main,$resp_index_htm)=@_;
  my $body=$resp_main->content.$resp_index_htm->content;
  my $mac;
  my $model;
  my $version;

  if ($body=~m/<\/b><\/td>\s*<td>([^<]*:[^<]{2}:[^<]{2}:[^<]{2}:[^<]{2}:[^<]{2})/s) {
    $mac=$1;
    $mac=~s/(&nbsp;|\s+)/ /gs;
    $mac=~s/(^\s+)|(\s+$)//gs;
  }
  if ($body=~m/<\/b><\/td>\s*<td>([^\(<]*\(HW[^\)]*\)[^<]*)/s) {
    $model=$1;
    $model=~s/(&nbsp;|\s+)/ /gs;
    $model=~s/(^\s+)|(\s+$)//gs;
  }
  if ($body=~m/<b>Software Version:\s*<\/b><\/td>\s*<td>([^<]*)/s) {
    $version=$1;
    $version=~s/(&nbsp;|\s+)/ /gs;  # delete spaces and &nbsp;
    $version=~s/(^\s+)|(\s+$)//gs;  # delete leading/trailing spaces
    $version=~s/\s+/ /gs;           # delete spaces some more
    $version=~s/--/:/gs;          # turn -- into :
  }
  my $head="# $address";
  if (defined $model) {print $head." Model ".$model;$head="";}
  if (defined $version) {print $head." ".$version;$head="";}
  if (defined $mac) {print $head." MAC ".$mac;$head="";}
  if ($head eq "") {print "\n";}
}

# Reboot the phone:
sub reboot {
  my ($address,$url,$sessionid,$opts_n)=@_;
  my $ua2=LWP::UserAgent->new(timeout=>1);
  my $resp_rs_htm=$ua2->request(HTTP::Request->new(GET=>$url."rs.htm",HTTP::Headers->new(Cookie=>"SessionID=\"$sessionid\"")));
  if (!defined $opts_n) {
    my $req_login=HTTP::Request->new(GET=>$url);
    my $resp_login;
    my $now=time();
    my $up=1;
    for (my $n=0;$n<30;$n++) { # Should be done in 21 seconds or so.
      $resp_login=$ua2->request($req_login);
      if ($resp_login->code==200 and $up==1) {sleep(1);next;}
      if ($resp_login->code==500) {$up=0;next;}
      last;  # It's up again after being down (200 -> 500 -> 200)
      # Note, if pppoe is configured, it could go down again for a bit.
    }
  }
}

# Dump the phone configuration to stdout:
sub dump_data {
  my ($address,@responses)=@_;
  my $stamp=strftime("%Y-%m-%d %H:%M:%S",localtime());
  print "#-- start of phone $address ($stamp)\n"; # Mark the start
  foreach (@responses) { if (defined $_) {dump_form($address,HTML::Form->parse($_));} }
  print "#-- end of phone $address ($stamp)\n";
}

# Restre the phone configuration from stdin:
sub restore_data {
  my ($address,$sessionid,@responses)=@_;
  my %val;

  # Error checking:
  my %formlines;
  my %filled;

  # Read stdinput for the phone's data:
  while(<STDIN>) {
    chomp;
    $linenumber++;

    if (m/^#-- end of phone/) {last;} # End of this phone's configuration
    if (m/^#/) {next;}  # Skip comment lines
    if (m/^$/) {next;}  # Skip blank lines
    s/\s+#.*//;  # Comment deletion (won't cut in the middle of a word)

    if (m/^([^=]+)=(.*)$/) {   # name = value...
      my $ls=$1; # ls=left side
      my $rs=$2; # rs=right side
      # Trim whitespace, uppercase ls:
      $ls=~s/^\s*(.*?)\s*$/\U$1/;
      $rs=~s/^\s*(.*?)\s*$/$1/;
      # Quote removal from rs:
      $rs=~s/^'(.*)'$/$1/;
      $rs=~s/^"(.*)"$/$1/;
      # Stick it into %val:
      if (defined($translate{$ls})) { $val{$ls}=$rs;next;} # P999 = ...
      if (defined($untranslate{$ls})) { $val{$untranslate{$ls}}=$rs;next;} # name = ...
      warn("$address Unknown input variable '$_', from stdin line $linenumber.\n   Add it to the translation table at the end of the program.\n");
    }
    warn("$address Unrecognized input line '$_', from stdin line $linenumber\n");
  }

  # Fill in the form(s):
  my $form;
  my $ua2=LWP::UserAgent->new(timeout=>3);
  foreach my $response (@responses) {
    if (!defined $response) {next;} # No response here (a2-a4?)
    $form=HTML::Form->parse($response);
    if (!defined $form) {next;} # No form here (a1?)
    foreach my $n ($form->param) {
      $formlines{$n}=1;  # These fields were present on the phone
      if (defined $val{$n}) {
	$form->param($n,$val{$n});
	$filled{$n}=1;  # These fields were filled in from stdin
      }
    }

    # Make the request and add a cookie:
    my $request=$form->make_request;
    $request->header("Cookie" => "SessionId=\"$sessionid\"");

    # Send it:
    my $response=$ua2->request($request);
  }

  # Check for missed data:
  foreach (sort keys %val) {
    if (!defined $formlines{$_}) {
      warn("$address The config file had $_ ($translate{$_}), but the phone did not.\n");
    }
  }
}

# Print out the fields and their values:
sub dump_form {
    my ($address,$form) = @_;
    if (!defined $form) {return;}  # Deal with undefined forms
    foreach my $n ($form->param) {
	if ($n =~ m/^(cancel|reboot|gnkey|update|P2|P196)$/) {next;}
	if (defined $translate{$n} && !defined $opts{'o'}) {
	    print $translate{$n}," = ",$form->param($n),"\n";
	} else {
	    if (!defined $opts{'o'}) {
		warn("$address The parameter $n(=".($form->param($n)).") was not found in the translate table.\n  Use -o to skip translation, or manually add it to the translate table\n");
	    }
	    if (defined $translate{$n}) { print "# $translate{$n}:\n"; }
	    print "$n = ",$form->param($n),"\n";
	    print "\n";
	}
    }
}

# Convert addresses given on command line, and check them.
sub parseaddress {
  my $add=$_[0];
  if ($add !~ m/^([a-z0-9.-]{1,80})$/) { # Valid characters?
    warn("$add isn't a valid hostname\n");
    return;
  }
  my $address=$1;
  if ($address=~m/[a-z]/) {  # If it has a letter, it's a hostname
    if (!defined gethostbyname($address)) {
      warn("$address unknown host\n");
      return;
    }
  }
  return $address;
}

# Decode the error message
sub show_error {
  my ($address,$response)=@_;
  if (!defined $response) {
    die("$0: show_error called with not enough arguments");
  }

  # Page not found:
  if ($response->code == 403) {
    warn("$address page not found, is this a GS phone?\n");
    return;
  }

  # Bad password:
  if ($response->content =~ m/Your Login Password is not recognized/) {
    $cmdline =~ s/\s+-p\s*\S+//;  # Cut out old password
    warn("$address bad password.\n".
        "  Try:  $0 -p your-secret-password $cmdline\n");
    return;
  }

  # Error:
  if ($response->code == 500) {
    # Trying to connect to a firewalled, misconfigured or dead phone:
    if ($response->content =~ m/Can't connect to \S+ \(connect: timeout\)/) {
      warn("$address was unreachable (either rebooting, firewalled, misconfigured, unplugged, or dead)\n");
      return;
    }
    # The arp table knows how to get there, but the phone is not answering:
    if ($response->content =~ m/Can't connect to \S+ \(connect: No route to host\)/) {
      warn("$address was unreachable (either rebooting or recently unplugged)\n");
      return;
    }

    # The phone is tired of being queried over and over:
    if ($response->content =~ m/read timeout/) {
      warn("$address gave a read timeout after connecting; try again.\n");
      return;
    }

  }

  # Some other fatal error:
  warn("$address gave an unexpected ".($response->code)." error.\n".
	"  Here is a full dump of the response:\n".
	Dumper($response)."\n".
	"  Send this to the author, gsutil\@ch.pkts.ca\n".
	"  so that it can be added to the program.\n"
      );
  return;
}

# This is the translate table:
__DATA__
P2: admin_password
P3: name
P8: static_ipaddress_true
P9: static_ipaddress_1
P10: static_ipaddress_2
P11: static_ipaddress_3
P12: static_ipaddress_4
P13: static_subnet_1
P14: static_subnet_2
P15: static_subnet_3
P16: static_subnet_4
P17: static_router_1
P18: static_router_2
P19: static_router_3
P20: static_router_4
P21: static_dns1_1
P22: static_dns1_2
P23: static_dns1_3
P24: static_dns1_4
P25: static_dns2_1
P26: static_dns2_2
P27: static_dns2_3
P28: static_dns2_4
P29: early_dial
P30: ntp_server
P31: sip_registration
P32: register_expiration
P33: voicemail_userid
P34: authenticate_password
P35: sip_userid
P36: authenticate_id
P37: voice_frames_per_tx
P38: layer3_QoS
P39: local_rtp_port
P40: local_sip_port
P41: tftp_server_1
P42: tftp_server_2
P43: tftp_server_3
P44: tftp_server_4
P46: vocoder_7
P47: sip_server
P48: outbound_proxy
P49: G723_rate
P50: silence_suppression
P51: layer2_QoS_vlan_tag
P52: nat_traversal_true
P57: vocoder_1
P58: vocoder_2
P59: vocoder_3
P60: vocoder_4
P61: vocoder_5
P62: vocoder_6
P63: userid_is_phone_number
P64: time_zone
P65: send_anonymous
P66: dial_plan_prefix
P71: offhook_autodial
P72: use_hash_as_dial_key
P73: send_dtmf_mode
P74: send_flash_event
P75: daylight_savings_time
P76: nat_traversal_stun_server
P78: use_random_port
P79: dtmf_payload_type
P81: unregister_on_reboot
P82: PPPoE_id
P83: PPPoE_password
P84: keepalive_interval
P85: no_key_entry_timeout
P86: FXS_impedance
P87: layer2_QoS_priority_value
P88: lock_keypad_update
P90: auto_answer
P91: disable_call_waiting
P92: dhcp_dns_server_1
P93: dhcp_dns_server_2
P94: dhcp_dns_server_3
P95: dhcp_dns_server_4
P96: iLBC_payload_type
P97: iLBC_frame_size
P98: vocoder_8
P99: subscribe_for_mwi
P101: use_nat_ip
P102: date_display_format
P103: use_dns_srv
P104: default_ring_tone
P105: custom_ring_tone_1_caller_id
P106: custom_ring_tone_2_caller_id
P107: custom_ring_tone_3_caller_id
P109: allow_out_call_without_registration # 0 or 1
P110: lan_subnet_mask
P111: lan_dhcp_base_ip
P112: dhcp_ip_lease_time
P113: dmz_ip
P115: cloned_wan_mac_addr_1
P116: cloned_wan_mac_addr_2
P117: cloned_wan_mac_addr_3
P118: cloned_wan_mac_addr_4
P119: cloned_wan_mac_addr_5
P120: cloned_wan_mac_addr_6
P122: time_display_format  # 0 = 12 hour; 1 = 24 hour
P123: display_clock_instead_of_date # 0 or 1
P129: anonymous_call_rejection_1 # 0=No, 1=Yes
P130: sip_transport_1 # 1=UDP, 2=TCP
P131: use_rfc3581_symmetric_routing_1 # 0=No, 1=Yes
P134: eventlist_blf_uri_1
P135: referto_use_target_contact_1 # 0=No, 1=Yes
P137: disable_multiple_media_attribute_sdp_1 # 0=No, 1=Yes
P138: sip_registration_failure_retry_wait_time_1
P139: delayed_call_forward_wait_time_1
P143: dhcp_option_2_timezone_override
P144: dhcp_option_42_timeserver_override
P145: dhcp_option_66_bootserver
P146: dhcp_option_12_hostname # ppoe_hostname
P147: dhcp_option_15_domain # ppoe_domain_name
P148: dhcp_option_60_vendor_class_id # ppoe_vendor_class
P150: port_fw_port_num_1
P151: port_fw_port_num_2
P152: port_fw_port_num_3
P153: port_fw_port_num_4
P154: port_fw_port_num_5
P155: port_fw_port_num_6
P156: port_fw_port_num_7
P157: port_fw_port_num_8
P158: port_fw_lan_ip_1
P159: port_fw_lan_ip_2
P160: port_fw_lan_ip_3
P161: port_fw_lan_ip_4
P162: port_fw_lan_ip_5
P163: port_fw_lan_ip_6
P164: port_fw_lan_ip_7
P165: port_fw_lan_ip_9
P166: port_fw_lan_port_1
P167: port_fw_lan_port_2
P168: port_fw_lan_port_3
P169: port_fw_lan_port_4
P170: port_fw_lan_port_5
P171: port_fw_lan_port_6
P172: port_fw_lan_port_7
P173: port_fw_lan_port_8
P174: port_fw_lan_proto_1
P175: port_fw_lan_proto_2
P176: port_fw_lan_proto_3
P177: port_fw_lan_proto_4
P178: port_fw_lan_proto_5
P179: port_fw_lan_proto_6
P180: port_fw_lan_proto_7
P181: port_fw_lan_proto_8
P182: disable_missed_calls_1
P183: srtp_mode_1 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P184: use_quick_ip_call_mode
P186: disable_callwaiting_tone_1 # 0=No, 1=Yes
P188: publish_for_presence_1 # 0=No, 1=Yes
P189: replay_to_icmp_in_wan	# 0 = no
				# 1 = yes
P190: wan_side_http_access	# 0 = no
				# 1 = yes
P191: enable_call_features
P192: http_upgrade_url
P193: automatic_http_upgrade_days
P194: automatic_http_upgrade
P196: end_user_password
P197: proxy_require
P198: special_feature_1 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P200: caller_id_scheme
P205: polarity_reversal
P206: onhook_voltage
P207: syslog_server
P208: syslog_level
P209: sip_t1_timeout	# 50 = 0_5_sek
			# 100 = 1_sek
			# 200 = 2_sek
P212: firmware_upgrade
P213: firmware_upgrade_tftp_1
P214: firmware_upgrade_tftp_2
P215: firmware_upgrade_tftp_3
P216: firmware_upgrade_tftp_4
P228: fax_mode
P231: device_mode	# 0 = switch
			# 1 = nat_router
P232: firmware_file_prefix
P233: firmware_file_postfix
P234: config_file_prefix
P235: config_file_postfix
P237: config_server_path
P238: always_check_for_new_firmware
P239: register_expiration_delay # in seconds, default 1800
P240: auth_config_file	# 0 = No
			# 1 = Yes
P241: allow_conf_sip_account_in_basic_settings	# 0 or 1
P242: firmware_key	# text (in Hexadecimal Representation)
P243: allow_from_sip_proxy_only # 0 or 1
P244: override_mtu_size	# 0 or 1
P245: onhook_threshold	# 0 = Hookflash OFF
			# 2 = 200 ms
			# 4 = 400 ms
			# 6 = 600 ms
			# 8 = 800 ms (default)
			# 10 = 1000 ms
			# 12 = 1200 ms
P246: daylight_savings_time_optional_rule
P250: sip_t2_interval
P258: check_sip_user_id_for_incoming_invite_1 # 0=No, 1=Yes
P260: session_expiration_1 # in seconds, default 180
P261: min_session_expiration_1 # seconds, minimum 90
P262: caller_request_timer_1 # 0 or 1
P263: callee_request_timer_1 # 0 or 1
P264: force_timer_1 # 0 or 1
P265: force_invite_1 # 0 or 1
P266: uac_specify_refresher_1 # 0=omit, 1=UAC, 2=UAS
P267: uas_specify_refresher_1 # 1=UAC, 2=UAS
P268: anonymous_method	# 0 = Use From Header (default)
			# 1 = Use Privacy Header
P270: account_name_1
P271: account_active_1 # 0 or 1
P272: enable_100rel_1 # 0 or 1
P298: allow_auto_answer_by_call_info
P299: turn_off_speaker_on_remote_disconnect
P301: speed_dial_1_account # 0, 1, 2, 3, 4, 5
P302: speed_dial_1_name
P303: speed_dial_1_userid
P304: speed_dial_2_account
P305: speed_dial_2_name
P306: speed_dial_2_userid
P307: speed_dial_3_account
P308: speed_dial_3_name
P309: speed_dial_3_userid
P310: speed_dial_4_account
P311: speed_dial_4_name
P312: speed_dial_4_userid
P313: speed_dial_5_account
P314: speed_dial_5_name
P315: speed_dial_5_userid
P316: speed_dial_6_account
P317: speed_dial_6_name
P318: speed_dial_6_userid
P319: speed_dial_7_account
P320: speed_dial_7_name
P321: speed_dial_7_userid
P322: lcd_backlight_always_on # 0 or 1
P323: multi_purpose_key_1	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P324: multi_purpose_key_2	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P325: multi_purpose_key_3	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P326: multi_purpose_key_4	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P327: multi_purpose_key_5	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P328: multi_purpose_key_6	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P329: multi_purpose_key_7	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P330: phonebook_xml_download # 0=No, 1=Yes, HTTP, 2=Yes, TFTP
P331: phonebook_xml_server_path
P332: phonebook_xml_download_interval # (minutes) 0 - 720
P333: phonebook_xml_remove_manual_entries # 0=No, 1= Yes
P334: lcd_backlight_brightness_active # 0 - 8, 0=off, 8=brightest
P335: lcd_backlight_brightness_idle # 0 - 8, 0=off, 8=brightest
P336: mute_speaker_ringer # 0=No, 1= Yes
P337: xml_application_server_path
P338: disable_incall_dtmf_display # 0=No, 1= Yes
P340: idle_screen_xml_download # 0=No, 1=Yes, HTTP, 2=Yes, TFTP
P341: idle_screen_xml_download_server_path
P342: display_language # 0=English, 2=Chinese, 3=Secondary Language
P343: call_progress_tones_dial_tone
P344: call_progress_tones_message_waiting
P345: system_ring_tones
P346: call_progress_tones_ring_back_tone
P347: call_progress_tones_callwaiting_tone
P348: call_progress_tones_busy_tone
P349: call_progress_tones_reorder_tone
P351: disable_missed_call_backlight # 0=No, 1= Yes
P352: xml_application_softkey_label
P353: multi_purpose_key_8	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P354: speed_dial_8_account # 0, 1, 2, 3, 4, 5
P355: speed_dial_8_name
P356: speed_dial_8_userid
P357: multi_purpose_key_9	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P358: speed_dial_9_account # 0, 1, 2, 3, 4, 5
P359: speed_dial_9_name
P360: speed_dial_9_userid
P361: multi_purpose_key_10	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P362: speed_dial_10_account # 0, 1, 2, 3, 4, 5
P363: speed_dial_10_name
P364: speed_dial_10_userid
P365: multi_purpose_key_11	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P366: speed_dial_11_account # 0, 1, 2, 3, 4, 5
P367: speed_dial_11_name
P368: speed_dial_11_userid
P369: multi_purpose_key_12	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P370: speed_dial_12_account # 0, 1, 2, 3, 4, 5
P371: speed_dial_12_name
P372: speed_dial_12_userid
P373: multi_purpose_key_13	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P374: speed_dial_13_account # 0, 1, 2, 3, 4, 5
P375: speed_dial_13_name
P376: speed_dial_13_userid
P377: multi_purpose_key_14	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P378: speed_dial_14_account # 0, 1, 2, 3, 4, 5
P379: speed_dial_14_name
P380: speed_dial_14_userid
P381: multi_purpose_key_15	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P382: speed_dial_15_account # 0, 1, 2, 3, 4, 5
P383: speed_dial_15_name
P384: speed_dial_15_userid
P385: multi_purpose_key_16	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P386: speed_dial_16_account # 0, 1, 2, 3, 4, 5
P387: speed_dial_16_name
P388: speed_dial_16_userid
P389: multi_purpose_key_17	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P390: speed_dial_17_account # 0, 1, 2, 3, 4, 5
P391: speed_dial_17_name
P392: speed_dial_17_userid
P393: multi_purpose_key_18	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P394: speed_dial_18_account # 0, 1, 2, 3, 4, 5
P395: speed_dial_18_name
P396: speed_dial_18_userid
P399: secondary_language_file_postfix
P401: account_active_2 # 0 or 1
P402: sip_server_2
P403: outbound_proxy_2
P404: sip_userid_2
P405: authenticate_id_2
P406: authenticate_password_2
P407: name_2
P408: use_dns_srv_2
P409: userid_is_phone_number_2
P410: sip_registration_2
P411: unregister_on_reboot_2
P412: register_expiration_2
P413: local_sip_port_2
P414: nat_traversal_true_2
P415: subscribe_for_mwi_2
P416: send_dtmf_2 # 0=in-audio, 1=RTP (RFC2833), 2=SIP INFO, 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO
P417: account_name_2
P418: proxy_require_2
P419: dial_plan_prefix_2
P420: enable_call_features_2
P421: send_anonymous_2
P422: early_dial_2
P423: account_ring_tone_2 # 0, 1, 2, 3
P424: special_feature_2 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P425: auto_answer_2
P426: voicemail_userid_2
P427: min_session_expiration_2
P428: caller_request_timer_2
P429: callee_request_timer_2
P430: force_timer_2
P431: force_invite_2
P432: uac_specify_refresher_2
P433: uas_specify_refresher_2
P434: session_expiration_2
P435: enable_100rel_2
P438: allow_auto_answer_by_caller_info
P439: turn_off_speaker_on_remote_disconnect
P440: sip_t1_imeout
P441: sip_t2_interval
P442: disable_missed_calls_2
P443: srtp_mode_2 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P444: eventlist_blf_uri_2
P446: anonymous_call_rejection_2 # 0=No, 1=Yes
P447: use_rfc3581_symmetric_routing_2 # 0=No, 1=Yes
P448: sip_transport_2 # 1=UDP, 2=TCP
P449: check_sip_user_id_for_incoming_invite_2 # 0=No, 1=Yes
P451: vocoder_1_2
P452: vocoder_2_2
P453: vocoder_3_2
P454: vocoder_4_2
P455: vocoder_5_2
P456: vocoder_6_2
P457: vocoder_7_2
P458: vocoder_8_2
P468: anonymous_method_2 # 0=From Header, 1=Privacy Header
P469: referto_use_target_contact_2 # 0=No, 1=Yes
P470: delayed_call_forward_wait_time_2
P471: sip_registration_failure_retry_wait_time_2
P476: ring_timeout_2
P487: disable_multiple_media_attribute_sdp_2 # 0=No, 1=Yes
P488: publish_for_presence_2 # 0=No, 1=Yes
P501: account_active_3 # 0 or 1
P502: sip_server_3
P503: outbound_proxy_3
P504: sip_userid_3
P505: authenticate_id_3
P506: authenticate_password_3
P507: name_3
P508: use_dns_srv_3
P509: userid_is_phone_number_3
P510: sip_registration_3
P511: unregister_on_reboot_3
P512: register_expiration_3
P513: local_sip_port_3
P514: nat_traversal_true_3
P515: subscribe_for_mwi_3
P516: send_dtmf_3 # 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO, 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO
P517: account_name_3
P518: proxy_require_3
P519: dial_plan_prefix_3
P520: enable_call_features_3
P521: send_anonymous_3
P522: early_dial_3
P523: account_ring_tone_3 # 0, 1, 2, 3
P524: special_feature_3 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P525: auto_answer_3
P526: voicemail_userid_3
P527: min_session_expiration_3
P528: caller_request_timer_3
P529: callee_request_timer_3
P530: force_timer_3
P531: force_invite_3
P532: uac_specify_refresher_3
P533: uas_specify_refresher_3
P534: session_expiration_3
P535: enable_100rel_3
P538: allow_auto_answer_by_caller_info
P539: turn_off_speaker_on_remote_disconnect
P540: sip_t1_imeout
P541: sip_t2_interval
P542: disable_missed_calls_3
P543: srtp_mode_3 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P544: eventlist_blf_uri_3
P546: anonymous_call_rejection_3 # 0=No, 1=Yes
P547: use_rfc3581_symmetric_routing_3 # 0=No, 1=Yes
P548: sip_transport_3 # 1=UDP, 2=TCP
P549: check_sip_user_id_for_incoming_invite_3 # 0=No, 1=Yes
P551: vocoder_1_3
P552: vocoder_2_3
P553: vocoder_3_3
P554: vocoder_4_3
P555: vocoder_5_3
P556: vocoder_6_3
P557: vocoder_7_3
P558: vocoder_8_3
P568: anonymous_method_3 # 0=From Header, 1=Privacy Header
P569: referto_use_target_contact_3 # 0=No, 1=Yes
P570: delayed_call_forward_wait_time_3
P571: sip_registration_failure_retry_wait_time_3
P576: ring_timeout_3
P587: disable_multiple_media_attribute_sdp_3 # 0=No, 1=Yes
P588: publish_for_presence_3 # 0=No, 1=Yes
P601: account_active_4 # 0 or 1
P602: sip_server_4
P603: outbound_proxy_4
P604: sip_userid_4
P605: authenticate_id_4
P606: authenticate_password_4
P607: name_4
P608: use_dns_srv_4
P609: userid_is_phone_number_4
P610: sip_registration_4
P611: unregister_on_reboot_4
P612: register_expiration_4
P613: local_sip_port_4
P614: nat_traversal_true_4
P615: subscribe_for_mwi_4
P616: send_dtmf_4 # 0=in-audio, 1=RTP (RFC2833), 2=SIP INFO, 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO
P617: account_name_4
P618: proxy_require_4
P619: dial_plan_prefix_4
P620: enable_call_features_4
P621: send_anonymous_4
P622: early_dial_4
P623: account_ring_tone_4 # 0, 1, 2, 3
P624: special_feature_4 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P625: auto_answer_4
P626: voicemail_userid_4
P627: min_session_expiration_4
P628: caller_request_timer_4
P629: callee_request_timer_4
P630: force_timer_4
P631: force_invite_4
P632: uac_specify_refresher_4
P633: uas_specify_refresher_4
P634: session_expiration_4
P635: enable_100rel_4
P638: allow_auto_answer_by_caller_info
P639: turn_off_speaker_on_remote_disconnect
P640: sip_t1_imeout
P641: sip_t2_interval
P642: disable_missed_calls_4
P643: srtp_mode_4 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P644: eventlist_blf_uri_4
P646: anonymous_call_rejection_4 # 0=No, 1=Yes
P647: use_rfc3581_symmetric_routing_4 # 0=No, 1=Yes
P648: sip_transport_4 # 1=UDP, 2=TCP
P649: check_sip_user_id_for_incoming_invite_4 # 0=No, 1=Yes
P651: vocoder_1_4
P652: vocoder_2_4
P653: vocoder_3_4
P654: vocoder_4_4
P655: vocoder_5_4
P656: vocoder_6_4
P657: vocoder_7_4
P658: vocoder_8_4
P668: anonymous_method_4 # 0=From Header, 1=Privacy Header
P669: referto_use_target_contact_4 # 0=No, 1=Yes
P670: delayed_call_forward_wait_time_4
P671: sip_registration_failure_retry_wait_time_4
P676: ring_timeout_4
P687: disable_multiple_media_attribute_sdp_4 # 0=No, 1=Yes
P688: publish_for_presence_4 # 0=No, 1=Yes
P1300: headset_port_type # 0=2.5mm, 1=RJ22
P1301: headset_tx_gain # 0=0 dB, 1=-6dB, 2=+6dB
P1302: headset_rx_gain # 0=0 dB, 1=-6dB, 2=+6dB
P1303: intercom_user_id # (Account 1)
P1304: ldap_script_server_path
P1310: disable_direct_ip_calls # 0=No, 1=Yes
P1311: disable_conference # 0=No, 1=Yes
P1312: headset_key_mode # 0=default, 1=toggle
P1328: ring_timeout
P1329: lcd_contrast # 0 - 20
P1339: enable_mpk_sending_dtmf # 0=No, 1=Yes
P1340: disable_dnd # 0=No, 1=Yes
P1701: account_active_5 # 0 or 1
P1702: sip_server_5
P1703: outbound_proxy_5
P1704: sip_userid_5
P1705: authenticate_id_5
P1706: authenticate_password_5
P1707: name_5
P1708: use_dns_srv_5
P1709: userid_is_phone_number_5
P1710: sip_registration_5
P1711: unregister_on_reboot_5
P1712: register_expiration_5
P1713: local_sip_port_5
P1714: nat_traversal_true_5
P1715: subscribe_for_mwi_5
P1716: send_dtmf_5 # 0=in-audio, 1=RTP (RFC2833), 2=SIP INFO, 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO
P1717: account_name_5
P1718: proxy_require_5
P1719: dial_plan_prefix_5
P1720: enable_call_features_5
P1721: send_anonymous_5
P1722: early_dial_5
P1723: account_ring_tone_5 # 0, 1, 2, 3
P1724: special_feature_5 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P1725: auto_answer_5
P1726: voicemail_userid_5
P1727: min_session_expiration_5
P1728: caller_request_timer_5
P1729: callee_request_timer_5
P1730: force_timer_5
P1731: force_invite_5
P1732: uac_specify_refresher_5
P1733: uas_specify_refresher_5
P1734: session_expiration_5
P1735: enable_100rel_5
P1738: allow_auto_answer_by_caller_info
P1739: turn_off_speaker_on_remote_disconnect
P1740: sip_t1_imeout
P1741: sip_t2_interval
P1742: disable_missed_calls_5
P1743: srtp_mode_5 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P1744: eventlist_blf_uri_5
P1746: anonymous_call_rejection_5 # 0=No, 1=Yes
P1747: use_rfc3581_symmetric_routing_5 # 0=No, 1=Yes
P1748: sip_transport_5 # 1=UDP, 2=TCP
P1749: check_sip_user_id_for_incoming_invite_5 # 0=No, 1=Yes
P1751: vocoder_1_5
P1752: vocoder_2_5
P1753: vocoder_3_5
P1754: vocoder_4_5
P1755: vocoder_5_5
P1756: vocoder_6_5
P1757: vocoder_7_5
P1758: vocoder_8_5
P1768: anonymous_method_5 # 0=From Header, 1=Privacy Header
P1769: referto_use_target_contact_5 # 0=No, 1=Yes
P1770: delayed_call_forward_wait_time_5
P1771: sip_registration_failure_retry_wait_time_5
P1776: ring_timeout_5
P1787: disable_multiple_media_attribute_sdp_5 # 0=No, 1=Yes
P1788: publish_for_presence_5 # 0=No, 1=Yes
P1801: account_active_6 # 0 or 1
P1802: sip_server_6
P1803: outbound_proxy_6
P1804: sip_userid_6
P1805: authenticate_id_6
P1806: authenticate_password_6
P1807: name_6
P1808: use_dns_srv_6
P1809: userid_is_phone_number_6
P1810: sip_registration_6
P1811: unregister_on_reboot_6
P1812: register_expiration_6
P1813: local_sip_port_6
P1814: nat_traversal_true_6
P1815: subscribe_for_mwi_6
P1816: send_dtmf_6 # 0=in-audio, 1=RTP (RFC2833), 2=SIP INFO, 8=in-audio, 1=RTP (RFC2833), 2=SIP INFO
P1817: account_name_6
P1818: proxy_require_6
P1819: dial_plan_prefix_6
P1820: enable_call_features_6
P1821: send_anonymous_6
P1822: early_dial_6
P1823: account_ring_tone_6 # 0, 1, 2, 3
P1824: special_feature_6 # 100 = Standard
                        # 101 = Nortel MCS
                        # 102 = Broadsoft
                        # 103 = Howdy
                        # 104 = Sonus
                        # 105 = 3COM
                        # 108 = CBCOM
                        # 109 = RNX
                        # 110 = Sylantro
P1825: auto_answer_6
P1826: voicemail_userid_6
P1827: min_session_expiration_6
P1828: caller_request_timer_6
P1829: callee_request_timer_6
P1830: force_timer_6
P1831: force_invite_6
P1832: uac_specify_refresher_6
P1833: uas_specify_refresher_6
P1834: session_expiration_6
P1835: enable_100rel_6
P1838: allow_auto_answer_by_caller_info
P1839: turn_off_speaker_on_remote_disconnect
P1840: sip_t1_imeout
P1841: sip_t2_interval
P1842: disable_missed_calls_6
P1843: srtp_mode_6 # 0=Disabled, 1=Enabled but not forced, 2=Enabled and forced, 3=Optional
P1844: eventlist_blf_uri_6
P1846: anonymous_call_rejection_6 # 0=No, 1=Yes
P1847: use_rfc3581_symmetric_routing_6 # 0=No, 1=Yes
P1848: sip_transport_6 # 1=UDP, 2=TCP
P1849: check_sip_user_id_for_incoming_invite_6 # 0=No, 1=Yes
P1851: vocoder_1_6
P1852: vocoder_2_6
P1853: vocoder_3_6
P1854: vocoder_4_6
P1855: vocoder_5_6
P1856: vocoder_6_6
P1857: vocoder_7_6
P1858: vocoder_8_6
P1868: anonymous_method_6 # 0=From Header, 1=Privacy Header
P1869: referto_use_target_contact_6 # 0=No, 1=Yes
P1870: delayed_call_forward_wait_time_6
P1871: sip_registration_failure_retry_wait_time_6
P1876: ring_timeout_6
P1887: disable_multiple_media_attribute_sdp_6 # 0=No, 1=Yes
P1888: publish_for_presence_6 # 0=No, 1=Yes
P6001: multi_purpose_ext_key_1	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6002: multi_purpose_ext_key_2	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6003: multi_purpose_ext_key_3	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6004: multi_purpose_ext_key_4	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6005: multi_purpose_ext_key_5	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6006: multi_purpose_ext_key_6	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6007: multi_purpose_ext_key_7	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6008: multi_purpose_ext_key_8	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6009: multi_purpose_ext_key_9	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6010: multi_purpose_ext_key_10	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6011: multi_purpose_ext_key_11	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6012: multi_purpose_ext_key_12	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6013: multi_purpose_ext_key_13	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6014: multi_purpose_ext_key_14	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6015: multi_purpose_ext_key_15	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6016: multi_purpose_ext_key_16	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6017: multi_purpose_ext_key_17	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6018: multi_purpose_ext_key_18	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6019: multi_purpose_ext_key_19	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6020: multi_purpose_ext_key_20	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6021: multi_purpose_ext_key_21	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6022: multi_purpose_ext_key_22	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6023: multi_purpose_ext_key_23	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6024: multi_purpose_ext_key_24	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6025: multi_purpose_ext_key_25	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6026: multi_purpose_ext_key_26	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6027: multi_purpose_ext_key_27	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6028: multi_purpose_ext_key_28	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6029: multi_purpose_ext_key_29	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6030: multi_purpose_ext_key_30	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6031: multi_purpose_ext_key_31	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6032: multi_purpose_ext_key_32	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6033: multi_purpose_ext_key_33	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6034: multi_purpose_ext_key_34	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6035: multi_purpose_ext_key_35	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6036: multi_purpose_ext_key_36	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6037: multi_purpose_ext_key_37	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6038: multi_purpose_ext_key_38	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6039: multi_purpose_ext_key_39	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6040: multi_purpose_ext_key_40	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6041: multi_purpose_ext_key_41	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6042: multi_purpose_ext_key_42	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6043: multi_purpose_ext_key_43	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6044: multi_purpose_ext_key_44	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6045: multi_purpose_ext_key_45	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6046: multi_purpose_ext_key_46	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6047: multi_purpose_ext_key_47	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6048: multi_purpose_ext_key_48	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6049: multi_purpose_ext_key_49	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6050: multi_purpose_ext_key_50	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6051: multi_purpose_ext_key_51	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6052: multi_purpose_ext_key_52	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6053: multi_purpose_ext_key_53	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6054: multi_purpose_ext_key_54	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6055: multi_purpose_ext_key_55	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6056: multi_purpose_ext_key_56	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6057: multi_purpose_ext_key_57	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6058: multi_purpose_ext_key_58	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6059: multi_purpose_ext_key_59	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6060: multi_purpose_ext_key_60	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6061: multi_purpose_ext_key_61	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6062: multi_purpose_ext_key_62	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6063: multi_purpose_ext_key_63	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6064: multi_purpose_ext_key_64	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6065: multi_purpose_ext_key_65	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6066: multi_purpose_ext_key_66	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6067: multi_purpose_ext_key_67	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6068: multi_purpose_ext_key_68	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6069: multi_purpose_ext_key_69	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6070: multi_purpose_ext_key_70	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6071: multi_purpose_ext_key_71	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6072: multi_purpose_ext_key_72	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6073: multi_purpose_ext_key_73	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6074: multi_purpose_ext_key_74	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6075: multi_purpose_ext_key_75	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6076: multi_purpose_ext_key_76	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6077: multi_purpose_ext_key_77	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6078: multi_purpose_ext_key_78	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6079: multi_purpose_ext_key_79	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6080: multi_purpose_ext_key_80	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6081: multi_purpose_ext_key_81	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6082: multi_purpose_ext_key_82	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6083: multi_purpose_ext_key_83	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6084: multi_purpose_ext_key_84	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6085: multi_purpose_ext_key_85	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6086: multi_purpose_ext_key_86	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6087: multi_purpose_ext_key_87	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6088: multi_purpose_ext_key_88	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6089: multi_purpose_ext_key_89	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6090: multi_purpose_ext_key_90	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6091: multi_purpose_ext_key_91	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6092: multi_purpose_ext_key_92	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6093: multi_purpose_ext_key_93	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6094: multi_purpose_ext_key_94	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6095: multi_purpose_ext_key_95	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6096: multi_purpose_ext_key_96	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6097: multi_purpose_ext_key_97	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6098: multi_purpose_ext_key_98	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6099: multi_purpose_ext_key_99	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6100: multi_purpose_ext_key_100	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6101: multi_purpose_ext_key_101	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6102: multi_purpose_ext_key_102	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6103: multi_purpose_ext_key_103	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6104: multi_purpose_ext_key_104	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6105: multi_purpose_ext_key_105	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6106: multi_purpose_ext_key_106	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6107: multi_purpose_ext_key_107	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6108: multi_purpose_ext_key_108	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6109: multi_purpose_ext_key_109	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6110: multi_purpose_ext_key_110	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6111: multi_purpose_ext_key_111	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6112: multi_purpose_ext_key_112	# 0 = speed_dial, 1 = asterisk_blf, 2 = presence_watcher, 3 = eventlist_blf
P6201: speed_dial_ext_1_account	# 0, 1, 2, 3, 4, 5
P6202: speed_dial_ext_2_account	# 0, 1, 2, 3, 4, 5
P6203: speed_dial_ext_3_account	# 0, 1, 2, 3, 4, 5
P6204: speed_dial_ext_4_account	# 0, 1, 2, 3, 4, 5
P6205: speed_dial_ext_5_account	# 0, 1, 2, 3, 4, 5
P6206: speed_dial_ext_6_account	# 0, 1, 2, 3, 4, 5
P6207: speed_dial_ext_7_account	# 0, 1, 2, 3, 4, 5
P6208: speed_dial_ext_8_account	# 0, 1, 2, 3, 4, 5
P6209: speed_dial_ext_9_account	# 0, 1, 2, 3, 4, 5
P6210: speed_dial_ext_10_account	# 0, 1, 2, 3, 4, 5
P6211: speed_dial_ext_11_account	# 0, 1, 2, 3, 4, 5
P6212: speed_dial_ext_12_account	# 0, 1, 2, 3, 4, 5
P6213: speed_dial_ext_13_account	# 0, 1, 2, 3, 4, 5
P6214: speed_dial_ext_14_account	# 0, 1, 2, 3, 4, 5
P6215: speed_dial_ext_15_account	# 0, 1, 2, 3, 4, 5
P6216: speed_dial_ext_16_account	# 0, 1, 2, 3, 4, 5
P6217: speed_dial_ext_17_account	# 0, 1, 2, 3, 4, 5
P6218: speed_dial_ext_18_account	# 0, 1, 2, 3, 4, 5
P6219: speed_dial_ext_19_account	# 0, 1, 2, 3, 4, 5
P6220: speed_dial_ext_20_account	# 0, 1, 2, 3, 4, 5
P6221: speed_dial_ext_21_account	# 0, 1, 2, 3, 4, 5
P6222: speed_dial_ext_22_account	# 0, 1, 2, 3, 4, 5
P6223: speed_dial_ext_23_account	# 0, 1, 2, 3, 4, 5
P6224: speed_dial_ext_24_account	# 0, 1, 2, 3, 4, 5
P6225: speed_dial_ext_25_account	# 0, 1, 2, 3, 4, 5
P6226: speed_dial_ext_26_account	# 0, 1, 2, 3, 4, 5
P6227: speed_dial_ext_27_account	# 0, 1, 2, 3, 4, 5
P6228: speed_dial_ext_28_account	# 0, 1, 2, 3, 4, 5
P6229: speed_dial_ext_29_account	# 0, 1, 2, 3, 4, 5
P6230: speed_dial_ext_30_account	# 0, 1, 2, 3, 4, 5
P6231: speed_dial_ext_31_account	# 0, 1, 2, 3, 4, 5
P6232: speed_dial_ext_32_account	# 0, 1, 2, 3, 4, 5
P6233: speed_dial_ext_33_account	# 0, 1, 2, 3, 4, 5
P6234: speed_dial_ext_34_account	# 0, 1, 2, 3, 4, 5
P6235: speed_dial_ext_35_account	# 0, 1, 2, 3, 4, 5
P6236: speed_dial_ext_36_account	# 0, 1, 2, 3, 4, 5
P6237: speed_dial_ext_37_account	# 0, 1, 2, 3, 4, 5
P6238: speed_dial_ext_38_account	# 0, 1, 2, 3, 4, 5
P6239: speed_dial_ext_39_account	# 0, 1, 2, 3, 4, 5
P6240: speed_dial_ext_40_account	# 0, 1, 2, 3, 4, 5
P6241: speed_dial_ext_41_account	# 0, 1, 2, 3, 4, 5
P6242: speed_dial_ext_42_account	# 0, 1, 2, 3, 4, 5
P6243: speed_dial_ext_43_account	# 0, 1, 2, 3, 4, 5
P6244: speed_dial_ext_44_account	# 0, 1, 2, 3, 4, 5
P6245: speed_dial_ext_45_account	# 0, 1, 2, 3, 4, 5
P6246: speed_dial_ext_46_account	# 0, 1, 2, 3, 4, 5
P6247: speed_dial_ext_47_account	# 0, 1, 2, 3, 4, 5
P6248: speed_dial_ext_48_account	# 0, 1, 2, 3, 4, 5
P6249: speed_dial_ext_49_account	# 0, 1, 2, 3, 4, 5
P6250: speed_dial_ext_50_account	# 0, 1, 2, 3, 4, 5
P6251: speed_dial_ext_51_account	# 0, 1, 2, 3, 4, 5
P6252: speed_dial_ext_52_account	# 0, 1, 2, 3, 4, 5
P6253: speed_dial_ext_53_account	# 0, 1, 2, 3, 4, 5
P6254: speed_dial_ext_54_account	# 0, 1, 2, 3, 4, 5
P6255: speed_dial_ext_55_account	# 0, 1, 2, 3, 4, 5
P6256: speed_dial_ext_56_account	# 0, 1, 2, 3, 4, 5
P6257: speed_dial_ext_57_account	# 0, 1, 2, 3, 4, 5
P6258: speed_dial_ext_58_account	# 0, 1, 2, 3, 4, 5
P6259: speed_dial_ext_59_account	# 0, 1, 2, 3, 4, 5
P6260: speed_dial_ext_60_account	# 0, 1, 2, 3, 4, 5
P6261: speed_dial_ext_61_account	# 0, 1, 2, 3, 4, 5
P6262: speed_dial_ext_62_account	# 0, 1, 2, 3, 4, 5
P6263: speed_dial_ext_63_account	# 0, 1, 2, 3, 4, 5
P6264: speed_dial_ext_64_account	# 0, 1, 2, 3, 4, 5
P6265: speed_dial_ext_65_account	# 0, 1, 2, 3, 4, 5
P6266: speed_dial_ext_66_account	# 0, 1, 2, 3, 4, 5
P6267: speed_dial_ext_67_account	# 0, 1, 2, 3, 4, 5
P6268: speed_dial_ext_68_account	# 0, 1, 2, 3, 4, 5
P6269: speed_dial_ext_69_account	# 0, 1, 2, 3, 4, 5
P6270: speed_dial_ext_70_account	# 0, 1, 2, 3, 4, 5
P6271: speed_dial_ext_71_account	# 0, 1, 2, 3, 4, 5
P6272: speed_dial_ext_72_account	# 0, 1, 2, 3, 4, 5
P6273: speed_dial_ext_73_account	# 0, 1, 2, 3, 4, 5
P6274: speed_dial_ext_74_account	# 0, 1, 2, 3, 4, 5
P6275: speed_dial_ext_75_account	# 0, 1, 2, 3, 4, 5
P6276: speed_dial_ext_76_account	# 0, 1, 2, 3, 4, 5
P6277: speed_dial_ext_77_account	# 0, 1, 2, 3, 4, 5
P6278: speed_dial_ext_78_account	# 0, 1, 2, 3, 4, 5
P6279: speed_dial_ext_79_account	# 0, 1, 2, 3, 4, 5
P6280: speed_dial_ext_80_account	# 0, 1, 2, 3, 4, 5
P6281: speed_dial_ext_81_account	# 0, 1, 2, 3, 4, 5
P6282: speed_dial_ext_82_account	# 0, 1, 2, 3, 4, 5
P6283: speed_dial_ext_83_account	# 0, 1, 2, 3, 4, 5
P6284: speed_dial_ext_84_account	# 0, 1, 2, 3, 4, 5
P6285: speed_dial_ext_85_account	# 0, 1, 2, 3, 4, 5
P6286: speed_dial_ext_86_account	# 0, 1, 2, 3, 4, 5
P6287: speed_dial_ext_87_account	# 0, 1, 2, 3, 4, 5
P6288: speed_dial_ext_88_account	# 0, 1, 2, 3, 4, 5
P6289: speed_dial_ext_89_account	# 0, 1, 2, 3, 4, 5
P6290: speed_dial_ext_90_account	# 0, 1, 2, 3, 4, 5
P6291: speed_dial_ext_91_account	# 0, 1, 2, 3, 4, 5
P6292: speed_dial_ext_92_account	# 0, 1, 2, 3, 4, 5
P6293: speed_dial_ext_93_account	# 0, 1, 2, 3, 4, 5
P6294: speed_dial_ext_94_account	# 0, 1, 2, 3, 4, 5
P6295: speed_dial_ext_95_account	# 0, 1, 2, 3, 4, 5
P6296: speed_dial_ext_96_account	# 0, 1, 2, 3, 4, 5
P6297: speed_dial_ext_97_account	# 0, 1, 2, 3, 4, 5
P6298: speed_dial_ext_98_account	# 0, 1, 2, 3, 4, 5
P6299: speed_dial_ext_99_account	# 0, 1, 2, 3, 4, 5
P6300: speed_dial_ext_100_account	# 0, 1, 2, 3, 4, 5
P6301: speed_dial_ext_101_account	# 0, 1, 2, 3, 4, 5
P6302: speed_dial_ext_102_account	# 0, 1, 2, 3, 4, 5
P6303: speed_dial_ext_103_account	# 0, 1, 2, 3, 4, 5
P6304: speed_dial_ext_104_account	# 0, 1, 2, 3, 4, 5
P6305: speed_dial_ext_105_account	# 0, 1, 2, 3, 4, 5
P6306: speed_dial_ext_106_account	# 0, 1, 2, 3, 4, 5
P6307: speed_dial_ext_107_account	# 0, 1, 2, 3, 4, 5
P6308: speed_dial_ext_108_account	# 0, 1, 2, 3, 4, 5
P6309: speed_dial_ext_109_account	# 0, 1, 2, 3, 4, 5
P6310: speed_dial_ext_110_account	# 0, 1, 2, 3, 4, 5
P6311: speed_dial_ext_111_account	# 0, 1, 2, 3, 4, 5
P6312: speed_dial_ext_112_account	# 0, 1, 2, 3, 4, 5
P6401: speed_dial_ext_1_name
P6402: speed_dial_ext_2_name
P6403: speed_dial_ext_3_name
P6404: speed_dial_ext_4_name
P6405: speed_dial_ext_5_name
P6406: speed_dial_ext_6_name
P6407: speed_dial_ext_7_name
P6408: speed_dial_ext_8_name
P6409: speed_dial_ext_9_name
P6410: speed_dial_ext_10_name
P6411: speed_dial_ext_11_name
P6412: speed_dial_ext_12_name
P6413: speed_dial_ext_13_name
P6414: speed_dial_ext_14_name
P6415: speed_dial_ext_15_name
P6416: speed_dial_ext_16_name
P6417: speed_dial_ext_17_name
P6418: speed_dial_ext_18_name
P6419: speed_dial_ext_19_name
P6420: speed_dial_ext_20_name
P6421: speed_dial_ext_21_name
P6422: speed_dial_ext_22_name
P6423: speed_dial_ext_23_name
P6424: speed_dial_ext_24_name
P6425: speed_dial_ext_25_name
P6426: speed_dial_ext_26_name
P6427: speed_dial_ext_27_name
P6428: speed_dial_ext_28_name
P6429: speed_dial_ext_29_name
P6430: speed_dial_ext_30_name
P6431: speed_dial_ext_31_name
P6432: speed_dial_ext_32_name
P6433: speed_dial_ext_33_name
P6434: speed_dial_ext_34_name
P6435: speed_dial_ext_35_name
P6436: speed_dial_ext_36_name
P6437: speed_dial_ext_37_name
P6438: speed_dial_ext_38_name
P6439: speed_dial_ext_39_name
P6440: speed_dial_ext_40_name
P6441: speed_dial_ext_41_name
P6442: speed_dial_ext_42_name
P6443: speed_dial_ext_43_name
P6444: speed_dial_ext_44_name
P6445: speed_dial_ext_45_name
P6446: speed_dial_ext_46_name
P6447: speed_dial_ext_47_name
P6448: speed_dial_ext_48_name
P6449: speed_dial_ext_49_name
P6450: speed_dial_ext_50_name
P6451: speed_dial_ext_51_name
P6452: speed_dial_ext_52_name
P6453: speed_dial_ext_53_name
P6454: speed_dial_ext_54_name
P6455: speed_dial_ext_55_name
P6456: speed_dial_ext_56_name
P6457: speed_dial_ext_57_name
P6458: speed_dial_ext_58_name
P6459: speed_dial_ext_59_name
P6460: speed_dial_ext_60_name
P6461: speed_dial_ext_61_name
P6462: speed_dial_ext_62_name
P6463: speed_dial_ext_63_name
P6464: speed_dial_ext_64_name
P6465: speed_dial_ext_65_name
P6466: speed_dial_ext_66_name
P6467: speed_dial_ext_67_name
P6468: speed_dial_ext_68_name
P6469: speed_dial_ext_69_name
P6470: speed_dial_ext_70_name
P6471: speed_dial_ext_71_name
P6472: speed_dial_ext_72_name
P6473: speed_dial_ext_73_name
P6474: speed_dial_ext_74_name
P6475: speed_dial_ext_75_name
P6476: speed_dial_ext_76_name
P6477: speed_dial_ext_77_name
P6478: speed_dial_ext_78_name
P6479: speed_dial_ext_79_name
P6480: speed_dial_ext_80_name
P6481: speed_dial_ext_81_name
P6482: speed_dial_ext_82_name
P6483: speed_dial_ext_83_name
P6484: speed_dial_ext_84_name
P6485: speed_dial_ext_85_name
P6486: speed_dial_ext_86_name
P6487: speed_dial_ext_87_name
P6488: speed_dial_ext_88_name
P6489: speed_dial_ext_89_name
P6490: speed_dial_ext_90_name
P6491: speed_dial_ext_91_name
P6492: speed_dial_ext_92_name
P6493: speed_dial_ext_93_name
P6494: speed_dial_ext_94_name
P6495: speed_dial_ext_95_name
P6496: speed_dial_ext_96_name
P6497: speed_dial_ext_97_name
P6498: speed_dial_ext_98_name
P6499: speed_dial_ext_99_name
P6500: speed_dial_ext_100_name
P6501: speed_dial_ext_101_name
P6502: speed_dial_ext_102_name
P6503: speed_dial_ext_103_name
P6504: speed_dial_ext_104_name
P6505: speed_dial_ext_105_name
P6506: speed_dial_ext_106_name
P6507: speed_dial_ext_107_name
P6508: speed_dial_ext_108_name
P6509: speed_dial_ext_109_name
P6510: speed_dial_ext_110_name
P6511: speed_dial_ext_111_name
P6512: speed_dial_ext_112_name
P6601: speed_dial_ext_1_userid
P6602: speed_dial_ext_2_userid
P6603: speed_dial_ext_3_userid
P6604: speed_dial_ext_4_userid
P6605: speed_dial_ext_5_userid
P6606: speed_dial_ext_6_userid
P6607: speed_dial_ext_7_userid
P6608: speed_dial_ext_8_userid
P6609: speed_dial_ext_9_userid
P6610: speed_dial_ext_10_userid
P6611: speed_dial_ext_11_userid
P6612: speed_dial_ext_12_userid
P6613: speed_dial_ext_13_userid
P6614: speed_dial_ext_14_userid
P6615: speed_dial_ext_15_userid
P6616: speed_dial_ext_16_userid
P6617: speed_dial_ext_17_userid
P6618: speed_dial_ext_18_userid
P6619: speed_dial_ext_19_userid
P6620: speed_dial_ext_20_userid
P6621: speed_dial_ext_21_userid
P6622: speed_dial_ext_22_userid
P6623: speed_dial_ext_23_userid
P6624: speed_dial_ext_24_userid
P6625: speed_dial_ext_25_userid
P6626: speed_dial_ext_26_userid
P6627: speed_dial_ext_27_userid
P6628: speed_dial_ext_28_userid
P6629: speed_dial_ext_29_userid
P6630: speed_dial_ext_30_userid
P6631: speed_dial_ext_31_userid
P6632: speed_dial_ext_32_userid
P6633: speed_dial_ext_33_userid
P6634: speed_dial_ext_34_userid
P6635: speed_dial_ext_35_userid
P6636: speed_dial_ext_36_userid
P6637: speed_dial_ext_37_userid
P6638: speed_dial_ext_38_userid
P6639: speed_dial_ext_39_userid
P6640: speed_dial_ext_40_userid
P6641: speed_dial_ext_41_userid
P6642: speed_dial_ext_42_userid
P6643: speed_dial_ext_43_userid
P6644: speed_dial_ext_44_userid
P6645: speed_dial_ext_45_userid
P6646: speed_dial_ext_46_userid
P6647: speed_dial_ext_47_userid
P6648: speed_dial_ext_48_userid
P6649: speed_dial_ext_49_userid
P6650: speed_dial_ext_50_userid
P6651: speed_dial_ext_51_userid
P6652: speed_dial_ext_52_userid
P6653: speed_dial_ext_53_userid
P6654: speed_dial_ext_54_userid
P6655: speed_dial_ext_55_userid
P6656: speed_dial_ext_56_userid
P6657: speed_dial_ext_57_userid
P6658: speed_dial_ext_58_userid
P6659: speed_dial_ext_59_userid
P6660: speed_dial_ext_60_userid
P6661: speed_dial_ext_61_userid
P6662: speed_dial_ext_62_userid
P6663: speed_dial_ext_63_userid
P6664: speed_dial_ext_64_userid
P6665: speed_dial_ext_65_userid
P6666: speed_dial_ext_66_userid
P6667: speed_dial_ext_67_userid
P6668: speed_dial_ext_68_userid
P6669: speed_dial_ext_69_userid
P6670: speed_dial_ext_70_userid
P6671: speed_dial_ext_71_userid
P6672: speed_dial_ext_72_userid
P6673: speed_dial_ext_73_userid
P6674: speed_dial_ext_74_userid
P6675: speed_dial_ext_75_userid
P6676: speed_dial_ext_76_userid
P6677: speed_dial_ext_77_userid
P6678: speed_dial_ext_78_userid
P6679: speed_dial_ext_79_userid
P6680: speed_dial_ext_80_userid
P6681: speed_dial_ext_81_userid
P6682: speed_dial_ext_82_userid
P6683: speed_dial_ext_83_userid
P6684: speed_dial_ext_84_userid
P6685: speed_dial_ext_85_userid
P6686: speed_dial_ext_86_userid
P6687: speed_dial_ext_87_userid
P6688: speed_dial_ext_88_userid
P6689: speed_dial_ext_89_userid
P6690: speed_dial_ext_90_userid
P6691: speed_dial_ext_91_userid
P6692: speed_dial_ext_92_userid
P6693: speed_dial_ext_93_userid
P6694: speed_dial_ext_94_userid
P6695: speed_dial_ext_95_userid
P6696: speed_dial_ext_96_userid
P6697: speed_dial_ext_97_userid
P6698: speed_dial_ext_98_userid
P6699: speed_dial_ext_99_userid
P6700: speed_dial_ext_100_userid
P6701: speed_dial_ext_101_userid
P6702: speed_dial_ext_102_userid
P6703: speed_dial_ext_103_userid
P6704: speed_dial_ext_104_userid
P6705: speed_dial_ext_105_userid
P6706: speed_dial_ext_106_userid
P6707: speed_dial_ext_107_userid
P6708: speed_dial_ext_108_userid
P6709: speed_dial_ext_109_userid
P6710: speed_dial_ext_110_userid
P6711: speed_dial_ext_111_userid
P6712: speed_dial_ext_112_userid
# End of the file
