From d45950d46037d169d5efd969ac2e3b7477481f9c Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Thu, 7 Nov 2013 15:42:36 +0100 Subject: Remove pman --- lib/pman/AUTHORS | 9 - lib/pman/Makefile | 34 - lib/pman/doc/html/.gitignore | 0 lib/pman/doc/man3/.gitignore | 0 lib/pman/doc/pdf/.gitignore | 0 lib/pman/doc/src/Makefile | 116 --- lib/pman/doc/src/book.xml | 43 - lib/pman/doc/src/fascicules.xml | 18 - lib/pman/doc/src/main_window.gif | Bin 14431 -> 0 bytes lib/pman/doc/src/main_window.ps | 1573 ----------------------------------- lib/pman/doc/src/note.gif | Bin 1539 -> 0 bytes lib/pman/doc/src/notes.xml | 211 ----- lib/pman/doc/src/options.gif | Bin 5218 -> 0 bytes lib/pman/doc/src/options.ps | 829 ------------------ lib/pman/doc/src/part.xml | 37 - lib/pman/doc/src/part_notes.xml | 39 - lib/pman/doc/src/pman.xml | 88 -- lib/pman/doc/src/pman_chapter.xml | 377 --------- lib/pman/doc/src/ref_man.xml | 37 - lib/pman/doc/src/toolbar.gif | Bin 6848 -> 0 bytes lib/pman/doc/src/trace.gif | Bin 9829 -> 0 bytes lib/pman/doc/src/trace.ps | 1312 ----------------------------- lib/pman/doc/src/warning.gif | Bin 1498 -> 0 bytes lib/pman/ebin/.gitignore | 0 lib/pman/info | 2 - lib/pman/priv/Makefile | 58 -- lib/pman/priv/pman.gif | Bin 199 -> 0 bytes lib/pman/priv/pman.tool | 6 - lib/pman/src/Makefile | 112 --- lib/pman/src/assert.hrl | 81 -- lib/pman/src/pman.app.src | 40 - lib/pman/src/pman.appup.src | 19 - lib/pman/src/pman.erl | 132 --- lib/pman/src/pman_buf.erl | 117 --- lib/pman/src/pman_buf.hrl | 29 - lib/pman/src/pman_buf_buffer.erl | 102 --- lib/pman/src/pman_buf_converter.erl | 190 ----- lib/pman/src/pman_buf_printer.erl | 91 -- lib/pman/src/pman_buf_utils.erl | 106 --- lib/pman/src/pman_main.erl | 789 ------------------ lib/pman/src/pman_module_info.erl | 133 --- lib/pman/src/pman_options.erl | 395 --------- lib/pman/src/pman_options.hrl | 34 - lib/pman/src/pman_process.erl | 317 ------- lib/pman/src/pman_relay.erl | 127 --- lib/pman/src/pman_relay_server.erl | 57 -- lib/pman/src/pman_shell.erl | 827 ------------------ lib/pman/src/pman_tool.erl | 146 ---- lib/pman/src/pman_win.erl | 677 --------------- lib/pman/src/pman_win.hrl | 39 - lib/pman/vsn.mk | 1 - 51 files changed, 9350 deletions(-) delete mode 100644 lib/pman/AUTHORS delete mode 100644 lib/pman/Makefile delete mode 100644 lib/pman/doc/html/.gitignore delete mode 100644 lib/pman/doc/man3/.gitignore delete mode 100644 lib/pman/doc/pdf/.gitignore delete mode 100644 lib/pman/doc/src/Makefile delete mode 100644 lib/pman/doc/src/book.xml delete mode 100644 lib/pman/doc/src/fascicules.xml delete mode 100644 lib/pman/doc/src/main_window.gif delete mode 100644 lib/pman/doc/src/main_window.ps delete mode 100644 lib/pman/doc/src/note.gif delete mode 100644 lib/pman/doc/src/notes.xml delete mode 100644 lib/pman/doc/src/options.gif delete mode 100644 lib/pman/doc/src/options.ps delete mode 100644 lib/pman/doc/src/part.xml delete mode 100644 lib/pman/doc/src/part_notes.xml delete mode 100644 lib/pman/doc/src/pman.xml delete mode 100644 lib/pman/doc/src/pman_chapter.xml delete mode 100644 lib/pman/doc/src/ref_man.xml delete mode 100644 lib/pman/doc/src/toolbar.gif delete mode 100644 lib/pman/doc/src/trace.gif delete mode 100644 lib/pman/doc/src/trace.ps delete mode 100644 lib/pman/doc/src/warning.gif delete mode 100644 lib/pman/ebin/.gitignore delete mode 100644 lib/pman/info delete mode 100644 lib/pman/priv/Makefile delete mode 100644 lib/pman/priv/pman.gif delete mode 100644 lib/pman/priv/pman.tool delete mode 100644 lib/pman/src/Makefile delete mode 100644 lib/pman/src/assert.hrl delete mode 100644 lib/pman/src/pman.app.src delete mode 100644 lib/pman/src/pman.appup.src delete mode 100644 lib/pman/src/pman.erl delete mode 100644 lib/pman/src/pman_buf.erl delete mode 100644 lib/pman/src/pman_buf.hrl delete mode 100644 lib/pman/src/pman_buf_buffer.erl delete mode 100644 lib/pman/src/pman_buf_converter.erl delete mode 100644 lib/pman/src/pman_buf_printer.erl delete mode 100644 lib/pman/src/pman_buf_utils.erl delete mode 100644 lib/pman/src/pman_main.erl delete mode 100644 lib/pman/src/pman_module_info.erl delete mode 100644 lib/pman/src/pman_options.erl delete mode 100644 lib/pman/src/pman_options.hrl delete mode 100644 lib/pman/src/pman_process.erl delete mode 100644 lib/pman/src/pman_relay.erl delete mode 100644 lib/pman/src/pman_relay_server.erl delete mode 100644 lib/pman/src/pman_shell.erl delete mode 100644 lib/pman/src/pman_tool.erl delete mode 100644 lib/pman/src/pman_win.erl delete mode 100644 lib/pman/src/pman_win.hrl delete mode 100644 lib/pman/vsn.mk (limited to 'lib') diff --git a/lib/pman/AUTHORS b/lib/pman/AUTHORS deleted file mode 100644 index 5a354526b4..0000000000 --- a/lib/pman/AUTHORS +++ /dev/null @@ -1,9 +0,0 @@ -pman was first implemented for the old X windows interface "pxw" by -Claes Wikström and has since then been rewritten a couple of times by -among others Peter Olin. - -Original Authors and Contributors: - -Claes Wikström -Peter Olin -Gunilla Arendt \ No newline at end of file diff --git a/lib/pman/Makefile b/lib/pman/Makefile deleted file mode 100644 index 3600504d07..0000000000 --- a/lib/pman/Makefile +++ /dev/null @@ -1,34 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2009. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Common Macros -# ---------------------------------------------------- - -SUB_DIRECTORIES = src priv doc/src - -SPECIAL_TARGETS = - -# ---------------------------------------------------- -# Default Subdir Targets -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_subdir.mk - diff --git a/lib/pman/doc/html/.gitignore b/lib/pman/doc/html/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/pman/doc/man3/.gitignore b/lib/pman/doc/man3/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/pman/doc/pdf/.gitignore b/lib/pman/doc/pdf/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/pman/doc/src/Makefile b/lib/pman/doc/src/Makefile deleted file mode 100644 index d9e0317f05..0000000000 --- a/lib/pman/doc/src/Makefile +++ /dev/null @@ -1,116 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1997-2012. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -# -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../../vsn.mk -VSN=$(PMAN_VSN) -APPLICATION=pman - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- -XML_APPLICATION_FILES = ref_man.xml -XML_REF3_FILES = pman.xml - -XML_PART_FILES = part.xml part_notes.xml -XML_CHAPTER_FILES = pman_chapter.xml notes.xml - -BOOK_FILES = book.xml - -XML_FILES = \ - $(BOOK_FILES) $(XML_CHAPTER_FILES) \ - $(XML_PART_FILES) $(XML_REF3_FILES) $(XML_APPLICATION_FILES) - -GIF_FILES = \ - main_window.gif \ - trace.gif \ - options.gif - -# ---------------------------------------------------- - -HTML_FILES = $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%.html) \ - $(XML_PART_FILES:%.xml=$(HTMLDIR)/%.html) - -INFO_FILE = ../../info - -MAN3_FILES = $(XML_REF3_FILES:%.xml=$(MAN3DIR)/%.3) - -HTML_REF_MAN_FILE = $(HTMLDIR)/index.html - -TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf - - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- -XML_FLAGS += - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -$(HTMLDIR)/%.gif: %.gif - $(INSTALL_DATA) $< $@ - -docs: pdf html man - -$(TOP_PDF_FILE): $(XML_FILES) - -pdf: $(TOP_PDF_FILE) - -html: gifs $(HTML_REF_MAN_FILE) - -man: $(MAN3_FILES) - -gifs: $(GIF_FILES:%=$(HTMLDIR)/%) - -debug opt: - -clean clean_docs: - rm -rf $(HTMLDIR)/* - rm -f $(MAN3DIR)/* - rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) - rm -f errs core *~ - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_docs_spec: docs - $(INSTALL_DIR) "$(RELSYSDIR)/doc/pdf" - $(INSTALL_DATA) $(TOP_PDF_FILE) "$(RELSYSDIR)/doc/pdf" - $(INSTALL_DIR) "$(RELSYSDIR)/doc/html" - $(INSTALL_DATA) $(HTMLDIR)/* \ - "$(RELSYSDIR)/doc/html" - $(INSTALL_DATA) $(INFO_FILE) "$(RELSYSDIR)" - $(INSTALL_DIR) "$(RELEASE_PATH)/man/man3" - $(INSTALL_DATA) $(MAN3DIR)/* "$(RELEASE_PATH)/man/man3" - - -release_spec: diff --git a/lib/pman/doc/src/book.xml b/lib/pman/doc/src/book.xml deleted file mode 100644 index 809015016b..0000000000 --- a/lib/pman/doc/src/book.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - -
- - 19972013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman - - - - -
- Pman - - - - - - - - - - - -
- diff --git a/lib/pman/doc/src/fascicules.xml b/lib/pman/doc/src/fascicules.xml deleted file mode 100644 index 37feca543f..0000000000 --- a/lib/pman/doc/src/fascicules.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - User's Guide - - - Reference Manual - - - Release Notes - - - Off-Print - - - diff --git a/lib/pman/doc/src/main_window.gif b/lib/pman/doc/src/main_window.gif deleted file mode 100644 index e12754631c..0000000000 Binary files a/lib/pman/doc/src/main_window.gif and /dev/null differ diff --git a/lib/pman/doc/src/main_window.ps b/lib/pman/doc/src/main_window.ps deleted file mode 100644 index c66620c677..0000000000 --- a/lib/pman/doc/src/main_window.ps +++ /dev/null @@ -1,1573 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./main_window.tmp.eps) -%%CreationDate: (Tue Jun 12 18:03:36 2001) -%%BoundingBox: 0 22 377 234 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 22 377 234 -userdict begin -%%BeginData: -DisplayImage -0 22 -377.000000 212.000000 -12 -757 426 -1 -0 -0 -16 -ffffff -000000 -b24d7a -dcadc2 -57253b -0000ff -d9d9d9 -c3c3c3 -bebebe -828282 -000000 -000000 -000000 -000000 -000000 -000000 -03ff03ff03ff0311040003ff03ff03b70400031c04000301021a0400030002ff02ff02b6 -04000300021a04010301021a0400030002ff02ff02b604000300021a04010301021a0400 -030002ff02ff02b604000300021a0401030102020418030004ff04ff04b7030004170202 -040103010202040003ff03ff03e902020401030102020400030002150400030002ff02ff -029e04000300021504000300021504000300020204010301020204000300021504000300 -02ff02ff029e040003000215040003000215040003000202040103010202040003000215 -0400030002ff02ff029e0400030002150400030002150400030002020401030102020400 -030002150400030002ff02ff029e040003000215040003000202030f0202040003000202 -0401030102020400030002150400030002ff0272000302ff022704000300021504000300 -02020300020d040002020400030002020401030102020400030002150400030002d10006 -0202000102060001020600010206000102050000020a00050225000102380001021b0004 -020d00010208000102ee0400030002150400030002020300020d04000202040003000202 -0401030102020400030002150400030002d1000102020002020100020204000202050002 -0206000202040000020900010203000102240001023800010219000102040000020c0001 -0208000102ee0400030002150400030002020300020d0400020204000300020204010301 -02020400030002150400030002d100010203000102010002020400020205000002000001 -02050002020400000208000102050001025e00010218000002070000020b000102f90400 -030002150400030002020300020d04000202040003000202040103010202040003000215 -0400030002d1000102030001020100000200000002030003020500000200000102050000 -020000010203000002030001020100010207000302040000020300030203000102000003 -020400000201000102040003020100010203000002030001020700040202000102000003 -020800040202000402040004020300000203000302010000020300040201000102000003 -020300010201000102040000020200040203000402d30400030002150400030002020300 -020d04000202040003000202040103010202040003000202030f02020400030002d10001 -020300010201000002000001020200000200000102040001020000010205000002000002 -020200000203000102010001020700010200000002040000020200010201000102020002 -020200000204000002010001020300010201000102000001020200020202000002070001 -020200010201000202020001020800010203000102020001020200010202000102020000 -020100010202000002010000020200010205000202020001020200010202000002040000 -02020000020200010201000102d7040003000208030302080400030002020300020d0400 -02020400030002020401030102020400030002020300020d040002020400030002d10001 -020200010202000002000001020200000200000102040000020200010204000002010001 -020200000207000102070001020000010202000002020001020300010201000102030001 -020200000202000102020001020300010200000002020000020000000202000002060001 -020400010200000102030001020800010202000102040001020000010204000102000000 -020200000202000102010000020100010206000102030001020200010202000102020000 -020700010201000102d704000300020803000201040002080400030002020300020d0400 -02020400030002020401030102020400030002020300020d040002020400030002d10005 -020300000201000102000000020100010203000102020001020400000202000102010000 -020700010207000102000001020200000202000102030001020100010203000102020000 -020200010202000102030001020000010201000002000000020100010206000102040001 -020000010203000102080001020200010204000102000001020400010200000002010000 -020200010202000002010001020600010203000102020001020200010202000002070001 -0201000302d504000300020803000201040002080400030002020300020d040002020400 -030002020401030102020400030002020300040e02020400030002d10001020700000201 -000102000000020100010203000102020002020300000202000202000000020700010207 -000102010000020100010202000702010001020400000201000102020001020200070200 -000102000001020000000201000002070001020400010200000102030001020800010202 -000102040001020000010204000102000000020100000201000202010001020100010206 -000102030001020200010203000002010001020400040203000302d30400030002080300 -040202080400030002020300020d04000202040003000202040103010202040003000215 -0400030002d1000102070000020100010200000002010001020300070203000002030001 -020000000207000102070001020100010200000002030001020700010204000102000000 -020300010202000102070000020000000201000102000000020700010204000102000001 -020300010208000102020001020400010200000102040001020000000201000002010000 -020000000201000002020001020600010203000102020001020300010200000002030002 -020100010205000202d20400030002150400030002020300020d04000202040003000202 -0401030102020400030002150400030002d1000102070000020200010202000102020001 -020400010203000002040002020800010205000102020001020000000203000102070001 -020400010200000002030001020200010207000002000000020200000200000002070001 -020400010200000102030001020800010202000102040001020000010204000102010000 -020000020201000202030001020600010203000102020001020300010200000002030001 -020200010206000102d20400030002150400030002020300020d04000202040003000202 -0401030102020400030002150400030002d1000102070000020200010202000102020000 -020600010202000002040002020300010203000102030001020400010205000102030000 -020100010205000102040001020300010203000002010002020200010209000102020001 -020100010203000102080001020300010202000102020001020200010202000102030000 -020700010202000002010001020300010202000102040001020400010202000102010000 -0203000102d20400030002150400030002020300020d0400020204000300020204010301 -02020400030002150400030002d100010207000002070001020100010206000102020000 -020500010203000102040005020500010207000402010001020500010204000102050004 -0201000102030001020a0004020200010203000102080001020400040204000402050003 -020900040201000102030001020200010204000102050003020000010200000502d30400 -030002150400030002020300020d04000202040003000202040103010202040003000215 -0400030002ff02ff029e0400030002150400030002020300020d04000202040003000202 -0401030102020400030002150400030002ff02ff029e0400030002150400030002020300 -040e02020400030002020401030102020400030002150400030002ff02ff029e04000300 -02150400030002150400030002020401030102020400030002150400030002ff02ff029e -0400030002150400030002150400030002020401030102020400030002150400030002ff -02ff029e04000300021504000300021504000300020204010300040403000416030004ff -04ff049f030004160300041603000404030500ff00ff00e80304040003010202040000ff -00ff00e70900030002020401030102020400000106ff06ff06e409010300020204010301 -02020400000106ff06ff06e40901030002020401030102020400000106ff06ff06e40901 -030002020401030102020400000106ff06ff06e409010300020204010301020204000001 -06ff06ff06e409010300020204010301020204000001060b01040604010006030102061f -01000602010006040100062601040633010006020100060c010006ff06ff060201000602 -010006090102061309010300020204010301020204000001060b0100060f0100061f0100 -06020100062e01000635010106010100060c010006ff06ff0602010006020100060b0100 -061309010300020204010301020204000001060b01000606010206050100060301020618 -010006020100060201020603010206020100060201000619010006030100060001010603 -010206030102060301020618010106010100060201020603010106000100060201020603 -010206ff06f501000602010006020102060501000602010006000101060c090103000202 -04010301020204000001060b010006080100060501000602010006020100061801000600 -010006050100060201000602010006010100060201000619010006030101060101000601 -010006020100060101000602010006010100060201000617010006000100060001000601 -01000602010006010100060101010601010006020100060101000602010006ff06f40100 -060201000601010006020100060401000602010106010100060b09010300020204010301 -020204000001060b01030605010006050100060201000602010006180100060001000605 -010006020100060201000601010006000100060001000619010006030100060901000601 -010006050100060201000617010006000100060001000601010006020100060101000602 -010006010100060201000601010006ff06f8010406010100060201000604010006020100 -06020100060b09010300020204010301020204000001060b010006080100060501000602 -010406180100060001000605010006020104060101000600010006000100061901000603 -010006060103060101000605010406170100060101010601010006020100060101000602 -0100060101040602010206ff06f501000602010006010104060401000602010006020100 -060b09010300020204010301020204000001060b0100060801000605010006020100061d -010006060100060201000605010006000100060001000619010006030100060501000602 -01000601010006050100061b010006010101060101000602010006010100060201000601 -01000609010006ff06f401000602010006010100060801000602010006020100060b0901 -0300020204010301020204000001060b0100060801000605010006020100060201000619 -010006060100060201000602010006010100060001000600010006190100060301000605 -010006020100060101000602010006010100060201000617010006020100060101000602 -010006010100060101010601010006020100060101000602010006ff06f4010006020100 -0601010006020100060401000602010106010100060b0901030002020401030102020400 -0001060b0100060801000605010006030102061a01000606010006030102060301000600 -0100061a0100060301000606010306020102060301020618010006020100060201020603 -010106000100060201020603010206ff06f5010006020100060201020605010006020100 -06000101060c0901030002020401030102020400000106ff06ff06d30100060f09010300 -020204010301020204000001060a0106062a0106062a010606ff06ff06470106060e0100 -060f09010300020204010301020204000001060a0106062a0106062a010606ff06ff0647 -0106060e0100060f0901030002020401030102020400000106ff06ff06e4090103000202 -0401030102020400000106ff06ff06e40901030002020401030102020400000106ff06ff -06e40901030002020401030102020400000109ff09ff09e6030002020401030102020400 -000009ff09ff09e703000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e803000202040103010202040006ff06ff06e803000202040103010202 -040006ff06ff06e8030002020401030102020400060005ff05ff05d40912030002020401 -030102020400060005000849050108d50501089005010858050108670501085709110000 -030002020401030102020400060005000849050108d50501089005010858050108670501 -085709010706090007060001030002020401030102020400060005000849050108d50501 -089005010858050108670501085709010705000009000706000103000202040103010202 -040006000500080105030805050008060500083405010802050208270500080a05040818 -050008060500087405010801050008020500088905010800050008030500085105010801 -0503080d0500085205010802050208050500084a09010705000009010705000103000202 -0401030102020400060005000801050008020500080c0500083405010801050008020500 -08260500080a0500081c0500087c05010801050108010500088905010800050008030500 -085105010801050008020500080c05000852050108010500080205000850090107040001 -090107050001030002020401030102020400060005000801050008020500080205020803 -050108000500083405010801050008020500080105000802050008010500080005010802 -050008000501080305020802050008000501080205040808050008050500080205000801 -050008000501080305020802050408020502080305020802050008000501086605010801 -050108010500080205020802050108000500080305020875050108000501080105010802 -0502080305010800050008020502083d0501080105000802050008020502080305010800 -050008020502084c050108010500080605020802050408020502083c0901070400010600 -090107040001030002020401030102020400060005000801050008020500080405000802 -050008010501083405010801050008050500080205000801050108010500080105010801 -05000801050008020500080105010801050008030500080a050008050500080205000801 -050108010500080105000802050008030500080605000802050008020500080105010801 -050008650501080105000800050008000500080105000802050008010500080005000800 -050008010500080205000874050108000501080105010801050008020500080105000801 -05010801050008020500083c050108010500080205000801050008020500080105000801 -05010801050008020500084b05010802050008070500080605000801050008020500083b -090107030001060109010704000103000202040103010202040006000500080105030805 -050008020500080205000834050108010500080505000802050008010500080505000805 -050008020500080105000802050008030500080a05030802050008020500080105000802 -050008010500080705000806050008020500080205000801050008020500086505010801 -050008000500080005000805050008010500080005000800050008010500080205000874 -050108000500080005010800050008010500080505000802050008010500084005010801 -05030802050008020500080105000802050008010500084f050108030501080505000805 -05000802050008020500083b090107030001060209010703000103000202040103010202 -040006000500080105000808050008020500080205000834050108010500080505000802 -0500080105000805050008050504080105000802050008030500080a0500080505000802 -050008010500080205000801050008070500080605000802050008020500080105000802 -050008650501080105000801050108020503080105000800050008000500080105040874 -050108000500080005010800050008020502080205000802050008020502083d05010801 -05000801050008020504080105000802050008020502084c050108050500080405000804 -050008030504083b09010702000106030901070300010300020204010301020204000600 -050008010500080805000802050008020500083405010801050008020500080105000802 -0500080105000805050008050500080505000802050008030500080a0500080505000802 -050008010500080205000801050008070500080605000802050008020500080105000802 -050008650501080105000801050108010500080205000801050008000500080005000801 -050008780501080005000803050008050500080105000802050008050500083c05010801 -05000802050008010500080505000802050008050500084b050108010500080205000804 -05000803050008040500083f090107020001060409010702000103000202040103010202 -040006000500080105000808050008020500080105010834050108010500080205000801 -05000801050108010500080505000805050008020500080105000802050008030500080a -050008050500080105010801050008020500080105000802050008030500080605000802 -050008020500080105000802050008650501080105000802050008010500080205000801 -050008000500080005000801050008020500087405010800050008030500080105000802 -050008010500080105010801050008020500083c05010801050008020500080105000802 -050008010500080105010801050008020500084b05010801050008020500080405000802 -05000805050008020500083b090107010001060509010702000103000202040103010202 -040006000500080105000808050008030501080005000834050108020502080305010800 -050008010500080505000806050208020500080205000804050108080500080605010800 -050008010500080205000802050208050501080405000803050208020500080205000865 -050108010500080205000802050308010500080005000800050008020502087505010800 -05000803050008020502080305010800050008020502083d050108010500080205000802 -0502080305010800050008020502084c050108020502080505000802050408020502083c -0901070100010606090107010001030002020401030102020400060005000849050108d5 -050108900501081305000843050108670501085709010700000106070901070100010300 -02020401030102020400060005000849050108d5050108900501080f0500080205000843 -050108670501085709010700000106080901070000010300020204010301020204000600 -05000849050108d5050108900501081005020844050108670501085709010001090b0700 -0001030002020401030102020400060005000849050108d5050108900501085805010867 -0501085709010000090d0001030002020401030102020400060005000849050108d50501 -08900501085805010867050108570901070e000103000202040103010202040006000500 -0849050108d5050108900501085805010867050108570901001003000202040103010202 -0400060005000849050108d5050108900501085805010867050108570901000d09000001 -030002020401030102020400060005ff05ff05d409010001060a09010001030002020401 -030102020400060001ff01ff01d409010001060a09010001030002020401030102020400 -060001000849010108d50101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -085709010001060a09010001030002020401030102020400060001000805010008230100 -081d010108440100088f0101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000804010008040101080b0101080b010108020100 -081c010108040100080c010008040100080b0102081b010008030100088a010108040100 -080c01000804010008760101080301010852010108020102080301020806010008520101 -080201020803010208020104084209010001060a09010001030002020401030102020400 -060001000803010008040100080101000809010008010100080901000801010008020100 -081b010108180100080d0100081a010008030101088a0101081801000876010108020100 -080101000851010108010100080201000801010008020100080401010852010108010100 -0802010008010100080201000801010008020100084209010001060a0901000103000202 -040103010202040006000100080201000805010008010100080901000801010008090100 -0801010008030100081a0101080201020802010008000101080301020802010408030101 -0805010008030102080301020802010008000101080501000802010008000100088a0101 -080201020802010008000101080301020802010408740101080201000801010008510101 -080101000802010008010100080701000800010008520101080101000805010008020100 -08050100084209010001060a090100010300020204010301020204000600010008010100 -080601000801010008090100080101000809010008010100080401000819010108040100 -080201010801010008040100080401000805010108050100080201000802010008010100 -0802010008010101080101000803010008050100088a0101080401000802010108010100 -080401000804010008760101080201000801010008510101080101000802010008010100 -08060100080101000852010108010100080501000802010008040100084309010001060a -090100010300020204010301020204000600010008000100080701000801010008090100 -080101000809010008010100080501000818010108040100080201000802010008040100 -08040100080d010008020100080201000801010008020100080101000802010008030100 -08050100088a010108040100080201000802010008040100080401000876010108020100 -080101000851010108020103080101030802010008020100085201010801010308030103 -08040100084309010001060a090100010300020204010301020204000600010008010100 -080601000801010008090100080101000809010008010100080401000819010108040100 -08020100080201000804010008040100080d010008020100080201000801010008020100 -08010100080201000802010008060100088a010108040100080201000802010008040100 -080401000876010108020100080101000851010108050100080101000802010008010100 -080201000852010108010100080201000805010008040100084309010001060a09010001 -030002020401030102020400060001000802010008050100080101000809010008010100 -080901000801010008030100081a01010804010008020100080201000804010008040100 -080d01000802010008020100080101000802010008010100080201000802010008060100 -088a01010804010008020100080201000804010008040100087601010802010008010100 -085101010805010008010100080201000801010508510101080101000802010008050100 -08030100084409010001060a090100010300020204010301020204000600010008030100 -080401000801010008030101080301000801010008030101080301000801010008020100 -081b01010804010008020100080201000804010008040100080501010805010008020100 -08020100080101000802010008010101080101000801010008070100088a010108040100 -080201000802010008040100080401000876010108020100080101000851010108010100 -080201000801010008020100080501000852010108010100080201000801010008020100 -08030100084409010001060a090100010300020204010301020204000600010008040100 -080401010804010108040101080401010804010108020100081c01010804010008020100 -080201000804010008050101080301010805010008030102080301020802010008000101 -080201000805010408880101080401000802010008020100080401000805010108740101 -080301010852010108020102080301020806010008520101080201020803010208040100 -084409010001060a09010001030002020401030102020400060001000805010008230100 -081d010108390100089a0101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000849010108390100089a01010890010108580101 -08670101085709010001060a090100010300020204010301020204000600010008490101 -08390100089a0101089001010858010108670101085709010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000849010108d5010108900101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -0849010108d50101089001010858010108670101085709010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001ff01ff01d409010001060a0901 -0001030002020401030102020400060001ff01ff01d409010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000849010108d5010108900101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -0805010008230100081d0101089101000842010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000804010008040101080a0102 -080b010108020100081c010108100102081a0100081101020814010008170102081b0100 -08010104083b010108100102081a01000811010208140100083501010803010108520101 -08020102080301020803010208030102084c010108030100080401020803010208060100 -083b09010001060a09010001030002020401030102020400060001000803010008040100 -080101000808010008020100080901000801010008020100081b010108120100082f0100 -0814010008190100081a010008020100083f010108120100082f01000814010008350101 -080201000801010008510101080101000802010008010100080201000801010008020100 -0801010008020100084b0101080201010803010008020100080101000802010008040101 -083b09010001060a09010001030002020401030102020400060001000802010008050100 -08010100080c0100080901000801010008030100081a0101080201020802010008000101 -0805010008090100080001010802010008000101080301020802010108000100080c0100 -080301020803010208030101080001000802010208020100080001010804010108050100 -080301020803010208020100080001010805010008020100083f01010802010208020100 -080001010805010008090100080001010802010008000101080301020802010108000100 -080c01000803010208030102080301010800010008020102080201000800010108280101 -0802010008010100085101010801010008020100080101000809010008050100084b0101 -08010100080001000803010008050100080201000803010008000100083b09010001060a -0901000103000202040103010202040006000100080101000806010008010100080c0100 -080901000801010008040100081901010801010008020100080101010801010008040100 -0809010108010100080101010801010008040100080201000800010008000100080b0100 -080201000802010008010100080201000801010008010101080101000802010008010101 -080101000803010108050100080201000802010008010100080201000801010108010100 -0803010008030103083c0101080101000802010008010101080101000804010008090101 -08010100080101010801010008040100080201000800010008000100080b010008020100 -080201000801010008020100080101000801010108010100080201000801010108010100 -082701010802010008010100085101010801010008020100080101000809010008050100 -084b0101080301000803010008050100080201000802010008010100083b09010001060a -0901000103000202040103010202040006000100080001000807010008010100080b0100 -080a01000801010008050100081801010801010008020100080101000808010008090100 -080201000801010008080100080201000800010008000100080b01000802010008020100 -080501000801010008020100080101000802010008010100080f01000802010008020100 -080101000802010008010100080201000803010008070100083b01010801010008020100 -080101000808010008090100080201000801010008080100080201000800010008000100 -080b01000802010008020100080501000801010008020100080101000802010008010100 -082b010108020100080101000851010108020102080201030805010008050100084c0101 -0803010008030103080301020802010008020100083b09010001060a0901000103000202 -040103010202040006000100080101000806010008010100080a0100080b010008010100 -080401000819010108010104080101000808010008090100080201000801010008080100 -080201000800010008000100080b01000802010008020100080201030801010008020100 -0801010408010100080f0100080201000802010008010100080201000801010008020100 -0802010008080100083b0101080101040801010008080100080901000802010008010100 -08080100080201000800010008000100080b010008020100080201000802010308010100 -080201000801010408010100082b01010802010008010100085101010801010008020100 -08010100080201000803010008050100084d010108030100080301000802010008010100 -080201000801010008020100083b09010001060a09010001030002020401030102020400 -0600010008020100080501000801010008090100080c01000801010008030100081a0101 -080101000805010008080100080901000802010008010100080801000802010008000100 -08000100080b010008020100080201000801010008020100080101000802010008010100 -08050100080f010008020100080201000801010008020100080101000802010008020100 -0804010008020100083b0101080101000805010008080100080901000802010008010100 -08080100080201000800010008000100080b010008020100080201000801010008020100 -08010100080201000801010008050100082b010108020100080101000851010108010100 -0802010008010100080201000802010008050100084e0101080301000803010008020100 -080101000802010008010105083a09010001060a09010001030002020401030102020400 -060001000803010008040100080101000803010108020100080701010803010008010100 -08020100081b010108010100080201000801010008080100080901010801010008010100 -08080100080201000800010008000100080b010008020100080201000801010008020100 -080101000801010108010100080201000801010008070101080501000802010008020100 -08010100080201000801010108010100080101000805010008020100083b010108010100 -080201000801010008080100080901010801010008010100080801000802010008000100 -08000100080b010008020100080201000801010008020100080101000801010108010100 -0802010008010100082b0101080201000801010008510101080101000802010008010100 -080201000801010008050100084f01010803010008030100080201000801010008020100 -08050100083b09010001060a090100010300020204010301020204000600010008040100 -080401010804010108020104080301010804010108020100081c01010802010208020100 -0808010008090100080001010802010008080100080201000800010008000100080b0100 -080301020803010308020101080001000802010208020100080701010805010008030102 -0803010208020100080001010802010008060102083c0101080201020802010008080100 -08090100080001010802010008080100080201000800010008000100080b010008030102 -0803010308020101080001000802010208020100082b0101080301010852010108020102 -080301020802010408010104084b010108010104080201020803010208060100083b0901 -0001060a09010001030002020401030102020400060001000805010008230100081d0101 -08150105080101000819010508470100084d010108150105080101000819010508510101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -08490101081d010008670100084d0101081d010008710101085801010867010108570901 -0001060a090100010300020204010301020204000600010008490101081d010008670100 -084d0101081d0100087101010858010108670101085709010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000849010108d5010108900101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -0849010108d50101089001010858010108670101085709010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001ff01ff01d409010001060a0901 -0001030002020401030102020400060001ff01ff01d409010001060a0901000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000849010108d5010108900101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -0805010008230100081d010108670100086c010108900101085801010867010108570901 -0001060a09010001030002020401030102020400060001000804010008040101080d0100 -080a010108020100081c0101083b0100080b0102081b01000805010008650101082c0102 -086001010803010108520101080301000804010208030102085301010801010408030100 -08040102084309010001060a090100010300020204010301020204000600010008030100 -0804010008010100080b0101080901000801010008020100081b0101083b0100080d0100 -081a01000805010108650101082e01000860010108020100080101000851010108020101 -080301000802010008010100080201000852010108010100080601010803010008020100 -084209010001060a09010001030002020401030102020400060001000802010008050100 -08010100080a010008000100080901000801010008030100081a01010802010108000100 -080201020802010008000101080a01020802010008020100080201020802010008000101 -080201040803010108050100080301020803010208020100080001010805010008040100 -080001000865010108020102080201000800010108020100080001010803010208020100 -08000101080c010008030102080301010800010008020101080001000802010208020100 -08000101083d010108020100080101000851010108010100080001000803010008090100 -085201010801010008050100080001000803010008020100084209010001060a09010001 -030002020401030102020400060001000801010008060100080101000809010008010100 -080901000801010008040100081901010801010008010101080101000802010008010101 -080101000808010008020100080101000802010008010100080201000801010108010100 -080301000805010108050100080201000802010008010100080201000801010108010100 -080301000804010008010100086501010801010008020100080101010801010008010101 -0801010008010100080201000801010108010100080b0100080201000802010008010100 -08010101080101000801010108010100080201000801010108010100083c010108020100 -080101000851010108030100080301000809010008520101080101030804010008030100 -08020100084209010001060a090100010300020204010301020204000600010008000100 -080701000801010008080100080201000809010008010100080501000818010108010100 -080201000801010008020100080101000802010008080100080201000801010008020100 -0801010008020100080101000802010008030100080d0100080201000802010008010100 -080201000801010008020100080301000803010008020100086501010801010008020100 -0801010008050100080501000802010008010100080f0100080201000802010008010100 -080201000801010008020100080101000802010008010100084001010802010008010100 -085101010803010008030103080501000853010108050100080301000804010308420901 -0001060a0901000103000202040103010202040006000100080101000806010008010100 -080801000802010008090100080101000804010008190101080101000802010008010104 -080101000802010008080104080201000800010008020104080101000802010008030100 -080d01000802010008020100080101000802010008010100080201000802010008040100 -0802010008650101080101040801010008050100080501000802010008010100080f0100 -080201000802010008010100080201000801010008020100080101040801010008400101 -080201000801010008510101080301000803010008020100080301000854010108050100 -0803010008070100084209010001060a0901000103000202040103010202040006000100 -08020100080501000801010008080105080801000801010008030100081a010108010100 -080201000801010008050100080201000808010008060100080001000802010008050100 -0802010008030100080d0100080201000802010008010100080201000801010008020100 -080201000804010508640101080101000805010008050100080501000802010008010100 -080f01000802010008020100080101000802010008010100080201000801010008050100 -084001010802010008010100085101010803010008030100080201000802010008550101 -08010100080201000803010008070100084209010001060a090100010300020204010301 -020204000600010008030100080401000801010008030101080601000803010108030100 -0801010008020100081b0101080101000801010108010100080201000801010008020100 -080801000802010008030100080301000802010008010100080201000803010008050101 -080501000802010008020100080101000802010008010101080101000801010008090100 -0865010108010100080201000801010008050100080501000802010008010100080f0100 -080201000802010008010100080101010801010008010101080101000802010008010100 -084001010802010008010100085101010803010008030100080201000801010008560101 -0801010008020100080301000803010008020100084209010001060a0901000103000202 -040103010202040006000100080401000804010108040101080601000803010108040101 -08020100081c010108020101080001000802010208020100080201000809010208040100 -080401020802010008020100080401010803010108050100080301020803010208020100 -080001010802010008090100086501010802010208020100080501000806010208020100 -080f01000803010208030101080001000802010108000100080201020802010008400101 -080301010852010108010104080201020802010408520101080201020802010408020102 -084309010001060a09010001030002020401030102020400060001000805010008230100 -081d010108050100080e01050840010008770101082301050813010008050100084a0101 -0858010108670101085709010001060a0901000103000202040103010202040006000100 -084901010801010008020100085501000877010108390100080201000801010008020100 -084a01010858010108670101085709010001060a09010001030002020401030102020400 -0600010008490101080201020856010008770101083a010208030102084b010108580101 -08670101085709010001060a090100010300020204010301020204000600010008490101 -08d50101089001010858010108670101085709010001060a090100010300020204010301 -02020400060001000849010108d50101089001010858010108670101085709010001060a -09010001030002020401030102020400060001000849010108d501010890010108580101 -08670101085709010001060a090100010300020204010301020204000600010008490101 -08d50101089001010858010108670101085709010001060a090100010300020204010301 -02020400060001ff01ff01d409010001060a090100010300020204010301020204000600 -00ff00ff00d409010001060a090100010300020204010301020204000600000008490001 -08d50001089000010858000108670001085709010001060a090100010300020204010301 -02020400060000000849000108d50001089000010858000108670001085709010001060a -09010001030002020401030102020400060000000805000008230000081d0001086e0000 -08650001089000010858000108670001085709010001060a090100010300020204010301 -0202040006000000080400000804000108090004080a000108020000081c0001084f0002 -081b000008020002085f000108170002080500000812000008060000082e000008120002 -080300020805000108030001085200010805000008020002080400010853000108030000 -080400020803000208060000083b09010001060a09010001030002020401030102020400 -0600000008030000080400000801000008080000080d00000801000008020000081b0001 -08510000081a00000802000008020000085e000108190000081900000836000008140000 -080500000805000108020000080100000851000108040001080100000802000008020000 -0801000008520001080200010803000008020000080100000802000008040001083b0901 -0001060a0901000103000202040103010202040006000000080200000805000008010000 -08080000080d00000801000008030000081a000108020001080000000802000208020000 -08000001080a000208030002080200000800000108020000080200000802000208020000 -080000010804000108050000080300020803000208020000080000010805000008020000 -086200010802000208020000080000010802000008000001080500000803000208030002 -080300020802000408020002080300020802000008000001080a00020803000208020000 -080000010802000408010000080000010803000208050000080500000803000308020000 -080100000851000108030000080000000805000008020000080100000852000108010000 -080000000803000008050000080200000803000008000000083b09010001060a09010001 -0300020204010301020204000600000008010000080600000801000008080003080a0000 -080100000804000008190001080100000801000108010000080200000801000108010000 -080800000802000008010000080200000801000108010000080100000802000008010000 -080200000801000108010000080300010805000008020000080200000801000008020000 -080100010801000008030000080300000862000108010000080200000801000108010000 -080100010801000008040000080500000802000008020000080100000802000008030000 -080600000802000008020000080100010801000008080000080200000801000008020000 -080100010801000008030000080300010801000008010000080200000804000008050000 -080200000801000108020000080100000851000108020000080100000805000008020000 -0801000008520001080300000803000008050000080200000802000008010000083b0901 -0001060a0901000103000202040103010202040006000000080000000807000008010000 -080c00000809000008010000080500000818000108010000080200000801000008020000 -080100000802000008080000080500000802000008010000080500000802000008010000 -0802000008010000080f0000080200000802000008010000080200000801000008020000 -0803000008030003085f0001080500000801000008020000080100000802000008040000 -080500000802000008090000080300000806000008020000080200000801000008020000 -080800000805000008020000080100000802000008030000080300000805000008020000 -080400000805000008020000080100010802000008010000085100010801000008020000 -080300010803000008010000085200010803000008030003080300020802000008020000 -083b09010001060a09010001030002020401030102020400060000000801000008060000 -08010000080c000008090000080100000804000008190001080100000802000008010004 -080100000802000008090002080200040801000008060000080000000802000408010000 -080f00000802000008020000080100000802000008010000080200000802000008040000 -08020000085e000108020003080100000802000008010000080200000804000008050000 -080200000806000308030000080600000802000008020000080100000802000008080000 -080500000802000008010000080200000803000008030000080500000802000008040000 -080500000802000408020000080100000851000108010000080200000805000008020000 -080100000852000108030000080300000802000008010000080200000801000008020000 -083b09010001060a09010001030002020401030102020400060000000802000008050000 -080100000808000008020000080900000801000008030000081a00010801000008020000 -080100000805000008020000080c00000801000008050000080600000800000008020000 -08050000080f000008020000080200000801000008020000080100000802000008020000 -0804000008020000085e0001080100000802000008010000080200000801000008020000 -080400000805000008020000080500000802000008030000080600000802000008020000 -080100000802000008080000080500000802000008010000080200000803000008030000 -080500000802000008040000080500000802000008010001080200000801000008510001 -080100050804000008020000080100000852000108030000080300000802000008010000 -0802000008010005083a09010001060a0901000103000202040103010202040006000000 -080300000804000008010000080300010802000008020000080300010803000008010000 -08020000081b000108010000080100010801000008020000080100000802000008080000 -080200000801000008020000080100000807000008030000080200000801000008070001 -080500000802000008020000080100000802000008010001080100000801000008050000 -08020000085e000108010000080200000801000108010000080100010801000008040000 -080500000802000008020000080100000802000008030000080600000802000008020000 -080100000802000008080000080200000801000008020000080100000802000008030000 -080300000805000008020000080400000805000008020000080100010802000008010000 -085100010805000008010000080200000802000008010000085200010803000008030000 -08020000080100000802000008050000083b09010001060a090100010300020204010301 -020204000600000008040000080400010804000108030002080400010804000108020000 -081c00010802000108000000080200020802000008020000080900020803000208020000 -080700000804000208020000080700010805000008030002080300020802000008000001 -0802000008060002085f0001080200030801000008000001080200000800000108050000 -080500000803000208030003080400010804000008030002080200000802000008090002 -080300020802000008020000080400010801000008060002080500000805000008030003 -080300010852000108050000080200020804000108530001080100040802000208030002 -08060000083b09010001060a090100010300020204010301020204000600000008050000 -08230000081d000108050000080e000508470000087000010808000008050000083c0005 -083c00010858000108670001085709010001060a09010001030002020401030102020400 -06000000084900010801000008020000085c0000087000010808000008050000087f0001 -0858000108670001085709010001060a0901000103000202040103010202040006000000 -0849000108020002085d0000087000010808000008050000087f00010858000108670001 -085709010001060a09010001030002020401030102020400060000000849000108d50001 -089000010858000108670001085709010001060a09010001030002020401030102020400 -060000000849000108d50001089000010858000108670001085709010001060a09010001 -030002020401030102020400060000000849000108d50001089000010858000108670001 -085709010001060a09010001030002020401030102020400060000000849000108d50001 -089000010858000108670001085709010001060a09010001030002020401030102020400 -060000ff00ff00d409010001060a09010001030002020401030102020400060001ff01ff -01d409010001060a09010001030002020401030102020400060001000849010108d50101 -089001010858010108670101085709010001060a09010001030002020401030102020400 -060001000849010108d50101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000805010008230100081d010108c90100080a0101 -089001010858010108670101085709010001060a09010001030002020401030102020400 -060001000804010008040101080a0102080b010108020100081c01010817010208050100 -0812010008060100082e01000829010008110102081b0100080201020804010108900101 -08030101085201010803010008040102085a010108020102080301020804010108430901 -0001060a0901000103000202040103010202040006000100080301000804010008010100 -0808010008020100080901000801010008020100081b0101081901000819010008360100 -083e0100081a010008020100080201000803010108900101080201000801010008510101 -080201010803010008020100085901010801010008020100080101000802010008020100 -08010100084209010001060a090100010300020204010301020204000600010008020100 -080501000801010008080100080d01000801010008030100081a01010802010208020100 -080001010802010008000101080501000803010208030102080301020802010408020102 -080301020802010008000101080901010800010008030102080301020802010408020102 -080201000800010108040101080201010800010008030102080301020802010008000101 -080c01000803010208030102080201000800010108050100080601000803010108900101 -080201000801010008510101080101000800010008070100085901010805010008050100 -0802010008010100084209010001060a0901000103000202040103010202040006000100 -08010100080601000801010008080100080d010008010100080401000819010108010100 -080201000801010108010100080101010801010008040100080501000802010008020100 -080101000802010008030100080601000802010008020100080101010801010008080100 -080001000800010008010100080201000801010008020100080301000803010008020100 -080101010801010008030101080201000800010008000100080101000802010008040100 -0802010108010100080b0100080201000802010008010100080201000801010108010100 -080301000807010008030101089001010802010008010100085101010803010008070100 -0859010108050100080501000802010008010100084209010001060a0901000103000202 -04010301020204000600010008000100080701000801010008080103080a010008010100 -080501000818010108050100080101000802010008010100080201000804010008050100 -080201000809010008030100080601000802010008020100080101000802010008080100 -0800010008000100080501000801010008070100080301000802010008010100080c0100 -080001000800010008050100080401000802010008020100080b01000802010008020100 -080101000802010008010100080201000803010008060100080401010890010108020100 -08010100085101010803010008060100085a010108030101080501000803010008010100 -084209010001060a09010001030002020401030102020400060001000801010008060100 -080101000808010008020100080901000801010008040100081901010802010308010100 -080201000801010008020100080401000805010008020100080601030803010008060100 -080201000802010008010100080201000808010008000100080001000802010308020102 -080401000803010408010100080c01000800010008000100080201030804010008020100 -08020100080b010008020100080201000801010008020100080101000802010008020100 -0806010008050101089001010802010008010100085101010803010008050100085b0101 -08050100080301000804010008010100084209010001060a090100010300020204010301 -020204000600010008020100080501000801010008080100080201000809010008010100 -08030100081a010108010100080201000801010008020100080101000802010008040100 -080501000802010008050100080201000803010008060100080201000802010008010100 -080201000808010008000100080001000801010008020100080501000803010008030100 -08050100080c010008000100080001000801010008020100080401000802010008020100 -080b01000802010008020100080101000802010008010100080201000802010008050100 -08060101089001010802010008010100085101010803010008040100085c010108050100 -080201000805010008010100084209010001060a09010001030002020401030102020400 -060001000803010008040100080101000803010108020100080201000803010108030100 -0801010008020100081b0101080101000802010008010101080101000801010108010100 -080401000805010008020100080201000801010008020100080301000806010008020100 -080201000801010008020100080801000800010008000100080101000802010008010100 -080201000803010008030100080201000801010008070101080201000800010008000100 -0801010008020100080401000802010008020100080b0100080201000802010008010100 -080201000801010108010100080101000805010008070101089001010802010008010100 -085101010803010008030100085d01010801010008020100080101000806010008010100 -084209010001060a09010001030002020401030102020400060001000804010008040101 -0804010108030102080401010804010108020100081c0101080201030801010008000101 -080201000800010108050100080501000803010208030103080401010804010008030102 -080201000802010008080100080001000800010008020103080201020805010108020102 -080201000807010108020100080001000800010008020103080401000802010008020100 -080b01000803010208030102080201000800010108020100080501040803010108900101 -080301010852010108010104080101040859010108020102080201040803010108430901 -0001060a09010001030002020401030102020400060001000805010008230100081d0101 -0808010008050100083c0105084d01050816010008150101089001010858010108670101 -085709010001060a09010001030002020401030102020400060001000849010108080100 -0805010008ad010008150101089001010858010108670101085709010001060a09010001 -0300020204010301020204000600010008490101080801000805010008ad010008150101 -089001010858010108670101085709010001060a09010001030002020401030102020400 -060001000849010108d50101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -085709010001060a09010001030002020401030102020400060001000849010108d50101 -089001010858010108670101085709010001060a09010001030002020401030102020400 -060001000849010108d50101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001ff01ff01d409010001060a09010001030002020401 -030102020400060001ff01ff01d409010001060a09010001030002020401030102020400 -060001000849010108d50101089001010858010108670101085709010001060a09010001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -085709010001060a09010001030002020401030102020400060001000805010008230100 -081d010108bb010008180101089001010858010108670101085709010001060a09010001 -03000202040103010202040006000100080401000804010108090104080a010108020100 -081c010108170102080501000812010008060100082e0100081901020821010008040100 -0807010008050100081101010890010108030101085201010805010008020102085a0101 -080201020803010208030102084309010001060a09010001030002020401030102020400 -060001000803010008040100080101000808010008020100080901000801010008020100 -081b0101081901000819010008360100081b010008270100080601000805010108110101 -089001010802010008010100085101010804010108010100080201000859010108010100 -0802010008010100080201000801010008020100084209010001060a0901000103000202 -040103010202040006000100080201000805010008010100080c01000809010008010100 -08030100081a010108020102080201000800010108020100080001010805010008030102 -080301020803010208020104080201020803010208020100080001010809010108000100 -080301020803010208020104080201020802010008000101080401010805010008030102 -080301020802010008000101080a01020802010408040100080401000800010008110101 -089001010802010008010100085101010803010008000100080501000859010108050100 -080101000802010008010100084609010001060a09010001030002020401030102020400 -06000100080101000806010008010100080b0100080a0100080101000804010008190101 -080101000802010008010101080101000801010108010100080401000805010008020100 -080201000801010008020100080301000806010008020100080201000801010108010100 -080801000800010008000100080101000802010008010100080201000803010008030100 -080201000801010108010100080301010805010008020100080201000801010008020100 -0801010108010100080b0100080401000805010008040100080101000811010108900101 -080201000801010008510101080201000801010008050100085901010805010008010100 -0802010008010100084609010001090c0001030002020401030102020400060001000800 -01000807010008010100080b0100080a0100080101000805010008180101080501000801 -010008020100080101000802010008040100080501000802010008090100080301000806 -010008020100080201000801010008020100080801000800010008000100080501000801 -010008070100080301000802010008010100080f01000802010008020100080101000802 -01000801010008020100080b010008040100080501000803010008020100081101010890 -0101080201000801010008510101080101000802010008040100085a0101080401000803 -010208020103084309010000090d00010300020204010301020204000600010008010100 -0806010008010100080b0100080a01000801010008040100081901010802010308010100 -080201000801010008020100080401000805010008020100080601030803010008060100 -080201000802010008010100080201000808010008000100080001000802010308020102 -080401000803010408010100080f01000802010008020100080101000802010008010100 -08020100080b010008040100080401000804010008020100081101010890010108020100 -0801010008510101080101000802010008030100085b0101080301000803010008020100 -080101000802010008420901070e00010300020204010301020204000600010008020100 -0805010008010100080a0100080b01000801010008030100081a01010801010008020100 -080101000802010008010100080201000804010008050100080201000805010008020100 -080301000806010008020100080201000801010008020100080801000800010008000100 -080101000802010008050100080301000803010008050100080f01000802010008020100 -08010100080201000801010008020100080b010008040100080401000804010508100101 -089001010802010008010100085101010801010508010100085c01010802010008040100 -08020100080101000802010008420901070e000103000202040103010202040006000100 -080301000804010008010100080301010804010008050101080301000801010008020100 -081b01010801010008020100080101010801010008010101080101000804010008050100 -080201000802010008010100080201000803010008060100080201000802010008010100 -080201000808010008000100080001000801010008020100080101000802010008030100 -080301000802010008010100080701010805010008020100080201000801010008020100 -0801010108010100080b0100080401000803010008090100081101010890010108020100 -08010100085101010805010008010100085d010108010100080501000802010008010100 -0802010008420901070e0001030002020401030102020400060001000804010008040101 -0804010108040100080501010804010108020100081c0101080201030801010008000101 -080201000800010108050100080501000803010208030103080401010804010008030102 -080201000802010008080100080001000800010008020103080201020805010108020102 -08020100080701010805010008030102080301020802010008000101080c010008050101 -080101000809010008110101089001010803010108520101080501000801010408590101 -08010104080201020803010208430901070e000103000202040103010202040006000100 -0805010008230100081d01010808010008050100083c01050847010008040105082d0101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -084901010808010008050100088a01000838010108900101085801010867010108570901 -070e000103000202040103010202040006000100084901010808010008050100088a0100 -0838010108900101085801010867010108570901070e0001030002020401030102020400 -060001000849010108d5010108900101085801010867010108570901070e000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -070e0001030002020401030102020400060001000849010108d501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e0001030002020401030102020400060001ff -01ff01d40901070e0001030002020401030102020400060001ff01ff01d40901070e0001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -08570901070e0001030002020401030102020400060001000849010108d5010108900101 -085801010867010108570901070e00010300020204010301020204000600010008050100 -08230100081d0101086e01000865010108900101085801010867010108570901070e0001 -030002020401030102020400060001000804010008040101080a0102080b010108020100 -081c0101084f0102081b010008020102085f010108010100082201020867010108030101 -085201010801010408030101080601000852010108030100080401020803010208060100 -083b0901070e000103000202040103010202040006000100080301000804010008010100 -0808010008020100080901000801010008020100081b010108510100081a010008020100 -08020100085e010108010100082401000867010108020100080101000851010108010100 -080601000801010008040101085201010802010108030100080201000801010008020100 -08040101083b0901070e0001030002020401030102020400060001000802010008050100 -080101000808010008020100080901000801010008030100081a01010802010108000100 -080201020802010008000101080a01020803010208020100080001010802010008020100 -080201020802010008000101080401010805010008030102080301020802010008000101 -080501000802010008620101080101000801010008030102080201000800010108020100 -080001010803010208050100080a010208020100080201000801010008000101084b0101 -080201000801010008510101080101000806010008010100080301000800010008520101 -08010100080001000803010008050100080201000803010008000100083b0901070e0001 -030002020401030102020400060001000801010008060100080101000808010008020100 -080901000801010008040100081901010801010008010101080101000802010008010101 -080101000808010008020100080101000802010008010101080101000801010008020100 -080101000802010008010101080101000803010108050100080201000802010008010100 -080201000801010108010100080301000803010008620101080101000800010008030100 -080201000801010108010100080101010801010008010100080201000804010008090100 -0802010008010100080201000801010108010100084a0101080201000801010008510101 -080101030803010008010100080201000801010008520101080301000803010008050100 -080201000802010008010100083b0901070e000103000202040103010202040006000100 -08000100080701000801010008090102080a010008010100080501000818010108010100 -080201000801010008020100080101000802010008080100080501000802010008010100 -0805010008020100080101000802010008010100080f0100080201000802010008010100 -0802010008010100080201000803010008030103085f0101080101010804010008020100 -080101000805010008020100080101000802010008040100080901000805010008020100 -0801010008020100084a0101080201000801010008510101080501000802010008010100 -0801010008020100085201010803010008030103080301020802010008020100083b0901 -070e00010300020204010301020204000600010008010100080601000801010008080100 -080201000809010008010100080401000819010108010100080201000801010408010100 -0802010008090102080201040801010008060100080001000802010408010100080f0100 -080201000802010008010100080201000801010008020100080201000804010008020100 -085e010108010101080401040801010008050100080201000801010408040100080a0102 -08020100080201000801010008020100084a010108020100080101000851010108050100 -080201000801010008010100080201000852010108030100080301000802010008010100 -080201000801010008020100083b0901070e000103000202040103010202040006000100 -0802010008050100080101000808010008020100080901000801010008030100081a0101 -0801010008020100080101000805010008020100080c0100080101000805010008060100 -080001000802010008050100080f01000802010008020100080101000802010008010100 -08020100080201000804010008020100085e010108010100080001000803010008050100 -08050100080201000801010008080100080d010008010100080201000801010008020100 -084a01010802010008010100085101010801010008020100080201000801010008010105 -08510101080301000803010008020100080101000802010008010105083a0901070e0001 -030002020401030102020400060001000803010008040100080101000803010108020100 -0802010008030101080301000801010008020100081b0101080101000801010108010100 -080201000801010008020100080801000802010008010100080201000801010008070100 -080301000802010008010100080701010805010008020100080201000801010008020100 -0801010108010100080101000805010008020100085e0101080101000801010008020100 -080201000801010008050100080201000801010008020100080401000809010008020100 -08010100080101010801010108010100084a010108020100080101000851010108010100 -080201000802010008010100080501000852010108030100080301000802010008010100 -0802010008050100083b0901070e00010300020204010301020204000600010008040100 -080401010804010108030102080401010804010108020100081c01010802010108000100 -080201020802010008020100080901020803010208020100080701000804010208020100 -0807010108050100080301020803010208020100080001010802010008060102085f0101 -0801010008020100080201020802010008050100080201000802010208050100080a0102 -08030101080001000801010008000101084b010108030101085201010802010208040101 -080601000852010108010104080201020803010208060100083b0901070e000103000202 -0401030102020400060001000805010008230100081d010108050100080e010508470100 -08700101082a0105080f0100084e0101085801010867010108570901070e000103000202 -040103010202040006000100084901010801010008020100085c01000870010108400100 -084e0101085801010867010108570901070e000103000202040103010202040006000100 -0849010108020102085d01000870010108400100084e0101085801010867010108570901 -070e0001030002020401030102020400060001000849010108d501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -02020400060001000849010108d5010108900101085801010867010108570901070e0001 -030002020401030102020400060001ff01ff01d40901070e000103000202040103010202 -0400060001ff01ff01d40901070e00010300020204010301020204000600010008490101 -08d5010108900101085801010867010108570901070e0001030002020401030102020400 -060001000849010108d5010108900101085801010867010108570901070e000103000202 -0401030102020400060001000805010008230100081d0101086e01000865010108900101 -085801010867010108570901070e00010300020204010301020204000600010008040100 -08040101080a0102080b010108020100081c0101084f0102081b010008020102085f0101 -0890010108030101085201010802010208030102085a0101080201020803010208030102 -08430901070e000103000202040103010202040006000100080301000804010008010100 -0808010008020100080901000801010008020100081b010108510100081a010008020100 -08020100085e010108900101080201000801010008510101080101000802010008010100 -080201000859010108010100080201000801010008020100080101000802010008420901 -070e00010300020204010301020204000600010008020100080501000801010008080100 -08020100080901000801010008030100081a010108020101080001000802010208020100 -08000101080a010208030102080201000800010108020100080201000802010208020100 -080001010804010108050100080301020803010208020100080001010805010008020100 -086201010801010008000101080301020802010008020100087b01010802010008010100 -085101010805010008050100085901010805010008010100080201000801010008460901 -070e00010300020204010301020204000600010008010100080601000801010008080100 -080201000809010008010100080401000819010108010100080101010801010008020100 -080101010801010008080100080201000801010008020100080101010801010008010100 -080201000801010008020100080101010801010008030101080501000802010008020100 -080101000802010008010101080101000803010008030100086201010801010108010100 -08010100080201000801010008020100087b010108020100080101000851010108050100 -08050100085901010805010008010100080201000801010008460901070e000103000202 -040103010202040006000100080001000807010008010100080901030809010008010100 -080501000818010108010100080201000801010008020100080101000802010008080100 -0805010008020100080101000805010008020100080101000802010008010100080f0100 -0802010008020100080101000802010008010100080201000803010008030103085f0101 -0801010008050100080201000802010008000100087c0101080201000801010008510101 -0804010008050100085a010108040100080301020802010308430901070e000103000202 -040103010202040006000100080101000806010008010100080c01000809010008010100 -080401000819010108010100080201000801010408010100080201000809010208020104 -0801010008060100080001000802010408010100080f0100080201000802010008010100 -080201000801010008020100080201000804010008020100085e01010801010008050104 -08030100087d01010802010008010100085101010803010008050100085b010108030100 -0803010008020100080101000802010008420901070e0001030002020401030102020400 -06000100080201000805010008010100080c0100080901000801010008030100081a0101 -0801010008020100080101000805010008020100080c0100080101000805010008060100 -080001000802010008050100080f01000802010008020100080101000802010008010100 -08020100080201000804010008020100085e010108010100080501000806010008000100 -087c01010802010008010100085101010802010008050100085c01010802010008040100 -08020100080101000802010008420901070e000103000202040103010202040006000100 -080301000804010008010100080301010802010008020100080301010803010008010100 -08020100081b010108010100080101010801010008020100080101000802010008080100 -080201000801010008020100080101000807010008030100080201000801010008070101 -080501000802010008020100080101000802010008010101080101000801010008050100 -08020100085e01010801010008050100080201000801010008020100087b010108020100 -08010100085101010801010008050100085d010108010100080501000802010008010100 -0802010008420901070e0001030002020401030102020400060001000804010008040101 -0804010108030102080401010804010108020100081c0101080201010800010008020102 -080201000802010008090102080301020802010008070100080401020802010008070101 -08050100080301020803010208020100080001010802010008060102085f010108010100 -080601020802010008020100087b01010803010108520101080101040801010408590101 -08010104080201020803010208430901070e000103000202040103010202040006000100 -0805010008230100081d010108050100080e010508470100087001010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108010100 -08020100085c01000870010108900101085801010867010108570901070e000103000202 -0401030102020400060001000849010108020102085d0100087001010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -02020400060001000849010108d5010108900101085801010867010108570901070e0001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -08570901070e0001030002020401030102020400060001ff01ff01d40901070e00010300 -02020401030102020400060001ff01ff01d40901070e0001030002020401030102020400 -060001000849010108d5010108900101085801010867010108570901070e000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -070e00010300020204010301020204000600010008050100082a010008160101086e0100 -0865010108900101085801010867010108570901070e0001030002020401030102020400 -060001000804010008040101080b010008050101080b01010802010008150101084f0102 -081b010008020102085f01010809010208090100080d0102086701010803010108520101 -0802010208030102085a010108020102080201040801010408420901070e000103000202 -040103010202040006000100080301000804010008010100080901010804010008010100 -0809010008010100080201000814010108510100081a01000802010008020100085e0101 -080b010008090100080f0100086701010802010008010100085101010801010008020100 -080101000802010008590101080101000802010008010100080201000801010008460901 -070e00010300020204010301020204000600010008020100080501000801010008080100 -080001000804010008010100080901000801010008030100081301010802010108000100 -080201020802010008000101080a01020803010208020100080001010802010008020100 -080201020802010008000101080401010805010008030102080301020802010008000101 -080501000802010008620101080201010800010008040100080301020802010008000101 -0803010208050100080901000800010108030102080201010800010008030102080a0102 -080301020802010008000101080201000802010008020102080201000800010108130101 -080201000801010008510101080101000802010008010100080201000859010108050100 -080501000801010008460901070e00010300020204010301020204000600010008010100 -0806010008010100080a0100080401000801010008090100080101000804010008120101 -080101000801010108010100080201000801010108010100080801000802010008010100 -080201000801010108010100080101000802010008010100080201000801010108010100 -080301010805010008020100080201000801010008020100080101010801010008030100 -080301000862010108010100080101010804010008020100080201000801010108010100 -080101000802010008040100080901010801010008010100080201000801010008000100 -080001000801010008020100080801000802010008010100080201000801010108010100 -080101000802010008010100080201000801010108010100081201010802010008010100 -085101010801010008020100080101000802010008590101080501000804010008020103 -08430901070e000103000202040103010202040006000100080001000807010008010100 -080a01000804010008010100080901000801010008050100081101010801010008020100 -080101000802010008010100080201000808010008050100080201000801010008050100 -08020100080101000802010008010100080f010008020100080201000801010008020100 -08010100080201000803010008030103085f010108010100080201000804010008020100 -080201000801010008020100080501000804010008090100080201000805010008010100 -080001000800010008010100080201000808010008050100080201000801010008050100 -080201000801010008020100080101000816010108020100080101000851010108020102 -08030102085a010108030101080501000806010008420901070e00010300020204010301 -0202040006000100080101000806010008010100080a0100080401000801010008090100 -080101000804010008120101080101000802010008010104080101000802010008090102 -080201040801010008060100080001000802010408010100080f01000802010008020100 -08010100080201000801010008020100080201000804010008020100085e010108010100 -080201000804010008020100080201000801010008020100080201030804010008090100 -080201000802010308010100080001000800010008010104080901020802010408010100 -080601000800010008020104080101000816010108020100080101000851010108010100 -0802010008010100080201000859010108050100080401000806010008420901070e0001 -03000202040103010202040006000100080201000805010008010100080a010008040100 -080101000809010008010100080301000813010108010100080201000801010008050100 -08020100080c0100080101000805010008060100080001000802010008050100080f0100 -080201000802010008010100080201000801010008020100080201000804010008020100 -085e01010801010008020100080401000802010008020100080101000802010008010100 -080201000804010008090100080201000801010008020100080101000800010008000100 -080101000810010008010100080501000806010008000100080201000805010008160101 -080201000801010008510101080101000802010008010100080201000859010108050100 -08030100080301000802010008420901070e000103000202040103010202040006000100 -080301000804010008010100080301010804010008040100080101000803010108030100 -080101000802010008140101080101000801010108010100080201000801010008020100 -080801000802010008010100080201000801010008070100080301000802010008010100 -080701010805010008020100080201000801010008020100080101010801010008010100 -0805010008020100085e0101080101000801010108040100080201000802010008010101 -080101000801010008020100080401000809010008020100080101000802010008010100 -080001000800010008010100080201000808010008020100080101000802010008010100 -080701000803010008020100080101000816010108020100080101000851010108010100 -080201000801010008020100085901010801010008020100080301000803010008020100 -08420901070e000103000202040103010202040006000100080401000804010108040101 -080201040803010108040101080401010802010008150101080201010800010008020102 -080201000802010008090102080301020802010008070100080401020802010008070101 -08050100080301020803010208020100080001010802010008060102085f010108020101 -080001000804010008030102080201000800010108030103080401000809010008020100 -0802010308010100080001000800010008020102080a0102080301020802010008070100 -08040102080201000816010108030101085201010802010208030102085a010108020102 -080401000804010208430901070e00010300020204010301020204000600010008050100 -082a01000816010108050100080e010508470100087001010805010008230105081c0105 -083c0101085801010867010108570901070e000103000202040103010202040006000100 -084901010801010008020100085c01000870010108010100080201000889010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108020102 -085d01000870010108020102088a0101085801010867010108570901070e000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -070e0001030002020401030102020400060001000849010108d501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -02020400060001ff01ff01d40901070e0001030002020401030102020400060001ff01ff -01d40901070e0001030002020401030102020400060001000849010108d5010108900101 -085801010867010108570901070e00010300020204010301020204000600010008490101 -08d5010108900101085801010867010108570901070e0001030002020401030102020400 -0600010008050100082a010008160101086e010008650101089001010858010108670101 -08570901070e0001030002020401030102020400060001000804010008040101080b0100 -08050100080c01010802010008150101084f0102081b010008020102085f010108110100 -087d01010803010108520101080301000805010008040102085301010802010208030102 -0804010108430901070e0001030002020401030102020400060001000803010008040100 -080101000809010108040101080b010008010100080201000814010108510100081a0100 -0802010008020100085e010108110100087d010108020100080101000851010108020101 -080401010803010008020100085201010801010008020100080101000802010008020100 -0801010008420901070e0001030002020401030102020400060001000802010008050100 -0801010008080100080001000803010008000100080b0100080101000803010008130101 -0802010108000100080201020802010008000101080a0102080301020802010008000101 -080201000802010008020102080201000800010108040101080501000803010208030102 -080201000800010108050100080201000862010108010100080001010803010208020104 -080901020802010008020100080101000800010108600101080201000801010008510101 -080101000800010008030100080001000803010008560101080501000805010008020100 -0801010008420901070e0001030002020401030102020400060001000801010008060100 -08010100080a010008050100080b01000801010008040100081201010801010008010101 -080101000802010008010101080101000808010008020100080101000802010008010101 -080101000801010008020100080101000802010008010101080101000803010108050100 -080201000802010008010100080201000801010108010100080301000803010008620101 -0801010108010100080101000802010008030100080a0100080201000801010008020100 -0801010108010100085f0101080201000801010008510101080301000805010008030100 -085601010805010008050100080201000801010008420901070e00010300020204010301 -0202040006000100080001000807010008010100080a010008050100080b010008010100 -080501000811010108010100080201000801010008020100080101000802010008080100 -0805010008020100080101000805010008020100080101000802010008010100080f0100 -0802010008020100080101000802010008010100080201000803010008030103085f0101 -0801010008020100080101000802010008030100080a0100080501000802010008010100 -08020100085f010108020100080101000851010108030100080501000803010308530101 -0803010108050100080301000801010008420901070e0001030002020401030102020400 -06000100080101000806010008010100080a010008050100080b01000801010008040100 -081201010801010008020100080101040801010008020100080901020802010408010100 -08060100080001000802010408010100080f010008020100080201000801010008020100 -0801010008020100080201000804010008020100085e0101080101000802010008010104 -08030100080b010208020100080201000801010008020100085f01010802010008010100 -085101010803010008050100080301000802010008520101080501000803010008040100 -0801010008420901070e0001030002020401030102020400060001000802010008050100 -08010100080a010008050100080b01000801010008030100081301010801010008020100 -080101000805010008020100080c01000801010008050100080601000800010008020100 -08050100080f010008020100080201000801010008020100080101000802010008020100 -0804010008020100085e010108010100080201000801010008070100080e010008010100 -080201000801010008020100085f01010802010008010100085101010803010008050100 -0803010008020100085201010805010008020100080501000801010008420901070e0001 -030002020401030102020400060001000803010008040100080101000803010108040100 -080501000805010108030100080101000802010008140101080101000801010108010100 -080201000801010008020100080801000802010008010100080201000801010008070100 -080301000802010008010100080701010805010008020100080201000801010008020100 -0801010108010100080101000805010008020100085e0101080101000802010008010100 -0802010008030100080a01000802010008010100080101010801010108010100085f0101 -080201000801010008510101080301000805010008030100080201000852010108010100 -0802010008010100080601000801010008420901070e0001030002020401030102020400 -060001000804010008040101080401010802010408010104080301010804010108020100 -081501010802010108000100080201020802010008020100080901020803010208020100 -080701000804010208020100080701010805010008030102080301020802010008000101 -0802010008060102085f0101080101000802010008020102080501010809010208030101 -080001000801010008000101086001010803010108520101080101040801010408020102 -0853010108020102080201040803010108430901070e0001030002020401030102020400 -0600010008050100082a01000816010108050100080e0105084701000870010108150105 -080f010008630101085801010867010108570901070e0001030002020401030102020400 -06000100084901010801010008020100085c010008700101082b01000863010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108020102 -085d010008700101082b010008630101085801010867010108570901070e000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -070e0001030002020401030102020400060001000849010108d501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -02020400060001ff01ff01d40901070e0001030002020401030102020400060001ff01ff -01d40901070e0001030002020401030102020400060001000849010108d5010108900101 -085801010867010108570901070e00010300020204010301020204000600010008490101 -08d5010108900101085801010867010108570901070e0001030002020401030102020400 -0600010008050100082a010008160101086e010008650101089001010858010108670101 -08570901070e0001030002020401030102020400060001000804010008040101080b0100 -08040102080b01010802010008150101084f0102081b010008020102085f010108110100 -080301000878010108030101085201010802010208030102085a01010802010208030102 -0804010008440901070e0001030002020401030102020400060001000803010008040100 -080101000809010108030100080201000809010008010100080201000814010108510100 -081a01000802010008020100085e01010811010008030100087801010802010008010100 -085101010801010008020100080101000802010008590101080101000802010008010100 -080201000802010108440901070e00010300020204010301020204000600010008020100 -080501000801010008080100080001000807010008090100080101000803010008130101 -0802010108000100080201020802010008000101080a0102080301020802010008000101 -080201000802010008020102080201000800010108040101080501000803010208030102 -080201000800010108050100080201000862010108020102080201000802010008010104 -080101000800010108750101080201000801010008510101080501000805010008590101 -0805010008050100080101000800010008440901070e0001030002020401030102020400 -06000100080101000806010008010100080a010008070100080901000801010008040100 -081201010801010008010101080101000802010008010101080101000808010008020100 -080101000802010008010101080101000801010008020100080101000802010008010101 -080101000803010108050100080201000802010008010100080201000801010108010100 -080301000803010008620101080101000802010008010100080201000803010008030101 -080101000874010108020100080101000851010108050100080501000859010108050100 -080501000803010008440901070e00010300020204010301020204000600010008000100 -0807010008010100080a010008060100080a010008010100080501000811010108010100 -080201000801010008020100080101000802010008080100080501000802010008010100 -0805010008020100080101000802010008010100080f0100080201000802010008010100 -0802010008010100080201000803010008030103085f0101080501000801010008020100 -080301000803010008020100087401010802010008010100085101010804010008050100 -085a010108040100080401010804010008440901070e0001030002020401030102020400 -06000100080101000806010008010100080a010008050100080b01000801010008040100 -081201010801010008020100080101040801010008020100080901020802010408010100 -08060100080001000802010408010100080f010008020100080201000801010008020100 -0801010008020100080201000804010008020100085e0101080201030801010008020100 -080301000803010008020100087401010802010008010100085101010803010008050100 -085b010108030100080701000803010008440901070e0001030002020401030102020400 -06000100080201000805010008010100080a010008040100080c01000801010008030100 -081301010801010008020100080101000805010008020100080c01000801010008050100 -08060100080001000802010008050100080f010008020100080201000801010008020100 -0801010008020100080201000804010008020100085e0101080101000802010008010100 -080201000803010008030100080201000874010108020100080101000851010108020100 -08050100085c010108020100080801000803010008440901070e00010300020204010301 -020204000600010008030100080401000801010008030101080401000803010008070101 -080301000801010008020100081401010801010008010101080101000802010008010100 -080201000808010008020100080101000802010008010100080701000803010008020100 -080101000807010108050100080201000802010008010100080201000801010108010100 -080101000805010008020100085e01010801010008020100080101000801010108030100 -0803010008020100087401010802010008010100085101010801010008050100085d0101 -0801010008050100080201000803010008440901070e0001030002020401030102020400 -060001000804010008040101080401010802010408010104080301010804010108020100 -081501010802010108000100080201020802010008020100080901020803010208020100 -080701000804010208020100080701010805010008030102080301020802010008000101 -0802010008060102085f0101080201030802010108000100080401010801010008020100 -087401010803010108520101080101040801010408590101080101040802010208020104 -08420901070e00010300020204010301020204000600010008050100082a010008160101 -08050100080e0105084701000870010108900101085801010867010108570901070e0001 -03000202040103010202040006000100084901010801010008020100085c010008700101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108020102085d01000870010108900101085801010867010108570901070e0001 -030002020401030102020400060001000849010108d50101089001010858010108670101 -08570901070e0001030002020401030102020400060001000849010108d5010108900101 -085801010867010108570901070e00010300020204010301020204000600010008490101 -08d5010108900101085801010867010108570901070e0001030002020401030102020400 -060001000849010108d5010108900101085801010867010108570901070e000103000202 -0401030102020400060001ff01ff01d40901070e00010300020204010301020204000600 -01ff01ff01d40901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -020204000600010008050100082a010008160101086e0100086501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000804010008040101 -080b010008040102080b01010802010008150101084f0102081b010008020102085f0101 -08110100080a010008220102084b01010803010108520101080101040805010008050100 -0852010108020102080201040801010408420901070e0001030002020401030102020400 -060001000803010008040100080101000809010108030100080201000809010008010100 -080201000814010108510100081a01000802010008020100085e010108110100080a0100 -08240100084b010108020100080101000851010108010100080801010804010108520101 -080101000802010008010100080201000801010008460901070e00010300020204010301 -020204000600010008020100080501000801010008080100080001000807010008090100 -0801010008030100081301010802010108000100080201020802010008000101080a0102 -080301020802010008000101080201000802010008020102080201000800010108040101 -080501000803010208030102080201000800010108050100080201000862010108010100 -080001010803010208020104080801000801010008030102080201000800010108020100 -080001010803010208050100084b01010802010008010100085101010801010008070100 -0800010008030100080001000852010108050100080501000801010008460901070e0001 -03000202040103010202040006000100080101000806010008010100080a010008070100 -080901000801010008040100081201010801010008010101080101000802010008010101 -080101000808010008020100080101000802010008010101080101000801010008020100 -080101000802010008010101080101000803010108050100080201000802010008010100 -080201000801010108010100080301000803010008620101080101010801010008010100 -0802010008030100080a0100080001000803010008020100080101010801010008010101 -08010100080101000802010008040100084b010108020100080101000851010108010103 -080301000801010008020100080101000852010108050100080401000802010308430901 -070e000103000202040103010202040006000100080001000807010008010100080a0100 -08050101080a010008010100080501000811010108010100080201000801010008020100 -080101000802010008080100080501000802010008010100080501000802010008010100 -0802010008010100080f0100080201000802010008010100080201000801010008020100 -0803010008030103085f01010801010008020100080101000802010008030100080a0101 -0804010008020100080101000805010008020100080101000802010008040100084b0101 -080201000801010008510101080501000801010008020100080101000802010008520101 -08030101080501000806010008420901070e000103000202040103010202040006000100 -080101000806010008010100080a01000807010008090100080101000804010008120101 -080101000802010008010104080101000802010008090102080201040801010008060100 -080001000802010408010100080f01000802010008020100080101000802010008010100 -08020100080201000804010008020100085e010108010100080201000801010408030100 -080a0101080401040801010008050100080201000801010408040100084b010108020100 -080101000851010108050100080101000802010008010100080201000852010108050100 -080401000806010008420901070e00010300020204010301020204000600010008020100 -0805010008010100080a0100080701000809010008010100080301000813010108010100 -08020100080101000805010008020100080c010008010100080501000806010008000100 -0802010008050100080f0100080201000802010008010100080201000801010008020100 -080201000804010008020100085e010108010100080201000801010008070100080a0100 -08000100080301000805010008050100080201000801010008080100084b010108020100 -080101000851010108010100080201000801010508000105085101010805010008030100 -080301000802010008420901070e00010300020204010301020204000600010008030100 -080401000801010008030101080401000803010008020100080301010803010008010100 -080201000814010108010100080101010801010008020100080101000802010008080100 -080201000801010008020100080101000807010008030100080201000801010008070101 -080501000802010008020100080101000802010008010101080101000801010008050100 -08020100085e01010801010008020100080101000802010008030100080a010008010100 -0802010008020100080101000805010008020100080101000802010008040100084b0101 -080201000801010008510101080101000802010008050100080501000852010108010100 -0802010008030100080301000802010008420901070e0001030002020401030102020400 -060001000804010008040101080401010802010408020102080401010804010108020100 -081501010802010108000100080201020802010008020100080901020803010208020100 -080701000804010208020100080701010805010008030102080301020802010008000101 -0802010008060102085f0101080101000802010008020102080501010808010008020100 -080201020802010008050100080201000802010208050100084b01010803010108520101 -0802010208060100080501000852010108020102080401000804010208430901070e0001 -0300020204010301020204000600010008050100082a01000816010108050100080e0105 -08470100087001010815010508740101085801010867010108570901070e000103000202 -040103010202040006000100084901010801010008020100085c01000870010108900101 -085801010867010108570901070e00010300020204010301020204000600010008490101 -08020102085d01000870010108900101085801010867010108570901070e000103000202 -0401030102020400060001000849010108d5010108900101085801010867010108570901 -070e0001030002020401030102020400060001000849010108d501010890010108580101 -0867010108570901070e0001030002020401030102020400060001000849010108d50101 -08900101085801010867010108570901070e000103000202040103010202040006000100 -0849010108d5010108900101085801010867010108570901070e00010300020204010301 -02020400060001ff01ff01d40901070e0001030002020401030102020400060001ff01ff -01d40901070e0001030002020401030102020400060001000849010108d5010108900101 -0858010108670101085709010010030002020401030102020400060001000849010108d5 -0101089001010858010108670101085709010700000c0900000103000202040103010202 -04000600010008050100082a010008160101088301000850010108900101085801010867 -010108570901070000010608090107000001030002020401030102020400060001000804 -010008040101080b010008070100080a0101080201000815010108110100080a01000822 -0102080b01000806010008090100081501000807010008020102084a0101089001010803 -0101085201010805010008020102085a0101080201020802010408490901070100010607 -090107000001030002020401030102020400060001000803010008040100080101000809 -0101080601010809010008010100080201000814010108110100080a010008240100080b -010008110100081401010806010008020100080201000849010108900101080201000801 -010008510101080401010801010008020100085901010801010008020100080101000802 -010008490901070100010606090107010001030002020401030102020400060001000802 -010008050100080101000808010008000100080501000800010008090100080101000803 -010008130101080101000800010108030102080201040808010008010100080301020802 -010008000101080201000800010108030102080501000804010108020104080201020803 -010208020100080101000803010208020100080001010802010008000100080601000806 -010008490101089001010802010008010100085101010803010008000100080101000802 -010008590101080101000802010008050100084909010702000106050901070100010300 -0202040103010202040006000100080101000806010008010100080a0100080401000801 -010008090100080101000804010008120101080101010801010008010100080201000803 -0100080a0100080001000803010008020100080101010801010008010101080101000801 -010008020100080401000804010108040100080601000802010008020100080101000800 -010008030100080201000801010108010100080301000805010008070100084901010890 -010108020100080101000851010108020100080101000801010008020100085901010801 -01000802010008040100084a090107020001060409010702000103000202040103010202 -040006000100080001000807010008010100080a01000803010008020100080901000801 -010008050100081101010801010008020100080101000802010008030100080a01010804 -010008020100080101000805010008020100080101000802010008040100080b01000806 -01000802010008050101080401000802010008010100080701000805010008060100084a -010108900101080201000801010008510101080101000802010008020102085a01010802 -010208050100084a09010703000106030901070200010300020204010301020204000600 -0100080101000806010008010100080a0100080301000802010008090100080101000804 -01000812010108010100080201000801010408030100080a010108040104080101000805 -0100080201000801010408040100080b0100080601000802010008050101080401040801 -0100080701000804010008060100084b0101089001010802010008010100085101010801 -010008020100080101000802010008590101080101000802010008040100084a09010703 -000106020901070300010300020204010301020204000600010008020100080501000801 -0100080a0100080301050808010008010100080301000813010108010100080201000801 -010008070100080a01000800010008030100080501000805010008020100080101000808 -0100080b0100080601000802010008050100080001000803010008050100080701000804 -010008050100084c01010890010108020100080101000851010108010105080001000802 -010008590101080101000802010008030100084b09010704000106010901070300010300 -020204010301020204000600010008030100080401000801010008030101080401000807 -010008030101080301000801010008020100081401010801010008020100080101000802 -010008030100080a01000801010008020100080201000801010008050100080201000801 -010008020100080401000804010108040100080601000802010008020100080101000801 -0100080201000802010008010100080701000803010008050100084d0101089001010802 -010008010100085101010805010008010100080201000859010108010100080201000803 -0100084b0901070400010600090107040001030002020401030102020400060001000804 -010008040101080401010802010408050100080301010804010108020100081501010801 -010008020100080201020805010108080100080201000802010208020100080501000802 -010008020102080501000804010108050101080401000803010208020100080201000802 -010208020100080501040801010008050104084901010890010108030101085201010805 -010008020102085a01010802010208040100084b09010705000009020704000103000202 -04010301020204000600010008050100082a0100081601010815010508b9010108900101 -085801010867010108570901070500000901070500010300020204010301020204000600 -01000849010108d501010890010108580101086701010857090107060901070500010300 -02020401030102020400060001000849010108d501010890010108580101086701010857 -09010706090007060001030002020401030102020400060001000849010108d501010890 -010108580101086701010857090100100300020204010301020204000600010008490101 -08d5010108900101085801010867010108570900001103000202040103010202040009ff -09ff09d9060e03000202040103010202040009ff09ff09d80000060e0300020204010301 -020204000901070d0000070000ff00ff00a507100001070c0001060e0300020204010301 -020204000901070b00010900070000ff00ff00a4090007100003070a0001060e03000202 -040103010202040009010709000209010700000106ff06ff06a109010710000507080001 -060e030002020401030102020400090107070003060009010700000106ff06ff06a10901 -071000010601000307060001060e03000202040103010202040009010705000306020901 -0700000106ff06ff06a10901071000010603000307040001060e03000202040103010202 -0400090107030003060409010700000106ff06ff06a10901071000010605000307020001 -060e030002020401030102020400090107010003060609010700000106ff06ff06a10901 -071000010607000307000001060e03000202040103010202040009050608090107000001 -06ff06ff06a1090107100001060809030001060e03000202040103010202040009010701 -0903060609010700000106ff06ff06a10901071000010607090307000001060e03000202 -0401030102020400090107030903060409010700000106ff06ff06a10901071000010605 -090307020001060e030002020401030102020400090107050903060209010700000106ff -06ff06a10901071000010603090307040001060e03000202040103010202040009010707 -0903060009010700000106ff06ff06a10901071000010601090307060001060e03000202 -04010301020204000901070909040700000106ff06ff06a1090107100001090307080001 -060e0300020204010301020204000901070b09020700000109ff09ff09a3071000010901 -070a0001060e0300020204010301020204000901070d09000700000009ff09ff09a40710 -00000900070c0001060e030002020401030102020400090100ff00ff00d7060e03000202 -0401030102020400090000ff00ff00d8060e03000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff0615 -01000601010006ce030002020401030004040601000a0607010006020100060401000606 -010006100102061201000686000a06090100060c01000611010006020100060401000606 -0100060f01000602010006e0010006010100060801000602010006040100060601000605 -0100061f010106890300040403050601000909000607010006020100060c0100060f0100 -060201000611010006860009090006090100060c01000611010006020100060c0100060f -01010601010006e00100060101000608010006020100060c010006050100061e01000601 -010006880304040003010202040006010001060609010607010006020100060201020603 -010106000100060201020609010006050100060201000602010206020104060201020602 -010106000100060901000600010106020100060001010603010206030102060301020603 -010206030102060301020603010206310001060609010608010006000100060201000602 -010006010104060201020609010006020100060201020603010106000100060201020609 -01010601010006020102060201000602010006d101050607010006020100060201020603 -010106000100060201010600010006020102060201000600010106040101060a01000601 -010006880300020204010301020204000601000106060901060701000602010006040100 -060201000601010106010100060201000609010006040100060201000601010006020100 -060301000603010006020100060101000600010006000100060801010601010006010101 -060101000601010006020100060101000602010006010100060201000601010006020100 -060101000602010006010100060201000601010006020100063000010606090106080100 -060001000602010006020100060301000603010006020100060801000602010006040100 -060201000601010106010100060201000608010006000100060001000601010006020100 -060101000602010006d20100060101000608010006020100060401000602010006010101 -06010100060101010601010006020100060101010601010006030101060a010006010100 -068803000202040103010202040006010001060609010607010406040100060201000602 -01000601010006020100060a010106030100060101000601010006070100060301000602 -010006010100060001000600010006080100060201000601010006050100060201000601 -010006050100060201000601010006050100060501000602010006010100063400010606 -090106080100060001000602010006020100060301000603010006020100060101040601 -010406040100060201000602010006010100060201000608010006000100060001000601 -01000602010006010100060001000600010006d101000601010006090104060401000602 -010006020100060101000602010006010100060201000601010006020100061001000601 -010006880300020204010301020204000601000106060901060701000602010006040100 -060201000602010006010104060c01000602010006010100060201020604010006030104 -060101000600010006000100060801000602010006010100060501000602010006010100 -060501040602010206030102060201040602010206310001060609010607010006020100 -060101000602010006030100060301000602010006080100060201000604010006020100 -060201000601010406080100060101010601010406010100060001000600010006d00105 -060801000602010006040100060201000602010006010100060201000601010406010100 -060201000610010006010100068803000202040103010202040006010001060609010607 -01000602010006040100060201000602010006010100060c010006020100060301000600 -010006050100060301000603010006050100060001000600010006080100060201000601 -010006050100060201000601010006050100060901000605010006010100060901000630 -000106060901060701040601010006020100060301000603010006020100060801000602 -010006040100060201000602010006010100060c01000601010106010100060501000600 -01000600010006d101000601010006090100060201000604010006020100060201000601 -010006020100060101000605010006020100061001000601010006880300020204010301 -020204000601000106060901060701000602010006040100060201000601010106010100 -060201000608010006020100060301010602010006020100060301000603010006020100 -060101000600010006000100060801010601010006010100060501000602010006010100 -060201000601010006020100060101000602010006010100060201000601010006020100 -060101000602010006300001060609010607010006020100060101000601010106030100 -060301000602010006080100060201000604010006020100060101010601010006020100 -0608010006020100060101000602010006010100060001000600010006d1010006010100 -060901000602010006040100060201000601010106010100060101010601010006020100 -060101000602010006030101060a01000601010006880300020204010301020204000601 -000106060901060701000602010006040100060301010600010006020102060a01020605 -010006030102060501010602010206020100060001000600010006080100060001010602 -010006060102060301020603010206030102060301020603010206030102063100010606 -090106070100060201000602010106000100060401010602010206090100060201000604 -0100060301010600010006020102060901000602010006020102060301000600010006d2 -010006010100060901000602010006040100060301010600010006020101060001000602 -0102060201000602010006030101060b0101068903000202040103010202040006010001 -09080634010006250100066c0001090806ff06ff06060300020204010301020204000601 -00000909063101000600010006260100066c0000090906ff06ff06060300020204010301 -02020400063f01000627010006ff06ff067e03000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040006ff06ff06e803000202040103010202040006ff06ff06e8 -03000202040103010202040003ff03ff03e9020204010301021a0400030002ff02ff02b6 -04000300021a04010301021a0400030002ff02ff02b604000300021a04010301021a0400 -030002ff02ff02b604000300021a04010301041b030004ff04ff04b70300041c030004ff -04ff04f3 -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 22 377 234 -%%EOF diff --git a/lib/pman/doc/src/note.gif b/lib/pman/doc/src/note.gif deleted file mode 100644 index 6fffe30419..0000000000 Binary files a/lib/pman/doc/src/note.gif and /dev/null differ diff --git a/lib/pman/doc/src/notes.xml b/lib/pman/doc/src/notes.xml deleted file mode 100644 index 4e9663c916..0000000000 --- a/lib/pman/doc/src/notes.xml +++ /dev/null @@ -1,211 +0,0 @@ - - - - -
- - 20042013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman Release Notes - otp_appnotes - nil - nil - nil - notes.xml -
-

This document describes the changes made to the Pman application.

- -
Pman 2.7.1.4 - -
Improvements and New Features - - -

- Tuple funs (deprecated in R15B) are no longer supported.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-10170

-
-
-
- -
- -
Pman 2.7.1.3 - -
Improvements and New Features - - -

- Misc build updates

-

- Own Id: OTP-10784

-
-
-
- -
- -
Pman 2.7.1.2 - -
Improvements and New Features - - -

The GS applications is now deprecated and will be - removed in the R16 release. The following GS-based - applications have been superseded by the Observer - application and will removed in R16: Appmon, Pman, - Tv.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-9907

-
-
-
- -
- -
Pman 2.7.1.1 - -
Improvements and New Features - - -

- Miscellaneous documentation build updates

-

- Own Id: OTP-9813

-
-
-
- -
- -
Pman 2.7.1 - -
Improvements and New Features - - -

- The documentation is now built with open source tools - (xsltproc and fop) that exists on most platforms. One - visible change is that the frames are removed.

-

- Own Id: OTP-8201

-
-
-
- -
- -
Pman 2.7 - -
Improvements and New Features - - -

The copyright notices have been updated.

-

- Own Id: OTP-7851

-
-
-
- -
- -
- Pman 2.6 - -
- Improvements and New Features - - -

Some maintenance work to replace deprecated guard - expressions etc. somehow grew into a larger rewrite of - parts of the Pman code, fixing some of the more blatant - errors and removing unused code.

-

The default font has been changed, so now the entire text - on buttons etc. should be visible on most platforms.

-

Saving and restoring trace options to/from file now - works.

-

Selecting different sets of processes to hide/view should - now work in a more consistent and logical way.

-

It is now possible to select more than one module or - process to hide/show.

-

Own Id: OTP-6012 Aux Id: OTP-5987

-
-
-
-
- -
- Pman 2.5.3 - -
- Fixed Bugs and Malfunctions - - -

Removed some dead code from pman_process.

-

Own Id: OTP-6550

-
-
-
-
- -
- Pman 2.5.2 - -
- Fixed Bugs and Malfunctions - - -

Some dead code reported by Dialyzer was eliminated.

-

A bug in dbg when tracing to wrap trace files - has been corrected. It failed to delete any already existing - wrap trace files with the same names when starting a new - wrap trace.

-

Own Id: OTP-5329

-
- -

The graphic applications now search for HTML - documentation in the correct place.

-

Own Id: OTP-5381

-
-
-
-
- -
- Pman 2.5.1 - -
- Fixed Bugs and Malfunctions - - -

The Pman 'trace shell' functionality was broken, it has - now been fixed. Furthermore, Pman could not correctly - find the pid of the active shell if more than one shell - process was running on the node. This has also been - corrected.

-

Own Id: OTP-5191

-
-
-
-
-
- diff --git a/lib/pman/doc/src/options.gif b/lib/pman/doc/src/options.gif deleted file mode 100644 index 18377fbed1..0000000000 Binary files a/lib/pman/doc/src/options.gif and /dev/null differ diff --git a/lib/pman/doc/src/options.ps b/lib/pman/doc/src/options.ps deleted file mode 100644 index b5e2c6a391..0000000000 --- a/lib/pman/doc/src/options.ps +++ /dev/null @@ -1,829 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./options.tmp.eps) -%%CreationDate: (Tue Jun 12 18:04:30 2001) -%%BoundingBox: 0 53 250 318 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 53 250 318 -userdict begin -%%BeginData: -DisplayImage -0 53 -250.000000 265.000000 -12 -350 371 -1 -0 -0 -8 -ffffff -000000 -708090 -b03060 -d9d9d9 -808080 -a3a3a3 -000000 -03ff03ff03ff035f04000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400031b040c0392040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000307040c03050400030a040003080404030b0402030d -0401030104010305040703200403030a040103010401031e040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000308040003020400030204000302 -040003050400030a0400030804010301040103090401030f040103010401030804010322 -040103010401030904010321040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070400030204000302040003020400030504000303 -040203030400030804010302040103010403030104030301040303010401030104010300 -040103000403030704010302040103000401030004030302040303020403030604010303 -04010300040103000401030104030300040103010403030104010300040103020403030a -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000308 -040003020400030204000302040003050400030204040302040003080401030204010300 -040103010401030104010301040103010401030004010301040103000401030104010308 -040103020406030104010300040103010401030004010301040103050401030304010300 -040203000401030104010301040103000401030104010300040203000401030004010301 -040103080400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030704040302040003020400030504000301040603010400030804010302 -040103000401030104010301040103050401030004010301040103000401030104010308 -040103020402030504010300040103040401030104010305040103030401030004010301 -040103010401030104010300040103010401030004010301040103000402030c04000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030804000306 -040003020400030504000301040603010400030804010302040103000405030104010302 -040403000401030104010300040103010401030804010302040103030404030004010304 -040503050401030304010300040103010401030104010301040103000401030104010300 -040103010401030204020309040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070400030604000302040003050400030104060301 -040003080401030204010300040103050401030104010301040103000401030104010300 -040103010401030804010302040103020401030104010300040103040401030904010303 -040103000401030104010301040103010401030004010301040103000401030104010303 -040203090400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003080400030604000302040003050400030204040302040003080401030104010301 -040103010401030104010301040103010401030004010300040203000401030104010300 -040003060401030204010302040103010401030004010301040103000401030104010306 -040103010401030104020300040103010401030004020300040103010401030004010301 -040103000401030104010308040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070408030204000305040003030402030304000308 -040403030403030204010302040203000401030004010300040103000401030204010307 -040103020401030304020300040103000403030204030308040303020401030004010303 -04010300040103010403030104010301040103010403030a040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000300040003000400030004000300040003080400030a040003050400030a -040003660401032904000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000300040003070400030a040003050400030a040003660401032a04000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003000400030004000300040003080400030a -04000305040c036604010329040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000307040c03a604000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003ff03ff03d402ff02ff02bb00ff00ff00ba -050000ff005b050100ff00ff000e050000ff005b050100b104a80502000204a8000504a8 -0502000204a8000504a80502000204a8000504a80502000204a8000504a80502000204a8 -000504a80502000204a8000504a80502000204a8000504a80502000204a8000504a80502 -000204a8000504a80502000204a8000504a80502000204a8000504a80502000204a80005 -04a8050200020407010404080100041601000404010004360100040601000433000504a8 -0502000204090100040a0100041c010004360100043b0005040801040434010004130100 -041a010004060100042b0502000204090100040301000400010104020100040001010403 -010204020100040001010403010204020104040201020402010004000101040301020403 -0102040a0102040201000400010104020104040201020403010204020100040001010403 -01020404010104170005040a01000436010004130100041a010004330502000204090100 -040301010401010004010101040101000401010004020100040101010401010004040100 -040401000403010004020100040101010401010004010100040201000401010004020100 -040801000402010004010101040101000403010004060100040201000402010004010101 -0401010004010100040201000403010104170005040a0100040301000400010104030102 -0403010204030102040a0102040201000402010004010104040101000400010104020100 -040201000401010404090102040201000400010104020104040201020403010204020100 -040001010403010204040101040f05020002040901000403010004020100040101000402 -010004010100040201000401010004080100040401000407010004010100040201000401 -010004050100040201000408010004020100040101000402010004030100040601000402 -01000402010004010100040201000401010004210005040a010004030101040101000401 -010004020100040101000402010004010100040201000408010004020100040101000402 -0100040301000403010104010100040101000402010004030100040a0100040201000401 -010104010100040301000406010004020100040201000401010104010100040101000402 -010004030101040f05020002040901000403010004020100040101000402010004010104 -040101000408010004040100040401030401010004020100040101000405010404080100 -040201000401010004020100040301000406010004020100040201000401010004020100 -04020102041e0005040a0100040301000409010004010100040501000402010004080100 -040201000401010004020100040301000403010004020100040101000402010004030100 -040a01000402010004010100040201000403010004060100040201000402010004010100 -040201000401010004190502000204090100040301000402010004010100040201000401 -010004050100040801000404010004030100040201000401010004020100040101000405 -0100040c0100040201000401010004020100040301000406010004020100040201000401 -01000402010004050100041d0005040a0100040301000406010304010100040501040408 -010004020100040101000402010004030100040301000402010004010100040201000403 -0100040a0100040201000401010004020100040301000406010004020100040201000401 -010004020100040201020416050200020409010004030100040201000401010004020100 -040101000402010004010100040801000404010004030100040201000401010004020100 -040101000402010004010100040201000408010004020100040101010401010004030100 -040601000402010004020100040101000402010004010100040201000403010104170005 -040a01000403010004050100040201000401010004050100040c01000402010004010100 -04020100040301000403010004020100040101000402010004030100040a010004020100 -040101000402010004030100040601000402010004020100040101000402010004050100 -041505020002040701040401010004020100040101000402010004020102040201000408 -0100040501010402010304010100040201000402010204030102040a0102040201000400 -01010405010104040100040301020402010004020100040201020404010104170005040a -010004030100040501000402010004010100040201000401010004020100040801000402 -01000401010004010101040301000403010104010100040101000401010104030100040a -010004020100040101010401010004030100040601000402010004020100040101000402 -0100040101000402010004030101040f050200020462010004440005040a010004030100 -040601030402010204030102040a01020403010104000100040401010401010004000101 -040301010400010004040101040901020402010004000101040501010404010004030102 -04020100040201000402010204040101040f050200020462010004440005044701000421 -0100043c0502000204620100044400050447010004210100043c0502000204a800050447 -010004210100043c0502000204a8000504a80502000204a8000504a80502000204a80005 -04a80502000204a8000504a80502000204a8000504a80502000204a8000504a805020002 -04a8000504a80502000204a8000504a80502000204a8000504a80502000204a8000504a8 -0502000204a8000504a80502000204a8000504a80502000204a8000504a80502000204a8 -000504a8050200020408050a04070104040801000416010004040100045f000504a80502 -000204080509000004090100040a0100041c0100045f000504a805020002040805010306 -000104090100040301000400010104020100040001010403010204020100040001010403 -010204020104040901020402010004000101040a01020402010004000101040301020402 -0100040201000401010004000101041f000504a805020002040805010306000104090100 -040301010401010004010101040101000401010004020100040101010401010004040100 -04040100040a010004020100040101010401010004080100040201000401010104010100 -040101000402010004010100040201000401010104010100041e00050409050a04070104 -043d01000447050200020408050103060001040901000403010004020100040101000402 -01000401010004020100040101000408010004040100040a010004020100040101000402 -010004080100040501000402010004050100040101000400010004000100040101000402 -0100041e000504090509000004090100043f010004470502000204080501030600010409 -01000403010004020100040101000402010004010104040101000408010004040100040a -010004020100040101000402010004090102040201000402010004020103040101000400 -0100040001000401010004020100041e0005040905010306000104090100040301000400 -0101040301020403010204030102040a0102040301020402010004000101040301010400 -010004470502000204080501030600010409010004030100040201000401010004020100 -04010100040501000408010004040100040a0100040201000401010004020100040c0100 -040101000402010004010100040201000401010004000100040001000401010004020100 -041e00050409050103060001040901000403010104010100040101000402010004010100 -040201000401010004020100040801000402010004010100040201000401010104010100 -040101000401010104470502000204080501030600010409010004030100040201000401 -0100040201000401010004020100040101000408010004040100040a0100040201000401 -010004020100040801000402010004010101040101000401010004020100040101000400 -0100040001000401010004020100041e0005040905010306000104090100040301000409 -010004010100040501000402010004080100040501000402010004010100040201000401 -010004020100044705020002040805010306000104070104040101000402010004010100 -040201000402010204020100040801000405010104090102040201000402010004090102 -04020100040001010403010304020100040001000402010004020100041e000504090501 -030600010409010004030100040601030401010004050104040901020402010404010100 -040201000401010004020100044705020002040805010008045b01000437000504090501 -030600010409010004030100040501000402010004010100040501000410010004010100 -04050100040201000401010004020100044705020002040805000009045b010004370005 -040905010306000104090100040301000405010004020100040101000402010004010100 -040201000408010004020100040101000402010004010100040201000401010004010101 -044705020002046f01000437000504090501030600010409010004030100040601030402 -010204030102040a01020403010204020100040201000402010104000100044705020002 -04a8000504090501000804930502000204a8000504090500000904930502000204a80005 -04a80502000204a8000504a805020002041b0501048a000504a805020002041a0503040e -01000404010204030102046a000504a80502000204190505040d01000406010004050100 -046a000504a8050200020418050203010502040b0100040001000405010004050100040a -010204020100040001010403010204020100040201000401010004000101040301020439 -000504a8050200020417050203030502040a010004000100040501000405010004090100 -040201000401010104010100040101000402010004010100040201000401010104010100 -04010100040201000438000504a805020002041605020305050204090100040001000405 -010004050100040901000405010004020100040501000401010004000100040001000401 -01000402010004010100043c000504a80502000204150002030700020407010004020100 -0404010004050100040a0102040201000402010004020103040101000400010004000100 -0401010004020100040201020439000504a8050200020416000203050002040801040404 -010004050100040d01000401010004020100040101000402010004010100040001000400 -0100040101000402010004050100043800050409050a0407010404430100044105020002 -041700020303000204090100040201000404010004050100040901000402010004010101 -040101000401010004020100040101000400010004000100040101000402010004010100 -0402010004380005040905090000040901000488050200020418000203010002040a0100 -040201000404010004050100040a01020402010004000101040301030402010004000100 -040201000402010004020102043900050409050103060001040901000403010004000101 -040301020403010204030102040901000400010104030102040301020403010204030102 -04020100040201000402010204330502000204190005042e010004580005040905010306 -000104090100040301010401010004010100040201000401010004020100040101000402 -010004080101040101000401010004020100040101000402010004010100040201000404 -010004020100040201000401010004020100043205020002041a0003042f010004580005 -040905010306000104090100040301000409010004010100040501000402010004080100 -040501000402010004010100040501000402010004040100040201000402010004010100 -04020100043205020002041b000104300100045800050409050103060001040901000403 -010004060103040101000405010404080100040501040401010004050104040401000403 -0100040001000402010404320502000204a8000504090501030600010409010004030100 -04050100040201000401010004050100040c010004050100040501000405010004080100 -04030100040001000402010004360502000204a800050409050103060001040901000403 -010004050100040201000401010004020100040101000402010004080100040501000402 -010004010100040201000401010004020100040401000404010004030100040201000432 -0502000204a8000504090501030600010409010004030100040601030402010204030102 -0409010004060102040301020403010204050100040401000404010204330502000204a8 -000504090501000804930502000204a80005040905000009049305020002041b0001048a -000504a805020002041a0003040c01040404010004120100044301020416000504a80502 -000204190005040b0100041c0100044501000416000504a8050200020418000204010002 -040a01000406010204020100040001010403010204020104040901020402010004000101 -0403010204020100040201000401010004000101040a0102040201000400010104050100 -0402010004020100040e000504a805020002041700020403000204090100040801000402 -010104010100040101000402010004030100040a01000402010004010101040101000401 -010004020100040101000402010004010101040101000408010004020100040101010401 -0100040401000402010004020100040e000504a805020002041600020405000204080103 -04050100040201000405010004070100040a010004050100040201000405010004010100 -040001000400010004010100040201000408010004020100040101000402010004040100 -0403010004010100040e000504a805020002041505020407050204070100040801000402 -01000406010204040100040b010204020100040201000402010304010100040001000400 -010004010100040201000408010004020100040101000402010004040100040301000401 -0100040e000504a805020002041605020405050204080100040801000402010004090100 -04030100040e010004010100040201000401010004020100040101000400010004000100 -040101000402010004080100040201000401010004020100040401000404010004000100 -040e000504a8050200020417050204030502040901000408010004020100040501000402 -010004030100040a01000402010004010101040101000401010004020100040101000400 -010004000100040101000402010004080100040201000401010004020100040401000404 -0101040f00050409000a04070104042701010418010004060100043a0502000204180502 -04010502040a010004080100040201000406010204050101040901020402010004000101 -040301030402010004000100040201000402010004090102040201000402010004040100 -04050100040f00050409000905000409010004280100041a010004420502000204190505 -043c010004390100040f0005040900010406050104090100040301000400010104030102 -0403010204030102040b0100040301000402010004010100040001010403010204020104 -0402010204030102040201000400010104030102042505020002041a0503043d01000436 -010004000100041000050409000104060501040901000403010104010100040101000402 -010004010100040201000401010004020100040801040401010004020100040101010401 -010004010100040201000403010004060100040201000402010004010101040101000401 -010004020100042405020002041b0501043e010004370100041100050409000104060501 -040901000403010004090100040101000405010004020100040a01000403010004020100 -040101000402010004010100040701000406010004020100040201000401010004020100 -0401010004280502000204a8000504090001040605010409010004030100040601030401 -010004050104040a01000403010004020100040101000402010004010100040701000406 -0100040201000402010004010100040201000402010204250502000204a8000504090001 -04060501040901000403010004050100040201000401010004050100040e010004030100 -040201000401010004020100040101000407010004060100040201000402010004010100 -040201000405010004240502000204a80005040900010406050104090100040301000405 -01000402010004010100040201000401010004020100040a010004030100040101010401 -010004020100040101000402010004030100040601000402010004020100040101000402 -0100040101000402010004240502000204a8000504090001040605010409010004030100 -040601030402010204030102040b01000404010104000100040101000402010004020102 -04050101040401000403010204020100040201000402010204250502000204a800050409 -0001050804930502000204a8000504090000050904930502000204a8000504a805020002 -04a8000504a80502000204a8000504a80502000204a8000504a80502000204a8000504a8 -0502000204a8000504a80502000204a8000504a80502000204a8000504a80502000204a8 -000504a80502000204a800050409000a040701040442010004420502000204a800050409 -00090500040901000444010004420502000204a800050409000104060501040901000403 -010004000101040301020403010204030102040a01020402010004020100040201020402 -0100040001010402010404020102043a0502000204a80005040900010406050104090100 -040301010401010004010100040201000401010004020100040101000402010004080100 -040201000401010004020100040101000402010004010101040101000403010004030100 -0402010004390502000204a8000504090001040605010409010004030100040901000401 -010004050100040201000408010004020100040101000402010004010100040201000401 -0100040201000403010004030100043d0502000204a80005040900010406050104090100 -040301000406010304010100040501040408010404020100040001000402010404010100 -040201000403010004040102043a0502000204a800050409000104060501040901000403 -010004050100040201000401010004050100040c01000406010004000100040201000405 -010004020100040301000407010004390502000204a80005040900010406050104090100 -040301000405010004020100040101000402010004010100040201000408010004020100 -040301000403010004020100040101000402010004030100040301000402010004390502 -00020408050a040701040408010004160100040401000420010204050100040901000429 -000504090001040605010409010004030100040601030402010204030102040a01020404 -01000404010204020100040201000404010104020102043a050200020408050900000409 -0100040a0100041c01000422010004100100042900050409000105080493050200020408 -050103060001040901000403010004000101040201000400010104030102040201000400 -01010403010204020104040901020402010004000101040c010004030102040201000400 -010104020100040101000426000504090000050904930502000204080501030600010409 -010004030101040101000401010104010100040101000402010004010101040101000404 -010004040100040a0100040201000401010104010100040b010004050100040201010401 -010004010100040001000427000504a80502000204080501030600010409010004030100 -0402010004010100040201000401010004020100040101000408010004040100040a0100 -040201000401010004020100040b01000405010004020100040201000401010104280005 -04a805020002040805010306000104090100040301000402010004010100040201000401 -0104040101000408010004040100040a0100040201000401010004020100040b01000405 -01000402010004020100040101010428000504a805020002040805010306000104090100 -0403010004020100040101000402010004010100040501000408010004040100040a0100 -040201000401010004020100040b01000405010004020100040201000401010004000100 -0427000504a8050200020408050103060001040901000403010004020100040101000402 -01000401010004020100040101000408010004040100040a010004020100040101000402 -0100040b010004050100040201000402010004010100040101000426000504a805020002 -040805010306000104070104040101000402010004010100040201000402010204020100 -0408010004050101040901020402010004020100040b0100040501000402010004020100 -04010100040201000425000504a8050200020408050100080494000504a8050200020408 -050000090494000504a80502000204a8000504a80502000204a8000504a80502000204a8 -000504a80502000204a8000504a80502000204a8000504a805020002041b0501048a0005 -04a805020002041a0503040e01000404010204030102040a01020405010004090100044a -000504a80502000204190505040d01000406010004050100040c010004100100044a0005 -04a8050200020418050203010502040b0100040001000405010004050100040c01000403 -010204020100040001010402010004010100040301020440000504a80502000204170502 -03030502040a0100040001000405010004050100040c0100040501000402010104010100 -04010100040001000403010004020100043f000504a80502000204160502030505020409 -0100040001000405010004050100040c0100040501000402010004020100040101010404 -01000443000504a805020002041500020307000204070100040201000404010004050100 -040c010004050100040201000402010004010101040501020440000504a8050200020416 -000203050002040801040404010004050100040c01000405010004020100040201000401 -01000400010004070100043f000504a80502000204170002030300020409010004020100 -0404010004050100040c0100040501000402010004020100040101000401010004020100 -04020100043f000504a8050200020418000203010002040a010004020100040401000405 -0100040c01000405010004020100040201000401010004020100040201020440000504a8 -05020002041900050488000504a805020002041a00030489000504a805020002041b0001 -048a000504a80502000204a8000504a80502000204a8000504a80502000204a8000504a8 -0502000204a8000504a80502000204a8000504a805020002041b0001048a000504a80502 -0002041a0003040c01040404010004120100040b01020405010004090100041b0102041d -000504a80502000204190005040b0100041c0100040d010004100100041d0100041d0005 -04a8050200020418000204010002040a0100040601020402010004000101040301020402 -0104040b01000403010204020100040001010402010004010100040a0102040201000400 -01010405010004020100040201000415000504a805020002041700020403000204090100 -040801000402010104010100040101000402010004030100040d01000405010004020101 -040101000401010004000100040a01000402010004010101040101000404010004020100 -040201000415000504a80502000204160002040500020408010304050100040201000405 -010004070100040d010004050100040201000402010004010101040b0100040201000401 -0100040201000404010004030100040101000415000504a8050200020415050204070502 -0407010004080100040201000406010204040100040d0100040501000402010004020100 -04010101040b010004020100040101000402010004040100040301000401010004150005 -04a80502000204160502040505020408010004080100040201000409010004030100040d -01000405010004020100040201000401010004000100040a010004020100040101000402 -01000404010004040100040001000415000504a805020002041705020403050204090100 -0408010004020100040501000402010004030100040d0100040501000402010004020100 -040101000401010004090100040201000401010004020100040401000404010104160005 -04a8050200020418050204010502040a010004080100040201000406010204050101040b -010004050100040201000402010004010100040201000409010204020100040201000404 -0100040501000416000504a80502000204190505047001000416000504a805020002041a -0503046e0100040001000417000504a805020002041b0501047001000418000504a80502 -000204a8000504a80502000204a8000504a80502000204a8000504a80502000204a80005 -04a80502000204a8000504a80502000204a8000504a80502000204a8000504a805020002 -04a8000504a80502000204a8000504a80502000204a8000504a80502000204a8000504a8 -0502000204a8000504a80502000204a8000505ab000205a8000405ac000105a9000305ad -000005aa00ff00ff00ff00ff001f04ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff04570005040f01040434010004130100041a01000406010004d3 -0005041101000436010004130100041a010004db00050411010004030100040001010403 -01020403010204030102040a010204020100040201000401010404010100040001010402 -010004020100040101040409010204020100040001010402010404020102040301020402 -010004000101040301020404010104b70005041101000403010104010100040101000402 -010004010100040201000401010004020100040801000402010004010100040201000403 -01000403010104010100040101000402010004030100040a010004020100040101010401 -010004030100040601000402010004020100040101010401010004010100040201000403 -010104b70005041101000403010004090100040101000405010004020100040801000402 -01000401010004020100040301000403010004020100040101000402010004030100040a -010004020100040101000402010004030100040601000402010004020100040101000402 -01000401010004c100050411010004030100040601030401010004050104040801000402 -01000401010004020100040301000403010004020100040101000402010004030100040a -010004020100040101000402010004030100040601000402010004020100040101000402 -01000402010204be0005041101000403010004050100040201000401010004050100040c -010004020100040101000402010004030100040301000402010004010100040201000403 -0100040a0100040201000401010004020100040301000406010004020100040201000401 -0100040201000405010004bd000504110100040301000405010004020100040101000402 -010004010100040201000408010004020100040101000401010104030100040301010401 -0100040101000401010104030100040a0100040201000401010104010100040301000406 -01000402010004020100040101000402010004010100040201000403010104b700050411 -010004030100040601030402010204030102040a01020403010104000100040401010401 -010004000101040301010400010004040101040901020402010004000101040501010404 -0100040301020402010004020100040201020404010104b70005044e01000421010004e4 -0005044e01000421010004e40005044e01000421010004e4000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff045700050416050104ff043e000504150503040c010404190100 -040d010004ff0401000504140505040d0100042a010004ff040100050413050203010502 -040c01000403010004000101040901000402010004020102040201000400010104030101 -0400010004020102040201000402010004f300050412050203030502040b010004030101 -040101000408010004020100040401000402010104010100040101000401010104010100 -04020100040101000402010004f300050411050203050502040a01000403010004020100 -040801000400010004000100040401000402010004020100040101000402010004010100 -0402010004010100040001000400010004f3000504100002030700020409010004030100 -040201000408010004000100040001000404010004020100040201000401010004020100 -040101000402010004010100040001000400010004f300050411000203050002040a0100 -040301000402010004080100040001000400010004040100040201000402010004010100 -04020100040101000402010004010100040001000400010004f300050412000203030002 -040b01000403010004020100040801000400010004000100040401000402010004020100 -0401010004010101040101000402010004010100040001000400010004f3000504130002 -03010002040a010404010100040201000409010004000100040501000402010004020100 -040201010400010004020102040301000400010004f400050414000504ff043c00050415 -000304ff043d00050416000104ff043e000504ff0457000504ff0457000504ff04570005 -04ff0457000504ff0457000504ff040600470408000504ff040600460500040800050467 -058d0410000104430501040800050467058c000004100001044305010408000504670501 -048900010410000104430501040800050467050104890001041000010443050104080005 -04160001044e0501048900010410000104070602043805010408000504150003040c0104 -041201010404010004030102041905010489000104100001040706000401060004370501 -0408000504140005040d010004130100040d010004190501048900010410000104070600 -040106000402060004000601040306020402060004020600040206020403060204140501 -040800050413000204010002040c010004040102040b0100040401020405010004030102 -041205010489000104100001040706000401060004020601040106000401060004020600 -040106000402060004010600040206000401060004020600041305010408000504120002 -04030002040b010004030100040201000408010404040100040501000402010004020100 -041105010489000104100001040706030402060004050600040206000401060004000600 -0400060004010600040506000402060004130501040800050411000204050002040a0100 -0403010004020100040a0100040601000405010004020100040201000411050104890001 -041000010407060004020600040106000405060004020600040106000400060004000600 -040206020402060404130501040800050410050204070502040901000403010004020100 -040a01000406010004050100040201040411050104890001041000010407060004020600 -040106000405060004020600040106000400060004000600040506000401060004170501 -040800050411050204050502040a01000403010004020100040a01000406010004050100 -040201000415050104890001041000010407060004020600040106000405060004020600 -040106000400060004000600040106000402060004010600040206000403060104040601 -040406010501040800050412050204030502040b01000403010004020100040a01000406 -010004050100040201000402010004110501048900010410000104070603040206000406 -060204030600040006000403060204030602040406010404060104040601050104080005 -0413050204010502040c010004040102040b010004060100040501000403010204120501 -0489000104100001044305010408000504140505044c0501048900010410000104430501 -0408000504150503044d05010489000104100001044305010408000504160501044e0501 -048900010410000104430501040800050467050104890001041000010443050104080005 -04670501008b04100001044305010408000504670500008c041000010443050104080005 -04ff0406000105450408000504ff0406000005460408000504ff0457000504ff04570005 -04ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff04570005 -04ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff04570005 -04ff0457000504ff0457000504ff0457000505ff0557000405ff0558000305ff055900ff -00ff00ff00ff001f04ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff04570005044c003b044b003b04460005044c003a -0500044b003a050004460005044c000104370501044b00010437050104460005044c0001 -04370501044b00010437050104460005044c000104370501044b00010437050104460005 -044c000104370501044b00010437050104460005044c000104370501044b000104370501 -04460005044c000104370501044b00010437050104460005044c000104370501044b0001 -0437050104460005044c000104150102040201000402010004160501044b000104070102 -041f01020409050104460005044c00010414010004020100040101000401010004170501 -044b00010406010004020100042001000409050104460005044c00010414010004020100 -040101000400010004180501044b00010406010004020100040201020402010004000101 -0403010204030102040501000409050104460005044c0001041401000402010004010101 -04190501044b000104060100040501000402010004010101040101000401010004020100 -0401010004020100040401000409050104460005044c0001041401000402010004010100 -0400010004180501044b0001040601000409010004010100040201000401010004050100 -04020100040401000409050104460005044c000104140100040201000401010004010100 -04170501044b000104060100040601030401010004020100040101000405010404040100 -0409050104460005044c00010414010004020100040101000401010004170501044b0001 -040601000402010004010100040201000401010004020100040101000405010004080100 -0409050104460005044c00010414010004020100040101000402010004160501044b0001 -040601000402010004010100040201000401010004020100040101000402010004010100 -04020100040401000409050104460005044c000104150102040201000402010004160501 -044b00010407010204030103040101000402010004020102040301020405010004090501 -04460005044c000104370501044b00010437050104460005044c000104370501044b0001 -0437050104460005044c000104370501044b00010437050104460005044c000104370501 -044b00010437050104460005044c000104370501044b00010437050104460005044c0001 -04370501044b00010437050104460005044c000104370501044b00010437050104460005 -044c000104370501044b00010437050104460005044c000104370501044b000104370501 -04460005044c000104370501044b00010437050104460005044c00010539044b00010539 -04460005044c0000053a044b0000053a0446000504ff0457000504ff0457000504ff0457 -000504ff0457000504ff0457000504ff045700010500000204ff045700000501000204ff -0457 -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 53 250 318 -%%EOF diff --git a/lib/pman/doc/src/part.xml b/lib/pman/doc/src/part.xml deleted file mode 100644 index 140d7bc3c8..0000000000 --- a/lib/pman/doc/src/part.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - -
- - 19962013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman User's Guide - - - - -
- -

The process manager Pman is a graphical tool used to - inspect the Erlang processes executing either locally or on remote - nodes. It is also possible to trace events in the individual processes.

-
- -
- diff --git a/lib/pman/doc/src/part_notes.xml b/lib/pman/doc/src/part_notes.xml deleted file mode 100644 index e9465d7502..0000000000 --- a/lib/pman/doc/src/part_notes.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - -
- - 20042013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman Release Notes - - - 2004-09-07 - 1.0 - part_notes.sgml -
- -

The process manager Pman is a graphical tool used to - inspect the Erlang processes executing either locally or on remote - nodes. It is also possible to trace events in the individual - processes.

-
- -
- diff --git a/lib/pman/doc/src/pman.xml b/lib/pman/doc/src/pman.xml deleted file mode 100644 index db1a43065c..0000000000 --- a/lib/pman/doc/src/pman.xml +++ /dev/null @@ -1,88 +0,0 @@ - - - - -
- - 1996 - 2013 - Ericsson AB, All Rights Reserved - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - - - pman - - - - -
- pman - A graphical process manager. - - -

- The Pman application has been superseded by the Observer application. - Pman will be removed in R16. -

-
-

A graphical tool used to inspect the Erlang processes executing either - locally or on remote nodes. It is also possible to trace events in - the individual processes.

-
- - - start() - start(Excluded) - start_notimeout() - start_notimeout(Excluded) - Start Pman. - - Excluded = [Module] -  Module = atom() - - -

Starts Pman. It will use the previously saved trace settings - in HOME/.erlang_tools/pman.opts, where HOME is - the user's home directory, if such a file exists. Otherwise - standard trace settings will be used. The return value should - be ignored.

-

Excluded is a list of module names. If the argument is - present, processes currently executing in any of these modules - will not be shown by Pman.

-

start/0,1 will fail unless the start-up succeeds - within 20 seconds, whereas start_notimeout/0,1 will - wait indefinitely.

-
-
- - proc(Process) - proc(A, B, C) - Start a Pman trace window. - - Process = pid() | atom() - A = B = C = integer() - - -

Starts a Pman trace window for the specified process. - The return value should be ignored.

-

The process to trace is given either by its pid or by its - registered name. It is also possible to use proc/3 - to trace the pid represented as ]]>.

-
-
-
-
- diff --git a/lib/pman/doc/src/pman_chapter.xml b/lib/pman/doc/src/pman_chapter.xml deleted file mode 100644 index d0b50c58f8..0000000000 --- a/lib/pman/doc/src/pman_chapter.xml +++ /dev/null @@ -1,377 +0,0 @@ - - - - -
- - 19962013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman - - - - - pman_chapter.xml -
- - -
- Introduction - -

- The Pman application has been superseded by the Observer application. - Pman will be removed in R16. -

-
-

The process manager Pman is a tool for viewing processes executing - locally or on remote nodes. Its main purpose is to locate - erroneous code by inspecting the state of the processes and by tracing - events. Bottlenecks, unread messages, and bad memory handling are - some of the problems that can be solved with Pman.

-

Processes may be inspected individually in a process trace - window. There the user may dynamically follow the execution of a - process by getting trace output for sent and received messages - as well as for called functions and some other process - events. Information about source code modules executed by the - processes is also accessible. Note that Pman has some effect on - the real time behavior of a running system.

-
- -
- Getting Started with Pman -

Start Pman by calling pman:start(). It will start - the Main Window, showing an - overview of all processes running at the current node.

-

To trace a certain process, select it by clicking on its line and - then chose Trace->Selected Process, or simply double-click it. This - will open a Trace Window. - In the Trace Window, there is some information about the process - and traced events are added dynamically.

-

Which events to trace are selected in - the Options Window which - is opened by choosing File->Options... in the Main Window or in a - Trace Window. Currently supported trace events are message sending, - message receiving, function calls and process events.

-

It is possible to by-pass the Main Window and open a Trace - Window directly for the process Pid by calling - pman:proc(Pid).

-
- -
- - The Main Window -

The Main Window shows all processes running at the displayed node. - The window is automatically updated every 5 seconds. - Select which node to display in the window by choosing the node name - from the Nodes menu.

- - The Main Window. - -

A process can be selected by clicking on its line. The selected - process is highlighted. Use the arrow keys to move up and down in - the process overview.

-

The following information is displayed for each process:

- - Pid - process identifier. - Current Function - the function (Module:Function/Arity) - the process is currently executing. - Name - registered name of the process, if any. - Msgs - number of messages in the process' mailbox. - Reds - number of reductions performed. Gives a rough estimate - of the process' work load. - Size - estimated size of the process, in words, calculated by - adding the stack size and the heap size. - -

At the bottom of the window the following functions and - information can be found:

- - Hide System Processes - This check button controls the display of what Pman consider - system processes, that is, processes Pman knows are part - of Erlang/OTP rather than the user's application. - If the button is selected, these system processes will not be - shown. - Auto-Hide New - This check button controls the treatment of newly created - processes. If it is selected, new processes will not be shown. - # Hidden - This label displays the number of processes currently - executing that are not shown in the process overview. - - -
- The File Menu - - Options... - Open the Options Window - which allows the user to set the trace options to use. - Save Options - Save the options set using the Options Window. The options are - stored to the file HOME/.erlang_tools/pman.opts, where - HOME is the user's home directory, and are automatically - loaded the next time Pman is started. - Exit - Stop Pman. - -
- -
- The View Menu -

This menu mainly contains buttons for controlling what to - display in the Main Window. Note that the View Menu overrides - the settings of the check buttons (Hide System processes, Auto-Hide - new) in the Main Window.

- - Hide All Processes - Hide all processes. - Hide Modules... - Opens a dialog window with all loaded modules. If the user - selects a window and clicks OK, the process overview will not - show any processes running code from those modules. - Hide Selected Processs - Hide the selected process. - Module Info... - Given a selected process currently executing a function in - the module Module, this menu button opens a window - showing information about the module as returned from - Module:module_info(). - Refresh - Updates the process overview. - Show All Processes - Show all processes, except system processes and/or new - processes if Hide System Processes and/or - Auto-Hide New is selected. - Show Processes... - Opens a dialog window with all hidden processes. If - the user selects a process and clicks OK, the process - overview will show that process. - -
- -
- The Trace Menu - - Kill - Terminates the selected process by calling - exit(Pid,kill). - Trace Selected Process - Opens a Trace Window for the selected process. Tracing - will start immediately with the default trace flags set from - the Main Window. - Shell Process - Opens a Trace Window for the shell process of node Pman - was started at (not the displayed node). If the shell process - dies, the opened Trace Window will find the pid of - the automatically started new shell process, and continue to - trace that process. - -
- -
- The Nodes Menu -

The Nodes menu contains one entry for each known node. - By selecting a node from the Nodes menu, the process overview - window will change its view, and display the processes running - on that node.

-
- -
- The Help Menu - - Help - Selecting Help from the Help menu will cause the HTML - version of the Pman User's Guide (this document) to be - displayed. Currently this function requires Netscape to be up - and running. - -
-
- -
- - The Trace Window -

A Trace Window outputs trace information for a traced process. - A Trace Window automatically uses the trace options set in - the Main Window, but it is also possible to change the options for - each Trace Window individually.

- - The Trace Window. - -

There is no limit to how many Trace Windows can be open at the same - time. However, notice that if more processes are traced, - the performance degradation of the system will be more noticeable.

-

The following information is displayed, where applicable:

- - initial call - the function (Module:Function/Arity) - the process started executing in. - current function - the function (Module:Function/Arity) - the process is currently executing. - messages - the messages in the mailbox. - dictionary - the contents of the process dictionary. - heap size - heap size in words. - stack size - stack size in words. - reductions - number of reductions performed. Gives a rough - estimate of the process' work load. - links - list of pids the process is linked to. - trap_exit - true if the process trap exit signals, - false otherwise. - -

In the Trace Window, trace output is continuously added. First in - each trace message is the pid of the traced process. - Note that if the inheritance flags for tracing are set, the trace - output for the spawned/linked processes will be shown in the same - window as the spawning/linking process.

-

Each trace message also has a mnemonic tag:

- - ! - This tag indicates that a message has been sent. Following - the To: tag will be a pid/name of the receiver. Next, - following the Msg: tag will be the sent message. - rec - This tag indicates that a message has been received. - Following this will be the received message. - call - This tag indicates a call to a function. Following this will be - the actual call, with all the arguments. - link - This tag indicates that a link between the traced process and - another process has been created. Following this will be the pid - of the other process. - spawn - This tag indicates that the traced process has spawned another - process. Following this will be the pid of the spawned process. - exit - This tag indicates that traced process has exited. Following - this will be the exit reason. - - -
- The File Menu - - Options... - Opens the Options Window - which allows the user to set the trace options to use for this - specific Trace Window. - Save Buffer... - Opens a dialog that prompts the user for a file name to - save the current Trace Window contents in. - Close - Stops tracing of the process, and closes the Trace Window. - -
- -
- The View Menu - - Clear Buffer - Clears the contents of the Trace Window. - Module Info - Opens a window showing information about the module - the process is currently executing code from, as returned from - Module:module_info(). - -
- -
- The Trace Menu - - All Linked Processes - Opens a Trace Window for each of the processes linked to the - process being traced in the current Trace Window. - Linked Process -> - The Linked Process submenu has one entry for each process - linked to the process being traced in the current Trace Window. - Select one of the processes to open a new Trace Window for that - process. - Kill - Terminates the process being traced in the current Trace - Window by calling exit(Pid,kill). - -
- -
- The Help Menu - - Help - Selecting Help from the Help menu will cause the HTML version - of the Pman User's Guide (this document) to be displayed. - Currently this function requires Netscape to be up and running. - -
-
- -
- - The Options Window -

The Options Window allows the user to specify the amount of output, - and the destination of output for traced processes.

- - The Options Window. - -

In the upper left corner of the Options Window, there are check - buttons for determining what to output in the Trace Window:

- - Trace send - Select this check button to display information about sent - messages. - Trace receive - Select this check button to display information about received - messages. - Trace functions - Select this check button to display information about - function calls. - Trace events - Select this check button to display information about process - events, such as spawn, link and exit. - -

In the upper right corner of the dialog, there are options for - controlling the behaviour of spawned or linked processes:

- - Inherit on spawn - -

The user may select if spawned processes shall also be traced. - And if so, if all spawned processes should be traced, or just - the first spawned process.

-

If a spawned process is traced, it will get the same trace - options that are set for the spawning process. And the output - will be shown in the same Trace Window as that of the spawning - process.

-

.

-
- Inherit on link - -

The user may select if a process that is being linked to - shall be traced. And if so, if all linked processes shall be - traced, or just the first one linked to.

-

If a linked process is traced, it will get the same trace - options that are set for the linking process. And the output - will be shown in the same Trace Window as that of the linked - process.

-
-
-

In the lower part of the Options Dialog, the user may select - whether the trace information shall be output to a file, or appear in - the trace window.

-

Sending trace information to a file is more efficient than displaying - it in the Trace Window. Furthermore, if the amount of trace data is - large, it will not be lost if tracing to a file. The trace information - in the Trace Window has an upper limit (approx. 10,000 lines), after - which the output buffer will be cleared.

-
-
- diff --git a/lib/pman/doc/src/ref_man.xml b/lib/pman/doc/src/ref_man.xml deleted file mode 100644 index 3b526d86ef..0000000000 --- a/lib/pman/doc/src/ref_man.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - -
- - 19962013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Pman Reference Manual - - - - -
- -

The process manager Pman is a graphical tool used to - inspect the Erlang processes executing either locally or on remote - nodes. It is also possible to trace events in the individual processes.

-
- -
- diff --git a/lib/pman/doc/src/toolbar.gif b/lib/pman/doc/src/toolbar.gif deleted file mode 100644 index 116e32ace8..0000000000 Binary files a/lib/pman/doc/src/toolbar.gif and /dev/null differ diff --git a/lib/pman/doc/src/trace.gif b/lib/pman/doc/src/trace.gif deleted file mode 100644 index 8b34ec7ea0..0000000000 Binary files a/lib/pman/doc/src/trace.gif and /dev/null differ diff --git a/lib/pman/doc/src/trace.ps b/lib/pman/doc/src/trace.ps deleted file mode 100644 index 0828d4ade1..0000000000 --- a/lib/pman/doc/src/trace.ps +++ /dev/null @@ -1,1312 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./trace.tmp.eps) -%%CreationDate: (Tue Jun 12 18:05:00 2001) -%%BoundingBox: 0 17 377 309 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 17 377 309 -userdict begin -%%BeginData: -DisplayImage -0 17 -377.000000 292.000000 -12 -562 436 -1 -0 -0 -8 -ffffff -000000 -b24d7a -dcadc2 -57253b -d9d9d9 -c3c3c3 -828282 -03ff03ff034e040003ff03f40400031c04000301021a0400030002ff02f304000300021a -04010301021a0400030002ff02f304000300021a04010301021a0400030002ff02f30400 -0300021a0401030102020418030004ff04f4030004170202040103010202040003ff03ff -032602020401030102020400030002150400030002ff02db040003000215040003000215 -0400030002020401030102020400030002150400030002ff02db04000300021504000300 -02150400030002020401030102020400030002150400030002ff02db0400030002150400 -030002150400030002020401030102020400030002150400030002ff02db040003000215 -040003000202030f02020400030002020401030102020400030002150400030002ff0263 -000302730400030002150400030002020300020d04000202040003000202040103010202 -04000300021504000300021f000602020001020600010206000102060001020500000209 -0004020100010211000102020001025a0002020a000502040004020c0002022f00010205 -00000212000102110001021b0004020d000102080001023a040003000215040003000202 -0300020d0400020204000300020204010301020204000300021504000300021f00010202 -000202010002020400020205000202060002020400000207000202020000020100010211 -000102020001025800010202000102080000020200020203000002020001020900010202 -0001022d00020204000002120001021100010219000102040000020c000102080001023a -0400030002150400030002020300020d0400020204000300020204010301020204000300 -021504000300021f00010203000102010002020400020205000002000001020500020204 -0000020700010206000102110001020200010258000102020001020d0001020800010208 -000102020001022d00020204000002120001021100010218000002070000020b00010245 -0400030002150400030002020300020d0400020204000300020204010301020204000300 -021504000300021f00010203000102010000020000000203000302050000020000010205 -000002000001020300000203000102010001020600010200000302050003020200010202 -000102080001020000020204000102000001020200040204000402030003020300040203 -0004020f00000201000102040001020c0001020800010207000102040001020000000211 -000402020001020000030209000002000001020300000204000402040002020000010204 -000302070004020200040204000402030000020300030201000002030004020100010200 -00030203000102010001020400000202000402030004021f040003000215040003000202 -0300020d04000202040003000202040103010202040003000202030f020204000300021f -000102030001020100000200000102020000020000010204000102000001020500000200 -000202020000020300010201000302040002020200010203000102010001020100010202 -000102080002020100010203000202030001020200010202000102060001020100010201 -000102060001021100010202000102040001020b00010209000102070001020400010201 -0001020e0001020200010201000202020001020800000200000202020000020300010202 -000102020001020100020203000102010001020700010203000102020001020200010202 -000102020000020100010202000002010000020200010205000202020001020200010202 -000002040000020200000202000102010001022304000300020803030208040003000202 -0300020d040002020400030002020401030102020400030002020300020d040002020400 -0300021f0001020200010202000002000001020200000200000102040000020200010204 -000002010001020200000208000402020001020300010202000102030001020000010202 -000102080001020300010202000102030001020400010200000102060001020300010200 -000102060001020f0001020400010204000102080002020a000102080001020400010203 -0001020b0001020400010200000102030001020800000201000102020000020200010204 -000102000001020300010202000102030001020600010202000102040001020000010204 -000102000000020200000202000102010000020100010206000102030001020200010202 -000102020000020700010201000102230400030002080300020104000208040003000202 -0300020d040002020400030002020401030102020400030002020300020d040002020400 -0300021f0005020300000201000102000000020100010203000102020001020400000202 -000102010000020a00030201000102030001020200010203000102000001020200010208 -000102030001020200010203000102040001020000010206000102030001020000030204 -0003020a00020206000102040001020b0001020800000209000102040001020500020208 -000102040001020000010203000102080000020200010201000002020001020400010200 -000102030001020200010203000102060001020200010204000102000001020400010200 -000002010000020200010202000002010001020600010203000102020001020200010202 -00000207000102010003022104000300020803000201040002080400030002020300020d -040002020400030002020401030102020400030002020300040e020204000300021f0001 -020700000201000102000000020100010203000102020002020300000202000202000000 -020c00020200000102030001020200070200000102020001020800010203000102020001 -020300010204000102000001020600070202000302040003020600020208000102040001 -020c000102060000020a0001020400010207000202060001020400010200000102030001 -020800000202000202000000020200010204000102000001020300010202000702060001 -020200010204000102000001020400010200000002010000020100020201000102010001 -02060001020300010202000102030000020100010204000402030003021f040003000208 -0300040202080400030002020300020d0400020204000300020204010301020204000300 -021504000300021f00010207000002010001020000000201000102030007020300000203 -000102000000020d00010200000102030001020200010206000102020001020800010203 -00010202000102030001020400010200000102060001020a000202050002020700020206 -000102040001020c000102050000020b0001020400010205000202080001020400010200 -000102030001020800000203000102000000020200010204000102000001020300010202 -0001020c0001020200010204000102000001020400010200000002010000020100000200 -000002010000020200010206000102030001020200010203000102000000020300020201 -000102050002021e0400030002150400030002020300020d040002020400030002020401 -0301020204000300021504000300021f0001020700000202000102020001020200010204 -00010203000002040002020d000102000001020300010202000102060001020200010208 -0001020300010202000102030001020400010200000102060001020b000102060001020a -00010205000102020001020d000102040000020d00010202000102040001020b00010204 -000102000001020300010208000002040002020200010204000102000001020300010202 -0001020c0001020200010204000102000001020400010201000002000002020100020203 -00010206000102030001020200010203000102000000020300010202000102060001021e -0400030002150400030002020300020d0400020204000300020204010301020204000300 -021504000300021f00010207000002020001020200010202000002060001020200000204 -000202030001020100000203000102010001020300010203000102030000020000010202 -000102080002020100010203000102040001020200010202000102020000020200010203 -000002000000020300010201000002030001020c00010203000102020001020300010202 -0000020200010204000102080001020200010202000102020001020e0001020200010201 -000102030001020800000204000202030001020200010202000102010002020300010203 -000002060001020300010202000102020001020200010202000102030000020700010202 -00000201000102030001020200010204000102040001020200010201000002030001021e -0400030002150400030002020300020d0400020204000300020204010301020204000300 -021504000300021f00010207000002070001020100010206000102020000020500010203 -000102010005020200010203000102050004020000010202000102080001020000020204 -00010205000402040004020400040200000502020005020f000002040002020500010202 -000402050006020300010204000202030000021100040202000102030001020800000205 -000102040004020400020200000102050004020600010204000402040004020500030209 -000402010001020300010202000102040001020500030200000102000005021f04000300 -02150400030002020300020d040002020400030002020401030102020400030002150400 -03000282000102ff02560400030002150400030002020300020d04000202040003000202 -040103010202040003000215040003000282000102ff0256040003000215040003000202 -0300040e0202040003000202040103010202040003000215040003000282000102ff0256 -0400030002150400030002150400030002020401030102020400030002150400030002ff -02db04000300021504000300021504000300020204010301020204000300021504000300 -02ff02db04000300021504000300021504000300020204010300040403000416030004ff -04dc030004160300041603000404030500ff00ff00250304040003010202040000ff00ff -00240700030002020401030102020400000105ff05ff0521070103000202040103010202 -0400000105ff05ff05210701030002020401030102020400000105ff05ff052107010300 -02020401030102020400000105ff05ff05210701030002020401030102020400000105ff -05ff052107010300020204010301020204000001050b01040504010005030102051f0100 -05020100050401000526010405ff05860100050201000509010205130701030002020401 -0301020204000001050b0100050f0100051f010005020100052e010005ff058801000502 -0100050b0100051307010300020204010301020204000001050b01000506010205050100 -050301020518010005020100050201020503010205020100050201000519010005030100 -0500010105030102050301020503010205ff056b01000502010005020102050501000502 -010005000101050c07010300020204010301020204000001050b01000508010005050100 -050201000502010005180100050001000505010005020100050201000501010005020100 -051901000503010105010100050101000502010005010100050201000501010005020100 -05ff056a0100050201000501010005020100050401000502010105010100050b07010300 -020204010301020204000001050b01030505010005050100050201000502010005180100 -050001000505010005020100050201000501010005000100050001000519010005030100 -0509010005010100050501000502010005ff056a01040501010005020100050401000502 -010005020100050b07010300020204010301020204000001050b01000508010005050100 -050201040518010005000100050501000502010405010100050001000500010005190100 -0503010005060103050101000505010405ff056a01000502010005010104050401000502 -010005020100050b07010300020204010301020204000001050b01000508010005050100 -05020100051d010005060100050201000505010005000100050001000519010005030100 -0505010005020100050101000505010005ff056e01000502010005010100050801000502 -010005020100050b07010300020204010301020204000001050b01000508010005050100 -050201000502010005190100050601000502010005020100050101000500010005000100 -051901000503010005050100050201000501010005020100050101000502010005ff056a -0100050201000501010005020100050401000502010105010100050b0701030002020401 -0301020204000001050b0100050801000505010005030102051a01000506010005030102 -0503010005000100051a01000503010005060103050201020503010205ff056b01000502 -010005020102050501000502010005000101050c07010300020204010301020204000001 -05ff05ff05100100050f07010300020204010301020204000001050a0106052a0106052a -010605ff05840106050e0100050f07010300020204010301020204000001050a0106052a -0106052a010605ff05840106050e0100050f0701030002020401030102020400000105ff -05ff05210701030002020401030102020400000105ff05ff052107010300020204010301 -02020400000105ff05ff05210701030002020401030102020400000107ff07ff07230300 -02020401030102020400000007ff07ff072403000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0525 -03000202040103010202040005ff05ff052503000202040103010202040005ff05ff0515 -070f03000202040103010202040005ff05ff0515070f0300020204010301020204000504 -07ff07ff070e05010701060607000605030002020401030102020400050407ff07ff070d -00000501070106050000070006050300020204010301020204000504070105ff05ff050a -00010501070106050000070106040300020204010301020204000504070105cf010005ff -053900010501070106040001070106040300020204010301020204000504070105030100 -050c01000504010005060100050a0102051801020503010205170100050d010205030102 -051f010205120100051501000502010205ff053300010501070106040001050007010603 -030002020401030102020400050407010517010005140100051a01000505010005170100 -050f010005050100052101000512010005140100050201000502010005ff053200010501 -070106030001050107010603030002020401030102020400050407010501010205020100 -050001010503010205020104050201020503010205050100050a01020503010205050100 -0505010005040101050a0102050201000500010105030102050501000505010005040101 -050301020502010005020100050201020505010005020100050201000502010205020104 -050201020502010005000101050501000506010005ff0532000105010701060300010502 -070106020300020204010301020204000504070105030100050201010501010005040100 -050401000506010005020100050201000504010005090100050201000501010005020100 -050401000505010005040101050901000502010005010101050101000501010005020100 -050401000505010005040101050201000502010005010100050201000501010005020100 -050401000502010005020100050101000502010005030100050301000502010005010101 -05010100050301000507010005ff05320001050107010602000105030701060203000202 -040103010202040005040701050301000502010005020100050401000504010005060100 -050601000504010005090100050901000504010005050100051001000505010005020100 -050101000502010005040100050501000509010005020100050101000502010005050100 -050401000502010005020100050501000503010005030100050201000501010005070100 -0505010105ff053300010501070106020001050407010601030002020401030102020400 -050407010503010005020100050201000504010005040100050601000503010305040100 -050901000506010305040100050501000511010205020100050201000501010405040100 -050501000509010405020100050001000503010305040100050201000502010005020103 -05030100050301000502010005010100050601000508010005ff05320001050107010601 -000105050701060103000202040103010202040005040701050301000502010005020100 -050401000504010005060100050201000502010005040100050901000505010005020100 -050401000505010005140100050101000502010005010100050801000505010005090100 -050601000500010005020100050201000504010005020100050201000501010005020100 -05030100050301000502010005010100050601000508010005ff05320001050107010601 -000105060701060003000202040103010202040005040701050301000502010005020100 -050401000504010005060100050201000502010005040100050901000502010005010100 -050201000504010005050100050401010509010005020100050101000502010005010100 -050201000504010005050100050401010502010005020100050301000503010005020100 -050401000502010005010101050101000502010005030100050301000502010005010100 -05050100050501000502010005ff05320001050107010600000105070701060003000202 -040103010202040005040701050301000502010005020100050401000505010105040100 -0503010305040100050a010205030103050401000505010005040101050a010205020100 -050201000502010205050100050501000504010105030102050401000504010305040100 -050301010500010005020103050401010502010205020100050501000506010205ff0533 -0001050107010600000105080701030002020401030102020400050407010530010505ff -05d30001050107010001070b0300020204010301020204000504070105ff05ff050a0001 -050107010000070c0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701000d03000202 -04010301020204000504070105ff05ff050a000105010701000d03000202040103010202 -04000504070105ff05ff050a0001050107010001050a0700030002020401030102020400 -0504070105ff05ff050a0001050107010001050a07000300020204010301020204000504 -070105ff05ff050a0001050107010001050a070003000202040103010202040005040701 -05ff05ff050a0001050107010001050a07000300020204010301020204000504070105ff -05ff050a0001050107010001050a07000300020204010301020204000504070105ff05ff -050a0001050107010001050a07000300020204010301020204000504070105ff05ff050a -0001050107010001050a07000300020204010301020204000504070105ff05ff050a0001 -050107010001050a07000300020204010301020204000504070105ff05ff050a00010501 -07010001050a07000300020204010301020204000504070105ff05ff050a000105010701 -0001050a07000300020204010301020204000504070105ff05ff050a0001050107010001 -070b0300020204010301020204000504070105ff05ff050a0001050107010000070c0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105eb010005ff051d000105010701060d030002020401030102020400 -05040701052c0100050d0101051801000506010005250100050d010205030102051f0102 -050a0102051b01000502010205ff0517000105010701060d030002020401030102020400 -05040701052c0100050c0100051a0100052d0100050f01000505010005210100050c0100 -051a0100050201000502010005ff0516000105010701060d030002020401030102020400 -050407010501010205020100050201000501010005000101050201000500010105030102 -050201000500010105020104050a01000503010005020100050101000500010105030102 -050201040502010205030102050201000500010105040101050a01020502010005000101 -050301020505010005050100050401010503010205020100050201000502010205050100 -050c010005030102050301020502010005000101050501000506010005ff051600010501 -0701060d0300020204010301020204000504070105000100050201000501010005020100 -050101010501010005010101050101000501010005020100050101010501010005030100 -050a01040501010005020100050101010501010005010100050201000503010005060100 -050201000502010005010101050101000503010105090100050201000501010105010100 -050101000502010005040100050501000504010105020100050201000501010005020100 -050101000502010005040100050c01000502010005020100050101000502010005010101 -05010100050301000507010005ff0516000105010701060d030002020401030102020400 -050407010500010005050100050201000501010005050100050501000502010005010100 -0502010005030100050c0100050301000502010005010100050201000501010005070100 -0506010005020100050201000501010005020100050f0100050501000502010005010100 -050201000504010005050100050901000502010005010100050201000505010005040100 -050c01000502010005020100050101000502010005010100050201000503010005060100 -05ff0517000105010701060d030002020401030102020400050407010500010005050100 -05020100050101000505010005050104050101000502010005030100050c010005030100 -050201000501010005020100050101000507010005060100050201000502010005010100 -050201000510010205020100050201000501010405040100050501000509010405020100 -050001000503010305040100050c01000502010005020100050101000502010005010100 -05020100050201000506010005ff0518000105010701060d030002020401030102020400 -050407010500010005050100050201000501010005050100050501000505010005020100 -05030100050c010005030100050201000501010005020100050101000507010005060100 -050201000502010005010100050201000513010005010100050201000501010005080100 -05050100050901000506010005000100050201000502010005040100050c010005020100 -0502010005010100050201000501010005020100050201000505010005ff051900010501 -0701060d0300020204010301020204000504070105000100050201000501010005010101 -05010100050501000505010005020100050101000502010005030100050c010005030100 -050101010501010005020100050101000502010005030100050601000502010005020100 -050101000502010005030101050901000502010005010100050201000501010005020100 -050401000505010005040101050201000502010005030100050301000502010005040100 -050c01000502010005020100050101000502010005010101050101000501010005050100 -05ff051a000105010701060d030002020401030102020400050407010501010205030101 -05000100050101000505010005060102050201000502010005040101050a010005040101 -050001000501010005020100050201020505010105040100050301020502010005020100 -05030101050a010205020100050201000502010205050100050501000504010105030102 -050401000504010305040100050c01000503010205030102050201000500010105020100 -0505010405ff0516000105010701060d0300020204010301020204000504070105300105 -058c01050516010005ff0528000105010701060d03000202040103010202040005040701 -05e0010005ff0528000105010701060d0300020204010301020204000504070105e00100 -05ff0528000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -0504070105ff05ff050a000105010701060d0300020204010301020204000504070105ff -05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -0504070105ff05ff050a000105010701060d0300020204010301020204000504070105ff -05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -0504070105000100052b0100051f01020503010205ff05b1000105010701060d03000202 -04010301020204000504070105000100054b010005020100050101000502010005ff05b0 -000105010701060d03000202040103010202040005040701050001000500010105030102 -050301020502010005000101050a01020503010205020104050201020504010105090100 -05020100050101000502010005ff05b0000105010701060d030002020401030102020400 -050407010500010105010100050101000502010005010100050201000501010105010100 -050801000502010005040100050601000501010005020100050301010509010005020100 -050101000502010005ff05b0000105010701060d03000202040103010202040005040701 -050001000502010005010100050201000505010005010100050201000508010005080100 -050501000502010005020100051001020503010305ff05b0000105010701060d03000202 -040103010202040005040701050001000502010005010104050201030501010005020100 -05090102050501000504010005030104050f0100050201000505010005ff05b000010501 -0701060d0300020204010301020204000504070105000100050201000501010005050100 -050201000501010005020100050c01000504010005030100050401000513010005020100 -0505010005ff05b0000105010701060d0300020204010301020204000504070105000100 -050201000501010005020100050101000502010005010101050101000508010005020100 -050401000502010005050100050201000503010105090100050201000501010005020100 -05ff05b0000105010701060d030002020401030102020400050407010500010005020100 -05020102050301030501010005000101050a010205050100050201040502010205040101 -050a01020503010205ff05b1000105010701060d03000202040103010202040005040701 -051501000504010505ff05e8000105010701060d03000202040103010202040005040701 -0515010005ff05f3000105010701060d0300020204010301020204000504070105150100 -05ff05f3000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -0504070105ff05ff050a000105010701060d0300020204010301020204000504070105ff -05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -0504070105ff05ff050a000105010701060d0300020204010301020204000504070105ff -05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105ff05ff050a000105010701060d030002020401030102020400 -05040701050901000511010005160100051e01040502010205ff05aa000105010701060d -030002020401030102020400050407010509010005110100053601000505010005020100 -05ff05a9000105010701060d030002020401030102020400050407010501010205020104 -05020102050301020502010005010100050a010205030102050201040502010205040101 -050901000509010005ff05a9000105010701060d03000202040103010202040005040701 -050001000502010005030100050301000502010005010100050201000501010005000100 -050a01000502010005040100050601000501010005020100050301010509010305060100 -05ff05a9000105010701060d030002020401030102020400050407010500010005070100 -050701000501010005050101050b01000508010005050100050201000502010005130100 -0503010105ff05aa000105010701060d0300020204010301020204000504070105010102 -05040100050401030501010005050101050c010205050100050401000503010405130100 -0505010005ff05a9000105010701060d0300020204010301020204000504070105040100 -050301000503010005020100050101000505010005000100050e01000504010005030100 -0504010005130100050201000505010005ff05a9000105010701060d0300020204010301 -020204000504070105000100050201000503010005030100050201000501010005020100 -050101000501010005090100050201000504010005020100050501000502010005030101 -0509010005020100050101000502010005ff05a9000105010701060d0300020204010301 -020204000504070105010102050501010502010305020102050201000502010005090102 -05050100050201040502010205040101050a01020503010205ff05aa000105010701060d -030002020401030102020400050407010522010505ff05e1000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -040103010202040005040701051201000511010005060100052601020503010205ff05aa -000105010701060d030002020401030102020400050407010512010005110100052d0100 -05020100050101000502010005ff05a9000105010701060d030002020401030102020400 -050407010500010005000101050301020503010105000100050101000502010005020102 -05020104050201020503010205020100050001010503010205040101050d010005010100 -05ff05ad000105010701060d030002020401030102020400050407010500010105010100 -050101000502010005010100050101010501010005020100050101000502010005030100 -0506010005020100050201000501010105010100050101000502010005030101050d0100 -0501010005ff05ad000105010701060d0300020204010301020204000504070105000100 -050501000502010005010100050201000501010005020100050101000507010005060100 -0502010005020100050101000502010005010100051601000502010305ff05aa00010501 -0701060d0300020204010301020204000504070105000100050501040501010005020100 -050101000502010005010100050701000506010005020100050201000501010005020100 -0502010205120100050301000502010005ff05a9000105010701060d0300020204010301 -020204000504070105000100050501000505010005020100050101000502010005010100 -050701000506010005020100050201000501010005020100050501000510010005040100 -0502010005ff05a9000105010701060d0300020204010301020204000504070105000100 -050501000502010005010100050101010501010005010101050101000502010005030100 -050601000502010005020100050101000502010005010100050201000503010105090100 -050501000502010005ff05a9000105010701060d03000202040103010202040005040701 -050001000506010205030101050001000502010105000100050201020505010105040100 -0503010205020100050201000502010205040101050901040502010205ff05aa00010501 -0701060d0300020204010301020204000504070105ff05ff050a000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff -050a000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d0300020204010301020204000504070105ff05ff050a000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff -050a000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d0300020204010301020204000504070105ff05ff050a000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff -050a000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d030002020401030102020400050407010532010305ff05d3000105010701060d -03000202040103010202040005040701050101020505010005090100051b010005ff05d6 -000105010701060d030002020401030102020400050407010503010005100100051b0100 -05ff05d6000105010701060d030002020401030102020400050407010503010005030102 -050201000500010105020100050101000503010205040101050a010005ff05d600010501 -0701060d0300020204010301020204000504070105030100050501000502010105010100 -0501010005000100050301000502010005030101050a010005ff05d6000105010701060d -030002020401030102020400050407010503010005050100050201000502010005010101 -050401000514010005ff05d6000105010701060d03000202040103010202040005040701 -0503010005050100050201000502010005010101050501020511010005ff05d600010501 -0701060d0300020204010301020204000504070105030100050501000502010005020100 -0501010005000100050701000510010005ff05d6000105010701060d0300020204010301 -020204000504070105030100050501000502010005020100050101000501010005020100 -0502010005030101050a010005ff05d6000105010701060d030002020401030102020400 -050407010503010005050100050201000502010005010100050201000502010205040101 -050a010005ff05d6000105010701060d0300020204010301020204000504070105320103 -05ff05d3000105010701060d0300020204010301020204000504070105ff05ff050a0001 -05010701060d0300020204010301020204000504070105ff05ff050a000105010701060d -0300020204010301020204000504070105ff05ff050a000105010701060d030002020401 -0301020204000504070105120100052a01000506010305ff05bf000105010701060d0300 -02020401030102020400050407010511010005040101050a010205030102050b01010502 -01000508010005ff05bf000105010701060d030002020401030102020400050407010510 -010005040100050101000508010005020100050101000502010005090100050101000502 -01000507010005ff05bf000105010701060d03000202040103010202040005040701050f -01000505010005010100050c0100050501000509010005010100050301000506010005ff -05bf000105010701060d03000202040103010202040005040701050e0100050601000501 -0100050c0100050501000509010005010100050401000505010005ff05bf000105010701 -060d03000202040103010202040005040701050d01000507010005010100050b01000504 -0101050a010005010100050501000504010005ff05bf000105010701060d030002020401 -03010202040005040701050e01000506010005010100050a010005070100050901000501 -0100050401000505010005ff05bf000105010701060d0300020204010301020204000504 -0701050f0100050501000501010005090100050801000509010005010100050301000506 -010005ff05bf000105010701060d03000202040103010202040005040701051001000504 -010005010100050301010502010005050100050201000503010105030100050101000502 -01000507010005ff05bf000105010701060d030002020401030102020400050407010511 -0100050401010504010105020104050201020504010105040101050201000508010005ff -05bf000105010701060d0300020204010301020204000504070105120100052a01000506 -010305ff05bf000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05ff050a000105010701 -060d0300020204010301020204000504070105ff05ff050a000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701060d03000202040103010202040005040701 -05ff05ff050a000105010701060d03000202040103010202040005040701050201000530 -010005040100051401010509010205ff05aa000105010701060d03000202040103010202 -040005040701050201000536010005130100050d010005ff05aa000105010701060d0300 -020204010301020204000504070105000104050101000500010105030102050201000500 -0101050a01020502010005020100050201020502010405030101050b0100050401020505 -0100050301020503010205ff059c000105010701060d0300020204010301020204000504 -070105020100050301010501010005010100050201000501010105010100050801000502 -010005010100050201000504010005040100050501010509010405010100050201000504 -01000502010005020100050101000502010005ff059b000105010701060d030002020401 -030102020400050407010502010005030100050901000501010005020100050801000502 -010005020100050001000505010005040100051301000507010005040100050201000505 -01000502010005ff059b000105010701060d030002020401030102020400050407010502 -010005030100050601030501010005020100050801040503010005060100050401000513 -01000504010305040100050301020502010405ff059b000105010701060d030002020401 -030102020400050407010502010005030100050501000502010005010100050201000508 -010005060100050001000505010005040100051301000503010005020100050401000506 -01000501010005ff059f000105010701060d030002020401030102020400050407010502 -010005030100050501000502010005010101050101000508010005020100050101000502 -0100050401000504010005050101050b0100050301000502010005040100050201000502 -0100050101000502010005ff059b000105010701060d0300020204010301020204000504 -07010503010105010100050601030501010005000101050a010205020100050201000504 -01000505010105030101050b01000504010305040100050301020503010205ff059c0001 -05010701060d03000202040103010202040005040701051501000504010505ff05e80001 -05010701060d030002020401030102020400050407010515010005ff05f3000105010701 -060d030002020401030102020400050407010515010005ff05f3000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff -050a000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d0300020204010301020204000504070105ff05ff050a000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff05ff -050a000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d0300020204010301020204000504070105ff05ff050a000105010701060d0300 -020204010301020204000504070105ff05ff050a000105010701060d0300020204010301 -020204000504070105ff05ff050a000105010701060d0300020204010301020204000504 -0701057301010597010105350101053501010540010105190101050b0101050401010516 -000105010701060d0300020204010301020204000504070105040100052a010005400100 -05540100052a010005160100052e0103050301000536010005440100050b010305010103 -050401000503010305040100050501000515000105010701060d03000202040103010202 -0400050407010503010005040101050a010205030102050b010105020100053f0100050a -0100050d010205030102051b01000512010005040101050a010205030102050b01010502 -0100051501000519010205110100050601000512010205030102050b0100050c0100050c -0100051a0100050b0102050b0100050b0100050701000504010005060100050401000505 -01000515000105010701060d030002020401030102020400050407010502010005040100 -0501010005080100050201000501010005020100050901000501010005020100053e0100 -050a0100050f010005050100051b01000511010005040100050101000508010005020100 -050101000502010005090100050101000502010005140100051b01000511010005060100 -0514010005050100050a0101050c0100050c010005190101050d0100050b0100050b0100 -05070100050401000506010005040100050501000515000105010701060d030002020401 -03010202040005040701050101000505010005010100050c010005050100050901000501 -010005030100050501010509010005000101050301020503010205190100050401020502 -010005000101050301020505010005050100050a01020502010105000100050301010500 -0100051001000505010005010100050c0100050501000509010005010100050301000513 -010005040102050201000502010005020102050501000511010005060100050401020503 -010205050100050501000509010005000100050c01000504010205020104050201020502 -0101050001000509010005000100050d01000503010205040100050b0100050701000504 -01000506010005040100050501000515000105010701060d030002020401030102020400 -05040701050001000506010005010100050c010005050100050901000501010005040100 -050401010509010105010100050101000502010005010100050201000518010005030100 -050201000501010105010100050101000502010005040100050501000509010005020100 -0501010005000100050001000501010005010101050f01000506010005010100050c0100 -050501000509010005010100050401000512010005030100050201000501010005020100 -050101000502010005040100051101000506010005030100050201000501010005020100 -0504010005050100050b0100050c01000503010005020100050301000503010005020100 -050101000500010005000100050a0100050d0100050201000502010005030100050b0100 -05070100050401000506010005040100050501000515000105010701060d030002020401 -0301020204000504070101000507010005010100050a010105050100050a010005010100 -05050100050f0100050501000502010005010100051a0101050401000505010005020100 -050101000502010005040100050501000509010005050100050001000500010005010100 -05020100050e01000507010005010100050b010005040101050a01000501010005050100 -050f01010504010005020100050101000502010005050100050401000511010005040101 -05040100050901000504010005050100050b0100050a0101050801000503010005030100 -05020100050101000500010005000100050a0100050d0100050201000508010105090100 -05070100050501010504010005050101050401010513000105010701060d030002020401 -03010202040005040701050001000506010005010100050c010005030100050b01000501 -010005040100051001000505010405010100051c01000504010205020100050201000501 -01040504010005050100050901000505010005000100050001000501010005020100050f -01000506010005010100050a010005070100050901000501010005040100051201000503 -010405020100050001000503010305040100051101000506010005030100050601030504 -010005050100050b0100050c010005040103050301000503010005020100050101000500 -010005000100050a0100050d01000503010205040100050b010005070100050401000506 -010005040100050501000515000105010701060d03000202040103010202040005040701 -050101000505010005010100050c010005020100050c0100050101000503010005110100 -0505010005050100051c0100050701000501010005020100050101000508010005050100 -050901000505010005000100050001000501010005020100051001000505010005010100 -050901000508010005090100050101000503010005130100050301000506010005000100 -050201000502010005040100051101000506010005030100050501000502010005040100 -05050100050b0100050c0100050301000502010005030100050301000502010005010100 -0500010005000100050a0100050d01000506010005030100050b01000507010005040100 -0506010005040100050501000515000105010701060d0300020204010301020204000504 -070105020100050401000501010005030101050201000502010005010100050701010503 -010005010100050201000506010105090100050501000502010005010100050201000518 -010005030100050201000501010005020100050101000502010005040100050501000509 -010005020100050101000500010005000100050101000501010105030101050b01000504 -010005010100050301010502010005050100050201000503010105030100050101000502 -010005060101050b01000503010005020100050301000503010005020100050401000504 -0101050a0100050601000503010005020100050101000502010005040100050501000504 -010105040100050501010504010005030100050201000503010005030100050201000501 -010005000100050001000503010105040100050501010505010005020100050201000503 -010005050101050301000507010005040100050601000504010005050100051500010501 -0701060d0300020204010301020204000504070105030100050401010504010105030102 -050201040503010105040101050201000507010105090100050601020503010205190100 -050401020502010005020100050201020505010005050100050a01020502010005000100 -05000100050201010500010005030101050c010005040101050401010502010405020102 -05040101050401010502010005070101050b010005040102050401000504010305040100 -05040101050a010005060100050401020503010305040100050501000504010105020104 -050301010504010005040103050401010502010205020100050001000500010005030101 -050201040503010105050100050301020504010005050101050301000507010005040100 -0506010005040100050501000515000105010701060d0300020204010301020204000504 -070105040100052a0100054001000525010505190100050d0100052a010005090100050b -010005220100050a01030503010005220100050c01000504010005220100050c01000512 -010005060100050301030501010305040100050301030504010005050100051500010501 -0701060d03000202040103010202040005040701057301010541010105430101050d0101 -051e010105140101051e0101050b010105060101051e0101050b01010511010105050101 -05110101050b0101050401010516000105010701060d0300020204010301020204000504 -070105ff05ff050a000105010701060d0300020204010301020204000504070105ff0506 -0101055f010105630101051501010521000105010701060d030002020401030102020400 -0504070105040100052a0100051d010005b401000506010005040100053e010005120100 -05070100052a0100051501000501010005180100051301000523000105010701060d0300 -02020401030102020400050407010503010005040101050a010205030102050b01010502 -0100051c0100051f010405280100053f010005030100051f01000506010005030102052d -01020503010205050100051201000506010005040101050a010205030102050b01010502 -0100051401000501010005010103050c010105030100051301000523000105010701060d -030002020401030102020400050407010502010005040100050101000508010005020100 -0501010005020100050901000501010005020100051b010005210100052a0100053f0100 -05030100051f010005050100050301000500010005000100052e01000505010005040100 -051301000505010005040100050101000508010005020100050101000502010005090100 -050101000502010005130100050101000501010005020100050a01000505010005130100 -0523000105010701060d0300020204010301020204000504070105010100050501000501 -0100050c0100050501000509010005010100050301000505010105120100052101000504 -010205040101050a010205030102050301010500010005020102050a0102050301020502 -010005000101050201000502010005020102050201000500010105080101050101010502 -0102050301010500010005030101050b0100050401000504010005000100050401010500 -0100050201020502010005000101050a0102050301020505010005050100050301000514 -0100050401000505010005010100050c0100050501000509010005010100050301000511 -010505000100050201000502010205040100050501000513010005040102050201000500 -01010503010205020100050201000501010005000101000105010701060d030002020401 -03010202040005040701050001000506010005010100050c010005050100050901000501 -010005040100050401010512010005210100050301000502010005030101050901000502 -010005010100050201000501010005010101050101000502010005080100050201000501 -010005020100050101010501010005010100050201000501010005020100050101010501 -010005070101050101010501010005020100050101000501010105030101050b0100050a -010005000100050301000501010105010100050201000501010105010100050801000502 -01000501010005020100050401000505010005190100050301000506010005010100050c -010005050100050901000501010005040100051101000501010005010100050201000501 -010005020100050101040503010005130100050301000502010005010101050101000501 -0100050201000501010005020100050101010501000105010701060d0300020204010301 -020204000504070101000507010005010100050a010105050100050a0100050101000505 -010005180100052101000503010005020100050f01000505010005020100050101000502 -010005010100050201000508010005050100050201000501010005050100050201000501 -01000502010005010100050b01000500010105000100050101000505010005020100050f -0101050c0102050201000502010005010100050201000501010005020100050801000509 -0100050401000505010005170101050301000507010005010100050a010105050100050a -01000501010005050100050f010005010100050201030502010005020100050301000506 -0101050f0101050401000502010005010100050201000501010005050100050201000501 -01000502000105010701060d030002020401030102020400050407010500010005060100 -05010100050c010005030100050b01000501010005040100051901000521010005030100 -05020100050f010005050100050201000501010005020100050101040509010205020104 -0501010005060100050001000502010405010100050b0100050001010500010005020102 -050201000502010005110100050c01000500010005010100050201000501010405010100 -050201000508010005060103050401000505010005190100050301000506010005010100 -050c010005030100050b01000501010005040100050f0105050101000501010005020104 -050301000505010005130100050301040501010005020100050201020502010005020100 -050101000502000105010701060d03000202040103010202040005040701050101000505 -010005010100050c010005020100050c01000501010005030100053d0100050301000502 -0100050f0100050501000502010005010100050201000501010005100100050101000505 -010005060100050001000502010005050100050b01000503010005050100050101000502 -010005110100050c01000500010005010100050201000501010005050100050201000508 -01000505010005020100050401000505010005190100050401000505010005010100050c -010005020100050c01000501010005030100051101000501010005020100050201000501 -010005070100050501000513010005030100050501000502010005050100050101000502 -0100050101000502000105010701060d0300020204010301020204000504070105020100 -050401000501010005030101050201000502010005010100050701010503010005010100 -050201000506010105350100050301000502010005030101050901000502010005010100 -050201000501010005010101050101000502010005080100050201000501010005020100 -0501010005070100050301000502010005010100050b0100050301000501010005020100 -050101000501010105030101050b0100050a010005000100050001000501010005010101 -050101000502010005010100050201000508010005020100050101000502010005040100 -05050100050b0101050b0100050501000504010005010100050301010502010005020100 -050101000507010105030100050101000502010005060101050901000501010005020100 -050201000501010005020100050301000505010005050101050b01000503010005020100 -050101000502010005010100050201000501010005010101050101000502000105010701 -060d03000202040103010202040005040701050301000504010105040101050301020502 -01040503010105040101050201000507010105120100052101000504010205040101050a -010205030102050301010500010005020102050a01020503010205020100050701000504 -010205020100050b01000503010005020102050301010500010005030101050b0100050b -010205030101050001000502010205020100050201000509010205030103050401000505 -0100050b0101050b01000506010005040101050401010503010205020104050301010504 -010105020100050701010509010005010100050201000502010005020102050401000505 -010005050101050b01000504010205020100050201000502010205030101050001000501 -01000502000105010701060d0300020204010301020204000504070105040100052a0100 -057501050544010005110100050c010005070100050e010505270100050b010005070100 -052a0100050901000527010005060100050b01000523000105010701060d030002020401 -0301020204000504070105ee01000502010005120101050f010005020100053a0101050d -0101053a01010526010105050101050d01010521000105010701060d0300020204010301 -020204000504070105ef01020526010205ed000105010701060d03000202040103010202 -04000504070105730101052e0101058d01010504010105cc000105010701060d03000202 -04010301020204000504070105040100052a010005400100050401000501010005260100 -059101000505010005cb000105010701060d030002020401030102020400050407010503 -010005040101050a010205030102050b010105020100053f010005040100050101000501 -0103050c010105110100051501000509010205260102050c0100050b0100052001020504 -01000505010005cb000105010701060d0300020204010301020204000504070105020100 -050401000501010005080100050201000501010005020100050901000501010005020100 -053e010005040100050101000501010005020100050a01000513010005150100050b0100 -052801000519010005220100050401000505010005cb000105010701060d030002020401 -03010202040005040701050101000505010005010100050c010005050100050901000501 -010005030100050501010509010005000101050301020503010205190100050301050500 -010005020100050201020504010005130100050301010500010005030102050301010500 -01000501010005020100050401000503010205110102050201000500010105050100050a -010205020100050001010502010405020102050201000500010105020100050001010503 -010205050100050401000505010005cb000105010701060d030002020401030102020400 -05040701050001000506010005010100050c010005050100050901000501010005040100 -050401010509010105010100050101000502010005010100050201000518010005040100 -050101000501010005020100050101000502010005010104051101000503010005000100 -050001000501010005020100050101000501010105010100050201000504010005020100 -05020100050f010005020100050101010501010005040100050c01000502010105010100 -050301000503010005020100050101010501010005010101050101000501010005020100 -05040100050401000505010005cb000105010701060d0300020204010301020204000504 -070101000507010005010100050a010105050100050a01000501010005050100050f0100 -050501000502010005010100051a01010504010005010100050201030502010005020100 -050301000511010105040100050001000500010005010100050201000501010005020100 -0501010005020100050401000502010005020100050f0100050201000501010005080100 -050c01000502010005020100050301000503010005020100050101000505010005020100 -0505010005040100050501010504010105c9000105010701060d03000202040103010202 -040005040701050001000506010005010100050c010005030100050b0100050101000504 -0100051001000505010405010100051c0100050201050501010005010100050201040503 -010005130100050301000500010005000100050101000502010005010100050201000501 -0100050201000504010005020104050f01040501010005080100050c0100050201000502 -010005030100050301040501010005050100050201000502010305040100050401000505 -010005cb000105010701060d030002020401030102020400050407010501010005050100 -05010100050c010005020100050c01000501010005030100051101000505010005050100 -051c01000503010005010100050201000502010005010100050701000513010005030100 -050001000500010005010100050201000501010005020100050101000502010005040100 -05020100051301000505010005080100050c010005020100050201000503010005030100 -050501000505010005020100050101000502010005040100050401000505010005cb0001 -05010701060d030002020401030102020400050407010502010005040100050101000503 -010105020100050201000501010005070101050301000501010005020100050601010509 -010005050100050201000501010005020100051801000503010005010100050201000502 -010005010100050201000503010005050101050b01000503010005000100050001000501 -010005020100050101000501010105010100050101010504010005020100050201000503 -010105090100050201000501010005080100050c01000502010005020100050301000503 -010005020100050101000505010005020100050101000502010005040100050401000505 -010005cb000105010701060d030002020401030102020400050407010503010005040101 -050401010503010205020104050301010504010105020100050701010509010005060102 -050301020519010005030100050101000502010005020100050201020504010005050101 -050b01000503010005000100050001000502010205030101050001000502010105000100 -050401000503010205040101050a01020502010005080100050c01000502010005020100 -050401010502010205020100050501000502010005020103050401000504010005050100 -05cb000105010701060d0300020204010301020204000504070105040100052a01000540 -010005220100050b010005300100051d0105053b01000505010005cb000105010701060d -0300020204010301020204000504070105730101051e0101050d0101052c0101055e0101 -0504010105cc000105010701060d0300020204010301020204000504070105ff05ff050a -000105010701060d0300020204010301020204000504070105ff05060101055f01010563 -0101051501010521000105010701060d0300020204010301020204000504070105040100 -052a0100051d010005b401000506010005040100053e01000512010005070100052a0100 -051501000501010005180100051301000523000105010701060d03000202040103010202 -0400050407010503010005040101050a010205030102050b010105020100051c0100051f -010405280100053f010005030100051f01000506010005030102052d0102050301020505 -0100051201000506010005040101050a010205030102050b010105020100051401000501 -010005010103050c010105030100051301000523000105010701060d0300020204010301 -020204000504070105020100050401000501010005080100050201000501010005020100 -050901000501010005020100051b010005210100052a0100053f010005030100051f0100 -05050100050301000500010005000100052e010005050100050401000513010005050100 -050401000501010005080100050201000501010005020100050901000501010005020100 -05130100050101000501010005020100050a010005050100051301000523000105010701 -060d03000202040103010202040005040701050101000505010005010100050c01000505 -01000509010005010100050301000505010105120100052101000504010205040101050a -010205030102050301010500010005020102050a01020503010205020100050001010502 -010005020100050201020502010005000101050801010501010105020102050301010500 -010005030101050b01000504010005040100050001000504010105000100050201020502 -010005000101050a01020503010205050100050501000503010005140100050401000505 -010005010100050c01000505010005090100050101000503010005110105050001000502 -010005020102050401000505010005130100050401020502010005000101050301020502 -0100050201000501010005000101000105010701060d0300020204010301020204000504 -0701050001000506010005010100050c0100050501000509010005010100050401000504 -010105120100052101000503010005020100050301010509010005020100050101000502 -010005010100050101010501010005020100050801000502010005010100050201000501 -010105010100050101000502010005010100050201000501010105010100050701010501 -01010501010005020100050101000501010105030101050b0100050a0100050001000503 -010005010101050101000502010005010101050101000508010005020100050101000502 -0100050401000505010005190100050301000506010005010100050c0100050501000509 -010005010100050401000511010005010100050101000502010005010100050201000501 -010405030100051301000503010005020100050101010501010005010100050201000501 -010005020100050101010501000105010701060d03000202040103010202040005040701 -01000507010005010100050a010105050100050a01000501010005050100051801000521 -01000503010005020100050f010005050100050201000501010005020100050101000502 -010005080100050501000502010005010100050501000502010005010100050201000501 -0100050b01000500010105000100050101000505010005020100050f0101050c01020502 -010005020100050101000502010005010100050201000508010005090100050401000505 -010005170101050301000507010005010100050a010105050100050a0100050101000505 -0100050f0100050101000502010305020100050201000503010005060101050f01010504 -010005020100050101000502010005010100050501000502010005010100050200010501 -0701060d03000202040103010202040005040701050001000506010005010100050c0100 -05030100050b0100050101000504010005190100052101000503010005020100050f0100 -050501000502010005010100050201000501010405090102050201040501010005060100 -050001000502010405010100050b01000500010105000100050201020502010005020100 -05110100050c010005000100050101000502010005010104050101000502010005080100 -05060103050401000505010005190100050301000506010005010100050c010005030100 -050b01000501010005040100050f01050501010005010100050201040503010005050100 -051301000503010405010100050201000502010205020100050201000501010005020001 -05010701060d03000202040103010202040005040701050101000505010005010100050c -010005020100050c01000501010005030100053d01000503010005020100050f01000505 -010005020100050101000502010005010100051001000501010005050100050601000500 -01000502010005050100050b01000503010005050100050101000502010005110100050c -010005000100050101000502010005010100050501000502010005080100050501000502 -0100050401000505010005190100050401000505010005010100050c010005020100050c -010005010100050301000511010005010100050201000502010005010100050701000505 -010005130100050301000505010005020100050501000501010005020100050101000502 -000105010701060d03000202040103010202040005040701050201000504010005010100 -050301010502010005020100050101000507010105030100050101000502010005060101 -053501000503010005020100050301010509010005020100050101000502010005010100 -050101010501010005020100050801000502010005010100050201000501010005070100 -050301000502010005010100050b01000503010005010100050201000501010005010101 -05030101050b0100050a0100050001000500010005010100050101010501010005020100 -0501010005020100050801000502010005010100050201000504010005050100050b0101 -050b01000505010005040100050101000503010105020100050201000501010005070101 -050301000501010005020100050601010509010005010100050201000502010005010100 -05020100050301000505010005050101050b010005030100050201000501010005020100 -05010100050201000501010005010101050101000502000105010701060d030002020401 -030102020400050407010503010005040101050401010503010205020104050301010504 -0101050201000507010105120100052101000504010205040101050a0102050301020503 -01010500010005020102050a01020503010205020100050701000504010205020100050b -01000503010005020102050301010500010005030101050b0100050b0102050301010500 -010005020102050201000502010005090102050301030504010005050100050b0101050b -010005060100050401010504010105030102050201040503010105040101050201000507 -01010509010005010100050201000502010005020102050401000505010005050101050b -010005040102050201000502010005020102050301010500010005010100050200010501 -0701060d0300020204010301020204000504070105040100052a01000575010505440100 -05110100050c010005070100050e010505270100050b010005070100052a010005090100 -0527010005060100050b01000523000105010701060d0300020204010301020204000504 -070105ee01000502010005120101050f010005020100053a0101050d0101053a01010526 -010105050101050d01010521000105010701060d03000202040103010202040005040701 -05ef01020526010205ed000105010701060d030002020401030102020400050407010573 -0101052e0101059401010504010105c5000105010701060d030002020401030102020400 -0504070105040100052a0100054001000504010005010100052601000598010005050100 -05c4000105010701060d030002020401030102020400050407010503010005040101050a -010205030102050b010105020100053f0100050401000501010005010103050c01010511 -01000515010005090102051e0100050d010205030102050d0100050b0101051001020504 -0100050501000505010005c4000105010701060d03000202040103010202040005040701 -050201000504010005010100050801000502010005010100050201000509010005010100 -05020100053e010005040100050101000501010005020100050a01000513010005150100 -050b0100051e0100050f010005050100050d0100050a0100051401000504010005050100 -0505010005c4000105010701060d03000202040103010202040005040701050101000505 -010005010100050c01000505010005090100050101000503010005050101050901000500 -010105030102050301020519010005030105050001000502010005020102050401000513 -010005030101050001000503010205030101050001000501010005020100050401000503 -0102051101020502010005000101050301020505010005050100050a0101050001000502 -0102050401000504010205020100050201000504010005020104050301000505010005c4 -000105010701060d03000202040103010202040005040701050001000506010005010100 -050c01000505010005090100050101000504010005040101050901010501010005010100 -050201000501010005020100051801000504010005010100050101000502010005010100 -050201000501010405110100050301000500010005000100050101000502010005010100 -050101010501010005020100050401000502010005020100050f01000502010005010101 -050101000501010005020100050401000505010005090100050101010501010005020100 -050101040501010005020100050101000502010005040100050401000505010005050100 -05c4000105010701060d0300020204010301020204000504070101000507010005010100 -050a010105050100050a01000501010005050100050f0100050501000502010005010100 -051a01010504010005010100050201030502010005020100050301000511010105040100 -050001000500010005010100050201000501010005020100050101000502010005040100 -0502010005020100050f0100050501000502010005010100050201000504010005050100 -050901000502010005010100050201000503010005070100050101000502010005040100 -05040100050601010504010105c2000105010701060d0300020204010301020204000504 -0701050001000506010005010100050c010005030100050b010005010100050401000510 -01000505010405010100051c010005020105050101000501010005020104050301000513 -010005030100050001000500010005010100050201000501010005020100050101000502 -010005040100050201040510010205020100050201000501010405040100050501000509 -010005020100050101040503010005040103050101000502010005040100050401000505 -01000505010005c4000105010701060d0300020204010301020204000504070105010100 -0505010005010100050c010005020100050c010005010100050301000511010005050100 -05050100051c010005030100050101000502010005020100050101000507010005130100 -050301000500010005000100050101000502010005010100050201000501010005020100 -050401000502010005170100050101000502010005010100050801000505010005090100 -050201000501010005070100050301000502010005010100050201000504010005040100 -050501000505010005c4000105010701060d030002020401030102020400050407010502 -010005040100050101000503010105020100050201000501010005070101050301000501 -010005020100050601010509010005050100050201000501010005020100051801000503 -010005010100050201000502010005010100050201000503010005050101050b01000503 -010005000100050001000501010005020100050101000501010105010100050101010504 -010005020100050201000503010105090100050201000501010005020100050101000502 -010005040100050501000509010005010101050101000502010005030100050301000502 -010005010100050101010504010005040100050501000505010005c4000105010701060d -030002020401030102020400050407010503010005040101050401010503010205020104 -050301010504010105020100050701010509010005060102050301020519010005030100 -050101000502010005020100050201020504010005050101050b01000503010005000100 -050001000502010205030101050001000502010105000100050401000503010205040101 -050a01020502010005020100050201020505010005050100050a01010500010005020102 -050401000504010305020101050001000504010005050101050301000505010005c40001 -05010701060d0300020204010301020204000504070105040100052a0100054001000522 -0100050b010005300100052b0105053401000505010005c4000105010701060d03000202 -04010301020204000504070105730101051e0101050d0101052c01010565010105040101 -05c5000105010701060d0300020204010301020204000504070105ff05ff050a00010501 -0701060d0300020204010301020204000504070105ff05060101055f0101056301010515 -01010521000105010701060d0300020204010301020204000504070105040100052a0100 -051d010005b401000506010005040100053e01000512010005070100052a010005150100 -0501010005180100051301000523000105010701060d0300020204010301020204000504 -07010503010005040101050a010205030102050b010105020100051c0100051f01040519 -010105040100050301020540010005030100051f01000506010005030102052d01020503 -010205050100051201000506010005040101050a010205030102050b0101050201000514 -01000501010005010103050c010105030100051301000504010205050100050b01000507 -000105010701060d03000202040103010202040005040701050201000504010005010100 -05080100050201000501010005020100050901000501010005020100051b010005210100 -051a0100050d01000540010005030100051f010005050100050301000500010005000100 -052e01000505010005040100051301000505010005040100050101000508010005020100 -050101000502010005090100050101000502010005130100050101000501010005020100 -050a0100050501000513010005060100051201000507000105010701060d030002020401 -03010202040005040701050101000505010005010100050c010005050100050901000501 -0100050301000505010105120100052101000504010205040101050b0100050401020505 -010005030102050a01020503010205020100050001010502010005020100050201020502 -010005000101050801010501010105020102050301010500010005030101050b01000504 -010005040100050001000504010105000100050201020502010005000101050a01020503 -010205050100050501000503010005140100050401000505010005010100050c01000505 -010005090100050101000503010005110105050001000502010005020102050401000505 -010005130100050601000503010205030102050201040505000105010701060d03000202 -040103010202040005040701050001000506010005010100050c01000505010005090100 -050101000504010005040101051201000521010005030100050201000503010105090104 -050401000505010005020100050201000508010005020100050101000502010005010101 -050101000501010005020100050101000502010005010101050101000507010105010101 -0501010005020100050101000501010105030101050b0100050a01000500010005030100 -050101010501010005020100050101010501010005080100050201000501010005020100 -050401000505010005190100050301000506010005010100050c01000505010005090100 -050101000504010005110100050101000501010005020100050101000502010005010104 -050301000513010005060100050501000502010005020100050301000507000105010701 -060d0300020204010301020204000504070101000507010005010100050a010105050100 -050a01000501010005050100051801000521010005030100050201000511010005060100 -050501000502010005020100050801000505010005020100050101000505010005020100 -050101000502010005010100050b01000500010105000100050101000505010005020100 -050f0101050c010205020100050201000501010005020100050101000502010005080100 -05090100050401000505010005170101050301000507010005010100050a010105050100 -050a01000501010005050100050f01000501010005020103050201000502010005030100 -05060101050f0101050701000505010005020100050701000507000105010701060d0300 -0202040103010202040005040701050001000506010005010100050c010005030100050b -010005010100050401000519010005210100050301000502010005110100050601000505 -01000502010405090102050201040501010005060100050001000502010405010100050b -0100050001010500010005020102050201000502010005110100050c0100050001000501 -010005020100050101040501010005020100050801000506010305040100050501000519 -0100050301000506010005010100050c010005030100050b01000501010005040100050f -010505010100050101000502010405030100050501000513010005060100050501000503 -0102050401000507000105010701060d0300020204010301020204000504070105010100 -0505010005010100050c010005020100050c01000501010005030100053d010005030100 -050201000511010005060100050501000502010005100100050101000505010005060100 -050001000502010005050100050b01000503010005050100050101000502010005110100 -050c01000500010005010100050201000501010005050100050201000508010005050100 -05020100050401000505010005190100050401000505010005010100050c010005020100 -050c01000501010005030100051101000501010005020100050201000501010005070100 -0505010005130100050601000505010005060100050301000507000105010701060d0300 -020204010301020204000504070105020100050401000501010005030101050201000502 -010005010100050701010503010005010100050201000506010105350100050301000502 -010005030101050b01000506010005050100050201000502010005080100050201000501 -0100050201000501010005070100050301000502010005010100050b0100050301000501 -010005020100050101000501010105030101050b0100050a010005000100050001000501 -010005010101050101000502010005010100050201000508010005020100050101000502 -01000504010005050100050b0101050b0100050501000504010005010100050301010502 -010005020100050101000507010105030100050101000502010005060101050901000501 -010005020100050201000501010005020100050301000505010005050101050b01000506 -0100050501000502010005020100050301000507000105010701060d0300020204010301 -020204000504070105030100050401010504010105030102050201040503010105040101 -050201000507010105120100052101000504010205040101050b01000506010005050100 -05030102050a01020503010205020100050701000504010205020100050b010005030100 -05020102050301010500010005030101050b0100050b0102050301010500010005020102 -050201000502010005090102050301030504010005050100050b0101050b010005060100 -050401010504010105030102050201040503010105040101050201000507010105090100 -05010100050201000502010005020102050401000505010005050101050b010005060100 -0505010005030102050501010505000105010701060d0300020204010301020204000504 -070105040100052a0100057501050544010005110100050c010005070100050e01050527 -0100050b010005070100052a0100050901000527010005060100050b0100051e01040001 -05010701060d0300020204010301020204000504070105ee01000502010005120101050f -010005020100053a0101050d0101053a01010526010105050101050d0101052100010501 -0701060d0300020204010301020204000504070105ef01020526010205ed000105010701 -060d0300020204010301020204000504070105730101052e010105ff0563000105010701 -060d0300020204010301020204000504070105040100052a010005400100050401000501 -010005260100052001030501010005010100058701000501010005ae000105010701060d -030002020401030102020400050407010503010005040101050a010205030102050b0101 -05020100053f0100050401000501010005010103050c010105110100050a010005140100 -050401000501010005340102050401000503010405020102051001000508010005180100 -05010100050101000501010005ae000105010701060d0300020204010301020204000504 -070105020100050401000501010005080100050201000501010005020100050901000501 -010005020100053e010005040100050101000501010005020100050a010005130100050a -010005140100050401000501010005330100050201000502010105030100050501000502 -0100050f0100052101000500010005000100050101000501010005ae000105010701060d -03000202040103010202040005040701050101000505010005010100050c010005050100 -050901000501010005030100050501010509010005000101050301020503010205190100 -050301050500010005020100050201020504010005130100050401020502010005010100 -051101000504010005010100050a01020503010205020100050201000502010205030102 -050901000505010005000100050301000505010005020100050901020502010005000101 -050301020502010005020100050201020503010205020100050101000502010005010100 -05ae000105010701060d0300020204010301020204000504070105000100050601000501 -0100050c0100050501000509010005010100050401000504010105090101050101000501 -010005020100050101000502010005180100050401000501010005010100050201000501 -010005020100050101040511010005030100050201000501010005000100051201000512 -010005020100050101000502010005010100050201000501010005020100050101000502 -010005080100050701000503010305020100050201000508010005020100050101010501 -01000504010005020100050201000501010005020100050101000502010005bb00010501 -0701060d0300020204010301020204000504070101000507010005010100050a01010505 -0100050a01000501010005050100050f0100050501000502010005010100051a01010504 -010005010100050201030502010005020100050301000511010105040100050201000501 -010105130100051201000509010005010100050201000501010005020100050101000505 -010405010103050401000507010005020103050101040501010005050100050201000504 -01000502010005020100050501000501010005bf000105010701060d0300020204010301 -0202040005040701050001000506010005010100050c010005030100050b010005010100 -05040100051001000505010405010100051c010005020105050101000501010005020104 -050301000513010005030100050201000501010105130100051301020503010305020100 -050001000502010405020102050901000502010005030100050701000505010005080100 -0505010005020100050401000503010005000100050301030502010205bc000105010701 -060d03000202040103010202040005040701050101000505010005010100050c01000502 -0100050c01000501010005030100051101000505010005050100051c0100050301000501 -010005020100050201000501010005070100051301000503010005020100050101000500 -010005120100051601000501010005020100050201000500010005020100050901000508 -010005020100050301000503010005020100050501000508010005050100050201000504 -0100050301000500010005020100050201000505010005bb000105010701060d03000202 -040103010202040005040701050201000504010005010100050301010502010005020100 -050101000507010105030100050101000502010005060101050901000505010005020100 -050101000502010005180100050301000501010005020100050201000501010005020100 -0503010005050101050b01000503010005020100050101000501010005040101050a0100 -050d01010502010005020100050101000502010005030100050301000502010005010100 -050201000508010005020100050301000503010005020100050101000502010005080100 -050201000501010005020100050401000504010005030100050201000501010005020100 -0511010105a7000105010701060d03000202040103010202040005040701050301000504 -010105040101050301020502010405030101050401010502010005070101050901000506 -010205030102051901000503010005010100050201000502010005020102050401000505 -0101050b010005040102050201000502010005030101050a0100050d0101050301020503 -0103050301000504010205030102050a0102050201040502010205030102050a01020502 -010005020100050401000504010005040103050201020512010105a7000105010701060d -0300020204010301020204000504070105040100052a01000540010005220100050b0100 -05140100050a01030597010005a7000105010701060d0300020204010301020204000504 -070105730101051e0101050d01010510010105a5010105a8000105010701060d03000202 -04010301020204000504070105ff05ff050a000105010701060d03000202040103010202 -04000504070105ff05ff050a000105010701000d03000202040103010202040005040701 -0507010005010100056401000501010005ff05950001050107010600000c030002020401 -03010202040005040701050701000501010005040100051201020521010105050100050b -0100051001000501010005ff059500010501070106000001050807010300020204010301 -0202040005040701050701000501010005040100051401000520010005070100051d0100 -0501010005ff059500010501070106010001050707010300020204010301020204000504 -0701050701000501010005020104050201020503010205050100050a0101050001000502 -010205020100050001010504010005040101050001000509010205030102050201010500 -0100050201000501010005ff059500010501070106010001050607010600030002020401 -030102020400050407010510010005030100050201000501010005020100050401000509 -01000501010105010100050201000501010105010100050101040501010005010101050b -0100050201000502010005010100050001000500010005ff059b00010501070106020001 -050507010600030002020401030102020400050407010510010005030100050201000501 -010005020100050401000509010005020100050101000502010005010100050201000503 -01000503010005020100050b01000506010005010100050001000500010005ff059b0001 -050107010602000105040701060103000202040103010202040005040701051001000503 -010005020100050101000502010005040100050901000502010005010104050101000502 -0100050301000503010005020100050b01000503010305010100050001000500010005ff -059b00010501070106030001050307010601030002020401030102020400050407010510 -010005030100050201000501010005020100050401000509010005020100050101000505 -010005020100050301000503010005020100050b01000502010005020100050101000500 -01000500010005ff059b0001050107010603000105020701060203000202040103010202 -040005040701051001000503010005020100050101000502010005040100050901000501 -010105010100050201000501010005020100050301000503010005010101050301010505 -01000502010005020100050101000500010005000100050a010105ff058e000105010701 -060400010501070106020300020204010301020204000504070105110101050201020503 -010205050100050a01010500010005020102050201000502010005030100050401010500 -0100050301010505010005030103050101000500010005000100050a010105ff058e0001 -050107010604000105000701060303000202040103010202040005040701052901050505 -010005270100051a010005ff058e00010501070106050000070206030300020204010301 -0202040005040701053101000502010005240100050101000518010105ff058f00010501 -070106050000070106040300020204010301020204000504070100ff00ff000c05010701 -0606070106040300020204010301020204000504070000ff00ff000d0501070106060700 -060503000202040103010202040005ff05ff05150701000d030002020401030102020400 -05ff05ff05150700000e030002020401030102020400050207ff07ff0716050b03000202 -0401030102020400050207ff07ff07150000050b03000202040103010202040005020701 -060d0000060000ff0073067f0001060c0001050b03000202040103010202040005020701 -060b00010700060000ff00720700067f0003060a0001050b030002020401030102020400 -050207010609000207010600000105ff056f0701067f000506080001050b030002020401 -0301020204000502070106070003050007010600000105ff056f0701067f000105010003 -06060001050b030002020401030004040502070106050003050207010600000105ff056f -0701067f00010503000306040001050b0300040403050502070106030003050407010600 -000105ff056f0701067f00010505000306020001050b0304040003010202040005020701 -06010003050607010600000105ff056f0701067f00010507000306000001050b03000202 -040103010202040005020705050807010600000105ff056f0701067f0001050807030001 -050b0300020204010301020204000502070106010703050607010600000105ff056f0701 -067f00010507070306000001050b03000202040103010202040005020701060307030504 -07010600000105ff056f0701067f00010505070306020001050b03000202040103010202 -04000502070106050703050207010600000105ff056f0701067f00010503070306040001 -050b0300020204010301020204000502070106070703050007010600000105ff056f0701 -067f00010501070306060001050b03000202040103010202040005020701060907040600 -000105ff056f0701067f0001070306080001050b03000202040103010202040005020701 -060b07020600000107ff0771067f00010701060a0001050b030002020401030102020400 -05020701060d07000600000007ff0772067f00000700060c0001050b0300020204010301 -020204000502070100ff00ff0014050b0300020204010301020204000502070000ff00ff -0015050b03000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040005ff05ff052503000202040103010202040005ff -05ff052503000202040103010202040003ff03ff0326020204010301021a0400030002ff -02f304000300021a04010301021a0400030002ff02f304000300021a04010301021a0400 -030002ff02f304000300021a04010301041b030004ff04f40300041c030004ff04ff0430 - -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 17 377 309 -%%EOF diff --git a/lib/pman/doc/src/warning.gif b/lib/pman/doc/src/warning.gif deleted file mode 100644 index 96af52360e..0000000000 Binary files a/lib/pman/doc/src/warning.gif and /dev/null differ diff --git a/lib/pman/ebin/.gitignore b/lib/pman/ebin/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/pman/info b/lib/pman/info deleted file mode 100644 index 22003edcea..0000000000 --- a/lib/pman/info +++ /dev/null @@ -1,2 +0,0 @@ -group: tools -short: A graphical process manager used to inspect Erlang processes. diff --git a/lib/pman/priv/Makefile b/lib/pman/priv/Makefile deleted file mode 100644 index a89278fd3a..0000000000 --- a/lib/pman/priv/Makefile +++ /dev/null @@ -1,58 +0,0 @@ -# ``The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved via the world wide web at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# The Initial Developer of the Original Code is Ericsson Utvecklings AB. -# Portions created by Ericsson are Copyright 1999, Ericsson Utvecklings -# AB. All Rights Reserved.'' -# -# $Id$ -# -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -include ../vsn.mk -VSN = $(PMAN_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/pman-$(VSN) - -# -# Macros -# -TOOLBAR_FILES = \ - pman.tool \ - pman.gif - -# -# Rules -# - -debug opt: - -docs: - -clean: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_spec: opt - $(INSTALL_DIR) "$(RELSYSDIR)/priv" - $(INSTALL_DATA) $(TOOLBAR_FILES) "$(RELSYSDIR)/priv" - -release_docs_spec: - -FORCE: diff --git a/lib/pman/priv/pman.gif b/lib/pman/priv/pman.gif deleted file mode 100644 index 4575a397d8..0000000000 Binary files a/lib/pman/priv/pman.gif and /dev/null differ diff --git a/lib/pman/priv/pman.tool b/lib/pman/priv/pman.tool deleted file mode 100644 index c04b7d00eb..0000000000 --- a/lib/pman/priv/pman.tool +++ /dev/null @@ -1,6 +0,0 @@ -{version,"0.1"}. -{{tool,"Pman"}, - {start,{pman,start,[]}}, - {icon,"pman.gif"}, - {message,"Process Manager"}, - {html,"../doc/html/index.html"}}. diff --git a/lib/pman/src/Makefile b/lib/pman/src/Makefile deleted file mode 100644 index eb0413bdbc..0000000000 --- a/lib/pman/src/Makefile +++ /dev/null @@ -1,112 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2012. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -# -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(PMAN_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/pman-$(VSN) - -# ---------------------------------------------------- -# Common Macros -# ---------------------------------------------------- - -MODULES= \ - pman \ - pman_main \ - pman_shell \ - pman_relay \ - pman_relay_server \ - pman_module_info \ - pman_win \ - pman_buf \ - pman_buf_utils \ - pman_buf_buffer \ - pman_buf_converter \ - pman_buf_printer \ - pman_options \ - pman_process \ - pman_tool - -HRL_FILES= \ - assert.hrl \ - pman_buf.hrl \ - pman_options.hrl \ - pman_win.hrl - -ERL_FILES= $(MODULES:%=%.erl) - -TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR)) $(APP_TARGET) $(APPUP_TARGET) - -APP_FILE = pman.app -APP_SRC = $(APP_FILE).src -APP_TARGET = $(EBIN)/$(APP_FILE) - -APPUP_FILE = pman.appup -APPUP_SRC = $(APPUP_FILE).src -APPUP_TARGET = $(EBIN)/$(APPUP_FILE) - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- -ERL_COMPILE_FLAGS += +warn_obsolete_guard - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- - -debug opt: $(TARGET_FILES) - -clean: - rm -f $(TARGET_FILES) - rm -f errs core *~ - -$(APP_TARGET): $(APP_SRC) ../vsn.mk - $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ - -$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk - $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ - -docs: - -# ---------------------------------------------------- -# Special Targets -# ---------------------------------------------------- - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_spec: opt - $(INSTALL_DIR) "$(RELSYSDIR)/src" - $(INSTALL_DATA) $(ERL_FILES) $(HRL_FILES) $(TOOLBOX_FILES) "$(RELSYSDIR)/src" - $(INSTALL_DIR) "$(RELSYSDIR)/ebin" - $(INSTALL_DATA) $(TARGET_FILES) $(TARGET_TOOLBOX_FILES) "$(RELSYSDIR)/ebin" - -release_docs_spec: - diff --git a/lib/pman/src/assert.hrl b/lib/pman/src/assert.hrl deleted file mode 100644 index ea3b68cd7c..0000000000 --- a/lib/pman/src/assert.hrl +++ /dev/null @@ -1,81 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%% Purpose : Assert macro - - -%% ?ASSERT/2 - will simply return true if the first argument evaluates to true -%% otherwise it will exit and output (via the error logger) the -%% second string -%% -%% Arguments: -%% Flag Expression that should evalueate to true or false -%% String String to return as a part of the exit reason as well -%% be to be sent to the error logger. -%% -%% Returns: -%% true If the Flag expression evaluates to true -%% -%% Exits: -%% {'EXIT', {assertion_failed, String}} -%% If the Flag expression evaluates to something other than -%% true. -%% -%% Usage notes: -%% Please note that the Flag argument must be a valid expression that -%% evaluates to true. -%% -%% Also, avoid any side effects in the Flag, as everything performed -%% within the scope of the ?ASSERT macro will not be present when -%% the code is not compiled with the debug_on flag. -%% -%% Side effects include the binding of a variable, sending of a -%% message, etc. -%% - --ifdef(debug_on). --define(ASSERT(Flag, String), - case Flag of - true -> - true; - _ -> - S2 = - lists:flatten( - io_lib:format( - "=ASSERT====~nPid:~p, Module:~p, Line:~p~nTermination because assertion failed:~n~p", - [self(),?MODULE, ?LINE,String])), - error_logger:error_report(S2), - exit({assertion_failed, String}) - end - ). - --define(ALWAYS_ASSERT(String), - S2 = lists:flatten( - io_lib:format( - "=ASSERT====~nPid:~p, Module:~p, Line:~p~nTermination because of unconditional assert:~n~p", - [self(),?MODULE, ?LINE, String])), - error_logger:error_report(S2), - exit({always_assert, String}) - ). --else. --define(ASSERT(_Flag,_String), true). --define(ALWAYS_ASSERT(_String), true). --endif. - - - diff --git a/lib/pman/src/pman.app.src b/lib/pman/src/pman.app.src deleted file mode 100644 index cc32a17296..0000000000 --- a/lib/pman/src/pman.app.src +++ /dev/null @@ -1,40 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -{application, pman, - [{description, "pman The Process Manager"}, - {vsn, "%VSN%"}, - {modules, [ - pman, - pman_buf, - pman_buf_buffer, - pman_buf_converter, - pman_buf_printer, - pman_buf_utils, - pman_main, - pman_module_info, - pman_options, - pman_process, - pman_relay, - pman_relay_server, - pman_shell, - pman_tool, - pman_win - ]}, - {registered, []}, - {applications, [kernel, stdlib]}]}. diff --git a/lib/pman/src/pman.appup.src b/lib/pman/src/pman.appup.src deleted file mode 100644 index 7a435e9b22..0000000000 --- a/lib/pman/src/pman.appup.src +++ /dev/null @@ -1,19 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -{"%VSN%",[],[]}. diff --git a/lib/pman/src/pman.erl b/lib/pman/src/pman.erl deleted file mode 100644 index c8ea34b6b7..0000000000 --- a/lib/pman/src/pman.erl +++ /dev/null @@ -1,132 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%---------------------------------------------------------------------- -%%% Purpose : Exported API to the Pman graphical tool -%%---------------------------------------------------------------------- - --module(pman). - - -%% --------------------------------------------------------------- -%% The user interface exports -%% --------------------------------------------------------------- --export([start/0, - start_notimeout/0, - start/1, - start_notimeout/1, - proc/1, - proc/3]). - -%% --------------------------------------------------------------- - -%% Timeout for the startup function. -%% If no {initialization_complete, Pid} message has been received -%% from the spawned init-function within ?STARTUP_TIMEOUT ms -%% the start-function will call exit(Reason). --define(STARTUP_TIMEOUT, 20000). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start/0 - -start() -> - start([], ?STARTUP_TIMEOUT). %Start w/o excluded modules - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start_notimeout/0 - -start_notimeout() -> - start([],infinity). %Start w/o excluded modules - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start/1 - -start(LIModuleExcluded) -> - start(LIModuleExcluded, ?STARTUP_TIMEOUT). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start_notimeout/1 - -start_notimeout(LIModuleExcluded) -> - start(LIModuleExcluded, infinity). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start/2 - Spawns the main Pman process, that will supervise -%% all processes except those running code from the modules -%% specified in LIModuleExcluded -%% - -start(LIModuleExcluded, Timeout) -> - - OSModuleExcluded = ordsets:from_list(LIModuleExcluded), - - PidInit = spawn(pman_main, init, [self(), OSModuleExcluded]), - - %% Wait for a initialization completion message from - %% the spawned process before returning its Pid. - %% - - receive - {initialization_complete, PidInit} -> - PidInit - - %% (Conditional) Failure to start within the time limit will - %% result in termination - - after - Timeout -> - exit(PidInit, kill), - exit({startup_timeout, ?MODULE}) - end. - - - -%% --------------------------------------------------------------- -%% If we want to trace just one process, we can call proc, giving it -%% either the Pid, or the registered name, (Global or local). -%% -%% (???) -%% Note that this function must not be used internally to create a -%% trace window, since it is assumed that it is started from any -%% process (esp. the shell) it will not have any supervisor process -%% that shall be notified about it's exit/death. -%% -%% Returns: Trace loop Pid|udefined - -%% --------------------------------------------------------------- - - -proc(undefined) -> - exit(undefined); - -proc({shell,P}) when is_pid(P) -> - pman_shell:start({{shell,P},self()}); - -proc(P) when is_atom(P) -> - proc(whereis(P)); - -proc({global, N}) -> - proc(global:whereis_name(N)); - -proc(P) when is_pid(P) -> - pman_shell:start({P,self()}). - -proc(X,Y,Z) -> - proc(c:pid(X,Y,Z)). - diff --git a/lib/pman/src/pman_buf.erl b/lib/pman/src/pman_buf.erl deleted file mode 100644 index d56ce184fa..0000000000 --- a/lib/pman/src/pman_buf.erl +++ /dev/null @@ -1,117 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%%---------------------------------------------------------------------- -%%% Purpose : This module is the exported interface to the buffering mechanism -%%% used in PMAN to prevent the trace output to congest -%%% the system. -%%% -%%% This module depends on the modules (direct or indirectly): -%%% pman_buf.hrl -%%% pman_buf_utils.erl -%%% pman_buf_buffer.erl -%%% pman_buf_converter.erl -%%% pman_buf_printer.erl -%%% -%%%---------------------------------------------------------------------- - --module(pman_buf). - -%%-compile(export_all). --export([start/2,clear/3]). - - --include("pman_buf.hrl"). - - -%% The buffering mechanism consists of three processes that -%% work in a chain to prevent the process monitor from congesting -%% output mechanism. -%% -%% Messages are buffered in the CONVERTER process before they are sent to -%% to the BUFFER process where they are formatted before they are finally -%% sent to either a file or the PRINTER process. The printer process -%% outputs the messages in the graphical user interface. -%% -%% -%% -%% --> CONVERTER --> BUFFER --> PRINTER --> gui -%% | -%% | -%% | -%% V -%% -%% file -%% - - - - - -%% ---------------------------------------------------------------- -%% The amount of data produced by a trace message may be large, and -%% cause the run time system to run out of memory. To avoid this, -%% the task of storing, cutting buffers, formating data and printing -%% it is performed by three processes: The buffer, the converter and -%% the printer. -%% -%% The converter accepts the raw data, a list -%% of {trace,Msg} tuples. Having max priority, it assures that the -%% amount of raw data stored never excedes ?BUFF_SIZE messages. -%% (With the exception of the last batch received, which assures that -%% the last trace message printed is never a buffer cut message.) -%% Whenever there is space available in the buffer process, (The -%% Buffer process stores max. ?BUFF_SIZE converted messages), -%% the buffer asks for more unconverted messages, and ?PRINT_LEN messages -%% are sent. They are converted by the buffer, and added to the list -%% of messages to be sent. - -%% The printer process requests formatted messages from the buffer, -%% and in chuncs of ?MAX_OUTPUT sends them to the buffer. If traces -%% are to be dumped on file, due to the max priority, such is handled -%% in the converter, and buffers are not cut. -%% - - -%% --------------------------------------------------------------- -%% Initializes the buffering mechanism, which consist of three -%% processes, each involved with a phase of the formattation and -%% output of data to the process windows. - -start(Editor, FileName) -> - Buffer_Pid = spawn_link(pman_buf_buffer,init,[Editor]), - Converter_Pid = - spawn_link(pman_buf_converter,init,[Buffer_Pid, FileName]), - Buffer_Pid!{converter_pid, Converter_Pid}, - #buffer{converter=Converter_Pid,buffer=Buffer_Pid}. - - - -%% --------------------------------------------------------------- -%% Kills the converter and the clears the buffer with formated data -%% starting a new converter. - -clear(Buff,String, FileName) -> - exit(Buff#buffer.converter,win_killed), - Converter_Pid=spawn_link(pman_buf_converter,init,[Buff#buffer.buffer, - FileName]), - Buff#buffer.buffer!{clear,String,Converter_Pid }, - Buff#buffer{converter = Converter_Pid}. - - - diff --git a/lib/pman/src/pman_buf.hrl b/lib/pman/src/pman_buf.hrl deleted file mode 100644 index 3f25dcc5f0..0000000000 --- a/lib/pman/src/pman_buf.hrl +++ /dev/null @@ -1,29 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%-compile(export_all). -%%-export([Function/Arity, ...]). - --define(BUFF_SIZE,1000). --define(EDITOR_MAX,10000). --define(PRINT_LEN,50). --define(MAX_OUTPUT,5000). - - --record(buffer,{buffer,converter}). diff --git a/lib/pman/src/pman_buf_buffer.erl b/lib/pman/src/pman_buf_buffer.erl deleted file mode 100644 index ad92eb1f3e..0000000000 --- a/lib/pman/src/pman_buf_buffer.erl +++ /dev/null @@ -1,102 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%%---------------------------------------------------------------------- -%%% Purpose : The purpouse of the buffer process is to take -%%% care of the data that is received by the converter -%%% process and pass it on to the printer process in chunks -%%% that can be handled. -%%% -%%% This module is a part of the buffering system, and -%%% should not be used except through the API defined -%%% in the pman_buf module. -%%% -%%%---------------------------------------------------------------------- - --module(pman_buf_buffer). - -%%-compile(export_all). --export([init/1]). - --include("pman_buf.hrl"). - - - -%% -%% Initialization function for the buffer process. -%% To be started with spawn from the calling process. -%% - -init(Editor) -> - Printer_pid = spawn_link(pman_buf_printer,init,[Editor,self()]), - receive - {converter_pid,Pid} -> - Pid!{buffer,accept}, - buffer_loop([],0,0,Printer_pid,Pid) - end. - - - -%% -%% Receive loop for the buffer process. -%% - -buffer_loop(Buffer,Size,Acc,Printer,Converter) -> - receive - {save_buffer,Name} -> - Printer!{save_buffer,Name}, - buffer_loop(Buffer,Size,Acc,Printer,Converter); - {raw,Raw,Length} -> %%output to editor - New_Size = Size + Length, - if New_Size < ?BUFF_SIZE -> - Converter!{buffer,accept}; - true -> ok - end, - Print = lists:map(fun(X) -> pman_buf_utils:textformat(X) end, Raw), - New_Buff = lists:append(Buffer,Print), - buffer_loop(New_Buff,New_Size,Acc,Printer,Converter); - {clear,Text,N_Converter} -> - Converter!{buffer,accept}, - Printer!clear, - buffer_loop([Text],1,1,Printer,N_Converter); - {printer,send} when Buffer /= [] -> - if - Acc > ?EDITOR_MAX -> - Printer!clear, - Printer !{buffer,"Cleared Buffer due to Size\n\n"}, - buffer_loop(Buffer,Size,1,Printer,Converter); - true -> - {Length,Rest,Print} = pman_buf_utils:split(Buffer, - ?PRINT_LEN, - 0, - []), - Printer ! {buffer,Print}, - New_Size = Size - Length, - if New_Size < ?BUFF_SIZE -> - Converter!{buffer,accept}; - true -> ok - end, - buffer_loop(Rest,New_Size,Acc+Length,Printer,Converter) - end; - {converter,file} -> - Converter!{buffer,Buffer}, - self()!{raw,[to_file],1}, - buffer_loop([],0,Acc,Printer,Converter) - end. - - diff --git a/lib/pman/src/pman_buf_converter.erl b/lib/pman/src/pman_buf_converter.erl deleted file mode 100644 index c8b3fe37aa..0000000000 --- a/lib/pman/src/pman_buf_converter.erl +++ /dev/null @@ -1,190 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%---------------------------------------------------------------------- -%% Purpose : The purpouse of the converter process is to take -%% care of the raw data that is received by the tracing -%% process (a pman_shell process) and pass it on to -%% the buffer process in chunks that can be handled. -%% -%% This module is a part of the buffering system, and -%% should not be used except through the API defined -%% in the pman_buf module. -%% -%%---------------------------------------------------------------------- - --module(pman_buf_converter). --compile([{nowarn_deprecated_function,{gs,start,0}}]). - -%%-compile(export_all). --export([init/2]). - --include("pman_buf.hrl"). - - -%% --------------------------------------------------------------- -%% Starts the process which received the raw data from the debugger, -%% cuts and forwards it to the buffer in smaller chunks. High priority -%% to avoid large message queues waiting to be processed. - -init(Buffer_Pid, FileName) -> - process_flag(priority, max), - converter_loop(Buffer_Pid,[],0,true,[], FileName). - -converter_loop(Buffer_Pid,Raw,Size,State,Last, FileName) -> - receive - {file,Shell} -> - case init_file(lists:append(Raw,Last), - FileName, - Shell, - Buffer_Pid) of - true -> converter_loop(Buffer_Pid, - [to_buffer], - 1, - State, - [], - FileName); - false -> converter_loop(Buffer_Pid, - Raw, - Size, - State, - Last, - FileName) - end; - {raw,Trace} -> - {New_Raw,New_Size,New_State,New_Last} = - converter_data(Trace, Buffer_Pid, Raw, Size, State, Last), - converter_loop(Buffer_Pid, - New_Raw, - New_Size, - New_State, - New_Last, - FileName); - {buffer,accept} when Raw /= [] -> - {Length,Rest,Print} = pman_buf_utils:split(Raw,?PRINT_LEN,0,[]), - Buffer_Pid!{raw,Print,Length}, - converter_loop(Buffer_Pid,Rest,Size-Length,false,Last,FileName); - {buffer,accept} when Last /= [] -> - {New_Raw,New_Size,New_State,New_Last} = - converter_data(Last,Buffer_Pid,Raw,Size,true,[]), - converter_loop(Buffer_Pid, - New_Raw, - New_Size, - New_State, - New_Last, - FileName); - {buffer,accept} -> - converter_loop(Buffer_Pid,Raw,Size,true,Last, FileName); - {clear,Str} -> - Buffer_Pid!{clear,Str}, - converter_loop(Buffer_Pid,[],0,State,Last,FileName) - end. - -converter_data(Trace,Buffer_Pid,Raw,Size,State,Last) -> - if - ?BUFF_SIZE - Size > 0 -> - {Len,Rest,New_Trace} = pman_buf_utils:split(Trace, - ?BUFF_SIZE-Size, - 0,[]), - {New_Raw,New_Last} = - case Rest of - [] -> - {lists:append(Raw,New_Trace),Last}; - [_|_] -> - case Last of - [] -> - {lists:append(Raw,New_Trace),Rest}; - _ ->{lists:concat([Raw,New_Trace,[cut_buffer]]), - Rest} - end - end, - case State of true -> - {Length,Cut_Raw,Print} = pman_buf_utils:split(New_Raw, - ?PRINT_LEN, - 0,[]), - Buffer_Pid!{raw,Print,Length}, - {Cut_Raw,Size-Length,false,New_Last}; - _ -> - {New_Raw,Size+Len,false,New_Last} - end; - true -> - {Raw,Size,State,Trace} - end. - - -%% --------------------------------------------------------------- -%% Initializes the environment for saving the trace to file. The -%% actual saving is taken care of by the buffer process. - -init_file(Raw,FileName, Name,Buffer_Pid) -> - case open_file(FileName, Name) of - {false,T} -> - pman_win:msg_win(T), - false; - {File,T} -> - Buffer_Pid!{converter,file}, - pman_win:dialog_window(gs:start(),T), - save_loop_init(File,Raw) - end. - -open_file(FileName, _Shell) -> -%% L = "pman_trace." ++ Shell, - case file:open(FileName, [read,write]) of - {error, _} -> - Str = "ERROR: Could not create_file\n" ++ FileName, - {false,Str}; - {ok,File} -> - file:position(File, {eof, 0}), - Str1 = " Appending trace log to file\n" ++ FileName, - {File,Str1} - end. - - -save_loop_init(Fd,Raw) -> - {Date, Time} = calendar:local_time(), - {Year, Month, Day} = Date, - {Hour, Minute, Second} = Time, - io:format(Fd,"%%% ~n",[]), - io:format(Fd,"%%% Trace output~n",[]), - io:format(Fd,"%%% Started at ~4p-~2p-~2p ~2p:~2p:~2p~n", - [Year, Month, Day, - Hour, Minute, Second - ]), - io:format(Fd,"%%% ~n~n",[]), - - Print = lists:map(fun(X) -> pman_buf_utils:textformat(X) end, Raw), - receive - {buffer,Text} when is_list(Text) -> - io:format(Fd,Text,[]), - io:format(Fd,Print,[]), - save_loop(Fd) - end. - -save_loop(Fd) -> - receive - {raw,Raw} -> - Print = lists:map(fun(X) -> pman_buf_utils:textformat(X) end, Raw), - io:format(Fd,Print,[]), - save_loop(Fd); - buffer -> true - end. - - - - - diff --git a/lib/pman/src/pman_buf_printer.erl b/lib/pman/src/pman_buf_printer.erl deleted file mode 100644 index 3284c57559..0000000000 --- a/lib/pman/src/pman_buf_printer.erl +++ /dev/null @@ -1,91 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - --module(pman_buf_printer). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,start,0}}]). - -%%-compile(export_all). --export([init/2]). - - --include("pman_buf.hrl"). - -%% --------------------------------------------------------------- -%% Starts the part of the buffer which regulates the flow of data to -%% be printed in the pid editors - - -init(Editor,Buffer_pid) -> - Buffer_pid!{printer,send}, - printer_loop(Editor,Buffer_pid). - -printer_loop(Editor,Buffer_pid)-> - receive - {save_buffer,Name} -> - gs:config(Editor,{save,Name}), - TT = "Buffer saved in file\n" ++ Name, - pman_win:dialog_window(gs:start(),TT), - printer_loop(Editor,Buffer_pid); - {buffer,Trace} -> - case lists:flatlength(Trace) of - Len when Len > ?MAX_OUTPUT -> - printer_long(lists:flatten(Trace),Editor), - Buffer_pid!{printer,send}, - printer_loop(Editor,Buffer_pid); - _ -> - Buffer_pid!{printer,send}, - print_trace(Editor,Trace), - printer_loop(Editor,Buffer_pid) - end; - clear -> - pman_win:configeditor(Editor, [{enable, true}]), - pman_win:configeditor(Editor,clear), - pman_win:configeditor(Editor, [{enable, false}]), - printer_loop(Editor,Buffer_pid); - _Other -> - printer_loop(Editor,Buffer_pid) - end. - -printer_long([],_) -> ok; -printer_long(Trace,Editor) -> - receive - clear -> - pman_win:configeditor(Editor, [{enable, true}]), - pman_win:configeditor(Editor,clear), - pman_win:configeditor(Editor, [{enable, false}]) - after 0 -> - {_Length,Rest,Print} = pman_buf_utils:split(Trace, - ?MAX_OUTPUT, - 0, - []), - print_trace(Editor,Print), - printer_long(Rest,Editor) - end. - - - -%% --------------------------------------------------------------- -%% Function which print trace messages on the window -%% --------------------------------------------------------------- - -print_trace(Editor,Elements) -> - pman_win:configeditor(Editor, [{enable, true}]), - pman_win:configeditor(Editor, [{insert, {'end',Elements}}]), - pman_win:configeditor(Editor, [{enable, false}]). diff --git a/lib/pman/src/pman_buf_utils.erl b/lib/pman/src/pman_buf_utils.erl deleted file mode 100644 index af3982665e..0000000000 --- a/lib/pman/src/pman_buf_utils.erl +++ /dev/null @@ -1,106 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - --module(pman_buf_utils). - -%%-compile(export_all). --export([textformat/1, split/4]). - - -%% --------------------------------------------------------------- -%% Funtion which format the trace message -%% --------------------------------------------------------------- - -textformat(died) -> - "\n\nProcess died\n"; -textformat({died, Pid}) -> - io_lib:format("~w Process died.~n",[Pid]); -textformat({shell_died, Old, New}) -> - io_lib:format("~w Shell Process died. Restarted as ~w~n~n",[Old,New]); - - -textformat(to_buffer) -> - "\nAppending trace log to Buffer\n\n"; -textformat(to_file) -> - "\nAppending trace log to File\n\n"; -textformat(cut_buffer) -> - "\nCUT BUFFER\n\n"; -textformat({trace, From, 'receive', Msg}) -> - io_lib:format("~w: rec ~s~n", [From, - tuple_space(Msg)]); -textformat({trace, From, send, Msg, To}) -> - io_lib:format("~w: ! To: ~w Msg: ~s~n", [From, - To, - tuple_space(Msg)]); -textformat({trace, From, call, Func}) -> - io_lib:format("~w: call ~s~n",[From, ffunc(Func)]); -textformat({trace, From, spawn, Data}) -> - io_lib:format("~w: spawn ~p~n", [From, Data]); -textformat({trace, From, link, Data}) -> - io_lib:format("~w: link ~p~n", [From, Data]); -textformat({trace, From, unlink, Data}) -> - io_lib:format("~w: U-lnk ~p~n", [From, Data]); - -textformat({trace, From, Op, Data}) -> - io_lib:format("~w: ~w ~p~n", [From, Op, Data]); - -textformat({print, Format, Args}) -> - io_lib:format(Format, Args); -textformat(Other) -> - io_lib:format("~p~n",[Other]). - - - - - -ffunc({M,F, Argl}) -> - io_lib:format("~w:~w(~s)", [M, F, fargs(Argl)]); -ffunc(X) -> tuple_space(X). -fargs([]) -> []; -fargs([A]) -> tuple_space(A); %% last arg -fargs([A|Args]) -> [tuple_space(A),", "|fargs(Args)]. - - -tuple_space(X) when is_tuple(X) -> print(size(X), X, "}"); -tuple_space(X) -> io_lib:format("~p",[X]). - -print(0 , _X, Buff) -> ["{"|Buff]; -print(1 , X, Buff) -> - Str = tuple_space(element(1, X)), - ["{",Str|Buff]; -print(Num, X, Buff) -> - Str = tuple_space(element(Num, X)), - print(Num-1, X, [", ",Str|Buff]). - - - -%% ---------------------------------------------------------------- -%% splits the list at element Size, returns Size, and the 2 lists -%% If the list is not long enough, it returns {size(List),[],List} - - -split([],_,Length,Buff) -> - {Length,[],lists:reverse(Buff)}; -split(Rest,0,Length,Buff) -> - {Length,Rest,lists:reverse(Buff)}; -split([L|List],Size,Length,Buff) -> - split(List,Size-1,Length+1,[L|Buff]). - - - diff --git a/lib/pman/src/pman_main.erl b/lib/pman/src/pman_main.erl deleted file mode 100644 index 2f51284293..0000000000 --- a/lib/pman/src/pman_main.erl +++ /dev/null @@ -1,789 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% --module(pman_main). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,read,2}}]). - -%% Main process and window - --export([init/2]). - --record(state, {win, % GS top window - frame, % GS top frame - grid, % GS process info grid - - size, % int() No. of displayed procs - w, % int() Window width - h, % int() Window height - - hide_system=false, % bool() Auto-hide system procs - hide_new=false, % bool() Auto-hide new processes - - hide_modules, % ordset() Excluded modules - - hide_all=[], % [{node(), bool()}] Hide all - hide_pids=[], % [{node(), Ordset}] Processes - % explicitly to hide, per node - show_pids=[], % [{node(), Ordset}] Processes - % explicitly to show, per node - - shown_pids=[], % [{node(), Ordset}] Processes - % actually shown, per node - - node, % node() Current node - nodes=[], % [node()] All known nodes - - focus=1, % int() Grid line with focus - focus_pid=undefined, % pid() | undefined Proc in focus - - noshell, % bool() Noshell mode on - - options}). % term() Trace options settings - - --include("pman_win.hrl"). - --define(REFRESH_TIME,5000). - --define(REQUIRES_FOCUS, % List of menus that should - ['Trace Process', % be disabled if no process - 'Kill', % is in focus - 'Hide Selected Process', - 'Module']). - -%%--Process init and loop----------------------------------------------- - -init(PidCaller, OSModuleExcluded) -> - process_flag(trap_exit, true), - - %% Monitor all nodes in a distributed system - case is_alive() of - - %% We have a distributed system - true -> net_kernel:monitor_nodes(true); - - %% No distribution - false -> ignore - end, - Nodes = [node()|nodes()], - - %% Create the main window - %% For some extremely strange reason, the frame must be resized - %% or the grid won't be visible... - GridSize = length(processes()) + 61, - {Window, Grid, Frame, Visible, W, H} = - pman_win:pman_window(GridSize, OSModuleExcluded, Nodes), - gse:resize(Frame, ?WIN_WIDTH, ?WIN_HEIGHT-?MENU_HEIGHT), - - Noshell = case pman_shell:find_shell() of - noshell -> true; - _ -> false - end, - - State1 = #state{win=Window, frame=Frame, grid=Grid, - size=Visible, - w=W, h=H, - hide_modules=OSModuleExcluded, - node=node(), - noshell=Noshell}, - - State2 = lists:foldl(fun(Node, State) -> add_node(Node, State) end, - State1, - Nodes), - - State3 = refresh(State2), - - %% Notify caller that the process appears - %% to have been started. - PidCaller ! {initialization_complete, self()}, - - %% Initiate a 'catch all' trace pattern so call tracing works - erlang:trace_pattern({'_', '_', '_'}, true, [local]), - - %% Read default options file - Options = restore_options(State3), - - loop(State3#state{options=Options}). - -add_node(Node, State) -> - pman_win:add_menu(node, [Node], "Show"), - State#state{hide_all=nl_update(Node, false, State#state.hide_all), - hide_pids=nl_update(Node, [], State#state.hide_pids), - show_pids=nl_update(Node, [], State#state.show_pids), - shown_pids=nl_update(Node, [], State#state.shown_pids), - nodes=[Node|State#state.nodes]}. - -%% Restore saved options from default file -restore_options(State)-> - File = options_file(), - case pman_options:read_from_file(File) of - {ok, Options} -> - Options; - {error, ReasonStr, DefOptions} -> - Parent = State#state.win, - Msg = io_lib:format( - "Problems reading default option file~n~s:~n~s", - [File, ReasonStr]), - tool_utils:notify(Parent, Msg), - DefOptions - end. - -options_file() -> - {ok, [[Home]]} = init:get_argument(home), - filename:join([Home, ".erlang_tools", "pman.opts"]). - -loop(State) -> - receive - {nodeup, Node} -> - case nl_exists(Node, State#state.hide_all) of - true -> - pman_win:add_menu(node, [Node], "Show"), - loop(State#state{nodes=[Node|State#state.nodes]}); - false -> - loop(add_node(Node, State)) - end; - - {nodedown, Node} -> - pman_win:remove_menu([Node]), - - Msg = io_lib:format("Node~n~p~ndown.", [Node]), - spawn_link(tool_utils, notify, [State#state.win, Msg]), - - %% We remove Node from the list of nodes but not from - %% the other lists of State, in case Node reappears later - Nodes = lists:delete(Node, State#state.nodes), - State2 = State#state{nodes=Nodes}, - - %% If it was the shown node that went down, - %% change overview to this node - if - Node==State#state.node -> - State3 = execute_cmd({node,node()}, State2, [], []), - loop(State3); - true -> - loop(State2) - end; - - %% Ignore EXIT signals from help processes - {'EXIT', _Pid, _Reason} -> - loop(State); - - %% GS events - {gs, _Obj, _Event, _Data, _Args} = Cmd -> - case gs_cmd(Cmd, State) of - stop -> - exit(topquit); - State2 -> - loop(State2) - end - - after ?REFRESH_TIME -> - State2 = refresh(State), - loop(State2) - end. - -%% gs_cmd(Event, State) -> stop | State' -gs_cmd(Event, State) -> - case Event of - - %% --- Window manager commands --- - - %% Window is moved or resized - {gs, _, configure, _Data, Args} -> - configure(Args, State); - - %% Window closed, stop Pman - {gs, _, destroy, _, _} -> - stop; - - %% --- Dynamic commands --- - - %% Click in any object where the GS Data field is a 2-tuple - {gs, _, click, Data, Args} when is_tuple(Data), size(Data)==2 -> - execute_cmd(Data, State, [], Args); - - %% Single click in the grid sets focus to selected process - {gs, _, click, {pidfunc,_,_}, [_,Row|_]} when is_integer(Row) -> - focus(Row, State); - - %% Double click in the grid starts tracing of selected process - {gs, _, doubleclick, {pidfunc,_,_}, [_Col,Row| _]} when is_integer(Row) -> - execute_cmd('Trace Process', State, [], []); - - %% Click in named GS objects - {gs, Cmd, click, Data, Args} when is_atom(Cmd); - is_atom(element(1, Cmd)) -> - execute_cmd(Cmd, State, Data, Args); - - %% --- Keyboard accelerator commands --- - - %% Move focus up and down - {gs, _, keypress, [], ['Up',_,0,0]} -> - execute_cmd(focus_previous, State, [], []); - {gs, _, keypress, [], ['Down',_,0,0]} -> - execute_cmd(focus_next, State, [], []); - - %% Other keyboard shortcuts - {gs, _, keypress, [], ['Return',_,0,0]} -> - execute_cmd('Trace Process', State, [], []); - {gs, _, keypress, [], [Key,_,0,1]} -> - execute_cmd(shortcut(Key), State, [], []); - - %% Ignore all other GS events - _Other -> - State - end. - -%% Keyboard shortcuts - -%% File menu -shortcut(o) -> 'Default Options'; -shortcut(e) -> 'Exit'; -shortcut(z) -> 'Exit'; - -%% View menu -shortcut(i) -> 'Hide All'; -shortcut(u) -> 'Hide Modules'; -shortcut(d) -> 'Hide Selected Process'; -shortcut(m) -> 'Module'; -shortcut(r) -> 'Refresh'; - -%% Trace menu -shortcut(k) -> 'Kill'; -shortcut(t) -> 'Trace Process'; -shortcut(s) -> 'Trace Shell'; - -%% Help menu -shortcut(h) -> 'Help'; - -%% Keyboard command only -shortcut(l) -> 'All Links'; - -%% Process grid traversal -shortcut(p) -> focus_previous; -shortcut(n) -> focus_next; -shortcut(_) -> dummy. - -%% configure([W,H,X,Y|_], State) -> State' -%% Window has been moved or resized -configure([W,H|_], State) -> - if - W==State#state.w, H==State#state.h -> - ignore; - - true -> - gse:resize(State#state.frame, W, H-?MENU_HEIGHT), - - Grid = State#state.grid, - case abs(W - gs:read(Grid,width) - 6) of - 0 -> - ok; %% Avoid refreshing width if possible - _Anything -> - Cols = pman_win:calc_columnwidths(W-6), - gs:config(Grid, Cols) - end, - pman_win:configwin(Grid, W, H) - end, - State. - -%% focus(Row, State) -> State' -%% Row = int() Grid row -%% User has selected a row in the grid. -%% Row==1 means header row. -focus(Row, State) -> - - Pid = case get_pid_in_focus(Row, State#state.grid) of - {true, {pidfunc,Pid0,_}} -> - pman_win:change_colour(State#state.grid, - State#state.focus, Row), - enable_pid_actions(), - Pid0; - false -> - disable_pid_actions(), - undefined - end, - - State#state{focus=Row, focus_pid=Pid}. - -%% get_pid_in_focus(Row, Grid) -> {true, Data} | false -%% Data = {pidfunc, Pid, Func} -%% Func = {Mod,Name,Arity} | term() -%% Return the data associated with the process in focus if there is one, -get_pid_in_focus(1, _Grid) -> - false; -get_pid_in_focus(Row, Grid) -> - case gs:read(Grid, {obj_at_row,Row}) of - undefined -> false; - GridLine -> - Data = gs:read(GridLine, data), - {true, Data} - end. - -%% execute_cmd(Cmd, State, Data, Args) -> stop | State' - -%% Checkbutton "Hide System Processes" -execute_cmd('Hide System', State, _Data, Args) -> - [_Text, _Group, Bool|_Rest] = Args, - State2 = State#state{hide_system=Bool}, - refresh(State2); - -%% Checkbutton "Auto-Hide New" -execute_cmd('Auto Hide New', State, _Data, Args ) -> - [_Text, _Group, Bool|_Rest] = Args, - refresh(State#state{hide_new=Bool}); - -%% File->Options... -execute_cmd('Default Options', State, _Data, _Args) -> - OldOptions = State#state.options, - NewOptions = pman_options:dialog(State#state.win, - "Default Trace Options", - OldOptions), - case NewOptions of - {error, _Reason} -> - State; - Options -> - State#state{options=Options} - end; - -%% File->Save Options -%% Save the set default options to the user's option file -execute_cmd('Save Options', State, _Data, _Args)-> - Options = State#state.options, - File = options_file(), - Parent = State#state.win, - - case pman_options:save_to_file(Options, File) of - ok -> - tool_utils:notify(Parent, "Options saved to\n" ++ File); - {error, ReasonStr} -> - Msg = io_lib:format("Could not save options to~n~s:~n~s", - [File, ReasonStr]), - tool_utils:notify(Parent, Msg) - end, - State; - -%% File->Exit -%% Exit the application -execute_cmd('Exit', _State, _Data, _Args) -> - stop; - -%% View->Hide All Processes -execute_cmd('Hide All', State, _Data, _Args) -> - Node = State#state.node, - HideAll = nl_update(Node, true, State#state.hide_all), - ShowPids = nl_del_all(State#state.node, State#state.show_pids), - State2 = State#state{hide_all=HideAll, show_pids=ShowPids}, - refresh(State2, true); - -%% View->Hide modules... -%% Opens a dialog where the user can select from a list of -%% the loaded modules. -%% The selected module is added to the list of hidden modules. -execute_cmd('Hide Modules', State, _Data, _Args) -> - - %% Get all loaded modules that are not already hidden - AllModules = lists:map(fun({Module, _File}) -> Module end, - code:all_loaded()), - ModulesSet = ordsets:subtract(ordsets:from_list(AllModules), - State#state.hide_modules), - - %% Let the user select which of the loaded modules to exclude from - %% the process overview - Title = "Module selection", - case pman_tool:select(State#state.win, Title, ModulesSet) of - Modules when is_list(Modules) -> - HideModules = ordsets:union(State#state.hide_modules, - ordsets:from_list(Modules)), - refresh(State#state{hide_modules=HideModules}); - cancelled -> State - end; - -%% View->Hide Selected Process -%% The process in focus should explicitly be hidden -execute_cmd('Hide Selected Process', State, _Data, _Args) -> - case State#state.focus_pid of - undefined -> State; - Pid -> - Node = State#state.node, - HidePids = nl_add(Node, Pid, State#state.hide_pids), - ShowPids = nl_del(Node, Pid, State#state.show_pids), - refresh(State#state{hide_pids=HidePids, show_pids=ShowPids}) - end; - -%% View->Module Info... -%% Open window with module information. -execute_cmd('Module', State, _Data, _Args) -> - case get_pid_in_focus(State#state.focus, State#state.grid) of - {true, {pidfunc, _Pid, {Module,_Name,_Arity}}} -> - pman_module_info:start(Module); - _ -> % false | {true, {pidfunc, Pid, Other}} - ignore - end, - State; - -%% View->Refresh -%% Refresh the main window. -%% (Called automatically every ?REFRESH_TIME millisecond) -execute_cmd('Refresh', State, _Data, _Args) -> - refresh(State); - -%% View->Show All Processes -%% Makes all processes visible except system processes and new -%% processes, if those buttons are checked. -%% Note: Also un-hides all hidden modules! -execute_cmd('Show All', State, _Data, _Args) -> - Node = State#state.node, - HideAll = nl_update(Node, false, State#state.hide_all), - HidePids = nl_del_all(State#state.node, State#state.hide_pids), - ShowPids = nl_del_all(State#state.node, State#state.show_pids), - State2 = State#state{hide_modules=ordsets:new(), hide_all=HideAll, - hide_pids=HidePids, show_pids=ShowPids}, - refresh(State2, true); - -%% View->Show Processes... -%% Open a list of all hidden processes, if the user selects one this -%% process should explicitly be shown -execute_cmd('Show Selected', State, _Data, _Args) -> - Node = State#state.node, - - All = pman_process:r_processes(Node), - Hidden = case nl_lookup(Node, State#state.hide_all) of - true -> - All; - false -> - Shown = nl_lookup(Node, State#state.shown_pids), - ordsets:subtract(All, Shown) - end, - - %% Selection window - Title = "Select Processes to Show", - Tuples = - lists:map(fun(Pid) -> - {M,F,A} = pman_process:function_info(Pid), - Str = case pman_process:get_name(Pid) of - " " -> - io_lib:format("~p:~p/~p", - [M, F, A]); - Name -> - io_lib:format("[~p] ~p:~p/~p", - [Name, M, F, A]) - end, - {Pid, Str} - end, - Hidden), - case pman_tool:select(State#state.win, Title, Tuples) of - Pids when is_list(Pids) -> - HidePids = nl_del(Node, Pids, State#state.hide_pids), - ShowPids = nl_add(Node, Pids, State#state.show_pids), - refresh(State#state{hide_pids=HidePids,show_pids=ShowPids}); - cancelled -> State - end; - -%% Trace->Kill -execute_cmd('Kill', State, _Data, _Args) -> - case State#state.focus_pid of - Pid when is_pid(Pid) -> - exit(Pid, kill); - undefined -> - ignore - end, - State; - -%% Trace->Selected Process -execute_cmd('Trace Process', State, _Data, _Args) -> - case State#state.focus_pid of - Pid when is_pid(Pid) -> - pman_shell:start({Pid,self()}, State#state.options); - undefined -> - ignore - end, - State; - -%% Trace->Shell Process -execute_cmd('Trace Shell', State, _Data, _Args) -> - case pman_shell:find_shell() of - noshell -> - State; - Shell -> - pman_shell:start({{shell,Shell},self()}, - State#state.options), - State#state{noshell=false} - end; - -%% Nodes->Show -%% Change shown node -execute_cmd({node,Node}, State, _Data, _Args) -> - gse:config(State#state.win, - [{title,lists:concat(["Pman: Overview on ", Node])}]), - gse:disable(Node), - catch gse:enable(State#state.node), % Menu may not exist any more - refresh(State#state{node=Node}, true); - -%% Help->Help -execute_cmd('Help', State, _Data, _Args) -> - Win = State#state.win, - HelpFile = - filename:join([code:lib_dir(pman),"doc","html","index.html"]), - tool_utils:open_help(Win, HelpFile), - State; - -%% Keyboard shortcut Ctrl-l -execute_cmd('All Links', State, _Data, _Args) -> - case State#state.focus_pid of - Pid when is_pid(Pid) -> - case process_info(Pid, links) of - {links, Pids} -> - pman_shell:start_list(Pids, self(), - State#state.options); - undefined -> - ignore - end; - undefined -> ignore - end, - State; - -%% Keyboard shortcuts for process grid traversal -execute_cmd(focus_previous, State, _Data, _Args) -> - focus(previous_row(State), State); -execute_cmd(focus_next, State, _Data, _Args) -> - focus(next_row(State), State); - -%% Keyboard combinations that are not shortcuts -execute_cmd(dummy, State, _Data, _Args) -> - State. - -%% Convenience functions for disabling/enabling menu items that require -%% that a process is selected. -disable_pid_actions() -> - lists:foreach(fun(X) -> gse:disable(X) end, ?REQUIRES_FOCUS). - -enable_pid_actions() -> - lists:foreach(fun(X) -> gse:enable(X) end, ?REQUIRES_FOCUS). - -%% refresh(State) -> State' -%% refresh(State, ForceP) -> State' -%% Refreshes the main window. -refresh(State) -> - refresh(State, false). -refresh(#state{node=Node} = State, ForceP) -> - - %% Update shown processes - - %% First, get an ordset of all processes running at the current node - All = pman_process:r_processes(Node), - - Shown = nl_lookup(Node, State#state.shown_pids), - ExpShown = nl_lookup(Node, State#state.show_pids), - - {Show, State2} = - case nl_lookup(Node, State#state.hide_all) of - - %% If the user has selected "Hide All Processes", only - %% explicitly selected processes which still exist should - %% be shown - true -> - {ordsets:intersection(ExpShown, All), State}; - - false -> - %% Compute which processes should be hidden according - %% to the flags/menu items selected - Hidden = hidden_pids(All, State), - - NotHidden = ordsets:subtract(All, Hidden), - - Show0 = case State#state.hide_new of - %% If the user has selected "Auto-Hide New", - %% then only those processes in NotHidden - %% which are already shown, should be shown, - %% together with explicitly selected - %% processes which still exist - true -> - ordsets:union( - ordsets:intersection(NotHidden,Shown), - ordsets:intersection(ExpShown, All)); - - %% Otherwise, show all processes in - %% NotHidden, together with explicitly - %% selected processes which still exist - false -> - ordsets:union( - NotHidden, - ordsets:intersection(ExpShown, All)) - end, - - ShownPids = nl_update(Node, Show0, - State#state.shown_pids), - {Show0, State#state{shown_pids=ShownPids}} - end, - - NoOfHidden = length(All) - length(Show), - - if - Show==Shown, not ForceP -> - pman_win:update(NoOfHidden), - State; - - true -> - ShowInfo = display_info(Show), - pman_win:update(State#state.grid, ShowInfo, NoOfHidden), - - %% Set the focus appropriately - State3 = case State2#state.focus_pid of - undefined -> - disable_pid_actions(), - State2; - Pid -> - Row = get_row(Pid, Show), - focus(Row, State2) - end, - - trace_shell_possible(State3), - - Size = length(Show), - case Size of - 1 -> gse:disable('Hide All'); - _ -> gse:enable('Hide All') - end, - - State3#state{size=Size} - end. - -%% hidden_pids(All, State) -> Hidden -hidden_pids(All, State) -> - - %% Processes hidden because they are system processes - HideSys = case State#state.hide_system of - true -> - lists:filter( - fun(Pid) -> - pman_process:is_system_process(Pid) - end, - All); - false -> - [] - end, - - %% Process hidden because they are executing code in a hidden module - Mods = State#state.hide_modules, - HideMod = - lists:filter(fun(Pid) -> - pman_process:is_hidden_by_module(Pid, Mods) - end, - All), - - %% Explicitly hidden processes - HideExp = nl_lookup(State#state.node, State#state.hide_pids), - - %% All hidden processes - ordsets:union([HideSys, HideMod, HideExp]). - -display_info(Pids) -> - lists:map(fun(Pid) -> - Func = pman_process:function_info(Pid), - Name = pman_process:get_name(Pid), - Msgs = pman_process:msg(Pid), - Reds = pman_process:reds(Pid), - Size = pman_process:psize(Pid), - {Pid, Func, Name, Msgs, Reds, Size} - end, - Pids). - -get_row(Pid, List) -> - get_row(Pid, List, length(List)+1). - -get_row(Pid, [Pid | _], Row) -> - Row; -get_row(Pid, [_ | T], Row) -> - get_row(Pid, T, Row-1); -get_row(_Pid, [], _Row) -> - 1. - -next_row(#state{size=Size, focus=Row}) -> - check_row(Row+1, Size). - -previous_row(#state{size=Size, focus=Row}) -> - check_row(Row-1, Size). - -check_row(1, Size) -> - Size+1; -check_row(Row, Size) when Row==Size+2 -> - 2; -check_row(Row, _Size) -> - Row. - -%% Check if node is running in noshell mode and if so disable the -%% 'Trace Shell' menu option. -trace_shell_possible(#state{noshell=true}) -> - gse:disable('Trace Shell'); -trace_shell_possible(_) -> - ok. - -%% -- Functions for manipulating {Node, Data} lists -- - -%% nl_add(Node, Elem|Elems, NList) -> NList' -nl_add(Node, Elems, [{Node, Ordset} | T]) when is_list(Elems) -> - [{Node, ordsets:union(Elems, Ordset)} | T]; -nl_add(Node, Elem, [{Node, Ordset} | T]) -> - [{Node, ordsets:add_element(Elem, Ordset)} | T]; -nl_add(Node, Elem, [H | T]) -> - [H | nl_add(Node, Elem, T)]; -nl_add(Node, Elems, []) when is_list(Elems) -> - [{Node, Elems}]; -nl_add(Node, Elem, []) -> - [{Node, ordsets:add_element(Elem, ordsets:new())}]. - -%% nl_del(Node, Elem|Elems, NList) -> NList' -nl_del(Node, Elems, [{Node, Ordset} | T]) when is_list(Elems) -> - [{Node, ordsets:subtract(Ordset, Elems)} | T]; -nl_del(Node, Elem, [{Node, Ordset} | T]) -> - [{Node, ordsets:del_element(Elem, Ordset)} | T]; -nl_del(Node, Elem, [H | T]) -> - [H | nl_del(Node, Elem, T)]; -nl_del(_Node, _Elem, []) -> - []. - -%% nl_del_all(Node, NList) -> NList' -nl_del_all(Node, [{Node, _Ordset} | T]) -> - [{Node, ordsets:new()} | T]; -nl_del_all(Node, [H | T]) -> - [H | nl_del_all(Node, T)]; -nl_del_all(_Node, []) -> - []. - -%% nl_update(Node, Val, NList) -> NList' -nl_update(Node, Val, [{Node, _OldVal} | T]) -> - [{Node, Val} | T]; -nl_update(Node, Val, [H | T]) -> - [H | nl_update(Node, Val, T)]; -nl_update(Node, Val, []) -> - [{Node, Val}]. - -%% nl_lookup(Node, NList) -> Val -nl_lookup(Node, NList) -> - {value, {_Node,Val}} = lists:keysearch(Node, 1, NList), - Val. - -%% nl_exists(Node, NList) -> bool() -nl_exists(Node, NList) -> - case lists:keysearch(Node, 1, NList) of - {value, _Val} -> - true; - false -> - false - end. diff --git a/lib/pman/src/pman_module_info.erl b/lib/pman/src/pman_module_info.erl deleted file mode 100644 index 944fd4a462..0000000000 --- a/lib/pman/src/pman_module_info.erl +++ /dev/null @@ -1,133 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% --module(pman_module_info). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,start,1}}]). - -%% Window with module information (View->Module Info...) - -%% External exports --export([start/1]). - -%% Record for keeping the loop state for the -%% module info process. --record(state, {topwin, % GS identifier for top window - editor, % GS identifier for editor - module, % Name of the viewed module - parent}). % Pid of the parent - -start(Module) -> - Self = self(), - spawn_link(fun() -> init(Module, Self) end). - -init(Module, Parent) -> - process_flag(trap_exit, true), - - GS = gs:start([{kernel,true}]), - Font = pman_win:font(GS), - - WinTitle = lists:flatten(io_lib:format("Pman - Module Info: ~p", - [Module])), - WinOptions = [{title,WinTitle}, {width,550}, {height, 400}, - {configure,true}, {keypress,true}, {destroy,true}], - TopWindow = gse:window(GS, WinOptions), - - %% File menu - MenuBar = gse:menubar(TopWindow, []), - MBFile = gse:menubutton(MenuBar, [{label,{text," File "}}, - {font,Font}, {underline, 1}]), - MenuFile = gse:menu(MBFile, []), - - gse:named_menuitem('Save buffer', MenuFile, - [{label,{text,"Save buffer..."}}, - {font,Font}, {underline,0}]), - gse:named_menuitem('Close', MenuFile, - [{label,{text,"Close"}}, - {font,Font}, {underline,0}]), - - %% Output part of window - Editor = gse:editor(TopWindow, - [{font,Font}, - {x,3}, {y,40}, {width,546}, {height,348}]), - gse:config(Editor, [{keypress,true}, - {insert,{'end',pman_win:module_data(Module)}}]), - gse:config(Editor, [{enable,false}, - {vscroll,right}, {hscroll,bottom}, - {wrap,none}]), - gse:map(TopWindow), - - State = #state{topwin=TopWindow, editor=Editor, module=Module, - parent=Parent}, - loop(State). - -loop(State) -> - - receive - %% Die if the parent dies - {'EXIT', Pid, _Reason} when Pid==State#state.parent -> - gse:destroy(State#state.topwin); - - %% Ignore other exit signals (from file dialog window) - {'EXIT', _Pid, _Reason} -> - loop(State); - - %% Window closed - {gs, _TopWindow, destroy, [], []} -> - ok; - - %% Window resized or moved - {gs, _TopWindow, configure ,_Data, [W,H,_X,_Y|_]} -> - gs:config(State#state.editor, [{width,W-3}, {height,H-40}]), - loop(State); - - %% Close - destroy window and exit process - {gs, 'Close', click, _Data, _Args} -> - gse:destroy(State#state.topwin), - ok; - - %% Save Buffer - make filename and save buffer to file - {gs, 'Save buffer', click, _Data, _Args} -> - save_buffer(State), - loop(State); - - %% Keyboard accelerator commands - {gs, _, keypress, [], [c,_,0,1]} -> % 'Close' - gse:destroy(State#state.topwin), - ok; - {gs, _, keypress, [], [s,_,0,1]} -> % 'Save buffer' - save_buffer(State), - loop(State); - {gs, _, keypress, _Data, _Args} -> - loop(State) - end. - -save_buffer(State) -> - DefaultFile = atom_to_list(State#state.module) ++ ".module_info", - Result = tool_utils:file_dialog([{type,save}, {file,DefaultFile}]), - case Result of - %% User selected a file, now save the result - {ok, File, _Dir} -> - gs:config(State#state.editor, {save,File}), - Msg = "Module information saved in file\n" ++ File, - tool_utils:notify(State#state.topwin, Msg); - - %% File dialog was cancelled in some way. - {error, _Reason} -> - ignore - end. diff --git a/lib/pman/src/pman_options.erl b/lib/pman/src/pman_options.erl deleted file mode 100644 index 0765458fdc..0000000000 --- a/lib/pman/src/pman_options.erl +++ /dev/null @@ -1,395 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% --module(pman_options). - -%% Window with trace options settings (File->Options...) - --export([dialog/3, - read_from_file/1, save_to_file/2]). - --include("pman_options.hrl"). - --define(WIN_WIDTH, 350). --define(WIN_HEIGHT, 350). - --define(TOP_WINDOW, xx_pman_option_window_xx). --define(TOP_FRAME, xx_pman_top_frame_xx). - --record(state, {resize_frame, % GS identifier for the main frame - parent}). % Pid of parent - -%%--dialog/3------------------------------------------------------------ -%% Create a window, or return a value indicating that is is already -%% created. - -dialog(ParentWin, Title, Options) -> - Self = self(), - Pid = spawn(fun() -> dialog(Self, ParentWin, Title, Options) end), - receive - {Pid, Value} -> - Value % Options2 | {error,destroyed} | {error,cancelled} - end. - -dialog(Parent, ParentWin, Title, Options) -> - - %% Check if the dialog has already been created, in that - %% case, we can reuse it. Otherwise a new dialog is created. - case gse:name_occupied(?TOP_WINDOW) of - false -> make_window(ParentWin, Title); - true -> ok - end, - - %% Window has now been created or may be re-used - update_window_from_options(Options), - - gse:resize(?TOP_FRAME, ?WIN_WIDTH, ?WIN_HEIGHT), - gse:map(?TOP_WINDOW), - - loop(#state{resize_frame=?TOP_FRAME, parent=Parent}). - -loop(State) -> - receive - {gs, _Id, destroy, _Data, _Arg} -> - State#state.parent ! {self(), {error,destroyed}}; - - {gs, ?TOP_WINDOW, configure, _Data, [W, H |_]} -> - gse:config(State#state.resize_frame, - [{width,W},{height,H}]), % repack - loop(State); - - {gs, ok_button, click, _Data, _Arg} -> - Options = get_options_from_window(), - gse:unmap(?TOP_WINDOW), - State#state.parent ! {self(), Options}; - - {gs, cancel_button, click, _Data, _Arg} -> - gse:unmap(?TOP_WINDOW), - State#state.parent ! {self(), {error,cancelled}}; - - {gs, trace_spawn, click, _Data, [_Text,_,Value]} -> - group_radio(Value, trace_spawn_all, [trace_spawn_all, - trace_spawn_first]), - loop(State); - - {gs, trace_link, click, _Data, [_Text,_,Value]} -> - group_radio(Value, trace_link_all, [trace_link_all, - trace_link_first]), - loop(State); - - {gs, trace_in_window, click, _Data, _Arg} -> - lists:foreach(fun(X) -> gse:disable(X) end, - [trace_file, trace_file_browse]), - loop(State); - - {gs, trace_to_file, click, _Data, [_Text,_,_Value]} -> - lists:foreach(fun(X) -> gse:enable(X) end, - [trace_file, trace_file_browse]), - loop(State); - - {gs, trace_file_browse, click, _Data, _Arg} -> - Result = tool_utils:file_dialog([{type,save}, - {file, "Untitled.log"}]), - case Result of - {error, _Reason} -> - loop(State); - {ok, Name,_State} -> - gse:config(trace_file, [{text, Name}]), - loop(State) - end - end. - --define(LBLOPTS, [{justify,left}, {align,w}]). --define(BTNOPTS, [{justify,left}, {align,w}]). - -make_window(ParentWin, Title) -> - - Font = pman_win:font(), - - gse:named_window(?TOP_WINDOW, ParentWin, [{title,Title}, - {configure,true}, - {width, ?WIN_WIDTH}, - {height, ?WIN_HEIGHT}]), - - gse:named_frame(?TOP_FRAME, ?TOP_WINDOW, - [{bw,3}, - {packer_x,[{stretch,1,175}, {stretch,1,175}]}, - {packer_y,[{stretch,3},{stretch,2},{stretch,1}]}]), - - F11 = gse:frame(?TOP_FRAME, [{bw,3}, - {pack_xy,{1,1}}, - {packer_x,[{stretch,1}, - {stretch,20}, - {stretch,2}]}, - {packer_y,[{stretch,2}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}]}]), - - gse:label(F11,[{pack_xy,{2,1}}, - {label,{text,"Trace output options:"}}, - {font,Font} | ?LBLOPTS]), - - gse:named_checkbutton(trace_send, F11, - [{pack_xy,{2,2}}, - {label,{text,"Trace send"}}, - {font,Font} | ?BTNOPTS]), - gse:named_checkbutton(trace_receive, F11, - [{pack_xy,{2,3}}, - {label,{text, "Trace receive"}}, - {font,Font} | ?BTNOPTS]), - gse:named_checkbutton(trace_functions,F11, - [{pack_xy,{2,4}}, - {label,{text, "Trace functions"}}, - {font,Font} | ?BTNOPTS]), - gse:named_checkbutton(trace_events,F11, - [{pack_xy,{2,5}}, - {label,{text, "Trace events"}}, - {font,Font} | ?BTNOPTS]), - - F21 = gse:frame(?TOP_FRAME, [{bw,3}, - {pack_xy,{2,1}}, - {packer_x,[{stretch,1}, - {stretch,2}, - {stretch,2}, - {stretch,20}, - {stretch,1}]}, - {packer_y,[{stretch,2}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}, - {stretch,1}]}]), - - gse:label(F21, [{pack_xy,{{2,4},1}}, - {label,{text,"Inheritance options:"}}, - {font,Font} | ?LBLOPTS]), - - gse:named_checkbutton(trace_spawn, F21, - [{pack_xy,{{2,4},2}}, - {data,trace_send}, - {label,{text,"Inherit on spawn"}}, - {font,Font} | ?BTNOPTS]), - gse:named_radiobutton(trace_spawn_all, F21, - [{pack_xy,{{3,4},3}}, - {group,spawn}, - {data,trace_receive}, - {label,{text, "All spawns"}}, - {font,Font} | ?BTNOPTS]), - gse:named_radiobutton(trace_spawn_first, F21, - [{pack_xy,{{3,4},4}}, - {group,spawn}, - {data,trace_receive}, - {label,{text,"First spawn only"}}, - {font,Font} | ?BTNOPTS]), - gse:named_checkbutton(trace_link, F21, - [{pack_xy,{{2,4},6}}, - {data,trace_send}, - {label,{text,"Inherit on link"}}, - {font,Font} | ?BTNOPTS]), - gse:named_radiobutton(trace_link_all, F21, - [{pack_xy,{{3,4},7}}, - {group,link}, - {data,trace_receive}, - {label,{text,"All links"}}, - {font,Font} | ?BTNOPTS]), - - gse:named_radiobutton(trace_link_first, F21, - [{pack_xy,{{3,4},8}}, - {group,link}, - {data,trace_receive}, - {label,{text,"First link only"}}, - {font,Font} | ?BTNOPTS]), - - F12 = gse:frame(?TOP_FRAME, [{bw,3}, - {pack_xy,{{1,2},2}}, - {packer_x,[{stretch,1}, - {stretch,5}, % Label - {stretch,1}, - {stretch,10}, % Field - {stretch,1}, - {stretch,5}, % Button - {stretch,1}]}, - {packer_y,[{stretch,2}, - {stretch,1}, - {stretch,1}, - {stretch,1}]}]), - - gse:label(F12, [{pack_xy,{{2,6},1}}, - {label,{text,"Trace output options:"}}, - {font,Font} | ?LBLOPTS]), - gse:named_radiobutton(trace_in_window, F12, - [{pack_xy,{{2,6},2}}, - {group, trace_dest}, - {label,{text,"In window"}}, - {font,Font} | ?BTNOPTS]), - gse:named_radiobutton(trace_to_file, F12, - [{pack_xy,{2,3}}, - {group, trace_dest}, - {label,{text,"To file"}}, - {font,Font} | ?BTNOPTS]), - gse:named_entry(trace_file, F12, [{pack_xy,{4,3}}, {font,Font}]), - gse:named_button(trace_file_browse, F12, - [{pack_xy,{6,3}}, - {label,{text," Browse..."}}, - {font,Font} | ?BTNOPTS]), - - F13 = gse:frame(?TOP_FRAME, [{bw,3}, - {pack_xy,{{1,2},3}}, - {packer_x,[{stretch, 1}, - {fixed, 60}, - {stretch, 1}, - {fixed, 60}, - {stretch, 1}]}, - {packer_y,[{stretch,1}, - {fixed, 30}, - {stretch,1}]}]), - - gse:named_button(ok_button, F13, [{pack_xy,{2,2}}, - {label,{text,"OK"}}, - {font,Font}]), - gse:named_button(cancel_button, F13, [{pack_xy,{4,2}}, - {label,{text,"Cancel"}}, - {font,Font}]). - -update_window_from_options(Options) -> - - %% Trace output - gse:config(trace_send, [{select,Options#trace_options.send}]), - gse:config(trace_receive, - [{select,Options#trace_options.treceive}]), - gse:config(trace_functions, - [{select,Options#trace_options.functions}]), - gse:config(trace_events, [{select,Options#trace_options.events}]), - - %% Trace inheritance - case (Options#trace_options.inherit_on_all_spawn or - Options#trace_options.inherit_on_1st_spawn) of - true -> - gse:select(trace_spawn), - gse:config(trace_spawn_all, - [{select,Options#trace_options.inherit_on_all_spawn}]), - gse:config(trace_spawn_first, - [{select,Options#trace_options.inherit_on_1st_spawn}]); - false -> - lists:foreach(fun(X) -> gse:disable(X) end, - [trace_spawn_all,trace_spawn_first]) - end, - - case (Options#trace_options.inherit_on_all_link or - Options#trace_options.inherit_on_1st_link) of - true -> gse:select(trace_link), - gse:config(trace_link_all, - [{select,Options#trace_options.inherit_on_all_link}]), - gse:config(trace_link_first, - [{select, Options#trace_options.inherit_on_1st_link}]); - false -> - lists:foreach(fun(X) -> gse:disable(X) end, - [trace_link_all,trace_link_first]) - end, - - %% Trace ouput destinations - gse:config(trace_in_window, - [{select,(not Options#trace_options.to_file)}]), - - gse:config(trace_to_file, [{select,Options#trace_options.to_file}]), - gse:config(trace_file, [{text,Options#trace_options.file}]), - case Options#trace_options.to_file of - true -> - ok; - false -> - lists:foreach(fun(X) -> gse:disable(X) end, - [trace_file, trace_file_browse]) - end. - -get_options_from_window() -> - #trace_options{send = gse:read(trace_send,select), - treceive = gse:read(trace_receive,select), - functions = gse:read(trace_functions,select), - events = gse:read(trace_events,select), - inherit_on_1st_spawn = gse:read(trace_spawn_first,select), - inherit_on_all_spawn = gse:read(trace_spawn_all,select), - inherit_on_1st_link = gse:read(trace_link_first,select), - inherit_on_all_link = gse:read(trace_link_all,select), - to_file = gse:read(trace_to_file,select), - file = gse:read(trace_file,text)}. - -group_radio(Value, Default, GroupList) -> - case Value of - true -> - gse:select(Default), - lists:foreach(fun(X) -> gse:enable(X) end, GroupList); - false -> - lists:foreach(fun(X) -> gse:deselect(X) end, GroupList), - lists:foreach(fun(X) -> gse:disable(X) end, GroupList) - end. - -%%--read_from_file/(File)----------------------------------------------- -%% Returns the options saved in File. -%% If no options can be found, then the default options are -%% returned. - -read_from_file(File) -> - case file:consult(File) of - {ok, [Term]} -> - if - is_record(Term, trace_options) -> - {ok, Term}; - true -> - {error, "unexpected contents", #trace_options{}} - end; - {ok, _Terms} -> - {error, "unexpected contents", #trace_options{}}; - {error, Tuple} when is_tuple(Tuple) -> % {Line,Mod,Term} - {error, "erroneous contents", #trace_options{}}; - {error, _Posix} -> - %% The most probable reason is that the file does not - %% exist, this is not an error so we simply return - %% the default trace options instead - {ok, #trace_options{}} - end. - -%%--save_to_file(Options, File)----------------------------------------- - -save_to_file(Options, File) -> - case file:open(File, [write]) of - {ok, Fd} -> - {{Year,Month,Day},{H,M,S}} = calendar:local_time(), - io:format(Fd, "%%%~n", []), - io:format(Fd, "%%% File: ~s~n", [File]), - io:format(Fd, "%%% Date: ~w-~2..0w-~2..0w, ~2..0w:~2..0w:~2..0w~n", - [Year,Month,Day,H,M,S]), - io:format(Fd, "%%%~n", []), - io:format(Fd, "%%% This file was created by Pman. ~n", []), - io:format(Fd, "%%%~n", []), - io:format(Fd, "%%% DO NOT EDIT! ~n", []), - io:format(Fd, "%%%~n", []), - io:format(Fd, "%%%~n", []), - io:format(Fd, "~p.~n", [Options]), - file:close(Fd), - ok; - {error, Posix} -> - {error, file:format_error(Posix)} - end. diff --git a/lib/pman/src/pman_options.hrl b/lib/pman/src/pman_options.hrl deleted file mode 100644 index 047b9866c3..0000000000 --- a/lib/pman/src/pman_options.hrl +++ /dev/null @@ -1,34 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%% -%% An options-record contains the return data from the option dialog. -%% - --record(trace_options, {send=true, - treceive=true, - functions=true, - events=true, - to_file=false, - file="", - inherit_on_1st_spawn=false, - inherit_on_all_spawn=true, - inherit_on_1st_link=false, - inherit_on_all_link=true}). - diff --git a/lib/pman/src/pman_process.erl b/lib/pman/src/pman_process.erl deleted file mode 100644 index 276407a0f1..0000000000 --- a/lib/pman/src/pman_process.erl +++ /dev/null @@ -1,317 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%---------------------------------------------------------------------- -%% Purpose : A front-end to the erlang:process_info() functions, that -%% can handle processes on different nodes in a transparent -%% way. -%% Also some convenience functions for process info, as well -%% as some application specific functions for process -%% classification. -%%---------------------------------------------------------------------- - --module(pman_process). - --export([pinfo/1, pinfo/2, - r_processes/1, - function_info/1, - get_name/1, msg/1, reds/1, psize/1, - is_running/1, - is_pid_or_shell/1, - get_pid/1, - is_system_process/1, - is_hidden_by_module/2 - ]). - -%% List of registered name that will make a prodcess a "SYSTEM"-process --define(SYSTEM_REG_NAMES, - [ - %% kernel - application_controller, - erl_reply, - auth, - boot_server, - code_server, - disk_log_server, - disk_log_sup, - erl_prim_loader, - error_logger, - file_server_2, - fixtable_server, - global_group, - global_name_server, - heart, - inet_gethost_native, - inet_gethost_native_sup, - init, - kernel_config, - kernel_safe_sup, - kernel_sup, - net_kernel, - net_sup, - rex, - user, - os_server, - ddll_server, - erl_epmd, - inet_db, - pg2, - - %% stdlib - timer_server, - rsh_starter, - take_over_monitor, - pool_master, - dets, - - %% sasl - sasl_safe_sup, sasl_sup, alarm_handler, overload, - release_handler, - - %% gs - gs_frontend - ]). - -%% List of module:function/arity calls that will make the caller a -%% "SYSTEM"-process. -%% --define(SYSTEM_INIT_CALLS, - [{application_master,init,4}, - {application_master,start_it,4}, - {inet_tcp_dist,accept_loop,2}, - {net_kernel,ticker,2}, - {supervisor_bridge,user_sup,1}, - {user_drv,server,2}, - {group,server,3}, - {kernel_config,init,1}, - {inet_tcp_dist,do_accept,6}, - {inet_tcp_dist,do_setup,6}, - {pman_main,init,2}, - {pman_buf_printer,init,2}, - {pman_buf_converter,init,2}, - {pman_buf_buffer,init,1}, - {gstk,init,1}, - {gstk_port_handler,init,2}, - {gstk,worker_init,1} - ]). - -%% List of module:function/arity calls that will make the executing -%% process a "SYSTEM"-process. --define(SYSTEM_RUNNING_CALLS, - [{file_io_server,server_loop,1}, - {global,loop_the_locker,1}, - {global,collect_deletions,2}, - {global,loop_the_registrar,0}, - {gs_frontend,request,2}, - {shell,get_command1,5}, - {shell,eval_loop,3}, - {io,wait_io_mon_reply,2}, - {pman_module_info,loop,1}, - {pman_options,dialog,3}, - {pman_options,loop,1}, - {pman_relay_server,loop,1}, - {pman_shell,monitor_loop,1}, - {pman_shell,safe_loop,2} - ]). - -%% pinfo(Pid) -> [{Item, Info}] | undefined -%% pinfo(Pid, Item) -> Info | undefined -%% A version of process_info/1 that handles pid on remote nodes as well. -pinfo({_, Pid}) -> % Handle internal process format - pinfo(Pid); -pinfo(Pid) when node(Pid)==node() -> - process_info(Pid); -pinfo(Pid) -> - case rpc:call(node(Pid), erlang, process_info, [Pid]) of - {badrpc, _} -> undefined; - Res -> Res - end. - -pinfo({_, Pid}, Item) -> % Handle internal process format - pinfo(Pid, Item); -pinfo(Pid, Item) when node(Pid)==node() -> - case process_info(Pid, Item) of - {Item, Info} -> Info; - "" -> ""; % Item == registered_name - undefined -> undefined - end; -pinfo(Pid, Item) -> - case rpc:call(node(Pid), erlang, process_info, [Pid, Item]) of - {badrpc, _} -> undefined; - {Item, Info} -> Info; - "" -> ""; % Item == registered_name - undefined -> undefined - end. - -%% function_info(Pid) -> {M, F, A} -%% Returns the initial function for the specified process. -function_info(Pid) -> - case pinfo(Pid, current_function) of - {Module, Function, Arity} -> - {Module, Function, Arity}; - undefined -> - {unknown, unknown, 0} - end. - -%% r_processes(Node) -> Pids -%% Return a list of all processes at Node. -%% -%% If there is a problem with getting information from a remote -%% node, an empty list is returned. -r_processes(Node) -> - ordsets:from_list(r_processes1(Node)). - -r_processes1(Node) -> - if - Node==node() -> - processes(); - true -> - case rpc:block_call(Node, erlang, processes, []) of - {badrpc, _} -> - []; - Pids -> Pids - end - end. - -%% is_running(Object) -> {true, {shell,Pid}} | {true, Pid} | false -%% Object = {shell, Pid} | {link, Pid, ?} | Pid -is_running({shell,Pid}) -> - case is_running(Pid) of - {true,Pid} -> - {true,{shell,Pid}}; - false -> - false - end; -is_running({link,Pid,_}) -> - is_running(Pid); -is_running(Pid) -> - case is_pid_or_shell(Pid) of - true -> - case pinfo(Pid) of - undefined -> false; - _PInfo -> {true, Pid} - end; - false -> - false - end. - -%% is_pid_or_shell(Object) -> bool() -%% Checks if the argument is an pid or a tuple {shell, Pid}. -is_pid_or_shell({shell,Pid}) when is_pid(Pid) -> - true; -is_pid_or_shell(Pid) when is_pid(Pid) -> - true; -is_pid_or_shell(_) -> - false. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% get_pid/1 - returns the Pid of the object provided that -%% it is a proper process specifier. -%% -%% Arguments: -%% Object A process specifier -%% -%% Returns: -%% The Pid. - -get_pid({shell,Pid}) -> - Pid; -get_pid(Pid) when is_pid(Pid) -> - Pid. - -%% is_system_process(Pid) -> bool() -%% Returns true if Pid is a "system process". -%% This is a prototype version, use file configuration later. -is_system_process(Pid) -> - catch is_system_process2(Pid). - -is_system_process2(Pid) -> - - %% Test if the registered name is a system registered name - case pinfo(Pid, registered_name) of - undefined -> ignore; - "" -> ignore; - Name -> - case lists:member(Name, ?SYSTEM_REG_NAMES) of - true -> throw(true); - false -> ignore - end - end, - - %% Test if the start specification is a "system start function" - MFAi = case pinfo(Pid, initial_call) of - {proc_lib, init_p, 5} -> - proc_lib:translate_initial_call(Pid); % {M,F,A} | Fun - Res -> Res % {M,F,A} | undefined - end, - case lists:member(MFAi, ?SYSTEM_INIT_CALLS) of - true -> throw(true); - false -> ignore - end, - - %% Test if the running specification is a "system running function" - case pinfo(Pid, current_function) of - undefined -> false; - MFAc -> - lists:member(MFAc, ?SYSTEM_RUNNING_CALLS) - end. - -%% is_hidden_by_module(Pid, Modules) -> bool() -%% Checks if Pid is to be hidden because it executes code from one -%% of Modules -is_hidden_by_module(Pid, Modules) -> - case pinfo(Pid, current_function) of - {Module, _Function, _Arity} -> - lists:member(Module, Modules); - undefined -> false - end. - -%% get_name(Pid) -> Name | " " -%% Returns the registered name of a process, if any, or " " otherwise. -get_name(Pid) -> - case pinfo(Pid, registered_name) of - undefined -> " "; - "" -> " "; - Name -> Name - end. - -%% msg(Pid) -> int() -msg(Pid) -> - case pinfo(Pid, messages) of - undefined -> 0; - Msgs -> length(Msgs) - end. - -%% reds(Pid) -> int() -reds(Pid) -> - case pinfo(Pid, reductions) of - undefined -> 0; - Reds -> Reds - end. - -%% psize(Pid) -> int() -%% Returns the total process size (stack + heap). -psize(Pid) -> - Stack = pinfo(Pid, stack_size), - Heap = pinfo(Pid, heap_size), - case {Heap, Stack} of - {undefined, undefined} -> 0; - {undefined, Sz} -> Sz; - {Sz, undefined} -> Sz; - {Sz0, Sz1} -> Sz0 + Sz1 - end. diff --git a/lib/pman/src/pman_relay.erl b/lib/pman/src/pman_relay.erl deleted file mode 100644 index 289765492f..0000000000 --- a/lib/pman/src/pman_relay.erl +++ /dev/null @@ -1,127 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%---------------------------------------------------------------------- -%% Purpose : Interface function to relay calls (esp. trace calls) -%% to processes on other nodes. Some of the calls -%% are conditionally relayed. -%%---------------------------------------------------------------------- - --module(pman_relay). - -%%-compile(export_all). --export([start/1, - ok_to_trace/1, - trac/3]). - - --include("assert.hrl"). - -%% -------------------------------------------------------------- -%% DISTRIBUTION -%% -------------------------------------------------------------- -%% (???) Process dictionary alert!!! -%% -%% Since we are not allowed to do erlang:trace/3 on remote -%% processe we create a help process at the remote node to -%% do the job for us -%% --------------------------------------------------------------- - -start(P) when is_pid(P), node(P)/=node() -> - - %% Remote supervision, relaying necessary - - put(relay, spawn_link(node(P), pman_relay_server, init, [self()])); - - -start(_) -> - - %% Local supervision, no relaying - - ignore. - - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% ok_to_trace/1 - Tests wheter we can actually start tracing -%% a process. -%% -%% Arguments: -%% Pid Pid of the process to trace (on local or remote node) -%% -%% Returns -%% true If it is OK to trace the process -%% false If the process is already traced, or some other -%% condition prevents it from being traced. - -ok_to_trace(Pid) when node(Pid) == node()-> - - %% Local trace, no relaying - - case catch erlang:trace(Pid, false, [send]) of - 1 -> - true; - _Otherwise -> - false - end; -ok_to_trace(Pid) -> - - %% Remote trace, relaying necessary - - PidRelay = get(relay), - PidRelay ! {ok_to_trace, self(), Pid}, - receive - {ok_to_trace, PidRelay} -> - true; - {not_ok_to_trace, PidRelay} -> - false; - _Otherwise -> - ?ALWAYS_ASSERT("Unexpected message from relay process") - after - 5000 -> - false - end. - - - - - - -%% --------------------------------------------------------------- -%% Possibly send a request to do tracing to a remote node. -%% --------------------------------------------------------------- - -trac(Pid, How, Flag) when node(Pid) == node() -> - - %% Local trace, no relaying necessary - - - case catch erlang:trace(Pid, How, Flag) of - 1 -> ok; - _ -> pman_win:format("** Illegal trace request ** \n", []) - end; - -trac(Pid, How, Flag) -> - - - - %% Remote trace, relaying necessary - - get(relay) ! {self(), erlang, trace, [Pid, How, Flag]}. - diff --git a/lib/pman/src/pman_relay_server.erl b/lib/pman/src/pman_relay_server.erl deleted file mode 100644 index 2fcbb663bc..0000000000 --- a/lib/pman/src/pman_relay_server.erl +++ /dev/null @@ -1,57 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%%%---------------------------------------------------------------------- -%%% Purpose : Relay server code. -%%%---------------------------------------------------------------------- - --module(pman_relay_server). - -%%-compile(export_all). --export([init/1]). - - - -init(P) -> - process_flag(trap_exit, true), - - loop(P). - -loop(P) -> - receive - {ok_to_trace, PidSender, PidToTrace} -> - case catch erlang:trace(PidToTrace, false, [send]) of - 1 -> - PidSender ! {ok_to_trace, self()}, - loop(P); - _Otherwise -> - PidSender ! {not_ok_to_trace, self()} - end; - - {P, M,F,A} -> - case catch apply(M, F, A) of - 1 -> ok; - _Other -> P ! {print, "** Illegal trace request **\n", []} - end, - loop(P); - {'EXIT', P, _Reason} -> - exit(normal); - Other -> %% Here is the normal case for trace i/o - P ! Other, - loop(P) - end. diff --git a/lib/pman/src/pman_shell.erl b/lib/pman/src/pman_shell.erl deleted file mode 100644 index 2d2b8ce000..0000000000 --- a/lib/pman/src/pman_shell.erl +++ /dev/null @@ -1,827 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% -%% --------------------------------------------------------------- -%% Purpose: Create a trace window with process -%% information or a help window with information -%% about pman. -%% -%% --------------------------------------------------------------- - --module(pman_shell). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,start,0}}, - {nowarn_deprecated_function,{gs,start,1}}]). - -%% --------------------------------------------------------------- -%% The user interface exports -%% --------------------------------------------------------------- - --export([start_list/3, - start/2, - start/1, - find_shell/0]). - -%% --------------------------------------------------------------- -%% Includes -%% --------------------------------------------------------------- --include("assert.hrl"). --include("pman_options.hrl"). --include("pman_buf.hrl"). - - -%% --------------------------------------------------------------- -%% Internal record declarations -%% --------------------------------------------------------------- --record(pman_shell,{win, - editor, - pid, - buffer, - father, - shell_flag, % boolean, true for shell - trace_options, % Keeps trace options - db}). % DB for trace windows - - -%% -%% Constants -%% - --define (PMAN_DB, pman_db). % The pman db for trace windows - - - -%% --------------------------------------------------------------- -%% start/1, start/2 -%% -%% Starts a new trace shell process. -%% -%% start(Pid, DefaultOptions) -%% Pid The Pid of the process to trace -%% DefaultOptions The default trace options passed along from -%% the calling process. -%% -%% -%% start(Pid) -%% Pid The Pid of the process to trace -%% -%% start(Pid) starts without using any default options except for those -%% hardwired into the application. (See pman_options.hrl). -%% -%% -%% Return: Both functions return a process id -%% --------------------------------------------------------------- - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start_list/3 - Starts a trace window for each of the processes -%% in the list - -start_list(LIPid, Father, Options) -> - StartFun = fun(Pid) -> - start({Pid,Father}, Options) - end, - lists:foreach(StartFun, LIPid). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% start/1 - Starts a trace window for the specified Pid. -%% - -start(Pid) -> - start(Pid, #trace_options{}). - -%% -%% start/2 -%% - -start(Pid,DefaultOptions) when is_pid(Pid) -> - start({Pid,self()}, DefaultOptions); - -start(Var,DefaultOptions) -> - Db = db_start(), - spawn_link(fun() -> internal(Var, DefaultOptions, Db) end). - -%% --------------------------------------------------------------- -%% Initialize the enviroment for tracing/viewing Object -%% -%% Object can either be {shell,Shell} or a Pid. -%% The main loop is then called, which handles trace and event -%% requests. The window dies whenever Supervisor dies, while -%% message windows die whenever their parent dies. -%% --------------------------------------------------------------- - -internal({Object,Supervisor}, DefaultOptions, Db) -> - - %% (???) This call will cause minor problems when the window has been - %% invoked with proc/1 from for instance the shell. The shell - %% does not handle the exit-signals, so it will exit - %% when the window is exited. - - - %% First check that no other process is tracing the process we want - %% to trace. There is no well defined way of doing this, so the - %% code below is used instead. (???) - - pman_relay:start(Object), %(???) Uses proc. dict. - - Pid = pman_process:get_pid(Object), - - case pman_relay:ok_to_trace(Pid) of - - %% Tracing cannot be performed on the specified process - - false -> - T = lists:flatten(io_lib:format("ERROR: Process ~p is already being~ntraced by some other process.~nOr there may be a problem communicating with it.",[Pid])), - tool_utils:notify(gs:start(),T), - exit(quit); - - %% Tracing can be performed, go ahead! - - true -> - - case db_insert_key (Db, Pid) of - true -> - - link(Supervisor), - process_flag(trap_exit, true), - - case catch pman_win:window(Object) of - {'EXIT', badrpc} -> - T = "ERROR: Could not access node", - pman_win:dialog_window(gs:start(),T); - {'EXIT', dead} -> - T = "ERROR: The process is dead", - pman_win:dialog_window(gs:start(),T); - {'EXIT',_W} -> - T = "ERROR: Untracable process \n(unexpected EXIT reason)", - pman_win:dialog_window(gs:start(),T); - {Win, Ed} -> - init_monitor_loop(Win, - Ed, - Object, - Supervisor, - DefaultOptions, - Db) - end; - - false -> - T = lists:flatten(io_lib:format("ERROR: Process ~p is already being~ntraced by some other process.",[Pid])), - tool_utils:notify(gs:start(),T), - exit(quit); - - Error -> - Error - end - - end. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% init_monitor_loop/5 - -init_monitor_loop(Win,Ed,Object,Supervisor, DefaultOptions, Db) -> - - process_flag(priority, max), - - %% Most default options come from the main window. Now we must set - %% the default file name to something that is shows what process - %% is being traced. - - %% Find out an appropriate file name to write the trace output - %% to if the output should go to a file. - - FileName = case pman_process:is_pid_or_shell(Object) of - true -> - default_file_name(pman_process:get_pid(Object)); - false -> - "NoName" - end, - - Buff = pman_buf:start(Ed, FileName), - - case pman_process:is_running(Object) of - - %% We are tracing a shell process. - {true,{shell,Pid}} -> - safe_link(Pid), - NewDefaultOptions = - DefaultOptions#trace_options{file=FileName}, - perform_option_changes(Pid, NewDefaultOptions, Buff), - monitor_loop(#pman_shell{win=Win, editor=Ed, pid=Pid, buffer=Buff, - father = Supervisor, - shell_flag = true, - trace_options = NewDefaultOptions, - db = Db}); - - %% We are tracing an ordinary process. - {true,Pid} -> - safe_link(Pid), - NewDefaultOptions = - DefaultOptions#trace_options{file=FileName}, - perform_option_changes(Pid, NewDefaultOptions, Buff), - monitor_loop(#pman_shell{win=Win, editor=Ed, pid=Pid, buffer=Buff, - father = Supervisor, - shell_flag = false, - trace_options = NewDefaultOptions, - db = Db}); - - %% The process being traced is dead. - false -> - monitor_loop(#pman_shell{win=Win, editor=Ed, pid=nopid, - buffer=Buff, - father = Supervisor, - shell_flag = false, - trace_options= DefaultOptions, - db = Db}) - end. - -%% ---------------------------------------------------------------- -%% What is the Pid of the shell on our node? -%% ---------------------------------------------------------------- - -find_shell() -> - case shell:whereis_evaluator() of - undefined -> % noshell - noshell; - Pid -> - Pid - end. - -%% --------------------------------------------------------------- -%% Functions called in case of an exit message -%% --------------------------------------------------------------- - -clean_up(Win, Buff,Pid) -> - - %% (???) Unlinks the traced process, but since we are using a safe link - %% it is probably unnecessary. - - safe_unlink(Pid), - - %% Kill helper processes - - exit(Buff#buffer.converter, topquit), - exit(Buff#buffer.buffer, topquit), - - gs:destroy(Win). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% exit_cmd/3 - Takes care of the necessary details when -%% a linked process terminates. - - -exit_cmd(Pid,_Reason, State) -> - case State#pman_shell.shell_flag of - - %% This clause handles the case when a shell process dies. - %% Since it is restarted and the intention is to continue tracing - %% the restarted shell process, we need to handle it separately by - %% finding the new shell process. - true -> - - NewShell = find_shell(), - safe_link(NewShell), - pman_relay:start(NewShell), - - %% Update the window title with the new PID - Title = pman_win:title({shell, NewShell}), - Win = State#pman_shell.win, - gse:config(Win,[{title,Title}]), - - pman_relay:trac(NewShell, true, flags()), - - B = State#pman_shell.buffer, - B#buffer.converter!{raw,[{shell_died, Pid, NewShell}]}, - - - - State#pman_shell{pid=NewShell}; - - %% This clause handles the case when a traced process that is - %% not a shell process dies. - false -> - - B = State#pman_shell.buffer, - B#buffer.converter!{raw,[{died, Pid}]}, - - lists:foreach(fun(X) -> gse:disable(X) end, - ['Options', - 'Kill', - 'LinksMenu']), - State#pman_shell{pid=undefined} - end. - -flags() -> - [send, 'receive', call, procs, - set_on_spawn, set_on_first_spawn, set_on_link, set_on_first_link]. - -options_to_flaglists(Options) -> - AssocList = - [{Options#trace_options.send, send}, - {Options#trace_options.treceive, 'receive'}, - {Options#trace_options.inherit_on_1st_spawn, set_on_first_spawn}, - {Options#trace_options.inherit_on_all_spawn, set_on_spawn}, - {Options#trace_options.inherit_on_1st_link, set_on_first_link}, - {Options#trace_options.inherit_on_all_link, set_on_link}, - {Options#trace_options.events, procs}, - {Options#trace_options.functions,call}], - - TrueFun = fun ({Option,Flag}) -> - case Option of - true -> Flag; - _Otherwise -> false - end - end, - TrueFlags = mapfilter(TrueFun, AssocList), - - FalseFun = fun ({Option,Flag}) -> - case Option of - false -> Flag; - _Otherwise -> false - end - end, - FalseFlags = mapfilter(FalseFun, AssocList), - {TrueFlags,FalseFlags}. - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% mapfilter/2 - Combines the functionality of lists:map and -%% lists:filter. mapfilter applies the function argument to -%% each element in the list. All returned values that are -%% not false will occur in the resulting list. -%% -%% Arguments: -%% Fun A fun that takes one argument -%% List A list. Each element will become an argument to Fun. -%% -%% Returns: -%% A list of all results from the map operation that are not false. -%% - -mapfilter(Fun,[E|Es]) -> - case apply(Fun,[E]) of - false -> - mapfilter(Fun,Es); - Value -> [Value | mapfilter(Fun,Es)] - end; -mapfilter(_Fun, []) -> []. - - - -perform_option_changes(Pid,Options,Buffer) -> - - %% Notify the trace output functionality - %% if the destination is supposed to go to a file... - - case Options#trace_options.to_file of - true -> - FName = Options#trace_options.file, - Buffer#buffer.converter!{file,FName}; - false -> - done - end, - - %%...then set the trace flags of the traced process - - {OnFlags, OffFlags} = options_to_flaglists(Options), - case catch begin - - %% (???) Note that the following calls cannot actually fail - %% This may be a problem. And the catch appears unnecessary - %% However, it may become necessary to let the - %% pman_relay:trac/3 function retrun appropriate values. - pman_relay:trac(Pid,true, OnFlags), - pman_relay:trac(Pid,false, OffFlags) - end of - true -> - ok; - _ -> pman_win:format("** Illegal trace request ** \n", []) - end. - - - - - - -%% --------------------------------------------------------------- -%% Take care of the command executed by the user. - -execute_cmd(Cmd,Shell_data) -> - Window = Shell_data#pman_shell.win, - Editor = Shell_data#pman_shell.editor, - Shell = Shell_data#pman_shell.pid, - Buffer = Shell_data#pman_shell.buffer, - TraceOptions = Shell_data#pman_shell.trace_options, - - case Cmd of - 'Close' -> - db_delete_key (Shell_data#pman_shell.db, Shell_data#pman_shell.pid), - clean_up(Window, Buffer, Shell), - exit(quit); - 'Destroy' -> - db_delete_key (Shell_data#pman_shell.db, Shell_data#pman_shell.pid), - exit(Buffer#buffer.buffer,topquit), - safe_unlink(Shell), - exit(Buffer#buffer.converter,topquit), - exit(Buffer#buffer.buffer,topquit), - exit(quit); - - 'Clear' when is_pid(Shell) -> - New_buffer = pman_buf:clear(Buffer,pman_win:display(Shell), - TraceOptions#trace_options.file), - Shell_data#pman_shell{buffer = New_buffer}; - 'Save buffer' -> - DefaultFile = "Pman_buffer." ++ default_file_name(Shell), - Result = tool_utils:file_dialog([{type,save}, - {file,DefaultFile}]), - case Result of - {ok, UserFile, _State} -> - Buffer#buffer.buffer!{save_buffer,UserFile}; - {error,_Reason} -> - true - end, - Shell_data; - 'Help' -> - HelpFile = filename:join([code:lib_dir(pman), "doc", "html", "index.html"]), - tool_utils:open_help(gs:start([{kernel, true}]), HelpFile), - Shell_data; - 'Kill' when is_pid(Shell) -> - exit(Buffer#buffer.converter,killed), - exit(Buffer#buffer.buffer,killed), - lists:foreach(fun(X) -> gse:disable(X) end, - ['TraceMenu', - 'Clear']), - catch exit(Shell, kill), - Shell_data#pman_shell{pid = undefined}; - 'All Links' when is_pid(Shell) -> - LIPid = pman_process:pinfo(Shell, links), - ?ALWAYS_ASSERT("Just a brutal test"), - start_list(LIPid, - Shell_data#pman_shell.father, - Shell_data#pman_shell.trace_options), - Shell_data; - 'Module' when is_pid(Shell) -> - {ModuleName,_,_} = pman_process:function_info(Shell), - pman_module_info:start(ModuleName), - Shell_data; - 'Options' when is_pid(Shell) -> - case pman_options:dialog(Window, - "Trace Options for Process", - TraceOptions) of - {error, _Reason} -> - Shell_data; - Options -> - perform_option_changes(Shell, Options, Buffer), - Shell_data#pman_shell{trace_options=Options} - end; - - {trac,Choice,Bool} when is_pid(Shell) -> - pman_relay:trac(Shell, Bool, [Choice]), - Shell_data; - - - {configure,{X,Y}} -> - configure (Editor, X, Y), - Shell_data; - - Pid when is_pid(Pid) -> - pman_shell:start({Pid, Shell_data#pman_shell.father}, - Shell_data#pman_shell.trace_options), - Shell_data; - _Other -> - ?ALWAYS_ASSERT("Received unexpected event"), - Shell_data - end. - - -default_file_name(Shell) when is_pid(Shell) -> - [A,B,C] = string:tokens(pid_to_list(Shell),[$.,$<,$>]), - "pman_trace." ++ A ++ "_" ++ B ++ "_" ++ C; -default_file_name(_OTHER) -> - "shell". - - - - - -%% Key accellerators - -key(e) -> 'Clear'; -key(s) -> 'Save buffer'; -key(c) -> 'Close'; -key(a) -> 'All'; -key(r) -> 'Reset'; -key(m) -> 'Module'; -key(l) -> 'All Links'; -key(k) -> 'Kill'; -key(h) -> 'Help'; -key(z) -> 'Close'; -key(O) -> O. - - - -%% --------------------------------------------------------------- -%% The main loop takes care of data coming in from the traces, as -%% well as exit signals from proceses we are monitoring. Events -%% caused by the user or window manager are also handled here. -%% --------------------------------------------------------------- - - -monitor_loop(Shell_data) -> - receive - - %% WM destroy - {gs,_Window,destroy,[],[]} -> %%Avoid links menus - execute_cmd('Destroy', Shell_data); - - - %% Handle EXIT signal from parent process - {'EXIT', _Pid, topquit} -> - clean_up(Shell_data#pman_shell.win, - Shell_data#pman_shell.buffer, - Shell_data#pman_shell.pid), - exit(topquit); - - %% (???) Ignore "stray" EXIT signal from converter - {'EXIT', _Pid, win_killed} -> - monitor_loop(Shell_data); - - - %% Handle EXIT signal from safely linked Pid - %% This is received when a traced process dies. - {'SAFE_EXIT', Pid, Reason} -> - New_Shell_data = exit_cmd(Pid, Reason,Shell_data ), - monitor_loop(New_Shell_data); - - - %% Handle EXIT signal from processes where we expect - %% some EXIT signals, such as the file_dialog opened, and possibly - %% others. - - {'EXIT', _Pid, _Reason} -> - monitor_loop(Shell_data); - - %% Handle incoming trace messages - Message when is_tuple(Message) , element(1,Message) == trace-> - {L, Suspended} = collect_tracs([Message]), - Buffer = Shell_data#pman_shell.buffer, - Buffer#buffer.converter!{raw,L}, - lists:foreach(fun(P) -> erlang:resume_process(P) end, Suspended), - monitor_loop(Shell_data); - - - %% All other messages on the form {...,...,...} - Message when is_tuple(Message) -> - do_link_stuff(Shell_data), - - New_Shell_data = process_gs_event(Message,Shell_data), - monitor_loop(New_Shell_data); - - %% Catch all for unexpected messages - _Anything -> - ?ALWAYS_ASSERT("Received unexpected event"), - monitor_loop(Shell_data) - - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% process_event/1 - Error handling wrapper for gs_cmd - -process_gs_event(Message, Shell_data) -> - case catch gs_cmd(Message,Shell_data) of - - %% - %% Error exits from gs_cmd - - {'EXIT', badrpc} -> - Text = "\nERROR: Could not access node", - pman_win:msg_win(Text), - Shell_data; - {'EXIT', dead} -> - Text = "\nERROR: The process is dead", - pman_win:msg_win(Text), - Shell_data; - - %% A controlled application initiated termination - {'EXIT', quit} -> - db_delete_key (Shell_data#pman_shell.db, Shell_data#pman_shell.pid), - exit(quit); - - - {'EXIT',Reason} -> - db_delete_key (Shell_data#pman_shell.db, Shell_data#pman_shell.pid), - io:format("Debug info, Reason: ~p~n",[Reason]), - ?ALWAYS_ASSERT("Unexpected EXIT reason"), - exit({unexpected_EXIT_reason,Reason}); - - %% - %% "Proper" exits from gs_cmd - - New_Shell_data -> - New_Shell_data - end. - - - -gs_cmd(Cmd, Shell_data) -> - case Cmd of - - %%User Command - {gs, Command, click, _Data, _Args} -> - execute_cmd(Command,Shell_data); - - %%Key accellerator - {gs,_Window,keypress,_D,[Key,_,0,1]} -> - execute_cmd(key(Key),Shell_data); - - %%Window Resize - {gs,_Window,configure,_,[X,Y|_]} -> - execute_cmd({configure,{X,Y}},Shell_data); - - - {gs, _Object, _Event, _Data, _Args} -> - ?ALWAYS_ASSERT("Unhandled gs event"), - Shell_data - - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% (???) do_link_stuff/1 - I have no clue. -%% - -do_link_stuff(Shell_data) -> - - %% This appears to be code to execute for adding - %% dynamic links menus. - - case Shell_data#pman_shell.pid of - undefined -> - ok; - Pid -> - case pman_process:pinfo(Pid, links) of - Links when is_list(Links) -> - pman_win:links_menus(Links); - undefined -> - ok - end - end. - - -%% (???) Process dictionary used to safe Pid-Pid pairs. -%% -%% safe_link/1 - Spawns a process, that links to the Pid, and sends -%% a message to the caller when the linked process dies. -%% -%% Since we (think we) need to link to the traced process, we want -%% to do it in a way that has the smallest possible risk. The process -%% that links to the Pid is small and simple, which is safer than if -%% the calling process would link directly to the Pid. - -safe_link(Pid) when is_pid(Pid) -> - Self = self(), - PidSafe = spawn_link(fun() -> safe_init(Self, Pid) end), - put(Pid, PidSafe). - - -%% safe_unlink/1 - Removes a safe link -%% - -safe_unlink(Pid) when is_pid(Pid) -> - PidSafe = get(Pid), - PidSafe ! {unlink, self(), Pid}, - erase(Pid); - -safe_unlink(_Anything)-> - true. - -%% safe_init/2 - Initialize a simple receive loop that controls safe linking -%% to application processes. -%% -safe_init(Caller, Pid) -> - - process_flag(trap_exit, true), - link(Pid), - - safe_loop(Caller, Pid). - - -%% safe_loop/2 - Simply waits for an exit signal from the linked Pid, -%% all other messages are disregarded. -%% - - -safe_loop(Caller, Pid) -> - receive - %% Linked process dies - {'EXIT' , Pid, Reason} -> - Caller ! {'SAFE_EXIT', Pid, Reason}; - - %% Caller dies - {'EXIT', Caller, _Reason} -> - unlink(Pid); - - - %% Unlink request - {unlink, Caller, Pid} -> - unlink(Pid); - - %% Ignore everything else - _Anything -> - safe_loop(Caller, Pid) - end. - - - -configure (Editor, W, H) -> - gs:config (Editor, [{width, W - 3}, - {height, H - 40}]). - - - - -%%% The DB is used to avoid multiple trace windows -%%% of the same process. - -%%% db_start /0 -%%% - -db_start() -> - case ets:info(?PMAN_DB) of - undefined -> ets:new(?PMAN_DB, [public, named_table]); - _ -> ?PMAN_DB - end. - - - -%%% db_insert_key /2 -%%% - -db_insert_key (Db, Pid) -> - case ets:lookup (Db, Pid) of - [] -> - case catch ets:insert (Db, {Pid}) of - true -> - true; - - _Error -> - error_insert_db - end; - - _already_exists -> - false - end. - - - -%%% db_delete_key /2 -%%% - -db_delete_key (Db, Pid) -> - ets:delete (Db, Pid). - - -%% Function to collect all trace messages in the receive queue. -%% Returns: {Messages,SuspendedProcesses} - -collect_tracs(Ack) -> collect_tracs(Ack, ordsets:new()). - -collect_tracs(Ack, Procs) -> - receive - Trac when is_tuple(Trac), element(1, Trac) == trace -> - P = suspend(Trac, Procs), - collect_tracs([Trac | Ack], P) - after 0 -> - {lists:reverse(Ack), ordsets:to_list(Procs)} - end. - -suspend({trace,From,call,_Func}, Suspended) when node(From) == node() -> - case ordsets:is_element(From, Suspended) of - true -> Suspended; - false -> - case (catch erlang:suspend_process(From)) of - true -> - ordsets:add_element(From, Suspended); - _ -> - Suspended - end - end; -suspend(_Other, Suspended) -> Suspended. diff --git a/lib/pman/src/pman_tool.erl b/lib/pman/src/pman_tool.erl deleted file mode 100644 index 36382745af..0000000000 --- a/lib/pman/src/pman_tool.erl +++ /dev/null @@ -1,146 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% --module(pman_tool). --compile([{nowarn_deprecated_function,{gs,read,2}}]). - -%% Listbox selection window - --export([select/3]). - --record(state, {topwin, - frame, - listbox}). - -%% Constants --define(WIN_WIDTH, 350). --define(WIN_HEIGHT, 350). - -select(Win, Title, Choices) -> - Self = self(), - Pid = spawn_link(fun() -> init(Self, Win, Title, Choices) end), - receive - {Pid, Result} -> - Result - end. - -init(Pid, Win, Title, Choices) -> - - %% Create window - State = create_window(Win, Title, Choices), - - gse:map(State#state.topwin), - - %% enter event loop - loop(Pid, Choices, State). - -loop(Pid, Choices, State) -> - receive - {gs, _, destroy, _Data, _Args} -> - Pid ! {self(), cancelled}; - {gs, _, configure, _Data, [W, H|_]} -> - gse:resize(State#state.frame, W, H), - loop(Pid, Choices, State); - {gs, _, click, ok, _Args} -> - case gs:read(State#state.listbox, selection) of - [] -> - Pid ! {self(), cancelled}; - Indices -> - Selection = selection(Indices, Choices), - Pid ! {self(), Selection} - end; - {gs, _, click, cancel, _Args} -> - Pid ! {self(), cancelled}; - {gs, Obj, doubleclick, _Data, _Args} -> - self() ! {gs, Obj, click, ok, []}, - loop(Pid, Choices, State); - _GSEvent -> - loop(Pid, Choices, State) - end. - -selection(Indices, Choices) -> - selection(0, Indices, Choices). - -selection(I, [I|Is], [{Val,_Str}|Vals]) -> - [Val | selection(I+1, Is, Vals)]; -selection(I, [I|Is], [Val|Vals]) -> - [Val | selection(I+1, Is, Vals)]; -selection(_I, [], _Vals) -> - []; -selection(I, Is, [_Val|Vals]) -> - selection(I+1, Is, Vals). - -create_window(Win, Title, Choices) -> - Font = pman_win:font(Win), - - %% Top window and a frame that covers it entirely, to allow - %% usage of the packer for geometry management. - Topwin = gse:window(Win, [{width, ?WIN_WIDTH}, - {height,?WIN_HEIGHT}, - {configure, true}, - {title, Title}]), - Frame = gse:frame(Topwin, [{packer_x,[{stretch,1}, - {stretch,1}]}, - {packer_y,[{stretch,1}, - {stretch,5}, - {stretch,1}]}]), - - %% Caption above the list of items - CaptionTxt = "Select one or more of the following:", - gse:label(Frame, [{pack_x,{1,2}}, - {pack_y,{1,1}}, - {label,{text,CaptionTxt}}, {font,Font}]), - - %% List of selectable items - Listbox = gse:listbox(Frame, [{pack_x,{1,2}}, - {pack_y,{2,2}}, - {selectmode,multiple}, - {doubleclick, true}, - {font,Font}, - {items, str_choices(Choices)}]), - - %% OK and Cancel buttons in a separate frame. - F13 = gse:frame(Frame, [{bw,1}, - {pack_xy,{{1,2},3}}, - {packer_x,[{stretch,1}, - {fixed, 60}, - {stretch,1}, - {fixed, 60}, - {stretch,1}]}, - {packer_y,[{stretch,1}, - {fixed, 30}, - {stretch,1}]}]), - - gse:button(F13, [{pack_xy,{2,2}}, - {label,{text,"OK"}}, {font,Font}, - {data,ok}]), - gse:button(F13, [{pack_xy,{4,2}}, - {label,{text,"Cancel"}}, {font,Font}, - {data,cancel}]), - - gse:resize(Frame, ?WIN_WIDTH, ?WIN_HEIGHT), - #state{topwin=Topwin, frame=Frame, listbox=Listbox}. - -str_choices(Choices) -> - lists:map( - fun({Val, Str}) -> - lists:flatten(io_lib:format("~p: ~s", [Val, Str])); - (Term) -> - lists:flatten(io_lib:format("~p", [Term])) - end, - Choices). diff --git a/lib/pman/src/pman_win.erl b/lib/pman/src/pman_win.erl deleted file mode 100644 index aec7dc4412..0000000000 --- a/lib/pman/src/pman_win.erl +++ /dev/null @@ -1,677 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2013. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% -%% ------------------------------------------------------------ -%% Purpose: window management and the gs interface -%% ------------------------------------------------------------ - --module(pman_win). --compile([{nowarn_deprecated_function,{gs,button,2}}, - {nowarn_deprecated_function,{gs,canvas,2}}, - {nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,create,3}}, - {nowarn_deprecated_function,{gs,create,4}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,read,2}}, - {nowarn_deprecated_function,{gs,start,1}}, - {nowarn_deprecated_function,{gs,text,2}}, - {nowarn_deprecated_function,{gs,window,2}}]). - -%% --------------------------------------------------------------- -%% The user interface exports -%% --------------------------------------------------------------- - --export([pman_window/3, window/1, module_data/1, display/1, format/2, - dialog_window/2, configeditor/2, configwin/3, - update/1, update/3, - msg_win/1, title/1, - remove_menu/1, add_menu/3, - change_colour/3, links_menus/1, calc_columnwidths/1]). --export([font/0, font/1]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Constants -%% --include("pman_win.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% pman_window/3 - Create a GS window and components for the -%% Pman overview window, the main window. -%% -%% Arguments: -%% Size number of processes -%% HiddenModules list of modules -%% Nodes list of supervised nodes -%% -%% Return: -%% {Win, Grid, Frame, Procnum, W, H} where -%% Win The GS top window -%% Grid The GS grid -%% Procnum Number of displayed processes -%% - -pman_window(Size, _HiddenModules, Nodes) -> - GS = gs:start([{kernel,true}]), - Font = font(GS), - Win_Options = [{title, lists:concat(["Pman: Overview on ",node()])}, - {width, ?WIN_WIDTH}, {height, ?WIN_HEIGHT}, - {destroy, true}, - {keypress,true}], - Win = gs:create(window, GS, Win_Options), - - %% Menu bar - MenuBar = gs:create(menubar, Win, []), - MBFile = gs:create(menubutton, MenuBar, [{label,{text," File "}}, - {font,Font}, - {underline,1}]), - MBView = gs:create(menubutton, MenuBar, [{label,{text, " View "}}, - {font,Font}, - {underline,1}]), - MBTrace = gs:create(menubutton, MenuBar, [{label,{text, " Trace "}}, - {font,Font}, - {underline,1}]), - MBHelp = gs:create(menubutton, MenuBar, [{label, {text, " Help "}}, - {font,Font}, - {side,right}, - {underline,1}]), - - %% Addition of a menu for distribution - add_node_menu(MenuBar, Nodes, Font), - - %% All menu buttons - MenuFile = gs:create(menu, MBFile, []), - MenuView = gs:create(menu, MBView, []), - MenuTrace = gs:create(menu, MBTrace, []), - MenuHelp = gs:create(menu, MBHelp, []), - - %% File menu - gse:named_menuitem('Default Options', MenuFile, - [{label,{text,"Options..."}}, {font,Font}, - {underline,0}]), - gse:named_menuitem('Save Options',MenuFile, - [{label,{text,"Save Options"}}, {font,Font}]), - gse:named_menuitem('Exit', MenuFile, - [{label,{text,"Exit"}}, {font,Font}, - {underline,0}]), - - %% View menu - gse:named_menuitem('Hide All',MenuView, - [{label, {text, "Hide All Processes"}}, - {font,Font}, - {underline,1}]), - - gse:named_menuitem('Hide Modules', MenuView, - [{label, {text, "Hide Modules..."}}, - {font,Font}, - {underline,8}]), - - gse:named_menuitem('Hide Selected Process', MenuView, - [{label, {text, "Hide Selected Process"}}, - {font,Font}, - {underline,2}]), - - gse:named_menuitem('Module',MenuView, - [{label, {text, "Module Info..."}}, {font,Font}, - {underline,7}]), - - gse:named_menuitem('Refresh', MenuView, - [{label, {text, "Refresh"}}, {font,Font}, - {underline,0}]), - - gse:named_menuitem('Show All',MenuView, - [{label, {text, "Show All Processes"}}, - {font,Font}]), - - gse:named_menuitem('Show Selected',MenuView, - [{label, {text, "Show Processes..."}}, - {font,Font}]), - - %% Trace menu - gs:create(menuitem, 'Kill', MenuTrace, [{label,{text, "Kill"}}, - {font,Font}, - {underline,0}]), - - gs:create(menuitem, 'Trace Process', MenuTrace, - [{label, {text, "Trace Selected Process"}}, {font,Font}, - {underline,0}]), - - gs:create(menuitem,'Trace Shell', MenuTrace, - [{label, {text,"Shell Process"}}, {font,Font}, - {underline,0}]), - - %% Help menu - gs:create(menuitem,'Help', MenuHelp, [{label, {text, "Help" }}, - {font,Font}, - {underline,0}]), - - %% Window contents - - %% Geometry managing frame - Frame = gse:frame(Win, [{y,?MENU_HEIGHT}, - {packer_x,[{stretch, 1}]}, - {packer_y,[{stretch,10}, - {fixed,?CHECKBAR_HEIGHT}]}]), - - - - %% Grid - Grid_Options = [ - {pack_x,1}, {pack_y,1}, - {fg,black}, - {vscroll,right},{hscroll,bottom}, - calc_columnwidths(739), - {rows, {1,Size}}], - Grid = gse:grid(Frame,Grid_Options), - - - %% Checkbutton bar at the bottom of the window - - CheckBar = gse:frame(Frame, [{pack_x,1}, - {pack_y,2}, - {packer_x,[{stretch, 2, 100,300}, - {stretch, 2, 100,300}, - {stretch,1}, - {stretch, 2,100,300}]}, - {packer_y,[{stretch,1}]}]), - gse:named_checkbutton('Hide System',CheckBar, - [{pack_xy,{1,1}}, - {justify, left}, - {align,w}, - {width, 200}, - {font, Font}, - {label, {text, "Hide System Processes" }}]), - - gse:named_checkbutton('Auto Hide New',CheckBar, - [{pack_xy,{2,1}}, - {width, 200}, - {justify, left}, - {align,w}, - {font, Font}, - {label, {text, "Auto-Hide New" }}]), - - gse:named_label('Number Hidden',CheckBar, - [{pack_xy,{4,1}}, - {justify, left}, - {align,w}, - {width, 200}, - {font, Font}, - {label, {text, ?CPIDHIDDENTEXT }}]), - - %% Finalize it! - gse:map(Win), - gse:config(Win,[raise]), - gse:config(Win,[{configure,true}]), - - - {Win, Grid, Frame, length(processes())+1, ?WIN_WIDTH, ?WIN_HEIGHT}. - - -%% Calculate columnwidths in respect to the size of the window. - -calc_columnwidths(Width) -> - if - Width =< 739 -> - {columnwidths,[75,215,146,90,105,105]}; - true -> - S = (Width - 75)/(215+146+90+105+105), - {columnwidths,[75,round(215*S),round(146*S),round(90*S), - round(105*S),round(105*S)]} - end. - -%% --------------------------------------------------------------- -%% Create a trace window -%% -%% Process, a process id or an atom -%% -%% Return: A window and a editor -%% --------------------------------------------------------------- - - -window(Process) -> - GS = gs:start([{kernel,true}]), - Font = font(GS), - Win_Options = [{title,title(Process)}, {width,550}, {keypress,true}, - {configure,true}, - {destroy,true},{height, 400}], - Win = gs:create(window,GS,Win_Options), - - MenuBar = gs:create(menubar, Win, []), - - %% File menu - MBFile = gs:create(menubutton,MenuBar,[{label,{text," File "}}, - {font,Font}, - {underline, 1}]), - MenuFile = gs:create(menu, MBFile, []), - make_menus(pman_process:is_running(Process), MenuBar, MenuFile, - Font), - - gse:named_menuitem('Save buffer',MenuFile, - [{label,{text, "Save buffer..."}}, - {font,Font}, - {underline,0}]), - gse:named_menuitem('Close',MenuFile, - [{label, {text, "Close"}}, - {font,Font}, - {underline,0}]), - - - Editor = gs:create(editor,Win,[{x,3}, {y,40}, - {width,546}, {height,348}, - {font,Font}]), - gs:config(Editor, [{keypress, true},{insert, {'end', display(Process)}}]), - gs:config(Editor, [{enable, false},{vscroll, right}, {hscroll, bottom}, - {wrap,none}]), - gs:config(Win, [{map, true}]), - {Win, Editor}. - -%% --------------------------------------------------------------------- -%% Menu Help Fuctions -%% --------------------------------------------------------------------- - - -links_menus(Links) -> - gs:destroy('Links'), - gs:create(menu,'Links','LinksMenu',[]), - Flag = case links_menus(Links,[]) of - [] -> false; - Pids -> - add_menu('Links', Pids, "Trace"), - true - end, - gse:config('LinksMenu',[{enable,Flag}]). - -links_menus([],Pids) -> Pids; -links_menus([Pid|Links],Pids) when is_pid(Pid) -> - links_menus(Links,[Pid|Pids]); -links_menus([_Port|Links],Pids) -> - links_menus(Links,Pids). - - -%% Create the node menu. - -add_node_menu(MenuBar, Nodes, Font) -> - MBNode = gs:create(menubutton, MenuBar, [{label,{text, " Nodes "}}, - {font,Font}, - {underline, 1}]), - gs:create(menu, node, MBNode, []), - add_menu(node, Nodes, "Show", Font), - gse:disable(node()). - - -%% --------------------------------------------------------------------- -%% Add Menus in the list under Menu menuitem. - -add_menu(Menu, Names, Tag) -> - add_menu(Menu, Names, Tag, font()). - -add_menu(_Menu, [], _Tag, _Font) -> ok; -add_menu(Menu, [Name|Names], Tag, Font) -> - Title = io_lib:format("~s ~p",[Tag, Name]), - gs:create(menuitem,Name,Menu,[{label,{text,Title}}, - {font,Font}, - {data,{Menu,Name}}]), - add_menu(Menu, Names, Tag, Font). - -%% --------------------------------------------------------------------- -%% Remove a specific menu item, or a whole menu, or a list of both. -%% - -remove_menu(List) when is_list(List)-> - lists:foreach(fun(X) -> gs:destroy(X) end, List); - -remove_menu(Object) -> - gse:destroy(Object). - - -%% --------------------------------------------------------------------- -%% If the trace window opened is supposed to trace a real pid, let us -%% add the trace menu, and other items specific to tracing. If not, -%% the only menus available are the ones in the default defined in -%% window(Pid). - -make_menus(false, _, _, _) -> ok; -make_menus({true,Pid}, MenuBar, MenuFile, Font) -> - MBView = gs:create(menubutton,'ViewMenu',MenuBar, - [{underline,1}, - {label,{text," View "}}, {font,Font}, - {side,left}]), - MenuView = gs:create(menu, MBView, []), - - MBTrace = gs:create(menubutton,'TraceMenu',MenuBar, - [{underline,1}, - {label,{text," Trace "}}, {font,Font}, - {side,left}]), - MenuTrace = gs:create(menu, MBTrace, []), - - - MBHelp = gs:create(menubutton,'HelpMenu',MenuBar, - [{underline,1}, - {label,{text," Help "}}, {font,Font}, - {side,right}]), - MenuHelp = gs:create(menu, MBHelp, []), - - %% File menu - gse:named_menuitem('Options', MenuFile, - [{label, {text, "Options..."}}, {font,Font}, - {underline,0}]), - - %% Trace menu - gse:named_menuitem('All Links', MenuTrace, - [{label, {text, "All Linked Processes"}}, - {font,Font}, - {underline,0}]), - gse:named_menuitem('LinksMenu', MenuTrace, - [{underline,0}, - {label, {text, "Linked Process..."}}, - {font,Font}, - {itemtype, cascade}, - {enable,false}]), - gs:create(menu,'Links','LinksMenu',[]), - case pman_process:pinfo(Pid, links) of - Links when is_list(Links) -> - links_menus(Links); - undefined -> - lists:foreach(fun(X) -> gse:disable(X) end,['LinksMenu']) - end, - gse:named_menuitem('Kill', MenuTrace, - [{label, {text, "Kill"}}, {font,Font}, - {underline,0}]), - - %% View menu - gse:named_menuitem('Clear', MenuView, - [{label, {text, "Clear buffer"}}, {font,Font}, - {underline,0}]), - - gse:named_menuitem('Module', MenuView, - [{label, {text, "Module Info"}}, {font,Font}, - {underline,0}]), - - %% Help menu - gse:named_menuitem('Help', MenuHelp, - [{label, {text, "Help"}}, {font,Font}, - {underline,0}]). - -%% --------------------------------------------------------------------- -%% Configurate the actual editor -%% -%% Editor, actual editor -%% Options, actual options for the editor -%% -%% Return: A configurated editor with the actual options -%% --------------------------------------------------------------------- - -configeditor(Editor, Options) -> - gs:config(Editor, Options). - -%% --------------------------------------------------------------------- -%% Configure the actual window after it has been resized. -%% --------------------------------------------------------------------- - -configwin(Object, W, H) -> - Dx = abs(W - gs:read(Object,width) - 4), - Dy = abs(H - gs:read(Object,height) - 42), - if - Dx + Dy =/= 0 -> - gs:config(Object,[{width,W - 4}]); - true -> ok - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% update/1, 3 -update(NoOfHidden) -> - Str = lists:flatten(io_lib:format(?CPIDHIDDENTEXT++"~w", - [NoOfHidden])), - gse:config('Number Hidden', [{label, {text,Str}}]). - -update(Grid, ShowInfoR, NoOfHidden) -> - - %% We reverse the list because we want the processes to appear with - %% the newest (=highest) pid first in the list. - ShowInfo = lists:reverse(ShowInfoR), - - %% Set the length of the grid - CGridline = length(ShowInfo) + 1, - gs:config(Grid, [{rows, {1,CGridline}}]), - - %% Add the header line - add_gridline(Grid, - 1, - {'Pid','Current Function','Name','Msgs','Reds','Size'}, - []), - - update(NoOfHidden), - - %% Recurse through the ordset of pids - update_r(Grid, ShowInfo, 2). - -update_r(Grid, [], Row) -> - delete_gridlines(Grid, Row); -update_r(Grid, [{Pid,Func,Name,Msgs,Reds,Psize}|ShowInfo], Row) -> - {M, F, A} = Func, - FuncText = lists:flatten(io_lib:format("~w:~w/~w", [M, F, A])), - add_gridline(Grid, - Row, - {Pid, FuncText, Name, Msgs, Reds, Psize}, - [{data,{pidfunc,Pid,Func}}]), - update_r(Grid, ShowInfo, Row+1). - -add_gridline(Grid, Row, Tuple, LIOptSpec) -> - {Pid, FuncText, Name, Msgs, Reds, Psize} = Tuple, - LIOpt = [{click,true}, - {doubleclick,true}, - {fg, colour(Row)}, - {text,{1,Pid}}, - {text,{2,FuncText}}, - {text,{3,Name}}, - {text,{4,Msgs}}, - {text,{5,Reds}}, - {text,{6,Psize}} |LIOptSpec], - case gs:read(Grid, {obj_at_row, Row}) of - undefined -> - gse:gridline(Grid,[{row, Row}|LIOpt]); - GridLine -> - gs:config(GridLine,LIOpt) - end. - -delete_gridlines(Grid, Row) -> - case gs:read(Grid, {obj_at_row, Row}) of - undefined -> - ok; - GridLine -> - gs:destroy(GridLine), - delete_gridlines(Grid, Row+1) - end. - -colour(1) -> - ?HEADER_COLOUR; -colour(_Row) -> - ?UNSELECTED_COLOUR. - -%% Interchange colours between two rows -change_colour(Grid, Row, Row) -> - Gitem = gs:read(Grid, {obj_at_row,Row}), - gs:config(Gitem, {fg,?SELECTED_COLOUR}); -change_colour(Grid, From, To) -> - Gitem_to = gs:read(Grid, {obj_at_row,To}), - Gitem_fr = gs:read(Grid, {obj_at_row,From}), - gs:config(Gitem_to, {fg,?SELECTED_COLOUR}), - gs:config(Gitem_fr, {fg,colour(From)}). - -%% -------------------------------------------------------------- -%% Create a title for the window -%% Return: the title -%% -------------------------------------------------------------- - -title({module, Mod}) -> - lists:flatten([io_lib:format("Pman: Module info ~p", [Mod])]); - -title({shell, Sh} ) -> - lists:flatten([io_lib:format("Pman: Shell process ~p on ~p", - [Sh,node(Sh)])]); - -title(Sh) -> - lists:flatten([io_lib:format("Pman: Process ~p on ~p", - [Sh, node(Sh)]),name(Sh)]). -name(Pid) -> - case pman_process:pinfo(Pid, registered_name) of - undefined -> ""; - Name -> - lists:flatten([io_lib:format("[~p]", [Name])]) - end. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% module_data/1 - %% Returns the module information for a -%% module, on a format suitable to insert into a GS editor. -%% -%% Arguments: -%% ModuleName The module -%% -%% Returns: -%% A string with module information. -%% - -module_data(ModuleName) -> - vformat("", catch apply(ModuleName, module_info, [])). - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% display/1 - -%% - -display({_,Pid,_}) -> display(Pid); -display({_,Pid}) -> display(Pid); -display(Pid) when is_pid(Pid) -> - case pman_process:pinfo(Pid) of - undefined -> - format('Process is dead~n',[]); - Other -> - proc_format(Other) - end. - -%% -------------------------------------------------------------- -%% Format functions for the shell and help window. -%% -------------------------------------------------------------- - -vformat(Pad, {M,F,A}) when is_atom(F) -> - Pad2 = lists:append(Pad,mkpad(io_lib:format("~w:~w",[M,F]))), - lists:flatten([format("~p:~p", [M,F]),argformat(Pad2, A)]); - -vformat(Pad, [H|T]) -> - kvformat(Pad, [H|T],"["); - -vformat(_Pad, X) -> format("~p~n", [X]). - -format(Format) -> format(Format, []). - -format(Format, Args) -> - io_lib:format(Format, Args). - - -kvformat(S, [Item],Buff) -> - lists:reverse([format("\n~s~p]\n",[S,Item])|Buff]); - -kvformat(S,[H|T],Buff) -> - kvformat(S,T,[format("\n~s~p, ",[S,H])|Buff]); - -kvformat(_,[],Buff) -> - lists:reverse(["]\n"|Buff]). - -argformat(_Pad,A) when is_integer(A) -> - format("/~p\n", [A]); -argformat(_,A) -> - lists:flatten([format("/~p\n", [length(A)]), - format("args: \n"), - argformat2(" ", A)]). - -argformat2(Pad, Arglist) -> - Chars = lists:flatten(io_lib:format("~p",[Arglist])), - if - length(Chars) < (70 - length(Pad)) -> - format("~s~s\n", [Pad, Chars]); - true -> - argformat3(Pad, Arglist) - end. - -argformat3(_,[]) -> format("\n"); -argformat3(Pad, [H|T]) -> - Chars = truncate(65,io_lib:format("~s~p",[Pad, H])), - format("~s,\n", [Chars]), - argformat3(Pad, T). - -pformat(false) -> []; -pformat({value,{_, 0}}) -> []; -pformat({value,{_, []}}) -> []; -pformat({value, {Key, Vals}}) -> - Pad = mkpad(io_lib:format("~p ",[Key])), - format(lists:flatten(["~p: " ,vformat(Pad, Vals), "~n"]), [Key]). - -truncate(0, _Chars) -> "....."; -truncate(I, [H|T]) -> [H|truncate(I-1, T)]; -truncate(_I, []) -> []. - -mkpad([_|T]) -> [32|mkpad(T)]; -mkpad([]) -> []. - -proc_format(Pi) -> %% process_info struct - X1 = pformat(lists:keysearch(initial_call, 1, Pi)), - X2 = pformat(lists:keysearch(current_function, 1,Pi)), - X3 = pformat(lists:keysearch(messages, 1,Pi)), - X4 = pformat(lists:keysearch(dictionary,1, Pi)), - X5 = pformat(lists:keysearch(heap_size, 1,Pi)), - X6 = pformat(lists:keysearch(stack_size, 1,Pi)), - X7 = pformat(lists:keysearch(reductions, 1,Pi)), - X8 = pformat(lists:keysearch(links, 1,Pi)), - X9 = pformat(lists:keysearch(trap_exit, 1,Pi)), - lists:flatten([X1, X2, X3, X4, X5,X6,X7,X8,X9]). - - -%% Using the tool_utils function for presenting messages. -dialog_window(GSParent, Text) -> - spawn_link(tool_utils, notify, [GSParent, Text]). - -%% Create a window with a dismiss button. -msg_win(Text) -> - spawn_link(fun() -> display_msg_win(Text) end). - -display_msg_win(Text) -> - GS = gs:start([{kernel,true}]), - Font = font(GS), - Win = gs:window(GS, [{width,200}, {height,75}, {destroy,true}, - {title,"Pman Message"}]), - Can = gs:canvas(Win, [{width,200}, {height, 75},{x,0},{y,0}]), - gs:text(Can, [{text,Text}, {coords,[{10,0}]}, {justify,center}]), - Btn = gs:button(Win, [{label,{text,"Dismiss"}}, {font,Font}, - {width,100}, {x,50}, {y,40}]), - gs:config(Win, {map,true}), - receive - {gs, Btn, click, _, _} -> - ok - end. - -%% Choose default font -font() -> - font(gs:start([{kernel,true}])). - -font(GS) -> - case gs:read(GS, {choose_font, {screen,[],12}}) of - Font when element(1, Font)==screen -> - Font; - _ -> - gs:read(GS, {choose_font, {courier,[],12}}) - end. diff --git a/lib/pman/src/pman_win.hrl b/lib/pman/src/pman_win.hrl deleted file mode 100644 index 8a2778d5b7..0000000000 --- a/lib/pman/src/pman_win.hrl +++ /dev/null @@ -1,39 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - --define(WIN_HEIGHT, 390). --define(WIN_WIDTH, 745). - --define(MENU_HEIGHT, 40). --define(CHECKBAR_HEIGHT, 40). - --define(CPIDHIDDENTEXT, "# Hidden: "). - --define(HEADER_COLOUR, blue). --define(UNSELECTED_COLOUR, black). --define(SELECTED_COLOUR, white). - - - - - - - - - diff --git a/lib/pman/vsn.mk b/lib/pman/vsn.mk deleted file mode 100644 index 92fb9df222..0000000000 --- a/lib/pman/vsn.mk +++ /dev/null @@ -1 +0,0 @@ -PMAN_VSN = 2.7.1.4 -- cgit v1.2.3 From 168dfa07723cec3adf3ca662c819699e2c649430 Mon Sep 17 00:00:00 2001 From: Dan Gudmundsson Date: Thu, 7 Nov 2013 15:43:28 +0100 Subject: Remove appmon --- lib/appmon/AUTHORS | 5 - lib/appmon/BUGS_AND_FIXES | 5 - lib/appmon/Makefile | 33 - lib/appmon/doc/html/.gitignore | 0 lib/appmon/doc/man3/.gitignore | 0 lib/appmon/doc/pdf/.gitignore | 0 lib/appmon/doc/src/Makefile | 120 --- lib/appmon/doc/src/app_win.gif | Bin 4210 -> 0 bytes lib/appmon/doc/src/app_win.ps | 680 ----------------- lib/appmon/doc/src/appmon.xml | 67 -- lib/appmon/doc/src/appmon_chapter.xml | 328 -------- lib/appmon/doc/src/book.xml | 47 -- lib/appmon/doc/src/fascicules.xml | 18 - lib/appmon/doc/src/listbox_win.gif | Bin 4437 -> 0 bytes lib/appmon/doc/src/listbox_win.ps | 741 ------------------ lib/appmon/doc/src/main_win.gif | Bin 3011 -> 0 bytes lib/appmon/doc/src/main_win.ps | 691 ----------------- lib/appmon/doc/src/note.gif | Bin 1539 -> 0 bytes lib/appmon/doc/src/notes.xml | 300 -------- lib/appmon/doc/src/part.xml | 37 - lib/appmon/doc/src/part_notes.xml | 39 - lib/appmon/doc/src/pinfo_win.gif | Bin 7351 -> 0 bytes lib/appmon/doc/src/pinfo_win.ps | 1353 --------------------------------- lib/appmon/doc/src/ref_man.xml | 37 - lib/appmon/doc/src/warning.gif | Bin 1498 -> 0 bytes lib/appmon/ebin/.gitignore | 0 lib/appmon/info | 5 - lib/appmon/priv/Makefile | 65 -- lib/appmon/priv/appmon.gif | Bin 125 -> 0 bytes lib/appmon/priv/appmon.tool | 24 - lib/appmon/priv/appmon_help.txt | 154 ---- lib/appmon/priv/blank.html | 6 - lib/appmon/priv/info_frames.html | 9 - lib/appmon/priv/main_frame.html | 9 - lib/appmon/priv/start_info.html | 31 - lib/appmon/src/Makefile | 103 --- lib/appmon/src/appmon.app.src | 24 - lib/appmon/src/appmon.appup.src | 18 - lib/appmon/src/appmon.erl | 1081 -------------------------- lib/appmon/src/appmon_a.erl | 1122 --------------------------- lib/appmon/src/appmon_dg.erl | 205 ----- lib/appmon/src/appmon_dg.hrl | 45 -- lib/appmon/src/appmon_lb.erl | 696 ----------------- lib/appmon/src/appmon_place.erl | 192 ----- lib/appmon/src/appmon_txt.erl | 307 -------- lib/appmon/src/appmon_web.erl | 1031 ------------------------- lib/appmon/src/process_info.erl | 662 ---------------- lib/appmon/vsn.mk | 1 - 48 files changed, 10291 deletions(-) delete mode 100644 lib/appmon/AUTHORS delete mode 100644 lib/appmon/BUGS_AND_FIXES delete mode 100644 lib/appmon/Makefile delete mode 100644 lib/appmon/doc/html/.gitignore delete mode 100644 lib/appmon/doc/man3/.gitignore delete mode 100644 lib/appmon/doc/pdf/.gitignore delete mode 100644 lib/appmon/doc/src/Makefile delete mode 100644 lib/appmon/doc/src/app_win.gif delete mode 100644 lib/appmon/doc/src/app_win.ps delete mode 100644 lib/appmon/doc/src/appmon.xml delete mode 100644 lib/appmon/doc/src/appmon_chapter.xml delete mode 100644 lib/appmon/doc/src/book.xml delete mode 100644 lib/appmon/doc/src/fascicules.xml delete mode 100644 lib/appmon/doc/src/listbox_win.gif delete mode 100644 lib/appmon/doc/src/listbox_win.ps delete mode 100644 lib/appmon/doc/src/main_win.gif delete mode 100644 lib/appmon/doc/src/main_win.ps delete mode 100644 lib/appmon/doc/src/note.gif delete mode 100644 lib/appmon/doc/src/notes.xml delete mode 100644 lib/appmon/doc/src/part.xml delete mode 100644 lib/appmon/doc/src/part_notes.xml delete mode 100644 lib/appmon/doc/src/pinfo_win.gif delete mode 100644 lib/appmon/doc/src/pinfo_win.ps delete mode 100644 lib/appmon/doc/src/ref_man.xml delete mode 100644 lib/appmon/doc/src/warning.gif delete mode 100644 lib/appmon/ebin/.gitignore delete mode 100644 lib/appmon/info delete mode 100644 lib/appmon/priv/Makefile delete mode 100644 lib/appmon/priv/appmon.gif delete mode 100644 lib/appmon/priv/appmon.tool delete mode 100644 lib/appmon/priv/appmon_help.txt delete mode 100644 lib/appmon/priv/blank.html delete mode 100644 lib/appmon/priv/info_frames.html delete mode 100644 lib/appmon/priv/main_frame.html delete mode 100644 lib/appmon/priv/start_info.html delete mode 100644 lib/appmon/src/Makefile delete mode 100644 lib/appmon/src/appmon.app.src delete mode 100644 lib/appmon/src/appmon.appup.src delete mode 100644 lib/appmon/src/appmon.erl delete mode 100644 lib/appmon/src/appmon_a.erl delete mode 100644 lib/appmon/src/appmon_dg.erl delete mode 100644 lib/appmon/src/appmon_dg.hrl delete mode 100644 lib/appmon/src/appmon_lb.erl delete mode 100644 lib/appmon/src/appmon_place.erl delete mode 100644 lib/appmon/src/appmon_txt.erl delete mode 100644 lib/appmon/src/appmon_web.erl delete mode 100644 lib/appmon/src/process_info.erl delete mode 100644 lib/appmon/vsn.mk (limited to 'lib') diff --git a/lib/appmon/AUTHORS b/lib/appmon/AUTHORS deleted file mode 100644 index b727dae36d..0000000000 --- a/lib/appmon/AUTHORS +++ /dev/null @@ -1,5 +0,0 @@ -Original Authors and Contributors: - -Peter Lundell -Stefan Anbratt -Gunilla Arendt diff --git a/lib/appmon/BUGS_AND_FIXES b/lib/appmon/BUGS_AND_FIXES deleted file mode 100644 index fdac7f34c5..0000000000 --- a/lib/appmon/BUGS_AND_FIXES +++ /dev/null @@ -1,5 +0,0 @@ - -***) reverse the list of children for a process, to match the starting -order. - -***) diff --git a/lib/appmon/Makefile b/lib/appmon/Makefile deleted file mode 100644 index 62033ab92e..0000000000 --- a/lib/appmon/Makefile +++ /dev/null @@ -1,33 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2009. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Macros -# ---------------------------------------------------- - -SUB_DIRECTORIES = src priv doc/src - -SPECIAL_TARGETS = - -# ---------------------------------------------------- -# Default Subdir Targets -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_subdir.mk - diff --git a/lib/appmon/doc/html/.gitignore b/lib/appmon/doc/html/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/appmon/doc/man3/.gitignore b/lib/appmon/doc/man3/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/appmon/doc/pdf/.gitignore b/lib/appmon/doc/pdf/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/appmon/doc/src/Makefile b/lib/appmon/doc/src/Makefile deleted file mode 100644 index 7c93abe6d8..0000000000 --- a/lib/appmon/doc/src/Makefile +++ /dev/null @@ -1,120 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1997-2012. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../../vsn.mk -VSN=$(APPMON_VSN) -APPLICATION=appmon - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/$(APPLICATION)-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- -XML_APPLICATION_FILES = ref_man.xml -XML_REF3_FILES = appmon.xml - -XML_PART_FILES = \ - part.xml \ - part_notes.xml - -XML_CHAPTER_FILES = \ - appmon_chapter.xml \ - notes.xml - -BOOK_FILES = book.xml - -XML_FILES = $(BOOK_FILES) $(XML_APPLICATION_FILES) $(XML_REF3_FILES) \ - $(XML_PART_FILES) $(XML_CHAPTER_FILES) - -GIF_FILES = \ - app_win.gif \ - listbox_win.gif \ - main_win.gif \ - pinfo_win.gif \ - note.gif - -# ---------------------------------------------------- - -HTML_FILES = $(XML_APPLICATION_FILES:%.xml=$(HTMLDIR)/%.html) \ - $(XML_PART_FILES:%.xml=$(HTMLDIR)/%.html) - -INFO_FILE = ../../info - -MAN3_FILES = $(XML_REF3_FILES:%.xml=$(MAN3DIR)/%.3) - -HTML_REF_MAN_FILE = $(HTMLDIR)/index.html - -TOP_PDF_FILE = $(PDFDIR)/$(APPLICATION)-$(VSN).pdf - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- -XML_FLAGS += - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- -$(HTMLDIR)/%.gif: %.gif - $(INSTALL_DATA) $< $@ - -docs: pdf html man - -$(TOP_PDF_FILE): $(XML_FILES) - -pdf: $(TOP_PDF_FILE) - -html: gifs $(HTML_REF_MAN_FILE) - -clean clean_docs: - rm -rf $(HTMLDIR)/* - rm -f $(MAN3DIR)/* - rm -f $(TOP_PDF_FILE) $(TOP_PDF_FILE:%.pdf=%.fo) - rm -f errs core *~ - rm -f $(JD_HTML) $(JD_PACK) - -man: $(MAN3_FILES) - -gifs: $(GIF_FILES:%=$(HTMLDIR)/%) - -debug opt: - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_docs_spec: docs - $(INSTALL_DIR) "$(RELSYSDIR)/doc/pdf" - $(INSTALL_DATA) $(TOP_PDF_FILE) "$(RELSYSDIR)/doc/pdf" - $(INSTALL_DIR) "$(RELSYSDIR)/doc/html" - $(INSTALL_DATA) $(HTMLDIR)/* \ - "$(RELSYSDIR)/doc/html" - $(INSTALL_DATA) $(INFO_FILE) "$(RELSYSDIR)" - $(INSTALL_DIR) "$(RELEASE_PATH)/man/man3" - $(INSTALL_DATA) $(MAN3DIR)/* "$(RELEASE_PATH)/man/man3" - -release_spec: - diff --git a/lib/appmon/doc/src/app_win.gif b/lib/appmon/doc/src/app_win.gif deleted file mode 100644 index 06f21d04a9..0000000000 Binary files a/lib/appmon/doc/src/app_win.gif and /dev/null differ diff --git a/lib/appmon/doc/src/app_win.ps b/lib/appmon/doc/src/app_win.ps deleted file mode 100644 index 73d4cad278..0000000000 --- a/lib/appmon/doc/src/app_win.ps +++ /dev/null @@ -1,680 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./app_win.tmp.eps) -%%CreationDate: (Tue Jun 12 17:59:02 2001) -%%BoundingBox: 0 46 300 384 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 46 300 384 -userdict begin -%%BeginData: -DisplayImage -0 46 -300.000000 338.000000 -12 -382 431 -1 -0 -0 -16 -ffffff -000000 -e8e3dc -708090 -b03060 -d9d9d9 -b3b3b3 -7f7f7f -a3a3a3 -828282 -000000 -000000 -000000 -000000 -000000 -000000 -04ff04ff04ff04de05000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500041a050c04d1050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000408 -050c04050500040a0500040a050104030505040105050401050104040501040305030403 -050104020501044a05010400050104000501040005010411050104050504040205010404 -050104050501040005010409050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000407050004020500040205000402 -050004050500040a05000409050304020501040205010400050104020501040005010404 -050104020501040105010402050204010501044a05010403050104000501041105010403 -050104040500040805010408050104080500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004080500040205000402 -050004020500040505000403050204030500040905000401050004020501040205010400 -050104020501040005020402050204010501040305010401050204010501040105010404 -050004000502040005020401050104020501040105030401050104000501040105010400 -050104060503040105010400050104060501040005010400050104000501040005010400 -050104020503040105010400050504020500040605000400050104010501040005010400 -050104000503040005010409050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000407050004020500040205000402 -050004050500040205040402050004080501040105010401050104020501040005010402 -050104000502040205020401050104030501040105010400050004000501040105010404 -050104010501040105010400050104020501040005010401050104000502040005010400 -050204000501040405010401050104000502040005010404050104000502040005010400 -050104000502040005010400050104010501040005040400050104020500040205010400 -050004000500040005010400050104000502040005060400050104080500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004080504040205000402050004050500040105060401050004080501040105010401 -050504010505040105030400050304010501040305010401050104000500040005010408 -050104010501040105010401050104000501040505010400050104010501040005010401 -050104040501040105010400050104010501040405010401050104000501040005010400 -050104010501040005010401050104000502040205010402050004010500040105000401 -050004000501040005010401050104000502040105010400050104090500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004070500040605000402050004050500040105060401050004080505040105010405 -050104050501040005000400050004000501040105010403050104010501040105020408 -050104010501040105010401050104000501040205040400050104010501040005010401 -050104040501040105010400050104010501040405010401050104000501040005010400 -050104010501040005050400050104030501040205000400050004020500040105000400 -050104000501040105010400050104020501040005010408050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000408 -050004060500040205000405050004010506040105000407050104030501040005010405 -050104050501040005020400050104010501040305010401050104010502040805010401 -050104010501040205020402050104010501040005010401050104000501040105010404 -050104010501040005010401050104040501040105010400050104000501040005010401 -050104000501040405010403050104020500040005000401050104000500040105010400 -050104010501040005010402050104000501040905000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040705000406 -050004020500040505000402050404020500040705010403050104000501040505010405 -050104010500040105010402050104010501040205010402050104010501040405010401 -050104010501040205020402050104010501040005020400050104000502040005010404 -050104010501040005010401050104040501040005020400050104000501040005020400 -050104000501040105010400050104030501040005000400050004010501040005010402 -050104000501040005020400050104020501040005010408050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000408 -050804020500040505000403050204030500040705010403050104000501040505010405 -050104010500040105010403050304030501040205010401050104040501040105010401 -050104030501040305020400050304000501040105010400050104060503040105010401 -050104050501040005010400050104000501040005010400050104020503040105010404 -050104020500040805010401050104000501040005010402050104000501040905000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -05000400050004070500040a050004050500040a050004530500040a0501040405010442 -050404200500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004080500040a050004050500040a050004520501040a -050104040501046905000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -05000400050004000500040005000400050004070500040a05000405050c04510501040b -050104040501046805000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -0500040005000400050004000500040005000408050c04e5050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -050004000500040005000400050004000500040005000400050004000500040005000400 -0500040005000400050004000500040005000400050004000500040005000400050004ff -04ff04ff041303ff03ff03fb00ff00ff00fa0900000105ff05790901000105ff05790901 -000105ff05790901000105ff05790901000105ff05790901000105040104050401000503 -010205120102050b01000506010005ff051801000502010005090102050c090100010504 -0100050f01000511010005020100050a010005ff0520010005020100050b0100050c0901 -000105040100050601020505010005030102050a01000502010005010100050001010502 -0104050201020503010205020100050001010503010205ff050301000502010005020102 -050501000502010005000101050509010001050401000508010005050100050201000502 -010005090100050201000501010105010100050301000506010005020100050201000501 -010105010100050101000502010005ff0502010005020100050101000502010005040100 -050201010501010005040901000105040103050501000505010005020100050201000509 -010005020100050101000502010005030100050601000502010005020100050101000502 -01000501010005ff05060104050101000502010005040100050201000502010005040901 -000105040100050801000505010005020104050901000502010005010100050201000503 -010005060100050201000502010005010100050201000502010205ff0503010005020100 -050101040504010005020100050201000504090100010504010005080100050501000502 -0100050d0100050201000501010005020100050301000506010005020100050201000501 -0100050201000505010005ff050201000502010005010100050801000502010005020100 -050409010001050401000508010005050100050201000502010005090100050201000501 -010105010100050301000506010005020100050201000501010005020100050101000502 -010005ff0502010005020100050101000502010005040100050201010501010005040901 -000105040100050801000505010005030102050b01020502010005000101050501010504 -01000503010205020100050201000502010205ff05030100050201000502010205050100 -0502010005000101050509010001052f010005ff053e0100050809010001052f010005ff -053e0100050809010001052f010005ff053e010005080901000105ff05790901000105ff -05790901000105ff05790901000109ff097b000009ff097c02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02730800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000020900450209004502090045024700000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000000080000000800 -000008000000080000000800000008000000080000000800000008000209004409000209 -004409000209004409000247080000000842010002090001054109010209000105410901 -020900010541090102470000084201000800020900010541090102090001054109010209 -000105410901024708000000084201000209000105410901020900010541090102090001 -054109010247000008420100080002090001054109010209000105410901020900010541 -090102470800000008120104080b0101081c010002090001051301020514010005140901 -02090001050e0104052d0901020900010512010005020100050401000503010205030102 -051509010247000008150100080c0100081d010008000209000105120100050201000513 -0100051409010209000105100100052f0901020900010512010005010100050c01000505 -010005150901024708000000081401000803010008000101080401000804010208160100 -020900010512010005060102050201000500010105030101050001000514090102090001 -051001000503010005000101050301020503010205030102051209010209000105120100 -050001000504010205050100050501000515090102470000081501000803010108010100 -080101040801010008020100081401000800020900010513010005040100050201000501 -010105010100050101000501010105140901020900010510010005030101050101000501 -010005020100050101000502010005010100050201000511090102090001051201010507 -010005050100050501000515090102470800000008140100080301000802010008030100 -080301000802010008150100020900010514010105020100050201000501010005020100 -050101000502010005140901020900010510010005030100050901000501010005050100 -050201000511090102090001051201000500010005060100050501000505010005150901 -024700000815010008030100080201000803010008030100080201000814010008000209 -000105160100050101040501010005020100050101000502010005140901020900010510 -010005030100050601030501010005050104051109010209000105120100050101000505 -010005050100050501000515090102470800000008140100080301000802010008030100 -080301000802010008150100020900010512010005020100050101000505010005020100 -050101000502010005140901020900010510010005030100050501000502010005010100 -050501000515090102090001051201000501010005050100050501000505010005150901 -024700000815010008030100080201000803010008030100080201000814010008000209 -000105120100050201000501010005020100050101000502010005010100050101010514 -090102090001051001000503010005050100050201000501010005020100050101000502 -010005110901020900010512010005020100050401000505010005050100051509010247 -080000000812010408010100080201000803010008040102081601000209000105130102 -050301020502010005020100050201010500010005140901020900010510010005030100 -050601030502010205030102051209010209000105120100050201000504010005050100 -050501000515090102470000084201000800020900010541090102090001054109010209 -000105410901024708000000084201000209000105410901020900010541090102090001 -054109010247000008420100080002090001054109010209000105410901020900010541 -090102470800000008420100020900010541090102090001054109010209000105410901 -024700000842010008000209000105410901020900010541090102090001054109010247 -080000000842010002090001054109010209000105410901020900010541090102470000 -084201000800020900010541090102090001054109010209000105410901024708000000 -084201000209000105410901020900010541090102090001054109010247000008000100 -080001000800010008000100080001000800010008000100080001000800010008000100 -080001000800010008000100080001000800010008000100080001000800010008000100 -080001000800010008000100080001000800010008000100080001000800010008000100 -080001000800010008000100080001000800010008000100080002090001094302090001 -094302090001094302470800010008000100080001000800010008000100080001000800 -010008000100080001000800010008000100080001000800010008000100080001000800 -010008000100080001000800010008000100080001000800010008000100080001000800 -010008000100080001000800010008000100080001000800010008000100080001000800 -01000800010002090000094402090000094402090000094402ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff022901ff017d05ff05ff05ff05ff05ff05ff -05ff05ff05ff05ff05ff05ff05ff056d02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02d5014902ff023301000647010002ff023301000647010002ff02330100 -0647010002ff023301000647010002ff02330100060e0103060701010603010306020103 -060601030610010002ff02330100060d0101060101010604010306020101060101010600 -0101060101010604010106010101060f010002ff02330100060d01010601010106060101 -060201010601010106000101060101010604010106010101060f010002ff02330100060a -010106000101060101010606010106020101060101010600010106010101060401010601 -010106010101060b010002ff023301000608010206010101060101010606010106020101 -0601010106000101060101010604010106010101060201020609010002ff023301000607 -010106030101060101010606010106020101060101010600010106010101060401010601 -0101060401010608010002ff023301000608010206010101060101010606010106020101 -0601010106000101060101010604010106010101060201020609010002ff02330100060a -010106000101060101010601010106020101060201010601010106000101060101010601 -0101060001010601010106010101060b010002ff02330100060e01030602010106020101 -060301030602010306020101060101030610010002ff023301000647010002ff02330100 -0647010002ff023301000647010002ff023301000647010002ff023301000647010002ff -023301000647010002ff023301220701012402ff0256070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff0258014902ff023301000647010002ff023301000647010002ff0233 -01000647010002ff023301000647010002ff02330100060e010306070101060301030603 -0101060701030610010002ff02330100060d010106010101060401030602010106010101 -060001030606010106010101060f010002ff02330100060d010106010101060601010602 -010106010101060201010606010106010101060f010002ff02330100060a010106000101 -0601010106060101060201010601010106020101060601010601010106010101060b0100 -02ff02330100060801020601010106010101060601010602010106010101060201010606 -010106010101060201020609010002ff0233010006070101060301010601010106060101 -0602010106010101060201010606010106010101060401010608010002ff023301000608 -010206010101060101010606010106020101060101010602010106060101060101010602 -01020609010002ff02330100060a01010600010106010101060101010602010106020101 -060101010602010106030101060001010601010106010101060b010002ff02330100060e -01030602010106020101060301030603010106030101060101030610010002ff02330100 -0647010002ff023301000647010002ff023301000647010002ff023301000647010002ff -023301000647010002ff023301000647010002ff023301220701012402ff0256070102ff -027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff -027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff -027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff -027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff -027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff -027b070102ff027b070102ff027b070102ff0258014902ff023301000647010002ff0233 -01000647010002ff023301000647010002ff023301000647010002ff0233010006470100 -02ff023301000647010002ff023301000600010006000102060001020601010106020101 -060101030601010106000101060101010600010106090103060101010601010106000101 -060001010604010002ff0233010006000101060101010601010106000101060201010600 -010106010101060001020600010106000102060001010607010106010101060001010601 -010106000102060001010603010002ff0233010006000101060101010601010106010101 -060001010605010106000101060101010600010106010101060701020603010106010101 -06000101060101010603010002ff02330100060001010601010106010101060101010600 -010106020104060001010601010106000101060101010609010206010101060101010600 -0101060101010603010002ff023301000600010106010101060101010602010206020101 -0601010106000101060101010600010106010101060a0102060001010601010106000101 -060101010603010002ff0233010006000101060101010601010106020102060201010601 -010106000102060001010600010206000101060701010601010106000101060001020600 -0102060001010603010002ff023301000600010106010101060101010603010106030102 -060001030600010106010101060001010609010306020101060001010600010106000101 -0604010002ff02330100060e0100060a010106040101061901010607010002ff02330100 -060d0101060a010106040101061901010607010002ff02330100060c0101060b01010604 -010106040106060d01010607010002ff023301000647010002ff023301000647010002ff -023301000647010002ff023301220701012402ff0256070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b0701 -02ff0254074802ff0233074902ff023307010245070102ff023307010245070102ff0233 -07010245070102ff023307010245070102ff023307010245070102ff0233070102450701 -02ff023307010245070102ff023307010245070102ff023307010245070102ff02330701 -0245070102ff023307010245070102ff023307010245070102ff023307010245070102ff -023307010245070102ff023307010245070102ff023307010245070102ff023307010245 -070102ff021e012d0212013b02ff02000100062b0100021201000639010002ff02000100 -062b0100021201000639010002ff02000100062b0100021201000639010002ff02000100 -062b0100021201000639010002ff02000100062b010002120100063201010604010002ff -02000100062b010002120100063201010604010002ff0200010006000100060001020600 -010206010101060201010601010306010101060101010600010106000101060401000212 -010006010100060001020600010206010101060201010601010306010101060201010601 -01030601010106000101060101030603010002ff02000100060001010601010106010101 -060001010602010106000101060101010600010106010101060001020600010106030100 -021201000601010106010101060101010600010106020101060001010601010106000101 -0602010106000101060101010600010206000101060101010604010002ff020001000600 -010106010101060101010601010106000101060101020603010106010101060001010601 -010106030100021201000601010106010101060101010601010106000101060101010601 -0101060101010600010106010101060101010600010106010101060101010604010002ff -020001000600010106010101060101010601010106000101060301020601010106010101 -060001010601010106030100021201000601010106010101060101010601010106000101 -060101050601010106000101060101050600010106010101060101010604010002ff0200 -010006000101060101010601010106020102060501020600010106010101060001010601 -010106030100021201000601010106010101060101010602010206020101060601020602 -01010604010106010101060101010604010002ff02000100060001010601010106010101 -060201020602010106010101060001010600010206000102060001010603010002120100 -060101010601010106010101060201020602010106010101060201020602010106010101 -060001010601010106010101060001000602010002ff0200010006000101060101010601 -010106030101060301030602010106000101060001010600010106040100021201000601 -010106010101060101010603010106030103060401000604010306010101060101010602 -01010603010002ff02000100060e0100061101010607010002120100060f010006280100 -02ff02000100060d0101061101010607010002120100060e01010628010002ff02000100 -060c0101061201010607010002120100060d01010629010002ff02000100062b01000212 -01000639010002ff02000100062b0100021201000639010002ff02000100062b01000212 -01000639010002ff02000114070101160212013b02ff0215070102ff027b070102ff027b -070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b -070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b070102ff027b -070102ff025c074b02ff0230074c02ff023007010248070102ff023007010248070102ff -023007010248070102ff023007010248070102ff023007010248070102ff023007010248 -070102ff023007010248070102ff023007010248070102ff023007010248070102ff0230 -07010248070102ff023007010248070102ff023007010248070102ff0230070102480701 -02ff023007010248070102ff023007010248070102ff023007010248070102ff02300701 -0248070102ff021001420212012d02f901000640010002120100062b010002f901000640 -010002120100062b010002f901000640010002120100062b010002f90100064001000212 -0100062b010002f901000640010002120100061401020613010002f90100064001000212 -0100061301010615010002f9010006020100060001020600010206010101060201010601 -010306020103060101010600010306020101060101030601010106000101060301000212 -010106000102060001020601010106020101060001030601010306010100060001020600 -01020603010002f901000602010106010101060101010600010106020101060001010601 -010106000101060101010600010606020101060001010601010106000104060301000212 -010206010101060101010600010106020101060101010601010106010101060001010601 -0101060101010602010002f9010006020101060101010601010106010101060001010601 -010206030101060101010600010206020101060001010601010106010101060001020605 -010002120102060101010601010106010101060001010602010106010102060301010601 -0101060101010602010002f9010006020101060101010601010106010101060001010603 -010206010105060001010603010106000101060101050600010106060100021201020601 -010106010101060101010600010106020101060301020601010106010101060101010602 -010002f90100060201010601010106010101060201020605010206000101060401010604 -010206020101060401010606010002120102060101010601010106020102060301010604 -01020600010106010101060101010602010002f901000602010106010101060101010602 -010206020101060101010600010106010101060001010604010206020101060101010600 -010106060100021201020601010106010101060201020603010106010101060101010600 -010106010101060101010602010002f90100060201010601010106010101060301010603 -010306020103060101010605010006040103060101010606010002120102060101010601 -01010603010106030101060201030601010106010101060101010602010002f901000610 -0100062e010002120100060d0100061c010002f90100060f0101062e010002120100060c -0101061c010002f90100060e0101062f010002120100060b0101061d010002f901000640 -010002120100062b010002f901000640010002120100062b010002f90100064001000212 -0100062b010002f901420212012d02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff02ff -02ff0236 -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 46 300 384 -%%EOF diff --git a/lib/appmon/doc/src/appmon.xml b/lib/appmon/doc/src/appmon.xml deleted file mode 100644 index 2707ea4d9a..0000000000 --- a/lib/appmon/doc/src/appmon.xml +++ /dev/null @@ -1,67 +0,0 @@ - - - - -
- - 1996 - 2013 - Ericsson AB, All Rights Reserved - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - The Initial Developer of the Original Code is Ericsson AB. - - - appmon - - - - -
- appmon - A graphical node and application process tree viewer. - - -

- The Appmon application has been superseded by the Observer application. - Appmon will be removed in R16. -

-
-

The application monitor Appmon is a graphical utility used to - supervise applications executing either locally or on remote nodes. - The process tree of an application can furthermore be monitored.

-
- - - start() - Start Appmon. - -

Starts Appmon.

-
-
- - stop() - Stop Appmon. - -

Stops Appmon.

-
-
-
- -
- See Also -

Appmon User's Guide

-
-
- diff --git a/lib/appmon/doc/src/appmon_chapter.xml b/lib/appmon/doc/src/appmon_chapter.xml deleted file mode 100644 index 1b6054f622..0000000000 --- a/lib/appmon/doc/src/appmon_chapter.xml +++ /dev/null @@ -1,328 +0,0 @@ - - - - -
- - 20002013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Appmon - - - - - appmon_chapter.xml -
- -
- Introduction - -

- The Appmon application has been superseded by the Observer application. - Appmon will be removed in R16. -

-
-

The application monitor Appmon is a graphical node and application viewer. The tool shows an overview of all applications on all known nodes, and it is possible to view the process tree for an application running on any of the nodes.

- -

If the Appmon code is not available at a node, for example an - embedded node, this node is ignored by Appmon and is not shown - in the Appmon window.

-
-
- -
- Getting Started with Appmon -

Start Appmon by calling . It will start the main window showing a load meter and the applications running at the current node. By clicking on one of the applications a window showing the process tree of the application will be opened, the application window.

-

The main window is equipped with a menubar from which it is possible to:

- - exit Appmon - perform some operations on the node - set how information should be displayed - select which node to show - open help (this document). - -

The application window shows the process tree for an application with each process displayed as a box. It is possible to view information about the processes, to send messages to them, and to trace and kill them.

-
- -
- The Main Window - -

The main window shows a load meter and all applications running at the displayed node. Select which node to display in the window by choosing the node name from the Nodes menu. It is also possible to run Appmon in a many-window mode where a new instance of the main window is opened for each node to be displayed.

- - The Main Window. - -

The load meter shows load measured as processor time, or as the length of the ready queue.

-

Every application running at the node is shown as a button. Clicking the button will open the application window showing the process tree for the application.

- -
- The File Menu - - Show List Box... - This will open the listbox window which lists all nodes and applications. This window can be more easy to use than the normal, graphical user interface when the system consists of a large number of nodes and/or applications. - Close - Close the window. If no other instance of the main window exists, Appmon will be stopped. - Exit - Stop Appmon. - -
- -
- The Actions Menu - - Reboot - Call at the currently displayed node. This will stop the node. If the system flag was given, the heart program will try to reboot the system. - Restart - Call at the currently displayed node. This will restart the node. - Stop - Call at the currently displayed node. This will stop the node. - Ping - Call where is the currently displayed node. This can be useful when the connection to the node has been lost. - -
- -
- The Options Menu - - One window/Many windows - Select one of these radio button to run Appmon in one-window or many-window mode. In many-windows mode, a new instance of the main window is opened for each node to be displayed. The default value is one-window mode. - Load: time/queue - Select one of these radio buttons to either calculate load as processor time or as the length of the ready queue, which is the number of processes ready to execute. By default, the load is calculated as processor time. - Load: progressive/linear - Select one of these radio buttons to show load either according to a progressive or a linear scale. By default, the load is shown according to a progressive scale. - -
- -
- The Nodes Menu -

The Nodes menu contains all currently and previously known nodes, - where the Appmon code is available. Nodes where the Appmon code is - not available, for example embedded nodes, are ignored by Appmon and - are not shown.

-

Selecting a node from the Nodes menu will cause that node to be displayed in either the same window, or in a new window, depending on if Appmon is run in one-window or many-windows mode. If the connection to the node has been lost, this will be shown in the window.

-
- -
- The Help Menu - - Help - Selecting Help from the Help menu will cause the HTML version of the Appmon User's Guide (this document) to be displayed. Currently this function requires Netscape to be up and running. - -
-
- -
- The Application Window - -

The application window shows the process tree for an application. The window title contains the application name and the node name. The window also contains a menubar and a toolbar.

-

The application window can be opened from the main window by clicking on the button denoting the application, or from the listbox window by selecting the application and clicking on the Load button. -

- - The Application Window. - -

The application can be shown either as a strict supervision tree, or as a process view with all linked processes. In supervision mode, the tree-gathering and -building algorithm assumes conformance to the OTP design principles.

- -
- The File Menu - - Close - Close the application window. - -
- -
- The Options Menu - - Refresh - Refresh the application window. - Sup. view/ Proc. view - Select one of these radio buttons to show the application as a strict supervision tree, or as a process view with all linked processes. By default, the process view is used. - -
- -
- The Toolbar -

The toolbar consists of four buttons: Info, Send, Trace and Kill. First select one of these buttons and then select to which process the action should apply by clicking on a process in the process tree. By default Info is selected which means that clicking on a process, without selecting Send, Trace or Kill first, will open the process information window.

- - Info - Open the process information window, which displays the information about the process given by . - Send - Send a message to a process. A window is opened where the message can be specified. Click Ok to send the message or Cancel to cancel. - Trace - Switch on OTP tracing of a process. is called. Selecting Trace a second time for the same process will switch the tracing off instead. - Kill - Kill a process. is called. - -
-
- -
- The Listbox Window - -

The listbox window lists all nodes and applications. This window can be more easy to use than the normal, graphical user interface when the system consists of a large number of nodes and/or applications.

- - The Listbox Window. - -

The window contains three buttons:

- - Load - First selecting an application and then clicking the Load button will open the application window for that application. - Clear - De-select any selected node or application name. - Close - Close the listbox window. - -
- -
- The Process Information Window - -

The process information window shows information about different processes as given by .

- - The Process Information Window. - - -
- The File Menu - - Close - Close the process information window. - -
-
- -
- Using the Web Based version of Appmon - -
- Introduction -

The web based version of Appmon is an alternative version of - Appmon. The main difference between the web based version of - Appmon and the original version of Appmon is that the web based - version of Appmon can monitor nodes and applications on nodes where - Appmon not is installed.

-
- -
- Start the Web Based version of Appmon -

To start the web based user interface configure and start - WebTool, see WebTool User's Guide. The web based - version of Appmon is compatible with the browsers - Netscape Navigator and Internet Explorer 4.0 and higher.

-

When WebTool is started, start the Web based version of Appmon via - WebTool. If WebTool succeeded to start the web based version of Appmon - a link named WebAppmon will appear in the topmost frame. Click on the link and - the main frame of the browser will show two frames.The left frame will - show a combo box for node selection and a list of all applications on - the currently selected node.

-

In the left frame it is possible to:

- - Select which node to supervise. - Select an application to view its process tree. - Select an application to view its specification. - -

The right frame shows the selected information, either the application - specification or the process tree and process information.

-
- -
- Selecting a Different Node -

In the top of the left frame there is a combo box with all known - nodes. The name of the node that is monitored is the node whose name - is visible in the combo box. At startup the node on which the web - based version of Appmon is running on will be monitored.

-

To change node, select another node in the combo box, and - the list of running applications will change to the applications - that runs on the selected node.

-
- -
- Viewing the Process Tree of an Application -

To view the process tree of an application click on the application - name in the list of applications. The process tree of the selected - application will then appear in the right frame.

-

The processes in the process tree can have three different colors:

- - Blue - The relation to the process above in the process hierarchy - is a primary relation. That means that the process above is the - only process that link to it or the process above is a supervisor. - Red - The relation to the process above in the process hierarchy is a secondary - relation. This means that more than one process has a relation to it - and the process above in the hierarchy is not a supervisor. - Black - The process isn't a regular process instead it's a Port. The name of - the process will also begin with Port: - -

If the process name begins with Runs on another node: The - monitored application runs on more than one node and this process is - the first process on a branch that runs on another node.

-
- -
- Viewing the Application Specification -

After the application name in the list of applications there are a - link named Spec, Click on this link and the application - specification will appear in the right frame. The application - specification is the data in the .app file of the selected - application.

-
- -
- Select Process View -

In the top of the page that shows the process tree, there are three - radio buttons for selecting which processes that shall be included - in the process tree. The default mode is that all processes - that one process in the application tree has a relation to is - included. It's possible to filter which of the processes - in the process tree that will be included. To reduce the number - of processes in the process tree select one of the radio buttons - on the top of the page

- - All processes - All processes that at least one process in the application - tree has a link to. - Supervised processes - All processes that are supervised by one of the supervisors in - the application - Supervisors only - Only the processes that actually are supervisors in the - applications supervision tree is included - -
- -
- - Process Information -

To see more information about a specific process click on the process - name and more information will be loaded under the application tree.

-

The Process information page shows information about a process as given - by the , but formatted in a more human readable form.

-
- -
- Trace a process -

If the link after the process name in the process tree is start trace - the process is not traced. If the link is stop trace then the process - id traced.

-

To toggle the trace flag for a process click on the link start trace or - stop trace after the process name in the process tree.

-
-
-
- diff --git a/lib/appmon/doc/src/book.xml b/lib/appmon/doc/src/book.xml deleted file mode 100644 index c9979c6050..0000000000 --- a/lib/appmon/doc/src/book.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - - -
- - 19972013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - appmon - - - - 2.0 -
- - - Appmon - - - - - - - - - - - - - -
- diff --git a/lib/appmon/doc/src/fascicules.xml b/lib/appmon/doc/src/fascicules.xml deleted file mode 100644 index 37feca543f..0000000000 --- a/lib/appmon/doc/src/fascicules.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - User's Guide - - - Reference Manual - - - Release Notes - - - Off-Print - - - diff --git a/lib/appmon/doc/src/listbox_win.gif b/lib/appmon/doc/src/listbox_win.gif deleted file mode 100644 index 38258b7552..0000000000 Binary files a/lib/appmon/doc/src/listbox_win.gif and /dev/null differ diff --git a/lib/appmon/doc/src/listbox_win.ps b/lib/appmon/doc/src/listbox_win.ps deleted file mode 100644 index 0f1e2eeda0..0000000000 --- a/lib/appmon/doc/src/listbox_win.ps +++ /dev/null @@ -1,741 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./listbox_win.tmp.eps) -%%CreationDate: (Tue Jun 12 18:01:07 2001) -%%BoundingBox: 0 85 200 356 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 85 200 356 -userdict begin -%%BeginData: -DisplayImage -0 85 -200.000000 271.000000 -12 -325 441 -1 -0 -0 -8 -ffffff -000000 -708090 -b03060 -d9d9d9 -808080 -c3c3c3 -000000 -03ff03ff03ff036704000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003000400031a040c03cc0400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000308040c03050400030a0400030a04010343040103240401031904010300 -0401030f040103010401031e040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003070400030204000302 -04000302040003050400030a040003090403034204010324040103190401031204010321 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003080400030204000302040003020400030504000303 -040203030400030904000301040003010401030004010301040103000401030104000300 -040203000402030204030301040103000401030204010304040103000401030204030302 -040103000401030104030302040303060403030104010300040103020401030004010305 -040303010401030004010301040103000401030104010300040103010403030204030301 -04030300040103010403030104010300040103020403030a040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003070400030204000302040003020400030504000302040403020400030804010301 -040103000402030004010300040203000401030004010301040103010401030004010301 -040103000402030004010301040103040402030004010300040103010401030004010300 -040203000401030104010300040103010401030404010301040103000402030004010300 -040103000402030404010301040103000402030004010300040203000401030004010300 -040103000401030104010300040103010401030104010301040103000401030104010300 -040203000401030004010301040103080400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030804040302 -040003020400030504000301040603010400030804010301040103000401030104010300 -040103010401030004010301040103010401030004010301040103000401030104010308 -04010301040103000401030104010300040103010401030004010301040103000402030b -040103000401030104010300040103010401030804010300040103010401030004010301 -040103000401030004010300040103080401030104010301040103000401030104010300 -04010301040103000402030c040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003070400030604000302 -040003050400030104060301040003080405030004010301040103000401030104010300 -040103010401030104010300040103010401030004010301040103080401030104010300 -040103010401030004010301040103000405030204020306040403000401030104010300 -040103010401030504040300040103010401030004010301040103000401030004010300 -040103050404030104010301040103000401030104010300040103010401030204020309 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003080400030604000302040003050400030104060301 -040003070401030304030301040103000401030104010300040103010401030104010300 -040103010401030004010301040103080401030104010300040103010401030004010301 -040103000401030704020304040103010401030004010301040103000401030104010304 -040103010401030004010301040103000401030104010300040103000401030004010304 -040103010401030104010301040103000401030104010300040103010401030304020309 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070400030604000302040003050400030204040302 -040003070401030304040300040103000402030004010300040103010401030104010300 -040103010401030004010301040103010401030404010301040103000401030104010300 -040103000402030004010301040103000401030104010304040103010401030004010301 -040103000401030004020304040103010401030004020300040103000402030004010300 -040103000401030004010301040103000401030104010301040103000402030004010301 -040103000401030104010300040103010401030804000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000308 -040803020400030504000303040203030400030704010303040303000401030104010300 -040103010401030104010301040103010403030104010301040103010401030404010301 -040103010403030204010300040103010403030204030306040203000403030104010301 -040103000401030504020300040303000401030104010300040103010401030004010301 -04030302040203000401030104010300040103010403030104010301040103010403030a -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070400030a040003050400030a0400030f04010304 -0401036c040103040401033d040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003080400030a04000305 -0400030a0400030f040103040401036c040103040401033e040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003070400030a04000305040c030f040103040401036c040103040401033d04000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000308040c03e00400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003000400030004000300040003ff03ff03a1 -02ff02ff028904ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff046b0512 -04ff043105110000047e05b0040105010606050006060001047e05af0000040105010605 -0000050006060001047e050104ac00010401050106050000050106050001047e050104ac -00010401050106040001050106050001047e0501043301000430010004260100041d0001 -04010501060400010400050106040001047e050104040100040401000403010204020100 -0415010004040100040001000405010004060100040b010004030102040b0100040b0102 -0405010004120100041c000104010501060300010401050106040001047e050104040100 -040b010004020100041501000403010004020100040c010004120100040b0100040d0100 -04190100041c000104010501060300010402050106030001047e05010401010104000100 -040201020405010004020100040001010403010204020100040001010402010404010100 -0400010204020102040301010400010004010100040001010403010204050100040a0100 -04050102040501000403010204020100040201000402010204050100041b000104010501 -060200010403050106030001047e05010400010004010101040401000405010004020101 -040101000401010004020100040101010401010004030100040301000400010004000100 -04040100040201000401010104010101040101000404010004050100040a010004040100 -0402010004040100040501000402010004020100040101000402010004040100041b0001 -04010501060200010404050106020001047e050104000100040201000404010004050100 -040201000402010004010100040201000401010004070100040301000400010004000100 -040401000402010004020100040101000408010004050100040a01000408010004040100 -040501000402010004020100040101000402010004040100041b00010401050106010001 -0405050106020001047e0501040001000402010004040100040501000402010004020100 -040101040401010004070100040301000400010204040100040201000402010004010100 -0408010004050100040a0100040501030404010004050100040301000400010004020104 -04040100041b000104010501060100010406050106010001047e05010400010004020100 -040401000405010004020100040201000401010004050100040701000403010004080100 -0402010004020100040101000408010004050100040a0100040401000402010004040100 -0405010004030100040001000402010004080100041b0001040105010600000104070501 -06010001047e050104000100040101010404010004050100040201010401010004010100 -040201000401010004070100040401000401010004040100040201000401010104010100 -0408010004050100040b0100040301000402010004040100040501000404010004030100 -0402010004030100041c000104010501060000010408050106000001047e050104010101 -040001000404010004050100040201000400010104030102040201000408010104030101 -040501000403010104000100040101000408010004050100040b01000404010304040100 -04050100040401000404010204040100041c0001040105010001050b06000001047e0501 -0465010004260100041d0001040105010000050d0001047e050104ac000104010501060e -0001047e050104ac0001040105010010047e050104ac000104010501000d05000001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104160101040001000402010004020100040201020402 -010004000101040201000400010104750001040105010001040a05010001047e05010416 -010004000100040001000401010004020100040101000402010004010101040101000401 -01010401010004740001040105010001040a05010001047e050104160100040001000400 -010004020100040101000405010004010100040201000401010004020100047400010401 -05010001040a05010001047e050104160100040001000400010004020100040101000402 -01030401010004020100040101000402010004740001040105010001040a05010001047e -050104160100040001000400010004030100040001000401010004020100040101000402 -0100040101000402010004740001040105010001040a05010001047e0501041601000400 -010004000100040301010402010004020100040101010401010004010101040101000474 -0001040105010001040a05010001047e0501041601000400010004000100040401000403 -01030401010004000101040201000400010104750001040105010001040a05010001047e -050104200100040901000405010004780001040105010001040a05010001047e0501041d -010004000100040a01000405010004780001040105010001040a05010001047e0501041e -0100040b01000405010004780001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e05010416010004220102046e00010401 -05010001040a05010001047e05010416010004240100046e0001040105010001040a0501 -0001047e0501041601000401010004030102040201000400010104020100040001010403 -010204050100046e0001040105010001040a05010001047e050104160100040001000403 -01000402010004010101040101000401010104010100040101000402010004040100046e -0001040105010001040a05010001047e0501041601010404010004020100040101000405 -010004020100040101000402010004040100046e0001040105010001040a05010001047e -050104160101040401040401010004050100040201000401010404040100046e00010401 -05010001040a05010001047e050104160100040001000403010004050100040501000402 -01000401010004080100046e0001040105010001040a05010001047e0501041601000401 -01000402010004020100040101000405010004020100040101000402010004040100046e -0001040105010001040a05010001047e0501041601000402010004020102040201000405 -0100040201000402010204050100046e0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e0501042c0102047c0001040105010001040a05010001047e -0501042e0100047c0001040105010001040a05010001047e050104170102040301020403 -010204050100047c0001040105010001040a05010001047e050104160100040201000401 -010004020100040101000402010004040100047c0001040105010001040a05010001047e -050104160100040901000401010004080100047c0001040105010001040a05010001047e -050104170102040301030402010204050100047c0001040105010001040a05010001047e -0501041a010004010100040201000405010004040100047c0001040105010001040a0501 -0001047e050104160100040201000401010004020100040101000402010004040100047c -0001040105010001040a05010001047e050104170102040301030402010204050100047c -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e0501043301000430010004260100041d0001040105010001 -040a05010001047e050104040100040f0100041501000404010004000100040501000406 -0100040b010004030102040b0100040b01020405010004120100041c0001040105010001 -040a05010001047e050104040100040f0100041501000403010004020100040c01000412 -0100040b0100040d010004190100041c0001040105010001040a05010001047e05010401 -010104000100040201020403010104000100040101000400010104030102040201000400 -010104020104040101000400010204020102040301010400010004010100040001010403 -010204050100040a01000405010204050100040301020402010004020100040201020405 -0100041b0001040105010001040a05010001047e05010400010004010101040101000402 -010004010100040101010401010104010100040101000402010004010101040101000403 -010004030100040001000400010004040100040201000401010104010101040101000404 -010004050100040a01000404010004020100040401000405010004020100040201000401 -01000402010004040100041b0001040105010001040a05010001047e0501040001000402 -010004010100040201000401010004020100040101000402010004010100040201000401 -010004070100040301000400010004000100040401000402010004020100040101000408 -010004050100040a01000408010004040100040501000402010004020100040101000402 -010004040100041b0001040105010001040a05010001047e050104000100040201000401 -010004020100040101000402010004010100040201000401010404010100040701000403 -010004000102040401000402010004020100040101000408010004050100040a01000405 -0103040401000405010004030100040001000402010404040100041b0001040105010001 -040a05010001047e05010400010004020100040101000402010004010100040201000401 -010004020100040101000405010004070100040301000408010004020100040201000401 -01000408010004050100040a010004040100040201000404010004050100040301000400 -01000402010004080100041b0001040105010001040a05010001047e0501040001000401 -010104010100040201000401010004010101040101010401010004010100040201000401 -010004070100040401000401010004040100040201000401010104010100040801000405 -0100040b0100040301000402010004040100040501000404010004030100040201000403 -0100041c0001040105010001040a05010001047e05010401010104000100040201020403 -010104000100040101000400010104030102040201000408010104030101040501000403 -010104000100040101000408010004050100040b01000404010304040100040501000404 -01000404010204040100041c0001040105010001040a05010001047e0501041201000451 -010004260100041d0001040105010001040a05010001047e0501040e0100040201000498 -0001040105010001040a05010001047e0501040f010204990001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e05010416 -010004220102046e0001040105010001040a05010001047e05010416010004240100046e -0001040105010001040a05010001047e0501041601000401010004030102040201000400 -010104020100040001010403010204050100046e0001040105010001040a05010001047e -050104160100040001000403010004020100040101010401010004010101040101000401 -01000402010004040100046e0001040105010001040a05010001047e0501041601010404 -010004020100040101000405010004020100040101000402010004040100046e00010401 -05010001040a05010001047e050104160101040401040401010004050100040201000401 -010404040100046e0001040105010001040a05010001047e050104160100040001000403 -01000405010004050100040201000401010004080100046e0001040105010001040a0501 -0001047e0501041601000401010004020100040201000401010004050100040201000401 -01000402010004040100046e0001040105010001040a05010001047e0501041601000402 -0100040201020402010004050100040201000402010204050100046e0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001047e050104ac00010401 -05010001040a05010001047e050104ac0001040105010001040a05010001047e050104ac -0001040105010001040a05010001047e050104ac0001040105010001040a05010001047e -050104ac0001040105010001040a05010001047e050104ac0001040105010001040a0501 -0001047e050104ac0001040105010001040a05010001047e050104ac0001040105010001 -040a05010001047e050104ac0001040105010001040a05010001040900630410050104ac -0001040105010001040a050100010409006205000410050104ac0001040105010001040a -0501000104090001045f05010410050104ac0001040105010001040a0501000104090001 -045f05010410050104ac0001040105010001040a0501000104090001045f050104100501 -04ac0001040105010001040a0501000104090001045f05010410050104ac000104010501 -0001040a0501000104090001045f05010410050104ac0001040105010001040a05010001 -04090001045f05010410050104ac0001040105010001040a0501000104090001045f0501 -0410050104ac0001040105010001040a0501000104090001042101000417010004230501 -0410050104ac0001040105010001040a0501000104090001042101000417010004230501 -0410050104ac0001040105010001040a0501000104090001042101000406010204030102 -0403010104000100042305010410050104ac0001040105010001040a0501000104090001 -042101000405010004020100040101000402010004010100040101010423050104100501 -04ac0001040105010001040a050100010409000104210100040501000402010004050100 -0401010004020100042305010410050104ac0001040105010001040a0501000104090001 -042101000405010004020100040201030401010004020100042305010410050104ac0001 -040105010001040a05010001040900010421010004050100040201000401010004020100 -0401010004020100042305010410050104ac0001040105010001040a0501000104090001 -042101000405010004020100040101000402010004010100040101010423050104100501 -04ac0001040105010001040a050100010409000104210104040201020403010304020101 -04000100042305010410050104ac0001040105010001040a0501000104090001045f0501 -0410050104ac0001040105010001040a0501000104090001045f05010410050104ac0001 -040105010001040a0501000104090001045f05010410050104ac0001040105010001040a -0501000104090001045f05010410050104ac0001040105010001040a0501000104090001 -045f05010410050104ac0001040105010001040a0501000104090001045f050104100501 -04ac0001040105010001040a0501000104090001045f05010410050104ac000104010501 -0001040a0501000104090001045f05010410050104ac0001040105010001040a05010001 -04090001045f05010410050104ac0001040105010001040a0501000104090001045f0501 -0410050104ac0001040105010001040a050100010409000105610410050104ac00010401 -05010001040a050100010409000005620410050104ac0001040105010001040a05010001 -047e050104ac0001040105010001040a05010001047e050104ac0001040105010001040a -05010001047e050104ac0001040105010001040a05010001047e050104ac000104010501 -0001040a05010001047e050104ac0001040105010001040a05010001047e050104ac0001 -040105010001040a05010001047e050104ac0001040105010001040a05010001047e0501 -04ac0001040105010001040a05010001047e050104ac0001040105010001040a05010001 -047e050104ac0001040105010001040a05010001040900630410050104ac000104010501 -0001040a050100010409006205000410050104ac0001040105010001040a050100010409 -0001045f05010410050104ac0001040105010001040a0501000104090001045f05010410 -050104ac0001040105010001040a0501000104090001045f05010410050104ac00010401 -05010001040a0501000104090001045f05010410050104ac0001040105010001040a0501 -000104090001045f05010410050104ac0001040105010001040a0501000104090001045f -05010410050104ac0001040105010001040a0501000104090001045f05010410050104ac -0001040105010001040a0501000104090001041e010204030102043605010410050104ac -0001040105010001040a0501000104090001041d01000402010004040100043605010410 -050104ac0001040105010001040a0501000104090001041d010004020100040401000403 -0102040301020402010004000101042105010410050104ac0001040105010001040a0501 -000104090001041d01000408010004020100040201000401010004020100040101010401 -0100042005010410050104ac0001040105010001040a0501000104090001041d01000408 -010004020100040201000405010004010100042405010410050104ac0001040105010001 -040a0501000104090001041d010004080100040201040402010304010100042405010410 -050104ac0001040105010001040a0501000104090001041d010004020100040401000402 -0100040501000402010004010100042405010410050104ac0001040105010001040a0501 -000104090001041d01000402010004040100040201000402010004010100040201000401 -0100042405010410050104ac0001040105010001040a0501000104090001041e01020405 -0100040301020403010304010100042405010410050104ac0001040105010001040a0501 -000104090001045f05010410050104ac0001040105010001040a0501000104090001045f -05010410050104ac0001040105010001040a0501000104090001045f05010410050104ac -0001040105010001040a0501000104090001045f05010410050104ac0001040105010001 -040a0501000104090001045f05010410050104ac0001040105010001040a050100010409 -0001045f05010410050104ac0001040105010001040a0501000104090001045f05010410 -050104ac0001040105010001040a0501000104090001045f05010410050104ac00010401 -05010001040a0501000104090001045f05010410050104ac0001040105010001040a0501 -000104090001045f05010410050104ac0001040105010001040a05010001040900010561 -0410050104ac0001040105010001040a050100010409000005620410050104ac00010401 -05010001040a05010001047e050104ac0001040105010001050c0001047e050104ac0001 -040105010000050d0001047e050104ac000104010501060e0001047e050104ac00010401 -05010010047e050104ac0001040105010600000c05000001047e050104ac000104010501 -060000010408050106000001047e050104ac000104010501060100010407050106000001 -047e050104ac000104010501060100010406050106010001047e050104ac000104010501 -060200010405050106010001047e050104ac000104010501060200010404050106020001 -040900630410050104ac0001040105010603000104030501060200010409006205000410 -050104ac00010401050106030001040205010603000104090001045f05010410050104ac -00010401050106040001040105010603000104090001045f05010410050104ac00010401 -050106040001040005010604000104090001045f05010410050104ac0001040105010605 -000005020604000104090001045f05010410050104ac0001040105010605000005010605 -000104090001045f05010410050100ae04010501060605010605000104090001045f0501 -0410050000af04010501060605000606000104090001045f050104c30501001004090001 -041e0102040301020436050104c30500001104090001041d010004020100040401000436 -0501040e05b804180001041d010004020100040401000403010204030102040301020421 -0501040e05b7000004180001041d01000408010004020100040201000401010004020100 -040101000402010004200501040e0501060d00000600009406000001060c000104180001 -041d010004080100040201000402010004010100040501000402010004200501040e0501 -060b0001050006000093050006000003060a000104180001041d01000408010004020100 -04020100040201020402010404200501040e050106090002050106000001049005010600 -00050608000104180001041d010004020100040401000402010004020100040501000401 -010004240501040e05010607000304000501060000010490050106000001040100030606 -000104180001041d01000402010004040100040201000402010004010100040201000401 -01000402010004200501040e050106050003040205010600000104900501060000010403 -00030604000104180001041e01020405010004030102040301020403010204210501040e -05010603000304040501060000010490050106000001040500030602000104180001045f -0501040e0501060100030406050106000001049005010600000104070003060000010418 -0001045f0501040e05050408050106000001049005010600000104080503000104180001 -045f0501040e050106010503040605010600000104900501060000010407050306000001 -04180001045f0501040e0501060305030404050106000001049005010600000104050503 -0602000104180001045f0501040e05010605050304020501060000010490050106000001 -040305030604000104180001045f0501040e050106070503040005010600000104900501 -06000001040105030606000104180001045f0501040e0501060905040600000104900501 -0600000105030608000104180001045f0501040e0501060b050206000001059206000001 -0501060a000104180001045f0501040e0501060d0500060000000593060000000500060c -000104180001045f0501040e050100b6041800010561040e050000b704180000056204ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04bb -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 85 200 356 -%%EOF diff --git a/lib/appmon/doc/src/main_win.gif b/lib/appmon/doc/src/main_win.gif deleted file mode 100644 index 36d742e91e..0000000000 Binary files a/lib/appmon/doc/src/main_win.gif and /dev/null differ diff --git a/lib/appmon/doc/src/main_win.ps b/lib/appmon/doc/src/main_win.ps deleted file mode 100644 index abb12d733b..0000000000 --- a/lib/appmon/doc/src/main_win.ps +++ /dev/null @@ -1,691 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./main_win.tmp.eps) -%%CreationDate: (Tue Jun 12 17:57:00 2001) -%%BoundingBox: 0 26 377 164 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 26 377 164 -userdict begin -%%BeginData: -DisplayImage -0 26 -377.000000 138.000000 -12 -520 191 -1 -0 -0 -16 -ffffff -000000 -708090 -b03060 -d9d9d9 -808080 -00ff00 -666666 -999999 -ececc5 -000000 -000000 -000000 -000000 -000000 -000000 -03ff03ff03ff03ff03ff0305040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400031b040c03e4040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000307040c03050400030a0400030a040103030405030104050301 -040103040401030304030303040103020401030b0403031e0401032c0401030004010300 -040103000401031104010305040403020401030404010305040103000401030904000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003080400030204000302 -04000302040003050400030a040003090403030204010302040103000401030204010300 -04010304040103020401030104010302040203010401030a040103010401034c04010303 -040103000401031104010303040103040400030804010308040103080400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003070400030204000302 -040003020400030504000303040203030400030904000301040003020401030204010300 -040103020401030004020302040203010401030304010301040203010401030104010305 -040103030401030004010302040103010403030104010300040303020401030004010301 -040303010401030104010301040103050403030104010300040103060401030004010300 -040103000401030004010300040103020403030104010300040503020400030604000300 -040103010401030004010300040103000403030004010309040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030804000302040003020400030204000305 -040003020404030204000308040103010401030104010302040103000401030204010300 -040203020402030104010303040103010401030004000300040103010401030504010303 -040103000401030204010300040103010401030004060302040103000401030004010301 -040103000401030104010301040103040401030104010300040203000401030404010300 -040203000401030004010300040203000401030004010301040103000404030004010302 -040003020401030004000300040003000401030004010300040203000406030004010308 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000307 -040403020400030204000305040003010406030104000308040103010401030104050301 -040503010403030004030301040103030401030104010300040003000401030904010303 -040103010401030004010301040103010401030004020302040103000401030104010300 -040103010401030104010300040103000401030504010301040103000401030104010304 -040103010401030004010300040103000401030104010300040103010401030004020302 -040103020400030104000301040003010400030004010300040103010401030004020301 -040103000401030904000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003080400030604000302040003050400030104060301040003080405030104010305 -040103050401030004000300040003000401030104010303040103010401030104020309 -040103030401030104010300040103010405030004010303040103000401030104010300 -040503010401030004010300040103050401030104010300040103010401030404010301 -040103000401030004010300040103010401030004050300040103030401030204000300 -040003020400030104000300040103000401030104010300040103020401030004010308 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000307 -040003060400030204000305040003010406030104000307040103030401030004010305 -040103050401030004020300040103010401030304010301040103010402030904010303 -040103020402030204010304040103040402030204010300040103050401030004010300 -040103050401030104010300040103010401030404010301040103000401030004010300 -040103010401030004010304040103030401030204000300040003010401030004000301 -040103000401030104010300040103020401030004010309040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030804000306040003020400030504000302 -040403020400030704010303040103000401030504010305040103010400030104010302 -040103010401030204010302040103010401030604010301040103030402030204010301 -040103000401030404020302040103000401030104010302040103010401030604010301 -040103000401030104010304040103000402030004010300040103000402030004010300 -040103010401030004010303040103000400030004000301040103000401030204010300 -040103000402030004010302040103000401030804000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030704080302040003050400030304020303 -040003070401030304010300040103050401030504010301040003010401030304030303 -040103020401030104010307040303050400030404030301040103050400030304010301 -040303030401030104010307040303010401030104010305040103000401030004010300 -040103000401030004010302040303010401030404010302040003080401030104010300 -040103000401030204010300040103090400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000300040003080400030a040003050400030a040003be0404032004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003000400030004000300040003070400030a -040003050400030a040003e5040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003080400030a04000305040c03e404000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000300040003000400030004000307040c03f8040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000300040003ff03ff03ff03ff032802ff02ff02ff02ff -020f00ff00ff00ff00ff000e0500000104ff04ff04030501000104ff04ff040305010001 -04ff04ff04030501000104ff04ff04030501000104ff04ff040305010001040401040404 -01000403010204130100040c01000406010004200102040b010004060100041f01000402 -0100040c010004ff043601000402010004090102040c0501000104040100040f01000413 -0100040c01000427010004020100040a01000427010104010100040c010004ff04360100 -04020100040b0100040c0501000104040100040601020405010004030102040b01000400 -010004030102040201040402010204030102040201000400010104030102040a01000402 -01000401010004000101040201040402010204030102040201000400010104030102040a -010104010100040201020403010104000100040201020403010204ff0429010004020100 -040201020405010004020100040001010405050100010404010004080100040501000402 -010004020100040a01000400010004020100040201000403010004060100040201000402 -010004010101040101000401010004020100040901000402010004010101040101000403 -010004060100040201000402010004010101040101000401010004020100040901000400 -010004000100040101000402010004010100040101010401010004020100040101000402 -010004ff0428010004020100040101000402010004040100040201010401010004040501 -00010404010304050100040501000402010004020100040a010004000100040201000407 -0100040601000402010004020100040101000402010004010100040d0100040201000401 -01000402010004030100040601000402010004020100040101000402010004010100040d -010004000100040001000401010004020100040101000402010004010100040201000401 -010004ff042c010404010100040201000404010004020100040201000404050100010404 -010004080100040501000402010404090100040201000401010004070100040601000402 -010004020100040101000402010004020102040a01000402010004010100040201000403 -0100040601000402010004020100040101000402010004020102040a0100040101010401 -0100040201000401010004020100040101040402010204ff042901000402010004010104 -04040100040201000402010004040501000104040100040801000405010004020100040d -010404010100040701000406010004020100040201000401010004020100040501000409 -010004020100040101000402010004030100040601000402010004020100040101000402 -010004050100040901000401010104010100040201000401010004020100040101000409 -010004ff0428010004020100040101000408010004020100040201000404050100010404 -010004080100040501000402010004020100040901000402010004010100040201000403 -010004060100040201000402010004010100040201000401010004020100040901000402 -010004010101040101000403010004060100040201000402010004010100040201000401 -010004020100040901000402010004010100040201000401010004010101040101000402 -0100040101000402010004ff042801000402010004010100040201000404010004020101 -0401010004040501000104040100040801000405010004030102040a0100040201000402 -0102040501010404010004030102040201000402010004020102040b0102040201000400 -0101040501010404010004030102040201000402010004020102040a0100040201000402 -01020403010104000100040201020403010204ff04290100040201000402010204050100 -04020100040001010405050100010468010004ff048f01000408050100010468010004ff -048f01000408050100010468010004ff048f010004080501000104ff04ff040305010001 -04ff04ff04030501000104ff04ff04030501000105ff05ff0505000005ff05ff050604ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04cf01ff01ff -010704ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff -04ff044c01150400010104010100041a017204ff045d0100081201010400010104000101 -041a017204ff045d01000812010404010100041a017204ff045d01000812010104000101 -04010100041a017204ff045d0100081201010400010104010100041a017204ff045d0114 -04050100041a011909010100090101000901010009010111090101050904010209010104 -09010105090101000901011704ff045d0100081201000421011909010103090101000901 -0111090101030901010409000108090101080901011704ff045d01000812010004210116 -090101000901010009010100090101000901010009010102090301010901010009050102 -090001060900010009010101090101000901010009010100090301000901011704ff045d -010008120100042101150901010009020100090101000901010009020100090101000901 -010109010100090401000901010209000102090101000900010009000100090101000901 -010009020100090601000901011704ff045d010008120100042101150901010109010100 -090101000901010009010101090101000901010109010100090201020901010209000101 -090001010900010109000100090101000901010109010100090201010901010009010117 -04ff045d0114042101150901010109010100090101000901010009010101090101000905 -010009010103090101020900010009000102090001010900010009010100090101010901 -010009010102090101000901011704ff045d010008120100042101150901010109010100 -090101000901010009010101090101000901010409010103090101020900010009000101 -090101000900010109010100090101010901010009010102090101000901011704ff045d -010008120100042101150901010009020100090101000901010009020100090101000901 -010109010100090101030901010009000100090001010901010009010102090101000901 -01000902010009010102090101000901011704ff045d0100081201000421011609010100 -090101000901010009010100090101000901010209030101090101040901010209000108 -09010101090101000901010009010102090101000901011704ff045d0100081201000421 -013d0904012f04ff045d01140421017204ff045d0100081201000421017204ff045d0100 -081201000421017204ff045d0100081201000421017204ff045d01000812010004210172 -04ff045d01140421017204ff045d01000812010004ff04f201000812010004ff04f20100 -0812010004ff04f201000812010004ff04f2011404ff04f201000812010004ff04f20100 -0812010004ff04f201000812010004ff04f201000812010004ff04f201140444010004ff -04ac0100081201000444010004ff04ac0100081201000444010004ff04ac010008120100 -0444010004ff04ac0100081201000444010004ff04ac01140444010004ff04ac01000812 -01000444010004ff04ac0100081201000444010004ff04ac0100081201000444010004ff -04ac0100081201000444010004ff04ac01140444010004ff04ac01000812010004440100 -04ff04ac0100081201000444010004ff04ac0100081201000444010004ff04ac01000812 -01000444010004ff04ac01140444010004ff04ac0100081201000444010004ff04ac0100 -081201000444010004ff04ac0100081201000444010004ff04ac01000812010004440100 -04ff04ac0114044401a004ff040c01000812010004440100044e0100044e010004ff040c -01000812010004440100044e0100044e010004ff040c01000812010004440100044e0100 -044e010004ff040c01000812010004440100044e0100044e010004ff040c011404440100 -044e0100044e010004ff040c01000812010004440100044e0100044e010004ff040c0100 -0812010004440100044e0100044e010004ff040c01000812010004440100044e0100044e -010004ff040c01000812010004440100044e0100044e010004ff040c011404440100044e -0100044e010004ff040c01000812010004440100044e0100044e010004ff040c01000812 -010004440100044e0100044e010004ff040c01000812010004440100044e0100044e0100 -04ff040c01000812010004440100044e0100044e010004ff040c011404440100044e0100 -044e010004ff040c01000812010004440100044e0100044e010004ff040c010008120100 -04440100044e0100044e010004ff040c01000812010004440100044e0100044e010004ff -040c01000812010004210045040900450409004504ea0114042000450701040700450701 -04070045070104e901000812010004200001044307010407000104430701040700010443 -070104e901000812010004200001044307010407000104430701040700010443070104e9 -01000812010004200001044307010407000104430701040700010443070104e901000812 -010004200001044307010407000104430701040700010443070104e9011404200001040f -0101041e01010410070104070001042a010104160701040700010443070104e901000612 -0101041f0001040f0101041e01010410070104070001042a010104160701040700010443 -070104e90100061201010403010204180001040f01010401010104010103040101010400 -010304000101040201030401010104100701040700010416010304020103040201030401 -01010416070104070001040d010004000102040001020401010104020101040101030401 -0101040001010401010104000101040f070104e901000612010104020101040001010417 -0001040f0101040001010401010104010101040001070400010104000101040101010400 -010104100701040700010415010104010101040001010401010104000101040101010400 -01010416070104070001040d010104010101040101010400010104020101040001010401 -010104000102040001010400010204000101040e070104e9010006120101040201010400 -010104170001040f01030402010104010101040001020401010104010101040001010401 -010104000101041007010407000104150102040701010400010204030101041607010407 -0001040d0101040101010401010104010101040001010405010104000101040101010400 -010104010101040e070104e901170401010204180001040f010304020105040001010402 -010104010101040001050400010104100701040700010417010204020104040201020401 -01010416070104070001040d010104010101040101010401010104000101040201040400 -0101040101010400010104010101040e070104e901010403010204010101040201030400 -01020402010004190001040f010104000101040101010404010104020101040101010400 -010104040101041007010407000104180102040001010401010104030102040001010416 -070104070001040d01010401010104010101040201020402010104010101040001010401 -01010400010104010101040e070104e90101040201010400010104000102040001010400 -010104210001040f01010401010104000101040101010400010104020101040101010400 -010104010101040001010410070104070001041501010401010104000101040101010400 -010104010101040001010416070104070001040d01010401010104010101040201020402 -01010401010104000102040001010400010204000101040e070104e90101040201010400 -010104000102040001010400010104210001040f01010402010104000103040101010402 -010104010101040101030401010104100701040700010416010304020102040001010400 -0103040101010416070104070001040d0101040101010401010104030101040301020400 -0103040001010401010104000101040f070104e901030401010204010102040101030421 -000104430701040700010443070104070001041b0100040a0101040401010412070104ea -01020402010004030100040301000423000104430701040700010443070104070001041a -0101040a0101040401010412070104ff041f000104430701040700010443070104070001 -04190101040b0101040401010412070104ff041f00010443070104070001044307010407 -00010443070104ff041f0001044307010407000104430701040700010443070104ff041f -0000074604070000074604070000074604ff04200746040807460408074604ff04ff04ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff042c01ff -01ff010704ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff -04ff04ff0447 -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 26 377 164 -%%EOF diff --git a/lib/appmon/doc/src/note.gif b/lib/appmon/doc/src/note.gif deleted file mode 100644 index 6fffe30419..0000000000 Binary files a/lib/appmon/doc/src/note.gif and /dev/null differ diff --git a/lib/appmon/doc/src/notes.xml b/lib/appmon/doc/src/notes.xml deleted file mode 100644 index ac17c555f7..0000000000 --- a/lib/appmon/doc/src/notes.xml +++ /dev/null @@ -1,300 +0,0 @@ - - - - -
- - 20042013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Appmon Release Notes - - nil - nil - nil - notes.xml -
-

This document describes the changes made to the Appmon application.

- -
Appmon 2.1.14.2 - -
Improvements and New Features - - -

- Misc build updates

-

- Own Id: OTP-10784

-
- -

- The backend module appmon_info.erl is moved from appmon - application to runtime_tools. This allows appmon to be - run from a remote erlang node towards a target node which - does not have appmon (and its dependencies) installed, as - long as runtime_tools is installed there.

-

- Own Id: OTP-10786

-
-
-
- -
- -
Appmon 2.1.14.1 - -
Improvements and New Features - - -

The GS applications is now deprecated and will be - removed in the R16 release. The following GS-based - applications have been superseded by the Observer - application and will removed in R16: Appmon, Pman, - Tv.

-

- *** POTENTIAL INCOMPATIBILITY ***

-

- Own Id: OTP-9907

-
-
-
- -
- -
Appmon 2.1.14 - -
Improvements and New Features - - -

- Eliminate use of deprecated regexp module

-

- Own Id: OTP-9810

-
- -

- Miscellaneous documentation build updates

-

- Own Id: OTP-9813

-
-
-
- -
- -
Appmon 2.1.13 - -
Improvements and New Features - - -

- An obsolete compiler directive for native code generation - was removed from a source file.

-

- Own Id: OTP-8839

-
-
-
- -
- -
Appmon 2.1.12 - -
Improvements and New Features - - -

- Warnings due to new autoimported BIFs removed

-

- Own Id: OTP-8674 Aux Id: OTP-8579

-
-
-
- -
- -
Appmon 2.1.11 - -
Improvements and New Features - - -

The documentation is now possible to build in an open - source environment after a number of bugs are fixed and - some features are added in the documentation build - process.

-

- The arity calculation is updated.

-

- The module prefix used in the function names for - bif's are removed in the generated links so the links - will look like - "http://www.erlang.org/doc/man/erlang.html#append_element-2" - instead of - "http://www.erlang.org/doc/man/erlang.html#erlang:append_element-2".

-

- Enhanced the menu positioning in the html - documentation when a new page is loaded.

-

- A number of corrections in the generation of man - pages (thanks to Sergei Golovan)

-

- The legal notice is taken from the xml book file so - OTP's build process can be used for non OTP - applications.

-

- Own Id: OTP-8343

-
-
-
- -
- -
Appmon 2.1.10.2 - -
Improvements and New Features - - -

- The documentation is now built with open source tools - (xsltproc and fop) that exists on most platforms. One - visible change is that the frames are removed.

-

- Own Id: OTP-8201

-
-
-
- -
- -
- Appmon 2.1.10.1 - -
- Improvements and New Features - - -

- Updated the application with new tags for automatic updates - of copyright notices. -

-

Own Id: OTP-7851

-
-
-
-
- -
- Appmon 2.1.9 - -
- Fixed Bugs and Malfunctions - - -

Fixed dialyzer warning in .

-
-
-
-
- -
- Appmon 2.1.8 - -
- Fixed Bugs and Malfunctions - - -

Removed some dead code from the and - modules. Also rewritten large parts - of to make it easier to read and more - efficient.

-

Own Id: OTP-6534

-
-
-
-
- -
- Appmon 2.1.7 - -
- Fixed Bugs and Malfunctions - - -

Appmon now handles a process name containing the - character '@' correctly. (Thanks to Mikael Magnusson).

-

Own Id: OTP-6308

-
- -

The "Send" button in the application window was broken, - it always failed (silently).

-

Own Id: OTP-6333

-
-
-
-
- -
- Appmon 2.1.6 - -
- Improvements and New Features - - -

Internal change only (using a private digraph instead of - a public one).

-

Own Id: OTP-5983

-
- -

Notification windows are now centered over the parent - window (if possible).

-

Own Id: OTP-6010 Aux Id: OTP-5987

-
- -

Removed some dead code from , - discovered by Dialyzer.

-

Own Id: OTP-6040

-
-
-
-
- -
- Appmon 2.1.5 - -
- Improvements and New Features - - -

Eliminated 5 discrepancies found by Dialyzer in the - Appmon application.

-

Own Id: OTP-5633

-
-
-
-
- -
- Appmon 2.1.4 - -
- Fixed Bugs and Malfunctions - - -

The graphic applications now search for HTML - documentation in the correct place.

-

Own Id: OTP-5381

-
-
-
-
-
- diff --git a/lib/appmon/doc/src/part.xml b/lib/appmon/doc/src/part.xml deleted file mode 100644 index c9766d39ca..0000000000 --- a/lib/appmon/doc/src/part.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - -
- - 20002013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Appmon User's Guide - - - - -
- -

The Application Monitor, Appmon, is a graphical utility used - to supervise applications executing either locally or on remote nodes. - The process tree of an application can furthermore be monitored.

-
- -
- diff --git a/lib/appmon/doc/src/part_notes.xml b/lib/appmon/doc/src/part_notes.xml deleted file mode 100644 index 8b1b8fe39e..0000000000 --- a/lib/appmon/doc/src/part_notes.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - -
- - 20042013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Appmon Release Notes - Ingela Anderton Andin - - 2004-09-07 - - part_notes.sgml -
- -

The Application Monitor, Appmon, is a graphical utility - used to supervise applications executing either locally or on - remote nodes. The process tree of an application can furthermore - be monitored.

-
- -
- diff --git a/lib/appmon/doc/src/pinfo_win.gif b/lib/appmon/doc/src/pinfo_win.gif deleted file mode 100644 index fda0900436..0000000000 Binary files a/lib/appmon/doc/src/pinfo_win.gif and /dev/null differ diff --git a/lib/appmon/doc/src/pinfo_win.ps b/lib/appmon/doc/src/pinfo_win.ps deleted file mode 100644 index d47d7d47a9..0000000000 --- a/lib/appmon/doc/src/pinfo_win.ps +++ /dev/null @@ -1,1353 +0,0 @@ -%!PS-Adobe-3.0 EPSF-3.0 -%%Creator: (ImageMagick) -%%Title: (./pinfo_win.tmp.eps) -%%CreationDate: (Tue Jun 12 18:01:56 2001) -%%BoundingBox: 0 73 377 347 -%%DocumentData: Clean7Bit -%%LanguageLevel: 1 -%%Pages: 0 -%%EndComments - -%%BeginDefaults -%%PageOrientation: Portrait -%%EndDefaults - -%%BeginProlog -% -% Display a color image. The image is displayed in color on -% Postscript viewers or printers that support color, otherwise -% it is displayed as grayscale. -% -/buffer 512 string def -/byte 1 string def -/color_packet 3 string def -/pixels 768 string def - -/DirectClassPacket -{ - % - % Get a DirectClass packet. - % - % Parameters: - % red. - % green. - % blue. - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/DirectClassImage -{ - % - % Display a DirectClass image. - % - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { DirectClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayDirectClassPacket } image - } ifelse -} bind def - -/GrayDirectClassPacket -{ - % - % Get a DirectClass packet; convert to grayscale. - % - % Parameters: - % red - % green - % blue - % length: number of pixels minus one of this color (optional). - % - currentfile color_packet readhexstring pop pop - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/GrayPseudoClassPacket -{ - % - % Get a PseudoClass packet; convert to grayscale. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - color_packet 0 get 0.299 mul - color_packet 1 get 0.587 mul add - color_packet 2 get 0.114 mul add - cvi - /gray_packet exch def - compression 0 gt - { - /number_pixels 1 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add def - } ifelse - 0 1 number_pixels 1 sub - { - pixels exch gray_packet put - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassPacket -{ - % - % Get a PseudoClass packet. - % - % Parameters: - % index: index into the colormap. - % length: number of pixels minus one of this color (optional). - % - currentfile byte readhexstring pop 0 get - /offset exch 3 mul def - /color_packet colormap offset 3 getinterval def - compression 0 gt - { - /number_pixels 3 def - } - { - currentfile byte readhexstring pop 0 get - /number_pixels exch 1 add 3 mul def - } ifelse - 0 3 number_pixels 1 sub - { - pixels exch color_packet putinterval - } for - pixels 0 number_pixels getinterval -} bind def - -/PseudoClassImage -{ - % - % Display a PseudoClass image. - % - % Parameters: - % class: 0-PseudoClass or 1-Grayscale. - % - currentfile buffer readline pop - token pop /class exch def pop - class 0 gt - { - currentfile buffer readline pop - token pop /depth exch def pop - /grays columns 8 add depth sub depth mul 8 idiv string def - columns rows depth - [ - columns 0 0 - rows neg 0 rows - ] - { currentfile grays readhexstring pop } image - } - { - % - % Parameters: - % colors: number of colors in the colormap. - % colormap: red, green, blue color packets. - % - currentfile buffer readline pop - token pop /colors exch def pop - /colors colors 3 mul def - /colormap colors string def - currentfile colormap readhexstring pop pop - systemdict /colorimage known - { - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { PseudoClassPacket } false 3 colorimage - } - { - % - % No colorimage operator; convert to grayscale. - % - columns rows 8 - [ - columns 0 0 - rows neg 0 rows - ] - { GrayPseudoClassPacket } image - } ifelse - } ifelse -} bind def - -/DisplayImage -{ - % - % Display a DirectClass or PseudoClass image. - % - % Parameters: - % x & y translation. - % x & y scale. - % label pointsize. - % image label. - % image columns & rows. - % class: 0-DirectClass or 1-PseudoClass. - % compression: 0-RunlengthEncodedCompression or 1-NoCompression. - % hex color packets. - % - gsave - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - x y translate - currentfile buffer readline pop - token pop /x exch def - token pop /y exch def pop - currentfile buffer readline pop - token pop /pointsize exch def pop - /Helvetica findfont pointsize scalefont setfont - x y scale - currentfile buffer readline pop - token pop /columns exch def - token pop /rows exch def pop - currentfile buffer readline pop - token pop /class exch def pop - currentfile buffer readline pop - token pop /compression exch def pop - class 0 gt { PseudoClassImage } { DirectClassImage } ifelse - grestore -} bind def -%%EndProlog -%%Page: 1 1 -%%PageBoundingBox: 0 73 377 347 -userdict begin -%%BeginData: -DisplayImage -0 73 -377.000000 274.000000 -12 -580 421 -1 -0 -0 -8 -ffffff -000000 -708090 -b03060 -d9d9d9 -c3c3c3 -828282 -000000 -03ff03ff03ff03ff03ff035e040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400031a040c03c50400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003000400030004000308040c03050400030a0400030a0401030304050301 -0405030104010304040103030403030304010302040103090405032d040103090402031e -040103010401031704000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000307040003020400030204000302040003050400030a0400030904030302 -040103020401030004010302040103000401030404010302040103010401030204020301 -04010309040103020401032c04010308040103200401031a040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000308040003020400030204000302 -040003050400030304020303040003090400030104000302040103020401030004010302 -040103000402030204020301040103030401030104020301040103010401030504010302 -040303000401030004030302040303020403030204030302040303060401030004010300 -040103010403030104030301040103000402030004020300040203020403030104030300 -0401030104030301040103000401030a0400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003070400030204000302040003020400030504000302 -040403020400030804010301040103010401030204010300040103020401030004020302 -040203010401030304010301040103000400030004010301040103050401030204080301 -040103000401030104010300040103010401030004010301040103000401030104010305 -040103000402030004010301040103010401030104010300040603010401030104010300 -040103010401030104010301040103000401030104010300040203000401030804000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030804040302 -040003020400030504000301040603010400030804010301040103010405030104050301 -040303000403030104010303040103010401030004000300040103090405030004020301 -040103010401030004010304040103010401030004020303040203080401030004010301 -040103010401030104010301040103000402030104010301040103010401030404010301 -040103010401030004010301040103000401030104010309040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000307040003060400030204000305 -040003010406030104000308040503010401030504010305040103000400030004000300 -040103010401030304010301040103010402030904010304040103020401030104010300 -040103040405030204020303040203060401030004010301040103010401030104010301 -040103000401030204010301040103010401030104040301040103010401030004010301 -040103000401030104010308040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000308040003060400030204000305040003010406030104000307 -040103030401030004010305040103050401030004020300040103010401030304010301 -040103010402030904010304040103020401030104010300040103040401030704020303 -040203050401030004010301040103010401030104010301040103000401030204010301 -040103010401030004010301040103010401030104010300040103010401030004010301 -040103090400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003070400030604000302040003050400030204040302040003070401030304010300 -040103050401030504010301040003010401030204010301040103020401030204010301 -040103050401030404010302040103010401030004010301040103000401030104010300 -040103010401030004010301040103050401030004010301040103010401030104010301 -040103000401030204010301040103010401030004010301040103010401030004020300 -040103010401030004010301040103080400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003080408030204000305040003030402030304000307 -040103030401030004010305040103050401030104000301040103030403030304010302 -040103010401030504010304040103030403030204030302040303020403030204030306 -040103000401030104010301040103020403030104010302040103010401030104010301 -040203000401030104010300040103010403030104010301040103090400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003070400030a04000305 -0400030a040003c504000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -04000300040003080400030a040003050400030a040003c6040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -0400030004000300040003000400030004000300040003070400030a04000305040c03c5 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000308 -040c03d90400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003000400030004000300040003000400030004000300040003000400030004000300 -040003ff03ff03ff03ff039f02ff02ff02ff02ff028700ff00ff00ff00ff008606000001 -04ff04ff043f0601000104ff04ff043f0601000104ff04ff043f0601000104ff04ff043f -0601000104ff04ff043f0601000104040104040401000403010204ff04ff042806010001 -04040100040f010004ff04ff0428060100010404010004060102040501000403010204ff -04ff042106010001040401000408010004050100040201000402010004ff04ff04200601 -0001040401030405010004050100040201000402010004ff04ff04200601000104040100 -04080100040501000402010404ff04ff0420060100010404010004080100040501000402 -010004ff04ff042406010001040401000408010004050100040201000402010004ff04ff -0420060100010404010004080100040501000403010204ff04ff04210601000104ff04ff -043f0601000104ff04ff043f0601000104ff04ff043f0601000104ff04ff043f06010001 -04ff04ff043f0601000104ff04ff043f0601000106ff06ff0641000006ff06ff064204ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff0484061204ff04ff04300611 -0000040106ff06ff062c040106010506060005060001040106ff06ff062b000004010601 -0505000006000506000104010601040a0101045f0101047801010404010104ff04370001 -0401060105050000060105050001040106010409010004600100047c01000405010004ff -043600010401060105040001060105050001040106010409010004060100040c01000404 -010004060100040a01020418010204030102040b0100042701020405010004020100040f -0100040c01000404010004180104040301000405010004ff043600010401060105040001 -04000601050400010401060104090100041a010004140100041a010004050100040b0100 -04290100040901000423010004180100040701000405010004ff04360001040106010503 -000104010601050400010401060104090100040401020402010004000101040301020402 -0104040201020403010204050100040a0102040301020405010004050100040b01000403 -01000400010104020100040001010403010204030102040c010004030102040201000400 -0101040a0102040201000400010104030102040201040408010004000101040901000407 -01000405010004ff04360001040106010503000104020601050300010401060104090100 -040601000402010104010100040401000404010004060100040201000402010004040100 -040901000402010004010100040201000404010004050100040b01000403010104010100 -040101010401010004010100040201000401010004020100040b01000405010004020101 -04010100040b010004020101040101000404010004040100040a01010401010004080103 -040401000405010004ff0436000104010601050200010403060105030001040106010407 -010104070100040201000402010004040100040401000406010004060100040401000409 -010004090100040401000405010004090101040401000402010004010100040501000402 -010004010100040f0100040501000402010004020100040b010004020100040201000404 -010004040100040a010004020100040c0100040401010404010104ff0434000104010601 -050200010404060105020001040106010409010004060100040201000402010004040100 -0404010004060100040301030404010004090100040601030404010004050100040b0100 -040301000402010004010100040501000402010004010100040f01000405010004020100 -04020100040b010004020100040201000404010004040100040a010004020100040c0100 -040301000405010004ff0436000104010601050100010405060105020001040106010409 -010004060100040201000402010004040100040401000406010004020100040201000404 -01000409010004050100040201000404010004050100040b010004030100040201000401 -0100040501000402010004010100040f0100040501000402010004020100040b01000402 -0100040201000404010004040100040a0100040201000408010004020100040301000405 -010004ff0436000104010601050100010406060105010001040106010409010004060100 -040201000402010004040100040401000406010004020100040201000404010004090100 -040201000401010004020100040401000405010004040101040401000403010104010100 -0401010004050100040201000401010004020100040b0100040501000402010104010100 -040301010405010004020100040201000404010004040100040a01010401010004030101 -040201000402010004030100040501000405010104ff042e000104010601050000010407 -060105010001040106010409010004060100040201000402010004040100040501010404 -01000403010304040100040a010204030103040401000405010004040101040401000403 -010004000101040201000406010204030102040c01000405010004020100040001010404 -010104050100040201000402010004040100040501010408010004000101040401010403 -010204040100040501000405010104ff042e000104010601050000010408060105000001 -0401060104090100043301050420010004040100040301000419010504190100041d0105 -0401010004080100040b0100040501000406010004ff042e0001040106010001060b0500 -000104010601040a0101045601010406010104010100043701010426010004060101040a -0101040401010405010104ff042f0001040106010000060d000104010601047001000460 -010004ff0454000104010601050e000104010601040a01010463010104ff04b500010401 -0601050e000104010601040901000467010004ff04b4000104010601050e000104010601 -04090100040c0100040c01000429010004040100040601000412010004ff04b400010401 -0601050e00010401060104090100040c0100040c0100042f0100041a010004ff04b40001 -04010601050e000104010601040901000404010204020104040201020402010404010100 -040201000402010204090100040201000402010204030102040201040402010204020100 -0400010104030101040001000403010004ff04b4000104010601050e0001040106010409 -010004030100040201000403010004030100040201000403010004030100040201000401 -010004020100040801000402010004010100040201000404010004040100040601000402 -01010401010004010100040101010403010004ff04b4000104010601050e000104010601 -0407010104040100040701000407010004030100040301000402010004010100040c0100 -040001000400010004050100040401000404010004060100040201000402010004010100 -040201000404010104ff04b2000104010601050e00010401060104090100040401020404 -010004040103040301000403010004020100040201020409010004000100040001000402 -0103040401000404010004060100040201000402010004010100040201000403010004ff -04b4000104010601050e0001040106010409010004070100040301000403010004020100 -040301000403010004020100040501000408010004000100040001000401010004020100 -040401000404010004060100040201000402010004010100040201000403010004ff04b4 -000104010601050e00010401060104090100040301000402010004030100040301000402 -010004030100040301000401010104010100040201000403010104020100040001000400 -010004010100040201000404010004040100040601000402010004020100040101000401 -0101040301000405010104ff04ac000104010601050e0001040106010409010004040102 -040501010402010304040101040201010400010004020102040401010403010004000100 -040301030404010004050101040401000402010004020100040201010400010004030100 -0405010104ff04ac000104010601050e0001040106010409010004300100043001000403 -01000406010004ff04ac000104010601050e000104010601040a0101042c0101042d0100 -04020100040101010405010104ff04ad000104010601050e000104010601046a010204ff -04ba000104010601050e000104010601040a01010486010104ff0492000104010601050e -00010401060104090100048a010004ff0491000104010601050e00010401060104090100 -04660102041901010404010004ff0491000104010601050e000104010601040901000468 -010004180100040101000403010004ff0491000104010601050e00010401060104090100 -040301010400010004030102040301020403010204030102040301010400010004020102 -040a010104000100040101000402010004020102040201000402010004020102040c0100 -040301020402010004000101040a0100040101000403010004ff0491000104010601050e -000104010601040901000403010004000100040001000401010004020100040101000402 -010004010100040201000401010004020100040101000401010104010100040201000408 -010004010101040101000402010004010100040201000401010004020100040101000402 -0100040b01000402010004020100040101010401010004090100040101000403010004ff -0491000104010601050e0001040106010407010104040100040001000400010004010100 -040201000401010004050100040901000401010004020100040101000402010004080100 -040201000401010004020100040101000402010004010100040201000401010004020100 -040b01000402010004020100040101000402010004090100040101000404010104ff048f -000104010601050e00010401060104090100040301000400010004000100040101040402 -010204030102040301030401010004020100040101040408010004020100040101000402 -010004010104040101000402010004010104040b01000402010404010100040201000409 -0100040101000403010004ff0491000104010601050e0001040106010409010004030100 -040001000400010004010100040901000405010004010100040201000401010004020100 -04010100040c010004020100040101000402010004010100040501000402010004010100 -040f010004020100040501000402010004090100040101000403010004ff049100010401 -0601050e0001040106010409010004030100040001000400010004010100040201000401 -010004020100040101000402010004010100040201000401010004010101040101000402 -010004080100040101010401010004010101040101000402010004010100040101010401 -010004020100040b01000402010004020100040101000402010004030101040301000401 -0100040301000405010104ff0489000104010601050e0001040106010409010004030100 -040001000400010004020102040301020403010204030103040201010400010004020102 -040a010104000100040201010400010004020102040301010400010004020102040c0100 -0403010204020100040201000403010104040101040401000405010104ff048900010401 -0601050e00010401060104090100042a01000407010504050100041c010504190100040b -01000406010004ff0489000104010601050e000104010601040a01010424010004020100 -04130100043a0101040a01010405010104ff048a000104010601050e0001040106010432 -01020414010004ff04dc000104010601050e000104010601040a0101044e010104ff04ca -000104010601050e0001040106010409010004430103040101030404010004ff04c90001 -04010601050e0001040106010409010004430100040701000404010004ff04c900010401 -0601050e0001040106010409010004430100040701000404010004ff04c9000104010601 -050e00010401060104090100040301010400010004030102040301020403010204030102 -04030101040001000402010204030102040a0100040701000404010004ff04c900010401 -0601050e0001040106010409010004030100040001000400010004010100040201000401 -010004020100040101000402010004010100040201000401010004010101040101000402 -0100040101000402010004090100040701000404010004ff04c9000104010601050e0001 -040106010407010104040100040001000400010004010100040201000401010004050100 -040901000401010004020100040101000402010004010100040d01000407010004050101 -04ff04c70001040106010010040106010409010004030100040001000400010004010104 -04020102040301020403010304010100040201000401010404020102040a010004070100 -0404010004ff04c9000104010601000d0600000104010601040901000403010004000100 -040001000401010004090100040501000401010004020100040101000402010004010100 -0409010004090100040701000404010004ff04c90001040106010001040a060100010401 -060104090100040301000400010004000100040101000402010004010100040201000401 -010004020100040101000402010004010100040101010401010004020100040101000402 -0100040301010403010004070100040401000405010104ff04c10001040106010001040a -060100010401060104090100040301000400010004000100040201020403010204030102 -040301030402010104000100040201020403010204040101040301000407010004040100 -0405010104ff04c10001040106010001040a060100010401060104090100042a01000412 -01000403010304010103040401000406010004ff04c10001040106010001040a06010001 -04010601040a0101042401000402010004100101041101010405010104ff04c200010401 -06010001040a06010001040106010432010204ff04f20001040106010001040a06010001 -04010601040a01010478010104ff04a00001040106010001040a06010001040106010409 -0100042e01030405010004310100040601030404010004ff049f0001040106010001040a -060100010401060104090100040401020405010004090100041401000407010004040101 -040b01000405010104030102040b010104020100040801000404010004ff049f00010401 -06010001040a060100010401060104090100040601000410010004140100040601000404 -010004010100040901010404010004010100040101000402010004090100040101000402 -0100040701000404010004ff049f0001040106010001040a060100010401060104090100 -04060100040301020402010004000101040201000401010004030102040a010004050100 -040501000401010004080100040001000404010004010100040501000409010004010100 -04030100040601000404010004ff049f0001040106010001040a06010001040106010409 -010004060100040501000402010104010100040101000400010004030100040201000409 -0100040401000406010004010100040a0100040401000401010004050100040901000401 -010004040100040501000404010004ff049f0001040106010001040a0601000104010601 -04070101040701000405010004020100040201000401010104040100040d010004030100 -0407010004010100040a0100040401000401010004030101040a01000401010004050100 -040401000405010104ff049d0001040106010001040a0601000104010601040901000406 -01000405010004020100040201000401010104050102040a010004040100040601000401 -0100040a0100040401000401010004050100040901000401010004040100040501000404 -010004ff049f0001040106010001040a0601000104010601040901000406010004050100 -040201000402010004010100040001000407010004090100040501000405010004010100 -040a01000404010004010100040501000409010004010100040301000406010004040100 -04ff049f0001040106010001040a06010001040106010409010004060100040501000402 -010004020100040101000401010004020100040201000403010104030100040601000404 -010004010100040301010404010004040100040101000401010004020100040301010403 -0100040101000402010004070100040401000405010104ff04970001040106010001040a -060100010401060104090100040601000405010004020100040201000401010004020100 -040201020404010104030100040701000404010104040101040201040403010104030102 -04040101040401010402010004080100040401000405010104ff04970001040106010001 -040a06010001040106010409010004290100040301030405010004310100040601030404 -01000406010004ff04970001040106010001040a0601000104010601040a010104250101 -045001010405010104ff04980001040106010001040a060100010401060104ff04ff0428 -0001040106010001040a0601000104010601040a01010458010104ff0419010104a40001 -040106010001040a06010001040106010409010004510103040301000406010004040100 -04450100040a01030475010004310100040601030404010004a30001040106010001040a -0601000104010601040901000407010004040100040b010004060100042d010004060100 -040601000403010204270100041b0100040a01000477010004040101040b010004050101 -04040100040c010104020100040801000404010004a30001040106010001040a06010001 -040106010409010004070100041101000435010004060100040501000403010004000100 -0400010004260100041a0100040b01000476010004040100040101000409010104040100 -0401010004020101040b01000401010004020100040701000404010004a3000104010601 -0001040a0601000104010601040901000404010104000100040201020403010204020104 -040201020403010204020100040001010403010204020100040001010402010004020100 -040901000406010004040100040401000400010004040102040201000400010104030102 -0403010204030102040201040402010204020100040001010403010204030100040c0100 -040401010400010004020100040201000402010204020100040201000401010004000101 -040901010400010004020100040201000402010204020100040001010402010004000101 -040a010204020100040201000401010004000101040a0100040501000401010004080100 -0400010004040100040101000401010004000100040b0100040101000403010004060100 -0404010004a30001040106010001040a0601000104010601040901000403010004010101 -040401000402010004020100040301000406010004020100040201000401010104010100 -0401010004020100040101010401010004010100040201000409010004060100040a0100 -040001000403010004020100040101010401010004010100040201000401010004020100 -040101000402010004030100040301000402010004010101040101000401010004020100 -041001000404010004000100040001000401010004020100040101000402010004010100 -040201000401010104010100040801000400010004000100040101000402010004010100 -040201000401010104010100040101010401010004080100040201000401010004020100 -0401010104010100040801000406010004010100040a0100040401000401010004030100 -040b01000401010004040100040501000404010004a30001040106010001040a06010001 -040106010407010104040100040201000404010004020100040701000406010004020100 -040201000401010004020100040501000401010004060100040101000409010004040101 -040c01020406010004010100040201000401010004050100040201000401010004070100 -040301000402010004010100040501000414010004040100040001000400010004020100 -040101000401010004050100040201000401010004020100040801000400010004000100 -040201000401010004050100040101000402010004010100040201000408010004050100 -040201000401010004020100040701000407010004010100040a01000404010004010100 -04030100040b01000401010004050100040401000405010104a10001040106010001040a -060100010401060104090100040301000402010004040100040201000407010004060100 -040201000402010004010100040201000402010304010100040601000401010004090100 -04060100040c010004000100040201030401010004020100040101000405010404020102 -040401000403010004020100040101000406010204110100040401000400010004000100 -040201000401010004020102040201000402010004010100040201000408010004000100 -040001000402010004010100040201030401010004020100040101000402010004090102 -04020100040201000401010004020100040801000406010004010100040a010004040100 -0401010004030100040b01000401010004040100040501000404010004a3000104010601 -0001040a0601000104010601040901000403010004020100040401000402010004070100 -040601000402010004020100040101000402010004010100040201000401010004070100 -040001000409010004060100040c01000400010004010100040201000401010004020100 -040101000405010004090100040301000403010004020100040101000409010004100100 -040401000400010004000100040301000400010004050100040101000402010004010100 -040201000408010004000100040001000403010004000100040101000402010004010100 -040201000401010004020100040c01000401010004020100040101000402010004090100 -0405010004010100040a0100040401000401010004030100040b01000401010004030100 -040601000404010004a30001040106010001040a06010001040106010409010004030100 -040101010404010004020100040201000403010004060100040201000402010004010100 -0402010004010100040201000401010004070101040401010403010004060100040a0100 -040001000400010004010100040201000401010004020100040101000402010004010100 -040201000401010004020100040301000403010004020100040101000405010004020100 -040a01010403010004040100040001000400010004030101040201000402010004010100 -040101010401010104010100040301010402010004000100040001000403010104020100 -040201000401010104010100040101010401010004080100040201000401010004010101 -040101010401010004030101040401000404010004010100040301010404010004040100 -040101000403010004050101040301000401010004020100040701000404010004050101 -049b0001040106010001040a060100010401060104090100040401010400010004040100 -040301020405010104040100040301020402010004020100040201030401010004080100 -040401010403010004060100040b01020403010304010100040201000402010204030102 -0403010204050101040201020402010004060102040b0101040301000404010004000100 -040001000404010004030102040301010400010004010100040001010404010104020100 -0400010004000100040401000403010304010100040001010402010004000101040a0102 -040301010400010004010100040001010404010104050100040401010404010104020104 -0403010104020104040301010404010104020100040801000404010004050101049b0001 -040106010001040a06010001040106010409010004450100040501000403010304030100 -040c0100044c010004030103040b01000410010004080100040c01000409010004050100 -04040105040f0100040801000406010004310100040601030404010004060100049b0001 -040106010001040a0601000104010601040a0101044001000400010004040101040d0101 -0456010104110100040001000411010004060101040a010004000100040a010004050100 -041a0100040601010449010104050101049c0001040106010001040a0601000104010601 -044e0100048301000412010004140100040b010004050100041a010004f9000104010601 -0001040a0601000104010601046501010474010104ff04490001040106010001040a0601 -000104010601046401000406010004040100045a0100040b010004ff044b000104010601 -0001040a060100010401060104640100040601000403010204050100040c010004040100 -04060100040a0102041801020403010204050100040b010004220100040c010004040100 -040d01000404010004fe0001040106010001040a06010001040106010464010004050100 -0403010004000100040001000418010004140100041a01000405010004040100040c0100 -043601000413010004fe0001040106010001040a06010001040106010464010004040100 -040401000400010004040102040201000400010104030102040201040402010204030102 -04050100040a010204030102040501000405010004030100040d01000404010104000100 -040201020402010004000101040a01020402010004000101040301020402010404090102 -0402010404fc0001040106010001040a060100010401060104640100040a010004000100 -040601000402010104010100040401000404010004060100040201000402010004040100 -040901000402010004010100040201000404010004050100041201000403010004010101 -04010100040201000401010104010100040b010004020101040101000404010004040100 -040d01000404010004fe0001040106010001040a060100010401060104620101040c0102 -040501000402010004020100040401000404010004060100040601000404010004090100 -040901000404010004050100041001010404010004020100040101000402010004010100 -04020100040b010004020100040201000404010004040100040d01000404010004fe0001 -040106010001040a060100010401060104640100040c0100040001000404010004020100 -040201000404010004040100040601000403010304040100040901000406010304040100 -04050100041201000403010004020100040101040401010004020100040b010004020100 -040201000404010004040100040d01000404010004fe0001040106010001040a06010001 -0401060104640100040c0100040001000404010004020100040201000404010004040100 -040601000402010004020100040401000409010004050100040201000404010004050100 -041201000403010004020100040101000405010004020100040b01000402010004020100 -0404010004040100040d01000404010004fe0001040106010001040a0601000104010601 -04640100040a010004000100040001000404010004020100040201000404010004040100 -040601000402010004020100040401000409010004020100040101000402010004040100 -04050100040b010104040100040301000401010104010100040201000401010004020100 -040301010405010004020100040201000404010004040100040d01000404010004050101 -04f60001040106010001040a060100010401060104640100040b01020405010004020100 -040201000404010004050101040401000403010304040100040a01020403010304040100 -04050100040b010104040100040401010400010004020102040201000402010004030101 -0405010004020100040201000404010004050101040b0100040501010403010104f60001 -040106010001040a060100010401060104640100040c0100043301050427010004040100 -0407010004120100041d01050412010004f60001040106010001040a0601000104010601 -04650101046b0101040601010401010004020100041001010435010104f7000104010601 -0001040a060100010401060104e1010204ff04430001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104fd010304ff04260001 -040106010001040a060100010401060104fd010004ff04290001040106010001040a0601 -00010401060104fd010004ff04290001040106010001040a060100010401060104fd0100 -0405010104000100040201020402010004000101040a0102040301020402010004000101 -040201000402010004020102040201000400010104e10001040106010001040a06010001 -0401060104fd010004040100040101010401010004020100040101010401010004080100 -040201000401010004020100040101010401010004010100040201000401010004020100 -040101010401010004e00001040106010001040a060100010401060104fd010004040100 -040201000401010004020100040101000402010004080100040501000402010004010100 -040501000402010004010100040201000401010004e40001040106010001040a06010001 -0401060104fd010004040100040201000401010404010100040201000409010204020104 -040101000406010004000100040201040401010004e40001040106010001040a06010001 -0401060104fd01000404010004020100040101000405010004020100040c010004010100 -040501000406010004000100040201000405010004e40001040106010001040a06010001 -0401060104fd010004040100040101010401010004020100040101000402010004080100 -040201000401010004020100040101000407010004030100040201000401010004070101 -04da0001040106010001040a060100010401060104fd0100040501010400010004020102 -040201000402010004090102040301020402010004070100040401020402010004070101 -04da0001040106010001040a060100010401060104fd010304050100040e0105042e0100 -04da0001040106010001040a060100010401060104ff04030100040201000441010104db -0001040106010001040a060100010401060104ff0404010204ff04200001040106010001 -040a060100010401060104ff04ff04280001040106010001040a060100010401060104ff -040701000431010004ec0001040106010001040a060100010401060104ff040601000404 -0101040b01000405010104030102040b01010402010004eb0001040106010001040a0601 -00010401060104ff04050100040401000401010004090101040401000401010004010100 -0402010004090100040101000402010004ea0001040106010001040a0601000104010601 -04ff04040100040501000401010004080100040001000404010004010100040501000409 -0100040101000403010004e90001040106010001040a060100010401060104ff04030100 -0406010004010100040a0100040401000401010004050100040901000401010004040100 -04e80001040106010001040a060100010401060104ff040201000407010004010100040a -0100040401000401010004030101040a0100040101000405010004e70001040106010001 -040a060100010401060104ff040301000406010004010100040a01000404010004010100 -0405010004090100040101000404010004e80001040106010001040a0601000104010601 -04ff040401000405010004010100040a0100040401000401010004050100040901000401 -01000403010004e90001040106010001040a060100010401060104ff0405010004040100 -040101000403010104040100040401000401010004010100040201000403010104030100 -04010100040201000406010104e10001040106010001040a060100010401060104ff0406 -010004040101040401010402010404030101040301020404010104040101040201000407 -010104e10001040106010001040a060100010401060104ff040701000431010004090100 -04e10001040106010001040a060100010401060104ff0443010104e20001040106010001 -040a060100010401060104ff04ff04280001040106010001040a060100010401060104ff -04ff04280001040106010001040a060100010401060104ff040701000431010004ec0001 -040106010001040a060100010401060104ff0406010004040101040b0100040501010403 -0102040b01010402010004eb0001040106010001040a060100010401060104ff04050100 -040401000401010004090101040401000401010004010100040201000409010004010100 -0402010004ea0001040106010001040a060100010401060104ff04040100040501000401 -0100040801000400010004040100040101000405010004090100040101000403010004e9 -0001040106010001040a060100010401060104ff040301000406010004010100040a0100 -04040100040101000405010004090100040101000404010004e80001040106010001040a -060100010401060104ff040201000407010004010100040a010004040100040101000403 -0101040a0100040101000405010004e70001040106010001040a060100010401060104ff -040301000406010004010100040a01000404010004010100040501000409010004010100 -0404010004e80001040106010001040a060100010401060104ff04040100040501000401 -0100040a010004040100040101000405010004090100040101000403010004e900010401 -06010001040a060100010401060104ff0405010004040100040101000403010104040100 -040401000401010004010100040201000403010104030100040101000402010004060101 -04e10001040106010001040a060100010401060104ff0406010004040101040401010402 -010404030101040301020404010104040101040201000407010104e10001040106010001 -040a060100010401060104ff04070100043101000409010004e10001040106010001040a -060100010401060104ff0443010104e20001040106010001040a060100010401060104ff -04ff04280001040106010001040a060100010401060104ff040601010463010104b90001 -040106010001040a060100010401060104ff040501000467010004b80001040106010001 -040a060100010401060104ff0405010004040102041801020443010004b8000104010601 -0001040a060100010401060104ff0405010004060100041a01000443010004b800010401 -06010001040a060100010401060104ff0405010004060100040301020403010204030102 -040501000409010104000100040201000402010004020102040301020402010004000101 -04020100040201000402010204020100040001010404010004b80001040106010001040a -060100010401060104ff0405010004060100040201000402010004010100040201000401 -010004020100040401000409010004000100040001000401010004020100040101000402 -010004010100040201000401010104010100040101000402010004010100040201000401 -0101040101000403010004b80001040106010001040a060100010401060104ff04030101 -040701000402010004020100040101000409010004040100040901000400010004000100 -040201000401010004010100040501000402010004010100040501000402010004010100 -04020100040101000408010104b60001040106010001040a060100010401060104ff0405 -010004060100040201000402010004010100040601030404010004090100040001000400 -010004020100040101000402010204020104040101000406010004000100040201040401 -01000407010004b80001040106010001040a060100010401060104ff0405010004060100 -040201000402010004010100040501000402010004040100040901000400010004000100 -040301000400010004050100040101000405010004060100040001000402010004050100 -0407010004b80001040106010001040a060100010401060104ff04050100040601000402 -010004020100040101000402010004010100040201000404010004040101040201000400 -010004000100040301010402010004020100040101000402010004010100040701000403 -01000402010004010100040701000405010104b00001040106010001040a060100010401 -060104ff0405010004060100040301020403010204030103040401000404010104020100 -040001000400010004040100040301020403010204020100040701000404010204020100 -040701000405010104b00001040106010001040a060100010401060104ff040501000429 -0100040c0100042e01000406010004b00001040106010001040a060100010401060104ff -0406010104250101040a010004000100042d01010405010104b10001040106010001040a -060100010401060104ff043c010004ea0001040106010001040a060100010401060104ff -04ff04280001040106010001040a060100010401060104ff04ff04280001040106010001 -040a060100010401060104ff04ff04280001040106010001040a060100010401060104ff -04ff04280001040106010001040a060100010401060104ff040301010400010004020100 -040201000402010204030102040201000400010104020100040201000402010204020100 -0400010104ef0001040106010001040a060100010401060104ff04030100040001000400 -010004010100040201000401010004020100040101000402010004010101040101000401 -0100040201000401010004020100040101010401010004ee0001040106010001040a0601 -00010401060104ff04030100040001000400010004020100040101000401010004050100 -0402010004010100040501000402010004010100040201000401010004f2000104010601 -0001040a060100010401060104ff04030100040001000400010004020100040101000402 -010204020104040101000406010004000100040201040401010004f20001040106010001 -040a060100010401060104ff040301000400010004000100040301000400010004050100 -04010100040501000406010004000100040201000405010004f20001040106010001040a -060100010401060104ff0403010004000100040001000403010104020100040201000401 -01000402010004010100040701000403010004020100040101000407010104e800010401 -06010001040a060100010401060104ff0403010004000100040001000404010004030102 -04030102040201000407010004040102040201000407010104e80001040106010001040a -060100010401060104ff040d0100042f010004e80001040106010001040a060100010401 -060104ff040a010004000100042e010104e90001040106010001040a0601000104010601 -04ff040b010004ff041b0001040106010001040a060100010401060104ff04ff04280001 -040106010001040a060100010401060104ff040401030401010304ff0419000104010601 -0001040a060100010401060104ff040401000407010004ff04190001040106010001040a -060100010401060104ff040401000407010004ff04190001040106010001040a06010001 -0401060104ff040401000407010004ff04190001040106010001040a0601000104010601 -04ff040401000407010004ff04190001040106010001040a060100010401060104ff0404 -01000407010004ff04190001040106010001040a060100010401060104ff040401000407 -010004ff04190001040106010001040a060100010401060104ff040401000407010004ff -04190001040106010001040a060100010401060104ff04040100040701000404010104ff -04120001040106010001040a060100010401060104ff04040100040701000404010104ff -04120001040106010001040a060100010401060104ff04040103040101030405010004ff -04120001040106010001040a060100010401060104ff0412010104ff0413000104010601 -0001040a060100010401060104ff04ff04280001040106010001040a0601000104010601 -04ff0418010104040101040b010104f80001040106010001040a060100010401060104ff -0404010304010103040201030404010004050100040301030404010004f7000104010601 -0001040a060100010401060104ff04040100040701000405010004040100040501000406 -01000404010004f70001040106010001040a060100010401060104ff0404010004070100 -040501000404010004050100040601000404010004f70001040106010001040a06010001 -0401060104ff0404010004070100040501000404010004050100040601000404010004f7 -0001040106010001040a060100010401060104ff04040100040701000405010004040100 -04050100040601000404010004f70001040106010001040a060100010401060104ff0404 -010004070100040501000405010104040101040401000405010104f50001040106010001 -040a060100010401060104ff040401000407010004050100040401000405010004060100 -0404010004f70001040106010001040a060100010401060104ff04040100040701000405 -01000404010004050100040601000404010004f70001040106010001040a060100010401 -060104ff0404010004070100040501000404010004050100040601000404010004050101 -04ef0001040106010001040a060100010401060104ff0404010004070100040501000404 -01000405010004060100040401000405010104ef0001040106010001040a060100010401 -060104ff0404010304010103040201030404010004050100040301030404010004060100 -04ef0001040106010001040a060100010401060104ff0418010104040101040b01010405 -010104f00001040106010001040a060100010401060104ff04ff04280001040106010001 -040a0601000104010601040a0101046a010104ff04ae0001040106010001040a06010001 -0401060104090100046e010004ff04ad0001040106010001040a06010001040106010409 -0100040501000430010004040100040d0101040901020412010004ff04ad000104010601 -0001040a0601000104010601040901000405010004360100040c0100040d010004120100 -04ff04ad0001040106010001040a06010001040106010409010004030104040101000400 -0101040301020402010004000101040a010204020100040201000402010204020104040a -0100040401020405010004030102040301020404010004ff04ad0001040106010001040a -060100010401060104090100040501000403010104010100040101000402010004010101 -04010100040801000402010004010100040201000404010004040100040a010404010100 -0402010004040100040201000402010004010100040201000403010004ff04ad00010401 -06010001040a060100010401060104070101040601000403010004090100040101000402 -0100040801000402010004020100040001000405010004040100040c0100040701000404 -01000402010004050100040201000404010104ff04ab0001040106010001040a06010001 -040106010409010004050100040301000406010304010100040201000408010404030100 -0406010004040100040c0100040401030404010004030102040201040403010004ff04ad -0001040106010001040a0601000104010601040901000405010004030100040501000402 -010004010100040201000408010004060100040001000405010004040100040c01000403 -0100040201000404010004060100040101000407010004ff04ad0001040106010001040a -060100010401060104090100040501000403010004050100040201000401010104010100 -040801000402010004010100040201000404010004040100040501010404010004030100 -040201000404010004020100040201000401010004020100040301000405010104ff04a5 -0001040106010001040a0601000104010601040901000406010104010100040601030401 -010004000101040a01020402010004020100040401000405010104030101040401000404 -0103040401000403010204030102040401000405010104ff04a50001040106010001040a -060100010401060104090100041801000404010504200100042701000406010004ff04a5 -0001040106010001040a0601000104010601040a01010416010004290101042601010405 -010104ff04a60001040106010001040a06010001040106010423010004ff04ff04030001 -040106010001040a0601000104010601040a010104be010104ff045a0001040106010001 -040a06010001040106010409010004c2010004ff04590001040106010001040a06010001 -0401060104090100042d0100041701000402010204410100041701000402010204120100 -04ff04590001040106010001040a060100010401060104090100042d0100041701000404 -01000441010004170100040401000412010004ff04590001040106010001040a06010001 -040106010409010004040102040201000400010104020100040001010403010204020100 -040001010409010004000101040301020402010004000101040301010400010004040100 -040301020402010004000101040a01020402010004000101040201000400010104030102 -040201000400010104090100040001010403010204020100040001010403010104000100 -040401000403010204020100040001010404010004ff04590001040106010001040a0601 -000104010601040901000403010004020100040101010401010004010101040101000401 -010004020100040101010401010004080101040101000401010004020100040101010401 -010004010100040101010404010004020100040201000401010104010100040801000402 -010004010101040101000401010104010100040101000402010004010101040101000408 -010104010100040101000402010004010101040101000401010004010101040401000402 -01000402010004010101040101000403010004ff04590001040106010001040a06010001 -040106010407010104040100040201000401010004050100040501000402010004010100 -040c01000402010004050100040101000402010004010100040201000404010004020100 -0402010004010100040c0100040201000401010004050100040501000402010004010100 -040c01000402010004050100040101000402010004010100040201000404010004020100 -04020100040101000408010104ff04570001040106010001040a06010001040106010409 -0100040301040401010004050100040501000402010004010100040c0100040201000402 -010304010100040201000401010004020100040401000402010404010100040c01040401 -010004050100040501000402010004010100040c01000402010004020103040101000402 -010004010100040201000404010004020104040101000407010004ff0459000104010601 -0001040a0601000104010601040901000403010004050100040501000405010004020100 -04010100040c010004020100040101000402010004010100040201000401010004020100 -040401000402010004050100040c01000405010004050100040501000402010004010100 -040c01000402010004010100040201000401010004020100040101000402010004040100 -04020100040501000407010004ff04590001040106010001040a06010001040106010409 -010004030100040201000401010004050100040501000402010004010100040c01000402 -010004010100040201000401010004020100040101000401010104040100040201000402 -010004010100040701010402010004020100040101000405010004050100040201000401 -0100040c0100040201000401010004020100040101000402010004010100040101010404 -0100040201000402010004010100040701000405010104ff04510001040106010001040a -0601000104010601040901000404010204020100040501000406010204020100040c0100 -040201000402010304010100040201000402010104000100040401000403010204020100 -040701010403010204020100040501000406010204020100040c01000402010004020103 -040101000402010004020101040001000404010004030102040201000407010004050101 -04ff04510001040106010001040a06010001040106010409010004250105043501000424 -0105043401000406010004ff04510001040106010001040a0601000104010601040a0101 -045d0101045e01010405010104ff04520001040106010001040a060100010401060104ff -04ff04280001040106010001040a0601000104010601040a0101046a010104ff04ae0001 -040106010001040a060100010401060104090100046e010004ff04ad0001040106010001 -040a060100010401060104090100041401000413010004040100043501020404010004ff -04ad0001040106010001040a060100010401060104090100042f01000437010004040100 -04ff04ad0001040106010001040a06010001040106010409010004030100040001010402 -010004000101040301020403010204020100040001010403010204020104040101000402 -010004080100040001010403010204020100040001010402010104000100040301020405 -01000404010004ff04ad0001040106010001040a06010001040106010409010004030101 -040101000401010104010100040401000402010004020100040101010401010004040100 -040401000403010004020100040801010401010004010100040201000401010104010100 -0401010004000100040001000401010004020100040401000404010004ff04ad00010401 -06010001040a060100010401060104070101040401000402010004010100040801000402 -010004020100040101000408010004040100040401000401010004080100040201000401 -0100040201000401010004050100040001000400010004050100040401000405010104ff -04ab0001040106010001040a060100010401060104090100040301000402010004010100 -040801000402010004020100040101000408010004040100040401000401010004080100 -040201000401010004020100040101000405010004000100040001000402010304040100 -0404010004ff04ad0001040106010001040a060100010401060104090100040301000402 -010004010100040801000402010004020100040101000408010004040100040501000400 -010004080100040201000401010004020100040101000405010004000100040001000401 -010004020100040401000404010004ff04ad0001040106010001040a0601000104010601 -040901000403010104010100040101000408010004020100040201000401010004080100 -040401000405010104040101040201000402010004010100040201000401010004050100 -0400010004000100040101000402010004040100040401000405010104ff04a500010401 -06010001040a060100010401060104090100040301000400010104020100040801000403 -010204020100040801000405010104040100040401010402010004020100040201020402 -01000405010004000100040001000402010304040100040401000405010104ff04a50001 -040106010001040a060100010401060104090100040301000432010004050100042e0100 -0406010004ff04a50001040106010001040a0601000104010601040a010104010100042f -01000400010004040101042d01010405010104ff04a60001040106010001040a06010001 -04010601040e01000430010004ff04e60001040106010001040a0601000104010601040a -0101049b010104ff047d0001040106010001040a06010001040106010409010004620100 -043101000408010004ff047c0001040106010001040a060100010401060104090100042e -0102041401000419010004040101040b01000405010104040101040b0101040201000407 -010004ff047c0001040106010001040a0601000104010601040901000430010004140100 -041801000404010004010100040901010404010004010100040201000401010004090100 -04010100040201000406010004ff047c0001040106010001040a06010001040106010409 -010004040101040001000401010004000101040301020402010004020100040101000400 -0101040c010004030102040301020403010104000100040201020402010004000101040a -010004050100040101000408010004000100040401000401010004020100040101000409 -010004010100040301000405010004ff047c0001040106010001040a0601000104010601 -040901000403010004010101040101010401010004010100040201000401010004020100 -0401010104010100040b0100040201000402010004010100040201000401010004010101 -04010100040201000401010104010100040801000406010004010100040a010004040100 -0401010004020100040101000409010004010100040401000404010004ff047c00010401 -06010001040a060100010401060104070101040401000402010004010100040501000402 -010004010100040201000401010004020100040b01000402010004020100040501000401 -010004020100040101000402010004010100040b01000407010004010100040a01000404 -01000401010004020100040101000409010004010100040501000404010104ff047a0001 -040106010001040a06010001040106010409010004030100040201000401010004050100 -0402010004010100040201000401010004020100040b0100040201040402010304010100 -040201000401010404010100040c01000406010004010100040a01000404010004010100 -04020100040101000409010004010100040401000404010004ff047c0001040106010001 -040a06010001040106010409010004030100040201000401010004050100040201000401 -0100040201000401010004020100040b0100040201000405010004020100040101000402 -01000401010004050100040d01000405010004010100040a010004040100040101000402 -0100040101000409010004010100040301000405010004ff047c0001040106010001040a -060100010401060104090100040301000401010104010100040501000402010004010100 -040101010401010104010100040b01000402010004020100040101000402010004010100 -040101010401010004020100040101000407010104040100040401000401010004030101 -040401000404010004010100040201000401010004030101040301000401010004020100 -040601000405010104ff04740001040106010001040a0601000104010601040901000404 -010104000100040101000406010204030101040001000401010004000101040c01000403 -010204030103040201010400010004020102040201000407010104050100040401010404 -0101040201040403010104040101040401010404010104020100040701000405010104ff -04740001040106010001040a060100010401060104090100040701000416010004040105 -042e01000406010004310100040801000406010004ff04740001040106010001040a0601 -000104010601040a010104010100040201000416010004370101044201010405010104ff -04750001040106010001040a0601000104010601040f01020417010004ff04fc00010401 -06010001040a0601000104010601040a0101045c010104ff04bc0001040106010001040a -0601000104010601040901000460010004ff04bb0001040106010001040a060100010401 -06010409010004030100042b01000418010204030102040301020404010004ff04bb0001 -040106010001040a06010001040106010409010004030100044401000402010004010100 -0402010004010100040201000403010004ff04bb0001040106010001040a060100010401 -060104090100040301000400010104030102040301020402010004000101040a01020403 -01020402010404020102040d010004050100040501000403010004ff04bb000104010601 -0001040a0601000104010601040901000403010104010100040101000402010004010100 -040201000401010104010100040801000402010004040100040601000401010004020100 -040c010004050100040501000403010004ff04bb0001040106010001040a060100010401 -060104070101040401000402010004010100040201000405010004010100040201000408 -010004080100040501000402010004020100040b010004040101040401010405010104ff -04b90001040106010001040a060100010401060104090100040301000402010004010104 -04020103040101000402010004090102040501000404010004030104040a010004070100 -040501000403010004ff04bb0001040106010001040a0601000104010601040901000403 -0100040201000401010004050100040201000401010004020100040c0100040401000403 -010004040100040d010004080100040501000403010004ff04bb0001040106010001040a -060100010401060104090100040301000402010004010100040201000401010004020100 -040101010401010004080100040201000404010004020100040501000402010004030101 -0402010004050100040201000401010004020100040301000405010104ff04b300010401 -06010001040a060100010401060104090100040301000402010004020102040301030401 -010004000101040a01020405010004020104040201020404010104020104040201020403 -0102040401000405010104ff04b30001040106010001040a060100010401060104090100 -041801000404010504200100041901000406010004ff04b30001040106010001040a0601 -000104010601040a01010416010004290101041801010405010104ff04b4000104010601 -0001040a06010001040106010423010004ff04ff04030001040106010001040a06010001 -04010601040a0101045c010104ff04bc0001040106010001040a06010001040106010409 -01000460010004ff04bb0001040106010001040a060100010401060104090100040c0100 -041101000416010004190100040401020404010004ff04bb0001040106010001040a0601 -00010401060104090100040c0100041101000430010104030100040201000403010004ff -04bb0001040106010001040a060100010401060104090100040401020402010404020102 -040301020402010004010100040a01020403010204020104040201020409010004000100 -040701000403010004ff04bb0001040106010001040a0601000104010601040901000403 -01000402010004030100040301000402010004010100040201000401010004000100040a -01000402010004040100040601000401010004020100040a0100040701000403010004ff -04bb0001040106010001040a060100010401060104070101040401000407010004070100 -0401010004050101040b010004080100040501000402010004020100040a010004060100 -0405010104ff04b90001040106010001040a060100010401060104090100040401020404 -0100040401030401010004050101040c0102040501000404010004030104040a01000405 -01000405010004ff04bb0001040106010001040a06010001040106010409010004070100 -040301000403010004020100040101000405010004000100040e01000404010004030100 -04040100040e0100040401000406010004ff04bb0001040106010001040a060100010401 -060104090100040301000402010004030100040301000402010004010100040201000401 -010004010100040901000402010004040100040201000405010004020100040301010404 -010004030100040701000405010104ff04b30001040106010001040a0601000104010601 -040901000404010204050101040201030402010204020100040201000409010204050100 -0402010404020102040401010402010404010104040301000405010104ff04b300010401 -06010001040a0601000104010601040901000425010504200100041201000406010004ff -04b30001040106010001040a0601000104010601040a0101044801010411010104050101 -04ff04b40001040106010001040a060100010401060104ff04ff04280001040106010001 -040a0601000104010601040a0101045c010104ff04bc0001040106010001040a06010001 -04010601040901000460010004ff04bb0001040106010001040a06010001040106010409 -0100041501000411010004060100041f0102040401010404010004ff04bb000104010601 -0001040a0601000104010601040901000415010004110100042601000402010004020100 -040101000403010004ff04bb0001040106010001040a0601000104010601040901000403 -010004000101040301020403010104000100040101000402010004020102040201040402 -010204030102040201000400010104030102040d010004020100040101000403010004ff -04bb0001040106010001040a060100010401060104090100040301010401010004010100 -040201000401010004010101040101000402010004010100040201000403010004060100 -040201000402010004010101040101000401010004020100040c01000402010004010100 -0403010004ff04bb0001040106010001040a060100010401060104070101040401000405 -010004020100040101000402010004010100040201000401010004070100040601000402 -010004020100040101000402010004010100040e010104030100040101000404010104ff -04b90001040106010001040a060100010401060104090100040301000405010404010100 -040201000401010004020100040101000407010004060100040201000402010004010100 -0402010004020102040d010004020100040101000403010004ff04bb0001040106010001 -040a06010001040106010409010004030100040501000405010004020100040101000402 -01000401010004070100040601000402010004020100040101000402010004050100040c -010004020100040101000403010004ff04bb0001040106010001040a0601000104010601 -040901000403010004050100040201000401010004010101040101000401010104010100 -040201000403010004060100040201000402010004010100040201000401010004020100 -0403010104020100040201000402010004010100040301000405010104ff04b300010401 -06010001040a060100010401060104090100040301000406010204030101040001000402 -010104000100040201020405010104040100040301020402010004020100040201020404 -01010403010204040101040401000405010104ff04b30001040106010001040a06010001 -0401060104090100044c0100041201000406010004ff04b30001040106010001040a0601 -000104010601040a010104480101041101010405010104ff04b40001040106010001040a -060100010401060104ff04ff04280001040106010001040a0601000104010601040a0101 -04890101049401010404010104f10001040106010001040a060100010401060104090100 -048a010004980100040501000403010304e80001040106010001040a0601000104010601 -040901000418010004300102040301020412010004060100041901000406010104090102 -040301020436010104030100041901020402010404010104040201020402010404030100 -040501000406010004e80001040106010001040a06010001040106010409010004180100 -0432010004050100041201000421010004050100040d0100040501000435010004050100 -041801000402010004010100040501000405010004020100040101000407010004050100 -0406010004e80001040106010001040a0601000104010601040901000404010104000100 -040201020402010004000101040201000400010104030102040301010400010004020102 -040a01020403010204050100040501000403010204030102040201040402010204030102 -0402010004000101040b0100040501000403010004020100040401000405010004030102 -040201000402010004020102040301020402010004000101040a01020404010004030104 -040201020402010004000101040901000405010004050100040901000401010004070100 -040501000406010004e80001040106010001040a06010001040106010409010004030100 -040101010401010004020100040101010401010004010101040101000401010004020100 -040101000401010104010100040201000408010004020100040101000402010004040100 -040501000402010004020100040101000402010004030100040601000402010004020100 -0401010104010100040a0100040301040401010004020100040401000405010004020100 -040201000401010004020100040101000402010004010100040201000401010104010100 -040801000402010004010104040301000403010004020100040101010401010004080100 -0405010304020103040601000401010304040100040501000406010004e8000104010601 -0001040a0601000104010601040701010404010004020100040501000401010004050100 -040201000405010004010100040201000401010004020100040801000405010004020100 -040401000405010004020100040201000401010004070100040601000402010004020100 -040101000402010004080101040601000403010004020100040401000405010004020100 -040501000400010004000100040101000402010004010100040201000401010004020100 -040c01000403010004050100040301000402010004010100040c01030406010004050100 -040301010406010004040101040401010404010004e80001040106010001040a06010001 -040106010409010004030100040201000402010304010100040501000402010004020103 -040101000402010004010104040801000405010004020100040401000405010004020104 -04010100040701000406010004020100040201000401010004020100040a010004050100 -040301000402010004040100040501000403010204020100040001000400010004010104 -0401010404010100040201000409010304030100040501000403010404010100040c0100 -040201000405010004050100040501000405010004030100040501000406010004e80001 -040106010001040a06010001040106010409010004030100040201000401010004020100 -0401010004050100040201000401010004020100040101000402010004010100040c0100 -040501000402010004040100040501000402010004050100040701000406010004020100 -040201000401010004020100040a01000405010004030100040201000404010004050100 -040601000401010004000100040001000401010004050100040501000402010004080100 -0402010004030100040501000403010004050100040c0100040201000401010004020100 -040101000402010004050100040101000402010004030100040501000406010004e80001 -040106010001040a06010001040106010409010004030100040101010401010004020100 -040101000405010104010100040101000402010004010100040101010401010004020100 -040801000402010004010100040201000404010004050100040201000402010004010100 -040201000403010004060100040201000402010004010100040201000403010104040100 -040501000403010004010101040401000405010004020100040201000401010004000100 -040001000401010004020100040101000402010004010101040101000408010004020100 -040301000405010004030100040201000401010004070101040201000402010004010100 -040201000401010004020100040101000402010004010100040201000403010004050100 -0406010004e80001040106010001040a0601000104010601040901000404010104000100 -0402010304010100040501000400010104030103040201010400010004020102040a0102 -040301020405010004050100040301020403010204050101040401000403010204020100 -040201000403010104040100040501000404010104000100040401000405010004030102 -040301000400010004030102040301020402010004000101040a01030403010004060101 -040201020402010004070101040301020403010204030102040301020403010204040100 -040501000406010004e80001040106010001040a06010001040106010409010004070100 -0421010004070105044a010004040100043b010004040105042701000427010004050100 -0403010304e80001040106010001040a0601000104010601040a01010401010004020100 -041d01000402010004560101040601010439010004300101042601010404010104f10001 -040106010001040a0601000104010601040f0102041f0102049c010004ff045400010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001040a060100010401 -060104ff04ff04280001040106010001040a060100010401060104ff04ff042800010401 -06010001040a060100010401060104ff04ff04280001040106010001060c000104010601 -04ff04ff04280001040106010000060d00010401060104ff04ff0428000104010601050e -00010401060104ff04ff042800010401060100100401060104ff04ff0428000104010601 -0500000c060000010401060104ff04ff0428000104010601050000010408060105000001 -0401060104ff04ff04280001040106010501000104070601050000010401060104ff04ff -04280001040106010501000104060601050100010401060104ff04ff0428000104010601 -0502000104050601050100010401060104ff04ff04280001040106010502000104040601 -050200010401060104ff04ff042800010401060105030001040306010502000104010601 -04ff04ff04280001040106010503000104020601050300010401060104ff04ff04280001 -040106010504000104010601050300010401060104ff04ff042800010401060105040001 -04000601050400010401060104ff04ff0428000104010601050500000602050400010401 -060104ff04ff0428000104010601050500000601050500010401060100ff00ff002a0401 -060105060601050500010401060000ff00ff002b04010601050606000506000104ff04ff -04300601001004ff04ff04300600001104ff04ff04ff04ff04ff04ff04ff04ff04ff04ff -04ff04ff04ff0498010204ff04ff044001000401010004ff04ff043f0100040201000402 -010204020100040001010403010204ff04ff042a01000402010004010100040201000401 -010104010100040101000402010004ff04ff042901000402010004010100040201000401 -010004020100040101000402010004ff04ff042901000402010004010100040201000401 -0100040201000401010404ff04ff04290100040201000401010004020100040101000402 -01000401010004ff04ff042d010004010100040201000402010004010100040201000401 -01000402010004ff04ff042901020404010204020100040201000402010204ff04ff04ff -04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04ff04c1 -%%EndData -end -%%PageTrailer -%%Trailer -%%BoundingBox: 0 73 377 347 -%%EOF diff --git a/lib/appmon/doc/src/ref_man.xml b/lib/appmon/doc/src/ref_man.xml deleted file mode 100644 index b54df2ee9b..0000000000 --- a/lib/appmon/doc/src/ref_man.xml +++ /dev/null @@ -1,37 +0,0 @@ - - - - -
- - 19962013 - Ericsson AB. All Rights Reserved. - - - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. - - - - Appmon Reference Manual - - - - -
- -

The Application Monitor, Appmon, is a graphical utility used - to supervise applications executing either locally or on remote nodes. - The process tree of an application can furthermore be monitored.

-
- -
- diff --git a/lib/appmon/doc/src/warning.gif b/lib/appmon/doc/src/warning.gif deleted file mode 100644 index 96af52360e..0000000000 Binary files a/lib/appmon/doc/src/warning.gif and /dev/null differ diff --git a/lib/appmon/ebin/.gitignore b/lib/appmon/ebin/.gitignore deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lib/appmon/info b/lib/appmon/info deleted file mode 100644 index c33a50d106..0000000000 --- a/lib/appmon/info +++ /dev/null @@ -1,5 +0,0 @@ -group: tools -short: A utility used to supervise Applications executing on several -short: Erlang nodes - - diff --git a/lib/appmon/priv/Makefile b/lib/appmon/priv/Makefile deleted file mode 100644 index 356fe9b842..0000000000 --- a/lib/appmon/priv/Makefile +++ /dev/null @@ -1,65 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2012. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -include ../vsn.mk -VSN = $(APPMON_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/appmon-$(VSN) - -# -# Macros -# -HELP_FILES = \ - appmon_help.txt - -TOOLBAR_FILES = \ - appmon.tool \ - appmon.gif \ - start_info.html \ - main_frame.html \ - info_frames.html \ - blank.html - -# -# Rules -# - -debug opt: - -docs: - -clean: - - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_spec: opt - $(INSTALL_DIR) "$(RELSYSDIR)/priv" - $(INSTALL_DATA) $(HELP_FILES) $(TOOLBAR_FILES) "$(RELSYSDIR)/priv" - -release_docs_spec: - -FORCE: diff --git a/lib/appmon/priv/appmon.gif b/lib/appmon/priv/appmon.gif deleted file mode 100644 index 583fcb8311..0000000000 Binary files a/lib/appmon/priv/appmon.gif and /dev/null differ diff --git a/lib/appmon/priv/appmon.tool b/lib/appmon/priv/appmon.tool deleted file mode 100644 index 93a469c6a4..0000000000 --- a/lib/appmon/priv/appmon.tool +++ /dev/null @@ -1,24 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -{version,"1.2"}. -[{config_func,{appmon_web,configData,[]}}, -{tool,"Appmon"}, - {start,{appmon,start,[]}}, - {icon,"appmon.gif"}, - {message,"Application Monitor"}, - {html,"../doc/html/index.html"}]. diff --git a/lib/appmon/priv/appmon_help.txt b/lib/appmon/priv/appmon_help.txt deleted file mode 100644 index f1685be4d8..0000000000 --- a/lib/appmon/priv/appmon_help.txt +++ /dev/null @@ -1,154 +0,0 @@ - - - - Help for the application monitor system - --------------------------------------- - - - - - - The monitor system has two types of windows, the node window - which opens when appmon:start() is evaluated, and the - application window which opens when an application in the node - window is clicked on. - - All nodes that are known to appmon is shown in the node - window, normally this is all Erlang nodes visible with the - nodes() command. - - -The Node window ---------------- - - The node window monitors nodes. At the top there is a menubar - and below that, each known node is shown separated with a thin - line from the others. A node is represented by its name as - root of its application tree. The node name pictures the - application controller on that node. The name itself is a menu - where operations on the node can be performed (rebooting it - for instance). To the far left is a load meter (like those on - a tape deck) which measures the current load at the - node. Below the node name (the application controller) is a - tree with applications, clicking on these applications starts - the application monitor. - - - The top window menubar - ---------------------- - - File:Quit - Stop the monitor. - - Options: - Load: time - Load is calculated (roughly) as processor time. - Load: queue - Load is calculated as the length of the ready - queue. - Load: prog - A progressive scale is used for load values. - Load: linear - A linear scale is used for load values. - - Help - Prints this message. - - - The application controller menu - ------------------------------- - Reboot - Reboot the node - Restart - Restart the node - Stop - Stop the node - - - The load meter - -------------- - - Load can be measured as processor time / elapsed time or as - the length of the runtime queue, depending on the setting in - the Options menu. - - -The Application window ----------------------- - - The application window monitors an application. It will - automaticly update the window every other second or so if - there are any changes in the process tree. At the top there is - a menubar followed by a toolbar and then the application - tree. Application trees come in two flavours: supervision - view, where a strict supervision tree is shown, and process - view, where all linked processes in the application is shown. - - - The application window menubar - ------------------------------ - - File:Quit - Quit the application window. - - Options:Refresh - Update process information and refresh - screen. - - Options:Sup. view - - Show strict supervision tree only. - - Options:Proc. view - - Show all linked processes. - - Help - Prints this message. - - - The application window toolbar - ------------------------------ - - The application toolbar controls the actions of the mouse - pointer. Clicking on a process in the application window have - different meaning depending on which tool is selected. The - procedure is to first press a button (T for trace for example) - and then click on the process that should be traced. - - Info - Process information is printed in the shell. This mode - is default and automaticly returned to after a mouse click. - - Send - Send a message to the clicked process. A window will - pop up where the message can be written (and you can also - change the destination pid). Double clicking on this button - pops up a window where pid and message can be filled in. - - Trace - Toggle trace on/off on the process. Note that not all - processes respond to the sys:trace call. - - Kill - Send a non-trappable exit signal to the process. - - -Technical Detail ----------------- - - Files and distribution - ---------------------- - - Appmon is a distributed program but all graphics is handled on - one node (the one it is started on) so GS need only to be - loaded on that single node. All real monitoring is done in a - single module (appmon_info) being run on each node which acts - as an information centre. The various windows (node and - application) then subscribe for information. - - In summary: only the appmon_info module must be accessible by - the clients, the rest of the appmon files are only needed at - the server. - - Trouble shooting - ---------------- - - Q. Why doesn't all my nodes show up in the node window? - - A 1. Are the nodes visible with the nodes() command in the - shell? If not you must do net:ping(NodeName) to add nodes to - the Erlang distribution. - - A 2. Is the appmin_info module loadable at the missing - node(s)? - - Q. Why doesn't the application window show my application - supervision structure? - - A. Does your application have a real application master? It is - absolutely necessary that your top process behaves as a - supervisor should (a program is not supervised just because it - is started with application:start). diff --git a/lib/appmon/priv/blank.html b/lib/appmon/priv/blank.html deleted file mode 100644 index 44e86908a0..0000000000 --- a/lib/appmon/priv/blank.html +++ /dev/null @@ -1,6 +0,0 @@ - - - -  - - \ No newline at end of file diff --git a/lib/appmon/priv/info_frames.html b/lib/appmon/priv/info_frames.html deleted file mode 100644 index 9320364883..0000000000 --- a/lib/appmon/priv/info_frames.html +++ /dev/null @@ -1,9 +0,0 @@ - - -WebAppmon - - - - - - \ No newline at end of file diff --git a/lib/appmon/priv/main_frame.html b/lib/appmon/priv/main_frame.html deleted file mode 100644 index 57e540a2c1..0000000000 --- a/lib/appmon/priv/main_frame.html +++ /dev/null @@ -1,9 +0,0 @@ - - -WebAppmon - - - - - - \ No newline at end of file diff --git a/lib/appmon/priv/start_info.html b/lib/appmon/priv/start_info.html deleted file mode 100644 index 580319beb1..0000000000 --- a/lib/appmon/priv/start_info.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - - -
- - - - - - - - - - - - - -
-Welcome to the Web based User Interface to Appmon -




-
  -
- -
- - \ No newline at end of file diff --git a/lib/appmon/src/Makefile b/lib/appmon/src/Makefile deleted file mode 100644 index c1620bc37a..0000000000 --- a/lib/appmon/src/Makefile +++ /dev/null @@ -1,103 +0,0 @@ -# -# %CopyrightBegin% -# -# Copyright Ericsson AB 1996-2013. All Rights Reserved. -# -# The contents of this file are subject to the Erlang Public License, -# Version 1.1, (the "License"); you may not use this file except in -# compliance with the License. You should have received a copy of the -# Erlang Public License along with this software. If not, it can be -# retrieved online at http://www.erlang.org/. -# -# Software distributed under the License is distributed on an "AS IS" -# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -# the License for the specific language governing rights and limitations -# under the License. -# -# %CopyrightEnd% -include $(ERL_TOP)/make/target.mk -include $(ERL_TOP)/make/$(TARGET)/otp.mk - -# ---------------------------------------------------- -# Application version -# ---------------------------------------------------- -include ../vsn.mk -VSN=$(APPMON_VSN) - -# ---------------------------------------------------- -# Release directory specification -# ---------------------------------------------------- -RELSYSDIR = $(RELEASE_PATH)/lib/appmon-$(VSN) - -# ---------------------------------------------------- -# Target Specs -# ---------------------------------------------------- - -MODULES= \ - appmon \ - appmon_a \ - appmon_dg \ - appmon_place \ - appmon_txt \ - appmon_lb \ - process_info \ - appmon_web - -# appmon_info \ Moved to runtime tools where it belongs - - -HRL_FILES= appmon_dg.hrl - -ERL_FILES= $(MODULES:%=%.erl) - -TARGET_FILES= $(MODULES:%=../ebin/%.$(EMULATOR)) $(APP_TARGET) $(APPUP_TARGET) - -APP_FILE= appmon.app -APPUP_FILE= appmon.appup - -APP_SRC= $(APP_FILE).src -APPUP_SRC= $(APPUP_FILE).src - -APP_TARGET= ../ebin/$(APP_FILE) -APPUP_TARGET= ../ebin/$(APPUP_FILE) - -# ---------------------------------------------------- -# FLAGS -# ---------------------------------------------------- -ERL_COMPILE_FLAGS += +warn_obsolete_guard - -# ---------------------------------------------------- -# Targets -# ---------------------------------------------------- - -debug opt: $(TARGET_FILES) - -clean: - rm -f $(TARGET_FILES) - rm -f core - -docs: - -# ---------------------------------------------------- -# Special Build Targets -# ---------------------------------------------------- - -$(APP_TARGET): $(APP_SRC) ../vsn.mk - $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ - -$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk - $(vsn_verbose)sed -e 's;%VSN%;$(VSN);' $< > $@ - -# ---------------------------------------------------- -# Release Target -# ---------------------------------------------------- -include $(ERL_TOP)/make/otp_release_targets.mk - -release_spec: opt - $(INSTALL_DIR) "$(RELSYSDIR)/src" - $(INSTALL_DATA) $(ERL_FILES) $(HRL_FILES) "$(RELSYSDIR)/src" - $(INSTALL_DIR) "$(RELSYSDIR)/ebin" - $(INSTALL_DATA) $(TARGET_FILES) "$(RELSYSDIR)/ebin" - -release_docs_spec: - diff --git a/lib/appmon/src/appmon.app.src b/lib/appmon/src/appmon.app.src deleted file mode 100644 index aa6a08772e..0000000000 --- a/lib/appmon/src/appmon.app.src +++ /dev/null @@ -1,24 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1997-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -{application, appmon, - [{description, "DEVTOOLS CXC 138 16"}, - {vsn, "%VSN%"}, - {modules, [appmon, appmon_a, appmon_dg, %% appmon_info, moved to runtime tools - appmon_lb, appmon_place, appmon_txt,process_info,appmon_web]}, - {registered,[appmon, appmon_info, appmon_txt,webappmon_server,proc_info]}, - {applications, [kernel, stdlib]}]}. diff --git a/lib/appmon/src/appmon.appup.src b/lib/appmon/src/appmon.appup.src deleted file mode 100644 index 0d918b6081..0000000000 --- a/lib/appmon/src/appmon.appup.src +++ /dev/null @@ -1,18 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -{"%VSN%",[],[]}. diff --git a/lib/appmon/src/appmon.erl b/lib/appmon/src/appmon.erl deleted file mode 100644 index ba98a24400..0000000000 --- a/lib/appmon/src/appmon.erl +++ /dev/null @@ -1,1081 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% --module(appmon). --behaviour(gen_server). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,create,3}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,read,2}}, - {nowarn_deprecated_function,{gs,start,1}}]). - -%%%--------------------------------------------------------------------- -%%% Appmon main module. -%%% Creates the main window and receives load and application -%%% information from all connected nodes. -%%%--------------------------------------------------------------------- - -%% External exports --export([start/0, stop/0]). - -%% gen_server callbacks --export([init/1, handle_cast/2, handle_info/2, terminate/2]). --export([handle_call/3, code_change/3]). % not used - -%% Canvas button data --record(canvasbutton, {text, ul, ll, rect, x, y, w, h}). - -%% Options - all the fields are GS radio buttons --record(options, {single, many, time, queue, prog, linear}). - -%% Main window data --record(win, {name, % atom() Monitored node - window, % gsobj() - wwindow, % int() Window width - hwindow, % int() Window height - options, % #options{} - canvas, % gsobj() - wcanvas, % int() Canvas width - hcanvas, % int() Canvas height - l1, l2, % gsobj() Canvas lines - leds, % [gsobj()] Load meter - nodelabel, % {gsobj(),gsobj()} - appobjs=[], % [gsobj()] Buttons etc. - nodemenu}). % gsobj() Node menu - -%% Node data --record(mnode, {name, % atom() Node name - status, % alive | dead - pid, % pid() - apps, % [{Pid,App,Descr}] - load}). % {Old, New} - -%% Internal state data --record(state, {gs, % pid() - wins=[], % [#win()] GUIs - window_mode, % single | many - load_mode1, % time | queue - load_mode2, % prog | linear - lbpid, % pid() - mnodes=[]}). % [#mnode{}] - -%%%--------------------------------------------------------------------- -%%% External exports -%%%--------------------------------------------------------------------- - -start() -> - gen_server:start({local, appmon}, ?MODULE, [], []). - -stop() -> - gen_server:cast(appmon, stop). - - -%%%--------------------------------------------------------------------- -%%% gen_server callbacks -%%%--------------------------------------------------------------------- - -%%---------------------------------------------------------------------- -%% Func: init/1 -%% Returns: {ok, State} | -%% {ok, State, Timeout} | -%% ignore | -%% {stop, Reason} -%%---------------------------------------------------------------------- -init([]) -> - process_flag(trap_exit, true), - - %% Subscribe to {nodeup,Node} and {nodedown,Node} messages - net_kernel:monitor_nodes(true), - - LbPid = appmon_lb:start(self ()), - - %% Check which remote nodes have appmon code available (OTP-4887) - NodesOk = lists:filter(fun(Node) -> check_node(Node) end, nodes()), - Nodes = [node()|NodesOk], - - %% Start monitoring the existing nodes - MNodes = mk_mnodes(Nodes, LbPid), - - %% Draw the main window - GS = gs:start([{kernel,true}]), - GUI = draw_win(GS, node()), - - %% Update the Nodes menu with all known nodes - lists:foreach(fun(Node) -> - display_addnode(GUI, Node) - end, - Nodes), - - %% Mark the default options as selected in the Options menu - display_setopt(GUI, single), - display_setopt(GUI, time), - display_setopt(GUI, prog), - - {ok, #state{gs=GS, wins=[GUI], - window_mode=single, load_mode1=time, load_mode2=prog, - lbpid=LbPid, mnodes=MNodes}}. - -check_node(Node) -> - case rpc:call(Node, code, which, [appmon]) of - File when is_list(File) -> - true; - _ -> % non_existing (| cover_compiled) - false - end. - -%%---------------------------------------------------------------------- -%% Func: handle_call/3 -%% Returns: {reply, Reply, State} | -%% {reply, Reply, State, Timeout} | -%% {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, Reply, State} | (terminate/2 is called) -%% {stop, Reason, State} (terminate/2 is called) -%%---------------------------------------------------------------------- -handle_call(norequest, _From, State) -> - {reply, null, State}. - -%%---------------------------------------------------------------------- -%% Func: handle_cast/2 -%% Returns: {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} (terminate/2 is called) -%%---------------------------------------------------------------------- -handle_cast(stop, State) -> - {stop, normal, State}. - -%%---------------------------------------------------------------------- -%% Func: handle_info/2 -%% Returns: {noreply, State} | -%% {noreply, State, Timeout} | -%% {stop, Reason, State} (terminate/2 is called) -%%---------------------------------------------------------------------- -%% Load information from a node -handle_info({delivery, _Serv, load, Node, Load}, State) -> - - %% Update node information - MNode = get_mnode(Node, State#state.mnodes), - MNode1 = MNode#mnode{load=Load}, - MNodes = replace_mnode(Node, MNode1, State#state.mnodes), - - %% If Node is currently displayed, update graphics - case get_win(Node, State#state.wins) of - {ok, GUI} -> - display_load(GUI, Load); - false -> - ignore - end, - - {noreply, State#state{mnodes=MNodes}}; - -%% Application information from a node -handle_info({delivery, _Serv, app_ctrl, Node, Apps}, State) -> - - %% Update node information - MNode = get_mnode(Node, State#state.mnodes), - MNode1 = MNode#mnode{apps=Apps}, - MNodes = replace_mnode(Node, MNode1, State#state.mnodes), - - %% If Node is currently displayed, update graphics - Wins = case get_win(Node, State#state.wins) of - {ok, GUI} -> - draw_clear(GUI), - GUI1 = draw_apps(GUI, Apps), - replace_win(Node, GUI1, State#state.wins); - false -> - State#state.wins - end, - - appmon_lb:add_apps (State#state.lbpid, Apps, Node), - {noreply, State#state{wins=Wins, mnodes=MNodes}}; - -handle_info({nodeup, Node}, State) -> - - %% First, make sure appmon code is available at remode node, - %% or the node should be ignored (OTP-3591) - case check_node(Node) of - true -> - - %% If this is a previously unknown node, update window's - %% 'Nodes' menu - case get_mnode(Node, State#state.mnodes) of - false -> - display_addnode(State#state.wins, Node); - _OldMnode -> - ignore - end, - - %% Update node information (=> state is automatically - %% changed to 'alive') - MNode = mk_mnode(Node, State#state.lbpid), - MNodes = replace_mnode(Node, MNode, State#state.mnodes), - - %% If Node is currently displayed, update graphics - case get_win(Node, State#state.wins) of - {ok, GUI} -> - display_nodeup(GUI, Node); - false -> - ignore - end, - - appmon_lb:update_status(State#state.lbpid, Node, alive), - {noreply, State#state{mnodes=MNodes}}; - - false -> - {noreply, State} - end; - -handle_info({nodedown, Node}, State) -> - - %% If this is a previously unknown node, ignore the message. - %% (The situation occurs when failing to connect to another node). - %% Otherwise, update the node information. - case get_mnode(Node, State#state.mnodes) of - false -> - {noreply, State}; - MNode -> - MNode1 = MNode#mnode{status=dead}, - MNodes = replace_mnode(Node, MNode1, State#state.mnodes), - - %% If Node is currently displayed, update graphics - Wins = case get_win(Node, State#state.wins) of - {ok, GUI} -> - display_nodedown(GUI), - GUI1 = draw_clear(GUI), - replace_win(Node, GUI1, State#state.wins); - false -> - State#state.wins - end, - - appmon_lb:remove_node(State#state.lbpid, Node), - {noreply, State#state{wins=Wins, mnodes=MNodes}} - end; - -%% Application 'button' events -handle_info({gs, _Obj, buttonpress, Data, _Arg}, State) -> - {canvasbutton, CBtn, _App} = Data, - press(CBtn), - {noreply, State}; -handle_info({gs, _Obj, buttonrelease, Data, [_,X,Y|_]}, State) -> - {canvasbutton, CBtn, {application, App, Node}} = Data, - release(CBtn), - - %% Check that mouse button was released over the button! - L = CBtn#canvasbutton.x, R = L + CBtn#canvasbutton.w, - T = CBtn#canvasbutton.y, B = T + CBtn#canvasbutton.h, - if - X>L, XT, Y - MNode = get_mnode(Node, State#state.mnodes), - {value, {Pid, _App, _Descr}} = - lists:keysearch(App, 2, MNode#mnode.apps), - appmon_a:start(Node, App, Pid); - true -> - ignore - end, - {noreply, State}; - -handle_info({gs, _Button, click, Data, _Arg}, State) -> - ThisNode = node(), - case Data of - - %% File menu item - listbox -> - appmon_lb:open_win(State#state.lbpid, - parse_nodes(State#state.mnodes)), - {noreply, State}; - {close, WinObj} -> - {ok, GUI} = get_win2(WinObj, State#state.wins), - gs:destroy(WinObj), - - %% Terminate if this was the only open window - case remove_win(GUI#win.name, State#state.wins) of - [] -> - {stop, normal, State}; - Wins -> - {noreply, State#state{wins=Wins}} - end; - exit -> - {stop, normal, State}; - - %% Actions menu item - {action, Action, WinObj} -> - {ok, GUI} = get_win2(WinObj, State#state.wins), - Node = GUI#win.name, - - if - Node==ThisNode -> - case Action of - ping -> - %% Ignore - makes no sense to ping yourself - ignore; - _ -> % reboot | restart | stop - apply(init, Action, []) - end; - - Node/=ThisNode -> - case Action of - ping -> - net_adm:ping(Node); - _ -> % reboot | restart | stop - rpc:cast(Node, init, Action, []) - end - end, - {noreply, State}; - - %% Options menu item - {window_mode, Mode} -> - - %% Update windows so they all show the same options - lists:foreach(fun(GUI) -> - display_setopt(GUI, Mode) - end, - State#state.wins), - {noreply, State#state{window_mode=Mode}}; - - {option, Tag, Option} -> - - %% Update windows so they all show the same options - lists:foreach(fun(GUI) -> - display_setopt(GUI, Tag) - end, - State#state.wins), - - %% Update all appmon_info processes about which kind of - %% load data is desired - lists:foreach(fun(MNode) -> - appmon_info:load(MNode#mnode.pid, - MNode#mnode.name, - true, - Option) - end, - State#state.mnodes), - - if - Tag==time; Tag==queue -> - {noreply, State#state{load_mode1=Tag}}; - Tag==prog; Tag==linear -> - {noreply, State#state{load_mode2=Tag}} - end; - - %% Nodes menu item - {node, Node, WinObj} -> - - %% Check first if this window is already displayed - case get_win(Node, State#state.wins) of - {ok, GUI} -> - - %% Node is already displayed, raise its window - gs:config(GUI#win.window, raise), - - {noreply, State}; - - %% Node is not displayed - false -> - - %% Redraw existing window or create a new window - %% depending on window mode - case State#state.window_mode of - - single -> - {ok, GUI} = - get_win2(WinObj, State#state.wins), - - %% Clear window and correct the node name - draw_clear(GUI), - GUI1 = draw_nodename(GUI, Node), - - %% Update window with the correct node name - %% and the applications running at the node - MNode = get_mnode(Node, State#state.mnodes), - GUI2 = case MNode#mnode.status of - dead -> - display_nodedown(GUI1), - GUI1; - alive -> - display_nodeup(GUI1, Node), - draw_apps(GUI1, - MNode#mnode.apps) - end, - Wins = replace_win(GUI#win.name, GUI2, - State#state.wins), - - {noreply, State#state{wins=Wins}}; - - many -> - GUI = draw_win(State#state.gs, Node), - - %% Update Nodes menu with all known nodes - - %% use MNodes to get them in the right order - lists:foreach(fun(MNode) -> - Name = - MNode#mnode.name, - display_addnode(GUI, - Name) - end, - State#state.mnodes), - - %% Mark selected options in the Options menu - display_setopt(GUI, many), - display_setopt(GUI, State#state.load_mode1), - display_setopt(GUI, State#state.load_mode2), - - %% Add the applications running at the node - MNode = get_mnode(Node, State#state.mnodes), - - GUI1 = case MNode#mnode.status of - dead -> - display_nodedown(GUI), - GUI; - alive -> - display_nodeup(GUI, Node), - draw_apps(GUI, - MNode#mnode.apps) - end, - Wins = [GUI1|State#state.wins], - - {noreply, State#state{wins=Wins}} - end - end; - - %% Help menu = Help button - help -> - HelpFile = filename:join([code:lib_dir(appmon), - "doc", "html", "part_frame.html"]), - case State#state.wins of - [Win] -> - tool_utils:open_help(Win#win.window, HelpFile); - _ -> - tool_utils:open_help(State#state.gs, HelpFile) - end, - {noreply, State}; - - _Other -> - {noreply, State} - end; -handle_info({gs, WinObj, configure, _, [WWindow, HWindow|_]}, State) -> - {ok, GUI} = get_win2(WinObj, State#state.wins), - GUI1 = draw_resize(GUI, WWindow, HWindow), - display_scrollbar(GUI1), - Wins = replace_win(GUI#win.name, GUI1, State#state.wins), - {noreply, State#state{wins=Wins}}; -handle_info({gs, WinObj, destroy, _, _}, State) -> % OTP-1179 - {ok, GUI} = get_win2(WinObj, State#state.wins), - - %% Terminate if this was the only open window - case remove_win(GUI#win.name, State#state.wins) of - [] -> - {stop, normal, State}; - Wins -> - {noreply, State#state{wins=Wins}} - end; - -handle_info(stop, State) -> - {stop, normal, State}; -handle_info({'EXIT', Pid, Reason}, State) -> - case Reason of - shutdown -> - %% Appmon is being asked to shut down, eg during reboot - {stop, Reason, State}; - _ -> - case State#state.gs of - - %% GS exited, kill appmon - {0, Pid} -> - {stop, normal, State}; - - _ -> - {noreply, State} - end - end; -handle_info(_Info, State) -> - {noreply, State}. - -%%---------------------------------------------------------------------- -%% Func: terminate/2 -%% Purpose: Shutdown the server -%% Returns: any (ignored by gen_server) -%%---------------------------------------------------------------------- -terminate(_Reason, State) -> - bcast(State#state.mnodes, {kill}), - appmon_lb:stop(State#state.lbpid), - ok. - -%%---------------------------------------------------------------------- -%% Func: code_change/3 -%% Purpose: Convert process state when code is changed -%% Returns: {ok, NewState} -%%---------------------------------------------------------------------- -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - - -%%%--------------------------------------------------------------------- -%%% Internal functions -%%%--------------------------------------------------------------------- - -%%---------------------------------------------------------------------- -%% MNode manipulating functions -%%---------------------------------------------------------------------- - -%% mk_mnodes(Nodes, LbPid) -> MNodes -%% Nodes -> [atom()] -%% LbPid -> pid() -%% MNodes -> [#mnode{}] -mk_mnodes([Node|Nodes], LbPid) -> - [mk_mnode(Node, LbPid) | mk_mnodes(Nodes, LbPid)]; -mk_mnodes([], _LbPid) -> - []. - -mk_mnode(Node, LbPid) -> - - %% Create an appmon process at the node - {ok, Pid} = appmon_info:start_link(Node, self(), []), - - appmon_lb:add_node(LbPid, Node), - appmon_info:load(Pid, Node, true, [{timeout,1000}]), - appmon_info:app_ctrl(Pid, Node, true, []), - - #mnode{name=Node, status=alive, pid=Pid}. - -%% get_mnode(Node, MNodes) -> MNode | false -%% Node -> atom() -%% MNodes -> [#mnode{}] -%% MNode -> #mnode{} -get_mnode(Node, MNodes) -> - case lists:keysearch(Node, #mnode.name, MNodes) of - {value, MNode} -> - MNode; - false -> - false - end. - -%% replace_mnode(Node, MNode, MNodes1) -> Mnodes2 -%% Node -> atom() -%% MNode -> #mnode{} -%% MNodes1 -> MNodes2 -> [#mnode{}] -%% Replaces, or adds if previously not included, the mnode with name -%% Node in MNodes1 with MNode. -replace_mnode(Node, MNode, [#mnode{name=Node} | MNodes]) -> - [MNode | MNodes]; -replace_mnode(Node, MNode, [MNode2 | MNodes]) -> - [MNode2 | replace_mnode(Node, MNode, MNodes)]; -replace_mnode(_Node, MNode, []) -> - [MNode]. - - -%%---------------------------------------------------------------------- -%% GUI list manipulating functions -%%---------------------------------------------------------------------- - -%% get_win(Node, Wins) -> Win -%% Node -> atom() -%% Wins -> [#win{}] -%% Win -> #win{} -get_win(Node, Wins) -> - case lists:keysearch(Node, #win.name, Wins) of - {value, Win} -> - {ok, Win}; - false -> - false - end. - -%% get_win2(WinObj, Wins) -> Win -%% Window -> gsobj() -%% Wins -> [#win{}] -%% Win -> #win{} -get_win2(WinObj, Wins) -> - case lists:keysearch(WinObj, #win.window, Wins) of - {value, Win} -> - {ok, Win}; - false -> - false - end. - -%% replace_win(Node, Win, Wins) -> Wins2 -%% Node -> atom() -%% Win -> #win{} -%% Wins -> Wins2 -> [#win{}] -replace_win(Node, Win, Wins) -> - lists:keyreplace(Node, #win.name, Wins, Win). - -%% remove_win(Node, Wins) -> Wins2 -%% Node -> atom() -%% Wins -> Wins2 -> [#win{}] -remove_win(Node, Wins) -> - lists:keydelete(Node, #win.name, Wins). - - - - -%%---------------------------------------------------------------------- -%% GUI manipulating functions -%%---------------------------------------------------------------------- --define(PAD, 10). % Pad between objects --define(PAD2, 4*?PAD). % Pad betw. node lbl and app - --define(hMENUBAR, 25). % Note: Hardwired in Tcl/Tk - --define(xNODELBL, 60). % Node label --define(yNODELBL, 35). --define(hNODELBL, 20). - --define(xMETER, 5). % Meter --define(yMETER, ?yNODELBL). --define(wMETER, 20). --define(hMETER, ?hNODELBL + ?PAD + ?PAD2 + ?hBTN). --define(LEDCOUNT, 16). - --define(xBTN, ?xNODELBL). % Application buttons --define(yBTN, ?yNODELBL + ?hNODELBL + ?PAD + ?PAD2). --define(wBTN, 70). % min width --define(hBTN, 20). - --define(wCANVAS, 470 + ?wMETER + 3*?PAD). % Canvas --define(hCANVAS, ?yNODELBL + ?hNODELBL + ?PAD + ?PAD2 + ?hBTN + 2*?PAD). - --define(wWIN, ?wCANVAS). % Window --define(hWIN, ?hMENUBAR + ?hCANVAS). - -%%--Main window--------------------------------------------------------- - -draw_win(GS, Node) -> - - %% Main window - NodeStr = atom_to_list(Node), - Win = gs:create(window, GS, [{title, - "APPMON: Overview on " ++ NodeStr}, - {width, ?wWIN}, {height, ?hWIN}, - {configure, true}]), - Canvas = gs:create(canvas, Win, [{x, 0}, {y, ?hMENUBAR}, - {width, ?wCANVAS}, - {height, ?hCANVAS}]), - L1 = gs:create(line, Canvas, [{coords, - [{0,?yNODELBL-?PAD}, - {?wCANVAS,?yNODELBL-?PAD}]}]), - L2 = gs:create(line, Canvas, [{coords, - [{0,?hCANVAS-?PAD}, - {?wCANVAS,?hCANVAS-?PAD}]}]), - - %% Standard buttons - MenuBar = gs:create(menubar, Win, [{height, ?hMENUBAR}]), - - FileMenuBtn = gs:create(menubutton, MenuBar, - [{label, {text,"File"}}]), - FileMenu = gs:create(menu, FileMenuBtn, []), - gs:create(menuitem, FileMenu, [{label, {text,"Show List Box..."}}, - {data, listbox}]), - gs:create(menuitem, FileMenu, [{label, {text, "Close"}}, - {data, {close, Win}}]), - gs:create(menuitem, FileMenu, [{itemtype, separator}]), - gs:create(menuitem, FileMenu, [{label, {text, "Exit"}}, - {data, exit}]), - - ActionMenuBtn = gs:create(menubutton, MenuBar, - [{label,{text,"Actions"}}]), - ActionMenu = gs:create(menu, ActionMenuBtn, []), - gs:create(menuitem, ActionMenu, [{label, {text,"Reboot"}}, - {data, {action, reboot, Win}}]), - gs:create(menuitem, ActionMenu, [{label, {text,"Restart"}}, - {data, {action, restart, Win}}]), - gs:create(menuitem, ActionMenu, [{label, {text,"Stop"}}, - {data, {action, stop, Win}}]), - gs:create(menuitem, ActionMenu, [{label, {text,"Ping"}}, - {data, {action, ping, Win}}]), - - OptMenuBtn = gs:create(menubutton, MenuBar, - [{label, {text,"Options"}}]), - OptMenu = gs:create(menu, OptMenuBtn, []), - G0 = now(), % Group identity unique per window! - SMI = gs:create(menuitem, OptMenu, [{label, {text,"One window"}}, - {itemtype, radio}, {group, G0}, - {data, {window_mode, single}}]), - MMI = gs:create(menuitem, OptMenu, [{label, {text,"Many windows"}}, - {itemtype, radio}, {group, G0}, - {data, {window_mode, many}}]), - gs:create(menuitem, OptMenu, [{itemtype, separator}]), - G1 = now(), - TMI = gs:create(menuitem, OptMenu, [{label, {text,"Load: time"}}, - {itemtype, radio}, {group, G1}, - {data, - {option, time, - [{load_method,time}]}}]), - QMI = gs:create(menuitem, OptMenu, [{label, {text,"Load: queue"}}, - {itemtype, radio}, {group, G1}, - {data, - {option, queue, - [{load_method,queue}]}}]), - G2 = now(), - PMI = gs:create(menuitem, OptMenu, - [{label, {text,"Load: progressive"}}, - {itemtype, radio}, {group, G2}, - {data, {option, prog, [{load_scale,prog}]}}]), - LMI = gs:create(menuitem, OptMenu, [{label, {text,"Load: linear"}}, - {itemtype, radio}, {group, G2}, - {data, - {option, linear, - [{load_scale,linear}]}}]), - - NodeMenuBtn = gs:create(menubutton, MenuBar, - [{label, {text,"Nodes"}}]), - NodeMenu = gs:create(menu, NodeMenuBtn, []), - - HelpMenuBtn = gs:create(menubutton, MenuBar, - [{label, {text,"Help"}}, {side, right}]), - HelpMenu = gs:create(menu, HelpMenuBtn, []), - gs:create(menuitem, HelpMenu, [{label, {text,"Help"}}, - {data, help}]), - - %% Meter - HLed = trunc((?hMETER)/(?LEDCOUNT)), - Leds = draw_leds(?LEDCOUNT, Canvas, ?yMETER, HLed, []), - leds_down(Leds, ?LEDCOUNT, 0), - gs:create(text, Canvas, [{coords, - [{?xMETER, ?yMETER+HLed*?LEDCOUNT}]}, - {anchor, nw}, - {font, {screen,8}}, - {text, "Load"}]), - gs:create(text, Canvas, [{coords, [{?xMETER+?wMETER, ?yMETER}]}, - {anchor, nw}, - {font, {screen,8}}, - {text, "Hi"}]), - gs:create(text, Canvas, [{coords, [{?xMETER+?wMETER, - ?yMETER+HLed*?LEDCOUNT}]}, - {anchor, w}, - {font, {screen,8}}, - {text, "Lo"}]), - - %% Node label - WNodeLbl = 8*length(NodeStr)+10, - NLRect = gs:create(rectangle, Canvas, - [{coords, [{?xNODELBL,?yNODELBL}, - {?xNODELBL+WNodeLbl, - ?yNODELBL+?hNODELBL}]}, - {fill, black}]), - Xc = ?xNODELBL + round(WNodeLbl/2), - Yc = ?yNODELBL + round(?hNODELBL/2), - NLText = gs:create(text, Canvas, [{text, NodeStr}, - {fg, {250,235,215}}, - {coords, [{Xc,Yc}]}, - {anchor, c}]), - NodeLbl = {NLRect, NLText}, - - gs:config(Win, {map, true}), - #win{name=Node, - window=Win, wwindow=?wWIN, hwindow=?hCANVAS, - options=#options{single=SMI, many=MMI, - time=TMI, queue=QMI, prog=PMI, linear=LMI}, - canvas=Canvas, wcanvas=?wCANVAS, hcanvas=?hCANVAS, - l1=L1, l2=L2, leds=Leds, nodelabel=NodeLbl, nodemenu=NodeMenu}. - -draw_leds(N, Canvas, Y, HLed, Leds) when N>0 -> - Led = gs:create(rectangle, Canvas, - [{coords, - [{?xMETER,Y}, {?xMETER+?wMETER,Y+HLed}]}]), - draw_leds(N-1, Canvas, Y+HLed, HLed, [Led | Leds]); -draw_leds(0, _Canvas, _Y, _HLed, Leds) -> - Leds. - -%%--Draw functions------------------------------------------------------ -%% Functions that modify the GUI and its data (win{}) - -%% Display the node name in the window title -%% (The name in the node label is changed by display_nodeup|nodedown) -%% Used when a changing the node to display -draw_nodename(GUI, Node) -> - NodeStr = atom_to_list(Node), - gs:config(GUI#win.window, - {title, "APPMON: Overview on " ++ NodeStr}), - GUI#win{name=Node}. - -%% Resize the canvas (when the window has been resized) -draw_resize(GUI, W, H) -> - Hc = H - ?hMENUBAR, - gs:config(GUI#win.canvas, [{width, W}, {height, Hc}]), - Yline1 = ?yNODELBL-?PAD, - Yline2 = ?hCANVAS-?PAD, - gs:config(GUI#win.l1, [{coords, [{0,Yline1},{W,Yline1}]}]), - gs:config(GUI#win.l2, [{coords, [{0,Yline2},{W,Yline2}]}]), - GUI#win{wwindow=W, hwindow=Hc}. - -%% Clear the GUI from applications and connecting lines -draw_clear(GUI) -> - draw_clear2(GUI#win.appobjs), - gs:config(GUI#win.canvas, [{hscroll, false}]), - GUI#win{appobjs=[]}. -draw_clear2([CBtn | AppObjs]) when is_record(CBtn, canvasbutton) -> - gs:destroy(CBtn#canvasbutton.text), - gs:destroy(CBtn#canvasbutton.ul), - gs:destroy(CBtn#canvasbutton.ll), - gs:destroy(CBtn#canvasbutton.rect), - draw_clear2(AppObjs); -draw_clear2([GSObj | AppObjs]) -> - gs:destroy(GSObj), - draw_clear2(AppObjs); -draw_clear2([]) -> - ignore. - -%% Display the applications, which are a list of tuples: {Pid,App,Descr} -%% Display them in the reversed order to get them chronologically -%% from left to right. -draw_apps(GUI, Apps) -> - {AppObjs, WCanvas} = draw_apps(GUI, lists:reverse(Apps), ?xNODELBL, - undefined, 0, []), - NewGUI = GUI#win{wcanvas=WCanvas, appobjs=AppObjs}, - display_scrollbar(NewGUI), - NewGUI. - -draw_apps(GUI, [App | Apps], X, Lx0, N, GSObjs) -> - - %% Some necessary data - {_Pid, AppName, _Descr} = App, - Text = atom_to_list(AppName), - Width = erlang:max(8*length(Text)+10, ?wBTN), - - %% Connect the application to the node label with a line - %% Lx0 = leftmost X coordinate (above previous application button) - %% Lx = X coordinate, Ly1, Ly2 = top and bottom Y coordinates - Lx = X + trunc(Width/2), - Line = case N of - %% First (leftmost application) - draw a vertical line - %% between the node label and application button - 0 -> - Ly1 = ?yNODELBL + ?hNODELBL +?PAD, - Ly2 = Ly1 + ?PAD2, - gs:create(line, GUI#win.canvas, - [{coords, [{Lx, Ly1}, {Lx, Ly2}]}]); - %% Nth application, N>1 - draw a horizontal line from - %% line connecting to the previous application button, - %% to above this application button, then vertically down - %% to the application button - _ -> - Ly1 = ?yNODELBL + ?hNODELBL + ?PAD + ?PAD2/2, - Ly2 = Ly1 + ?PAD2/2, - gs:create(line, GUI#win.canvas, - [{coords, [{Lx0, Ly1}, {Lx, Ly1}, - {Lx, Ly2}]}]) - end, - - %% The application is represented using a 'canvasbutton' - Data = {application, AppName, GUI#win.name}, - AppBtn = canvasbutton(GUI#win.canvas, Text, X, ?yBTN, Width, ?hBTN, - Data), - - draw_apps(GUI, Apps, X+Width+?PAD, Lx, N+1, [AppBtn, Line|GSObjs]); -draw_apps(_GUI, [], X, _N, _Lx0, GSObjs) -> - {GSObjs, X}. - -%%--Display functions--------------------------------------------------- -%% Functions that modify the GUI but not its data - -%% Add a new node to the Nodes menu -%% Used when a new node has connected -display_addnode([GUI|GUIs], Node) -> - display_addnode(GUI, Node), - display_addnode(GUIs, Node); -display_addnode([], _Node) -> - ignore; -display_addnode(GUI, Node) -> - Txt = "Show " ++ atom_to_list(Node), - gs:create(menuitem, GUI#win.nodemenu, - [{label, {text,Txt}}, - {data, {node, Node, GUI#win.window}}]). - -%% Show that a node has come back up -display_nodeup(GUI, Node) -> - {Rect, Text} = GUI#win.nodelabel, - - %% Check coordinates for the rectangle and compute the new width - [{L, T}, {_R, B}] = gs:read(Rect, coords), - NodeStr = atom_to_list(Node), - W = 8*length(NodeStr)+10, - - gs:config(Rect, [{coords, [{L, T}, {L+W, B}]}, {fill, black}]), - gs:config(Text, [{text, NodeStr}, {fg, {250,235,215}}, - {coords, - [{L+round(W/2), T+round((?hNODELBL)/2)}]}]). - -%% Show that a node has gone down -display_nodedown(GUI) -> - {Rect, Text} = GUI#win.nodelabel, - - [{L, T}, {_R, B}] = gs:read(Rect, coords), - gs:config(Rect, [{coords, [{L, T}, {L+114, B}]}, {fill, gray}]), - gs:config(Text, [{text, "No connection"}, {fg, black}, - {coords, [{L+57, T+round((?hNODELBL)/2)}]}]). - -%% Add/remove scrollbars as necessary -display_scrollbar(GUI) -> - - WWindow = GUI#win.wwindow, - HWindow = GUI#win.hwindow, - WCanvas = GUI#win.wcanvas, - HCanvas = GUI#win.hcanvas, - if - WCanvas>WWindow -> - gs:config(GUI#win.canvas, - [{hscroll, bottom}, - {scrollregion,{0,0,WCanvas,HCanvas}}]); - true -> - gs:config(GUI#win.canvas, [{hscroll, false}]) - end, - if - HCanvas>HWindow -> - gs:config(GUI#win.canvas, - [{vscroll, left}, - {scrollregion,{0,0,WCanvas,HCanvas}}]); - - true -> - gs:config(GUI#win.canvas, [{vscroll, false}]) - end. - -%% Select option radio buttons -display_setopt(GUI, Option) -> - gs:config(radiobutton(GUI, Option), {select,true}). - -radiobutton(GUI, single) -> (GUI#win.options)#options.single; -radiobutton(GUI, many) -> (GUI#win.options)#options.many; -radiobutton(GUI, time) -> (GUI#win.options)#options.time; -radiobutton(GUI, queue) -> (GUI#win.options)#options.queue; -radiobutton(GUI, prog) -> (GUI#win.options)#options.prog; -radiobutton(GUI, linear) -> (GUI#win.options)#options.linear. - -%% Display load -%% Used when load information is received from the displayed node --define(highloadfg, {255,99,71}). --define(midloadfg, yellow). --define(lowloadfg, green). --define(highloadbg, {140,157,178}). --define(midloadbg, ?highloadbg). --define(lowloadbg, ?highloadbg). - -display_load(GUI, {Old, New}) -> - if - Old == New -> - true; - Old > New -> - leds_down(GUI#win.leds, Old, New); - true -> - leds_up(GUI#win.leds, Old, New) - end. - -leds_down(_Leds, Old, New) when Old == New -> - done; -leds_down(Leds, Old, New) when Old > New -> - reset_led(Leds, Old), - leds_down(Leds, Old-1, New). -leds_up(_Leds, Old, New) when Old == New -> - done; -leds_up(Leds, Old, New) when Old < New -> - set_led(Leds, Old), - leds_up(Leds, Old+1, New). - -led_on_col(N) when N > 13 -> ?highloadfg; -led_on_col(N) when N > 9 -> ?midloadfg; -led_on_col(_) -> ?lowloadfg. - -led_off_col(N) when N > 13 -> ?highloadbg; -led_off_col(N) when N > 9 -> ?midloadbg; -led_off_col(_) -> ?lowloadbg. - -reset_led(_Leds, 0) -> ok; -reset_led(Leds, N) -> - gs:config(lists:nth(N, Leds), [{fill, led_off_col(N)}]). - -set_led(_Leds, 0) -> ok; -set_led(Leds, N) -> - gs:config(lists:nth(N, Leds), [{fill, led_on_col(N)}]). - -%%---------------------------------------------------------------------- -%% Utilities -%%---------------------------------------------------------------------- - -bcast(MNodes, Msg) -> - lists:foreach(fun(MNode) -> - case MNode#mnode.status of - alive -> - MNode#mnode.pid ! Msg; - dead -> - ignore - end - end, - MNodes). - -%% parse_nodes(MNodes) -> NodeApps -%% MNodes -> [#mnode{}] -%% NodeApps -> [{Node, Status, Apps}] -%% Node -> atom() -%% Status -> alive | dead -%% Apps -> [{Pid, App}] -%% Pid -> pid() -%% App -> atom() -parse_nodes(MNodes) -> - parse_nodes(MNodes, []). -parse_nodes([MNode|MNodes], NodeApps) -> - Apps = parse_apps(MNode#mnode.apps, []), - parse_nodes(MNodes, - [{MNode#mnode.name,MNode#mnode.status,Apps}|NodeApps]); -parse_nodes([], NodeApps) -> - NodeApps. - -parse_apps([{Pid, App, _Descr}|Rest], Apps) -> - parse_apps(Rest, [{Pid, App}|Apps]); -parse_apps([], Apps) -> - Apps. - -%%---------------------------------------------------------------------- -%% Canvas buttons -%%---------------------------------------------------------------------- - -canvasbutton(Canvas, Text, X, Y, W, H, Data) -> - - %% Draw a rectangle (for event catching) - Rect = gs:create(rectangle, Canvas, [{coords, [{X,Y}, {X+W,Y+H}]}, - {fill, gs:read(Canvas, bg)}, - {buttonpress, true}, - {buttonrelease, true}]), - - %% Make the rectangle area look like a 3D button by using lines - Ul = gs:create(line, Canvas, [{coords, [{X,Y+H},{X,Y},{X+W,Y}]}, - {fg, white}, {width, 2}]), - Ll = gs:create(line, Canvas, [{coords, [{X,Y+H},{X+W,Y+H},{X+W,Y}]}, - {fg, {87,87,87}}, {width, 2}]), - - %% Write the text in the middle - Xc = X + round(W/2), - Yc = Y + round(H/2), - T = gs:create(text, Canvas, [{text, Text}, {coords, [{Xc,Yc}]}, - {anchor, c}, - {buttonpress, true}, - {buttonrelease, true}]), - - %% Create the canvasbutton object - CBtn = #canvasbutton{text=T, ul=Ul, ll=Ll, rect=Rect, - x=X, y=Y, w=W, h=H}, - - %% Configure the data - gs:config(T, {data, {canvasbutton, CBtn, Data}}), - gs:config(Rect, {data, {canvasbutton, CBtn, Data}}), - - CBtn. - -press(Canvasbutton) -> - gs:config(Canvasbutton#canvasbutton.ul, {fg, {87,87,87}}), - gs:config(Canvasbutton#canvasbutton.ll, {fg, white}). - -release(Canvasbutton) -> - gs:config(Canvasbutton#canvasbutton.ul, {fg, white}), - gs:config(Canvasbutton#canvasbutton.ll, {fg, {87,87,87}}). diff --git a/lib/appmon/src/appmon_a.erl b/lib/appmon/src/appmon_a.erl deleted file mode 100644 index 6838a7a275..0000000000 --- a/lib/appmon/src/appmon_a.erl +++ /dev/null @@ -1,1122 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% --module(appmon_a). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,create,3}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,read,2}}, - {nowarn_deprecated_function,{gs,start,1}}]). - -%%---------------------------------------------------------------------- -%% -%% Monitors an application, i.e its supervision tree. -%% -%%---------------------------------------------------------------------- -%% -%% -%% INTRODUCTION -%% ------------ -%% -%% This file contains a description of the files involved -%% and the communication between the appmon_a display -%% manager and the appmon_a2 information gatherer. Further -%% information on the placement algorithm can be found in -%% the place.erl file. -%% -%% -%% FILES -%% ----- -%% -%% The supervision tree graphical software consists of -%% the following files: -%% -%% appmon_a Gen server driving the process display window. -%% Responsible for assigning gs identifiers to all -%% processes and process link -%% appmon_a2 The process information gathering routines. -%% Works by following the process links from application -%% master once every second -%% dg The process database is implemented as a shared -%% digraph (see manual pages for digraph) and this is -%% the routines handling this digraph. Since the digraph -%% is shared appmon_a2 will put some info into it that the -%% appmon_a later will modify. The structures used are -%% described in dg.hrl -%% place Places a tree, decides the x and y coordinates (not -%% necessarily corresponding to window coordinates) of -%% processes (or vertices to be specific). Note that -%% special routines are used to transform the possibly -%% cyclic digraph into a strict tree before trying to -%% place it. -%% -%% -%% -%% IMPLEMENTATION DETAIL -%% --------------------- -%% -%% The appmon_a module will follow links between processes, -%% starting with the application master. A unique -%% reference is used to prevent infinite recursion. Note -%% that this process and link gathering is done in the -%% live digraph so that already known processes are -%% updated with the reference and new ones are added to -%% the digraph. After all processes and links have been -%% added or updated a search is made for those processes -%% and links that have an old reference. These are those -%% processes and links that are not present in the -%% application any more. Those are extracted from the -%% digraph and then deleted and the extracts are then -%% used (by appmon_a) to delete the appropriate gs -%% objects. The responsibilities of appmon_a is thus 1) add -%% all new processes and links to the digraph and 2) make -%% a list of all those objects from the digraph that have -%% been deleted. -%% -%% When appmon_a2 has gathered all necessary information it -%% notifies the appmon_a display manager. Note that this is -%% implemented as a call (as opposed to a cast) to -%% prevent appmon_a2 from changing the digraph while appmon_a -%% uses it. appmon_a places all processes using the place -%% module. place will place the processes in the x y -%% planes, hopefully in a nice way, re-forming the -%% digraph during the process into a strict tree using -%% some simple heuristics, some links that makes the -%% graph cyclic will be considered secondary and later -%% coloured red. Note that the process links are not -%% placed since their coordinates are those of the -%% processes that they are links between. The place -%% module is only concerned at a fairly high level of -%% abstraction. Currently its x coordinates are used as -%% real coordinates while the y coordinates must be -%% scaled to correct values, thus the x plane is -%% continous and the y plane is disctrete. -%% -%% Having placed processes the new ones are drawn on the -%% display along with all new process links, then all -%% processes and process links are moved to their -%% possibly new positions. The place module is not -%% sensitive to changes in position and therefore has no -%% concept of which nodes will have to be moved. hence -%% all nodes are moved (but most of them probably to the -%% same position as before) -%% -%% -%% -%% -%%---------------------------------------------------------------------- - - - --export([start/2, start/3, stop/0]). - - --record(astate, {app, name, client, digraph}). - --import(lists, [foreach/2]). - -%% gen server stuff --behaviour(gen_server). --export([init/1, handle_cast/2, handle_info/2, terminate/2]). --export([handle_call/3, code_change/3]). - - --define(APPSPACE, 10). % The space between apps --define(NODEAREA_H, 90). % The height of a node --define(BUTTAREA_H, 80). % The button area height --define(APPBUTT_H, 20). % Height of appl button --define(EDITORW, 260). - --define(MAXWIDTH, 800). --define(MINWIDTH, 382). --define(MAXHEIGHT, 450). --define(MINHEIGHT, 325). - --define(SUPVIEWTXT, "Sup. view"). --define(PROCVIEWTXT, "Proc. view"). --define(CLOSETXT, "Close"). --define(REFRESHTXT, "Refresh"). --define(SAVEOPTSTXT, "Save options"). --define(HELPTXT, "Help"). - --define(CHARWIDTH, 7). %Should use GS primitives - --define( darkkhaki, {189, 183, 107}). --define( palegoldenrod, {238, 232, 170}). --define( peachpuff4, {139, 119, 101}). --define( red, red). --define( darkgrey, {169, 169, 169}). --define( lightgrey, {211, 211, 211}). --define( royalblue, {65, 105, 225}). --define( aquamarine4, {69, 139, 116}). --define( palegreen4, {84, 139, 84}). --define( darkseagreen, {105, 139, 105}). --define( f_line_col, {150, 150, 255}). - - --include("appmon_dg.hrl"). - - -%%------------------------------------------------------------ -%%------------------------------------------------------------ - - -start(NodeName, AppName) -> - gen_server:start_link(?MODULE, {NodeName, AppName, AppName}, []). - -start(NodeName, AppName, AppId) -> - gen_server:start_link(?MODULE, {NodeName, AppName, AppId}, []). - - -stop() -> - ok. - - - -%%------------------------------------------------------------ -%% Public interface - - -%%------------------------------------------------------------ -%% Administration - -%% AppName is the name of the application, usually an atom like sasl -%% or kernel, AppId is the application pid or the application name, -%% either goes. -init({NodeName, AppName, AppId}) -> - process_flag(trap_exit, true), - {ok, Client} = appmon_info:start_link(NodeName, self(), []), - init_ref(), - init_foreign_places(), - DG = digraph:new([cyclic, private]), - State = #astate{app=AppId, name=AppName, client=Client, digraph=DG}, - refresh(State), - setup_base_win(NodeName, AppName), - {ok, State}. - -terminate(_Reason, _State) -> - ok. - -code_change(_OldVsn, State, _Extra) -> - {ok, State}. - -handle_call(norequest, _From, State) -> - {reply, null, State}. - -%%------------------------------------------------------------ -%% handle casts - -handle_cast({ping, _Node, _From}, State) -> - {noreply, State}; -handle_cast(_Other, State) -> - {noreply, State}. - - - -%%------------------------------------------------------------ -%% handle info - -handle_info({gs, _, click, _, [?CLOSETXT|_]}, State) -> - {stop, normal, State}; -handle_info({gs, _, destroy, _, _}, State) -> - {stop, normal, State}; -handle_info({gs, _, click, _, [?REFRESHTXT|_]}, State) -> - refresh(State), - {noreply, State}; -handle_info({gs, _, click, _, [?HELPTXT|_]}, State) -> - HelpFile = filename:join([code:lib_dir(appmon), - "doc", "html", "part_frame.html"]), - tool_utils:open_help(win(), HelpFile), - {noreply, State}; -handle_info({gs, Id, click, {mode, Mode}, _}, State) -> - %%io:format("handle_info: Setting mode: ~p~n", [Mode]), - set_mode(Id, Mode), - {noreply, State}; -handle_info({gs, _, click, _, [?SUPVIEWTXT|_]}, State) -> - refresh(State, [{info_type, sup}]), - {noreply, State}; -handle_info({gs, _, click, _, [?PROCVIEWTXT|_]}, State) -> - refresh(State, [{info_type, link}]), - {noreply, State}; -handle_info({gs, Id, buttonpress, _,[1, X, Y|_]}, State) -> - %%io:format("Id clicked: ~p~n", [gs:read(Id, {find, {X, Y}})]), - catch find_pid(State, Id, X, Y), - set_default_mode(), - {noreply, State}; -handle_info({gs, Win, configure, _Data, [W, H|_]}, State) -> - case win() of Win -> user_driven_resize(W, H); - _-> ok - end, - {noreply, State}; - -handle_info({delivery, _S, pinfo, _N, Res}, State) -> - appmon_txt:print(Res), - {noreply, State}; -handle_info({delivery, S, app, N, Res}, State) -> - {delivery, _Serv, app, _Name, {Root, Vs, Ls, SecLs}} = - flush({delivery, S, app, N, Res}), - update2(Vs, Root, Ls, SecLs, State), - {noreply, State}; - -handle_info({kill}, State) -> - {stop, normal, State}; -handle_info({state}, State) -> - {noreply, State}; -handle_info({'EXIT', _Pid, _Reason}, State) -> - {noreply, State}; -handle_info(_Other, State) -> - {noreply, State}. - - -%% Refresh sets new options for the request and forces an update of -%% the screen ant status. -refresh(State) -> - refresh(State, []). -refresh(State, Opts) -> - appmon_info:app(State#astate.client, - State#astate.name, true, Opts). - - - -%% find_pid finds the pid of the clicked object. The scenario is that -%% the user clicks on an item in his window, that ObjId is searched -%% for among all nodes (vertices) and if found action is taken -%% depending on the current mode (see handle_info) -find_pid(State, Id, X, Y) -> - %% Try to manage both versions of GS, remove first case later. - ObjList = case gs:read(Id, {find, {X, Y}}) of - {error, _} -> - gs:read(Id, {hit, {X, Y}}); % Try new format - Num when is_integer(Num) -> [Num]; - _Other -> [] - end, - DG = State#astate.digraph, - All = appmon_dg:get(all, DG), - find_pid2(ObjList, All, DG, State). - -find_pid2([Id | Ids], All, DG, State) -> - case search_for_pid(All, DG, Id) of - {ok, _KeyStr, Pid} -> - handle_proc_press(mode(), Pid, State); - _ -> find_pid2(Ids, All, DG, State) - end; -find_pid2([], _All, _DG, _State) -> ok. - -search_for_pid([V|Vs], DG, ObjId) -> - VD = appmon_dg:get(data, DG, V), - if ObjId==VD#vdata.txt_obj -> - {ok, V, VD#vdata.type}; - true -> search_for_pid(Vs, DG, ObjId) - end; -search_for_pid([], _DG, _ObjId) -> false. - - -%% -%% called when a process has been clicked on. -%% -handle_proc_press(info, Pid, State) -> - appmon_info:pinfo(State#astate.client, Pid, true, - [{timeout, at_most_once}]); -handle_proc_press(send, Pid, _State) -> - {P, RawStr} = two_entries(winroot(), 250, 70, - "Send", "To: ", "Msg: ", - pid_to_list(Pid), "", bg()), - Str = case lists:last(RawStr) of - 46 -> RawStr; - _ -> RawStr++"." - end, - case erl_scan:string(Str) of - {ok, Tokens, _} -> - case erl_parse:parse_term(Tokens) of - {ok, Term} -> - case catch list_to_pid(P) of - To when is_pid(To) -> To ! Term; - _ -> error - end; - _Error -> error - end; - _Error -> error - end; -handle_proc_press(trace, Pid, _State) -> - case trace_state(Pid) of - true -> - io:format("Removing trace on ~p~n", [Pid]), - sys:trace(Pid, false), - set_trace_state(Pid, false); - _Other -> - io:format("Putting trace on ~p~n", [Pid]), - sys:trace(Pid, true, 1000), - set_trace_state(Pid, true) - end; -handle_proc_press(kill, Pid, _State) -> - exit(Pid, kill). - - -trace_state(Pid) -> get({trace_state, Pid}). -set_trace_state(Pid, State) -> put({trace_state, Pid}, State). - -set_default_mode() -> - {Id, Mode} = get(default_mode), - case mode() of - Mode -> true; - _Other -> set_mode(Id, Mode) - end. -set_default_mode(Id, Mode) -> - put(default_mode, {Id, Mode}), - select(Id), %Dirty workaround - set_default_mode(). - -set_mode(Id, Mode) -> - %%io:format("mode=~p~n", [Mode]), - set_mode(Mode), - deselect(), - select(Id). - -set_mode(Mode) -> put(mode, Mode). -mode() -> get(mode). - -flush({delivery, S, A, N, R}) -> - receive - {delivery, S, A, N, R2} -> - flush({delivery, S, A, N, R2}) - after 0 -> - {delivery, S, A, N, R} - end. - - -%%------------------------------------------------------------ -%% Real stuff -%% -update2(Vs, Root, Ls, SecLs, State) -> - DG = State#astate.digraph, - Ref = mk_ref(), - Added = add_procs(Vs, DG, Ref), - AddedLs = add_links(Ls, DG, Ref, primary), - AddedLs2 = add_links(SecLs, DG, Ref, secondary), - DelLs = del_links(appmon_dg:eget(all, DG), DG, Ref), - Dels = del_procs(appmon_dg:get(all, DG), DG, Ref), - - LastX = appmon_place:place(DG, Root), - Width = lists:max(LastX), - Height = length(LastX), - - %% Delete things from screen - del(Dels), del(DelLs), - - %% Add vertices to screen - foreach(fun(V) -> draw_node(DG, V) end, Added), - - %% Add edges to screen - foreach(fun(E) -> draw_edge(DG, E) end, AddedLs), - foreach(fun(E) -> draw_edge(DG, E) end, AddedLs2), - - %% Move vertices on screen - foreach(fun(V) -> move_vertex(DG, V) end, appmon_dg:get(all, DG)), - - tree_driven_resize(Width, Height), - - gs:config(win(), {map, true}), %Make win visible - ok. - -%% Make an integer reference, could have used make_ref BIF but didn't -mk_ref() -> put(reference, get(reference)+1). -init_ref() -> put(reference, 0). - - -%% Add processes (vertices) to digraph, use the string repr of pid as -%% key in digraph. -add_procs([{Pid, Str}|Vs], DG, Ref) -> - case appmon_dg:add(DG, Str, mk_vdata(Str, Pid, Ref), Ref) of - known -> add_procs(Vs, DG, Ref); - updated -> add_procs(Vs, DG, Ref); - _ -> - case lists:member(32, Str) of - true -> - appmon_dg:set(x, DG, Str, foreign), % UNHOLY! - add_procs(Vs, DG, Ref); % Don't add foreign - _ -> [Str | add_procs(Vs, DG, Ref)] - end - end; -add_procs([], _DG, _Ref) -> []. - - -%% Add links to digraph. NOTE that foreign links get a special weight -%% and that no link is added if it goes to a process not in the set of -%% vertices. -%% -%% OTP-1970: Check that linked-to processes really exist. -%% -add_links([{V1, V2}|Ls], DG, Ref, Weight) -> - L = case lists:member(32, V2) of - true -> {V1, V2, foreign}; - _ -> {V1, V2, Weight} - end, - case appmon_dg:get(data, DG, V2) of - false -> add_links(Ls, DG, Ref, Weight); - VD -> - if VD#vdata.ref == Ref -> % OTP-1970 - case appmon_dg:eadd(DG, L, mk_edata(L, Ref), Ref) of - known -> add_links(Ls, DG, Ref, Weight); - updated -> add_links(Ls, DG, Ref, Weight); - _Other -> [L | add_links(Ls, DG, Ref, Weight)] - end; - true -> - add_links(Ls, DG, Ref, Weight) - end - end; -add_links([], _DG, _Ref, _Weight) -> []. - -%% Make an edge data structure -mk_edata(_L, Ref) -> - #edata{ref=Ref}. - -%% Make a vertex data structure, note that pid can be either a pid or -%% a port, we're not picky here. -mk_vdata(P, Pid, Ref) -> - #vdata{ref=Ref, type=Pid, txt=P, width=width(P)}. -width(Txt) -> ?CHARWIDTH*length(Txt)+10. % Should use GS stuff instead - - -%% Delete those processes that have the wrong reference from the -%% digraph. Returns a list of deleted procs and their data (to be able -%% to erase things on screen). -del_procs([V|Vs], DG, Ref) -> - VD = appmon_dg:get(data, DG, V), - if VD#vdata.ref /= Ref -> appmon_dg:del(DG, V), - [{V, VD} | del_procs(Vs, DG, Ref)]; - true -> del_procs(Vs, DG, Ref) - end; -del_procs([], _DG, _Ref) -> []. - - -%% Deletes links that have the wrong reference from the digraph, note -%% that the weight of the edge is not considered here. Returns a list -%% of deleted links and their data (to be able to erase things on -%% screen). -del_links([L | Ls], DG, Ref) -> - ED = appmon_dg:eget(data, DG, L), - if ED#edata.ref /= Ref -> appmon_dg:edel(DG, L), - [{L, ED} | del_links(Ls, DG, Ref)]; - true -> del_links(Ls, DG, Ref) - end; -del_links([], _DG, _Ref) -> []. - -%% Del deletes the GS objects of the list of should-be-deleted -%% items. Returns nothing particular. -del(L) -> - lists:foreach(fun({{V1, V2, Weight}, D}) when is_record(D, edata) -> - if Weight== foreign -> - dealloc_foreign({V1, V2, Weight}); - true -> ok end, - destroy(D#edata.line); - ({_I, D}) when is_record(D, vdata) -> - destroy(D#vdata.sym_obj), - destroy(D#vdata.txt_obj) - end, L). - - -move_vertex(DG, V) -> - VData = appmon_dg:get(data, DG, V), -%% io:format("Vertex ~p data: x:~p, oldx:~p, y:~p, oldy:~p offs:~p~n", -%% [V, VData#vdata.x, VData#vdata.origx, -%% VData#vdata.y, VData#vdata.origy, offsetx()]), - if VData#vdata.x == foreign -> ok; - true -> - X = VData#vdata.x, - Y = scaley(VData#vdata.y), - OldX = VData#vdata.origx, - OldY = scaley(VData#vdata.origy), - if X==OldX, Y==OldY -> true; - true -> - %%io:format("Moving vertex: ~p~n", [V]), - - W = VData#vdata.width, - {BoxC, TxtC} = calc_box_coords(X, Y, W), - - %% move the symbol and text - gs:config(VData#vdata.sym_obj, [{coords, BoxC}]), - gs:config(VData#vdata.txt_obj, [{coords, TxtC}]), - foreach(fun(E) -> move_edge(DG, E) end, - appmon_dg:get(edges, DG, V)) - end - end. - - -move_edge(DG, E) -> - {{V1, V2, Weight}, V1, V2, ED} = appmon_dg:eget(edge, DG, E), - VD1 = appmon_dg:get(data, DG, V1), - VD2 = appmon_dg:get(data, DG, V2), - Line = ED#edata.line, - move_line(DG, VD1, VD2, Line, Weight). -move_line(DG, VD1, VD2, Line, Weight) when is_list(Line) -> - move_line(DG, VD1, VD2, hd(Line), Weight); -move_line(_DG, VD1, VD2, Line, Weight) -> - Coords = calc_coords(VD1, VD2, Weight), - gs:config(Line, [{coords, Coords} | line_opts(Weight)]). - -%% Draw the vertex on the canvas -draw_node(DG, V) -> - %%io:format("Drawing~n",[]), - Data = appmon_dg:get(data, DG, V), - - X = Data#vdata.x, - Y = scaley(Data#vdata.y), - - {Sym, Txt} = draw(rectangle, sup_col(), Data#vdata.txt, X, Y, - Data#vdata.width), - - appmon_dg:av(DG, V, Data#vdata{sym_obj=Sym, txt_obj=Txt}), - true. - -%% Draws a symbol (rectangle for instance) on the canvas. -draw(Symbol, Col, Txt, X, Y, W) -> - {BoxC, TxtC} = calc_box_coords(X, Y, W), - Box = gs:create(Symbol, canvas(), [{coords, BoxC}, {fill, Col}]), - - TxtObj = gs:create(text, canvas(), [{coords, TxtC}, - {anchor, c}, - %%{buttonpress, true}, - {text, Txt}]), - {Box, TxtObj}. - -%% Returns {BoxCoords, TextCoords} -calc_box_coords(X, Y, W) -> - {[{X, Y-radius()}, {X+W, Y+radius()}], [{X+trunc(W/2), Y}]}. - - -%% Draw a line on the canvas -draw_edge(DG, E) -> - {V1, V2, Weight} = E, - Line = draw_line(DG, V1, V2, Weight), -%% io:format("Line: ~p~n", [Line]), - appmon_dg:eset(line, DG, E, Line). - - -%% From is parent, To is child. If To is not a record then we are -%% dealing with a link to a process on another node. Find a suitable -%% place at the left margin and write the process name there and draw -%% a line to it. -%% -draw_line(DG, From, To, foreign) -> - VD1 = appmon_dg:get(data, DG, From), - Y = find_foreign_place(VD1#vdata.y+0.5, foreign_places()), - add_foreign_place({From, To, foreign}, Y), -%% io:format("New Y: ~p~n", [Y]), - appmon_dg:set(x, DG, To, 0), - appmon_dg:set(y, DG, To, Y), - VD2 = appmon_dg:get(data, DG, To), - Coords = calc_coords(VD1, VD2, foreign), -%% io:format("Node coords: ~p~n", [Coords]), - L = gs:create(line, canvas(), [{coords, Coords} | line_opts(foreign)]), - T = gs:create(text, canvas(), [{coords, [{0, 5+scaley(Y)}]}, - {anchor, nw}, {fg, f_line_col()}, -%% {font, {screen, 10}}, - {text, To}]), - [L, T]; - -draw_line(DG, From, To, Weight) -> - VD1 = appmon_dg:get(data, DG, From), - VD2 = appmon_dg:get(data, DG, To), - Coords = calc_coords(VD1, VD2, Weight), - gs:create(line, canvas(), [{coords, Coords} | line_opts(Weight)]). - -%%---------------------------------------------------------------------- -%% -%% Line coordinate calculation -%% -%% Calculate coordinates for edges (links, lines). Primaries have a -%% nice knee and secondaries are oriented differently. If weight is -%% foreign then we will calculate a nice line to the left margin. -%% -calc_coords(From, To, foreign) -> - Y = scaley(To#vdata.y), - X1 = From#vdata.x+trunc(From#vdata.width/2), - Y1 = scaley(From#vdata.y)+radius(), - [{0, Y}, {X1-40, Y}, {X1, Y1}]; -calc_coords(From, To, primary) -> - X1 = From#vdata.x+trunc(From#vdata.width/2), - Y1 = scaley(From#vdata.y)+radius(), - - X2 = To#vdata.x+trunc(To#vdata.width/2), - Y2 = scaley(To#vdata.y)-radius(), - - Y3 = trunc((Y1+Y2)/2), - [{X1, Y1}, {X1, Y3}, {X2, Y3}, {X2, Y2}]; - -calc_coords(V1, V2, _Weight) -> - Y1 = scaley(V1#vdata.y), - X1 = V1#vdata.x, - X1w = X1+V1#vdata.width, - Y2 = scaley(V2#vdata.y), - X2 = V2#vdata.x, - X2w = X2+V2#vdata.width, - - if Y1 == Y2 -> calc_u(X1, X1w, Y1, X2, X2w); - X1w < X2 -> calc_s(X1w, Y1, X2, Y2); - X2w < X1 -> calc_s(X1, Y1, X2w, Y2); - true -> - D1 = abs(X1-X2), D2 = abs(X1w-X2w), - if D1 > D2 -> calc_rbrack(X1w, Y1, X2w, Y2); - true -> calc_lbrack(X1, Y1, X2, Y2) - end - end. - -%% Calculates line coordinates that will go from bottom of one node to -%% bottom of another on the same level. The line will form a nice "U". -calc_u(X1, X1w, Y, X2, X2w) -> - X3 = trunc((X1+X1w)/2), - X4 = trunc((X2+X2w)/2), - Y2 = Y+radius(), - Y3 = Y2+20, - [{X3, Y2}, {X3, Y3}, {X4, Y3}, {X4, Y2}]. - -%% Calculates line coordinates that will go from right (or left) side -%% to right (or left) side, thus forming a "[" or a "]" (bracket). -calc_rbrack(X1, Y1, X2, Y2) -> - X3 = 20 + if X1 > X2 -> X1; - true -> X2 - end, - [{X1, Y1}, {X3, Y1}, {X3, Y2}, {X2, Y2}]. -calc_lbrack(X1, Y1, X2, Y2) -> - X3 = -20 + if X1 < X2 -> X1; - true -> X2 - end, - [{X1, Y1}, {X3, Y1}, {X3, Y2}, {X2, Y2}]. - -%% Calculates line coordinates that will form a nice "S" -calc_s(X1, Y1, X2, Y2) -> - X3 = trunc((X1+X2)/2), - [{X1, Y1}, {X3, Y1}, {X3, Y2}, {X2, Y2}]. - - -%% Options for lines (edges, links) -line_opts(foreign) -> [{width, 2}, {smooth, true}, {fg, f_line_col()}]; -line_opts(primary) -> [{width, 2}, {smooth, false}, {fg, line_col()}]; -line_opts(_) -> [{width, 2}, {smooth, true}, {fg, sec_line_col()}]. - - - -%%---------------------------------------------------------------------- -%% -%% Handling of links to foreign processes -%% -%%---------------------------------------------------------------------- -dealloc_foreign(L) -> -%% io:format("deallocing foreign: ~p~n", [L]), - put(foreign_places, lists:keydelete(L, 1, foreign_places())). -add_foreign_place(V, Y) -> -%% io:format("Adding foreign: ~p~n", [V]), - put(foreign_places, [{V, Y} | foreign_places()]). -foreign_places() -> - get(foreign_places). -init_foreign_places() -> - put(foreign_places, []). - -%% Find a good place for the foreign node -find_foreign_place(StartY, L) -> - case lists:keysearch(StartY, 2, L) of - {value, _} -> find_foreign_place(StartY + 1, L); - _ -> StartY - end. - - -%%------------------------------------------------------------ -%% -%% Graphical stuff -%% - -setup_base_win(NodeName, AppName) -> - set_winroot(gs:start([{kernel,true}])), - - W = ?MINWIDTH, H = ?MINHEIGHT, - - Name = "APPMON: " ++ atom_to_list(AppName) ++ " on " ++ - atom_to_list(NodeName), - - set_win(gs:create(window, winroot(), [{title, Name}, %%{bg, red}, - {x, 250}, {y, 100}, - {width, W}, {bg, win_col()}, - {height, H+?BUTTAREA_H}])), - %% standard buttons - mk_std_butts(win(), W), - set_canvas(gs:create(canvas, win(),[{x,0}, {y,?BUTTAREA_H}, - {width, W}, {height, H}, - {bg, bg()}, - {buttonpress, true}])), - - set_old_win_size(width, gs:read(win(), width)), - set_old_win_size(height, gs:read(win(), height)), - -%% gs:config(win(), {map, true}), %Make win visible - ok. - - -nice_line_coords(W, H) -> - [{0,H-10}, {W,H-10}]. - -%%------------------------------ -%% Button stuff - -mk_butt_area(Win, W) -> - H = ?BUTTAREA_H, - F = gs:create(frame, Win,[{x,0}, {y,0}, %%{bg, frame_col()}, - {width,W}, {height,H}]), - C = gs:create(canvas,F,[{x,0}, {y,0}, {width, W}, {height, H-9}, - {bg, bg()}]), - L = gs:create(line,C,[{coords,nice_line_coords(W, H)}]), - - MB = gs:create(menubar, Win, []), - - FMB = gs:create(menubutton, MB, [{label, {text, "File"}}]), - FM = gs:create(menu, FMB, []), - gs:create(menuitem, FM, [{label, {text, ?CLOSETXT}}]), - - OMB = gs:create(menubutton, MB, [{label, {text, "Options"}}]), - OM = gs:create(menu, OMB, []), - gs:create(menuitem, OM, [{label, {text, ?REFRESHTXT}}]), - Group = now(), - gs:create(menuitem, OM, [{itemtype, separator}]), - gs:create(menuitem, OM, [{label, {text, ?SUPVIEWTXT}}, {itemtype, radio}, - {group, Group}]), - gs:create(menuitem, OM, [{label, {text, ?PROCVIEWTXT}}, {select, true}, - {group, Group}, {itemtype, radio}]), - - HMB = gs:create(menubutton, MB, [{label, {text, "Help"}}, {side, right}]), - HM = gs:create(menu, HMB, []), - gs:create(menuitem, HM, [{label, {text, ?HELPTXT}}]), - - {F, C, L}. - -mk_std_butts(Win, W) -> - {F, C, L} = mk_butt_area(Win, W), - set_bframe(F), set_bcanvas(C), set_bline(L), - - IButt = mk_mode_butt({text, "Info"}, {mode, info}, 10), - mk_mode_butt({text, "Send"}, {mode, send}, 90), - mk_mode_butt({text, "Trace"}, {mode, trace}, 170), - mk_mode_butt({text, "Kill"}, {mode, kill}, 250), - - set_default_mode(IButt, info), - - true. - -select(Id) -> - gs:config(Id, {bg, sel_col()}), - set_selected(Id). - -deselect() -> - gs:config(selected(), {bg, de_sel_col()}). - -mk_mode_butt(Label, Data, X) -> - gs:create(button, bframe(), [{label, Label}, {x, X}, {y, 35}, - {data, Data}, {width, 70}, {height, 25}]). - -%%------------------------------------------------------------ -%% Graphical utilities - -mk_frame(P, X, Y, W, H, BG) -> - gs:create(frame, P, [{x, X}, {y, Y}, {width, W}, {height, H}, {bg, BG}]). - -mk_butt(P, X, Y, W, H, Txt) -> - gs:create(button, P, [{x, X}, {y, Y}, {height, H}, {width, W}, - {label, {text, Txt}}]). - -mk_butt(P, X, Y, Txt) -> - mk_butt(P, X, Y, 70, 20, Txt). - -mk_label(P, X, Y, W, H, Txt, BG) -> - gs:create(label, P, [{x, X}, {y, Y}, {height, H}, {width, W}, - {label, {text, Txt}}, {bg, BG}]). - -mk_entry(P, X, Y, W, H, Txt, BG) -> - gs:create(entry, P, [{x, X}, {y, Y}, {height, H}, {width, W}, {text, Txt}, - {bg, BG}, {keypress, true}]). - - -two_entries(Root, W, H, Name, LTxt1, LTxt2, StartTxt1, StartTxt2, BG) -> - Win = gs:create(window, Root, [{title, Name}, %%{bg, red}, - %%{x, X}, {y, Y}, - {width, W}, {bg, BG}, - {height, H}]), - F = mk_frame(Win, 0, 0, W, H, BG), - - mk_label(F, 10, 10, 30, 20, LTxt1, BG), - mk_label(F, 10, 40, 30, 20, LTxt2, BG), - - E1 = mk_entry(F, 40, 10, 120, 20, StartTxt1, BG), - E2 = mk_entry(F, 40, 40, 120, 20, StartTxt2, BG), - - Ok = mk_butt(F, 170, 10, "Ok"), - Cn = mk_butt(F, 170, 40, "Cancel"), - gs:config(Win, {map, true}), - - Ret = case catch two_entries_loop(E1, E2, Ok, Cn) of - {P2, Msg} -> {P2, Msg}; - _Other -> - false - end, - gs:destroy(Win), - Ret. - - -two_entries_loop(E1, E2, Ok, Cn) -> - receive - {gs, Ok, click, _, _} -> - {gs:read(E1, text), - gs:read(E2, text)}; - {gs, E1, keypress, _, ['Return'|_]} -> - {gs:read(E1, text), - gs:read(E2, text)}; - {gs, E2, keypress, _, ['Return'|_]} -> - {gs:read(E1, text), - gs:read(E2, text)}; - {gs, _, keypress, _, _} -> - two_entries_loop(E1, E2, Ok, Cn); - {gs, Cn, click, _, _} -> - true - end. - -%%-------------------------------------------------------------------- -%% -%% Resizing routines. -%% -%% Resizing deals with a number of different interdependent -%% sizes. Top size is the window size. From window size all other -%% sizes are calculated, we call this the "leader" size. The -%% canvas is usually the same size as the window, except for the -%% row of buttons at the top of the windoww. The canvas is also -%% displaced when the tree is smaller than the minimum window -%% size. -%% -%% -%% Window size - the size of the outer window. Note that -%% provisions must be made for the button area at the top of the -%% window, this is called WinAdj. this is the only item taht -%% changes when the user manually resizes the window. -%% -%% Canvas size - The size of the canvas, should be equal to -%% window size less the button area. Must be adjusted when the -%% window has been manually resized. The canvas also has a -%% scrollregion which must be maintained. Note that we could have -%% used the canvas size as "leading" size, but this did not work -%% since the canvas doesn't fill the complete window when the -%% tree is smaller than the window. -%% -%% Tree size - The size of the tree. This may change whenever a -%% new tree is delivered from the info routine. -%% -%% Dim - All these size adjustments are done in some dimension -%% (width or height). -%% -%% Max, Min - The outmost window may not become larger than Max -%% size or smaller than Min size when resized by the tree -%% size. The user resizing is not restricted to these sizes. -%% -%% Scrollbars: -%% -%% Scrollbars are used whenever necessary, whenever the tree size -%% is bigger than canvas size (in any dimension). -%% -%% Invariants: -%% -%% The three sizes are not varied at the same time. When the -%% window is resized because of a new tree, then window and -%% canvas must be updated. When the user has resized, then only -%% the canvas must be changed (to fit in the window) -%% -%% Tree driven resize -%% -%% This occurs when the tree has been updated. The window may -%% grow and shrink to fit the tree, but may not be smaller than -%% Min and not bigger than Max (scrollbars will be used instead) -%% - -tree_driven_resize(TWidth, THeight) -> - gs:config(win(), {configure, false}), - Width = TWidth+20, - Height = scaley(THeight+1), - put({width, tree}, Width), - put({height, tree}, Height), - adjust_win(width, Width), - adjust_win(height, Height), - fit_tree_to_win(width, Width), - fit_tree_to_win(height, Height), - check_scroll_region(Width, Height, gs:read(canvas(), scrollregion)), - gs:config(win(), {configure, true}), - ok. - - -%% Will adjust the window size to the tree size (given the max and min -%% restrictions. -adjust_win(Dim, TreeSize) -> - case get({Dim, user_resize}) of - true -> ok; - _ -> - WinSize = gs:read(win(), Dim),%%get_dim(Dim, win()), - case get_wanted_winsize(Dim, TreeSize) + winadj(Dim) of - WinSize -> ok; - NewSize -> - %%set(Dim, win(), NewSize+winadj(Dim)) - set_old_win_size(Dim, NewSize), - gs:config(win(), {Dim, NewSize}) - end - end. - -get_wanted_winsize(Dim, Size) -> - Max = maxsize(Dim), Min = minsize(Dim), - if Size > Max -> Max; - Size < Min -> Min; - true -> Size - end. - -set_old_win_size(Dim, Size) -> put({Dim, winsize}, Size). -old_win_size(Dim) -> get({Dim, winsize}). - - -%%-------------------------------------------------------------------- -%% -%% user_driven_resize -%% -%% This is when the user drags the window to some size. This is -%% basically the same as a tree resize, only this time the window -%% itself must not be fiddled with. When the window has been -%% resized this way then normal tree driven resize is not allow -%% to alter the size in that dimension. User overrides. -%% -user_driven_resize(W, H) -> - gs:config(win(), {configure, false}), - check_user_resize(width, W), - check_user_resize(height, H), - check_scroll_region(get({width, tree}), get({height, tree}), - gs:read(canvas(), scrollregion)), - gs:config(win(), {configure, true}). - -check_user_resize(Dim, Size) -> - case old_win_size(Dim) of - Size -> false; - _ -> - put({Dim, user_resize}, true), - set_old_win_size(Dim, Size), - fit_tree_to_win(Dim, get({Dim, tree})) - end. - - - -%%-------------------------------------------------------------------- -%% -%% General resizing routines -%% -%% fit_tree_to_win - Will fit the canvas into a pre-sized window in -%% one dimension. -%% -fit_tree_to_win(Dim, TreeSize) -> - Size = gs:read(win(), Dim) - winadj(Dim), - set_canvas_offset(Dim, Size, TreeSize), - set_button_width(Dim, Size), - if TreeSize > Size -> - gs:config(canvas(), {trans_dim2vh(Dim), trans_dim2enable(Dim)}); - TreeSize < Size -> - gs:config(canvas(), {trans_dim2vh(Dim), false}); - true -> - gs:config(canvas(), {trans_dim2vh(Dim), false}) - end. - - -%%------------------------------ -%% Set the canvas width and displacement in x. -set_canvas_offset(height, Size, _) -> - gs:config(canvas(), {height, Size}); -set_canvas_offset(width, Size, Size) -> - gs:config(canvas(), [{x, 0}, {width, Size}]); -set_canvas_offset(width, Size, TreeSize) when Size - gs:config(canvas(), [{x, 0}, {width, Size}]); -set_canvas_offset(width, Size, TreeSize) when Size>TreeSize-> - Val = trunc((Size-TreeSize)/2), - gs:config(canvas(), [{x, Val}, {width, Size-Val}]). - -%%------------------------------ -%% Set the button area width -set_button_width(height,_) -> ok; -set_button_width(width, W) -> - gs:config(bcanvas(), [{width, W}]), - gs:config(bframe(), [{width, W}]), - gs:config(bline(), [{coords, nice_line_coords(W, ?BUTTAREA_H)}]). - - -%%------------------------------ -%% Update the scrollregion size if needed. -check_scroll_region(W, H, {_, _, W, H}) -> ok; -check_scroll_region(W, H, {_, _, _, _}) -> - gs:config(canvas(), {scrollregion, {0, 0, W, H}}). - - -%% Window sizing primitives -winadj(width) -> 0; -winadj(height) -> ?BUTTAREA_H. -maxsize(width) -> ?MAXWIDTH; -maxsize(height) -> ?MAXHEIGHT. -minsize(width) -> ?MINWIDTH; -minsize(height) -> ?MINHEIGHT. - - - -trans_dim2vh(width) -> hscroll; -trans_dim2vh(height) -> vscroll. -trans_dim2enable(width) -> bottom; -trans_dim2enable(height) -> right. - - - - - -%%------------------------------------------------------------ -%% Global Window info - -winroot() -> get(winroot). -win() -> get(win). -canvas() -> get(canvas). -bframe() -> get(bframe). -bcanvas() -> get(bcanvas). -bline() -> get(bline). -set_winroot(X) -> put(winroot, X). -set_win(X) -> put(win, X). -set_canvas(X) -> put(canvas, X). -set_bframe(X) -> put(bframe, X). -set_bcanvas(X) -> put(bcanvas, X). -set_bline(X) -> put(bline, X). - -sup_col() -> ?darkkhaki. -%%work_col() -> ?orange. -bg() -> ?palegoldenrod. -line_col() -> ?peachpuff4. %% saddlebrown.darkgoldenrod -f_line_col() -> ?royalblue. %% saddlebrown.darkgoldenrod -sec_line_col() -> ?red. -win_col() -> bg(). %%darkolivegreen. - -sel_col() -> ?darkgrey. -de_sel_col() -> ?lightgrey. -set_selected(Id)-> put(selected, Id). -selected() -> get(selected). - -scaley(Y) -> 55*Y. -radius() -> 10. - -destroy(undefined) -> true; -destroy(L) when is_list(L) -> lists:foreach(fun(X) -> destroy(X) end , L); -destroy(Win) -> gs:destroy(Win). - diff --git a/lib/appmon/src/appmon_dg.erl b/lib/appmon/src/appmon_dg.erl deleted file mode 100644 index f53defa946..0000000000 --- a/lib/appmon/src/appmon_dg.erl +++ /dev/null @@ -1,205 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%%------------------------------------------------------------ -%% -%% Digraph handling for process view GUI. Feeble attempt at data -%% separation. Provides functional interface to the data structures -%% vdata and edata, v for vertex and e for edge. -%% -%%------------------------------------------------------------ --module(appmon_dg). - --include("appmon_dg.hrl"). - -%% Exports for vertices --export([get/3, get/2, set/4, av/3, add/4, del/2, visited/3]). - -%% Exports for edges --export([eget/2, eget/3, eset/4, eadd/4, edel/2, ae/3]). - -%% Exports for convenience --export([print_dg/1]). - - -%%------------------------------------------------------------ - - -eget(all, DG) -> - digraph:edges(DG). - -eget(data, DG, E) -> - case digraph:edge(DG, E) of - {_, _V1, _V2, Data} -> Data; - _Other -> false - end; -eget(edge, DG, {V1, V2}) -> - case digraph:edge(DG, {V1, V2}) of - {E, W1, W2, ED} -> {E, W1, W2, ED}; - Other -> - case digraph:edge(DG, {V2, V1}) of - {E, W1, W2, ED} -> {E, W1, W2, ED}; - Other -> false - end - end; - -%% Weight in edge name -eget(edge, DG, {V1, V2, Weight}) -> - case digraph:edge(DG, {V1, V2, Weight}) of - {E, W1, W2, ED} -> {E, W1, W2, ED}; - _Other -> false - end; -eget(in, DG, V) -> - efilter(digraph:in_edges(DG, V)). - -efilter(Es) -> - lists:filter(fun({_V1, _V2, primary}) -> true; - (_E) -> false end, - Es). - -eset(ref, DG, E, Ref) -> - {E2, _V1, _V2, D} = eget(edge, DG, E), - update_e(DG, E2, D#edata{ref=Ref}); -eset(line, DG, E, Line) -> - {E2, _V1, _V2, D} = eget(edge, DG, E), - update_e(DG, E2, D#edata{line=Line}). - -edel(DG, E) -> - digraph:del_edge(DG, E). - -eadd(DG, E, D, Ref) -> - case eget(edge, DG, E) of - {_, _, _, ED} when is_record(ED, edata), ED#edata.ref == Ref -> - known; - {_, _, _, ED} when is_record(ED, edata), ED#edata.ref /= Ref -> - update_e(DG, E, ED#edata{ref=Ref}), - updated; - _Other -> - ae(DG, E, D) - end. - -ae(DG, {V1, V2, Weight}, D) -> - digraph:add_edge(DG, {V1, V2, Weight}, V1, V2, D). - -update_e(DG, {V1, V2, Weight}, D) -> - digraph:del_edge(DG, {V1, V2, Weight}), - digraph:add_edge(DG, {V1, V2, Weight}, V1, V2, D). - -%% Filter destination vertex from a list of edges -vfilter(Vs) -> - lists:map(fun({_V1, V2, _Weight}) -> V2; - ({_V1, V2}) -> V2 - end, Vs). - -get(all, DG) -> - digraph:vertices(DG). - -get(data, DG, {V1, V2}) -> - case digraph:edge(DG, {V1, V2}) of - {_,_,_,Data} -> Data; - _Other -> false - end; -get(data, DG, V) -> - case digraph:vertex(DG, V) of - {_,Data} -> Data; - _Other -> false - end; - -%% Return all children of vertex V (those which V has edges to) -get(out, DG, V) -> - vfilter(efilter(digraph:out_edges(DG, V))); -get(in, DG, V) -> - digraph:in_neighbours(DG, V); -get(edges, DG, V) -> - digraph:edges(DG, V); -get(w, DG, V) -> - Data = get(data, DG, V), - Data#vdata.width; -get(x, DG, V) -> - Data = get(data, DG, V), - Data#vdata.x. - -set(type, DG, V, Type) -> - D = get(data, DG, V), - av(DG, V, D#vdata{type=Type}); - -set(ref, DG, V, Ref) -> - D = get(data, DG, V), - av(DG, V, D#vdata{ref=Ref}); - -set(y, DG, V, Y) -> - D = get(data, DG, V), - av(DG, V, D#vdata{y=Y}); - -set(data, DG, V, D) when is_record(D, vdata)-> - av(DG, V, D); - -set(x, DG, V, X) -> - D = get(data, DG, V), - if D#vdata.x /= X -> - av(DG, V, D#vdata{x=X}); - true -> true - end. - -visited(DG, {V1, V2}, Ref) -> % for edge - D = eget(data, DG, {V1, V2}), - if is_record(D, edata), D#edata.ref == Ref -> true; - true -> false - end; -visited(DG, V, Ref) -> - D = get(data, DG, V), - if is_record(D, vdata), D#vdata.ref == Ref -> true; - true -> false - end. - -add(DG, V, D, Ref) -> - case get(data, DG, V) of - D2 when is_record(D2, vdata), D2#vdata.ref==Ref -> - io:format("Ooops in ~p:add vertex~n", [?MODULE]), - known; - D2 when is_record(D2, vdata) -> - %%io:format("~p touch vertex ~p~n", [self(), V]), - set(ref, DG, V, Ref), - set(type, DG, V, D#vdata.type), - save_coords(DG, V), - updated; - _Other -> - av(DG, V, D), added - end. - -save_coords(DG, V) -> - D = get(data, DG, V), - D2 = D#vdata{origx=D#vdata.x, origy=D#vdata.y}, - av(DG, V, D2). - -del(DG, V) -> - digraph:del_vertex(DG, V). - - -av(DG, V, D) -> - digraph:add_vertex(DG, V, D). - -print_dg(DG) -> - io:format("Vertices:~n", []), - lists:foreach(fun(V) -> io:format(" ~p ~p~n", - [V, get(data, DG, V)]) end, - get(all, DG)), - io:format("Edges:~n", []), - lists:foreach(fun(V) -> io:format(" ~p ~p~n", - [V, eget(edge, DG, V)]) end, - eget(all, DG)), - true. diff --git a/lib/appmon/src/appmon_dg.hrl b/lib/appmon/src/appmon_dg.hrl deleted file mode 100644 index c3485cf1fd..0000000000 --- a/lib/appmon/src/appmon_dg.hrl +++ /dev/null @@ -1,45 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2009. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% - - - -%% -%% The dg package record definitions -%% -%% This is the declarations of the datastructures used for the -%% application monitoring software. All fields are reserved for the -%% implementation except those stated otherwise -%% - --record(vdata, {ref, % - type, % - x, % - origx=-1, % - y, % - origy=-1, % - txt="", % Set by user - width=0, % Set by user - sym_obj=undefined, % - txt_obj}). % - - - --record(edata, {ref, % - line, % - weight}). % - diff --git a/lib/appmon/src/appmon_lb.erl b/lib/appmon/src/appmon_lb.erl deleted file mode 100644 index 3ab6ce58e6..0000000000 --- a/lib/appmon/src/appmon_lb.erl +++ /dev/null @@ -1,696 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1998-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% - -%%% Due to the fact that the application buttons in the appmon window -%%% gets too small to read when the number of applications increases, -%%% this listbox window has been created. -%%% Because of the limitations of GS a listbox was chosen to keep -%%% the nodes and applications. When it's possible to scroll a frame I -%%% think one should put in scrollbars in the appmon main window. -%%% The listbox solution is too slow with lots of applications. -%%% -%%% In the listbox the nodes are shown with their applications beneith. -%%% By double clicking on an application name, or a single click and -%%% then pressing the load button, its application window is started. - --module(appmon_lb). --compile([{nowarn_deprecated_function,{gs,button,3}}, - {nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,listbox,3}}, - {nowarn_deprecated_function,{gs,read,2}}, - {nowarn_deprecated_function,{gs,start,0}}, - {nowarn_deprecated_function,{gs,window,3}}]). - --export ([ - start/1, - stop/1, - add_node/2, - remove_node/2, - add_apps/3, - remove_app/3, - open_win/2, - update_status/3 - ]). - --export ([init/1]). - --define (LB_W, 200). % List box width --define (LB_H, 400). % List box height --define (BUTT_W, 100). --define (WIN_W, ?LB_W + ?BUTT_W + 25). % Window width --define (WIN_H, ?LB_H + 20). % Window height - - -%%% #node{} -%%% -%%% The record 'node' contains the name of the node, its status and -%%% the applications running on that node. -%%% -%%% node == atom () -%%% status == alive || dead -%%% apps == [#app{}] -%%% - --record (node, {node, %% Name of the node - status = alive, - apps = []}). - -%%% #app{} -%%% -%%% The record 'app' contains the name of the application and its pid -%%% -%%% app == atom () -%%% pid == pid () -%%% - --record (app, {app, - pid}). - - -%%% #win{} -%%% -%%% The record 'win' contains the pid of the listbox window, -%%% its x and y position, its width and height. -%%% -%%% pid == win_closed || pid () -%%% x == integer () -%%% y == integer () -%%% width == integer () -%%% height == integer () -%%% - --record (win, {pid = win_closed, - x = 50, - y = 50, - width = ?WIN_W, - height = ?WIN_H}). - - - -%%% Every function in the interface is called with the pid -%%% of this recieve loop, called 'LbPid'. -%%% - - -%%% start /1 -%%% -%%% start returns the pid of the spawned receive loop or -%%% it will call exit/2 after a timeout. -%%% -%%% Pre: -%%% CallingPid == pid () -%%% -%%% Def: -%%% pid () || exit/2 -%%% - -start (CallingPid) -> - PidInit = spawn (?MODULE, init, [CallingPid]), - - %% Wait for a initialization completion message from - %% the spawned process before returning its Pid. - - receive - {initialization_complete, PidInit} -> - PidInit - - %% (Conditional) Failure to start within the time limit - %% will result in termination (Timeout may be infinite). - - after - 60000 -> - exit (PidInit, kill), - exit ({startup_timeout, ?MODULE}) - end. - - - -%%% stop /1 -%%% -%%% stop exits the receive loop -%%% -%%% Post: -%%% exiting the receive loop -%%% - -stop (LbPid) -> - call (LbPid, stop). - - - -%%% add_node /2 -%%% -%%% add_node adds the given node to the DB list. -%%% -%%% Pre: -%%% Node == atom () -%%% -%%% Post: -%%% Node is added to the DB list -%%% - -add_node (LbPid, Node) -> - call (LbPid, {add_node, Node}). - - - -%%% remove_node /2 -%%% -%%% remove_node removes the given node from the DB list. -%%% -%%% Pre: -%%% Node == atom () -%%% -%%% Post: -%%% Node is removed from the DB list -%%% - -remove_node (LbPid, Node) -> - call (LbPid, {remove_node, Node}). - - - -%%% add_apps /3 -%%% -%%% add_apps add the given applications to the given -%%% node in the DB list. -%%% -%%% Pre: -%%% Apps == [App] -%%% App == {Name, Pid} -%%% Name == atom () -%%% Pid == pid () -%%% Node == atom () -%%% -%%% Post: -%%% Node#node{apps = Apps} -%%% - -add_apps (LbPid, Apps, Node) -> - call (LbPid, {add_apps, Apps, Node}). - - - -%%% remove_app /3 -%%% -%%% remove_app remove the given application from the -%%% given node in the DB list. -%%% -%%% Pre: -%%% App == atom () -%%% Node == atom () -%%% -%%% Def: -%%% Node#node{apps = OldApps - App} -%%% - -remove_app (LbPid, App, Node) -> - call (LbPid, {remove_app, App, Node}). - - - -%%% open_win /3 -%%% -%%% open_win opens the listbox window with the given nodes -%%% and their applications. -%%% -%%% Pre: -%%% Nodes_apps == [{Node, Status, Apps}] -%%% Node == atom () -%%% Status == alive || dead -%%% Apps == [App] -%%% App == {AppName, AppPid} -%%% AppName == atom () -%%% AppPid == pid () -%%% -%%% Post: -%%% Window with listbox -%%% - -open_win (LbPid, Nodes_apps) -> - call (LbPid, {open_win, Nodes_apps}). - - - -%%% update_status /3 -%%% -%%% update_status changes the status for the given node. -%%% -%%% Pre: -%%% Node == atom () -%%% Status == alive || dead -%%% -%%% Def: -%%% Node#node{status = Status} -%%% - -update_status (LbPid, Node, Status) -> - call (LbPid, {update_status, Node, Status}). - - - -%%% call /2 -%%% -%%% call sends the given action to the listbox receive loop. -%%% -%%% Pre: -%%% Action == atom () || tuple () -%%% - -call (LbPid, Action) -> - LbPid ! Action. - - - -%%% init /1 -%%% - -init (CallingPid) -> - CallingPid ! {initialization_complete, self ()}, - loop (#win{}, []). - - - -%%% loop /2 -%%% -%%% loop is the recive loop for the listbox window process. -%%% -%%% Pre: -%%% Win == #win{} -%%% Data == [#node{}] -%%% - -loop (Win, Data) -> - receive - {add_node, Node} -> - NewData = add_node_1 (Node, Data), - update (NewData, Win#win.pid), - loop (Win, NewData); - - {remove_node, Node} -> - NewData = dead_node (Node, Data), - update (NewData, Win#win.pid), - loop (Win, NewData); - - {add_apps, Apps, Node} -> - NewData = add_apps_1 (Apps, Node, Data), - update (NewData, Win#win.pid), - loop (Win, NewData); - - {remove_app, App, Node} -> - NewData = remove_app_1 (App, Node, Data), - update (NewData, Win#win.pid), - loop (Win, NewData); - - {open_win, Nodes_apps} -> - NewData = parse_data ([], Nodes_apps), - NewWin = Win#win{pid = init_win ({Win#win.x, Win#win.y})}, - update (NewData, NewWin#win.pid), - loop (NewWin, NewData); - - {update_status, Node, Status} -> - NewData = update_status_1 (Node, Status, Data), - update (NewData, Win#win.pid), - loop (Win, NewData); - - stop -> - true; - - - {gs, _Id, destroy, _D, _Arg} -> - bye; - - {gs, _Id, configure, _D, [W, H | _]} -> - NewWin = configure (Win#win.pid, W, H), - loop (NewWin, Data); - - {gs, lb, doubleclick, _, _Txt} -> - load_app (gs:read (lb, selection), Data), - loop (Win, Data); - - {gs, lb, click, _, _Txt} -> - loop (Win, Data); - - {gs, close, click, _D, _Arg} -> - case Win#win.pid of - win_closed -> - true; - - _opened -> - gs:destroy (Win#win.pid) - end, - loop (#win{}, Data); - - {gs, load, click, _D, _Txt} -> - load_app (gs:read (lb, selection), Data), - loop (Win, Data); - - {gs, clear, click, _D, _Txt} -> - gs:config (lb, {selection, clear}), - loop (Win, Data); - - - _ -> - loop (Win, Data) - end. - - - -%%% init_win /1 -%%% - -init_win ({X, Y}) -> - GS = gs:start (), - - Win = gs:window (win, GS, [{x, X}, - {y, Y}, - {width, ?WIN_W}, - {height, ?WIN_H}, - {title,"Appmon: nodes and applications"}, - {configure, true}]), - - gs:listbox (lb, Win, [{x, 5}, - {y, 10}, - {width, ?LB_W}, - {height, ?LB_H}, - {vscroll, right}, - {hscroll, bottom}, - {selectmode, single}, - {click, true}, - {doubleclick, true}]), - - gs:button (load, Win, [{x, ?WIN_W - ?BUTT_W - 10}, - {y, ?WIN_H - 120}, - {width, ?BUTT_W}, - {label, {text, "Load"}}]), - - gs:button (clear, Win, [{x, ?WIN_W - ?BUTT_W - 10}, - {y, ?WIN_H - 80}, - {width, ?BUTT_W}, - {label, {text, "Clear"}}]), - - gs:button (close, Win, [{x, ?WIN_W - ?BUTT_W - 10}, - {y, ?WIN_H - 40}, - {width, ?BUTT_W}, - {label, {text, "Close"}}]), - - gs:config (Win, {map, true}), - Win. - - - -%%% add_node_1 /2 -%%% -%%% add_node adds the given node in the given window -%%% with its appications in a listbox. -%%% - -add_node_1 (Node, []) -> - [new_node (Node)]; - -add_node_1 (Node, [H | T]) -> - T1 = lists:keysort (#node.node, [new_node (Node) | T]), - [H | T1]. - - - -%%% dead_node /2 -%%% -%%% dead_node returns a list with the given node's -%%% status changed to dead. -%%% - -dead_node (Node, Data) -> - case lists:keysearch (Node, #node.node, Data) of - {value, Node_rec} -> - L = Node_rec#node.apps, - lists:keyreplace (Node, #node.node, - Data, new_node (Node, dead, L)); - - _false -> - Data - end. - - - - - -%%% add_apps_1 /3 -%%% -%%% add_apps_1 returns a list with the given application -%%% into the old list inserted. -%%% - -add_apps_1 (Apps, Node, Data) -> - case lists:keysearch (Node, #node.node, Data) of - {value, _Node_rec} -> - NewApps = parse_apps (Apps, []), - lists:keyreplace (Node, #node.node, - Data, new_node (Node, NewApps)); - - _false -> - Data - end. - - - -%%% remove_app_1 /3 -%%% -%%% remove_app_1 returns a list with the given application -%%% removed from the old list. -%%% - -remove_app_1 (App, Node, Data) -> - - case lists:keysearch (Node, #node.node, Data) of - {value, Node_rec} -> - L = Node_rec#node.apps, - L2 = lists:keydelete (App, #app.app, L), - lists:keyreplace(Node, #node.node, Data, new_node(Node,L2)); - - _false -> - Data - end. - - - -%%% configure /3 -%%% -%%% configure returns a win record after the window has been -%%% configured. -%%% - -configure (WPid, W, H) -> - X = gs:read (WPid, x), - Y = gs:read (WPid, y), - - gs:config (lb, [{width, W - ?BUTT_W - 25}, {height, H - 20}]), - gs:config (load, [{x, W - ?BUTT_W - 10}, {y, H - 120}]), - gs:config (clear, [{x, W - ?BUTT_W - 10}, {y, H - 80}]), - gs:config (close, [{x, W - ?BUTT_W - 10}, {y, H - 40}]), - - #win{pid = WPid, x = X, y = Y, width = W, height = H}. - - - - - -%%% load_app /2 -%%% -%%% load_app opens the application window by calling -%%% the appmon_a module. -%%% - -load_app ([], _Data) -> %% no application chosen - ok; - -load_app ([Index], Data) -> - App = gs:read (lb, {get, Index}), - - case string:substr (App, 1, 3) of - " " -> - AppName = list_to_atom (string:substr (App, 4)), - - case get_node (AppName, Index, Data) of - no_node -> - ok; - - NodeName -> - appmon_a:start (NodeName, AppName) - end; - - _ -> - ok - end. - - - -%%% update_status_1 /3 -%%% -%%% update_status_1 returns a list with the given -%%% node's status updated. -%%% - -update_status_1 (Node, Status, Data) -> - case lists:keysearch (Node, #node.node, Data) of - {value, Node_rec} -> - lists:keyreplace (Node, - #node.node, - Data, - new_node(Node,Status,Node_rec#node.apps)); - - _not_found -> - Data - end. - - - -%%% update /2 -%%% -%%% update updates the listbox with new data. -%%% - -update (_Data, win_closed) -> - true; - -update (Data, _Win) -> - gs:config (lb, clear), - lb_print (Data). - - - -%%% lb_print /1 -%%% -%%% lb_print prints the list into the listbox. -%%% - -lb_print ([]) -> - ok; - -lb_print ([#node{node = Node, status = Status, apps = Apps} | T]) -> - Str = io_lib:format ("~p (~p)", [Node, Status]), - gs:config (lb, {add, Str}), - - case Status of - alive -> - lb_print_apps (Apps); - - _dead -> - gs:config (lb, {add, ""}), - ok - end, - - lb_print (T). - - - -%%% lb_print_apps /1 -%%% -%%% lb_print_apps prints the applications into the listbox. -%%% - -lb_print_apps ([]) -> - ok; - -lb_print_apps ([#app{app = App} | T]) -> - Str = io_lib:format (" ~p", [App]), - gs:config (lb, {add, Str}), - lb_print_apps (T). - - - -%%% new_node /1, 2, 3 -%%% -%%% new_node returna a new node record constructed -%%% with the given data -%%% - -new_node (Node) -> - #node{node = Node}. - -new_node (Node, Apps) -> - #node{node = Node, apps = Apps}. - -new_node (Node, Status, Apps) -> - #node{node = Node, status = Status, apps = Apps}. - - - -%%% new_app /2 -%%% -%%% new_app returns a new application record -%%% constructed with the given data. -%%% - -new_app (App, Pid) -> - #app{app = App, pid = Pid}. - - - -%%% parse_apps /2 -%%% -%%% parse_apps returns a list of application records. -%%% - -parse_apps ([], [H | T]) -> - [H | lists:keysort (#app.app, T)]; - -parse_apps ([App | T], L) -> - Pid = element (1, App), - Name = element (2, App), - parse_apps (T, [new_app (Name, Pid) | L]). - - - -%%% get_node /3 -%%% -%%% get_node returns the node from the given list -%%% or else no_node if it doesn't exists. -%%% - -get_node (_App, _Index, []) -> - no_node; - -get_node (App, Index, [Node | T]) -> - Length = length (Node#node.apps) + 1, - - case Length < Index of - true -> - get_node (App, Index - Length, T); - - false -> - Node#node.node - end. - - - -%%% parse_data /2 -%%% -%%% parse_data returns a list with node records. -%%% - -parse_data (Data, []) -> - Data; - -parse_data (Data, [{Node, Status, Apps} | T]) -> - Apps_1 = parse_apps (Apps, []), - parse_data ([new_node (Node, Status, Apps_1) | Data], T). - - - diff --git a/lib/appmon/src/appmon_place.erl b/lib/appmon/src/appmon_place.erl deleted file mode 100644 index fe1e909d7c..0000000000 --- a/lib/appmon/src/appmon_place.erl +++ /dev/null @@ -1,192 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2010. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%%------------------------------------------------------------ -%% -%% Places a Digraph in a tree-like manner. The vertices in the digraph -%% is updated with x and y positions. The operation is not atomic. The -%% digraph may be cyclic but edges must then have been labeled primary -%% or secondary and the set of primary links must make up a non-cyclic -%% graph (a tree). -%% -%% -%% IMPLEMENTATION DETAIL -%% --------------------- -%% -%% The placement algorithm is straightforward, place the -%% nodes in the vertical plane (y-plane) and then place -%% nodes in the horisontal plane (x-plane). -%% -%% First all nodes are placed in the y (vertical) plane -%% by a standard traversing of the tree. We then place -%% the tree in the x (horisontal) plane. Each node is -%% placed in the middle of its children as far to the -%% left as possible, preferably at the left margin. Two -%% things can make a node not be placed at the left -%% margin and that is the case when a previous node has -%% been placed at the same vertical level as the node we -%% are trying to place (thus forcing a placement further -%% to the right), and the second case is when the middle -%% of the subtree of the node is not at the left margin -%% (which it only is when the subtree is empty). The -%% algorithm obviously depends on keeping track of the -%% rightmost positions at all depths, and this -%% information is also usefull when calculating the width -%% of the tree. -%% -%% -%% -%%------------------------------------------------------------ - - - --module(appmon_place). - --export([place/2]). - --include("appmon_dg.hrl"). - - --import(lists, [foreach/2, foldl/3]). - - -place(DG, Root) -> - case appmon_dg:get(data, DG, Root) of - false -> [0]; - _Other -> - placey(DG, Root, 1), - placex(DG, Root, []) - end. - - -%%------------------------------------------------------------ -%% -%% -%% Placing a graph in y plane -%% -------------------------- -%% -%% Place nodes in the graph in the y plane rather stupidly -%% - -placey(DG, V, Y) -> - appmon_dg:set(y, DG, V, Y), - Y1 = Y+1, - foreach(fun(C) -> placey(DG, C, Y1) end, appmon_dg:get(out, DG, V)). - - - - -%%------------------------------------------------------------ -%% -%% -%% Place a tree in the x plane -%% --------------------------- -%% -%% Place nodes in the tree in the x plane. The goal of the x -%% placement is to place all nodes as far to the left as possible -%% while maintaining a nice tree shape. -%% -%% To place a node we must first place its children, the -%% intention is to place the current node in the middle and above -%% its children. The calc_mid function will place the node in the -%% middle of its children. If the node should be placed further -%% to the right than the middle of its children, then its -%% children are moved DeltaX positions to be balanced under the -%% node. Thus at the end the node and its children form a nice -%% looking tree. -%% -%% The function also maintains the 'rightmost x on each level' -%% list LastX by putting its own position on top of the list -%% -%% - -placex(DG, V, LastX) -> - Ch = appmon_dg:get(out, DG, V), - ChLX = foldl(fun(C, Accu) -> placex(DG, C, Accu) end, - tll(LastX), - Ch), - - Width = appmon_dg:get(w, DG, V), - MyX = calc_mid(DG, Width, Ch), - DeltaX = calc_delta(MyX, hdd(LastX)+spacex()), - - appmon_dg:set(x, DG, V, MyX), - move(DG, V, [MyX+Width | ChLX], DeltaX). - - -%%------------------------------------------------------------ -%% -%% -%% Move a subtree DeltaX positions to the right -%% -------------------------------------------- -%% -%% Used when moving children to balance under an already placed -%% parent. Note that the correct LastX depends on the ordering of -%% the children which must be the same as when the children were -%% first placed. It must be ensured that hdd(NewLastX) is the -%% same as hdd(NewLastX)+DeltaX. If the order of children is -%% preserved then so is hdd(LastX). Another solution would be to -%% set hdd(LastX) from the parent -%% -%% Note the two base clauses, one for the no-children case and -%% one optimisation clause (unneccessary perhaps) for DeltaX==0 -%% - -move(_DG, _L, LastX, 0) -> LastX; -move(DG, V, LastX, DeltaX) -> move2(DG, V, LastX, DeltaX). - -move2(DG, V, LastX, DeltaX) -> - NewX = appmon_dg:get(x, DG, V)+DeltaX, - appmon_dg:set(x, DG, V, NewX), - ChLX = foldl(fun(C, LX) -> move2(DG, C, LX, DeltaX) end, - tll(LastX), - appmon_dg:get(out, DG, V)), - [erlang:max(NewX+appmon_dg:get(w, DG, V), hdd(LastX)) | ChLX]. - - -%%------------------------------------------------------------ -%% -%% -%% Calculate the middle position of the children -%% --------------------------------------------- -%% -%% Calculates the mid x position for a list of children. This -%% position is later compared to the position dictated by LastX -%% in calc_delta. - -calc_mid(_DG, _Width, []) -> 0; -calc_mid(DG, Width, ChList) -> - LeftMostX = appmon_dg:get(x, DG, hd(ChList)), - Z2 = lists:last(ChList), - RightMostX = appmon_dg:get(x, DG, Z2)+appmon_dg:get(w, DG, Z2), - trunc((LeftMostX+RightMostX)/2)-trunc(Width/2). - -calc_delta(Mid, Right) -> - if Right>Mid -> Right-Mid; - true -> 0 - end. - - - -%% Special head and tail -%% Handles empty list in a non-standard way -tll([]) -> []; -tll([_|T]) -> T. -hdd([]) -> 0; -hdd([H|_]) -> H. - -spacex() -> 20. % Should be macro?? diff --git a/lib/appmon/src/appmon_txt.erl b/lib/appmon/src/appmon_txt.erl deleted file mode 100644 index 056265af90..0000000000 --- a/lib/appmon/src/appmon_txt.erl +++ /dev/null @@ -1,307 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 1996-2012. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%%------------------------------------------------------------ -%% -%% Simple text viewer -%% -%%------------------------------------------------------------ - --module(appmon_txt). --compile([{nowarn_deprecated_function,{gs,config,2}}, - {nowarn_deprecated_function,{gs,create,3}}, - {nowarn_deprecated_function,{gs,destroy,1}}, - {nowarn_deprecated_function,{gs,read,2}}, - {nowarn_deprecated_function,{gs,start,1}}]). --export([start/0, start/1, print/1, fprint/1]). - -%% gen_server stuff --export([init/1, handle_call/3, handle_cast/2, handle_info/2, - terminate/2]). - --define(LOADTXT, "Load file"). --define(SAVETXT, "Save file"). --define(SAVEASTXT, "Save as"). --define(CLOSETXT, "Close"). --define(HELPTXT, "Help"). - -%%------------------------------------------------------------ -%% -%% start/0 starts an open text viewer that can be filled with -%% whatever. -%% -%%------------------------------------------------------------ -start() -> - start([]). - -%%------------------------------------------------------------ -%% -%% start(ListOfOptions) starts an open text viewer with options -%% -%% Options can be -%% {file, FileName} - insert contents of file -%% locked - the text cannot be edited -%% {text, Text} - insert text at startup -%% -%%------------------------------------------------------------ -start(Opts) -> - gen_server:start_link({local, ?MODULE}, ?MODULE, Opts, []). - -%% Start a text viewer if necessary -print(Txt) -> - catch start(), - gen_server:call(?MODULE, {add_txt, Txt}), - ok. - -fprint(File) -> - catch start(), - gen_server:call(?MODULE, {add_file, File}), - ok. - - -%%------------------------------------------------------------ -%% gen server admin - -init(Opts) -> - process_flag(trap_exit, true), - setup_base_win(), - default_status(), - setup_opts(Opts), - {ok, []}. - -terminate(_Reason, _State) -> - ok. - -%%------------------------------------------------------------ -%% gen server stuff -handle_call({add_txt, Txt}, _From, State) -> - do_insert_text(Txt), - scroll_to_last_line(), - {reply, ok, State}; -handle_call({add_file, FileName}, _From, State) -> - do_load_file(FileName), - {reply, ok, State}; -handle_call(_Request, _From, State) -> - {reply, ok, State}. -handle_cast(_Request, State) -> - {noreply, State}. -handle_info({gs, _, click, _, [?CLOSETXT|_]}, State) -> - {stop, normal, State}; -handle_info({gs, _, click, _, [?LOADTXT|_]}, State) -> - ui_load(), - {noreply, State}; -handle_info({gs, _, configure, _, [W, H | _]}, State) -> - resize(W, H), - {noreply, State}; - -handle_info({gs, _, destroy, _, _}, State) -> - {stop, normal, State}; -handle_info(Request, State) -> - io:format("~p got info: ~p~n", [self(), Request]), - print_status("Not implemented"), - {noreply, State}. - - -%%------------------------------------------------------------ -%% Handle options - -setup_opts([Opt|Opts]) -> - setup_opt(Opt), - setup_opts(Opts); -setup_opts([]) -> ok. - -setup_opt(Opt) -> - case Opt of - {file, FileName} -> - do_load_file(FileName); - locked -> - do_lock(); - {text, Text} -> - do_insert_text(Text); - _Other -> - ok - end. - -do_load_file(FileName) -> - case catch i_load_file(FileName) of - ok -> - default_status(); - _Other -> - print_status(lists:append(["File not found: ", FileName])) - end. - -i_load_file(FileName) -> - {ok, Bin} = file:read_file(FileName), - L = binary_to_list(Bin), - i_do_clear(), - do_insert_text(L), - ok. - -ui_load() -> - Title = "Load file", - Files = get_file_list(), - case catch ui_list_dialog(Title, "File: ", Files) of - {ok, FileName} -> - do_load_file(FileName); - _Other -> - print_status("Load cancelled") - end. - -get_file_list() -> - case file:list_dir(".") of - {ok, FileList} -> lists:sort(FileList); - _Other -> [] - end. - -do_insert_text(Text) -> - gs:config(editor(), {insert, {'end', Text}}), - ok. - -%% Scrolls editor to show the last rows -scroll_to_last_line() -> - H = gs:read(editor(), size), - R = gs:read(editor(), height), - TopRow = H-R/15, - if TopRow > 0 -> gs:config(editor(), {vscrollpos, TopRow}); - true -> gs:config(editor(), {vscrollpos, 0}) - end, - ok. - -do_lock() -> - gs:config(editor(), {enable, false}). - -i_do_clear() -> - gs:config(editor(), clear). - -%%------------------------------------------------------------ -%% Graphical stuff - -label_h() -> 20. -menu_h() -> 29. - -setup_base_win() -> - H = 400, W=580, - LabelHeight=label_h(), MenuHeight=menu_h(), - - F = gs:start([{kernel,true}]), - set_winroot(F), - - Win = gs:create(window, F, [{width, W}, {height, H}, - {title,"APPMON: Process Information"}]), - - E = gs:create(editor, Win, [{x, 0}, {y, MenuHeight}, - {width, W}, - {height, H-MenuHeight-LabelHeight-1}, - {vscroll, right}]), - set_editor(E), - - L = gs:create(label, Win, [{x, 0}, {y, H-LabelHeight}, - {height,LabelHeight }, {width, W}, - {align, w}]), - set_status(L), - print_status("Loading"), - - gs:config(Win, {map, true}), - - MB = gs:create(menubar, Win, []), - - FMB = gs:create(menubutton, MB, [{label, {text, "File"}}]), - FM = gs:create(menu, FMB, []), - gs:create(menuitem, FM, [{label, {text, ?CLOSETXT}}]), - - gs:config(Win, {configure, true}), - ok. - -resize(W, H) -> - gs:config(editor(), [{width, W}, {height, H-label_h()-menu_h()}]), - gs:config(status(), [{y, H-label_h()}, {width, W}]), - ok. - -%%------------------------------------------------------------ -%% ui_list_dialog( -%% -%% Traditional dialog with a list box and a selection field that -%% is updated from the list box. -%% -%% Returns {ok, String} if successful and something else if not -%% -%% Title - the name of the window -%% LeadText - the lead text on the selection field -%% List - a list of items that will be displayed in the list box -%% -%%------------------------------------------------------------ - -ui_list_dialog(Title, LeadText, TxtList) -> - W = 200, H = 300, - - Win = gs:create(window, winroot(), [{title, Title}, - {width, W},{height, H}]), - Ok = gs:create(button, Win, [{x, 10}, {y,10}, - {width, 50}, {height, 20}, - {label, {text, "Ok"}}]), - Cn = gs:create(button, Win, [{x, 70}, {y,10}, - {width, 50}, {height, 20}, - {label, {text, "Cancel"}}]), - - gs:create(label, Win, [{x, 10}, {y, 50}, - {width, 60}, {height, 20}, - {label, {text, LeadText}}]), - Box = gs:create(entry, Win, [{x, 10}, {y, 70}, - {width, 160}, {height, 20}, - {keypress, true}]), - List = gs:create(listbox, Win, [{x, 10}, {y, 100}, {width, 180}, - {height, 190}, - {items, TxtList}, {vscroll, right}, - {hscroll, false}, {click, true}, - {doubleclick, true}, - {keypress, true}]), - gs:config(Win, {map, true}), - - RetVal = ui_load_loop(Box, List, Ok, Cn), - - gs:destroy(Win), - - RetVal. - -ui_load_loop(Box, List, Ok, Cn) -> - receive - {gs, Box, keypress, _, ['Return'|_]} -> - {ok, gs:read(Box, text)}; - {gs, Box, keypress, _, _} -> - ui_load_loop(Box, List, Ok, Cn); - {gs, Ok, click, _, _} -> - {ok, gs:read(Box, text)}; - {gs, List, doubleclick, _, [_Idx, Txt|_]} -> - {ok, Txt}; - {gs, List, click, _, [_Idx, Txt|_]} -> - gs:config(Box, {text, Txt}), - ui_load_loop(Box, List, Ok, Cn); - _Other -> - something_else - end. - -%% The status row at the bottom of the window -set_status(Id) -> put(status_row, Id). -status() -> get(status_row). -print_status(Msg) -> gs:config(get(status_row), {label, {text, Msg}}). -default_status() -> print_status("Done"). - -set_editor(X) -> put(editor, X). -editor() -> get(editor). - -winroot() -> get(winroot). -set_winroot(X) -> put(winroot, X). diff --git a/lib/appmon/src/appmon_web.erl b/lib/appmon/src/appmon_web.erl deleted file mode 100644 index 048f7fa165..0000000000 --- a/lib/appmon/src/appmon_web.erl +++ /dev/null @@ -1,1031 +0,0 @@ -%% -%% %CopyrightBegin% -%% -%% Copyright Ericsson AB 2001-2011. All Rights Reserved. -%% -%% The contents of this file are subject to the Erlang Public License, -%% Version 1.1, (the "License"); you may not use this file except in -%% compliance with the License. You should have received a copy of the -%% Erlang Public License along with this software. If not, it can be -%% retrieved online at http://www.erlang.org/. -%% -%% Software distributed under the License is distributed on an "AS IS" -%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See -%% the License for the specific language governing rights and limitations -%% under the License. -%% -%% %CopyrightEnd% -%% - -%%%--------------------------------------------------------------------- -%%% File : webappmon.erl -%%% Author : Martin G. -%%% Purpose : Frontend to the webbased version of appmon. -%%% Created : 24 Apr 2001 by Martin G. -%%%--------------------------------------------------------------------- - --module(appmon_web). - -%% The functions that the user can call to interact with the genserver --export([init/1,handle_call/3,handle_cast/2,handle_info/2]). --export([terminate/2,code_change/3]). - --export([node_info/2,application_info/2,application_env/2]). --export([proc_info/2,trace/2]). --export([start/0,stop/0,start_link/0]). - -%% Export the function that returns the configuration data needed by -%% webtool --export([configData/0]). - --behaviour(gen_server). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Start the genserver % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -start_link()-> - gen_server:start_link({local,webappmon_server},appmon_web,[],[]). -start()-> - gen_server:start({local,webappmon_server},appmon_web,[],[]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Stop the genserver % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -stop()-> - gen_server:call(webappmon_server,stop,1000). - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Get the page that shows the nodes and the apps on the sel node % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -node_info(Env,Input)-> - gen_server:call(webappmon_server,{node_data,Env,Input}). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Get the application process tree % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -application_info(Env,Input)-> - gen_server:call(webappmon_server,{app_data,Env,Input}). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Get the page that shows the data about the process % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -proc_info(Env,Input)-> - gen_server:call(webappmon_server,{proc_data,Env,Input}). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Get the spec on the app % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -application_env(Env,Input)-> - gen_server:call(webappmon_server,{app_env,Env,Input}). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Toggle the trace flag for the selected process % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -trace(Env,Input)-> - gen_server:call(webappmon_server,{trace,Env,Input}). - -configData()-> - {appmon,[{web_data,{"WebAppmon","/appmon/main_frame.html"}}, - {alias,{"/appmon",code:priv_dir(appmon)}}, - {alias,{erl_alias,"/erl",[appmon_web]}}, - {start,{child,{backend,{process_info,start_link,[]}, - permanent,100,worker,[process_info]}}}, - {start,{child,{{local,webappmon_server}, - {appmon_web,start_link,[]}, - permanent,100,worker,[appmon_web]}}} - ]}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% Callback functions for the genserver % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -init(_Arg)-> - {ok,[]}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Create the different pages % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -handle_call({node_data,_Env,Input},_From,State)-> - {reply,app_and_node_sel_page(Input),State}; - -handle_call({app_data,_Env,Input},_From,State)-> - {reply,process_tree_page(Input),State}; - -handle_call({proc_data,_Env,Input},_From,State)-> - {reply,process_specifickation_page(Input),State}; - -handle_call({app_env,_Env,Input},_From,State)-> - {reply,application_specifickation_page(Input),State}; - -handle_call({trace,_Env,Input},_From,State)-> - {reply,toggle_trace(Input),State}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Shutdown the genserver % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -terminate(_,_State)-> - ok. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Callback function currently not used ... % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -handle_cast(_,State)-> - {noreply,State}. - -handle_info(_,State)-> - {noreply,State}. - -code_change(_OldVsn,State,_Extra)-> - {ok,State}. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% %% -%% Private functions to create the part of the sides that is common %% -%% to all sides %% -%% %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Create the Header for the page If we now the mimetype use that type%% -%% otherwise use text %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -header() -> - header("text/html"). -header(MimeType) -> - "Content-type: " ++ MimeType ++ "\r\n\r\n". - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Create the Htmlheader sett the title of the side to nothing if %% -%% we dont know the name of the side %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -html_header()-> - html_header(""). - -html_header(Part) -> - "\n" ++ - "\n" ++ - "Appmon " ++ Part ++ "\n" ++ - "\n". - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Close the Html tag and if neccessay add some clean upp %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -html_end()-> - "". - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% %% -%% The functions that creates the whole pages by collecting %% -%% the necessary data %% -%% %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Returns the page where the user see's which nodes and apps that %% -%% are availible for monitoring %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -app_and_node_sel_page(Input)-> - [header(), - html_header(), - node_body(httpd:parse_query(Input)), - html_end()]. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Returns the process tree for the application whose name is %% -%% the first value in the Inputs key/value list %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -process_tree_page(Input)-> - [header(), - html_header(), - application_javascript(httpd:parse_query(Input)), - application_body(httpd:parse_query(Input)), - html_end()]. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Send trace on or off to the process thats pid is the third arg of %% -%% the inputs key/val list. Then it returns the process tree for the %% -%% the application that is the first key/val pair of input %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -toggle_trace(Input)-> - send_trace(httpd:parse_query(Input)), - [header(), - html_header(), - application_javascript(httpd:parse_query(Input)), - application_body(httpd:parse_query(Input)), - html_end()]. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Creates the page that shows all information about the process that %% -%% that is the first arg of th input key/val pairs %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -process_specifickation_page(Input)-> - [header(), - html_header(), - process_body(httpd:parse_query(Input)), - html_end()]. - -application_specifickation_page(Input)-> - [header(), - html_header(), - application_env_body(httpd:parse_query(Input)), - html_end()]. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% The Private functions that do the job %% -%% To build the the page that shows the applications %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Build the body of the side that shows the node name and %% -%% the application list %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -node_body([{"node",Node}|_Rest])-> - case process_info:is_node(Node) of - {true,Controlled_node,Name} -> - "" ++ - node_selections_javascripts() ++ - node_selection(Controlled_node) ++ - node_title() ++ - application_tree(Controlled_node,Name) ++ - ""; - - {false,Server_node,Name} -> - "" ++ - node_selections_javascripts() ++ - node_selection(Server_node) ++ - node_title() ++ - application_tree(Server_node,Name) ++ - "" - end; - -node_body(_Whatever)-> - node_body([{atom_to_list(node),atom_to_list(node())}]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Returns the javascript that sets a new node to monitor %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -node_selections_javascripts()-> - "". - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Insert the html code that shows the combobox where the user can %% -%% select another node to monitor %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -node_selection(Node)-> - "
\n - \n - \n -
\n - \n -
\n -
". - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Add the node we are working with in the beginning of the list and %% -%% remove it from other places so its always the first in the listbox %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -order_nodes(Node,Node_list)-> - [Node|lists:delete(Node,Node_list)]. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Take the list of nodes and make it to a list of options to the %% -%% the combobox %% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -print_nodes([])-> - []; -print_nodes([Node|Rest])-> - "