# BEGIN rule(s)
BEGIN {
_addlib("_BASE")
}
BEGIN {
BINMODE = "rw"
SUBSEP = "\000"
_NULARR[""]
delete _NULARR[""]
_INITBASE()
}
BEGIN {
_addlib("_sYS")
}
BEGIN {
_addlib("_rEG")
}
BEGIN {
_addlib("_INSTRUC")
}
BEGIN {
_delay_perfmsdelay = 11500
}
BEGIN {
_addlib("_ARR")
}
BEGIN {
}
BEGIN {
_addlib("_EXTFN")
}
BEGIN {
delete _XCHR
delete _ASC
delete _CHR
t = ""
for (i = 0; i < 256; i++) {
_ASC[a = _CHR[i] = sprintf("%c", i)] = i
_QASC[a] = sprintf("%.3o", i)
_XCHR[_CHR[i]] = sprintf("%c", (i < 128 ? i + 128 : i - 128))
}
for (i = 0; i < 256; i++) {
_QSTRQ[_CHR[i]] = "\\" sprintf("%.3o", i)
}
for (i = 0; i < 32; i++) {
_QSTR[_CHR[i]] = _QSTRQ[_CHR[i]]
}
for (; i < 128; i++) {
_QSTR[_CHR[i]] = _CHR[i]
}
for (; i < 256; i++) {
_QSTR[_CHR[i]] = _QSTRQ[_CHR[i]]
}
_QSTR["\\"] = "\\\\"
_CHR["CR"] = "\r"
_CHR["EOL"] = "\r\n"
_CHR["EOF"] = "\032"
_QSTR[_CHR["EOL"]] = "\\015\\012"
_CHR["MONTH"][_CHR["MONTH"]["Jan"] = "01"] = "Jan"
_CHR["MONTH"][_CHR["MONTH"]["Feb"] = "02"] = "Feb"
_CHR["MONTH"][_CHR["MONTH"]["Mar"] = "03"] = "Mar"
_CHR["MONTH"][_CHR["MONTH"]["Apr"] = "04"] = "Apr"
_CHR["MONTH"][_CHR["MONTH"]["May"] = "05"] = "May"
_CHR["MONTH"][_CHR["MONTH"]["Jun"] = "06"] = "Jun"
_CHR["MONTH"][_CHR["MONTH"]["Jul"] = "07"] = "Jul"
_CHR["MONTH"][_CHR["MONTH"]["Aug"] = "08"] = "Aug"
_CHR["MONTH"][_CHR["MONTH"]["Sep"] = "09"] = "Sep"
_CHR["MONTH"][_CHR["MONTH"]["Oct"] = "10"] = "Oct"
_CHR["MONTH"][_CHR["MONTH"]["Nov"] = "11"] = "Nov"
_CHR["MONTH"][_CHR["MONTH"]["Dec"] = "12"] = "Dec"
_TAB_STEP_DEFAULT = 8
for (i = 0; i < 32; i++) {
_REXPSTR[_CHR[i]] = _QSTRQ[_CHR[i]]
}
for (; i < 256; i++) {
_REXPSTR[_CHR[i]] = _CHR[i]
}
_gensubfn("\\^$.()|{,}[-]?+*", ".", "_rexpstr_i0")
}
BEGIN {
_addlib("_SYSIO")
}
BEGIN {
_SYS_STDCON = "CON"
_CON_WIDTH = (match(_cmd("MODE " _SYS_STDCON " 2>NUL"), /Columns:[ \t]*([0-9]+)/, A) ? strtonum(A[1]) : 80)
}
BEGIN {
_addlib("_FILEIO")
}
BEGIN {
if (_SYS_STDOUT == "") {
_SYS_STDOUT = "/dev/stdout"
}
if (_SYS_STDERR == "") {
_SYS_STDERR = "/dev/stderr"
}
_CHR["SUBDIR"] = "\\"
if (_gawk_scriptlevel < 1) {
match(b = _cmd("echo %CD% 2>NUL"), /[^\x00-\x1F]*/)
ENVIRON["CD"] = _FILEIO_RD = _filerd(substr(b, RSTART, RLENGTH) _CHR["SUBDIR"])
_FILEIO_R = _filer(_FILEIO_RD)
_FILEIO_D = _filed(_FILEIO_RD)
_setmpath(_filerd(_FILEIO_RD "_tmp" _CHR["SUBDIR"]))
}
}
BEGIN {
_addlib("_tOBJ")
}
BEGIN {
_tInBy = "\212._tInBy"
_tgenuid_init()
_UIDS[""]
delete _UIDS[""]
_UIDSDEL[""]
delete _UIDSDEL[""]
_tPREV[""]
_tPARENT[""]
_tNEXT[""]
_tFCHLD[""]
_tQCHLD[""]
_tLCHLD[""]
_tLINK[""]
_tCLASS[""]
_tSTR[""]
_tDLINK[""]
_[""]
delete _[""]
_ptr[""]
delete _ptr[""]
_TMP0[""]
delete _TMP0[""]
_TMP1[""]
delete _TMP1[""]
}
BEGIN {
_addlib("_ERRLOG")
}
BEGIN {
if (_gawk_scriptlevel < 1) {
_ERRLOG_TF = 1
_ERRLOG_VF = 1
_ERRLOG_IF = 1
_ERRLOG_WF = 1
_ERRLOG_EF = 1
_ERRLOG_FF = 1
_wrfile(_errlog_file = _getmpfile("OUTPUT.LOG"), "")
}
}
BEGIN {
_addlib("_SHORTCUT")
}
BEGIN {
_shortcut_init()
}
BEGIN {
_addlib("_eXTFN")
}
BEGIN {
_extfn_init()
}
BEGIN {
_addlib("_sHARE")
}
BEGIN {
_addlib("_FILEVER")
}
BEGIN {
_addlib("_DS")
_PRODUCT_NAME = "Deployment Solution Control"
_PRODUCT_VERSION = "1.0"
_PRODUCT_COPYRIGHT = "Copyright (C) 2013 by CosumoGEN"
_PRODUCT_FILENAME = "_main.ewk"
}
BEGIN {
_inituidefault()
}
BEGIN {
_initfilever()
}
BEGIN {
_initshare()
}
BEGIN {
_inspass(_IMPORT, "_import_data")
}
BEGIN {
_TEND[_ARRLEN] = 0
_TYPEWORD = "_TYPE"
}
BEGIN {
_ARRLEN = "\032LEN"
_ARRPTR = "\032PTR"
_ARRSTR = ""
}
BEGIN {
_getperf_fn = "_nop"
}
BEGIN {
_datablock_length = 262144
}
BEGIN {
_initrdreg()
}
BEGIN {
_initregpath0()
}
BEGIN {
_initsys()
}
BEGIN {
a = ENVIRON["EGAWK_CMDLINE"]
gsub(/^[ \t]*/, "", a)
a = _lib_CMDLN(a)
if (a != "" && ! _LIBAPI["F"]["!"]) {
_out(_lib_HELP())
_fatal("Bad comandline argument `" a "'")
}
gsub(/^[ \t]*/, "", a)
ENVIRON["EGAWK_CMDLINE"] = a
_lib_APPLY()
if (_basexit_fl) {
exit
}
_INIT()
_START()
_END()
}
# END rule(s)
END {
_EXIT()
}
END {
if (_gawk_scriptlevel < 1) {
close(_errlog_file)
p = _Zimport(_rdfile(_errlog_file), _N())
if ((t = _get_errout(p)) != "") {
_expout(t, "/dev/stderr")
}
}
}
END {
if (_gawk_scriptlevel < 1) {
if (! _fileio_notdeltmpflag) {
_FILEIO_TMPATHS[_FILEIO_TMPRD]
_Foreach(_FILEIO_TMPATHS, "_uninit_del")
}
}
}
END {
if (_constatstrln > 0) {
_constat()
}
}
# Functions, listed alphabetically
function W(p, p0, p1)
{
if (isarray(p0)) {
delete p0[p]
if (isarray(p1)) {
for (i in p1) {
if (isarray(p1[i])) {
p0[p][i][""]
delete p0[p][i][""]
_N_i0(p0[p][i], p1[i])
} else {
p0[p][i] = p1[i]
}
}
return p
}
return (p0[p] = p1)
}
delete _[p][p0]
if (isarray(p1)) {
for (i in p1) {
if (isarray(p1[i])) {
_[p][p0][i][""]
delete _[p][p0][i][""]
_N_i0(_[p][p0][i], p1[i])
} else {
_[p][p0][i] = p1[i]
}
}
return p
}
return (_[p][p0] = p1)
}
function _ARR(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_ARR 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _BASE(c, t, P, A)
{
switch (c) {
case "_lib_CMDLN":
if (match(t, /^((--([Vv])ersion)|(-([Vv])))[ \t]*/, A)) {
t = substr(t, RLENGTH + 1)
_cmdln_version = A[3] A[5]
} else if (match(t, /^((-?\?)|(--help))[ \t]*/)) {
t = substr(t, RLENGTH + 1)
_cmdln_help = 1
} else if (match(t, /^--[ \t]*/)) {
return _endpass(substr(t, RLENGTH + 1))
}
return t
case "_lib_APPLY":
if (_cmdln_help) {
match(_fbaccr(_LIBAPI, "_lib_HELP"), /^([^\x00]*)\x00([^\x01]*)\x01(.*)/, A)
_out(A[2] A[1] A[3])
return _endpass(_basexit_fl = 1)
}
if (_cmdln_version) {
_out(_ln(_PRODUCT_NAME " v" _PRODUCT_VERSION) _ln(_PRODUCT_COPYRIGHT) _ln() ((_cmdln_version == "v" ? "" : _lib_NAMEVER())))
return _endpass(_basexit_fl = 1)
}
return
case "_lib_HELP":
return ("\000" _ln(_PRODUCT_NAME " v" _PRODUCT_VERSION) _ln(_PRODUCT_COPYRIGHT) _ln() _ln(" Usage:") _ln() _ln(" " _PRODUCT_FILENAME " [/key1 /key2...] [-- cmdline]") _ln() _ln(" keys:") _ln() "\001" _ln(" -v -V --version - output product version and (if /V) all modules") _ln(" ? -? --help - output this help page") _ln(" -- - command line string edge"))
case "_lib_NAMEVER":
return _ln("_BASE 3.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _DS(c, t, P, a, A)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return (_ln() _ln(" Usage: " _PRODUCT_NAME " [/key1 /key2...] sourcefile [cmdline]") _ln())
case "_lib_NAMEVER":
return
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _END()
{
}
function _ERRLOG(c, t, P, a, b, A)
{
switch (c) {
case "_lib_CMDLN":
if (match(t, /^[ \t]*-L:([TtVvIiWwEeFf]*)[ \t]*/, A)) {
t = substr(t, RLENGTH + 1)
_errlog_errflkey = _errlog_errflkey A[1]
}
return t
case "_lib_APPLY":
if (_errlog_errflkey) {
split(_errlog_errflkey, A, "")
for (a = 1; a in A; a++) {
if (A[a] == toupper(A[a])) {
b = 1
} else {
b = ""
}
switch (toupper(A[a])) {
case "T":
_ERRLOG_TF = b
break
case "V":
_ERRLOG_VF = b
break
case "I":
_ERRLOG_IF = b
break
case "W":
_ERRLOG_WF = b
break
case "E":
_ERRLOG_EF = b
break
case "F":
_ERRLOG_FF = b
break
}
}
if (_ERRLOG_IF) {
_info("Log-message types inherited acc/deny: " "TRACE " ((_ERRLOG_TF ? "ON" : "OFF")) "/" "VERBOSE " ((_ERRLOG_VF ? "ON" : "OFF")) "/" "INFO " ((_ERRLOG_IF ? "ON" : "OFF")) "/" "WARNING " ((_ERRLOG_WF ? "ON" : "OFF")) "/" "ERROR " ((_ERRLOG_EF ? "ON" : "OFF")) "/" "FATAL " ((_ERRLOG_FF ? "ON" : "OFF")))
}
}
return
case "_lib_HELP":
return (_ln(" -L:TtVvIiWwEeFf - enable(upcase: TVIWEF) or disable(lowcase: tviwef) allowable type of") _ln(" log messages. Trace/Verbose/Informational/Warning/Error/Fatal.") _ln())
case "_lib_NAMEVER":
return _ln("_ERRLOG 1.0")
case "_lib_BEGIN":
P["_ERRLOG_TF"] = _ERRLOG_TF
P["_ERRLOG_VF"] = _ERRLOG_VF
P["_ERRLOG_IF"] = _ERRLOG_IF
P["_ERRLOG_WF"] = _ERRLOG_WF
P["_ERRLOG_EF"] = _ERRLOG_EF
P["_ERRLOG_FF"] = _ERRLOG_FF
P["_errlog_file"] = "/dev/stderr"
return
}
}
function _EXIT()
{
}
function _EXTFN(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_EXTFN 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _FILEIO(c, t, P, A)
{
switch (c) {
case "_lib_CMDLN":
if (match(t, /^[ \t]*-[Tt]([\+-])[ \t]*/, A)) {
t = substr(t, RLENGTH + 1)
if (A[1] == "+") {
_fileio_notdeltmpflag = 1
} else {
_fileio_notdeltmpflag = ""
}
}
return t
case "_lib_APPLY":
if (_fileio_notdeltmpflag) {
_info("Temporary objects deletion DISABLED (inherited)")
}
return
case "_lib_HELP":
return (_ln(" -[Tt][+-] - inherited: +enable\\-disable temporary files\\dirs deletion") _ln())
case "_lib_NAMEVER":
return _ln("_FILEIO 2.1")
case "_lib_BEGIN":
P["ENVIRON"]["CD"] = ENVIRON["CD"]
P["_FILEIO_RD"] = _FILEIO_RD
P["_FILEIO_R"] = _FILEIO_R
P["_FILEIO_D"] = _FILEIO_D
if (! ("_FILEIO_TMPRD" in P)) {
P["_FILEIO_TMPRD"] = _getmpdir(_filen(P["SOURCE"]) "." ++_egawk_subcntr _CHR["SUBDIR"])
}
return
case "_lib_END":
return
}
}
function _FILEVER(c, t, P, a, A)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _Foreach(A, f, p0, i)
{
for (i in A) {
@f(A, i, p0)
}
}
function _INIT(f)
{
}
function _INITBASE()
{
_egawk_utilpath = ENVIRON["EGAWK_PATH"] "BIN\\UTIL\\"
}
function _INSTRUC(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_INSTRUC 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _N(F, v, p)
{
for (p in _UIDS) {
delete _UIDS[p]
return _nN_i0(p, F, v)
}
return _nN_i0(_tgenuid(), F, v)
}
function _SHORTCUT(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_shortcut 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _START(t, i, A)
{
_torexp_init()
test_uid()
return
_conl(patsplit("a,b,c", A, /[^,]/, B))
test_splitstr()
return
A[""]
_CLASSPTR["ptr"]
ALTARR["ptra"]
_conl(_dumparr(SYMTAB))
BB[1] = _NOP
zorr(1, 2, 3, 4, 5, 6)
zorr(BB, 1)
_rtn()
_rtn("")
_rtn(0)
_rtn("0")
_rtn(1)
_rtn("1")
_rtn(-1)
_rtn("-1")
_rtn("huj")
_rtn("ptr")
_rtn("ptra", ALTARR)
_rtn(ALTARR)
_rtn(ALTARR, ALTARR)
return
_tstini()
return
_splitpath_test()
return
hh = "CPU"
_conl("go1!")
_conl(_var(_sharepath(hh, "gdfsgdsgsd sdgsdighjui teretiewrotrewut 345345345 rtjtireutireu huj")))
_conl("go2!")
_conl(_var(_sharelist(AAA, hh), _dumparr(AAA)))
_conline()
A[1] = "h"
A[3] = "j"
t = "pizda"
if (match(t, /^pi(Z)da/, A)) {
_conl("match")
} else {
_conl("not match")
}
_conl(_dumparr(A))
return
_pathSMA = "C:\\Program Files\\Altiris\\Altiris Agent\\"
DSPlugInPath = _pathSMA "Agents\\Deployment\\Agent\\"
DSAutoPath = _pathSMA
if (! _sysinfo(_SYS, _hostname)) {
_fatal("_sysinfo: unknown error")
}
_REG[""]
delete _REG[""]
_servoutput = _CHR["EOL"] _cmd("sc query state= all")
_dsbasepath = "\\\\CPU\\CPU\\DEV\\PROJECT\\_DS\\"
_rdreg(_REG, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris")
_wrfile("rego.txt", _dumparr(_REG))
_conl("fF")
c = _getreg_i1(DDD, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\\204~.*\224Install path", _REG)
pp = _n("NAME", "NS")
p = _defsolution(pp, "DS Plug-in", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\Agents\\")
ClientConfiguration = _defdll(p, "Client Configuration", "ClientConfiguration")
ClientImagingPrep = _defdll(p, "Client Inaging Preparation", "ClientImagingPrep")
ClientImaging = _defdll(p, "Client Imaging", "ClientImaging")
ClientPCT = _defdll(p, "Client PCT", "ClientPCT")
ClientRebootTo = _defdll(p, "Client Reboot To", "ClientRebootTo")
DeploymentAgent = _defdll(p, "Deployment Agent", "Deployment Agent")
DeploymentSolutionBaseAgent = _defdll(p, "Deployment Solution Base Agent", "Deployment Solution Base Agent")
ClientBCDEdit = _defile(p, "Client BCD Edit", "ClientBCDEdit.dll")
ClientCopyFile = _defile(p, "Client Copy File", "ClientCopyFile.dll")
ClientPreImage = _defile(p, "Client Pre Image", "ClientPreImage.dll")
ClientRebootTo = _defile(p, "Client Reboot To", "ClientRebootTo.dll")
_defile(p, "ConfigService.exe", "ConfigService.exe", "")
_defile(p, "config.dll", "config.dll", "")
_defsrv(p, "DS Plug-in Service", "Altiris Deployment Solution - System Configuration")
_defreg(p, "Deployment Agent Path", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR")
_defile(p, "Altiris_DeploymentSolutionAgent_7_1_x86.msi", (_SYS["OSArchitecture"] == "64-bit" ? "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\SoftwareManagement\\Software Delivery\\{9D76E4CA-377A-472D-A82E-EDAD77E7E4ED}\\cache\\Altiris_DeploymentSolutionAgent_7_1_x64.msi" : "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\SoftwareManagement\\Software Delivery\\{4B747D25-612F-48FC-B6B5-9916D1BB755C}\\cache\\Altiris_DeploymentSolutionAgent_7_1_x86.msi"), "")
_defdir(p, "Deployment Folder", a = gensub(/[^\\]*$/, "", 1, _rdsafe(_REG, "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR", "C:\\Program Files\\Altiris\\Altiris Agent\\Agents\\Deployment\\Agent\\")))
p = _defsolution(pp, "DS Auto", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Altiris Agent\\Plugin Objects\\Agents\\")
_defdir(p, "C:\\Boot\\Altiris\\iso\\boot\\fonts\\", "C:\\Boot\\Altiris\\iso\\boot\\fonts\\")
_defdir(p, "C:\\Boot\\Altiris\\iso\\sources\\", "C:\\Boot\\Altiris\\iso\\sources\\")
_defile(p, "C:\\Boot\\Altiris\\iso\\autoinst.exe", "C:\\Boot\\Altiris\\iso\\autoinst.exe", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\autoinst.ini", "C:\\Boot\\Altiris\\iso\\autoinst.ini", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\autoutil.exe", "C:\\Boot\\Altiris\\iso\\autoutil.exe", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\autoutil.ini", "C:\\Boot\\Altiris\\iso\\autoutil.ini", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\bcdedit.exe", "C:\\Boot\\Altiris\\iso\\bcdedit.exe", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\bootmgr", "C:\\Boot\\Altiris\\iso\\bootmgr", "")
_defile(p, "C:\\Boot\\Altiris\\iso\\bootsect.exe", "C:\\Boot\\Altiris\\iso\\bootsect.exe", "")
_defreg(p, "Deployment Automation reg.File", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\AutoUtil\\File.XSZ", "autoutil.exe")
_defreg(p, "Deployment Automation reg.Path", "HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\AutoUtil\\Path.XSZ", "%systemdrive%\\boot\\altiris\\iso")
_check(pp)
_conl(_report(pp))
_wrfile("report.txt", _report(pp))
}
function _SYSIO(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_SYSIO 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _W(p, A, v)
{
if (isarray(v)) {
if (p) {
delete A[p]
A[p][""]
delete A[p][""]
_movarr(A[p], v)
}
return p
}
if (p) {
delete A[p]
return (A[p] = v)
}
return v
}
function _Zexparr(S, s, t, i)
{
t = ""
if (isarray(S)) {
for (i in S) {
t = t ((isarray(S[i]) ? _Zexparr_i1(i) "\020" _Zexparr_i0(S[i]) "\021\021\020" : _Zexparr_i2(_Zexparr_i3(i) "\021" _Zexparr_i3(S[i])) "\020"))
}
}
if (s != "") {
gsub(/\x1B/, "\033;", s)
gsub(/\x10/, "\0330", s)
t = t "\021\021\020" s
}
gsub(/\x0A/, "\033:", t)
return t
}
function _Zexparr_i0(S, t, i)
{
for (i in S) {
t = t ((isarray(S[i]) ? _Zexparr_i1(i) "\020" _Zexparr_i0(S[i]) "\021\021\020" : _Zexparr_i2(_Zexparr_i3(i) "\021" _Zexparr_i3(S[i])) "\020"))
}
return t
}
function _Zexparr_i1(t)
{
gsub(/\x1B/, "\033;", t)
gsub(/\x11/, "\0331", t)
gsub(/\x10/, "\0330", t)
return t
}
function _Zexparr_i2(t)
{
gsub(/\x10/, "\0330", t)
return t
}
function _Zexparr_i3(t)
{
gsub(/\x1B/, "\033;", t)
gsub(/\x11/, "\0331", t)
return t
}
function _Zimparr(D, t, A, B)
{
if (isarray(D)) {
split(t, A, /\x10/, B)
t = _Zimparr_i0(A, B, _Zimparr_i1(D, A, B, 1))
gsub(/\x1B\x30/, "\020", t)
gsub(/\x1B\x3B/, "\033", t)
return t
}
}
function _Zimparr_i0(A, B, i)
{
return ((i in A ? A[i] B[i] _Zimparr_i0(A, B, i + 1) : ""))
}
function _Zimparr_i1(D, A, B, i, t, a, n)
{
while (i in B) {
if ((t = A[i++]) == "\021\021") {
return i
}
gsub(/\x1B\x30/, "\020", t)
if ((a = index(t, "\021")) > 0) {
if (isarray(D[n = _Zimparr_i2(substr(t, 1, a - 1))])) {
delete D[n]
}
D[n] = _Zimparr_i2(substr(t, a + 1))
} else {
if (! isarray(D[t = _Zimparr_i2(t)])) {
delete D[t]
D[t][""]
delete D[t][""]
}
i = _Zimparr_i1(D[t], A, B, i)
}
}
}
function _Zimparr_i2(t)
{
gsub(/\x1B\x31/, "\021", t)
gsub(/\x1B\x3B/, "\033", t)
return t
}
function _Zimport(t, p, A, c, i, n, B)
{
if (p) {
c = split(t, B, /\x0A/)
for (i = 1; i <= c; i++) {
if ((t = B[i]) == "") {
continue
}
gsub(/\x1B\x3A/, "\n", t)
if (match(t, /^_ERRLOG: /)) {
_tLOG[n = _wLCHLD(p, _N())][""]
delete _tLOG[n][""]
_Zimparr(_tLOG[n], substr(t, 10))
} else if ((t = _pass(_IMPORT, t, p, A)) != "") {
gsub(/\x1B\x3B/, "\033", t)
_wLCHLD(p, _N(_tSTR, t))
}
}
return p
} else {
_expout(t)
}
}
function _acc(A, a, t)
{
if (t) {
if (_VLDMAXSTRING < length(t) + length(a)) {
if (a) {
if (_VLDMAXSTRING < length(t)) {
A[--A[_ARRPTR]] = a
A[--A[_ARRPTR]] = t
} else {
A[--A[_ARRPTR]] = a t
}
} else {
A[++A[_ARRLEN]] = t
}
return ""
}
return (a t)
}
return a
}
function _accmpu(A, a, n)
{
if (n) {
return (_mpufn0 = n)
}
if (_mpuacc) {
if (_VLDMAXSTRING < length(_mpuacc) + length(a)) {
if (a) {
if (_VLDMAXSTRING < length(_mpuacc)) {
A[--A[_ARRLEN]] = a
A[--A[_ARRLEN]] = _mpuacc
} else {
A[--A[_ARRLEN]] = a _mpuacc
}
} else {
A[--A[_ARRLEN]] = _mpuacc
}
_mpuacc = ""
} else {
_mpuacc = a _mpuacc
}
} else {
_mpuacc = a
}
}
function _add(S, sf, D, df)
{
if (sf in S) {
if (isarray(S[sf])) {
if (df in D) {
if (isarray(D[df])) {
return _extarr(D[df], S[sf])
}
delete D[df]
}
D[df][""]
delete D[df][""]
return _extarr(D[df], S[sf])
} else {
if (isarray(D[df])) {
delete D[df]
}
D[df] = D[df] S[sf]
}
}
}
function _addarr(D, S)
{
if (isarray(S)) {
_addarr_i0(D, S)
}
}
function _addarr_i0(D, S, i)
{
for (i in S) {
if (isarray(S[i])) {
delete D[i]
D[i][""]
delete D[i][""]
_addarr_i0(D[i], S[i])
} else {
delete D[i]
D[i] = S[i]
}
}
}
function _addarrmask(D, S, M)
{
for (_addarrmaski0 in M) {
if (_addarrmaski0 in S) {
if (isarray(S[_addarrmaski0])) {
if (! isarray(D[_addarrmaski0])) {
delete D[_addarrmaski0]
D[_addarrmaski0][""]
delete D[_addarrmaski0][""]
}
if (isarray(M[_addarrmaski0])) {
_addarrmask(D[_addarrmaski0], S[_addarrmaski0], M[_addarrmaski0])
} else {
_extarr_i0(D[_addarrmaski0], S[_addarrmaski0])
}
} else {
if (isarray(D[_addarrmaski0])) {
delete D[_addarrmaski0]
}
D[_addarrmaski0] = S[_addarrmaski0]
}
} else {
delete D[_addarrmaski0]
}
}
}
function _addf(A, f)
{
A["B"][""] = A["F"][A["B"][f] = A["B"][""]] = f
}
function _addfile(f, d, a, b)
{
if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") {
ERRNO = "Filename error"
return
}
a = BINMODE
BINMODE = "rw"
b = ORS
ORS = ""
ERRNO = ""
print(d) >> f
if (ERRNO) {
return ""
}
close(f)
BINMODE = a
ORS = b
if (ERRNO) {
return ""
}
return d
}
function _addlib(f)
{
_addf(_LIBAPI, f)
}
function _addlist(A, v)
{
A[++A[0]] = v
}
function _bearray(A)
{
if (isarray(A) || A == 0 && A == "") {
return 1
}
}
function _bframe(A, t, p)
{
return _bframe_i0(A, t, p, A[""])
}
function _bframe_i0(A, t, p, f)
{
return ((f ? _bframe_i0(A, t, p, A[f]) (@f(t, p)) : ""))
}
function _cfguid(p, optr, pfx, sfx, hstrcnt, lstrchr)
{
delete _UIDOBL[p]
if (_isptr(optr)) {
if (optr == p) {
delete _UIDOBLV[p]
delete _UIDOBLV[_UIDOBLV[_UIDOBL[p] = p][""] = p][""]
} else if (optr in _UIDOBL) {
_UIDOBL[p] = _UIDOBL[optr]
}
}
_UIDPFX[p] = (_istr(pfx) ? pfx : "")
_UIDSFX[p] = (_istr(sfx) ? sfx : "")
if (_isptr(hstrcnt)) {
if (hstrcnt != p) {
_UIDCHR[p] = _UIDCHR[_UIDCNT[p] = _UIDCNT[hstrcnt]]
return p
}
hstrcnt = _NOP
}
_UIDCNTL[_UIDCNT[p] = p] = _cfguidchr(p, hstrcnt, lstrchr)
return p
}
function _cfguidchr(p, h, l, H, L)
{
if (_isptr(l)) {
if (l != p) {
return (_UIDCHR[p] = _UIDCHR[l])
}
_UIDCHR[p] = p
l = _NOP
}
_UIDCHR[p] = p
_splitstr(H, h, _UIDCHRH[_classys])
_splitstr(L, l, H)
delete _UIDCHRH[_UIDCHRH[p][""] = p][""]
delete _UIDCHRL[_UIDCHRL[p][""] = p][""]
_cfguidh(p, H, L)
return _cfguidl(p, L, L)
}
function _cfguidh(p, H, L, hi, h, li)
{
for (hi = 1; hi in H; hi++) {
h = H[hi]
for (li = 1; li in L; li++) {
_UIDCHRH[p][h L[li]]
}
}
}
function _cfguidl(p, H, L, hi, h, hl, li)
{
for (hi = 1; hi in H; hi++) {
h = H[hi]
for (li = 1; li in L; li++) {
hl = _UIDCHRL[p][hl] = h L[li]
}
}
return hl
}
function _check(p)
{
_dll_check(p)
_file_check(p)
_serv_check(p)
_reg_check(p)
}
function _chrline(t, ts, w, s)
{
return ((t = " " _tabtospc(t, ts) ((t ? (t ~ /[ \t]$/ ? "" : " ") : ""))) _getchrln((s ? s : "_"), ((w ? w : _CON_WIDTH - 1)) - length(t)) _CHR["EOL"])
}
function _cmd(c, i, A)
{
_fio_cmda = RS
RS = ".{1,}"
_fio_cmdb = BINMODE
BINMODE = "rw"
ERRNO = RT = _NUL
c | getline RS
BINMODE = _fio_cmdb
RS = _fio_cmda
if (ERRNO || 0 > (_exitcode = close(c))) {
return (RT = _NOP)
}
return RT
}
function _cmparr(A0, A1, R, a, i)
{
a = 0
delete R
for (i in A0) {
if (! (i in A1)) {
a++
R[i] = 0
} else if (A0[i] != A1[i]) {
a++
R[i] = 2
}
}
for (i in A1) {
if (! (i in A0)) {
a++
R[i] = 1
}
}
return a
}
function _con(t, ts, a, b, c, d, i, r, A, B)
{
d = RLENGTH
if ((c = split(r = t, A, /\x0D?\x0A/, B)) > 0) {
a = BINMODE
b = ORS
BINMODE = "rw"
ORS = ""
if (c > 1) {
if ((i = length(t = _tabtospc(A[1], ts, _conlastrln))) < _constatstrln) {
t = t _getchrln(" ", _constatstrln - i)
}
print(t B[1]) > _SYS_STDCON
for (i = 2; i < c; i++) {
print(_tabtospc(A[i], ts) B[i]) > _SYS_STDCON
}
print(_conlastr = _tabtospc(A[c], ts)) > _SYS_STDCON
fflush(_SYS_STDCON)
} else {
print(t = _tabtospc(t, ts, _conlastrln)) > _SYS_STDCON
fflush(_SYS_STDCON)
_conlastr = _conlastr t
}
if ((i = length(_conlastr)) >= _CON_WIDTH) {
_conlastr = substr(_conlastr, 1 + int(i / _CON_WIDTH) * _CON_WIDTH)
}
_conlastrln = length(_conlastr)
if (_constatstr) {
print((t = _constatgtstr(_constatstr, _CON_WIDTH - 1 - _conlastrln)) _CHR["CR"] _conlastr) > _SYS_STDCON
fflush(_SYS_STDCON)
_constatstrln = length(t)
}
BINMODE = a
ORS = b
RLENGTH = d
return r
}
RLENGTH = d
}
function _conin(t, a, b)
{
_constatpush()
_constat()
a = BINMODE
b = RS
BINMODE = "rw"
RS = "\n"
_con(t)
getline t < "CON"
close("CON")
_conlastrln = 0
_conlastr = ""
gsub(/[\x0D\x0A]+/, "", t)
BINMODE = a
RS = b
_constatpop()
return t
}
function _conl(t, ts)
{
return _con(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"])), ts)
}
function _conline(t, ts)
{
return _con(_chrline(t, ts))
}
function _conlq(t, ts)
{
return _conl("`" t "'", ts)
}
function _constat(t, ts, ln, a)
{
if (_constatstrln > (ln = length(t = _constatgtstr(_constatstr = _tabtospc(t, ts), _CON_WIDTH - 1 - _conlastrln)))) {
t = t _getchrln(" ", _constatstrln - ln)
}
_constatstrln = ln
ln = ORS
a = BINMODE
BINMODE = "rw"
ORS = ""
print(t _CHR["CR"] _conlastr) > _SYS_STDCON
fflush(_SYS_STDCON)
ORS = ln
BINMODE = a
return _constatstr
}
function _constatgtstr(t, ln, a, b)
{
if (ln < 1) {
return ""
}
if ((a = length(t)) <= ln) {
return t
}
if (ln < 11) {
return substr(t, a - ln + 1)
}
if (ln < 19) {
return ("..." substr(t, a - ln + 4))
}
return (substr(t, 1, b = int((ln - 3) / 2)) "..." substr(t, a - ln + b + 4))
}
function _constatpop()
{
if (_CONSTATPUSH[0] > 0) {
return _constat(_CONSTATPUSH[_CONSTATPUSH[0]--])
}
return _constat("")
}
function _constatpush(t, ts)
{
_CONSTATPUSH[++_CONSTATPUSH[0]] = _constatstr
if (t) {
_constat(t, ts)
}
return _constatstr
}
function _creport(p, t, f, z)
{
_[p]["REPORT"] = _[p]["REPORT"] _ln(t ((f == "" ? "" : ": " f)))
}
function _defdir(pp, n, f, v, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "defdir"))]["NAME"] = n
_[p]["DIR"] = f
return p
}
function _defdll(pp, n, rn, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "defdll"))]["NAME"] = n
_[p]["REGPATH"] = _[pp]["REGPATH"] rn
_[p]["ERRHOST"] = pp
return p
}
function _defescarr(D, r, S, i, c, t)
{
if (isarray(S)) {
for (i = 0; i < 256; i++) {
if ((c = _CHR[i]) ~ r) {
D[c] = "\\" S[c]
t = t c
} else if (D[c] == "") {
D[c] = c
}
}
} else {
for (i = 0; i < 256; i++) {
if ((c = _CHR[i]) ~ r) {
D[c] = S c
if (S != "") {
t = t c
}
} else if (D[c] == "") {
D[c] = c
}
}
}
return t
}
function _defile(pp, n, f, v, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "defile"))]["NAME"] = n
_[p]["FILE"] = f
if (! (v == 0 && v == "")) {
_[p]["RQVERSION"] = v
}
return p
}
function _defn(f, c, v)
{
FUNCTAB[c f] = v
}
function _defreg(pp, n, f, v, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "defreg"))]["NAME"] = n
_[p]["REGPATH"] = f
if (! (v == 0 && v == "")) {
_[p]["VALUE"] = v
}
}
function _defsolution(pp, n, rn, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "solution"))]["NAME"] = n
_[p]["REGPATH"] = rn
_[p]["ERRHOST"] = pp
return p
}
function _defsrv(pp, n, f, v, p)
{
_[p = _wLCHLD(pp, _n("TYPE", "defsrv"))]["NAME"] = n
_[p]["SERVNAME"] = f
return p
}
function _del(f, c, a, A)
{
if (match(f, /\\[ \t]*$/)) {
if ((c = toupper(_filerd(f))) && length(f) == FLENGTH) {
_cmd("rd " c " /S /Q 2>NUL")
_deletepfx(_WFILEROOTDIR, c)
_deletepfx(_FILEIO_RDTMP, c)
_deletepfx(_FILEIO_RDNETMP, c)
} else {
_conl("HUJ TEBE!")
return ""
}
} else {
a = _dir(A, f)
_cmd("del " f " /Q 2>NUL")
for (c in A) {
if (c ~ /\\$/) {
_cmd("rd " c " /S /Q 2>NUL")
_deletepfx(_WFILEROOTDIR, c)
_deletepfx(_FILEIO_RDTMP, c)
}
_deletepfx(_FILEIO_RDNETMP, c)
}
}
return a
}
function _delay(t, a)
{
for (a = 1; a <= t; a++) {
_delayms()
}
}
function _delayms(a)
{
for (a = 1; a <= _delay_perfmsdelay; a++) {
}
}
function _deletepfx(A, f, B, le, i)
{
le = length(f)
for (i in A) {
if (substr(toupper(i), 1, le) == f) {
B[i] = A[i]
delete A[i]
}
}
}
function _delf(A, f)
{
A["B"][A["F"][A["B"][f]] = A["F"][f]] = A["B"][f]
delete A["F"][f]
delete A["B"][f]
}
function _deluid(p)
{
if (p in _CLASSPTR) {
_deluida0 = _CLASSPTR[p]
if (_deluida0 in _UIDOBL) {
_UIDOBLV[_UIDOBL[_deluida0]][p]
}
}
delete _CLASSPTR[p]
return _deluida0
}
function _dir(A, rd, i, r, f, ds, pf, B, C)
{
delete A
gsub(/(^[ \t]*)|([ \t]*$)/, "", rd)
if (rd == "") {
return ""
}
i = split(_cmd("dir \"" rd "\" 2>NUL"), B, /\x0D?\x0A/) - 3
pf = (match(B[4], /Directory of ([^\x00-\x1F]+)/, C) ? C[1] ((C[1] ~ /\\$/ ? "" : "\\")) : "")
for (r = 0; i > 5; i--) {
if (match(B[i], /^([^ \t]*)[ \t]+([^ \t]*)[ \t]+((
)|([0-9\,]+))[ \t]+([^\x00-\x1F]+)$/, C)) {
if (C[6] !~ /^\.\.?$/) {
if (C[4]) {
ds = "D "
} else {
ds = C[5] " "
gsub(/\,/, "", ds)
}
if ((f = _filepath(pf C[6] ((C[4] ? "\\" : "")))) != "") {
A[f] = ds C[1] " " C[2]
r++
}
}
}
}
return r
}
function _dirtree(A, f, B)
{
gsub(/(^[ \t]*)|([ \t]*$)/, "", f)
delete A
A[""]
delete A[""]
_dirtree_i0(B, 8, split(_cmd("dir \"" f "\" /-C /S 2>NUL"), B, /\x0D?\x0A/), A, f = _filerd(f))
return f
}
function _dirtree_i0(B, i, c, A, f, lf, a, C)
{
delete A[f]
A[f][0]
delete A[f][0]
lf = length(f)
for (; i <= c; ) {
if (match(B[i], /^[ \t]*Directory of (.+)/, C)) {
if (substr(a = _filerd(C[1] "\\"), 1, lf) == f) {
i = _dirtree_i0(B, i + 4, c, A[f], a)
} else {
return i
}
} else if (match(B[i++], /^([^ \t\-]+)\-([^ \t\-]+)\-([^ \t]+)[ \t]+([^ \t]+)[ \t]+([0-9]+)[ \t]+(.+)$/, C)) {
A[f][f C[6]] = C[5] " " C[1] "/" _CHR["MONTH"][C[2]] "/" C[3] " " C[4]
}
}
return i
}
function _dll_check(pp)
{
_dllchktv = ""
_missfl = 1
_tframe("_dll_check_i0", pp, _REG, pp)
if (1 || "AGENT" in _[pp]) {
if (_dllchktv != _[pp][".Product Version"]) {
_dllerr(_[pp]["AGENT"], "agent version (" _[pp][".Product Version"] ") do not match all lib versions: " _dllchktv "'")
}
} else if (! _missfl) {
_creport(pp, "agent not detected in registry")
} else {
_dllerr(pp, "agent not detected in registry but some registry entries exist:")
_tframe("_dll_check_i1", pp, pp)
}
}
function _dll_check_i0(p, R, pp, p2, i, i2, r, f, v, rs, d, tv, tf)
{
if (_[p]["TYPE"] == "defdll") {
r = toupper(_[p]["REGPATH"])
rs = 0
tf = 0
tv = ""
for (i in R) {
if (toupper(substr(i, 1, length(r))) == r) {
if ((_chka0 = substr(i, 1 + length(r), 1)) == "" || _chka0 == "\\") {
rs = 1
_missfl = 1
_[p]["." substr(gensub(/\....$/, "", 1, i), i2 = 2 + length(r), length(i) - i2 + 1)] = R[i]
if (chka0 != "") {
rs = 1
}
}
}
}
if (rs) {
if ((i = ".Install Path") in _[p] && (i = ".Product Version") in _[p]) {
_[p]["STATUS"] = "PRESENT"
f = _[p][".Install Path"]
v = _[p][".Product Version"]
if (! (".Module" in _[p])) {
_[pp][".Product Version"] = v
_VAR["HKEY_LOCAL_MACHINE\\SOFTWARE\\Altiris\\Deployment\\AgentInstallPath.STR"] = f
_[pp]["AGENT"] = p
_creport("OK: DLL DETECTED(" v "): " substr(_[p]["NAME"], 1, 112))
} else {
if (_dllchktv == "") {
_dllchktv = v
} else if (v != _dllchktv) {
return _dllerr(p, "different versions detected: " _dllchktv "!=" v "'")
}
ERRNO = ""
if (_th1(_[p]["DATA"] = _rdfile(f), ERRNO)) {
delete _[p]["DATA"]
return _dllerr(p, "read lib: " ERRNO, f)
}
if (v != (_[p]["VERSION"] = _getfilever(f))) {
return _dllerr(p, "library file version mismatch: ==`" _[p]["VERSION"] "'; !=`" v "'", f)
}
_creport(p, "OK: LIBRARY DETECTED(" v "): " substr(f, 1, 100))
}
} else {
tf = 1
_dllerr(p, "registry corrupt: `" i "' not present")
}
} else {
_[p]["STATUS"] = "MISSED"
}
}
}
function _dll_check_i1(p, pp, p1, p2, p3, i)
{
if (_[p]["TYPE"] == "defdll") {
for (i in _[p]) {
if (i ~ /^\./) {
_dllerr(pp, " " _[p]["REGPATH"] "\\" substr(i, 2))
}
}
}
}
function _dllerr(p, t, f)
{
if (t !~ /\x00/) {
t = "ERROR: \000" t
}
_errfl = 1
_[p]["ERROR"] = _[p]["ERROR"] _ln(t ((f == "" ? "" : ": " f)))
}
function _drawuid(p, cn, ch, o)
{
_conl("uid: " p)
_conl("\toblptr: " ((p in _UIDOBL ? _UIDOBL[p] "'" : "-")))
if (p in _UIDOBL) {
if (! _isptr(o = _UIDOBL[p])) {
_conl(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> oblptr not pointer")
}
if (! isarray(_UIDOBLV[o])) {
_conl(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> no OBLV array at ptr")
}
}
_conl("\tprefix: " ((p in _UIDPFX ? _UIDPFX[p] "'" : "-")))
_conl("\tsuffix: " ((p in _UIDSFX ? _UIDSFX[p] "'" : "-")))
_conl("\tcounters: " (cn = (p in _UIDCNT ? _UIDCNT[p] "'" : "-")))
if (cn != "-") {
_conl("\t\tcntrL: " _UIDCNTL[_UIDCNT[p]] "'")
_conl("\t\tcntrH: " _UIDCNTH[_UIDCNT[p]] "'")
}
_conl("\tcharset: " (ch = (p in _UIDCHR ? _UIDCHR[p] "'" : "-")))
if (ch != "-") {
_conl("chrH: ")
_conl(_dumparr(_UIDCHRH[_UIDCHR[p]]))
_conl()
_conl("chrL: ")
_conl(_dumparr(_UIDCHRL[_UIDCHR[p]]))
_conl()
}
}
function _dumparr(A, t, lv, a)
{
b = PROCINFO["sorted_in"]
PROCINFO["sorted_in"] = "_lengthsort"
if (isarray(A)) {
delete _DUMPARR
_dumparrc = _dumparrd = ""
_dumparr_i1(A, lv = ((lv == "" ? 16 : (lv == 0 || lv + 0 != 0 ? lv : (lv == "-*" ? -3 : (lv ~ /^\+?\*$/ ? 3 : 16))))) + 0, (lv < 0 ? -1 : 1), 0, _tabtospc(t))
PROCINFO["sorted_in"] = a
return _retarrd(_DUMPARR, _dumparrd, _dumparrd = "")
}
}
function _dumparr_i1(A, lv, ls, ln, t, t2, i, a, f)
{
t2 = _getchrln(" ", length(t))
if (ln == lv) {
if (ls > 0) {
for (i in A) {
++a
}
} else {
for (i in A) {
(isarray(A[i]) ? ++a : "")
}
}
if (length(_dumparrd = _dumparrd t ((a > 0 ? " ... (x" a ")" : "")) _CHR["EOL"]) > 262144) {
_DUMPARR[++_dumparrc] = _dumparrd
_dumparrd = ""
}
return
}
if (ls >= 0) {
for (i in A) {
if (! isarray(A[i])) {
if (length(_dumparrd = _dumparrd ((f ? t2 : t _nop(f = 1))) "[" i "]=" A[i] "'" _CHR["EOL"]) > 262144) {
_DUMPARR[++_dumparrc] = _dumparrd
_dumparrd = ""
}
}
}
}
for (i in A) {
if (isarray(A[i])) {
_dumparr_i1(A[i], lv, ls, ln + ls, _th0((f ? t2 : t), f = 1) "[" i "]")
}
}
if (! f) {
if (length(_dumparrd = _dumparrd t _CHR["EOL"]) > 262144) {
_DUMPARR[++_dumparrc] = _dumparrd
_dumparrd = ""
}
}
}
function _dumpobj(p, f, t, s)
{
s = _dumpobj_i0(p, f, t = t "." p "{")
if (p = _rFCHLD(p)) {
return (s = s _dumpobjm(p, f, (s ? _getchrln(" ", length(t) - 1) : t " ")))
}
return s
}
function _dumpobj_i0(p, f, t)
{
if (f == "") {
return _dumpobj_i2(p, t)
}
if (f == 0) {
return _dumpobj_i1(p, t " ")
}
return (_dumpobj_i1(p, t " ") _dumpobj_i2(p, _getchrln(" ", length(t))))
}
function _dumpobj_i1(p, t)
{
return _ln(t substr(((p in _tPREV ? "\253" _tPREV[p] : "")) " ", 1, 7) " " substr(((p in _tPARENT ? "\210" _tPARENT[p] : "")) " ", 1, 7) " " substr(((p in _tFCHLD ? _tFCHLD[p] : "")) "\205" ((p in _tQCHLD ? " (" _tQCHLD[p] ") " : "\205")) "\205" ((p in _tLCHLD ? _tLCHLD[p] : "")) " ", 1, 22) substr(((p in _tNEXT ? "\273" _tNEXT[p] : "")) " ", 1, 8))
}
function _dumpobj_i2(p, t)
{
return (_dumpobj_i3(_[p], t " ") _dumpobj_i3(_ptr[p], _getchrln(" ", length(t)) "`", "`"))
}
function _dumpobj_i3(A, t, p, e, s, i, t2)
{
if (isarray(A)) {
for (i in A) {
t2 = _getchrln(" ", length(t))
for (i in A) {
if (isarray(A[i])) {
s = s _dumpobj_i3(A[i], t "[" _dumpobj_i4(i) "]", p, _ln())
} else {
s = s _ln(t "[" _dumpobj_i4(i) "]=" p _dumpobj_i4(A[i]) "'")
}
t = t2
}
return s
}
return ((e == "" ? "" : t e))
}
if (A == 0 && A == "") {
return
}
return _ln(t "=" _dumpobj_i4(p A) "'")
}
function _dumpobj_i4(t)
{
if (length(t) > 64) {
return (substr(t, 1, 28) " ... " substr(t, length(t) - 28))
}
return t
}
function _dumpobj_nc(p, f, t)
{
return _dumpobj_i0(p, f, t "." p "{ ")
}
function _dumpobjm(p, f, t, s, t2)
{
t2 = _getchrln(" ", length(t))
do {
s = s _dumpobj(p, f, t)
t = t2
} while (p = _rNEXT(p))
return s
}
function _dumpobjm_nc(p, f, t, s, t2)
{
t2 = _getchrln(" ", length(t))
do {
s = s _dumpobj_nc(p, f, t)
t = t2
} while (p = _rNEXT(p))
return s
}
function _dumpuidgen(p, pd, pc, ps)
{
_conline("#" ++cntdm ": " p "'")
_conl()
if (p in _tuidel) {
_conl("DEL: " _var(pd = _tuidel[p]))
_conl(_dumparr(_tUIDEL[pd]) _ln())
}
_conl("PFX: " _tUIDPFX[p] "'")
_conl("SFX: " _tUIDSFX[p] "'")
_conl("COUNT: " ((p in _tuidcnt ? (pc = _tuidcnt[p]) "'" : _th0("-", pc = -2))))
_con("CHARS: ")
if (p in _tuidchr) {
_conl((ps = _tuidchr[p]) "'")
_conl("HCHR: " ((pc == -2 ? "-" : _tUIDCNTH[pc] "'")))
_conl(_dumparr(_tUIDCHRH[ps]) _ln())
_conl("LCHR: " ((pc == -2 ? "-" : _tUIDCNTL[pc] "'")))
_conl(_dumparr(_tUIDCHRL[ps]) _ln())
} else {
_conl("-")
}
}
function _dumpval(v, n)
{
_dumpstr = _dumpstr (v = _ln(((n == 0 && n == "" ? "RET" : n)) ": " ((v == 0 && v == "" ? "-" : v "'"))))
return v
}
function _eXTFN(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_extfn 1.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _endpass(t)
{
_endpass_v0 = t
}
function _err(t, a, b)
{
a = BINMODE
b = ORS
BINMODE = "rw"
ORS = ""
print(t) > _SYS_STDERR
fflush(_SYS_STDERR)
BINMODE = a
ORS = b
return t
}
function _errnl(t)
{
return _err(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"])))
}
function _error(t, d, A)
{
if (_ERRLOG_EF) {
A["TYPE"] = "ERROR"
A["TEXT"] = t
_log(A, d)
}
}
function _exit(c)
{
exit c
}
function _export_data(t, i, A)
{
A["DATA"] = t
A["ID"] = i
_expout("_DATA: " _Zexparr(A) "\n")
}
function _expout(t, d, a, b)
{
a = BINMODE
b = ORS
BINMODE = "rw"
ORS = ""
print(t) > ((d ? d : d = _errlog_file))
fflush(d)
BINMODE = a
ORS = b
}
function _extfn_init()
{
_formatstrs_init()
_formatstrd_init()
_formatrexp_init()
_unformatstr_init()
_mac_init()
}
function _faccl_i0(A, t, p, P, f, r)
{
f = r = ""
if (isarray(A)) {
while (f = A[f]) {
r = (@f(t, p, P)) r
}
}
return r
}
function _faccr_i0(A, t, p, P, f, r)
{
f = r = ""
if (isarray(A)) {
while (f = A[f]) {
r = r @f(t, p, P)
}
}
return r
}
function _fatal(t, d, A)
{
if (_ERRLOG_FF) {
A["TYPE"] = "FATAL"
A["TEXT"] = t
_log(A, d)
}
if (! d) {
exit
}
}
function _fbaccl(A, t, p, P)
{
return _faccl_i0(A["B"], t, p, P)
}
function _fbaccr(A, t, p, P)
{
return _faccr_i0(A["B"], t, p, P)
}
function _ffaccl(A, t, p, P)
{
return _faccl_i0(A["F"], t, p, P)
}
function _ffaccr(A, t, p, P)
{
return _faccr_i0(A["F"], t, p, P)
}
function _fframe(A, t, p)
{
return _fframe_i0(A, t, p, A[""])
}
function _fframe_i0(A, t, p, f)
{
return ((f ? (@f(t, p)) _fframe_i0(A, t, p, A[f]) : ""))
}
function _file(f)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return ((f in _FILEXT ? _FILEXT[f] : ""))
}
function _file_check(p)
{
if (1 || "AGENT" in _[p]) {
_tframe("_file_check_i0", p, p)
}
}
function _file_check_i0(p, pp, p1, p2, f, v)
{
if (_[p]["TYPE"] == "defile") {
f = _[p]["FILE"]
f = ((match(f, /^.:/) ? "" : _[_[pp]["AGENT"]][".Install Path"] "\\")) _[p]["FILE"]
if ("RQVERSION" in _[p]) {
v = _[p]["RQVERSION"]
} else {
v = _[pp][".Product Version"]
}
ERRNO = ""
if (_th1(_[p]["DATA"] = _rdfile(f), ERRNO)) {
delete _[p]["DATA"]
return _dllerr(p, "read file: " ERRNO, f)
}
if (v != "" && v != (_[p]["VERSION"] = _getfilever(f))) {
return _dllerr(p, " file version mismatch: ==`" _[p]["VERSION"] "'; !=`" v "'", f)
}
_creport(p, substr("OK: FILE DETECTED" ((v == "" ? "" : "(" v ")")) ": " f, 1, 122))
} else if (_[p]["TYPE"] == "defdir") {
if (_filexist(f = _[p]["DIR"])) {
_creport(p, substr("OK: DIR DETECTED: " f, 1, 112))
} else {
_dllerr(p, "directory " f " is not detected")
}
}
}
function _filed(f, dd, d)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
if (f in _FILEDIRFL) {
return _FILEDIR[f]
}
if (f in _FILEROOT) {
if (d = filegetdrvdir(_FILEROOT[f])) {
_FILEDIRFL[f]
}
return (_FILEDIR[f] = d _FILEDIR[f])
}
if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEDIR) {
return _FILEDIR[dd, f]
}
if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) {
return (_FILEDIR[dd, f] = d)
}
return d
}
function _filen(f)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return ((f in _FILENAM ? _FILENAM[f] : ""))
}
function _filene(f)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return (((f in _FILENAM ? _FILENAM[f] : "")) ((f in _FILEXT ? _FILEXT[f] : "")))
}
function _filenotexist(f, a)
{
if (f == "") {
return ""
}
if ((a = _filepath(f)) == "") {
ERRNO = "Filepath error `" f "'"
return ""
}
_cmd("if exist \"" a "\" exit 1 2>NUL")
if (_exitcode == 1) {
return (ERRNO = _NOP)
}
return a
}
function _filepath(f, dd)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return (filegetrootdir(f, dd) ((f in _FILENAM ? _FILENAM[f] : "")) ((f in _FILEXT ? _FILEXT[f] : "")))
}
function _filer(f, dd)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
if (f in _FILEROOT) {
return _FILEROOT[f]
}
if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) {
return _FILEROOT[dd, f]
}
return (_FILEROOT[dd, f] = fileri(dd))
}
function _filerd(f, dd)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return filegetrootdir(f, dd)
}
function _filerdn(f, dd)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
return ((f in _FILENAM ? filegetrootdir(f, dd) _FILENAM[f] : ""))
}
function _filerdne(f, dd)
{
if ((f = _filerdnehnd(f)) == "") {
return ""
}
if (f in _FILENAM) {
return (filegetrootdir(f, dd) _FILENAM[f] ((f in _FILEXT ? _FILEXT[f] : "")))
}
if (f in _FILEXT) {
return (filegetrootdir(f, dd) _FILEXT[f])
}
return ""
}
function _filerdnehnd(st, c, r, d, n, A)
{
if (st) {
if ((c = toupper(st)) in _FILECACHE) {
FLENGTH = length(st)
return _FILECACHE[c]
}
if (match(st, /^[ \t]*\\[ \t]*\\/)) {
if (match(substr(st, (FLENGTH = RLENGTH) + 1), /^[ \t]*([0-9A-Za-z\-]+)[ \t]*(\\[ \t]*([A-Za-z])[ \t]*\$[ \t]*)?(\\[ \t]*([0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+[ \t]*)?(([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)) {
FLENGTH = FLENGTH + RLENGTH
d = ((A[3] ? "\\" A[3] "$" : "")) A[4]
gsub(/[ \t]*\\[ \t]*/, "\\", d)
if ((st = toupper((r = "\\\\" A[1]) d (n = A[8]))) in _FILECACHE) {
return (_FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st])
}
_FILEDIR[c = _FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d
_FILEDIRFL[c]
_FILEROOT[c] = r
} else {
FLENGTH = 0
_filepath_err = "UNC"
return ""
}
} else {
match(st, /^(([ \t]*\.[ \t]*\\[ \t]*)|(([ \t]*([A-Za-z])[ \t]*(\:)[ \t]*)?([ \t]*(\\)[ \t]*)?))([ \t]*(([ \t]*[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+)[ \t]*)?([ \t]*([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)
if (! (FLENGTH = RLENGTH)) {
return ""
}
d = A[8] A[10]
gsub(/[ \t]*\\[ \t]*/, "\\", d)
if ((st = toupper((r = A[5] A[6]) d (n = A[14]))) in _FILECACHE) {
return (_FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st])
}
_FILEDIR[c = _FILECACHE[substr(c, 1, FLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d
if (A[8]) {
_FILEDIRFL[c]
}
if (r) {
_FILEROOT[c] = r
}
}
if (n) {
if (match(n, /\.[^\.]*$/)) {
_FILEXT[c] = substr(n, RSTART)
_FILENAM[c] = substr(n, 1, RSTART - 1)
} else {
_FILENAM[c] = n
}
}
return c
}
return ""
}
function _filexist(f, a)
{
if (f == "") {
return ""
}
if ((a = _filepath(f)) == "") {
ERRNO = "Filepath error `" f "'"
return ""
}
_cmd("if exist \"" a "\" exit 1 2>NUL")
if (_exitcode == 1) {
return a
}
ERRNO = "File not found `" f "'"
return _NOP
}
function _fn(f, p0, p1, p2)
{
if (f in FUNCTAB) {
return @f(p0, p1, p2)
}
}
function _foreach(A, f, r, p0, p1, p2, i, p)
{
if (isarray(A)) {
_TMP0[p = _n()]["."] = 1
_foreach_i0(A, f, _TMP0[p], p0, p1, p2)
return _th0(_retarr(_TMP0[p]), _tdel(p))
}
if (_isptr(A)) {
_TMP0[p = _n()][_ARRLEN] = 1
_tframe4("_foreach_i1" ((r ? "~" r : "")), A, f, _TMP0[p], p0, p1)
return _th0(_retarr(_TMP0[p]), _tdel(p))
}
}
function _foreach_i0(A, f, D, p0, p1, p2)
{
for (i in A) {
if (isarray(A[i])) {
_foreach_i0(A[i], f, D, p0, p1, p2)
} else {
_gen(D, @f(A[i], p0, p1, p2))
}
}
}
function _foreach_i1(p, f, D, p0, p1, p2)
{
_gen(D, @f(p, p0, p1, p2))
}
function _formatrexp(t)
{
_formatstrq0 = split(t, _FORMATSTRA, /[\/\x00-\x1F\x80-\xFF]/, _FORMATSTRB)
_formatstrs0 = ""
for (t = 1; t < _formatstrq0; t++) {
_formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATREXPESC[_FORMATSTRB[t]]
}
return (_formatstrs0 _FORMATSTRA[t])
}
function _formatrexp_init()
{
_defescarr(_FORMATREXPESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC)
_defescarr(_FORMATREXPESC, "\\/", "\\")
_FORMATREXPESC["\t"] = "\\t"
}
function _formatstrd(t)
{
_formatstrq0 = split(t, _FORMATSTRA, /["\x00-\x1F\x80-\xFF]/, _FORMATSTRB)
_formatstrs0 = ""
for (t = 1; t < _formatstrq0; t++) {
_formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATSTRDESC[_FORMATSTRB[t]]
}
return (_formatstrs0 _FORMATSTRA[t])
}
function _formatstrd_init()
{
_defescarr(_FORMATSTRDESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC)
_defescarr(_FORMATSTRDESC, "[\\\\\"]", "\\")
_FORMATSTRDESC["\t"] = "\\t"
}
function _formatstrs(t)
{
_formatstrq0 = split(t, _FORMATSTRA, /['\x00-\x1F\x80-\xFF]/, _FORMATSTRB)
_formatstrs0 = ""
for (t = 1; t < _formatstrq0; t++) {
_formatstrs0 = _formatstrs0 _FORMATSTRA[t] _FORMATSTRSESC[_FORMATSTRB[t]]
}
return (_formatstrs0 _FORMATSTRA[t])
}
function _formatstrs_init()
{
_defescarr(_FORMATSTRSESC, "[\\x00-\\x1F\\x80-\\xFF]", _QASC)
_defescarr(_FORMATSTRSESC, "[\\\\']", "\\")
_FORMATSTRSESC["\t"] = "\\t"
}
function _fpp(q, D, S)
{
_conl()
_conline(q)
_conl()
q = _patharr0(S, q)
_conl(_dumparr(S))
_conl()
return q
}
function _fthru(A, c, p, B)
{
return _fthru_i0(A, c, p, B, A[""])
}
function _fthru_i0(A, c, p, B, f)
{
return ((f ? @f(c, _fthru_i0(A, c, p, B, A[f]), B) : ""))
}
function _gen(D, t)
{
if (length(D[D[_ARRLEN]] = D[D["."]] t) > _datablock_length) {
D[++D[_ARRLEN]] = ""
}
}
function _gensubfn(t, r, f, p0, A)
{
if (match(t, r, A)) {
return (substr(t, 1, RSTART - 1) (@f(_th0(substr(t, RSTART, RLENGTH), t = substr(t, RSTART + RLENGTH)), A, p0)) _gensubfn(t, r, f, p0))
}
return t
}
function _get_errout(p)
{
return _tframe("_get_errout_i0", p)
}
function _get_errout_i0(p, t, n, a)
{
return ((p in _tLOG ? _get_errout_i1(p) _get_errout_i3(p) : ""))
}
function _get_errout_i1(p, t, n, a)
{
if (p in _tLOG) {
n = ""
if (_tLOG[p]["TYPE"]) {
n = _tLOG[p]["TYPE"] ": " _get_errout_i2(p)
if (match(_tLOG[p]["TEXT"], /\x1F/)) {
t = n
gsub(/[^\t]/, " ", t)
return (_ln(n substr(_tLOG[p]["TEXT"], 1, RSTART - 1)) _ln(t substr(_tLOG[p]["TEXT"], RSTART + 1)))
}
}
return _ln(n _tLOG[p]["TEXT"])
}
}
function _get_errout_i2(p)
{
return (("FILE" in _tLOG[p] ? _tLOG[p]["FILE"] (("LINE" in _tLOG[p] ? "(" _tLOG[p]["LINE"] ")" : "")) ": " : ""))
}
function _get_errout_i3(p, t, ts, cl, cp, cr, a, b)
{
if ("LSTR" in _tLOG[p]) {
t = _tLOG[p]["FULLSTR"]
ts = _tLOG[p]["TS"]
cp = "^"
if ("CSTR" in _tLOG[p]) {
cr = _tLOG[p]["CSTR"]
cl = _tLOG[p]["CLSTR"]
if ("CPSTR" in _tLOG[p]) {
cp = _tLOG[p]["CPSTR"]
}
}
cr = substr(cr, length(cl) + length(cp) + 1)
return (_ln(_tabtospc(t, ts)) _ln(_getchrln(" ", a = length(_tabtospc(_tLOG[p]["LSTR"], ts))) _getchrln("-", b = length(_tabtospc(cl, ts, a))) _getchrln("^", b = length(_tabtospc(cp, ts, a = a + b))) _getchrln("-", length(_tabtospc(cr, ts, a + b)))))
}
}
function _get_logout(p)
{
return _tframe("_get_logout_i0", p)
}
function _get_logout_i0(p, t, n, a)
{
if (p in _tLOG) {
n = (("DATE" in _tLOG[p] ? _tLOG[p]["DATE"] " " : "")) (("TIME" in _tLOG[p] ? _tLOG[p]["TIME"] " " : ""))
if (_tLOG[p]["TYPE"]) {
n = n _tLOG[p]["TYPE"] ": " (("FILE" in _tLOG[p] ? _tLOG[p]["FILE"] (("LINE" in _tLOG[p] ? "(" _tLOG[p]["LINE"] ")" : "")) ": " : ""))
if (match(_tLOG[p]["TEXT"], /\x1F/)) {
t = n
gsub(/[^\t]/, " ", t)
return (_ln(n substr(_tLOG[p]["TEXT"], 1, RSTART - 1)) _ln(t substr(_tLOG[p]["TEXT"], RSTART + 1)))
}
}
return _ln(n _tLOG[p]["TEXT"])
}
}
function _getchrln(s, w)
{
if (s == "") {
return
}
if (length(s) < w) {
if (s in _GETCHRLN) {
if (length(_getchrlnt0 = _GETCHRLN[s]) >= w) {
return substr(_getchrlnt0, 1, w)
}
} else {
_getchrlnt0 = s s
}
while (length(_getchrlnt0) < w) {
_getchrlnt0 = _getchrlnt0 _getchrlnt0
}
_GETCHRLN[s] = _getchrlnt0
return substr(_getchrlnt0, 1, w)
} else {
return substr(s, 1, w)
}
}
function _getdate()
{
return strftime("%F")
}
function _getfilepath(t, f, al, b, A)
{
ERRNO = ""
if (match(t, /^[ \t]*(("([^"]*)"[ \t]*)|([`']([^']*)'[ \t]*)|(([^ \t]+)[ \t]*))/, A)) {
al = RLENGTH
f = A[3] A[5] A[7]
_conl("_getfilepath(" f ") (" al ")")
if (b = _filepath(f)) {
if (length(f) <= FLENGTH) {
FLENGTH = al
return b
}
ERRNO = "Filepath `" f "' error"
}
}
FLENGTH = 0
}
function _getfilever(f)
{
split(_cmd(_fileverpath " \"" f "\""), _GETFILEVERA0, /[ \t]+/)
if (_GETFILEVERA0[5]) {
return _GETFILEVERA0[5]
}
}
function _getime()
{
return strftime("%H:%M:%S")
}
function _getmpdir(f, dd)
{
if (! dd || ! (dd = _filerd(dd))) {
dd = _FILEIO_TMPRD
}
if (f = (f ? _filerd(f, dd) : _filerd("_" ++_FILEIO_TMPCNTR "\\", dd))) {
_FILEIO_RDTMP[toupper(f)]
}
return f
}
function _getmpfile(f, dd)
{
if (! dd || ! (dd = _filerd(dd))) {
dd = _FILEIO_TMPRD
}
if (f = _filerdne((_filene(f) ? f : f "_" ++_FILEIO_TMPCNTR), dd)) {
_FILEIO_RDNETMP[toupper(f)]
}
return f
}
function _getperf(o, t, a)
{
(o == "" ? ++_getperf_opcurr : _getperf_opcurr = o)
if ((a = _getsecond()) != _getperf_last) {
_getperf_opsec = (_getperf_opcurr - _getperf_opstart) / ((_getperf_last = a) - _getperf_start)
return @_getperf_fn(o, t, a)
}
return 1
}
function _getperf_(o, t, a)
{
if (a >= _getperf_end) {
return 0
}
if (_getperf_opsecp != _getperf_opsec) {
_constat(((_constatstr == _getperf_stat ? _getperf_statstr : _getperf_statstr = _constatstr)) t " [TIME=" (a - _getperf_start) " sec(" (_getperf_opsecp = _getperf_opsec) " ops/sec)]")
_getperf_stat = _constatstr
}
return 1
}
function _getperf_noe(o, t, a)
{
if (_getperf_opsecp != _getperf_opsec) {
_constat(((_constatstr == _getperf_stat ? _getperf_statstr : _getperf_statstr = _constatstr)) t " [TIME=" (a - _getperf_start) " sec(" (_getperf_opsecp = _getperf_opsec) " ops/sec)]")
_getperf_stat = _constatstr
}
return 1
}
function _getperf_noenot(o, t, a)
{
return 1
}
function _getperf_not(o, t, a)
{
if (a < _getperf_end) {
return 1
}
}
function _getreg_i1(D, r, R, a, i, il, ir, rc, B)
{
a = IGNORECASE
IGNORECASE = 1
r = "^" _torexp(r)
rc = 0
zs = ""
for (i in R) {
if (match(i, r, B)) {
il = B[_torexp_pfxcntr]
ir = gensub(/....$/, "", 1, substr(i, 1 + B[_torexp_pfxcntr, "length"]))
if (! gsub(/^\\/, "", ir) && match(il, /[^\\]+$/)) {
ir = substr(il, RSTART) ir
}
D[ir] = R[i]
rc++
}
}
IGNORECASE = a
if (rc > 0) {
return rc
}
}
function _getsecond()
{
return systime()
}
function _getsecondsync(a, c, b, c2)
{
a = systime()
while (a == systime()) {
++c
}
return (a + 1)
}
function _getuid(p)
{
if (p in _UIDOBL) {
for (_tptr in _UIDOBLV[_getuida0 = _UIDOBL[p]]) {
delete _UIDOBLV[_getuida0][_tptr]
_CLASSPTR[_tptr] = p
return _tptr
}
}
_CLASSPTR[_tptr = _UIDPFX[p] _getuid_i0(_UIDCNT[p], _UIDCHRL[_tptr = _UIDCHR[p]], _UIDCHRH[_tptr]) _UIDSFX[p]] = p
return _tptr
}
function _getuid_i0(p, UL, UH)
{
if ("" == (_tptr = UL[_UIDCNTL[p]])) {
for (_tptr in UH) {
delete UH[_tptr]
return ((_UIDCNTH[p] = _tptr) (_UIDCNTL[p] = UL[""]))
}
_fatal("out of UID")
}
return (_UIDCNTH[p] (_UIDCNTL[p] = _tptr))
}
function _handle8494(t)
{
return gensub(/(.)/, ".\\1", "G", t)
}
function _hexnum(n, l)
{
if (l + 0 < 1) {
l = 2
}
return sprintf("%." ((l + 0 < 1 ? 2 : l)) "X", n)
}
function _igetperf(t, s, o)
{
if (t == 0 && t == "" && s == 0 && s == "" && o == 0 && o == "") {
if (_getperf_fn !~ /not$/ && _constatstr == _getperf_stat) {
_constat(_getperf_statstr)
}
_getperf_fn = "_nop"
return ("[TIME=" (_getperf_last - _getperf_start) " sec(" _getperf_opsec " ops/sec)]")
}
_conl("initiate _getperf")
_getperf_opstart = _getperf_opcurr = o + 0
_getperf_opsec = _getperf_opsecp = _getperf_stat = _getperf_statstr = ""
_getperf_end = t + (_getperf_start = _getperf_last = _getsecondsync())
_getperf_fn = ((t + 0 > 0 ? "_getperf_" : "_getperf_noe")) ((s ? "" : "not"))
return _getperf_start
}
function _import_data(t, p, p2, a)
{
if (match(t, /^_DATA: /)) {
_tDATA[a = _wLCHLD(p, _N())][""]
delete _tDATA[a][""]
_Zimparr(_tDATA[a], substr(t, 8))
_conl("DATA: `" _tDATA[a]["ID"] "':`" _tDATA[a]["DATA"] "'")
return ""
}
return t
}
function _info(t, d, A)
{
if (_ERRLOG_IF) {
A["TYPE"] = "INFO"
A["TEXT"] = t
_log(A, d)
}
}
function _ini(p, cs, dptr, pfx, sfx, hstr, lstr)
{
return _inituid(p, cs, dptr, pfx, sfx, hstr, lstr, A)
}
function _initfilever()
{
_fileverpath = "\\\\CPU\\eGAWK\\LIB\\_filever\\_filever.exe"
}
function _initrdreg()
{
_RDREGTYPE["SZ"] = "STR"
_RDREGTYPE["DWORD"] = "W32"
_RDREGTYPE["QWORD"] = "W64"
_RDREGTYPE["BINARY"] = "BIN"
_RDREGTYPE["EXPAND_SZ"] = "XSZ"
_RDREGTYPE["MULTI_SZ"] = "MSZ"
_RDrdregfld = _rdregkey = 0
}
function _initregpath0()
{
_REGPATH0REGDIR[""] = "HKEY_LOCAL_MACHINE"
_REGPATH0REGDIR["HKLM"] = "HKEY_LOCAL_MACHINE"
_REGPATH0REGDIR["HKEY_LOCAL_MACHINE"] = "HKEY_LOCAL_MACHINE"
_REGPATH0REGDIR["HKCR"] = "HKEY_CLASSES_ROOT"
_REGPATH0REGDIR["HKEY_CLASSES_ROOT"] = "HKEY_CLASSES_ROOT"
_REGPATH0REGDIR["HKCU"] = "HKEY_CURRENT_USER"
_REGPATH0REGDIR["HKEY_CURRENT_USER"] = "HKEY_CURRENT_USER"
_REGPATH0REGDIR["HKU"] = "HKEY_USERS"
_REGPATH0REGDIR["HKEY_USERS"] = "HKEY_USERS"
_REGPATH0REGDIR["HKCC"] = "HKEY_CURRENT_CONFIG"
_REGPATH0REGDIR["HKEY_CURRENT_CONFIG"] = "HKEY_CURRENT_CONFIG"
_REGPATH0REGDIR["HKPD"] = "HKEY_PERFORMANCE_DATA"
_REGPATH0REGDIR["HKEY_PERFORMANCE_DATA"] = "HKEY_PERFORMANCE_DATA"
}
function _initshare()
{
_sharextool = "\\\\CPU\\eGAWK\\LIB\\_share\\_share.exe"
}
function _initspecialuid()
{
_NOINDEX = _getuid()
_LEN = _getuid()
_PTR = _getuid()
_NAME = _getuid()
_TYPE = _getuid()
_FORMAT = _getuid()
}
function _initsys()
{
}
function _inituid(p, cs, dptr, pfx, sfx, hstr, lstr, A)
{
if (cs == 0 && cs == "") {
cs = p
p = _getuid()
}
_conl()
_conl()
_conl(cs)
if (match(cs, /^(([^:]*):)?(([^'\xB4]*\xB4.)*[^'\xB4]*)[']/, A)) {
pfx = A[3]
dptr = A[2]
}
if (match(cs = substr(cs, 1 + RLENGTH), /'(([^'\xB4]*\xB4.)*[^'\xB4]*)$/, A)) {
sfx = A[1]
cs = substr(cs, 1, RSTART - 1)
}
if (match(cs, /^(([`\^])(.*))/, A)) {
if (A[2] == "`") {
hstr = A[3] "~"
lstr = ""
} else {
lstr = A[3] "+"
hstr = ""
}
} else if (match(cs, /^(([^'\xB4\|]*\xB4.)*[^'\xB4\|]*)(\|(.*))?/, A)) {
hstr = A[1]
lstr = A[4]
} else {
ERRNO = "_inituid(): bad parameters"
return
}
_conl(dptr ":" pfx "'" hstr "|" lstr "'" sfx)
return _cfguid(p, dptr, pfx, sfx, hstr, lstr)
}
function _inituidefault(h, l, H, L)
{
_classys = ""
delete _UIDOBLV[_UIDOBLV[_UIDOBL[_classys] = _classys][""] = _classys][""]
_UIDPFX[_classys]
_UIDSFX[_classys]
_UIDCNT[_classys] = _UIDCHR[_classys] = _CLASSPTR[_classys] = _classys
h = "AB"
l = h "01"
_splitstr(H, h)
_splitstr(L, l)
delete _UIDCHRH[_UIDCHRH[_classys][""] = _classys][""]
delete _UIDCHRL[_UIDCHRL[_classys][""] = _classys][""]
_UIDCNTH[_classys]
_cfguidh(_classys, H, L)
_UIDCNTL[_classys] = _cfguidl(_classys, L, L)
_CLASSFN[_classys]["del"] = "_tobjDEL"
_CLASSFN[_classys]["new"] = "_tobjNEW"
_drawuid(_classys)
_initspecialuid()
}
function _ins(S, sf, D, df)
{
if (sf in S) {
if (isarray(S[sf])) {
if (df in D) {
if (isarray(D[df])) {
return _extarr(D[df], S[sf])
}
delete D[df]
}
D[df][""]
delete D[df][""]
return _extarr(D[df], S[sf])
} else {
if (isarray(D[df])) {
delete D[df]
}
D[df] = S[sf] D[df]
}
}
}
function _insf(A, f)
{
A["F"][""] = A["B"][A["F"][f] = A["F"][""]] = f
}
function _insframe(A, f)
{
A[f] = A[""]
A[""] = f
}
function _inspass(A, f)
{
A[f] = A[""]
A[""] = f
}
function _isptr(p)
{
if (isarray(p)) {
is = _NOP
it = "A"
return 0
}
is = p
if (p == 0 && p == "") {
it = "-"
return 0
}
if (p in _CLASSPTR) {
return (it = "P")
}
it = "S"
return 0
}
function _istr(p)
{
if (isarray(p)) {
is = _NOP
it = "A"
return 0
}
is = p
if (p == 0 && p == "") {
it = "-"
return 0
}
return (it = (p == "" ? "s" : "S"))
}
function _lengthsort(i1, v1, i2, v2)
{
return ((length(i1) < length(i2) ? -1 : (length(i1) > length(i2) ? 1 : (i1 < i2 ? -1 : 1))))
}
function _lib_APPLY()
{
return _ffaccr(_LIBAPI, "_lib_APPLY")
}
function _lib_BEGIN(A)
{
return _ffaccr(_LIBAPI, "_lib_BEGIN", "", A)
}
function _lib_CMDLN(t)
{
return _pass(_LIBAPI["F"], "_lib_CMDLN", t)
}
function _lib_END(A)
{
return _ffaccr(_LIBAPI, "_lib_END", "", A)
}
function _lib_HELP()
{
return _fbaccr(_LIBAPI, "_lib_HELP")
}
function _lib_NAMEVER()
{
return _fbaccr(_LIBAPI, "_lib_NAMEVER")
}
function _ln(t)
{
return ((t ~ /\x0A$/ ? t : t _CHR["EOL"]))
}
function _log(A, p, a, B)
{
if (isarray(A)) {
A["TIME"] = _getime()
A["DATE"] = _getdate()
if (p) {
_tLOG[p = _wLCHLD(p, _N())][""]
delete _tLOG[p][""]
_movarr(_tLOG[p], A)
return p
}
_expout("_ERRLOG: " _Zexparr(A) "\n")
} else {
B["TEXT"] = A
B["TYPE"] = ""
return _log(B, p)
}
}
function _lspctab(t, ts, l, l1, l2, A)
{
while (match(t, /^(\t*)( *)((\t*)(.*))$/, A)) {
if (A[1, "length"] >= l) {
return substr(t, l + 1)
}
if (A[2]) {
if ((l1 = int(A[2, "length"] / ts)) >= (l2 = l - A[1, "length"])) {
return (substr(A[2], l2 * ts + 1) A[3])
}
if (! A[4]) {
return A[5]
}
t = A[1] _getchrln("\t", l1) A[3]
} else {
return t
}
}
}
function _mac_init()
{
_MACPFX["\204"] = "_macpfx84"
_MACPFX[""] = "_mpupfxsubret"
_MACPFX84SFX["\204"] = "_macpfx84"
_MACPFX84SFX["\224"] = "_macsfx94"
_MACPFX84SFX[""] = "_mpusfxsubret"
_VLDMAXSTRING = 1000000
}
function _macpfx84(F, D, C, p1, p2, p3)
{
return _mpusub(_MACPFX84SFX, D, C, D[_mpuptr++], p1, p2, p3)
}
function _macsfx94(F, D, C, p1, p2, p3)
{
return _mpuretsub(D, _handle8494(_mpuacc))
}
function _movarr(D, S)
{
delete D
D[""]
delete D[""]
_addarr(D, S)
}
function _mpu(t, F, p1, p2, p3, D, C)
{
if (patsplit(t, C, /[\x84\x93\x94]/, D) > 0) {
_conline("CODE")
_conl()
_conl(_dumparr(C))
_conline("DATA")
_conl()
_conl(_dumparr(D))
_mpuptr = 0
_mpucc0 = ""
_mpusub(F, D, C, D[_mpuptr++], p1, p2, p3)
return _mpuacc
}
return t
}
function _mpudefaulthnd(F, D, C, p1, p2, p3)
{
_mpuretsub(D, _mpucc0)
}
function _mpupfxsubret(F, D, C, p1, p2, p3)
{
return 1
}
function _mpuretsub(D, t)
{
_mpuacc = D[_mpuptr++]
_accmpu(D, t)
return 1
}
function _mpusfxsubret(F, D, C, p1, p2, p3)
{
return -1
}
function _mpusub(F, D, C, d, p1, p2, p3, q)
{
q = D[_ARRLEN]
if (_VLDMAXSTRING < length(d)) {
D[--D[_ARRLEN]] = d
_mpuacc = ""
} else {
_mpuacc = d
}
d = _mpucc0
_conl("_mpusub enter: in `" _mpuacc "' / _mpuptr=" _mpuptr "'")
do {
if ((_mpucc0 = C[_mpuptr]) in F) {
if (isarray(F[_mpucc0])) {
_mpufn0 = F[_mpucc0]
}
_conl("FN: `" _mpucc0 "' > CALL: `" _mpufn0 "' : _mpuacc=" _mpuacc "'")
} else {
_mpufn0 = "_mpudefaulthnd"
}
} while (! _accmpu(D, _mpuacc, @_mpufn0(F, D, C, p1, p2, p3)))
if (_mpufn0 == -1) {
_conl("WARNING: unclosed expression: `" d _mpuacc "'")
_mpuacc = d _mpuacc
}
_retarrm(D, q, "", (_mpufn0 == -1 ? _th0(d, _mpusubwrng("WARNING: unclosed expression", d _mpuacc)) : ""))
_conl("mpusub exit: _mpuacc: `" _mpuacc "'")
}
function _n(F, v, p)
{
for (p in _UIDSDEL) {
delete _UIDSDEL[p]
delete _ptr[p]
delete _tPREV[p]
delete _tPARENT[p]
delete _tNEXT[p]
delete _tFCHLD[p]
delete _tQCHLD[p]
delete _tLCHLD[p]
delete _TMP0[p]
delete _TMP1[p]
delete _tLINK[p]
delete _tCLASS[p]
return _nN_i0(p, F, v)
}
for (p in _UIDS) {
delete _UIDS[p]
return _nN_i0(p, F, v)
}
return _nN_i0(_tgenuid(), F, v)
}
function _nN_i0(p, F, v)
{
_[p][""]
delete _[p][""]
_ptr[p][""]
delete _ptr[p][""]
_TMP0[p][_ARRLEN] = _TMP1[p][_ARRLEN] = 0
if (isarray(F)) {
delete F[p]
if (isarray(v)) {
F[p][""]
delete F[p][""]
_copyarr(F[p], v)
} else if (! (v == 0 && v == "")) {
F[p] = v
}
} else if (! (F == 0 && F == "")) {
if (isarray(v)) {
_[p][F][""]
delete _[p][F][""]
_copyarr(_[p][F], v)
} else if (v == 0 && v == "") {
_mpu(F, p)
} else {
_[p][F] = v
}
}
return p
}
function _newclrdir(f)
{
if ((f = _filerd(f)) == "") {
return
}
_cmd("rd " f " /S /Q 2>NUL")
_cmd("md " f " 2>NUL")
_WFILEROOTDIR[f]
return f
}
function _newdir(f)
{
if ((f = _filerd(f)) == "") {
return
}
if (! (f in _WFILEROOTDIR)) {
_cmd("md " f " 2>NUL")
_WFILEROOTDIR[f]
}
return f
}
function _nop(p0, p1, p2, p3)
{
}
function _nretarr(A, i, v, r, q)
{
if ((i = (i == "" ? 1 : i + 0)) <= (q = A[_ARRLEN])) {
if (i <= (r = q - 16)) {
_ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i]
while (i < r) {
_ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i]
}
_ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i)
return
}
_ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i)
return
}
_ARRSTR = v
return
}
function _nretarrd(A, i, v, r, q)
{
if ((i = (i == "" ? 1 : i + 0)) <= (q = A[_ARRLEN])) {
if (i <= (r = q - 16)) {
_ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i]
while (i < r) {
_ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i]
}
_ARRSTR = _ARRSTR A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i)
} else {
_ARRSTR = A[i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] v _retarr_i0(A, q, i)
}
} else {
_ARRSTR = v
}
delete A
A[""]
delete A[""]
}
function _out(t, a, b)
{
a = BINMODE
b = ORS
BINMODE = "rw"
ORS = ""
print(t) > _SYS_STDOUT
fflush(_SYS_STDOUT)
BINMODE = a
ORS = b
return t
}
function _outnl(t)
{
return _out(t ((t ~ /\x0A$/ ? "" : _CHR["EOL"])))
}
function _p1(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s1, p1, p2, p3, p4, p5, p6, p7)
}
function _p2(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s2, p1, p2, p3, p4, p5, p6, p7)
}
function _p3(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s3, p1, p2, p3, p4, p5, p6, p7)
}
function _p4(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s4, p1, p2, p3, p4, p5, p6, p7)
}
function _p5(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s5, p1, p2, p3, p4, p5, p6, p7)
}
function _p6(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s6, p1, p2, p3, p4, p5, p6, p7)
}
function _p7(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s7, p1, p2, p3, p4, p5, p6, p7)
}
function _p8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8, s8, p1, p2, p3, p4, p5, p6, p7)
}
function _pass(A, f, t, p2, i, a)
{
a = _endpass_v0
_endpass_v0 = ""
i = 1
while (t && i) {
i = ""
while ((i = A[i]) && t == (t = @i(f, t, p2))) {
}
}
if (i && _endpass_v0) {
A["!"] = 1
t = _endpass_v0
} else {
delete A["!"]
}
_endpass_v0 = a
return t
}
function _patharr0(D, q, i, h, A, B)
{
delete D
if (0 < (q = split(gensub(/\\/, "/", "G", gensub(/ *([:$\\\/]) */, "\\1", "G", gensub(/(^[ \t]+)|([ \t]+$)/, "", "G", q))), A, /\/+/, B))) {
if (2 > (h = length(B[1]))) {
D["type"] = "FILE"
A[1] = _patharr0_i0(A[1], D, "drive")
return _patharr0_i1(D, A, 1, q)
}
i = gensub(/ *([\.\?]) */, "\\1", "G", A[2])
IGNORECASE = 1
match(A[1], /^((https?)|(ftp)):$/)
IGNORECASE = 0
if (RLENGTH > 0) {
D["type"] = toupper(substr(A[1], 1, RLENGTH - 1))
_patharr0_i0(i, D, "site", "port")
} else if (A[1] == "") {
D["type"] = "UNC"
if (h > 2) {
D["host"]
A[2] = _patharr0_i0(A[2], D, "drive", "", "FILE")
return _patharr0_i1(D, A, 2, q)
}
if (i == "") {
return 1
}
D["host"] = i
A[3] = _patharr0_i0(A[3], D, "drive", "", "FILE")
} else {
D["type"] = "FILE"
A[1] = _patharr0_i0(A[1], D, "drive")
return _patharr0_i1(D, A, 1, q)
}
return _patharr0_i1(D, A, 3, q)
}
}
function _patharr0_i0(t, D, l, r, d, i)
{
if (i = index(t, ":")) {
if (d) {
D["type"] = d
}
if (i > 1) {
D[l] = substr(t, 1, i - 1)
}
if ((t = substr(t, i + 1)) && r) {
D[r] = t
}
return t
} else if (t && r) {
D[l] = t
}
return t
}
function _patharr0_i1(D, A, i, q, t, c)
{
if (D["type"] == "UNC") {
if (t = A[i++]) {
D[0] = (D["share"] = D[++c] = t) "/"
} else {
return 1
}
}
while (i < q) {
D[0] = D[0] (D[++c] = A[i++]) "/"
}
if (i == q) {
if (match(t = A[i], /\.[^\.]*$/)) {
if (RSTART > 1) {
D["name"] = substr(t, 1, RSTART - 1)
}
D["ext"] = substr(t, RSTART, RLENGTH)
} else if (t != "") {
D["name"] = t
}
}
return 1
}
function _pmap(m, s1, s2, s3, s4, s5, s6, s7, s8)
{
if (match(m, /^([^\(]+)\(([^\)]*)\)$/, _QMAP)) {
_qparamf1 = _QMAP[1]
_QMAP[0] = "r" (_qparamc1 = split(_QMAP[2], _QMAP, ""))
_qparamf0 = "_p" _QMAP[_qparamc1--]
return @_qparamf0(s1, s2, s3, s4, s5, s6, s7, s8)
}
}
function _pr0(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1()
}
function _pr1(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1)
}
function _pr2(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2)
}
function _pr3(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3)
}
function _pr4(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3, p4)
}
function _pr5(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3, p4, p5)
}
function _pr6(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3, p4, p5, p6)
}
function _pr7(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3, p4, p5, p6, p7)
}
function _pr8(s1, s2, s3, s4, s5, s6, s7, s8, p1, p2, p3, p4, p5, p6, p7, p8)
{
return @_qparamf1(p1, p2, p3, p4, p5, p6, p7, p8)
}
function _printarr(A, t, lv, r, a)
{
a = PROCINFO["sorted_in"]
PROCINFO["sorted_in"] = "_lengthsort"
_printarrexp = (r ? r : "")
if (isarray(A)) {
delete _DUMPARR
_dumparrc = _dumparrd = ""
_printarr_i1(A, lv = ((lv == "" ? 16 : (lv == 0 || lv + 0 != 0 ? lv : (lv == "-*" ? -3 : (lv ~ /^\+?\*$/ ? 3 : 16))))) + 0, (lv < 0 ? -1 : 1), 0, _tabtospc(t))
PROCINFO["sorted_in"] = a
return _retarrd(_DUMPARR, _dumparrd, _dumparrd = "")
}
}
function _printarr_i1(A, lv, ls, ln, t, t2, i, a, f)
{
t2 = _getchrln(" ", length(t))
if (ln == lv) {
if (ls > 0) {
for (i in A) {
++a
}
} else {
for (i in A) {
(isarray(A[i]) ? ++a : "")
}
}
if (length(_dumparrd = _dumparrd t ((a > 0 ? " ... (x" a ")" : "")) _CHR["EOL"]) > 262144) {
_conl(_dumparrd)
_dumparrd = ""
}
return
}
if (ls >= 0) {
for (i in A) {
if (! _printarrexp || i ~ _printarrexp) {
if (! isarray(A[i])) {
if (length(_dumparrd = _dumparrd ((f ? t2 : t _nop(f = 1))) "[" i "]=" A[i] "'" _CHR["EOL"]) > 262144) {
_conl(_dumparrd)
_dumparrd = ""
}
}
}
}
}
for (i in A) {
if (isarray(A[i])) {
if (! _printarrexp || i ~ _printarrexp) {
_printarr_i1(A[i], lv, ls, ln + ls, _th0((f ? t2 : t), f = 1) "[" i "]")
}
}
}
if (! f) {
if (length(_dumparrd = _dumparrd t _CHR["EOL"]) > 262144) {
_conl(_dumparrd)
_dumparrd = ""
}
}
}
function _qparam(qm, p0, p1, p2, p3, p4, p5, p6, p7)
{
if (qm == qm + 0 && qm > 0) {
_qparamim = substr(" ", 1, qm)
} else if (qm != "") {
_qparamim = qm
} else {
_qparamim = " "
}
_qparamask = ""
return _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7)
}
function _qparam_i0(p0, p1, p2, p3, p4, p5, p6, p7)
{
_qparama0 = substr(_qparamim, 1, 1)
_qparamim = substr(_qparamim, 2)
switch (_qparama0) {
case "":
gsub(/ +$/, "", _qparamask)
return length(_qparamask)
default:
if (isarray(p0)) {
_qparama0 = "A"
} else if (p0 == "" && p0 == 0) {
_qparama0 = " "
} else if (_isptr(p0)) {
_qparama0 = "P"
} else {
_qparama0 = "S"
}
case ".":
_qparamask = _qparamask _qparama0
return _qparam_i0(p1, p2, p3, p4, p5, p6, p7)
}
}
function _qstr(t, c, A, B)
{
c = ""
for (t = split(t, A, /[\x00-\x1F\\"]/, B); t >= 0; t--) {
c = _QSTR[B[t]] A[t + 1] c
}
return c
}
function _qstrq(t)
{
gsub(/\\/, "\\\\", t)
gsub(/"/, "\\\"", t)
return t
}
function _rEG(c, t, P, a, A)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_reg 0.001")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _rFBRO(p)
{
if (p) {
if (p in _tPARENT) {
return _tFCHLD[_tPARENT[p]]
}
while (p in _tPREV) {
p = _tPREV[p]
}
return p
}
return p
}
function _rFCHLD(p)
{
if (p && p in _tFCHLD) {
return _tFCHLD[p]
}
return ""
}
function _rLBRO(p)
{
if (p) {
if (p in _tPARENT) {
return _tLCHLD[_tPARENT[p]]
}
while (p in _tNEXT) {
p = _tNEXT[p]
}
return p
}
return p
}
function _rLCHLD(p)
{
if (p && p in _tLCHLD) {
return _tLCHLD[p]
}
return ""
}
function _rLINK(p)
{
return ((p in _tLINK ? _tLINK[p] : ""))
}
function _rNEXT(p)
{
if (p && p in _tNEXT) {
return _tNEXT[p]
}
return ""
}
function _rPARENT(p)
{
if (p && p in _tPARENT) {
return _tPARENT[p]
}
return ""
}
function _rPREV(p)
{
if (p && p in _tPREV) {
return _tPREV[p]
}
return ""
}
function _rQBRO(p, c, p1)
{
if (p) {
if (p in _tPARENT) {
return _tQCHLD[_tPARENT[p]]
}
c = 1
p1 = p
while (p1 in _tPREV) {
c++
p1 = _tPREV[p1]
}
while (p in _tNEXT) {
c++
p = _tNEXT[p]
}
return c
}
return p
}
function _rQCHLD(p)
{
if (p && p in _tQCHLD) {
return _tQCHLD[p]
}
return ""
}
function _rSQFIRST(g, p, A)
{
if (isarray(A)) {
return _rSQFIRSTA(g, p, A)
}
_SQTOPTR[g] = p
_SQSTACK[g][0] = 0
return _rsqgetptr(g, p)
}
function _rSQFIRSTA(g, p, A)
{
_SQTOPTR[g] = p
_SQSTACK[g][0] = 0
if ((p = _rsqgetptr(g, p)) in A) {
return p
}
return _rSQNEXTA(g, p, A)
}
function _rSQNEXT(g, p, A)
{
if (isarray(A)) {
return _rSQNEXTA(g, p, A)
}
return _rsqnext_i0(g, p)
}
function _rSQNEXTA(g, p, A)
{
if (p == _SQTOPTR[g]) {
if (_SQSTACK[g][0] > 0) {
_SQTOPTR[g] = _SQSTACK[g][_SQSTACK[g][0]--]
return _rSQNEXTA(g, _SQSTACK[g][_SQSTACK[g][0]--], A)
}
return
}
while (p in _tNEXT) {
if ((p = _rsqgetptr(g, _tNEXT[p])) in A) {
return p
}
}
return ((p in _tPARENT ? _rSQNEXTA(g, _tPARENT[p], A) : ""))
}
function _rconl(t)
{
_rprt = _rprt _ln(t)
}
function _rconline(t)
{
_rprt = _rprt _ln((t = " " t " ") _getchrln("_", _CON_WIDTH - length(t) - 1))
}
function _rd_shortcut(D, f)
{
if ((_shrtcutf0 = _filepath(f)) && _shortcut_nerr(_shrtcuta0 = _cmd(_shortcut_fpath " /A:Q /F:\"" _shrtcutf0 "\" 2>&1"), _shrtcutf0)) {
ERRNO = ""
split(_shrtcuta0, _SHRTCUTA0, /\x0D?\x0A/)
for (_shrtcuta0 in _SHRTCUTA0) {
for (f in _SHORTCUTRSTRUC) {
if (match(_SHRTCUTA0[_shrtcuta0], "^" f)) {
D[_SHORTCUTRSTRUC[f]] = substr(_SHRTCUTA0[_shrtcuta0], 1 + RLENGTH)
}
}
}
}
return ((ERRNO ? ERRNO = "read shortcut: " ERRNO : _NOP))
}
function _rdfile(f, i, A)
{
if ((f = _filerdne(f)) == "" || _filene(f) == "") {
ERRNO = "Filename error"
return
}
_fio_cmda = RS
RS = ".{1,}"
_fio_cmdb = BINMODE
BINMODE = "rw"
ERRNO = RT = _NUL
getline RS < f
BINMODE = _fio_cmdb
RS = _fio_cmda
if (ERRNO == "") {
close(f)
}
if (ERRNO == "") {
return RT
}
return (RT = _NOP)
}
function _rdreg(D, p)
{
_rdregp0 = "reg query \"" p "\" /S /reg:64 2>NUL"
_rdregfld = _rdregkey = 0
_rdregq0 = split(gensub(/[\x0D?\x0A]{2,}/, _CHR["EOL"], "G", _cmd(_rdregp0)), _RDREGA0, /\x0D?\x0A/)
while (_rdregq0 > 0) {
_rdreg_i0(D)
}
return (_rdregfld + _rdregkey)
}
function _rdreg_i0(D, A)
{
while (_rdregq0 > 0) {
if (match(_rdregp0 = _RDREGA0[_rdregq0--], / (.*) REG_((SZ)|(DWORD)|(QWORD)|(BINARY)|(EXPAND_SZ)|(MULTI_SZ)) (.*)$/, A)) {
if (! _rdreg_i0(D)) {
++_rdregfld
D[_rdregp0 A[1] "." _RDREGTYPE[A[2]]] = A[9]
return
} else {
break
}
} else if (_rdregp0 ~ /^HK/) {
++_rdregkey
return D[_rdregp0 = _rdregp0 "\\"]
}
}
return 1
}
function _rdsafe(A, i, d)
{
if (i in A) {
return A[i]
}
return d
}
function _reg_check(p)
{
_tframe("_reg_check_i0", p, p)
}
function _reg_check_i0(p, pp, p1, p2)
{
if (_[p]["TYPE"] == "defreg") {
if (_[p]["REGPATH"] in _REG) {
if ("VALUE" in _[p]) {
if (_[p]["VALUE"] == _REG[_[p]["REGPATH"]]) {
_creport(p, substr("OK: REGENTRY MATCH(==" _[p]["VALUE"] "): " _[p]["REGPATH"], 1, 126))
} else {
_dllerr(p, substr("REGENTRY NOT MATCH(!=" _[p]["VALUE"] "): " _[p]["REGPATH"], 1, 126))
}
} else if (_VAR[_[p]["REGPATH"]] == _REG[_[p]["REGPATH"]]) {
_creport(p, substr("OK: REGPATH MATCH(==" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126))
} else {
_dllerr(p, substr("REGPATH NOT MATCH(!=" _VAR[_[p]["REGPATH"]] "): " _[p]["REGPATH"], 1, 126))
}
} else {
_dllerr(p, substr("REGPATH NOT FOUND: " _[p]["REGPATH"], 1, 126))
}
}
}
function _registryinit()
{
_registrytmpfile = _getmpfile()
}
function _regpath0(D, i, s, q, S)
{
if (i = _patharr0(S, i)) {
if ("name" in S) {
D["name"] = S["name"]
}
if ("ext" in S) {
D["ext"] = S["ext"]
}
s = ((toupper(s = (i in S ? S[i] : "")) in _REGPATH0REGDIR ? D[++q] = _REGPATH0REGDIR[toupper(s)] : (D[++q] = _REGPATH0REGDIR[""]) "\\" (D[++q] = s))) "\\"
while (++i in S) {
s = s (D[++q] = S[i]) "\\"
}
if (s != "") {
D[0] = s
}
IGNORECASE = 1
D["hostdir"] = "\\\\" (D["host"] = ("host" in S && ("" == (i = S["host"]) || "." == i || "?" == i || "localhost" == i) ? ENVIRON["COMPUTERNAME"] : i)) "\\" s
IGNORECASE = 0
}
}
function _report(p)
{
_report_t0 = _reportparnt = ""
_report_i0(p)
_tframe("_report_i0", p)
return _report_t0
}
function _report_i0(p, p0, p1, p2)
{
if (p in _tPARENT) {
if (_reportparnt != (_reportparnt = _tPARENT[p])) {
_report_t0 = _report_t0 _ln() _ln((z = "_ " _[_tPARENT[p]]["NAME"] " ") _getchrln("_", _CON_WIDTH - length(z) - 2)) _ln(_getchrln("#", _CON_WIDTH - 2)) _ln()
}
}
if ("ERROR" in _[p]) {
_report_t0 = _report_t0 _reporterr(p, _[p]["ERROR"])
}
if ("REPORT" in _[p]) {
_report_t0 = _report_t0 _ln(_[p]["REPORT"])
}
}
function _reporterr(p, t3, pp, t, t2)
{
t = ""
pp = p
do {
("NAME" in _[pp] ? t = _[pp]["NAME"] ": " t : "")
} while (pp = _rPARENT(pp))
if (match(t3, /\x00/)) {
return (substr(t3, 1, RSTART - 1) t substr(t3, RSTART + 1))
}
return (t t3)
}
function _retarr(A, i, p, a, q)
{
if (isarray(A)) {
i = (i == "" ? 0 : i + 0)
q = A[_ARRLEN] + 0
if (i < q) {
return (p A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] _retarr_i0(A, q, i, a))
}
}
}
function _retarr_i0(A, q, i, a)
{
if (i < q) {
return (A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] A[++i] _retarr_i0(A, q, i, a))
}
while (q < i) {
delete A[++q]
}
return a
}
function _retarrd(A, v, i)
{
if (1 in A) {
return (A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10] A[11] A[12] A[13] A[14] A[15] A[16] (((i = 17) in A ? _retarrd_i0(A, i) v : v)))
}
delete A
return v
}
function _retarrd_i0(A, i)
{
if (i in A) {
return (A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] A[i++] ((i in A ? _retarrd_i0(A, i) : "")))
}
delete A
}
function _rexpfn(R, t, p)
{
_REXPFN[""] = ""
while (t) {
t = _rxpfn(R, t, p)
}
return _REXPFN[""]
}
function _rexpfnend(t)
{
_REXPFN[""] = t
}
function _rexpstr(r, i, c, A)
{
c = split(r, A, "")
r = ""
for (i = 1; i <= c; i++) {
r = r _REXPSTR[A[i]]
}
return r
}
function _rexpstr_i0(t, A, p0)
{
return (_REXPSTR[t] = "\\" t)
}
function _rmtsharerr(h, t)
{
gsub(/[\x0D\x0A]+/, "", t)
if (t ~ /^The command failed: 53/) {
ERRNO = "host not found: \\\\" h
} else {
ERRNO = t ": \\\\" h
}
}
function _rpp(q, D, S)
{
_conl()
_conline(q)
_conl()
_regpath0(D, q)
_conl(_ln("DEST:") _dumparr(D))
_conl()
return q
}
function _rrdreg(DD, p, k, t, v, c, i, q, tT, A, B, C, D)
{
if (! _registrytmpfile) {
_registryinit()
}
_cmd("regedit /E \"" _registrytmpfile "\" \"" p "\" 2>&1")
q = patsplit(gensub(/[\x00\xFF\xFE]+/, "", "G", _rdfile(_registrytmpfile)), A, /\x0D?\x0A\[[^\]]+\]\x0D?\x0A/, B)
for (i = 1; i <= q; i++) {
p = gensub(/(^[ \t\x0D\x0A]*\[)|((\\)\\+)|(\][ \t\x0D\x0A]*$)/, "\\3", "G", A[i])
DD[p "\\"]
delete C[split(B[i], C, /[\x0D\x0A]+/)]
for (c = 1; c in C; c++) {
tt = tt C[c]
if (gsub(/\\$/, "", tt)) {
continue
}
if (tt == "") {
continue
}
if (match(_th0(tt, tt = ""), /((^"(([^\\"]|\\.)*)")|(@))=(("(([^\\"]|\\.)*)")|(dword:([[:xdigit:]]{8}))|(hex(\(([27b])\))?:(.*)))$/, D)) {
if (D[7]) {
t = "STR"
v = _unstr(D[8])
} else if (D[10]) {
t = "W32"
v = D[11]
} else {
v = D[15]
if (D[13]) {
switch (D[14]) {
case "2":
t = "XSZ"
break
case "7":
t = "MSZ"
break
default:
t = "W64"
}
} else {
t = "BIN"
}
}
DD[gensub(/(\\)\\+/, "\\1", "G", p "\\" _unstr(D[3] ((D[5] ? "(Default)" : ""))) "." t)] = v
} else {
_fatal("regedit: unknown output format(" c "): `" C[c] "'")
}
}
}
}
function _rsqgetptr(g, p, A)
{
if (p in _tLINK) {
_SQSTACK[g][++_SQSTACK[g][0]] = p
_SQSTACK[g][++_SQSTACK[g][0]] = _SQTOPTR[g]
while ((p = _tLINK[p]) in _tLINK) {
_con(".")
}
_SQTOPTR[g] = p
}
if (p in _tFCHLD) {
return _rsqgetptr(g, _tFCHLD[p])
}
return p
}
function _rsqnext_i0(g, p)
{
if (p == _SQTOPTR[g]) {
if (_SQSTACK[g][0] > 0) {
_SQTOPTR[g] = _SQSTACK[g][_SQSTACK[g][0]--]
return _rsqnext_i0(g, _SQSTACK[g][_SQSTACK[g][0]--])
}
return
}
if (p in _tNEXT) {
return _rsqgetptr(g, _tNEXT[p])
}
return _rsqnext_i0(g, _tPARENT[p])
}
function _rtn(v, A)
{
_conl()
_conline(_val(v) " : " _val(A))
_conl()
_rtn2(v, A)
_conl()
}
function _rtn2(v, A, r, t)
{
r = (isarray(A) ? _typa(v, A) : _typ(v))
if ("`" > _t0 && _t0) {
_conl("ggggg")
}
t = ((r ? "TRUE" : "FALSE")) " / " ((r > 0 ? r ">0" : r "!>0")) " / " ((r + 0 > 0 ? r "+0>0" : r "+0!>0")) " / " ((r + 0 != r ? r "+0!=" r : r "+0==" r)) " / " ((r && "`" > r ? "'`'>" r " && " r : "!('`'>" r " && " r ")"))
_conl("`" r "' : " t)
return r
}
function _rxpfn(R, t, p, i, f, A)
{
for (i in R) {
if (match(t, i, A)) {
f = R[i]
if (t != (t = @f(A, substr(t, RLENGTH + 1), p))) {
return t
}
}
}
return _rexpfnend(t)
}
function _sHARE(c, t, P, a, A)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_share 1.000")
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _sYS(c, t, P, a, A)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return
case "_lib_BEGIN":
return
case "_lib_END":
return
}
}
function _serv_check(p)
{
_tframe("_serv_check_i0", p, p)
}
function _serv_check_i0(p, p0, p1, p2, p3, i, q, c)
{
if (_[p]["TYPE"] == "defsrv") {
i = IGNORECASE
IGNORECASE = 1
if (match(_servoutput, roi = "\\012DISPLAY_NAME: " _torexp(_[p]["SERVNAME"]))) {
_creport(p, "OK: SERVICE DETECTED: " substr(_[p]["SERVNAME"], 1, 112))
} else {
_dllerr(p, "service " _[p]["SERVNAME"] " not detected")
}
}
IGNORECASE = i
}
function _setarrsort(f, a)
{
a = PROCINFO["sorted_in"]
if (! f) {
delete PROCINFO["sorted_in"]
} else {
PROCINFO["sorted_in"] = f
}
return a
}
function _setmpath(p, a)
{
ERRNO = ""
if (p && (a = _filerd(p))) {
if (_FILEIO_TMPRD) {
_FILEIO_TMPATHS[_FILEIO_TMPRD]
}
return (_FILEIO_TMPRD = a)
} else {
return _warning("`" p "': cannot set temporary folder" ((ERRNO ? ": " ERRNO : "")))
}
}
function _sharelist(D, h, q, c, l, A, B)
{
delete D
c = _sharextool " \\\\" ((h == "" ? h = ENVIRON["COMPUTERNAME"] : h)) " 2>&1"
if (match(c = _cmd(c), /\x0AShare[^\x0A]*Remark/)) {
gsub(/(^[^-]*\x0D?\x0A-+\x0D?\x0A[ \t]*)|(\x0D?\x0AThe command completed successfully.*$)/, "", c)
l = RLENGTH - 7
split(c, A, /([ \t]*\x0D?\x0A)+[ \t]*/)
for (c in A) {
if (match(A[c], /((([^ \t:]+[ \t]+)*[^ \t:]+)[ \t]+)([A-Za-z])[ \t]*:/, B) && ++q) {
D[B[2]] = (A[c] ~ /\.\.\.$/ ? _sharepath(h, B[2]) : gensub(/[ \t\\\/]*$/, "\\\\", 1, substr(A[c], 1 + B[1, "length"], l - B[1, "length"])))
}
}
return q
}
return _rmtsharerr(h, c)
}
function _sharepath(h, s, A)
{
s = _sharextool " \\\\" ((h == "" ? h = ENVIRON["COMPUTERNAME"] : h)) "\\\"" s "\" 2>&1"
if (match(s = _cmd(s), /\x0APath[ \t]+([^\x0D\x0A]+)/, _SHAREPATHA0)) {
return gensub(/[ \t\\\/]*$/, "\\\\", 1, _SHAREPATHA0[1])
}
return _rmtsharerr(h, s)
}
function _shortcut(D, S)
{
if (isarray(D)) {
if (isarray(S)) {
_addarrmask(D, S, _SHORTCUTWSTRUC)
} else if (S == 0 && S == "") {
_addarrmask(D, _SHORTCUTDEFAULT, _SHORTCUTWSTRUC)
} else if (_isnotfileptr(S)) {
_addarrmask(D, _[S], _SHORTCUTWSTRUC)
} else if (_rd_shortcut(D, S)) {
return
}
} else if (D == 0 && D == "") {
return _NOP
} else if (_isnotfileptr(D)) {
if (isarray(S)) {
_addarrmask(_[D], S, _SHORTCUTWSTRUC)
} else if (S == 0 && S == "") {
_addarrmask(_[D], _SHORTCUTDEFAULT, _SHORTCUTWSTRUC)
} else if (_isnotfileptr(S)) {
_addarrmask(_[D], _[S], _SHORTCUTWSTRUC)
} else if (_rd_shortcut(_[D], S)) {
return
}
} else if (isarray(S) && _wr_shortcut(D, S)) {
return
} else if (S == 0 && S == "" && _wr_shortcut(D, _SHORTCUTDEFAULT)) {
return
} else if (_isnotfileptr(S) && _wr_shortcut(D, _[S])) {
return
} else if (_rd_shortcut(_SHRTCUTA1, S) || _wr_shortcut(D, _SHRTCUTA1)) {
return
}
return 1
}
function _shortcut_init(A, B, q)
{
_SHORTCUTERR[2] = "file not found"
_SHORTCUTERR[3] = "no such filepath"
_SHORTCUTERR["The system cannot find the file specified."] = "no such filepath"
_SHORTCUTERR[5] = "file is folder"
_SHORTCUTERR["Access is denied."] = "file is folder"
_SHORTCUTERR[123] = "filepath syntax error"
_SHORTCUTERR["The filename, directory name, or volume label syntax is incorrect."] = "filepath syntax error"
q = "target\t\t\t/T:\t\t\t\tTargetPath=\t\t\t\t\ttarget?\t\t\t;\t\t\t_target\t\t\t\t\t\t\tTargetPathExpanded=\t\t\t\t\t\t\t;\t\t\tparameters\t\t\t/P:\t\t\t\tArguments=\t\t\t\t\tparaneters?\t\t\t;\t\t\t_parameters\t\t\t\t\t\t\tArgumentsExpanded=\t\t\t\t\t\t\t;\t\t\tstartdir\t\t\t/W:\t\t\t\tWorkingDirectory=\t\t\t\tstartdir?\t\t\t;\t\t\t_startdir\t\t\t\t\t\t\tWorkingDirectoryExpanded=\t\t\t\t\t\t;\t\t\trunstyle\t\t\t/R:\t\t\t\tRunStyle=\t\t\t\t\t1\t\t\t\t;\t\t\ticon,index\t\t\t/I:\t\t\t\tIconLocation=\t\t\t\ticon,index?\t\t\t;\t\t\txicon,index\t\t\t\t\t\t\tIconLocationExpanded=\t\t\t\t\t\t\t;\t\t\tshortcut key\t\t/H:\t\t\t\tHotKey=\t\t\t\t\t0\t\t\t\t;\t\t\tdescription\t\t\t/D:\t\t\t\tDescription=\t\t\t\t_env4: default shortcut\t"
split(q, _SHRTCUTA0, /[ \t]*;[ \t]*/)
for (q in _SHRTCUTA0) {
if (match(_SHRTCUTA0[q], /^([^\t]+)\t+([^\t]+)(\t+([^\t]+)(\t+([^\t]+))?)?/, B)) {
if (B[3] == "") {
_SHORTCUTRSTRUC[B[2]] = B[1]
} else if (B[5] == "") {
_SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2]
delete _SHORTCUTDEFAULT[B[1]]
} else {
_SHORTCUTWSTRUC[_SHORTCUTRSTRUC[B[4]] = B[1]] = B[2]
_SHORTCUTDEFAULT[B[1]] = B[6]
}
} else {
_fatal("_shortcut.init: _shortcut_struc: syntax error: `" _SHRTCUTA0[q] "'")
}
}
_SHRTCUTA1[""]
delete _SHRTCUTA1[""]
_shortcut_fpath = "\\\\localhost\\eGAWK\\LIB\\_shortcut\\_shortcut.exe"
}
function _shortcut_nerr(t, s, A)
{
if (match(t, /\x0ASystem error (-?[0-9]+)[^\x0D\x0A]*[\x0D\x0A]+([^\x0D\x0A]+)/, A)) {
ERRNO = ((A[1] in _SHORTCUTERR ? _SHORTCUTERR[A[1]] : (A[2] in _SHORTCUTERR ? _SHORTCUTERR[A[2]] : tolower(gensub(/^(The )?(((.*)\.$)|(.*[^\.]$))/, "\\4\\5", "G", A[2])) "(" A[1] ")"))) ((s ? ": `" s "'" : ""))
} else {
return 1
}
}
function _split_regpath()
{
_rpp(" / / / / ")
_rpp(" / / / / huj ")
_rpp(" / / / / huj / ")
_rpp(" / / / / huj / pizda.TSR ")
_rpp(" / / / / hklm ")
_rpp(" / / / / hklm / ")
_rpp(" / / / / hklm / huj ")
_rpp(" / / / / hklm / huj / ")
_rpp(" / / / / hklm / huj / \tpizda.TSR ")
_conl()
_conl("########################################################################################")
_conl()
_rpp(" / / / / hklm / software / altiris / fi le . ex t ")
_rpp(" / / . / / hkcr / software / altiris / fi le . ex t ")
_rpp(" / / ? / / hKcU / software / altiris / fi le . ex t ")
_rpp(" / / lOcAlHoSt / / hKu / software / altiris / fi le . ex t ")
_rpp(" / / ho st / / hKcc / software / altiris / fi le . ex t ")
_rpp(" / / ho st / / hKPd / software / altiris / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
}
function _splitpath_test()
{
_conl()
_conl("########################################################################################")
_conl()
_fpp(" ")
_fpp(" fi le . ex t ")
_fpp(" di r0 / / ")
_fpp(" di r0 / / fi le . ex t ")
_fpp(" / ")
_fpp(" / fi le . ex t ")
_fpp(" / di r0 / / ")
_fpp(" / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" c : ")
_fpp(" c : fi le . ex t ")
_fpp(" c : di r0 / / ")
_fpp(" c : di r0 / / fi le . ex t ")
_fpp(" c : / / ")
_fpp(" c : / / fi le . ex t ")
_fpp(" c : / / di r0 / / ")
_fpp(" c : / / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" / / ")
_fpp(" / / ho st . hs t ")
_fpp(" / / ho st / / ")
_fpp(" / / ho st / / fi le . ex t ")
_fpp(" / / ho st / / di r0 / / ")
_fpp(" / / ho st / / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" / / ho st / / c : ")
_fpp(" / / ho st / / c : fi le . ex t ")
_fpp(" / / ho st / / c : di r0 / / ")
_fpp(" / / ho st / / c : di r0 / / fi le . ex t ")
_fpp(" / / ho st / / c : / / ")
_fpp(" / / ho st / / c : / / fi le . ex t ")
_fpp(" / / ho st / / c : / / di r0 / / ")
_fpp(" / / ho st / / c : / / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" http : / / / ")
_fpp(" http : / / / si te . ex t ")
_fpp(" http : / / / si te / / ")
_fpp(" http : / / / si te / / fi le . ex t ")
_fpp(" http : / / / si te / / di r0 / / ")
_fpp(" http : / / / si te / / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" ftp : / / / : po rt ")
_fpp(" ftp : / / / si te . ex t : po rt ")
_fpp(" ftp : / / / si te : po rt / / ")
_fpp(" ftp : / / / si te : po rt / / fi le . ex t ")
_fpp(" ftp : / / / si te : po rt / / di r0 / / ")
_fpp(" ftp : / / / si te : po rt / / di r0 / / fi le . ex t ")
_conl()
_conl("## //. ######################################################################################")
_conl()
_fpp(" / / . ")
_fpp(" / / . / / ")
_fpp(" / / . / / com 56 ")
_fpp(" / / . / / com 56 / / ")
_fpp(" / / . / / c : ")
_fpp(" / / . / / c : / / ")
_fpp(" / / . / / c : com 56 ")
_fpp(" / / . / / c : com 56 / / ")
_fpp(" / / . / / c : / / com 56 ")
_fpp(" / / . / / c : / / com 56 / / ")
_conl()
_conl("## //? ######################################################################################")
_conl()
_fpp(" / / ? ")
_fpp(" / / ? / / ")
_fpp(" / / ? / / com 56 ")
_fpp(" / / ? / / com 56 / / ")
_fpp(" / / ? / / c : ")
_fpp(" / / ? / / c : / / ")
_fpp(" / / ? / / c : com 56 ")
_fpp(" / / ? / / c : com 56 / / ")
_fpp(" / / ? / / c : / / com 56 ")
_fpp(" / / ? / / c : / / com 56 / / ")
_conl()
_conl("########################################################################################")
_conl()
_fpp(" / / / ")
_fpp(" / / / . hs t ")
_fpp(" / / / / fi le . ex t ")
_fpp(" / / / / di r0 / / ")
_fpp(" / / / / di r0 / / di r1 / fi le . ex t ")
_fpp(" / / / / c : ")
_fpp(" / / / / c : fi le . ex t ")
_fpp(" / / / / c : di r0 / / ")
_fpp(" / / / / c : di r0 / / fi le . ex t ")
_fpp(" / / / / c : / / ")
_fpp(" / / / / c : / / fi le . ex t ")
_fpp(" / / / / c : / / di r0 / / ")
_fpp(" / / / / c : / / di r0 / / fi le . ex t ")
_conl()
_conl("########################################################################################")
_conl()
return
}
function _splitstr(A, t, r)
{
if (_istr(t)) {
if (_splitstr_i0(A, t) > 0) {
return _splitstrp0
}
if (_istr(r)) {
return _splitstr_i0(A, r)
}
} else {
if (it == "A") {
if (length(t) > 0) {
_movarr(A, t)
return (0 - length(A))
}
}
_istr(r)
}
if (it == "A") {
if (length(r) > 0) {
_movarr(A, r)
return (0 - length(A))
}
}
}
function _splitstr_i0(A, t, C)
{
if (2 > (_splitstrq0 = patsplit(t, _SPLITSTRA0, /([^,\xB4]*\xB4.)*[^,\xB4]*/))) {
_splitstrq0 = split(gensub(/\xB4(.)/, "\\1", "G", t), _SPLITSTRA0, "")
}
delete A
_splitstri0 = _splitstrp0 = 0
while (_splitstri0++ < _splitstrq0) {
if ((t = gensub(/\xB4(.)/, "\\1", "G", _SPLITSTRA0[_splitstri0])) in C || t == "") {
continue
}
C[A[++_splitstrp0] = t]
}
return _splitstrp0
}
function _strtorexp(t)
{
gsub(/[\\\.\?\*\+\-\(\)\{\}\[\]\^\$\/\|]/, "\\\\&", t)
t = split(t, _TOREXP_STRA, /[\x00-\x1F]/, _TOREXP_STRB)
_torexp_strt0 = ""
for (_torexp_stri0 = 1; _torexp_stri0 < t; _torexp_stri0++) {
_torexp_strt0 = _torexp_strt0 _TOREXP_STRA[_torexp_stri0] "\\" _QASC[_TOREXP_STRB[_torexp_stri0]]
}
return (_torexp_strt0 _TOREXP_STRA[_torexp_stri0])
}
function _subseqoff(r, B)
{
patsplit(r, B, /\x84[^\x94]*\x94/)
return gensub(/\x84[^\x94]*\x94/, "\204", "G", r)
}
function _subseqon(B, r, F, f, s, e, q, i, A)
{
q = split(r, A, /\x84/)
r = ""
f = F[""]
for (i = 1; i < q; i++) {
s = substr(e = B[i], 2, 1)
s = (s in F ? F[s] : F[""])
r = r (@f(A[i])) (@s(substr(e, 3, length(e) - 3)))
}
return (r (@f(A[i])))
}
function _sysinfo(D, h)
{
h = "wmic /NODE: \"" h "\" OS 2>NUL"
if (split(_cmd(h), _SYSINFOA0, /[\x0D\x0A]+/) == 3) {
_sysinfol0 = length(h = _SYSINFOA0[2]) + 1
_sysinfoq0 = _sysinfoq1 = split(_SYSINFOA0[1], _SYSINFOA0, / +/, _SYSINFOB0)
while (--_sysinfoq0 > 0) {
D[_sysinfof0] = gensub(/^ +| +$/, "", "G", substr(h, _sysinfol0 = _sysinfol0 - (_sysinfol1 = length(_sysinfof0 = _SYSINFOA0[_sysinfoq0]) + length(_SYSINFOB0[_sysinfoq0])), _sysinfol1))
}
return (_sysinfoq1 - 1)
}
}
function _tOBJ(c, t, P)
{
switch (c) {
case "_lib_CMDLN":
return t
case "_lib_APPLY":
return
case "_lib_HELP":
return
case "_lib_NAMEVER":
return _ln("_tOBJ 3.0")
case "_lib_BEGIN":
return
case "_lib_END":
return
case "_lib_CLEANUP":
return _tOBJ_CLEANUP()
}
}
function _tOBJ_CLEANUP(p)
{
for (p in UIDSDEL) {
delete _ptr[p]
delete _tPREV[p]
delete _tPARENT[p]
delete _tNEXT[p]
delete _tFCHLD[p]
delete _tQCHLD[p]
delete _tLCHLD[p]
delete _TMP0[p]
delete _TMP1[p]
delete _tLINK[p]
delete _tCLASS[p]
}
}
function _tabtospc(t, ts, xc, a, c, n, A, B)
{
if (! ts) {
ts = _TAB_STEP_DEFAULT
}
c = split("." t, A, /\t+/, B)
A[1] = substr(A[1], 2)
t = ""
for (n = 1; n <= c; n++) {
t = t A[n] _getchrln(" ", (xc = length(B[n]) * ts + int((a = xc + length(A[n])) / ts) * ts) - a)
}
return t
}
function _tapi(p, f, p0, p1, p2, p3, c)
{
c = p
do {
if (f in _[c]["API"]) {
f = _[c]["API"][f]
return @f(p, p0, p1, p2, p3)
}
c = _[c]["CLASS"]
} while ("CLASS" in _[c])
}
function _tbframe(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tbframe_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tbframe_i0(f, p, p0, p1, a)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tLCHLD ? _tmbframe(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tbframex(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tbframex_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tbframex_i0(f, p, p0, p1)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tLCHLD ? _tmbframex(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tbpass(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tbpass_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tbpass_i0(f, p, p0, p1, a)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tLCHLD ? _tmbpass(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tbpassx(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tbpassx_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tbpassx_i0(f, p, p0, p1)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tLCHLD ? _tmbpassx(f, _tLCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tbrochld(p, f, pp)
{
if (p) {
if (p in _tFCHLD) {
f = _tFCHLD[p]
delete _tFCHLD[p]
delete _tLCHLD[p]
if (p in _tPARENT) {
pp = _tPARENT[p]
delete _tPARENT[p]
if (p in _tPREV) {
_tNEXT[_tPREV[f] = _tPREV[p]] = f
delete _tPREV[p]
} else {
_tFCHLD[pp] = f
}
for (; f in _tNEXT; f = _tNEXT[f]) {
_tPARENT[f] = pp
}
_tPARENT[f] = pp
if (p in _tNEXT) {
_tPREV[_tNEXT[f] = _tNEXT[p]] = f
delete _tNEXT[p]
} else {
_tLCHLD[pp] = f
}
_tQCHLD[pp] = _tQCHLD[pp] + _tQCHLD[p] - 1
delete _tQCHLD[p]
return f
} else {
delete _tQCHLD[p]
if (p in _tPREV) {
_tNEXT[_tPREV[f] = _tPREV[p]] = f
delete _tPREV[p]
}
for (; f in _tNEXT; f = _tNEXT[f]) {
delete _tPARENT[f]
}
delete _tPARENT[f]
if (p in _tNEXT) {
_tPREV[_tNEXT[f] = _tNEXT[p]] = f
delete _tNEXT[p]
}
return f
}
} else if (p in _tPARENT) {
pp = _tPARENT[p]
delete _tPARENT[p]
if (p in _tPREV) {
if (p in _tNEXT) {
_tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p]
delete _tNEXT[p]
} else {
delete _tNEXT[_tLCHLD[pp] = _tPREV[p]]
}
delete _tPREV[p]
_tQCHLD[pp]--
} else if (p in _tNEXT) {
delete _tPREV[_tFCHLD[pp] = _tNEXT[p]]
delete _tNEXT[p]
_tQCHLD[pp]--
} else {
delete _tFCHLD[pp]
delete _tLCHLD[pp]
delete _tQCHLD[pp]
}
} else if (p in _tPREV) {
if (p in _tNEXT) {
_tNEXT[_tPREV[f] = _tPREV[p]] = f = _tNEXT[p]
delete _tNEXT[p]
} else {
delete _tNEXT[_tPREV[p]]
}
delete _tPREV[p]
} else if (p in _tNEXT) {
delete _tPREV[_tNEXT[p]]
delete _tNEXT[p]
}
}
return p
}
function _tbrunframe(f, p, p0, p1)
{
return _tbframe((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _tbrunframex(f, p, p0, p1)
{
return _tbframex((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _tbrunpass(f, p, p0, p1)
{
return _tbpass((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _tbrunpassx(f, p, p0, p1)
{
return _tbpassx((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _tdel(p, i)
{
if (p in _) {
_texclude(p)
for (i in _ptr[p]) {
if (isarray(_ptr[p][i])) {
_tdel_i1(_ptr[p][i])
} else if (i = _ptr[p][i]) {
_tdel(i)
}
}
if (p in _tFCHLD) {
i = _tFCHLD[p]
do {
i = ((i in _tNEXT ? _tNEXT[i] : "")) _tdel_i0(i)
} while (i)
}
delete _[p]
_UIDSDEL[p]
}
}
function _tdel_i0(p, i)
{
for (i in _ptr[p]) {
if (isarray(_ptr[p][i])) {
_tdel_i1(_ptr[p][i])
} else if (i = _ptr[p][i]) {
_tdel(i)
}
}
if (p in _tFCHLD) {
i = _tFCHLD[p]
do {
i = ((i in _tNEXT ? _tNEXT[i] : "")) _tdel_i0(i)
} while (i)
}
delete _[p]
_UIDSDEL[p]
}
function _tdel_i1(A, i)
{
for (i in A) {
if (isarray(A[i])) {
_tdel_i1(A[i])
} else if (i = A[i]) {
_tdel(i)
}
}
}
function _tdelete(p, v)
{
if (p) {
_wLCHLD(_tDELPTR, p)
}
return v
}
function _tdelitem(p)
{
if (p) {
if ("HOST" in _PTR[p] && "ITEMNAME" in _[p]) {
return _wLCHLD(_PTR[_PTR[p]["HOST"]]["ITEM"][_[p]["ITEMNAME"]], p)
}
_tdelete(p)
return p
}
}
function _tend(a, b)
{
if (b == "") {
return (_t_ENDF[_t_ENDF[0]] = a)
} else {
return (_t_ENDF[_t_ENDF[0] + a] = b)
}
}
function _texclude(p, v, pp)
{
if (p in _) {
if (p in _tPARENT) {
pp = _tPARENT[p]
delete _tPARENT[p]
if (p in _tPREV) {
if (p in _tNEXT) {
_tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p]
delete _tNEXT[p]
} else {
delete _tNEXT[_tLCHLD[pp] = _tPREV[p]]
}
delete _tPREV[p]
} else if (p in _tNEXT) {
delete _tPREV[_tFCHLD[pp] = _tNEXT[p]]
delete _tNEXT[p]
} else {
delete _tFCHLD[pp]
delete _tLCHLD[pp]
delete _tQCHLD[pp]
return p
}
--_tQCHLD[pp]
} else if (p in _tPREV) {
if (p in _tNEXT) {
_tPREV[_tNEXT[v] = _tNEXT[p]] = v = _tPREV[p]
delete _tNEXT[p]
} else {
delete _tNEXT[_tPREV[p]]
}
delete _tPREV[p]
} else if (p in _tNEXT) {
delete _tPREV[_tNEXT[p]]
delete _tNEXT[p]
}
return p
}
}
function _tframe(fF, p, p0, p1, p2)
{
delete _t_ENDF[++_t_ENDF[0]]
p = (_isptr(p) ? (isarray(fF) ? _tframe_i1(fF, p, p0, p1, p2) : _tframe_i0(fF, p, p0, p1, p2)) : "")
--_t_ENDF[0]
return p
}
function _tframe0(f, p, p0, p1, p2, p3, A)
{
if (_isptr(p)) {
if (isarray(f)) {
return _tframe0_i0(f, p)
}
_tframex_p0(A, f, 0)
return _th0(_tframe0_i0(A, p), --_TEND[_ARRLEN])
}
}
function _tframe0_i0(A, p, f)
{
if (p in _tLINK) {
_tframe_link = p
if ("`" in A) {
f = A["`"]
while (p in _tLINK) {
@f(p = _tLINK[p])
}
} else {
while (p in _tLINK) {
p = _tLINK[p]
}
}
} else {
_tframe_link = ""
}
if (p in _tFCHLD) {
return (_tframe0_i2(A, "^", p) _tframe0_i1(A, _tFCHLD[p]))
}
return _tframe0_i2(A, ".", p)
}
function _tframe0_i1(A, p)
{
if (_TEND[_ARRLEN] in _TEND) {
return
}
if (p in _tNEXT) {
return (_tframe0_i0(A, p) _tframe0_i1(A, _tNEXT[p]))
}
return _tframe0_i0(A, p)
}
function _tframe0_i2(A, m, p)
{
_tframe_dlink = p
while (p in _tDLINK) {
p = _tDLINK[p]
}
if (m in A) {
if (m "~" in A) {
if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) {
return
}
}
m = A[m]
return @m(p)
}
}
function _tframe1(f, p, p0, p1, p2, p3, A)
{
if (_isptr(p)) {
if (isarray(f)) {
return _tframe1_i0(f, p, p0)
}
_tframex_p0(A, f, 1)
return _th0(_tframe1_i0(A, p, p0), --_TEND[_ARRLEN])
}
}
function _tframe1_i0(A, p, p0)
{
_tframe_link = p
while (p in _tLINK) {
p = _tLINK[p]
}
if (p in _tFCHLD) {
return (_tframe1_i2(A, "^", p, p0) _tframe1_i1(A, _tFCHLD[p], p0))
}
return _tframe1_i2(A, ".", p, p0)
}
function _tframe1_i1(A, p, p0)
{
if (_TEND[_ARRLEN] in _TEND) {
return
}
if (p in _tNEXT) {
return (_tframe1_i0(A, p, p0) _tframe1_i1(A, _tNEXT[p], p0))
}
return _tframe1_i0(A, p, p0)
}
function _tframe1_i2(A, m, p, p0)
{
_tframe_dlink = p
while (p in _tDLINK) {
p = _tDLINK[p]
}
if (m in A) {
if (m "~" in A) {
if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) {
return
}
}
m = A[m]
return @m(p, p0)
}
}
function _tframe2(f, p, p0, p1, p2, p3, A)
{
if (_isptr(p)) {
if (isarray(f)) {
return _tframe2_i0(f, p, p0, p1)
}
_tframex_p0(A, f, 2)
return _th0(_tframe2_i0(A, p, p0, p1), --_TEND[_ARRLEN])
}
}
function _tframe2_i0(A, p, p0, p1)
{
_tframe_link = p
while (p in _tLINK) {
p = _tLINK[p]
}
if (p in _tFCHLD) {
return (_tframe2_i2(A, "^", p, p0, p1) _tframe2_i1(A, _tFCHLD[p], p0, p1))
}
return _tframe2_i2(A, ".", p, p0, p1)
}
function _tframe2_i1(A, p, p0, p1)
{
if (_TEND[_ARRLEN] in _TEND) {
return
}
if (p in _tNEXT) {
return (_tframe2_i0(A, p, p0, p1) _tframe2_i1(A, _tNEXT[p], p0, p1))
}
return _tframe2_i0(A, p, p0, p1)
}
function _tframe2_i2(A, m, p, p0, p1)
{
_tframe_dlink = p
while (p in _tDLINK) {
p = _tDLINK[p]
}
if (m in A) {
if (m "~" in A) {
if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) {
return
}
}
m = A[m]
return @m(p, p0, p1)
}
}
function _tframe3(f, p, p0, p1, p2, p3, A)
{
if (_isptr(p)) {
if (isarray(f)) {
return _tframe3_i0(f, p, p0, p1, p2)
}
_tframex_p0(A, f, 3)
return _th0(_tframe3_i0(A, p, p0, p1, p2), --_TEND[_ARRLEN])
}
}
function _tframe3_i0(A, p, p0, p1, p2)
{
_tframe_link = p
while (p in _tLINK) {
p = _tLINK[p]
}
if (p in _tFCHLD) {
return (_tframe3_i2(A, "^", p, p0, p1, p2) _tframe3_i1(A, _tFCHLD[p], p0, p1, p2))
}
return _tframe3_i2(A, ".", p, p0, p1, p2)
}
function _tframe3_i1(A, p, p0, p1, p2)
{
if (_TEND[_ARRLEN] in _TEND) {
return
}
if (p in _tNEXT) {
return (_tframe3_i0(A, p, p0, p1, p2) _tframe3_i1(A, _tNEXT[p], p0, p1, p2))
}
return _tframe3_i0(A, p, p0, p1, p2)
}
function _tframe3_i2(A, m, p, p0, p1, p2)
{
_tframe_dlink = p
while (p in _tDLINK) {
p = _tDLINK[p]
}
if (m in A) {
if (m "~" in A) {
if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) {
return
}
}
m = A[m]
return @m(p, p0, p1, p2)
}
}
function _tframe4(f, p, p0, p1, p2, p3, A)
{
if (_isptr(p)) {
if (isarray(f)) {
return _tframe4_i0(f, p, p0, p1, p2, p3)
}
_tframex_p0(A, f, 4)
return _th0(_tframe4_i0(A, p, p0, p1, p2, p3), --_TEND[_ARRLEN])
}
}
function _tframe4_i0(A, p, p0, p1, p2, p3)
{
_tframe_link = p
while (p in _tLINK) {
p = _tLINK[p]
}
if (p in _tFCHLD) {
return (_tframe4_i2(A, "^", p, p0, p1, p2, p3) _tframe4_i1(A, _tFCHLD[p], p0, p1, p2, p3))
}
return _tframe4_i2(A, ".", p, p0, p1, p2, p3)
}
function _tframe4_i1(A, p, p0, p1, p2, p3)
{
if (_TEND[_ARRLEN] in _TEND) {
return
}
if (p in _tNEXT) {
return (_tframe4_i0(A, p, p0, p1, p2, p3) _tframe4_i1(A, _tNEXT[p], p0, p1, p2, p3))
}
return _tframe4_i0(A, p, p0, p1, p2, p3)
}
function _tframe4_i2(A, m, p, p0, p1, p2, p3)
{
_tframe_dlink = p
while (p in _tDLINK) {
p = _tDLINK[p]
}
if (m in A) {
if (m "~" in A) {
if (! (_TYPEWORD in _[p]) || A[m "~"] !~ _[p][_TYPEWORD]) {
return
}
}
m = A[m]
return @m(p, p0, p1, p2, p3)
}
}
function _tframe_i0(f, p, p0, p1, p2, a)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tFCHLD ? _tmframe_i0(f, _tFCHLD[p], p0, p1, p2) : (p in _tDLINK ? @f(_tDLINK[p], p0, p1, p2) : @f(p, p0, p1, p2))))
}
function _tframe_i1(F, p, p0, p1, p2, a)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tFCHLD ? (("." in F ? _th1(a = F["."], @a(p, p0, p1, p2)) : "")) _tmframe_i1(F, _tFCHLD[p], p0, p1, p2) : (">" in F ? _th1(a = F[">"], (p in _tDLINK ? @a(_tDLINK[p], p0, p1, p2) : @a(p, p0, p1, p2))) : "")))
}
function _tframex(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tframex_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tframex_i0(f, p, p0, p1)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tFCHLD ? _tmframex(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tframex_p0(A, f, q, i, B, C)
{
_tframe_qparam = q
delete _TEND[++_TEND[_ARRLEN]]
if (match(f, /\~(.*)$/, B)) {
A["^~"] = A[".~"] = B[1]
f = substr(f, 1, RSTART - 1)
}
A["."] = A["^"] = f
return
q = split(f, B, /;/)
i = 0
while (i < q) {
_tframex_p1(A, C[i])
while (++i <= q) {
_tframex_p1(A, C[i], B[i])
}
}
}
function _tframex_p1(A, v, i, r, B)
{
gsub(/[ \t]+/, "", v)
while (match(v, /^([^~]*)~\/(([^\/\\]*\\.)*[^\/\\]*)\//, B)) {
v = B[1] substr(v, RSTART + RLENGTH)
r = B[2]
}
if (i == "") {
if (v != "") {
A["."] = v
delete A["`"]
delete A["^"]
}
if (r != "") {
A[".~"] = A["`~"] = A["^~"] = r
}
} else if (match(v, /!/)) {
delete A[i]
} else {
A[i] = v
if (r != "") {
A[i "~"] = r
}
}
}
function _tgenuid(c)
{
for (_uidcntr in _UIDARR1) {
delete _UIDARR1[_uidcntr]
for (c in _UIDARR0) {
_UIDS[_uidcntr c]
}
delete _UIDS[_uidcntr c]
return (_uidcntr c)
}
return _fatal("_tUID: Out of UID range")
}
function _tgenuid_init(a, b, A)
{
_ptrlength = 4
a = "\222\223\224\225\226\227\230\231\232" "\240\241\242\243\244\245\246\247" "\260\261\262\263\264\265\266\267\270\271\272\273\274\275\276\277" "\300\301\302\303\304\305\306\307\310\311\312\313\314\315\316\317" "\320\321\322\323\324\325\326\327\330\331\332\333\334\335\336\337"
split(a, A, "")
for (a in A) {
for (b in A) {
_UIDARR0[A[a] A[b]] _UIDARR1[A[a] A[b]]
}
}
_uidcntr = A[a] A[b]
}
function _tgetitem(p, n, a, b)
{
if (p) {
if (isarray(_PTR[p]["ITEM"]) && n in _PTR[p]["ITEM"]) {
a = _PTR[p]["ITEM"][n]
} else {
a = _PTR[p]["ITEM"][n] = _N()
}
if (! (b = _rFCHLD(a))) {
b = _wLCHLD(a, _N())
_PTR[b]["HOST"] = p
_[b]["ITEMNAME"] = n
}
return b
}
}
function _tgetsp(p)
{
return _tSTACK[p][0]
}
function _th0(p, p1, p2, p3)
{
return p
}
function _th1(p0, p, p2, p3)
{
return p
}
function _th10(p0, p1)
{
return (p1 p0)
}
function _th2(p0, p1, r, p3)
{
return p
}
function _th3(p0, p1, p2, r)
{
return p
}
function _tifend(l)
{
return ((_t_ENDF[0] + l in _t_ENDF ? (_t_ENDF[_t_ENDF[0] + l] ? _t_ENDF[_t_ENDF[0] + l] : 1) : ""))
}
function _tinit_i0(D, S, i)
{
for (i in S) {
if (isarray(S[i])) {
if (! isarray(D[i][""])) {
delete D[i]
D[i][""]
delete D[i][""]
}
_N_i0(D[i], S[i])
} else {
if (isarray(D[i])) {
delete D[i]
}
D[i] = S[i]
}
}
}
function _tlist(L, p, f)
{
_tlisti1 = _tlisti0 = L[_ARRLEN] + 0
if (f == 0 && f == "") {
_tlist_i0(L, p)
} else {
_tlistf0 = (f in _TAPI ? _TAPI[f] : f)
_tlist_i1(L, p)
}
return (_tlisti0 - _tlisti1)
}
function _tlist_i0(L, p, q, i)
{
if (isarray(p)) {
q = p[_ARRLEN]
i = 0
while (i++ < q) {
_tlist_i0(L, p[i])
}
return
}
if (p in _) {
while (p in _tLINK) {
p = _tLINK[p]
}
L[++_tlisti0] = p
if (p in _tFCHLD) {
for (p = _tFCHLD[p]; p; p = (p in _tNEXT ? _tNEXT[p] : "")) {
_tlist_i0(L, p)
}
}
}
}
function _tlist_i1(L, p)
{
if (isarray(p)) {
q = p[_ARRLEN]
i = 0
while (i++ < q) {
_tlist_i1(L, p[i])
}
return
}
if (p in _) {
while (p in _tLINK) {
p = _tLINK[p]
}
if (_tlistf0 in _[p]) {
L[++_tlisti0] = p
}
if (p in _tFCHLD) {
for (p = _tFCHLD[p]; p; p = (p in _tNEXT ? _tNEXT[p] : "")) {
_tlist_i1(L, p)
}
}
}
}
function _tmbframe(f, p, p0, p1, t)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
t = t _tbframe_i0(f, p, p0, p1, p = (p in _tPREV ? _tPREV[p] : ""))
}
return t
}
function _tmbframex(f, p, p0, p1, t)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
t = t _tbframex_i0(f, p, p0, p1)
p = (p in _tPREV ? _tPREV[p] : "")
}
return t
}
function _tmbpass(f, p, p0, p1)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
p0 = _tbpass_i0(f, p, p0, p1, p = (p in _tPREV ? _tPREV[p] : ""))
}
return p0
}
function _tmbpassx(f, p, p0, p1)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
p0 = _tbpassx_i0(f, p, p0, p1)
p = (p in _tPREV ? _tPREV[p] : "")
}
return p0
}
function _tmframe(f, p, p0, p1, p2)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tmframe_i0(f, p, p0, p1, p2) : "")
--_t_ENDF[0]
return f
}
function _tmframe_i0(f, p, p0, p1, p2, t)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
t = t _tframe_i0(f, p, p0, p1, p2, p = (p in _tNEXT ? _tNEXT[p] : ""))
}
return t
}
function _tmframe_i1(F, p, p0, p1, p2, t)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
t = t _tframe_i1(F, p, p0, p1, p2, p = (p in _tNEXT ? _tNEXT[p] : ""))
}
return t
}
function _tmframex(f, p, p0, p1, t)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
t = t _tframex_i0(f, p, p0, p1)
p = (p in _tNEXT ? _tNEXT[p] : "")
}
return t
}
function _tmpass(f, p, p0, p1)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
p0 = _tbpass_i0(f, p, p0, p1, p = (p in _tNEXT ? _tNEXT[p] : ""))
}
return p0
}
function _tmpassx(f, p, p0, p1)
{
while (p && ! (_t_ENDF[0] in _t_ENDF)) {
p0 = _tbpassx_i0(f, p, p0, p1)
p = (p in _tNEXT ? _tNEXT[p] : "")
}
return p0
}
function _torexp(r)
{
return _subseqon(_TOREXPB0, gensub(/(^[ \t]+)|(([ \t]*(\\)+)+[ \t]*)|([ \t]+$)/, "\\4", "G", _subseqoff(r, _TOREXPB0)), _TOREXPFN)
}
function _torexp_cmdstr(t)
{
return _strtorexp(gensub(/\^(.)/, "\\1", "G", t))
}
function _torexp_fmask(t)
{
return gensub(/\\\*/, ".*", "G", gensub(/\\\?/, ".?", "G", _strtorexp(t)))
}
function _torexp_init()
{
_TOREXPFN[""] = "_strtorexp"
_TOREXPFN["~"] = "_torexp_rexp"
_TOREXPFN["="] = "_strtorexp"
_TOREXPFN[">"] = "_torexp_cmdstr"
_TOREXPFN["#"] = "_torexp_fmask"
_TOREXPFN["\""] = "_torexp_dqstr"
_TOREXPFN["'"] = "_torexp_sqstr"
}
function _torexp_rexp(t)
{
return t
}
function _tpass(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tpass_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tpass_i0(f, p, p0, p1, a)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tFCHLD ? _tmpass(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tpassx(f, p, p0, p1)
{
delete _t_ENDF[++_t_ENDF[0]]
f = (p ? _tpassx_i0(f, p, p0, p1) : "")
--_t_ENDF[0]
return f
}
function _tpassx_i0(f, p, p0, p1)
{
while (p in _tLINK) {
p = _tLINK[p]
}
return ((p in _tFCHLD ? _tmpassx(f, _tFCHLD[p], p0, p1) : @f(p, p0, p1)))
}
function _tpop(p, aA, a)
{
if ((a = _tSTACK[p][0]) > 0) {
_tSTACK[p][0]--
if (isarray(_tSTACK[p][a])) {
delete aA
_movarr(aA, _tSTACK[p][a])
return
}
return _tSTACK[p][a]
}
_fatal("^" p ": Out of tSTACK")
}
function _tpush(p, aA, a)
{
if (isarray(aA)) {
delete _tSTACK[p][a = ++_tSTACK[p][0]]
_tSTACK[p][a][""]
delete _tSTACK[p][a][""]
_movarr(_tSTACK[p][a], aA)
return
}
delete _tSTACK[p][a = ++_tSTACK[p][0]]
return (_tSTACK[p][a] = aA)
}
function _tr(n, cs, H)
{
_rconline(n ": " cs)
_rconl()
if (match(cs, /^((([^\xB4:\[\|\]]*\xB4.)*[^\xB4:\[\|\]]*):)?((([^\xB4\[\|\]]*\xB4.)*[^\xB4\[\|\]]*)\[)?(([^\xB4\|\]]*\xB4.)*[^\xB4\|\]]*)?(\|(\.)?(([^\xB4\]]*\xB4.)*[^\xB4\]]*))?(\](.*))?$/, H)) {
_rconl("delptr: " _une(H[2]) "'")
_rconl("pfxstr: " _une(H[5]) "'")
_rconl("hichr: " _une(H[7]) "'")
_rconl("lochr: " _une((H[10] ? H[7] "' and " H[11] "'" : H[11] "'")))
_rconl("sfxstr: " _une(H[14]) "'")
} else {
_rconl("NOT MATCH!")
}
_rconl()
}
function _trace(t, d, A)
{
if (_ERRLOG_TF) {
A["TYPE"] = "TRACE"
A["TEXT"] = t
_log(A, d)
}
}
function _trunframe(f, p, p0, p1, p2)
{
return _tframe((f ? f : "_trunframe_i0"), p, p0, p1, p2)
}
function _trunframe_i0(p, p0, p1, p2, f)
{
if (p in _tFN) {
f = _tFN[p]
return @f(p, p0, p1, p2)
}
}
function _trunframex(f, p, p0, p1)
{
return _tframex((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _trunpass(f, p, p0, p1)
{
return _tpass((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _trunpassx(f, p, p0, p1)
{
return _tpassx((f ? f : "_trunframe_i0"), p, p0, p1)
}
function _tsetsp(p, v)
{
return (_tSTACK[p][0] = v)
}
function _tstini()
{
_ini("uidel:pfx'hstr|lstr'sfx")
_ini("uidel:pfx'hstr|lstr'")
_ini("uidel:'hstr|lstr'sfx")
_ini("uidel:'hstr|lstr'")
_ini("uidel:pfx'hstr'sfx")
_ini("uidel:pfx'hstr'")
_ini("uidel:'hstr'sfx")
_ini("uidel:'hstr'")
_conl()
_conl("########################################################################################")
_conl()
_ini("pfx'hstr|lstr'sfx")
_ini("pfx'hstr|lstr'")
_ini("'hstr|lstr'sfx")
_ini("'hstr|lstr'")
_ini("pfx'hstr'sfx")
_ini("pfx'hstr'")
_ini("'hstr'sfx")
_ini("'hstr'")
_conl()
_conl("########################################################################################")
_conl()
_ini("uidel:pfx'`cntptr'sfx")
_ini("uidel:pfx'`cntptr'")
_ini("uidel:'`cntptr'sfx")
_ini("uidel:'`cntptr'")
_conl()
_conl("########################################################################################")
_conl()
_ini("pfx'`cntptr'sfx")
_ini("pfx'`cntptr'")
_ini("'`cntptr'sfx")
_ini("'`cntptr'")
_conl()
_conl("########################################################################################")
_conl()
_ini("uidel:pfx'^chrptr'sfx")
_ini("uidel:pfx'^chrptr'")
_ini("uidel:'^chrptr'sfx")
_ini("uidel:'^chrptr'")
_conl()
_conl("########################################################################################")
_conl()
_ini("pfx'^chrptr'sfx")
_ini("pfx'^chrptr'")
_ini("'^chrptr'sfx")
_ini("'^chrptr'")
_conl()
_conl("########################################################################################")
_conl()
}
function _tstv(p, A, r, f)
{
if (f == "") {
f = "tst_splitstr"
}
@f(_NOP, A, p)
@f(AA0, A, p)
@f(AB0, A, p)
@f(AC0, A, p)
@f("", A, p)
@f("a", A, p)
@f("\264a", A, p)
@f("\264", A, p)
@f("a\264\264\264,ba\264\264\264,", A, p)
@f("\264,", A, p)
@f(",", A, p)
@f("\264a,", A, p)
@f("ab,", A, p)
@f("ab,\264", A, p)
@f("\264a\264,,ba", A, p)
@f(",a,,b\264,c,,\264a,,\264,,,", A, p)
}
function _typ(p)
{
return (_t0 = (isarray(p) ? "#" : (p == 0 ? (p == "" ? 0 : (p in _CLASSPTR ? "`" : (p ? 3 : 4))) : (p in _CLASSPTR ? "`" : (p + 0 == p ? 5 : (p ? 3 : 2))))))
}
function _typa(p, A)
{
return (_t0 = (isarray(p) ? "#" : (p == 0 ? (p == "" ? 0 : (p in A ? "`" : (p ? 3 : 4))) : (p in A ? "`" : (p + 0 == p ? 5 : (p ? 3 : 2))))))
}
function _tzend(a, b)
{
if (b == 0 && b == "") {
return (_TEND[_TEND[_ARRLEN]] = a)
} else {
return (_TEND[_TEND[_ARRLEN] + a] = b)
}
}
function _uidcyc(p, i)
{
_dumpuidgen(p)
for (i = 1; i < 64 * 8 * 6 - 1; i++) {
_conl(i ":" _var(_getuid(p)))
}
_dumpuidgen(p)
}
function _une(t)
{
return gensub(/\xB4(.)/, "\\1", "G", t)
}
function _unformatrexp(t)
{
_formatstrq0 = split(t, _FORMATSTRA, /(\\[0-9]{1,3})|(\\x[[:xdigit:]]+)|(\\.)/, _FORMATSTRB)
_formatstrs0 = ""
for (t = 1; t < _formatstrq0; t++) {
_formatstrs0 = _formatstrs0 _FORMATSTRA[t] ((_FORMATSTRB[t] in _QESCHR ? _QESCREXP[_FORMATSTRB[t]] : _QESCREXP[toupper(substr(_FORMATSTRB[t], length(_FORMATSTRB[t]) - 1))]))
}
return (_formatstrs0 _FORMATSTRA[t])
}
function _unformatrexp_init(i, a)
{
_formatstrs0 = "\\^$.[]|()*+?{}-sSwW<>yB`'"
delete _FORMATSTRB
for (i = 0; i < 256; i++) {
_QESCREXP["\\" _CHR[i]] = (index(_formatstrs0, _CHR[i]) ? "\\" _CHR[i] : _CHR[i])
}
for (i = 0; i < 256; i++) {
a = (index(_formatstrs0, _CHR[i]) ? "\\" : "")
_QESCREXP[sprintf("%.2X", i)] = a _CHR[i]
_QESCREXP["\\" sprintf("%.3o", i)] = a _CHR[i]
if (i < 8) {
_QESCREXP["\\" sprintf("%.1o", i)] = a _CHR[i]
}
if (i < 64) {
_QESCREXP["\\" sprintf("%.2o", i)] = a _CHR[i]
}
if (i < 16) {
_QESCREXP["\\x" sprintf("%.1X", i)] = _QESCREXP["\\x" sprintf("%.1x", i)] = a _CHR[i]
}
}
patsplit("a" 7 "b" 8 "f" 12 "n" 10 "r" 13 "t" 9 "v" 11, _FORMATSTRA, /[^0-9]/, _FORMATSTRB)
for (i in _FORMATSTRA) {
_QESCREXP["\\" _FORMATSTRA[i]] = _CHR[_FORMATSTRB[i] + 0]
}
}
function _unformatstr(t)
{
_formatstrq0 = split(t, _FORMATSTRA, /(\\[0-9]{1,3})|(\\x[[:xdigit:]]+)|(\\.)/, _FORMATSTRB)
_formatstrs0 = ""
for (t = 1; t < _formatstrq0; t++) {
_formatstrs0 = _formatstrs0 _FORMATSTRA[t] ((_FORMATSTRB[t] in _QESCHR ? _QESCHR[_FORMATSTRB[t]] : _QESCHR[toupper(substr(_FORMATSTRB[t], length(_FORMATSTRB[t]) - 1))]))
}
return (_formatstrs0 _FORMATSTRA[t])
}
function _unformatstr_init(i)
{
for (i = 0; i < 256; i++) {
_QESCHR["\\" _CHR[i]] = _CHR[i]
}
for (i = 0; i < 256; i++) {
_QESCHR[sprintf("%.2X", i)] = _CHR[i]
_QESCHR["\\" sprintf("%.3o", i)] = _CHR[i]
if (i < 8) {
_QESCHR["\\" sprintf("%.1o", i)] = _CHR[i]
}
if (i < 64) {
_QESCHR["\\" sprintf("%.2o", i)] = _CHR[i]
}
if (i < 16) {
_QESCHR["\\x" sprintf("%.1X", i)] = _QESCHR["\\x" sprintf("%.1x", i)] = _CHR[i]
}
}
i = "a" 7 "b" 8 "f" 12 "n" 10 "r" 13 "t" 9 "v" 11
patsplit(i, _FORMATSTRA, /[^0-9]/, _FORMATSTRB)
for (i in _FORMATSTRA) {
_QESCHR["\\" _FORMATSTRA[i]] = _CHR[_FORMATSTRB[i] + 0]
}
}
function _uninit_del(A, i, p0)
{
_del(i)
}
function _unstr(t)
{
return gensub(/\\(.)/, "\\1", "G", t)
}
function _untmp(f, a)
{
if (f = filepath(f)) {
if (match(f, /\\$/)) {
_deletepfx(_FILEIO_RDTMP, a = toupper(f))
_deletepfx(_FILEIO_RDNETMP, a)
} else {
delete _FILEIO_RDNETMP[toupper(f)]
}
return f
}
return ""
}
function _val(v, t)
{
if (isarray(v)) {
return (_dumparr(v) _ln(t))
}
if (v == 0 && v == "") {
return (_ln("- (ERRNO=" ERRNO ")") _ln(t))
}
return (_ln(v "'") _ln(t))
}
function _val0(v)
{
if (isarray(v)) {
return _dumparr(v)
}
if (v == 0 && v == "") {
return "-"
}
return ("\"" v "\"")
}
function _var(v, t)
{
if (isarray(v)) {
return (_dumparr(v) _ln(t))
}
if (v == 0 && v == "") {
return (_ln("- (ERRNO=" ERRNO ")") _ln(t))
}
return (_ln(v "'") _ln(t))
}
function _verb(t, d, A)
{
if (_ERRLOG_VF) {
A["TYPE"] = "VERB"
A["TEXT"] = t
_log(A, d)
}
}
function _wFBRO(p, v, a)
{
if (p) {
if (v) {
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (p in _tPARENT) {
p = _tPARENT[p]
if (v in _tNEXT) {
if (v in _tPREV) {
_tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v]
delete _tPREV[v]
if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v)
}
--_tQCHLD[a]
}
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tPREV[_tFCHLD[a] = _tNEXT[v]]
--_tQCHLD[a]
} else {
delete _tPREV[_tNEXT[v]]
}
++_tQCHLD[p]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v)
} else {
if (v in _tPREV) {
if (v in _tPARENT) {
delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]]
if (p == a) {
delete _tPREV[v]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v)
}
--_tQCHLD[a]
} else {
delete _tNEXT[_tPREV[v]]
}
delete _tPREV[v]
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tFCHLD[a]
delete _tLCHLD[a]
delete _tQCHLD[a]
}
++_tQCHLD[p]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v)
}
} else {
while (p in _tPREV) {
p = _tPREV[p]
}
if (v in _tPREV) {
if (v in _tPARENT) {
--_tQCHLD[a = _tPARENT[v]]
delete _tPARENT[v]
if (v in _tNEXT) {
_tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v]
} else {
delete _tNEXT[_tLCHLD[a] = _tPREV[v]]
}
} else if (v in _tNEXT) {
_tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v]
} else {
delete _tNEXT[_tPREV[v]]
}
delete _tPREV[v]
} else {
if (p == v) {
return v
}
if (v in _tPARENT) {
if (v in _tNEXT) {
delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]]
--_tQCHLD[a]
} else {
delete _tLCHLD[a = _tPARENT[v]]
delete _tFCHLD[a]
delete _tQCHLD[a]
}
delete _tPARENT[v]
} else if (v in _tNEXT) {
delete _tPREV[_tNEXT[v]]
}
}
return (_tPREV[_tNEXT[v] = p] = v)
}
} else {
if (v == 0) {
return v
}
return v
}
} else {
if (p == 0) {
return v
}
if (v) {
return _texclude(v)
}
return v
}
}
function _wFCHLD(p, v, a)
{
if (p) {
if (v) {
if (p == v) {
return v
}
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (v in _tNEXT) {
if (v in _tPREV) {
_tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v]
delete _tPREV[v]
if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v)
}
--_tQCHLD[a]
}
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tPREV[_tFCHLD[a] = _tNEXT[v]]
--_tQCHLD[a]
} else {
delete _tPREV[_tNEXT[v]]
}
if (p in _tFCHLD) {
++_tQCHLD[p]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v)
}
delete _tNEXT[v]
} else {
if (v in _tPREV) {
if (v in _tPARENT) {
delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]]
if (p == a) {
delete _tPREV[v]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[p]] = v)
}
--_tQCHLD[a]
} else {
delete _tNEXT[_tPREV[v]]
}
delete _tPREV[v]
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tFCHLD[a]
delete _tLCHLD[a]
delete _tQCHLD[a]
}
if (p in _tFCHLD) {
++_tQCHLD[p]
return (_tFCHLD[p] = _tPREV[_tNEXT[v] = _tFCHLD[_tPARENT[v] = p]] = v)
}
}
_tQCHLD[p] = 1
return (_tFCHLD[_tPARENT[v] = p] = _tLCHLD[p] = v)
} else {
if (v == 0) {
if (p in _tFCHLD) {
v = _tFCHLD[p]
delete _tFCHLD[p]
delete _tLCHLD[p]
delete _tQCHLD[p]
do {
delete _tPARENT[v]
} while (v in _tNEXT && (v = _tNEXT[v]))
}
}
return v
}
} else {
if (p == 0) {
return v
}
return v
}
}
function _wLBRO(p, v, a)
{
if (p) {
if (v) {
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (p in _tPARENT) {
p = _tPARENT[p]
if (v in _tPREV) {
if (v in _tNEXT) {
_tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v]
delete _tNEXT[v]
if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v)
}
--_tQCHLD[a]
}
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tNEXT[_tLCHLD[a] = _tPREV[v]]
--_tQCHLD[a]
} else {
delete _tNEXT[_tPREV[v]]
}
++_tQCHLD[p]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v)
} else {
if (v in _tNEXT) {
if (v in _tPARENT) {
delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]]
if (p == a) {
delete _tNEXT[v]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v)
}
--_tQCHLD[a]
} else {
delete _tPREV[_tNEXT[v]]
}
delete _tNEXT[v]
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tLCHLD[a]
delete _tFCHLD[a]
delete _tQCHLD[a]
}
++_tQCHLD[p]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v)
}
} else {
while (p in _tNEXT) {
p = _tNEXT[p]
}
if (v in _tNEXT) {
if (v in _tPARENT) {
--_tQCHLD[a = _tPARENT[v]]
delete _tPARENT[v]
if (v in _tPREV) {
_tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v]
} else {
delete _tPREV[_tFCHLD[a] = _tNEXT[v]]
}
} else if (v in _tPREV) {
_tPREV[_tNEXT[a] = _tNEXT[v]] = a = _tPREV[v]
} else {
delete _tPREV[_tNEXT[v]]
}
delete _tNEXT[v]
} else {
if (p == v) {
return v
}
if (v in _tPARENT) {
if (v in _tPREV) {
delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]]
--_tQCHLD[a]
} else {
delete _tFCHLD[a = _tPARENT[v]]
delete _tLCHLD[a]
delete _tQCHLD[a]
}
delete _tPARENT[v]
} else if (v in _tPREV) {
delete _tNEXT[_tPREV[v]]
}
}
return (_tNEXT[_tPREV[v] = p] = v)
}
} else {
if (v == 0) {
return v
}
return v
}
} else {
if (p == 0) {
return v
}
if (v) {
return _texclude(v)
}
return v
}
}
function _wLCHLD(p, v, a)
{
if (p) {
if (v) {
if (p == v) {
return v
}
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (v in _tPREV) {
if (v in _tNEXT) {
_tNEXT[_tPREV[a] = _tPREV[v]] = a = _tNEXT[v]
delete _tNEXT[v]
if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v)
}
--_tQCHLD[a]
}
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tNEXT[_tLCHLD[a] = _tPREV[v]]
--_tQCHLD[a]
} else {
delete _tNEXT[_tPREV[v]]
}
if (p in _tLCHLD) {
++_tQCHLD[p]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v)
}
delete _tPREV[v]
} else {
if (v in _tNEXT) {
if (v in _tPARENT) {
delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]]
if (p == a) {
delete _tNEXT[v]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[p]] = v)
}
--_tQCHLD[a]
} else {
delete _tPREV[_tNEXT[v]]
}
delete _tNEXT[v]
} else if (v in _tPARENT) {
if (p == (a = _tPARENT[v])) {
return v
}
delete _tLCHLD[a]
delete _tFCHLD[a]
delete _tQCHLD[a]
}
if (p in _tLCHLD) {
++_tQCHLD[p]
return (_tLCHLD[p] = _tNEXT[_tPREV[v] = _tLCHLD[_tPARENT[v] = p]] = v)
}
}
_tQCHLD[p] = 1
return (_tLCHLD[_tPARENT[v] = p] = _tFCHLD[p] = v)
} else {
if (v == 0) {
if (p in _tFCHLD) {
v = _tFCHLD[p]
delete _tFCHLD[p]
delete _tLCHLD[p]
delete _tQCHLD[p]
do {
delete _tPARENT[v]
} while (v in _tNEXT && (v = _tNEXT[v]))
}
}
return v
}
} else {
if (p == 0) {
return v
}
return v
}
}
function _wLINK(p, v)
{
return (_tLINK[p] = v)
}
function _wNEXT(p, v, a, b)
{
if (p) {
if (v) {
if (p == v) {
return v
}
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (v in _tPREV) {
if (p == (a = _tPREV[v])) {
return v
}
if (v in _tNEXT) {
_tPREV[_tNEXT[a] = _tNEXT[v]] = a
if (v in _tPARENT) {
--_tQCHLD[_tPARENT[v]]
}
} else {
delete _tNEXT[a]
if (v in _tPARENT) {
_tLCHLD[b = _tPARENT[v]] = a
--_tQCHLD[b]
}
}
} else if (v in _tNEXT) {
if (v in _tPARENT) {
delete _tPREV[_tFCHLD[a = _tPARENT[v]] = _tNEXT[v]]
--_tQCHLD[a]
} else {
delete _tPREV[_tNEXT[v]]
}
} else if (v in _tPARENT) {
delete _tFCHLD[a = _tPARENT[v]]
delete _tLCHLD[a]
delete _tQCHLD[a]
}
if (p in _tNEXT) {
_tPREV[_tNEXT[v] = _tNEXT[p]] = v
if (p in _tPARENT) {
++_tQCHLD[_tPARENT[v] = _tPARENT[p]]
} else {
delete _tPARENT[v]
}
} else {
delete _tNEXT[v]
if (p in _tPARENT) {
++_tQCHLD[_tPARENT[_tLCHLD[a] = v] = a = _tPARENT[p]]
} else {
delete _tPARENT[v]
}
}
return (_tNEXT[_tPREV[v] = p] = v)
} else {
if (v == 0) {
return v
}
return v
}
} else {
if (p == 0) {
return v
}
if (v) {
return _texclude(v)
}
return v
}
}
function _wPARENT(p, v)
{
return v
}
function _wPREV(p, v, a, b)
{
if (p) {
if (v) {
if (p == v) {
return v
}
for (a = p; a in _tPARENT; ) {
if ((a = _tPARENT[a]) == v) {
return v
}
}
if (v in _tNEXT) {
if (p == (a = _tNEXT[v])) {
return v
}
if (v in _tPREV) {
_tNEXT[_tPREV[a] = _tPREV[v]] = a
if (v in _tPARENT) {
--_tQCHLD[_tPARENT[v]]
}
} else {
delete _tPREV[a]
if (v in _tPARENT) {
_tFCHLD[b = _tPARENT[v]] = a
--_tQCHLD[b]
}
}
} else if (v in _tPREV) {
if (v in _tPARENT) {
delete _tNEXT[_tLCHLD[a = _tPARENT[v]] = _tPREV[v]]
--_tQCHLD[a]
} else {
delete _tNEXT[_tPREV[v]]
}
} else if (v in _tPARENT) {
delete _tLCHLD[a = _tPARENT[v]]
delete _tFCHLD[a]
delete _tQCHLD[a]
}
if (p in _tPREV) {
_tNEXT[_tPREV[v] = _tPREV[p]] = v
if (p in _tPARENT) {
++_tQCHLD[_tPARENT[v] = _tPARENT[p]]
} else {
delete _tPARENT[v]
}
} else {
delete _tPREV[v]
if (p in _tPARENT) {
++_tQCHLD[_tPARENT[_tFCHLD[a] = v] = a = _tPARENT[p]]
} else {
delete _tPARENT[v]
}
}
return (_tPREV[_tNEXT[v] = p] = v)
} else {
if (v == 0) {
return v
}
return v
}
} else {
if (p == 0) {
return v
}
if (v) {
return _texclude(v)
}
return v
}
}
function _wQBRO(p, v)
{
return v
}
function _wQCHLD(p, v)
{
if (p) {
if (v) {
} else {
if (v == 0) {
if (p in _tFCHLD) {
v = _tFCHLD[p]
delete _tFCHLD[p]
delete _tLCHLD[p]
delete _tQCHLD[p]
do {
delete _tPARENT[v]
} while (v in _tNEXT && (v = _tNEXT[v]))
}
}
return v
}
} else {
if (p == 0) {
return v
}
return v
}
}
function _warning(t, d, A)
{
if (_ERRLOG_WF) {
A["TYPE"] = "WARNING"
A["TEXT"] = t
_log(A, d)
}
}
function _wfilerdnehnd(f, t)
{
if ((f = _filerdne(f)) == "") {
return ""
}
if (! ((t = _filerd(f)) in _WFILEROOTDIR)) {
_cmd("md \"" t "\" 2>NUL")
_WFILEROOTDIR[t]
}
return f
}
function _wonl(t)
{
wonl = wonl _ln(t)
}
function _wonline(t)
{
wonl = wonl _ln(substr(" _ " t " _____________________________________________________________________________________________________________________________________", 1, 126))
}
function _wr_shortcut(f, S)
{
if (_shrtcutf0 = _filepath(f)) {
ERRNO = ""
_shrtcuta0 = _shortcut_fpath " /A:C /F:\"" _shrtcutf0 "\" 2>&1"
for (f in _SHORTCUTWSTRUC) {
if (f in S) {
_shrtcuta0 = _shrtcuta0 " " _SHORTCUTWSTRUC[f] "\"" (gensub(/(\\?)$/, "\\1\\1", 1, S[f])) "\""
}
}
if (_shortcut_nerr(_cmd(_shrtcuta0), _shrtcutf0)) {
return
}
}
return ((ERRNO ? ERRNO = "write shortcut: " ERRNO : _NOP))
}
function _wrfile(f, d, a, b)
{
if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") {
ERRNO = "Filename error"
return
}
a = BINMODE
BINMODE = "rw"
b = ORS
ORS = ""
ERRNO = ""
print(d) > f
if (ERRNO) {
return ""
}
close(f)
BINMODE = a
ORS = b
if (ERRNO) {
return ""
}
return f
}
function _wrfile1(f, d, a, b)
{
if ((f = _wfilerdnehnd(f)) == "" || _filene(f) == "") {
ERRNO = "Filename error"
return
}
a = BINMODE
BINMODE = "rw"
b = ORS
ORS = ""
ERRNO = ""
print(d) > f
if (ERRNO) {
return ""
}
close(f)
BINMODE = a
ORS = b
if (ERRNO) {
return ""
}
return d
}
function _yexport(p)
{
return _tframe("_yexport_i0", p)
}
function _yexport_i0(p, p0, p1, p2)
{
if (p in _tLOG) {
return ("_ERRLOG: " _Zexparr(_tLOG[p]) "\n")
}
if (p in _tSTR) {
p = _tSTR[p]
gsub(/\x1B/, "\033;", p)
gsub(/\x0A/, "\033:", p)
return (p "\n")
}
}
function cmp_str_idx(i1, v1, i2, v2)
{
return ((i1 < i2 ? -1 : 1))
}
function filedi(f, d)
{
if ((f = filerdnehndi(f)) == "") {
return _FILEIO_D
}
if (f in _FILEDIRFL) {
return _FILEDIR[f]
}
if (f in _FILEROOT) {
if (d = filegetdrvdir(_FILEROOT[f])) {
_FILEDIRFL[f]
}
return (_FILEDIR[f] = d _FILEDIR[f])
}
if ((_FILEIO_RD, f) in _FILEDIR) {
return _FILEDIR[_FILEIO_RD, f]
}
return (_FILEDIR[_FILEIO_RD, f] = _FILEIO_D _FILEDIR[f])
}
function filegetdrvdir(t, r)
{
if (t in _FILEDRV) {
return _FILEDRV[t]
}
if (match(r = _cmd("cd " t " 2>NUL"), /[^\x00-\x1F]+/)) {
r = gensub(/[ \t]*([\\\$\:])[ \t]*/, "\\1", "G", substr(r, RSTART, RLENGTH))
gsub(/(^[ \t]*)|([ \t]*$)/, "", r)
if (match(r, /\:(.*)/)) {
return (_FILEDRV[tolower(t)] = _FILEDRV[toupper(t)] = substr(r, RSTART + 1) ((r ~ /\\$/ ? "" : "\\")))
}
}
return ""
}
function filegetrootdir(f, dd, d)
{
if (f in _FILEDIRFL) {
if (f in _FILEROOT) {
return (_FILEROOT[f] _FILEDIR[f])
}
if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) {
return (_FILEROOT[dd, f] _FILEDIR[f])
}
return ((_FILEROOT[dd, f] = fileri(dd)) _FILEDIR[f])
}
if (f in _FILEROOT) {
if (d = filegetdrvdir(_FILEROOT[f])) {
_FILEDIRFL[f]
return (_FILEROOT[f] (_FILEDIR[f] = d _FILEDIR[f]))
} else {
return (_FILEROOT[f] _FILEDIR[f])
}
}
if ((dd = (dd ? dd : _FILEIO_RD), f) in _FILEROOT) {
if ((dd, f) in _FILEDIR) {
return (_FILEROOT[dd, f] _FILEDIR[dd, f])
}
if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) {
return (_FILEROOT[dd, f] (_FILEDIR[dd, f] = d))
}
return (_FILEROOT[dd, f] d)
}
if ((dd, f) in _FILEDIR) {
return ((_FILEROOT[dd, f] = fileri(dd)) _FILEDIR[dd, f])
}
if ((d = filedi(dd) _FILEDIR[f]) ~ /^\\/) {
return ((_FILEROOT[dd, f] = fileri(dd)) (_FILEDIR[dd, f] = d))
}
return ((_FILEROOT[dd, f] = fileri(dd)) d)
}
function filerdnehndi(st, a, c, r, d, n, A)
{
if (st) {
if ((c = toupper(st)) in _FILECACHE) {
return _FILECACHE[c]
}
if (match(st, /^[ \t]*\\[ \t]*\\/)) {
if (match(substr(st, a = RLENGTH + 1), /^[ \t]*([0-9A-Za-z\-]+)[ \t]*(\\[ \t]*([A-Za-z])[ \t]*\$[ \t]*)?(\\[ \t]*([0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)*[ \t]*)?(([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)) {
a = a + RLENGTH
d = ((A[3] ? "\\" A[3] "$" : "")) "\\" A[5]
gsub(/[ \t]*\\[ \t]*/, "\\", d)
if ((st = toupper((r = "\\\\" A[1]) d (n = A[8]))) in _FILECACHE) {
return (_FILECACHE[substr(c, 1, a)] = _FILECACHE[st])
}
_FILEDIR[c = _FILECACHE[substr(c, 1, a)] = _FILECACHE[st] = ++_file_rootcntr] = d
_FILEDIRFL[c]
_FILEROOT[c] = r
} else {
_filepath_err = "UNC"
return ""
}
} else {
match(st, /^(([ \t]*\.[ \t]*\\[ \t]*)|(([ \t]*([A-Za-z])[ \t]*(\:)[ \t]*)?([ \t]*(\\)[ \t]*)?))([ \t]*(([ \t]*[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+( +[0-9A-Za-z_\!\+\-\[\]\(\)\{\}\~\.]+)*[ \t]*\\)+)[ \t]*)?([ \t]*([0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+( +[0-9A-Za-z_\!\+\.\~\-\[\]\{\}\(\)]+)*)[ \t]*)?/, A)
if (! RLENGTH) {
return ""
}
d = A[8] A[10]
gsub(/[ \t]*\\[ \t]*/, "\\", d)
if ((st = toupper((r = A[5] A[6]) d (n = A[14]))) in _FILECACHE) {
return (_FILECACHE[substr(c, 1, RLENGTH)] = _FILECACHE[st])
}
_FILEDIR[c = _FILECACHE[substr(c, 1, RLENGTH)] = _FILECACHE[st] = ++_file_rootcntr] = d
if (A[8]) {
_FILEDIRFL[c]
}
if (r) {
_FILEROOT[c] = r
}
}
if (n) {
if (match(n, /\.[^\.]*$/)) {
_FILEXT[c] = substr(n, RSTART)
_FILENAM[c] = substr(n, 1, RSTART - 1)
} else {
_FILENAM[c] = n
}
}
return c
}
return ""
}
function fileri(f)
{
if ((f = filerdnehndi(f)) == "") {
return _FILEIO_R
}
if (f in _FILEROOT) {
return _FILEROOT[f]
}
if ((_FILEIO_RD, f) in _FILEROOT) {
return _FILEROOT[_FILEIO_RD, f]
}
return (_FILEROOT[_FILEIO_RD, f] = _FILEIO_R)
}
function hujf(a, b, c)
{
_conl("hujf(" a "," b "," c ")")
}
function ncmp_str_idx(i1, v1, i2, v2)
{
return ((i1 < i2 ? 1 : -1))
}
function test_cfg(p, z, AA0, a)
{
AA0[1]
_fclass = _cfguid(p = _getuid(_classys), _NOP, _NOP, _NOP, _NOP, _classys)
_conl()
_conline()
_conl()
_drawuid(p)
_fclass = _cfguid(p = _getuid(_classys), AA0, AA0, AA0, AA0, _classys)
_conl()
_conline()
_conl()
_drawuid(p)
a = _getuid(z = _fclass = _cfguid(p = _getuid(_classys), p, "<", ">", "ab", "cd"))
_conl("### " a "########")
_conline()
_conl()
_drawuid(p)
a = _getuid(_fclass = _cfguid(p = _getuid(_classys), z, 0, 0, _NOP, z))
_conl("### " a "########")
_conline()
_conl()
_drawuid(p)
a = _getuid(_fclass = _cfguid(p = _getuid(_classys), z, "^", "$", z, _classys))
_conl("### " a "########")
_conline()
_conl()
_drawuid(p)
_fclass = _cfguid(p = _getuid(_classys), "oblptr", "pfx", "sfx", "abcd")
_conl()
_conline()
_conl()
_drawuid(p)
_conl("```````````````````" z "'''''''''" ((_isptr(z) ? " ptr" : " not ptr")))
_drawuid(z)
}
function test_splitstr(A)
{
AA0[-1] = "huj"
AA0["A"] = "pizda"
AA0[1] = "zhopa"
delete AB0[AB0[""] = ""]
AC0[-1] = "HUJ"
AC0["A"] = "PIZDA"
AC0[1] = "ZHOPA"
_SPLITSTRB0["1"]
wonl = ""
_tstv(0, A, 0, "_tstv")
_conl(wonl)
_wrfile("wonl.out", wonl)
}
function test_uid(p, i)
{
_fclass = _cfguid(p = _getuid(_classys), p, "pfx", "sfx", "abc")
_conl("_fclass uid: " _getuid(_fclass))
_drawuid(_fclass)
_conl("_classys uid: " _getuid(_classys)) _drawuid(_classys)
for (i = 1; i < 81; i++) {
_conl(i ": " _getuid(_fclass))
}
_drawuid(_fclass)
}
function tst_splitstr(t, A, R, r)
{
delete A
A["not cleared"]
_wonl()
_wonline("_splitstr(" ((isarray(t) ? "ARR" ((length(t) > 0 ? "#" ((t[1] != "zhopa" ? "U" : "l")) : "")) : _val0(t))) ",A" ((isarray(R) ? ", ARR" ((length(R) > 0 ? "#" ((R[1] != "zhopa" ? "U" : "l")) : "")) : ", " _val0(R))) "):")
_wonl(_val0(r = _splitstr(t, A, R)))
_wonl("arrary A:")
_wonl(_dumparr(A))
return r
}
function tts(p, uidel, psfx, cnt, chr, p5, p6, p7, im)
{
im = " "
im = ".. .."
_conl("ret: " _qparam(im, p, uidel, psfx, cnt, chr, p5, p6, p7) "'")
_conl("mask: `" _qparamask "'")
}
function zorr(A, i, r)
{
if (i in A) {
_conl("`" i "' in A")
} else {
_conl("`" i "' not in A")
}
r = A[i] == "" && A[i] == 0
_conl("A[" i "] status is " r)
return
a = a + -a
_conl("``````````````" a "''''''''''''''''")
}
function zzer()
{
}