22 Commits
v1.2.0 ... main

Author SHA1 Message Date
1629563b73 now to gitea 2025-10-03 09:45:09 +02:00
6d7e06e9ec v1.8.3 2025-08-28 13:48:57 +02:00
ec53e627db v1.8.2 2025-06-22 14:06:24 +02:00
34c9942bca 1.8.1 2025-06-19 08:09:34 +02:00
ba5bfe7199 v1.8.0 with alarm messages to skin display 2025-05-14 11:35:42 +02:00
9e5de3947e use apps4ops v1.13.0 where stylesheet added for skin view 2025-04-24 09:31:54 +02:00
7eea1ff094 added separate skin tab and status label in Savings Overview 2025-04-18 16:30:16 +02:00
63cc3f68e3 added to help pages 2025-04-14 08:51:12 +02:00
6fa7a82c26 password protected Reset Account 2025-01-10 14:16:45 +01:00
0c179b7191 gui.py: attributes dictionary for HIPA specific keys corrected in end-of-year clear_savings routine; Use cafe-1.12.0 in hush.sh which specifically links epics 7.0.8 libraries and define LD_PRELOAD with ca for python 3.7 2025-01-03 18:08:03 +01:00
8a8fb9e7c4 upgrade to EPICS 7.0.8 2024-09-26 15:51:57 +02:00
ae880ddc0e upgrade to EPICS 7.0.8 2024-09-26 14:19:36 +02:00
b2a169b4a7 wakeup.py is an additional additional pre-splash window 2024-03-12 08:51:55 +01:00
fabd8e40a3 devl 2024-03-07 20:30:00 +01:00
f1f264202b cast setFixedHeight argument to int 2024-03-07 17:48:13 +01:00
350f2884c3 open to start 2024-03-07 15:13:43 +01:00
bee564a5bd callbacks for designated magnets added to enable/disable update button 2024-03-07 13:11:30 +01:00
4d6784fece submastership devl 2024-03-01 20:33:28 +01:00
Chrin Jan
d6c4eb0764 documentation 2024-02-29 09:19:06 +01:00
8ed01c116d Believe it or not - there's documentation! 2024-02-28 13:31:29 +01:00
6b6c8608c3 Believe it or not - there's documentation! 2024-02-28 12:34:56 +01:00
8eeadde607 added Last Power seeting to IOC panel 2024-02-27 15:02:24 +01:00
30 changed files with 3431 additions and 764 deletions

1
.gitignore vendored
View File

