Commit 8a79dda0 authored by Project Open's avatar Project Open

- Added NaviServer

parent 364ae8ec
Pipeline #1117 canceled with stages

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

#! /usr/bin/env tclsh
# -*- tcl -*-
# @@ Meta Begin
# Application dtplite 1.0.5
# Meta platform tcl
# Meta summary Lightweight DocTools Processor
# Meta description This application is a simple processor
# Meta description for documents written in the doctools
# Meta description markup language. It covers the most
# Meta description common use cases, but is not as
# Meta description configurable as its big brother dtp.
# Meta category Processing doctools documents
# Meta subject doctools doctoc docidx
# Meta require {dtplite 1.0.5}
# Meta author Andreas Kupries
# Meta license BSD
# @@ Meta End
package require dtplite 1.0.5
# dtp lite - Lightweight DocTools Processor
# ======== = ==============================
exit [dtplite::do $argv]
# ### ### ### ######### ######### #########
exit
This diff is collapsed.
This diff is collapsed.
#! /usr/bin/env tclsh
# -*- tcl -*-
# @@ Meta Begin
# Application nns 1.2
# Meta platform tcl
# Meta summary Nano Name Service Client
# Meta description This application connects to a name service demon
# Meta description and either registers a name with associated data
# Meta description (until exit) or searches for entries matching a
# Meta description glob pattern. Operations to identify client and
# Meta description server are made available as well. It will survive
# Meta description the loss of the nameserver and automatically reconnect
# Meta description and continue when it comes back (bind and search).
# Meta description
# Meta subject {name service} client
# Meta require {Tcl 8.4}
# Meta require logger
# Meta require nameserv::auto
# Meta require struct::matrix
# Meta author Andreas Kupries
# Meta license BSD
# @@ Meta End
package provide nns 1.2
# nns - Nano Name Service Client
# === = ========================
#
# Use cases
# ---------
#
# (1) Register something at a nano name service
# (2) Query protocol and feature information.
# (3) Provide application version, and protocol information
# (4) Search service for entries matching a glob-pattern
#
# Command syntax
# --------------
#
# (Ad 1) nns bind ?-host NAME|IP? ?-port PORT? name data
# (Ad 2) nns ident ?-host NAME|IP? ?-port PORT?
# (Ad 3) nns who
# (Ad 4) nns search ?-host NAME|IP? ?-port PORT? ?-continuous? ?pattern?
#
# Register a name with data. If no port is specified the default
# port 38573 is used to connect to it. If no host is specified
# the default (localhost) is used to connect to it.
# ### ### ### ######### ######### #########
## Requirements
lappend auto_path [file join [file dirname [file dirname \
[file normalize [info script]]]] modules]
package require nameserv::auto 0.3 ;# Need auto-restoring search.
package require struct::matrix
logger::initNamespace ::nns
namespace eval ::nns { log::setlevel info }
# ### ### ### ######### ######### #########
## Process application command line
proc ::nns::ProcessCommandLine {} {
global argv
variable xcmd
variable xname
variable xdata
variable xpat *
variable xwatch 0
# Process the options, perform basic validation.
if {[llength $argv] < 1} Usage
set cmd [lindex $argv 0]
set argv [lrange $argv 1 end]
switch -exact -- $cmd {
bind - ident - who - search {set xcmd $cmd}
default Usage
}
while {[llength $argv]} {
set opt [lindex $argv 0]
if {![string match "-*" $opt]} break
switch -exact -- $opt {
-host {
if {$xcmd == "who"} Usage
if {[llength $argv] < 2} Usage
set host [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::auto::configure -host $host
}
-port {
if {$xcmd == "who"} Usage
if {[llength $argv] < 2} Usage
# Todo: Check non-zero unsigned short integer
set port [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::auto::configure -port $port
}
-continuous {
set xwatch 1
set argv [lrange $argv 1 end]
}
-debug {
# Undocumented. Activate the logger services provided
# by various packages.
logger::setlevel debug
set argv [lrange $argv 1 end]
}
default Usage
}
}
# Additional validation, and extraction of the non-option
# arguments. Of which this application has none.
switch -exact -- $xcmd {
bind {
if {[llength $argv] != 2} Usage
foreach {xname xdata} $argv break
}
search {
if {[llength $argv] > 1} Usage
if {[llength $argv] == 1} {
set xpat [lindex $argv 0]
}
}
who - ident {
if {[llength $argv] != 0} Usage
}
}
return
}
proc ::nns::Usage {{sfx {}}} {
global argv0 ; append argv0 $sfx
set blank [blank $argv0]
puts stderr "$argv0 wrong#args, expected: bind ?-host NAME|IP? ?-port PORT? NAME DATA"
puts stderr "$blank ident ?-host NAME|IP? ?-port PORT?"
puts stderr "$blank search ?-host NAME|IP? ?-port PORT? ?-continuous? ?PATTERN?"
puts stderr "$blank who"
exit 1
}
proc ::nns::ArgError {text} {
global argv0
puts stderr "$argv0: $text"
#puts $::errorInfo
exit 1
}
proc ::nns::blank {s} {
regsub -all -- {[^ ]} $s { } s
return $s
}
# ### ### ### ######### ######### #########
proc ::nns::My {} {
# Quick access to format the identity of the name service the
# client talks to.
return "[nameserv::auto::cget -host] @[nameserv::auto::cget -port]"
}
proc ::nns::Connection {message args} {
# args = tag event details, ignored
log::info $message
return
}
proc ::nns::MonitorConnection {} {
uevent::bind nameserv lost-connection [list ::nns::Connection "Disconnected name service at [My]"]
uevent::bind nameserv re-connection [list ::nns::Connection "Reconnected2 name service at [My]"]
return
}
# ### ### ### ######### ######### #########
## Main
proc ::nns::Do.bind {} {
global argv0
variable xname
variable xdata
MonitorConnection
log::info "Binding with name service at [My]: $xname = $xdata"
nameserv::auto::bind $xname $xdata
vwait ::forever
# Not reached.
return
}
proc ::nns::Do.ident {} {
set sp [nameserv::auto::server_protocol]
set sf [join [nameserv::auto::server_features] {, }]
if {[llength $sf] > 1} {
set sf [linsert $sf end-1 and]
}
puts "Server [My]"
puts " Protocol: $sp"
puts " Features: $sf"
return
}
proc ::nns::Do.search {} {
variable xpat
variable xwatch
struct::matrix M
M add columns 2
if {$xwatch} {
MonitorConnection
set contents [nameserv::auto::search -continuous $xpat]
$contents configure -command [list ::nns::Do.search.change $contents]
vwait ::forever
# Not reached.
} else {
Do.search.print [nameserv::auto::search $xpat]
}
return
}
proc ::nns::Do.search.change {res type response} {
# Ignoring the arguments, we simply print the full results every
# time.
if {$type eq "stop"} {
# Cannot happen for nameserv::auto client, we are free to panic.
$res destroy
log::critical {Bad event 'stop' <=> Lost connection, search closed}
return
}
# Clear screen ...
puts -nonewline stdout "\033\[H\033\[J"; # Home + Erase Down
flush stdout
::nns::Do.search.print [$res getall]
return
}
proc ::nns::Do.search.print {contents} {
log::info "Searching at name service at [My]"
if {![llength $contents]} {
log info "Nothing found..."
return
}
catch {M delete rows [M rows]}
foreach {name data} $contents {
M add row [list $name $data]
}
foreach line [split [M format 2string] \n] { log::info $line }
return
}
proc ::nns::Do.who {} {
# FUTURE: access and print the metadata contained in ourselves.
global argv0
puts "$argv0 [package require nns] (Client Protocol [nameserv::auto::protocol])"
return
}
# ### ### ### ######### ######### #########
## Invoking the functionality.
::nns::ProcessCommandLine
if {[catch {
::nns::Do.$::nns::xcmd
} msg]} {
::nns::ArgError $msg
}
# ### ### ### ######### ######### #########
exit
#! /usr/bin/env tclsh
# -*- tcl -*-
# @@ Meta Begin
# Application nnsd 1.0.1
# Meta platform tcl
# Meta summary Nano Name Service Demon
# Meta description This application is a simple demon on top
# Meta description of the nano name service facilities
# Meta subject {name service} server demon
# Meta require {Tcl 8.4}
# Meta require comm
# Meta require logger
# Meta require interp
# Meta require nameserv::common
# Meta require nameserv::server
# Meta author Andreas Kupries
# Meta license BSD
# @@ Meta End
package provide nnsd 1.0.1
# nnsd - Nano Name Service Demon
# ==== = =======================
#
# Use cases
# ---------
#
# (1) Run a simple trusted name service on some host.
#
# Command syntax
# --------------
#
# Ad 1) nnsd ?-localonly BOOL? ?-port PORT?
#
# Run the server. If no port is specified the default port 38573
# is used to listen for client. The option -localonly determines
# what connections are acceptable, local only (default), or
# remote connections as well. Local connections are whose
# originating from the same host which is running the server.
# Remote connections come from other hosts.
lappend auto_path [file join [file dirname [file dirname [file normalize [info script]]]] modules]
package require nameserv::server
namespace eval ::nnsd {}
proc ::nnsd::ProcessCommandLine {} {
global argv
# Process the options, perform basic validation.
while {[llength $argv]} {
set opt [lindex $argv 0]
if {![string match "-*" $opt]} break
switch -exact -- $opt {
-localonly {
if {[llength $argv] % 2 == 1} Usage
# Todo: Check boolean
set local [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::server::configure -localonly $local
}
-port {
if {[llength $argv] % 2 == 1} Usage
# Todo: Check non-zero unsigned short integer
set port [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::server::configure -port $port
}
-debug {
# Undocumented. Activate the logger services provided
# by various packages.
logger::setlevel debug
set argv [lrange $argv 1 end]
}
default {
Usage
}
}
}
# Additional validation, and extraction of the non-option
# arguments. Of which this application has none.
if {[llength $argv]} Usage
return
}
proc ::nnsd::Usage {} {
global argv0
puts stderr "$argv0 wrong#args, expected:\
?-localonly BOOL? ?-port PORT?"
exit 1
}
proc ::nnsd::ArgError {text} {
global argv0
puts stderr "$argv0: $text"
exit 1
}
proc bgerror {args} {
puts stderr $args
puts stderr $::errorInfo
return
}
# ### ### ### ######### ######### #########
## Main
proc ::nnsd::Headline {} {
global argv0
set p [nameserv::server::cget -port]
set l [expr {[nameserv::server::cget -localonly]
? "local only"
: "local & remote"}]
puts "$argv0 [package require nnsd], listening on $p ($l)"
return
}
proc ::nnsd::Do {} {
global argv0
ProcessCommandLine
nameserv::server::start
Headline
vwait forever
return
}
# ### ### ### ######### ######### #########
## Invoking the functionality.
if {[catch {
::nnsd::Do
} msg]} {
puts $::errorInfo
#::nnsd::ArgError $msg
}
# ### ### ### ######### ######### #########
exit
#! /usr/bin/env tclsh
# -*- tcl -*-
# @@ Meta Begin
# Application nnslog 1.1
# Meta platform tcl
# Meta summary Nano Name Service Logger
# Meta description This application connects to a name service demon
# Meta description and then continuously logs all changes (new/removed
# Meta description definitions) to the standard output. It will survive
# Meta description the loss of the nameserver and automatically reconnect
# Meta description and continue when it comes back.
# Meta subject {name service} client log
# Meta require {Tcl 8.4}
# Meta require logger
# Meta require nameserv::auto
# Meta author Andreas Kupries
# Meta license BSD
# @@ Meta End
package provide nnslog 1.0
# nns - Nano Name Service Logger
# === = ========================
#
# Use cases
# ---------
#
# (1) Continuously monitor a nameservice for changes.
#
# Command syntax
# --------------
#
# (Ad 1) nnslog ?-host NAME|IP? ?-port PORT? ?-color BOOL?
#
# Monitor a name server. If no port is specified the default
# port 38573 is used to connect to it. If no host is specified
# the default (localhost) is used to connect to it.
# ### ### ### ######### ######### #########
## Requirements
lappend auto_path [file join [file dirname [file dirname \
[file normalize [info script]]]] modules]
package require nameserv::auto 0.3 ;# Need auto-restoring search.
logger::initNamespace ::nnslog
namespace eval ::nnslog { log::setlevel info }
# ### ### ### ######### ######### #########
## Process application command line
proc ::nnslog::ProcessCommandLine {} {
global argv
# Process the options, perform basic validation.
set xcolor 0
if {[llength $argv] < 1} return
while {[llength $argv]} {
set opt [lindex $argv 0]
if {![string match "-*" $opt]} break
switch -exact -- $opt {
-host {
if {[llength $argv] < 2} Usage
set host [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::configure -host $host
}
-port {
if {[llength $argv] < 2} Usage
# Todo: Check non-zero unsigned short integer
set port [lindex $argv 1]
set argv [lrange $argv 2 end]
nameserv::configure -port $port
}
-debug {
# Undocumented. Activate the logger services provided
# by various packages.
logger::setlevel debug
set argv [lrange $argv 1 end]
}
default Usage
}
}
# Additional validation. no arguments should be left over.
if {[llength $argv] > 1} Usage
return
}
proc ::nnslog::Usage {{sfx {}}} {
global argv0 ; append argv0 $sfx
puts stderr "$argv0 wrong#args, expected: ?-host NAME|IP? ?-port PORT?"
exit 1
}
proc ::nnslog::ArgError {text} {
global argv0
puts stderr "$argv0: $text"
#puts $::errorInfo
exit 1
}
# ### ### ### ######### ######### #########
## Setup a text|graphical report
proc ::nnslog::My {} {
# Quick access to format the identity of the name service the
# client talks to.
return "[nameserv::auto::cget -host] @[nameserv::auto::cget -port]"
}
proc ::nnslog::Connection {message args} {
# args = tag event details, ignored
log::info $message
return
}
proc ::nnslog::MonitorConnection {} {
uevent::bind nameserv lost-connection [list ::nnslog::Connection "Disconnected name service at [My]"]
uevent::bind nameserv re-connection [list ::nnslog::Connection "Reconnected2 name service at [My]"]
return
}
# ### ### ### ######### ######### #########
## Main
proc ::nnslog::Do.search {} {
MonitorConnection
set contents [nameserv::auto::search -continuous *]
$contents configure -command [list ::nnslog::Do.search.change $contents]
log::info "Logging name service at [My]"
vwait ::forever
# Not reached.
return
}
namespace eval ::nnslog {
variable map
array set map {
add +++
remove ---
}
}
proc ::nnslog::Do.search.change {res type response} {
variable map
if {$type eq "stop"} {
# Cannot happen for nameserv::auto client, we are free to panic.
$res destroy
log::critical {Bad event 'stop' <=> Lost connection, search closed}
return
}
# Print events ...
foreach {name value} $response {
log::info "$map($type) : [list $name = $value]"
}
return
}
# ### ### ### ######### ######### #########
## Invoking the functionality.
::nnslog::ProcessCommandLine
if {[catch {
::nnslog::Do.search
} msg]} {
::nnslog::ArgError $msg
}
# ### ### ### ######### ######### #########
exit
File added
File added
File added
File added
File added
File added
#! /bin/sh
# Lookup a Tcl interpreter \
INTERP="tclsh8.5"; \
INTERPS="/usr/local/ns/bin/tclsh8.5 /usr/local/ns/bin/$INTERP"; \
for interp in $INTERPS; \
do if [ -x $interp ]; then INTERP=$interp; break; \
fi; done; \
exec $INTERP "$0" ${1+"$@"}
# -*- tcl -*-
puts [info nameofexecutable]
#
# Tiny scripted replacement of a binary nxsh. This script can be used
# as interactive shell for testing or like a regular shell with the !#
# markup in the first line of a script. It is designed to work with
# multiple installed shells during development. For installed
# versions, it should be sufficient to remove the first line.
#
package require nx
namespace import ::nx::*
if {$argc == 0} {
set prefix ""
set line ""
while {1} {
if {$line eq ""} {
puts -nonewline "% "
flush stdout
}
append line [gets stdin]
if {[info complete $line]} {
if {[catch $line result]} {
puts $::errorInfo
} else {
puts $result
}
set line ""
continue
}
append line \n
}
} else {
set argv0 [lindex $argv 0]
set argv [lreplace $argv 0 0]
incr argc -1
source $argv0
#if {[catch [list source $argv0] errorMsg]} {
# return -code error -level 1 $errorMsg
#}
}
#! /bin/sh
# Lookup a Tcl interpreter \
INTERP="tclsh8.5"; \
INTERPS="/usr/local/ns/bin/tclsh8.5 /usr/local/ns/bin/$INTERP"; \
for interp in $INTERPS; \
do if [ -x $interp ]; then INTERP=$interp; break; \
fi; done; \
exec $INTERP "$0" ${1+"$@"}
# -*- tcl -*-
puts [info nameofexecutable]
#
# Tiny scripted replacement of a binary nxwish (former xowish). This
# script can be used as interactive shell for testing or like a
# regular shell with the !# markup in the first line of a script. It
# is designed to work with multiple installed shells during
# development. For installed versions, it should be sufficient to
# remove the first line.
#
package require Tk
package require nx
namespace import ::nx::*
if {$argc == 0} {
set prefix ""
set line ""
while {1} {
update
if {$line eq ""} {
puts -nonewline "% "
flush stdout
}
append line [gets stdin]
if {[info complete $line]} {
if {[catch $line result]} {
puts $::errorInfo
} else {
puts $result
}
set line ""
continue
}
append line \n
}
} else {
set argv0 [lindex $argv 0]
set argv [lreplace $argv 0 0]
incr argc -1
source $argv0
}
This diff is collapsed.
#!/usr/bin/env tclsh
# -*- tcl -*-
package require Tcl 8.5
# activate commands below for execution from within the pt directory
set self [file normalize [info script]]
set selfdir [file dirname $self]
lappend auto_path $selfdir [file dirname $selfdir]
# When debugging package loading trouble, show the search paths
#puts [join $auto_path \n]
# # ## ### ##### ######## ############# #####################
package require pt::pgen 1.0.3
package require pt::util
package require fileutil
package require try
namespace eval ::pt::app {
namespace export generate help
namespace ensemble create
}
# # ## ### ##### ######## ############# #####################
proc main {} {
global argv argv0 errorInfo
if {![llength $argv]} { lappend argv help }
if {[catch {
set status [::pt::app {*}$argv]
} msg]} {
set elines [split $errorInfo \n]
if {[llength $elines] == 3} {
if {[string match *unknown* $msg]} {
#puts stderr "$argv0 $msg"
::pt::app help
exit 1
} elseif {[string match {*wrong # args*} $msg]} {
#puts $msg
# Extracting the command name from the error message,
# because there a prefix will have been expanded to
# the actual command. <lindex argv 0> OTOH would be a
# possible prefix, without a properly matching topic.
puts stderr Usage:
::pt::app help [lindex $msg 5 1]
exit 1
}
}
set prefix {INTERNAL ERROR :: }
puts ${prefix}[join $elines \n$prefix]
exit 1
}
exit $status
}
# # ## ### ##### ######## ############# #####################
proc ::pt::app::helpHelp {} {
return {
@ help ?TOPIC?
Provides general help, or specific to the given topic.
}
}
proc ::pt::app::help {{topic {}}} {
global argv0
if {[llength [info level 0]] == 1} {
puts stderr "Usage: $argv0 command ...\n\nKnown commands:\n"
foreach topic [Topics] {
::pt::app help $topic
}
} elseif {$topic ni [Topics]} {
puts stderr "$argv0: Unknown help topic '$topic'"
puts stderr "\tUse one of [linsert [join [Topics] {, }] end-1 or]"
puts stderr ""
} else {
puts stderr \t[join [split [string map [list @ $argv0] [string trim [::pt::app::${topic}Help]]] \n] \n\t]
puts stderr ""
}
return 0
}
proc ::pt::app::Topics {} {
namespace eval ::TEMP { namespace import ::pt::app::* }
set commands [info commands ::TEMP::*]
namespace delete ::TEMP
set res {}
foreach c $commands {
lappend res [regsub ^::TEMP:: $c {}]
}
proc ::pt::app::Topics {} [list return $res]
return $res
}
# # ## ### ##### ######## ############# #####################
proc ::pt::app::generateHelp {} {
return {
@ generate PFORMAT ?-option value...? PFILE INFORMAT GFILE
Generate data in format PFORMAT and write it to PFILE. Read
the grammar to be processed from GFILE (assuming the format
GFORMAT). Use any options to configure the generator. The are
dependent on PFORMAT.
}
}
proc ::pt::app::generate {args} {
# args = parserformat ?...? parserfile grammarformat grammarfile
if {[llength $args] < 4} {
# Just enough that the help code can extract the method name
return -code error "wrong # args, should be \"@ generate ...\""
}
set args [lassign $args parserformat]
lassign [lrange $args end-2 end] \
parserfile grammarformat grammarfile
set args [Template [lrange $args 0 end-3]]
lappend args -file $grammarfile
puts "Reading $grammarformat $grammarfile ..."
set grammar [fileutil::cat $grammarfile]
puts "Generating a $parserformat parser ..."
try {
set parser [::pt::pgen $grammarformat $grammar $parserformat {*}$args]
} trap {PT RDE SYNTAX} {e o} {
puts [pt::util error2readable $e $grammar]
return 1
}
puts "Saving to $parserfile ..."
fileutil::writeFile $parserfile $parser
puts OK
return 0
}
# Lift template specifications from file paths to the file's contents.
proc ::pt::app::Template {optiondict} {
set res {}
foreach {option value} $optiondict {
if {$option eq "-template"} {
set value [fileutil::cat $value]
}
lappend res $option $value
}
return $res
}
# # ## ### ##### ######## ############# #####################
main
exit
This diff is collapsed.
/usr/local/ns/bin/tclsh8.5
\ No newline at end of file
File added
#! /bin/sh
# Lookup a Tcl interpreter \
INTERP="tclsh8.5"; \
INTERPS="/usr/local/ns/bin/tclsh8.5 /usr/local/ns/bin/$INTERP"; \
for interp in $INTERPS; \
do if [ -x $interp ]; then INTERP=$interp; break; \
fi; done; \
exec $INTERP "$0" ${1+"$@"}
# -*- tcl -*-
puts [info nameofexecutable]
#
# Tiny scripted replacement of a binary nxsh. This script can be used
# as interactive shell for testing or like a regular shell with the !#
# markup in the first line of a script. It is designed to work with
# multiple installed shells during development. For installed
# versions, it should be sufficient to remove the first line.
#
package require XOTcl 2.0
namespace import -force ::xotcl::*
if {$argc == 0} {
set prefix ""
set line ""
while {1} {
if {$line eq ""} {
puts -nonewline "% "
flush stdout
}
append line [gets stdin]
if {[info complete $line]} {
if {[catch $line result]} {
puts $::errorInfo
} else {
puts $result
}
set line ""
continue
}
append line \n
}
} else {
set argv0 [lindex $argv 0]
set argv [lreplace $argv 0 0]
incr argc -1
source $argv0
}
#! /bin/sh
# Lookup a Tcl interpreter \
INTERP="tclsh8.5"; \
INTERPS="/usr/local/ns/bin/tclsh8.5 /usr/local/ns/bin/$INTERP"; \
for interp in $INTERPS; \
do if [ -x $interp ]; then INTERP=$interp; break; \
fi; done; \
exec $INTERP "$0" ${1+"$@"}
# -*- tcl -*-
puts [info nameofexecutable]
#
# Tiny scripted replacement of a binary nxwish (former xowish). This
# script can be used as interactive shell for testing or like a
# regular shell with the !# markup in the first line of a script. It
# is designed to work with multiple installed shells during
# development. For installed versions, it should be sufficient to
# remove the first line.
#
package require Tk
package require XOTcl 2.0
namespace import -force ::xotcl::*
if {$argc == 0} {
set prefix ""
set line ""
while {1} {
update
if {$line eq ""} {
puts -nonewline "% "
flush stdout
}
append line [gets stdin]
if {[info complete $line]} {
if {[catch $line result]} {
puts $::errorInfo
} else {
puts $result
}
set line ""
continue
}
append line \n
}
} else {
set argv0 [lindex $argv 0]
set argv [lreplace $argv 0 0]
incr argc -1
source $argv0
}
#set home /usr/local/ns
set home [file dirname [file dirname [info nameofexecutable]]]
ns_section "ns/server/default/modules"
ns_param nscp nscp.so
ns_param nssock nssock.so
ns_param nslog nslog.so
ns_param nscgi nscgi.so
ns_param nsdb nsdb.so
ns_section "ns/parameters"
ns_param home $home
ns_param tcllibrary tcl
#ns_param tclinitlock true ;# default: false
ns_param serverlog error.log
ns_param pidfile nsd.pid
#ns_param logdebug true ;# default: false
#ns_param logroll false ;# default: true
#ns_param dbcloseonexit off ;# default: off; from nsdb
ns_param jobsperthread 1000 ;# default: 0
ns_param jobtimeout 0 ;# default: 300
ns_param schedsperthread 10 ;# default: 0
ns_param progressminsize [expr 1024*1024*1] ;# default: 0
# configure SMTP module
ns_param smtphost "localhost"
ns_param smtpport 25
ns_param smtptimeout 60
ns_param smtplogmode false
ns_param smtpmsgid false
ns_param smtpmsgidhostname ""
ns_param smtpencodingmode false
ns_param smtpencoding "utf-8"
ns_param smtpauthmode ""
ns_param smtpauthuser ""
ns_param smtpauthpassword ""
ns_section "ns/threads"
ns_param stacksize [expr {512*1024}]
ns_section "ns/mimetypes"
ns_param default text/plain
ns_param noextension text/plain
ns_section "ns/db/drivers"
#ns_param postgres nsdbpg.so
ns_section "ns/db/pools"
#ns_param postgres "PostgresSQL Database"
ns_section "ns/db/pool/pgsql"
ns_param driver postgres
ns_param connections 64
ns_param user postgres
ns_param datasource "::dbname"
ns_param verbose Off
ns_param logsqlerrors On
ns_param extendedtableinfo On
ns_param maxidle 31536000
ns_param maxopen 31536000
ns_section "ns/servers"
ns_param default "Naviserver"
ns_section "ns/server/default"
ns_param checkmodifiedsince false ;# default: true, check modified-since before returning files from cache. Disable for speedup
ns_param connsperthread 1000 ;# default: 0; number of connections (requests) handled per thread
ns_param minthreads 5 ;# default: 1; minimal number of connection threads
ns_param maxthreads 100 ;# default: 10; maximal number of connection threads
ns_param maxconnections 100 ;# default: 100; number of allocated connection stuctures
ns_param threadtimeout 120 ;# default: 120; timeout for idle theads
#ns_param concurrentcreatethreshold 100 ;# default: 80; allow concrruent creates when queue is fully beyond this percentage
;# 100 is a concervative value, disabling concurrent creates
ns_section "ns/server/default/db"
ns_param pools *
ns_section "ns/fastpath"
ns_param cache false ;# default: false
ns_param cachemaxsize 10240000 ;# default: 1024*10000
ns_param cachemaxentry 8192 ;# default: 8192
ns_param mmap false ;# default: false
ns_section "ns/server/default/fastpath"
ns_param pagedir pages
#ns_param serverdir ""
ns_param directoryfile "index.adp index.tcl index.html index.htm"
ns_param directoryproc _ns_dirlist
ns_param directorylisting fancy ;# default: simple
#ns_param directoryadp dir.adp
ns_section "ns/server/default/vhost"
ns_param enabled false
ns_param hostprefix ""
ns_param hosthashlevel 0
ns_param stripport true
ns_param stripwww true
ns_section "ns/server/default/adp"
ns_param map "/*.adp"
ns_param enableexpire false ;# default: false; set "Expires: now" on all ADP's
#ns_param enabledebug true ;# default: false
ns_param enabletclpages true ;# default: false
ns_param singlescript false ;# default: false; collapse Tcl blocks to a single Tcl script
ns_param cache false ;# default: false; enable ADP caching
ns_param cachesize [expr 5000*1024]
ns_section "ns/server/default/tcl"
ns_param nsvbuckets 16 ;# default: 8
ns_param library modules/tcl
ns_section "ns/server/default/module/nscgi"
ns_param map "GET /cgi-bin $home/cgi-bin"
ns_param map "POST /cgi-bin $home/cgi-bin"
ns_param interps CGIinterps
ns_section "ns/interps/CGIinterps"
ns_param .pl "/opt/local/bin/perl"
ns_param .sh "/bin/bash"
ns_section "ns/server/default/module/nslog"
ns_param file access.log
ns_param rolllog true ;# default: true; should server log files automatically
ns_param rollonsignal false ;# default: false; perform roll on a sighup
ns_param rollhour 0 ;# default: 0; specify at which hour to roll
ns_param maxbackup 7 ;# default: 10; max number of backup log files
#ns_param rollfmt %Y-%m-%d-%H:%M ;# format appendend to log file name
ns_section "ns/server/default/module/nssock"
ns_param port 8080
ns_param address 0.0.0.0
ns_param hostname [ns_info hostname]
ns_param maxinput [expr 1024*1024*10] ;# default: 1024*1024, maximum size for inputs (uploads)
ns_param readahead [expr 1024*1024*1] ;# default: 16384; size of readahead for requests
ns_param backlog 1024 ;# default: 256; backlog for listen operations
ns_param acceptsize 10 ;# default: value of "backlog"; max number of accepted (but unqueued) requests
ns_param closewait 0 ;# default: 2; timeout in seconds for close on socket
ns_param maxqueuesize 1024 ;# default: 1024; maximum size of the queue
ns_param keepwait 5 ;# 5, timeout in seconds for keep-alive
ns_param keepalivemaxuploadsize 500000 ;# 0, don't allow keep-alive for upload content larger than this
ns_param keepalivemaxdownloadsize 1000000 ;# 0, don't allow keep-alive for download content larger than this
#
# Spooling Threads
#
#ns_param spoolerthreads 1 ;# default: 0; number of upload spooler threads
#ns_param maxupload 0 ;# default: 0, when specified, spool uploads larger than this value to a temp file
#ns_param writerthreads 1 ;# default: 0, number of writer threads
#ns_param writersize 1048576 ;# default: 1024*1024, use writer threads for files larger than this value
#ns_param writerbufsize 8192 ;# default: 8192, buffer size for writer threads
ns_section "ns/server/default/module/nscp"
ns_param port 4080
ns_param address 127.0.0.1
ns_section "ns/server/default/module/nscp/users"
ns_param user "::"
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/usr/local/ns/lib/nsf2.0.0/libnsf2.0.0.so
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment