From db12b9e02cdeaa19a927d0e9d0ce915e59c964dd Mon Sep 17 00:00:00 2001 From: "benjamin.jakimow@geo.hu-berlin.de" <q8DTkxUg-BB> Date: Wed, 21 Feb 2018 14:03:33 +0100 Subject: [PATCH] added icons pixelloader.py - loads from valid band-indices only profilevisualization.py - refactoring, added exampleLyr(sensor) several changes related to 3D plotting: added ViewWidget3D(), TemporalProfile3DPlotStyle(PlotStyle), PlotSettingsModel3D(QAbstractTableModel) --- timeseriesviewer/pixelloader.py | 5 +- timeseriesviewer/plotstyling.py | 35 +- timeseriesviewer/profilevisualization.py | 791 ++++++++-- timeseriesviewer/ui/profileviewdock.ui | 58 +- timeseriesviewer/ui/resources.py | 1795 +++++++++++++++------- timeseriesviewer/ui/resources.qrc | 2 + 6 files changed, 2011 insertions(+), 675 deletions(-) diff --git a/timeseriesviewer/pixelloader.py b/timeseriesviewer/pixelloader.py index fb72052d..81fad3b7 100644 --- a/timeseriesviewer/pixelloader.py +++ b/timeseriesviewer/pixelloader.py @@ -198,6 +198,9 @@ def doLoaderTask(task): bandIndices = list(range(nb)) if task.bandIndices is None else list(task.bandIndices) + #ensure to load valid indices only + bandIndices = [i for i in bandIndices if i >= 0 and i < nb] + gt = ds.GetGeoTransform() result.resGeoTransformation = gt result.resCrsWkt = ds.GetProjection() @@ -322,7 +325,7 @@ def doLoaderTask(task): #finally, ensure that there is on 2D array only for i in range(len(PROFILE_DATA)): d = PROFILE_DATA[i] - if d != INFO_OUT_OF_IMAGE: + if isinstance(d, np.ndarray): assert d.ndim == 2 b, yx = d.shape assert b == len(bandIndices) diff --git a/timeseriesviewer/plotstyling.py b/timeseriesviewer/plotstyling.py index b7385f48..f7e50a50 100644 --- a/timeseriesviewer/plotstyling.py +++ b/timeseriesviewer/plotstyling.py @@ -62,26 +62,28 @@ class PlotStyle(QObject): if plotStyle: kwds.pop('plotStyle') super(PlotStyle,self).__init__(**kwds) - self.markerSymbol = MARKERSYMBOLS[0][0] - self.markerSize = 10 - self.markerBrush = QBrush() - self.markerBrush.setColor(Qt.green) - self.markerBrush.setStyle(Qt.SolidPattern) - self.backgroundColor = Qt.black - self.markerPen = QPen() - self.markerPen.setStyle(Qt.SolidLine) - self.markerPen.setColor(Qt.white) + if plotStyle: + self.copyFrom(plotStyle) + else: + self.markerSymbol = MARKERSYMBOLS[0][0] + self.markerSize = 10 + self.markerBrush = QBrush() + self.markerBrush.setColor(Qt.green) + self.markerBrush.setStyle(Qt.SolidPattern) - self.linePen = QPen() - self.linePen.setStyle(Qt.NoPen) - self.linePen.setColor(QColor(74, 75, 75)) + self.backgroundColor = Qt.black - self.mIsVisible = True + self.markerPen = QPen() + self.markerPen.setStyle(Qt.SolidLine) + self.markerPen.setColor(Qt.white) - if plotStyle: - self.copyFrom(plotStyle) + self.linePen = QPen() + self.linePen.setStyle(Qt.NoPen) + self.linePen.setColor(QColor(74,75,75)) + + self.mIsVisible = True def setVisibility(self, b): @@ -109,9 +111,8 @@ class PlotStyle(QObject): self.markerSize = plotStyle.markerSize self.backgroundColor = QColor(plotStyle.backgroundColor) self.linePen = QPen(plotStyle.linePen) - self.setVisibility(plotStyle.isVisible()) - self.update() + self.setVisibility(plotStyle.isVisible()) s = "" def createIcon(self, size=None): diff --git a/timeseriesviewer/profilevisualization.py b/timeseriesviewer/profilevisualization.py index 743c7095..c835b649 100644 --- a/timeseriesviewer/profilevisualization.py +++ b/timeseriesviewer/profilevisualization.py @@ -57,7 +57,32 @@ OPENGL_AVAILABLE = False try: import OpenGL OPENGL_AVAILABLE = True + + from pyqtgraph.opengl import GLViewWidget + + + class ViewWidget3D(GLViewWidget): + + def paintGL(self, *args, **kwds): + GLViewWidget.paintGL(self, *args, **kwds) + self.qglColor(Qt.white) + self.renderAnnotations() + + def renderAnnotations(self): + + #self.renderText(0.8, 0.8, 0.8, 'text') + self.renderText(5, 10, 'text') + """ + class TemporalProfileGLLinePlotItem(gl.GLLinePlotItem): + + def __init__(self, plotStyle, *args, **kwds): + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + + gl.GLLinePlotItem + """ except: + if DEBUG: + print('unable to import package OpenGL') pass def getTextColorWithContrast(c): @@ -73,7 +98,7 @@ def bandIndex2bandKey(i): return 'b{}'.format(i + 1) def bandKey2bandIndex(key): - match = PlotSettingsModel.regBandKeyExact.search(key) + match = PlotSettingsModel2D.regBandKeyExact.search(key) assert match idx = int(match.group()[1:]) - 1 return idx @@ -231,7 +256,7 @@ class _SensorPoints(pg.PlotDataItem): class TemporalProfilePlotDataItem(pg.PlotDataItem): def __init__(self, plotStyle, parent=None): - assert isinstance(plotStyle, TemporalProfilePlotStyle) + assert isinstance(plotStyle, TemporalProfile2DPlotStyle) super(TemporalProfilePlotDataItem, self).__init__([], [], parent=parent) @@ -355,23 +380,24 @@ class TemporalProfilePlotDataItem(pg.PlotDataItem): -class PlotSettingsWidgetDelegate(QStyledItemDelegate): +class PlotSettingsModel2DWidgetDelegate(QStyledItemDelegate): """ """ def __init__(self, tableView, timeSeries, temporalProfileListModel, parent=None): - super(PlotSettingsWidgetDelegate, self).__init__(parent=parent) + super(PlotSettingsModel2DWidgetDelegate, self).__init__(parent=parent) self._preferedSize = QgsFieldExpressionWidget().sizeHint() - self.tableView = tableView - self.timeSeries = timeSeries - self.temporalProfileListModel = temporalProfileListModel + self.mTableView = tableView + self.mTimeSeries = timeSeries + self.mTemporalProfileListModel = temporalProfileListModel + self.mSensorLayers = {} def setItemDelegates(self, tableView): assert isinstance(tableView, QTableView) model = tableView.model() - assert isinstance(model, PlotSettingsModel) + assert isinstance(model, PlotSettingsModel2D) for c in [model.cnSensor, model.cnExpression, model.cnStyle, model.cnTemporalProfile]: i = model.columNames.index(c) tableView.setItemDelegateForColumn(i, self) @@ -379,7 +405,7 @@ class PlotSettingsWidgetDelegate(QStyledItemDelegate): def getColumnName(self, index): assert index.isValid() model = index.model() - assert isinstance(model, PlotSettingsModel) + assert isinstance(model, PlotSettingsModel2D) return model.columNames[index.column()] """ def sizeHint(self, options, index): @@ -391,60 +417,84 @@ class PlotSettingsWidgetDelegate(QStyledItemDelegate): s = QSize(x, s.height()) return self._preferedSize """ + def exampleLyr(self, sensor): + assert isinstance(sensor, SensorInstrument) + + + if sensor not in self.mSensorLayers.keys(): + + crs = QgsCoordinateReferenceSystem('EPSG:4862') + uri = 'Point?crs={}'.format(crs.authid()) + lyr = QgsVectorLayer(uri, 'LOCATIONS', 'memory', False) + f = sensorExampleQgsFeature(sensor) + assert isinstance(f, QgsFeature) + assert lyr.startEditing() + for field in f.fields(): + lyr.addAttribute(field) + lyr.addFeature(f) + lyr.commitChanges() + self.mSensorLayers[sensor] = lyr + return self.mSensorLayers[sensor] def createEditor(self, parent, option, index): cname = self.getColumnName(index) - model = self.tableView.model() + model = self.mTableView.model() w = None - if index.isValid() and isinstance(model, PlotSettingsModel): + if index.isValid() and isinstance(model, PlotSettingsModel2D): plotStyle = model.idx2plotStyle(index) - if isinstance(plotStyle, TemporalProfilePlotStyle): + if isinstance(plotStyle, TemporalProfile2DPlotStyle): if cname == model.cnExpression: w = QgsFieldExpressionWidget(parent=parent) - - #todo: w.setLayer(sv.memLyr) + w.setExpression(plotStyle.expression()) + w.setLayer(self.exampleLyr(plotStyle.sensor())) + plotStyle.sigSensorChanged.connect(lambda s : w.setLayer(self.exampleLyr(s))) w.setExpressionDialogTitle('Values') w.setToolTip('Set an expression to specify the image band or calculate a spectral index.') - w.fieldChanged.connect(lambda : self.checkData(w, w.expression())) + w.fieldChanged[str,bool].connect(lambda n, b : self.checkData(index, w, w.expression())) elif cname == model.cnStyle: w = PlotStyleButton(parent=parent) w.setPlotStyle(plotStyle) w.setToolTip('Set style.') - w.sigPlotStyleChanged.connect(lambda: self.checkData(w, w.plotStyle())) + w.sigPlotStyleChanged.connect(lambda: self.checkData(index, w, w.plotStyle())) elif cname == model.cnSensor: w = QComboBox(parent=parent) - m = SensorListModel(self.timeSeries) + m = SensorListModel(self.mTimeSeries) w.setModel(m) elif cname == model.cnTemporalProfile: w = QComboBox(parent=parent) - w.setModel(self.temporalProfileListModel) + w.setModel(self.mTemporalProfileListModel) else: raise NotImplementedError() return w - def checkData(self, w, expression): - if isinstance(w, QgsFieldExpressionWidget): - assert expression == w.expression() - assert w.isExpressionValid(expression) == w.isValidExpression() + def checkData(self, index, w, expression): + assert isinstance(index, QModelIndex) + model = self.mTableView.model() + if index.isValid() and isinstance(model, PlotSettingsModel2D): + plotStyle = model.idx2plotStyle(index) + assert isinstance(plotStyle, TemporalProfile2DPlotStyle) + if isinstance(w, QgsFieldExpressionWidget): + assert expression == w.expression() + assert w.isExpressionValid(expression) == w.isValidExpression() + + if w.isValidExpression(): + self.commitData.emit(w) + else: + s = "" + #print(('Delegate commit failed',w.asExpression())) + if isinstance(w, PlotStyleButton): - if w.isValidExpression(): self.commitData.emit(w) - else: - s = "" - #print(('Delegate commit failed',w.asExpression())) - if isinstance(w, PlotStyleButton): - - self.commitData.emit(w) def setEditorData(self, editor, index): cname = self.getColumnName(index) - model = self.tableView.model() + model = self.mTableView.model() w = None - if index.isValid() and isinstance(model, PlotSettingsModel): + if index.isValid() and isinstance(model, PlotSettingsModel2D): cname = self.getColumnName(index) if cname == model.cnExpression: @@ -479,9 +529,9 @@ class PlotSettingsWidgetDelegate(QStyledItemDelegate): def setModelData(self, w, model, index): cname = self.getColumnName(index) - model = self.tableView.model() + model = self.mTableView.model() - if index.isValid() and isinstance(model, PlotSettingsModel): + if index.isValid() and isinstance(model, PlotSettingsModel2D): if cname == model.cnExpression: assert isinstance(w, QgsFieldExpressionWidget) expr = w.asExpression() @@ -510,6 +560,94 @@ class PlotSettingsWidgetDelegate(QStyledItemDelegate): raise NotImplementedError() + +class PlotSettingsModel3DWidgetDelegate(QStyledItemDelegate): + """ + + """ + def __init__(self, tableView, parent=None): + + super(PlotSettingsModel3DWidgetDelegate, self).__init__(parent=parent) + self._preferedSize = QgsFieldExpressionWidget().sizeHint() + self.mTableView = tableView + + + + def setItemDelegates(self, tableView): + assert isinstance(tableView, QTableView) + model = tableView.model() + + assert isinstance(model, PlotSettingsModel3D) + for c in [model.cnStyle]: + i = model.columNames.index(c) + tableView.setItemDelegateForColumn(i, self) + + def getColumnName(self, index): + assert index.isValid() + model = index.model() + assert isinstance(model, PlotSettingsModel3D) + return model.columNames[index.column()] + """ + def sizeHint(self, options, index): + s = super(ExpressionDelegate, self).sizeHint(options, index) + exprString = self.tableView.model().data(index) + l = QLabel() + l.setText(exprString) + x = l.sizeHint().width() + 100 + s = QSize(x, s.height()) + return self._preferedSize + """ + def createEditor(self, parent, option, index): + cname = self.getColumnName(index) + model = self.mTableView.model() + w = None + if index.isValid() and isinstance(model, PlotSettingsModel3D): + plotStyle = model.idx2plotStyle(index) + if isinstance(plotStyle, TemporalProfile3DPlotStyle): + if cname == model.cnStyle: + w = QgsColorButton(parent=parent) + w.setColor(plotStyle.color()) + w.setToolTip('Set line color') + w.colorChanged.connect(lambda: self.checkData(index, w)) + + return w + + def checkData(self, index, w): + assert isinstance(index, QModelIndex) + model = self.mTableView.model() + if index.isValid() and isinstance(model, PlotSettingsModel3D): + plotStyle = model.idx2plotStyle(index) + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + if isinstance(w, QgsColorButton): + self.commitData.emit(w) + + def setEditorData(self, editor, index): + cname = self.getColumnName(index) + model = self.mTableView.model() + + w = None + if index.isValid() and isinstance(model, PlotSettingsModel3D): + style = model.idx2plotStyle(index) + assert isinstance(style, TemporalProfile3DPlotStyle) + cname = self.getColumnName(index) + if cname == model.cnStyle: + assert isinstance(editor, QgsColorButton) + editor.setColor(style.color()) + else: + raise NotImplementedError() + + def setModelData(self, w, model, index): + cname = self.getColumnName(index) + model = self.mTableView.model() + + if index.isValid() and isinstance(model, PlotSettingsModel3D): + if cname == model.cnStyle: + assert isinstance(w, QgsColorButton) + model.setData(index, w.color(), Qt.EditRole) + else: + raise NotImplementedError() + + class SensorPixelDataMemoryLayer(QgsVectorLayer): def __init__(self, sensor, crs=None): @@ -969,12 +1107,13 @@ class TemporalProfileCollection(QAbstractTableModel): -class TemporalProfilePlotStyle(PlotStyle): +class TemporalProfile2DPlotStyle(PlotStyle): sigExpressionUpdated = pyqtSignal() + sigSensorChanged = pyqtSignal(SensorInstrument) def __init__(self, temporalProfile): - super(TemporalProfilePlotStyle, self).__init__() + super(TemporalProfile2DPlotStyle, self).__init__() assert isinstance(temporalProfile, TemporalProfile) self.mSensor = None self.mTP = temporalProfile @@ -1002,11 +1141,13 @@ class TemporalProfilePlotStyle(PlotStyle): assert isinstance(sensor, SensorInstrument) b = sensor != self.mSensor self.mSensor = sensor - if b: self.update() + if b: + self.update() + self.sigSensorChanged.emit(sensor) def update(self): - super(TemporalProfilePlotStyle, self).update() + super(TemporalProfile2DPlotStyle, self).update() for pdi in self.mPlotItems: assert isinstance(pdi, TemporalProfilePlotDataItem) @@ -1034,7 +1175,7 @@ class TemporalProfilePlotStyle(PlotStyle): return self.__class__, (), self.__getstate__() def __getstate__(self): - result = super(TemporalProfilePlotStyle, self).__getstate__() + result = super(TemporalProfile2DPlotStyle, self).__getstate__() #remove del result['mTP'] del result['mSensor'] @@ -1043,6 +1184,55 @@ class TemporalProfilePlotStyle(PlotStyle): +class TemporalProfile3DPlotStyle(PlotStyle): + + + def __init__(self,sensor): + super(TemporalProfile3DPlotStyle, self).__init__() + #assert isinstance(temporalProfile, TemporalProfile) + assert isinstance(sensor, SensorInstrument) + self.mSensor = sensor + #self.mTP = temporalProfile + self.mScale = 1.0 + self.mOffset = 0.0 + self.mColor = QColor('green') + + #self.setTemporalProfile(temporalProfile) + + def setColor(self, color): + assert isinstance(color, QColor) + old = self.mColor + self.mColor = color + if old != color: + self.update() + + def color(self): + return self.mColor + + def setScaling(self, scale, offset): + scale = float(scale) + offset = float(offset) + x,y =self.mScale, self.mOffset + self.mScale = scale + self.mOffset = offset + + if x != scale or y != offset: + self.update() + + def sensor(self): + return self.mSensor + + def __reduce_ex__(self, protocol): + return self.__class__, (), self.__getstate__() + + def __getstate__(self): + result = super(TemporalProfile3DPlotStyle, self).__getstate__() + #remove + del result['mSensor'] + + return result + + class DateTimeViewBox(pg.ViewBox): """ @@ -1093,11 +1283,292 @@ class DateTimePlotWidget(pg.PlotWidget): -class PlotSettingsModel(QAbstractTableModel): +class PlotSettingsModel3D(QAbstractTableModel): + + #sigSensorAdded = pyqtSignal(SensorPlotSettings) + sigVisibilityChanged = pyqtSignal(TemporalProfile2DPlotStyle) + sigPlotStylesAdded = pyqtSignal(list) + sigPlotStylesRemoved = pyqtSignal(list) + + def __init__(self, parent=None, *args): + + #assert isinstance(tableView, QTableView) + + super(PlotSettingsModel3D, self).__init__(parent=parent) + self.mTimeSeries = None + self.cnSensor = 'sensor' + self.cnScale = 'Scale' + self.cnOffset = 'Offset' + self.cnStyle = 'style' + + self.columNames = [self.cnSensor, self.cnScale, self.cnOffset, self.cnStyle] + + self.mPlotSettings = [] + #assert isinstance(plotWidget, DateTimePlotWidget) + + self.sortColumnIndex = 0 + self.sortOrder = Qt.AscendingOrder + + + self.sort(0, Qt.AscendingOrder) + + def connectTimeSeries(self, timeSeries): + if isinstance(timeSeries, TimeSeries): + + self.mTimeSeries = timeSeries + self.mTimeSeries.sigSensorAdded.connect(self.createStyle) + self.mTimeSeries.sigSensorRemoved.connect(self.onSensorRemoved) + for sensor in self.mTimeSeries.sensors(): + self.onSensorAdded(sensor) + + + def hasStyleForSensor(self, sensor): + assert isinstance(sensor, SensorInstrument) + for plotStyle in self.mPlotSettings: + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + if plotStyle.sensor() == sensor: + return True + return False + + + def createStyle(self, sensor): + if not self.hasStyleForSensor(sensor): + s = TemporalProfile3DPlotStyle(sensor) + self.insertPlotStyles([s]) + + def onSensorRemoved(self, sensor): + assert isinstance(sensor, SensorInstrument) + self.removePlotStyles([s for s in self.mPlotSettings if s.sensor() == sensor]) + + + def __len__(self): + return len(self.mPlotSettings) + + def __iter__(self): + return iter(self.mPlotSettings) + + def __getitem__(self, slice): + return self.mPlotSettings[slice] + + def __contains__(self, item): + return item in self.mPlotSettings + + + def columnIndex(self, name): + return self.columNames.index(name) + + + def insertPlotStyles(self, plotStyles, i=None): + """ + Inserts PlotStyle + :param plotStyles: TemporalProfilePlotStyle | [list-of-TemporalProfilePlotStyle] + :param i: index to insert, defaults to the last list position + """ + if isinstance(plotStyles, TemporalProfile3DPlotStyle): + plotStyles = [plotStyles] + assert isinstance(plotStyles, list) + for plotStyle in plotStyles: + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + + if i is None: + i = len(self.mPlotSettings) + + if len(plotStyles) > 0: + self.beginInsertRows(QModelIndex(), i, i + len(plotStyles)-1) + for j, plotStyle in enumerate(plotStyles): + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + self.mPlotSettings.insert(i+j, plotStyle) + self.endInsertRows() + self.sigPlotStylesAdded.emit(plotStyles) + + def removePlotStyles(self, plotStyles): + """ + Removes PlotStyle instances + :param plotStyles: TemporalProfilePlotStyle | [list-of-TemporalProfilePlotStyle] + """ + if isinstance(plotStyles, TemporalProfile3DPlotStyle): + plotStyles = [plotStyles] + assert isinstance(plotStyles, list) + + if len(plotStyles) > 0: + for plotStyle in plotStyles: + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + if plotStyle in self.mPlotSettings: + idx = self.plotStyle2idx(plotStyle) + self.beginRemoveRows(QModelIndex(), idx.row(),idx.row()) + self.mPlotSettings.remove(plotStyle) + self.endRemoveRows() + if isinstance(plotStyle, TemporalProfile3DPlotStyle): + for pi in plotStyle.mPlotItems: + self.mPlotWidget.getPlotItem().removeItem(pi) + self.sigPlotStylesRemoved.emit(plotStyles) + + def sort(self, col, order): + if self.rowCount() == 0: + return + + + colName = self.columnames[col] + r = order != Qt.AscendingOrder + + #self.beginMoveRows(idxSrc, + + if colName == self.cnSensor: + self.mPlotSettings.sort(key = lambda sv:sv.sensor().name(), reverse=r) + + def rowCount(self, parent = QModelIndex()): + return len(self.mPlotSettings) + + + def removeRows(self, row, count , parent = QModelIndex()): + + self.beginRemoveRows(parent, row, row + count-1) + + toRemove = self.mPlotSettings[row:row + count] + + for tsd in toRemove: + self.mPlotSettings.remove(tsd) + + self.endRemoveRows() + + def plotStyle2idx(self, plotStyle): + + assert isinstance(plotStyle, TemporalProfile3DPlotStyle) + + if plotStyle in self.mPlotSettings: + i = self.mPlotSettings.index(plotStyle) + return self.createIndex(i, 0) + else: + return QModelIndex() + + def idx2plotStyle(self, index): + + if index.isValid() and index.row() < self.rowCount(): + return self.mPlotSettings[index.row()] + + return None + + def columnCount(self, parent = QModelIndex()): + return len(self.columNames) + + def data(self, index, role = Qt.DisplayRole): + if role is None or not index.isValid(): + return None + + value = None + columnName = self.columNames[index.column()] + plotStyle = self.idx2plotStyle(index) + if isinstance(plotStyle, TemporalProfile3DPlotStyle): + sensor = plotStyle.sensor() + #print(('data', columnName, role)) + if role == Qt.DisplayRole: + if columnName == self.cnSensor: + if isinstance(sensor, SensorInstrument): + value = sensor.name() + else: + value = '<Select Sensor>' + elif columnName == self.cnScale: + value = plotStyle.mScale + elif columnName == self.cnOffset: + value = plotStyle.mOffset + if role == Qt.EditRole: + if columnName == self.cnScale: + value = plotStyle.mScale + elif columnName == self.cnOffset: + value = plotStyle.mOffset + + elif role == Qt.CheckStateRole: + if columnName == self.cnSensor: + value = Qt.Checked if plotStyle.isVisible() else Qt.Unchecked + + elif role == Qt.UserRole: + value = plotStyle + if columnName == self.cnSensor: + value = plotStyle.sensor() + elif columnName == self.cnStyle: + value = plotStyle + else: + value = plotStyle + #print(('get data',value)) + return value + + def setData(self, index, value, role=None): + if role is None or not index.isValid(): + return False + #print(('Set data', index.row(), index.column(), value, role)) + columnName = self.columNames[index.column()] + + if value is None: + return False + + result = False + plotStyle = self.idx2plotStyle(index) + if isinstance(plotStyle, TemporalProfile3DPlotStyle): + if role in [Qt.DisplayRole]: + if columnName == self.cnScale and isinstance(value, float): + plotStyle.setScaling(value, plotStyle.mOffset) + result = True + elif columnName == self.cnOffset and isinstance(value, float): + plotStyle.setScaling(plotStyle.mScale, value) + result = True + elif columnName == self.cnStyle: + if isinstance(value, PlotStyle): + plotStyle.copyFrom(value) + result = True + elif isinstance(value, QColor): + plotStyle.setColor(value) + result = True + + if role == Qt.CheckStateRole: + if columnName == self.cnSensor: + plotStyle.setVisibility(value == Qt.Checked) + result = True + + if role == Qt.EditRole: + if columnName == self.cnScale: + plotStyle.setScaling(value, plotStyle.mOffset) + result = True + elif columnName == self.cnOffset: + plotStyle.setScaling(plotStyle.mScale, value) + result = True + elif columnName == self.cnStyle: + if isinstance(value, QColor): + plotStyle.setColor(value) + result = True + if isinstance(value, TemporalProfile3DPlotStyle): + plotStyle.copyFrom(value) + result = True + + return result + + + def flags(self, index): + if index.isValid(): + columnName = self.columNames[index.column()] + flags = Qt.ItemIsEnabled | Qt.ItemIsSelectable + if columnName in [self.cnSensor]: + flags = flags | Qt.ItemIsUserCheckable + if columnName in [self.cnScale, self.cnOffset, self.cnStyle]: #allow check state + flags = flags | Qt.ItemIsEditable + return flags + #return item.qt_flags(index.column()) + return Qt.NoItemFlags + + def headerData(self, col, orientation, role): + if Qt is None: + return None + if orientation == Qt.Horizontal and role == Qt.DisplayRole: + return self.columNames[col] + elif orientation == Qt.Vertical and role == Qt.DisplayRole: + return col + return None + + +class PlotSettingsModel2D(QAbstractTableModel): #sigSensorAdded = pyqtSignal(SensorPlotSettings) - sigVisibilityChanged = pyqtSignal(TemporalProfilePlotStyle) - sigDataChanged = pyqtSignal(TemporalProfilePlotStyle) + sigVisibilityChanged = pyqtSignal(TemporalProfile2DPlotStyle) + sigDataChanged = pyqtSignal(TemporalProfile2DPlotStyle) sigPlotStylesAdded = pyqtSignal(list) sigPlotStylesRemoved = pyqtSignal(list) @@ -1108,14 +1579,14 @@ class PlotSettingsModel(QAbstractTableModel): #assert isinstance(tableView, QTableView) - super(PlotSettingsModel, self).__init__(parent=parent) + super(PlotSettingsModel2D, self).__init__(parent=parent) assert isinstance(temporalProfileCollection, TemporalProfileCollection) self.cnID = 'ID' self.cnSensor = 'sensor' self.cnExpression = LABEL_DN self.cnStyle = 'style' - self.cnTemporalProfile = 'px' + self.cnTemporalProfile = 'Coordinate' self.columNames = [self.cnTemporalProfile, self.cnSensor, self.cnStyle, self.cnExpression] self.mPlotSettings = [] @@ -1174,10 +1645,10 @@ class PlotSettingsModel(QAbstractTableModel): bandIndices = set() assert isinstance(sensor, SensorInstrument) for p in [p for p in self.mPlotSettings if p.sensor() == sensor]: - assert isinstance(p, TemporalProfilePlotStyle) + assert isinstance(p, TemporalProfile2DPlotStyle) expression = p.expression() #remove leading & tailing " - bandKeys = PlotSettingsModel.regBandKey.findall(expression) + bandKeys = PlotSettingsModel2D.regBandKey.findall(expression) for bandIndex in [bandKey2bandIndex(key) for key in bandKeys]: bandIndices.add(bandIndex) @@ -1190,11 +1661,11 @@ class PlotSettingsModel(QAbstractTableModel): :param plotStyles: TemporalProfilePlotStyle | [list-of-TemporalProfilePlotStyle] :param i: index to insert, defaults to the last list position """ - if isinstance(plotStyles, TemporalProfilePlotStyle): + if isinstance(plotStyles, TemporalProfile2DPlotStyle): plotStyles = [plotStyles] assert isinstance(plotStyles, list) for plotStyle in plotStyles: - assert isinstance(plotStyle, TemporalProfilePlotStyle) + assert isinstance(plotStyle, TemporalProfile2DPlotStyle) if i is None: i = len(self.mPlotSettings) @@ -1202,7 +1673,7 @@ class PlotSettingsModel(QAbstractTableModel): if len(plotStyles) > 0: self.beginInsertRows(QModelIndex(), i, i + len(plotStyles)-1) for j, plotStyle in enumerate(plotStyles): - assert isinstance(plotStyle, TemporalProfilePlotStyle) + assert isinstance(plotStyle, TemporalProfile2DPlotStyle) self.mPlotSettings.insert(i+j, plotStyle) self.endInsertRows() self.sigPlotStylesAdded.emit(plotStyles) @@ -1224,7 +1695,7 @@ class PlotSettingsModel(QAbstractTableModel): self.beginRemoveRows(QModelIndex(), idx.row(),idx.row()) self.mPlotSettings.remove(plotStyle) self.endRemoveRows() - if isinstance(plotStyle, TemporalProfilePlotStyle): + if isinstance(plotStyle, TemporalProfile2DPlotStyle): for pi in plotStyle.mPlotItems: self.mPlotWidget.getPlotItem().removeItem(pi) self.sigPlotStylesRemoved.emit(plotStyles) @@ -1263,7 +1734,7 @@ class PlotSettingsModel(QAbstractTableModel): def plotStyle2idx(self, plotStyle): - assert isinstance(plotStyle, TemporalProfilePlotStyle) + assert isinstance(plotStyle, TemporalProfile2DPlotStyle) if plotStyle in self.mPlotSettings: i = self.mPlotSettings.index(plotStyle) @@ -1288,7 +1759,7 @@ class PlotSettingsModel(QAbstractTableModel): value = None columnName = self.columNames[index.column()] plotStyle = self.idx2plotStyle(index) - if isinstance(plotStyle, TemporalProfilePlotStyle): + if isinstance(plotStyle, TemporalProfile2DPlotStyle): sensor = plotStyle.sensor() #print(('data', columnName, role)) if role == Qt.DisplayRole: @@ -1338,7 +1809,7 @@ class PlotSettingsModel(QAbstractTableModel): result = False plotStyle = self.idx2plotStyle(index) - if isinstance(plotStyle, TemporalProfilePlotStyle): + if isinstance(plotStyle, TemporalProfile2DPlotStyle): if role in [Qt.DisplayRole]: if columnName == self.cnExpression: plotStyle.setExpression(value) @@ -1377,7 +1848,7 @@ class PlotSettingsModel(QAbstractTableModel): def savePlotSettings(self, sensorPlotSettings, index='DEFAULT'): return #todo - assert isinstance(sensorPlotSettings, TemporalProfilePlotStyle) + assert isinstance(sensorPlotSettings, TemporalProfile2DPlotStyle) #todo: avoid dumps id = 'SPS.{}.{}'.format(index, sensorPlotSettings.sensor().id()) d = pickle.dumps(sensorPlotSettings) @@ -1398,7 +1869,7 @@ class PlotSettingsModel(QAbstractTableModel): sensorPlotSettings = None pass - if isinstance(sensorPlotSettings, TemporalProfilePlotStyle): + if isinstance(sensorPlotSettings, TemporalProfile2DPlotStyle): return sensorPlotSettings else: return None @@ -1440,17 +1911,20 @@ class ProfileViewDockUI(QgsDockWidget, loadUI('profileviewdock.ui')): self.stackedWidget.setCurrentWidget(self.page2D) self.plotWidget3D = None if OPENGL_AVAILABLE: - l = self.layout3DPlotWidget + l = self.frame3DPlot.layout() - from pyqtgraph.opengl import GLViewWidget - self.plotWidget3D = GLViewWidget(parent=self.page3D) + #from pyqtgraph.opengl import GLViewWidget + #self.plotWidget3D = GLViewWidget(parent=self.page3D) + self.plotWidget3D = ViewWidget3D(parent=self.frame3DPlot) self.plotWidget3D.setObjectName('plotWidget3D') + size = self.labelDummy3D.size() l.addWidget(self.plotWidget3D) + self.plotWidget3D.setSizePolicy(self.labelDummy3D.sizePolicy()) self.labelDummy3D.setVisible(False) l.removeWidget(self.labelDummy3D) - #self.plotWidget3D.setSize(size) - + self.plotWidget3D.setBaseSize(size) + self.splitter3D.setSizes([100, 100]) #pi = self.plotWidget2D.plotItem #ax = DateAxis(orientation='bottom', showValues=True) @@ -1472,6 +1946,43 @@ class ProfileViewDockUI(QgsDockWidget, loadUI('profileviewdock.ui')): self.tableViewTemporalProfiles.setSortingEnabled(True) + +def qgsFieldFromKeyValue(fieldName, value): + t = type(value) + if t in [int, float] or np.isreal(value): + + fLen = 0 + fPrec = 0 + fComm = '' + fType = '' + f = QgsField(fieldName, QVariant.Double, 'double', 40, 5) + else: + f = QgsField(fieldName, QVariant.String, 'text', 40, 5) + return f + +def sensorExampleQgsFeature(sensor): + assert isinstance(sensor, SensorInstrument) + #populate with exemplary band values (generally stored as floats) + fieldValues = collections.OrderedDict() + for b in range(sensor.nb): + fn = bandIndex2bandKey(b) + fieldValues[fn] = 1.0 + + date = datetime.date.today() + doy = dateDOY(date) + fieldValues['doy'] = doy + fieldValues['date'] = str(date) + + + fields = QgsFields() + for k, v in fieldValues.items(): + fields.append(qgsFieldFromKeyValue(k,v)) + f = QgsFeature(fields) + for k, v in fieldValues.items(): + f.setAttribute(k, v) + return f + + def dateDOY(date): if isinstance(date, np.datetime64): date = date.astype(datetime.date) @@ -1594,7 +2105,7 @@ class TemporalProfile(QObject): for sensor in self.mTimeSeries.sensors(): assert isinstance(sensor, SensorInstrument) - plotStyle = TemporalProfilePlotStyle(self) + plotStyle = TemporalProfile2DPlotStyle(self) plotStyle.setSensor(sensor) pi = TemporalProfilePlotDataItem(plotStyle) @@ -1621,18 +2132,6 @@ class TemporalProfile(QObject): def updated(self): return self.mUpdated - def qgsFieldFromKeyValue(self, key, value): - t = type(value) - if t in [int, float] or np.isreal(value): - - fLen = 0 - fPrec = 0 - fComm = '' - fType = '' - f = QgsField(key, QVariant.Double, 'double', 40, 5) - else: - f = QgsField(key, QVariant.String, 'text', 40, 5) - return f def dataFromExpression(self, sensor, expression, dateType='date'): assert dateType in ['date','doy'] @@ -1654,7 +2153,7 @@ class TemporalProfile(QObject): data = self.mData[tsd] for k, v in data.items(): if v is not None and fields.fieldNameIndex(k) == -1: - fields.append(self.qgsFieldFromKeyValue(k, v)) + fields.append(qgsFieldFromKeyValue(k, v)) for i, tsd in enumerate(sensorTSDs): assert isinstance(tsd, TimeSeriesDatum) @@ -1764,9 +2263,20 @@ class SpectralTemporalVisualization(QObject): self.plot_initialized = False self.tableView2DProfiles = ui.tableView2DProfiles + self.tableView2DProfiles.setSortingEnabled(False) + self.tableView2DProfiles.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) + self.plotSettingsModel3D = PlotSettingsModel3D() + #self.plotSettingsModel3D.sigPlotStylesRemoved.connect(self.updatePlot3D) + #self.plotSettingsModel3D.sigPlotStylesAdded.connect(self.updatePlot3D) + #self.plotSettingsModel3D.sigPlotStylesAdded.connect(self.updatePlot3D) + self.plotSettingsModel3D.rowsInserted.connect(self.onRowsInserted3D) + self.ui.tableView3DProfiles.setModel(self.plotSettingsModel3D) + self.ui.tableView3DProfiles.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) + self.delegateTableView3D = PlotSettingsModel3DWidgetDelegate(self.ui.tableView3DProfiles) + self.delegateTableView3D.setItemDelegates(self.ui.tableView3DProfiles) # self.mSelectionModel.currentChanged.connect(self.onCurrentSelectionChanged) self.plot2D = ui.plotWidget2D @@ -1785,14 +2295,14 @@ class SpectralTemporalVisualization(QObject): self.proxy2D = pg.SignalProxy(self.plot2D.scene().sigMouseMoved, rateLimit=60, slot=self.onMouseMoved2D) self.plot3D = ui.plotWidget3D - self.plot3D.setCameraPosition(distance=50) + self.reset3DCamera() ## Add a grid to the view if OPENGL_AVAILABLE: import pyqtgraph.opengl as gl self.glGridItem = gl.GLGridItem() self.glGridItem.setDepthValue(10) # draw grid after surfaces since they may be translucent - self.glPlotDataItems = [] + self.glPlotDataItems = [self.glGridItem] self.plot3D.addItem(self.glGridItem) self.tpCollection = TemporalProfileCollection() @@ -1800,12 +2310,12 @@ class SpectralTemporalVisualization(QObject): self.ui.tableViewTemporalProfiles.setModel(self.tpCollection) self.ui.tableViewTemporalProfiles.selectionModel().selectionChanged.connect(self.onTemporalProfileSelectionChanged) - + self.ui.tableViewTemporalProfiles.horizontalHeader().setResizeMode(QHeaderView.ResizeToContents) self.ui.cbTemporalProfile3D.setModel(self.tpCollectionListModel) #self.pxCollection.sigPixelAdded.connect(self.requestUpdate) #self.pxCollection.sigPixelRemoved.connect(self.clear) - self.plotSettingsModel = None + self.plotSettingsModel2D = None self.pixelLoader.sigLoadingStarted.connect(self.clear) self.pixelLoader.sigLoadingFinished.connect(lambda : self.plot2D.enableAutoRange('x', False)) @@ -1882,7 +2392,7 @@ class SpectralTemporalVisualization(QObject): def removePlotStyles(self, plotStyles): m = self.ui.tableView2DProfiles.model() - if isinstance(m, PlotSettingsModel): + if isinstance(m, PlotSettingsModel2D): m.removePlotStyles(plotStyles) def removeTemporalProfiles(self, temporalProfiles): @@ -1894,12 +2404,12 @@ class SpectralTemporalVisualization(QObject): l = len(self.tpCollection) if l > 0: temporalProfile = self.tpCollection[0] - plotStyle = TemporalProfilePlotStyle(temporalProfile) + plotStyle = TemporalProfile2DPlotStyle(temporalProfile) plotStyle.sigExpressionUpdated.connect(self.updatePlot2D) sensors = self.TS.Sensors.keys() if len(sensors) > 0: plotStyle.setSensor(sensors[0]) - self.plotSettingsModel.insertPlotStyles([plotStyle]) + self.plotSettingsModel2D.insertPlotStyles([plotStyle]) pdi = plotStyle.createPlotItem(self.plot2D) assert isinstance(pdi, TemporalProfilePlotDataItem) @@ -1957,18 +2467,24 @@ class SpectralTemporalVisualization(QObject): self.ui.btnRefresh2D.setDefaultAction(self.ui.actionRefresh2D) self.ui.btnRefresh3D.setDefaultAction(self.ui.actionRefresh3D) self.ui.btnRemoveTemporalProfile.setDefaultAction(self.ui.actionRemoveTemporalProfile) + self.ui.btnReset3DCamera.setDefaultAction(self.ui.actionReset3DCamera) + self.ui.actionRefresh2D.triggered.connect(self.updatePlot2D) self.ui.actionRefresh3D.triggered.connect(self.updatePlot3D) self.ui.actionAddView.triggered.connect(self.createNewPlotStyle) self.ui.actionRemoveView.triggered.connect(lambda:self.removePlotStyles(self.selected2DPlotStyles())) self.ui.actionRemoveTemporalProfile.triggered.connect(lambda :self.removeTemporalProfiles(self.selectedTemporalProfiles())) - + self.ui.actionReset3DCamera.triggered.connect(self.reset3DCamera) self.tpCollection.sigMaxProfilesChanged.connect(self.ui.sbMaxTP.setValue) self.ui.sbMaxTP.valueChanged.connect(self.tpCollection.setMaxProfiles) #todo: self.ui.actionRemoveView.triggered.connect(self.plotSettingsModel.createPlotStyle) + def reset3DCamera(self, *args): + + if OPENGL_AVAILABLE: + self.plot3D.setCameraPosition((0,0,0), distance=10, elevation=10) def setTimeSeries(self, TS): @@ -1979,19 +2495,21 @@ class SpectralTemporalVisualization(QObject): - self.plotSettingsModel = PlotSettingsModel(self.tpCollection, self.plot2D, parent=self) - self.plotSettingsModel.sigVisibilityChanged.connect(self.setVisibility) - self.plotSettingsModel.sigDataChanged.connect(self.requestUpdate) - self.plotSettingsModel.rowsInserted.connect(self.onRowsInserted) + self.plotSettingsModel2D = PlotSettingsModel2D(self.tpCollection, self.plot2D, parent=self) + self.plotSettingsModel2D.sigVisibilityChanged.connect(self.setVisibility) + self.plotSettingsModel2D.sigDataChanged.connect(self.requestUpdate) + self.plotSettingsModel2D.rowsInserted.connect(self.onRowsInserted2D) + self.plotSettingsModel3D.connectTimeSeries(self.TS) # self.plotSettingsModel.modelReset.connect(self.updatePersistantWidgets) - self.tableView2DProfiles.setModel(self.plotSettingsModel) + self.tableView2DProfiles.setModel(self.plotSettingsModel2D) #self.tableView2DProfilesSelectionModel = QItemSelectionModel(self.mModel) self.tableView2DProfiles.selectionModel().selectionChanged.connect(self.onPlot2DSelectionChanged) #self.tableView2DProfilesSelectionModel.selectionChanged.connect(self.onPlot2DSelectionChanged) #self.tableView2DProfilesSelectionModel.setSelectionModel(self.mSelectionModel) - self.delegate = PlotSettingsWidgetDelegate(self.tableView2DProfiles, self.TS, self.tpCollectionListModel) - self.delegate.setItemDelegates(self.tableView2DProfiles) + self.delegateTableView2D = PlotSettingsModel2DWidgetDelegate(self.tableView2DProfiles, self.TS, self.tpCollectionListModel) + self.delegateTableView2D.setItemDelegates(self.tableView2DProfiles) + sigMoveToTSD = pyqtSignal(TimeSeriesDatum) @@ -2025,26 +2543,9 @@ class SpectralTemporalVisualization(QObject): self.updateRequested = True #next time - def updatePersistentWidgets(self): + def onRowsInserted2D(self, parent, start, end): model = self.tableView2DProfiles.model() - if isinstance(model, PlotSettingsModel): - colExpression = model.columnIndex(model.cnExpression) - colStyle = model.columnIndex(model.cnStyle) - - for row in range(model.rowCount()): - idxExpr = model.createIndex(row, colExpression) - idxStyle = model.createIndex(row, colStyle) - - #self.TV.openPersistentEditor(idxExpr) - #self.TV.openPersistentEditor(idxStyle) - - #self.TV.openPersistentEditor(model.createIndex(start, colStyle)) - s = "" - - - def onRowsInserted(self, parent, start, end): - model = self.tableView2DProfiles.model() - if isinstance(model, PlotSettingsModel): + if isinstance(model, PlotSettingsModel2D): colExpression = model.columnIndex(model.cnExpression) colStyle = model.columnIndex(model.cnStyle) while start <= end: @@ -2056,6 +2557,15 @@ class SpectralTemporalVisualization(QObject): #self.TV.openPersistentEditor(model.createIndex(start, colStyle)) s = "" + def onRowsInserted3D(self, parent, start, end): + model = self.ui.tableView3DProfiles.model() + if isinstance(model, PlotSettingsModel3D): + colStyle = model.columnIndex(model.cnStyle) + while start <= end: + idxStyle = model.createIndex(start, colStyle) + self.ui.tableView3DProfiles.openPersistentEditor(idxStyle) + start += 1 + def onObservationClicked(self, plotDataItem, points): for p in points: tsd = p.data() @@ -2091,7 +2601,7 @@ class SpectralTemporalVisualization(QObject): Loads a temporal profile for a single or multiple geometries. :param spatialPoints: SpatialPoint | [list-of-SpatialPoints] """ - if not isinstance(self.plotSettingsModel, PlotSettingsModel): + if not isinstance(self.plotSettingsModel2D, PlotSettingsModel2D): return False if not self.pixelLoader.isReadyToLoad(): @@ -2110,7 +2620,7 @@ class SpectralTemporalVisualization(QObject): if LUT_bandIndices is None: LUT_bandIndices = dict() for sensor in self.TS.Sensors: - LUT_bandIndices[sensor] = self.plotSettingsModel.requiredBandsIndices(sensor) + LUT_bandIndices[sensor] = self.plotSettingsModel2D.requiredBandsIndices(sensor) assert isinstance(LUT_bandIndices, dict) for sensor in self.TS.Sensors: @@ -2150,7 +2660,7 @@ class SpectralTemporalVisualization(QObject): for TP in TPs: assert isinstance(TP, TemporalProfile) - existingBandKeys = [k for k in TP.data(tsd).keys() if PlotSettingsModel.regBandKeyExact.search(k)] + existingBandKeys = [k for k in TP.data(tsd).keys() if PlotSettingsModel2D.regBandKeyExact.search(k)] existingBandIndices = set([bandKey2bandIndex(k) for k in existingBandKeys]) need2load = requiredIndices.difference(existingBandIndices) missingIndices = missingIndices.union(need2load) @@ -2178,7 +2688,7 @@ class SpectralTemporalVisualization(QObject): print('Data for geometries already loaded') def setVisibility(self, sensorPlotStyle): - assert isinstance(sensorPlotStyle, TemporalProfilePlotStyle) + assert isinstance(sensorPlotStyle, TemporalProfile2DPlotStyle) self.setVisibility2D(sensorPlotStyle) def setVisibility2D(self, sensorPlotStyle): @@ -2189,18 +2699,18 @@ class SpectralTemporalVisualization(QObject): def addData(self, sensorView = None): if sensorView is None: - for sv in self.plotSettingsModel.items: + for sv in self.plotSettingsModel2D.items: self.setData(sv) else: - assert isinstance(sensorView, TemporalProfilePlotStyle) + assert isinstance(sensorView, TemporalProfile2DPlotStyle) self.setData2D(sensorView) @QtCore.pyqtSlot() def onDataUpdate(self): - for plotSetting in self.plotSettingsModel: - assert isinstance(plotSetting, TemporalProfilePlotStyle) + for plotSetting in self.plotSettingsModel2D: + assert isinstance(plotSetting, TemporalProfile2DPlotStyle) if plotSetting.temporalProfile().updated(): for pdi in plotSetting.mPlotItems: assert isinstance(pdi, TemporalProfilePlotDataItem) @@ -2213,10 +2723,12 @@ class SpectralTemporalVisualization(QObject): if not self.plot2D.xAxisInitialized: x0 = x1 = None - for plotSetting in self.plotSettingsModel: - assert isinstance(plotSetting, TemporalProfilePlotStyle) + for plotSetting in self.plotSettingsModel2D: + assert isinstance(plotSetting, TemporalProfile2DPlotStyle) for pdi in plotSetting.mPlotItems: assert isinstance(pdi, TemporalProfilePlotDataItem) + if pdi.xData.ndim == 0 or pdi.xData.shape[0] == 0: + continue if x0 is None: x0 = pdi.xData.min() x1 = pdi.xData.max() @@ -2258,21 +2770,17 @@ class SpectralTemporalVisualization(QObject): self.loadCoordinate(tp.mCoordinate, LUT_bandIndices=LUT_bandIndices) #2. visualize already loaded data - profileData = {} - - #x = - #y = - - - - for sensor in tp.mTimeSeries.sensors(): - profileData[sensor] = {'x':[],'y':[],'z':[]} - + LUTStyle = {} + for style in self.plotSettingsModel3D: + assert isinstance(style, TemporalProfile3DPlotStyle) + LUTStyle[style.sensor()] = style dataPos = [] x0 = x1 = y0 = y1 = z0 = z1 = 0 for iDate, tsd in enumerate(tp.mTimeSeries): data = tp.data(tsd) + + bandKeys = sorted([k for k in data.keys() if k.startswith('b') and data[k] != None], key=lambda k: bandKey2bandIndex(k)) if len(bandKeys) < 2: continue @@ -2298,14 +2806,20 @@ class SpectralTemporalVisualization(QObject): x0, x1 = (min(x.min(), x0), max(x.max(), x1)) y0, y1 = (min(y.min(), y0), max(y.max(), y1)) z0, z1 = (min(z.min(), z0), max(z.max(), z1)) - dataPos.append((x,y,z)) + if tsd.sensor in LUTStyle.keys(): + style = LUTStyle[tsd.sensor] + else: + style = TemporalProfile3DPlotStyle(tsd.sensor) + dataPos.append((x,y,z, style)) xyz = [(x0,x1),(y0,y1),(z0,z1)] l = len(dataPos) for iPos, pos in enumerate(dataPos): - x,y,z = pos - - arr = np.asarray(pos, dtype=np.float64).transpose() + x,y,z, style = pos + assert isinstance(style, TemporalProfile3DPlotStyle) + if not style.isVisible(): + continue + arr = np.asarray((x,y,z), dtype=np.float64).transpose() for i, m in enumerate(xyz): m0,m1 = m arr[:, i] = (arr[:,i] - m0)/(m1-m0) @@ -2313,7 +2827,8 @@ class SpectralTemporalVisualization(QObject): plt = gl.GLLinePlotItem(pos=arr, #color=pg.glColor((i, n * 1.3)), #color=pg.glColor(255,123,123,125), - color=pg.glColor((iPos, l * 1.3)), + #color=pg.glColor((iPos, l * 1.3)), + color=pg.glColor(style.color()), width=1.0, antialias=True) @@ -2323,10 +2838,10 @@ class SpectralTemporalVisualization(QObject): for i, item in enumerate(self.glPlotDataItems): w.addItem(item) - self.glGridItem.scale(0.1,0.1,0.1, local=False) + #self.glGridItem.scale(0.1,0.1,0.1, local=False) #w.setBackgroundColor(QColor('black')) - w.setCameraPosition(pos=(0.0, 0.0, 0.0), distance=1.) + #w.setCameraPosition(pos=(0.0, 0.0, 0.0), distance=1.) w.addItem(self.glGridItem) w.update() """ @@ -2343,7 +2858,7 @@ class SpectralTemporalVisualization(QObject): @QtCore.pyqtSlot() def updatePlot2D(self): - if isinstance(self.plotSettingsModel, PlotSettingsModel): + if isinstance(self.plotSettingsModel2D, PlotSettingsModel2D): if DEBUG: print('Update plot...') @@ -2351,8 +2866,8 @@ class SpectralTemporalVisualization(QObject): piDataItems = pi.listDataItems() locations = set() - for plotSetting in self.plotSettingsModel: - assert isinstance(plotSetting, TemporalProfilePlotStyle) + for plotSetting in self.plotSettingsModel2D: + assert isinstance(plotSetting, TemporalProfile2DPlotStyle) locations.add(plotSetting.temporalProfile().mCoordinate) for pdi in plotSetting.mPlotItems: @@ -2461,7 +2976,7 @@ if __name__ == '__main__': import site, sys from timeseriesviewer import utils qgsApp = utils.initQgisApplication() - DEBUG = True + DEBUG = False if False: #the ultimative test for floating point division correctness, at least on a DOY-level date1 = np.datetime64('1960-12-31','D') diff --git a/timeseriesviewer/ui/profileviewdock.ui b/timeseriesviewer/ui/profileviewdock.ui index 2011c259..ee4313a7 100644 --- a/timeseriesviewer/ui/profileviewdock.ui +++ b/timeseriesviewer/ui/profileviewdock.ui @@ -85,11 +85,19 @@ <property name="text"> <string>2D</string> </property> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/timeseriesviewer/icons/mIconTemporalProfile2D.svg</normaloff>:/timeseriesviewer/icons/mIconTemporalProfile2D.svg</iconset> + </property> </item> <item> <property name="text"> <string>3D</string> </property> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/timeseriesviewer/icons/mIconTemporalProfile3D.svg</normaloff>:/timeseriesviewer/icons/mIconTemporalProfile3D.svg</iconset> + </property> </item> <item> <property name="text"> @@ -373,7 +381,16 @@ <property name="orientation"> <enum>Qt::Horizontal</enum> </property> + <property name="opaqueResize"> + <bool>true</bool> + </property> <widget class="QFrame" name="frameSettings3D"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>1</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="frameShape"> <enum>QFrame::StyledPanel</enum> </property> @@ -423,10 +440,21 @@ </property> </widget> </item> + <item> + <widget class="QToolButton" name="btnReset3DCamera"> + <property name="text"> + <string>...</string> + </property> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/timeseriesviewer/icons/mActionZoomFullExtent.svg</normaloff>:/timeseriesviewer/icons/mActionZoomFullExtent.svg</iconset> + </property> + </widget> + </item> <item> <widget class="QLabel" name="label"> <property name="text"> - <string>Pixel</string> + <string>Coordinate</string> </property> </widget> </item> @@ -460,6 +488,12 @@ </item> <item> <widget class="QTableView" name="tableView3DProfiles"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <property name="frameShape"> <enum>QFrame::NoFrame</enum> </property> @@ -467,15 +501,24 @@ </item> </layout> </widget> - <widget class="QWidget" name="verticalLayoutWidget"> + <widget class="QFrame" name="frame3DPlot"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>3</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <layout class="QVBoxLayout" name="layout3DPlotWidget"> <property name="spacing"> <number>1</number> </property> + <property name="margin"> + <number>0</number> + </property> <item> <widget class="QLabel" name="labelDummy3D"> <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> <horstretch>3</horstretch> <verstretch>2</verstretch> </sizepolicy> @@ -792,6 +835,15 @@ Please ensure that PyOpenGL is installed <string>Removes the selected profiles</string> </property> </action> + <action name="actionReset3DCamera"> + <property name="icon"> + <iconset resource="resources.qrc"> + <normaloff>:/timeseriesviewer/icons/mActionZoomFullExtent.svg</normaloff>:/timeseriesviewer/icons/mActionZoomFullExtent.svg</iconset> + </property> + <property name="text"> + <string>Reset View</string> + </property> + </action> </widget> <customwidgets> <customwidget> diff --git a/timeseriesviewer/ui/resources.py b/timeseriesviewer/ui/resources.py index 9e622dfe..99b776c9 100644 --- a/timeseriesviewer/ui/resources.py +++ b/timeseriesviewer/ui/resources.py @@ -5902,7 +5902,7 @@ qt_resource_data = "\ \x5c\x5e\x71\xc7\x22\xa4\x50\x0f\x73\x13\x6d\xa4\x9a\x1a\x4f\x0c\ \xf3\x79\x83\x7c\x69\xca\x4d\xa8\x4b\xb9\xc7\x09\xff\xff\x0b\x31\ \xf5\xb2\x78\ -\x00\x00\x23\x93\ +\x00\x00\x21\x5d\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ \x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ @@ -5968,512 +5968,476 @@ qt_resource_data = "\ \x72\x65\x73\x6f\x75\x72\x63\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\ \x2f\x70\x75\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\ \x69\x74\x79\x70\x65\x2f\x53\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\ -\x22\x20\x2f\x3e\x3c\x64\x63\x3a\x74\x69\x74\x6c\x65\x3e\x3c\x2f\ -\x64\x63\x3a\x74\x69\x74\x6c\x65\x3e\x3c\x2f\x63\x63\x3a\x57\x6f\ -\x72\x6b\x3e\x3c\x2f\x72\x64\x66\x3a\x52\x44\x46\x3e\x3c\x2f\x6d\ -\x65\x74\x61\x64\x61\x74\x61\x3e\x3c\x64\x65\x66\x73\x0d\x0a\x20\ -\x20\x20\x20\x20\x69\x64\x3d\x22\x64\x65\x66\x73\x36\x33\x22\x3e\ -\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\ -\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\ -\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\ -\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\ -\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ -\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\ -\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\ -\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\ -\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\x34\x31\x31\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\ -\x35\x2e\x37\x37\x2c\x30\x20\x2d\x32\x2e\x38\x38\x2c\x35\x20\x56\ -\x20\x2d\x35\x20\x5a\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x34\x61\ -\x34\x31\x33\x35\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ -\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\ -\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x34\x61\ -\x34\x31\x33\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\ -\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ -\x66\x6f\x72\x6d\x3d\x22\x73\x63\x61\x6c\x65\x28\x30\x2e\x34\x29\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ -\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\ -\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x20\x2f\x3e\x3c\ -\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\x6d\x61\x72\x6b\x65\x72\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ -\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x32\ -\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\ -\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\ -\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\ -\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\ -\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x32\ -\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\ -\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\ -\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ -\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\ -\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\ -\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\ -\x32\x39\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\ -\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\ -\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\ -\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\ -\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\ -\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\ -\x30\x2e\x36\x32\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\ -\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\ -\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\ -\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x38\x2e\x37\ -\x31\x38\x35\x38\x37\x38\x2c\x34\x2e\x30\x33\x33\x37\x33\x35\x32\ -\x20\x2d\x32\x2e\x32\x30\x37\x32\x38\x39\x35\x2c\x30\x2e\x30\x31\ -\x36\x30\x31\x33\x32\x36\x20\x38\x2e\x37\x31\x38\x35\x38\x38\x34\ -\x2c\x2d\x34\x2e\x30\x30\x31\x37\x30\x37\x38\x20\x63\x20\x2d\x31\ -\x2e\x37\x34\x35\x34\x39\x38\x34\x2c\x32\x2e\x33\x37\x32\x30\x36\ -\x30\x39\x20\x2d\x31\x2e\x37\x33\x35\x34\x34\x30\x38\x2c\x35\x2e\ -\x36\x31\x37\x34\x35\x31\x39\x20\x2d\x36\x65\x2d\x37\x2c\x38\x2e\ -\x30\x33\x35\x34\x34\x33\x20\x7a\x22\x0d\x0a\x20\x20\x20\x20\x20\ -\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\ -\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\x33\x2c\x30\x2c\x30\x2c\x2d\ -\x30\x2e\x33\x2c\x30\x2e\x36\x39\x2c\x30\x29\x22\x0d\x0a\x20\x20\ +\x22\x20\x2f\x3e\x3c\x64\x63\x3a\x74\x69\x74\x6c\x65\x20\x2f\x3e\ +\x3c\x2f\x63\x63\x3a\x57\x6f\x72\x6b\x3e\x3c\x2f\x72\x64\x66\x3a\ +\x52\x44\x46\x3e\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\x61\x3e\x3c\ +\x64\x65\x66\x73\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x64\ +\x65\x66\x73\x36\x33\x22\x3e\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\ \x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ -\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\ -\x75\x72\x65\x3d\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x6d\x61\x72\x6b\ -\x65\x72\x3e\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\ -\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\ -\x6b\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x31\x53\x65\x6e\x64\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\ -\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\ -\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ -\x20\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x31\x53\x65\x6e\x64\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\ -\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\x65\ -\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\x32\x38\x31\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x30\ -\x2c\x30\x20\x35\x2c\x2d\x35\x20\x2d\x31\x32\x2e\x35\x2c\x30\x20\ -\x35\x2c\x35\x20\x5a\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\ -\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ -\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\ -\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\ -\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\ -\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\ +\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\ +\x65\x4f\x75\x74\x4d\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\ +\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x54\x72\x69\x61\x6e\ +\x67\x6c\x65\x4f\x75\x74\x4d\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\ +\x3a\x76\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\ +\x63\x6b\x3d\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\ +\x74\x68\x34\x34\x31\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x64\x3d\x22\x4d\x20\x35\x2e\x37\x37\x2c\x30\x20\x2d\x32\ +\x2e\x38\x38\x2c\x35\x20\x56\x20\x2d\x35\x20\x5a\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ +\x69\x6c\x6c\x3a\x23\x34\x61\x34\x31\x33\x35\x3b\x66\x69\x6c\x6c\ +\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\ +\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ +\x6f\x6b\x65\x3a\x23\x34\x61\x34\x31\x33\x35\x3b\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\ +\x30\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\ +\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x73\x63\x61\ +\x6c\x65\x28\x30\x2e\x34\x29\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\ +\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\ +\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\ +\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\ +\x22\x41\x72\x72\x6f\x77\x32\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\ +\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\ +\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\ +\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ +\x22\x41\x72\x72\x6f\x77\x32\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\ +\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\ +\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\ +\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x70\x61\x74\x68\x34\x32\x39\x39\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\ +\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\ +\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\ +\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\ +\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\ +\x2d\x77\x69\x64\x74\x68\x3a\x30\x2e\x36\x32\x35\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\x6f\x75\ +\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\ +\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\ +\x3d\x22\x4d\x20\x38\x2e\x37\x31\x38\x35\x38\x37\x38\x2c\x34\x2e\ +\x30\x33\x33\x37\x33\x35\x32\x20\x2d\x32\x2e\x32\x30\x37\x32\x38\ +\x39\x35\x2c\x30\x2e\x30\x31\x36\x30\x31\x33\x32\x36\x20\x38\x2e\ +\x37\x31\x38\x35\x38\x38\x34\x2c\x2d\x34\x2e\x30\x30\x31\x37\x30\ +\x37\x38\x20\x63\x20\x2d\x31\x2e\x37\x34\x35\x34\x39\x38\x34\x2c\ +\x32\x2e\x33\x37\x32\x30\x36\x30\x39\x20\x2d\x31\x2e\x37\x33\x35\ +\x34\x34\x30\x38\x2c\x35\x2e\x36\x31\x37\x34\x35\x31\x39\x20\x2d\ +\x36\x65\x2d\x37\x2c\x38\x2e\x30\x33\x35\x34\x34\x33\x20\x7a\x22\ \x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ \x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\ -\x32\x2c\x30\x2c\x30\x2c\x2d\x30\x2e\x32\x2c\x2d\x31\x2e\x32\x2c\ +\x33\x2c\x30\x2c\x30\x2c\x2d\x30\x2e\x33\x2c\x30\x2e\x36\x39\x2c\ \x30\x29\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\ \x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\ \x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x20\x2f\ \x3e\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\x6d\x61\x72\x6b\x65\ \x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x54\x72\x69\x61\ -\x6e\x67\x6c\x65\x4f\x75\x74\x4c\x22\x0d\x0a\x20\x20\x20\x20\x20\ -\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\x30\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x54\x72\ -\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4c\x22\x0d\x0a\x20\x20\x20\ -\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\ -\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\ -\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\ -\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\x61\ -\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ -\x22\x70\x61\x74\x68\x34\x34\x30\x38\x22\x0d\x0a\x20\x20\x20\x20\ -\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x35\x2e\x37\x37\x2c\x30\ -\x20\x2d\x32\x2e\x38\x38\x2c\x35\x20\x56\x20\x2d\x35\x20\x5a\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ -\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\ -\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\ -\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ -\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\ -\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ -\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\ -\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ -\x73\x63\x61\x6c\x65\x28\x30\x2e\x38\x29\x22\x0d\x0a\x20\x20\x20\ -\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\ -\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\ -\x72\x65\x3d\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x6d\x61\x72\x6b\x65\ -\x72\x3e\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\ -\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\ -\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x31\x4c\x65\x6e\x64\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\ -\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\ -\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\ -\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\x31\x4c\x65\x6e\x64\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\ -\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x22\ +\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x41\x72\x72\x6f\ +\x77\x31\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x6f\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x41\x72\x72\x6f\ +\x77\x31\x53\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x73\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\ +\x76\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\ +\x6b\x3d\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\ +\x68\x34\x32\x38\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x64\x3d\x22\x4d\x20\x30\x2c\x30\x20\x35\x2c\x2d\x35\x20\x2d\ +\x31\x32\x2e\x35\x2c\x30\x20\x35\x2c\x35\x20\x5a\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ +\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\ +\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\ +\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\ +\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\ +\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\ +\x30\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\ +\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\ +\x72\x69\x78\x28\x2d\x30\x2e\x32\x2c\x30\x2c\x30\x2c\x2d\x30\x2e\ +\x32\x2c\x2d\x31\x2e\x32\x2c\x30\x29\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\ +\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\ +\x65\x3d\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x6d\x61\x72\x6b\x65\x72\ +\x3e\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\ +\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4c\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\ +\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\ +\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x69\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\ +\x4c\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\ +\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\ +\x75\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\x34\x30\x38\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\ +\x20\x35\x2e\x37\x37\x2c\x30\x20\x2d\x32\x2e\x38\x38\x2c\x35\x20\ +\x56\x20\x2d\x35\x20\x5a\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\ +\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\ +\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\ +\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\ +\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\ +\x74\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\x30\x33\x70\x74\x3b\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\ +\x73\x66\x6f\x72\x6d\x3d\x22\x73\x63\x61\x6c\x65\x28\x30\x2e\x38\ +\x29\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\ +\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x20\x2f\x3e\ +\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\x6d\x61\x72\x6b\x65\x72\ \x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\x65\x22\ -\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ -\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\x32\x36\x39\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x30\x2c\ -\x30\x20\x35\x2c\x2d\x35\x20\x2d\x31\x32\x2e\x35\x2c\x30\x20\x35\ -\x2c\x35\x20\x5a\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ -\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\ -\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\ -\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\ -\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\ -\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\ -\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\x74\ -\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\ -\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x2d\x30\x2e\x38\ -\x2c\x30\x2c\x30\x2c\x2d\x30\x2e\x38\x2c\x2d\x31\x30\x2c\x30\x29\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ -\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\ -\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x20\x2f\x3e\x3c\ -\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x0d\x0a\x20\ -\x20\x20\x20\x20\x20\x20\x69\x73\x5f\x76\x69\x73\x69\x62\x6c\x65\ -\x3d\x22\x74\x72\x75\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x35\ -\x37\x35\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x65\x66\x66\ -\x65\x63\x74\x3d\x22\x73\x70\x69\x72\x6f\x22\x20\x2f\x3e\x3c\x2f\ -\x64\x65\x66\x73\x3e\x3c\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\ -\x61\x6d\x65\x64\x76\x69\x65\x77\x0d\x0a\x20\x20\x20\x20\x20\x70\ -\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\x66\x66\x66\ -\x66\x22\x0d\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x63\ -\x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\x36\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x6f\x70\x61\x63\x69\ -\x74\x79\x3d\x22\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x6f\x62\x6a\ -\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x67\x72\x69\x64\x74\x6f\x6c\x65\ -\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0d\x0a\x20\x20\x20\x20\ -\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\ -\x22\x31\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\x70\x61\x63\x69\x74\x79\x3d\ -\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x70\x61\x67\x65\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ -\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\ -\x32\x38\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\ -\x74\x3d\x22\x37\x35\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\ -\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x36\x31\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x73\x68\x6f\x77\x67\x72\x69\x64\x3d\x22\x66\ -\x61\x6c\x73\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ -\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\x31\x2e\x38\x31\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ -\x63\x78\x3d\x22\x33\x31\x32\x2e\x37\x30\x37\x31\x38\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x79\ -\x3d\x22\x31\x35\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ -\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\ -\x33\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x30\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\ -\x69\x6e\x64\x6f\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\ -\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\x6c\x61\x79\x65\x72\ -\x3d\x22\x43\x61\x70\x61\x5f\x31\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\ -\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x33\x31\x22\x0d\x0a\x20\ -\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\ -\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\ -\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ -\x67\x33\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ +\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\ +\x31\x4c\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\ +\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\x30\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x41\x72\x72\x6f\x77\ +\x31\x4c\x65\x6e\x64\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\ +\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\ +\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\ +\x3d\x22\x74\x72\x75\x65\x22\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\ +\x34\x32\x36\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x64\x3d\x22\x4d\x20\x30\x2c\x30\x20\x35\x2c\x2d\x35\x20\x2d\x31\ +\x32\x2e\x35\x2c\x30\x20\x35\x2c\x35\x20\x5a\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\ +\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\ +\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\ +\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ +\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\ +\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\ +\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\ +\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\ +\x69\x78\x28\x2d\x30\x2e\x38\x2c\x30\x2c\x30\x2c\x2d\x30\x2e\x38\ +\x2c\x2d\x31\x30\x2c\x30\x29\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\ +\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\ +\x22\x30\x22\x20\x2f\x3e\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x3c\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\ +\x66\x65\x63\x74\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x73\x5f\ +\x76\x69\x73\x69\x62\x6c\x65\x3d\x22\x74\x72\x75\x65\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x2d\ +\x65\x66\x66\x65\x63\x74\x35\x37\x35\x36\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x65\x66\x66\x65\x63\x74\x3d\x22\x73\x70\x69\x72\ +\x6f\x22\x20\x2f\x3e\x3c\x2f\x64\x65\x66\x73\x3e\x3c\x73\x6f\x64\ +\x69\x70\x6f\x64\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0d\ +\x0a\x20\x20\x20\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\ +\x22\x23\x66\x66\x66\x66\x66\x66\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x62\x6f\x72\x64\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\ +\x36\x36\x36\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x6f\x70\x61\x63\x69\x74\x79\x3d\x22\x31\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x6f\x62\x6a\x65\x63\x74\x74\x6f\x6c\x65\x72\x61\ +\x6e\x63\x65\x3d\x22\x31\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x67\ +\x72\x69\x64\x74\x6f\x6c\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x67\x75\x69\x64\x65\x74\x6f\x6c\ +\x65\x72\x61\x6e\x63\x65\x3d\x22\x31\x30\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\ +\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x73\x68\ +\x61\x64\x6f\x77\x3d\x22\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x77\ +\x69\x64\x74\x68\x3d\x22\x31\x32\x38\x30\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\ +\x77\x2d\x68\x65\x69\x67\x68\x74\x3d\x22\x37\x35\x36\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x6e\x61\x6d\x65\x64\x76\x69\ +\x65\x77\x36\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x73\x68\x6f\x77\ +\x67\x72\x69\x64\x3d\x22\x66\x61\x6c\x73\x65\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\ +\x3d\x22\x31\x2e\x38\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\x31\x33\x35\x2e\x39\ +\x31\x31\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ +\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x35\x30\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\ +\x6f\x77\x2d\x78\x3d\x22\x33\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\ +\x79\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x6d\x61\x78\x69\ +\x6d\x69\x7a\x65\x64\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\ +\x2d\x6c\x61\x79\x65\x72\x3d\x22\x43\x61\x70\x61\x5f\x31\x22\x20\ +\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\ +\x31\x37\x35\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\ +\x73\x66\x6f\x72\x6d\x3d\x22\x6d\x61\x74\x72\x69\x78\x28\x33\x2e\ +\x33\x38\x30\x36\x39\x35\x35\x2c\x30\x2c\x30\x2c\x33\x2e\x33\x38\ +\x30\x36\x39\x35\x35\x2c\x32\x32\x38\x2e\x38\x30\x33\x34\x31\x2c\ +\x2d\x32\x31\x36\x2e\x35\x37\x39\x31\x37\x29\x22\x3e\x3c\x63\x69\ +\x72\x63\x6c\x65\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\ +\x22\x63\x69\x72\x63\x6c\x65\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x72\x3d\x22\x31\x36\x2e\x34\x32\x32\x36\x35\x37\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x63\x79\x3d\x22\x31\x33\x35\x2e\ +\x30\x36\x36\x32\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x63\ +\x78\x3d\x22\x2d\x35\x30\x2e\x33\x39\x30\x31\x36\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\ +\x65\x72\x6c\x69\x6d\x69\x74\x3d\x22\x31\x30\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\ +\x3a\x23\x36\x64\x39\x37\x63\x34\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\ +\x61\x63\x69\x74\x79\x3a\x31\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\ +\x34\x34\x35\x65\x37\x35\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ +\x64\x74\x68\x3a\x30\x2e\x35\x37\x32\x36\x35\x36\x39\x39\x3b\x73\ +\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\ +\x3a\x31\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\ +\x74\x79\x3a\x31\x22\x20\x2f\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x35\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\x2d\x36\ +\x33\x2e\x36\x39\x31\x32\x36\x33\x2c\x31\x33\x38\x2e\x30\x34\x32\ +\x38\x39\x20\x63\x20\x30\x2e\x34\x31\x39\x31\x38\x35\x2c\x2d\x34\ +\x2e\x38\x32\x31\x32\x20\x31\x2e\x33\x36\x30\x36\x33\x33\x2c\x2d\ +\x37\x2e\x37\x31\x33\x36\x39\x20\x34\x2e\x33\x35\x34\x34\x38\x33\ +\x2c\x2d\x31\x30\x2e\x37\x30\x37\x35\x34\x20\x33\x2e\x32\x33\x33\ +\x32\x32\x31\x2c\x2d\x33\x2e\x32\x33\x33\x32\x32\x20\x36\x2e\x32\ +\x32\x37\x36\x34\x35\x2c\x2d\x34\x2e\x37\x33\x33\x35\x38\x20\x31\ +\x31\x2e\x38\x38\x35\x34\x39\x36\x2c\x2d\x36\x2e\x30\x32\x30\x39\ +\x32\x20\x32\x2e\x37\x37\x39\x36\x37\x37\x2c\x2d\x30\x2e\x36\x33\ +\x32\x32\x31\x20\x2d\x32\x2e\x30\x33\x35\x32\x32\x33\x2c\x2d\x32\ +\x2e\x37\x32\x38\x31\x33\x20\x2d\x38\x2e\x36\x39\x38\x30\x38\x37\ +\x2c\x2d\x30\x2e\x32\x33\x35\x33\x36\x20\x2d\x33\x2e\x35\x37\x39\ +\x31\x30\x37\x2c\x31\x2e\x33\x33\x38\x38\x37\x20\x2d\x37\x2e\x32\ +\x31\x32\x30\x34\x32\x2c\x34\x2e\x38\x33\x33\x32\x33\x20\x2d\x38\ +\x2e\x34\x38\x36\x37\x37\x37\x2c\x39\x2e\x39\x32\x35\x32\x39\x20\ +\x2d\x31\x2e\x35\x34\x34\x34\x35\x35\x2c\x36\x2e\x31\x36\x35\x32\ +\x33\x20\x30\x2e\x37\x35\x33\x30\x34\x34\x2c\x39\x2e\x32\x34\x36\ +\x31\x32\x20\x30\x2e\x39\x34\x34\x38\x38\x35\x2c\x37\x2e\x30\x33\ +\x38\x35\x33\x20\x7a\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\ +\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\ +\x70\x61\x63\x69\x74\x79\x3a\x30\x2e\x33\x3b\x66\x69\x6c\x6c\x3a\ +\x23\x66\x66\x66\x66\x66\x66\x22\x20\x2f\x3e\x3c\x70\x61\x74\x68\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\ +\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\ +\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\ +\x6b\x65\x3a\x23\x66\x66\x66\x66\x66\x66\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x77\x69\x64\x74\x68\x3a\x35\x2e\x37\x38\x35\x31\x38\x35\ +\x38\x31\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\ +\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\ +\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\x69\x74\x65\x72\x3b\x73\x74\ +\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3a\ +\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x64\x61\x73\x68\x61\x72\x72\ +\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\ +\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x64\x3d\x22\x6d\x20\x2d\x34\x32\x2e\x38\x32\x31\x30\x38\ +\x35\x2c\x31\x33\x39\x2e\x31\x33\x30\x38\x20\x68\x20\x2d\x36\x2e\ +\x37\x34\x34\x33\x38\x37\x20\x6c\x20\x2d\x38\x2e\x33\x39\x33\x30\ +\x31\x38\x2c\x2d\x39\x2e\x32\x39\x32\x32\x36\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x38\x32\x33\ +\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ +\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\ +\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x6f\x64\ +\x65\x74\x79\x70\x65\x73\x3d\x22\x63\x63\x63\x22\x20\x2f\x3e\x3c\ +\x2f\x67\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x67\x33\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\ \x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\ \x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\ -\x20\x20\x20\x69\x64\x3d\x22\x67\x33\x35\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x67\x33\x33\x22\x0d\x0a\x20\x20\x20\ \x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\ \x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\ \x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x33\ -\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ +\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\ \x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\ \x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\ -\x20\x69\x64\x3d\x22\x67\x33\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x69\x64\x3d\x22\x67\x33\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\ \x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\ \x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\ -\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x34\x31\x22\ +\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x33\x39\x22\ \x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\ \x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\ \x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\ -\x64\x3d\x22\x67\x34\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\ +\x64\x3d\x22\x67\x34\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\ \x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\ \x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\ -\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x34\x35\x22\x0d\x0a\ +\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x34\x33\x22\x0d\x0a\ \x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ \x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\ \x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\ -\x22\x67\x34\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\ +\x22\x67\x34\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\ \x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\ \x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\ -\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x34\x39\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x34\x37\x22\x0d\x0a\x20\x20\ \x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\ \x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\ \x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\ -\x35\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\ +\x34\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\ \x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\ \x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\ -\x20\x20\x69\x64\x3d\x22\x67\x35\x33\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x69\x64\x3d\x22\x67\x35\x31\x22\x0d\x0a\x20\x20\x20\x20\ \x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\ \x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\ -\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x35\x35\ +\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x35\x33\ \x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\ \x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\ \x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x67\x35\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\ +\x69\x64\x3d\x22\x67\x35\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\ \x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\ \x61\x74\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x67\ -\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x35\x39\x22\x0d\ +\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x35\x37\x22\x0d\ \x0a\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\ \x22\x74\x72\x61\x6e\x73\x6c\x61\x74\x65\x28\x30\x2c\x32\x34\x37\ -\x29\x22\x20\x2f\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\ -\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x6f\x64\x65\x74\x79\ -\x70\x65\x73\x3d\x22\x63\x73\x63\x73\x73\x63\x73\x63\x63\x73\x63\ -\x63\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ -\x65\x3a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x2d\x64\x3d\x22\x4d\x20\ -\x31\x31\x2e\x36\x37\x34\x34\x39\x33\x2c\x31\x30\x34\x2e\x33\x30\ -\x31\x36\x37\x20\x43\x20\x32\x34\x2e\x31\x37\x39\x39\x34\x2c\x39\ -\x32\x2e\x32\x32\x31\x35\x31\x39\x20\x32\x37\x2e\x33\x30\x36\x30\ -\x36\x39\x2c\x38\x37\x2e\x30\x38\x39\x39\x31\x20\x33\x39\x2e\x38\ -\x30\x39\x36\x34\x2c\x37\x35\x2e\x30\x31\x32\x31\x32\x32\x20\x35\ -\x32\x2e\x33\x31\x33\x32\x30\x38\x2c\x36\x32\x2e\x39\x33\x34\x33\ -\x34\x36\x20\x36\x34\x2e\x38\x31\x39\x36\x2c\x38\x38\x2e\x31\x39\ -\x35\x31\x35\x38\x20\x37\x37\x2e\x33\x32\x33\x31\x36\x38\x2c\x39\ -\x32\x2e\x32\x32\x32\x37\x30\x32\x20\x63\x20\x31\x32\x2e\x35\x30\ -\x33\x35\x36\x37\x2c\x34\x2e\x30\x32\x37\x34\x39\x36\x20\x33\x2e\ -\x38\x36\x35\x38\x33\x33\x2c\x31\x35\x2e\x31\x36\x35\x31\x30\x38\ -\x20\x36\x2e\x39\x39\x31\x30\x32\x31\x2c\x33\x31\x2e\x32\x37\x31\ -\x36\x30\x38\x20\x33\x2e\x31\x32\x35\x31\x38\x32\x2c\x31\x36\x2e\ -\x31\x30\x36\x35\x32\x20\x32\x39\x2e\x32\x33\x31\x33\x36\x31\x2c\ -\x38\x2e\x35\x36\x30\x35\x31\x20\x34\x31\x2e\x37\x33\x34\x39\x33\ -\x31\x2c\x31\x32\x2e\x35\x38\x38\x30\x35\x20\x31\x32\x2e\x35\x30\ -\x33\x35\x37\x2c\x34\x2e\x30\x32\x37\x35\x33\x20\x37\x2e\x35\x34\ -\x35\x32\x38\x2c\x2d\x31\x31\x2e\x36\x35\x30\x33\x20\x31\x36\x2e\ -\x39\x32\x32\x37\x32\x2c\x2d\x33\x31\x2e\x37\x38\x30\x36\x39\x20\ -\x34\x2e\x36\x38\x34\x34\x34\x2c\x2d\x31\x30\x2e\x30\x35\x36\x30\ -\x30\x34\x20\x31\x36\x2e\x33\x39\x30\x32\x38\x2c\x2d\x31\x36\x2e\ -\x30\x39\x33\x36\x38\x34\x20\x32\x36\x2e\x39\x33\x33\x35\x36\x2c\ -\x2d\x31\x36\x2e\x36\x30\x36\x37\x37\x32\x20\x31\x30\x2e\x35\x36\ -\x32\x35\x38\x2c\x2d\x30\x2e\x35\x31\x34\x30\x30\x39\x20\x31\x30\ -\x2e\x35\x37\x39\x39\x36\x2c\x34\x2e\x35\x32\x37\x38\x30\x34\x20\ -\x31\x39\x2e\x39\x35\x38\x33\x36\x2c\x31\x36\x2e\x36\x30\x36\x37\ -\x37\x32\x20\x38\x2e\x32\x38\x37\x32\x38\x2c\x31\x39\x2e\x36\x36\ -\x32\x33\x37\x20\x31\x30\x2e\x31\x34\x31\x35\x34\x2c\x31\x35\x2e\ -\x34\x35\x30\x33\x34\x20\x31\x38\x2e\x37\x35\x36\x37\x35\x2c\x33\ -\x36\x2e\x32\x33\x36\x39\x36\x20\x31\x38\x2e\x37\x35\x36\x37\x38\ -\x2c\x31\x32\x2e\x30\x37\x38\x39\x36\x20\x39\x2e\x39\x31\x34\x37\ -\x35\x2c\x32\x33\x2e\x34\x36\x37\x31\x31\x20\x31\x38\x2e\x37\x35\ -\x36\x37\x38\x2c\x31\x32\x2e\x30\x37\x38\x39\x36\x20\x39\x2e\x33\ -\x37\x38\x33\x37\x2c\x2d\x31\x32\x2e\x30\x37\x38\x39\x36\x20\x31\ -\x32\x2e\x35\x30\x35\x34\x34\x2c\x2d\x35\x32\x2e\x33\x34\x33\x35\ -\x34\x20\x32\x38\x2e\x31\x33\x35\x31\x34\x2c\x2d\x36\x30\x2e\x33\ -\x39\x35\x30\x32\x31\x20\x31\x35\x2e\x36\x32\x39\x37\x2c\x2d\x38\ -\x2e\x30\x35\x31\x34\x32\x35\x20\x32\x35\x2e\x30\x30\x39\x39\x33\ -\x2c\x2d\x38\x2e\x30\x35\x33\x38\x35\x33\x20\x33\x37\x2e\x35\x31\ -\x33\x35\x33\x2c\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ -\x73\x63\x61\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\ -\x74\x3d\x22\x23\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x35\ -\x37\x35\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ -\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\ -\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\ -\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x35\x37\x35\x34\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\x31\x31\x2e\x36\x37\ -\x34\x34\x39\x33\x2c\x31\x30\x34\x2e\x33\x30\x31\x36\x37\x20\x63\ -\x20\x31\x2e\x33\x34\x30\x35\x37\x35\x2c\x2d\x37\x2e\x30\x33\x32\ -\x39\x34\x32\x20\x34\x2e\x37\x36\x31\x39\x34\x32\x2c\x2d\x31\x33\ -\x2e\x36\x35\x36\x30\x30\x39\x20\x39\x2e\x37\x32\x31\x37\x34\x36\ -\x2c\x2d\x31\x38\x2e\x38\x31\x39\x33\x31\x37\x20\x34\x2e\x39\x35\ -\x39\x38\x30\x35\x2c\x2d\x35\x2e\x31\x36\x33\x33\x30\x38\x20\x31\ -\x31\x2e\x34\x34\x30\x30\x31\x38\x2c\x2d\x38\x2e\x38\x34\x38\x30\ -\x38\x38\x20\x31\x38\x2e\x34\x31\x33\x34\x30\x31\x2c\x2d\x31\x30\ -\x2e\x34\x37\x30\x32\x33\x31\x20\x37\x2e\x32\x36\x31\x37\x33\x35\ -\x2c\x2d\x31\x2e\x36\x38\x39\x32\x31\x39\x20\x31\x35\x2e\x30\x38\ -\x30\x33\x33\x32\x2c\x2d\x31\x2e\x31\x31\x36\x33\x32\x20\x32\x31\ -\x2e\x38\x39\x38\x38\x39\x32\x2c\x31\x2e\x38\x39\x39\x32\x32\x20\ -\x36\x2e\x38\x31\x38\x35\x36\x31\x2c\x33\x2e\x30\x31\x35\x35\x34\ -\x20\x31\x32\x2e\x35\x36\x36\x36\x35\x36\x2c\x38\x2e\x35\x30\x37\ -\x32\x33\x39\x20\x31\x35\x2e\x36\x31\x34\x36\x33\x36\x2c\x31\x35\ -\x2e\x33\x31\x31\x33\x36\x20\x32\x2e\x31\x39\x30\x34\x39\x35\x2c\ -\x34\x2e\x38\x38\x39\x39\x32\x35\x20\x32\x2e\x39\x37\x30\x37\x36\ -\x35\x2c\x31\x30\x2e\x32\x37\x36\x33\x37\x38\x20\x33\x2e\x36\x36\ -\x38\x36\x34\x37\x2c\x31\x35\x2e\x35\x38\x38\x38\x37\x38\x20\x30\ -\x2e\x36\x39\x37\x38\x38\x32\x2c\x35\x2e\x33\x31\x32\x34\x39\x20\ -\x31\x2e\x33\x35\x32\x39\x34\x34\x2c\x31\x30\x2e\x36\x39\x39\x36\ -\x36\x20\x33\x2e\x33\x32\x32\x33\x37\x34\x2c\x31\x35\x2e\x36\x38\ -\x32\x37\x33\x20\x33\x2e\x31\x31\x39\x31\x31\x32\x2c\x37\x2e\x38\ -\x39\x32\x30\x31\x20\x39\x2e\x37\x30\x31\x32\x34\x32\x2c\x31\x34\ -\x2e\x34\x35\x34\x35\x31\x20\x31\x37\x2e\x37\x37\x36\x30\x32\x31\ -\x2c\x31\x37\x2e\x30\x36\x34\x32\x20\x34\x2e\x30\x33\x37\x34\x2c\ -\x31\x2e\x33\x30\x34\x38\x34\x20\x38\x2e\x33\x39\x35\x36\x35\x2c\ -\x31\x2e\x36\x33\x31\x37\x35\x20\x31\x32\x2e\x35\x37\x30\x36\x38\ -\x2c\x30\x2e\x38\x37\x35\x33\x20\x34\x2e\x31\x37\x35\x30\x34\x2c\ -\x2d\x30\x2e\x37\x35\x36\x34\x35\x20\x38\x2e\x31\x35\x36\x37\x36\ -\x2c\x2d\x32\x2e\x36\x30\x31\x37\x37\x20\x31\x31\x2e\x33\x38\x38\ -\x32\x33\x2c\x2d\x35\x2e\x33\x35\x31\x34\x35\x20\x34\x2e\x36\x31\ -\x32\x33\x38\x2c\x2d\x33\x2e\x39\x32\x34\x37\x31\x20\x37\x2e\x35\ -\x32\x36\x32\x34\x2c\x2d\x39\x2e\x34\x37\x30\x31\x20\x39\x2e\x38\ -\x32\x39\x33\x36\x2c\x2d\x31\x35\x2e\x30\x37\x31\x32\x36\x20\x32\ -\x2e\x33\x30\x33\x31\x31\x2c\x2d\x35\x2e\x36\x30\x31\x31\x37\x20\ -\x34\x2e\x31\x32\x33\x36\x32\x2c\x2d\x31\x31\x2e\x34\x33\x31\x33\ -\x36\x20\x37\x2e\x30\x39\x33\x33\x36\x2c\x2d\x31\x36\x2e\x37\x30\ -\x39\x34\x33\x20\x32\x2e\x37\x33\x30\x38\x32\x2c\x2d\x34\x2e\x38\ -\x35\x33\x34\x33\x39\x20\x36\x2e\x34\x35\x35\x38\x31\x2c\x2d\x39\ -\x2e\x32\x30\x36\x38\x37\x33\x20\x31\x31\x2e\x31\x31\x30\x36\x39\ -\x2c\x2d\x31\x32\x2e\x32\x36\x33\x38\x37\x37\x20\x34\x2e\x36\x35\ -\x34\x38\x39\x2c\x2d\x33\x2e\x30\x35\x37\x30\x30\x33\x20\x31\x30\ -\x2e\x32\x36\x39\x37\x36\x2c\x2d\x34\x2e\x37\x36\x32\x36\x39\x39\ -\x20\x31\x35\x2e\x38\x32\x32\x38\x37\x2c\x2d\x34\x2e\x33\x34\x32\ -\x38\x39\x35\x20\x34\x2e\x36\x30\x32\x39\x34\x2c\x30\x2e\x33\x34\ -\x37\x39\x37\x33\x20\x39\x2e\x30\x38\x33\x39\x33\x2c\x32\x2e\x31\ -\x36\x32\x33\x32\x38\x20\x31\x32\x2e\x36\x33\x32\x32\x39\x2c\x35\ -\x2e\x31\x31\x34\x38\x32\x20\x33\x2e\x35\x34\x38\x33\x37\x2c\x32\ -\x2e\x39\x35\x32\x34\x39\x32\x20\x36\x2e\x31\x34\x37\x31\x31\x2c\ -\x37\x2e\x30\x32\x38\x39\x37\x36\x20\x37\x2e\x33\x32\x36\x30\x37\ -\x2c\x31\x31\x2e\x34\x39\x31\x39\x35\x32\x20\x6c\x20\x31\x38\x2e\ -\x37\x35\x36\x37\x35\x2c\x33\x36\x2e\x32\x33\x36\x39\x36\x20\x63\ -\x20\x31\x2e\x30\x31\x31\x39\x31\x2c\x33\x2e\x39\x36\x32\x35\x36\ -\x20\x33\x2e\x35\x36\x37\x34\x2c\x37\x2e\x35\x30\x39\x34\x33\x20\ -\x37\x2e\x30\x30\x35\x38\x33\x2c\x39\x2e\x37\x32\x33\x37\x20\x33\ -\x2e\x34\x33\x38\x34\x33\x2c\x32\x2e\x32\x31\x34\x32\x38\x20\x37\ -\x2e\x37\x32\x34\x37\x37\x2c\x33\x2e\x30\x37\x33\x34\x20\x31\x31\ -\x2e\x37\x35\x30\x39\x35\x2c\x32\x2e\x33\x35\x35\x32\x36\x20\x32\ -\x2e\x38\x39\x31\x34\x37\x2c\x2d\x30\x2e\x35\x31\x35\x37\x34\x20\ -\x35\x2e\x36\x32\x30\x32\x31\x2c\x2d\x31\x2e\x38\x31\x35\x30\x33\ -\x20\x37\x2e\x39\x34\x34\x32\x32\x2c\x2d\x33\x2e\x36\x31\x31\x30\ -\x34\x20\x32\x2e\x33\x32\x34\x2c\x2d\x31\x2e\x37\x39\x36\x20\x34\ -\x2e\x32\x35\x30\x35\x32\x2c\x2d\x34\x2e\x30\x37\x39\x34\x33\x20\ -\x35\x2e\x37\x37\x30\x33\x35\x2c\x2d\x36\x2e\x35\x39\x32\x37\x34\ -\x20\x33\x2e\x30\x33\x39\x36\x36\x2c\x2d\x35\x2e\x30\x32\x36\x36\ -\x32\x20\x34\x2e\x34\x33\x33\x36\x36\x2c\x2d\x31\x30\x2e\x38\x37\ -\x35\x35\x38\x20\x35\x2e\x32\x37\x32\x32\x36\x2c\x2d\x31\x36\x2e\ -\x36\x38\x39\x36\x33\x20\x30\x2e\x38\x33\x38\x35\x39\x2c\x2d\x35\ -\x2e\x38\x31\x34\x30\x36\x20\x31\x2e\x31\x36\x36\x36\x33\x2c\x2d\ -\x31\x31\x2e\x37\x30\x33\x31\x34\x20\x32\x2e\x32\x38\x39\x38\x36\ -\x2c\x2d\x31\x37\x2e\x34\x36\x38\x39\x37\x20\x31\x2e\x31\x32\x33\ -\x32\x32\x2c\x2d\x35\x2e\x37\x36\x35\x38\x33\x20\x33\x2e\x31\x31\ -\x33\x32\x38\x2c\x2d\x31\x31\x2e\x35\x30\x37\x31\x33\x38\x20\x36\ -\x2e\x38\x35\x38\x34\x35\x2c\x2d\x31\x36\x2e\x30\x33\x32\x36\x34\ -\x31\x20\x34\x2e\x35\x35\x30\x35\x33\x2c\x2d\x35\x2e\x34\x39\x38\ -\x36\x36\x38\x20\x31\x31\x2e\x36\x31\x39\x33\x35\x2c\x2d\x38\x2e\ -\x38\x32\x34\x32\x34\x34\x20\x31\x38\x2e\x37\x35\x36\x37\x37\x2c\ -\x2d\x38\x2e\x38\x32\x34\x32\x34\x34\x20\x37\x2e\x31\x33\x37\x34\ -\x31\x2c\x30\x20\x31\x34\x2e\x32\x30\x36\x32\x33\x2c\x33\x2e\x33\ -\x32\x35\x35\x37\x36\x20\x31\x38\x2e\x37\x35\x36\x37\x36\x2c\x38\ -\x2e\x38\x32\x34\x32\x34\x34\x22\x0d\x0a\x20\x20\x20\x20\x20\x73\ -\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\ -\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\ -\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x36\x36\x36\x36\x36\x36\ -\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x36\ -\x2e\x36\x33\x38\x35\x31\x39\x32\x39\x3b\x73\x74\x72\x6f\x6b\x65\ -\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\x73\x74\ -\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\x69\ -\x74\x65\x72\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\ -\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x64\ -\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\ -\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x20\ -\x2f\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\ -\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\ -\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x38\x32\x37\ -\x22\x0d\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\x32\x38\x37\ -\x2e\x38\x33\x33\x39\x35\x2c\x32\x31\x30\x2e\x33\x37\x30\x33\x39\ -\x20\x2d\x31\x34\x31\x2e\x39\x32\x38\x33\x32\x2c\x2d\x37\x37\x2e\ -\x36\x37\x32\x36\x33\x20\x36\x30\x2e\x39\x34\x33\x31\x36\x2c\x31\ -\x35\x31\x2e\x33\x36\x38\x38\x32\x20\x32\x34\x2e\x32\x36\x34\x36\ -\x33\x2c\x2d\x33\x39\x2e\x32\x39\x38\x37\x34\x20\x34\x37\x2e\x39\ -\x37\x36\x39\x35\x2c\x35\x32\x2e\x34\x35\x34\x30\x34\x20\x31\x38\ -\x2e\x31\x37\x30\x31\x36\x2c\x2d\x31\x37\x2e\x37\x30\x36\x39\x38\ -\x20\x2d\x34\x39\x2e\x30\x35\x30\x30\x36\x2c\x2d\x35\x31\x2e\x39\ -\x35\x30\x35\x33\x20\x7a\x22\x0d\x0a\x20\x20\x20\x20\x20\x73\x74\ -\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\x66\x66\x66\ -\x66\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\ -\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\ -\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\ -\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x37\ -\x2e\x36\x33\x33\x37\x34\x39\x39\x36\x3b\x73\x74\x72\x6f\x6b\x65\ -\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\x64\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x72\ -\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\ -\x72\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ -\x64\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\ -\x20\x2f\x3e\x3c\x74\x65\x78\x74\x0d\x0a\x20\x20\x20\x20\x20\x78\ -\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\x72\ -\x76\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\ -\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x6e\x6f\x72\x6d\ -\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x3a\ -\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x77\x65\x69\x67\ -\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x73\ -\x74\x72\x65\x74\x63\x68\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\ -\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x33\x35\x2e\x34\x39\x35\x35\ -\x39\x30\x32\x31\x70\x78\x3b\x6c\x69\x6e\x65\x2d\x68\x65\x69\x67\ -\x68\x74\x3a\x31\x32\x35\x25\x3b\x66\x6f\x6e\x74\x2d\x66\x61\x6d\ -\x69\x6c\x79\x3a\x27\x41\x72\x69\x61\x6c\x20\x52\x6f\x75\x6e\x64\ -\x65\x64\x20\x4d\x54\x20\x42\x6f\x6c\x64\x27\x3b\x2d\x69\x6e\x6b\ -\x73\x63\x61\x70\x65\x2d\x66\x6f\x6e\x74\x2d\x73\x70\x65\x63\x69\ -\x66\x69\x63\x61\x74\x69\x6f\x6e\x3a\x27\x41\x72\x69\x61\x6c\x20\ -\x52\x6f\x75\x6e\x64\x65\x64\x20\x4d\x54\x20\x42\x6f\x6c\x64\x2c\ -\x20\x4e\x6f\x72\x6d\x61\x6c\x27\x3b\x66\x6f\x6e\x74\x2d\x76\x61\ -\x72\x69\x61\x6e\x74\x2d\x6c\x69\x67\x61\x74\x75\x72\x65\x73\x3a\ -\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\ -\x61\x6e\x74\x2d\x63\x61\x70\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\ -\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x6e\x75\x6d\ -\x65\x72\x69\x63\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\ -\x2d\x66\x65\x61\x74\x75\x72\x65\x2d\x73\x65\x74\x74\x69\x6e\x67\ -\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x74\x65\x78\x74\x2d\x61\x6c\ -\x69\x67\x6e\x3a\x73\x74\x61\x72\x74\x3b\x6c\x65\x74\x74\x65\x72\ -\x2d\x73\x70\x61\x63\x69\x6e\x67\x3a\x30\x70\x78\x3b\x77\x6f\x72\ -\x64\x2d\x73\x70\x61\x63\x69\x6e\x67\x3a\x30\x70\x78\x3b\x77\x72\ -\x69\x74\x69\x6e\x67\x2d\x6d\x6f\x64\x65\x3a\x6c\x72\x2d\x74\x62\ -\x3b\x74\x65\x78\x74\x2d\x61\x6e\x63\x68\x6f\x72\x3a\x73\x74\x61\ -\x72\x74\x3b\x66\x69\x6c\x6c\x3a\x23\x36\x36\x36\x36\x36\x36\x3b\ -\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x73\ -\x74\x72\x6f\x6b\x65\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\ -\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x2e\x35\x34\x30\x35\x32\x35\ -\x39\x31\x70\x78\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\ -\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ -\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\x69\x74\x65\x72\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x78\x3d\x22\x30\x2e\x39\x30\x33\x34\ -\x38\x31\x38\x34\x22\x0d\x0a\x20\x20\x20\x20\x20\x79\x3d\x22\x33\ -\x35\x30\x2e\x33\x36\x30\x30\x38\x22\x0d\x0a\x20\x20\x20\x20\x20\ -\x69\x64\x3d\x22\x74\x65\x78\x74\x31\x38\x38\x39\x33\x22\x0d\x0a\ -\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ -\x73\x63\x61\x6c\x65\x28\x31\x2e\x32\x31\x35\x34\x37\x39\x33\x2c\ -\x30\x2e\x38\x32\x32\x37\x32\x30\x37\x31\x29\x22\x3e\x3c\x74\x73\ -\x70\x61\x6e\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x6f\x64\x69\ -\x70\x6f\x64\x69\x3a\x72\x6f\x6c\x65\x3d\x22\x6c\x69\x6e\x65\x22\ -\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x74\x73\x70\ -\x61\x6e\x31\x38\x38\x39\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ -\x20\x78\x3d\x22\x30\x2e\x39\x30\x33\x34\x38\x31\x38\x34\x22\x0d\ -\x0a\x20\x20\x20\x20\x20\x20\x20\x79\x3d\x22\x33\x35\x30\x2e\x33\ -\x36\x30\x30\x38\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\ -\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\ -\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\ -\x61\x6e\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\ -\x77\x65\x69\x67\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\ -\x6e\x74\x2d\x73\x74\x72\x65\x74\x63\x68\x3a\x6e\x6f\x72\x6d\x61\ -\x6c\x3b\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x31\x33\x35\x2e\ -\x34\x39\x35\x35\x39\x30\x32\x31\x70\x78\x3b\x66\x6f\x6e\x74\x2d\ -\x66\x61\x6d\x69\x6c\x79\x3a\x27\x41\x72\x69\x61\x6c\x20\x52\x6f\ -\x75\x6e\x64\x65\x64\x20\x4d\x54\x20\x42\x6f\x6c\x64\x27\x3b\x2d\ -\x69\x6e\x6b\x73\x63\x61\x70\x65\x2d\x66\x6f\x6e\x74\x2d\x73\x70\ -\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x3a\x27\x41\x72\x69\ -\x61\x6c\x20\x52\x6f\x75\x6e\x64\x65\x64\x20\x4d\x54\x20\x42\x6f\ -\x6c\x64\x2c\x20\x4e\x6f\x72\x6d\x61\x6c\x27\x3b\x66\x6f\x6e\x74\ -\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x6c\x69\x67\x61\x74\x75\x72\ -\x65\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\ -\x61\x72\x69\x61\x6e\x74\x2d\x63\x61\x70\x73\x3a\x6e\x6f\x72\x6d\ -\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\ -\x6e\x75\x6d\x65\x72\x69\x63\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\ -\x6f\x6e\x74\x2d\x66\x65\x61\x74\x75\x72\x65\x2d\x73\x65\x74\x74\ -\x69\x6e\x67\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x74\x65\x78\x74\ -\x2d\x61\x6c\x69\x67\x6e\x3a\x73\x74\x61\x72\x74\x3b\x77\x72\x69\ -\x74\x69\x6e\x67\x2d\x6d\x6f\x64\x65\x3a\x6c\x72\x2d\x74\x62\x3b\ -\x74\x65\x78\x74\x2d\x61\x6e\x63\x68\x6f\x72\x3a\x73\x74\x61\x72\ -\x74\x3b\x66\x69\x6c\x6c\x3a\x23\x36\x36\x36\x36\x36\x36\x3b\x73\ -\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x2e\x35\x34\ -\x30\x35\x32\x35\x39\x31\x70\x78\x22\x3e\x74\x3c\x2f\x74\x73\x70\ -\x61\x6e\x3e\x3c\x2f\x74\x65\x78\x74\x3e\x0d\x0a\x3c\x2f\x73\x76\ -\x67\x3e\ +\x29\x22\x20\x2f\x3e\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x67\x35\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x74\x72\x61\ +\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\x6c\x61\x74\ +\x65\x28\x30\x2c\x32\x34\x37\x29\x22\x20\x2f\x3e\x3c\x70\x61\x74\ +\x68\x0d\x0a\x20\x20\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\ +\x3a\x6e\x6f\x64\x65\x74\x79\x70\x65\x73\x3d\x22\x63\x73\x61\x63\ +\x61\x73\x73\x63\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x2d\x64\x3d\ +\x22\x6d\x20\x31\x33\x2e\x36\x37\x34\x34\x39\x33\x2c\x39\x32\x2e\ +\x33\x30\x31\x36\x37\x20\x63\x20\x34\x2e\x37\x37\x30\x36\x34\x2c\ +\x2d\x31\x38\x2e\x31\x35\x37\x35\x20\x31\x39\x2e\x31\x31\x36\x32\ +\x38\x2c\x2d\x32\x37\x2e\x36\x35\x34\x34\x33\x20\x32\x38\x2e\x31\ +\x33\x35\x31\x34\x37\x2c\x2d\x32\x39\x2e\x32\x38\x39\x35\x35\x20\ +\x32\x33\x2e\x35\x39\x36\x30\x32\x38\x2c\x2d\x34\x2e\x32\x37\x37\ +\x39\x36\x20\x33\x36\x2e\x38\x34\x38\x32\x34\x38\x2c\x33\x38\x2e\ +\x38\x34\x36\x33\x36\x20\x36\x30\x2e\x38\x32\x35\x31\x32\x2c\x33\ +\x38\x2e\x34\x31\x38\x33\x31\x20\x32\x33\x2e\x30\x34\x39\x30\x36\ +\x2c\x2d\x30\x2e\x34\x31\x31\x34\x38\x20\x32\x38\x2e\x36\x37\x35\ +\x38\x31\x2c\x2d\x34\x33\x2e\x34\x35\x33\x30\x36\x20\x35\x37\x2e\ +\x31\x31\x35\x39\x34\x2c\x2d\x33\x38\x2e\x39\x39\x35\x32\x20\x32\ +\x31\x2e\x34\x33\x30\x36\x38\x2c\x34\x2e\x31\x38\x38\x30\x32\x20\ +\x32\x32\x2e\x31\x30\x33\x36\x32\x2c\x34\x36\x2e\x39\x39\x38\x33\ +\x31\x20\x34\x30\x2e\x39\x32\x35\x30\x36\x2c\x36\x33\x2e\x38\x39\ +\x33\x34\x36\x20\x37\x2e\x39\x35\x33\x30\x32\x2c\x37\x2e\x31\x33\ +\x39\x30\x36\x20\x31\x39\x2e\x38\x35\x39\x35\x2c\x32\x35\x2e\x36\ +\x37\x37\x30\x35\x20\x32\x38\x2e\x37\x30\x31\x35\x33\x2c\x31\x34\ +\x2e\x32\x38\x38\x39\x20\x39\x2e\x33\x37\x38\x33\x37\x2c\x2d\x31\ +\x32\x2e\x30\x37\x38\x39\x36\x20\x31\x38\x2e\x30\x35\x38\x32\x36\ +\x2c\x2d\x32\x36\x2e\x39\x37\x38\x33\x20\x32\x37\x2e\x30\x33\x30\ +\x31\x37\x2c\x2d\x34\x30\x2e\x35\x30\x35\x35\x32\x20\x39\x2e\x36\ +\x39\x34\x39\x36\x2c\x2d\x31\x34\x2e\x36\x31\x37\x33\x37\x20\x31\ +\x33\x2e\x34\x30\x37\x37\x32\x2c\x2d\x32\x35\x2e\x31\x38\x30\x39\ +\x32\x20\x33\x38\x2e\x36\x31\x38\x35\x2c\x2d\x31\x39\x2e\x38\x38\ +\x39\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x3d\x22\ +\x23\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x35\x37\x35\x36\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\ +\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\ +\x64\x3d\x22\x70\x61\x74\x68\x35\x37\x35\x34\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x64\x3d\x22\x4d\x20\x31\x33\x2e\x36\x37\x34\x34\x39\ +\x33\x2c\x39\x32\x2e\x33\x30\x31\x36\x37\x20\x43\x20\x31\x32\x2e\ +\x32\x35\x34\x30\x39\x31\x2c\x38\x34\x2e\x35\x33\x35\x31\x20\x31\ +\x34\x2e\x37\x37\x36\x34\x30\x34\x2c\x37\x36\x2e\x31\x35\x30\x31\ +\x39\x31\x20\x32\x30\x2e\x32\x34\x35\x39\x35\x2c\x37\x30\x2e\x34\ +\x35\x36\x32\x32\x37\x20\x32\x35\x2e\x37\x31\x35\x34\x39\x36\x2c\ +\x36\x34\x2e\x37\x36\x32\x32\x36\x32\x20\x33\x33\x2e\x39\x39\x32\ +\x32\x35\x39\x2c\x36\x31\x2e\x39\x30\x35\x20\x34\x31\x2e\x38\x30\ +\x39\x36\x34\x2c\x36\x33\x2e\x30\x31\x32\x31\x32\x20\x63\x20\x36\ +\x2e\x31\x31\x37\x37\x34\x39\x2c\x30\x2e\x38\x36\x36\x34\x31\x33\ +\x20\x31\x31\x2e\x37\x33\x31\x36\x39\x34\x2c\x33\x2e\x39\x38\x31\ +\x36\x30\x32\x20\x31\x36\x2e\x35\x32\x36\x39\x30\x33\x2c\x37\x2e\ +\x38\x37\x38\x32\x30\x32\x20\x34\x2e\x37\x39\x35\x32\x30\x39\x2c\ +\x33\x2e\x38\x39\x36\x36\x30\x31\x20\x38\x2e\x38\x37\x39\x39\x33\ +\x34\x2c\x38\x2e\x35\x37\x38\x31\x30\x35\x20\x31\x33\x2e\x30\x36\ +\x35\x37\x31\x38\x2c\x31\x33\x2e\x31\x32\x33\x30\x37\x33\x20\x34\ +\x2e\x31\x38\x35\x37\x38\x34\x2c\x34\x2e\x35\x34\x34\x39\x36\x39\ +\x20\x38\x2e\x35\x34\x36\x31\x32\x38\x2c\x39\x2e\x30\x31\x37\x34\ +\x35\x38\x20\x31\x33\x2e\x37\x33\x37\x37\x31\x32\x2c\x31\x32\x2e\ +\x33\x36\x37\x38\x32\x39\x20\x35\x2e\x31\x39\x31\x35\x38\x34\x2c\ +\x33\x2e\x33\x35\x30\x33\x37\x20\x31\x31\x2e\x33\x33\x34\x37\x31\ +\x37\x2c\x35\x2e\x35\x32\x39\x38\x39\x36\x20\x31\x37\x2e\x34\x39\ +\x34\x37\x38\x37\x2c\x35\x2e\x30\x34\x39\x32\x30\x36\x20\x35\x2e\ +\x39\x32\x39\x39\x31\x2c\x2d\x30\x2e\x34\x36\x32\x37\x33\x20\x31\ +\x31\x2e\x34\x35\x39\x34\x37\x2c\x2d\x33\x2e\x33\x35\x30\x30\x35\ +\x34\x20\x31\x36\x2e\x30\x35\x39\x39\x35\x2c\x2d\x37\x2e\x31\x32\ +\x30\x31\x34\x38\x20\x34\x2e\x36\x30\x30\x34\x37\x2c\x2d\x33\x2e\ +\x37\x37\x30\x30\x39\x33\x20\x38\x2e\x33\x39\x34\x35\x2c\x2d\x38\ +\x2e\x34\x31\x30\x35\x36\x33\x20\x31\x32\x2e\x32\x30\x30\x35\x2c\ +\x2d\x31\x32\x2e\x39\x38\x31\x33\x37\x36\x20\x33\x2e\x38\x30\x35\ +\x39\x39\x2c\x2d\x34\x2e\x35\x37\x30\x38\x31\x33\x20\x37\x2e\x36\ +\x39\x38\x33\x37\x2c\x2d\x39\x2e\x31\x34\x34\x38\x34\x35\x20\x31\ +\x32\x2e\x34\x34\x31\x38\x34\x2c\x2d\x31\x32\x2e\x37\x33\x33\x33\ +\x36\x35\x20\x34\x2e\x37\x34\x33\x34\x37\x2c\x2d\x33\x2e\x35\x38\ +\x38\x35\x31\x39\x20\x31\x30\x2e\x34\x36\x35\x37\x31\x2c\x2d\x36\ +\x2e\x31\x35\x39\x33\x37\x38\x20\x31\x36\x2e\x34\x31\x33\x36\x35\ +\x2c\x2d\x36\x2e\x31\x36\x30\x33\x31\x31\x20\x36\x2e\x37\x35\x38\ +\x37\x39\x2c\x2d\x30\x2e\x30\x30\x31\x31\x20\x31\x33\x2e\x32\x33\ +\x34\x31\x2c\x33\x2e\x33\x36\x30\x36\x31\x36\x20\x31\x37\x2e\x39\ +\x37\x30\x35\x34\x2c\x38\x2e\x31\x38\x32\x31\x37\x20\x34\x2e\x37\ +\x33\x36\x34\x34\x2c\x34\x2e\x38\x32\x31\x35\x35\x35\x20\x37\x2e\ +\x38\x38\x35\x37\x35\x2c\x31\x30\x2e\x39\x39\x39\x30\x36\x31\x20\ +\x31\x30\x2e\x31\x34\x32\x36\x34\x2c\x31\x37\x2e\x33\x36\x39\x39\ +\x30\x39\x20\x34\x2e\x35\x31\x33\x37\x38\x2c\x31\x32\x2e\x37\x34\ +\x31\x36\x39\x31\x20\x35\x2e\x38\x31\x39\x35\x36\x2c\x32\x36\x2e\ +\x37\x37\x32\x37\x38\x31\x20\x31\x32\x2e\x38\x31\x31\x38\x38\x2c\ +\x33\x38\x2e\x33\x34\x31\x33\x38\x31\x20\x32\x2e\x39\x37\x35\x30\ +\x34\x2c\x34\x2e\x39\x32\x32\x31\x32\x20\x36\x2e\x39\x39\x38\x37\ +\x34\x2c\x39\x2e\x33\x31\x30\x37\x33\x20\x31\x32\x2e\x30\x33\x36\ +\x36\x39\x2c\x31\x32\x2e\x30\x38\x35\x30\x39\x20\x35\x2e\x30\x33\ +\x37\x39\x36\x2c\x32\x2e\x37\x37\x34\x33\x37\x20\x31\x31\x2e\x31\ +\x34\x35\x34\x35\x2c\x33\x2e\x38\x32\x30\x37\x33\x20\x31\x36\x2e\ +\x36\x36\x34\x38\x34\x2c\x32\x2e\x32\x30\x33\x38\x31\x20\x34\x2e\ +\x30\x32\x36\x30\x37\x2c\x2d\x31\x2e\x31\x37\x39\x34\x35\x20\x37\ +\x2e\x35\x37\x36\x37\x34\x2c\x2d\x33\x2e\x37\x30\x34\x30\x37\x20\ +\x31\x30\x2e\x33\x39\x33\x30\x32\x2c\x2d\x36\x2e\x38\x31\x33\x35\ +\x35\x20\x32\x2e\x38\x31\x36\x32\x39\x2c\x2d\x33\x2e\x31\x30\x39\ +\x34\x38\x20\x34\x2e\x39\x33\x37\x36\x38\x2c\x2d\x36\x2e\x37\x39\ +\x30\x39\x32\x20\x36\x2e\x36\x38\x34\x37\x31\x2c\x2d\x31\x30\x2e\ +\x36\x30\x35\x31\x34\x20\x33\x2e\x34\x39\x34\x30\x36\x2c\x2d\x37\ +\x2e\x36\x32\x38\x34\x32\x20\x35\x2e\x35\x38\x39\x34\x35\x2c\x2d\ +\x31\x35\x2e\x39\x31\x39\x38\x35\x20\x39\x2e\x39\x35\x32\x34\x34\ +\x2c\x2d\x32\x33\x2e\x30\x38\x36\x38\x33\x20\x33\x2e\x39\x36\x30\ +\x31\x37\x2c\x2d\x36\x2e\x35\x30\x35\x32\x38\x36\x20\x39\x2e\x37\ +\x34\x31\x34\x36\x2c\x2d\x31\x31\x2e\x38\x38\x38\x37\x30\x33\x20\ +\x31\x36\x2e\x35\x31\x32\x31\x34\x2c\x2d\x31\x35\x2e\x33\x37\x35\ +\x37\x37\x32\x20\x36\x2e\x37\x37\x30\x36\x37\x2c\x2d\x33\x2e\x34\ +\x38\x37\x30\x37\x20\x31\x34\x2e\x35\x31\x30\x36\x33\x2c\x2d\x35\ +\x2e\x30\x36\x37\x34\x33\x31\x20\x32\x32\x2e\x31\x30\x36\x33\x36\ +\x2c\x2d\x34\x2e\x35\x31\x33\x37\x32\x38\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\ +\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\ +\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x36\x36\x36\ +\x36\x36\x36\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\ +\x3a\x31\x36\x2e\x36\x33\x38\x35\x31\x39\x32\x39\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\ +\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\ +\x3a\x6d\x69\x74\x65\x72\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\ +\x74\x65\x72\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x64\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\ +\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\ +\x31\x22\x20\x2f\x3e\x3c\x70\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\ +\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\ +\x38\x32\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\ +\x32\x35\x39\x2e\x38\x33\x33\x39\x35\x2c\x31\x39\x36\x2e\x33\x37\ +\x30\x33\x39\x20\x2d\x31\x34\x31\x2e\x39\x32\x38\x33\x32\x2c\x2d\ +\x37\x37\x2e\x36\x37\x32\x36\x33\x20\x36\x30\x2e\x39\x34\x33\x31\ +\x36\x2c\x31\x35\x31\x2e\x33\x36\x38\x38\x32\x20\x32\x34\x2e\x32\ +\x36\x34\x36\x33\x2c\x2d\x33\x39\x2e\x32\x39\x38\x37\x34\x20\x34\ +\x37\x2e\x39\x37\x36\x39\x35\x2c\x35\x32\x2e\x34\x35\x34\x30\x34\ +\x20\x31\x38\x2e\x31\x37\x30\x31\x36\x2c\x2d\x31\x37\x2e\x37\x30\ +\x36\x39\x38\x20\x2d\x34\x39\x2e\x30\x35\x30\x30\x36\x2c\x2d\x35\ +\x31\x2e\x39\x35\x30\x35\x33\x20\x7a\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x66\x66\ +\x66\x66\x66\x66\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\ +\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\ +\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\ +\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\ +\x68\x3a\x37\x2e\x36\x33\x33\x37\x34\x39\x39\x36\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x72\x6f\x75\x6e\ +\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\ +\x6e\x3a\x72\x6f\x75\x6e\x64\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\ +\x69\x74\x65\x72\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\ +\x6b\x65\x2d\x64\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\ +\x65\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\ +\x3a\x31\x22\x20\x2f\x3e\x3c\x2f\x73\x76\x67\x3e\ \x00\x00\x0b\x7e\ \x00\ \x00\x34\x97\x78\x9c\xed\x5a\x59\x8f\xdb\x46\x12\x7e\x0f\x90\xff\ @@ -8469,6 +8433,617 @@ qt_resource_data = "\ \xab\xdb\x7c\x51\xb9\x5d\x56\xa7\x5f\xc1\x50\x9d\xe1\x08\xd3\xdc\ \xe8\x65\xb3\x81\x6b\x44\xc0\x87\xf4\xdc\xf9\x74\xa9\x5b\x5b\x11\ \xa5\x3e\xe9\xfd\x00\xfc\xfd\x7f\x25\xc1\x42\x6a\ +\x00\x00\x26\x09\ +\x3c\ +\x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ +\x30\x22\x20\x65\x6e\x63\x6f\x64\x69\x6e\x67\x3d\x22\x55\x54\x46\ +\x2d\x38\x22\x20\x73\x74\x61\x6e\x64\x61\x6c\x6f\x6e\x65\x3d\x22\ +\x6e\x6f\x22\x3f\x3e\x0d\x0a\x3c\x21\x2d\x2d\x20\x43\x72\x65\x61\ +\x74\x65\x64\x20\x77\x69\x74\x68\x20\x49\x6e\x6b\x73\x63\x61\x70\ +\x65\x20\x28\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x29\x20\x2d\x2d\x3e\ +\x0d\x0a\x0d\x0a\x3c\x73\x76\x67\x0d\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x64\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\ +\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x65\x6c\x65\x6d\x65\x6e\ +\x74\x73\x2f\x31\x2e\x31\x2f\x22\x0d\x0a\x20\x20\x20\x78\x6d\x6c\ +\x6e\x73\x3a\x63\x63\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x63\x72\ +\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\x2e\x6f\x72\ +\x67\x2f\x6e\x73\x23\x22\x0d\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\ +\x3a\x72\x64\x66\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\ +\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x31\x39\x39\x39\x2f\x30\x32\x2f\ +\x32\x32\x2d\x72\x64\x66\x2d\x73\x79\x6e\x74\x61\x78\x2d\x6e\x73\ +\x23\x22\x0d\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\x76\x67\ +\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x77\x33\x2e\ +\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\x73\x76\x67\x22\x0d\x0a\x20\ +\x20\x20\x78\x6d\x6c\x6e\x73\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ +\x77\x77\x77\x2e\x77\x33\x2e\x6f\x72\x67\x2f\x32\x30\x30\x30\x2f\ +\x73\x76\x67\x22\x0d\x0a\x20\x20\x20\x78\x6d\x6c\x6e\x73\x3a\x73\ +\x6f\x64\x69\x70\x6f\x64\x69\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\ +\x73\x6f\x64\x69\x70\x6f\x64\x69\x2e\x73\x6f\x75\x72\x63\x65\x66\ +\x6f\x72\x67\x65\x2e\x6e\x65\x74\x2f\x44\x54\x44\x2f\x73\x6f\x64\ +\x69\x70\x6f\x64\x69\x2d\x30\x2e\x64\x74\x64\x22\x0d\x0a\x20\x20\ +\x20\x78\x6d\x6c\x6e\x73\x3a\x69\x6e\x6b\x73\x63\x61\x70\x65\x3d\ +\x22\x68\x74\x74\x70\x3a\x2f\x2f\x77\x77\x77\x2e\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x2e\x6f\x72\x67\x2f\x6e\x61\x6d\x65\x73\x70\x61\ +\x63\x65\x73\x2f\x69\x6e\x6b\x73\x63\x61\x70\x65\x22\x0d\x0a\x20\ +\x20\x20\x77\x69\x64\x74\x68\x3d\x22\x32\x35\x36\x22\x0d\x0a\x20\ +\x20\x20\x68\x65\x69\x67\x68\x74\x3d\x22\x32\x35\x36\x22\x0d\x0a\ +\x20\x20\x20\x76\x69\x65\x77\x42\x6f\x78\x3d\x22\x30\x20\x30\x20\ +\x36\x37\x2e\x37\x33\x33\x33\x33\x35\x20\x36\x37\x2e\x37\x33\x33\ +\x33\x33\x35\x22\x0d\x0a\x20\x20\x20\x76\x65\x72\x73\x69\x6f\x6e\ +\x3d\x22\x31\x2e\x31\x22\x0d\x0a\x20\x20\x20\x69\x64\x3d\x22\x73\ +\x76\x67\x32\x36\x36\x39\x22\x0d\x0a\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x30\x2e\ +\x39\x32\x2e\x32\x20\x35\x63\x33\x65\x38\x30\x64\x2c\x20\x32\x30\ +\x31\x37\x2d\x30\x38\x2d\x30\x36\x22\x0d\x0a\x20\x20\x20\x73\x6f\ +\x64\x69\x70\x6f\x64\x69\x3a\x64\x6f\x63\x6e\x61\x6d\x65\x3d\x22\ +\x6d\x49\x63\x6f\x6e\x54\x65\x6d\x70\x6f\x72\x61\x6c\x50\x72\x6f\ +\x66\x69\x6c\x65\x32\x44\x2e\x73\x76\x67\x22\x3e\x0d\x0a\x20\x20\ +\x3c\x64\x65\x66\x73\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\x3d\x22\ +\x64\x65\x66\x73\x32\x36\x36\x33\x22\x3e\x0d\x0a\x20\x20\x20\x20\ +\x3c\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\ +\x3d\x22\x74\x72\x75\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x73\x74\x79\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\ +\x76\x69\x73\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x69\x64\x3d\x22\x6d\x61\x72\x6b\x65\x72\x31\x35\x31\x32\x32\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\ +\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\ +\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\ +\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\ +\x69\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\ +\x22\x3e\x0d\x0a\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\ +\x6f\x72\x6d\x3d\x22\x73\x63\x61\x6c\x65\x28\x30\x2e\x34\x29\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\ +\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ +\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\ +\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\ +\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ +\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x35\x2e\x37\x37\x2c\x30\ +\x20\x2d\x32\x2e\x38\x38\x2c\x35\x20\x56\x20\x2d\x35\x20\x5a\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\ +\x61\x74\x68\x31\x35\x31\x32\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\ +\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\ +\x3d\x22\x30\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x2f\x6d\ +\x61\x72\x6b\x65\x72\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x6d\x61\x72\ +\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\ +\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\x22\x54\x72\ +\x69\x61\x6e\x67\x6c\x65\x49\x6e\x4d\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\x61\x75\x74\x6f\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x59\x3d\x22\x30\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\x58\x3d\x22\ +\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x54\ +\x72\x69\x61\x6e\x67\x6c\x65\x49\x6e\x4d\x2d\x33\x2d\x31\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x6f\ +\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\x69\x62\x6c\x65\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\x74\x72\x75\x65\x22\ +\x3e\x0d\x0a\x20\x20\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\ +\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x34\x36\x35\x30\ +\x2d\x38\x2d\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x64\x3d\x22\x4d\x20\x35\x2e\x37\x37\x2c\x30\x20\x2d\x32\x2e\x38\ +\x38\x2c\x35\x20\x56\x20\x2d\x35\x20\x5a\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\ +\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\ +\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\x6c\x6c\x2d\x72\x75\ +\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\ +\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\ +\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\x30\x30\x30\x30\x30\ +\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\ +\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\ +\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x73\x63\x61\x6c\x65\ +\x28\x2d\x30\x2e\x34\x29\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x20\x20\ +\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x0d\x0a\x20\x20\x20\x20\x3c\ +\x6d\x61\x72\x6b\x65\x72\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x73\x74\x6f\x63\x6b\x69\x64\x3d\ +\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x6f\x72\x69\x65\x6e\x74\x3d\x22\x61\ +\x75\x74\x6f\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\x66\ +\x59\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x72\x65\ +\x66\x58\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ +\x64\x3d\x22\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\x2d\ +\x33\x2d\x38\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\ +\x6c\x65\x3d\x22\x6f\x76\x65\x72\x66\x6c\x6f\x77\x3a\x76\x69\x73\ +\x69\x62\x6c\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x69\x73\x73\x74\x6f\x63\x6b\x3d\x22\ +\x74\x72\x75\x65\x22\x3e\x0d\x0a\x20\x20\x20\x20\x20\x20\x3c\x70\ +\x61\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\ +\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\ +\x68\x34\x36\x35\x39\x2d\x36\x2d\x36\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x64\x3d\x22\x4d\x20\x35\x2e\x37\x37\x2c\x30\ +\x20\x2d\x32\x2e\x38\x38\x2c\x35\x20\x56\x20\x2d\x35\x20\x5a\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\ +\x69\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x66\x69\ +\x6c\x6c\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\ +\x73\x74\x72\x6f\x6b\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\ +\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x30\x30\ +\x30\x30\x30\x30\x30\x33\x70\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ +\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x20\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\ +\x73\x63\x61\x6c\x65\x28\x30\x2e\x34\x29\x22\x20\x2f\x3e\x0d\x0a\ +\x20\x20\x20\x20\x3c\x2f\x6d\x61\x72\x6b\x65\x72\x3e\x0d\x0a\x20\ +\x20\x20\x20\x3c\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x74\ +\x68\x2d\x65\x66\x66\x65\x63\x74\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x65\x66\x66\x65\x63\x74\x3d\x22\x73\x70\x69\x72\x6f\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\ +\x2d\x65\x66\x66\x65\x63\x74\x31\x36\x31\x30\x31\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x69\x73\x5f\x76\x69\x73\x69\x62\x6c\x65\ +\x3d\x22\x74\x72\x75\x65\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x20\x20\ +\x3c\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\ +\x66\x66\x65\x63\x74\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x65\x66\ +\x66\x65\x63\x74\x3d\x22\x73\x70\x69\x72\x6f\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\x68\x2d\x65\x66\ +\x66\x65\x63\x74\x31\x36\x31\x30\x31\x2d\x34\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x69\x73\x5f\x76\x69\x73\x69\x62\x6c\x65\x3d\ +\x22\x74\x72\x75\x65\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x3c\x2f\x64\ +\x65\x66\x73\x3e\x0d\x0a\x20\x20\x3c\x73\x6f\x64\x69\x70\x6f\x64\ +\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x0d\x0a\x20\x20\x20\ +\x20\x20\x69\x64\x3d\x22\x62\x61\x73\x65\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x70\x61\x67\x65\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x66\x66\ +\x66\x66\x66\x66\x22\x0d\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\ +\x65\x72\x63\x6f\x6c\x6f\x72\x3d\x22\x23\x36\x36\x36\x36\x36\x36\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x62\x6f\x72\x64\x65\x72\x6f\x70\ +\x61\x63\x69\x74\x79\x3d\x22\x31\x2e\x30\x22\x0d\x0a\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\x6f\ +\x70\x61\x63\x69\x74\x79\x3d\x22\x30\x2e\x30\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x67\x65\ +\x73\x68\x61\x64\x6f\x77\x3d\x22\x32\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x7a\x6f\x6f\x6d\x3d\x22\ +\x32\x2e\x31\x32\x31\x30\x39\x33\x38\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x78\x3d\x22\x31\x33\ +\x38\x2e\x31\x31\x32\x35\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x79\x3d\x22\x31\x32\x38\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ +\x64\x6f\x63\x75\x6d\x65\x6e\x74\x2d\x75\x6e\x69\x74\x73\x3d\x22\ +\x6d\x6d\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x63\x75\x72\x72\x65\x6e\x74\x2d\x6c\x61\x79\x65\x72\ +\x3d\x22\x6c\x61\x79\x65\x72\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x73\x68\x6f\x77\x67\x72\x69\x64\x3d\x22\x74\x72\x75\x65\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x75\x6e\x69\x74\x73\x3d\x22\x70\x78\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\ +\x77\x69\x6e\x64\x6f\x77\x2d\x77\x69\x64\x74\x68\x3d\x22\x31\x32\ +\x38\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x68\x65\x69\x67\x68\x74\ +\x3d\x22\x37\x35\x36\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x78\x3d\x22\ +\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\ +\x65\x3a\x77\x69\x6e\x64\x6f\x77\x2d\x79\x3d\x22\x30\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x77\x69\ +\x6e\x64\x6f\x77\x2d\x6d\x61\x78\x69\x6d\x69\x7a\x65\x64\x3d\x22\ +\x31\x22\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x3a\x67\x72\x69\x64\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x74\x79\x70\x65\x3d\x22\x78\x79\x67\x72\x69\x64\x22\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x67\x72\x69\x64\x33\x36\ +\x36\x30\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x3c\x2f\x73\x6f\x64\x69\ +\x70\x6f\x64\x69\x3a\x6e\x61\x6d\x65\x64\x76\x69\x65\x77\x3e\x0d\ +\x0a\x20\x20\x3c\x6d\x65\x74\x61\x64\x61\x74\x61\x0d\x0a\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x6d\x65\x74\x61\x64\x61\x74\x61\x32\ +\x36\x36\x36\x22\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x72\x64\x66\x3a\ +\x52\x44\x46\x3e\x0d\x0a\x20\x20\x20\x20\x20\x20\x3c\x63\x63\x3a\ +\x57\x6f\x72\x6b\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\ +\x64\x66\x3a\x61\x62\x6f\x75\x74\x3d\x22\x22\x3e\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\ +\x3e\x69\x6d\x61\x67\x65\x2f\x73\x76\x67\x2b\x78\x6d\x6c\x3c\x2f\ +\x64\x63\x3a\x66\x6f\x72\x6d\x61\x74\x3e\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x20\x3c\x64\x63\x3a\x74\x79\x70\x65\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x20\x20\x20\x20\x72\x64\x66\x3a\x72\x65\x73\ +\x6f\x75\x72\x63\x65\x3d\x22\x68\x74\x74\x70\x3a\x2f\x2f\x70\x75\ +\x72\x6c\x2e\x6f\x72\x67\x2f\x64\x63\x2f\x64\x63\x6d\x69\x74\x79\ +\x70\x65\x2f\x53\x74\x69\x6c\x6c\x49\x6d\x61\x67\x65\x22\x20\x2f\ +\x3e\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x3c\x64\x63\x3a\x74\ +\x69\x74\x6c\x65\x3e\x3c\x2f\x64\x63\x3a\x74\x69\x74\x6c\x65\x3e\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x3c\x2f\x63\x63\x3a\x57\x6f\x72\ +\x6b\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x2f\x72\x64\x66\x3a\x52\x44\ +\x46\x3e\x0d\x0a\x20\x20\x3c\x2f\x6d\x65\x74\x61\x64\x61\x74\x61\ +\x3e\x0d\x0a\x20\x20\x3c\x67\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x6c\x61\x62\x65\x6c\x3d\x22\x4c\x61\ +\x79\x65\x72\x20\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x3a\x67\x72\x6f\x75\x70\x6d\x6f\x64\x65\x3d\ +\x22\x6c\x61\x79\x65\x72\x22\x0d\x0a\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x6c\x61\x79\x65\x72\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x74\x72\x61\x6e\x73\x66\x6f\x72\x6d\x3d\x22\x74\x72\x61\x6e\x73\ +\x6c\x61\x74\x65\x28\x30\x2c\x2d\x32\x32\x39\x2e\x32\x36\x36\x36\ +\x36\x29\x22\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\ +\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\ +\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\ +\x65\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\ +\x2d\x77\x69\x64\x74\x68\x3a\x31\x2e\x35\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\x73\ +\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\ +\x69\x74\x65\x72\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\ +\x72\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ +\x64\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\ +\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\ +\x6d\x61\x72\x6b\x65\x72\x2d\x73\x74\x61\x72\x74\x3a\x75\x72\x6c\ +\x28\x23\x54\x72\x69\x61\x6e\x67\x6c\x65\x49\x6e\x4d\x2d\x33\x2d\ +\x31\x29\x3b\x6d\x61\x72\x6b\x65\x72\x2d\x65\x6e\x64\x3a\x75\x72\ +\x6c\x28\x23\x54\x72\x69\x61\x6e\x67\x6c\x65\x4f\x75\x74\x4d\x2d\ +\x33\x2d\x38\x29\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x64\x3d\ +\x22\x6d\x20\x34\x2e\x36\x30\x36\x37\x39\x36\x35\x2c\x32\x34\x31\ +\x2e\x34\x37\x39\x39\x20\x76\x20\x34\x33\x2e\x36\x35\x36\x32\x36\ +\x20\x4c\x20\x36\x31\x2e\x31\x31\x38\x37\x35\x2c\x32\x38\x35\x2e\ +\x33\x35\x38\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x70\x61\x74\x68\x33\x37\x30\x37\x2d\x30\x2d\x39\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\ +\x3a\x63\x6f\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\ +\x74\x75\x72\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x6f\x64\x65\x74\x79\ +\x70\x65\x73\x3d\x22\x63\x63\x63\x22\x20\x2f\x3e\x0d\x0a\x20\x20\ +\x20\x20\x3c\x74\x65\x78\x74\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\x72\x65\x73\x65\ +\x72\x76\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\ +\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x6e\ +\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\ +\x6e\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x77\ +\x65\x69\x67\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\ +\x74\x2d\x73\x74\x72\x65\x74\x63\x68\x3a\x6e\x6f\x72\x6d\x61\x6c\ +\x3b\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x36\x2e\x33\x34\x39\ +\x39\x39\x39\x39\x70\x78\x3b\x6c\x69\x6e\x65\x2d\x68\x65\x69\x67\ +\x68\x74\x3a\x31\x32\x35\x25\x3b\x66\x6f\x6e\x74\x2d\x66\x61\x6d\ +\x69\x6c\x79\x3a\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x2d\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x2d\x66\x6f\x6e\x74\x2d\x73\x70\ +\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x3a\x27\x73\x61\x6e\ +\x73\x2d\x73\x65\x72\x69\x66\x2c\x20\x4e\x6f\x72\x6d\x61\x6c\x27\ +\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x6c\x69\ +\x67\x61\x74\x75\x72\x65\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\ +\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x63\x61\x70\x73\ +\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\ +\x69\x61\x6e\x74\x2d\x6e\x75\x6d\x65\x72\x69\x63\x3a\x6e\x6f\x72\ +\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x66\x65\x61\x74\x75\x72\x65\ +\x2d\x73\x65\x74\x74\x69\x6e\x67\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\ +\x3b\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x73\x74\x61\x72\ +\x74\x3b\x6c\x65\x74\x74\x65\x72\x2d\x73\x70\x61\x63\x69\x6e\x67\ +\x3a\x30\x70\x78\x3b\x77\x6f\x72\x64\x2d\x73\x70\x61\x63\x69\x6e\ +\x67\x3a\x30\x70\x78\x3b\x77\x72\x69\x74\x69\x6e\x67\x2d\x6d\x6f\ +\x64\x65\x3a\x6c\x72\x2d\x74\x62\x3b\x74\x65\x78\x74\x2d\x61\x6e\ +\x63\x68\x6f\x72\x3a\x73\x74\x61\x72\x74\x3b\x66\x69\x6c\x6c\x3a\ +\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\x6c\x6c\x2d\x6f\x70\x61\ +\x63\x69\x74\x79\x3a\x31\x3b\x73\x74\x72\x6f\x6b\x65\x3a\x6e\x6f\ +\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\ +\x30\x2e\x32\x36\x34\x35\x38\x33\x33\x32\x70\x78\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\ +\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\ +\x3a\x6d\x69\x74\x65\x72\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\ +\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x78\x3d\x22\x30\x2e\x37\x35\x30\x37\x35\x31\x35\x35\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x79\x3d\x22\x32\x33\x35\x2e\x32\ +\x33\x33\x31\x37\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x74\x65\x78\x74\x31\x31\x35\x36\x37\x2d\x34\x2d\x34\x22\ +\x3e\x3c\x74\x73\x70\x61\x6e\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x79\x3d\x22\x32\x33\x35\x2e\x32\x33\x33\x31\x37\x22\x0d\ +\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\x3d\x22\x30\x2e\x37\ +\x35\x30\x37\x35\x31\x35\x35\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x72\x6f\x6c\x65\ +\x3d\x22\x6c\x69\x6e\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\ +\x20\x20\x69\x64\x3d\x22\x74\x73\x70\x61\x6e\x31\x30\x31\x31\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\x6e\x6f\x72\ +\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\ +\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x77\x65\x69\ +\x67\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\ +\x73\x74\x72\x65\x74\x63\x68\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\ +\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x36\x2e\x33\x34\x39\x39\x39\ +\x39\x39\x70\x78\x3b\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\x79\ +\x3a\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x2d\x69\x6e\x6b\ +\x73\x63\x61\x70\x65\x2d\x66\x6f\x6e\x74\x2d\x73\x70\x65\x63\x69\ +\x66\x69\x63\x61\x74\x69\x6f\x6e\x3a\x27\x73\x61\x6e\x73\x2d\x73\ +\x65\x72\x69\x66\x2c\x20\x4e\x6f\x72\x6d\x61\x6c\x27\x3b\x66\x6f\ +\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x6c\x69\x67\x61\x74\ +\x75\x72\x65\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\ +\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x63\x61\x70\x73\x3a\x6e\x6f\ +\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\ +\x74\x2d\x6e\x75\x6d\x65\x72\x69\x63\x3a\x6e\x6f\x72\x6d\x61\x6c\ +\x3b\x66\x6f\x6e\x74\x2d\x66\x65\x61\x74\x75\x72\x65\x2d\x73\x65\ +\x74\x74\x69\x6e\x67\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x74\x65\ +\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x73\x74\x61\x72\x74\x3b\x77\ +\x72\x69\x74\x69\x6e\x67\x2d\x6d\x6f\x64\x65\x3a\x6c\x72\x2d\x74\ +\x62\x3b\x74\x65\x78\x74\x2d\x61\x6e\x63\x68\x6f\x72\x3a\x73\x74\ +\x61\x72\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\ +\x3a\x30\x2e\x32\x36\x34\x35\x38\x33\x33\x32\x70\x78\x22\x3e\x44\ +\x4e\x3c\x2f\x74\x73\x70\x61\x6e\x3e\x3c\x2f\x74\x65\x78\x74\x3e\ +\x0d\x0a\x20\x20\x20\x20\x3c\x74\x65\x78\x74\x0d\x0a\x20\x20\x20\ +\x20\x20\x20\x20\x78\x6d\x6c\x3a\x73\x70\x61\x63\x65\x3d\x22\x70\ +\x72\x65\x73\x65\x72\x76\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\ +\x6c\x65\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x77\ +\x65\x69\x67\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\ +\x74\x2d\x73\x69\x7a\x65\x3a\x31\x30\x2e\x35\x38\x33\x33\x33\x33\ +\x30\x32\x70\x78\x3b\x6c\x69\x6e\x65\x2d\x68\x65\x69\x67\x68\x74\ +\x3a\x31\x32\x35\x25\x3b\x66\x6f\x6e\x74\x2d\x66\x61\x6d\x69\x6c\ +\x79\x3a\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x6c\x65\x74\ +\x74\x65\x72\x2d\x73\x70\x61\x63\x69\x6e\x67\x3a\x30\x70\x78\x3b\ +\x77\x6f\x72\x64\x2d\x73\x70\x61\x63\x69\x6e\x67\x3a\x30\x70\x78\ +\x3b\x66\x69\x6c\x6c\x3a\x23\x30\x30\x30\x30\x30\x30\x3b\x66\x69\ +\x6c\x6c\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x3b\x73\x74\x72\ +\x6f\x6b\x65\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\x65\x2d\ +\x77\x69\x64\x74\x68\x3a\x30\x2e\x32\x36\x34\x35\x38\x33\x33\x32\ +\x70\x78\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\ +\x70\x3a\x62\x75\x74\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ +\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\x69\x74\x65\x72\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\ +\x20\x20\x20\x20\x20\x20\x20\x78\x3d\x22\x36\x31\x2e\x31\x39\x39\ +\x31\x34\x32\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x79\x3d\x22\ +\x32\x39\x35\x2e\x32\x32\x34\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x69\x64\x3d\x22\x74\x65\x78\x74\x31\x32\x32\x39\x33\x2d\ +\x34\x22\x3e\x3c\x74\x73\x70\x61\x6e\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x72\x6f\x6c\ +\x65\x3d\x22\x6c\x69\x6e\x65\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\ +\x20\x20\x20\x69\x64\x3d\x22\x74\x73\x70\x61\x6e\x31\x32\x32\x39\ +\x31\x2d\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x78\ +\x3d\x22\x36\x31\x2e\x31\x39\x39\x31\x34\x32\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x20\x20\x79\x3d\x22\x32\x39\x35\x2e\x32\x32\ +\x34\x33\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x73\x74\ +\x79\x6c\x65\x3d\x22\x66\x6f\x6e\x74\x2d\x73\x74\x79\x6c\x65\x3a\ +\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\ +\x61\x6e\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\ +\x77\x65\x69\x67\x68\x74\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\ +\x6e\x74\x2d\x73\x74\x72\x65\x74\x63\x68\x3a\x6e\x6f\x72\x6d\x61\ +\x6c\x3b\x66\x6f\x6e\x74\x2d\x73\x69\x7a\x65\x3a\x36\x2e\x33\x34\ +\x39\x39\x39\x39\x39\x70\x78\x3b\x66\x6f\x6e\x74\x2d\x66\x61\x6d\ +\x69\x6c\x79\x3a\x73\x61\x6e\x73\x2d\x73\x65\x72\x69\x66\x3b\x2d\ +\x69\x6e\x6b\x73\x63\x61\x70\x65\x2d\x66\x6f\x6e\x74\x2d\x73\x70\ +\x65\x63\x69\x66\x69\x63\x61\x74\x69\x6f\x6e\x3a\x27\x73\x61\x6e\ +\x73\x2d\x73\x65\x72\x69\x66\x2c\x20\x4e\x6f\x72\x6d\x61\x6c\x27\ +\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x6c\x69\ +\x67\x61\x74\x75\x72\x65\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\ +\x6f\x6e\x74\x2d\x76\x61\x72\x69\x61\x6e\x74\x2d\x63\x61\x70\x73\ +\x3a\x6e\x6f\x72\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x76\x61\x72\ +\x69\x61\x6e\x74\x2d\x6e\x75\x6d\x65\x72\x69\x63\x3a\x6e\x6f\x72\ +\x6d\x61\x6c\x3b\x66\x6f\x6e\x74\x2d\x66\x65\x61\x74\x75\x72\x65\ +\x2d\x73\x65\x74\x74\x69\x6e\x67\x73\x3a\x6e\x6f\x72\x6d\x61\x6c\ +\x3b\x74\x65\x78\x74\x2d\x61\x6c\x69\x67\x6e\x3a\x73\x74\x61\x72\ +\x74\x3b\x77\x72\x69\x74\x69\x6e\x67\x2d\x6d\x6f\x64\x65\x3a\x6c\ +\x72\x2d\x74\x62\x3b\x74\x65\x78\x74\x2d\x61\x6e\x63\x68\x6f\x72\ +\x3a\x73\x74\x61\x72\x74\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\x69\ +\x64\x74\x68\x3a\x30\x2e\x32\x36\x34\x35\x38\x33\x33\x32\x70\x78\ +\x22\x3e\x74\x3c\x2f\x74\x73\x70\x61\x6e\x3e\x3c\x2f\x74\x65\x78\ +\x74\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x70\x61\x74\x68\x0d\x0a\x20\ +\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\x3d\x22\x66\x69\x6c\ +\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\x2d\x72\x75\x6c\x65\ +\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\x72\x6f\x6b\x65\x3a\ +\x23\x35\x35\x32\x32\x30\x30\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x77\ +\x69\x64\x74\x68\x3a\x32\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\ +\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\x6d\x69\x74\x65\x72\ +\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\x65\x72\x6c\x69\x6d\ +\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x64\x61\x73\x68\ +\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\x73\x74\x72\x6f\x6b\ +\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\x39\x2e\x34\x33\x37\x38\ +\x39\x38\x33\x2c\x32\x36\x35\x2e\x32\x34\x39\x39\x39\x20\x63\x20\ +\x30\x2e\x34\x34\x36\x33\x33\x32\x33\x2c\x2d\x30\x2e\x38\x39\x36\ +\x34\x32\x20\x31\x2e\x31\x33\x30\x36\x39\x34\x37\x2c\x2d\x31\x2e\ +\x36\x37\x32\x39\x36\x20\x31\x2e\x39\x36\x33\x38\x39\x37\x37\x2c\ +\x2d\x32\x2e\x32\x32\x38\x34\x33\x20\x30\x2e\x38\x33\x33\x32\x30\ +\x32\x2c\x2d\x30\x2e\x35\x35\x35\x34\x37\x20\x31\x2e\x38\x31\x33\ +\x32\x32\x38\x2c\x2d\x30\x2e\x38\x38\x38\x35\x32\x20\x32\x2e\x38\ +\x31\x32\x33\x35\x35\x2c\x2d\x30\x2e\x39\x35\x35\x37\x35\x20\x31\ +\x2e\x37\x36\x37\x36\x31\x37\x2c\x2d\x30\x2e\x31\x31\x38\x39\x34\ +\x20\x33\x2e\x35\x36\x31\x30\x34\x38\x2c\x30\x2e\x36\x32\x31\x33\ +\x34\x20\x34\x2e\x37\x37\x36\x32\x35\x31\x2c\x31\x2e\x39\x31\x30\ +\x34\x39\x20\x31\x2e\x32\x38\x32\x33\x39\x2c\x31\x2e\x33\x36\x30\ +\x34\x32\x20\x31\x2e\x39\x30\x35\x35\x35\x2c\x33\x2e\x32\x32\x34\ +\x39\x36\x20\x33\x2e\x31\x31\x37\x30\x37\x33\x2c\x34\x2e\x36\x34\ +\x38\x38\x36\x20\x30\x2e\x37\x35\x34\x32\x33\x38\x2c\x30\x2e\x38\ +\x38\x36\x34\x35\x20\x31\x2e\x37\x34\x35\x36\x35\x33\x2c\x31\x2e\ +\x35\x39\x31\x30\x38\x20\x32\x2e\x38\x36\x38\x30\x36\x37\x2c\x31\ +\x2e\x38\x39\x39\x30\x37\x20\x31\x2e\x31\x32\x32\x34\x31\x33\x2c\ +\x30\x2e\x33\x30\x38\x20\x32\x2e\x33\x37\x36\x34\x37\x36\x2c\x30\ +\x2e\x31\x39\x34\x39\x35\x20\x33\x2e\x33\x37\x31\x34\x33\x35\x2c\ +\x2d\x30\x2e\x34\x30\x38\x39\x38\x20\x30\x2e\x38\x31\x35\x34\x31\ +\x37\x2c\x2d\x30\x2e\x34\x39\x34\x39\x35\x20\x31\x2e\x34\x31\x34\ +\x33\x35\x36\x2c\x2d\x31\x2e\x32\x37\x38\x32\x35\x20\x31\x2e\x39\ +\x31\x30\x38\x37\x34\x2c\x2d\x32\x2e\x30\x39\x32\x37\x32\x20\x30\ +\x2e\x34\x39\x36\x35\x31\x39\x2c\x2d\x30\x2e\x38\x31\x34\x34\x36\ +\x20\x30\x2e\x39\x31\x32\x30\x36\x34\x2c\x2d\x31\x2e\x36\x37\x39\ +\x39\x20\x31\x2e\x34\x36\x39\x32\x32\x34\x2c\x2d\x32\x2e\x34\x35\ +\x34\x31\x34\x20\x30\x2e\x35\x32\x39\x37\x33\x2c\x2d\x30\x2e\x37\ +\x33\x36\x31\x32\x20\x31\x2e\x31\x39\x30\x31\x36\x34\x2c\x2d\x31\ +\x2e\x33\x38\x36\x38\x33\x20\x31\x2e\x39\x37\x33\x34\x35\x39\x2c\ +\x2d\x31\x2e\x38\x34\x33\x39\x33\x20\x30\x2e\x37\x38\x33\x32\x39\ +\x35\x2c\x2d\x30\x2e\x34\x35\x37\x31\x20\x31\x2e\x36\x39\x33\x33\ +\x32\x39\x2c\x2d\x30\x2e\x37\x31\x34\x32\x37\x20\x32\x2e\x35\x39\ +\x38\x38\x31\x32\x2c\x2d\x30\x2e\x36\x36\x33\x33\x35\x20\x30\x2e\ +\x37\x30\x32\x31\x33\x35\x2c\x30\x2e\x30\x33\x39\x35\x20\x31\x2e\ +\x33\x39\x33\x30\x30\x34\x2c\x30\x2e\x32\x36\x34\x35\x32\x20\x31\ +\x2e\x39\x38\x33\x37\x30\x31\x2c\x30\x2e\x36\x34\x36\x31\x33\x20\ +\x30\x2e\x35\x39\x30\x36\x39\x38\x2c\x30\x2e\x33\x38\x31\x36\x32\ +\x20\x31\x2e\x30\x37\x39\x38\x33\x2c\x30\x2e\x39\x31\x38\x39\x31\ +\x20\x31\x2e\x34\x30\x34\x34\x35\x33\x2c\x31\x2e\x35\x34\x32\x37\ +\x35\x20\x76\x20\x36\x2e\x33\x36\x38\x33\x33\x20\x63\x20\x32\x2e\ +\x30\x38\x36\x33\x39\x38\x2c\x30\x2e\x34\x38\x30\x35\x32\x20\x34\ +\x2e\x32\x38\x31\x39\x33\x39\x2c\x30\x2e\x34\x38\x30\x35\x32\x20\ +\x36\x2e\x33\x36\x38\x33\x33\x37\x2c\x30\x20\x31\x2e\x36\x33\x36\ +\x34\x37\x32\x2c\x2d\x30\x2e\x33\x37\x36\x38\x39\x20\x33\x2e\x31\ +\x39\x30\x32\x36\x36\x2c\x2d\x31\x2e\x30\x34\x30\x30\x35\x20\x34\ +\x2e\x37\x37\x36\x32\x35\x33\x2c\x2d\x31\x2e\x35\x39\x32\x30\x38\ +\x20\x32\x2e\x30\x36\x39\x33\x2c\x2d\x30\x2e\x37\x32\x30\x32\x35\ +\x20\x34\x2e\x32\x30\x33\x35\x34\x31\x2c\x2d\x31\x2e\x32\x35\x33\ +\x38\x31\x20\x36\x2e\x33\x36\x38\x33\x33\x37\x2c\x2d\x31\x2e\x35\ +\x39\x32\x30\x38\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\ +\x3d\x22\x70\x61\x74\x68\x31\x36\x30\x39\x39\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\ +\x6e\x6e\x65\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\ +\x65\x3d\x22\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\x66\x65\ +\x63\x74\x3d\x22\x23\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\ +\x31\x36\x31\x30\x31\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\ +\x6e\x6b\x73\x63\x61\x70\x65\x3a\x6f\x72\x69\x67\x69\x6e\x61\x6c\ +\x2d\x64\x3d\x22\x6d\x20\x39\x2e\x34\x33\x37\x38\x39\x38\x33\x2c\ +\x32\x36\x35\x2e\x32\x34\x39\x39\x39\x20\x63\x20\x32\x2e\x31\x32\ +\x32\x39\x33\x37\x37\x2c\x2d\x31\x2e\x35\x39\x32\x32\x34\x20\x32\ +\x2e\x36\x35\x33\x36\x33\x32\x37\x2c\x2d\x31\x2e\x35\x39\x32\x32\ +\x35\x20\x34\x2e\x37\x37\x36\x32\x35\x32\x37\x2c\x2d\x33\x2e\x31\ +\x38\x34\x31\x38\x20\x32\x2e\x31\x32\x32\x36\x31\x38\x2c\x2d\x31\ +\x2e\x35\x39\x31\x39\x32\x20\x32\x2e\x36\x35\x33\x36\x33\x33\x2c\ +\x31\x2e\x33\x37\x39\x36\x33\x20\x34\x2e\x37\x37\x36\x32\x35\x31\ +\x2c\x31\x2e\x39\x31\x30\x34\x39\x20\x32\x2e\x31\x32\x32\x36\x31\ +\x38\x2c\x30\x2e\x35\x33\x30\x38\x35\x20\x32\x2e\x35\x38\x36\x35\ +\x33\x38\x2c\x32\x2e\x35\x32\x35\x39\x33\x20\x33\x2e\x31\x31\x37\ +\x30\x37\x33\x2c\x34\x2e\x36\x34\x38\x38\x36\x20\x30\x2e\x35\x33\ +\x30\x35\x33\x35\x2c\x32\x2e\x31\x32\x32\x39\x34\x20\x34\x2e\x31\ +\x31\x36\x38\x38\x31\x2c\x30\x2e\x39\x35\x39\x32\x33\x20\x36\x2e\ +\x32\x33\x39\x35\x30\x32\x2c\x31\x2e\x34\x39\x30\x30\x39\x20\x32\ +\x2e\x31\x32\x32\x36\x31\x37\x2c\x30\x2e\x35\x33\x30\x38\x35\x20\ +\x31\x2e\x37\x38\x38\x31\x37\x33\x2c\x2d\x31\x2e\x38\x39\x33\x35\ +\x35\x20\x33\x2e\x33\x38\x30\x30\x39\x38\x2c\x2d\x34\x2e\x35\x34\ +\x36\x38\x36\x20\x30\x2e\x37\x39\x35\x32\x33\x35\x2c\x2d\x31\x2e\ +\x33\x32\x35\x34\x35\x20\x32\x2e\x37\x38\x32\x34\x33\x32\x2c\x2d\ +\x32\x2e\x34\x33\x39\x36\x35\x20\x34\x2e\x35\x37\x32\x32\x37\x31\ +\x2c\x2d\x32\x2e\x35\x30\x37\x32\x38\x20\x31\x2e\x37\x39\x33\x31\ +\x31\x36\x2c\x2d\x30\x2e\x30\x36\x37\x37\x20\x31\x2e\x37\x39\x36\ +\x30\x36\x38\x2c\x30\x2e\x35\x39\x36\x37\x39\x20\x33\x2e\x33\x38\ +\x38\x31\x35\x34\x2c\x32\x2e\x31\x38\x38\x38\x38\x20\x30\x2c\x34\ +\x2e\x37\x37\x36\x32\x35\x20\x2d\x32\x2e\x36\x38\x31\x38\x31\x2c\ +\x34\x2e\x34\x32\x39\x35\x36\x20\x30\x2c\x36\x2e\x33\x36\x38\x33\ +\x33\x20\x30\x2e\x35\x30\x32\x33\x36\x31\x2c\x32\x2e\x38\x33\x37\ +\x34\x38\x20\x34\x2e\x38\x36\x37\x33\x30\x36\x2c\x31\x2e\x35\x30\ +\x31\x30\x33\x20\x36\x2e\x33\x36\x38\x33\x33\x37\x2c\x30\x20\x31\ +\x2e\x35\x39\x32\x30\x38\x34\x2c\x2d\x31\x2e\x35\x39\x32\x30\x38\ +\x20\x32\x2e\x31\x32\x32\x39\x34\x2c\x2d\x30\x2e\x35\x33\x30\x38\ +\x35\x20\x34\x2e\x37\x37\x36\x32\x35\x33\x2c\x2d\x31\x2e\x35\x39\ +\x32\x30\x38\x20\x32\x2e\x36\x35\x33\x33\x31\x37\x2c\x2d\x31\x2e\ +\x30\x36\x31\x32\x33\x20\x34\x2e\x32\x34\x35\x37\x31\x33\x2c\x2d\ +\x32\x2e\x36\x35\x33\x36\x33\x20\x36\x2e\x33\x36\x38\x33\x33\x37\ +\x2c\x2d\x31\x2e\x35\x39\x32\x30\x38\x22\x0d\x0a\x20\x20\x20\x20\ +\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x6f\x64\x65\ +\x74\x79\x70\x65\x73\x3d\x22\x63\x73\x63\x73\x73\x63\x73\x63\x63\ +\x73\x63\x63\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x20\x20\x3c\x70\x61\ +\x74\x68\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x73\x74\x79\x6c\x65\ +\x3d\x22\x66\x69\x6c\x6c\x3a\x6e\x6f\x6e\x65\x3b\x66\x69\x6c\x6c\ +\x2d\x72\x75\x6c\x65\x3a\x65\x76\x65\x6e\x6f\x64\x64\x3b\x73\x74\ +\x72\x6f\x6b\x65\x3a\x23\x61\x61\x34\x34\x30\x30\x3b\x73\x74\x72\ +\x6f\x6b\x65\x2d\x77\x69\x64\x74\x68\x3a\x32\x3b\x73\x74\x72\x6f\ +\x6b\x65\x2d\x6c\x69\x6e\x65\x63\x61\x70\x3a\x62\x75\x74\x74\x3b\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6c\x69\x6e\x65\x6a\x6f\x69\x6e\x3a\ +\x6d\x69\x74\x65\x72\x3b\x73\x74\x72\x6f\x6b\x65\x2d\x6d\x69\x74\ +\x65\x72\x6c\x69\x6d\x69\x74\x3a\x34\x3b\x73\x74\x72\x6f\x6b\x65\ +\x2d\x64\x61\x73\x68\x61\x72\x72\x61\x79\x3a\x6e\x6f\x6e\x65\x3b\ +\x73\x74\x72\x6f\x6b\x65\x2d\x6f\x70\x61\x63\x69\x74\x79\x3a\x31\ +\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x64\x3d\x22\x6d\x20\x39\ +\x2e\x34\x33\x37\x38\x39\x39\x2c\x32\x35\x36\x2e\x35\x31\x38\x36\ +\x37\x20\x63\x20\x31\x2e\x35\x32\x33\x32\x30\x35\x2c\x2d\x30\x2e\ +\x35\x39\x37\x38\x35\x20\x33\x2e\x30\x37\x36\x32\x38\x38\x2c\x2d\ +\x31\x2e\x31\x31\x39\x35\x37\x20\x34\x2e\x36\x35\x31\x35\x31\x33\ +\x2c\x2d\x31\x2e\x35\x36\x32\x35\x37\x20\x30\x2e\x38\x31\x39\x39\ +\x36\x35\x2c\x2d\x30\x2e\x32\x33\x30\x36\x20\x31\x2e\x36\x35\x35\ +\x38\x35\x36\x2c\x2d\x30\x2e\x34\x34\x31\x32\x35\x20\x32\x2e\x35\ +\x30\x37\x35\x38\x39\x2c\x2d\x30\x2e\x34\x34\x39\x35\x32\x20\x30\ +\x2e\x38\x35\x31\x37\x33\x33\x2c\x2d\x30\x2e\x30\x30\x38\x20\x31\ +\x2e\x37\x33\x30\x38\x37\x32\x2c\x30\x2e\x32\x30\x33\x30\x38\x20\ +\x32\x2e\x33\x39\x33\x34\x30\x32\x2c\x30\x2e\x37\x33\x38\x34\x20\ +\x30\x2e\x33\x36\x37\x34\x33\x33\x2c\x30\x2e\x32\x39\x36\x38\x39\ +\x20\x30\x2e\x36\x35\x35\x36\x33\x31\x2c\x30\x2e\x36\x38\x31\x39\ +\x35\x20\x30\x2e\x38\x39\x31\x33\x32\x2c\x31\x2e\x30\x39\x31\x33\ +\x34\x20\x30\x2e\x32\x33\x35\x36\x38\x38\x2c\x30\x2e\x34\x30\x39\ +\x33\x39\x20\x30\x2e\x34\x32\x31\x37\x37\x33\x2c\x30\x2e\x38\x34\ +\x34\x39\x37\x20\x30\x2e\x36\x31\x32\x37\x30\x34\x2c\x31\x2e\x32\ +\x37\x37\x30\x35\x20\x30\x2e\x31\x39\x30\x39\x33\x32\x2c\x30\x2e\ +\x34\x33\x32\x30\x38\x20\x30\x2e\x33\x38\x38\x32\x32\x32\x2c\x30\ +\x2e\x38\x36\x33\x35\x34\x20\x30\x2e\x36\x34\x34\x30\x37\x36\x2c\ +\x31\x2e\x32\x36\x30\x36\x34\x20\x30\x2e\x32\x35\x35\x38\x35\x33\ +\x2c\x30\x2e\x33\x39\x37\x31\x20\x30\x2e\x35\x37\x33\x37\x33\x38\ +\x2c\x30\x2e\x37\x36\x31\x31\x31\x20\x30\x2e\x39\x36\x38\x39\x37\ +\x33\x2c\x31\x2e\x30\x31\x39\x38\x33\x20\x30\x2e\x35\x35\x37\x33\ +\x36\x39\x2c\x30\x2e\x33\x36\x34\x38\x36\x20\x31\x2e\x32\x34\x37\ +\x33\x31\x34\x2c\x30\x2e\x35\x30\x31\x32\x32\x20\x31\x2e\x39\x31\ +\x30\x39\x32\x2c\x30\x2e\x34\x34\x32\x38\x35\x20\x30\x2e\x36\x36\ +\x33\x36\x30\x36\x2c\x2d\x30\x2e\x30\x35\x38\x34\x20\x31\x2e\x33\ +\x30\x31\x39\x36\x31\x2c\x2d\x30\x2e\x33\x30\x32\x37\x33\x20\x31\ +\x2e\x38\x37\x33\x39\x34\x31\x2c\x2d\x30\x2e\x36\x34\x34\x32\x32\ +\x20\x31\x2e\x31\x34\x33\x39\x36\x31\x2c\x2d\x30\x2e\x36\x38\x32\ +\x39\x39\x20\x32\x2e\x30\x31\x34\x36\x30\x38\x2c\x2d\x31\x2e\x37\ +\x32\x39\x32\x20\x32\x2e\x39\x35\x33\x35\x39\x37\x2c\x2d\x32\x2e\ +\x36\x37\x34\x34\x31\x20\x30\x2e\x39\x38\x34\x39\x37\x38\x2c\x2d\ +\x30\x2e\x39\x39\x31\x35\x20\x32\x2e\x30\x38\x34\x38\x35\x34\x2c\ +\x2d\x31\x2e\x39\x30\x30\x30\x38\x20\x33\x2e\x33\x36\x38\x35\x30\ +\x39\x2c\x2d\x32\x2e\x34\x35\x32\x37\x39\x20\x31\x2e\x32\x38\x33\ +\x36\x35\x36\x2c\x2d\x30\x2e\x35\x35\x32\x37\x31\x20\x32\x2e\x37\ +\x37\x34\x36\x32\x35\x2c\x2d\x30\x2e\x37\x32\x31\x37\x32\x20\x34\ +\x2e\x30\x38\x34\x39\x30\x34\x2c\x2d\x30\x2e\x32\x33\x35\x34\x38\ +\x20\x30\x2e\x38\x36\x37\x38\x36\x36\x2c\x30\x2e\x33\x32\x32\x30\ +\x36\x20\x31\x2e\x36\x31\x34\x32\x31\x35\x2c\x30\x2e\x39\x31\x30\ +\x36\x35\x20\x32\x2e\x32\x36\x30\x38\x34\x35\x2c\x31\x2e\x35\x37\ +\x33\x30\x36\x20\x30\x2e\x36\x34\x36\x36\x33\x2c\x30\x2e\x36\x36\ +\x32\x34\x31\x20\x31\x2e\x32\x30\x36\x31\x36\x32\x2c\x31\x2e\x34\ +\x30\x33\x35\x37\x20\x31\x2e\x38\x30\x38\x31\x30\x36\x2c\x32\x2e\ +\x31\x30\x36\x38\x33\x20\x30\x2e\x36\x30\x31\x39\x34\x34\x2c\x30\ +\x2e\x37\x30\x33\x32\x36\x20\x31\x2e\x32\x35\x36\x33\x38\x38\x2c\ +\x31\x2e\x33\x37\x37\x30\x31\x20\x32\x2e\x30\x34\x34\x37\x39\x33\ +\x2c\x31\x2e\x38\x36\x32\x31\x32\x20\x30\x2e\x37\x38\x38\x34\x30\ +\x35\x2c\x30\x2e\x34\x38\x35\x31\x31\x20\x31\x2e\x37\x32\x37\x37\ +\x33\x2c\x30\x2e\x37\x37\x31\x20\x32\x2e\x36\x34\x34\x38\x33\x34\ +\x2c\x30\x2e\x36\x34\x35\x31\x36\x20\x30\x2e\x35\x35\x31\x39\x33\ +\x34\x2c\x2d\x30\x2e\x30\x37\x35\x37\x20\x31\x2e\x30\x37\x37\x33\ +\x32\x38\x2c\x2d\x30\x2e\x32\x39\x37\x30\x36\x20\x31\x2e\x35\x34\ +\x38\x34\x39\x35\x2c\x2d\x30\x2e\x35\x39\x34\x33\x32\x20\x30\x2e\ +\x34\x37\x31\x31\x36\x37\x2c\x2d\x30\x2e\x32\x39\x37\x32\x37\x20\ +\x30\x2e\x38\x39\x31\x30\x31\x33\x2c\x2d\x30\x2e\x36\x36\x39\x34\ +\x31\x20\x31\x2e\x32\x38\x34\x31\x30\x36\x2c\x2d\x31\x2e\x30\x36\ +\x34\x31\x38\x20\x30\x2e\x37\x38\x36\x31\x38\x36\x2c\x2d\x30\x2e\ +\x37\x38\x39\x35\x35\x20\x31\x2e\x34\x38\x30\x39\x38\x35\x2c\x2d\ +\x31\x2e\x36\x38\x32\x20\x32\x2e\x33\x38\x30\x33\x30\x37\x2c\x2d\ +\x32\x2e\x33\x33\x39\x37\x39\x20\x31\x2e\x31\x37\x35\x30\x34\x33\ +\x2c\x2d\x30\x2e\x38\x35\x39\x34\x36\x20\x32\x2e\x36\x37\x32\x31\ +\x30\x31\x2c\x2d\x31\x2e\x32\x36\x37\x32\x20\x34\x2e\x31\x32\x30\ +\x36\x38\x38\x2c\x2d\x31\x2e\x31\x32\x32\x33\x33\x20\x31\x2e\x34\ +\x34\x38\x35\x38\x36\x2c\x30\x2e\x31\x34\x34\x38\x37\x20\x32\x2e\ +\x38\x33\x35\x32\x34\x36\x2c\x30\x2e\x38\x34\x31\x30\x31\x20\x33\ +\x2e\x38\x31\x36\x38\x31\x32\x2c\x31\x2e\x39\x31\x36\x31\x35\x22\ +\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x64\x3d\x22\x70\x61\x74\ +\x68\x31\x36\x30\x39\x39\x2d\x39\x22\x0d\x0a\x20\x20\x20\x20\x20\ +\x20\x20\x69\x6e\x6b\x73\x63\x61\x70\x65\x3a\x63\x6f\x6e\x6e\x65\ +\x63\x74\x6f\x72\x2d\x63\x75\x72\x76\x61\x74\x75\x72\x65\x3d\x22\ +\x30\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\x6b\x73\x63\ +\x61\x70\x65\x3a\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x3d\ +\x22\x23\x70\x61\x74\x68\x2d\x65\x66\x66\x65\x63\x74\x31\x36\x31\ +\x30\x31\x2d\x34\x22\x0d\x0a\x20\x20\x20\x20\x20\x20\x20\x69\x6e\ +\x6b\x73\x63\x61\x70\x65\x3a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x2d\ +\x64\x3d\x22\x6d\x20\x39\x2e\x34\x33\x37\x38\x39\x39\x2c\x32\x35\ +\x36\x2e\x35\x31\x38\x36\x37\x20\x63\x20\x32\x2e\x31\x32\x32\x39\ +\x33\x37\x2c\x2d\x31\x2e\x35\x39\x32\x32\x34\x20\x34\x2e\x35\x32\ +\x32\x31\x32\x33\x2c\x2d\x34\x2e\x32\x31\x32\x36\x37\x20\x34\x2e\ +\x36\x35\x31\x35\x31\x33\x2c\x2d\x31\x2e\x35\x36\x32\x35\x37\x20\ +\x30\x2e\x32\x32\x39\x32\x34\x31\x2c\x34\x2e\x36\x39\x35\x32\x31\ +\x20\x32\x2e\x37\x37\x37\x36\x33\x32\x2c\x2d\x30\x2e\x32\x33\x39\ +\x35\x32\x20\x34\x2e\x39\x30\x30\x39\x39\x31\x2c\x30\x2e\x32\x38\ +\x38\x38\x38\x20\x32\x2e\x31\x32\x32\x36\x31\x38\x2c\x30\x2e\x35\ +\x33\x30\x38\x35\x20\x32\x2e\x35\x38\x36\x35\x33\x38\x2c\x32\x2e\ +\x35\x32\x35\x39\x33\x20\x33\x2e\x31\x31\x37\x30\x37\x33\x2c\x34\ +\x2e\x36\x34\x38\x38\x36\x20\x30\x2e\x35\x33\x30\x35\x33\x35\x2c\ +\x32\x2e\x31\x32\x32\x39\x34\x20\x34\x2e\x34\x36\x35\x38\x30\x35\ +\x2c\x2d\x31\x2e\x39\x38\x31\x38\x33\x20\x36\x2e\x37\x33\x38\x34\ +\x35\x38\x2c\x2d\x32\x2e\x38\x37\x35\x37\x38\x20\x32\x2e\x34\x35\ +\x37\x38\x32\x33\x2c\x2d\x30\x2e\x39\x36\x36\x37\x39\x20\x34\x2e\ +\x38\x33\x36\x31\x31\x31\x2c\x2d\x33\x2e\x30\x34\x32\x32\x35\x20\ +\x37\x2e\x34\x35\x33\x34\x31\x33\x2c\x2d\x32\x2e\x36\x38\x38\x32\ +\x37\x20\x33\x2e\x35\x34\x32\x32\x35\x34\x2c\x30\x2e\x34\x37\x39\ +\x30\x38\x20\x35\x2e\x31\x38\x34\x37\x36\x33\x2c\x36\x2e\x32\x35\ +\x37\x33\x36\x20\x38\x2e\x37\x35\x38\x35\x37\x38\x2c\x36\x2e\x31\ +\x38\x37\x31\x37\x20\x32\x2e\x31\x38\x39\x34\x37\x32\x2c\x2d\x30\ +\x2e\x30\x34\x33\x20\x32\x2e\x35\x35\x39\x35\x39\x34\x2c\x2d\x32\ +\x2e\x39\x33\x37\x30\x36\x20\x35\x2e\x32\x31\x32\x39\x30\x38\x2c\ +\x2d\x33\x2e\x39\x39\x38\x32\x39\x20\x32\x2e\x36\x35\x33\x33\x31\ +\x35\x2c\x2d\x31\x2e\x30\x36\x31\x32\x33\x20\x35\x2e\x38\x31\x34\ +\x38\x37\x38\x2c\x2d\x30\x2e\x32\x36\x37\x37\x33\x20\x37\x2e\x39\ +\x33\x37\x35\x2c\x30\x2e\x37\x39\x33\x38\x32\x22\x0d\x0a\x20\x20\ +\x20\x20\x20\x20\x20\x73\x6f\x64\x69\x70\x6f\x64\x69\x3a\x6e\x6f\ +\x64\x65\x74\x79\x70\x65\x73\x3d\x22\x63\x73\x63\x73\x61\x61\x61\ +\x63\x63\x22\x20\x2f\x3e\x0d\x0a\x20\x20\x3c\x2f\x67\x3e\x0d\x0a\ +\x3c\x2f\x73\x76\x67\x3e\x0d\x0a\ \x00\x00\x10\x66\ \x00\ \x00\xbb\xd8\x78\x9c\xed\x5d\x59\x8f\xe3\x38\x92\x7e\x1f\x60\xfe\ @@ -16864,6 +17439,182 @@ qt_resource_data = "\ \x80\xb0\xf9\xd7\x31\x6a\x4a\x1d\x80\x24\x5a\x6d\x4a\x3e\x15\x7e\ \x52\xb2\x4c\x1a\xbe\xbf\x9d\xfc\x13\x7e\x67\xee\xd2\xfc\x2f\xc5\ \xfc\x7c\x0d\xdf\xff\x00\xa2\xbf\x0b\xd2\ +\x00\x00\x0a\xd9\ +\x00\ +\x00\x26\xeb\x78\x9c\xed\x5a\xeb\x6e\xdb\xd8\x11\xfe\xbf\xc0\xbe\ +\x03\xab\xa0\xd8\x04\x15\xa9\x73\xbf\xc8\x76\x16\xd8\x06\x0b\x04\ +\xd8\x6c\x8b\x36\xbd\xfe\xa3\x29\xca\x66\x23\x91\x02\x49\x59\xf6\ +\xbe\x5a\xdf\xa1\xcf\xd4\x6f\x0e\x25\x8a\xb2\xe4\xc4\x41\x1c\x24\ +\x0b\x2c\x81\xc0\xd4\x9c\x39\x73\xe6\xf6\xcd\xcc\x91\x72\xfe\xfd\ +\xed\x72\x11\xdd\xe4\x75\x53\x54\xe5\xc5\x88\x27\x6c\x14\xe5\x65\ +\x56\xcd\x8a\xf2\xea\x62\xf4\xb7\xb7\x3f\xc6\x6e\x14\x35\x6d\x5a\ +\xce\xd2\x45\x55\xe6\x17\xa3\xb2\x1a\x7d\xff\xf2\xdb\x6f\xce\x7f\ +\x17\xc7\xd1\x1f\xeb\x3c\x6d\xf3\x59\xb4\x29\xda\xeb\xe8\x75\xf9\ +\xae\xc9\xd2\x55\x1e\x3d\xbf\x6e\xdb\xd5\x74\x32\xd9\x6c\x36\x49\ +\xb1\x25\x26\x55\x7d\x35\x79\x11\xc5\x31\xb6\x62\x73\x73\x73\xf5\ +\xed\x37\x51\x14\xe1\xec\xb2\x99\xce\xb2\x8b\xd1\x76\xcf\x6a\x5d\ +\x2f\x02\xef\x2c\x9b\xe4\x8b\x7c\x99\x97\x6d\x33\xe1\x09\x9f\x8c\ +\x06\xfc\xd9\x9e\x3f\x23\x0d\x8a\x9b\x3c\xab\x96\xcb\xaa\x6c\xc2\ +\xd6\xb2\x79\x36\xe4\xae\x67\xf3\x9e\x9d\x54\xda\xc8\xc0\xc5\xbd\ +\xf7\x13\x26\x26\x42\xc4\xe0\x88\x9b\xbb\xb2\x4d\x6f\xe3\x7b\x7b\ +\xa1\xe7\xa9\xbd\x82\x31\x36\xc1\xda\x80\xf5\x91\x6c\xd3\x06\x9e\ +\x5d\xe1\x5f\xcf\xbf\x23\x24\x4d\xb5\xae\xb3\x7c\x8e\x8d\x79\x52\ +\xe6\xed\xe4\xd5\xdb\x57\xfd\x62\xcc\x92\x59\x3b\x1b\xca\xd9\x39\ +\xf6\xe0\xdc\x03\x6f\x97\xe9\x32\x6f\x56\x69\x96\x37\x93\x1d\xbd\ +\x13\xb0\x29\x66\xed\xf5\xc5\x48\x68\xd3\x7d\xbe\xce\x8b\xab\xeb\ +\x76\x40\xb8\x29\xf2\xcd\x0f\xd5\xed\xc5\x88\x45\x2c\x32\x36\xb1\ +\x12\x8f\xde\xbf\x6d\xb9\xf6\x39\xc3\x3b\x4a\x31\xbb\x18\xc1\x5c\ +\x61\x8c\xdf\x12\xb6\xe7\x4e\x7b\x5e\x96\x78\x91\x88\x48\x67\x32\ +\x77\x6c\x36\x8e\x04\xe3\x36\x66\x2e\x66\xdb\xa3\x77\x06\x4f\x67\ +\x55\x46\x06\x5c\x8c\x96\xaf\xb3\xaa\x7c\x9b\x2f\x57\x55\x9d\x2e\ +\xfe\x5c\x57\xf3\x62\x91\xcb\x57\x09\xb9\xf5\x25\x6d\x39\x9f\xe5\ +\xf3\x26\xec\xed\x14\xa0\x8f\xd0\x40\x76\xab\x58\x5f\xa6\xf5\xbb\ +\xbc\xde\x72\x0c\x74\x2a\x9a\xa6\xad\xb2\x77\x17\xa3\xb6\x5e\x6f\ +\x3d\x43\x4f\xd3\xde\x2d\x70\x6c\x05\x95\xe7\x8b\x6a\x33\xbd\x29\ +\x9a\xe2\x72\x31\x60\xa0\x43\x3a\x99\x5c\x73\x21\xf6\x0b\x75\x3e\ +\xff\x27\x2c\x3c\x20\xfc\xeb\x80\x50\xd5\x05\x12\xfa\x62\x94\xae\ +\xdb\x6a\x74\xac\x51\xd0\x87\xc4\xbf\xad\x8b\xb4\xbc\x5a\xe4\x7f\ +\x5a\xb7\x6f\x76\x76\xc0\x92\x55\xda\x5e\xf7\xbb\xa2\xa8\xad\xd3\ +\xb2\x41\xbe\x2c\xe1\xf5\x2c\x5d\xe4\xcf\x59\xa2\x5e\x8c\x06\x0c\ +\x5b\x53\xe0\xb1\xc5\xf4\x19\x0b\xcf\x19\x7d\x88\x2b\xa4\x45\xd1\ +\xde\x4d\x79\xf7\xb1\x5e\x2f\xf2\x69\x7e\x93\x97\xd5\x6c\x76\xd6\ +\xb4\x75\xf5\x2e\xef\xf9\xbb\x8f\x71\xc8\x99\x29\xaa\x43\xf7\xc8\ +\x55\xbb\x5b\xe9\x65\x0d\x4f\x86\x0d\x6f\x22\x9d\x58\x3b\x66\x51\ +\x2c\x12\xe7\xc6\x3a\xfa\x7b\x14\xeb\xe8\xdf\x43\x2e\x32\x95\x6c\ +\x22\x3f\xb2\x83\x85\x9d\x47\x10\xfa\x32\xcf\xda\xaa\x8e\xb3\x75\ +\x7d\x93\xb6\xeb\x3a\x27\x87\x46\x93\x5d\x70\x27\x5d\x24\x3e\x14\ +\xeb\x23\xcf\xbe\x2e\xdf\x7c\x28\x2c\x47\xd1\x3b\x8a\xef\x3d\x81\ +\xb1\x8c\xf9\xc7\xe4\xd1\xe9\x44\x7c\x30\xdc\x1f\x72\xca\x09\xc7\ +\x2a\xa3\x59\xec\x62\xff\xf1\xa1\xf9\x72\xa9\x73\x94\xd5\x71\x48\ +\xeb\x4f\x0f\x79\x00\xd3\x93\xc6\x9c\x24\x22\xe8\xee\xab\x0b\xba\ +\x8f\x4d\x6c\x7e\xd5\x41\x7f\x4f\xcc\xcf\x27\x54\xe2\xbb\xd7\xbe\ +\x5d\x50\xaf\x98\x51\xdf\x1a\x74\x82\xcb\xb4\xe9\x3d\xbf\x4a\xaf\ +\x30\x23\x2c\xaa\xfa\x62\xf4\x6c\x1e\x9e\xdd\xca\x65\x55\xcf\xf2\ +\x7a\xb7\x66\xc2\x73\xb8\xb6\xd5\xb8\x1b\x8e\x76\xf2\x77\x71\x21\ +\xc1\x3d\x03\x7b\x80\xa1\xb9\x4e\x67\xd5\x06\x1d\xf6\x68\xf5\x97\ +\xaa\x82\xcd\x22\xe1\x82\x33\x2f\xdd\xd1\x7a\x86\x2e\xcc\xa5\x4b\ +\x38\x17\x9a\x1f\xaf\x92\x52\xe2\x78\x17\x9a\xe7\x9a\x46\xa7\x78\ +\x5d\x16\x2d\x46\x93\xe5\xf2\x78\xeb\xba\xae\x89\x63\x91\xde\xe5\ +\x30\x3c\xfc\xe9\x0f\x68\xae\xab\xcd\x55\x4d\x3e\x1c\xf6\xc6\xad\ +\xb0\xd5\xed\x91\xb0\x4d\x51\xc2\xbe\x78\x3b\x58\x40\xa3\x63\x37\ +\x6c\x59\x76\xb3\x86\xd5\xe6\x21\x96\xdb\x41\x5e\xdf\x5f\xbb\x7b\ +\xcf\xda\x32\xbd\x2d\x96\xc5\x2f\x39\xb4\xe6\x7d\xf3\xef\x99\xc8\ +\x9c\x3e\xe1\xda\x3b\x1a\x9c\x6e\xef\x88\x78\x08\x6d\xa2\x48\x63\ +\xfa\x16\x73\x3e\x39\x4e\xb1\x6e\x61\x99\xb7\xe9\x2c\x6d\xd3\x41\ +\xc2\xed\x48\x82\x52\x68\xa7\x01\x86\xcb\xe9\x5f\x5e\xfd\xb8\x47\ +\x78\x96\x4d\xff\x51\xd5\xef\x06\xd9\x4f\x2c\xe9\x65\xb5\x86\x5f\ +\xf6\x95\x80\x26\x9b\x6c\x4a\x98\x48\xdb\x97\xc5\x12\x59\x44\xa3\ +\xe4\x1f\x30\xfd\x01\x00\xfd\xc2\x21\x37\xd9\x35\x90\xdb\x49\xae\ +\xf3\x6e\xb2\x3c\x39\x63\xcf\xb2\x65\x41\xbb\x26\x7f\x6d\x81\xec\ +\xd7\x74\xcc\x1e\x76\xbd\xd8\xa2\x5d\xe4\x2f\xc3\xb1\xdd\x6b\x6f\ +\xcb\x64\x6b\x4c\x8f\xd3\xa1\xb5\x40\xed\xd6\x21\xdd\xc7\xab\xfb\ +\x81\x5b\xa4\x97\xf9\xe2\x62\xf4\x13\xe5\x5e\x74\x9c\xdd\x57\x75\ +\xb5\x5e\x2d\xab\x59\xbe\x4d\xcf\xd1\xc0\xd5\x87\xf9\x3a\x28\x1f\ +\xe1\x75\x81\x5b\xc9\x73\x36\x8e\x85\xf0\x09\x05\xc3\xbc\xe8\xc3\ +\x71\x50\x5f\x87\x05\xaf\xc4\xed\xe6\xa3\xcb\x9b\xde\x11\x16\x05\ +\xaa\x73\xba\x9a\x5e\xae\xdb\x76\x48\xfb\x4f\x55\x94\x53\xb8\x38\ +\xaf\x77\xd4\xf0\x61\x81\x4c\x6d\xa7\x6a\x47\x9b\xa5\xa8\x10\x75\ +\x9d\xde\x75\x5a\xdc\xaf\x94\x67\x5d\xf5\x8b\x71\x0d\xab\xdb\x29\ +\xa2\xf7\xfc\xd9\xbd\xb1\xe3\xc5\x8e\x25\x2f\x67\x87\x0c\xbb\x1e\ +\x35\x18\x0c\x29\x53\x23\x95\x18\x66\xac\x37\x7a\x2c\x14\x4f\x94\ +\xf5\x3e\xba\x89\x94\x4c\x8c\x36\xc2\x44\x3f\x45\x06\x53\x3d\x77\ +\x16\xcb\x4e\x27\x52\x3b\x79\x88\x13\x72\xa3\xb4\x0c\xb3\xfb\x70\ +\xba\x78\x74\xb7\xda\x83\x0a\xe1\xa5\xfc\x43\x5d\xc9\xb2\x6c\x50\ +\xf1\x9f\x36\x4e\xa6\x23\x8b\xcf\x19\x2e\xa2\x56\xf3\x79\x93\xb7\ +\x53\xf6\x60\x08\xfb\xf8\x0c\x6e\x10\x87\xa1\x79\x33\x0c\x8d\x0b\ +\xef\x88\x8d\xe6\x89\xd7\x02\x9d\x60\x2c\xb4\x4e\x94\x34\x8c\x1f\ +\x07\x04\xd2\x18\x7b\xb2\x68\x0c\x82\xd1\xe6\xb7\x6d\xcf\x8d\x0a\ +\x34\x0d\xf7\x4a\x1c\x8a\xda\x92\xd7\x37\xc7\xb7\xa7\x79\x85\xd6\ +\x12\xde\x21\x13\x85\x6a\x71\x16\x28\x9b\x50\xfd\x0f\x48\x0d\x2a\ +\xf6\x94\xb3\x04\x19\x86\x87\x89\xd5\xed\x19\x05\x62\xdb\x28\xa6\ +\x68\x7b\xbf\xef\x18\xe7\xe9\xb2\x58\xdc\x4d\x1b\xc0\x3b\xc6\xa1\ +\xc5\xfc\x6c\x91\xb7\x2d\xa1\x82\x7c\x5c\x5e\x4d\x19\xb6\x6e\xd0\ +\xb0\x0f\x08\xef\x9b\x65\xb6\x29\x33\x8c\x61\x97\x2f\x0c\x45\x43\ +\x91\x42\xa4\xcd\x47\x67\xcc\x89\x01\x07\x2d\x4d\xdb\x44\x1b\xe7\ +\x77\x97\x67\x7a\xee\xe8\xca\x2d\x12\xab\x85\x50\x87\xc1\x24\x7f\ +\x73\xae\x8d\x8d\x45\xac\x62\x36\x7a\x79\xde\xc2\xa8\x72\x38\xaa\ +\xed\x42\x56\x57\xe4\x6f\xd2\xe4\xfe\x2c\x18\xb6\x90\x14\x1d\xfb\ +\xd8\x8b\xf8\x60\xe0\x3a\xad\xd1\x43\x3a\x7d\x28\xae\x37\x29\x55\ +\x9b\xf6\x83\xb1\x6e\xeb\xbc\xcd\xae\x8f\xe3\x6f\x12\xa9\x3c\x3d\ +\x14\xb1\x41\xb0\x31\x46\xcf\xd2\x32\x3d\x8b\x77\xa9\x1c\x77\x7b\ +\x56\x79\x56\xcc\x8b\x2c\x6d\x8b\xaa\x9c\x7e\xb7\xe5\x1a\x47\x3f\ +\x07\xb9\xdf\x1d\xe8\x84\x20\x5d\x85\x8c\x6f\x4e\x69\x1c\x43\xe8\ +\xe9\x85\x12\x03\x54\x5d\x64\x07\x6b\xf3\x3c\x48\x42\xfa\xb5\x2d\ +\x12\xac\xdf\x48\xe1\x8a\x53\x1c\x54\x4e\x43\x89\x3e\xdb\xd4\x05\ +\x31\xc4\xd4\xbc\xa6\x8b\x3a\x6e\x2f\xb7\x3c\x65\x76\x5d\xd5\x5b\ +\xa6\x07\x53\x6e\xf4\xb2\x3d\x9f\x84\xe8\xa1\xe7\xd2\xbe\xa7\x86\ +\xe1\x53\x86\xeb\xb1\x60\x7d\x7f\x08\xf7\x8c\x5f\x51\x14\x1f\x53\ +\x5f\x1e\x15\xe9\xaf\xa6\x08\x31\x00\x9b\x59\xcd\xf5\xbd\x2a\x24\ +\x75\x22\xa4\xe4\xf6\xa1\x2a\xa4\x62\x75\xa2\x06\x9d\xde\xf9\xe0\ +\x41\x1f\x51\xb4\x18\xe7\x5f\xbe\xf8\xfc\xba\x93\xf7\x53\x4b\xd0\ +\xab\x9f\x4f\xd7\xa0\x47\xcc\x65\x8f\xf9\xb6\x60\x26\xdd\x4c\xcf\ +\xbf\xcc\x38\x7d\x6f\x12\x16\x98\x6f\x99\x16\xc6\x8e\x85\xc5\x94\ +\xc5\xa4\x77\x51\x16\xe1\xae\xef\xb5\x57\x62\x1c\x23\x97\x2d\xde\ +\x41\x91\xdc\x58\x3e\x8e\x65\x22\xa5\xe3\x36\x12\x89\x72\x9c\x19\ +\x22\x58\x9a\xd7\xc0\xc1\x15\xc6\x36\x4e\x7b\x98\x57\x96\xb6\x58\ +\x6b\xe5\x18\x0c\xb8\xdc\x63\x03\x12\x5b\x58\x33\x16\x38\x46\x49\ +\x8f\x75\xa1\xb4\xe7\xe1\x10\xe3\x30\xd5\x45\xf4\x65\x17\xb7\xc2\ +\xe1\xee\x02\x0d\x30\xff\x29\x8c\x83\x1c\xc2\xb9\x02\x49\x25\xcc\ +\xe2\xc4\x88\x25\xce\x08\xaf\x2d\xed\x93\x46\x7a\x11\xd4\x65\xc6\ +\xa8\xa0\xae\x60\x12\x04\x63\x15\xdb\x8a\xc6\xa0\xee\x23\x99\x08\ +\x6e\x31\xd2\x43\x1b\x28\x27\x55\x67\x90\x83\x89\xe0\xd0\xc2\x3a\ +\x9c\x24\xad\x14\x38\x9c\x27\x8e\x2b\x43\x06\x29\xa5\x84\x77\xe0\ +\x90\x9e\x2b\x87\x83\xa5\x96\x58\x1a\x63\x2e\xe5\x56\xd2\x31\x56\ +\x09\xe2\x50\x90\xae\x8c\x20\x6d\x85\x15\x66\x8c\xba\xe0\x39\x44\ +\x88\x04\x03\xab\xe4\x90\x49\x35\x01\x66\x44\x3a\xd1\xde\x33\x17\ +\x28\x4a\x19\x1d\xfc\x82\x49\x24\xa8\x2a\x10\x09\xf2\xac\xd5\x9a\ +\x7b\x8d\x73\x9d\x33\x5c\x42\xaa\xe5\xb0\x4f\x82\xc0\xa5\xb1\x1a\ +\x1c\x5a\x59\x81\x73\xb0\x87\xe3\x7c\x58\x67\xb9\x50\x8a\x43\x11\ +\xe4\xb0\xd2\x91\x49\xb0\xc3\x79\xb5\xd5\x84\x82\x81\x92\x24\x83\ +\x31\xc2\x4a\x4b\xaa\x69\x26\x98\xa1\x53\x84\xd0\x88\x70\xa7\xbb\ +\xf6\x63\x46\xbe\x91\x8e\xe1\x95\xe4\x93\x97\xc0\x8d\x00\x31\x4e\ +\xce\xf2\xc2\x90\x4a\x5a\xc2\x6d\x0a\xc1\x74\xd2\x6a\x7b\x62\x1c\ +\xf7\x8c\x3b\xd4\x4e\xfd\x74\x17\xa4\xfe\xf9\xb8\x9b\xd2\x63\x10\ +\x99\x39\xcb\xa5\x3d\x44\xe4\x67\xbd\x2f\x3d\x84\x47\x6e\x81\x47\ +\x66\x15\xe1\xd1\xd0\x2f\x4e\xc2\x07\x3c\x02\x9d\x40\xdd\x10\x8f\ +\x5a\x38\x26\xc4\x10\x90\xce\x7a\xca\xdf\x01\x22\xa5\x54\x5c\xcb\ +\x01\x22\xb5\x77\x4e\xf8\x3d\x24\xc1\x80\x9c\x1b\x40\x52\xa1\x08\ +\x6a\x7d\x08\x49\xa0\x44\xf9\x03\x4c\x3a\xcd\xa4\x1d\x62\x92\xbe\ +\xeb\xe4\xd8\x7b\x88\x49\xa7\x58\x50\x50\x6b\xeb\x39\x55\x0c\x0e\ +\x1a\xb2\x16\xd9\xa3\x39\xb2\x34\x5c\x7c\x70\x0c\xed\x42\xf6\x7a\ +\x42\x94\x02\x92\x98\x0b\x0a\xa0\x13\x0a\x82\x87\x37\xac\xe3\x01\ +\x40\x1d\x49\x16\xdc\x23\x0d\x91\x8c\x0a\x19\x4b\x04\x87\x76\x8b\ +\x4d\xe0\x65\x42\x06\x04\x29\xe5\x3a\xbb\x8c\x32\x9c\x0c\xc7\x4e\ +\x1c\x8d\x17\xa8\x22\x01\x18\x8e\xdb\xa2\x03\x3c\x18\xf3\x82\x13\ +\xc4\x84\xe0\x46\x8c\xc3\x95\x53\x63\xdd\x03\xda\xe1\x50\xa8\x23\ +\x1c\xf9\x01\x8d\x1e\x98\x1e\x73\x99\x28\xe3\x42\x49\xd1\x46\x82\ +\x07\x04\xae\xbd\x90\xe4\x4e\x67\x50\x42\xf7\x50\x46\x04\x60\x8f\ +\x56\x64\x32\x10\x2b\x49\xb0\x11\x9c\x03\x98\x31\x90\x89\x92\x44\ +\xbb\xbc\xc6\x85\xb6\xc7\x32\xa0\x6b\x10\x36\x3b\xf6\x89\x0f\x3e\ +\xf1\x09\xaa\xb2\xa1\x83\xa8\x54\x31\xae\x43\xdd\xf1\xa8\x44\x03\ +\x30\xa3\x2c\x18\xe6\xc9\xd9\x1c\x27\x93\x41\x28\x37\x86\xfb\x2e\ +\x3f\x00\x62\xf2\x01\xa5\x8c\xdc\x83\x1a\x06\x84\x6a\x85\x20\xc2\ +\x6b\xb8\x66\x27\xca\xa3\x5e\x99\x31\xa9\xe0\xec\x89\x2f\x3d\x7a\ +\x50\xc7\xea\x09\x61\x9d\xa6\xe9\xe7\xc2\x35\x4c\x16\xf7\xbf\x10\ +\x91\x5f\x02\xd7\x08\xa6\x91\x0e\xd0\x18\x0b\xc7\x29\x3b\xb6\x7d\ +\x16\x5d\x4a\xa3\x41\x0d\x81\xcd\x2d\x4a\x38\x91\x10\x1f\x80\x9e\ +\x80\x63\xa8\x9d\x75\x24\xe0\x38\xe0\xd4\xb2\xae\xfe\x07\x60\xa3\ +\xcf\x20\x01\xc6\x94\xb5\xc0\x25\x02\xcb\xb6\x9d\x97\x01\x5d\x32\ +\xe0\x5e\x4a\x73\x80\x6a\x01\x5d\x90\x74\xe8\xff\x4e\x18\x4d\xc1\ +\x37\x4a\x50\xa6\x0a\x87\xfe\x4a\x98\x80\x26\x4c\x1a\x31\x84\xb4\ +\x91\x8c\x3a\x88\xe1\xe8\xd2\x94\xee\x1a\xad\x99\x92\x50\xa1\xc3\ +\xb0\x04\xd8\x16\x32\x24\x32\xb2\x13\x89\x4b\x14\x25\xc2\x88\xc0\ +\x76\x58\x86\x45\xc8\x40\xc2\x25\x0b\x70\x47\x87\xf3\x9c\x64\x30\ +\xbc\x10\x5e\x3c\xca\x0f\x07\x2e\x51\x97\x02\x0e\x05\xea\x95\x24\ +\x02\xc8\x36\x80\x1f\xd5\x44\x90\x16\xcc\x5b\x2a\x21\x16\x15\x4d\ +\xfa\x20\x93\x78\xa9\xb1\x19\x65\xdd\x2e\xf3\x43\x5f\xf7\xc6\x8a\ +\x3d\x96\xe1\x2d\x87\xf1\x66\x2c\xc8\xfd\x18\x25\x00\x39\x9c\x85\ +\xea\x40\x15\x0e\xac\x84\x49\x58\xaa\x38\x1f\x22\x59\x61\x0f\x84\ +\x58\x52\xd9\x52\xab\x47\xc5\x63\x24\xd6\x81\x19\x35\x06\xaa\x6a\ +\x80\xd0\x0d\x80\x6c\x51\x97\x51\x39\x51\x20\x24\x4a\x05\xe5\x80\ +\x46\x97\x41\xef\xc7\x66\x4c\x9b\x64\x8d\x17\x16\x5c\x03\x20\x7b\ +\x14\x2e\xbb\xc7\x31\x0a\x94\x30\xde\xf3\x21\x8e\x2d\xe6\x28\xee\ +\x87\x38\x76\x68\x5f\x3d\x8c\x0d\xbc\x0c\x03\xfd\x07\x61\xfc\x99\ +\x21\xfc\xdb\xf7\x66\x9f\x7c\x65\xa5\xef\xa1\x11\x7c\x25\x0e\x6f\ +\xac\x9e\x7a\x87\x92\x27\x2e\xac\x98\x46\xe5\xc9\xeb\xea\xa3\x6f\ +\x9f\x90\xc0\x0f\x7f\x33\x3f\xad\xc7\x03\x9a\xfc\x76\x5f\xfd\x12\ +\xf7\xd5\xff\xfd\xf7\xc4\x7d\xf5\x7c\x72\x45\xff\x55\x8d\x7e\x38\ +\xc3\xdf\xff\x03\x20\xb6\x27\x00\ \x00\x00\x07\x19\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -18420,6 +19171,11 @@ qt_resource_name = "\ \x00\x70\ \x00\x69\x00\x63\x00\x6b\x00\x72\x00\x61\x00\x73\x00\x74\x00\x65\x00\x72\x00\x73\x00\x70\x00\x65\x00\x63\x00\x74\x00\x72\x00\x75\ \x00\x6d\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x1a\ +\x0b\xa7\x07\x07\ +\x00\x6d\ +\x00\x49\x00\x63\x00\x6f\x00\x6e\x00\x54\x00\x65\x00\x6d\x00\x70\x00\x6f\x00\x72\x00\x61\x00\x6c\x00\x50\x00\x72\x00\x6f\x00\x66\ +\x00\x69\x00\x6c\x00\x65\x00\x32\x00\x44\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x12\ \x0e\x9b\x32\xa7\ \x00\x6d\ @@ -18562,6 +19318,11 @@ qt_resource_name = "\ \x00\x49\ \x00\x63\x00\x6f\x00\x6e\x00\x54\x00\x69\x00\x6d\x00\x65\x00\x53\x00\x65\x00\x72\x00\x69\x00\x65\x00\x73\x00\x2e\x00\x73\x00\x76\ \x00\x67\ +\x00\x1a\ +\x0b\xb7\x07\x07\ +\x00\x6d\ +\x00\x49\x00\x63\x00\x6f\x00\x6e\x00\x54\x00\x65\x00\x6d\x00\x70\x00\x6f\x00\x72\x00\x61\x00\x6c\x00\x50\x00\x72\x00\x6f\x00\x66\ +\x00\x69\x00\x6c\x00\x65\x00\x33\x00\x44\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0c\ \x06\xdd\x15\x87\ \x00\x6d\ @@ -18609,81 +19370,83 @@ qt_resource_name = "\ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\ -\x00\x00\x00\x26\x00\x02\x00\x00\x00\x4c\x00\x00\x00\x03\ -\x00\x00\x08\x1e\x00\x01\x00\x00\x00\x01\x00\x02\xde\x33\ -\x00\x00\x08\xcc\x00\x01\x00\x00\x00\x01\x00\x03\x34\xf6\ +\x00\x00\x00\x26\x00\x02\x00\x00\x00\x4e\x00\x00\x00\x03\ +\x00\x00\x08\x58\x00\x01\x00\x00\x00\x01\x00\x03\x02\x0a\ +\x00\x00\x09\x06\x00\x01\x00\x00\x00\x01\x00\x03\x58\xcd\ \x00\x00\x01\xac\x00\x01\x00\x00\x00\x01\x00\x00\x68\xc0\ -\x00\x00\x06\x42\x00\x01\x00\x00\x00\x01\x00\x01\xe9\xbe\ -\x00\x00\x0c\x7e\x00\x01\x00\x00\x00\x01\x00\x04\x59\x3b\ -\x00\x00\x07\x66\x00\x01\x00\x00\x00\x01\x00\x02\x3f\x12\ -\x00\x00\x07\x84\x00\x01\x00\x00\x00\x01\x00\x02\xb3\x06\ +\x00\x00\x06\x42\x00\x01\x00\x00\x00\x01\x00\x01\xe7\x88\ +\x00\x00\x0c\xf2\x00\x01\x00\x00\x00\x01\x00\x04\x87\xef\ +\x00\x00\x07\xa0\x00\x01\x00\x00\x00\x01\x00\x02\x62\xe9\ +\x00\x00\x07\xbe\x00\x01\x00\x00\x00\x01\x00\x02\xd6\xdd\ \x00\x00\x00\x36\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x0c\x10\x00\x01\x00\x00\x00\x01\x00\x04\x49\x32\ -\x00\x00\x07\x24\x00\x00\x00\x00\x00\x01\x00\x02\x36\xb1\ -\x00\x00\x0b\x90\x00\x01\x00\x00\x00\x01\x00\x04\x23\x6c\ -\x00\x00\x05\x6e\x00\x01\x00\x00\x00\x01\x00\x01\xc4\x20\ +\x00\x00\x0c\x84\x00\x01\x00\x00\x00\x01\x00\x04\x77\xe6\ +\x00\x00\x07\x5e\x00\x00\x00\x00\x00\x01\x00\x02\x5a\x88\ +\x00\x00\x0c\x04\x00\x01\x00\x00\x00\x01\x00\x04\x52\x20\ +\x00\x00\x05\x6e\x00\x01\x00\x00\x00\x01\x00\x01\xc1\xea\ \x00\x00\x03\x9a\x00\x01\x00\x00\x00\x01\x00\x01\x2d\x57\ -\x00\x00\x09\xc0\x00\x01\x00\x00\x00\x01\x00\x03\x9f\x52\ -\x00\x00\x0a\xee\x00\x01\x00\x00\x00\x01\x00\x04\x05\xf6\ -\x00\x00\x0a\xce\x00\x01\x00\x00\x00\x01\x00\x03\xfd\x37\ -\x00\x00\x07\xf0\x00\x01\x00\x00\x00\x01\x00\x02\xd3\x2b\ +\x00\x00\x09\xfa\x00\x01\x00\x00\x00\x01\x00\x03\xc3\x29\ +\x00\x00\x0b\x28\x00\x01\x00\x00\x00\x01\x00\x04\x29\xcd\ +\x00\x00\x0b\x08\x00\x01\x00\x00\x00\x01\x00\x04\x21\x0e\ +\x00\x00\x08\x2a\x00\x01\x00\x00\x00\x01\x00\x02\xf7\x02\ \x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x0d\ -\x00\x00\x05\xf8\x00\x00\x00\x00\x00\x01\x00\x01\xe2\x4f\ -\x00\x00\x0a\x1c\x00\x00\x00\x00\x00\x01\x00\x03\xb7\xb5\ -\x00\x00\x0b\xee\x00\x00\x00\x00\x00\x01\x00\x04\x44\xb9\ -\x00\x00\x07\xa0\x00\x01\x00\x00\x00\x01\x00\x02\xb8\x93\ -\x00\x00\x08\x6c\x00\x01\x00\x00\x00\x01\x00\x02\xf7\xfe\ +\x00\x00\x05\xf8\x00\x00\x00\x00\x00\x01\x00\x01\xe0\x19\ +\x00\x00\x0a\x56\x00\x00\x00\x00\x00\x01\x00\x03\xdb\x8c\ +\x00\x00\x0c\x62\x00\x00\x00\x00\x00\x01\x00\x04\x73\x6d\ +\x00\x00\x07\xda\x00\x01\x00\x00\x00\x01\x00\x02\xdc\x6a\ +\x00\x00\x08\xa6\x00\x01\x00\x00\x00\x01\x00\x03\x1b\xd5\ \x00\x00\x03\x22\x00\x00\x00\x00\x00\x01\x00\x00\xfe\x33\ -\x00\x00\x0c\x4e\x00\x01\x00\x00\x00\x01\x00\x04\x50\x88\ -\x00\x00\x0a\x98\x00\x01\x00\x00\x00\x01\x00\x03\xee\xce\ -\x00\x00\x0b\x3a\x00\x00\x00\x00\x00\x01\x00\x04\x14\x32\ -\x00\x00\x08\xa0\x00\x01\x00\x00\x00\x01\x00\x03\x19\x5c\ +\x00\x00\x0c\xc2\x00\x01\x00\x00\x00\x01\x00\x04\x7f\x3c\ +\x00\x00\x0a\xd2\x00\x01\x00\x00\x00\x01\x00\x04\x12\xa5\ +\x00\x00\x0b\xae\x00\x00\x00\x00\x00\x01\x00\x04\x42\xe6\ +\x00\x00\x08\xda\x00\x01\x00\x00\x00\x01\x00\x03\x3d\x33\ \x00\x00\x02\xa0\x00\x01\x00\x00\x00\x01\x00\x00\xcf\xab\ -\x00\x00\x05\x36\x00\x01\x00\x00\x00\x01\x00\x01\xb5\x58\ -\x00\x00\x0c\x98\x00\x01\x00\x00\x00\x01\x00\x04\x62\x19\ -\x00\x00\x06\xd4\x00\x01\x00\x00\x00\x01\x00\x02\x26\xaf\ +\x00\x00\x05\x36\x00\x01\x00\x00\x00\x01\x00\x01\xb3\x22\ +\x00\x00\x0d\x0c\x00\x01\x00\x00\x00\x01\x00\x04\x90\xcd\ +\x00\x00\x07\x0e\x00\x01\x00\x00\x00\x01\x00\x02\x4a\x86\ \x00\x00\x03\xf4\x00\x01\x00\x00\x00\x01\x00\x01\x53\x52\ \x00\x00\x01\x62\x00\x00\x00\x00\x00\x01\x00\x00\x41\xf1\ \x00\x00\x00\xf6\x00\x01\x00\x00\x00\x01\x00\x00\x31\xf1\ -\x00\x00\x08\x8c\x00\x00\x00\x00\x00\x01\x00\x03\x02\x40\ -\x00\x00\x0b\x58\x00\x01\x00\x00\x00\x01\x00\x04\x1b\x4f\ -\x00\x00\x09\xa4\x00\x01\x00\x00\x00\x01\x00\x03\x7b\x68\ -\x00\x00\x09\x42\x00\x01\x00\x00\x00\x01\x00\x03\x56\xc5\ -\x00\x00\x05\xcc\x00\x01\x00\x00\x00\x01\x00\x01\xd1\x2c\ -\x00\x00\x07\x02\x00\x01\x00\x00\x00\x01\x00\x02\x2f\x4d\ -\x00\x00\x0a\x46\x00\x01\x00\x00\x00\x01\x00\x03\xbc\xa9\ -\x00\x00\x09\x76\x00\x01\x00\x00\x00\x01\x00\x03\x73\x7f\ +\x00\x00\x08\xc6\x00\x00\x00\x00\x00\x01\x00\x03\x26\x17\ +\x00\x00\x0b\xcc\x00\x01\x00\x00\x00\x01\x00\x04\x4a\x03\ +\x00\x00\x09\xde\x00\x01\x00\x00\x00\x01\x00\x03\x9f\x3f\ +\x00\x00\x09\x7c\x00\x01\x00\x00\x00\x01\x00\x03\x7a\x9c\ +\x00\x00\x05\xcc\x00\x01\x00\x00\x00\x01\x00\x01\xce\xf6\ +\x00\x00\x07\x3c\x00\x01\x00\x00\x00\x01\x00\x02\x53\x24\ +\x00\x00\x0a\x80\x00\x01\x00\x00\x00\x01\x00\x03\xe0\x80\ +\x00\x00\x09\xb0\x00\x01\x00\x00\x00\x01\x00\x03\x97\x56\ \x00\x00\x02\xce\x00\x01\x00\x00\x00\x01\x00\x00\xd8\x0f\ -\x00\x00\x09\x16\x00\x01\x00\x00\x00\x01\x00\x03\x4f\xf4\ +\x00\x00\x09\x50\x00\x01\x00\x00\x00\x01\x00\x03\x73\xcb\ \x00\x00\x02\xfe\x00\x01\x00\x00\x00\x01\x00\x00\xf3\xf3\ -\x00\x00\x09\xfc\x00\x00\x00\x00\x00\x01\x00\x03\xa8\xac\ -\x00\x00\x08\xf4\x00\x00\x00\x00\x00\x01\x00\x03\x45\x8f\ +\x00\x00\x0a\x36\x00\x00\x00\x00\x00\x01\x00\x03\xcc\x83\ +\x00\x00\x09\x2e\x00\x00\x00\x00\x00\x01\x00\x03\x69\x66\ \x00\x00\x02\x1e\x00\x01\x00\x00\x00\x01\x00\x00\x9d\x3e\ -\x00\x00\x06\x2c\x00\x01\x00\x00\x00\x01\x00\x01\xe4\x61\ +\x00\x00\x06\x2c\x00\x01\x00\x00\x00\x01\x00\x01\xe2\x2b\ \x00\x00\x00\xdc\x00\x01\x00\x00\x00\x01\x00\x00\x10\x62\ -\x00\x00\x07\x4c\x00\x01\x00\x00\x00\x01\x00\x02\x37\xd4\ -\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x01\xa4\xfe\ -\x00\x00\x07\xc8\x00\x01\x00\x00\x00\x01\x00\x02\xc4\x70\ +\x00\x00\x07\x86\x00\x01\x00\x00\x00\x01\x00\x02\x5b\xab\ +\x00\x00\x05\x0a\x00\x00\x00\x00\x00\x01\x00\x01\xa2\xc8\ +\x00\x00\x08\x02\x00\x01\x00\x00\x00\x01\x00\x02\xe8\x47\ \x00\x00\x04\x26\x00\x00\x00\x00\x00\x01\x00\x01\x5e\x91\ +\x00\x00\x06\x74\x00\x00\x00\x00\x00\x01\x00\x02\x09\x99\ +\x00\x00\x0b\x74\x00\x01\x00\x00\x00\x01\x00\x04\x38\x09\ \x00\x00\x04\x54\x00\x01\x00\x00\x00\x01\x00\x01\x61\x7a\ -\x00\x00\x08\x4e\x00\x01\x00\x00\x00\x01\x00\x02\xec\x95\ -\x00\x00\x0b\xc0\x00\x01\x00\x00\x00\x01\x00\x04\x35\xf6\ -\x00\x00\x0b\x10\x00\x01\x00\x00\x00\x01\x00\x04\x0e\xe3\ +\x00\x00\x08\x88\x00\x01\x00\x00\x00\x01\x00\x03\x10\x6c\ +\x00\x00\x0c\x34\x00\x01\x00\x00\x00\x01\x00\x04\x64\xaa\ +\x00\x00\x0b\x4a\x00\x01\x00\x00\x00\x01\x00\x04\x32\xba\ \x00\x00\x03\x74\x00\x01\x00\x00\x00\x01\x00\x01\x25\x3b\ -\x00\x00\x05\x9c\x00\x00\x00\x00\x00\x01\x00\x01\xcc\x87\ -\x00\x00\x06\x9e\x00\x01\x00\x00\x00\x01\x00\x02\x1c\x39\ +\x00\x00\x05\x9c\x00\x00\x00\x00\x00\x01\x00\x01\xca\x51\ +\x00\x00\x06\xd8\x00\x01\x00\x00\x00\x01\x00\x02\x40\x10\ \x00\x00\x01\xf4\x00\x00\x00\x00\x00\x01\x00\x00\x90\x2d\ -\x00\x00\x04\xde\x00\x01\x00\x00\x00\x01\x00\x01\x9b\xfb\ +\x00\x00\x04\xde\x00\x01\x00\x00\x00\x01\x00\x01\x99\xc5\ \x00\x00\x01\x82\x00\x00\x00\x00\x00\x01\x00\x00\x5a\x0e\ \x00\x00\x02\x70\x00\x01\x00\x00\x00\x01\x00\x00\xc3\x95\ \x00\x00\x01\xd0\x00\x01\x00\x00\x00\x01\x00\x00\x70\x7c\ \x00\x00\x03\x48\x00\x01\x00\x00\x00\x01\x00\x01\x16\x85\ \x00\x00\x00\x76\x00\x01\x00\x00\x00\x01\x00\x00\x06\x03\ -\x00\x00\x0a\x68\x00\x01\x00\x00\x00\x01\x00\x03\xe3\x81\ -\x00\x00\x06\x74\x00\x01\x00\x00\x00\x01\x00\x02\x0b\xcf\ +\x00\x00\x0a\xa2\x00\x01\x00\x00\x00\x01\x00\x04\x07\x58\ +\x00\x00\x06\xae\x00\x01\x00\x00\x00\x01\x00\x02\x2f\xa6\ \x00\x00\x01\x2e\x00\x00\x00\x00\x00\x01\x00\x00\x3d\x2d\ \x00\x00\x04\x8c\x00\x00\x00\x00\x00\x01\x00\x01\x6c\xe2\ -\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x01\x90\x79\ +\x00\x00\x04\xc2\x00\x01\x00\x00\x00\x01\x00\x01\x8e\x43\ \x00\x00\x02\x4a\x00\x01\x00\x00\x00\x01\x00\x00\xbc\xde\ \x00\x00\x03\xc8\x00\x01\x00\x00\x00\x01\x00\x01\x49\xae\ " diff --git a/timeseriesviewer/ui/resources.qrc b/timeseriesviewer/ui/resources.qrc index 4fe13fb7..2321a1df 100644 --- a/timeseriesviewer/ui/resources.qrc +++ b/timeseriesviewer/ui/resources.qrc @@ -1,5 +1,7 @@ <RCC> <qresource prefix="timeseriesviewer"> + <file>icons/mIconTemporalProfile2D.svg</file> + <file>icons/mIconTemporalProfile3D.svg</file> <file>icons/add_class.svg</file> <file>icons/mIconTemporalProfile.svg</file> <file>icons/ActionIdentifyTimeSeries.svg</file> -- GitLab