@@ -11,3 +11,4 @@ pyrcc5/*.*~
pyrcc5/*.*-*
pyrcc5/*.*+*
hush_devl.sh
export

View File

@@ -1,5 +1,4 @@
{
"Parameters":{
"drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
@@ -17,5 +16,6 @@
"resultsTabTitle" : "IOC"
},
"headerMagnetSector": ["B1B2","G1","SH","G2","O2","PIF", "G3"],
"Master": "Controlroom"
"Master": "Controlroom",
"Reset": "HUSH!"
}

View File

@@ -3,19 +3,125 @@
"hasFile": 0,
"loadInitFile": 0,
"hasDaq": 0,
"hasH5": 0,
"hasEpics": 0
"hasH5" : 0,
"hasEpics" : 0
},
"hdf": {
"destination" : "./"
"ElogBooks": {
"Proscan": {
"url": "https://elog-gfa.psi.ch:443/Proscan",
"destination": "/afs/psi.ch/intranet/Controls/tmp/elog/ePic/proscan/",
"Required": {"Eintrag": ["Problem", "Info", "Tuning",
"Betriebs-Wechsel", "Überbrückung",
"Pikett", "Status", "Meldung-AK3",
"Tips & Tricks", "Schicht-Übergabe",
"Schicht-Auftrag"]},
"Optional" : {"Effekt": ["","Abruch","Verzögerung","keiner","anderer"],
"System":["","Beamprobe Commissioning","Beamprobe Radial", "Diagnostik & Stopper Strahlweg",
"Extraktionselemente", "Gasversorgunung", "HF", "Interlock System", "Ionenquelle",
"Kontrollsysteme", "Kryo und Magnet", "Külung", "Mag.Speisegeräte",
"PaSS Gantry 1", "PaSS Gantry 2","PaSS Gantry 3", "PaSS OPTIS 2",
"PaSS Kontrollraum", "PaSS Frei","Phase Slit","Phasensonde",
"PSYS", "Schältplane Accel", "Speisegeräte Accel",
"TrimRods", "Vakuum", "Zyklotron allgemein", "Strahlweg", "SU",
"Andere Ursache"]
}
},
"Sandkasten": {
"url": "https://elog-gfa.psi.ch:443/Sandkasten",
"destination": "/afs/psi.ch/intranet/Controls/tmp/elog/ePic/sls/",
"Required" : {"Eintrag": ["Problem","Anregung"]},
"Optional" : {"Status": ["","Offen", "Geschlossen"]}
}
},
"Elog":{
"useELOGenv": 0,
"host": "elog-gfa.psi.ch",
"book": "Proscan",
"url": "https://elog-gfa.psi.ch/Proscan",
"destination": "/afs/psi.ch/intranet/Controls/tmp/bdbase/ePic/"
},
"stdlog":{
"destination": "/tmp/"
},
"screenshot": {
"destination": "/tmp/"
},
"url": {
"archiver" : "https://data-ui.psi.ch/preselect?c1=proscan-archive/"
},
"Shift":{
"type" :"PRO-HUSH:SHIFT-TYPE"
},
"headerMagnetSector" : ["G1","SH","G2","O2","PIF","G3"],
"header" : ["COMET","BMA1","G1","SH","G2","O2","PIF","G3","MASTER"],
"COMET":{
"status": "MMAC3:STR:2",
"colorObj" : "Machine",
"color": "gray",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 gray)"
},
"MASTER":{
"status": "XPROSCAN:STAB:2",
"colorObj" : "Pk",
"color": "#00b7eb",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #00b7eb)"
},
"BMA1":{
"status" : "BMA1:STA:2",
"colorObj" : "Machine",
"color": "gray",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 gray)"
},
"BMD1":{
"status" : "BMD1:STA:2",
"colorObj" : "Machine",
"color": "gray",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 gray)"
},
"B1B2":{
"status": "PRO-HUSH:SHIFT-TYPE",
"colorObj" : "Machine",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMA1", "QMA2", "QMA3", "QMA4", "QMA5"],
"attribute" : ["SOL:2", "IST:2", "PWR:2"],
"standby": [-9.155, 9.155, -6.867, -6.867, 6.867],
"ref" : [-91.464, 102.359, -97.096, -44.269, 37.113],
"pwrref" : [9.065, 5.142, 4.061, 0.867, 0.597],
"iocDevice" : ["QMA1", "QMA2", "QMA5"]
},
"G1":{
"alarm": "PG1-HUSH:ALARM",
"status": "BME1:STA:2",
"mastershipStatus": "XPROSCAN:GANTRY1:STATUS",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QME1", "QME2", "AME1", "QME4", "QME5",
"AME2", "QME7", "QME8", "QME10", "QME11"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.867, 6.867, 9.155, 6.867, 6.867, 9.155, 6.867, -6.867, 6.867, -6.867],
"ref" : [-43.813, 43.177, 157.28, 20.017, 30.544, 157,79, 42.203, -42.467, 52.179, -77.032],
"ref" : [-43.813, 43.177, 157.28, 20.017, 30.544, 157.79, 42.203, -42.467, 52.179, -77.032],
"pwrref" : [0.789, 0.764, 17.341, 0.164, 0.366, 17.482, 0.737, 0.736, 1.096, 2.464],
"iocDevice" : ["AME1", "AME2", "QME10"]
},
"SH":{
"alarm": "PSH-HUSH:ALARM",
"status": "BMA1:STA:2",
"colorObj" : "Machine",
"color": "gray",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 gray)",
"device" : ["QMA6", "QMA7", "QMA8", "QMA9", "AMA2", "QMA10", "QMA11",
"QMA12", "QMA13", "AMA3"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.8, 6.8, 6.8, -6.8, 6.8, 6.8, -6.8, -6.8,
6.8, 0],
"ref" : [-34.048, 26.68, 26.68, -34.05, 87.764, 37.424, -47.207, -38.156,
@@ -25,15 +131,33 @@
"iocDevice" : ["QMA7", "AMA2", "QMA12"]
},
"G2":{
"alarm": "PG2-HUSH:ALARM",
"status": "BMB1:STA:2",
"mastershipStatus": "XPROSCAN:GANTRY2:STATUS",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMB1", "QMB2", "QMB3", "QMB4", "QMB5", "QMF1", "QMF2",
"QMF3", "QMF4", "QMF6", "QMF7", "AMF1", "AMF2", "AMF3"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby" : [-6.867, 6.867, -6.867, 6.867, -6.867, -7.553, 7.553, -7.553,
7.553, 7.553, -7.553, 10.758, 10.758, 23.804],
"ref": [-41.056, 36.548, -30.490, 52.433, -27.636, -37.412, 41.966, -37.296,
51.200, 53.657, -41.966, 109.543, 109.405, 251.492],
"pwrref" : [0.699, 0.545, 0.389, 1.152, 0.323, 0.374, 0.467, 0.378,
0.700, 0.772, 0.464, 7.114, 7.112, 21.727],
"iocDevice" : ["QMB2", "QMB4", "AMF1"]
"iocDevice" : ["QMB2", "QMB4", "AMF1"]
},
"O2":{
"alarm": "PO2-HUSH:ALARM",
"status": "BMC1:STA:2",
"mastershipStatus": "XPROSCAN:OPTIS2:STATUS",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMC1", "QMC2", "QMC3", "QMC4", "AMC1", "QMC5", "QMC6",
"QMC7", "QMC8", "QMC9"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.867, 6.867, 6.867, -6.867, 9.155, 6.867, -6.867, 6.867,
-6.867, 6.867],
"ref" : [-40.85, 26.974, 26.974, -40.851, 45.988, 30.890, -29.542, 33.742,
@@ -43,6 +167,15 @@
"iocDevice" : ["QMC2", "AMC1", "QMC7"]
},
"PIF":{
"alarm": "PPIF-HUSH:ALARM",
"status": "BMD1:STA:2",
"mastershipStatus": "XPROSCAN:PIF:STATUS",
"colorObj" : "ATHOS",
"color": "#2e5894",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #2e5894)",
"device" : ["QMD1", "QMD2", "QMD3", "QMD4", "AMD1","QMD5", "QMD6", "QMD7",
"QMD8", "QMD9"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.800, 6.800, 6.800, -6.800, 6.800, 6.800, -6.800, 6.800,
-6.800, 6.800],
"ref" : [-36.159, 34.434, 42.277, -43, 135, 61, -62, 37,
@@ -52,26 +185,23 @@
"iocDevice" : ["QMD2", "AMD1", "QMD9"]
},
"G3":{
"alarm": "PG3-HUSH:ALARM",
"status": "BMD2:STA:2",
"mastershipStatus": "XPROSCAN:GANTRY3:STATUS",
"colorObj" : "Beamline",
"color": "#9888b6",
"qlingrad": "qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #ffffff, stop: 1 #9888b6)",
"device" : ["QMD10", "QMD11", "QMD12"],
"attribute" : ["SOL:2", "IST:2", "PWR"],
"standby": [-6.800, 6.800, -6.800],
"ref" : [-40.388, 68.393, -34.805],
"pwrref" : [0.64, 1.8, 0.46],
"iocDevice" : ["QMD10", "QMD11", "QMD12"]
},
"Parameters":{
"drawLine" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}},
"delayRamp" : {"flag" : 1, "data":{ "widget": "QDoubleSpinBox", "text" : "Ramp delay (s):",
"value" : 0.1, "min": 0.00, "max": 0.20, "step": 0.01,
"tooltip":"Wait time between sending set point to each magnet in 'Restore'/'Standby' "}},
"drawLine2" : {"flag" : 0, "data":{ "widget": "QHLine", "text" : "None", "value" : "None"}}
},
"Expert":{
"debug": {"flag" : 0, "data":{ "widget": "None", "text" : "Debug", "value" : 0}},
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"IOC": {
"resultsTabTitle" : "IOC"
},
"Master": "Controlroom
"hdf": {
"destination" : "/tmp"
},
"hdfGroups": {
"General":["Created","Author","Application","Comment","Filepath","Process","UID","User"]
}
}

View File

@@ -14,5 +14,6 @@
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"headerMagnetSector": ["G1"],
"Master": "Gantry 1"
"Master": "Gantry 1",
"Reset": "HUSH!"
}

View File

@@ -14,5 +14,6 @@
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"headerMagnetSector": ["G2"],
"Master": "Gantry 2"
"Master": "Gantry 2",
"Reset": "HUSH!"
}

View File

@@ -14,5 +14,6 @@
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"headerMagnetSector": ["PIF", "G3"],
"Master": "Gantry 3"
"Master": "Gantry 3",
"Reset": "HUSH!"
}

View File

@@ -14,5 +14,6 @@
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"headerMagnetSector": ["O2"],
"Master": "OPTIS2"
"Master": "OPTIS2",
"Reset": "HUSH!"
}

View File

@@ -14,5 +14,6 @@
"simulation": {"flag" : 1, "data":{ "widget": "None", "text" : "Dry run", "value" : 0}}
},
"headerMagnetSector": ["PIF"],
"Master": "PIF"
"Master": "PIF",
"Reset": "HUSH!"
}

5
create_hush_links Executable file
View File

@@ -0,0 +1,5 @@
ln -s hush.py hush_g1.py
ln -s hush.py hush_g2.py
ln -s hush.py hush_o2.py
ln -s hush.py hush_pif.py
ln -s hush.py hush_g3.py

View File

@@ -2,13 +2,602 @@
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.7)
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x23\xd6\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
\x52\x4f\x53\x43\x41\x4e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x46\x65\
\x62\x72\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\
\x20\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\
\x61\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\
\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\
\x72\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\
\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\
\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\
\x73\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x61\x6e\x64\x3c\x2f\x73\x70\x61\x6e\x3e\x20\
\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\
\x6e\x3e\x61\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
\x22\x3e\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\
\x68\x79\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x61\x74\x20\x50\x52\x4f\x53\x43\x41\x4e\x2c\
\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\
\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\
\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x48\
\x55\x53\x48\x21\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x73\x20\x65\x6e\x65\x72\x67\
\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x64\x75\
\x72\x65\x73\x20\x61\x6e\x64\x20\x72\x65\x63\x6f\x72\x64\x73\x20\
\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x2e\
\x3c\x62\x72\x3e\x0a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x72\x65\x64\x3b\x20\x66\x6f\
\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x69\x74\x61\x6c\x69\x63\x3b\
\x22\x3e\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\x67\x20\x41\
\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\x6f\x6e\x6c\
\x79\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x20\x77\x68\x65\x6e\
\x20\x50\x52\x4f\x53\x43\x41\x4e\x20\x69\x73\x20\x69\x6e\x20\x22\
\x50\x72\x6f\x64\x75\x6b\x74\x69\x6f\x6e\x22\x20\x6d\x6f\x64\x65\
\x20\x61\x73\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x64\x20\x62\x79\
\x20\x74\x68\x65\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\x64\x20\
\x70\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\
\x2c\x20\x50\x52\x4f\x53\x43\x41\x4e\x3a\x4f\x50\x45\x52\x41\x54\
\x49\x4f\x4e\x3a\x53\x54\x41\x54\x55\x53\x2e\x20\x20\x3c\x2f\x73\
\x70\x61\x6e\x3e\x20\x0a\x20\x20\x3c\x2f\x70\x3e\x0a\x3c\x21\x2d\
\x2d\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\x67\x65\x31\x2e\x68\
\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\x61\x3e\x3c\x2f\x70\
\x2d\x2d\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\
\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x54\x68\x65\
\x20\x52\x65\x70\x6f\x73\x69\x74\x6f\x72\x79\x3c\x2f\x68\x32\x3e\
\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x61\x70\x70\x6c\x69\x63\x61\
\x74\x69\x6f\x6e\x20\x63\x6f\x6d\x70\x72\x69\x73\x65\x73\x20\x74\
\x77\x6f\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x3a\x0a\x20\
\x20\x3c\x75\x6c\x3e\x0a\x3c\x6c\x69\x3e\x0a\x20\x20\x41\x20\x53\
\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\x28\x53\x4d\
\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x20\x61\x74\x20\x74\
\x68\x65\x20\x49\x4f\x43\x20\x6c\x65\x76\x65\x6c\x20\x74\x68\x61\
\x74\x20\x69\x73\x20\x72\x65\x73\x70\x6f\x6e\x73\x69\x62\x6c\x65\
\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\
\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\
\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x2e\
\x70\x73\x69\x2e\x63\x68\x2f\x65\x70\x69\x63\x73\x5f\x69\x6f\x63\
\x62\x6f\x6f\x74\x5f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x50\x52\x4f\
\x5f\x68\x75\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\
\x3e\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\
\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x69\
\x6f\x63\x2f\x6c\x61\x74\x65\x73\x74\x2f\x50\x52\x4f\x5f\x68\x75\
\x73\x68\x2f\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\
\x3c\x2f\x6c\x69\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\
\x20\x41\x20\x48\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\
\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\
\x74\x68\x61\x74\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\
\x69\x6e\x74\x65\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\
\x65\x20\x49\x4f\x43\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\
\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x66\
\x69\x67\x75\x72\x65\x73\x2c\x20\x61\x6e\x64\x20\x70\x72\x6f\x76\
\x69\x64\x65\x73\x20\x61\x20\x70\x61\x6e\x65\x6c\x20\x74\x6f\x20\
\x65\x6e\x61\x62\x6c\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\
\x73\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\
\x68\x65\x69\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\
\x74\x6f\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\
\x3e\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x6c\x61\x62\
\x2e\x70\x73\x69\x2e\x63\x68\x2f\x70\x72\x6f\x73\x63\x61\x6e\x5f\
\x61\x70\x70\x73\x34\x6f\x70\x73\x2f\x48\x55\x53\x48\x3c\x2f\x73\
\x70\x61\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x68\x34\x20\x73\x74\x79\
\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\
\x6c\x75\x65\x3b\x22\x3e\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x52\x6f\
\x6f\x6d\x3c\x2f\x68\x34\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\
\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\
\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\
\x2f\x68\x75\x73\x68\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\
\x20\x20\x20\x20\x3c\x68\x34\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x3b\x22\
\x3e\x42\x65\x61\x6d\x6c\x69\x6e\x65\x73\x3c\x2f\x68\x34\x3e\x0a\
\x20\x20\x20\x20\x47\x31\x3a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\
\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\
\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\
\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\
\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\x75\
\x73\x68\x5f\x67\x31\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\
\x62\x72\x3e\x0a\x20\x20\x20\x20\x47\x32\x3a\x20\x20\x3c\x73\x70\
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\
\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\
\x74\x2f\x68\x75\x73\x68\x5f\x67\x32\x2e\x73\x68\x3c\x2f\x73\x70\
\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x4f\x32\x3a\x20\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\
\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\
\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\
\x61\x74\x65\x73\x74\x2f\x68\x75\x73\x68\x5f\x6f\x32\x2e\x73\x68\
\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\
\x50\x49\x46\x3a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\
\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\
\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\
\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\x75\x73\x68\x5f\x70\
\x69\x66\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x47\x33\x3a\x20\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\
\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\
\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\
\x75\x73\x68\x5f\x67\x33\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\
\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\x3e\x0a\x3c\
\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x47\
\x55\x49\x2c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x54\x61\x62\x3c\
\x2f\x68\x32\x3e\x0a\x20\x20\x4d\x61\x69\x6e\x20\x70\x61\x6e\x65\
\x6c\x20\x66\x6f\x72\x20\x75\x73\x65\x20\x62\x79\x20\x6f\x70\x65\
\x72\x61\x74\x6f\x72\x73\x20\x74\x6f\x20\x70\x6c\x61\x63\x65\x20\
\x74\x68\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x69\
\x6e\x74\x6f\x20\x74\x68\x65\x69\x72\x20\x73\x74\x61\x6e\x64\x62\
\x79\x20\x73\x74\x61\x74\x65\x20\x61\x6e\x64\x20\x74\x6f\x20\x72\
\x65\x73\x74\x6f\x72\x65\x20\x74\x68\x65\x6d\x20\x74\x6f\x20\x74\
\x68\x65\x69\x72\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\x20\x6f\x70\x65\
\x72\x61\x74\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x73\x2e\x0a\x20\
\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\
\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4f\x70\x65\x72\
\x61\x74\x6f\x72\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\
\x20\x20\x52\x61\x6d\x70\x20\x44\x65\x6c\x61\x79\x3a\x20\x43\x61\
\x6e\x20\x74\x61\x6b\x65\x20\x6f\x6e\x20\x76\x61\x6c\x75\x65\x73\
\x20\x66\x72\x6f\x6d\x20\x30\x2e\x30\x73\x20\x74\x6f\x20\x30\x2e\
\x32\x73\x2e\x20\x3c\x62\x72\x3e\x0a\x20\x20\x44\x65\x66\x69\x6e\
\x65\x73\x20\x74\x68\x65\x20\x64\x65\x6c\x61\x79\x20\x62\x65\x74\
\x77\x65\x65\x6e\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x69\x6e\x64\
\x69\x76\x69\x64\x75\x61\x6c\x20\x71\x75\x61\x64\x72\x75\x70\x6c\
\x65\x73\x20\x77\x68\x65\x6e\x20\x69\x6e\x69\x74\x69\x61\x74\x69\
\x6e\x67\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\x74\x6f\
\x72\x65\x2e\x0a\x20\x20\x41\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\
\x20\x30\x2e\x30\x73\x20\x6d\x65\x61\x6e\x73\x20\x74\x68\x61\x74\
\x20\x74\x68\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x20\x63\
\x75\x72\x72\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x73\x65\x74\x20\
\x73\x69\x6d\x75\x6c\x74\x61\x6e\x65\x6f\x75\x73\x6c\x79\x2e\x0a\
\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x45\x78\x70\
\x65\x72\x74\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\
\x20\x53\x65\x6c\x65\x63\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x44\
\x72\x79\x20\x52\x75\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x20\x64\x69\
\x73\x61\x62\x6c\x65\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x76\
\x61\x6c\x75\x65\x73\x20\x74\x6f\x20\x65\x70\x69\x63\x73\x20\x70\
\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\
\x2e\x20\x55\x73\x65\x64\x20\x66\x6f\x72\x20\x74\x65\x73\x74\x69\
\x6e\x67\x2e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\
\x3e\x53\x61\x76\x69\x6e\x67\x20\x4f\x76\x65\x72\x76\x69\x65\x77\
\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\
\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x72\
\x61\x6d\x65\x74\x65\x72\x73\x20\x66\x6f\x72\x20\x61\x20\x67\x69\
\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x72\x65\x6c\x61\
\x74\x65\x64\x20\x74\x6f\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\
\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x2e\x20\
\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\
\x20\x20\x20\x3c\x74\x72\x3e\x20\x3c\x74\x64\x20\x63\x6f\x6c\x73\
\x70\x61\x6e\x3d\x33\x3e\x20\x54\x61\x62\x6c\x65\x20\x64\x65\x73\
\x63\x72\x69\x70\x74\x69\x6f\x6e\x3c\x2f\x74\x64\x3e\x20\x3c\x2f\
\x74\x72\x3e\x20\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x49\x6e\x69\x74\x69\x61\x6c\x20\x50\x6f\x77\x65\x72\x20\x28\
\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\
\x65\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\x20\x73\x75\x6d\x6d\x65\x64\
\x20\x70\x6f\x77\x65\x72\x20\x77\x68\x65\x6e\x20\x71\x75\x61\x64\
\x72\x75\x70\x6c\x65\x73\x20\x61\x72\x65\x20\x69\x6e\x20\x74\x68\
\x65\x20\x75\x73\x75\x61\x6c\x20\x70\x6f\x77\x65\x72\x65\x64\x2d\
\x6f\x6e\x20\x73\x74\x61\x74\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\
\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\
\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\
\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x73\x75\x6d\x6d\x65\x64\x20\
\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x2c\x3c\x2f\
\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\
\x3e\x3c\x74\x64\x3e\x53\x61\x76\x69\x6e\x67\x20\x28\x4d\x57\x68\
\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\
\x72\x75\x6e\x6e\x69\x6e\x67\x20\x70\x6f\x77\x65\x72\x20\x69\x6e\
\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x61\x76\
\x69\x6e\x67\x20\x70\x65\x72\x69\x6f\x64\x2e\x3c\x2f\x74\x64\x3e\
\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\
\x64\x3e\x54\x69\x6d\x65\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\
\x20\x4d\x6f\x64\x65\x3a\x20\x26\x6e\x62\x73\x70\x3b\x3c\x2f\x74\
\x64\x3e\x20\x3c\x74\x64\x3e\x54\x69\x6d\x65\x20\x65\x6c\x61\x70\
\x73\x65\x64\x20\x69\x6e\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\
\x61\x76\x69\x6e\x67\x20\x70\x65\x72\x69\x6f\x64\x20\x28\x64\x61\
\x79\x73\x20\x68\x6f\x75\x72\x73\x3a\x6d\x69\x6e\x75\x74\x65\x73\
\x3a\x73\x65\x63\x6f\x6e\x64\x73\x29\x2e\x3c\x2f\x74\x64\x3e\x3c\
\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x54\x6f\x74\x20\x53\x61\x76\x65\x64\x20\x28\x4d\x57\x68\x29\
\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x61\
\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x64\x20\x70\x6f\x77\x65\x72\
\x20\x73\x61\x76\x65\x64\x20\x73\x6f\x20\x66\x61\x72\x20\x69\x6e\
\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\x79\x65\
\x61\x72\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\
\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\
\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\
\x38\x65\x65\x3b\x22\x3e\x4d\x61\x67\x6e\x65\x74\x20\x54\x61\x62\
\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x54\x61\
\x62\x6c\x65\x20\x6f\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x61\
\x6e\x64\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\
\x66\x6f\x72\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x77\
\x69\x74\x68\x69\x6e\x20\x65\x61\x63\x68\x20\x73\x65\x63\x74\x69\
\x6f\x6e\x3a\x20\x47\x31\x2c\x20\x53\x48\x2c\x20\x47\x32\x2c\x20\
\x4f\x32\x2c\x20\x50\x49\x46\x2c\x20\x47\x33\x2e\x0a\x20\x20\x28\
\x53\x65\x63\x74\x69\x6f\x6e\x20\x42\x31\x42\x32\x20\x68\x61\x73\
\x20\x6f\x6e\x6c\x79\x20\x72\x65\x61\x64\x62\x61\x63\x6b\x20\x63\
\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73\x29\x2e\x3c\x62\x72\
\x3e\x0a\x20\x20\x51\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x6d\
\x61\x79\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\x68\x65\
\x69\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x20\x76\x61\x6c\x75\x65\
\x73\x20\x6f\x72\x20\x72\x65\x73\x74\x6f\x72\x65\x64\x20\x74\x6f\
\x20\x74\x68\x65\x69\x72\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x76\
\x61\x6c\x75\x65\x73\x2e\x0a\x20\x20\x3c\x65\x6d\x3e\x54\x68\x65\
\x73\x65\x20\x61\x63\x74\x69\x6f\x6e\x20\x62\x75\x74\x74\x6f\x6e\
\x73\x20\x61\x72\x65\x20\x6f\x6e\x6c\x79\x20\x65\x6e\x61\x62\x6c\
\x65\x64\x20\x69\x66\x20\x63\x65\x72\x74\x61\x6e\x20\x63\x6f\x6e\
\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x20\x6d\x65\x74\x2c\
\x20\x69\x2e\x65\x2c\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x73\
\x70\x6f\x6e\x64\x69\x6e\x67\x0a\x20\x20\x62\x65\x61\x6d\x20\x64\
\x69\x73\x72\x75\x70\x74\x65\x72\x20\x69\x73\x20\x63\x6c\x6f\x73\
\x65\x64\x2c\x20\x22\x47\x65\x73\x63\x68\x6c\x6f\x73\x73\x65\x6e\
\x22\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x73\
\x70\x6f\x6e\x64\x69\x6e\x67\x20\x61\x63\x63\x65\x73\x73\x20\x77\
\x72\x69\x74\x65\x73\x20\x61\x72\x65\x20\x67\x72\x61\x6e\x74\x65\
\x64\x20\x61\x73\x0a\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x65\
\x64\x20\x62\x79\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\
\x67\x6c\x6f\x62\x61\x6c\x20\x4d\x61\x73\x74\x65\x72\x73\x68\x69\
\x70\x20\x6f\x72\x20\x74\x68\x65\x20\x72\x65\x6c\x65\x76\x61\x6e\
\x74\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x53\x75\x62\x6d\x61\x73\
\x74\x65\x72\x73\x68\x69\x70\x3c\x2f\x65\x6d\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x42\x65\x73\x74\x20\x70\x72\x61\x63\x74\x69\x63\x65\
\x20\x64\x69\x63\x74\x61\x74\x65\x73\x20\x74\x68\x61\x74\x20\x22\
\x55\x70\x64\x61\x74\x65\x22\x20\x62\x65\x20\x70\x72\x65\x73\x73\
\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x22\x53\x74\x61\x6e\x64\
\x62\x79\x22\x20\x69\x73\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x64\
\x2e\x20\x54\x68\x69\x73\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\
\x68\x65\x20\x6d\x61\x67\x6e\x65\x74\x20\x63\x75\x72\x72\x65\x6e\
\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\
\x22\x49\x6e\x69\x74\x2e\x20\x56\x61\x6c\x75\x65\x22\x20\x63\x6f\
\x6c\x75\x6d\x6e\x2c\x20\x77\x68\x69\x63\x68\x20\x70\x72\x6f\x76\
\x69\x64\x65\x73\x20\x74\x68\x65\x20\x27\x73\x65\x74\x27\x20\x76\
\x61\x6c\x75\x65\x73\x20\x66\x6f\x72\x20\x61\x6e\x20\x65\x76\x65\
\x6e\x74\x75\x61\x6c\x20\x22\x52\x65\x73\x74\x6f\x72\x65\x22\x20\
\x61\x63\x74\x69\x6f\x6e\x2e\x20\x0a\x20\x20\x54\x68\x65\x20\x22\
\x49\x6e\x69\x74\x20\x56\x61\x6c\x75\x65\x22\x20\x6f\x66\x20\x74\
\x68\x65\x20\x50\x6f\x77\x65\x72\x20\x74\x61\x62\x6c\x65\x20\x69\
\x73\x20\x6c\x69\x6b\x65\x77\x69\x73\x65\x20\x75\x70\x64\x61\x74\
\x65\x64\x2e\x20\x54\x68\x65\x20\x75\x70\x64\x61\x74\x65\x64\x20\
\x73\x75\x6d\x20\x6f\x66\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x70\
\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\x69\x73\x20\x74\
\x68\x65\x6e\x20\x70\x72\x6f\x70\x61\x67\x61\x74\x65\x64\x20\x74\
\x6f\x20\x74\x68\x65\x20\x22\x69\x6e\x69\x74\x69\x61\x6c\x22\x20\
\x63\x6f\x6c\x75\x6d\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x22\x53\
\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\x65\x72\x76\x69\x65\x77\x22\
\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\x66\x6f\x72\x20\x75\
\x73\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x65\x6e\x65\x72\x67\x79\
\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\
\x6e\x67\x2e\x20\x41\x6e\x20\x22\x55\x70\x64\x61\x74\x65\x22\x20\
\x69\x6e\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x43\x75\
\x72\x72\x65\x6e\x74\x20\x6f\x72\x20\x50\x6f\x77\x65\x72\x20\x74\
\x61\x62\x6c\x65\x20\x77\x69\x6c\x6c\x20\x61\x75\x74\x6f\x6d\x61\
\x74\x69\x63\x61\x6c\x6c\x79\x20\x75\x70\x64\x61\x74\x65\x20\x74\
\x68\x65\x20\x6f\x74\x68\x65\x72\x2e\x20\x4e\x6f\x74\x65\x20\x74\
\x68\x61\x74\x20\x74\x68\x65\x0a\x20\x20\x22\x55\x70\x64\x61\x74\
\x65\x22\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x73\x20\x64\x69\x73\
\x65\x6e\x61\x62\x6c\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\
\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x69\x6e\x20\x22\
\x53\x74\x61\x6e\x64\x62\x79\x22\x20\x6d\x6f\x64\x65\x20\x61\x6e\
\x64\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\x20\
\x69\x73\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x2e\x0a\x20\x20\
\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x65\x6d\x3e\x49\x66\x20\x66\x6f\
\x72\x20\x73\x6f\x6d\x65\x20\x68\x61\x70\x68\x61\x7a\x61\x72\x64\
\x20\x72\x65\x61\x73\x6f\x6e\x20\x74\x68\x65\x20\x49\x6e\x69\x74\
\x69\x61\x6c\x20\x50\x6f\x77\x65\x72\x20\x56\x61\x6c\x75\x65\x20\
\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\
\x20\x22\x53\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\x65\x72\x76\x69\
\x65\x77\x22\x20\x0a\x20\x20\x20\x20\x69\x73\x20\x65\x76\x69\x64\
\x65\x6e\x74\x6c\x79\x20\x77\x72\x6f\x6e\x67\x20\x66\x6f\x72\x20\
\x61\x20\x67\x69\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\
\x64\x75\x72\x69\x6e\x67\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\
\x76\x69\x6e\x67\x20\x28\x61\x6e\x64\x20\x66\x6f\x72\x20\x77\x68\
\x69\x63\x68\x20\x74\x68\x65\x20\x22\x55\x70\x64\x61\x74\x65\x22\
\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x73\x20\x64\x69\x73\x65\x6e\
\x61\x62\x6c\x65\x64\x29\x2c\x20\x65\x2e\x67\x2e\x2c\x20\x69\x74\
\x20\x69\x73\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x74\x68\
\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x20\
\x75\x73\x61\x67\x65\x20\x61\x73\x20\x73\x68\x6f\x77\x6e\x20\x69\
\x6e\x20\x74\x68\x65\x20\x22\x50\x6f\x77\x65\x72\x22\x20\x63\x6f\
\x6c\x75\x6d\x6e\x2c\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x20\
\x6f\x76\x65\x77\x72\x69\x74\x74\x65\x6e\x20\x74\x6f\x20\x69\x74\
\x73\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x76\x61\x6c\x75\x65\x20\
\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x22\x4c\x61\x73\x74\x20\x50\
\x6f\x77\x65\x72\x22\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\
\x77\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x22\x49\x4f\x43\x22\
\x20\x74\x61\x62\x20\x77\x69\x64\x67\x65\x74\x2e\x3c\x2f\x65\x6d\
\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x54\x68\x65\x20\x74\x68\x72\x65\
\x65\x20\x6c\x69\x67\x68\x74\x20\x62\x6c\x75\x65\x20\x62\x61\x63\
\x6b\x67\x72\x6f\x75\x6e\x64\x20\x63\x6f\x6c\x6f\x75\x72\x65\x64\
\x20\x64\x65\x76\x69\x63\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\
\x69\x6e\x20\x74\x68\x65\x20\x6d\x61\x67\x6e\x65\x74\x20\x74\x61\
\x62\x6c\x65\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x20\x74\x68\x65\
\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x74\x68\x61\x74\
\x20\x61\x72\x65\x20\x6d\x6f\x6e\x69\x74\x6f\x72\x65\x64\x20\x77\
\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x49\x4f\x43\x20\x74\x6f\
\x20\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x20\x74\x68\x65\x20\x22\
\x53\x74\x61\x6e\x64\x62\x79\x2f\x52\x65\x73\x74\x6f\x72\x65\x22\
\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x65\
\x63\x74\x69\x6f\x6e\x2e\x20\x20\x0a\x0a\x20\x20\x3c\x68\x33\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\
\x36\x38\x65\x65\x3b\x22\x3e\x4d\x61\x73\x74\x65\x72\x73\x68\x69\
\x70\x20\x54\x61\x62\x6c\x65\x3c\x2f\x68\x33\x3e\x0a\x44\x69\x73\
\x70\x6c\x61\x79\x73\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\
\x74\x20\x61\x63\x63\x65\x73\x73\x20\x72\x69\x67\x68\x74\x73\x20\
\x66\x6f\x72\x20\x74\x68\x65\x20\x76\x61\x72\x69\x6f\x75\x73\x20\
\x73\x65\x63\x74\x69\x6f\x6e\x73\x2e\x3c\x62\x72\x3e\x0a\x50\x6f\
\x73\x73\x69\x62\x6c\x65\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\
\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x61\x72\x65\x3a\x20\x55\x4e\
\x44\x45\x46\x20\x28\x30\x29\x2c\x20\x46\x52\x45\x49\x20\x28\x31\
\x29\x2c\x20\x53\x55\x42\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x28\x32\x29\x2c\x20\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x28\x33\x29\x2c\x20\x46\x45\x48\x4c\x45\x52\x28\x31\x30\x29\
\x2e\x0a\x20\x20\x53\x55\x42\x4d\x41\x53\x54\x45\x52\x53\x48\x49\
\x50\x20\x61\x6e\x64\x20\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x6d\x6f\x64\x65\x20\x67\x72\x61\x6e\x74\x73\x20\x63\x6f\x6e\
\x74\x72\x6f\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x62\x65\x61\x6d\
\x6c\x69\x6e\x65\x20\x6d\x61\x67\x6e\x65\x74\x73\x20\x61\x6e\x64\
\x20\x74\x68\x65\x20\x65\x6e\x74\x69\x72\x65\x20\x61\x63\x63\x65\
\x6c\x65\x72\x61\x74\x6f\x72\x20\x63\x6f\x6d\x70\x6c\x65\x78\x20\
\x6d\x61\x67\x6e\x65\x74\x73\x2c\x20\x72\x65\x73\x70\x65\x63\x74\
\x69\x76\x65\x6c\x79\x2e\x20\x54\x68\x65\x20\x65\x6e\x61\x62\x6c\
\x69\x6e\x67\x2f\x64\x69\x73\x61\x62\x6c\x69\x6e\x67\x20\x6f\x66\
\x20\x74\x68\x65\x20\x22\x52\x65\x73\x74\x6f\x72\x65\x22\x20\x61\
\x6e\x64\x20\x22\x53\x74\x61\x6e\x64\x62\x79\x22\x20\x62\x75\x74\
\x74\x6f\x6e\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6d\x61\x67\x6e\
\x65\x74\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\x66\x6f\x6c\
\x6c\x6f\x77\x20\x73\x75\x69\x74\x65\x2e\x0a\x20\x20\x0a\x20\x20\
\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\
\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x47\x55\x49\x2c\x20\x49\x4f\x43\
\x20\x54\x61\x62\x20\x3c\x2f\x68\x32\x3e\x0a\x20\x20\x54\x68\x65\
\x20\x70\x61\x6e\x65\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\
\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x74\x68\
\x65\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\
\x28\x53\x4d\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x20\x77\
\x69\x74\x68\x20\x74\x68\x65\x20\x49\x4f\x43\x2c\x20\x61\x6e\x64\
\x20\x66\x75\x72\x74\x68\x65\x72\x20\x61\x6c\x6c\x6f\x77\x73\x20\
\x63\x65\x72\x74\x61\x69\x6e\x20\x69\x6e\x74\x65\x72\x61\x63\x74\
\x69\x6f\x6e\x73\x2e\x20\x54\x68\x65\x20\x53\x4d\x20\x69\x73\x20\
\x72\x65\x73\x70\x6f\x6e\x73\x69\x62\x6c\x65\x20\x66\x6f\x72\x20\
\x74\x68\x65\x20\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\x67\
\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x2e\x20\x49\x74\x20\
\x69\x73\x20\x65\x73\x73\x65\x6e\x74\x69\x61\x6c\x6c\x79\x20\x64\
\x65\x63\x6f\x75\x70\x6c\x65\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\
\x65\x20\x48\x4c\x41\x2e\x20\x53\x68\x6f\x75\x6c\x64\x20\x71\x75\
\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x62\x65\x20\x73\x65\x74\x20\
\x66\x72\x6f\x6d\x20\x6f\x75\x74\x73\x69\x64\x65\x20\x74\x68\x65\
\x20\x48\x4c\x41\x2c\x20\x74\x68\x65\x20\x53\x4d\x20\x77\x69\x6c\
\x6c\x20\x63\x61\x70\x74\x75\x72\x65\x20\x74\x68\x65\x20\x63\x68\
\x61\x6e\x67\x65\x20\x61\x6e\x64\x20\x61\x63\x74\x20\x61\x63\x63\
\x6f\x72\x64\x69\x6e\x67\x6c\x79\x2e\x20\x20\x0a\x20\x20\x0a\x20\
\x20\x20\x20\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\
\x3e\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x3c\x2f\
\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\x20\x74\
\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x74\x68\x65\
\x20\x73\x74\x61\x74\x65\x20\x6d\x61\x63\x68\x69\x6e\x65\x20\x73\
\x65\x71\x75\x65\x6e\x63\x65\x72\x2e\x0a\x20\x20\x3c\x74\x61\x62\
\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x52\x65\x73\x65\x74\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\
\x3e\x20\x53\x45\x51\x2d\x4f\x4e\x4f\x46\x46\x20\x26\x6e\x62\x73\
\x70\x3b\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x52\x65\x73\x74\x61\
\x72\x74\x73\x20\x74\x68\x65\x20\x53\x4d\x2e\x20\x3c\x65\x6d\x3e\
\x50\x72\x65\x73\x73\x20\x61\x6e\x64\x20\x68\x6f\x6c\x64\x20\x62\
\x75\x74\x74\x6f\x6e\x20\x66\x6f\x72\x20\x61\x74\x20\x6c\x65\x61\
\x73\x74\x20\x32\x20\x73\x65\x63\x6f\x6e\x64\x73\x20\x74\x6f\x20\
\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x69\x6e\x69\x74\x69\
\x61\x6c\x20\x22\x4f\x46\x46\x22\x20\x69\x6e\x73\x74\x72\x75\x63\
\x74\x69\x6f\x6e\x20\x69\x73\x20\x63\x61\x70\x74\x75\x72\x65\x64\
\x20\x62\x79\x20\x74\x68\x65\x20\x53\x4d\x2e\x3c\x2f\x65\x6d\x3e\
\x20\x49\x66\x20\x74\x68\x65\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\
\x69\x73\x20\x69\x6e\x20\x45\x6e\x65\x72\x67\x79\x20\x53\x61\x76\
\x69\x6e\x67\x20\x6d\x6f\x64\x65\x2c\x20\x74\x68\x69\x73\x20\x61\
\x63\x74\x69\x6f\x6e\x20\x74\x72\x61\x6e\x73\x66\x65\x72\x73\x20\
\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x6c\x79\x20\x73\x61\
\x76\x65\x64\x20\x61\x6d\x6f\x75\x6e\x74\x20\x66\x72\x6f\x6d\x20\
\x22\x53\x61\x76\x69\x6e\x67\x22\x20\x74\x6f\x20\x22\x54\x6f\x74\
\x20\x53\x61\x76\x69\x6e\x67\x22\x2c\x20\x61\x6e\x64\x20\x72\x65\
\x73\x74\x61\x72\x74\x73\x20\x74\x68\x65\x20\x22\x54\x69\x6d\x65\
\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\x20\x4d\x6f\x64\x65\x22\
\x20\x66\x72\x6f\x6d\x20\x7a\x65\x72\x6f\x2e\x20\x3c\x2f\x74\x64\
\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\
\x74\x64\x3e\x53\x4d\x3a\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x53\
\x45\x51\x2d\x4f\x4e\x4f\x46\x46\x20\x3c\x2f\x74\x64\x3e\x20\x3c\
\x74\x64\x3e\x20\x20\x53\x74\x61\x74\x75\x73\x20\x28\x22\x4f\x46\
\x46\x22\x2c\x20\x22\x4f\x4e\x22\x29\x20\x6f\x66\x20\x74\x68\x65\
\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x2e\x20\
\x53\x68\x6f\x75\x6c\x64\x20\x61\x6c\x77\x61\x79\x73\x20\x62\x65\
\x20\x22\x4f\x4e\x22\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\
\x0a\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x53\x65\x71\x75\x65\x6e\x63\
\x65\x72\x20\x53\x74\x61\x74\x65\x20\x26\x6e\x62\x73\x70\x3b\x3c\
\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x45\x51\x2d\x53\x54\x41\
\x54\x45\x20\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x65\x65\
\x20\x62\x65\x6c\x6f\x77\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x65\
\x6e\x75\x6d\x65\x72\x61\x74\x65\x64\x20\x76\x61\x6c\x75\x65\x73\
\x2e\x20\x57\x68\x65\x6e\x20\x69\x6e\x20\x65\x6e\x65\x72\x67\x79\
\x20\x73\x61\x76\x69\x6e\x67\x20\x6d\x6f\x64\x65\x2c\x20\x74\x68\
\x69\x73\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x77\x69\x6c\
\x6c\x20\x6f\x73\x63\x69\x6c\x6c\x61\x74\x65\x20\x62\x65\x74\x77\
\x65\x65\x6e\x20\x74\x68\x65\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x22\x52\x45\x41\x44\x59\x5f\x46\x4f\x52\x5f\x45\
\x56\x45\x4e\x54\x22\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x61\x6e\x64\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\x3e\x22\x41\x4c\
\x4c\x4f\x57\x5f\x45\x4e\x45\x52\x47\x59\x5f\x53\x41\x56\x49\x4e\
\x47\x22\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x73\x74\x61\x74\x65\x73\
\x2e\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x69\x74\x20\x77\
\x69\x6c\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x6f\x6e\x65\x20\
\x6f\x66\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x63\x6f\x6e\x64\
\x69\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x77\x68\x69\x63\x68\
\x20\x53\x74\x61\x6e\x64\x62\x79\x20\x69\x73\x20\x6e\x6f\x74\x20\
\x65\x6e\x61\x62\x6c\x65\x64\x2e\x20\x44\x75\x72\x69\x6e\x67\x20\
\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\
\x20\x77\x68\x65\x72\x65\x20\x6d\x61\x67\x6e\x65\x74\x73\x20\x61\
\x72\x65\x20\x61\x74\x20\x74\x68\x65\x69\x72\x20\x6e\x6f\x6d\x69\
\x6e\x61\x6c\x20\x76\x61\x6c\x75\x65\x73\x2c\x20\x69\x2e\x65\x2e\
\x2c\x20\x61\x62\x6f\x76\x65\x20\x74\x68\x65\x69\x72\x20\x73\x74\
\x61\x6e\x64\x62\x79\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\
\x76\x61\x6c\x75\x65\x73\x2c\x20\x74\x68\x69\x73\x20\x77\x69\x6c\
\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x22\x4d\x41\x47\x4e\x45\
\x54\x53\x5f\x41\x42\x4f\x56\x45\x5f\x52\x45\x46\x22\x2e\x20\x20\
\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x3c\x74\x72\
\x3e\x3c\x74\x64\x3e\x4f\x4e\x20\x6f\x72\x20\x53\x74\x61\x6e\x64\
\x62\x79\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x54\x41\x54\
\x45\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x44\x69\x73\x70\x6c\
\x61\x79\x73\x20\x22\x53\x54\x41\x4e\x44\x42\x59\x22\x20\x77\x68\
\x65\x6e\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\
\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\x65\
\x6e\x61\x62\x6c\x65\x64\x2c\x20\x65\x6c\x73\x65\x20\x4f\x4e\x20\
\x28\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x63\
\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x68\x61\x76\x65\x20\x6e\
\x6f\x74\x20\x62\x65\x65\x6e\x20\x6d\x65\x74\x29\x3c\x2f\x74\x64\
\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x3c\x2f\x74\x61\x62\x6c\x65\
\x3e\x0a\x3c\x62\x72\x3e\x0a\x45\x6e\x75\x6d\x65\x72\x61\x74\x65\
\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x6f\x72\x20\x53\x45\x51\
\x2d\x53\x54\x41\x54\x45\x20\x28\x6e\x6f\x74\x20\x61\x6c\x6c\x20\
\x73\x74\x61\x74\x65\x73\x20\x6d\x61\x79\x20\x68\x61\x76\x65\x20\
\x6e\x65\x63\x65\x73\x73\x61\x72\x69\x6c\x79\x20\x62\x65\x65\x6e\
\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x29\x3a\x3c\x62\
\x72\x3e\x0a\x27\x46\x45\x45\x44\x42\x41\x43\x4b\x5f\x4f\x46\x46\
\x27\x2c\x20\x27\x46\x45\x45\x44\x42\x41\x43\x4b\x5f\x4f\x4e\x27\
\x2c\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\x3e\x27\x52\
\x45\x41\x44\x59\x5f\x46\x4f\x52\x5f\x45\x56\x45\x4e\x54\x27\x3c\
\x2f\x73\x70\x61\x6e\x3e\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x53\x48\
\x49\x46\x54\x5f\x54\x59\x50\x45\x5f\x4f\x4b\x27\x2c\x20\x27\x53\
\x48\x49\x46\x54\x5f\x54\x59\x50\x45\x5f\x4e\x4f\x54\x5f\x41\x50\
\x50\x4c\x49\x43\x41\x42\x4c\x45\x27\x2c\x3c\x62\x72\x3e\x0a\x27\
\x49\x5f\x42\x45\x4c\x4f\x57\x5f\x54\x48\x52\x45\x53\x48\x4f\x4c\
\x44\x27\x2c\x20\x27\x49\x5f\x41\x42\x4f\x56\x45\x5f\x54\x48\x52\
\x45\x53\x48\x4f\x4c\x44\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x4d\
\x41\x47\x4e\x45\x54\x53\x5f\x42\x45\x4c\x4f\x57\x5f\x52\x45\x46\
\x27\x2c\x20\x27\x4d\x41\x47\x4e\x45\x54\x53\x5f\x41\x42\x4f\x56\
\x45\x5f\x52\x45\x46\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x53\x4f\
\x55\x52\x43\x45\x49\x5f\x42\x45\x4c\x4f\x57\x5f\x54\x48\x52\x45\
\x53\x48\x4f\x4c\x44\x27\x2c\x20\x27\x53\x4f\x55\x52\x43\x45\x49\
\x5f\x41\x42\x4f\x56\x45\x5f\x54\x48\x52\x45\x53\x48\x4f\x4c\x44\
\x27\x2c\x20\x20\x3c\x62\x72\x3e\x0a\x27\x42\x45\x41\x4d\x5f\x50\
\x41\x54\x48\x5f\x4f\x50\x45\x4e\x27\x2c\x20\x27\x42\x45\x41\x4d\
\x5f\x50\x41\x54\x48\x5f\x43\x4c\x4f\x53\x45\x44\x27\x2c\x20\x3c\
\x62\x72\x3e\x0a\x27\x43\x48\x41\x4e\x4e\x45\x4c\x53\x5f\x44\x49\
\x53\x43\x4f\x4e\x4e\x45\x43\x54\x45\x44\x27\x2c\x20\x27\x43\x48\
\x41\x4e\x4e\x45\x4c\x53\x5f\x43\x4f\x4e\x4e\x45\x43\x54\x45\x44\
\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x27\x41\x4c\x4c\x4f\x57\x5f\x45\x4e\x45\x52\x47\
\x59\x5f\x53\x41\x56\x49\x4e\x47\x27\x3c\x2f\x73\x70\x61\x6e\x3e\
\x0a\x20\x20\x0a\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\
\x22\x3e\x48\x75\x73\x68\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\x6e\
\x67\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x54\x68\x65\x20\x61\x63\x63\
\x6f\x75\x6e\x74\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x65\x20\x65\
\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x65\x64\x20\x66\x6f\x72\x20\
\x61\x20\x67\x69\x76\x65\x6e\x20\x69\x73\x20\x79\x65\x61\x72\x20\
\x69\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x72\x64\x65\
\x64\x2e\x0a\x20\x20\x41\x74\x20\x74\x68\x65\x20\x65\x6e\x64\x20\
\x6f\x66\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\
\x79\x65\x61\x72\x2c\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\
\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x68\x6f\x6c\x64\
\x69\x6e\x67\x20\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x0a\x20\x20\
\x73\x61\x76\x65\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x61\x72\x65\
\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x73\x65\x74\x20\x74\x6f\x20\
\x7a\x65\x72\x6f\x2e\x20\x54\x68\x69\x73\x20\x69\x73\x20\x61\x63\
\x63\x6f\x6d\x70\x6c\x69\x73\x68\x65\x64\x20\x74\x68\x72\x6f\x75\
\x67\x68\x20\x74\x68\x65\x20\x22\x52\x65\x73\x65\x74\x20\x41\x63\
\x63\x6f\x75\x6e\x74\x22\x20\x62\x75\x74\x74\x6f\x6e\x2e\x0a\x20\
\x20\x54\x68\x69\x73\x20\x61\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\
\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x70\x72\x6f\x74\x65\x63\x74\
\x65\x64\x20\x28\x48\x55\x53\x48\x21\x29\x20\x54\x68\x65\x20\x65\
\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x65\x64\x20\x69\x73\x20\x61\
\x6c\x73\x6f\x20\x72\x65\x63\x6f\x72\x64\x65\x64\x20\x69\x6e\x20\
\x74\x68\x65\x20\x65\x6c\x6f\x67\x62\x6f\x6f\x6b\x2e\x20\x0a\x0a\
\x20\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4c\x61\
\x73\x74\x20\x50\x6f\x77\x65\x72\x3c\x2f\x68\x33\x3e\x0a\x20\x20\
\x20\x54\x68\x69\x73\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\
\x61\x6c\x6c\x6f\x77\x73\x20\x74\x68\x65\x20\x65\x78\x70\x65\x72\
\x74\x20\x75\x73\x65\x72\x20\x74\x6f\x20\x72\x65\x73\x65\x74\x20\
\x74\x68\x65\x20\x49\x6e\x69\x74\x69\x61\x6c\x20\x50\x6f\x77\x65\
\x72\x20\x69\x6e\x20\x22\x53\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\
\x65\x72\x76\x69\x65\x77\x22\x20\x66\x6f\x72\x20\x61\x20\x67\x69\
\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x69\
\x74\x73\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x76\x61\x6c\x75\x65\
\x2c\x20\x73\x68\x6f\x75\x6c\x64\x20\x73\x75\x63\x68\x20\x61\x20\
\x6e\x65\x65\x64\x20\x65\x76\x65\x72\x20\x68\x61\x70\x68\x61\x7a\
\x61\x72\x64\x6c\x79\x20\x61\x72\x69\x73\x65\x20\x77\x68\x69\x6c\
\x65\x20\x74\x68\x65\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x69\x73\
\x20\x69\x6e\x20\x45\x6e\x65\x72\x67\x79\x20\x53\x61\x76\x69\x6e\
\x67\x20\x6d\x6f\x64\x65\x2c\x20\x61\x6e\x64\x20\x66\x6f\x72\x20\
\x77\x68\x69\x63\x68\x20\x74\x68\x65\x20\x22\x55\x70\x64\x61\x74\
\x65\x22\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\
\x20\x4d\x61\x67\x6e\x65\x74\x20\x70\x61\x6e\x65\x6c\x20\x69\x73\
\x20\x64\x69\x73\x65\x6e\x61\x62\x6c\x65\x64\x2e\x0a\x0a\x3c\x68\
\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\
\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x48\x55\x53\x48\x21\x20\x49\
\x6d\x61\x67\x65\x3c\x2f\x68\x33\x3e\x0a\x20\x3c\x74\x61\x62\x6c\
\x65\x3e\x0a\x20\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\
\x0a\x20\x20\x20\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x22\x3a\x48\
\x75\x73\x68\x2e\x6a\x70\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x39\
\x30\x20\x68\x65\x69\x67\x68\x74\x3d\x39\x30\x2f\x3e\x20\x26\x6e\
\x62\x73\x70\x3b\x20\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x0a\x20\
\x20\x20\x49\x6e\x73\x70\x69\x72\x65\x64\x20\x62\x79\x20\x44\x61\
\x64\x61\x20\x41\x6e\x74\x65\x20\x50\x6f\x72\x74\x61\x73\x2c\x20\
\x61\x72\x67\x75\x61\x62\x6c\x79\x20\x53\x77\x69\x74\x7a\x65\x72\
\x6c\x61\x6e\x64\x27\x73\x20\x67\x72\x65\x61\x74\x65\x73\x74\x20\
\x50\x6f\x70\x2f\x52\x6f\x63\x6b\x20\x62\x61\x6e\x64\x21\x20\x47\
\x69\x76\x65\x20\x27\x65\x6d\x20\x61\x20\x6c\x69\x73\x74\x65\x6e\
\x2e\x0a\x20\x20\x20\x54\x68\x65\x69\x72\x20\x6d\x75\x73\x69\x63\
\x20\x61\x6e\x64\x20\x6c\x79\x72\x69\x63\x73\x20\x61\x72\x65\x20\
\x61\x77\x65\x73\x6f\x6d\x65\x21\x3c\x2f\x74\x64\x3e\x0a\x20\x20\
\x20\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x3c\x70\x3e\x0a\x3c\x2f\
\x70\x3e\x0a\x20\x20\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\x68\
\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\xa7\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\x80\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
@@ -37,19 +626,6 @@ qt_resource_data = b"\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\xa7\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
@@ -71,63 +647,18 @@ qt_resource_data = b"\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x03\x29\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x61\
\x6e\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\
\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\
\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\x61\
\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\x6e\
\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\x73\
\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x3c\x73\x70\
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\x6e\x3e\x61\
\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\
\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\x68\x79\x20\
\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\x20\x3c\x73\x70\x61\
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
\x72\x65\x64\x3b\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\
\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\
\x68\x69\x73\x20\x3c\x62\x3e\x48\x55\x53\x48\x21\x3c\x2f\x62\x3e\
\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x69\x6e\x68\
\x65\x72\x69\x74\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x57\
\x69\x6e\x64\x6f\x77\x20\x62\x61\x73\x65\x20\x63\x6c\x61\x73\x73\
\x2e\x3c\x62\x72\x3e\x20\x20\x0a\x3c\x70\x3e\x69\x6e\x66\x6f\x72\
\x6d\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6e\x63\x65\x72\x6e\x69\x6e\
\x67\x20\x74\x68\x69\x73\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\
\x6f\x6e\x2c\x20\x73\x75\x63\x68\x20\x61\x73\x20\x63\x6f\x6e\x66\
\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x70\x61\x72\x61\x6d\x65\
\x74\x65\x72\x73\x20\x6f\x72\x20\x6f\x74\x68\x65\x72\x2c\x20\x6d\
\x61\x79\x20\x62\x65\x20\x65\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\
\x2e\x67\x2e\x2c\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\
\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\
\x61\x3e\x3c\x2f\x70\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
\x54\x68\x65\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x32\x3e\x0a\x0a\
\x3c\x70\x3e\x54\x68\x65\x73\x65\x20\x77\x65\x62\x20\x70\x61\x67\
\x65\x73\x20\x61\x72\x65\x20\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\
\x70\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x61\x70\
\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x6f\x77\x6e\x65\x72\x2e\
\x3c\x62\x72\x3e\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\
\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\
"
qt_resource_name = b"\
\x00\x0a\
\x0c\xba\xf2\x7c\
\x00\x69\
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x5a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x8a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
@@ -136,10 +667,6 @@ qt_resource_name = b"\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x5a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x6a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
@@ -147,41 +674,37 @@ qt_resource_name = b"\
\x08\x4a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x0c\xba\xf2\x7c\
\x00\x69\
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x26\x5f\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x23\xda\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x25\xb4\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x25\x09\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x24\x85\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5b\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5c\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5e\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5f\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x26\x5f\
\x00\x00\x01\x94\x50\x2e\x84\x4a\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x23\xda\
\x00\x00\x01\x94\x50\x2e\x84\x4c\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x25\xb4\
\x00\x00\x01\x94\x50\x2e\x84\x4d\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x25\x09\
\x00\x00\x01\x94\x50\x2e\x84\x4f\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x24\x85\
\x00\x00\x01\x94\x50\x2e\x84\x51\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x8d\x9c\xeb\xd9\x61\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
\x00\x00\x01\x8d\xa7\xc7\x77\x2b\
\x00\x00\x01\x94\x50\x7b\xd3\x65\
"
qt_version = QtCore.qVersion().split('.')
if qt_version < ['5', '8', '0']:
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:

View File

@@ -1,18 +1,117 @@
<html><head><title>Handsome Power Usage and Saving Hierarchy at Proscan, HUSH!</title></head>
<html><head><title>Handsome Power Usage and Saving Hierarchy at PROSCAN, HUSH!</title></head>
<body>
<h5 style="color:gray;">January 2024, Jan Chrin</h5>
<h4> <span style="color: red;">H</span>andsome <span style="color: gray;">Power</span> <span style="color: red;">U</span>sage and <span style="color: red;">S</span>aving <span style="color: red;">H</span>ierarchy at Proscan, <span style="color: red;">HUSH!</span></h4>
<h5 style="color:gray;">February 2024, Jan Chrin</h5>
<h4> <span style="color: red;">H</span>andsome <span style="color: gray;">Power</span> <span style="color: red;">U</span>sage <span style="color: gray;">and</span> <span style="color: red;">S</span>aving <span style="color: red;">H</span>ierarchy</span> <span style="color: gray;">at PROSCAN,</span> <span style="color: red;">HUSH!</span></h4>
<h2 style="color:blue;">About</h2>
<p>This <b>HUSH!</b> application inherits from the Window base class.<br>
<p>information concerning this application, such as configuration parameters or other, may be entered, e.g., <a href="page1.html">here</a></p>
<p>The HUSH! application initiates energy saving procedures and records the power saved.<br>
<span style="color:red; font-style:italic;">Power Saving Accounting is only activated when PROSCAN is in "Produktion" mode as indicated by the enumerated process variable, PROSCAN:OPERATION:STATUS. </span>
</p>
<!--a href="page1.html">here</a></p-->
<h2 style="color:blue;">The Panel</h2>
<h2 style="color:blue;">The Repository</h2>
<p>These web pages are to be completed by the application owner.<br>
<p>The application comprises two components:
<ul>
<li>
A State Machine (SM) operating at the IOC level that is responsible for the power saving accounting.<br>
<span style="color: green;">https://git.psi.ch/epics_iocboot_proscan/PRO_hush</span><br>
<span style="color: gray;">/proscan/bd/applications/hush/ioc/latest/PRO_hush/</span><br>
</li>
<li>
A High Level Application (HLA) that is able to interact with the IOC, displays accounting
figures, and provides a panel to enable quadruples to be set to their standby/restore values.<br>
<span style="color: green;"> https://gitlab.psi.ch/proscan_apps4ops/HUSH</span>
<h4 style="color:lightblue;">Control Room</h4>
<span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush.sh</span>
<h4 style="color:lightblue;">Beamlines</h4>
G1: <span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush_g1.sh</span><br>
G2: <span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush_g2.sh</span><br>
O2: <span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush_o2.sh</span><br>
PIF: <span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush_pif.sh</span><br>
G3: <span style="color: gray;"> /proscan/bd/applications/hush/hla/latest/hush_g3.sh</span><br>
</li>
</ul>
<h2 style="color:blue;">GUI, Control Tab</h2>
Main panel for use by operators to place the quadruples into their standby state and to restore them to their nominal operating values.
<h3 style="color:#7b68ee;">Operator Panel</h3>
Ramp Delay: Can take on values from 0.0s to 0.2s. <br>
Defines the delay between setting individual quadruples when initiating standby/restore.
A value of 0.0s means that the quadruple currents are set simultaneously.
<h3 style="color:#7b68ee;">Expert Panel</h3>
Selecting the Dry Run option disables setting values to epics process variables. Used for testing.
<h3 style="color:#7b68ee;">Saving Overview</h3>
Displays a number of parameters for a given section related to power saving accounting. <br>
<table>
<tr> <td colspan=3> Table description</td> </tr>
<tr><td>Initial Power (kw):</td> <td>The nominal summed power when quadruples are in the usual powered-on state.</td></tr>
<tr><td>Power (kw):</td> <td>The summed current power,</td></tr>
<tr><td>Saving (MWh):</td> <td>The running power in the current saving period.</td></tr>
<tr><td>Time in Saving Mode: &nbsp;</td> <td>Time elapsed in current saving period (days hours:minutes:seconds).</td></tr>
<tr><td>Tot Saved (MWh):</td> <td>The accumulated power saved so far in the calendar year.</td></tr>
</table>
<h3 style="color:#7b68ee;">Magnet Tab Panel</h3>
Table of current and power values for quadruples within each section: G1, SH, G2, O2, PIF, G3.
(Section B1B2 has only readback capabilities).<br>
Quadruples may be set to their standby values or restored to their initial values.
<em>These action buttons are only enabled if certan conditions are met, i.e, the corresponding
beam disrupter is closed, "Geschlossen" and the corresponding access writes are granted as
controlled by either the global Mastership or the relevant section Submastership</em><br>
Best practice dictates that "Update" be pressed before "Standby" is initiated. This updates the magnet current values in the "Init. Value" column, which provides the 'set' values for an eventual "Restore" action.
The "Init Value" of the Power table is likewise updated. The updated sum of initial power values is then propagated to the "initial" column in the "Savings Overview" sub-panel for use in the energy saving accounting. An "Update" in either the Current or Power table will automatically update the other. Note that the
"Update" button is disenabled when the section is in "Standby" mode and energy saving is activated.
<br>
<em>If for some haphazard reason the Initial Power Value appearing in the "Savings Overview"
is evidently wrong for a given section during energy saving (and for which the "Update" button is disenabled), e.g., it is less than the current power usage as shown in the "Power" column, it can be ovewritten to its default value from the "Last Power" sub-panel within the "IOC" tab widget.</em><br>
The three light blue background coloured device entries in the magnet table indicate the quadruples that are monitored within the IOC to determine the "Standby/Restore" state of the section.
<h3 style="color:#7b68ee;">Mastership Table</h3>
Displays the current access rights for the various sections.<br>
Possible enumerated values are: UNDEF (0), FREI (1), SUBMASTERSHIP (2), MASTERSHIP (3), FEHLER(10).
SUBMASTERSHIP and MASTERSHIP mode grants control to the beamline magnets and the entire accelerator complex magnets, respectively. The enabling/disabling of the "Restore" and "Standby" buttons in the magnet sub-panel follow suite.
<h2 style="color:blue;">GUI, IOC Tab </h2>
The panel displays the status of the State Machine (SM) operating with the IOC, and further allows certain interactions. The SM is responsible for the Power Saving accounting. It is essentially decoupled from the HLA. Should quadruples be set from outside the HLA, the SM will capture the change and act accordingly.
<h3 style="color:#7b68ee;">State Machine</h3>
Displays the status of the state machine sequencer.
<table>
<tr><td>Reset:</td> <td> SEQ-ONOFF &nbsp;</td><td>Restarts the SM. <em>Press and hold button for at least 2 seconds to ensure the initial "OFF" instruction is captured by the SM.</em> If the section is in Energy Saving mode, this action transfers the currently saved amount from "Saving" to "Tot Saving", and restarts the "Time in Saving Mode" from zero. </td></tr>
<tr><td>SM:</td><td>SEQ-ONOFF </td> <td> Status ("OFF", "ON") of the State Machine. Should always be "ON".</td></tr>
<tr><td>Sequencer State &nbsp;</td> <td>SEQ-STATE </td> <td>See below for the enumerated values. When in energy saving mode, this parameter will oscillate between the <span style="color: green;">"READY_FOR_EVENT"</span> and <span style="color: green;">"ALLOW_ENERGY_SAVING"</span> states. Otherwise it will display one of a number conditions for which Standby is not enabled. During normal operation where magnets are at their nominal values, i.e., above their standby reference values, this will display "MAGNETS_ABOVE_REF". </td></tr>
<tr><td>ON or Standby</td> <td>STATE</td> <td>Displays "STANDBY" when energy saving accounting is enabled, else ON (energy saving conditions have not been met)</td></tr>
</table>
<br>
Enumerated values for SEQ-STATE (not all states may have necessarily been implemented):<br>
'FEEDBACK_OFF', 'FEEDBACK_ON', <span style="color: green;">'READY_FOR_EVENT'</span>, <br>
'SHIFT_TYPE_OK', 'SHIFT_TYPE_NOT_APPLICABLE',<br>
'I_BELOW_THRESHOLD', 'I_ABOVE_THRESHOLD', <br>
'MAGNETS_BELOW_REF', 'MAGNETS_ABOVE_REF', <br>
'SOURCEI_BELOW_THRESHOLD', 'SOURCEI_ABOVE_THRESHOLD', <br>
'BEAM_PATH_OPEN', 'BEAM_PATH_CLOSED', <br>
'CHANNELS_DISCONNECTED', 'CHANNELS_CONNECTED', <br>
<span style="color: green;">'ALLOW_ENERGY_SAVING'</span>
<h3 style="color:#7b68ee;">Hush Accounting</h3>
The accounting of the energy saved for a given is year is to be recorded.
At the end of the calendar year, the process variables holding the power
saved values are to be reset to zero. This is accomplished through the "Reset Account" button.
This action is password protected (HUSH!) The energy saved is also recorded in the elogbook.
<h3 style="color:#7b68ee;">Last Power</h3>
This sub-panel allows the expert user to reset the Initial Power in "Savings Overview" for a given section to its default value, should such a need ever haphazardly arise while the section is in Energy Saving mode, and for which the "Update" button in the Magnet panel is disenabled.
<h3 style="color:#7b68ee;">HUSH! Image</h3>
<table>
<tr><td>
<img src=":Hush.jpg" width=90 height=90/> &nbsp; </td><td>
Inspired by Dada Ante Portas, arguably Switzerland's greatest Pop/Rock band! Give 'em a listen.
Their music and lyrics are awesome!</td>
</table>
<p>
</p>
</body></html>

0
help/make_and_install.sh Normal file → Executable file
View File

View File

@@ -127,5 +127,6 @@
"resultsTabTitle" : "IOC"
},
"headerMagnetSector": ["B1B2","G1","SH","G2","O2","PIF", "G3"],
"Master": "Controlroom"
"Master": "Controlroom",
"Reset": "HUSH!"
}

23
hush.py
View File

@@ -21,7 +21,7 @@ from src.gui import AppGui
_pymodule = os.path.basename(__file__)
_appname, _appext = _pymodule.split(".")
_appversion = "1.0.0"
_appversion = "1.8.4"
# _title = """Power Usage & Saving Hierarchy""" #, HUSH!"""
_title = """HUSH!"""
@@ -56,9 +56,13 @@ class StartMain(BaseWindow):
self.elog_enum = ElogPROSCAN()
self.gui = AppGui(self)
def prepare_elog_message(self):
self.setMinimumHeight(974)
self.setMinimumWidth(1460)
def prepare_elog_message(self):
self.system_idx = self.elog_enum.system.NONE
self.eintrag_idx = self.elog_enum.eintrag.INFO
self.effekt_idx = self.elog_enum.effekt.NO
@@ -177,12 +181,10 @@ class StartMain(BaseWindow):
"""<b>{0}</b> v {1}
<p>Copyright &copy; Paul Scherrer Institut (PSI).
All rights reserved.</p>
<p>Author: J. Chrin, Spring 2023 </p>
<p>(EPICS db adapted from A. Kovach, 2016) <p>
<p>IOC Administrator: H. Lutz </p>
<p>1st Responsible: J. Chrin
or 3301 (Control Room) </p>
<p>Author: J. Chrin, February 2024 </p>
<p>(EPICS db adapted from A. Kovach, 2016) </p>
<p>IOC Administrator: P. Fernandez (prev. H. Lutz) </p>
<p>1st Responsible: J. Chrin </p>
<p>Initiates energy saving procedures and records power saved</p>
<p>Python {2} - Qt {3} - PyQt {4} <br>
cafe {5} - epics {6} on {7}""".format(
@@ -205,9 +207,10 @@ class StartMain(BaseWindow):
#########################################################################
if __name__ == "__main__":
delay = 8 if "_" in _pymodule else 15
app = QApplication(sys.argv)
splash = BaseWindow.initialize_application(
app, appname=_appname, delay=25, facility=Facility.PROSCAN)
app, appname=_appname, delay=delay, facility=Facility.PROSCAN)
myapp = StartMain()

46
hush.sh
View File

@@ -1,5 +1,5 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.2.0
cd /proscan/bd/applications/hush/hla/latest
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
@@ -8,7 +8,7 @@ configSector=${configBase}/control
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,15 +20,33 @@ else
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7, 3.8, 3.10
PYTHON_VERSION=3.10
# Only needed for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -38,17 +56,15 @@ fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.9.0
#C_EXT version
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
@@ -73,6 +89,7 @@ echo "nameLog: $nameLog"
#Configuration files can be overwritten
#python ${name}.py -s="/sf/bd/deps/pyqtacc/common/config/style.json" -f="/sf/bd/deps/pyqtacc/v1.0.0/pyqtacc/qrc_resources/facility/sf/config/base.json" -q="/sf/bd/deps/pyqtacc/common/config/acc.qss" &
python wakeup.py 00:00 &
if [ "${STDOUT_FLAG}" -gt "0" ] ; then
#if changing the std::out destination, remember to also change it in your json config file (for reading)
@@ -91,7 +108,6 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
@@ -100,3 +116,7 @@ else
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

1
hush_g1.py Symbolic link
View File

@@ -0,0 +1 @@
hush.py

View File

@@ -1,14 +1,14 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
cd /proscan/bd/applications/hush/hla/latest
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
appNameDefault="hush_g1.sh"
configBase="config"
configSector=${configBase}/g1
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,34 +20,50 @@ else
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7, 3,8, 3,10
PYTHON_VERSION=3.10
# Only neede for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
@@ -67,6 +83,7 @@ fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameconfig=$(echo "$baseName" | cut -f 1 -d '_')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
@@ -91,12 +108,16 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
python wakeup.py 00:00 &
python ${name}.py -u ${configSector}/${nameconfig}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
python ${name}.py -u ${configSector}/${nameconfig}.json &
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

1
hush_g2.py Symbolic link
View File

@@ -0,0 +1 @@
hush.py

View File

@@ -1,14 +1,14 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
cd /proscan/bd/applications/hush/hla/latest
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
appNameDefault="hush_g2.sh"
configBase="config"
configSector=${configBase}/g2
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,15 +20,34 @@ else
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7, 3.8, 3.10
PYTHON_VERSION=3.10
# Only neede for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -38,16 +57,14 @@ fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
@@ -67,6 +84,7 @@ fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameconfig=$(echo "$baseName" | cut -f 1 -d '_')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
@@ -91,12 +109,15 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
python wakeup.py 00:00 &
python ${name}.py -u ${configSector}/${nameconfig}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
python ${name}.py -u ${configSector}/${nameconfig}.json &
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

1
hush_g3.py Symbolic link
View File

@@ -0,0 +1 @@
hush.py

View File

@@ -1,14 +1,14 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
cd /proscan/bd/applications/hush/hla/latest
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
appNameDefault="hush_g3.sh"
configBase="config"
configSector=${configBase}/g3
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,35 +20,52 @@ else
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7, 3.8, 3.10
PYTHON_VERSION=3.10
# Only neede for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
fi
fi
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
@@ -67,6 +84,7 @@ fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameconfig=$(echo "$baseName" | cut -f 1 -d '_')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
@@ -91,12 +109,15 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
python wakeup.py 00:00 &
python ${name}.py -u ${configSector}/${nameconfig}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
python ${name}.py -u ${configSector}/${nameconfig}.json &
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

1
hush_o2.py Symbolic link
View File

@@ -0,0 +1 @@
hush.py

View File

@@ -1,14 +1,14 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
cd /proscan/bd/applications/hush/hla/1.8.4
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
appNameDefault="hush_o2.sh"
configBase="config"
configSector=${configBase}/o2
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,15 +20,34 @@ else
echo "Interactive/sourced script"
fi
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7, 3,8, 3.10
PYTHON_VERSION=3.10
# Only neede for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -36,19 +55,19 @@ if [ "$1" ]; then
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
@@ -67,6 +86,7 @@ fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameconfig=$(echo "$baseName" | cut -f 1 -d '_')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
@@ -91,12 +111,16 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
python wakeup.py 00:00 &
python ${name}.py -u ${configSector}/${nameconfig}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
python ${name}.py -u ${configSector}/${nameconfig}.json &
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

1
hush_pif.py Symbolic link
View File

@@ -0,0 +1 @@
hush.py

View File

@@ -1,14 +1,14 @@
#!/bin/bash
cd /proscan/bd/applications/hush/hla/1.1.0
cd /proscan/bd/applications/hush/hla/latest
# For use if script is sourced rather than executed
appNameDefault="hush.sh"
appNameDefault="hush_pif.sh"
configBase="config"
configSector=${configBase}/pif
echo "${configSector}"
module unload gcc
module load gcc/7.3.0
module load gcc/7.5.0
if [ -z "$PS1" ] # no prompt?
### if [ -v PS1 ] # On Bash 4.2+ ...
@@ -20,15 +20,34 @@ else
echo "Interactive/sourced script"
fi
_EPICS_HOST_ARCH=${RHREL}-x86_64
_EPICS_BASE=base-7.0.8
# Select Python Version here. Currently one of 3.5, 3.7
PYTHON_VERSION=3.7
PYTHON_VERSION=3.10
# Only neede for verison-specific packages, e.g., bigtree-
# Not required for elog.
PYTHON_VERSION_DIR=310
EXTRA_PYTHON_PATH_FLAG=0
if [ "$1" ]; then
if [ "$1" == "3.5" -o "$1" == "35" ]; then
echo "Using default version $PYTHON_VERSION"
elif [ "$1" == "3.7" -o "$1" == "37" ]; then
PYTHON_VERSION=3.7
PYTHON_VERSION=3.7
PYTHON_VERSION_DIR=37
export LD_PRELOAD=/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libca.so:/usr/local/epics/${_EPICS_BASE}/lib/${_EPICS_HOST_ARCH}/libCom.so
elif [ "$1" == "3.8" -o "$1" == "38" ]; then
PYTHON_VERSION=3.8
PYTHON_VERSION_DIR=38
#EXTRA_PYTHON_PATH_FLAG=1
elif [ "$1" == "3.10" -o "$1" == "310" ]; then
PYTHON_VERSION=3.10
PYTHON_VERSION_DIR=310
#EXTRA_PYTHON_PATH_FLAG=1
else
echo "Requested Python version is not supported"
echo "Using default version $PYTHON_VERSION"
@@ -36,19 +55,19 @@ if [ "$1" ]; then
fi
echo "PYTHON_VERSION $PYTHON_VERSION"
_EPICS_HOST_ARCH=${RHREL}-x86_64
#_EPICS_HOST_ARCH=${EPICS_HOST_ARCH}
. /opt/gfa/python $PYTHON_VERSION
#/sf/bd/applications/OnlineModel/current/PythonModule:/sf/bd/applications/OnlineModel/current
#/sf/bd/applications/OnlineModel/default/scripts/VA:
#C_EXT version for Py 3.7:
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.19.3/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.8.0
export PYTHONPATH=.:/opt/gfa/cafe/python/pycafe/cafe-1.21.0/lib/${_EPICS_HOST_ARCH}:/proscan/bd/applications/deps/apps4ops/v1.13.0
if [ "${EXTRA_PYTHON_PATH_FLAG}" -gt "0" ] ; then
export PYTHONPATH=$PYTHONPATH:/proscan/bd/applications/deps/apps4ops/v1.13.0/common/python${PYTHON_VERSION_DIR}
fi
echo $PYTHONPATH
STDOUT_DIR="/tmp"
@@ -67,6 +86,7 @@ fi
#echo "$appName $@ $#"
baseName="${appName##*/}"
name=$(echo "$baseName" | cut -f 1 -d '.')
nameconfig=$(echo "$baseName" | cut -f 1 -d '_')
nameLog=${name}-$USER
echo "Application: $name"
echo "nameLog: $nameLog"
@@ -91,12 +111,18 @@ if [ "${STDOUT_FLAG}" -gt "0" ] ; then
cp $STDOUT_DIR/${nameLog}.log $STDOUT_DIR/${nameLog}.log-
rm -f $STDOUT_DIR/${nameLog}.log
fi
python ${name}.py -u ${configSector}/${name}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
python wakeup.py 00:00 &
python ${name}.py -u ${configSector}/${nameconfig}.json >> $STDOUT_DIR/${nameLog}.log 2>&1 &
chmod 777 $STDOUT_DIR/${nameLog}.log
else
#Run instead without std::out
python ${name}.py -u ${configSector}/${name}.json &
python ${name}.py -u ${configSector}/${nameconfig}.json &
fi
if [ "${PYTHON_VERSION}" == "3.7" ] ; then
unset LD_PRELOAD
fi

View File

@@ -2,13 +2,602 @@
# Resource object code
#
# Created by: The Resource Compiler for PyQt5 (Qt v5.9.7)
# Created by: The Resource Compiler for PyQt5 (Qt v5.15.3)
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore
qt_resource_data = b"\
\x00\x00\x23\xd6\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
\x52\x4f\x53\x43\x41\x4e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x46\x65\
\x62\x72\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\
\x20\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\
\x61\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\
\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\
\x72\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\
\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\
\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\
\x73\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x61\x6e\x64\x3c\x2f\x73\x70\x61\x6e\x3e\x20\
\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\
\x6e\x3e\x61\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
\x22\x3e\x48\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\
\x68\x79\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x61\x74\x20\x50\x52\x4f\x53\x43\x41\x4e\x2c\
\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\
\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x2f\
\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x41\x62\x6f\x75\
\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x48\
\x55\x53\x48\x21\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x73\x20\x65\x6e\x65\x72\x67\
\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x70\x72\x6f\x63\x65\x64\x75\
\x72\x65\x73\x20\x61\x6e\x64\x20\x72\x65\x63\x6f\x72\x64\x73\x20\
\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\x65\x64\x2e\
\x3c\x62\x72\x3e\x0a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x72\x65\x64\x3b\x20\x66\x6f\
\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x69\x74\x61\x6c\x69\x63\x3b\
\x22\x3e\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\x67\x20\x41\
\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\x6f\x6e\x6c\
\x79\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x20\x77\x68\x65\x6e\
\x20\x50\x52\x4f\x53\x43\x41\x4e\x20\x69\x73\x20\x69\x6e\x20\x22\
\x50\x72\x6f\x64\x75\x6b\x74\x69\x6f\x6e\x22\x20\x6d\x6f\x64\x65\
\x20\x61\x73\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x64\x20\x62\x79\
\x20\x74\x68\x65\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\x64\x20\
\x70\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\
\x2c\x20\x50\x52\x4f\x53\x43\x41\x4e\x3a\x4f\x50\x45\x52\x41\x54\
\x49\x4f\x4e\x3a\x53\x54\x41\x54\x55\x53\x2e\x20\x20\x3c\x2f\x73\
\x70\x61\x6e\x3e\x20\x0a\x20\x20\x3c\x2f\x70\x3e\x0a\x3c\x21\x2d\
\x2d\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\x67\x65\x31\x2e\x68\
\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\x61\x3e\x3c\x2f\x70\
\x2d\x2d\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\
\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x54\x68\x65\
\x20\x52\x65\x70\x6f\x73\x69\x74\x6f\x72\x79\x3c\x2f\x68\x32\x3e\
\x0a\x0a\x3c\x70\x3e\x54\x68\x65\x20\x61\x70\x70\x6c\x69\x63\x61\
\x74\x69\x6f\x6e\x20\x63\x6f\x6d\x70\x72\x69\x73\x65\x73\x20\x74\
\x77\x6f\x20\x63\x6f\x6d\x70\x6f\x6e\x65\x6e\x74\x73\x3a\x0a\x20\
\x20\x3c\x75\x6c\x3e\x0a\x3c\x6c\x69\x3e\x0a\x20\x20\x41\x20\x53\
\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\x28\x53\x4d\
\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x20\x61\x74\x20\x74\
\x68\x65\x20\x49\x4f\x43\x20\x6c\x65\x76\x65\x6c\x20\x74\x68\x61\
\x74\x20\x69\x73\x20\x72\x65\x73\x70\x6f\x6e\x73\x69\x62\x6c\x65\
\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x20\x73\
\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\
\x2e\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x2e\
\x70\x73\x69\x2e\x63\x68\x2f\x65\x70\x69\x63\x73\x5f\x69\x6f\x63\
\x62\x6f\x6f\x74\x5f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x50\x52\x4f\
\x5f\x68\x75\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\
\x3e\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\
\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x69\
\x6f\x63\x2f\x6c\x61\x74\x65\x73\x74\x2f\x50\x52\x4f\x5f\x68\x75\
\x73\x68\x2f\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\
\x3c\x2f\x6c\x69\x3e\x0a\x20\x20\x3c\x6c\x69\x3e\x0a\x20\x20\x20\
\x20\x41\x20\x48\x69\x67\x68\x20\x4c\x65\x76\x65\x6c\x20\x41\x70\
\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x28\x48\x4c\x41\x29\x20\
\x74\x68\x61\x74\x20\x69\x73\x20\x61\x62\x6c\x65\x20\x74\x6f\x20\
\x69\x6e\x74\x65\x72\x61\x63\x74\x20\x77\x69\x74\x68\x20\x74\x68\
\x65\x20\x49\x4f\x43\x2c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\
\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x0a\x20\x20\x20\x20\x66\
\x69\x67\x75\x72\x65\x73\x2c\x20\x61\x6e\x64\x20\x70\x72\x6f\x76\
\x69\x64\x65\x73\x20\x61\x20\x70\x61\x6e\x65\x6c\x20\x74\x6f\x20\
\x65\x6e\x61\x62\x6c\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\
\x73\x20\x74\x6f\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\
\x68\x65\x69\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\
\x74\x6f\x72\x65\x20\x76\x61\x6c\x75\x65\x73\x2e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\
\x3e\x20\x68\x74\x74\x70\x73\x3a\x2f\x2f\x67\x69\x74\x6c\x61\x62\
\x2e\x70\x73\x69\x2e\x63\x68\x2f\x70\x72\x6f\x73\x63\x61\x6e\x5f\
\x61\x70\x70\x73\x34\x6f\x70\x73\x2f\x48\x55\x53\x48\x3c\x2f\x73\
\x70\x61\x6e\x3e\x0a\x20\x20\x20\x20\x3c\x68\x34\x20\x73\x74\x79\
\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\
\x6c\x75\x65\x3b\x22\x3e\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x52\x6f\
\x6f\x6d\x3c\x2f\x68\x34\x3e\x0a\x20\x20\x20\x20\x3c\x73\x70\x61\
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\
\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\
\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\
\x2f\x68\x75\x73\x68\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x0a\
\x20\x20\x20\x20\x3c\x68\x34\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x6c\x69\x67\x68\x74\x62\x6c\x75\x65\x3b\x22\
\x3e\x42\x65\x61\x6d\x6c\x69\x6e\x65\x73\x3c\x2f\x68\x34\x3e\x0a\
\x20\x20\x20\x20\x47\x31\x3a\x20\x20\x3c\x73\x70\x61\x6e\x20\x73\
\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\
\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\
\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\
\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\x75\
\x73\x68\x5f\x67\x31\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\
\x62\x72\x3e\x0a\x20\x20\x20\x20\x47\x32\x3a\x20\x20\x3c\x73\x70\
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\
\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\
\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\
\x74\x2f\x68\x75\x73\x68\x5f\x67\x32\x2e\x73\x68\x3c\x2f\x73\x70\
\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x4f\x32\x3a\x20\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\
\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\
\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\
\x61\x74\x65\x73\x74\x2f\x68\x75\x73\x68\x5f\x6f\x32\x2e\x73\x68\
\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\
\x50\x49\x46\x3a\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x61\x79\x3b\x22\x3e\
\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\x64\x2f\x61\x70\x70\
\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\x75\x73\x68\x2f\x68\
\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\x75\x73\x68\x5f\x70\
\x69\x66\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x20\x20\x47\x33\x3a\x20\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x20\x2f\x70\x72\x6f\x73\x63\x61\x6e\x2f\x62\
\x64\x2f\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x73\x2f\x68\
\x75\x73\x68\x2f\x68\x6c\x61\x2f\x6c\x61\x74\x65\x73\x74\x2f\x68\
\x75\x73\x68\x5f\x67\x33\x2e\x73\x68\x3c\x2f\x73\x70\x61\x6e\x3e\
\x3c\x62\x72\x3e\x0a\x20\x20\x20\x20\x3c\x2f\x6c\x69\x3e\x0a\x3c\
\x2f\x75\x6c\x3e\x0a\x20\x20\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x47\
\x55\x49\x2c\x20\x43\x6f\x6e\x74\x72\x6f\x6c\x20\x54\x61\x62\x3c\
\x2f\x68\x32\x3e\x0a\x20\x20\x4d\x61\x69\x6e\x20\x70\x61\x6e\x65\
\x6c\x20\x66\x6f\x72\x20\x75\x73\x65\x20\x62\x79\x20\x6f\x70\x65\
\x72\x61\x74\x6f\x72\x73\x20\x74\x6f\x20\x70\x6c\x61\x63\x65\x20\
\x74\x68\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x69\
\x6e\x74\x6f\x20\x74\x68\x65\x69\x72\x20\x73\x74\x61\x6e\x64\x62\
\x79\x20\x73\x74\x61\x74\x65\x20\x61\x6e\x64\x20\x74\x6f\x20\x72\
\x65\x73\x74\x6f\x72\x65\x20\x74\x68\x65\x6d\x20\x74\x6f\x20\x74\
\x68\x65\x69\x72\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\x20\x6f\x70\x65\
\x72\x61\x74\x69\x6e\x67\x20\x76\x61\x6c\x75\x65\x73\x2e\x0a\x20\
\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\
\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4f\x70\x65\x72\
\x61\x74\x6f\x72\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\
\x20\x20\x52\x61\x6d\x70\x20\x44\x65\x6c\x61\x79\x3a\x20\x43\x61\
\x6e\x20\x74\x61\x6b\x65\x20\x6f\x6e\x20\x76\x61\x6c\x75\x65\x73\
\x20\x66\x72\x6f\x6d\x20\x30\x2e\x30\x73\x20\x74\x6f\x20\x30\x2e\
\x32\x73\x2e\x20\x3c\x62\x72\x3e\x0a\x20\x20\x44\x65\x66\x69\x6e\
\x65\x73\x20\x74\x68\x65\x20\x64\x65\x6c\x61\x79\x20\x62\x65\x74\
\x77\x65\x65\x6e\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x69\x6e\x64\
\x69\x76\x69\x64\x75\x61\x6c\x20\x71\x75\x61\x64\x72\x75\x70\x6c\
\x65\x73\x20\x77\x68\x65\x6e\x20\x69\x6e\x69\x74\x69\x61\x74\x69\
\x6e\x67\x20\x73\x74\x61\x6e\x64\x62\x79\x2f\x72\x65\x73\x74\x6f\
\x72\x65\x2e\x0a\x20\x20\x41\x20\x76\x61\x6c\x75\x65\x20\x6f\x66\
\x20\x30\x2e\x30\x73\x20\x6d\x65\x61\x6e\x73\x20\x74\x68\x61\x74\
\x20\x74\x68\x65\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x20\x63\
\x75\x72\x72\x65\x6e\x74\x73\x20\x61\x72\x65\x20\x73\x65\x74\x20\
\x73\x69\x6d\x75\x6c\x74\x61\x6e\x65\x6f\x75\x73\x6c\x79\x2e\x0a\
\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x45\x78\x70\
\x65\x72\x74\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\
\x20\x53\x65\x6c\x65\x63\x74\x69\x6e\x67\x20\x74\x68\x65\x20\x44\
\x72\x79\x20\x52\x75\x6e\x20\x6f\x70\x74\x69\x6f\x6e\x20\x64\x69\
\x73\x61\x62\x6c\x65\x73\x20\x73\x65\x74\x74\x69\x6e\x67\x20\x76\
\x61\x6c\x75\x65\x73\x20\x74\x6f\x20\x65\x70\x69\x63\x73\x20\x70\
\x72\x6f\x63\x65\x73\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\
\x2e\x20\x55\x73\x65\x64\x20\x66\x6f\x72\x20\x74\x65\x73\x74\x69\
\x6e\x67\x2e\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\
\x3e\x53\x61\x76\x69\x6e\x67\x20\x4f\x76\x65\x72\x76\x69\x65\x77\
\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\
\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x6f\x66\x20\x70\x61\x72\
\x61\x6d\x65\x74\x65\x72\x73\x20\x66\x6f\x72\x20\x61\x20\x67\x69\
\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x72\x65\x6c\x61\
\x74\x65\x64\x20\x74\x6f\x20\x70\x6f\x77\x65\x72\x20\x73\x61\x76\
\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x2e\x20\
\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x74\x61\x62\x6c\x65\x3e\x0a\x20\
\x20\x20\x20\x3c\x74\x72\x3e\x20\x3c\x74\x64\x20\x63\x6f\x6c\x73\
\x70\x61\x6e\x3d\x33\x3e\x20\x54\x61\x62\x6c\x65\x20\x64\x65\x73\
\x63\x72\x69\x70\x74\x69\x6f\x6e\x3c\x2f\x74\x64\x3e\x20\x3c\x2f\
\x74\x72\x3e\x20\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x49\x6e\x69\x74\x69\x61\x6c\x20\x50\x6f\x77\x65\x72\x20\x28\
\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\
\x65\x20\x6e\x6f\x6d\x69\x6e\x61\x6c\x20\x73\x75\x6d\x6d\x65\x64\
\x20\x70\x6f\x77\x65\x72\x20\x77\x68\x65\x6e\x20\x71\x75\x61\x64\
\x72\x75\x70\x6c\x65\x73\x20\x61\x72\x65\x20\x69\x6e\x20\x74\x68\
\x65\x20\x75\x73\x75\x61\x6c\x20\x70\x6f\x77\x65\x72\x65\x64\x2d\
\x6f\x6e\x20\x73\x74\x61\x74\x65\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\
\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\
\x50\x6f\x77\x65\x72\x20\x28\x6b\x77\x29\x3a\x3c\x2f\x74\x64\x3e\
\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x73\x75\x6d\x6d\x65\x64\x20\
\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x2c\x3c\x2f\
\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\
\x3e\x3c\x74\x64\x3e\x53\x61\x76\x69\x6e\x67\x20\x28\x4d\x57\x68\
\x29\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\
\x72\x75\x6e\x6e\x69\x6e\x67\x20\x70\x6f\x77\x65\x72\x20\x69\x6e\
\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\x61\x76\
\x69\x6e\x67\x20\x70\x65\x72\x69\x6f\x64\x2e\x3c\x2f\x74\x64\x3e\
\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\
\x64\x3e\x54\x69\x6d\x65\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\
\x20\x4d\x6f\x64\x65\x3a\x20\x26\x6e\x62\x73\x70\x3b\x3c\x2f\x74\
\x64\x3e\x20\x3c\x74\x64\x3e\x54\x69\x6d\x65\x20\x65\x6c\x61\x70\
\x73\x65\x64\x20\x69\x6e\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x73\
\x61\x76\x69\x6e\x67\x20\x70\x65\x72\x69\x6f\x64\x20\x28\x64\x61\
\x79\x73\x20\x68\x6f\x75\x72\x73\x3a\x6d\x69\x6e\x75\x74\x65\x73\
\x3a\x73\x65\x63\x6f\x6e\x64\x73\x29\x2e\x3c\x2f\x74\x64\x3e\x3c\
\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x54\x6f\x74\x20\x53\x61\x76\x65\x64\x20\x28\x4d\x57\x68\x29\
\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x54\x68\x65\x20\x61\
\x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x64\x20\x70\x6f\x77\x65\x72\
\x20\x73\x61\x76\x65\x64\x20\x73\x6f\x20\x66\x61\x72\x20\x69\x6e\
\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\x79\x65\
\x61\x72\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\
\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x20\x20\x3c\x68\x33\x20\x73\
\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\
\x38\x65\x65\x3b\x22\x3e\x4d\x61\x67\x6e\x65\x74\x20\x54\x61\x62\
\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x54\x61\
\x62\x6c\x65\x20\x6f\x66\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x61\
\x6e\x64\x20\x70\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\
\x66\x6f\x72\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x77\
\x69\x74\x68\x69\x6e\x20\x65\x61\x63\x68\x20\x73\x65\x63\x74\x69\
\x6f\x6e\x3a\x20\x47\x31\x2c\x20\x53\x48\x2c\x20\x47\x32\x2c\x20\
\x4f\x32\x2c\x20\x50\x49\x46\x2c\x20\x47\x33\x2e\x0a\x20\x20\x28\
\x53\x65\x63\x74\x69\x6f\x6e\x20\x42\x31\x42\x32\x20\x68\x61\x73\
\x20\x6f\x6e\x6c\x79\x20\x72\x65\x61\x64\x62\x61\x63\x6b\x20\x63\
\x61\x70\x61\x62\x69\x6c\x69\x74\x69\x65\x73\x29\x2e\x3c\x62\x72\
\x3e\x0a\x20\x20\x51\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x6d\
\x61\x79\x20\x62\x65\x20\x73\x65\x74\x20\x74\x6f\x20\x74\x68\x65\
\x69\x72\x20\x73\x74\x61\x6e\x64\x62\x79\x20\x76\x61\x6c\x75\x65\
\x73\x20\x6f\x72\x20\x72\x65\x73\x74\x6f\x72\x65\x64\x20\x74\x6f\
\x20\x74\x68\x65\x69\x72\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x76\
\x61\x6c\x75\x65\x73\x2e\x0a\x20\x20\x3c\x65\x6d\x3e\x54\x68\x65\
\x73\x65\x20\x61\x63\x74\x69\x6f\x6e\x20\x62\x75\x74\x74\x6f\x6e\
\x73\x20\x61\x72\x65\x20\x6f\x6e\x6c\x79\x20\x65\x6e\x61\x62\x6c\
\x65\x64\x20\x69\x66\x20\x63\x65\x72\x74\x61\x6e\x20\x63\x6f\x6e\
\x64\x69\x74\x69\x6f\x6e\x73\x20\x61\x72\x65\x20\x6d\x65\x74\x2c\
\x20\x69\x2e\x65\x2c\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x73\
\x70\x6f\x6e\x64\x69\x6e\x67\x0a\x20\x20\x62\x65\x61\x6d\x20\x64\
\x69\x73\x72\x75\x70\x74\x65\x72\x20\x69\x73\x20\x63\x6c\x6f\x73\
\x65\x64\x2c\x20\x22\x47\x65\x73\x63\x68\x6c\x6f\x73\x73\x65\x6e\
\x22\x20\x61\x6e\x64\x20\x74\x68\x65\x20\x63\x6f\x72\x72\x65\x73\
\x70\x6f\x6e\x64\x69\x6e\x67\x20\x61\x63\x63\x65\x73\x73\x20\x77\
\x72\x69\x74\x65\x73\x20\x61\x72\x65\x20\x67\x72\x61\x6e\x74\x65\
\x64\x20\x61\x73\x0a\x20\x20\x63\x6f\x6e\x74\x72\x6f\x6c\x6c\x65\
\x64\x20\x62\x79\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\
\x67\x6c\x6f\x62\x61\x6c\x20\x4d\x61\x73\x74\x65\x72\x73\x68\x69\
\x70\x20\x6f\x72\x20\x74\x68\x65\x20\x72\x65\x6c\x65\x76\x61\x6e\
\x74\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x53\x75\x62\x6d\x61\x73\
\x74\x65\x72\x73\x68\x69\x70\x3c\x2f\x65\x6d\x3e\x3c\x62\x72\x3e\
\x0a\x20\x20\x42\x65\x73\x74\x20\x70\x72\x61\x63\x74\x69\x63\x65\
\x20\x64\x69\x63\x74\x61\x74\x65\x73\x20\x74\x68\x61\x74\x20\x22\
\x55\x70\x64\x61\x74\x65\x22\x20\x62\x65\x20\x70\x72\x65\x73\x73\
\x65\x64\x20\x62\x65\x66\x6f\x72\x65\x20\x22\x53\x74\x61\x6e\x64\
\x62\x79\x22\x20\x69\x73\x20\x69\x6e\x69\x74\x69\x61\x74\x65\x64\
\x2e\x20\x54\x68\x69\x73\x20\x75\x70\x64\x61\x74\x65\x73\x20\x74\
\x68\x65\x20\x6d\x61\x67\x6e\x65\x74\x20\x63\x75\x72\x72\x65\x6e\
\x74\x20\x76\x61\x6c\x75\x65\x73\x20\x69\x6e\x20\x74\x68\x65\x20\
\x22\x49\x6e\x69\x74\x2e\x20\x56\x61\x6c\x75\x65\x22\x20\x63\x6f\
\x6c\x75\x6d\x6e\x2c\x20\x77\x68\x69\x63\x68\x20\x70\x72\x6f\x76\
\x69\x64\x65\x73\x20\x74\x68\x65\x20\x27\x73\x65\x74\x27\x20\x76\
\x61\x6c\x75\x65\x73\x20\x66\x6f\x72\x20\x61\x6e\x20\x65\x76\x65\
\x6e\x74\x75\x61\x6c\x20\x22\x52\x65\x73\x74\x6f\x72\x65\x22\x20\
\x61\x63\x74\x69\x6f\x6e\x2e\x20\x0a\x20\x20\x54\x68\x65\x20\x22\
\x49\x6e\x69\x74\x20\x56\x61\x6c\x75\x65\x22\x20\x6f\x66\x20\x74\
\x68\x65\x20\x50\x6f\x77\x65\x72\x20\x74\x61\x62\x6c\x65\x20\x69\
\x73\x20\x6c\x69\x6b\x65\x77\x69\x73\x65\x20\x75\x70\x64\x61\x74\
\x65\x64\x2e\x20\x54\x68\x65\x20\x75\x70\x64\x61\x74\x65\x64\x20\
\x73\x75\x6d\x20\x6f\x66\x20\x69\x6e\x69\x74\x69\x61\x6c\x20\x70\
\x6f\x77\x65\x72\x20\x76\x61\x6c\x75\x65\x73\x20\x69\x73\x20\x74\
\x68\x65\x6e\x20\x70\x72\x6f\x70\x61\x67\x61\x74\x65\x64\x20\x74\
\x6f\x20\x74\x68\x65\x20\x22\x69\x6e\x69\x74\x69\x61\x6c\x22\x20\
\x63\x6f\x6c\x75\x6d\x6e\x20\x69\x6e\x20\x74\x68\x65\x20\x22\x53\
\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\x65\x72\x76\x69\x65\x77\x22\
\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\x66\x6f\x72\x20\x75\
\x73\x65\x20\x69\x6e\x20\x74\x68\x65\x20\x65\x6e\x65\x72\x67\x79\
\x20\x73\x61\x76\x69\x6e\x67\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\
\x6e\x67\x2e\x20\x41\x6e\x20\x22\x55\x70\x64\x61\x74\x65\x22\x20\
\x69\x6e\x20\x65\x69\x74\x68\x65\x72\x20\x74\x68\x65\x20\x43\x75\
\x72\x72\x65\x6e\x74\x20\x6f\x72\x20\x50\x6f\x77\x65\x72\x20\x74\
\x61\x62\x6c\x65\x20\x77\x69\x6c\x6c\x20\x61\x75\x74\x6f\x6d\x61\
\x74\x69\x63\x61\x6c\x6c\x79\x20\x75\x70\x64\x61\x74\x65\x20\x74\
\x68\x65\x20\x6f\x74\x68\x65\x72\x2e\x20\x4e\x6f\x74\x65\x20\x74\
\x68\x61\x74\x20\x74\x68\x65\x0a\x20\x20\x22\x55\x70\x64\x61\x74\
\x65\x22\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x73\x20\x64\x69\x73\
\x65\x6e\x61\x62\x6c\x65\x64\x20\x77\x68\x65\x6e\x20\x74\x68\x65\
\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\x69\x6e\x20\x22\
\x53\x74\x61\x6e\x64\x62\x79\x22\x20\x6d\x6f\x64\x65\x20\x61\x6e\
\x64\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\x20\
\x69\x73\x20\x61\x63\x74\x69\x76\x61\x74\x65\x64\x2e\x0a\x20\x20\
\x3c\x62\x72\x3e\x0a\x20\x20\x3c\x65\x6d\x3e\x49\x66\x20\x66\x6f\
\x72\x20\x73\x6f\x6d\x65\x20\x68\x61\x70\x68\x61\x7a\x61\x72\x64\
\x20\x72\x65\x61\x73\x6f\x6e\x20\x74\x68\x65\x20\x49\x6e\x69\x74\
\x69\x61\x6c\x20\x50\x6f\x77\x65\x72\x20\x56\x61\x6c\x75\x65\x20\
\x61\x70\x70\x65\x61\x72\x69\x6e\x67\x20\x69\x6e\x20\x74\x68\x65\
\x20\x22\x53\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\x65\x72\x76\x69\
\x65\x77\x22\x20\x0a\x20\x20\x20\x20\x69\x73\x20\x65\x76\x69\x64\
\x65\x6e\x74\x6c\x79\x20\x77\x72\x6f\x6e\x67\x20\x66\x6f\x72\x20\
\x61\x20\x67\x69\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\
\x64\x75\x72\x69\x6e\x67\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\
\x76\x69\x6e\x67\x20\x28\x61\x6e\x64\x20\x66\x6f\x72\x20\x77\x68\
\x69\x63\x68\x20\x74\x68\x65\x20\x22\x55\x70\x64\x61\x74\x65\x22\
\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x73\x20\x64\x69\x73\x65\x6e\
\x61\x62\x6c\x65\x64\x29\x2c\x20\x65\x2e\x67\x2e\x2c\x20\x69\x74\
\x20\x69\x73\x20\x6c\x65\x73\x73\x20\x74\x68\x61\x6e\x20\x74\x68\
\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x70\x6f\x77\x65\x72\x20\
\x75\x73\x61\x67\x65\x20\x61\x73\x20\x73\x68\x6f\x77\x6e\x20\x69\
\x6e\x20\x74\x68\x65\x20\x22\x50\x6f\x77\x65\x72\x22\x20\x63\x6f\
\x6c\x75\x6d\x6e\x2c\x20\x69\x74\x20\x63\x61\x6e\x20\x62\x65\x20\
\x6f\x76\x65\x77\x72\x69\x74\x74\x65\x6e\x20\x74\x6f\x20\x69\x74\
\x73\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x76\x61\x6c\x75\x65\x20\
\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x22\x4c\x61\x73\x74\x20\x50\
\x6f\x77\x65\x72\x22\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\
\x77\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x22\x49\x4f\x43\x22\
\x20\x74\x61\x62\x20\x77\x69\x64\x67\x65\x74\x2e\x3c\x2f\x65\x6d\
\x3e\x3c\x62\x72\x3e\x0a\x20\x20\x54\x68\x65\x20\x74\x68\x72\x65\
\x65\x20\x6c\x69\x67\x68\x74\x20\x62\x6c\x75\x65\x20\x62\x61\x63\
\x6b\x67\x72\x6f\x75\x6e\x64\x20\x63\x6f\x6c\x6f\x75\x72\x65\x64\
\x20\x64\x65\x76\x69\x63\x65\x20\x65\x6e\x74\x72\x69\x65\x73\x20\
\x69\x6e\x20\x74\x68\x65\x20\x6d\x61\x67\x6e\x65\x74\x20\x74\x61\
\x62\x6c\x65\x20\x69\x6e\x64\x69\x63\x61\x74\x65\x20\x74\x68\x65\
\x20\x71\x75\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x74\x68\x61\x74\
\x20\x61\x72\x65\x20\x6d\x6f\x6e\x69\x74\x6f\x72\x65\x64\x20\x77\
\x69\x74\x68\x69\x6e\x20\x74\x68\x65\x20\x49\x4f\x43\x20\x74\x6f\
\x20\x64\x65\x74\x65\x72\x6d\x69\x6e\x65\x20\x74\x68\x65\x20\x22\
\x53\x74\x61\x6e\x64\x62\x79\x2f\x52\x65\x73\x74\x6f\x72\x65\x22\
\x20\x73\x74\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\x20\x73\x65\
\x63\x74\x69\x6f\x6e\x2e\x20\x20\x0a\x0a\x20\x20\x3c\x68\x33\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\
\x36\x38\x65\x65\x3b\x22\x3e\x4d\x61\x73\x74\x65\x72\x73\x68\x69\
\x70\x20\x54\x61\x62\x6c\x65\x3c\x2f\x68\x33\x3e\x0a\x44\x69\x73\
\x70\x6c\x61\x79\x73\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\
\x74\x20\x61\x63\x63\x65\x73\x73\x20\x72\x69\x67\x68\x74\x73\x20\
\x66\x6f\x72\x20\x74\x68\x65\x20\x76\x61\x72\x69\x6f\x75\x73\x20\
\x73\x65\x63\x74\x69\x6f\x6e\x73\x2e\x3c\x62\x72\x3e\x0a\x50\x6f\
\x73\x73\x69\x62\x6c\x65\x20\x65\x6e\x75\x6d\x65\x72\x61\x74\x65\
\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x61\x72\x65\x3a\x20\x55\x4e\
\x44\x45\x46\x20\x28\x30\x29\x2c\x20\x46\x52\x45\x49\x20\x28\x31\
\x29\x2c\x20\x53\x55\x42\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x28\x32\x29\x2c\x20\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x28\x33\x29\x2c\x20\x46\x45\x48\x4c\x45\x52\x28\x31\x30\x29\
\x2e\x0a\x20\x20\x53\x55\x42\x4d\x41\x53\x54\x45\x52\x53\x48\x49\
\x50\x20\x61\x6e\x64\x20\x4d\x41\x53\x54\x45\x52\x53\x48\x49\x50\
\x20\x6d\x6f\x64\x65\x20\x67\x72\x61\x6e\x74\x73\x20\x63\x6f\x6e\
\x74\x72\x6f\x6c\x20\x74\x6f\x20\x74\x68\x65\x20\x62\x65\x61\x6d\
\x6c\x69\x6e\x65\x20\x6d\x61\x67\x6e\x65\x74\x73\x20\x61\x6e\x64\
\x20\x74\x68\x65\x20\x65\x6e\x74\x69\x72\x65\x20\x61\x63\x63\x65\
\x6c\x65\x72\x61\x74\x6f\x72\x20\x63\x6f\x6d\x70\x6c\x65\x78\x20\
\x6d\x61\x67\x6e\x65\x74\x73\x2c\x20\x72\x65\x73\x70\x65\x63\x74\
\x69\x76\x65\x6c\x79\x2e\x20\x54\x68\x65\x20\x65\x6e\x61\x62\x6c\
\x69\x6e\x67\x2f\x64\x69\x73\x61\x62\x6c\x69\x6e\x67\x20\x6f\x66\
\x20\x74\x68\x65\x20\x22\x52\x65\x73\x74\x6f\x72\x65\x22\x20\x61\
\x6e\x64\x20\x22\x53\x74\x61\x6e\x64\x62\x79\x22\x20\x62\x75\x74\
\x74\x6f\x6e\x73\x20\x69\x6e\x20\x74\x68\x65\x20\x6d\x61\x67\x6e\
\x65\x74\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\x66\x6f\x6c\
\x6c\x6f\x77\x20\x73\x75\x69\x74\x65\x2e\x0a\x20\x20\x0a\x20\x20\
\x3c\x68\x32\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\
\x3a\x62\x6c\x75\x65\x3b\x22\x3e\x47\x55\x49\x2c\x20\x49\x4f\x43\
\x20\x54\x61\x62\x20\x3c\x2f\x68\x32\x3e\x0a\x20\x20\x54\x68\x65\
\x20\x70\x61\x6e\x65\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x73\x20\
\x74\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x74\x68\
\x65\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x20\
\x28\x53\x4d\x29\x20\x6f\x70\x65\x72\x61\x74\x69\x6e\x67\x20\x77\
\x69\x74\x68\x20\x74\x68\x65\x20\x49\x4f\x43\x2c\x20\x61\x6e\x64\
\x20\x66\x75\x72\x74\x68\x65\x72\x20\x61\x6c\x6c\x6f\x77\x73\x20\
\x63\x65\x72\x74\x61\x69\x6e\x20\x69\x6e\x74\x65\x72\x61\x63\x74\
\x69\x6f\x6e\x73\x2e\x20\x54\x68\x65\x20\x53\x4d\x20\x69\x73\x20\
\x72\x65\x73\x70\x6f\x6e\x73\x69\x62\x6c\x65\x20\x66\x6f\x72\x20\
\x74\x68\x65\x20\x50\x6f\x77\x65\x72\x20\x53\x61\x76\x69\x6e\x67\
\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x2e\x20\x49\x74\x20\
\x69\x73\x20\x65\x73\x73\x65\x6e\x74\x69\x61\x6c\x6c\x79\x20\x64\
\x65\x63\x6f\x75\x70\x6c\x65\x64\x20\x66\x72\x6f\x6d\x20\x74\x68\
\x65\x20\x48\x4c\x41\x2e\x20\x53\x68\x6f\x75\x6c\x64\x20\x71\x75\
\x61\x64\x72\x75\x70\x6c\x65\x73\x20\x62\x65\x20\x73\x65\x74\x20\
\x66\x72\x6f\x6d\x20\x6f\x75\x74\x73\x69\x64\x65\x20\x74\x68\x65\
\x20\x48\x4c\x41\x2c\x20\x74\x68\x65\x20\x53\x4d\x20\x77\x69\x6c\
\x6c\x20\x63\x61\x70\x74\x75\x72\x65\x20\x74\x68\x65\x20\x63\x68\
\x61\x6e\x67\x65\x20\x61\x6e\x64\x20\x61\x63\x74\x20\x61\x63\x63\
\x6f\x72\x64\x69\x6e\x67\x6c\x79\x2e\x20\x20\x0a\x20\x20\x0a\x20\
\x20\x20\x20\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\
\x3e\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x3c\x2f\
\x68\x33\x3e\x0a\x20\x20\x44\x69\x73\x70\x6c\x61\x79\x73\x20\x74\
\x68\x65\x20\x73\x74\x61\x74\x75\x73\x20\x6f\x66\x20\x74\x68\x65\
\x20\x73\x74\x61\x74\x65\x20\x6d\x61\x63\x68\x69\x6e\x65\x20\x73\
\x65\x71\x75\x65\x6e\x63\x65\x72\x2e\x0a\x20\x20\x3c\x74\x61\x62\
\x6c\x65\x3e\x0a\x20\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\
\x3e\x52\x65\x73\x65\x74\x3a\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\
\x3e\x20\x53\x45\x51\x2d\x4f\x4e\x4f\x46\x46\x20\x26\x6e\x62\x73\
\x70\x3b\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x52\x65\x73\x74\x61\
\x72\x74\x73\x20\x74\x68\x65\x20\x53\x4d\x2e\x20\x3c\x65\x6d\x3e\
\x50\x72\x65\x73\x73\x20\x61\x6e\x64\x20\x68\x6f\x6c\x64\x20\x62\
\x75\x74\x74\x6f\x6e\x20\x66\x6f\x72\x20\x61\x74\x20\x6c\x65\x61\
\x73\x74\x20\x32\x20\x73\x65\x63\x6f\x6e\x64\x73\x20\x74\x6f\x20\
\x65\x6e\x73\x75\x72\x65\x20\x74\x68\x65\x20\x69\x6e\x69\x74\x69\
\x61\x6c\x20\x22\x4f\x46\x46\x22\x20\x69\x6e\x73\x74\x72\x75\x63\
\x74\x69\x6f\x6e\x20\x69\x73\x20\x63\x61\x70\x74\x75\x72\x65\x64\
\x20\x62\x79\x20\x74\x68\x65\x20\x53\x4d\x2e\x3c\x2f\x65\x6d\x3e\
\x20\x49\x66\x20\x74\x68\x65\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\
\x69\x73\x20\x69\x6e\x20\x45\x6e\x65\x72\x67\x79\x20\x53\x61\x76\
\x69\x6e\x67\x20\x6d\x6f\x64\x65\x2c\x20\x74\x68\x69\x73\x20\x61\
\x63\x74\x69\x6f\x6e\x20\x74\x72\x61\x6e\x73\x66\x65\x72\x73\x20\
\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x6c\x79\x20\x73\x61\
\x76\x65\x64\x20\x61\x6d\x6f\x75\x6e\x74\x20\x66\x72\x6f\x6d\x20\
\x22\x53\x61\x76\x69\x6e\x67\x22\x20\x74\x6f\x20\x22\x54\x6f\x74\
\x20\x53\x61\x76\x69\x6e\x67\x22\x2c\x20\x61\x6e\x64\x20\x72\x65\
\x73\x74\x61\x72\x74\x73\x20\x74\x68\x65\x20\x22\x54\x69\x6d\x65\
\x20\x69\x6e\x20\x53\x61\x76\x69\x6e\x67\x20\x4d\x6f\x64\x65\x22\
\x20\x66\x72\x6f\x6d\x20\x7a\x65\x72\x6f\x2e\x20\x3c\x2f\x74\x64\
\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\
\x74\x64\x3e\x53\x4d\x3a\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x53\
\x45\x51\x2d\x4f\x4e\x4f\x46\x46\x20\x3c\x2f\x74\x64\x3e\x20\x3c\
\x74\x64\x3e\x20\x20\x53\x74\x61\x74\x75\x73\x20\x28\x22\x4f\x46\
\x46\x22\x2c\x20\x22\x4f\x4e\x22\x29\x20\x6f\x66\x20\x74\x68\x65\
\x20\x53\x74\x61\x74\x65\x20\x4d\x61\x63\x68\x69\x6e\x65\x2e\x20\
\x53\x68\x6f\x75\x6c\x64\x20\x61\x6c\x77\x61\x79\x73\x20\x62\x65\
\x20\x22\x4f\x4e\x22\x2e\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\
\x0a\x3c\x74\x72\x3e\x3c\x74\x64\x3e\x53\x65\x71\x75\x65\x6e\x63\
\x65\x72\x20\x53\x74\x61\x74\x65\x20\x26\x6e\x62\x73\x70\x3b\x3c\
\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x45\x51\x2d\x53\x54\x41\
\x54\x45\x20\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x65\x65\
\x20\x62\x65\x6c\x6f\x77\x20\x66\x6f\x72\x20\x74\x68\x65\x20\x65\
\x6e\x75\x6d\x65\x72\x61\x74\x65\x64\x20\x76\x61\x6c\x75\x65\x73\
\x2e\x20\x57\x68\x65\x6e\x20\x69\x6e\x20\x65\x6e\x65\x72\x67\x79\
\x20\x73\x61\x76\x69\x6e\x67\x20\x6d\x6f\x64\x65\x2c\x20\x74\x68\
\x69\x73\x20\x70\x61\x72\x61\x6d\x65\x74\x65\x72\x20\x77\x69\x6c\
\x6c\x20\x6f\x73\x63\x69\x6c\x6c\x61\x74\x65\x20\x62\x65\x74\x77\
\x65\x65\x6e\x20\x74\x68\x65\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x22\x52\x45\x41\x44\x59\x5f\x46\x4f\x52\x5f\x45\
\x56\x45\x4e\x54\x22\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x61\x6e\x64\
\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\x3e\x22\x41\x4c\
\x4c\x4f\x57\x5f\x45\x4e\x45\x52\x47\x59\x5f\x53\x41\x56\x49\x4e\
\x47\x22\x3c\x2f\x73\x70\x61\x6e\x3e\x20\x73\x74\x61\x74\x65\x73\
\x2e\x20\x4f\x74\x68\x65\x72\x77\x69\x73\x65\x20\x69\x74\x20\x77\
\x69\x6c\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x6f\x6e\x65\x20\
\x6f\x66\x20\x61\x20\x6e\x75\x6d\x62\x65\x72\x20\x63\x6f\x6e\x64\
\x69\x74\x69\x6f\x6e\x73\x20\x66\x6f\x72\x20\x77\x68\x69\x63\x68\
\x20\x53\x74\x61\x6e\x64\x62\x79\x20\x69\x73\x20\x6e\x6f\x74\x20\
\x65\x6e\x61\x62\x6c\x65\x64\x2e\x20\x44\x75\x72\x69\x6e\x67\x20\
\x6e\x6f\x72\x6d\x61\x6c\x20\x6f\x70\x65\x72\x61\x74\x69\x6f\x6e\
\x20\x77\x68\x65\x72\x65\x20\x6d\x61\x67\x6e\x65\x74\x73\x20\x61\
\x72\x65\x20\x61\x74\x20\x74\x68\x65\x69\x72\x20\x6e\x6f\x6d\x69\
\x6e\x61\x6c\x20\x76\x61\x6c\x75\x65\x73\x2c\x20\x69\x2e\x65\x2e\
\x2c\x20\x61\x62\x6f\x76\x65\x20\x74\x68\x65\x69\x72\x20\x73\x74\
\x61\x6e\x64\x62\x79\x20\x72\x65\x66\x65\x72\x65\x6e\x63\x65\x20\
\x76\x61\x6c\x75\x65\x73\x2c\x20\x74\x68\x69\x73\x20\x77\x69\x6c\
\x6c\x20\x64\x69\x73\x70\x6c\x61\x79\x20\x22\x4d\x41\x47\x4e\x45\
\x54\x53\x5f\x41\x42\x4f\x56\x45\x5f\x52\x45\x46\x22\x2e\x20\x20\
\x3c\x2f\x74\x64\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x3c\x74\x72\
\x3e\x3c\x74\x64\x3e\x4f\x4e\x20\x6f\x72\x20\x53\x74\x61\x6e\x64\
\x62\x79\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x53\x54\x41\x54\
\x45\x3c\x2f\x74\x64\x3e\x20\x3c\x74\x64\x3e\x44\x69\x73\x70\x6c\
\x61\x79\x73\x20\x22\x53\x54\x41\x4e\x44\x42\x59\x22\x20\x77\x68\
\x65\x6e\x20\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\
\x20\x61\x63\x63\x6f\x75\x6e\x74\x69\x6e\x67\x20\x69\x73\x20\x65\
\x6e\x61\x62\x6c\x65\x64\x2c\x20\x65\x6c\x73\x65\x20\x4f\x4e\x20\
\x28\x65\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x69\x6e\x67\x20\x63\
\x6f\x6e\x64\x69\x74\x69\x6f\x6e\x73\x20\x68\x61\x76\x65\x20\x6e\
\x6f\x74\x20\x62\x65\x65\x6e\x20\x6d\x65\x74\x29\x3c\x2f\x74\x64\
\x3e\x3c\x2f\x74\x72\x3e\x0a\x20\x20\x3c\x2f\x74\x61\x62\x6c\x65\
\x3e\x0a\x3c\x62\x72\x3e\x0a\x45\x6e\x75\x6d\x65\x72\x61\x74\x65\
\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x66\x6f\x72\x20\x53\x45\x51\
\x2d\x53\x54\x41\x54\x45\x20\x28\x6e\x6f\x74\x20\x61\x6c\x6c\x20\
\x73\x74\x61\x74\x65\x73\x20\x6d\x61\x79\x20\x68\x61\x76\x65\x20\
\x6e\x65\x63\x65\x73\x73\x61\x72\x69\x6c\x79\x20\x62\x65\x65\x6e\
\x20\x69\x6d\x70\x6c\x65\x6d\x65\x6e\x74\x65\x64\x29\x3a\x3c\x62\
\x72\x3e\x0a\x27\x46\x45\x45\x44\x42\x41\x43\x4b\x5f\x4f\x46\x46\
\x27\x2c\x20\x27\x46\x45\x45\x44\x42\x41\x43\x4b\x5f\x4f\x4e\x27\
\x2c\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\x6e\x3b\x22\x3e\x27\x52\
\x45\x41\x44\x59\x5f\x46\x4f\x52\x5f\x45\x56\x45\x4e\x54\x27\x3c\
\x2f\x73\x70\x61\x6e\x3e\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x53\x48\
\x49\x46\x54\x5f\x54\x59\x50\x45\x5f\x4f\x4b\x27\x2c\x20\x27\x53\
\x48\x49\x46\x54\x5f\x54\x59\x50\x45\x5f\x4e\x4f\x54\x5f\x41\x50\
\x50\x4c\x49\x43\x41\x42\x4c\x45\x27\x2c\x3c\x62\x72\x3e\x0a\x27\
\x49\x5f\x42\x45\x4c\x4f\x57\x5f\x54\x48\x52\x45\x53\x48\x4f\x4c\
\x44\x27\x2c\x20\x27\x49\x5f\x41\x42\x4f\x56\x45\x5f\x54\x48\x52\
\x45\x53\x48\x4f\x4c\x44\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x4d\
\x41\x47\x4e\x45\x54\x53\x5f\x42\x45\x4c\x4f\x57\x5f\x52\x45\x46\
\x27\x2c\x20\x27\x4d\x41\x47\x4e\x45\x54\x53\x5f\x41\x42\x4f\x56\
\x45\x5f\x52\x45\x46\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x27\x53\x4f\
\x55\x52\x43\x45\x49\x5f\x42\x45\x4c\x4f\x57\x5f\x54\x48\x52\x45\
\x53\x48\x4f\x4c\x44\x27\x2c\x20\x27\x53\x4f\x55\x52\x43\x45\x49\
\x5f\x41\x42\x4f\x56\x45\x5f\x54\x48\x52\x45\x53\x48\x4f\x4c\x44\
\x27\x2c\x20\x20\x3c\x62\x72\x3e\x0a\x27\x42\x45\x41\x4d\x5f\x50\
\x41\x54\x48\x5f\x4f\x50\x45\x4e\x27\x2c\x20\x27\x42\x45\x41\x4d\
\x5f\x50\x41\x54\x48\x5f\x43\x4c\x4f\x53\x45\x44\x27\x2c\x20\x3c\
\x62\x72\x3e\x0a\x27\x43\x48\x41\x4e\x4e\x45\x4c\x53\x5f\x44\x49\
\x53\x43\x4f\x4e\x4e\x45\x43\x54\x45\x44\x27\x2c\x20\x27\x43\x48\
\x41\x4e\x4e\x45\x4c\x53\x5f\x43\x4f\x4e\x4e\x45\x43\x54\x45\x44\
\x27\x2c\x20\x3c\x62\x72\x3e\x0a\x3c\x73\x70\x61\x6e\x20\x73\x74\
\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\x65\x65\
\x6e\x3b\x22\x3e\x27\x41\x4c\x4c\x4f\x57\x5f\x45\x4e\x45\x52\x47\
\x59\x5f\x53\x41\x56\x49\x4e\x47\x27\x3c\x2f\x73\x70\x61\x6e\x3e\
\x0a\x20\x20\x0a\x0a\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\
\x22\x3e\x48\x75\x73\x68\x20\x41\x63\x63\x6f\x75\x6e\x74\x69\x6e\
\x67\x3c\x2f\x68\x33\x3e\x0a\x20\x20\x54\x68\x65\x20\x61\x63\x63\
\x6f\x75\x6e\x74\x69\x6e\x67\x20\x6f\x66\x20\x74\x68\x65\x20\x65\
\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x65\x64\x20\x66\x6f\x72\x20\
\x61\x20\x67\x69\x76\x65\x6e\x20\x69\x73\x20\x79\x65\x61\x72\x20\
\x69\x73\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x63\x6f\x72\x64\x65\
\x64\x2e\x0a\x20\x20\x41\x74\x20\x74\x68\x65\x20\x65\x6e\x64\x20\
\x6f\x66\x20\x74\x68\x65\x20\x63\x61\x6c\x65\x6e\x64\x61\x72\x20\
\x79\x65\x61\x72\x2c\x20\x74\x68\x65\x20\x70\x72\x6f\x63\x65\x73\
\x73\x20\x76\x61\x72\x69\x61\x62\x6c\x65\x73\x20\x68\x6f\x6c\x64\
\x69\x6e\x67\x20\x74\x68\x65\x20\x70\x6f\x77\x65\x72\x0a\x20\x20\
\x73\x61\x76\x65\x64\x20\x76\x61\x6c\x75\x65\x73\x20\x61\x72\x65\
\x20\x74\x6f\x20\x62\x65\x20\x72\x65\x73\x65\x74\x20\x74\x6f\x20\
\x7a\x65\x72\x6f\x2e\x20\x54\x68\x69\x73\x20\x69\x73\x20\x61\x63\
\x63\x6f\x6d\x70\x6c\x69\x73\x68\x65\x64\x20\x74\x68\x72\x6f\x75\
\x67\x68\x20\x74\x68\x65\x20\x22\x52\x65\x73\x65\x74\x20\x41\x63\
\x63\x6f\x75\x6e\x74\x22\x20\x62\x75\x74\x74\x6f\x6e\x2e\x0a\x20\
\x20\x54\x68\x69\x73\x20\x61\x63\x74\x69\x6f\x6e\x20\x69\x73\x20\
\x70\x61\x73\x73\x77\x6f\x72\x64\x20\x70\x72\x6f\x74\x65\x63\x74\
\x65\x64\x20\x28\x48\x55\x53\x48\x21\x29\x20\x54\x68\x65\x20\x65\
\x6e\x65\x72\x67\x79\x20\x73\x61\x76\x65\x64\x20\x69\x73\x20\x61\
\x6c\x73\x6f\x20\x72\x65\x63\x6f\x72\x64\x65\x64\x20\x69\x6e\x20\
\x74\x68\x65\x20\x65\x6c\x6f\x67\x62\x6f\x6f\x6b\x2e\x20\x0a\x0a\
\x20\x20\x20\x3c\x68\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\
\x6c\x6f\x72\x3a\x23\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x4c\x61\
\x73\x74\x20\x50\x6f\x77\x65\x72\x3c\x2f\x68\x33\x3e\x0a\x20\x20\
\x20\x54\x68\x69\x73\x20\x73\x75\x62\x2d\x70\x61\x6e\x65\x6c\x20\
\x61\x6c\x6c\x6f\x77\x73\x20\x74\x68\x65\x20\x65\x78\x70\x65\x72\
\x74\x20\x75\x73\x65\x72\x20\x74\x6f\x20\x72\x65\x73\x65\x74\x20\
\x74\x68\x65\x20\x49\x6e\x69\x74\x69\x61\x6c\x20\x50\x6f\x77\x65\
\x72\x20\x69\x6e\x20\x22\x53\x61\x76\x69\x6e\x67\x73\x20\x4f\x76\
\x65\x72\x76\x69\x65\x77\x22\x20\x66\x6f\x72\x20\x61\x20\x67\x69\
\x76\x65\x6e\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x74\x6f\x20\x69\
\x74\x73\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x76\x61\x6c\x75\x65\
\x2c\x20\x73\x68\x6f\x75\x6c\x64\x20\x73\x75\x63\x68\x20\x61\x20\
\x6e\x65\x65\x64\x20\x65\x76\x65\x72\x20\x68\x61\x70\x68\x61\x7a\
\x61\x72\x64\x6c\x79\x20\x61\x72\x69\x73\x65\x20\x77\x68\x69\x6c\
\x65\x20\x74\x68\x65\x20\x73\x65\x63\x74\x69\x6f\x6e\x20\x69\x73\
\x20\x69\x6e\x20\x45\x6e\x65\x72\x67\x79\x20\x53\x61\x76\x69\x6e\
\x67\x20\x6d\x6f\x64\x65\x2c\x20\x61\x6e\x64\x20\x66\x6f\x72\x20\
\x77\x68\x69\x63\x68\x20\x74\x68\x65\x20\x22\x55\x70\x64\x61\x74\
\x65\x22\x20\x62\x75\x74\x74\x6f\x6e\x20\x69\x6e\x20\x74\x68\x65\
\x20\x4d\x61\x67\x6e\x65\x74\x20\x70\x61\x6e\x65\x6c\x20\x69\x73\
\x20\x64\x69\x73\x65\x6e\x61\x62\x6c\x65\x64\x2e\x0a\x0a\x3c\x68\
\x33\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x23\
\x37\x62\x36\x38\x65\x65\x3b\x22\x3e\x48\x55\x53\x48\x21\x20\x49\
\x6d\x61\x67\x65\x3c\x2f\x68\x33\x3e\x0a\x20\x3c\x74\x61\x62\x6c\
\x65\x3e\x0a\x20\x20\x20\x20\x20\x3c\x74\x72\x3e\x3c\x74\x64\x3e\
\x0a\x20\x20\x20\x3c\x69\x6d\x67\x20\x73\x72\x63\x3d\x22\x3a\x48\
\x75\x73\x68\x2e\x6a\x70\x67\x22\x20\x77\x69\x64\x74\x68\x3d\x39\
\x30\x20\x68\x65\x69\x67\x68\x74\x3d\x39\x30\x2f\x3e\x20\x26\x6e\
\x62\x73\x70\x3b\x20\x3c\x2f\x74\x64\x3e\x3c\x74\x64\x3e\x0a\x20\
\x20\x20\x49\x6e\x73\x70\x69\x72\x65\x64\x20\x62\x79\x20\x44\x61\
\x64\x61\x20\x41\x6e\x74\x65\x20\x50\x6f\x72\x74\x61\x73\x2c\x20\
\x61\x72\x67\x75\x61\x62\x6c\x79\x20\x53\x77\x69\x74\x7a\x65\x72\
\x6c\x61\x6e\x64\x27\x73\x20\x67\x72\x65\x61\x74\x65\x73\x74\x20\
\x50\x6f\x70\x2f\x52\x6f\x63\x6b\x20\x62\x61\x6e\x64\x21\x20\x47\
\x69\x76\x65\x20\x27\x65\x6d\x20\x61\x20\x6c\x69\x73\x74\x65\x6e\
\x2e\x0a\x20\x20\x20\x54\x68\x65\x69\x72\x20\x6d\x75\x73\x69\x63\
\x20\x61\x6e\x64\x20\x6c\x79\x72\x69\x63\x73\x20\x61\x72\x65\x20\
\x61\x77\x65\x73\x6f\x6d\x65\x21\x3c\x2f\x74\x64\x3e\x0a\x20\x20\
\x20\x3c\x2f\x74\x61\x62\x6c\x65\x3e\x0a\x3c\x70\x3e\x0a\x3c\x2f\
\x70\x3e\x0a\x20\x20\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\x68\
\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\xa7\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\x80\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
@@ -37,19 +626,6 @@ qt_resource_data = b"\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x32\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
\x22\x70\x61\x67\x65\x33\x2e\x68\x74\x6d\x6c\x22\x3e\x20\x4e\x65\
\x78\x74\x3c\x2f\x61\x3e\x3c\x2f\x70\x3e\x0a\x3c\x70\x3e\x3c\x62\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x00\xa7\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x57\x65\x62\x20\x48\x65\x6c\x70\x3c\x2f\x74\x69\x74\x6c\
\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\x64\x79\x3e\
\x0a\x0a\x3c\x70\x3e\x3c\x62\x3e\x50\x61\x67\x65\x20\x33\x20\x6f\
\x66\x20\x77\x65\x62\x20\x68\x65\x6c\x70\x3c\x2f\x62\x3e\x3c\x2f\
\x70\x3e\x0a\x3c\x70\x3e\x20\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\
@@ -71,63 +647,18 @@ qt_resource_data = b"\
\x3e\x65\x74\x63\x2e\x2e\x2e\x3c\x2f\x62\x3e\x20\x65\x74\x63\x2e\
\x2e\x2e\x3c\x2f\x70\x3e\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\x3c\x2f\
\x68\x74\x6d\x6c\x3e\x0a\
\x00\x00\x03\x29\
\x3c\
\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x74\x69\x74\x6c\
\x65\x3e\x48\x61\x6e\x64\x73\x6f\x6d\x65\x20\x50\x6f\x77\x65\x72\
\x20\x55\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x53\x61\x76\x69\x6e\
\x67\x20\x48\x69\x65\x72\x61\x72\x63\x68\x79\x20\x61\x74\x20\x50\
\x72\x6f\x73\x63\x61\x6e\x2c\x20\x48\x55\x53\x48\x21\x3c\x2f\x74\
\x69\x74\x6c\x65\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x0a\x3c\x62\x6f\
\x64\x79\x3e\x0a\x0a\x3c\x68\x35\x20\x20\x73\x74\x79\x6c\x65\x3d\
\x22\x63\x6f\x6c\x6f\x72\x3a\x67\x72\x61\x79\x3b\x22\x3e\x4a\x61\
\x6e\x75\x61\x72\x79\x20\x32\x30\x32\x34\x2c\x20\x4a\x61\x6e\x20\
\x43\x68\x72\x69\x6e\x3c\x2f\x68\x35\x3e\x0a\x3c\x68\x34\x3e\x20\
\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\
\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\x3c\x2f\x73\x70\x61\
\x6e\x3e\x61\x6e\x64\x73\x6f\x6d\x65\x20\x3c\x73\x70\x61\x6e\x20\
\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x67\x72\
\x61\x79\x3b\x22\x3e\x50\x6f\x77\x65\x72\x3c\x2f\x73\x70\x61\x6e\
\x3e\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\
\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x55\x3c\x2f\x73\
\x70\x61\x6e\x3e\x73\x61\x67\x65\x20\x61\x6e\x64\x20\x3c\x73\x70\
\x61\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\
\x20\x72\x65\x64\x3b\x22\x3e\x53\x3c\x2f\x73\x70\x61\x6e\x3e\x61\
\x76\x69\x6e\x67\x20\x3c\x73\x70\x61\x6e\x20\x73\x74\x79\x6c\x65\
\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\x72\x65\x64\x3b\x22\x3e\x48\
\x3c\x2f\x73\x70\x61\x6e\x3e\x69\x65\x72\x61\x72\x63\x68\x79\x20\
\x61\x74\x20\x50\x72\x6f\x73\x63\x61\x6e\x2c\x20\x3c\x73\x70\x61\
\x6e\x20\x73\x74\x79\x6c\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x20\
\x72\x65\x64\x3b\x22\x3e\x48\x55\x53\x48\x21\x3c\x2f\x73\x70\x61\
\x6e\x3e\x3c\x2f\x68\x34\x3e\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
\x41\x62\x6f\x75\x74\x3c\x2f\x68\x32\x3e\x0a\x0a\x3c\x70\x3e\x54\
\x68\x69\x73\x20\x3c\x62\x3e\x48\x55\x53\x48\x21\x3c\x2f\x62\x3e\
\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x69\x6e\x68\
\x65\x72\x69\x74\x73\x20\x66\x72\x6f\x6d\x20\x74\x68\x65\x20\x57\
\x69\x6e\x64\x6f\x77\x20\x62\x61\x73\x65\x20\x63\x6c\x61\x73\x73\
\x2e\x3c\x62\x72\x3e\x20\x20\x0a\x3c\x70\x3e\x69\x6e\x66\x6f\x72\
\x6d\x61\x74\x69\x6f\x6e\x20\x63\x6f\x6e\x63\x65\x72\x6e\x69\x6e\
\x67\x20\x74\x68\x69\x73\x20\x61\x70\x70\x6c\x69\x63\x61\x74\x69\
\x6f\x6e\x2c\x20\x73\x75\x63\x68\x20\x61\x73\x20\x63\x6f\x6e\x66\
\x69\x67\x75\x72\x61\x74\x69\x6f\x6e\x20\x70\x61\x72\x61\x6d\x65\
\x74\x65\x72\x73\x20\x6f\x72\x20\x6f\x74\x68\x65\x72\x2c\x20\x6d\
\x61\x79\x20\x62\x65\x20\x65\x6e\x74\x65\x72\x65\x64\x2c\x20\x65\
\x2e\x67\x2e\x2c\x20\x3c\x61\x20\x68\x72\x65\x66\x3d\x22\x70\x61\
\x67\x65\x31\x2e\x68\x74\x6d\x6c\x22\x3e\x68\x65\x72\x65\x3c\x2f\
\x61\x3e\x3c\x2f\x70\x3e\x0a\x0a\x3c\x68\x32\x20\x73\x74\x79\x6c\
\x65\x3d\x22\x63\x6f\x6c\x6f\x72\x3a\x62\x6c\x75\x65\x3b\x22\x3e\
\x54\x68\x65\x20\x50\x61\x6e\x65\x6c\x3c\x2f\x68\x32\x3e\x0a\x0a\
\x3c\x70\x3e\x54\x68\x65\x73\x65\x20\x77\x65\x62\x20\x70\x61\x67\
\x65\x73\x20\x61\x72\x65\x20\x74\x6f\x20\x62\x65\x20\x63\x6f\x6d\
\x70\x6c\x65\x74\x65\x64\x20\x62\x79\x20\x74\x68\x65\x20\x61\x70\
\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x20\x6f\x77\x6e\x65\x72\x2e\
\x3c\x62\x72\x3e\x0a\x0a\x0a\x0a\x0a\x3c\x2f\x62\x6f\x64\x79\x3e\
\x3c\x2f\x68\x74\x6d\x6c\x3e\x0a\
"
qt_resource_name = b"\
\x00\x0a\
\x0c\xba\xf2\x7c\
\x00\x69\
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x5a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x8a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x35\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
@@ -136,10 +667,6 @@ qt_resource_name = b"\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x34\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x5a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x32\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x08\x6a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x33\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
@@ -147,41 +674,37 @@ qt_resource_name = b"\
\x08\x4a\x34\x9c\
\x00\x70\
\x00\x61\x00\x67\x00\x65\x00\x31\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
\x00\x0a\
\x0c\xba\xf2\x7c\
\x00\x69\
\x00\x6e\x00\x64\x00\x65\x00\x78\x00\x2e\x00\x68\x00\x74\x00\x6d\x00\x6c\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x26\x5f\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x23\xda\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x25\xb4\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x25\x09\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x24\x85\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
"
qt_resource_struct_v2 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x06\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x02\x85\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5b\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x01\x2f\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5c\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x01\xda\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5e\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x84\
\x00\x00\x01\x8d\x9c\xeb\xd9\x5f\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x26\x5f\
\x00\x00\x01\x94\x50\x2e\x84\x4a\
\x00\x00\x00\x1a\x00\x00\x00\x00\x00\x01\x00\x00\x23\xda\
\x00\x00\x01\x94\x50\x2e\x84\x4c\
\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x25\xb4\
\x00\x00\x01\x94\x50\x2e\x84\x4d\
\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x25\x09\
\x00\x00\x01\x94\x50\x2e\x84\x4f\
\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x24\x85\
\x00\x00\x01\x94\x50\x2e\x84\x51\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x8d\x9c\xeb\xd9\x61\
\x00\x00\x00\x82\x00\x00\x00\x00\x00\x01\x00\x00\x03\x30\
\x00\x00\x01\x8d\xa7\xc7\x77\x2b\
\x00\x00\x01\x94\x50\x7b\xd3\x65\
"
qt_version = QtCore.qVersion().split('.')
if qt_version < ['5', '8', '0']:
qt_version = [int(v) for v in QtCore.qVersion().split('.')]
if qt_version < [5, 8, 0]:
rcc_version = 1
qt_resource_struct = qt_resource_struct_v1
else:

1990
src/gui.py

File diff suppressed because it is too large Load Diff

24
src/t.py Normal file
View File

@@ -0,0 +1,24 @@
from datetime import datetime
def in_range():
current_time = datetime.now().time()
#given_time_start = datetime.strptime("07:00AM", "I:%M%p").time()
#given_time_stop = datetime.strptime("05:30PM", "I:%M%p").time()
given_time_start = datetime.strptime("07:00", "%H:%M").time()
given_time_stop = datetime.strptime("17:00", "%H:%M").time()
if given_time_start <= current_time <= given_time_stop:
print("in range", current_time)
return True
else:
print(current_time)
print(given_time_stop)
if in_range():
print("in range")
else:
print("not in range")

42
timediff.py Normal file
View File

@@ -0,0 +1,42 @@
from datetime import datetime
import time
import PyCafe
cafe = PyCafe.CyCafe()
pd=cafe.getPV("BMA1:STA:2")
tz = pd.tsDate
time0 = datetime(tz[0], tz[1], tz[2], tz[3], tz[4], tz[5])
tn = datetime.now()
time1 = datetime(tn.year, tn.month, tn.day, tn.hour, tn.minute, tn.second)
difference = time1 - time0
minutes = divmod(difference.total_seconds(), 60)
print('Total difference in minutes: ', int(minutes[0]), 'minutes', int(minutes[1]), 'seconds')
def time_difference():
tn = datetime.now()
time1 = datetime(tn.year, tn.month, tn.day, tn.hour, tn.minute, tn.second)
difference = time1 - time0
return divmod(difference.total_seconds(), 60)
def cb(handle, pv, pvdata):
global time0
print(pv, handle)
pvdata.show()
tz = pvdata.tsDate
time0 = datetime(tz[0], tz[1], tz[2], tz[3], tz[4], tz[5])
print("time0 in callback", time0)
cafe.openMonitorPrepare()
cafe.monitorStart("BMA1:STA:2", cb=cb)
cafe.openMonitorNowAndWait(1.0)
for i in range(0, 360):
time.sleep(1)
minutes = time_difference()
print('Total difference in minutes: ', int(minutes[0]), 'minutes', int(minutes[1]), 'seconds')
print("time0 actual", time0)

61
wakeup.py Normal file
View File

@@ -0,0 +1,61 @@
import datetime
#print("1:", datetime.datetime.now())
import sys
import time
from qtpy.QtCore import Qt, QTime, QTimer
from qtpy.QtGui import QColor, QImage, QPainter, QPixmap
from qtpy.QtWidgets import QApplication, QLabel
from pyqtacc.qrc_resources.facility.proscan.pyrcc5 import qrc_resources
#print("1b:", datetime.datetime.now())
app = QApplication(sys.argv)
#print("2:", datetime.datetime.now())
try:
due = QTime.currentTime()
message = "HUSH! will begin to load shortly"
if len(sys.argv) < 2:
raise ValueError
hours, mins = sys.argv[1].split(":")
due = QTime(int(hours), int(mins))
if not due.isValid():
raise ValueError
if len(sys.argv) > 2:
message = " ".join(sys.argv[2:])
except ValueError:
message = "Usage: wakeup.py HH:MM [optional message]"
#print("3:", datetime.datetime.now())
while QTime.currentTime() < due:
time.sleep(1)
#print("4:", datetime.datetime.now())
image = QImage(":/Hush.jpg")
p = QPainter(image)
font = p.font()
font.setPixelSize(54)
p.setFont(font)
p.setPen(QColor(Qt.red))
#p.setStyleSheet("color:red;")
#p.save()
p.drawText(40, 350, message)
#p.restore()
#pixmap = QPixmap(":/Hush.jpg")
pixmap = QPixmap.fromImage(image)
#pixmap.scaled(80, 80, Qt.IgnoreAspectRatio)
label = QLabel() #"<font color=red size=72><b>" + message + "</b></font>")
label.setPixmap(pixmap)
label.setScaledContents(True)
#label.setMask(pixmap.mask())
#label.setStyleSheet("border-image: url(:/Hush.jpg) 0 0 0 0 stretch stretch;")
#label.setText("<img width=80px height=80px src=\":/Hush.jpg\"/>")
#label.setText("<font color=red size=72><b>" + message + "</b></font>")
label.setWindowFlags(Qt.SplashScreen)
label.setAlignment(Qt.AlignCenter)
label.setFixedHeight(600)
label.setFixedWidth(600)
label.show()
QTimer.singleShot(5000, app.quit) #5 seconds
#print("5:", datetime.datetime.now(), flush=True)
app.exec_()