diff --git a/data/examples/ArchDetail.FCStd b/data/examples/ArchDetail.FCStd
new file mode 100644
index 0000000000..aedb763098
Binary files /dev/null and b/data/examples/ArchDetail.FCStd differ
diff --git a/data/examples/CMakeLists.txt b/data/examples/CMakeLists.txt
index 9308e5728e..eb0e2f991f 100644
--- a/data/examples/CMakeLists.txt
+++ b/data/examples/CMakeLists.txt
@@ -5,6 +5,7 @@ SET(Examples_Files
EngineBlock.FCStd
PartDesignExample.FCStd
RobotExample.FCStd
+ ArchDetail.FCStd
)
ADD_CUSTOM_TARGET(Example_data ALL
diff --git a/data/examples/Makefile.am b/data/examples/Makefile.am
index 7eab3ded9a..d94f45eca8 100644
--- a/data/examples/Makefile.am
+++ b/data/examples/Makefile.am
@@ -6,7 +6,8 @@ data_DATA = \
EngineBlock.FCStd \
PartDesignExample.FCStd \
RobotExample.FCStd \
- Schenkel.stp
+ Schenkel.stp \
+ ArchDetail.FCStd
EXTRA_DIST = \
$(data_DATA) \
diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp
index 698da1a914..030a283dc3 100644
--- a/src/Gui/CommandDoc.cpp
+++ b/src/Gui/CommandDoc.cpp
@@ -295,9 +295,10 @@ void StdCmdMergeProjects::activated(int iMsg)
{
QString exe = qApp->applicationName();
QString project = QFileDialog::getOpenFileName(Gui::getMainWindow(),
- QString::fromUtf8(QT_TR_NOOP("Merge project")), QDir::homePath(),
+ QString::fromUtf8(QT_TR_NOOP("Merge project")), FileDialog::getWorkingDirectory(),
QString::fromUtf8(QT_TR_NOOP("%1 document (*.fcstd)")).arg(exe));
if (!project.isEmpty()) {
+ FileDialog::setWorkingDirectory(project);
App::Document* doc = App::GetApplication().getActiveDocument();
QFileInfo info(QString::fromUtf8(doc->FileName.getValue()));
QFileInfo proj(project);
diff --git a/src/Mod/Draft/DraftSnap.py b/src/Mod/Draft/DraftSnap.py
index 6b01699fc9..2c9858cf28 100644
--- a/src/Mod/Draft/DraftSnap.py
+++ b/src/Mod/Draft/DraftSnap.py
@@ -170,14 +170,21 @@ class Snapper:
self.tracker.off()
if self.extLine:
self.extLine.off()
+ if self.trackLine:
+ self.trackLine.off()
point = self.getApparentPoint(screenpos[0],screenpos[1])
+
+ # setup a track line if we got a last point
+ if lastpoint:
+ if not self.trackLine:
+ self.trackLine = DraftTrackers.lineTracker()
+ self.trackLine.p1(lastpoint)
# check if we snapped to something
self.snapInfo = Draft.get3DView().getObjectInfo((screenpos[0],screenpos[1]))
# checking if parallel to one of the edges of the last objects or to a polar direction
-
if active:
eline = None
point,eline = self.snapToPolar(point,lastpoint)
@@ -188,7 +195,11 @@ class Snapper:
# nothing has been snapped, check fro grid snap
if active:
point = self.snapToGrid(point)
- return cstr(point)
+ fp = cstr(point)
+ if self.trackLine and lastpoint:
+ self.trackLine.p2(fp)
+ self.trackLine.on()
+ return fp
else:
@@ -308,10 +319,16 @@ class Snapper:
self.tracker.setCoords(winner[2])
self.tracker.setMarker(self.mk[winner[1]])
self.tracker.on()
+ # setting the trackline
+ fp = cstr(winner[2])
+ if self.trackLine and lastpoint:
+ self.trackLine.p2(fp)
+ self.trackLine.on()
+ # set the cursor
self.setCursor(winner[1])
-
+
# return the final point
- return cstr(winner[2])
+ return fp
def getApparentPoint(self,x,y):
"returns a 3D point, projected on the current working plane"
@@ -439,15 +456,14 @@ class Snapper:
if self.isEnabled("grid"):
np = self.grid.getClosestNode(point)
if np:
- if self.radius != 0:
- dv = point.sub(np)
- if dv.Length <= self.radius:
- if self.tracker:
- self.tracker.setCoords(np)
- self.tracker.setMarker(self.mk['grid'])
- self.tracker.on()
- self.setCursor('grid')
- return np
+ dv = point.sub(np)
+ if (self.radius == 0) or (dv.Length <= self.radius):
+ if self.tracker:
+ self.tracker.setCoords(np)
+ self.tracker.setMarker(self.mk['grid'])
+ self.tracker.on()
+ self.setCursor('grid')
+ return np
return point
def snapToEndpoints(self,shape):
@@ -663,6 +679,8 @@ class Snapper:
"finishes snapping"
if self.tracker:
self.tracker.off()
+ if self.trackLine:
+ self.trackLine.off()
if self.extLine:
self.extLine.off()
if self.radiusTracker:
@@ -777,13 +795,6 @@ class Snapper:
self.ui = FreeCADGui.draftToolBar
self.view = Draft.get3DView()
- # setting a track line if we got an existing point
- if last:
- if not self.trackLine:
- self.trackLine = DraftTrackers.lineTracker()
- self.trackLine.p1(last)
- self.trackLine.on()
-
def move(event_cb):
event = event_cb.getEvent()
mousepos = event.getPosition()
@@ -792,8 +803,6 @@ class Snapper:
self.pt = FreeCADGui.Snapper.snap(mousepos,lastpoint=last,active=ctrl,constrain=shift)
if hasattr(FreeCAD,"DraftWorkingPlane"):
self.ui.displayPoint(self.pt,last,plane=FreeCAD.DraftWorkingPlane,mask=FreeCADGui.Snapper.affinity)
- if self.trackLine:
- self.trackLine.p2(self.pt)
if movecallback:
movecallback(self.pt)
@@ -816,8 +825,6 @@ class Snapper:
obj = FreeCADGui.Snapper.lastSnappedObject
FreeCADGui.Snapper.off()
self.ui.offUi()
- if self.trackLine:
- self.trackLine.off()
if callback:
if len(inspect.getargspec(callback).args) > 2:
callback(self.pt,obj)
@@ -830,8 +837,6 @@ class Snapper:
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
FreeCADGui.Snapper.off()
self.ui.offUi()
- if self.trackLine:
- self.trackLine.off()
if callback:
callback(None)
diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py
index bfd4a54782..f9e84fb008 100644
--- a/src/Mod/Draft/DraftTools.py
+++ b/src/Mod/Draft/DraftTools.py
@@ -227,7 +227,8 @@ class DraftTool:
self.ui = None
self.call = None
- self.support = None
+ self.support = None
+ self.point = None
self.commitList = []
self.doc = FreeCAD.ActiveDocument
if not self.doc:
@@ -250,21 +251,16 @@ class DraftTool:
self.extendedCopy = False
self.ui.setTitle(name)
self.featureName = name
- #self.snap = snapTracker()
- #self.extsnap = lineTracker(dotted=True)
self.planetrack = None
if Draft.getParam("showPlaneTracker"):
self.planetrack = PlaneTracker()
def finish(self):
self.node = []
- #self.snap.finalize()
- #self.extsnap.finalize()
FreeCAD.activeDraftCommand = None
if self.ui:
self.ui.offUi()
self.ui.sourceCmd = None
- #self.ui.cross(False)
msg("")
if self.planetrack:
self.planetrack.finalize()
@@ -451,8 +447,6 @@ class Line(Creator):
self.ui.wireUi(name)
else:
self.ui.lineUi(name)
- self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
self.obj=self.doc.addObject("Part::Feature",self.featureName)
# self.obj.ViewObject.Selectable = False
Draft.formatObject(self.obj)
@@ -473,9 +467,6 @@ class Line(Creator):
['import Draft',
'points='+pts,
'Draft.makeWire(points,closed='+str(closed)+',face='+fil+',support='+sup+')'])
- if self.ui:
- self.linetrack.finalize()
- self.constraintrack.finalize()
Creator.finish(self)
if self.ui:
if self.ui.continueMode:
@@ -489,9 +480,7 @@ class Line(Creator):
self.finish()
elif arg["Type"] == "SoLocation2Event":
# mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg)
- self.ui.cross(True)
- self.linetrack.p2(point)
+ self.point,ctrlPoint,info = getPoint(self,arg)
elif arg["Type"] == "SoMouseButtonEvent":
# mouse button detection
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
@@ -500,25 +489,23 @@ class Line(Creator):
else:
if (not self.node) and (not self.support):
self.support = getSupport(arg)
- point,ctrlPoint,info = getPoint(self,arg)
- self.pos = arg["Position"]
- self.node.append(point)
- self.linetrack.p1(point)
- self.drawSegment(point)
- if (not self.isWire and len(self.node) == 2):
- self.finish(False,cont=True)
- if (len(self.node) > 2):
- if ((point-self.node[0]).Length < Draft.tolerance()):
- self.undolast()
- self.finish(True,cont=True)
- msg(translate("draft", "DWire has been closed\n"))
+ if self.point:
+ self.pos = arg["Position"]
+ self.node.append(self.point)
+ self.drawSegment(self.point)
+ if (not self.isWire and len(self.node) == 2):
+ self.finish(False,cont=True)
+ if (len(self.node) > 2):
+ if ((self.point-self.node[0]).Length < Draft.tolerance()):
+ self.undolast()
+ self.finish(True,cont=True)
+ msg(translate("draft", "DWire has been closed\n"))
def undolast(self):
"undoes last line segment"
if (len(self.node) > 1):
self.node.pop()
last = self.node[len(self.node)-1]
- self.linetrack.p1(last)
if self.obj.Shape.Edges:
edges = self.obj.Shape.Edges
if len(edges) > 1:
@@ -533,7 +520,6 @@ class Line(Creator):
def drawSegment(self,point):
"draws a new segment"
if (len(self.node) == 1):
- self.linetrack.on()
msg(translate("draft", "Pick next point:\n"))
if self.planetrack:
self.planetrack.set(self.node[0])
@@ -558,17 +544,15 @@ class Line(Creator):
# self.obj.Shape.nullify() - for some reason this fails
self.obj.ViewObject.Visibility = False
self.node = [self.node[-1]]
- self.linetrack.p1(self.node[0])
if self.planetrack:
self.planetrack.set(self.node[0])
msg(translate("draft", "Pick next point:\n"))
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
- point = Vector(numx,numy,numz)
- self.node.append(point)
- self.linetrack.p1(point)
- self.drawSegment(point)
+ self.point = Vector(numx,numy,numz)
+ self.node.append(self.point)
+ self.drawSegment(self.point)
if (not self.isWire and len(self.node) == 2):
self.finish(False,cont=True)
self.ui.setNextFocus()
@@ -609,15 +593,8 @@ class BSpline(Line):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg)
- self.ui.cross(True)
- self.bsplinetrack.update(self.node + [point])
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else: self.constraintrack.off()
+ self.point,ctrlPoint,info = getPoint(self,arg)
+ self.bsplinetrack.update(self.node + [self.point])
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
if (arg["Position"] == self.pos):
@@ -625,21 +602,21 @@ class BSpline(Line):
else:
if (not self.node) and (not self.support):
self.support = getSupport(arg)
- point,ctrlPoint,info = getPoint(self,arg)
- self.pos = arg["Position"]
- self.node.append(point)
- self.drawUpdate(point)
- if (not self.isWire and len(self.node) == 2):
- self.finish(False,cont=True)
- if (len(self.node) > 2):
- # DNC: allows to close the curve
- # by placing ends close to each other
- # with tol = Draft tolerance
- # old code has been to insensitive
- if ((point-self.node[0]).Length < Draft.tolerance()):
- self.undolast()
- self.finish(True,cont=True)
- msg(translate("draft", "Spline has been closed\n"))
+ if self.point:
+ self.pos = arg["Position"]
+ self.node.append(self.point)
+ self.drawUpdate(self.point)
+ if (not self.isWire and len(self.node) == 2):
+ self.finish(False,cont=True)
+ if (len(self.node) > 2):
+ # DNC: allows to close the curve
+ # by placing ends close to each other
+ # with tol = Draft tolerance
+ # old code has been to insensitive
+ if ((self.point-self.node[0]).Length < Draft.tolerance()):
+ self.undolast()
+ self.finish(True,cont=True)
+ msg(translate("draft", "Spline has been closed\n"))
def undolast(self):
"undoes last line segment"
@@ -681,7 +658,6 @@ class BSpline(Line):
print "Draft: error delaying commit"
if self.ui:
self.bsplinetrack.finalize()
- self.constraintrack.finalize()
Creator.finish(self)
if self.ui:
if self.ui.continueMode:
@@ -806,9 +782,8 @@ class Rectangle(Creator):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg,mobile=True)
- self.rect.update(point)
- self.ui.cross(True)
+ self.point,ctrlPoint,info = getPoint(self,arg,mobile=True)
+ self.rect.update(self.point)
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
if (arg["Position"] == self.pos):
@@ -816,13 +791,13 @@ class Rectangle(Creator):
else:
if (not self.node) and (not self.support):
self.support = getSupport(arg)
- point,ctrlPoint,info = getPoint(self,arg)
- self.appendPoint(point)
+ if self.point:
+ self.appendPoint(self.point)
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
- point = Vector(numx,numy,numz)
- self.appendPoint(point)
+ self.point = Vector(numx,numy,numz)
+ self.appendPoint(self.point)
def appendPoint(self,point):
self.node.append(point)
@@ -865,7 +840,6 @@ class Arc(Creator):
self.altdown = False
self.ui.sourceCmd = self
self.linetrack = lineTracker(dotted=True)
- self.constraintrack = lineTracker(dotted=True)
self.arctrack = arcTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick center point:\n"))
@@ -875,7 +849,6 @@ class Arc(Creator):
Creator.finish(self)
if self.ui:
self.linetrack.finalize()
- self.constraintrack.finalize()
self.arctrack.finalize()
self.doc.recompute()
if self.ui:
@@ -909,36 +882,32 @@ class Arc(Creator):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event":
- point,ctrlPoint,info = getPoint(self,arg)
+ self.point,ctrlPoint,info = getPoint(self,arg)
# this is to make sure radius is what you see on screen
- self.ui.cross(True)
- if self.center and DraftVecUtils.dist(point,self.center) > 0:
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
+ if self.center and DraftVecUtils.dist(self.point,self.center) > 0:
+ viewdelta = DraftVecUtils.project(self.point.sub(self.center), plane.axis)
if not DraftVecUtils.isNull(viewdelta):
- point = point.add(DraftVecUtils.neg(viewdelta))
+ self.point = self.point.add(DraftVecUtils.neg(viewdelta))
if (self.step == 0): # choose center
if hasMod(arg,MODALT):
if not self.altdown:
- self.ui.cross(False)
self.altdown = True
self.ui.switchUi(True)
else:
if self.altdown:
- self.ui.cross(True)
self.altdown = False
self.ui.switchUi(False)
elif (self.step == 1): # choose radius
if len(self.tangents) == 2:
- cir = DraftGeomUtils.circleFrom2tan1pt(self.tangents[0], self.tangents[1], point)
- self.center = DraftGeomUtils.findClosestCircle(point,cir).Center
+ cir = DraftGeomUtils.circleFrom2tan1pt(self.tangents[0], self.tangents[1], self.point)
+ self.center = DraftGeomUtils.findClosestCircle(self.point,cir).Center
self.arctrack.setCenter(self.center)
elif self.tangents and self.tanpoints:
- cir = DraftGeomUtils.circleFrom1tan2pt(self.tangents[0], self.tanpoints[0], point)
- self.center = DraftGeomUtils.findClosestCircle(point,cir).Center
+ cir = DraftGeomUtils.circleFrom1tan2pt(self.tangents[0], self.tanpoints[0], self.point)
+ self.center = DraftGeomUtils.findClosestCircle(self.point,cir).Center
self.arctrack.setCenter(self.center)
if hasMod(arg,MODALT):
if not self.altdown:
- self.ui.cross(False)
self.altdown = True
if info:
ob = self.doc.getObject(info['Object'])
@@ -946,123 +915,95 @@ class Arc(Creator):
ed = ob.Shape.Edges[num]
if len(self.tangents) == 2:
cir = DraftGeomUtils.circleFrom3tan(self.tangents[0], self.tangents[1], ed)
- cl = DraftGeomUtils.findClosestCircle(point,cir)
+ cl = DraftGeomUtils.findClosestCircle(self.point,cir)
self.center = cl.Center
self.rad = cl.Radius
self.arctrack.setCenter(self.center)
else:
self.rad = self.center.add(DraftGeomUtils.findDistance(self.center,ed).sub(self.center)).Length
else:
- self.rad = DraftVecUtils.dist(point,self.center)
+ self.rad = DraftVecUtils.dist(self.point,self.center)
else:
if self.altdown:
- self.ui.cross(True)
self.altdown = False
- self.rad = DraftVecUtils.dist(point,self.center)
+ self.rad = DraftVecUtils.dist(self.point,self.center)
self.ui.setRadiusValue(self.rad)
self.arctrack.setRadius(self.rad)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
self.linetrack.p1(self.center)
- self.linetrack.p2(point)
+ self.linetrack.p2(self.point)
self.linetrack.on()
elif (self.step == 2): # choose first angle
- currentrad = DraftVecUtils.dist(point,self.center)
+ currentrad = DraftVecUtils.dist(self.point,self.center)
if currentrad != 0:
- angle = DraftVecUtils.angle(plane.u, point.sub(self.center), plane.axis)
+ angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
else: angle = 0
- self.linetrack.p2(DraftVecUtils.scaleTo(point.sub(self.center),self.rad).add(self.center))
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
+ self.linetrack.p2(DraftVecUtils.scaleTo(self.point.sub(self.center),self.rad).add(self.center))
self.ui.setRadiusValue(math.degrees(angle))
self.firstangle = angle
else: # choose second angle
- currentrad = DraftVecUtils.dist(point,self.center)
+ currentrad = DraftVecUtils.dist(self.point,self.center)
if currentrad != 0:
- angle = DraftVecUtils.angle(plane.u, point.sub(self.center), plane.axis)
+ angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
else: angle = 0
- self.linetrack.p2(DraftVecUtils.scaleTo(point.sub(self.center),self.rad).add(self.center))
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
+ self.linetrack.p2(DraftVecUtils.scaleTo(self.point.sub(self.center),self.rad).add(self.center))
self.ui.setRadiusValue(math.degrees(angle))
self.updateAngle(angle)
self.arctrack.setApertureAngle(self.angle)
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- # this is to make sure radius is what you see on screen
- if self.center and DraftVecUtils.dist(point,self.center) > 0:
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
- if not DraftVecUtils.isNull(viewdelta):
- point = point.add(DraftVecUtils.neg(viewdelta))
- if (self.step == 0): # choose center
- if not self.support:
- self.support = getSupport(arg)
- if hasMod(arg,MODALT):
- snapped=self.view.getObjectInfo((arg["Position"][0],arg["Position"][1]))
- if snapped:
- ob = self.doc.getObject(snapped['Object'])
- num = int(snapped['Component'].lstrip('Edge'))-1
- ed = ob.Shape.Edges[num]
- self.tangents.append(ed)
- if len(self.tangents) == 2:
- self.arctrack.on()
- self.ui.radiusUi()
- self.step = 1
- self.linetrack.on()
- msg(translate("draft", "Pick radius:\n"))
- else:
- if len(self.tangents) == 1:
- self.tanpoints.append(point)
+ if self.point:
+ if (self.step == 0): # choose center
+ if not self.support:
+ self.support = getSupport(arg)
+ if hasMod(arg,MODALT):
+ snapped=self.view.getObjectInfo((arg["Position"][0],arg["Position"][1]))
+ if snapped:
+ ob = self.doc.getObject(snapped['Object'])
+ num = int(snapped['Component'].lstrip('Edge'))-1
+ ed = ob.Shape.Edges[num]
+ self.tangents.append(ed)
+ if len(self.tangents) == 2:
+ self.arctrack.on()
+ self.ui.radiusUi()
+ self.step = 1
+ self.linetrack.on()
+ msg(translate("draft", "Pick radius:\n"))
else:
- self.center = point
- self.node = [point]
- self.arctrack.setCenter(self.center)
+ if len(self.tangents) == 1:
+ self.tanpoints.append(self.point)
+ else:
+ self.center = self.point
+ self.node = [self.point]
+ self.arctrack.setCenter(self.center)
+ self.linetrack.p1(self.center)
+ self.linetrack.p2(self.view.getPoint(arg["Position"][0],arg["Position"][1]))
+ self.arctrack.on()
+ self.ui.radiusUi()
+ self.step = 1
+ self.linetrack.on()
+ msg(translate("draft", "Pick radius:\n"))
+ if self.planetrack:
+ self.planetrack.set(self.point)
+ elif (self.step == 1): # choose radius
+ if self.closedCircle:
+ self.drawArc()
+ else:
+ self.ui.labelRadius.setText("Start angle")
self.linetrack.p1(self.center)
- self.linetrack.p2(self.view.getPoint(arg["Position"][0],arg["Position"][1]))
- self.arctrack.on()
- self.ui.radiusUi()
- self.step = 1
- self.linetrack.on()
- msg(translate("draft", "Pick radius:\n"))
- if self.planetrack:
- self.planetrack.set(point)
- elif (self.step == 1): # choose radius
- if self.closedCircle:
- self.ui.cross(False)
+ self.linetrack.on()
+ self.step = 2
+ msg(translate("draft", "Pick start angle:\n"))
+ elif (self.step == 2): # choose first angle
+ self.ui.labelRadius.setText("Aperture")
+ self.step = 3
+ # scale center->point vector for proper display
+ # u = DraftVecUtils.scaleTo(self.point.sub(self.center), self.rad) obsolete?
+ self.arctrack.setStartAngle(self.firstangle)
+ msg(translate("draft", "Pick aperture:\n"))
+ else: # choose second angle
+ self.step = 4
self.drawArc()
- else:
- self.ui.labelRadius.setText("Start angle")
- self.linetrack.p1(self.center)
- self.linetrack.on()
- self.step = 2
- msg(translate("draft", "Pick start angle:\n"))
- elif (self.step == 2): # choose first angle
- self.ui.labelRadius.setText("Aperture")
- self.step = 3
- # scale center->point vector for proper display
- u = DraftVecUtils.scaleTo(point.sub(self.center), self.rad)
- self.arctrack.setStartAngle(self.firstangle)
- msg(translate("draft", "Pick aperture:\n"))
- else: # choose second angle
- self.step = 4
- self.drawArc()
def drawArc(self):
"actually draws the FreeCAD object"
@@ -1187,8 +1128,6 @@ class Polygon(Creator):
self.ui.numFaces.show()
self.altdown = False
self.ui.sourceCmd = self
- self.linetrack = lineTracker(dotted=True)
- self.constraintrack = lineTracker(dotted=True)
self.arctrack = arcTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick center point:\n"))
@@ -1197,8 +1136,6 @@ class Polygon(Creator):
"finishes the arc"
Creator.finish(self)
if self.ui:
- self.linetrack.finalize()
- self.constraintrack.finalize()
self.arctrack.finalize()
self.doc.recompute()
if self.ui.continueMode:
@@ -1210,36 +1147,32 @@ class Polygon(Creator):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event":
- point,ctrlPoint,info = getPoint(self,arg)
+ self.point,ctrlPoint,info = getPoint(self,arg)
# this is to make sure radius is what you see on screen
- self.ui.cross(True)
- if self.center and DraftVecUtils.dist(point,self.center) > 0:
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
+ if self.center and DraftVecUtils.dist(self.point,self.center) > 0:
+ viewdelta = DraftVecUtils.project(self.point.sub(self.center), plane.axis)
if not DraftVecUtils.isNull(viewdelta):
- point = point.add(DraftVecUtils.neg(viewdelta))
+ self.point = self.point.add(DraftVecUtils.neg(viewdelta))
if (self.step == 0): # choose center
if hasMod(arg,MODALT):
if not self.altdown:
- self.ui.cross(False)
self.altdown = True
self.ui.switchUi(True)
else:
if self.altdown:
- self.ui.cross(True)
self.altdown = False
self.ui.switchUi(False)
else: # choose radius
if len(self.tangents) == 2:
- cir = DraftGeomUtils.circleFrom2tan1pt(self.tangents[0], self.tangents[1], point)
- self.center = DraftGeomUtils.findClosestCircle(point,cir).Center
+ cir = DraftGeomUtils.circleFrom2tan1pt(self.tangents[0], self.tangents[1], self.point)
+ self.center = DraftGeomUtils.findClosestCircle(self.point,cir).Center
self.arctrack.setCenter(self.center)
elif self.tangents and self.tanpoints:
- cir = DraftGeomUtils.circleFrom1tan2pt(self.tangents[0], self.tanpoints[0], point)
- self.center = DraftGeomUtils.findClosestCircle(point,cir).Center
+ cir = DraftGeomUtils.circleFrom1tan2pt(self.tangents[0], self.tanpoints[0], self.point)
+ self.center = DraftGeomUtils.findClosestCircle(self.point,cir).Center
self.arctrack.setCenter(self.center)
if hasMod(arg,MODALT):
if not self.altdown:
- self.ui.cross(False)
self.altdown = True
snapped = self.view.getObjectInfo((arg["Position"][0],arg["Position"][1]))
if snapped:
@@ -1248,74 +1181,54 @@ class Polygon(Creator):
ed = ob.Shape.Edges[num]
if len(self.tangents) == 2:
cir = DraftGeomUtils.circleFrom3tan(self.tangents[0], self.tangents[1], ed)
- cl = DraftGeomUtils.findClosestCircle(point,cir)
+ cl = DraftGeomUtils.findClosestCircle(self.point,cir)
self.center = cl.Center
self.rad = cl.Radius
self.arctrack.setCenter(self.center)
else:
self.rad = self.center.add(DraftGeomUtils.findDistance(self.center,ed).sub(self.center)).Length
else:
- self.rad = DraftVecUtils.dist(point,self.center)
+ self.rad = DraftVecUtils.dist(self.point,self.center)
else:
if self.altdown:
- self.ui.cross(True)
self.altdown = False
- self.rad = DraftVecUtils.dist(point,self.center)
+ self.rad = DraftVecUtils.dist(self.point,self.center)
self.ui.setRadiusValue(self.rad)
self.arctrack.setRadius(self.rad)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else: self.constraintrack.off()
- self.linetrack.p1(self.center)
- self.linetrack.p2(point)
- self.linetrack.on()
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- # this is to make sure radius is what you see on screen
- if self.center and DraftVecUtils.dist(point,self.center) > 0:
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
- if not DraftVecUtils.isNull(viewdelta):
- point = point.add(DraftVecUtils.neg(viewdelta))
- if (self.step == 0): # choose center
- if (not self.node) and (not self.support):
- self.support = getSupport(arg)
- if hasMod(arg,MODALT):
- snapped=self.view.getObjectInfo((arg["Position"][0],arg["Position"][1]))
- if snapped:
- ob = self.doc.getObject(snapped['Object'])
- num = int(snapped['Component'].lstrip('Edge'))-1
- ed = ob.Shape.Edges[num]
- self.tangents.append(ed)
- if len(self.tangents) == 2:
- self.arctrack.on()
- self.ui.radiusUi()
- self.step = 1
- self.linetrack.on()
- msg(translate("draft", "Pick radius:\n"))
- else:
- if len(self.tangents) == 1:
- self.tanpoints.append(point)
+ if self.point:
+ if (self.step == 0): # choose center
+ if (not self.node) and (not self.support):
+ self.support = getSupport(arg)
+ if hasMod(arg,MODALT):
+ snapped=self.view.getObjectInfo((arg["Position"][0],arg["Position"][1]))
+ if snapped:
+ ob = self.doc.getObject(snapped['Object'])
+ num = int(snapped['Component'].lstrip('Edge'))-1
+ ed = ob.Shape.Edges[num]
+ self.tangents.append(ed)
+ if len(self.tangents) == 2:
+ self.arctrack.on()
+ self.ui.radiusUi()
+ self.step = 1
+ msg(translate("draft", "Pick radius:\n"))
else:
- self.center = point
- self.node = [point]
- self.arctrack.setCenter(self.center)
- self.linetrack.p1(self.center)
- self.linetrack.p2(self.view.getPoint(arg["Position"][0],arg["Position"][1]))
- self.arctrack.on()
- self.ui.radiusUi()
- self.step = 1
- self.linetrack.on()
- msg(translate("draft", "Pick radius:\n"))
- if self.planetrack:
- self.planetrack.set(point)
- elif (self.step == 1): # choose radius
- self.ui.cross(False)
- self.drawPolygon()
+ if len(self.tangents) == 1:
+ self.tanpoints.append(self.point)
+ else:
+ self.center = self.point
+ self.node = [self.point]
+ self.arctrack.setCenter(self.center)
+ self.arctrack.on()
+ self.ui.radiusUi()
+ self.step = 1
+ msg(translate("draft", "Pick radius:\n"))
+ if self.planetrack:
+ self.planetrack.set(self.point)
+ elif (self.step == 1): # choose radius
+ self.drawPolygon()
def drawPolygon(self):
"actually draws the FreeCAD object"
@@ -1409,25 +1322,23 @@ class Text(Creator):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg)
+ self.point,ctrlPoint,info = getPoint(self,arg)
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- self.node.append(point)
- self.ui.textUi()
- self.ui.textValue.setFocus()
- self.ui.cross(False)
+ if self.point:
+ self.node.append(self.point)
+ self.ui.textUi()
+ self.ui.textValue.setFocus()
def numericInput(self,numx,numy,numz):
'''this function gets called by the toolbar when valid
x, y, and z have been entered there'''
- point = Vector(numx,numy,numz)
- self.node.append(point)
+ self.point = Vector(numx,numy,numz)
+ self.node.append(self.point)
self.ui.textUi()
self.ui.textValue.setFocus()
- self.ui.cross(False)
-
+
class Dimension(Creator):
"The Draft_Dimension FreeCAD command definition"
@@ -1450,7 +1361,6 @@ class Dimension(Creator):
Creator.Activated(self,name)
self.dimtrack = dimTracker()
self.arctrack = arcTracker()
- self.constraintrack = lineTracker(dotted=True)
self.createOnMeasures()
self.finish()
else:
@@ -1471,7 +1381,6 @@ class Dimension(Creator):
self.arcmode = False
self.point2 = None
self.force = None
- self.constraintrack = lineTracker(dotted=True)
msg(translate("draft", "Pick first point:\n"))
FreeCADGui.draftToolBar.show()
@@ -1493,7 +1402,6 @@ class Dimension(Creator):
if self.ui:
self.dimtrack.finalize()
self.arctrack.finalize()
- self.constraintrack.finalize()
def createOnMeasures(self):
for o in FreeCADGui.Selection.getSelection():
@@ -1545,10 +1453,8 @@ class Dimension(Creator):
shift = hasMod(arg,MODCONSTRAIN)
if self.arcmode or self.point2:
setMod(arg,MODCONSTRAIN,False)
- point,ctrlPoint,info = getPoint(self,arg)
- self.ui.cross(True)
+ self.point,ctrlPoint,info = getPoint(self,arg)
if hasMod(arg,MODALT) and (len(self.node)<3):
- self.ui.cross(False)
self.dimtrack.off()
if not self.altdown:
self.altdown = True
@@ -1563,15 +1469,14 @@ class Dimension(Creator):
v2 = ed.Vertexes[-1].Point
self.dimtrack.update([v1,v2,self.cont])
else:
- self.ui.cross(True)
if self.node and (len(self.edges) < 2):
self.dimtrack.on()
if len(self.edges) == 2:
# angular dimension
self.dimtrack.off()
- r = point.sub(self.center)
+ r = self.point.sub(self.center)
self.arctrack.setRadius(r.Length)
- a = self.arctrack.getAngle(point)
+ a = self.arctrack.getAngle(self.point)
pair = DraftGeomUtils.getBoundaryAngles(a,self.pts)
if not (pair[0] < a < pair[1]):
self.angledata = [4*math.pi-pair[0],2*math.pi-pair[1]]
@@ -1583,12 +1488,12 @@ class Dimension(Creator):
self.altdown = False
self.ui.switchUi(False)
if self.dir:
- point = self.node[0].add(DraftVecUtils.project(point.sub(self.node[0]),self.dir))
+ self.point = self.node[0].add(DraftVecUtils.project(self.point.sub(self.node[0]),self.dir))
if len(self.node) == 2:
if self.arcmode and self.edges:
cen = self.edges[0].Curve.Center
rad = self.edges[0].Curve.Radius
- baseray = point.sub(cen)
+ baseray = self.point.sub(cen)
v2 = DraftVecUtils.scaleTo(baseray,rad)
v1 = DraftVecUtils.neg(v2)
if shift:
@@ -1606,7 +1511,7 @@ class Dimension(Creator):
else:
self.node[1] = self.point2
if not self.force:
- a=abs(point.sub(self.node[0]).getAngle(plane.u))
+ a=abs(self.point.sub(self.node[0]).getAngle(plane.u))
if (a > math.pi/4) and (a <= 0.75*math.pi):
self.force = 1
else:
@@ -1615,104 +1520,98 @@ class Dimension(Creator):
self.node[1] = Vector(self.node[0].x,self.node[1].y,self.node[0].z)
elif self.force == 2:
self.node[1] = Vector(self.node[1].x,self.node[0].y,self.node[0].z)
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
else:
self.force = None
if self.point2:
self.node[1] = self.point2
self.point2 = None
- self.constraintrack.off()
# update the dimline
if self.node and (not self.arcmode):
- self.dimtrack.update(self.node+[point]+[self.cont])
+ self.dimtrack.update(self.node+[self.point]+[self.cont])
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- if (not self.node) and (not self.support):
- self.support = getSupport(arg)
- if hasMod(arg,MODALT) and (len(self.node)<3):
- print "snapped: ",info
- if info:
- ob = self.doc.getObject(info['Object'])
- if 'Edge' in info['Component']:
- num = int(info['Component'].lstrip('Edge'))-1
- ed = ob.Shape.Edges[num]
- v1 = ed.Vertexes[0].Point
- v2 = ed.Vertexes[-1].Point
- i1 = i2 = None
- for i in range(len(ob.Shape.Vertexes)):
- if v1 == ob.Shape.Vertexes[i].Point:
- i1 = i
- if v2 == ob.Shape.Vertexes[i].Point:
- i2 = i
- if (i1 != None) and (i2 != None):
- self.indices.append(num)
- if not self.edges:
- # nothing snapped yet, we treat it as normal edge-snapped dimension
- self.node = [v1,v2]
- self.link = [ob,i1,i2]
- self.edges.append(ed)
- if isinstance(ed.Curve,Part.Circle):
- # snapped edge is an arc
- self.arcmode = "diameter"
- self.link = [ob,num]
- else:
- # there is already a snapped edge, so we start angular dimension
- self.edges.append(ed)
- self.node.extend([v1,v2]) # self.node now has the 4 endpoints
- c = DraftGeomUtils.findIntersection(self.node[0],
- self.node[1],
- self.node[2],
- self.node[3],
- True,True)
- if c:
- self.center = c[0]
- self.arctrack.setCenter(self.center)
- self.arctrack.on()
- for e in self.edges:
- for v in e.Vertexes:
- self.pts.append(self.arctrack.getAngle(v.Point))
- self.link = [self.link[0],ob]
+ if self.point:
+ if (not self.node) and (not self.support):
+ self.support = getSupport(arg)
+ if hasMod(arg,MODALT) and (len(self.node)<3):
+ print "snapped: ",info
+ if info:
+ ob = self.doc.getObject(info['Object'])
+ if 'Edge' in info['Component']:
+ num = int(info['Component'].lstrip('Edge'))-1
+ ed = ob.Shape.Edges[num]
+ v1 = ed.Vertexes[0].Point
+ v2 = ed.Vertexes[-1].Point
+ i1 = i2 = None
+ for i in range(len(ob.Shape.Vertexes)):
+ if v1 == ob.Shape.Vertexes[i].Point:
+ i1 = i
+ if v2 == ob.Shape.Vertexes[i].Point:
+ i2 = i
+ if (i1 != None) and (i2 != None):
+ self.indices.append(num)
+ if not self.edges:
+ # nothing snapped yet, we treat it as normal edge-snapped dimension
+ self.node = [v1,v2]
+ self.link = [ob,i1,i2]
+ self.edges.append(ed)
+ if isinstance(ed.Curve,Part.Circle):
+ # snapped edge is an arc
+ self.arcmode = "diameter"
+ self.link = [ob,num]
else:
- msg(translate("draft", "Edges don't intersect!\n"))
- self.finish()
- self.dimtrack.on()
- else:
- if self.dir:
- point = self.node[0].add(DraftVecUtils.project(point.sub(self.node[0]),self.dir))
- self.node.append(point)
- #print "node",self.node
- self.dimtrack.update(self.node)
- if (len(self.node) == 2):
- self.point2 = self.node[1]
- if (len(self.node) == 1):
- self.dimtrack.on()
- if self.planetrack:
- self.planetrack.set(self.node[0])
- elif (len(self.node) == 2) and self.cont:
- self.node.append(self.cont)
- self.createObject()
- if not self.cont: self.finish()
- elif (len(self.node) == 3):
- # for unlinked arc mode:
- # if self.arcmode:
- # v = self.node[1].sub(self.node[0])
- # v = DraftVecUtils.scale(v,0.5)
- # cen = self.node[0].add(v)
- # self.node = [self.node[0],self.node[1],cen]
- self.createObject()
- if not self.cont: self.finish()
- elif self.angledata:
- self.node.append(point)
- self.createObject()
- self.finish()
+ # there is already a snapped edge, so we start angular dimension
+ self.edges.append(ed)
+ self.node.extend([v1,v2]) # self.node now has the 4 endpoints
+ c = DraftGeomUtils.findIntersection(self.node[0],
+ self.node[1],
+ self.node[2],
+ self.node[3],
+ True,True)
+ if c:
+ self.center = c[0]
+ self.arctrack.setCenter(self.center)
+ self.arctrack.on()
+ for e in self.edges:
+ for v in e.Vertexes:
+ self.pts.append(self.arctrack.getAngle(v.Point))
+ self.link = [self.link[0],ob]
+ else:
+ msg(translate("draft", "Edges don't intersect!\n"))
+ self.finish()
+ self.dimtrack.on()
+ else:
+ self.node.append(self.point)
+ #print "node",self.node
+ self.dimtrack.update(self.node)
+ if (len(self.node) == 2):
+ self.point2 = self.node[1]
+ if (len(self.node) == 1):
+ self.dimtrack.on()
+ if self.planetrack:
+ self.planetrack.set(self.node[0])
+ elif (len(self.node) == 2) and self.cont:
+ self.node.append(self.cont)
+ self.createObject()
+ if not self.cont: self.finish()
+ elif (len(self.node) == 3):
+ # for unlinked arc mode:
+ # if self.arcmode:
+ # v = self.node[1].sub(self.node[0])
+ # v = DraftVecUtils.scale(v,0.5)
+ # cen = self.node[0].add(v)
+ # self.node = [self.node[0],self.node[1],cen]
+ self.createObject()
+ if not self.cont: self.finish()
+ elif self.angledata:
+ self.node.append(self.point)
+ self.createObject()
+ self.finish()
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
- point = Vector(numx,numy,numz)
- self.node.append(point)
+ self.point = Vector(numx,numy,numz)
+ self.node.append(self.point)
self.dimtrack.update(self.node)
if (len(self.node) == 1):
self.dimtrack.on()
@@ -1746,8 +1645,6 @@ class Move(Modifier):
if self.ui:
if not Draft.getSelection():
self.ghost = None
- self.linetrack = None
- self.constraintrack = None
self.ui.selectUi()
msg(translate("draft", "Select an object to move\n"))
self.call = self.view.addEventCallback("SoEvent",selectObject)
@@ -1762,20 +1659,13 @@ class Move(Modifier):
self.ui.modUi()
self.ui.xValue.setFocus()
self.ui.xValue.selectAll()
- self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
self.ghost = ghostTracker(self.sel)
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick start point:\n"))
- self.ui.cross(True)
def finish(self,closed=False,cont=False):
if self.ghost:
self.ghost.finalize()
- if self.linetrack:
- self.linetrack.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
Modifier.finish(self)
if cont and self.ui:
if self.ui.continueMode:
@@ -1806,61 +1696,54 @@ class Move(Modifier):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg)
- self.linetrack.p2(point)
- self.ui.cross(True)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else: self.constraintrack.off()
+ if self.ghost:
+ self.ghost.off()
+ self.point,ctrlPoint,info = getPoint(self,arg)
if (len(self.node) > 0):
last = self.node[len(self.node)-1]
- delta = point.sub(last)
- self.ghost.trans.translation.setValue([delta.x,delta.y,delta.z])
+ delta = self.point.sub(last)
+ if self.ghost:
+ self.ghost.move(delta)
+ self.ghost.on()
if self.extendedCopy:
if not hasMod(arg,MODALT): self.finish()
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- if (self.node == []):
- self.node.append(point)
- self.ui.isRelative.show()
- self.linetrack.on()
- self.ghost.on()
- self.linetrack.p1(point)
- msg(translate("draft", "Pick end point:\n"))
- if self.planetrack:
- self.planetrack.set(point)
- else:
- last = self.node[0]
- if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
- self.move(point.sub(last),True)
+ if self.point:
+ if (self.node == []):
+ self.node.append(self.point)
+ self.ui.isRelative.show()
+ if self.ghost:
+ self.ghost.on()
+ msg(translate("draft", "Pick end point:\n"))
+ if self.planetrack:
+ self.planetrack.set(self.point)
else:
- self.move(point.sub(last))
- if hasMod(arg,MODALT):
- self.extendedCopy = True
- else:
- self.finish(cont=True)
+ last = self.node[0]
+ if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
+ self.move(self.point.sub(last),True)
+ else:
+ self.move(self.point.sub(last))
+ if hasMod(arg,MODALT):
+ self.extendedCopy = True
+ else:
+ self.finish(cont=True)
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
- point = Vector(numx,numy,numz)
+ self.point = Vector(numx,numy,numz)
if not self.node:
- self.node.append(point)
+ self.node.append(self.point)
self.ui.isRelative.show()
self.ui.isCopy.show()
- self.linetrack.p1(point)
- self.linetrack.on()
self.ghost.on()
msg(translate("draft", "Pick end point:\n"))
else:
last = self.node[-1]
if self.ui.isCopy.isChecked():
- self.move(point.sub(last),True)
+ self.move(self.point.sub(last),True)
else:
- self.move(point.sub(last))
+ self.move(self.point.sub(last))
self.finish()
@@ -1913,9 +1796,7 @@ class Rotate(Modifier):
if self.ui:
if not Draft.getSelection():
self.ghost = None
- self.linetrack = None
self.arctrack = None
- self.constraintrack = None
self.ui.selectUi()
msg(translate("draft", "Select an object to rotate\n"))
self.call = self.view.addEventCallback("SoEvent",selectObject)
@@ -1931,21 +1812,14 @@ class Rotate(Modifier):
self.ui.arcUi()
self.ui.isCopy.show()
self.ui.setTitle("Rotate")
- self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
self.arctrack = arcTracker()
self.ghost = ghostTracker(self.sel)
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick rotation center:\n"))
- self.ui.cross(True)
def finish(self,closed=False,cont=False):
"finishes the arc"
Modifier.finish(self)
- if self.linetrack:
- self.linetrack.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
if self.arctrack:
self.arctrack.finalize()
if self.ghost:
@@ -1980,13 +1854,14 @@ class Rotate(Modifier):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event":
- point,ctrlPoint,info = getPoint(self,arg)
- self.ui.cross(True)
+ if self.ghost:
+ self.ghost.off()
+ self.point,ctrlPoint,info = getPoint(self,arg)
# this is to make sure radius is what you see on screen
- if self.center and DraftVecUtils.dist(point,self.center):
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
+ if self.center and DraftVecUtils.dist(self.point,self.center):
+ viewdelta = DraftVecUtils.project(self.point.sub(self.center), plane.axis)
if not DraftVecUtils.isNull(viewdelta):
- point = point.add(DraftVecUtils.neg(viewdelta))
+ self.point = self.point.add(DraftVecUtils.neg(viewdelta))
if self.extendedCopy:
if not hasMod(arg,MODALT):
self.step = 3
@@ -1994,100 +1869,81 @@ class Rotate(Modifier):
if (self.step == 0):
pass
elif (self.step == 1):
- currentrad = DraftVecUtils.dist(point,self.center)
+ currentrad = DraftVecUtils.dist(self.point,self.center)
if (currentrad != 0):
- angle = DraftVecUtils.angle(plane.u, point.sub(self.center), plane.axis)
+ angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
else: angle = 0
- self.linetrack.p2(point)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
self.ui.radiusValue.setText("%.2f" % math.degrees(angle))
self.firstangle = angle
self.ui.radiusValue.setFocus()
self.ui.radiusValue.selectAll()
elif (self.step == 2):
- currentrad = DraftVecUtils.dist(point,self.center)
+ currentrad = DraftVecUtils.dist(self.point,self.center)
if (currentrad != 0):
- angle = DraftVecUtils.angle(plane.u, point.sub(self.center), plane.axis)
+ angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
else: angle = 0
if (angle < self.firstangle):
sweep = (2*math.pi-self.firstangle)+angle
else:
sweep = angle - self.firstangle
self.arctrack.setApertureAngle(sweep)
- self.ghost.trans.rotation.setValue(coin.SbVec3f(DraftVecUtils.tup(plane.axis)),sweep)
- self.linetrack.p2(point)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
+ if self.ghost:
+ self.ghost.rotate(plane.axis,sweep)
+ self.ghost.on()
self.ui.radiusValue.setText("%.2f" % math.degrees(sweep))
self.ui.radiusValue.setFocus()
self.ui.radiusValue.selectAll()
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg)
- if self.center and DraftVecUtils.dist(point,self.center):
- viewdelta = DraftVecUtils.project(point.sub(self.center), plane.axis)
- if not DraftVecUtils.isNull(viewdelta): point = point.add(DraftVecUtils.neg(viewdelta))
- if (self.step == 0):
- self.center = point
- self.node = [point]
- self.ui.radiusUi()
- self.ui.hasFill.hide()
- self.ui.labelRadius.setText("Base angle")
- self.linetrack.p1(self.center)
- self.arctrack.setCenter(self.center)
- self.ghost.trans.center.setValue(self.center.x,self.center.y,self.center.z)
- self.linetrack.on()
- self.step = 1
- msg(translate("draft", "Pick base angle:\n"))
- if self.planetrack:
- self.planetrack.set(point)
- elif (self.step == 1):
- self.ui.labelRadius.setText("Rotation")
- self.rad = DraftVecUtils.dist(point,self.center)
- self.arctrack.on()
- self.arctrack.setStartPoint(point)
- self.ghost.on()
- self.step = 2
- msg(translate("draft", "Pick rotation angle:\n"))
- else:
- currentrad = DraftVecUtils.dist(point,self.center)
- angle = point.sub(self.center).getAngle(plane.u)
- if DraftVecUtils.project(point.sub(self.center), plane.v).getAngle(plane.v) > 1:
- angle = -angle
- if (angle < self.firstangle):
- sweep = (2*math.pi-self.firstangle)+angle
+ if self.point:
+ if (self.step == 0):
+ self.center = self.point
+ self.node = [self.point]
+ self.ui.radiusUi()
+ self.ui.hasFill.hide()
+ self.ui.labelRadius.setText("Base angle")
+ self.arctrack.setCenter(self.center)
+ if self.ghost:
+ self.ghost.center(self.center)
+ self.step = 1
+ msg(translate("draft", "Pick base angle:\n"))
+ if self.planetrack:
+ self.planetrack.set(self.point)
+ elif (self.step == 1):
+ self.ui.labelRadius.setText("Rotation")
+ self.rad = DraftVecUtils.dist(self.point,self.center)
+ self.arctrack.on()
+ self.arctrack.setStartPoint(self.point)
+ if self.ghost:
+ self.ghost.on()
+ self.step = 2
+ msg(translate("draft", "Pick rotation angle:\n"))
else:
- sweep = angle - self.firstangle
- if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
- self.rot(sweep,True)
- else:
- self.rot(sweep)
- if hasMod(arg,MODALT):
- self.extendedCopy = True
- else:
- self.finish(cont=True)
+ currentrad = DraftVecUtils.dist(self.point,self.center)
+ angle = self.point.sub(self.center).getAngle(plane.u)
+ if DraftVecUtils.project(self.point.sub(self.center), plane.v).getAngle(plane.v) > 1:
+ angle = -angle
+ if (angle < self.firstangle):
+ sweep = (2*math.pi-self.firstangle)+angle
+ else:
+ sweep = angle - self.firstangle
+ if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
+ self.rot(sweep,True)
+ else:
+ self.rot(sweep)
+ if hasMod(arg,MODALT):
+ self.extendedCopy = True
+ else:
+ self.finish(cont=True)
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
self.center = Vector(numx,numy,numz)
self.node = [self.center]
self.arctrack.setCenter(self.center)
- self.ghost.trans.center.setValue(self.center.x,self.center.y,self.center.z)
- self.linetrack.p1(self.center)
- # self.arctrack.on()
- self.linetrack.on()
+ if self.ghost:
+ self.ghost.center(self.center)
self.ui.radiusUi()
self.ui.hasFill.hide()
self.ui.labelRadius.setText("Base angle")
@@ -2101,7 +1957,8 @@ class Rotate(Modifier):
self.firstangle = math.radians(rad)
self.arctrack.setStartAngle(self.firstangle)
self.arctrack.on()
- self.ghost.on()
+ if self.ghost:
+ self.ghost.on()
self.step = 2
msg(translate("draft", "Pick rotation angle:\n"))
else:
@@ -2126,7 +1983,6 @@ class Offset(Modifier):
self.ghost = None
self.linetrack = None
self.arctrack = None
- self.constraintrack = None
self.ui.selectUi()
msg(translate("draft", "Select an object to offset\n"))
self.call = self.view.addEventCallback("SoEvent",selectObject)
@@ -2148,7 +2004,6 @@ class Offset(Modifier):
self.constrainSeg = None
self.ui.offsetUi()
self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
self.faces = False
self.shape = self.sel.Shape
self.mode = None
@@ -2167,7 +2022,6 @@ class Offset(Modifier):
self.mode = "Wire"
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick distance:\n"))
- self.ui.cross(True)
if self.planetrack:
self.planetrack.set(self.shape.Vertexes[0].Point)
self.running = True
@@ -2178,23 +2032,17 @@ class Offset(Modifier):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event":
- self.ui.cross(True)
- point,ctrlPoint,info = getPoint(self,arg)
+ self.point,ctrlPoint,info = getPoint(self,arg)
if hasMod(arg,MODCONSTRAIN) and self.constrainSeg:
- dist = DraftGeomUtils.findPerpendicular(point,self.shape,self.constrainSeg[1])
- e = self.shape.Edges[self.constrainSeg[1]]
- self.constraintrack.p1(e.Vertexes[0].Point)
- self.constraintrack.p2(point.add(dist[0]))
- self.constraintrack.on()
+ dist = DraftGeomUtils.findPerpendicular(self.point,self.shape,self.constrainSeg[1])
else:
- dist = DraftGeomUtils.findPerpendicular(point,self.shape.Edges)
- self.constraintrack.off()
+ dist = DraftGeomUtils.findPerpendicular(self.point,self.shape.Edges)
if dist:
self.ghost.on()
if self.mode == "Wire":
d = DraftVecUtils.neg(dist[0])
- v1 = DraftGeomUtils.getTangent(self.shape.Edges[0],point)
- v2 = DraftGeomUtils.getTangent(self.shape.Edges[dist[1]],point)
+ v1 = DraftGeomUtils.getTangent(self.shape.Edges[0],self.point)
+ v2 = DraftGeomUtils.getTangent(self.shape.Edges[dist[1]],self.point)
a = -DraftVecUtils.angle(v1,v2)
self.dvec = DraftVecUtils.rotate(d,a,plane.axis)
occmode = self.ui.occOffset.isChecked()
@@ -2202,7 +2050,7 @@ class Offset(Modifier):
elif self.mode == "BSpline":
d = DraftVecUtils.neg(dist[0])
e = self.shape.Edges[0]
- basetan = DraftGeomUtils.getTangent(e,point)
+ basetan = DraftGeomUtils.getTangent(e,self.point)
self.npts = []
for p in self.sel.Points:
currtan = DraftGeomUtils.getTangent(e,p)
@@ -2211,12 +2059,12 @@ class Offset(Modifier):
self.npts.append(p.add(self.dvec))
self.ghost.update(self.npts)
elif self.mode == "Circle":
- self.dvec = point.sub(self.center).Length
+ self.dvec = self.point.sub(self.center).Length
self.ghost.setRadius(self.dvec)
self.constrainSeg = dist
self.linetrack.on()
- self.linetrack.p1(point)
- self.linetrack.p2(point.add(dist[0]))
+ self.linetrack.p1(self.point)
+ self.linetrack.p2(self.point.add(dist[0]))
self.ui.radiusValue.setText("%.2f" % dist[0].Length)
else:
self.dvec = None
@@ -2256,8 +2104,6 @@ class Offset(Modifier):
if self.running:
if self.linetrack:
self.linetrack.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
if self.ghost:
self.ghost.finalize()
Modifier.finish(self)
@@ -2666,7 +2512,6 @@ class Trimex(Modifier):
self.placement = None
self.ghost = None
self.linetrack = None
- self.constraintrack = None
if self.ui:
if not Draft.getSelection():
self.ui.selectUi()
@@ -2680,7 +2525,7 @@ class Trimex(Modifier):
self.obj = Draft.getSelection()[0]
self.ui.trimUi()
self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
+
if not "Shape" in self.obj.PropertiesList: return
if "Placement" in self.obj.PropertiesList:
self.placement = self.obj.Placement
@@ -2731,15 +2576,13 @@ class Trimex(Modifier):
self.cv = None
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick distance:\n"))
- self.ui.cross(True)
-
+
def action(self,arg):
"scene event handler"
if arg["Type"] == "SoKeyboardEvent":
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- self.ui.cross(True)
self.shift = hasMod(arg,MODCONSTRAIN)
self.alt = hasMod(arg,MODALT)
if self.extrudeMode:
@@ -2752,9 +2595,6 @@ class Trimex(Modifier):
dist = self.extrude(self.shift)
else:
dist = self.redraw(self.point,self.snapped,self.shift,self.alt)
- self.constraintrack.p1(self.point)
- self.constraintrack.p2(self.newpoint)
- self.constraintrack.on()
self.ui.radiusValue.setText("%.2f" % dist)
self.ui.radiusValue.setFocus()
self.ui.radiusValue.selectAll()
@@ -2934,8 +2774,6 @@ class Trimex(Modifier):
if self.ui:
if self.linetrack:
self.linetrack.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
if self.ghost:
for g in self.ghost:
g.finalize()
@@ -2965,8 +2803,6 @@ class Scale(Modifier):
if self.ui:
if not Draft.getSelection():
self.ghost = None
- self.linetrack = None
- self.constraintrack = None
self.ui.selectUi()
msg(translate("draft", "Select an object to scale\n"))
self.call = self.view.addEventCallback("SoEvent",selectObject)
@@ -2981,21 +2817,14 @@ class Scale(Modifier):
self.ui.modUi()
self.ui.xValue.setFocus()
self.ui.xValue.selectAll()
- self.linetrack = lineTracker()
- self.constraintrack = lineTracker(dotted=True)
self.ghost = ghostTracker(self.sel)
self.call = self.view.addEventCallback("SoEvent",self.action)
msg(translate("draft", "Pick base point:\n"))
- self.ui.cross(True)
def finish(self,closed=False,cont=False):
Modifier.finish(self)
if self.ghost:
self.ghost.finalize()
- if self.linetrack:
- self.linetrack.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
if cont and self.ui:
if self.ui.continueMode:
FreeCADGui.Selection.clearSelection()
@@ -3024,64 +2853,59 @@ class Scale(Modifier):
if arg["Key"] == "ESCAPE":
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
- point,ctrlPoint,info = getPoint(self,arg,sym=True)
- self.linetrack.p2(point)
- self.ui.cross(True)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else: self.constraintrack.off()
+ if self.ghost:
+ self.ghost.off()
+ self.point,ctrlPoint,info = getPoint(self,arg,sym=True)
if (len(self.node) > 0):
last = self.node[len(self.node)-1]
- delta = point.sub(last)
- self.ghost.trans.scaleFactor.setValue([delta.x,delta.y,delta.z])
- corr = Vector(self.node[0].x,self.node[0].y,self.node[0].z)
- corr.scale(delta.x,delta.y,delta.z)
- corr = DraftVecUtils.neg(corr.sub(self.node[0]))
- self.ghost.trans.translation.setValue([corr.x,corr.y,corr.z])
+ delta = self.point.sub(last)
+ if self.ghost:
+ self.ghost.scale(delta)
+ # calculate a correction factor depending on the scaling center
+ corr = Vector(self.node[0].x,self.node[0].y,self.node[0].z)
+ corr.scale(delta.x,delta.y,delta.z)
+ corr = DraftVecUtils.neg(corr.sub(self.node[0]))
+ self.ghost.move(corr)
+ self.ghost.on()
if self.extendedCopy:
if not hasMod(arg,MODALT): self.finish()
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
- point,ctrlPoint,info = getPoint(self,arg,sym=True)
- if (self.node == []):
- self.node.append(point)
- self.ui.isRelative.show()
- self.ui.isCopy.show()
- self.linetrack.on()
- self.ghost.on()
- self.linetrack.p1(point)
- msg(translate("draft", "Pick scale factor:\n"))
- else:
- last = self.node[0]
- if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
- self.scale(point.sub(last),True)
+ if self.point:
+ if (self.node == []):
+ self.node.append(self.point)
+ self.ui.isRelative.show()
+ self.ui.isCopy.show()
+ if self.ghost:
+ self.ghost.on()
+ msg(translate("draft", "Pick scale factor:\n"))
else:
- self.scale(point.sub(last))
- if hasMod(arg,MODALT):
- self.extendedCopy = True
- else:
- self.finish(cont=True)
+ last = self.node[0]
+ if self.ui.isCopy.isChecked() or hasMod(arg,MODALT):
+ self.scale(self.point.sub(last),True)
+ else:
+ self.scale(self.point.sub(last))
+ if hasMod(arg,MODALT):
+ self.extendedCopy = True
+ else:
+ self.finish(cont=True)
def numericInput(self,numx,numy,numz):
"this function gets called by the toolbar when valid x, y, and z have been entered there"
- point = Vector(numx,numy,numz)
+ self.point = Vector(numx,numy,numz)
if not self.node:
- self.node.append(point)
+ self.node.append(self.point)
self.ui.isRelative.show()
self.ui.isCopy.show()
- self.linetrack.p1(point)
- self.linetrack.on()
- self.ghost.on()
+ if self.ghost:
+ self.ghost.on()
msg(translate("draft", "Pick scale factor:\n"))
else:
last = self.node[-1]
if self.ui.isCopy.isChecked():
- self.scale(point.sub(last),True)
+ self.scale(self.point.sub(last),True)
else:
- self.scale(point.sub(last))
+ self.scale(self.point.sub(last))
self.finish(cont=True)
@@ -3257,12 +3081,10 @@ class Edit(Modifier):
self.editpoints.append(self.obj.Dimline)
self.editpoints.append(Vector(p[0],p[1],p[2]))
self.trackers = []
- self.constraintrack = None
if self.editpoints:
for ep in range(len(self.editpoints)):
self.trackers.append(editTracker(self.editpoints[ep],self.obj.Name,
ep,self.obj.ViewObject.LineColor))
- self.constraintrack = lineTracker(dotted=True)
self.call = self.view.addEventCallback("SoEvent",self.action)
self.running = True
plane.save()
@@ -3286,8 +3108,6 @@ class Edit(Modifier):
if self.trackers:
for t in self.trackers:
t.finalize()
- if self.constraintrack:
- self.constraintrack.finalize()
if hasattr(self.obj.ViewObject,"Selectable"):
self.obj.ViewObject.Selectable = self.selectstate
Modifier.finish(self)
@@ -3301,15 +3121,8 @@ class Edit(Modifier):
self.finish()
elif arg["Type"] == "SoLocation2Event": #mouse movement detection
if self.editing != None:
- point,ctrlPoint,info = getPoint(self,arg)
- # Draw constraint tracker line.
- if hasMod(arg,MODCONSTRAIN):
- self.constraintrack.p1(point)
- self.constraintrack.p2(ctrlPoint)
- self.constraintrack.on()
- else:
- self.constraintrack.off()
- self.trackers[self.editing].set(point)
+ self.point,ctrlPoint,info = getPoint(self,arg)
+ self.trackers[self.editing].set(self.point)
self.update(self.trackers[self.editing].get())
elif arg["Type"] == "SoMouseButtonEvent":
if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"):
@@ -3319,9 +3132,9 @@ class Edit(Modifier):
sel = sel[0]
if sel.ObjectName == self.obj.Name:
if self.ui.addButton.isChecked():
- point,ctrlPoint,info = getPoint(self,arg)
- self.pos = arg["Position"]
- self.addPoint(point)
+ if self.point:
+ self.pos = arg["Position"]
+ self.addPoint(self.point)
elif self.ui.delButton.isChecked():
if 'EditNode' in sel.SubElementNames[0]:
self.delPoint(int(sel.SubElementNames[0][8:]))
diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py
index c655c62bd3..be15757b6e 100644
--- a/src/Mod/Draft/DraftTrackers.py
+++ b/src/Mod/Draft/DraftTrackers.py
@@ -401,32 +401,72 @@ class ghostTracker(Tracker):
self.trans = coin.SoTransform()
self.trans.translation.setValue([0,0,0])
self.children = [self.trans]
- self.ivsep = coin.SoSeparator()
- try:
- if isinstance(sel,Part.Shape):
- ivin = coin.SoInput()
- ivin.setBuffer(sel.writeInventor())
- ivob = coin.SoDB.readAll(ivin)
- self.ivsep.addChild(ivob.getChildren()[1])
- else:
- if not isinstance(sel,list):
- sel = [sel]
- for obj in sel:
- self.ivsep.addChild(obj.ViewObject.RootNode.copy())
- except:
- print "draft: Couldn't create ghost"
- self.children.append(self.ivsep)
+ rootsep = coin.SoSeparator()
+ if not isinstance(sel,list):
+ sel = [sel]
+ for obj in sel:
+ rootsep.addChild(self.getNode(obj))
+ self.children.append(rootsep)
Tracker.__init__(self,children=self.children)
def update(self,obj):
+ "recreates the ghost from a new object"
obj.ViewObject.show()
self.finalize()
- self.ivsep = coin.SoSeparator()
- self.ivsep.addChild(obj.ViewObject.RootNode.copy())
- Tracker.__init__(self,children=[self.ivsep])
+ sep = getNode(obj)
+ Tracker.__init__(self,children=[self.sep])
self.on()
obj.ViewObject.hide()
+ def move(self,delta):
+ "moves the ghost to a given position, relative from its start position"
+ self.trans.translation.setValue([delta.x,delta.y,delta.z])
+
+ def rotate(self,axis,angle):
+ "rotates the ghost of a given angle"
+ self.trans.rotation.setValue(coin.SbVec3f(DraftVecUtils.tup(axis)),angle)
+
+ def center(self,point):
+ "sets the rotation/scale center of the ghost"
+ self.trans.center.setValue(point.x,point.y,point.z)
+
+ def scale(self,delta):
+ "scales the ghost by the given factor"
+ self.trans.scaleFactor.setValue([delta.x,delta.y,delta.z])
+
+ def getNode(self,obj):
+ "returns a coin node representing the given object"
+ if isinstance(obj,Part.Shape):
+ return self.getNodeLight(obj)
+ elif obj.isDerivedFrom("Part::Feature"):
+ return self.getNodeFull(obj)
+ else:
+ return self.getNodeFull(obj)
+
+ def getNode(self,obj):
+ "gets a coin node which is a full copy of the current representation"
+ sep = coin.SoSeparator()
+ try:
+ sep.addChild(obj.ViewObject.RootNode.copy())
+ except:
+ pass
+ return sep
+
+ def getNodeLight(self,shape):
+ "extract a lighter version directly from a shape"
+ # very error-prone, will be obsoleted ASAP
+ sep = coin.SoSeparator()
+ try:
+ inputstr = coin.SoInput()
+ inputstr.setBuffer(shape.writeInventor())
+ coinobj = coin.SoDB.readAll(inputstr)
+ # only add wireframe or full node?
+ sep.addChild(coinobj.getChildren()[1])
+ # sep.addChild(coinobj)
+ except:
+ pass
+ return sep
+
class editTracker(Tracker):
"A node edit tracker"
def __init__(self,pos=Vector(0,0,0),name="None",idx=0,objcol=None):
diff --git a/src/Mod/PartDesign/App/Makefile.am b/src/Mod/PartDesign/App/Makefile.am
index 80f971f496..62dcad9234 100644
--- a/src/Mod/PartDesign/App/Makefile.am
+++ b/src/Mod/PartDesign/App/Makefile.am
@@ -69,6 +69,7 @@ libPartDesign_la_LIBADD = \
-lTKGeomBase \
-lTKOffset \
-lTKPrim \
+ -lTKFeat \
-lTKFillet \
-lTKShHealing \
-lTKBool \
diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp
index bea2229bb5..30e72df60e 100644
--- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp
+++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.cpp
@@ -93,12 +93,6 @@ TaskLinearPatternParameters::TaskLinearPatternParameters(TaskMultiTransformParam
void TaskLinearPatternParameters::setupUI()
{
- connect(ui->buttonX, SIGNAL(pressed()),
- this, SLOT(onButtonX()));
- connect(ui->buttonY, SIGNAL(pressed()),
- this, SLOT(onButtonY()));
- connect(ui->buttonZ, SIGNAL(pressed()),
- this, SLOT(onButtonZ()));
connect(ui->checkReverse, SIGNAL(toggled(bool)),
this, SLOT(onCheckReverse(bool)));
connect(ui->spinLength, SIGNAL(valueChanged(double)),
@@ -125,9 +119,9 @@ void TaskLinearPatternParameters::setupUI()
}
// ---------------------
- ui->buttonX->setEnabled(true);
- ui->buttonY->setEnabled(true);
- ui->buttonZ->setEnabled(true);
+ //ui->buttonX->setEnabled(true);
+ //ui->buttonY->setEnabled(true);
+ //ui->buttonZ->setEnabled(true);
ui->checkReverse->setEnabled(true);
ui->spinLength->setEnabled(true);
ui->spinOccurrences->setEnabled(true);
@@ -154,20 +148,20 @@ void TaskLinearPatternParameters::updateUI()
ui->buttonReference->setChecked(referenceSelectionMode);
if (!stdDirection.empty())
{
- ui->buttonX->setAutoExclusive(true);
- ui->buttonY->setAutoExclusive(true);
- ui->buttonZ->setAutoExclusive(true);
- ui->buttonX->setChecked(stdDirection == "X");
- ui->buttonY->setChecked(stdDirection == "Y");
- ui->buttonZ->setChecked(stdDirection == "Z");
+ //ui->buttonX->setAutoExclusive(true);
+ //ui->buttonY->setAutoExclusive(true);
+ //ui->buttonZ->setAutoExclusive(true);
+ //ui->buttonX->setChecked(stdDirection == "X");
+ //ui->buttonY->setChecked(stdDirection == "Y");
+ //ui->buttonZ->setChecked(stdDirection == "Z");
ui->lineReference->setText(tr(""));
} else if (directionFeature != NULL && !directions.empty()) {
- ui->buttonX->setAutoExclusive(false);
- ui->buttonY->setAutoExclusive(false);
- ui->buttonZ->setAutoExclusive(false);
- ui->buttonX->setChecked(false);
- ui->buttonY->setChecked(false);
- ui->buttonZ->setChecked(false);
+ //ui->buttonX->setAutoExclusive(false);
+ //ui->buttonY->setAutoExclusive(false);
+ //ui->buttonZ->setAutoExclusive(false);
+ //ui->buttonX->setChecked(false);
+ //ui->buttonY->setChecked(false);
+ //ui->buttonZ->setChecked(false);
ui->lineReference->setText(QString::fromAscii(directions.front().c_str()));
} else {
// Error message?
@@ -220,17 +214,17 @@ void TaskLinearPatternParameters::onSelectionChanged(const Gui::SelectionChanges
}
}
-void TaskLinearPatternParameters::onButtonX() {
- onStdDirection("X");
-}
-
-void TaskLinearPatternParameters::onButtonY() {
- onStdDirection("Y");
-}
-
-void TaskLinearPatternParameters::onButtonZ() {
- onStdDirection("Z");
-}
+//void TaskLinearPatternParameters::onButtonX() {
+// onStdDirection("X");
+//}
+//
+//void TaskLinearPatternParameters::onButtonY() {
+// onStdDirection("Y");
+//}
+//
+//void TaskLinearPatternParameters::onButtonZ() {
+// onStdDirection("Z");
+//}
void TaskLinearPatternParameters::onCheckReverse(const bool on) {
if (blockUpdate)
@@ -321,12 +315,12 @@ void TaskLinearPatternParameters::onUpdateView(bool on)
const std::string TaskLinearPatternParameters::getStdDirection(void) const
{
- if (ui->buttonX->isChecked())
- return std::string("X");
- else if (ui->buttonY->isChecked())
- return std::string("Y");
- else if (ui->buttonZ->isChecked())
- return std::string("Z");
+ //if (ui->buttonX->isChecked())
+ // return std::string("X");
+ //else if (ui->buttonY->isChecked())
+ // return std::string("Y");
+ //else if (ui->buttonZ->isChecked())
+ // return std::string("Z");
return std::string("");
}
diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h
index b351f59b0e..e3a88a779a 100644
--- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h
+++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.h
@@ -64,9 +64,9 @@ public:
private Q_SLOTS:
void onStdDirection(const std::string& dir);
- void onButtonX();
- void onButtonY();
- void onButtonZ();
+ //void onButtonX();
+ //void onButtonY();
+ //void onButtonZ();
void onCheckReverse(const bool on);
void onLength(const double l);
void onOccurrences(const int n);
diff --git a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.ui b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.ui
index 4ed390924d..c6421af4cf 100644
--- a/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.ui
+++ b/src/Mod/PartDesign/Gui/TaskLinearPatternParameters.ui
@@ -28,34 +28,6 @@
- -
-
-
-
-
-
- X
-
-
- true
-
-
-
- -
-
-
- Y
-
-
-
- -
-
-
- Z
-
-
-
-
-
-
-
@@ -97,6 +69,9 @@
999999.000000000000000
+
+ 5.000000000000000
+
100.000000000000000
diff --git a/src/Mod/Ship/CMakeLists.txt b/src/Mod/Ship/CMakeLists.txt
index cb2a119ba9..9ca8c21bbc 100644
--- a/src/Mod/Ship/CMakeLists.txt
+++ b/src/Mod/Ship/CMakeLists.txt
@@ -4,60 +4,20 @@ SET(ShipMain_SRCS
Instance.py
SimInstance.py
TankInstance.py
+ Ship_rc.py
)
SOURCE_GROUP("" FILES ${ShipMain_SRCS})
SET(ShipIcons_SRCS
- Icons/AreaCurveIco.png
- Icons/AreaCurveIco.xcf
- Icons/AreaCurveIco.xpm
- Icons/DataIco.png
- Icons/DataIco.xcf
- Icons/DataIco.xpm
- Icons/DiscretizeIco.png
- Icons/DiscretizeIco.xcf
- Icons/DiscretizeIco.xpm
- Icons/HydrostaticsIco.png
- Icons/HydrostaticsIco.xcf
- Icons/HydrostaticsIco.xpm
- Icons/Ico.png
- Icons/Ico.xcf
- Icons/Ico.xpm
- Icons/LoadIco.png
- Icons/LoadIco.xcf
- Icons/LoadIco.xpm
- Icons/OutlineDrawIco.png
- Icons/OutlineDrawIco.xcf
- Icons/OutlineDrawIco.xpm
- Icons/ReparametrizeIco.png
- Icons/ReparametrizeIco.xcf
- Icons/ReparametrizeIco.xpm
- Icons/Ship.xcf
- Icons/Ship.xpm
- Icons/Weight.png
- Icons/Weight.xcf
- Icons/Weight.xpm
- Icons/SimIco.xcf
- Icons/Sim.xpm
- Icons/SimCreateIco.png
- Icons/SimCreateIco.xpm
- Icons/SimRunIco.png
- Icons/SimRunIco.xpm
- Icons/SimStopIco.png
- Icons/SimStopIco.xpm
- Icons/SimPostIco.png
- Icons/SimPostIco.xpm
- Icons/Tank.png
- Icons/Tank.xcf
- Icons/Tank.xpm
+ resources/icons/Ico.xpm
)
SOURCE_GROUP("shipicons" FILES ${ShipIcons_SRCS})
SET(ShipExamples_SRCS
- Examples/s60.fcstd
- Examples/s60_katamaran.fcstd
- Examples/wigley.fcstd
- Examples/wigley_katamaran.fcstd
+ resources/examples/s60.fcstd
+ resources/examples/s60_katamaran.fcstd
+ resources/examples/wigley.fcstd
+ resources/examples/wigley_katamaran.fcstd
)
SOURCE_GROUP("shipexamples" FILES ${ShipExamples_SRCS})
@@ -87,7 +47,7 @@ SOURCE_GROUP("shipoutlinedraw" FILES ${ShipOutlineDraw_SRCS})
SET(ShipAreasCurve_SRCS
shipAreasCurve/__init__.py
- shipAreasCurve/Plot.py
+ shipAreasCurve/PlotAux.py
shipAreasCurve/Preview.py
shipAreasCurve/TaskPanel.py
shipAreasCurve/TaskPanel.ui
@@ -96,7 +56,7 @@ SOURCE_GROUP("shipareascurve" FILES ${ShipAreasCurve_SRCS})
SET(ShipHydrostatics_SRCS
shipHydrostatics/__init__.py
- shipHydrostatics/Plot.py
+ shipHydrostatics/PlotAux.py
shipHydrostatics/TaskPanel.py
shipHydrostatics/TaskPanel.ui
shipHydrostatics/Tools.py
@@ -107,7 +67,6 @@ SET(ShipUtils_SRCS
shipUtils/__init__.py
shipUtils/Math.py
shipUtils/Paths.py
- shipUtils/Translator.py
)
SOURCE_GROUP("shiputils" FILES ${ShipUtils_SRCS})
@@ -128,7 +87,7 @@ SOURCE_GROUP("shipcreatetank" FILES ${ShipCreateTank_SRCS})
SET(ShipGZ_SRCS
tankGZ/__init__.py
- tankGZ/Plot.py
+ tankGZ/PlotAux.py
tankGZ/TaskPanel.py
tankGZ/TaskPanel.ui
)
diff --git a/src/Mod/Ship/Icons/DataIco.png b/src/Mod/Ship/Icons/DataIco.png
deleted file mode 100644
index 223338ceae..0000000000
Binary files a/src/Mod/Ship/Icons/DataIco.png and /dev/null differ
diff --git a/src/Mod/Ship/Icons/DataIco.xcf b/src/Mod/Ship/Icons/DataIco.xcf
deleted file mode 100644
index 81e05ac42d..0000000000
Binary files a/src/Mod/Ship/Icons/DataIco.xcf and /dev/null differ
diff --git a/src/Mod/Ship/Icons/DataIco.xpm b/src/Mod/Ship/Icons/DataIco.xpm
deleted file mode 100644
index 19aed7ffa0..0000000000
--- a/src/Mod/Ship/Icons/DataIco.xpm
+++ /dev/null
@@ -1,1021 +0,0 @@
-/* XPM */
-static char * DataIco_xpm[] = {
-"128 128 890 2",
-" c None",
-". c #A7A7A7",
-"+ c #A7A7A6",
-"@ c #A6A5A6",
-"# c #A5A6A5",
-"$ c #A5A5A5",
-"% c #A5A5A4",
-"& c #A4A4A4",
-"* c #A7A7A8",
-"= c #A6A6A6",
-"- c #A5A4A5",
-"; c #A5A4A4",
-"> c #A8A8A7",
-", c #A8A7A7",
-"' c #979797",
-") c #989898",
-"! c #999899",
-"~ c #A5A6A6",
-"{ c #A8A8A8",
-"] c #A7A8A8",
-"^ c #979898",
-"/ c #999999",
-"( c #999A9A",
-"_ c #A9A9A8",
-": c #99999A",
-"< c #9A9A9B",
-"[ c #B2B2B2",
-"} c #A9A9AA",
-"| c #A9A9A9",
-"1 c #9B9A9A",
-"2 c #9C9B9B",
-"3 c #A7A6A6",
-"4 c #B3B4B3",
-"5 c #B3B3B3",
-"6 c #AAAAAA",
-"7 c #9A9A9A",
-"8 c #9B9B9B",
-"9 c #9C9C9C",
-"0 c #A7A6A7",
-"a c #9E9E9E",
-"b c #9D9D9D",
-"c c #B5B5B5",
-"d c #B5B4B5",
-"e c #B4B4B4",
-"f c #B4B3B4",
-"g c #B2B3B3",
-"h c #9D9C9C",
-"i c #9F9E9E",
-"j c #9E9E9F",
-"k c #B7B6B7",
-"l c #B6B6B6",
-"m c #B6B5B5",
-"n c #B4B4B5",
-"o c #828181",
-"p c #B3B3B4",
-"q c #ABAAAB",
-"r c #9C9C9B",
-"s c #9C9C9D",
-"t c #9F9FA0",
-"u c #9E9F9E",
-"v c #9E9F9F",
-"w c #9E9D9E",
-"x c #9E9D9D",
-"y c #9C9D9C",
-"z c #807F7F",
-"A c #818080",
-"B c #828281",
-"C c #B4B5B4",
-"D c #ABABAB",
-"E c #A9A8A8",
-"F c #A0A0A0",
-"G c #A09FA0",
-"H c #9F9F9F",
-"I c #ADADAD",
-"J c #ADAEAE",
-"K c #9D9D9E",
-"L c #B7B7B7",
-"M c #B6B6B5",
-"N c #818081",
-"O c #828282",
-"P c #838383",
-"Q c #ADADAC",
-"R c #ABACAC",
-"S c #ABACAB",
-"T c #A8A9A8",
-"U c #A6A7A7",
-"V c #A0A1A0",
-"W c #AFAFAF",
-"X c #B7B6B6",
-"Y c #818181",
-"Z c #828383",
-"` c #848383",
-" . c #B4B3B3",
-".. c #AFB0AF",
-"+. c #AEAEAF",
-"@. c #AFAEAE",
-"#. c #AEAEAE",
-"$. c #ACADAD",
-"%. c #ACACAC",
-"&. c #A0A1A1",
-"*. c #A5A5A6",
-"=. c #A1A2A2",
-"-. c #A1A1A1",
-";. c #A1A1A0",
-">. c #B0B0B0",
-",. c #B1B1B0",
-"'. c #838382",
-"). c #848484",
-"!. c #858585",
-"~. c #B5B5B4",
-"{. c #B4B4B3",
-"]. c #B2B1B2",
-"^. c #B1B1B1",
-"/. c #B0B1B0",
-"(. c #AEAFAF",
-"_. c #9C9D9D",
-":. c #9E9E9D",
-"<. c #A2A2A2",
-"[. c #A3A3A4",
-"}. c #A6A6A5",
-"|. c #A4A4A5",
-"1. c #A1A2A1",
-"2. c #B2B1B1",
-"3. c #A09F9F",
-"4. c #B7B7B8",
-"5. c #B6B6B7",
-"6. c #868585",
-"7. c #868786",
-"8. c #B3B2B3",
-"9. c #B2B2B3",
-"0. c #B1B2B1",
-"a. c #B0B1B1",
-"b. c #949494",
-"c. c #959595",
-"d. c #969696",
-"e. c #979798",
-"f. c #989899",
-"g. c #A0A09F",
-"h. c #A3A3A3",
-"i. c #A4A4A3",
-"j. c #A6A5A5",
-"k. c #A4A3A3",
-"l. c #A3A2A2",
-"m. c #A1A0A0",
-"n. c #B8B8B8",
-"o. c #848584",
-"p. c #858686",
-"q. c #868787",
-"r. c #888888",
-"s. c #919090",
-"t. c #919192",
-"u. c #929392",
-"v. c #969697",
-"w. c #979897",
-"x. c #999898",
-"y. c #9D9C9D",
-"z. c #A8A7A8",
-"A. c #A8A9A9",
-"B. c #A9AAAA",
-"C. c #AAABAB",
-"D. c #ACACAD",
-"E. c #A4A5A4",
-"F. c #A3A2A3",
-"G. c #B3B4B4",
-"H. c #898888",
-"I. c #898989",
-"J. c #8B8A8A",
-"K. c #8C8C8B",
-"L. c #8D8D8D",
-"M. c #8E8E8E",
-"N. c #8F8F8F",
-"O. c #909090",
-"P. c #929291",
-"Q. c #939393",
-"R. c #959495",
-"S. c #969695",
-"T. c #979796",
-"U. c #9B9B9C",
-"V. c #A0A0A1",
-"W. c #AAAAA9",
-"X. c #ACABAB",
-"Y. c #ACADAC",
-"Z. c #AEADAE",
-"`. c #AFB0B0",
-" + c #B1B0B1",
-".+ c #B3B2B2",
-"++ c #A2A1A2",
-"@+ c #B7B8B7",
-"#+ c #878787",
-"$+ c #888988",
-"%+ c #8A8A8A",
-"&+ c #8A8B8B",
-"*+ c #8C8C8C",
-"=+ c #8E8D8D",
-"-+ c #8F8E8F",
-";+ c #919091",
-">+ c #929292",
-",+ c #949495",
-"'+ c #969596",
-")+ c #9B9C9C",
-"!+ c #A2A3A3",
-"~+ c #A7A8A7",
-"{+ c #AEAFAE",
-"]+ c #A2A1A1",
-"^+ c #B9B8B8",
-"/+ c #868686",
-"(+ c #888787",
-"_+ c #898889",
-":+ c #8B8B8B",
-"<+ c #8D8E8D",
-"[+ c #8F8E8E",
-"}+ c #919191",
-"|+ c #939392",
-"1+ c #949393",
-"2+ c #959494",
-"3+ c #989798",
-"4+ c #989998",
-"5+ c #9A9999",
-"6+ c #9A9B9B",
-"7+ c #A1A0A1",
-"8+ c #ACABAC",
-"9+ c #B0AFB0",
-"0+ c #B8B8B7",
-"a+ c #A2A3A2",
-"b+ c #B9B9B9",
-"c+ c #868687",
-"d+ c #878887",
-"e+ c #8D8C8C",
-"f+ c #8F8F8E",
-"g+ c #909091",
-"h+ c #929192",
-"i+ c #939493",
-"j+ c #9A9A99",
-"k+ c #9D9D9C",
-"l+ c #A2A2A3",
-"m+ c #A4A5A5",
-"n+ c #AAA9A9",
-"o+ c #B2B2B1",
-"p+ c #BABABA",
-"q+ c #BAB9BA",
-"r+ c #B9B9BA",
-"s+ c #878687",
-"t+ c #888887",
-"u+ c #8C8C8D",
-"v+ c #929393",
-"w+ c #949493",
-"x+ c #969796",
-"y+ c #A1A1A2",
-"z+ c #A6A6A7",
-"A+ c #A9A8A9",
-"B+ c #AFAEAF",
-"C+ c #B0AFAF",
-"D+ c #B5B6B6",
-"E+ c #B8B7B8",
-"F+ c #BABAB9",
-"G+ c #BBBBBA",
-"H+ c #BABABB",
-"I+ c #8C8D8C",
-"J+ c #8E8D8E",
-"K+ c #919190",
-"L+ c #929191",
-"M+ c #939293",
-"N+ c #979697",
-"O+ c #999998",
-"P+ c #9C9B9C",
-"Q+ c #A6A7A6",
-"R+ c #ABABAC",
-"S+ c #ADACAC",
-"T+ c #BCBBBB",
-"U+ c #A3A3A2",
-"V+ c #BCBCBC",
-"W+ c #BBBBBC",
-"X+ c #BBBBBB",
-"Y+ c #979696",
-"Z+ c #989797",
-"`+ c #9FA09F",
-" @ c #ABAAAA",
-".@ c #ACACAB",
-"+@ c #B0B0AF",
-"@@ c #B3B3B2",
-"#@ c #B6B7B7",
-"$@ c #B9B9B8",
-"%@ c #BBBCBB",
-"&@ c #BCBDBC",
-"*@ c #BDBCBD",
-"=@ c #BDBDBD",
-"-@ c #818182",
-";@ c #858586",
-">@ c #8B8B8C",
-",@ c #8C8D8D",
-"'@ c #8F9090",
-")@ c #909190",
-"!@ c #919292",
-"~@ c #959695",
-"{@ c #9D9E9D",
-"]@ c #AAAAAB",
-"^@ c #BBBABA",
-"/@ c #BBBCBC",
-"(@ c #BEBDBD",
-"_@ c #BEBDBE",
-":@ c #BBBABB",
-"<@ c #C3C3C4",
-"[@ c #BDBDBE",
-"}@ c #808181",
-"|@ c #828283",
-"1@ c #848485",
-"2@ c #868685",
-"3@ c #8B8C8B",
-"4@ c #908F8F",
-"5@ c #B1B0B0",
-"6@ c #AFAFAE",
-"7@ c #ADAEAD",
-"8@ c #BEBFBE",
-"9@ c #BEBEBE",
-"0@ c #B9BAB9",
-"a@ c #C4C4C4",
-"b@ c #C3C3C3",
-"c@ c #C3C2C3",
-"d@ c #BFBFBE",
-"e@ c #7F7F80",
-"f@ c #878686",
-"g@ c #8A8B8A",
-"h@ c #8D8E8E",
-"i@ c #929293",
-"j@ c #AFAFB0",
-"k@ c #AEAEAD",
-"l@ c #AEADAD",
-"m@ c #B5B5B6",
-"n@ c #BABBBA",
-"o@ c #BCBBBC",
-"p@ c #BDBEBD",
-"q@ c #C5C5C5",
-"r@ c #C3C4C3",
-"s@ c #BFC0C0",
-"t@ c #BFBFBF",
-"u@ c #7E7E7E",
-"v@ c #7F7F7F",
-"w@ c #808081",
-"x@ c #818281",
-"y@ c #838282",
-"z@ c #8F8F90",
-"A@ c #B9BABA",
-"B@ c #BABBBB",
-"C@ c #9FA0A0",
-"D@ c #C4C5C4",
-"E@ c #6F6F6F",
-"F@ c #C4C3C4",
-"G@ c #C2C3C3",
-"H@ c #C3C3C2",
-"I@ c #C0C0C0",
-"J@ c #7C7D7C",
-"K@ c #808080",
-"L@ c #838283",
-"M@ c #858685",
-"N@ c #B8B9B8",
-"O@ c #B8B9B9",
-"P@ c #B8B7B7",
-"Q@ c #A2A2A1",
-"R@ c #C6C6C6",
-"S@ c #6D6E6D",
-"T@ c #6F6E6F",
-"U@ c #707071",
-"V@ c #C3C4C4",
-"W@ c #C4C3C3",
-"X@ c #C2C2C2",
-"Y@ c #C2C1C1",
-"Z@ c #C1C1C1",
-"`@ c #C1C0C1",
-" # c #7D7D7D",
-".# c #7E7D7E",
-"+# c #888989",
-"@# c #8C8B8B",
-"## c #B9B8B9",
-"$# c #C7C7C7",
-"%# c #6E6D6E",
-" c #707070",
-"*# c #717172",
-"=# c #727372",
-"-# c #C3C2C2",
-";# c #7B7B7B",
-"># c #7D7D7E",
-",# c #828382",
-"'# c #848483",
-")# c #858584",
-"!# c #888788",
-"~# c #888889",
-"{# c #B7B8B8",
-"]# c #ADACAD",
-"^# c #C7C8C8",
-"/# c #C6C7C7",
-"(# c #C6C7C6",
-"_# c #C5C6C5",
-":# c #717271",
-"<# c #727272",
-"[# c #747374",
-"}# c #757575",
-"|# c #767676",
-"1# c #777878",
-"2# c #797978",
-"3# c #797A7A",
-"4# c #7D7E7D",
-"5# c #878788",
-"6# c #959596",
-"7# c #AAABAA",
-"8# c #B1B2B2",
-"9# c #C6C6C5",
-"0# c #717171",
-"a# c #737372",
-"b# c #777777",
-"c# c #797879",
-"d# c #7A7A7A",
-"e# c #7C7C7D",
-"f# c #7E7D7D",
-"g# c #7E7F7F",
-"h# c #B6B7B6",
-"i# c #C7C6C7",
-"j# c #737474",
-"k# c #747574",
-"l# c #767675",
-"m# c #797878",
-"n# c #7B7C7C",
-"o# c #7F7E7F",
-"p# c #939494",
-"q# c #C5C6C6",
-"r# c #757474",
-"s# c #787878",
-"t# c #797A79",
-"u# c #7A7A7B",
-"v# c #767777",
-"w# c #797979",
-"x# c #7B7B7A",
-"y# c #7C7C7B",
-"z# c #7D7D7C",
-"A# c #808180",
-"B# c #BEBFBF",
-"C# c #B2B3B2",
-"D# c #ABABAA",
-"E# c #747474",
-"F# c #767677",
-"G# c #787777",
-"H# c #7C7B7B",
-"I# c #7D7C7C",
-"J# c #B1B1B2",
-"K# c #A4A3A4",
-"L# c #C7C7C6",
-"M# c #747473",
-"N# c #7A7A79",
-"O# c #C1C0C0",
-"P# c #C7C8C7",
-"Q# c #737373",
-"R# c #787879",
-"S# c #7C7B7C",
-"T# c #B7B7B6",
-"U# c #C1C1C0",
-"V# c #AAA9AA",
-"W# c #C8C8C8",
-"X# c #C8C8C7",
-"Y# c #737374",
-"Z# c #7A7979",
-"`# c #7A7B7A",
-" $ c #C8C9C8",
-".$ c #C8C8C9",
-"+$ c #727171",
-"@$ c #757576",
-"#$ c #777677",
-"$$ c #C2C2C1",
-"%$ c #CAC9C9",
-"&$ c #C8C9C9",
-"*$ c #737273",
-"=$ c #7C7C7C",
-"-$ c #A9AAA9",
-";$ c #CACBCA",
-">$ c #C9C9CA",
-",$ c #757676",
-"'$ c #777877",
-")$ c #C4C4C3",
-"!$ c #CBCBCB",
-"~$ c #CBCACB",
-"{$ c #6F7070",
-"]$ c #757475",
-"^$ c #787877",
-"/$ c #7B7A7A",
-"($ c #8E8E8F",
-"_$ c #C5C5C4",
-":$ c #CBCACA",
-"<$ c #717071",
-"[$ c #727271",
-"}$ c #767575",
-"|$ c #767776",
-"1$ c #787978",
-"2$ c #A3A4A3",
-"3$ c #6F6F6E",
-"4$ c #737473",
-"5$ c #79797A",
-"6$ c #C5C5C6",
-"7$ c #CDCCCD",
-"8$ c #CCCCCC",
-"9$ c #CBCCCC",
-"0$ c #70706F",
-"a$ c #707171",
-"b$ c #C6C6C7",
-"c$ c #ADADAE",
-"d$ c #9F9F9E",
-"e$ c #CDCDCC",
-"f$ c #CCCDCD",
-"g$ c #6D6D6D",
-"h$ c #6E6E6E",
-"i$ c #706F6F",
-"j$ c #727172",
-"k$ c #737272",
-"l$ c #747373",
-"m$ c #777676",
-"n$ c #9D9E9E",
-"o$ c #CDCECE",
-"p$ c #CDCDCD",
-"q$ c #6D6D6C",
-"r$ c #757675",
-"s$ c #C8C7C7",
-"t$ c #CECECE",
-"u$ c #CECDCE",
-"v$ c #6C6C6C",
-"w$ c #9F9E9F",
-"x$ c #D3D3D3",
-"y$ c #D2D3D2",
-"z$ c #D2D2D2",
-"A$ c #D2D2D1",
-"B$ c #D1D1D1",
-"C$ c #D0D0D1",
-"D$ c #D0D0D0",
-"E$ c #D0D0CF",
-"F$ c #D0CFCF",
-"G$ c #CFCFCF",
-"H$ c #CFCECF",
-"I$ c #727273",
-"J$ c #C9C8C9",
-"K$ c #9B9A9B",
-"L$ c #D3D4D3",
-"M$ c #D3D2D2",
-"N$ c #D2D1D1",
-"O$ c #D1D1D0",
-"P$ c #CECFCE",
-"Q$ c #6A6A6A",
-"R$ c #6B6C6C",
-"S$ c #6C6D6D",
-"T$ c #757574",
-"U$ c #C9C9C9",
-"V$ c #9B9B9A",
-"W$ c #9A9B9A",
-"X$ c #D4D4D4",
-"Y$ c #D3D4D4",
-"Z$ c #5F5F5F",
-"`$ c #606061",
-" % c #616161",
-".% c #636263",
-"+% c #646464",
-"@% c #656465",
-"#% c #666666",
-"$% c #676767",
-"%% c #686969",
-"&% c #696A69",
-"*% c #6B6B6B",
-"=% c #706F70",
-"-% c #CAC9CA",
-";% c #9A999A",
-">% c #969797",
-",% c #D4D5D4",
-"'% c #5F5F5E",
-")% c #606060",
-"!% c #626263",
-"~% c #636463",
-"{% c #656566",
-"]% c #686868",
-"^% c #696969",
-"/% c #6E6F6F",
-"(% c #717170",
-"_% c #C9CAC9",
-":% c #CACACA",
-"<% c #B0B0B1",
-"[% c #D4D5D5",
-"}% c #D4D4D5",
-"|% c #606161",
-"1% c #626261",
-"2% c #636363",
-"3% c #656565",
-"4% c #696869",
-"5% c #6C6B6C",
-"6% c #707170",
-"7% c #717272",
-"8% c #CBCBCA",
-"9% c #989999",
-"0% c #D5D5D5",
-"a% c #D5D4D4",
-"b% c #D2D3D3",
-"c% c #D0D1D1",
-"d% c #6A6B6B",
-"e% c #6B6B6C",
-"f% c #6D6C6D",
-"g% c #6E6E6D",
-"h% c #949595",
-"i% c #949594",
-"j% c #D6D5D6",
-"k% c #D5D4D5",
-"l% c #D3D3D4",
-"m% c #D3D2D3",
-"n% c #D1D2D2",
-"o% c #69696A",
-"p% c #6F6E6E",
-"q% c #959696",
-"r% c #939394",
-"s% c #D1D2D1",
-"t% c #6D6E6E",
-"u% c #6E6F6E",
-"v% c #CBCCCB",
-"w% c #676768",
-"x% c #696868",
-"y% c #6A696A",
-"z% c #6B6C6B",
-"A% c #CCCCCD",
-"B% c #666766",
-"C% c #6F706F",
-"D% c #807F80",
-"E% c #919291",
-"F% c #909191",
-"G% c #90908F",
-"H% c #676766",
-"I% c #676867",
-"J% c #6D6D6E",
-"K% c #C1C1C2",
-"L% c #B5B4B4",
-"M% c #908F90",
-"N% c #676666",
-"O% c #6B6A6A",
-"P% c #6C6B6B",
-"Q% c #6D6C6C",
-"R% c #8E8F8E",
-"S% c #666767",
-"T% c #686968",
-"U% c #6A6969",
-"V% c #CECECD",
-"W% c #8F908F",
-"X% c #8D8C8D",
-"Y% c #8D8D8C",
-"Z% c #656666",
-"`% c #676667",
-" & c #8C8B8C",
-".& c #CECFCF",
-"+& c #8B8B8A",
-"@& c #D5D5D4",
-"#& c #666565",
-"$& c #676868",
-"%& c #B8B8B9",
-"&& c #D6D6D5",
-"*& c #646364",
-"=& c #CFD0CF",
-"-& c #CFCECE",
-";& c #8A8A8B",
-">& c #898A8A",
-",& c #8A8989",
-"'& c #D6D6D6",
-")& c #646564",
-"!& c #89898A",
-"~& c #898A89",
-"{& c #8A8A89",
-"]& c #878888",
-"^& c #626262",
-"/& c #646465",
-"(& c #D6D6D7",
-"_& c #D7D6D6",
-":& c #636362",
-"<& c #636464",
-"[& c #656665",
-"}& c #686867",
-"|& c #D0CFD0",
-"1& c #D7D7D7",
-"2& c #D6D7D7",
-"3& c #6E6D6D",
-"4& c #CFD0D0",
-"5& c #BCBCBB",
-"6& c #838483",
-"7& c #D8D9D8",
-"8& c #D8D8D7",
-"9& c #656564",
-"0& c #6A6B6A",
-"a& c #BCBDBD",
-"b& c #858485",
-"c& c #848384",
-"d& c #838484",
-"e& c #DAD9DA",
-"f& c #D9D9D9",
-"g& c #D8D8D8",
-"h& c #5E5E5E",
-"i& c #5F5F60",
-"j& c #606160",
-"k& c #636364",
-"l& c #838384",
-"m& c #818282",
-"n& c #DBDBDB",
-"o& c #DADADA",
-"p& c #DAD9D9",
-"q& c #5D5D5D",
-"r& c #5E5D5E",
-"s& c #5E5F5E",
-"t& c #605F5F",
-"u& c #686768",
-"v& c #BFBEBF",
-"w& c #828182",
-"x& c #7F8080",
-"y& c #B4B5B5",
-"z& c #DCDCDC",
-"A& c #DCDCDB",
-"B& c #DBDADB",
-"C& c #5A5A5A",
-"D& c #5A5B5B",
-"E& c #5C5C5C",
-"F& c #605F60",
-"G& c #616160",
-"H& c #696A6A",
-"I& c #6B6A6B",
-"J& c #6C6C6D",
-"K& c #818180",
-"L& c #7F7F7E",
-"M& c #DDDCDD",
-"N& c #DCDDDD",
-"O& c #585858",
-"P& c #595859",
-"Q& c #595A59",
-"R& c #5B5A5A",
-"S& c #5B5B5C",
-"T& c #D8D9D9",
-"U& c #D8D7D8",
-"V& c #626162",
-"W& c #636262",
-"X& c #646463",
-"Y& c #666667",
-"Z& c #80807F",
-"`& c #7F807F",
-" * c #7F7E7E",
-".* c #DDDDDD",
-"+* c #DDDDDC",
-"@* c #575657",
-"#* c #585857",
-"$* c #595959",
-"%* c #D9DADA",
-"&* c #D8D8D9",
-"** c #696968",
-"=* c #6C6C6B",
-"-* c #C1C2C1",
-";* c #C2C1C2",
-">* c #7E7F7E",
-",* c #7E7E7D",
-"'* c #BAB9B9",
-")* c #7B7B7C",
-"!* c #DCDCDD",
-"~* c #575757",
-"{* c #DBDCDC",
-"]* c #DBDADA",
-"^* c #D9DAD9",
-"/* c #D7D6D7",
-"(* c #616162",
-"_* c #6A6A69",
-":* c #6C6D6C",
-"<* c #C0BFBF",
-"[* c #CECECF",
-"}* c #C2C2C3",
-"|* c #7D7E7E",
-"1* c #7C7D7D",
-"2* c #DCDBDC",
-"3* c #DCDBDB",
-"4* c #616262",
-"5* c #626362",
-"6* c #C8C7C8",
-"7* c #C5C4C5",
-"8* c #DEDEDE",
-"9* c #D7D8D7",
-"0* c #626363",
-"a* c #686767",
-"b* c #CECDCD",
-"c* c #7A7B7B",
-"d* c #7B7A7B",
-"e* c #A4A2A2",
-"f* c #DEDDDD",
-"g* c #D9D8D8",
-"h* c #616061",
-"i* c #626161",
-"j* c #646565",
-"k* c #CCCBCB",
-"l* c #CACBCB",
-"m* c #7A797A",
-"n* c #BCBCBD",
-"o* c #AEB0B0",
-"p* c #A9A7A7",
-"q* c #D7D8D8",
-"r* c #616060",
-"s* c #6A6A6B",
-"t* c #C4C5C5",
-"u* c #CACAC9",
-"v* c #787778",
-"w* c #787979",
-"x* c #A8A8A9",
-"y* c #656464",
-"z* c #686869",
-"A* c #727373",
-"B* c #777778",
-"C* c #A6A6A4",
-"D* c #A3A3A5",
-"E* c #6E6E6F",
-"F* c #D8D7D7",
-"G* c #747475",
-"H* c #747575",
-"I* c #C0C1C0",
-"J* c #D9D8D9",
-"K* c #C0C1C1",
-"L* c #646363",
-"M* c #949394",
-"N* c #5F6060",
-"O* c #666566",
-"P* c #AAAAA8",
-"Q* c #5F5E5F",
-"R* c #5D5D5E",
-"S* c #5F605F",
-"T* c #6B6B6A",
-"U* c #5D5D5C",
-"V* c #DBDBDA",
-"W* c #5A5A5B",
-"X* c #5B5B5B",
-"Y* c #5B5C5C",
-"Z* c #D6D7D6",
-"`* c #D6D5D5",
-" = c #666665",
-".= c #C9CACA",
-"+= c #C4C4C5",
-"@= c #5A595A",
-"#= c #5B5B5A",
-"$= c #D9D9D8",
-"%= c #D5D6D6",
-"&= c #D4D3D4",
-"*= c #CCCBCC",
-"== c #CACACB",
-"-= c #B9B7B9",
-";= c #DBDBDC",
-">= c #585757",
-",= c #D9D9DA",
-"'= c #D4D4D3",
-")= c #D3D3D2",
-"!= c #CDCDCE",
-"~= c #CDCCCC",
-"{= c #CBCBCC",
-"]= c #C7C7C8",
-"^= c #C5C4C4",
-"/= c #B5B7B7",
-"(= c #A9A9A7",
-"_= c #565555",
-":= c #565656",
-"<= c #DADBDB",
-"[= c #DEDEDD",
-"}= c #555454",
-"|= c #555555",
-"1= c #767576",
-"2= c #DFDEDF",
-"3= c #DDDEDD",
-"4= c #545554",
-"5= c #D1D0D1",
-"6= c #DDDEDE",
-"7= c #DDDDDE",
-"8= c #D0D1D0",
-"9= c #C7C6C6",
-"0= c #777776",
-"a= c #5E5F5F",
-"b= c #5E5E5F",
-"c= c #5C5C5D",
-"d= c #5C5D5C",
-"e= c #BBB9B9",
-"f= c #5B5C5B",
-"g= c #D4D3D3",
-"h= c #959594",
-"i= c #5B5A5B",
-"j= c #A7A5A5",
-"k= c #AAAAAC",
-"l= c #D5D6D5",
-"m= c #8E8F8F",
-"n= c #6A6A6C",
-"o= c #828482",
-"p= c #CBCDCB",
-"q= c #ABAAA9",
-"r= c #A3A4A4",
-"s= c #6F6F70",
-"t= c #757577",
-"u= c #C7C7C5",
-"v= c #C0C2C2",
-"w= c #D5D5D7",
-" ",
-" ",
-" . + @ # $ % & ",
-" * . = # $ - ; ",
-" > , ' ) ! ~ $ ",
-" { ] ^ / ( @ # ",
-" _ { ) : < = ~ ",
-" [ [ } | / 1 2 3 + ",
-" 4 5 [ 6 | 7 8 9 ] 0 a b ",
-" c d e f 4 g 6 6 < 9 h { . i j b b b ",
-" k l m c n o p 5 q 6 r s b { ] t u v w x b y ",
-" l l z A B C f 5 D 6 9 b a E { F G H I J a K b ",
-" L l M N O P e e I I Q R S D b w H | | T * . U . V F W W W j a K ",
-" L X Y Z ` d e . ..W +.@.#.I I $.%.9 b i t &.| E { > , U 0 = *.$ =.-.;.>.,.>.H v ",
-" L k l '.).!.~.e {. ].^./.>.>.W (.#.) / 7 8 _.:.H F -.<.[.& }.+ * U 0 = ~ *.; |. <.1.^.^.2.3.t i ",
-" 4.L 5.).6.7.e n e 5 8.9.[ 0.a.,.b.c.d.e.f.: 8 9 b a g.F <.h.i.$ = . { | 6 D = j.# |.& & k.h.l.<.g g 8.m.g. ",
-" n.L o.p.q.r.n e {.5 5 [ s.t.u.b.c.v.w.x.7 8 y.b H F V <.h.; $ + z.A.B.C.%.D.J W $ & E.& h.F. .G.e -.F F ",
-" n.4.L p.q.H.I.J.K.L.M.N.O.P.Q.R.S.T.) / 7 U.h a H V.-.h.i.% = . { W.6 X.Y.Z.W `. +2..+5 4 e e c c ++-. ",
-" n.@+p.#+$+%+&+*+=+-+O.;+>+Q.,+'+' f./ 8 )+y.a H -.<.!+& j.U ~+T 6 D %.I {+W >.].[ 5 {.n c M l X <.]+ ",
-" ^+L /+(+_+%+:+*+<+[+O.}+|+1+2+d.3+4+5+6+9 b i F 7+<.h.E.*.U { | C.8+Y.#.(.9+^.[ 8.e c l k L 0+n.a+<. ",
-" b+n.c+d+I.%+:+e+=+f+g+h+Q.i+c.d.) 4+j+8 k+w j F 1.l+& m+j.. T n+D %.I #.W >.o+5 {.c l k L n.b+b+!+l. ",
-" p+q+r+^+s+t+$+%+:+u+L.N.O.t.v+w+c.x+w./ 7 8 y.a H V y+l+k.$ z+* A+6 D %.I B+C+,.[ p C D+k E+^+b+F+p+[.h.F.<. ",
-" G+H+p+r+!.s+t+_+%+K.I+J+N.K+L+M+b.c.N+) O+7 P+_.a H ;.-.h.& $ Q+~+_ 6 R+S+#.W >.0.8.e c l L n.b+p+G+T+T+k.U+a+<. ",
-" V+W+X+Z ).6.#+#+I.J.:+L.M.N.O.h+Q.b.d.Y+Z+/ 8 r y a `+&.1.h.& j.3 > | @.@Q #.+@>.[ @@e m #@L $@p+X+%@&@*@V+X+!+!+<. ",
-" =@V+V+-@P ).;@7.r.I.%+>@,@M.'@)@!@Q.b.~@N+) {@h.> R+#.{+W B+#.J S+S ]@6 D .@Q {+W /.o+5 C c #@n.r+^@/@*@(@_@=@V+:@h.l+<. ",
-" <@ [@=@=@}@-@|@1@2@c+r.I.&+3@L.M.4@;+>+Q.b.{@> `. .5 9.[ 2.^.5@>.W W 6@#.#.7@I R+%.I W ,.[ 5 C m L n.b+:@T+=@8@9@_@V+X+0@h.l.<. ",
-" a@a@b@c@ d@9@9@e@A O P ).6.f@t+I.g@K.e+h@N.)@i@<.j@c c e {.G.5 #.k@l@I I Y.S I ^.5 n m@#@0+b+n@o@*@p@=@=@o@X+0@b+h.U+<. H a a ",
-" q@a@a@r@b@ s@t@9@u@v@w@x@y@).!.q.r.I.J.3@L.M.z@<.e 5.l M c I %.%.R D W e c #@4.b+A@B@V+V+*@V+X+X+b+n.L h.!+a+ C@`+H v ",
-" q@q@D@E@F@r@G@H@ I@s@J@u@v@K@Y L@).M@/+#+I.%+:+L.8 0.n.4.L 5. S+%..@D %.^.D+L N@r+^@X+o@T+X+p+p+O@P@5.c h.U+<.Q@y+&.V G G v i ",
-" R@q@S@T@U@V@W@b@X@X@Y@Z@`@I@ #.#u@A Y P ).!.7.r.+#%+@#. r+b+n.n. %.8+D D {+l n.O@b+q+p+p+r+b+##E+L l c 5 h.F.<.<.y+-.S @F v ",
-" $#$#R@%#E@*#=#b@b@-#X@X@Z@;# #>#v@K@Y ,#'#)#/+!#~#>+^.p+p+b+ .@D q %.e {#n.$@b+##O@n.@+L l c e 5 [ /.>.(.l@]#D 6 F H H ",
-" ^#/#(#R@_#:#<#[#}#|#1#2#3#;#J@4#v@K@Y |@'#o./+5#6#n.X+X+ R+7#7#8.L {#@+0+L L X l m e 5 .+8#/.W #.]#%.D ;.7+F g. ",
-" $#/#R@9#0#a#[#}#|#b#c#d#;#e#f#g#K@Y O ` o.p.' T+V+V+ %.D ]@2.h#5.5.h#m@M c C p 5 ].,.>.W J %..@=.-.-.V ",
-" i#R@_#q@j#k#l#b#m#3#;#n#>#o#K@Y O P 1@p#*@=@*@ X.D 6 [ c m c e e f 5 g 0.^...W #.I %.U+l+<. ",
-" (#R@q#q@r#}#b#s#t#u#n# #u@K@N B P L.b+9@[@ D D @].e p p 4 .+8.o+^.>.W #.I %.X.h.h. ",
-" R@_#r#}#v#s#w#x#y#z#u@v@A#-@'.[ B#9@ .@D S g C#C#[ [ ^.5@W W #.l@S+.@D#k.h. ",
-" /#R@E#l#F#G#2#d#H#I#.#v@K@o = I@t@ X.D ]#J#^.a./.>.j@W #.l@S+%.]@} & K# ",
-" i#L#M#}#|#b#2#N#;#I#>#u@K@~@O#I@ D D #.>.>.W W #.Z.I %.8+ @} A+|.& ",
-" P#$#Q#k#|#b#R#t#x#S#f#u@K@T#Z@U# %.D q B+(.#.7@I ]#%.D 6 V#A.{ $ ; ",
-" W#X#P#Y#E#|#b#R#Z#`#y#z#u@a X@Y@ 8+R %.I I S+%.X.q C.V#| z.. ~ $ $ ",
-" $.$+$Q#E#@$#$s#w#d#H#z#o#=@c@$$ D.8+R+D %.8+D 6 V#| A.~+. = @ @ $ ",
-" %$&$0#*$M#}#F#G#c#N#;#=$b b@b@ $.8+D C.7#-$| _ T . U = # m+= $ ",
-" ;$>$%$0#*$j#}#,$'$2#t#`#=$N@)$r@ I %.7#B.| | { z.. z+= $ & & z+= @ ",
-" !$~${$0#<#Q#]$l#v#^$w#/$($_$a@ ]#%.| { , . + ~ $ m+& h.l.=.Q+~ ",
-" !$:$E@<$[$Q#E#}$|$^$1$d#. q@q@ I Q -$0 0 *.$ - & 2$h.l.1.V . . ",
-" !$!$3$#<#4$k#|#b#m#5$V+6$ I %.# $ % & K#k.a+<.]+&.F , . ",
-" 7$8$9$T@0$a$<#Q#E#l#b#s#!.R@b$ #.c$$ & [.h.a+<.]+-.;.g.d$> ~+. ",
-" e$f$g$h$i$0#j$k$l$}#m$b#v.$#i# #.c$= !+a+<.<.-.V.C@H H n$b ] z. ",
-" o$p$q$h$E@#<#Y#k#r$#$$ X#s$ W +.{ ++-.&.m.F 3.H a :.b 9 _ { ",
-" t$u$v$g$h$i$a$0#*$r#,$F#2.W# B+]@V.F F H w$d$K x h 8 8 | { ",
-" x$y$z$A$B$C$D$E$F$G$H$t$v$g$h$E@#I$Q#}#|#V+J$ W R+t d$j a :.b 9 9 2 K$7 | A._ z., + U = j. ",
-" L$x$M$z$z$N$C$O$F$G$P$Q$R$S$%#E@0$0#<#Q#T$r$X@U$ C+c$:.n$K b y 9 U.V$W$j+/ x.| T T { . + 0 = ",
-" X$Y$Z$`$ %.%+%@%#%$%%%&%*%v$g$h$=%<#I$[#}#W#-% >.W y.b h 9 r 8 K$;%/ 4+) 3+>%d.6#2+b.Q.. z+ ",
-" ,%X$'%)% %!%~%@%{%$%]%^%Q$*%q$%#/%(%<#Q#E#_%:% <%W 9 8 8 < 7 7 / 4+f.' ' Y+d.c.b.w+Q.>+] . ",
-" [%}%Z$Z$|%1%2%+%3%#%$%4%Q$*%5%g$h$=%6%7%I$j#W#8% a.+@6+7 7 : 9%f.) w.' Y+d.c.,+p#Q.u.P.}+z.~+ ",
-" 0%a%,%X$x$x$b%z$A$B$c%]%^%d%e%f%g%3$U@j$Q#a@!$ J#B+/ / ! ) ) ^ ' ' d.6#h%i%D D 6 B.-$_ A+{ ",
-" j%0%k%X$L$l%x$m%z$n%B$O$%%o%*%v$g$p%E@#Q#(@!$ 8#I ) w.) >%x+d.q%c.c.,+r%%.R+D C.]@6 n+| E ",
-" z$s%]%^%Q$e%S$t%u%{$<$<#5 v% 9.6 N+N+d.d.q%6#h%b.r%Q.|+%.%. ",
-" z$n%w%x%y%d%v$g$h$E@#j.8$v% p C#$ d.S.c.2+,+b.i+Q.u.>+t.Q %. ",
-" m%z$$%]%^%Q$z%q$%#p%E@6%b.A%8$ {. .g.h%b.b.i+Q.Q.u.!@}+K+O.7@]# ",
-" x$y$B%w%4%y%*%v$S$h$E@C%D%p$p$ e f f.Q.M+v+>+P.E%}+F%O.G%N.#.7@ ",
-" X$x$x$H%I%^%Q$*%v$J%h$=%K%p$ L%..>+P.P.!@}+}+)@O.M%N.f+(.(.#. ",
-" x$x$N%$%]%&%O%P%Q%g$/%C%. u$p$ D+c j.}+g+;+O.G%4@N.f+R%J+<+C+6@ ",
-" X$l%{%S%$%T%U%Q$R$f%h$E@+#t$V% l l 5+M%W%z@N.($[+M.M.J+X%Y%9+j@ ",
-" }%X$3%Z%`%]%^%Q$*%v$g$h$E@t@t$o$ L l C+R%($M.M.<+h@L.L.Y%e+ &:+>.>. ",
-" 0%[%X$3%H%$%]%y%Q$z%v$J%h$7 .&t$ n.L g.L.L.L.I+,@*+*+*+3@+&J.2.5@5@ ",
-" @&X$+%#&$%$&^%y%Q$e%q$g$a$$#P$t$ %&n. .L.*+*+:+@#>@:+:+J.%+%+I.[ ^. ",
-" &&@&*&+%#%N%]%x%Q$*%R$g$h$9 =&-& ##%&F :+:+J.;&;&;&>&%+,&I.H.$+[ ]. ",
-" '&0%2%)&3%#%$%]%^%Q$*%v$g$J%s@G$t$ p+r+^.%+>&%+!&~&{&I.I.~#r.]+5 @@[ ",
-" '&&&^&2%/&Z%#%w%x%^%Q$z%v$g$L.F$G$ n@p+^ I.H.r.r.r.r.]&t+#+s+q.c+p 5 ",
-" (&_&1%:&<&3%[&`%}&]%&%Q$z%Q%S@. |&G$ T+X+# (+5#d+#+#+#+q.#+/+/+6.p.!.e f ",
-" 1&2& %1%2%+%3%Z%`%]%^%U%*%P%Q%3&X+4&G$ V+5&..7./+/+p.2@2@/+;@6.!.!.).).6&L%{. ",
-" 7&8&8&)% %^&2%+%9%$%}&T%Q$0&*%Q% #W#=&G$ =@a&L M.b&b&b&)#b&b&).b&).c&d&P P '.~.~. ",
-" e&f&7&g&h&i&j& %^&k&/&3%#%$%]%^%Q$d%*%q$#+G$|&F$ 9@_@V+M+c&'#6&'#` l&P P P Z Z '.y@m&o c c e f ",
-" n&n&o&p&f&q&r&s&t& %1%.%2%9&3%#%$%u&%%&%0&*%v$%+G$D$G$ t@v&=@i+P L@'.'.|@O y@,#O w&-@o -@Y }@A#x&c C y&e e ",
-" z&A&n&B&C&D&E&q&h&Z$F&G&1%2%~%)&{%#%$%]%T%H&I&z%J+W#|&G$ I@t@A@}+Y Y Y o Y Y Y Y Y Y K&A w@D%x&v@v@u@L&u@y&e e f ",
-" M&N&z&O&P&Q&R&S&E&T&g&g&U&1&V&W&X&+%{%Y&$%]%^%^%Q$e%v$ #X+4&G$G$ Z@I@I@o+{&K@K@K@Z&K@K@K@x&Z&D%`&v@v@v@o# *g# #>#f# #z#c e e ",
-" .*+*z&@*#*O&$*o&p&%*f&&*8&1&1&^&2%2%9%$%]%**^%Q$*%=*J&. E$G$-&t$ b@X@-*;*E.g#L&>*v@L&v@g#v@v@g#>* *u@u@,*'*b+%&n.E+L =$y#)*m@y& ",
-" .*.*!*~*{*n&]*o&^* g&U&/*(*2%<&/&3%#%$%$&**_*Q$*%5%:**+<*=&P$[*o$ a@b@b@}*L !@ #f# #4#|*,*u@4#4# #4#4# # #1*p+p+q+b+$@n.{#@+T#l D+m h.<.h. ",
-" .*+*!*2*3*n& 8&8&`$4*5*2%+%#%$%]%]%^%Q$O%*%v$g$8 6*G$t$t$t$ q#7*D@a@_@h )*y#S#=$=$=$=$=$J@J@J@I#=$=$y#n#S#:@H+ n.@+L L l $ a U.<. ",
-" 8*.*.*M& g&g&9* %1%0*2%+%3%#%H%a*]%^%H&Q$=*v$f%E@/ d@t$b*t$p$8$8$ X#$#L#R@_#q@##8 =$d#`#c*d*;#x#;#;#;#;#;#;#;#;#/$u#/$V+T+:@ @+L L . a 8 e* ",
-" f* g*U&9*h*i*!%k&9&j*#%B%a*]%4%y%Q$*%z%Q%g$%##+3 $$p$7$f$8$k*!$l*8%:%U$U$U$W#P#$#V+$ &m#s#2#w#w#5$t#5$t#d#m*Z#5$m*N#d#5$m*w#a&n*5& ^.D o* p*H 9 & 9 ",
-" g&q*8&r*^&5*2%+%@%#%#%$%u&x%^%Q$s*=*=*v$g$h$h$u@Q.; 5 =@t*W#u*$#G@o@^.& b.|@|#|##$b#'$b#v*v*s#s#R#R#s#w#m#m#m#c#m#w*m#_@=@=@ m E Q.x* | F b $ a [.F 8 ",
-" g&g&9*h*i*:&2%~%y*3%#%S%I%z*T%Q$Q$d%=*v$g$t%J%p%E@#0#+$<#*$A*j#E#E#}#}#}#}$|#|#F#v#b#b#b#b#b#B*'$b#b#v*b#B*b#v&9@p@ %.M.O+^. %.6 = & H K & $ C*|.D* E.D y+ ",
-" g&9*1& % %^&2%*&+%3%#%`%$%]%T%U%Q$I&*%R$v$g$3&g%E*E@i$<$a$0#7%I$=#Q#Q#M#E#E#E#}#}#}#}$l#|#,$}$|#|#|#|#|#|#m$t@t@9@ - *+H >.>.%.E.a 9 / 7 b H -.h.= . . = & h.-.6 6 H ",
-" g&F*U&1& %V&5*k&+%3%3%N%$%$%x%4%y%Q$0&z%v$g$g$g$h$u%E@C%C%a$0#0#j$<#k$=#Q#Q#j#E#E#G*E#}#T$T$}#T$H*}#}#Z@I*<*I@ 5 h%%+Q.c.d.}+Q.d.) 8 a F <.% . W.6 $.]#l@#.5 { ",
-" J*g&F*1& %4*^&2%<&+%3%#&`%$%]%T%^%Q$Q$*%P%P%v$q$S@%#h$/%E@=%a$(%0#0#<#<#<#A*=#Q#Q#Y#[#M#Q#j#[#[#Z@Z@K*I* c 7 #+%+*+N.P.b.T./ 9 a -.h.$ { D I W ^. .c c | ",
-" g&g&)%j& %^&:&L*+%3%3%#%$%$%u&x%^%^%Q$Q$P%e%v$g$g$g%h$u%h$E@{$=%=%(%0#+$[$<#*#<#<#=#<#I$A*}*X@Y@ X+W M*#+%+*+N.>+b.T./ 9 H -.K#= | X.#.>.g c L L #.i. ",
-" 7&g&Z$N*)% %V&.%2%*&+%3%O*Y&$%I%u&z*^%^%Q$O%*%z%v$v$f%S@h$h$h$p%E@E@E@U@6%U@<$0#a$0#:#0#b@X@ p+*.M.!.(+%+,@z@>+S.j+H h.& $ . . P*6 I ,.5 l n.p+p+5 Q+ ",
-" J*7&h&Q*Z$)% % %1%:&~%<&+%3%#%H%$%a*I%]%^%^%&%Q$d%*%*%R$v$g$g$t%%#g%h$T@/%E@/%C%E@{$=%0$=%V@b@ Z@ V+*.~#L@!.r.%+,@>+9 = I W W W I .@6 6 D#%.W [ l b+X+V+X+].$ ",
-" f&&*q&R*h&Z$S*`$ %4*^&2%2%+%3%3%#&N%Y&w%u&]%%%^%o%Q$Q$T**%e%v$v$q$q$g$g$g$h$%#h$h$h$p%/%u%/%3$a@)$ Z@D b+ D #+v@y@!.#++&/ | [ | R {+e L q+p+b+l W = F H F H ",
-" B&o&f&E&U*q&1&1&_&_&'&0%^&W&2%k&+%)&3%{%#%B%$%$&]%4%4%^%_*Q$s*I&*%=*5%R$v$v$Q%S$W#X#$#(#(#g$%#t%7*a@b@ C /+:+. ^.B+u.=$v@O !.>@H >. | %.e l n.L l e #.{ . . <.b ",
-" V*o&W*X*Y*g*g&1&9*Z*'&&&`*k%X$W&.%~%+%+%3% =#%N%$%$%w%]%T%^%^%^%U%Q$Q$O%d%u*.=U$ $W#X#$#$#R@v$v$v$+=a@a@ R@e O. #;#f#d#1*v@O I.& L 6 $.[ e c e [ >.#.%.$ F ",
-" 3*n&n&$*@=#=f&$= Z*'&%=[%X$X$&=x$L*k&/&@%#&3%#%H%B%a*}&]%4%**8$*=v%!$==:%%$U$ P#i#b$O%*%*%7*a@ 9@a b#b#d#=$v@).=.-= 6 %.^.g [ >.6@I | <. ",
-" M&z&;=>=O&$*o&,=J* 0%[%,%X$'=x$)=z$n%+%/&)% =G$P$t$t$!=~=8$*={=8% ]=$#Q$H&H&q@^=a@ %.|#b#w#S# #) /= (=%.`.W #.S+D | l. ",
-" .*.*_=:=~*<=o&e& X$x$x$M$)=N$2%+%+%D$|&G$.&t$V%p$ W#$#$#**]%T%q@a@ | }#|#2#;#I.C+ 6 D D X.6 | . h. ",
-" 8*[=.*}=|=:=3*<= b%z$^&^&2%C$E$ 6*]=$%$%$%q@q@_$ b@c.Q#1=s#/$H t@ 6 n+| { . E.& ",
-" 2=8*3=.*4=z&z&n& x$b% %(*^&5=B$ W#P#$#b$L#9#q#q@ V+Y Q#}#b#).[ | ~+. = m+h.h.<. ",
-" 2=6=7=.*M&z& &=x$)%j&h*N$8= W#W#6*$#9= ^.Q#<#E#0=Q.=@ D { & & U+-.-.m+ ",
-" 8*6=.*.* X$l%a=Z$Z$N$B$ U$W#W# :%H 0#0#Q#^$y+Z@ { <.-.m.H b h. ",
-" 8* X$X$q&h&b=z$n% U$*+g$<#w#R+ 6 y+H a h 8 -.= ",
-" 0%X$c=d=q&z$z$ $#e=b+$@#.=$:*E@0#w#5 %.F 9 r 7 O+b h.h.<.$ ",
-" 0%0%f=X*E&g=x$ -.v$g$h$0#^%*%h$w#l %.H 7 / ) ' c.d.h=/ h. ",
-" &&%=C&i=X*g=g= t@| | { b E#Q$g$E@w#e I b ) ' d.c.) C@g.F j= ",
-" Z*j%&&0%[%X$X$ p$r.^%R$h$}#>. I 7 c.h%p#v+a k= ",
-" 2&_&&&l=0%,%X$ p$m=]%Q$v$& } d.>+>+}+O.H ",
-" . *%^%*%g$b.W# $ }+O.N.R%L+# ",
-" l n=$%U%z%u@/@ [ 9 M.L.L.*+h+| ",
-" ~$v@#%]%Q$E@& p$ 6 O.:+:++&%+/ #. ",
-" V%` j*#%x%0&P V+ e 9 I.I.I.r.%+h. ",
-" t$o=2%3%$%**v$2 W# l = %+/+/+/+!.~&D ",
-" 8$ # %2%3%$%^%}#| p= Y.O.).).c&P P r.D ",
-" 1&X@c.^& %2%X&3%$%^% #W p$ 9+b.o B Y Y Y K@x@8 %.[ ",
-" f&%.*$E#7 q ) **+%{%$%^%=$. W# =@6 }+u@v@v@v@L&).:+%+!.O.#. ",
-" n&e y+q@1& x$'+2%+%O*$%^%<#) $@W# I@^+-.#+=$z# #1*=$u@=.[ [ q=& 5 ",
-" z&g& I@L@ %~%3%H%]%O%=$V$c b@R@ q@t@c <.:+;#w#N#d#d#d#w#c.c l ",
-" V+O 1%2%y*#%u&^%v$}##+c.<.{ { r=7 M.D%b#|#b#b#b#b#b#b#Q.e ",
-" *@O.]%!%+%O*$%4%Q$*%g$h$#0#7%:#=#Q#E#E#T$T$}#v@8 c ",
-" D$I.|%^&L*3%#%]%^%Q$*%v$g$h$T@E@#0#7%<#<#w#}.V+ ",
-" x$}+b=)%V&2%+%O*H%w%^%Q$*%z%v$g$g%h$E@E@s=K@p+ ",
-" 0%%+E#>%7 *+E#+%~%3%#%$%]%^%Q$Q$O%u@Q./ #+u@L ",
-" b+E@$ '& B$I@A+) v@t=#%3%Q#w##+9 6 p+W#u=l ).>+9@ ",
-" t$O :+t$ z$q@t@O <#.+v=Z@!$ <.b#>. ",
-" 1&F X+ t$}+s#a@ 9@& p+ ",
-" w=z& t$'@|#q@ R@ ",
-" D$N.E#R@ ",
-" z$= b.:% ",
-" z$G$ "};
diff --git a/src/Mod/Ship/Icons/DiscretizeIco.png b/src/Mod/Ship/Icons/DiscretizeIco.png
deleted file mode 100644
index bdba9aca0e..0000000000
Binary files a/src/Mod/Ship/Icons/DiscretizeIco.png and /dev/null differ
diff --git a/src/Mod/Ship/Icons/DiscretizeIco.xcf b/src/Mod/Ship/Icons/DiscretizeIco.xcf
deleted file mode 100644
index 676a395fb1..0000000000
Binary files a/src/Mod/Ship/Icons/DiscretizeIco.xcf and /dev/null differ
diff --git a/src/Mod/Ship/Icons/DiscretizeIco.xpm b/src/Mod/Ship/Icons/DiscretizeIco.xpm
deleted file mode 100644
index 9bff402e33..0000000000
--- a/src/Mod/Ship/Icons/DiscretizeIco.xpm
+++ /dev/null
@@ -1,2028 +0,0 @@
-/* XPM */
-static char * DiscretizeIco_xpm[] = {
-"128 128 1897 2",
-" c None",
-". c #9F6602",
-"+ c #9F6601",
-"@ c #A06602",
-"# c #9F6502",
-"$ c #A16702",
-"% c #A06701",
-"& c #A06700",
-"* c #A16703",
-"= c #9F6501",
-"- c #A26803",
-"; c #A16802",
-"> c #A16601",
-", c #A26905",
-"' c #A66E0E",
-") c #A76F0F",
-"! c #A36902",
-"~ c #A36802",
-"{ c #A26802",
-"] c #A26804",
-"^ c #A56D0B",
-"/ c #A77011",
-"( c #A77012",
-"_ c #A87212",
-": c #A26A07",
-"< c #A06601",
-"[ c #A56903",
-"} c #A46A04",
-"| c #A36803",
-"1 c #A56D0A",
-"2 c #A67010",
-"3 c #A77111",
-"4 c #A77010",
-"5 c #AA751A",
-"6 c #B38432",
-"7 c #A66F0F",
-"8 c #A06702",
-"9 c #A56902",
-"0 c #A36904",
-"a c #A46B08",
-"b c #A56E0F",
-"c c #A67011",
-"d c #AF7E28",
-"e c #BF9854",
-"f c #B1802B",
-"g c #A36B09",
-"h c #A66B03",
-"i c #A56A03",
-"j c #A46B06",
-"k c #A46E0D",
-"l c #A56E10",
-"m c #B1822E",
-"n c #CBAC74",
-"o c #C6A366",
-"p c #A16803",
-"q c #A66B04",
-"r c #A66B06",
-"s c #A56C0C",
-"t c #A46D10",
-"u c #A46D0F",
-"v c #A46E0F",
-"w c #A56F10",
-"x c #B78A3D",
-"y c #D3B889",
-"z c #D6BD91",
-"A c #BB9249",
-"B c #A46D0B",
-"C c #A16602",
-"D c #A86C04",
-"E c #A76C04",
-"F c #A76C03",
-"G c #A76C05",
-"H c #A46C0B",
-"I c #A36D0F",
-"J c #A36D10",
-"K c #A46E10",
-"L c #A56F0F",
-"M c #A77317",
-"N c #CCAC76",
-"O c #E1CFAF",
-"P c #DEC9A5",
-"Q c #D8C096",
-"R c #A97418",
-"S c #A16804",
-"T c #A96D05",
-"U c #A86D05",
-"V c #AA6D03",
-"W c #A56C09",
-"X c #A26D0F",
-"Y c #A26D10",
-"Z c #B07F2B",
-"` c #E9DCC5",
-" . c #E7D9C0",
-".. c #E6D7BC",
-"+. c #C9A86E",
-"@. c #A56E0D",
-"#. c #AA6D05",
-"$. c #A96D04",
-"%. c #A66C08",
-"&. c #A26B0E",
-"*. c #A16B10",
-"=. c #A16C0F",
-"-. c #A26C0F",
-";. c #C19D5D",
-">. c #EBDFCB",
-",. c #F3ECDF",
-"'. c #F0E7D7",
-"). c #E9DBC3",
-"!. c #B88D40",
-"~. c #A36A06",
-"{. c #AB6F06",
-"]. c #AB6E05",
-"^. c #AB6E04",
-"/. c #A86D07",
-"(. c #A26B0C",
-"_. c #A06B10",
-":. c #A16B0F",
-"<. c #B5893C",
-"[. c #E5D6BC",
-"}. c #F3EDE1",
-"|. c #FCFAF7",
-"1. c #F9F5EF",
-"2. c #ECE1CE",
-"3. c #B48636",
-"4. c #A76F10",
-"5. c #A36D0E",
-"6. c #AC7006",
-"7. c #AC6F05",
-"8. c #A96D07",
-"9. c #A36B0C",
-"0. c #9F6A0F",
-"a. c #A06A0F",
-"b. c #A16A0F",
-"c. c #A16A0E",
-"d. c #C6A56B",
-"e. c #E6D7BE",
-"f. c #EFE6D6",
-"g. c #F4EEE3",
-"h. c #A36E10",
-"i. c #BE8013",
-"j. c #B9790A",
-"k. c #9D6401",
-"l. c #AD7006",
-"m. c #AC6F06",
-"n. c #AD7005",
-"o. c #A46C0A",
-"p. c #9F6A0D",
-"q. c #9E6A0F",
-"r. c #9F6A0E",
-"s. c #A06B0E",
-"t. c #A16B0E",
-"u. c #B48639",
-"v. c #D4BA8F",
-"w. c #E0CEAF",
-"x. c #EDE3D1",
-"y. c #DAC59F",
-"z. c #A47217",
-"A. c #B77B12",
-"B. c #DF9616",
-"C. c #E69B17",
-"D. c #DB9315",
-"E. c #AE7107",
-"F. c #AE7106",
-"G. c #AD7007",
-"H. c #A66D09",
-"I. c #9F690E",
-"J. c #9D6A0F",
-"K. c #A06A0E",
-"L. c #A8761E",
-"M. c #C29E5F",
-"N. c #D3B88B",
-"O. c #DBC6A1",
-"P. c #D4BB8F",
-"Q. c #B1853A",
-"R. c #AD7310",
-"S. c #CC8913",
-"T. c #E09616",
-"U. c #4D3408",
-"V. c #A26E14",
-"W. c #EDA323",
-"X. c #C2800D",
-"Y. c #AE7206",
-"Z. c #AF7206",
-"`. c #B07106",
-" + c #A96E08",
-".+ c #9F6A0C",
-"++ c #9C690D",
-"@+ c #9E690D",
-"#+ c #9E6A0E",
-"$+ c #A7751D",
-"%+ c #B88E46",
-"&+ c #C4A165",
-"*+ c #C5A46A",
-"=+ c #B2863D",
-"-+ c #C58313",
-";+ c #DC9416",
-">+ c #DF9515",
-",+ c #EA9D17",
-"'+ c #875D10",
-")+ c #4E483D",
-"!+ c #F2C983",
-"~+ c #DE9516",
-"{+ c #A86C05",
-"]+ c #B07207",
-"^+ c #B07306",
-"/+ c #AC7007",
-"(+ c #A06A0B",
-"_+ c #9B670D",
-":+ c #9C680D",
-"<+ c #9D690D",
-"[+ c #9E680D",
-"}+ c #A7741D",
-"|+ c #B18435",
-"1+ c #AB7E2F",
-"2+ c #BC7E12",
-"3+ c #D89115",
-"4+ c #DE9415",
-"5+ c #DA9215",
-"6+ c #DC9316",
-"7+ c #E8A125",
-"8+ c #827C72",
-"9+ c #C8B694",
-"0+ c #EFA019",
-"a+ c #CC8710",
-"b+ c #9D6501",
-"c+ c #B17408",
-"d+ c #B17207",
-"e+ c #B27307",
-"f+ c #A26B0B",
-"g+ c #9A660D",
-"h+ c #9E6A0D",
-"i+ c #A27018",
-"j+ c #AB7F33",
-"k+ c #AC8035",
-"l+ c #A87927",
-"m+ c #A26D13",
-"n+ c #A06C12",
-"o+ c #9F6C10",
-"p+ c #B47911",
-"q+ c #D38E14",
-"r+ c #DD9416",
-"s+ c #DB9215",
-"t+ c #E29816",
-"u+ c #EAA32A",
-"v+ c #CFB07B",
-"w+ c #898988",
-"x+ c #E09717",
-"y+ c #D68E13",
-"z+ c #A26702",
-"A+ c #B27408",
-"B+ c #B37508",
-"C+ c #B17308",
-"D+ c #A66D0A",
-"E+ c #9B670C",
-"F+ c #9D670C",
-"G+ c #9D680D",
-"H+ c #9E690E",
-"I+ c #9E6B0E",
-"J+ c #A3721B",
-"K+ c #B6965C",
-"L+ c #C0A779",
-"M+ c #CDBDA4",
-"N+ c #AE843D",
-"O+ c #A77724",
-"P+ c #A26C11",
-"Q+ c #AC7410",
-"R+ c #DC9314",
-"S+ c #D99214",
-"T+ c #D99115",
-"U+ c #DC9315",
-"V+ c #D79015",
-"W+ c #432D06",
-"X+ c #CA8713",
-"Y+ c #F4AC2B",
-"Z+ c #422C05",
-"`+ c #8C5A05",
-" @ c #A86F0A",
-".@ c #9C670C",
-"+@ c #99660C",
-"@@ c #9C670D",
-"#@ c #9C680C",
-"$@ c #A57626",
-"%@ c #B79760",
-"&@ c #D2C9BB",
-"*@ c #CFC7B7",
-"=@ c #C2AC83",
-"-@ c #B38D4C",
-";@ c #A06B11",
-">@ c #9D680E",
-",@ c #C58312",
-"'@ c #DA9114",
-")@ c #D79014",
-"!@ c #D89014",
-"~@ c #D99114",
-"{@ c #D18C14",
-"]@ c #C28313",
-"^@ c #F3A317",
-"/@ c #4A3208",
-"(@ c #442E06",
-"_@ c #C9840D",
-":@ c #A36903",
-"<@ c #AD6F03",
-"[@ c #B47609",
-"}@ c #B57508",
-"|@ c #AD7009",
-"1@ c #9D670B",
-"2@ c #98640C",
-"3@ c #9A660C",
-"4@ c #A06D16",
-"5@ c #B69358",
-"6@ c #C7B89D",
-"7@ c #D8D7D5",
-"8@ c #D1CBC0",
-"9@ c #B39359",
-"0@ c #A16F16",
-"a@ c #9C680E",
-"b@ c #C38211",
-"c@ c #D69013",
-"d@ c #D68F13",
-"e@ c #D79013",
-"f@ c #E39815",
-"g@ c #E39816",
-"h@ c #79510C",
-"i@ c #140E03",
-"j@ c #EB9E17",
-"k@ c #C3810E",
-"l@ c #996303",
-"m@ c #B47608",
-"n@ c #B57608",
-"o@ c #B67709",
-"p@ c #B07309",
-"q@ c #97640C",
-"r@ c #99650C",
-"s@ c #A16F1C",
-"t@ c #C0A982",
-"u@ c #D2CCC1",
-"v@ c #D6D6D6",
-"w@ c #D4D3D2",
-"x@ c #AC8540",
-"y@ c #9B680E",
-"z@ c #9D690E",
-"A@ c #B47810",
-"B@ c #D38C13",
-"C@ c #895C0C",
-"D@ c #D08C13",
-"E@ c #D89114",
-"F@ c #D68F14",
-"G@ c #DA9214",
-"H@ c #D58E13",
-"I@ c #2A1C04",
-"J@ c #E19716",
-"K@ c #E29817",
-"L@ c #382402",
-"M@ c #A26A05",
-"N@ c #A16704",
-"O@ c #A76C06",
-"P@ c #B87709",
-"Q@ c #B47509",
-"R@ c #A36B0B",
-"S@ c #96630C",
-"T@ c #98650C",
-"U@ c #9B660C",
-"V@ c #A07220",
-"W@ c #BDA47A",
-"X@ c #D8D8D8",
-"Y@ c #D5D5D5",
-"Z@ c #D0CCC5",
-"`@ c #BCA37A",
-" # c #9E680E",
-".# c #9B680D",
-"+# c #AD730F",
-"@# c #CB8811",
-"## c #E29714",
-"$# c #372505",
-"%# c #513607",
-" c #E59914",
-"*# c #AE7510",
-"=# c #D38D13",
-"-# c #E89C15",
-";# c #181003",
-"># c #7C520A",
-",# c #BD7B09",
-"'# c #A86B03",
-")# c #AC6F04",
-"!# c #AC7618",
-"~# c #CDB58A",
-"{# c #B6780A",
-"]# c #B97809",
-"^# c #B67609",
-"/# c #A76E0A",
-"(# c #98640B",
-"_# c #95630C",
-":# c #9A670C",
-"<# c #BEAB8A",
-"[# c #D0CDC9",
-"}# c #C4B292",
-"|# c #A77B30",
-"1# c #99660D",
-"2# c #C58311",
-"3# c #D48E13",
-"4# c #D89013",
-"5# c #C38212",
-"6# c #000000",
-"7# c #BD7F11",
-"8# c #E59915",
-"9# c #3C2805",
-"0# c #483007",
-"a# c #EA9C15",
-"b# c #AB7009",
-"c# c #EAEAEA",
-"d# c #B8780A",
-"e# c #B87809",
-"f# c #B97909",
-"g# c #AC710A",
-"h# c #99660B",
-"i# c #94620B",
-"j# c #96630B",
-"k# c #97640B",
-"l# c #9E6C15",
-"m# c #B1925B",
-"n# c #D4D4D4",
-"o# c #D3D3D4",
-"p# c #D7D7D7",
-"q# c #B99D6E",
-"r# c #A16E14",
-"s# c #BC7E10",
-"t# c #D38C12",
-"u# c #D58E12",
-"v# c #D28C12",
-"w# c #D38D12",
-"x# c #E39714",
-"y# c #604009",
-"z# c #362405",
-"A# c #EC9D16",
-"B# c #C68412",
-"C# c #4D3202",
-"D# c #A46A03",
-"E# c #A76B04",
-"F# c #E9EAEA",
-"G# c #BA790A",
-"H# c #BA7A0A",
-"I# c #B0740A",
-"J# c #9C670B",
-"K# c #93620B",
-"L# c #94620A",
-"M# c #96640B",
-"N# c #B2935C",
-"O# c #D1CEC6",
-"P# c #D3D2D2",
-"Q# c #D1D1D0",
-"R# c #D2D3D3",
-"S# c #CCC4B5",
-"T# c #BC8B35",
-"U# c #CF8A11",
-"V# c #D48D12",
-"W# c #D18B12",
-"X# c #D08B12",
-"Y# c #8F5F0C",
-"Z# c #DE9414",
-"`# c #D58E14",
-" $ c #000001",
-".$ c #A66D0B",
-"+$ c #B17307",
-"@$ c #AF7105",
-"#$ c #AA6E05",
-"$$ c #EBEBEB",
-"%$ c #ECECEC",
-"&$ c #BA790B",
-"*$ c #BC7B0A",
-"=$ c #B5770A",
-"-$ c #A06A0A",
-";$ c #93600B",
-">$ c #93610A",
-",$ c #95630A",
-"'$ c #95630B",
-")$ c #AC8643",
-"!$ c #CEC7B8",
-"~$ c #D4D3D4",
-"{$ c #C8C8C9",
-"]$ c #CCCCCC",
-"^$ c #D3B683",
-"/$ c #D48F18",
-"($ c #DE9413",
-"_$ c #070501",
-":$ c #80550C",
-"<$ c #E09412",
-"[$ c #A26907",
-"}$ c #B47405",
-"|$ c #E7E7E8",
-"1$ c #BB7B0B",
-"2$ c #BA7B0A",
-"3$ c #BD7C0A",
-"4$ c #B97A0A",
-"5$ c #A56C0A",
-"6$ c #94610A",
-"7$ c #92600A",
-"8$ c #95620A",
-"9$ c #95620B",
-"0$ c #96640C",
-"a$ c #9C6C16",
-"b$ c #BDA67D",
-"c$ c #D0D0CB",
-"d$ c #CDCDCD",
-"e$ c #C2C1C3",
-"f$ c #D2D2D1",
-"g$ c #D6D6D5",
-"h$ c #D4A95E",
-"i$ c #CE8C19",
-"j$ c #D18C12",
-"k$ c #D28D12",
-"l$ c #5E3F08",
-"m$ c #F0A115",
-"n$ c #764C04",
-"o$ c #AA6E04",
-"p$ c #A96E05",
-"q$ c #E7E7E7",
-"r$ c #E8E8E8",
-"s$ c #BB7C0B",
-"t$ c #BD7C0B",
-"u$ c #BC7B0B",
-"v$ c #AA700A",
-"w$ c #956209",
-"x$ c #905F0A",
-"y$ c #946109",
-"z$ c #A57C36",
-"A$ c #C1B298",
-"B$ c #D0D0D0",
-"C$ c #C8C8C8",
-"D$ c #C1C1C1",
-"E$ c #CFCFCF",
-"F$ c #D6D0C9",
-"G$ c #D3A24E",
-"H$ c #CD8911",
-"I$ c #C88611",
-"J$ c #7F550B",
-"K$ c #E69A13",
-"L$ c #B27710",
-"M$ c #050300",
-"N$ c #B8790C",
-"O$ c #AD6F06",
-"P$ c #B37406",
-"Q$ c #AC7005",
-"R$ c #BC7C0B",
-"S$ c #BE7C0B",
-"T$ c #BF7D0B",
-"U$ c #B0730A",
-"V$ c #986409",
-"W$ c #8F5F09",
-"X$ c #91610A",
-"Y$ c #95640B",
-"Z$ c #98650B",
-"`$ c #94620C",
-" % c #BCA580",
-".% c #D2CEC8",
-"+% c #CECECE",
-"@% c #C0C0C0",
-"#% c #C0C1C1",
-"$% c #D0D0CF",
-"%% c #D7CAB6",
-"&% c #D6A54F",
-"*% c #D08B11",
-"=% c #D68F12",
-"-% c #C78411",
-";% c #AE750F",
-">% c #D08A0F",
-",% c #A86D06",
-"'% c #B47506",
-")% c #AC7106",
-"!% c #E8E8E7",
-"~% c #E9E9E9",
-"{% c #C07E0C",
-"]% c #B5770B",
-"^% c #9C670A",
-"/% c #8F5E09",
-"(% c #915F09",
-"_% c #926009",
-":% c #936109",
-"<% c #92610A",
-"[% c #96630A",
-"}% c #97630B",
-"|% c #AE7714",
-"1% c #D2C2A8",
-"2% c #C8C7C7",
-"3% c #BDBDBD",
-"4% c #BEBDBE",
-"5% c #D0CFCF",
-"6% c #D5D2CC",
-"7% c #D19C3F",
-"8% c #221703",
-"9% c #8E5F0C",
-"0% c #EB9D14",
-"a% c #7C5208",
-"b% c #9B6407",
-"c% c #AD7106",
-"d% c #BF7E0C",
-"e% c #C2800C",
-"f% c #BB7A0B",
-"g% c #A26A0A",
-"h% c #8E5D09",
-"i% c #925F09",
-"j% c #926109",
-"k% c #A66E0C",
-"l% c #CF9A3C",
-"m% c #D1C7B6",
-"n% c #D0CFD0",
-"o% c #C6C5C5",
-"p% c #BCBBBB",
-"q% c #BDBCBB",
-"r% c #CECECD",
-"s% c #D4D5D5",
-"t% c #E4AB48",
-"u% c #81560B",
-"v% c #2D1E03",
-"w% c #B47507",
-"x% c #AF7207",
-"y% c #ECEBEB",
-"z% c #C07E0D",
-"A% c #BF7D0C",
-"B% c #A86F0B",
-"C% c #905E09",
-"D% c #8C5C09",
-"E% c #905F09",
-"F% c #94610B",
-"G% c #91610B",
-"H% c #9E6A0C",
-"I% c #BC7D0E",
-"J% c #CC870F",
-"K% c #CB870F",
-"L% c #CFAA69",
-"M% c #D2CFC9",
-"N% c #CBCBCB",
-"O% c #C0BFC0",
-"P% c #BAB9B9",
-"Q% c #BEBEBE",
-"R% c #CDCECD",
-"S% c #C9C9C9",
-"T% c #D0AA69",
-"U% c #C17F0C",
-"V% c #B37407",
-"W% c #E8E9E8",
-"X% c #E7E8E7",
-"Y% c #EBEAEB",
-"Z% c #C3800D",
-"`% c #C3800C",
-" & c #AF730B",
-".& c #8B5C09",
-"+& c #8E5E09",
-"@& c #916009",
-"#& c #91600A",
-"$& c #99660A",
-"%& c #B5770E",
-"&& c #C9850F",
-"*& c #CA860F",
-"=& c #D2B88A",
-"-& c #D1CFCB",
-";& c #CACACB",
-">& c #BEBEBD",
-",& c #B9BABA",
-"'& c #CACBCB",
-")& c #D3D3D3",
-"!& c #C5A672",
-"~& c #B07307",
-"{& c #E6E6E6",
-"]& c #DDDEDD",
-"^& c #DEDDDE",
-"/& c #C27F0D",
-"(& c #C5810D",
-"_& c #B6780C",
-":& c #98640A",
-"<& c #8A5B09",
-"[& c #8D5C08",
-"}& c #915F0A",
-"|& c #95610A",
-"1& c #AE730C",
-"2& c #C7830E",
-"3& c #CA850F",
-"4& c #C7840F",
-"5& c #C8850F",
-"6& c #C9891C",
-"7& c #D0B586",
-"8& c #D1D1D1",
-"9& c #C7C7C7",
-"0& c #BCBCBB",
-"a& c #BABBBA",
-"b& c #B8B8B8",
-"c& c #C4C4C4",
-"d& c #D6CEC1",
-"e& c #BB8B34",
-"f& c #DDDCDD",
-"g& c #C3810D",
-"h& c #C3800E",
-"i& c #C6830D",
-"j& c #BC7B0C",
-"k& c #9D6709",
-"l& c #8A5B08",
-"m& c #8B5B08",
-"n& c #8D5D09",
-"o& c #8E5E08",
-"p& c #8F5E08",
-"q& c #AD720C",
-"r& c #C6820E",
-"s& c #CE880F",
-"t& c #C6830E",
-"u& c #C7840E",
-"v& c #D28C10",
-"w& c #B98323",
-"x& c #D6BB8B",
-"y& c #B9BAB9",
-"z& c #B9B9B9",
-"A& c #BFBFBF",
-"B& c #D5D4D1",
-"C& c #E2E3E1",
-"D& c #B3B3B3",
-"E& c #E8E8E9",
-"F& c #C4810E",
-"G& c #C3820D",
-"H& c #C7830D",
-"I& c #C17F0D",
-"J& c #895A07",
-"K& c #8D5D08",
-"L& c #8E5D08",
-"M& c #906009",
-"N& c #9E690A",
-"O& c #BB7B0D",
-"P& c #C1800E",
-"Q& c #2A1B03",
-"R& c #BE7E0D",
-"S& c #C9850E",
-"T& c #CD880F",
-"U& c #CB860F",
-"V& c #080808",
-"W& c #D1C0A2",
-"X& c #CFCFCE",
-"Y& c #C4C3C4",
-"Z& c #BABABA",
-"`& c #B9B9B8",
-" * c #B8B7B7",
-".* c #C9CAC9",
-"+* c #D7D8D7",
-"@* c #DCDCDC",
-"#* c #E9EAE9",
-"$* c #E4E5E5",
-"%* c #CBCBCA",
-"&* c #ADADAD",
-"** c #D2D1D2",
-"=* c #EBEBEC",
-"-* c #C4820E",
-";* c #C5820E",
-">* c #AB710B",
-",* c #8E5D07",
-"'* c #885907",
-")* c #8C5C07",
-"!* c #8C5C08",
-"~* c #B5780C",
-"{* c #D38C0E",
-"]* c #3B2704",
-"^* c #4A3105",
-"/* c #D38B0F",
-"(* c #503406",
-"_* c #C07F0E",
-":* c #D99010",
-"<* c #35270E",
-"[* c #C1B39B",
-"}* c #CFD0D0",
-"|* c #B8B9B9",
-"1* c #B7B7B7",
-"2* c #B5B6B6",
-"3* c #BEBFBF",
-"4* c #D7D8D8",
-"5* c #E7E7E6",
-"6* c #DFE0E0",
-"7* c #B1B1B1",
-"8* c #A6A5A5",
-"9* c #C5830F",
-"0* c #B4760C",
-"a* c #936008",
-"b* c #875806",
-"c* c #8A5A07",
-"d* c #8C5B07",
-"e* c #8C5B08",
-"f* c #8F5D09",
-"g* c #936009",
-"h* c #AE720B",
-"i* c #C7850E",
-"j* c #B8790D",
-"k* c #010000",
-"l* c #AB720C",
-"m* c #D9900F",
-"n* c #312004",
-"o* c #472F06",
-"p* c #CC870E",
-"q* c #B9801B",
-"r* c #CDB487",
-"s* c #C5C4C4",
-"t* c #B6B5B6",
-"u* c #C6C7C6",
-"v* c #E4E4E3",
-"w* c #C1C2C2",
-"x* c #969797",
-"y* c #A3A3A3",
-"z* c #DDDDDE",
-"A* c #BC7B0D",
-"B* c #865706",
-"C* c #8B5B07",
-"D* c #8A5B07",
-"E* c #8D5C09",
-"F* c #C07F0D",
-"G* c #C5820D",
-"H* c #C1800D",
-"I* c #CC860E",
-"J* c #D58C0F",
-"K* c #5D3D06",
-"L* c #291C03",
-"M* c #D78E0F",
-"N* c #B9790C",
-"O* c #9F6808",
-"P* c #B87909",
-"Q* c #B6770A",
-"R* c #C9B38E",
-"S* c #D1D2D1",
-"T* c #C6C7C7",
-"U* c #B6B7B7",
-"V* c #B5B5B5",
-"W* c #B3B3B2",
-"X* c #B6B5B5",
-"Y* c #C8C6C8",
-"Z* c #D7D7D8",
-"`* c #E5E5E5",
-" = c #D0D1D0",
-".= c #9A9B9B",
-"+= c #949494",
-"@= c #AEAEAE",
-"#= c #E5E6E6",
-"$= c #C9840F",
-"%= c #C2800E",
-"&= c #A06909",
-"*= c #865806",
-"== c #895A06",
-"-= c #895B07",
-";= c #9F680A",
-">= c #BB7C0D",
-",= c #C4810D",
-"'= c #C4820D",
-")= c #B3760C",
-"!= c #3A2604",
-"~= c #CF880E",
-"{= c #281A02",
-"]= c #BB7B0A",
-"^= c #B8790A",
-"/= c #CECECF",
-"(= c #BBBBBB",
-"_= c #B6B6B6",
-":= c #B4B3B3",
-"<= c #B2B1B2",
-"[= c #B6B6B7",
-"}= c #CAC9CA",
-"|= c #D8D7D7",
-"1= c #E3E3E3",
-"2= c #A4A4A4",
-"3= c #939393",
-"4= c #979797",
-"5= c #E6E5E5",
-"6= c #CC8810",
-"7= c #C8840F",
-"8= c #A86E0B",
-"9= c #895906",
-"0= c #855605",
-"a= c #895907",
-"b= c #8B5A07",
-"c= c #B4760B",
-"d= c #C27F0C",
-"e= c #C07F0C",
-"f= c #CE870E",
-"g= c #060401",
-"h= c #C6830C",
-"i= c #C17E0A",
-"j= c #BBBCBB",
-"k= c #B4B4B5",
-"l= c #B3B2B2",
-"m= c #AFAFAF",
-"n= c #D9D8D8",
-"o= c #D9D9D9",
-"p= c #DEDDDD",
-"q= c #E7E6E7",
-"r= c #E5E5E4",
-"s= c #E2E2E2",
-"t= c #D3D4D4",
-"u= c #9F9F9F",
-"v= c #999898",
-"w= c #969696",
-"x= c #9B9B9C",
-"y= c #D2D2D2",
-"z= c #EBEAEA",
-"A= c #CA8610",
-"B= c #CD8710",
-"C= c #CC880F",
-"D= c #B0750C",
-"E= c #835505",
-"F= c #885906",
-"G= c #8A5A06",
-"H= c #8C5D08",
-"I= c #8B5B09",
-"J= c #946108",
-"K= c #B0740B",
-"L= c #BE7D0C",
-"M= c #CD870D",
-"N= c #CA850E",
-"O= c #4D3205",
-"P= c #D88E0F",
-"Q= c #B9790B",
-"R= c #CFCECF",
-"S= c #B4B4B4",
-"T= c #B2B2B2",
-"U= c #ADADAE",
-"V= c #BFBFC0",
-"W= c #DDDEDE",
-"X= c #DEDEDE",
-"Y= c #E4E4E5",
-"Z= c #DADADB",
-"`= c #C7C7C6",
-" - c #A9A7A8",
-".- c #949394",
-"+- c #9A9999",
-"@- c #979798",
-"#- c #A4A4A5",
-"$- c #D6D7D7",
-"%- c #EAEAE9",
-"&- c #CB8710",
-"*- c #CE8911",
-"=- c #B97A0D",
-"-- c #825505",
-";- c #855706",
-">- c #885806",
-",- c #8A5B06",
-"'- c #8D5C07",
-")- c #895A08",
-"!- c #744C07",
-"~- c #C9850C",
-"{- c #432C05",
-"]- c #D68D0E",
-"^- c #462E04",
-"/- c #B97A0B",
-"(- c #BC7C0A",
-"_- c #BFBFBE",
-":- c #B7B7B6",
-"<- c #B5B4B4",
-"[- c #B2B3B2",
-"}- c #B0B0B0",
-"|- c #CACACA",
-"1- c #DBDBDB",
-"2- c #DEDFDF",
-"3- c #DFDFDF",
-"4- c #DEDEDF",
-"5- c #E0E1E1",
-"6- c #E1E2E2",
-"7- c #E0DFDF",
-"8- c #E4E3E3",
-"9- c #DEDEDD",
-"0- c #CBCDCC",
-"a- c #B7B8B7",
-"b- c #A2A2A2",
-"c- c #989898",
-"d- c #999999",
-"e- c #CD8810",
-"f- c #D08A11",
-"g- c #C2800F",
-"h- c #9A6508",
-"i- c #825506",
-"j- c #835606",
-"k- c #895806",
-"l- c #8A5A08",
-"m- c #9E6809",
-"n- c #BF7E0B",
-"o- c #C17F0B",
-"p- c #010100",
-"q- c #845608",
-"r- c #C7830C",
-"s- c #C3810C",
-"t- c #CB860D",
-"u- c #C5810C",
-"v- c #C2C1C1",
-"w- c #B4B5B4",
-"x- c #B3B3B4",
-"y- c #B1B2B1",
-"z- c #B1B1B0",
-"A- c #ABABAB",
-"B- c #AAAAAA",
-"C- c #B6B6B5",
-"D- c #D3D4D3",
-"E- c #D5D6D5",
-"F- c #CECFCE",
-"G- c #C4C4C3",
-"H- c #A0A0A0",
-"I- c #9E9E9D",
-"J- c #9A999A",
-"K- c #9A9A9A",
-"L- c #999899",
-"M- c #949495",
-"N- c #A8A8A8",
-"O- c #CD8811",
-"P- c #D18B11",
-"Q- c #C98610",
-"R- c #A36B0A",
-"S- c #825305",
-"T- c #986308",
-"U- c #B3750A",
-"V- c #BE7D0A",
-"W- c #7E5308",
-"X- c #110B01",
-"Y- c #C4800B",
-"Z- c #7F5308",
-"`- c #D38B0D",
-" ; c #C6820C",
-".; c #BD7C0C",
-"+; c #C3C3C3",
-"@; c #B6B7B6",
-"#; c #B5B5B6",
-"$; c #ACACAD",
-"%; c #AAABAB",
-"&; c #A9A9A9",
-"*; c #A9A9A8",
-"=; c #ABAAAA",
-"-; c #B0AFAF",
-";; c #ACABAB",
-">; c #A0A09F",
-",; c #A2A2A1",
-"'; c #9D9D9D",
-"); c #9C9C9C",
-"!; c #9B9B9B",
-"~; c #9A9A99",
-"{; c #989897",
-"]; c #E1E1E0",
-"^; c #AC720C",
-"/; c #875705",
-"(; c #805204",
-"_; c #865605",
-":; c #926007",
-"<; c #AC7109",
-"[; c #BB7A0A",
-"}; c #BD7B0B",
-"|; c #C7820D",
-"1; c #201502",
-"2; c #684506",
-"3; c #D78D0D",
-"4; c #835608",
-"5; c #754D07",
-"6; c #BD7D0C",
-"7; c #C2C3C2",
-"8; c #B8B9B8",
-"9; c #B0AFB0",
-"0; c #AFAEAF",
-"a; c #ADAEAE",
-"b; c #ACADAD",
-"c; c #A9A8A9",
-"d; c #A6A6A6",
-"e; c #A5A5A5",
-"f; c #A0A0A1",
-"g; c #A3A3A2",
-"h; c #9E9D9D",
-"i; c #9E9E9E",
-"j; c #9D9E9D",
-"k; c #9D9C9B",
-"l; c #989998",
-"m; c #969697",
-"n; c #D3D3D2",
-"o; c #EDEDEC",
-"p; c #CF8911",
-"q; c #B7790D",
-"r; c #8C5B06",
-"s; c #7E5103",
-"t; c #825405",
-"u; c #845505",
-"v; c #855606",
-"w; c #845708",
-"x; c #D1890C",
-"y; c #CA850D",
-"z; c #C6C6C6",
-"A; c #B0B1B0",
-"B; c #ADADAC",
-"C; c #ABACAC",
-"D; c #A6A7A7",
-"E; c #A6A7A6",
-"F; c #A2A2A3",
-"G; c #A1A1A1",
-"H; c #9E9E9F",
-"I; c #9D9D9E",
-"J; c #9C9D9C",
-"K; c #9B9C9B",
-"L; c #9A9B9A",
-"M; c #959695",
-"N; c #9F9FA0",
-"O; c #CDCCCD",
-"P; c #EAEBEA",
-"Q; c #D28B12",
-"R; c #D58D12",
-"S; c #C07F0F",
-"T; c #946107",
-"U; c #7E5203",
-"V; c #815304",
-"W; c #835504",
-"X; c #845506",
-"Y; c #9E6808",
-"Z; c #BE7D0B",
-"`; c #C07E0B",
-" > c #AC7209",
-".> c #CA850C",
-"+> c #B1750C",
-"@> c #CBCCCB",
-"#> c #CDCDCC",
-"$> c #B8B7B8",
-"%> c #B4B3B5",
-"&> c #B2B3B3",
-"*> c #B1B0B1",
-"=> c #AEAEAD",
-"-> c #ACACAC",
-";> c #ACACAB",
-">> c #AAA9A9",
-",> c #A9A8A8",
-"'> c #A5A4A5",
-")> c #A2A1A1",
-"!> c #A1A0A0",
-"~> c #9A9B9C",
-"{> c #9F9F9E",
-"]> c #E5E5E6",
-"^> c #E6E7E6",
-"/> c #9D6708",
-"(> c #7F5203",
-"_> c #7E5204",
-":> c #845605",
-"<> c #986307",
-"[> c #B27409",
-"}> c #BA7A09",
-"|> c #B7780A",
-"1> c #BD7B0A",
-"2> c #261902",
-"3> c #D1890B",
-"4> c #674406",
-"5> c #A16A0B",
-"6> c #C1800C",
-"7> c #CCCDCD",
-"8> c #B7B7B8",
-"9> c #AFB0AF",
-"0> c #AEAEAF",
-"a> c #ACADAC",
-"b> c #AAA9AA",
-"c> c #A8A7A7",
-"d> c #A7A7A7",
-"e> c #A3A4A4",
-"f> c #A2A3A2",
-"g> c #A2A0A0",
-"h> c #A09F9F",
-"i> c #9C9D9D",
-"j> c #AEADAD",
-"k> c #D18C13",
-"l> c #A66E0A",
-"m> c #815404",
-"n> c #7C5003",
-"o> c #825404",
-"p> c #845606",
-"q> c #915E06",
-"r> c #B77709",
-"s> c #A86D08",
-"t> c #B7770A",
-"u> c #B77809",
-"v> c #A26A09",
-"w> c #624005",
-"x> c #2B1C03",
-"y> c #CA860E",
-"z> c #C8C9C8",
-"A> c #BCBCBC",
-"B> c #ADACAC",
-"C> c #ACACAA",
-"D> c #A9A9AA",
-"E> c #A7A6A6",
-"F> c #A5A5A4",
-"G> c #A4A4A3",
-"H> c #9D9D9C",
-"I> c #9B9C9C",
-"J> c #9FA0A0",
-"K> c #BBBCBC",
-"L> c #D28C13",
-"M> c #D78F13",
-"N> c #B2750C",
-"O> c #855604",
-"P> c #7A4F03",
-"Q> c #805304",
-"R> c #815303",
-"S> c #855506",
-"T> c #865606",
-"U> c #835506",
-"V> c #A56C07",
-"W> c #B77708",
-"X> c #A56C08",
-"Y> c #AD7109",
-"Z> c #C07E09",
-"`> c #B37509",
-" , c #C4800A",
-"., c #845607",
-"+, c #C8840E",
-"@, c #B7B8B8",
-"#, c #B1B0B0",
-"$, c #AEAFAF",
-"%, c #ACABAC",
-"&, c #A9AAAA",
-"*, c #A7A7A6",
-"=, c #A4A5A5",
-"-, c #A4A3A3",
-";, c #A1A1A0",
-">, c #A0A1A1",
-",, c #9E9F9F",
-"', c #9D9C9C",
-"), c #CDCECE",
-"!, c #E4E4E4",
-"~, c #E7E8E8",
-"{, c #D48D13",
-"], c #BD7D0E",
-"^, c #8D5C05",
-"/, c #7A4E02",
-"(, c #7E5104",
-"_, c #805303",
-":, c #805403",
-"<, c #875805",
-"[, c #9F6707",
-"}, c #B47508",
-"|, c #C27F0A",
-"1, c #3E2803",
-"2, c #412A03",
-"3, c #C2800A",
-"4, c #AA6F08",
-"5, c #080500",
-"6, c #C6820A",
-"7, c #654307",
-"8, c #BEBEBF",
-"9, c #B4B4B3",
-"0, c #AFB0B0",
-"a, c #ABABAC",
-"b, c #A9AAA9",
-"c, c #A2A3A3",
-"d, c #E1E1E2",
-"e, c #E6E5E6",
-"f, c #D58F13",
-"g, c #DB9214",
-"h, c #966207",
-"i, c #7A4F02",
-"j, c #7C5002",
-"k, c #805203",
-"l, c #815203",
-"m, c #815405",
-"n, c #835405",
-"o, c #976306",
-"p, c #B07208",
-"q, c #B67608",
-"r, c #B37408",
-"s, c #B37409",
-"t, c #B67708",
-"u, c #AC6F08",
-"v, c #9B6508",
-"w, c #CA840A",
-"x, c #362202",
-"y, c #634206",
-"z, c #B2B2B1",
-"A, c #B0B0B1",
-"B, c #A7A6A7",
-"C, c #C9C9CA",
-"D, c #C2C2C2",
-"E, c #C7C7C8",
-"F, c #E2E2E1",
-"G, c #E4E5E4",
-"H, c #A16A09",
-"I, c #7B4F03",
-"J, c #794E02",
-"K, c #835404",
-"L, c #815305",
-"M, c #915D06",
-"N, c #AA7007",
-"O, c #B27508",
-"P, c #BF7D09",
-"Q, c #C88209",
-"R, c #563804",
-"S, c #1C1201",
-"T, c #D28C0F",
-"U, c #C7C8C7",
-"V, c #BABAB9",
-"W, c #B9B8B9",
-"X, c #B5B5B4",
-"Y, c #AFAEAE",
-"Z, c #AAAAA9",
-"`, c #A3A3A4",
-" ' c #E0E0E0",
-".' c #DADADA",
-"+' c #D78F14",
-"@' c #AC710C",
-"#' c #774C02",
-"$' c #7D5003",
-"%' c #7F5103",
-"&' c #805305",
-"*' c #8B5A05",
-"=' c #B27308",
-"-' c #B77808",
-";' c #0C0800",
-">' c #BB7A09",
-",' c #7C5209",
-"'' c #C9860F",
-")' c #C6830F",
-"!' c #ADACAD",
-"~' c #D9D9D8",
-"{' c #DDDCDC",
-"]' c #E1E1E1",
-"^' c #B6780E",
-"/' c #754B01",
-"(' c #7D5103",
-"_' c #865704",
-":' c #9E6606",
-"<' c #593904",
-"[' c #BD7A08",
-"}' c #191001",
-"|' c #CD8910",
-"1' c #C5C5C5",
-"2' c #C2C3C3",
-"3' c #B7B6B6",
-"4' c #A8A9A9",
-"5' c #C48310",
-"6' c #8E5C06",
-"7' c #754A01",
-"8' c #7C4F03",
-"9' c #815403",
-"0' c #7F5104",
-"a' c #A16906",
-"b' c #AB6F07",
-"c' c #C07D08",
-"d' c #1E1301",
-"e' c #482F02",
-"f' c #C8830B",
-"g' c #C3820E",
-"h' c #D78F10",
-"i' c #C5C5C6",
-"j' c #BDBEBD",
-"k' c #BBBABB",
-"l' c #B1B2B2",
-"m' c #A4A5A4",
-"n' c #DADAD9",
-"o' c #724800",
-"p' c #764C01",
-"q' c #915D05",
-"r' c #966105",
-"s' c #2E1E02",
-"t' c #B87806",
-"u' c #B57507",
-"v' c #583904",
-"w' c #281A01",
-"x' c #C17E07",
-"y' c #A76D09",
-"z' c #A16B0D",
-"A' c #C98510",
-"B' c #C4C5C4",
-"C' c #C3C3C2",
-"D' c #BABBBB",
-"E' c #BAB9BA",
-"F' c #B3B4B3",
-"G' c #A7A8A7",
-"H' c #DA9314",
-"I' c #DE9515",
-"J' c #C38210",
-"K' c #754C01",
-"L' c #7B4F02",
-"M' c #7C4F02",
-"N' c #7C5103",
-"O' c #7D5104",
-"P' c #8A5A04",
-"Q' c #A36A05",
-"R' c #AF7106",
-"S' c #B27306",
-"T' c #0A0700",
-"U' c #764D04",
-"V' c #B77607",
-"W' c #472E03",
-"X' c #BC7907",
-"Y' c #A96D06",
-"Z' c #191002",
-"`' c #B87A0D",
-" ) c #CB8610",
-".) c #BBBBBC",
-"+) c #BBBABA",
-"@) c #B3B4B4",
-"#) c #B2B1B1",
-"$) c #D5D5D4",
-"%) c #986408",
-"&) c #845503",
-"*) c #9D6605",
-"=) c #B57606",
-"-) c #774D04",
-";) c #0E0900",
-">) c #B27406",
-",) c #794E05",
-"') c #C9840C",
-")) c #D68E11",
-"!) c #C3C4C3",
-"~) c #C3C2C3",
-"{) c #C0BFBF",
-"]) c #B7B6B7",
-"^) c #B0B0AF",
-"/) c #AEAFAE",
-"() c #ABACAB",
-"_) c #CF8A13",
-":) c #784D02",
-"<) c #7E5003",
-"[) c #976104",
-"}) c #B67606",
-"|) c #B77706",
-"1) c #201501",
-"2) c #563803",
-"3) c #C37E07",
-"4) c #9C6609",
-"5) c #C48210",
-"6) c #C2C2C1",
-"7) c #BCBCBD",
-"8) c #B8B9B7",
-"9) c #B4B3B4",
-"0) c #B0B1B1",
-"a) c #734900",
-"b) c #905D04",
-"c) c #AB6F05",
-"d) c #845604",
-"e) c #4E3303",
-"f) c #BF7C06",
-"g) c #8A5903",
-"h) c #CE8810",
-"i) c #C0C0BF",
-"j) c #B8B8B7",
-"k) c #B4B5B5",
-"l) c #B3B2B3",
-"m) c #7E5102",
-"n) c #784E01",
-"o) c #7B4E02",
-"p) c #A26904",
-"q) c #AF7205",
-"r) c #8F5D04",
-"s) c #B67605",
-"t) c #9C6505",
-"u) c #A16807",
-"v) c #D99112",
-"w) c #CE8A12",
-"x) c #D6D7D6",
-"y) c #B40202",
-"z) c #A50303",
-"A) c #970303",
-"B) c #B2760D",
-"C) c #724900",
-"D) c #794F02",
-"E) c #794D03",
-"F) c #875703",
-"G) c #9C6404",
-"H) c #A86B05",
-"I) c #B47305",
-"J) c #A96E04",
-"K) c #C07C07",
-"L) c #BFC0C0",
-"M) c #B2B2B3",
-"N) c #CCCBCC",
-"O) c #BE0B0B",
-"P) c #B30101",
-"Q) c #A30303",
-"R) c #940101",
-"S) c #830202",
-"T) c #750101",
-"U) c #DA9315",
-"V) c #956003",
-"W) c #9F6603",
-"X) c #734903",
-"Y) c #B27204",
-"Z) c #593903",
-"`) c #684403",
-" ! c #BD7B04",
-".! c #654202",
-"+! c #724C09",
-"@! c #C0C1C0",
-"#! c #C0BFC1",
-"$! c #BBBBBA",
-"%! c #B8B8B9",
-"&! c #ADAEAD",
-"*! c #ABABAA",
-"=! c #D1D1D2",
-"-! c #AF4E51",
-";! c #A43637",
-">! c #9A1616",
-",! c #8C0E0F",
-"'! c #7F0202",
-")! c #6E0000",
-"!! c #630102",
-"~! c #BF7F0F",
-"{! c #905C03",
-"]! c #A46903",
-"^! c #8E5C03",
-"/! c #9D6404",
-"(! c #AA6D04",
-"_! c #835403",
-":! c #B97805",
-"~ c #CF8B13",
-",~ c #DD9415",
-"'~ c #D58F14",
-")~ c #C1C0C0",
-"!~ c #B9B8B8",
-"~~ c #BDBCBC",
-"{~ c #CCCBCB",
-"]~ c #CFCECE",
-"^~ c #C38229",
-"/~ c #B87D28",
-"(~ c #AB7425",
-"_~ c #9E6B22",
-":~ c #92621F",
-"<~ c #85591C",
-"[~ c #78521A",
-"}~ c #6F4B17",
-"|~ c #9C6401",
-"1~ c #956002",
-"2~ c #120C00",
-"3~ c #9E6501",
-"4~ c #533707",
-"5~ c #C88612",
-"6~ c #D99215",
-"7~ c #BCBDBD",
-"8~ c #B9B9BA",
-"9~ c #CECDCD",
-"0~ c #C08028",
-"a~ c #B57A27",
-"b~ c #A87124",
-"c~ c #9B6921",
-"d~ c #90601E",
-"e~ c #82591C",
-"f~ c #76501A",
-"g~ c #A56B04",
-"h~ c #AA6E01",
-"i~ c #1E1300",
-"j~ c #603F04",
-"k~ c #C2C2C3",
-"l~ c #C9C9C8",
-"m~ c #CCCDCC",
-"n~ c #BE8029",
-"o~ c #B07827",
-"p~ c #A46F23",
-"q~ c #976620",
-"r~ c #8C5E1C",
-"s~ c #7F561B",
-"t~ c #744E19",
-"u~ c #DB9316",
-"v~ c #DF9517",
-"w~ c #C1C1C2",
-"x~ c #BA7D29",
-"y~ c #AE7626",
-"z~ c #A06D22",
-"A~ c #946420",
-"B~ c #885C1D",
-"C~ c #7C531B",
-"D~ c #734C18",
-"E~ c #DD9516",
-"F~ c #BEBDBD",
-"G~ c #BDBDBE",
-"H~ c #B5B4B5",
-"I~ c #CBCACB",
-"J~ c #C28129",
-"K~ c #B87C28",
-"L~ c #AB7325",
-"M~ c #9D6A22",
-"N~ c #916220",
-"O~ c #855A1C",
-"P~ c #795119",
-"Q~ c #704B17",
-"R~ c #C3C3C4",
-"S~ c #B5B6B5",
-"T~ c #CCCCCD",
-"U~ c #C08129",
-"V~ c #A77124",
-"W~ c #9A6821",
-"X~ c #8E601F",
-"Y~ c #81571C",
-"Z~ c #765018",
-"`~ c #BCBDBC",
-" { c #CBCBC9",
-".{ c #BC7F28",
-"+{ c #B07826",
-"@{ c #A46F22",
-"#{ c #976621",
-"${ c #8B5E1E",
-"%{ c #7E551B",
-"&{ c #734D18",
-"*{ c #C38428",
-"={ c #BA7D27",
-"-{ c #AE7524",
-";{ c #A16D22",
-">{ c #724C18",
-",{ c #C9C8C9",
-"'{ c #C08128",
-"){ c #B77B27",
-"!{ c #AA7325",
-"~{ c #91621F",
-"{{ c #845A1C",
-"]{ c #714B17",
-"^{ c #C1C3C2",
-"/{ c #BCBBBC",
-"({ c #BF8128",
-"_{ c #B47A27",
-":{ c #A67124",
-"<{ c #8D5F1E",
-"[{ c #81571B",
-"}{ c #754F18",
-"|{ c #C4C3C3",
-"1{ c #B9BAB8",
-"2{ c #C7C6C6",
-"3{ c #B17726",
-"4{ c #A36E24",
-"5{ c #8A5D1D",
-"6{ c #7E541B",
-"7{ c #744D18",
-"8{ c #C1BFC0",
-"9{ c #C7C6C7",
-"0{ c #C28329",
-"a{ c #B97D28",
-"b{ c #AD7526",
-"c{ c #A06C23",
-"d{ c #875B1D",
-"e{ c #7A531A",
-"f{ c #724D17",
-"g{ c #C5C6C6",
-"h{ c #C5C5C4",
-"i{ c #B1AFB0",
-"j{ c #C6C6C5",
-"k{ c #C18229",
-"l{ c #B77C27",
-"m{ c #A97425",
-"n{ c #9D6922",
-"o{ c #91611F",
-"p{ c #84581C",
-"q{ c #775019",
-"r{ c #6F4B16",
-"s{ c #C4C5C5",
-"t{ c #A57123",
-"u{ c #9A6721",
-"v{ c #8D5F1D",
-"w{ c #764F19",
-"x{ c #C0C1BF",
-"y{ c #B07726",
-"z{ c #A26E23",
-"A{ c #966520",
-"B{ c #7D541A",
-"C{ c #744D17",
-"D{ c #C8C7C8",
-"E{ c #C5C4C5",
-"F{ c #BABABB",
-"G{ c #BFBEBE",
-"H{ c #C3C4C4",
-"I{ c #C38329",
-"J{ c #AD7625",
-"K{ c #9F6C23",
-"L{ c #936320",
-"M{ c #875B1C",
-"N{ c #724C17",
-"O{ c #BF8028",
-"P{ c #B67B27",
-"Q{ c #AA7224",
-"R{ c #9C6A21",
-"S{ c #8F611E",
-"T{ c #83591C",
-"U{ c #785119",
-"V{ c #6F4A15",
-"W{ c #B6B8B8",
-"X{ c #C5C7C7",
-"Y{ c #BE8128",
-"Z{ c #B37926",
-"`{ c #A57023",
-" ] c #996720",
-".] c #80571C",
-"+] c #C6C6C7",
-"@] c #C3C4C2",
-"#] c #C2C3C1",
-"$] c #B3B5B3",
-"%] c #BB7E27",
-"&] c #AF7725",
-"*] c #A26D23",
-"=] c #96641F",
-"-] c #8A5C1D",
-";] c #7C541B",
-">] c #C1C2C1",
-",] c #C1C0C1",
-"'] c #C2832A",
-")] c #AC7425",
-"!] c #9F6B22",
-"~] c #92631F",
-"{] c #865A1C",
-"]] c #7A5219",
-"^] c #714B16",
-"/] c #BF8029",
-"(] c #A97224",
-"_] c #9C6922",
-":] c #8F601F",
-"<] c #83581C",
-"[] c #785019",
-"}] c #6F4916",
-"|] c #C3C2C2",
-"1] c #BE8028",
-"2] c #B27826",
-"3] c #A47023",
-"4] c #986821",
-"5] c #8B5F1E",
-"6] c #80561C",
-"7] c #744F17",
-"8] c #BB7F27",
-"9] c #AE7625",
-"0] c #956520",
-"a] c #885C1E",
-"b] c #C28227",
-"c] c #B97D27",
-"d] c #865A1D",
-"e] c #7A5119",
-"f] c #C7C9C7",
-"g] c #B67B26",
-"h] c #A87223",
-"i] c #8E611E",
-"j] c #6E4A16",
-"k] c #CACBCA",
-"l] c #C9CBC9",
-"m] c #986721",
-"n] c #8B5F1D",
-"o] c #80561B",
-"p] c #C38327",
-"q] c #BB7E28",
-"r] c #A16E23",
-"s] c #895C1D",
-"t] c #714C18",
-"u] c #A8A8A7",
-"v] c #C2C1C2",
-"w] c #C28229",
-"x] c #B87C27",
-"y] c #9E6B23",
-"z] c #85591D",
-"A] c #78511A",
-"B] c #714C17",
-"C] c #C4C3C2",
-"D] c #A77224",
-"E] c #9B6821",
-"F] c #8F601E",
-"G] c #82581C",
-"H] c #BD7F28",
-"I] c #986620",
-"J] c #7F561C",
-"K] c #734E18",
-"L] c #B7B6B8",
-"M] c #C38328",
-"N] c #BB7D28",
-"O] c #AF7625",
-"P] c #C08228",
-"Q] c #90621F",
-"R] c #785219",
-"S] c #704B16",
-"T] c #9A6822",
-"U] c #8D601F",
-"V] c #81581C",
-"W] c #765019",
-"X] c #BDBFBD",
-"Y] c #BC7F27",
-"Z] c #A36F24",
-"`] c #7F561A",
-" ^ c #C48328",
-".^ c #A06C22",
-"+^ c #875C1D",
-"@^ c #714D17",
-"#^ c #AFAFB0",
-"$^ c #CAC9C9",
-"%^ c #C18227",
-"&^ c #9D6A21",
-"*^ c #91611E",
-"=^ c #785118",
-"-^ c #9A6720",
-";^ c #8E5F1D",
-">^ c #81571A",
-",^ c #C78C35",
-"'^ c #7C541A",
-")^ c #A7A8A8",
-"!^ c #F6C06D",
-"~^ c #D9A34F",
-"{^ c #C18935",
-"]^ c #BD8731",
-"^^ c #A47126",
-"/^ c #8D601D",
-"(^ c #845B1A",
-"_^ c #775017",
-":^ c #F1BB65",
-"<^ c #E7B05A",
-"[^ c #DEA74C",
-"}^ c #D9A240",
-"|^ c #C18C30",
-"1^ c #AA7720",
-"2^ c #AA771B",
-"3^ c #916415",
-"4^ c #E8B259",
-"5^ c #E3AC4E",
-"6^ c #DCA540",
-"7^ c #D39B32",
-"8^ c #D09625",
-"9^ c #D0941C",
-"0^ c #E6B056",
-"a^ c #E0AA49",
-"b^ c #D9A23B",
-"c^ c #D49B2F",
-"d^ c #D09623",
-"e^ c #E5AF51",
-"f^ c #DFA847",
-"g^ c #D9A139",
-"h^ c #D3992C",
-"i^ c #CD9321",
-"j^ c #B0AEAE",
-"k^ c #E2AB4B",
-"l^ c #DEA743",
-"m^ c #D89F36",
-"n^ c #D49A2A",
-"o^ c #DBA344",
-"p^ c #DAA23E",
-"q^ c #D79E33",
-"r^ c #826122",
-" ",
-" ",
-" ",
-" . ",
-" + + @ # ",
-" $ % & * = # ",
-" - ; > , ' ) + . ",
-" ! ~ { ] ^ / ( _ : = < ",
-" [ } ! | 1 2 3 4 5 6 7 8 @ ",
-" } 9 0 a b c 2 2 c d e f g + . ",
-" h h i j k l b l 7 4 2 m n o 4 p < ",
-" q q h r s t u v b b l 7 w x y z A B % C ",
-" D E F G H I J I u u K L l w M N O P Q R S < ",
-" T U V D W X Y X I u I v v u K l Z O ` ...+.@.8 $ ",
-" T #.$.%.&.*.=.-.X I u u u v u K v ;.>.,.'.).!.3 ~.% $ ",
-" {.].^./.(._.:.=.=.-.X X I I I v u I <.[.}.|.1.2.3.4.5.$ $ ",
-" 6.7.7.8.9.0.a.b.c.:.:.-.-.-.X X I I I v d.e.f.g.f.L h.K i.j.k.8 ",
-" l.m.n.{.o.p.q.r.r.s.t.t.:.:.=.=.X X X I I u.v.w.` x.y.z.A.B.C.D.| 8 ",
-" E.F.G.H.I.J.p.r.K.r.r.s.a.:.:.=.=.=.=.-.X L.M.N.O.P.Q.R.S.T.U.V.W.X.k.$ ",
-" Y.Z.`. +.+++@+#+#+#+#+r.K.K.a.b.c.t.=.-.=.X $+%+&+*+=+) -+;+>+,+'+)+!+~+{+8 ",
-" ]+]+^+/+(+_+:+<+[+@+@+@+#+r.p.r.r.K.c.t.=.=.=.=.}+|+1+X 2+3+4+5+D.6+7+8+9+0+a+b+$ ",
-" c+d+e+E.f+g+_+:+:+<+[+@+@+h+#+#+p.r.i+j+k+l+m+t.=.=.n+o+p+q+r+s+5+5+>+t+u+v+w+x+y+i - z+ ",
-" A+A+B+C+D+E+g+_+_+:+:+F+G+<+@+@+H+I+J+K+L+M+N+O+P+t.K.J.Q+S.R+S+T+S+U+3+V+W+X+Y+Z+`+. @ - ",
-" B+B+B+ @.@+@E+E+E+E+.@@@:+#@<+<+@+$@%@&@*@=@-@r.;@K.>@7 ,@'@S+)@!@!@~@{@]@^@/@(@_@:@<@| { ",
-" [@}@}@|@1@2@3@3@3@E+E+E+E+E+.@.@@@4@5@6@7@8@9@0@r.r.a@:.b@c@~@d@e@)@f@~@g@h@i@j@k@l@:@:@:@ ",
-" m@n@o@p@(+q@q@r@+@+@3@E+E+E+E+E+.@_+s@t@u@v@w@x@H+#+y@z@A@B@C@D@E@F@G@H@b@I@J@K@L@M@N@O@i ",
-" o@o@P@Q@R@q@S@T@T@+@+@+@3@3@U@E+E+_+E+V@W@X@Y@Z@`@ #:+.#+#@#e@##$#%#!@*#=#-#;#>#,#'#)#!#~# ",
-" o@{#]#^#/#(#_#(#(#2@T@T@r@+@+@3@3@:#E+E+E+<#[#Y@Y@}#|#1#' 2#y+3#=#4#5#6#7#8#9#0#a#b#7.i E c# ",
-" d#e#f#g#h#i#j#k#k#(#2@T@T@T@T@r@+@3@3@E+l#m#n#o#n#p#q#r#s#t#u#v#v#w#d@x#y#z#A#B#C#$.D#D E# F# ",
-" j.G#H#I#J#K#L#j#M#k#k#k#k#2@2@2@T@r@+@+@+@:#N#O#P#Q#R#S#T#U#V#W#W#v#X#y+Y#Z#`# $.$+$@$#$U $$%$ ",
-" G#&$*$=$-$;$>$,$,$'$j#M#M#k#q@q@2@(#T@T@r@T@r@)$!$~${$]$Y@^$/$X#W#W#t#($v#'@_$:$<$[$}$T #$ c#|$ ",
-" 1$2$3$4$5$6$7$6$8$9$,$8$j#'$M#k#0$k#2@2@2@T@T@T@a$b$c$d$e$f$g$h$i$U#t#j$k$l$l$m$#@n$o$p$]. q$r$ ",
-" s$t$u$v$w$x$>$y$6$6$8$8$8$,$,$j#j#M#k#k#2@2@2@T@T@z$A$B$C$D$E$F$G$U#H$I$J$K$L$M$N$O$P$Q$Q$ q$r$$$ ",
-" R$S$T$U$V$W$X$>$>$>$6$6$L#8$8$8$'$Y$j#j#k#k#2@2@2@Z$`$ %.%+%@%#%$%%%&%*%=%-%6#;%>%,%'%)%/+ r$!%~% ",
-" S$S${%]%^%/%(%_%_%_%:%<%>$6$L#L#8$8$9$,$[%j#M#M#k#k#9$}%|%1%E$2%3%4%5%6%7%8%9%0%a%b%{.c%l. q$q$~% ",
-" d%d%e%f%g%/%h%(%i%i%<%j%j%>$:%:%>$6$L#L#8$9$,$,$'$Y$'$K#k%k@l%m%n%o%p%q%r%s%t%u%v%G#l.w%x% !%r$~%y% ",
-" z%{%X.A%B%C%D%C%E%(%(%_%_%_%<%<%:%>$>$>$6$6$i#F%'$8$i#G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%}@V%]+ W%X%q$Y% ",
-" U%Z%`% &y$.&+&/%W$E%(%(%(%@&_%<%_%j%<%j%>$>$6$L#8$9$#&$&%&&&*&&&&&=&-&;&>&,&,&'&)&!&E.C+~& {&]&^&Y% ",
-" /&Z%(&_&:&<&[&/%/%/%/%/%C%E%E%(%i%_%_%j%j%>$<%>$6$y$}&|&1&2&3&4&4&5&6&7&8&9&0&a&b&c&n#d&e& X%c#+%f&W% ",
-" g&h&i&j&k&l&m&n&o&/%p&/%/%/%C%/%E%E%(%_%_%7$_%_%j%>$(%#&q&r&s&t&t&u&4&v&w&x&5%o%y&y&z&A&Q#B& ~%C&D&p#E& ",
-" F&G&H&I&o.m&J&K&L&h%L&p&p&p&/%/%C%E%E%E%E%(%@&_%j%<%M&W$N&O&P&Q&R&S&&&T&U&J#V&W&X&Y&Z&`& *z&.*+*@* #*$*%*&***=* ",
-" -*2&;*>*,*'*)*!*[&[&!*L&h%L&p&/%/%/%/%/%E%E%E%(%_%(%/%:&~*H&;*{*]*^*/*k@(*_*:*<*[*}*Y&P%|*1*2*3*$%4* 5*6*7*8*)&%$ ",
-" 9*u&5&0*a*b*c*m&d*e*)*!*K&h%K&K&h%f*/%p&/%C%W$W$E%(%h%g*h*h&;*h&k@i*j*k*l*m*n*o*p*q*r*E$s* *b&1*t*b&u*Y@X@ v*~%w*x*y*z*$$ ",
-" u&u&*&A*V$B*J&C*D*m&C*d*)*)*!*[&[&K&n&o&p&f*/%/%/%/%E*E%.$F*G*H*X.h&I*t&J*K*L*M*N*O*P*Q*R*S*T*z&1*U*V*W*X*Y*v@Z* {&`* =.=+=@=#=c# ",
-" 5&$=J%%=&=b**===-=C*D*C*C*e*e*)*d*!*[&L&h%L&o&L&/%/%n&D%;=>=,=/&I&X.'=I&)=!=~=t&{=U$Q*]=^= f$/=(=1*_=V*:=<=[=}=|=X@ 1=c#]$2=3=4=1*5=y% ",
-" &&5&6=7=8=9=0=a=9=J&J&c*c*b=C*C*m&)*)*e*!*!*n&L&+&h%n&.&:&c=d=U%e=F*F*G*q&Z%f=g=a%h=*$i=j. P#+%j=_=V*k=D&l=m=l=2%n=o=p= q=r=s=t=u=v=w=x=y=!%z= ",
-" A=B=C=D=)*E=b*F=F=9===J&G=D*D*D*C*m&d*!*d*!*!*H=[&L&I=J=K=U%{%L=d%d%M={%N=v%O=P=/#Q=4$G#G# R=8&%*j=V*V*S=:=T=7*U=U=V=8&X@W=X= {&Y=r=s=Z=`= -.-+-@-#-$-%- ",
-" &-6=*-=-a*--;-b*>->-9=9=9=9=9=c*,-D*C*C*C*m&d*d*!*'-)-K&1 R$!-~-L=L=e=L=n&{-]-8=^-s$/-(-1$ B$B$_-:-V*<-D&[-7*}-m=&*@=3%|-R#1-Z=2-3-z*4-5-6-7-8-9-0-a-b-c-d-w=d-b&c#%- ",
-" a+e-f-g-h-i-j-*=b*b*b*b*k-k-9=9=a===G=c*c*D*C*C*C*e*l-b=m-/-n-o-p-q-r-s-@&t-N*6#D+U%u-T$u$ +%E$v-V*_=w-x-D&y-z-m=m=@=A-B-m=C-c&/=Y@D-v@X@E-)&F-G-1*H-I-J-K-L-M-N-y=X% ",
-" e-O-P-Q-R-j-S-B*B*B*B**=b*b*b*>-9=9=9=J&a=J&c*D*D*C*J&'*T-U-V-R$1$r-W-X-Y-d=6#Z-`-o. ;R$.; +%d$+;@;V*#;k=x-T=7*}-m=@=&*$;%;&;*;B-=;-;D&T=&*m=;;>;,;';K-);!;~;{;!;z&];c# ",
-" H$v#*-^;/;(;0=0=_;B*B*B**=b*b*b*>->->-9===9=J&J&G=J&'*:;<;(-u$[;1$};u$|;1;2;3;4;5;A%L=6; ]$/=7;8;_=X*S=x-W*T=7*9;0;a;b;;;%;&;c;d;d;e;f;b-g;u=h;u=i;j;k;!;K-l;m;N-n;o;y% ",
-" p;P-v#q;r;s;t;u;v;v;;-B*B*B*B*B**=b*b*>->-F=k-9=====b*'-H.G#*$4$/-[;H#f%w;x;w$p-R${%y;d%A% N%d$z; *1*_=V*S=D&T=A;}-m=@=B;C;A-B-&;N-D;E;e;#-F;b-G;>;H;I;J;K;L;L-M;N;O;X%P; ",
-" f-Q;R;S;T;U;V;W;E=u;X;u;0=v;_;B*B*B**=*=b*b*b*F=>-k-B*a=Y;{#]=^=^=4$Z;n-`; >6#D+.>+>_@d%d% @>#>z;(=[=$>2*V*%>&><=*>}-0;=>->;>B->>,>D;d;8*'>y*b-)>!>>;u=';);~>d-K-{>|-]>^> ",
-" X#W#=%Q-/>(>_>E=W;W;E=E=E=u;:>v;0=;-B**=*=*=*=b*b*b*B**=<>[>}>|>|>|>1>|>j.2>[&3>4>5>F*6>F* |-7>z;(=8>1*:-_=S=[-T=7*A;9>0>&*a>;;b>N-c>d>d;#-e>f>,;g>h>i;i;i>!;c-!;j>z;q$`* ",
-" v#k>d@*%l>m>n>m>o>E=W;E=W;E=E=u;u;p>0=v;;-B*B*B**=*=B*p>q>r>s>i=o@o@t>u>v>l-3>w>x>,=Z%y>X. |-|-z>A>b&b&1*_=V*D&T=7*}-m=0>a;B>C>=;D>,>c>E>8*F>G>b-G;H-u=i;H>d-I>J>K>)&1=r$ ",
-" L>M>H@N>O>P>Q>R>m>o>o>o>W;W;E=E=E=u;u;0=S>0=T>B*B*;-U>r;V>W>X>6#Y>f#Z>`> ,.,6#]=e%;*+,X.X. {$;&9&_-@,8; *_=V*S=D&T=#,}-$,=>&*%,=;&,c;,>*,e;=,-,,;;,>,,,J;!;',b-_=),3-!,~, ",
-" {,d@4#],^,/,(,(;_,:,Q>V;m>o>--W;E=W;E=E=E=:>p>v;0=B*E=<,[,},r>},|,1,2,3,4,5,<;6,7,R&-*'=F& S%|-{$8,z&b&b&1*2*k=9,D&T=#,0,m=&*->a,B-b,N-d>y*&;c>d;g;;,,,c,*,}-D$N%X=d,`*e, ",
-" f,d@g,-%h,i,j,(;(;(;k,Q>l,Q>m>m>m,o>n,W;E=E=E=u;:>:>t;X;o,p,q,r,s,B+t,u,p-v,w,x,y,2&S&S&-* z>S%V=z&z&b&8>_=V*S=D&z,A,A,m=j>b;->A-B-&;B,8*}-2%E$C,@%D,9&E,E$3-z*];F,G, ",
-" F@F@D.X#H,I,J,U;(>(>(>(>k,k,l,V;V;V;m,o>K,----E=W;E=t;L,M,N,m@A+A+O,[>P,4,Q,R,S, ,F*T,7=;* C$U,w*V,P%W,b&1*_=X,D&[-y-#,}-Y,&*->A-B-Z,N-`,x-B$ '.'1-@*1-@*X=3-s=d,1= ",
-" +'+'U+)@@'U;#'$'s;s;%'(>(>(>(;k,(;_,V;V;V;o>o>t;--E=t;&'*'j V%e++$='},-'}@9=;'>'P@,'''4&)' 9&E,w*K>V,y&b&1*_=V*S=D&T=7*}-m=@=!'a,=;>>&;2=@=B$~'o= {']'s=3- ",
-" )@s+D.^'O>/'I,n>('('('s;U;(>(>k,k,k,k,k,Q>m>m>m>o>o>Q>_':']+e+~&~&~&x%+$<'C+['}'[%&&|'5&+, 1'T*2'K>a&z&|*@,3'X*<-D&l=7*#,0,0>j>B>a,%;4'D;B-]$o=p# ",
-" T+~@B.5'6'7' 8'$'n>$'('('s;(>(>(>(>k,k,Q>Q>:,9'R>0'o>a'E.w%x%x%]++$t,b'c'd'e'f'g'h'&&5& i'i'+;j'k'k'z&b&1*3'X*S=&>l'7*}-$,U=b;->A-Z,m'b;c&n'p# ",
-" G@S+.$o'p' n>8'$'('('s;U;(>(>(>k,k,k,(;(;(>(>q',%r's't'F.'%+$u'v'w'x'y'z'H$A=A' B'1'C'>&K>D'E'z&a-1*X*S=F'T=7*A;-;@=&*->A-B-G'G'9&E-X@ ",
-" H'I'J'K'L' 8'M'n>N'$'('('s;s;(>(>(>k,%'O'P'Q'R'l.S'T'U'V'[$W'X'Y'Z'`'a+f- ) +;c&+;3%K>.)+)z&8;U*C-X,@)&>#)*>}-m=j>B>->A-c;N-A&X@$) ",
-" 5+T.%)7'L' 8'j,8'8'n>n>('s;s;U;(>U;n>&)*)n.l.m.m.=)-);)>)w%6#,)')*-))a+&- !)!)~){)A>K>(=Z&`& *])t*<-@)T=y-#,^)/)&*;>()G'&;(=n#v@ ",
-" U+_):)i,i,i,L'L'I,M'8'8'$'('('<)s;n>R>[)#$Q$#$].].})m.|)1)2)3)4)5)U#O-e- 6)+;+;A&7)j=j=Z&y&8)1*_=#;9)D&y-0)}-0;@=b;C;B-e;7)8&Y@ ",
-" 5+T.5$a)/,i,I,8'M'M'8'8'n>$'n>I,$'b)E 7.T #$p$c)#$d)e)f)g)9#Q-X#P-h) D,D,i)3%3%(=a&z&b&j)@;V*k)x-l)z,}-m=m=@=a>B-c;S=o#~$ ",
-" D.F@m)n)i,o)L'L'M'L'8'n>P>P>g)p)#$T T T U q)r)s)t)6#u)K%v)w#w) D$D$@%8,3%A>(=V,P%j)])_=V*9,D&<=#,-;@=&*b;%;N-X*]$x)y= y)z)A) ",
-" D.J@B)C)D)i,i,i,L'L'/,E)F)G)$.D H)G {+I)#$J)6#P>K).+M>k>X# L)D$@%Q%Q%3%p%a&z&|*b&])#;k=F'l)7*}--;0>&*->d>M)N)P# O)P)Q)R)S)T) ",
-" U)6+<,p'/,/,i,i,:)s;V)W)X)Y)q E#E#D Z)`) !.!+!j$=#X#W# A&@!#!O%Q%Q%A>$!V,%!8>])_=w-@)W*T=7*}-m=&!->*!=>N%y==! -!;!>!,!'!)!!! ",
-" D.T.~!a)J,/,#'P>{!]!$.^!6#/!D (!_!:!Z&z&%!1*_=2*S=D&T=7*}-m=@=->&;7*G-o#8& 2!3!4!5!6!7!8!9! ",
-" D.J@0!a!:)b!c!h ]!} d!e!f!g!h!6#i!['j!k!=#L> l!|!@%@%}!m!3%0&j=Z&W,$>:-C-k)@)&>n!*>9;@==>A-$;i'E$8& o!p!q!r!s!t!u! ",
-" v!w!x!y!i :@:@:@h h z!A!B!C!D!E!F@+'=# Q%m!|!D$@%l!3%A>(=Z&z&b&])#;V*S=F!T=7*A;}-@=->C;G!S*E$ H!I!J!K!L!M!N! ",
-" O!T.d#= $ { P!| i!Q!R!S!{=T!U!V!H@ Q%3%Q%W!W!A&Q%X!A>(=Z&`&b&_=t*V*x-#)*>A,m=$,A-Y!7)E$Z! `! ~.~+~@~#~$~ ",
-" %~F@$ &~*~- =~-~6#;~(->~,~'~`# A>0&>&)~D${)Q%m!3%.)Z&P%!~1*@;V*S=D&T=*>}-m=&*B-~~{~]~ ^~/~(~_~:~<~[~}~ ",
-" D.B.L=|~1~2~3~*~4~5~6~~@)@ (=0&D$D$@%|!m!7~A>(=8~b&$>_=_=k=x-D&<=*>-;Y!->[=9~]$ 0~a~b~c~d~e~f~ ",
-" %~D.g~h~i~j~*%v!I')@ D'K>L)k~#%A&Q%3%7)(=$!z&8;1*2*V*S=l)T=0)9;@=$;U*l~+%m~ n~o~p~q~r~s~t~ ",
-" u~v~-*i _*g@%~T+ z&D'A&w*w~@%_-Q%7~K>(=Z&z&b&@;2*k)S=l)#)A,m=A-])9&]$ ^~x~y~z~A~B~C~D~ ",
-" U+,~U)E~5+6~ Z&V,A&~)w~G!A&F~G~A>(=Z&z&b&1*@;X*H~:=T=7*}-0>0)9&N%I~ J~K~L~M~N~O~P~Q~ ",
-" 4+U+u~U) W,E'j'R~k~D$L)A&3%1!0&(=Z&!~8>2*S~w-D&D)}-a;D&D,T~|- U~a~V~W~X~Y~Z~ ",
-" D. b& *Q%7;+;D$G!}!3*j'`~(=Z&8~b&a-2*w-S=D&T=z-@=n!D,|- { .{+{@{#{${%{&{ ",
-" *1*$!!)+;D,D$@%l!j'`~(=+)E'%!b&1*2*S=:=T=y-9;-;@%S%C, *{={-{;{A~B~#~>{ ",
-" _=1*(=+;c&~)6)@%A&Q%>&A>k'E'z&b&1*_=V*S=l)M)0,n!.)z>,{ '{){!{M~~{{{P~]{ ",
-" _=V*Z&^{1'+;D,@!@%A&m!7)/{(=V,b&@,1*S~k)x-l'A,m=3%z;C$ ({_{:{W~<{[{}{ ",
-" #;V*_=+;1'|{D,D$@%A&Q%3%~~(=Z&1{b&1*@;S~S=l)T=-;`&2{9& .{3{4{#{5{6{7{ ",
-" S=b&8{2{G-D,w*D$@%3*>&7).)D'8~%!8>_=V*k):=z,7* *c&9{ 0{a{b{c{A~d{e{f{ ",
-" w-[-S~@!g{h{+;7;#%{)A&3*j'A>$!E'8~b&1*C-V*S=l=i{b&+;j{ k{l{m{n{o{p{q{r{ ",
-" D&[-}!9&s{c&+;D,@!A&Q%j'7~/{$!z&8;b&1*C-w-@)7*H~+;h{j{ ({_{t{u{v{[{w{ ",
-" z,:=j=U,z;c&!)7;D$x{_-Q%1!/{+)P%z&a-_=_=X,x-l'X,{)1'G- .{y{z{A{5{B{C{ ",
-" 7*#)3%j{D{E{G-+;D,D$O%|!G~A>.)F{z&z&1*_=V*9,z,V*G{H{s{ I{a{J{K{L{M{e{N{ ",
-" z-}-8~E,`=1'c&+;D,D$@%A&4%3%.)$!Z&z&b&1*_=V*F'T=j'+;~) O{P{Q{R{S{T{U{V{ ",
-" 0,A;W{X{C$z;h{c&D,D,D$L)Q%3%7)j=Z&z&b&8>3'S~F'<-$!7;2' Y{Z{`{ ]<{.]}{ ",
-" 9>&!b&c&S%+]i'h{@]#]W!i)A&Q%3%A>(=Z&z&@,])S~$]F'k'L)w* %]&]*]=]-];]f{ ",
-" -;/)D&u*l~`=i'1'c&7;>]D${)3*Q%A>(=Z&y&8;1*3'V*9)z&,]D$ ']a{)]!]~]{]]]^] ",
-" Y!:=7;N%2%z;1'c&+;D,#%@%|!m!1!0&a&,&`&j)1*C-V*8;i)@% /]P{(]_]:]<][]}] ",
-" 0;->n!6)|-C$2{z;s{+;|]v-@%i)8,3%`~p%k'8~`&1*_=w-8;Q%@% 1]2]3]4]5]6]7] ",
-" !'&*w~S%z>T*o%h{c&+;|]W!}!3*Q%F~0&+)E'!~b&_=#;2*3%G{ 8]9]z{0]a]C~f{ ",
-" A-0>.)]$S%C$9{j{h{+;2'D$@!A&Q%F~A>(=Z&z&b&8>2*1*K>4%G{ b]c])]!]:~d]e]]{ ",
-" *!;;7)S%N%f]U,2{1'c&+;D,D$@%A&Q%7).)(=Z&|*1*2*U*(=3%>& ({g]h]c~i]<]w{j] ",
-" a,b,V,k]l]C$T*T*z;s{+;7;D$W!A&m!3%A>(=+)W,b&1*_=8~A>3% n~2]p~m]n]o]7{ ",
-" 4'%;w-{~@>l~,{9&z;1'c&C'6)@%}!Q%3%A>(=+)Z&W,1* *z&(=1! p]q] ~r]A~s]#~t] ",
-" ;>u]_=9&d$|-S%C$E,z;s*G-D,v])~A&4%3%A>(=V,!~j)1*z&D'(= w]x](~y]~{z]A]B] ",
-" @=c>^)l~]$'&N%N% z;h{C]6),]V=8,m!3%/{D'V,b&$>b&P%D' '{){D]E]F]G]w{ ",
-" -;B>v-+%N% !)#]@!|!Q%3%~~(=Z&z&$>$>,&Z& H]2]p~I]${J]K] ",
-" m=a,L],{]$ C'i)_-Q%A>(=a&E'W,$>W,z& M]N]O];{+~B~#~N{ ",
-" ->,>D$]$ G!A&G~A>(=E'z&b&$>b& P]){!{M~Q]{{R]S] ",
-" ;>j>S%d$ A&3%p%k'P%b&@,1*b& Y{_{:{T]U]V]W] ",
-" T=&;9,C$+% X]1!(=F{b&1*1*1* Y]+{Z]#{${`]K] ",
-" _=d>1*'&d$ 4%7)(=8;2*t*_= ^c]y~.^A~+^e{@^ ",
-" N-#^$^|- X!/{Z&_=V*]) %^l{!{&^*^<~=^^] ",
-" b>Y!|{N% X!+)2*S=S= '{Z{`{-^;^>^}{ ",
-" 0;N-z&S% (=_=D&S= ,^O]:{q~B~'^t] ",
-" 0,)^m=D$z; Z&1*&>D& !^~^{^]^^^/^(^_^ ",
-" x-->1*i'9& F{_=D&D& :^<^[^}^|^1^2^3^ ",
-" A-&;S=l!C'1'c& A&b&_=#)W* 4^5^6^7^8^9^ ",
-" B-A-m=@;K>3%Q%3%8~_=y-<=3'9, 0^a^b^c^d^ ",
-" S=}-=;->-;7*}-m=7*z-V, e^f^g^h^i^ ",
-" b,D&j^}-A;T=b& k^l^m^n^ ",
-" o^p^q^ ",
-" r^ ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" ",
-" "};
diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.png b/src/Mod/Ship/Icons/ReparametrizeIco.png
deleted file mode 100644
index 0e75e41cca..0000000000
Binary files a/src/Mod/Ship/Icons/ReparametrizeIco.png and /dev/null differ
diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.xcf b/src/Mod/Ship/Icons/ReparametrizeIco.xcf
deleted file mode 100644
index b370b06b00..0000000000
Binary files a/src/Mod/Ship/Icons/ReparametrizeIco.xcf and /dev/null differ
diff --git a/src/Mod/Ship/Icons/ReparametrizeIco.xpm b/src/Mod/Ship/Icons/ReparametrizeIco.xpm
deleted file mode 100644
index 690b938941..0000000000
--- a/src/Mod/Ship/Icons/ReparametrizeIco.xpm
+++ /dev/null
@@ -1,1737 +0,0 @@
-/* XPM */
-static char * ReparametrizeIco_xpm[] = {
-"128 128 1606 2",
-" c None",
-". c #000000",
-"+ c #B50000",
-"@ c #6C0000",
-"# c #640000",
-"$ c #FF0000",
-"% c #8E0000",
-"& c #8C0000",
-"* c #630000",
-"= c #CE0000",
-"- c #DD0000",
-"; c #A20000",
-"> c #6A0000",
-", c #7C0000",
-"' c #860000",
-") c #AA0000",
-"! c #D50000",
-"~ c #000001",
-"{ c #00000B",
-"] c #00000A",
-"^ c #C80033",
-"/ c #B5003A",
-"( c #09009C",
-"_ c #090099",
-": c #090097",
-"< c #090098",
-"[ c #070085",
-"} c #04004F",
-"| c #040054",
-"1 c #03000E",
-"2 c #020000",
-"3 c #0B0028",
-"4 c #090027",
-"5 c #14005B",
-"6 c #1900B0",
-"7 c #1500B2",
-"8 c #1000B7",
-"9 c #0C00BE",
-"0 c #0800AC",
-"a c #0700B9",
-"b c #0600D5",
-"c c #0400E0",
-"d c #0200E9",
-"e c #0100F2",
-"f c #0000FB",
-"g c #0000FD",
-"h c #0000FE",
-"i c #0000FC",
-"j c #0000F8",
-"k c #0000F3",
-"l c #0100EC",
-"m c #0100E5",
-"n c #0200DF",
-"o c #0300D9",
-"p c #0400D6",
-"q c #0400D3",
-"r c #0500D3",
-"s c #0400D4",
-"t c #0400D9",
-"u c #0400E2",
-"v c #0400E7",
-"w c #0300EB",
-"x c #0300ED",
-"y c #0300E7",
-"z c #0300E2",
-"A c #0300DC",
-"B c #0300D5",
-"C c #0300CF",
-"D c #0200C7",
-"E c #0200B1",
-"F c #0200AE",
-"G c #0100C3",
-"H c #0200BC",
-"I c #0400AD",
-"J c #07009B",
-"K c #0C008D",
-"L c #BA0018",
-"M c #E50010",
-"N c #450044",
-"O c #9E004F",
-"P c #3E0070",
-"Q c #0800B3",
-"R c #0500C3",
-"S c #0300D0",
-"T c #0100DD",
-"U c #0000EA",
-"V c #0000F6",
-"W c #0000FF",
-"X c #0000F7",
-"Y c #0000F5",
-"Z c #0000F2",
-"` c #0000EE",
-" . c #0000E6",
-".. c #0000E1",
-"+. c #0000DE",
-"@. c #0000DA",
-"#. c #0000D6",
-"$. c #0800CE",
-"%. c #3700C6",
-"&. c #2300BC",
-"*. c #0000BB",
-"=. c #0100B6",
-"-. c #0200AF",
-";. c #0300AD",
-">. c #0300AE",
-",. c #0300AF",
-"'. c #0300A9",
-"). c #0300A4",
-"!. c #0300AC",
-"~. c #0300B2",
-"{. c #0400B0",
-"]. c #0400AA",
-"^. c #0400A5",
-"/. c #0400A8",
-"(. c #0400B3",
-"_. c #0400BC",
-":. c #0400C5",
-"<. c #0300D1",
-"[. c #0200E5",
-"}. c #0200FB",
-"|. c #0100FD",
-"1. c #0000F4",
-"2. c #0100E7",
-"3. c #0100E3",
-"4. c #0200DD",
-"5. c #3300C8",
-"6. c #4D00A4",
-"7. c #0A00A6",
-"8. c #0C00D8",
-"9. c #0600E0",
-"0. c #0100E1",
-"a. c #0000E5",
-"b. c #0000EC",
-"c. c #0600EF",
-"d. c #0700F7",
-"e. c #0000FA",
-"f. c #0000E9",
-"g. c #0200DC",
-"h. c #0500CD",
-"i. c #0700BA",
-"j. c #0800A7",
-"k. c #0A0094",
-"l. c #0C0085",
-"m. c #0E0076",
-"n. c #0F0069",
-"o. c #10005C",
-"p. c #0F004C",
-"q. c #0B002F",
-"r. c #120035",
-"s. c #600000",
-"t. c #800000",
-"u. c #06001F",
-"v. c #040014",
-"w. c #08001E",
-"x. c #04004B",
-"y. c #020042",
-"z. c #01005D",
-"A. c #000086",
-"B. c #010088",
-"C. c #03008E",
-"D. c #040097",
-"E. c #0500A5",
-"F. c #0700B5",
-"G. c #0A00C4",
-"H. c #2800D0",
-"I. c #1100E4",
-"J. c #0200E4",
-"K. c #070084",
-"L. c #0700C3",
-"M. c #0100E4",
-"N. c #0100FE",
-"O. c #0100E2",
-"P. c #0400C1",
-"Q. c #3600A0",
-"R. c #6B0083",
-"S. c #190072",
-"T. c #070068",
-"U. c #06005A",
-"V. c #05004D",
-"W. c #000003",
-"X. c #740000",
-"Y. c #700000",
-"Z. c #3F0039",
-"`. c #C50033",
-" + c #59005A",
-".+ c #070081",
-"++ c #0700B3",
-"@+ c #0300D2",
-"#+ c #0200E7",
-"$+ c #0100F3",
-"%+ c #0100EE",
-"&+ c #0400CF",
-"*+ c #0600AC",
-"=+ c #090088",
-"-+ c #090067",
-";+ c #090051",
-">+ c #070046",
-",+ c #05003D",
-"'+ c #040034",
-")+ c #C40010",
-"!+ c #F2000A",
-"~+ c #620000",
-"{+ c #7D0006",
-"]+ c #0100E8",
-"^+ c #0400D5",
-"/+ c #0800B2",
-"(+ c #09008A",
-"_+ c #070072",
-":+ c #06005E",
-"<+ c #06004F",
-"[+ c #FD0000",
-"}+ c #EF0000",
-"|+ c #9B0000",
-"1+ c #080098",
-"2+ c #0700BB",
-"3+ c #06008F",
-"4+ c #050065",
-"5+ c #BD0000",
-"6+ c #570000",
-"7+ c #9A0000",
-"8+ c #D70000",
-"9+ c #820000",
-"0+ c #010000",
-"a+ c #F90000",
-"b+ c #FB0000",
-"c+ c #B30000",
-"d+ c #090000",
-"e+ c #DC0000",
-"f+ c #0C0000",
-"g+ c #7E0000",
-"h+ c #470000",
-"i+ c #BF0000",
-"j+ c #900000",
-"k+ c #2B0000",
-"l+ c #A80000",
-"m+ c #B20000",
-"n+ c #2C0000",
-"o+ c #950000",
-"p+ c #5F0000",
-"q+ c #890000",
-"r+ c #670000",
-"s+ c #6E0000",
-"t+ c #780000",
-"u+ c #690000",
-"v+ c #6F0000",
-"w+ c #3F0000",
-"x+ c #550000",
-"y+ c #350000",
-"z+ c #4B0000",
-"A+ c #990000",
-"B+ c #7F0000",
-"C+ c #540000",
-"D+ c #4A0000",
-"E+ c #A60000",
-"F+ c #5C0000",
-"G+ c #C80000",
-"H+ c #5D0000",
-"I+ c #D10000",
-"J+ c #DB0000",
-"K+ c #E40000",
-"L+ c #04000C",
-"M+ c #03000F",
-"N+ c #000002",
-"O+ c #BF0030",
-"P+ c #C40037",
-"Q+ c #0B00AC",
-"R+ c #0B00A7",
-"S+ c #0A00A7",
-"T+ c #0A00A8",
-"U+ c #0900A9",
-"V+ c #070086",
-"W+ c #06008D",
-"X+ c #0600AF",
-"Y+ c #0600B1",
-"Z+ c #0500B3",
-"`+ c #0400B5",
-" @ c #0400B6",
-".@ c #0300B8",
-"+@ c #0300BA",
-"@@ c #0300BD",
-"#@ c #0100C0",
-"$@ c #000091",
-"%@ c #000092",
-"&@ c #0000C5",
-"*@ c #0000C1",
-"=@ c #0200B3",
-"-@ c #0500A8",
-";@ c #06009C",
-">@ c #080091",
-",@ c #0B008A",
-"'@ c #980041",
-")@ c #C10032",
-"!@ c #0B005F",
-"~@ c #0B0071",
-"{@ c #0E00B0",
-"]@ c #0900C8",
-"^@ c #0700D3",
-"/@ c #0500DE",
-"(@ c #0200EA",
-"_@ c #0100FC",
-":@ c #0100F8",
-"<@ c #0200F2",
-"[@ c #0200EB",
-"}@ c #0300E4",
-"|@ c #0300DE",
-"1@ c #0300DA",
-"2@ c #0300D7",
-"3@ c #0300D6",
-"4@ c #0300D8",
-"5@ c #0200DB",
-"6@ c #0200E0",
-"7@ c #0100E6",
-"8@ c #1900DE",
-"9@ c #1F00DC",
-"0@ c #0100DC",
-"a@ c #0200CC",
-"b@ c #0400BD",
-"c@ c #0B00AE",
-"d@ c #0E00A5",
-"e@ c #0E008C",
-"f@ c #080040",
-"g@ c #08005C",
-"h@ c #0A00A2",
-"i@ c #0800B7",
-"j@ c #0500C8",
-"k@ c #0200D9",
-"l@ c #0000F1",
-"m@ c #0000ED",
-"n@ c #0000E8",
-"o@ c #0000E4",
-"p@ c #0000DB",
-"q@ c #0100D2",
-"r@ c #3400CA",
-"s@ c #3A00C1",
-"t@ c #0000BC",
-"u@ c #0000B7",
-"v@ c #0100B2",
-"w@ c #0100AD",
-"x@ c #0300A5",
-"y@ c #04009C",
-"z@ c #050096",
-"A@ c #06008E",
-"B@ c #070088",
-"C@ c #060061",
-"D@ c #06005F",
-"E@ c #090081",
-"F@ c #0A007F",
-"G@ c #09007E",
-"H@ c #08007E",
-"I@ c #07007E",
-"J@ c #06007D",
-"K@ c #04007D",
-"L@ c #04007E",
-"M@ c #020065",
-"N@ c #010068",
-"O@ c #000088",
-"P@ c #010089",
-"Q@ c #01008D",
-"R@ c #030092",
-"S@ c #030097",
-"T@ c #04009E",
-"U@ c #4C00A1",
-"V@ c #4400AF",
-"W@ c #0800BD",
-"X@ c #0800C1",
-"Y@ c #0600C7",
-"Z@ c #0500CA",
-"`@ c #0000EB",
-" # c #C10009",
-".# c #C4002C",
-"+# c #17008D",
-"@# c #0800BF",
-"## c #0200D8",
-"$# c #0000DF",
-"%# c #0400CD",
-" c #0600B9",
-"*# c #0700A5",
-"=# c #090091",
-"-# c #0A0076",
-";# c #0C0060",
-"># c #0F0060",
-",# c #110052",
-"'# c #120044",
-")# c #140037",
-"!# c #ED0000",
-"~# c #DC0019",
-"{# c #DC001E",
-"]# c #070075",
-"^# c #090079",
-"/# c #0B007C",
-"(# c #0C0084",
-"_# c #09009E",
-":# c #0400B4",
-"<# c #0E00CB",
-"[# c #0500DD",
-"}# c #2C00C8",
-"|# c #1A00E2",
-"1# c #0000F0",
-"2# c #060098",
-"3# c #070079",
-"4# c #080071",
-"5# c #080060",
-"6# c #070053",
-"7# c #1000CF",
-"8# c #0500D1",
-"9# c #0700F4",
-"0# c #3A00BA",
-"a# c #09008C",
-"b# c #05004A",
-"c# c #01002F",
-"d# c #000006",
-"e# c #E20000",
-"f# c #0C0081",
-"g# c #0600B4",
-"h# c #080053",
-"i# c #BF002F",
-"j# c #DD001D",
-"k# c #E00000",
-"l# c #080079",
-"m# c #080064",
-"n# c #060048",
-"o# c #DF0000",
-"p# c #E60000",
-"q# c #F70000",
-"r# c #E50000",
-"s# c #040000",
-"t# c #F50000",
-"u# c #030000",
-"v# c #EB0000",
-"w# c #050000",
-"x# c #D20000",
-"y# c #C30000",
-"z# c #9D0000",
-"A# c #760000",
-"B# c #8A0000",
-"C# c #500000",
-"D# c #4D0000",
-"E# c #5E0000",
-"F# c #400000",
-"G# c #3D0000",
-"H# c #720000",
-"I# c #520000",
-"J# c #4F0000",
-"K# c #510000",
-"L# c #980000",
-"M# c #750000",
-"N# c #8D0000",
-"O# c #B00000",
-"P# c #610000",
-"Q# c #850000",
-"R# c #6D0000",
-"S# c #D90000",
-"T# c #580000",
-"U# c #5B0000",
-"V# c #F30000",
-"W# c #680000",
-"X# c #050010",
-"Y# c #03000D",
-"Z# c #000004",
-"`# c #620038",
-" $ c #C20039",
-".$ c #45004F",
-"+$ c #0A00AE",
-"@$ c #0A00AA",
-"#$ c #0A00A9",
-"$$ c #0900AA",
-"%$ c #0800A9",
-"&$ c #070095",
-"*$ c #050086",
-"=$ c #0600AD",
-"-$ c #0500AE",
-";$ c #0400B1",
-">$ c #0300B3",
-",$ c #0300B6",
-"'$ c #0200BE",
-")$ c #0100C4",
-"!$ c #00009B",
-"~$ c #000089",
-"{$ c #0100A1",
-"]$ c #0300B1",
-"^$ c #0500A3",
-"/$ c #080095",
-"($ c #0C007F",
-"_$ c #A50024",
-":$ c #DF0019",
-"<$ c #010005",
-"[$ c #0D0071",
-"}$ c #0B0078",
-"|$ c #0D00AA",
-"1$ c #0B00C0",
-"2$ c #0900CA",
-"3$ c #0700D5",
-"4$ c #0500E0",
-"5$ c #0100F5",
-"6$ c #0200FC",
-"7$ c #0200EF",
-"8$ c #0200E1",
-"9$ c #0100E9",
-"0$ c #0100EA",
-"a$ c #1800D5",
-"b$ c #2A00D2",
-"c$ c #0800D7",
-"d$ c #0200D0",
-"e$ c #0300BF",
-"f$ c #0F00A4",
-"g$ c #120099",
-"h$ c #08005D",
-"i$ c #070074",
-"j$ c #0700AF",
-"k$ c #0500C6",
-"l$ c #0000EF",
-"m$ c #0000D9",
-"n$ c #0000D1",
-"o$ c #0800CA",
-"p$ c #3D00C1",
-"q$ c #2700BC",
-"r$ c #0000B3",
-"s$ c #0100AC",
-"t$ c #0200A5",
-"u$ c #03009D",
-"v$ c #050097",
-"w$ c #060091",
-"x$ c #060064",
-"y$ c #070087",
-"z$ c #060086",
-"A$ c #050084",
-"B$ c #040084",
-"C$ c #040085",
-"D$ c #030087",
-"E$ c #020083",
-"F$ c #010070",
-"G$ c #010078",
-"H$ c #030090",
-"I$ c #04009D",
-"J$ c #0600AE",
-"K$ c #0600B8",
-"L$ c #1A00C1",
-"M$ c #2900CF",
-"N$ c #0F00D3",
-"O$ c #0500D2",
-"P$ c #0100DF",
-"Q$ c #0200D1",
-"R$ c #B8002E",
-"S$ c #970057",
-"T$ c #0900BD",
-"U$ c #0000F9",
-"V$ c #0200D4",
-"W$ c #0400C2",
-"X$ c #08009C",
-"Y$ c #0C0073",
-"Z$ c #0D0059",
-"`$ c #0E004E",
-" % c #11004D",
-".% c #130041",
-"+% c #130035",
-"@% c #50002F",
-"#% c #D40028",
-"$% c #64002F",
-"%% c #07007D",
-"&% c #07007F",
-"*% c #090083",
-"=% c #0B0085",
-"-% c #0B0093",
-";% c #0700B1",
-">% c #080096",
-",% c #0F00D4",
-"'% c #0600DD",
-")% c #0100E0",
-"!% c #1700DE",
-"~% c #0900F5",
-"{% c #0400C4",
-"]% c #0600A4",
-"^% c #070080",
-"/% c #07005E",
-"(% c #060055",
-"_% c #070054",
-":% c #A30000",
-"<% c #090065",
-"[% c #0500D0",
-"}% c #0100EB",
-"|% c #2600B6",
-"1% c #6B0085",
-"2% c #1F005F",
-"3% c #050047",
-"4% c #02002E",
-"5% c #000007",
-"6% c #0600B2",
-"7% c #09007C",
-"8% c #090055",
-"9% c #060043",
-"0% c #650022",
-"a% c #E90010",
-"b% c #5A000A",
-"c% c #08007A",
-"d% c #090080",
-"e% c #070062",
-"f% c #D99214",
-"g% c #D99215",
-"h% c #DD9516",
-"i% c #DC9416",
-"j% c #DC9315",
-"k% c #D89014",
-"l% c #D79014",
-"m% c #DD9415",
-"n% c #DE9516",
-"o% c #E59A16",
-"p% c #D18C12",
-"q% c #DB9315",
-"r% c #D68F13",
-"s% c #D68F14",
-"t% c #DA9115",
-"u% c #DC9314",
-"v% c #D89114",
-"w% c #B87B12",
-"x% c #A46C0C",
-"y% c #B37407",
-"z% c #312001",
-"A% c #744A00",
-"B% c #B47506",
-"C% c #DB9215",
-"D% c #DD9416",
-"E% c #D89013",
-"F% c #D78F13",
-"G% c #D48D13",
-"H% c #D18B13",
-"I% c #D38C12",
-"J% c #C58411",
-"K% c #B0750F",
-"L% c #B4760B",
-"M% c #593A05",
-"N% c #9E6603",
-"O% c #593800",
-"P% c #251700",
-"Q% c #B37202",
-"R% c #563701",
-"S% c #6E4701",
-"T% c #AC6F04",
-"U% c #D78F12",
-"V% c #D58E13",
-"W% c #D79013",
-"X% c #D18B11",
-"Y% c #BF7F0F",
-"Z% c #B2760D",
-"`% c #BB7B0B",
-" & c #624107",
-".& c #B67507",
-"+& c #6C4602",
-"@& c #1B1100",
-"#& c #B17102",
-"$& c #352100",
-"%& c #7C5002",
-"&& c #9B6403",
-"*& c #714902",
-"=& c #A86B03",
-"-& c #A76C03",
-";& c #A66A02",
-">& c #9C6301",
-",& c #D18B12",
-"'& c #CF8910",
-")& c #CF8911",
-"!& c #D38D11",
-"~& c #E19612",
-"{& c #CE8A12",
-"]& c #C18110",
-"^& c #C0800E",
-"/& c #BE7D0C",
-"(& c #573B07",
-"_& c #BF7D09",
-":& c #7B5005",
-"<& c #3B2701",
-"[& c #B27304",
-"}& c #271901",
-"|& c #9C6403",
-"1& c #6C4502",
-"2& c #B37304",
-"3& c #4B3102",
-"4& c #674202",
-"5& c #A76B03",
-"6& c #AD7003",
-"7& c #A36803",
-"8& c #A26803",
-"9& c #A26802",
-"0& c #9D6400",
-"a& c #C6830E",
-"b& c #DC9415",
-"c& c #C78410",
-"d& c #CB8610",
-"e& c #CE8910",
-"f& c #D88F12",
-"g& c #CE8911",
-"h& c #D38C11",
-"i& c #C1800E",
-"j& c #5C3D07",
-"k& c #C37F09",
-"l& c #6D4706",
-"m& c #6B4604",
-"n& c #BB7906",
-"o& c #A96D05",
-"p& c #9C6504",
-"q& c #704903",
-"r& c #AE7105",
-"s& c #9D6505",
-"t& c #A76B05",
-"u& c #A86C05",
-"v& c #AB6E04",
-"w& c #AF7004",
-"x& c #5E3C02",
-"y& c #412A01",
-"z& c #A36904",
-"A& c #A56A03",
-"B& c #A86C03",
-"C& c #A46A02",
-"D& c #966001",
-"E& c #AA7009",
-"F& c #DF9617",
-"G& c #DC9216",
-"H& c #C8830F",
-"I& c #C9850E",
-"J& c #C9860F",
-"K& c #C98610",
-"L& c #DC9211",
-"M& c #CC880F",
-"N& c #C2810F",
-"O& c #92610B",
-"P& c #C7830B",
-"Q& c #422B03",
-"R& c #845505",
-"S& c #BC7907",
-"T& c #AE7107",
-"U& c #734B04",
-"V& c #4C3103",
-"W& c #AE7106",
-"X& c #A26906",
-"Y& c #AB6F05",
-"Z& c #AA6E05",
-"`& c #A86D05",
-" * c #A86B04",
-".* c #AB6F04",
-"+* c #9B6303",
-"@* c #905C03",
-"#* c #A46903",
-"$* c #9D6503",
-"%* c #905D03",
-"&* c #835503",
-"** c #764B01",
-"=* c #815304",
-"-* c #DF9616",
-";* c #C5830E",
-">* c #C6820E",
-",* c #C6830F",
-"'* c #CD890F",
-")* c #C7840F",
-"!* c #C4830F",
-"~* c #BC7D0D",
-"{* c #CD870D",
-"]* c #412B05",
-"^* c #996307",
-"/* c #B17306",
-"(* c #100A00",
-"_* c #B27307",
-":* c #5B3B04",
-"<* c #6D4705",
-"[* c #B97707",
-"}* c #8E5C05",
-"|* c #8A5A05",
-"1* c #3D2802",
-"2* c #A16905",
-"3* c #AD7106",
-"4* c #AC6F06",
-"5* c #AB6E05",
-"6* c #AA6F05",
-"7* c #AA6E04",
-"8* c #A66C05",
-"9* c #9D6604",
-"0* c #915D03",
-"a* c #865703",
-"b* c #7B4E03",
-"c* c #774D03",
-"d* c #784D02",
-"e* c #794E02",
-"f* c #7A4E02",
-"g* c #724800",
-"h* c #D58E14",
-"i* c #C5820D",
-"j* c #C3810D",
-"k* c #C2800E",
-"l* c #BA7C0D",
-"m* c #CB860E",
-"n* c #704A07",
-"o* c #9D6709",
-"p* c #986407",
-"q* c #2F1E02",
-"r* c #BA7808",
-"s* c #452C03",
-"t* c #6E4705",
-"u* c #C17D09",
-"v* c #774D05",
-"w* c #A46A07",
-"x* c #B87808",
-"y* c #BA7908",
-"z* c #B47507",
-"A* c #A16906",
-"B* c #382502",
-"C* c #956005",
-"D* c #AF7106",
-"E* c #AB6F06",
-"F* c #A96E05",
-"G* c #A46A05",
-"H* c #9B6505",
-"I* c #905D04",
-"J* c #855603",
-"K* c #7C4F03",
-"L* c #784D03",
-"M* c #794E03",
-"N* c #7A4F03",
-"O* c #7B4F02",
-"P* c #7B4F03",
-"Q* c #7A4F02",
-"R* c #6E4600",
-"S* c #DF9615",
-"T* c #C3800C",
-"U* c #C17F0C",
-"V* c #C9840D",
-"W* c #BC7C0D",
-"X* c #B4760C",
-"Y* c #C6830D",
-"Z* c #905E0A",
-"`* c #A56D0A",
-" = c #8C5C08",
-".= c #412B03",
-"+= c #C7830A",
-"@= c #452D03",
-"#= c #644105",
-"$= c #B77809",
-"%= c #3F2903",
-"&= c #956107",
-"*= c #B37508",
-"== c #B27408",
-"-= c #B17308",
-";= c #BC7B08",
-">= c #B67608",
-",= c #B07307",
-"'= c #B07207",
-")= c #B17307",
-"!= c #AF7206",
-"~= c #8B5B05",
-"{= c #A06705",
-"]= c #996305",
-"^= c #8E5C04",
-"/= c #855604",
-"(= c #7E5103",
-"_= c #7C5103",
-":= c #7D5003",
-"<= c #7C5003",
-"[= c #714900",
-"}= c #A16A09",
-"|= c #E39817",
-"1= c #BD7C0C",
-"2= c #C07E0B",
-"3= c #C9840C",
-"4= c #BF7D0C",
-"5= c #BF7E0C",
-"6= c #8F5E09",
-"7= c #AE720B",
-"8= c #946109",
-"9= c #3D2803",
-"0= c #D18A0B",
-"a= c #533604",
-"b= c #5B3C05",
-"c= c #B3750A",
-"d= c #6E4806",
-"e= c #B87809",
-"f= c #A76D08",
-"g= c #A66C08",
-"h= c #4B3104",
-"i= c #794F06",
-"j= c #B47609",
-"k= c #B37408",
-"l= c #B47608",
-"m= c #B57608",
-"n= c #B57607",
-"o= c #B17407",
-"p= c #AC6F07",
-"q= c #A36A06",
-"r= c #9B6406",
-"s= c #936006",
-"t= c #936005",
-"u= c #895805",
-"v= c #805204",
-"w= c #7D5103",
-"x= c #7E5104",
-"y= c #805203",
-"z= c #7F5203",
-"A= c #7C4F02",
-"B= c #774D02",
-"C= c #B9780B",
-"D= c #C17F0B",
-"E= c #B97A0B",
-"F= c #C4810B",
-"G= c #B9790B",
-"H= c #915E09",
-"I= c #9D670A",
-"J= c #362303",
-"K= c #D28A0C",
-"L= c #563905",
-"M= c #794F07",
-"N= c #B3760A",
-"O= c #4C3204",
-"P= c #C2800A",
-"Q= c #AB700A",
-"R= c #A76E09",
-"S= c #BB7B0A",
-"T= c #B97909",
-"U= c #B7780A",
-"V= c #B9780A",
-"W= c #BB7A09",
-"X= c #BD7C09",
-"Y= c #624105",
-"Z= c #6B4605",
-"`= c #B97808",
-" - c #AD7008",
-".- c #A16907",
-"+- c #966206",
-"@- c #8E5C06",
-"#- c #855605",
-"$- c #825405",
-"%- c #815405",
-"&- c #815404",
-"*- c #805304",
-"=- c #754B01",
-"-- c #D99114",
-";- c #B77909",
-">- c #B8790A",
-",- c #B9790A",
-"'- c #C07E0A",
-")- c #C27F0A",
-"!- c #A76D0A",
-"~- c #C4820C",
-"{- c #9E690A",
-"]- c #452D04",
-"^- c #D38A0D",
-"/- c #362403",
-"(- c #9C660A",
-"_- c #BA7B0C",
-":- c #160F01",
-"<- c #CF870D",
-"[- c #6F4906",
-"}- c #5C3C06",
-"|- c #BE7D0B",
-"1- c #BC7B0B",
-"2- c #BB7A0A",
-"3- c #B8780A",
-"4- c #BA7B09",
-"5- c #BB7B09",
-"6- c #B47509",
-"7- c #AE7208",
-"8- c #A16807",
-"9- c #8A5906",
-"0- c #865706",
-"a- c #855606",
-"b- c #855706",
-"c- c #855705",
-"d- c #835605",
-"e- c #845605",
-"f- c #835505",
-"g- c #825505",
-"h- c #835404",
-"i- c #825404",
-"j- c #714901",
-"k- c #C38111",
-"l- c #E09716",
-"m- c #B67709",
-"n- c #B57709",
-"o- c #BC7B09",
-"p- c #BB7A0B",
-"q- c #986409",
-"r- c #7D5208",
-"s- c #D48C0E",
-"t- c #130D01",
-"u- c #B7780C",
-"v- c #1A1102",
-"w- c #D1890E",
-"x- c #8B5C09",
-"y- c #A86F0B",
-"z- c #CA860D",
-"A- c #875808",
-"B- c #BC7C0B",
-"C- c #AF7309",
-"D- c #A06808",
-"E- c #915F08",
-"F- c #895906",
-"G- c #875806",
-"H- c #865806",
-"I- c #865606",
-"J- c #845506",
-"K- c #835504",
-"L- c #835405",
-"M- c #805303",
-"N- c #744B01",
-"O- c #A66D0A",
-"P- c #E49917",
-"Q- c #B27308",
-"R- c #B57609",
-"S- c #B57708",
-"T- c #B37509",
-"U- c #986308",
-"V- c #A46B0A",
-"W- c #D28A0F",
-"X- c #010100",
-"Y- c #C5830F",
-"Z- c #99650B",
-"`- c #3B2704",
-" ; c #D68C0E",
-".; c #553806",
-"+; c #AC710C",
-"@; c #C8830D",
-"#; c #BF7F0D",
-"$; c #C17F0D",
-"%; c #C4810C",
-"&; c #BD7D0C",
-"*; c #A26B0A",
-"=; c #503405",
-"-; c #AD720A",
-";; c #BD7D0B",
-">; c #B5770A",
-",; c #AD7109",
-"'; c #9F6808",
-"); c #926007",
-"!; c #895A07",
-"~; c #855807",
-"{; c #875906",
-"]; c #885806",
-"^; c #855506",
-"/; c #774C02",
-"(; c #895B05",
-"_; c #DA9215",
-":; c #B97907",
-"<; c #AF7207",
-"[; c #B07208",
-"}; c #976307",
-"|; c #A76E0A",
-"1; c #C9850D",
-"2; c #352303",
-"3; c #704B09",
-"4; c #5D3E07",
-"5; c #DC9111",
-"6; c #462E05",
-"7; c #AD720D",
-"8; c #D78E0F",
-"9; c #CA840E",
-"0; c #C4810D",
-"a; c #C27F0D",
-"b; c #C2800D",
-"c; c #C2800C",
-"d; c #BC7C0C",
-"e; c #B97A0C",
-"f; c #B8790C",
-"g; c #AA700A",
-"h; c #9E6809",
-"i; c #926009",
-"j; c #8A5A07",
-"k; c #875807",
-"l; c #895907",
-"m; c #8B5B07",
-"n; c #8A5A06",
-"o; c #895A06",
-"p; c #885906",
-"q; c #825504",
-"r; c #805404",
-"s; c #815203",
-"t; c #7B5003",
-"u; c #845604",
-"v; c #8E5D06",
-"w; c #DA9314",
-"x; c #AE7206",
-"y; c #B27306",
-"z; c #B67607",
-"A; c #B67708",
-"B; c #946006",
-"C; c #A56C09",
-"D; c #BC7B0C",
-"E; c #644106",
-"F; c #C8840F",
-"G; c #583A07",
-"H; c #604008",
-"I; c #E39712",
-"J; c #503606",
-"K; c #A9700E",
-"L; c #B87B0E",
-"M; c #A36C0C",
-"N; c #C7830E",
-"O; c #CB860F",
-"P; c #CC870F",
-"Q; c #BD7C0D",
-"R; c #422B05",
-"S; c #8D5D0A",
-"T; c #C4810E",
-"U; c #B4770C",
-"V; c #AC720B",
-"W; c #A36B0A",
-"X; c #9B660A",
-"Y; c #936109",
-"Z; c #8D5D09",
-"`; c #8A5A09",
-" > c #8A5B08",
-".> c #8C5C07",
-"+> c #8C5B08",
-"@> c #8C5B07",
-"#> c #8A5B07",
-"$> c #845606",
-"%> c #764C02",
-"&> c #7F5204",
-"*> c #8B5B06",
-"=> c #9B6508",
-"-> c #A86E0B",
-";> c #B7790E",
-">> c #C98611",
-",> c #DA9214",
-"'> c #AC6F05",
-")> c #B17304",
-"!> c #B67506",
-"~> c #AA6E06",
-"{> c #AC7109",
-"]> c #AA710B",
-"^> c #674406",
-"/> c #D28B10",
-"(> c #614007",
-"_> c #4D3406",
-":> c #DF9412",
-"<> c #452E06",
-"[> c #9A670C",
-"}> c #B6790F",
-"|> c #A76F0D",
-"1> c #C1810F",
-"2> c #C78310",
-"3> c #C8850E",
-"4> c #8D5E0A",
-"5> c #A36C0B",
-"6> c #C8850F",
-"7> c #BD7D0D",
-"8> c #B2760C",
-"9> c #A66D0B",
-"0> c #9E680A",
-"a> c #98640A",
-"b> c #905E09",
-"c> c #8D5C09",
-"d> c #8C5C09",
-"e> c #8E5D09",
-"f> c #8E5E09",
-"g> c #8E5D08",
-"h> c #8C5D08",
-"i> c #815403",
-"j> c #794D02",
-"k> c #825403",
-"l> c #936007",
-"m> c #A76E0B",
-"n> c #B87A0E",
-"o> c #C58310",
-"p> c #CE8913",
-"q> c #B07105",
-"r> c #A36903",
-"s> c #AF7105",
-"t> c #684406",
-"u> c #E09512",
-"v> c #734D09",
-"w> c #4F3507",
-"x> c #D58F12",
-"y> c #3A2705",
-"z> c #B67910",
-"A> c #B2770F",
-"B> c #93620D",
-"C> c #D48D11",
-"D> c #6B4709",
-"E> c #704A09",
-"F> c #D68F11",
-"G> c #CD880F",
-"H> c #CA8710",
-"I> c #CB870F",
-"J> c #CA860F",
-"K> c #C9850F",
-"L> c #BE7E0D",
-"M> c #B0740C",
-"N> c #A26B0B",
-"O> c #98650A",
-"P> c #946209",
-"Q> c #926109",
-"R> c #92600A",
-"S> c #915F09",
-"T> c #905F09",
-"U> c #8F5F09",
-"V> c #8F5D08",
-"W> c #8E5E08",
-"X> c #8D5C08",
-"Y> c #8B5B08",
-"Z> c #895806",
-"`> c #865705",
-" , c #7D5104",
-"., c #7A4E03",
-"+, c #986408",
-"@, c #C38110",
-"#, c #D48E13",
-"$, c #A76A04",
-"%, c #A76C04",
-"&, c #A86C04",
-"*, c #A66A03",
-"=, c #AE7004",
-"-, c #A56B06",
-";, c #794E05",
-">, c #D78F10",
-",, c #724B0A",
-"', c #704B0B",
-"), c #110B02",
-"!, c #B4770F",
-"~, c #644208",
-"{, c #DB9213",
-"], c #D08B12",
-"^, c #D08B11",
-"/, c #CF8A11",
-"(, c #D48D12",
-"_, c #D28B11",
-":, c #84580B",
-"<, c #563A07",
-"[, c #D08A10",
-"}, c #CB8710",
-"|, c #CD8810",
-"1, c #CE890F",
-"2, c #BF7F0E",
-"3, c #AF750D",
-"4, c #A06B0C",
-"5, c #96630A",
-"6, c #935F0A",
-"7, c #93610A",
-"8, c #8F5E08",
-"9, c #8D5D08",
-"0, c #8B5A07",
-"a, c #895905",
-"b, c #B5770C",
-"c, c #C98510",
-"d, c #D38E12",
-"e, c #D28D12",
-"f, c #D28C13",
-"g, c #A46904",
-"h, c #A96E04",
-"i, c #925D04",
-"j, c #634106",
-"k, c #A16B0F",
-"l, c #D79015",
-"m, c #EB9D16",
-"n, c #98660E",
-"o, c #4A3106",
-"p, c #E29614",
-"q, c #B47910",
-"r, c #CF8A13",
-"s, c #E49813",
-"t, c #CF8B12",
-"u, c #D08A12",
-"v, c #D08A11",
-"w, c #CE8A11",
-"x, c #D28C11",
-"y, c #B3770E",
-"z, c #885B0B",
-"A, c #BE7E0F",
-"B, c #AF750E",
-"C, c #A06A0C",
-"D, c #95630B",
-"E, c #91610B",
-"F, c #94630B",
-"G, c #95620B",
-"H, c #95620A",
-"I, c #94620A",
-"J, c #94610A",
-"K, c #92610A",
-"L, c #916009",
-"M, c #8F5D09",
-"N, c #8D5B08",
-"O, c #855505",
-"P, c #905E08",
-"Q, c #A26A09",
-"R, c #B8790E",
-"S, c #CA8711",
-"T, c #D58E12",
-"U, c #D18A12",
-"V, c #935E04",
-"W, c #BE7D0A",
-"X, c #5B3B03",
-"Y, c #BE7F0F",
-"Z, c #D59014",
-"`, c #F2A319",
-" ' c #81560D",
-".' c #8F5F0D",
-"+' c #E49814",
-"@' c #7C530B",
-"#' c #B27710",
-"$' c #402B06",
-"%' c #CB8812",
-"&' c #DD9314",
-"*' c #D28C12",
-"=' c #D38D12",
-"-' c #CE8811",
-";' c #C28211",
-">' c #BE7F10",
-",' c #BB7C0F",
-"'' c #A26C0D",
-")' c #97640C",
-"!' c #93600C",
-"~' c #93610C",
-"{' c #96630B",
-"]' c #98640C",
-"^' c #98640B",
-"/' c #96640B",
-"(' c #95630A",
-"_' c #94620B",
-":' c #885A07",
-"<' c #865707",
-"[' c #9A6508",
-"}' c #A86F0A",
-"|' c #BA7B0E",
-"1' c #CD8911",
-"2' c #A16703",
-"3' c #9F6601",
-"4' c #C7830F",
-"5' c #BD8015",
-"6' c #63543B",
-"7' c #F5AD32",
-"8' c #533809",
-"9' c #A97211",
-"0' c #714C0B",
-"a' c #E79A15",
-"b' c #C48312",
-"c' c #462F06",
-"d' c #B07610",
-"e' c #CF8912",
-"f' c #C68411",
-"g' c #BC7E10",
-"h' c #B4780E",
-"i' c #AA720E",
-"j' c #A06B0D",
-"k' c #99660C",
-"l' c #96640C",
-"m' c #95630C",
-"n' c #98650C",
-"o' c #99650C",
-"p' c #97640B",
-"q' c #925F09",
-"r' c #885907",
-"s' c #875907",
-"t' c #926008",
-"u' c #9C6609",
-"v' c #B1740B",
-"w' c #D08911",
-"x' c #CC8710",
-"y' c #9B6400",
-"z' c #E0A640",
-"A' c #B0A99B",
-"B' c #CFA050",
-"C' c #CD8A16",
-"D' c #D18C14",
-"E' c #E39816",
-"F' c #D99013",
-"G' c #DB9214",
-"H' c #B17710",
-"I' c #C28111",
-"J' c #B77A0F",
-"K' c #AE7310",
-"L' c #A76F0E",
-"M' c #A16A0D",
-"N' c #9C680D",
-"O' c #9A660C",
-"P' c #99650D",
-"Q' c #9B670C",
-"R' c #8A5A08",
-"S' c #865907",
-"T' c #A46C0A",
-"U' c #AF730B",
-"V' c #B87A0D",
-"W' c #BF7E0E",
-"X' c #C5820E",
-"Y' c #BA7A0A",
-"Z' c #E9B04E",
-"`' c #A18E6F",
-" ) c #996F25",
-".) c #EA9D18",
-"+) c #DE9515",
-"@) c #DE9514",
-"#) c #D08B13",
-"$) c #C18111",
-"%) c #B37710",
-"&) c #AB710F",
-"*) c #A46D0F",
-"=) c #A06A0E",
-"-) c #9D6A0E",
-";) c #9D690E",
-">) c #9D680D",
-",) c #9D680E",
-"') c #9C670D",
-")) c #895A08",
-"!) c #895A09",
-"~) c #AA6F0B",
-"{) c #C4820D",
-"]) c #C6840E",
-"^) c #C7840E",
-"/) c #A16702",
-"() c #E69D1E",
-"_) c #865E1B",
-":) c #64430A",
-"<) c #E89B16",
-"[) c #DF9516",
-"}) c #E09615",
-"|) c #D08B14",
-"1) c #BF8112",
-"2) c #AF7510",
-"3) c #9E6A0F",
-"4) c #9F6B0F",
-"5) c #A16B0E",
-"6) c #9F6A0E",
-"7) c #9E6A0D",
-"8) c #9E690E",
-"9) c #8C5D09",
-"0) c #936009",
-"a) c #9F680A",
-"b) c #AE730B",
-"c) c #BB7B0C",
-"d) c #C27F0C",
-"e) c #C3800D",
-"f) c #C4800D",
-"g) c #C3810E",
-"h) c #A06702",
-"i) c #A16602",
-"j) c #D28E15",
-"k) c #C08216",
-"l) c #B07918",
-"m) c #A67319",
-"n) c #A97A2A",
-"o) c #B0863D",
-"p) c #B3883E",
-"q) c #AB7B28",
-"r) c #A26D11",
-"s) c #A16C0F",
-"t) c #A06B0E",
-"u) c #9F6A0F",
-"v) c #9E6A0E",
-"w) c #9E690D",
-"x) c #9B670D",
-"y) c #9C670C",
-"z) c #9B660C",
-"A) c #976409",
-"B) c #C27F0B",
-"C) c #C3810C",
-"D) c #C07F0C",
-"E) c #C07E0D",
-"F) c #9E6501",
-"G) c #B87B0F",
-"H) c #B17712",
-"I) c #A66F10",
-"J) c #A57621",
-"K) c #CCB180",
-"L) c #DBC7A4",
-"M) c #E1CFAF",
-"N) c #D9C39D",
-"O) c #CCAE7A",
-"P) c #BB934F",
-"Q) c #AA7923",
-"R) c #A26C0F",
-"S) c #9D670D",
-"T) c #A56D09",
-"U) c #B0730A",
-"V) c #BF7D0B",
-"W) c #C17E0B",
-"X) c #C07E0C",
-"Y) c #BE7C0B",
-"Z) c #A16701",
-"`) c #A06909",
-" ! c #A56F11",
-".! c #B28332",
-"+! c #D5BB8F",
-"@! c #F9F5EF",
-"#! c #F2EBDF",
-"$! c #E7D8BF",
-"%! c #D8C098",
-"&! c #BC934F",
-"*! c #A67218",
-"=! c #A26D0F",
-"-! c #9D690D",
-";! c #9D680C",
-">! c #96630C",
-",! c #9A660B",
-"'! c #A96F0A",
-")! c #B1740A",
-"!! c #BC7B0A",
-"~! c #BE7C0A",
-"{! c #BD7C0A",
-"]! c #BC7C0A",
-"^! c #AF7D25",
-"/! c #DAC39B",
-"(! c #F5EFE5",
-"_! c #F9F6F0",
-":! c #F6F0E7",
-"~ c #AA6D04",
-",~ c #A06601",
-"'~ c #A16704",
-")~ c #A87316",
-"!~ c #AA761B",
-"~~ c #A77011",
-"{~ c #A77111",
-"]~ c #A67111",
-"^~ c #A67011",
-"/~ c #A46D0D",
-"(~ c #A46D0A",
-"_~ c #A56B08",
-":~ c #A56C07",
-"<~ c #A56B05",
-"[~ c #A66B04",
-"}~ c #A06703",
-"|~ c #A66E0D",
-"1~ c #A87213",
-"2~ c #A66E0C",
-"3~ c #A46C09",
-"4~ c #A46B07",
-"5~ c #A36A04",
-"6~ c #A56903",
-"7~ c #A66B03",
-"8~ c #A26804",
-"9~ c #A26904",
-"0~ c #A26702",
-"a~ c #A36902",
-"b~ c #A46A03",
-"c~ c #A26902",
-" ",
-" ",
-" ",
-" . ",
-" + @ . . . ",
-" # $ % . . . . ",
-" . & $ * . . . . + @ ",
-" . . = $ . . . . # $ % ",
-" . . . $ - . . . . & $ * ",
-" . . . . $ ; . . . . = $ ",
-" + @ . . . . > $ , . . . . $ - ",
-" # $ % . . . . ' $ * . . . . $ ; ",
-" & $ * . . . . ) $ . . . . > $ , ",
-" = $ . . . . ! $ ~ . . . ' $ * ",
-" $ - . . { ] ^ / ( _ : < < [ } | 1 2 ) $ ",
-" $ ; 3 4 5 6 7 8 9 0 a b c d e f g g g g h i j k l m n o p q r s t u v w x y z A B C D E F G H I J K L M ",
-" N O P Q R S T U V g h W W W h g f X Y Z ` U ...+.@.#.$.%.&.*.=.E F -.;.>.,.'.).!.~.{.].^./.I (._.:.<.[.}.|.|.1.2.3.4.o 5.6.7. ",
-" 8.9.0.a.b.c.d.i i e.1.f.g.h.i.j.k.l.m.n.o.p.q.3 r. s.$ t. u.v.w. x.y.z.A.B.C.D.E.F.G.H.I.J.K. ",
-" L.<.M.1.N.W h O.P.Q.R.S.T.U.V. ] W. . . X.$ Y. . . . . Z.`. +.+ ",
-" ++@+#+$+%+&+*+=+-+;+>+,+'+)+!+ . . . . ' $ ~+ . . . . # $ {+ ",
-" a d ]+^+/+(+_+:+<+ [+}+ . . . . |+$ . . . . X.$ Y. ",
-" 1+2+3+4+ $ 5+ . . . . + $ . . . . ' $ ~+ ",
-" 6+$ 7+ . . . . 8+$ . . . . |+$ ",
-" # $ 9+ . . . . . . . . . . . . 0+a+b+2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . c+$ ",
-" X.$ @ . . . . . . . . . . . . . . . . . . . . d+$ e+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ! $ f+. . . ",
-" g+$ h+. . . . . . . . . . . . . . . . . $ i+ . . . . a+b+2 . . . . ",
-" . . . . j+$ k+. . . . . . . . . $ l+ . . . . $ - . ",
-" . . . . . . . . m+$ n+ . . . . 6+$ o+ . . . . $ i+ ",
-" . . . . . . . 8+$ . . . . p+$ q+ . . . . $ l+ ",
-" . . . . a+b+ . . . . r+$ g+ . . . . 6+$ o+ ",
-" $ - . . . . s+$ X. . . . . p+$ q+ ",
-" $ i+ . . . . t+$ u+ . . . . . . r+$ g+ ",
-" $ l+ . . . . . . . . . . . . v+$ w+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . x+$ s.. ",
-" 6+$ o+ . . . . . . . . . . . . . . . . . . . . g+$ y+. . . . . . . . . . . . . . . . . . . . . . . . . . . . . s.$ z+. . . . . . . ",
-" 6+$ 9+ . . . . . . . . . . . . . . . . . A+$ . . . . B+$ C+ . . . . . . . ",
-" . D+$ r+. . . . . . . . . . E+$ . . . . % $ F+ ",
-" . . . . . C+$ s.. . . . . m+$ . . . . 7+$ ",
-" . . . . . . . Y.$ > . . . . 5+$ . . . . E+$ ",
-" . . . 9+$ * . . . . G+$ . . . . m+$ ",
-" % $ H+ . . . . I+$ . . . . 5+$ ",
-" 7+$ . . . . J+$ . . . . G+$ ",
-" E+$ . . . . K+$ L+M+ 0+. I+$ ",
-" m+$ . . N+W. O+P+ Q+R+S+T+U+V+W+X+Y+Z+Z+`+ @.@+@@@#@$@%@&@*@=@-@;@>@,@'@)@ ",
-" 5+$ . W. !@~@{@9 ]@^@/@(@V |.h h W W W W h h |._@}.:@<@[@}@|@1@2@3@4@5@6@2.k _@W h h |.j %+7@0.8@9@o 5@0@a@b@++c@d@e@ ",
-" G+$ f@g@h@i@j@k@f.1.h W h f j Y l@m@n@o@p@q@r@s@t@u@v@w@x@y@z@A@B@C@D@E@F@G@H@H@I@J@J@K@L@M@N@O@P@Q@R@S@T@E.U@V@W@X@Y@Z@2@`@N.e.Z +._. ",
-" #.#+#@###` Y X f g V b.$#%#*#=#-#;#>#,#'#)# $ !# . . . . ~#{# ]#^#/#(#_#:.:# ",
-" <#[#}#|#V W W h 1#:.2#3#4#5#6# . . $ K+ . . . . $ a+ ",
-" 7#8#m e.W 9#0#a#T.b#c# d#W. . . $ e# . . . . $ !# ",
-" f#j i g#G@h#i#j# . . . . $ k# . . . . $ K+ ",
-" l#m#n# b+$ . . . . $ o# . . . . $ e# ",
-" $ a+ . . . . $ o# . . . . $ k# ",
-" $ !# . . . . $ p# . . . . $ o# ",
-" $ K+ . . . . $ }+ . . . . $ o# ",
-" $ e# . . . . $ q# . . . . . . . . . . . . . $ r# ",
-" $ k# . . . . . . . . . . [+$ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . s#$ }+. . . . . . . . ",
-" $ o# . . . . . . . . . . . . . . . . . t#$ 2 . . . . . . . . . . . . . . . . . . . . u#$ q#. . . . . . . . . . . . . ",
-" $ o# . . . . . . . . . . . . . . . . v#$ . . . . [+$ . . . . . . ",
-" $ r#. . . . . . . . . . . . . o#$ . . . . t#$ ",
-" w#$ }+. . . . . . . . . x#$ . . . . v#$ ",
-" . . . 2 $ q#. . . . . y#$ . . . . o#$ ",
-" . . . [+$ . . . . + $ . . . . x#$ ",
-" t#$ . . . . ) $ . . . . y#$ ",
-" v#$ . . . . z#$ . . . . + $ ",
-" o#$ . . . . j+$ F+ . . . . ) $ ",
-" x#$ . . . . 9+$ * . . . . z#$ ",
-" y#$ . . . . A#$ > . . . . . . . . . . . . B#$ C# ",
-" + $ . . . . . . . . . . . D#$ E#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . s+$ F#. . . . . . ",
-" ) $ . . . . . . . . . . . . . . . . . . G#$ H#. . . . . . . . . . . . . . . . . . . . . . . # $ I#. . . . . . . . . . . ",
-" z#$ J# . . . . . . . . . . . . . . . . . K#$ L# . . . . r+$ M# . . . . . . ",
-" N#$ F#. . . . . . . . . . . . $ O# . . . . P#$ Q# ",
-" . . R#$ w+. . . . . . . . $ S# . . . . T#$ L# ",
-" . . . . p+$ U# . . . . V#[+ . . . . $ O# ",
-" . . . W#$ t+ . . . . G+$ . . . . $ S# ",
-" P#$ Q# . . . . ; $ X#Y# . . V#[+ ",
-" T#$ L# . . W.Z# `# $.$ +$@$#$$$%$&$*$z@=$-$-$;$>$,$+@'$)$!$~${$]$^$/$=+($ _$:$ ",
-" $ O# N+<$ [$}$|$1$2$3$4$[@5$_@h W W W W W W h |._@6$:@7$#+8$A 1@1@1@4.8$9$Y g h W h _@5$0$3.n 4.a$b$c$d$e$X+7.f$g$ ",
-" $ S# h$i$j$k$2@ .k W W W g e.X k l$`@ ...m$n$o$p$q$*.r$s$t$u$v$w$A@V+4+x$V+V+y$z$*$A$B$C$D$E$F$G$H$S@I$E.J$K$L$M$N$O$s P$k j Y o@Q$( ",
-" R$S$T$5@` Y X f i U$l@o@V$W$X+X$,@Y$Z$`$ %.%+% $ k# . . . . @%#%$% %%&%*%=%-%;%B >% ",
-" ,%'%)%!%~%W W W l@{%]%^%/%(%_% . . = $ . . . . $ :% <% ",
-" 7#[%2.f W }%|%1%2%3%4% 5%N+~ . . & $ * . . . . $ k# ",
-" Z+5$2.6%7%8%9%0%a%b% . . . . # $ & . . . . = $ ",
-" c%d%e%n# W#$ B+ . . . . $ k# . . . . & $ * ",
-" $ :% . . . . :%9+ . . # $ & ",
-" $ k# . . . . $ k# ",
-" = $ . . . . :%9+ f%g%h%i%j% ",
-" & $ * . . k%l%m%h%n%o%p%p%q% ",
-" # $ & . . r%r%s%t%u%v%w%x%y%z%A%B%C%D% ",
-" $ k# E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%l%j% ",
-" :%9+ U%V%V%W%X%Y%Z%`% &.&+&@&$&%&&&*&=&-&;&>&,&m% ",
-" '&)&!&~&{&]&^&/&(&_&:&<&[&}&&&|&1&2&3&4&5&6&7&8&9&0&a&b& ",
-" c&d&e&f&g&h&'&i&j&k&l&m&n&. o&p&q&r&s&t&u&v&w&x&y&z&A&B&-&C&D&E&F&G& ",
-" H&I&J&K&L&M&N&O&P&Q&R&S&. T&U&V&W&X&r&o&Y&o&Z&`&u& *.*+*@*#*$*%*&*%&**=*-*j% ",
-" ;*>*,*'*)*!*~*{*]*^*/*(*_*:*<*[*}*_*|*1*2*3*4*5*Z&Z&Z&6*7*8*9*0*a*b*c*d*e*f*e*g*h*q% ",
-" i*j*>*i*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*T&z*/*A*B*C*D*4*E*F*G*H*I*J*K*L*M*N*K*O*P*Q*Q*f*R*Y%S* ",
-" T*U*V*i*W*X*Y*Z*`* =.=+=@=#=$=%=&=*===-=;=>=,='=)=_*)=!=~=H*{=]=^=/=(=P*P*_=(=:=:=<=K*O*O*O*O*Q*[=}=|= ",
-" 1=2=3=4=U*1=5=6=7=8=9=0=a=b=c=d=e=f=g=$=h=i=y*j=k=l=m=n=o=p=q=r=s=t=u=v=(=w=x=v=y=z=z=(=w=w=<=<=K*A=P*P*O*B=a*|=C% ",
-" C=`%D=E=F=3=G=H=5=I=J=K=L=M=N=O=P=Q=R=S=T=U=V=W=X=Y=Z=y*`=m= -.-+-@-u=#-$-%-%-%-$-&-&-*-*-y=y=z=z=(=w=:=<=K*A=K*O*O*f*=---q% ",
-" ;->-,-'-)-,-!-~-{-]-^-/-(-_-:-<-[-}-5=|-1-2-`%,->-3->-4-5-6-7-8-s=9-0-a-b-c-d-e-R&f-f-g-h-i-i-*-y=v=y=z=z=z=(=w=_=<=%&K* O*j-k-l- ",
-" m-n-V=m-$=o-p-q-r-s-t-1=u-v-w-x-y-/&z-~-A-h=>-B-p-2-p-S=2-3-C-D-E-F-a-a-0-G-H-H-0-I-a-J-e-f-f-K-L-i-=*=*M-y=y=y=z=z=(=w=:=K*K* N-O-P- ",
-" Q-m=R-S-T-e=U-V-W-X-Y-Z-`- ;.;+;@;#;$;@;%;5=&;T**;=;-;;;`%>;,;';);!;~;0-{;F-F-];G-G-H-H-0-#-#-^;R&f-f-K-$-i-%-&-*-v=y=v=z=z=z=w=w=:=<=:= /;(;P-_; ",
-" T&:;==<;[;T=};|;1;2;N&3;4;5;6;+;Z%]*7;8;9;$;0;a;b;b;c;5=d;e;f;g;h;i;j;k;k;l;m;j;n;!;o;F-p;];G-G-H-H-b-a-#-e-R&K-f-f-f-q;&-r;s;y=y=z=z=z=(=(=w=t;d* :=u;v;m%w; ",
-" x;y;W&!=z;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;I&T;N;>*j*1=U;V;W;X;Y;Z;`; > >.>+>@>m;#>#>!;!;F-!;F-];G-G-H-0-0-0-#-$>e-R&f-K-K-i-i-&-r;M-v=v=z=(=e*%>d*&>*>=>->;>>>s%,>g% ",
-" Y&'>7*)>!>~>q={>]>^>/>(>_>:><>[>}>|>e&1>2>d&'&)*)*a&3>4>5>6>7>8>9>0>a>Y;b>c>d>e>e>f>g>g>h> =+>+>@>m;m;#>o;!;F-F-];G-G-H-0-0-0-b-#-f-f-f-K-K-K-i-i>z=b*/;j>k>l>m>n>o>p>h*_;j%j% ",
-" u&`&5*q>r>s>n=D-t>u>v>w>x>y>z>A>B>C>D>E>F>G>H>I>J>K>J>P;P;I&L>M>N>O>P>Q>R>S>S>S>T>U>U>6=6=V>W>Z;g>X> =.>m;Y>m;#>j;F-F-l;Z>];G-H-0-0-0-`>a-R&f-f-K-$- ,.,P*#-+,M>@,g&I%#,V%r%k% ",
-" $,%,&,*,=,v&-,;,>,,,',h*),W%!,~,{,],^,/,(,_,:,<,[,d&},|,1,J>2,3,4,5,R>6,8=8=7,Q>Q>i;Q>S>S>T>T>6=8,6=W>Z;9,X>.>.>+>m;m;0,#>o;o;F-F-];G-G-0-0-0-I-#-$>=*x=*-a,o*b,c,(,x>d,e,f,G% ",
-" 7&A&g,A&g,h,i,%;j,k,l,X-m,n,o,p,q,r,d,s,t,u,/,v,w,x,y,z,K>c,A,B,C,D,E,O&F,G,H,G,I,J,7,K,7,Q>i;L,S>T>b>6=6=6=M,g>9,9,N, =@>+>m;m;j;!;!;F-p;];G-0-H-0-b-O,];P,Q,R,S,T,r%I%U,v,U, ",
-" 9&8&r>g,V,W,X,Y,Z,~ `, '.'+'@'l%#'$'%'&'*'*',&='*',&-'>>;'>',''')'!'~'{']'^'/'/'D,('G,_'J,7,Y;Q>Q>i;i;S>T>T>b>6=6=8,g>e>e>h>.>@>m;m;m;#>#>:'k;<'G-F-m;E-['}'|'c,,&(,*'[,1' ",
-" 2'3'4'5'6'7'8'9'o%0'k%h*f,V%a'--b'c'd'u%U%G%e'f'g'h'i'j'k'l'm'n'o'k'n'n']']'p'/'{'('G,H,I,7,Y;Y;Q>i;R>q'T>T>6=6=6=6=8,g>g>9,9, = =j;r'G-s'm;t'u'O-v'~*)*e&w'/,|,x' ",
-" 9&y',&z'A'B'C'D'_;E',>--f%l%F'G'v%H'I'b'J'K'L'M'N'O'P'k'Q'Q'[>[>O'n'o'n']']'p'p'{'/'D,H,H,I,I,7,7,K,R>i;i;S>T>U>6=6=6=8,f>d>R'S'k;g>+,T'U'V'W'X'K>P;x'I> ",
-" 0&Y'Z'`' ).)j%_;_;j%+)@),>#)$)%)&)*)=)-);)>),)>)N'N'')Q'Q'Q'[>k'k'k'o'n'^')')'l'p'D,('G,H,I,J,7,Y;Q>K,q'S>S>S>6=f>d>))!)b>(-~)u-4=b;{)X'])^) ",
-" /)h,()_):)<)[)})q%|)1)2)*)3)4)=)5)=)6)6)7)8)7)>)>)N'N'')Q'Q'Q'[>O'k'o'n']')'p'p'/'D,H,H,H,J,J,7,K,i;i;i;q'M,c>9)0)a)b)c)d)e)f)a;e)g) ",
-" h)i)l-h%j)|)k)l)m)n)o)p)q)r)s)5)5)t)u)u)v)v)v)w)w)N'')x)y)x)Q'z)O'k'o'n'^']'p'p'p'/'D,('G,J,J,Y;7,K,L,Y;A)Q,U'`%B)C)d)D)E)U* ",
-" /)F)G)H)I)J)K)L)M)N)O)P)Q)R)s)s)s)5)u)=)6)7)8)w)w)>)S)y)y)Q'Q'Q'O'O'k'o'n']'^'p'p'{'H,I,I,H,5,a>I=T)U)G=V)W)X)/&Y)/& ",
-" Z)`) !.!+!@!#!$!%!&!*!=!=!s)R)k,5)=)6)6)6)v)w)w)-!;!N'y)Q'Q'Q'O'O'k'k'n')'>!>!D,p',!{-W;'!)!>-!!~!{!]!`% ",
-" /)X&^!/!(!_!:!)N'x)Q'x)Q'O'n')'l'n'2!3!'!-;4!5!>-6!2-2- ",
-" i)7!8!9!0!a!b!c!d!*)|!|!|!=!R)s)k,k,e!t)6)v)v)v)w)f!-!g!')h!i!k'Q'j!O-k!l!k=j=>=m!e= ",
-" i)/)n!o!p!q!r!s!s!t!u!*)|!|!R)=!k,5)v!t)6)=)w!v)w)-!x!y!;!z!|;A!)=B!==k=*=m= ",
-" C!D!E!F!G!H!I!s!u!u!|!*)|!=!R)s)k,5)J!=)6)v)v)w!3!K!L!M!N!M!O!O!== ",
-" P!Q!R!S!T!I!U!s!V!*)|!*)|!=!R)s)W!5)X!Y!Z!f=~>`! ~.~!=T&T& ",
-" C!X&+~@~#~$~U!s!s!%~%~&~|!*~M;=~-~;~`&>~v&5*'>'> ",
-" ,~'~)~!~~~{~]~^~s!/~(~_~:~<~[~%,B&>~o& ",
-" }~|~1~$~2~3~4~G*5~6~A&7~5& ",
-" C!8~9~/)/)0~9&a~b~ ",
-" i),~h)/)c~ ",
-" ",
-" ",
-" ",
-" "};
diff --git a/src/Mod/Ship/InitGui.py b/src/Mod/Ship/InitGui.py
index e735befa19..5b556753dc 100644
--- a/src/Mod/Ship/InitGui.py
+++ b/src/Mod/Ship/InitGui.py
@@ -1,68 +1,73 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
class ShipWorkbench ( Workbench ):
- """ @brief Workbench of Ship design module. Here toolbars & icons are append. """
- from shipUtils import Paths, Translator
- import ShipGui
+ """ @brief Workbench of Ship design module. Here toolbars & icons are append. """
+ from PyQt4 import QtCore, QtGui
+ from shipUtils import Paths
+ import ShipGui
- Icon = Paths.iconsPath() + "/Ico.png"
- MenuText = str(Translator.translate("Ship design"))
- ToolTip = str(Translator.translate("Ship design"))
+ Icon = "Ico"
+ MenuText = str(QtCore.QT_TRANSLATE_NOOP("Ship", "Ship"))
+ ToolTip = str(QtCore.QT_TRANSLATE_NOOP("Ship", "Ship module provides some of the commonly used tool to design ship forms"))
- def Initialize(self):
- from shipUtils import Translator
- # ToolBar
- list = ["Ship_LoadExample", "Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve", "Ship_Hydrostatics"]
- self.appendToolbar("Ship design",list)
- list = ["Ship_Weights", "Ship_CreateTank", "Ship_GZ"]
- self.appendToolbar("Weights",list)
- # Simulation stuff only if pyOpenCL & numpy are present
- hasOpenCL = True
- hasNumpy = True
- try:
- import pyopencl
- except ImportError:
- hasOpenCL = False
- msg = Translator.translate("pyOpenCL not installed, ship simulations disabled\n")
- App.Console.PrintWarning(msg)
- try:
- import numpy
- except ImportError:
- hasNumpy = False
- msg = Translator.translate("numpy not installed, ship simulations disabled\n")
- App.Console.PrintWarning(msg)
- if hasOpenCL and hasNumpy:
- list = ["Ship_CreateSim", "Ship_RunSim", "Ship_StopSim", "Ship_TrackSim"]
- self.appendToolbar("Simulation",list)
-
- # Menu
- list = ["Ship_LoadExample", "Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve", "Ship_Hydrostatics"]
- self.appendMenu("Ship design",list)
- list = ["Ship_Weights", "Ship_CreateTank", "Ship_GZ"]
- self.appendMenu("Weights",list)
- if hasOpenCL and hasNumpy:
- list = ["Ship_CreateSim", "Ship_RunSim", "Ship_StopSim", "Ship_TrackSim"]
- self.appendMenu("Simulation",list)
+ def Initialize(self):
+ from PyQt4 import QtCore, QtGui
+
+ # Print a warning if Plot module can't be used
+ try:
+ import matplotlib
+ except ImportError:
+ msg = QtGui.QApplication.translate("ship_console", "Plot module is disabled, tools can't graph output curves",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '\n')
+ # ToolBar
+ shiplist = ["Ship_LoadExample", "Ship_CreateShip", "Ship_OutlineDraw", "Ship_AreasCurve", "Ship_Hydrostatics"]
+ weightslist = ["Ship_Weights", "Ship_CreateTank", "Ship_GZ"]
+ self.appendToolbar(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Ship design")),shiplist)
+ self.appendToolbar(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Weights")),weightslist)
+ self.appendMenu(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Ship design")),shiplist)
+ self.appendMenu(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Weights")),weightslist)
+ # Simulation stuff only if pyOpenCL & numpy are present
+ hasOpenCL = True
+ hasNumpy = True
+ try:
+ import pyopencl
+ except ImportError:
+ hasOpenCL = False
+ msg = QtGui.QApplication.translate("ship_console", "pyOpenCL not installed, simulations stuff will disabled therefore",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '\n')
+ try:
+ import numpy
+ except ImportError:
+ hasNumpy = False
+ msg = QtGui.QApplication.translate("ship_console", "numpy not installed, simulations stuff will disabled therefore",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '\n')
+ if hasOpenCL and hasNumpy:
+ simlist = ["Ship_CreateSim", "Ship_RunSim", "Ship_StopSim", "Ship_TrackSim"]
+ self.appendToolbar(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Simulation")),simlist)
+ self.appendMenu(str(QtCore.QT_TRANSLATE_NOOP("Ship", "Simulation")),simlist)
Gui.addWorkbench(ShipWorkbench())
diff --git a/src/Mod/Ship/Instance.py b/src/Mod/Ship/Instance.py
index 40fd10992a..da022b8b80 100644
--- a/src/Mod/Ship/Instance.py
+++ b/src/Mod/Ship/Instance.py
@@ -1,29 +1,32 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import time
from math import *
+# Qt library
+from PyQt4 import QtGui,QtCore
+
# COIN
from pivy.coin import *
from pivy import coin
@@ -34,554 +37,563 @@ from FreeCAD import Base, Vector
import Part
# Ship design module
-from shipUtils import Paths, Translator, Math
+from shipUtils import Paths, Math
class Ship:
- def __init__(self, obj, solids):
- """ Creates a new ship on active document.
- @param obj Part::FeaturePython created object.
- @param faces Ship solids components.
- """
- # Add uniqueness property to identify Ship instances
- obj.addProperty("App::PropertyBool","IsShip","Ship", str(Translator.translate("True if is a valid ship instance"))).IsShip=True
- # Add main dimensions
- obj.addProperty("App::PropertyLength","Length","Ship", str(Translator.translate("Ship length (Lpp) [m]"))).Length=0.0
- obj.addProperty("App::PropertyLength","Beam","Ship", str(Translator.translate("Ship beam (B) [m]"))).Beam=0.0
- obj.addProperty("App::PropertyLength","Draft","Ship", str(Translator.translate("Ship draft (T) [m]"))).Draft=0.0
- # Add shapes
- obj.Shape = Part.makeCompound(solids)
- obj.addProperty("Part::PropertyPartShape","ExternalFaces","Ship", str(Translator.translate("Ship only external faces")))
- obj.Proxy = self
+ def __init__(self, obj, solids):
+ """ Creates a new ship on active document.
+ @param obj Part::FeaturePython created object.
+ @param faces Ship solids components.
+ """
+ # Add uniqueness property to identify Ship instances
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship instance",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyBool","IsShip","Ship", tooltip).IsShip=True
+ # Add main dimensions
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship instance",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyLength","Length","Ship", tooltip).Length=0.0
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship instance",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyLength","Beam","Ship", tooltip).Beam=0.0
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship instance",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyLength","Draft","Ship", tooltip).Draft=0.0
+ # Add shapes
+ obj.Shape = Part.makeCompound(solids)
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship instance",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("Part::PropertyPartShape","ExternalFaces","Ship", tooltip)
+ obj.Proxy = self
- def onChanged(self, fp, prop):
- """ Called when a ship property is modified
- @param fp Part::FeaturePython object.
- @param prop Property changed.
- """
- if prop == "Length" or prop == "Beam" or prop == "Draft":
- pass
+ def onChanged(self, fp, prop):
+ """ Called when a ship property is modified
+ @param fp Part::FeaturePython object.
+ @param prop Property changed.
+ """
+ if prop == "Length" or prop == "Beam" or prop == "Draft":
+ pass
- def execute(self, fp):
- """ Called when a recomputation is needed.
- @param fp Part::FeaturePython object.
- """
- fp.Shape = Part.makeCompound(fp.Shape.Solids)
+ def execute(self, fp):
+ """ Called when a recomputation is needed.
+ @param fp Part::FeaturePython object.
+ """
+ fp.Shape = Part.makeCompound(fp.Shape.Solids)
class ViewProviderShip:
- def __init__(self, obj):
- "Set this object to the proxy object of the actual view provider"
- obj.Proxy = self
+ def __init__(self, obj):
+ "Set this object to the proxy object of the actual view provider"
+ obj.Proxy = self
- def attach(self, obj):
- ''' Setup the scene sub-graph of the view provider, this method is mandatory '''
- return
+ def attach(self, obj):
+ ''' Setup the scene sub-graph of the view provider, this method is mandatory '''
+ return
- def updateData(self, fp, prop):
- ''' If a property of the handled feature has changed we have the chance to handle this here '''
- return
+ def updateData(self, fp, prop):
+ ''' If a property of the handled feature has changed we have the chance to handle this here '''
+ return
- def getDisplayModes(self,obj):
- ''' Return a list of display modes. '''
- modes=[]
- return modes
+ def getDisplayModes(self,obj):
+ ''' Return a list of display modes. '''
+ modes=[]
+ return modes
- def getDefaultDisplayMode(self):
- ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
- return "Shaded"
+ def getDefaultDisplayMode(self):
+ ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
+ return "Shaded"
- def setDisplayMode(self,mode):
- ''' Map the display mode defined in attach with those defined in getDisplayModes.
- Since they have the same names nothing needs to be done. This method is optinal.
- '''
- return mode
+ def setDisplayMode(self,mode):
+ ''' Map the display mode defined in attach with those defined in getDisplayModes.
+ Since they have the same names nothing needs to be done. This method is optinal.
+ '''
+ return mode
- def onChanged(self, vp, prop):
- ''' Print the name of the property that has changed '''
- # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
+ def onChanged(self, vp, prop):
+ ''' Print the name of the property that has changed '''
+ # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
- def __getstate__(self):
- ''' When saving the document this object gets stored using Python's cPickle module.
- Since we have some un-pickable here -- the Coin stuff -- we must define this method
- to return a tuple of all pickable objects or None.
- '''
- return None
+ def __getstate__(self):
+ ''' When saving the document this object gets stored using Python's cPickle module.
+ Since we have some un-pickable here -- the Coin stuff -- we must define this method
+ to return a tuple of all pickable objects or None.
+ '''
+ return None
- def __setstate__(self,state):
- ''' When restoring the pickled object from document we have the chance to set some
- internals here. Since no data were pickled nothing needs to be done here.
- '''
- return None
+ def __setstate__(self,state):
+ ''' When restoring the pickled object from document we have the chance to set some
+ internals here. Since no data were pickled nothing needs to be done here.
+ '''
+ return None
- def getIcon(self):
- return """
- /* XPM */
- static char * Ship_xpm[] = {
- "32 32 396 2",
- " c None",
- ". c #2C2C2C",
- "+ c #3A3A3A",
- "@ c #585857",
- "# c #161616",
- "$ c #000000",
- "% c #363636",
- "& c #333333",
- "* c #B3B3B3",
- "= c #B4B4B4",
- "- c #949494",
- "; c #565653",
- "> c #141414",
- ", c #080807",
- "' c #585858",
- ") c #878787",
- "! c #9F9E9F",
- "~ c #9F9F9E",
- "{ c #8F8F90",
- "] c #6B6B6B",
- "^ c #101010",
- "/ c #737373",
- "( c #4C4C4C",
- "_ c #B1B1B7",
- ": c #9090C0",
- "< c #A7A7B2",
- "[ c #87878E",
- "} c #4F4F52",
- "| c #191919",
- "1 c #656565",
- "2 c #D1D1D2",
- "3 c #D1D1D1",
- "4 c #CECECE",
- "5 c #CDCCCC",
- "6 c #CCCCCC",
- "7 c #CCCCCB",
- "8 c #CDCECD",
- "9 c #BDBDBD",
- "0 c #424242",
- "a c #373737",
- "b c #0A0A0A",
- "c c #241414",
- "d c #0E0C0C",
- "e c #929393",
- "f c #383738",
- "g c #9B9B9A",
- "h c #A0A0AF",
- "i c #2929E4",
- "j c #2525E5",
- "k c #3F3FD7",
- "l c #5B5BC8",
- "m c #535368",
- "n c #686866",
- "o c #C8C8C8",
- "p c #C8C8C7",
- "q c #C7C6C7",
- "r c #C6C6C6",
- "s c #C5C5C5",
- "t c #C4C5C5",
- "u c #C3C4C3",
- "v c #C3C3C2",
- "w c #BCBCBC",
- "x c #595959",
- "y c #A6A6A6",
- "z c #969696",
- "A c #0B0B0B",
- "B c #0D0707",
- "C c #894646",
- "D c #1C1A1A",
- "E c #525252",
- "F c #6C6D6C",
- "G c #A3A3A2",
- "H c #A3A296",
- "I c #8E8F98",
- "J c #6F6EA5",
- "K c #5354AF",
- "L c #373753",
- "M c #8D8D8B",
- "N c #C5C5C4",
- "O c #C2C2C2",
- "P c #C1C1C1",
- "Q c #C0C0C0",
- "R c #C0BFBF",
- "S c #BFBFBF",
- "T c #BEBEBE",
- "U c #B1B2B2",
- "V c #404040",
- "W c #ABAAAA",
- "X c #797979",
- "Y c #2A1212",
- "Z c #662828",
- "` c #3D403F",
- " . c #B5B5B5",
- ".. c #6B6A6B",
- "+. c #4A4A4A",
- "@. c #9A9A9A",
- "#. c #909090",
- "$. c #8B8B8A",
- "%. c #898A86",
- "&. c #84837F",
- "*. c #3D3D3C",
- "=. c #9E9E9E",
- "-. c #BFBFBE",
- ";. c #BDBEBD",
- ">. c #BBBBBB",
- ",. c #BABABA",
- "'. c #B9B9B9",
- "). c #B8B8B8",
- "!. c #999999",
- "~. c #BABAB9",
- "{. c #ABABAB",
- "]. c #292929",
- "^. c #381212",
- "/. c #4C1514",
- "(. c #535656",
- "_. c #717171",
- ":. c #919090",
- "<. c #818181",
- "[. c #4E4E4E",
- "}. c #4B4B4B",
- "|. c #B1B1B1",
- "1. c #B8B7B8",
- "2. c #B6B6B6",
- "3. c #B6B5B5",
- "4. c #B4B5B4",
- "5. c #B2B3B2",
- "6. c #5C5D5C",
- "7. c #AFAFAF",
- "8. c #ADACAC",
- "9. c #5B5B5B",
- "0. c #410C0C",
- "a. c #3E0707",
- "b. c #525555",
- "c. c #9C9C9C",
- "d. c #2D2D2D",
- "e. c #757575",
- "f. c #474747",
- "g. c #484848",
- "h. c #9F9F9F",
- "i. c #B3B3B4",
- "j. c #B2B2B2",
- "k. c #B0B0B0",
- "l. c #ADAEAD",
- "m. c #ADADAD",
- "n. c #B0B1B0",
- "o. c #1E1E1E",
- "p. c #ACABAC",
- "q. c #AAA9A9",
- "r. c #A8A8A8",
- "s. c #5D5D5D",
- "t. c #290202",
- "u. c #281010",
- "v. c #272828",
- "w. c #767777",
- "x. c #505050",
- "y. c #1F1F1F",
- "z. c #5E5E5D",
- "A. c #A4A5A5",
- "B. c #B1B2B1",
- "C. c #AEAEAE",
- "D. c #AEADAD",
- "E. c #ABACAC",
- "F. c #AAAAAA",
- "G. c #A9A8A8",
- "H. c #ABABAC",
- "I. c #7B7B7B",
- "J. c #2B2B2B",
- "K. c #A4A4A4",
- "L. c #A6A5A6",
- "M. c #888888",
- "N. c #0E0E0E",
- "O. c #101312",
- "P. c #7E8080",
- "Q. c #5E5E5E",
- "R. c #242424",
- "S. c #555555",
- "T. c #7F7F7F",
- "U. c #A4A3A4",
- "V. c #B3B3B2",
- "W. c #ACACAC",
- "X. c #A9A9A9",
- "Y. c #A8A7A7",
- "Z. c #A7A6A7",
- "`. c #A7A7A7",
- " + c #A8A8A7",
- ".+ c #A5A5A5",
- "++ c #A2A2A2",
- "@+ c #222122",
- "#+ c #7E7E7E",
- "$+ c #A3A3A3",
- "%+ c #9B9B9B",
- "&+ c #050505",
- "*+ c #6E6E6E",
- "=+ c #A7A7A6",
- "-+ c #989898",
- ";+ c #A5A4A4",
- ">+ c #A7A7A8",
- ",+ c #A5A6A7",
- "'+ c #979A99",
- ")+ c #818383",
- "!+ c #757878",
- "~+ c #757979",
- "{+ c #878A8A",
- "]+ c #A3A5A5",
- "^+ c #828282",
- "/+ c #A0A0A0",
- "(+ c #232323",
- "_+ c #939393",
- ":+ c #A5A6A5",
- "<+ c #A2A3A2",
- "[+ c #A2A1A1",
- "}+ c #A1A0A1",
- "|+ c #939292",
- "1+ c #636262",
- "2+ c #554D4D",
- "3+ c #634C4C",
- "4+ c #755555",
- "5+ c #936464",
- "6+ c #9F6868",
- "7+ c #9B6060",
- "8+ c #804A4A",
- "9+ c #5C3737",
- "0+ c #1D1616",
- "a+ c #A1A1A1",
- "b+ c #010101",
- "c+ c #151516",
- "d+ c #707070",
- "e+ c #9D9E9E",
- "f+ c #8C8D8D",
- "g+ c #8B8888",
- "h+ c #726A6A",
- "i+ c #6D5959",
- "j+ c #866261",
- "k+ c #C18B8B",
- "l+ c #D79696",
- "m+ c #D18C8C",
- "n+ c #CB8180",
- "o+ c #C57575",
- "p+ c #BF6B6A",
- "q+ c #BB6161",
- "r+ c #B95958",
- "s+ c #9C4544",
- "t+ c #2E1212",
- "u+ c #6F6C6C",
- "v+ c #A0A1A1",
- "w+ c #575757",
- "x+ c #0C0C0C",
- "y+ c #9C9D9D",
- "z+ c #7A7272",
- "A+ c #876F6F",
- "B+ c #977070",
- "C+ c #C28C8C",
- "D+ c #D59595",
- "E+ c #D08A8A",
- "F+ c #C67D7D",
- "G+ c #C07272",
- "H+ c #BC6969",
- "I+ c #B85F5F",
- "J+ c #B35656",
- "K+ c #B04C4C",
- "L+ c #AB4243",
- "M+ c #A63939",
- "N+ c #591B1B",
- "O+ c #6A2121",
- "P+ c #542323",
- "Q+ c #585A5A",
- "R+ c #191515",
- "S+ c #706262",
- "T+ c #A58080",
- "U+ c #B58383",
- "V+ c #CE8F8F",
- "W+ c #CD8989",
- "X+ c #C17372",
- "Y+ c #B45656",
- "Z+ c #AF4C4C",
- "`+ c #AB4242",
- " @ c #A73A39",
- ".@ c #A3302F",
- "+@ c #9F2626",
- "@@ c #8E1A1A",
- "#@ c #2C0808",
- "$@ c #91191A",
- "%@ c #2F0200",
- "&@ c #90C6FB",
- "*@ c #8BBFFB",
- "=@ c #94CBFC",
- "-@ c #AFEFFB",
- ";@ c #7DABA0",
- ">@ c #3C2521",
- ",@ c #C88484",
- "'@ c #C57C7D",
- ")@ c #C17273",
- "!@ c #B86060",
- "~@ c #AB4343",
- "{@ c #A73939",
- "]@ c #A32F2F",
- "^@ c #9B1C1D",
- "/@ c #961313",
- "(@ c #96090A",
- "_@ c #3C0202",
- ":@ c #4E0202",
- "<@ c #300000",
- "[@ c #3E5378",
- "}@ c #7EABF9",
- "|@ c #84B5FC",
- "1@ c #96CDFB",
- "2@ c #B2F2FA",
- "3@ c #C4FFFA",
- "4@ c #2E3FFD",
- "5@ c #3346FD",
- "6@ c #2A3AFD",
- "7@ c #161EFE",
- "8@ c #1B25FD",
- "9@ c #1F25B4",
- "0@ c #7C6196",
- "a@ c #AA6075",
- "b@ c #AC5763",
- "c@ c #AD5155",
- "d@ c #AD4645",
- "e@ c #A83938",
- "f@ c #A3302E",
- "g@ c #A02624",
- "h@ c #9B1C1B",
- "i@ c #971311",
- "j@ c #930A09",
- "k@ c #900300",
- "l@ c #900505",
- "m@ c #660007",
- "n@ c #00000D",
- "o@ c #200112",
- "p@ c #597F88",
- "q@ c #6E97FD",
- "r@ c #384CFD",
- "s@ c #394EFD",
- "t@ c #2D3EFD",
- "u@ c #151DFE",
- "v@ c #1821FE",
- "w@ c #3C52FD",
- "x@ c #6388FC",
- "y@ c #9CD6FB",
- "z@ c #D0FFFA",
- "A@ c #AEEEFB",
- "B@ c #749FFF",
- "C@ c #3F5DFF",
- "D@ c #4165FF",
- "E@ c #525AE3",
- "F@ c #6153C4",
- "G@ c #672D8D",
- "H@ c #6C1B6A",
- "I@ c #722164",
- "J@ c #75225E",
- "K@ c #731D57",
- "L@ c #701653",
- "M@ c #690E52",
- "N@ c #5F0050",
- "O@ c #562086",
- "P@ c #11108D",
- "Q@ c #2330BE",
- "R@ c #344AE1",
- "S@ c #4E6BFF",
- "T@ c #4E6BFD",
- "U@ c #597AFC",
- "V@ c #6184FC",
- "W@ c #7099FC",
- "X@ c #8BBEFB",
- "Y@ c #95CCFB",
- "Z@ c #5B7CFC",
- "`@ c #1C26FD",
- " # c #121AFE",
- ".# c #9ED7FB",
- "+# c #81B4FF",
- "@# c #6893FF",
- "## c #6997FF",
- "$# c #6695FF",
- "%# c #6390FF",
- " c #618DFF",
- "*# c #608DFF",
- "=# c #618EFF",
- "-# c #6391FF",
- ";# c #6898FF",
- "># c #6B9AFF",
- ",# c #5171ED",
- "'# c #90C4FF",
- ")# c #7EABFC",
- "!# c #729CFC",
- "~# c #6287FC",
- "{# c #4761FD",
- "]# c #070AFE",
- "^# c #6084FC",
- "/# c #9AD2FB",
- "(# c #A2DDFB",
- "_# c #8ABDFB",
- ":# c #2B3AFD",
- "<# c #A9E8FB",
- "[# c #B9FCFA",
- "}# c #BAFEFA",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " . + @ # $ $ $ $ $ ",
- " % & * = - ; > $ $ , ' ) ! ~ { ] & $ $ $ ",
- " ^ / ( = _ : < [ } | $ 1 2 3 4 5 6 7 6 8 9 0 a b ",
- " c d e f g h i j k l m n 4 o p q r s t u v w x y z A ",
- " B C D * E F G H I J K L M N O O P Q R S T 9 U V W O X $ ",
- " Y Z ` ...+.@.#.$.%.&.*.=.-.;.w >.>.,.'.).).!.+ ~. .{.]. ",
- " ^./.(.y _.f :.) <.[.^ }.|.).1.2.3. .4.* 5. .6.1 4.7.8.9. ",
- " 0.a.b.c./ d.e.f.| g.h.9 i.* j.|.k.7.7.l.m.n.o.@.p.q.r.s. ",
- " t.u.v.w.x.y.% z.A.).B.C.D.m.E.{.F.F.G.r.H.I.J.k.K.L.M.N. ",
- " O.P.Q.R.S.T.U.V.W.q.X.r.Y.Z.`.Y. +`..+++{.@+#+$+++%+y. ",
- " &+*+W.=+-+;+X.>+y .+K.K.y y ,+'+)+!+~+{+]+^+].$+/+$+J. ",
- " (+_+:+U.$+<+[+}+/+h.=.|+1+2+3+4+5+6+7+8+9+0+_.a+/+0 b+ ",
- " c+d+h.a+/+++e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+$ ",
- " x+f.- y+w.z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+$ ",
- " R+S+T+U+V+W+F+X+H+I+Y+Z+`+ @.@+@@@#@$@%@$ ",
- "&@*@=@-@;@>@,@'@)@H+!@Y+K+~@{@]@+@^@/@(@_@:@<@[@}@|@1@2@3@ ",
- "4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@",
- " z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #",
- " .#+#@###$#%#*#=#-#;#>#,#'# )#!#~#{#]#^#/#",
- " (#_#:#<#",
- " [#}#",
- " ",
- " ",
- " ",
- " "};
- """
+ def getIcon(self):
+ return """
+ /* XPM */
+ static char * Ship_xpm[] = {
+ "32 32 396 2",
+ " c None",
+ ". c #2C2C2C",
+ "+ c #3A3A3A",
+ "@ c #585857",
+ "# c #161616",
+ "$ c #000000",
+ "% c #363636",
+ "& c #333333",
+ "* c #B3B3B3",
+ "= c #B4B4B4",
+ "- c #949494",
+ "; c #565653",
+ "> c #141414",
+ ", c #080807",
+ "' c #585858",
+ ") c #878787",
+ "! c #9F9E9F",
+ "~ c #9F9F9E",
+ "{ c #8F8F90",
+ "] c #6B6B6B",
+ "^ c #101010",
+ "/ c #737373",
+ "( c #4C4C4C",
+ "_ c #B1B1B7",
+ ": c #9090C0",
+ "< c #A7A7B2",
+ "[ c #87878E",
+ "} c #4F4F52",
+ "| c #191919",
+ "1 c #656565",
+ "2 c #D1D1D2",
+ "3 c #D1D1D1",
+ "4 c #CECECE",
+ "5 c #CDCCCC",
+ "6 c #CCCCCC",
+ "7 c #CCCCCB",
+ "8 c #CDCECD",
+ "9 c #BDBDBD",
+ "0 c #424242",
+ "a c #373737",
+ "b c #0A0A0A",
+ "c c #241414",
+ "d c #0E0C0C",
+ "e c #929393",
+ "f c #383738",
+ "g c #9B9B9A",
+ "h c #A0A0AF",
+ "i c #2929E4",
+ "j c #2525E5",
+ "k c #3F3FD7",
+ "l c #5B5BC8",
+ "m c #535368",
+ "n c #686866",
+ "o c #C8C8C8",
+ "p c #C8C8C7",
+ "q c #C7C6C7",
+ "r c #C6C6C6",
+ "s c #C5C5C5",
+ "t c #C4C5C5",
+ "u c #C3C4C3",
+ "v c #C3C3C2",
+ "w c #BCBCBC",
+ "x c #595959",
+ "y c #A6A6A6",
+ "z c #969696",
+ "A c #0B0B0B",
+ "B c #0D0707",
+ "C c #894646",
+ "D c #1C1A1A",
+ "E c #525252",
+ "F c #6C6D6C",
+ "G c #A3A3A2",
+ "H c #A3A296",
+ "I c #8E8F98",
+ "J c #6F6EA5",
+ "K c #5354AF",
+ "L c #373753",
+ "M c #8D8D8B",
+ "N c #C5C5C4",
+ "O c #C2C2C2",
+ "P c #C1C1C1",
+ "Q c #C0C0C0",
+ "R c #C0BFBF",
+ "S c #BFBFBF",
+ "T c #BEBEBE",
+ "U c #B1B2B2",
+ "V c #404040",
+ "W c #ABAAAA",
+ "X c #797979",
+ "Y c #2A1212",
+ "Z c #662828",
+ "` c #3D403F",
+ " . c #B5B5B5",
+ ".. c #6B6A6B",
+ "+. c #4A4A4A",
+ "@. c #9A9A9A",
+ "#. c #909090",
+ "$. c #8B8B8A",
+ "%. c #898A86",
+ "&. c #84837F",
+ "*. c #3D3D3C",
+ "=. c #9E9E9E",
+ "-. c #BFBFBE",
+ ";. c #BDBEBD",
+ ">. c #BBBBBB",
+ ",. c #BABABA",
+ "'. c #B9B9B9",
+ "). c #B8B8B8",
+ "!. c #999999",
+ "~. c #BABAB9",
+ "{. c #ABABAB",
+ "]. c #292929",
+ "^. c #381212",
+ "/. c #4C1514",
+ "(. c #535656",
+ "_. c #717171",
+ ":. c #919090",
+ "<. c #818181",
+ "[. c #4E4E4E",
+ "}. c #4B4B4B",
+ "|. c #B1B1B1",
+ "1. c #B8B7B8",
+ "2. c #B6B6B6",
+ "3. c #B6B5B5",
+ "4. c #B4B5B4",
+ "5. c #B2B3B2",
+ "6. c #5C5D5C",
+ "7. c #AFAFAF",
+ "8. c #ADACAC",
+ "9. c #5B5B5B",
+ "0. c #410C0C",
+ "a. c #3E0707",
+ "b. c #525555",
+ "c. c #9C9C9C",
+ "d. c #2D2D2D",
+ "e. c #757575",
+ "f. c #474747",
+ "g. c #484848",
+ "h. c #9F9F9F",
+ "i. c #B3B3B4",
+ "j. c #B2B2B2",
+ "k. c #B0B0B0",
+ "l. c #ADAEAD",
+ "m. c #ADADAD",
+ "n. c #B0B1B0",
+ "o. c #1E1E1E",
+ "p. c #ACABAC",
+ "q. c #AAA9A9",
+ "r. c #A8A8A8",
+ "s. c #5D5D5D",
+ "t. c #290202",
+ "u. c #281010",
+ "v. c #272828",
+ "w. c #767777",
+ "x. c #505050",
+ "y. c #1F1F1F",
+ "z. c #5E5E5D",
+ "A. c #A4A5A5",
+ "B. c #B1B2B1",
+ "C. c #AEAEAE",
+ "D. c #AEADAD",
+ "E. c #ABACAC",
+ "F. c #AAAAAA",
+ "G. c #A9A8A8",
+ "H. c #ABABAC",
+ "I. c #7B7B7B",
+ "J. c #2B2B2B",
+ "K. c #A4A4A4",
+ "L. c #A6A5A6",
+ "M. c #888888",
+ "N. c #0E0E0E",
+ "O. c #101312",
+ "P. c #7E8080",
+ "Q. c #5E5E5E",
+ "R. c #242424",
+ "S. c #555555",
+ "T. c #7F7F7F",
+ "U. c #A4A3A4",
+ "V. c #B3B3B2",
+ "W. c #ACACAC",
+ "X. c #A9A9A9",
+ "Y. c #A8A7A7",
+ "Z. c #A7A6A7",
+ "`. c #A7A7A7",
+ " + c #A8A8A7",
+ ".+ c #A5A5A5",
+ "++ c #A2A2A2",
+ "@+ c #222122",
+ "#+ c #7E7E7E",
+ "$+ c #A3A3A3",
+ "%+ c #9B9B9B",
+ "&+ c #050505",
+ "*+ c #6E6E6E",
+ "=+ c #A7A7A6",
+ "-+ c #989898",
+ ";+ c #A5A4A4",
+ ">+ c #A7A7A8",
+ ",+ c #A5A6A7",
+ "'+ c #979A99",
+ ")+ c #818383",
+ "!+ c #757878",
+ "~+ c #757979",
+ "{+ c #878A8A",
+ "]+ c #A3A5A5",
+ "^+ c #828282",
+ "/+ c #A0A0A0",
+ "(+ c #232323",
+ "_+ c #939393",
+ ":+ c #A5A6A5",
+ "<+ c #A2A3A2",
+ "[+ c #A2A1A1",
+ "}+ c #A1A0A1",
+ "|+ c #939292",
+ "1+ c #636262",
+ "2+ c #554D4D",
+ "3+ c #634C4C",
+ "4+ c #755555",
+ "5+ c #936464",
+ "6+ c #9F6868",
+ "7+ c #9B6060",
+ "8+ c #804A4A",
+ "9+ c #5C3737",
+ "0+ c #1D1616",
+ "a+ c #A1A1A1",
+ "b+ c #010101",
+ "c+ c #151516",
+ "d+ c #707070",
+ "e+ c #9D9E9E",
+ "f+ c #8C8D8D",
+ "g+ c #8B8888",
+ "h+ c #726A6A",
+ "i+ c #6D5959",
+ "j+ c #866261",
+ "k+ c #C18B8B",
+ "l+ c #D79696",
+ "m+ c #D18C8C",
+ "n+ c #CB8180",
+ "o+ c #C57575",
+ "p+ c #BF6B6A",
+ "q+ c #BB6161",
+ "r+ c #B95958",
+ "s+ c #9C4544",
+ "t+ c #2E1212",
+ "u+ c #6F6C6C",
+ "v+ c #A0A1A1",
+ "w+ c #575757",
+ "x+ c #0C0C0C",
+ "y+ c #9C9D9D",
+ "z+ c #7A7272",
+ "A+ c #876F6F",
+ "B+ c #977070",
+ "C+ c #C28C8C",
+ "D+ c #D59595",
+ "E+ c #D08A8A",
+ "F+ c #C67D7D",
+ "G+ c #C07272",
+ "H+ c #BC6969",
+ "I+ c #B85F5F",
+ "J+ c #B35656",
+ "K+ c #B04C4C",
+ "L+ c #AB4243",
+ "M+ c #A63939",
+ "N+ c #591B1B",
+ "O+ c #6A2121",
+ "P+ c #542323",
+ "Q+ c #585A5A",
+ "R+ c #191515",
+ "S+ c #706262",
+ "T+ c #A58080",
+ "U+ c #B58383",
+ "V+ c #CE8F8F",
+ "W+ c #CD8989",
+ "X+ c #C17372",
+ "Y+ c #B45656",
+ "Z+ c #AF4C4C",
+ "`+ c #AB4242",
+ " @ c #A73A39",
+ ".@ c #A3302F",
+ "+@ c #9F2626",
+ "@@ c #8E1A1A",
+ "#@ c #2C0808",
+ "$@ c #91191A",
+ "%@ c #2F0200",
+ "&@ c #90C6FB",
+ "*@ c #8BBFFB",
+ "=@ c #94CBFC",
+ "-@ c #AFEFFB",
+ ";@ c #7DABA0",
+ ">@ c #3C2521",
+ ",@ c #C88484",
+ "'@ c #C57C7D",
+ ")@ c #C17273",
+ "!@ c #B86060",
+ "~@ c #AB4343",
+ "{@ c #A73939",
+ "]@ c #A32F2F",
+ "^@ c #9B1C1D",
+ "/@ c #961313",
+ "(@ c #96090A",
+ "_@ c #3C0202",
+ ":@ c #4E0202",
+ "<@ c #300000",
+ "[@ c #3E5378",
+ "}@ c #7EABF9",
+ "|@ c #84B5FC",
+ "1@ c #96CDFB",
+ "2@ c #B2F2FA",
+ "3@ c #C4FFFA",
+ "4@ c #2E3FFD",
+ "5@ c #3346FD",
+ "6@ c #2A3AFD",
+ "7@ c #161EFE",
+ "8@ c #1B25FD",
+ "9@ c #1F25B4",
+ "0@ c #7C6196",
+ "a@ c #AA6075",
+ "b@ c #AC5763",
+ "c@ c #AD5155",
+ "d@ c #AD4645",
+ "e@ c #A83938",
+ "f@ c #A3302E",
+ "g@ c #A02624",
+ "h@ c #9B1C1B",
+ "i@ c #971311",
+ "j@ c #930A09",
+ "k@ c #900300",
+ "l@ c #900505",
+ "m@ c #660007",
+ "n@ c #00000D",
+ "o@ c #200112",
+ "p@ c #597F88",
+ "q@ c #6E97FD",
+ "r@ c #384CFD",
+ "s@ c #394EFD",
+ "t@ c #2D3EFD",
+ "u@ c #151DFE",
+ "v@ c #1821FE",
+ "w@ c #3C52FD",
+ "x@ c #6388FC",
+ "y@ c #9CD6FB",
+ "z@ c #D0FFFA",
+ "A@ c #AEEEFB",
+ "B@ c #749FFF",
+ "C@ c #3F5DFF",
+ "D@ c #4165FF",
+ "E@ c #525AE3",
+ "F@ c #6153C4",
+ "G@ c #672D8D",
+ "H@ c #6C1B6A",
+ "I@ c #722164",
+ "J@ c #75225E",
+ "K@ c #731D57",
+ "L@ c #701653",
+ "M@ c #690E52",
+ "N@ c #5F0050",
+ "O@ c #562086",
+ "P@ c #11108D",
+ "Q@ c #2330BE",
+ "R@ c #344AE1",
+ "S@ c #4E6BFF",
+ "T@ c #4E6BFD",
+ "U@ c #597AFC",
+ "V@ c #6184FC",
+ "W@ c #7099FC",
+ "X@ c #8BBEFB",
+ "Y@ c #95CCFB",
+ "Z@ c #5B7CFC",
+ "`@ c #1C26FD",
+ " # c #121AFE",
+ ".# c #9ED7FB",
+ "+# c #81B4FF",
+ "@# c #6893FF",
+ "## c #6997FF",
+ "$# c #6695FF",
+ "%# c #6390FF",
+ " c #618DFF",
+ "*# c #608DFF",
+ "=# c #618EFF",
+ "-# c #6391FF",
+ ";# c #6898FF",
+ "># c #6B9AFF",
+ ",# c #5171ED",
+ "'# c #90C4FF",
+ ")# c #7EABFC",
+ "!# c #729CFC",
+ "~# c #6287FC",
+ "{# c #4761FD",
+ "]# c #070AFE",
+ "^# c #6084FC",
+ "/# c #9AD2FB",
+ "(# c #A2DDFB",
+ "_# c #8ABDFB",
+ ":# c #2B3AFD",
+ "<# c #A9E8FB",
+ "[# c #B9FCFA",
+ "}# c #BAFEFA",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " ",
+ " . + @ # $ $ $ $ $ ",
+ " % & * = - ; > $ $ , ' ) ! ~ { ] & $ $ $ ",
+ " ^ / ( = _ : < [ } | $ 1 2 3 4 5 6 7 6 8 9 0 a b ",
+ " c d e f g h i j k l m n 4 o p q r s t u v w x y z A ",
+ " B C D * E F G H I J K L M N O O P Q R S T 9 U V W O X $ ",
+ " Y Z ` ...+.@.#.$.%.&.*.=.-.;.w >.>.,.'.).).!.+ ~. .{.]. ",
+ " ^./.(.y _.f :.) <.[.^ }.|.).1.2.3. .4.* 5. .6.1 4.7.8.9. ",
+ " 0.a.b.c./ d.e.f.| g.h.9 i.* j.|.k.7.7.l.m.n.o.@.p.q.r.s. ",
+ " t.u.v.w.x.y.% z.A.).B.C.D.m.E.{.F.F.G.r.H.I.J.k.K.L.M.N. ",
+ " O.P.Q.R.S.T.U.V.W.q.X.r.Y.Z.`.Y. +`..+++{.@+#+$+++%+y. ",
+ " &+*+W.=+-+;+X.>+y .+K.K.y y ,+'+)+!+~+{+]+^+].$+/+$+J. ",
+ " (+_+:+U.$+<+[+}+/+h.=.|+1+2+3+4+5+6+7+8+9+0+_.a+/+0 b+ ",
+ " c+d+h.a+/+++e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+$ ",
+ " x+f.- y+w.z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+$ ",
+ " R+S+T+U+V+W+F+X+H+I+Y+Z+`+ @.@+@@@#@$@%@$ ",
+ "&@*@=@-@;@>@,@'@)@H+!@Y+K+~@{@]@+@^@/@(@_@:@<@[@}@|@1@2@3@ ",
+ "4@5@6@7@8@9@0@a@b@c@d@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@w@x@y@",
+ " z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@T@U@V@W@X@Y@Z@`@ #",
+ " .#+#@###$#%#*#=#-#;#>#,#'# )#!#~#{#]#^#/#",
+ " (#_#:#<#",
+ " [#}#",
+ " ",
+ " ",
+ " ",
+ " "};
+ """
def weights(obj):
- """ Returns Ship weights list. If weights has not been sets,
- this tool creates it.
- @param obj Ship object
- @return Weights list. None if errors
- """
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- return None
- if not obj.IsShip:
- return None
- # Test if properties already exist
- try:
- props.index("WeightNames")
- except ValueError:
- obj.addProperty("App::PropertyStringList","WeightNames","Ship", str(Translator.translate("Ship Weights names"))).WeightNames=[Translator.translate("Lightweight").__str__()]
- try:
- props.index("WeightMass")
- except ValueError:
- # Compute mass aproximation
- from shipHydrostatics import Tools
- disp = Tools.displacement(obj,obj.Draft)
- obj.addProperty("App::PropertyFloatList","WeightMass","Ship", str(Translator.translate("Ship Weights masses"))).WeightMass=[1000.0 * disp[0]]
- try:
- props.index("WeightPos")
- except ValueError:
- # Compute mass aproximation
- from shipHydrostatics import Tools
- disp = Tools.displacement(obj,obj.Draft)
- obj.addProperty("App::PropertyVectorList","WeightPos","Ship", str(Translator.translate("Ship Weights centers of gravity"))).WeightPos=[Vector(disp[1].x,0.0,obj.Draft)]
- # Setup list
- weights = []
- for i in range(0,len(obj.WeightNames)):
- weights.append([obj.WeightNames[i], obj.WeightMass[i], obj.WeightPos[i]])
- return weights
+ """ Returns Ship weights list. If weights has not been sets,
+ this tool creates it.
+ @param obj Ship object
+ @return Weights list. None if errors
+ """
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ return None
+ if not obj.IsShip:
+ return None
+ # Test if properties already exist
+ try:
+ props.index("WeightNames")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Ship Weights names",None,QtGui.QApplication.UnicodeUTF8))
+ lighweight = str(QtGui.QApplication.translate("Ship","Lightweight",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyStringList","WeightNames","Ship", tooltip).WeightNames=[lighweight]
+ try:
+ props.index("WeightMass")
+ except ValueError:
+ # Compute mass aproximation
+ from shipHydrostatics import Tools
+ disp = Tools.displacement(obj,obj.Draft)
+ tooltip = str(QtGui.QApplication.translate("Ship","Ship Weights masses",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyFloatList","WeightMass","Ship", tooltip).WeightMass=[1000.0 * disp[0]]
+ try:
+ props.index("WeightPos")
+ except ValueError:
+ # Compute mass aproximation
+ from shipHydrostatics import Tools
+ disp = Tools.displacement(obj,obj.Draft)
+ tooltip = str(QtGui.QApplication.translate("Ship","Ship Weights centers of gravity",None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyVectorList","WeightPos","Ship", tooltip).WeightPos=[Vector(disp[1].x,0.0,obj.Draft)]
+ # Setup list
+ weights = []
+ for i in range(0,len(obj.WeightNames)):
+ weights.append([obj.WeightNames[i], obj.WeightMass[i], obj.WeightPos[i]])
+ return weights
diff --git a/src/Mod/Ship/Makefile.am b/src/Mod/Ship/Makefile.am
index 87e1f22cbe..fd24beac68 100644
--- a/src/Mod/Ship/Makefile.am
+++ b/src/Mod/Ship/Makefile.am
@@ -6,55 +6,15 @@ data_DATA = \
ShipGui.py \
Instance.py \
SimInstance.py \
- TankInstance.py
+ TankInstance.py \
+ Ship_rc.py
nobase_data_DATA = \
- Icons/AreaCurveIco.png \
- Icons/AreaCurveIco.xcf \
- Icons/AreaCurveIco.xpm \
- Icons/DataIco.png \
- Icons/DataIco.xcf \
- Icons/DataIco.xpm \
- Icons/DiscretizeIco.png \
- Icons/DiscretizeIco.xcf \
- Icons/DiscretizeIco.xpm \
- Icons/HydrostaticsIco.png \
- Icons/HydrostaticsIco.xcf \
- Icons/HydrostaticsIco.xpm \
- Icons/Ico.png \
- Icons/Ico.xcf \
- Icons/Ico.xpm \
- Icons/LoadIco.png \
- Icons/LoadIco.xcf \
- Icons/LoadIco.xpm \
- Icons/OutlineDrawIco.png \
- Icons/OutlineDrawIco.xcf \
- Icons/OutlineDrawIco.xpm \
- Icons/ReparametrizeIco.png \
- Icons/ReparametrizeIco.xcf \
- Icons/ReparametrizeIco.xpm \
- Icons/Ship.xcf \
- Icons/Ship.xpm \
- Icons/Weight.png \
- Icons/Weight.xcf \
- Icons/Weight.xpm \
- Icons/SimIco.xcf \
- Icons/Sim.xpm \
- Icons/SimCreateIco.png \
- Icons/SimCreateIco.xpm \
- Icons/SimRunIco.png \
- Icons/SimRunIco.xpm \
- Icons/SimStopIco.png \
- Icons/SimStopIco.xpm \
- Icons/SimPostIco.png \
- Icons/SimPostIco.xpm \
- Icons/Tank.png \
- Icons/Tank.xcf \
- Icons/Tank.xpm \
- Examples/s60.fcstd \
- Examples/s60_katamaran.fcstd \
- Examples/wigley.fcstd \
- Examples/wigley_katamaran.fcstd \
+ resources/examples/s60.fcstd \
+ resources/examples/s60_katamaran.fcstd \
+ resources/examples/wigley.fcstd \
+ resources/examples/wigley_katamaran.fcstd \
+ resources/icons/Ico.xpm \
shipLoadExample/__init__.py \
shipLoadExample/TaskPanel.py \
shipLoadExample/TaskPanel.ui \
@@ -68,19 +28,18 @@ nobase_data_DATA = \
shipOutlineDraw/TaskPanel.py \
shipOutlineDraw/TaskPanel.ui \
shipAreasCurve/__init__.py \
- shipAreasCurve/Plot.py \
+ shipAreasCurve/PlotAux.py \
shipAreasCurve/Preview.py \
shipAreasCurve/TaskPanel.py \
shipAreasCurve/TaskPanel.ui \
shipHydrostatics/__init__.py \
- shipHydrostatics/Plot.py \
+ shipHydrostatics/PlotAux.py \
shipHydrostatics/TaskPanel.py \
shipHydrostatics/TaskPanel.ui \
shipHydrostatics/Tools.py \
shipUtils/__init__.py \
shipUtils/Math.py \
shipUtils/Paths.py \
- shipUtils/Translator.py \
tankWeights/__init__.py \
tankWeights/Preview.py \
tankWeights/TaskPanel.py \
@@ -89,7 +48,7 @@ nobase_data_DATA = \
tankCreateTank/TaskPanel.py \
tankCreateTank/TaskPanel.ui \
tankGZ/__init__.py \
- tankGZ/Plot.py \
+ tankGZ/PlotAux.py \
tankGZ/TaskPanel.py \
tankGZ/TaskPanel.ui \
simCreate/__init__.py \
diff --git a/src/Mod/Ship/ShipGui.py b/src/Mod/Ship/ShipGui.py
index 4848a66098..f2796835f4 100644
--- a/src/Mod/Ship/ShipGui.py
+++ b/src/Mod/Ship/ShipGui.py
@@ -24,17 +24,20 @@
from PyQt4 import QtCore, QtGui
import FreeCAD, FreeCADGui, os
+# Load resources
+import Ship_rc
+FreeCADGui.addLanguagePath(":/Ship/translations")
+FreeCADGui.addIconPath(":/Ship/icons")
+
class LoadExample:
def Activated(self):
import shipLoadExample
shipLoadExample.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/LoadIco.png"
- MenuText = str(Translator.translate('Load an example ship geometry'))
- ToolTip = str(Translator.translate('Load an example ship geometry able to be converted into a ship.'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_LoadExample', 'Load an example ship geometry')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_LoadExample', 'Load an example ship geometry able to be converted into a ship.')
+ return {'Pixmap' : 'LoadIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class CreateShip:
def Activated(self):
@@ -42,11 +45,9 @@ class CreateShip:
shipCreateShip.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/Ico.png"
- MenuText = str(Translator.translate('Create a new ship'))
- ToolTip = str(Translator.translate('Create a new ship in order to work with them'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_CreateShip', 'Create a new ship')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_CreateShip', 'Create a new ship in order to work with them')
+ return {'Pixmap' : 'Ico', 'MenuText': MenuText, 'ToolTip': ToolTip}
class OutlineDraw:
def Activated(self):
@@ -54,11 +55,9 @@ class OutlineDraw:
shipOutlineDraw.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/OutlineDrawIco.png"
- MenuText = str(Translator.translate('Outline draw'))
- ToolTip = str(Translator.translate('Plot ship outline draw'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_OutlineDraw', 'Outline draw')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_OutlineDraw', 'Plot ship outline draw')
+ return {'Pixmap' : 'OutlineDrawIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class AreasCurve:
def Activated(self):
@@ -66,11 +65,9 @@ class AreasCurve:
shipAreasCurve.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/AreaCurveIco.png"
- MenuText = str(Translator.translate('Areas curve'))
- ToolTip = str(Translator.translate('Plot transversal areas curve'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_AreasCurve', 'Areas curve')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_AreasCurve', 'Plot transversal areas curve')
+ return {'Pixmap' : 'AreaCurveIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class Hydrostatics:
def Activated(self):
@@ -78,11 +75,9 @@ class Hydrostatics:
shipHydrostatics.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/HydrostaticsIco.png"
- MenuText = str(Translator.translate('Hydrostatics'))
- ToolTip = str(Translator.translate('Plot ship hydrostatics'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_Hydrostatics', 'Hydrostatics')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_Hydrostatics', 'Plot ship hydrostatics')
+ return {'Pixmap' : 'HydrostaticsIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class SetWeights:
def Activated(self):
@@ -90,11 +85,9 @@ class SetWeights:
tankWeights.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/Weight.png"
- MenuText = str(Translator.translate('Set ship weights'))
- ToolTip = str(Translator.translate('Set ship weights, tanks must be added later'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_Weights', 'Set ship weights')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_Weights', 'Set ship weights, tanks must be added later')
+ return {'Pixmap' : 'Weight', 'MenuText': MenuText, 'ToolTip': ToolTip}
class CreateTank:
def Activated(self):
@@ -102,11 +95,9 @@ class CreateTank:
tankCreateTank.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/Tank.png"
- MenuText = str(Translator.translate('Create a new tank'))
- ToolTip = str(Translator.translate('Create a new ship tank'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_CreateTank', 'Create a new tank')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_CreateTank', 'Create a new ship tank')
+ return {'Pixmap' : 'Tank', 'MenuText': MenuText, 'ToolTip': ToolTip}
class GZ:
def Activated(self):
@@ -114,11 +105,9 @@ class GZ:
tankGZ.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/HydrostaticsIco.png"
- MenuText = str(Translator.translate('GZ curve'))
- ToolTip = str(Translator.translate('Transversal stability GZ curve computation'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_GZ', 'GZ curve')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_GZ', 'Transversal stability GZ curve computation')
+ return {'Pixmap' : 'HydrostaticsIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class CreateSim:
def Activated(self):
@@ -126,11 +115,9 @@ class CreateSim:
simCreate.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/SimCreateIco.png"
- MenuText = str(Translator.translate('Create a new simulation'))
- ToolTip = str(Translator.translate('Create a new simulation in order to process later'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_CreateSim', 'Create a new simulation')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_CreateSim', 'Create a new simulation in order to process later')
+ return {'Pixmap' : 'SimCreateIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class RunSim:
def Activated(self):
@@ -138,11 +125,9 @@ class RunSim:
simRun.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/SimRunIco.png"
- MenuText = str(Translator.translate('Run a simulation'))
- ToolTip = str(Translator.translate('Run a simulation'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_RunSim', 'Run a simulation')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_RunSim', 'Run a simulation')
+ return {'Pixmap' : 'SimRunIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class StopSim:
def Activated(self):
@@ -150,11 +135,9 @@ class StopSim:
simRun.stop()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/SimStopIco.png"
- MenuText = str(Translator.translate('Stop active simulation'))
- ToolTip = str(Translator.translate('Stop active simulation'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_StopSim', 'Stop active simulation')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_StopSim', 'Stop active simulation')
+ return {'Pixmap' : 'SimStopIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
class TrackSim:
def Activated(self):
@@ -162,11 +145,9 @@ class TrackSim:
simPost.load()
def GetResources(self):
- from shipUtils import Paths, Translator
- IconPath = Paths.iconsPath() + "/SimPostIco.png"
- MenuText = str(Translator.translate('Track simulation'))
- ToolTip = str(Translator.translate('Track simulation'))
- return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
+ MenuText = QtCore.QT_TRANSLATE_NOOP('Ship_TrackSim', 'Track simulation')
+ ToolTip = QtCore.QT_TRANSLATE_NOOP('Ship_TrackSim', 'Track simulation')
+ return {'Pixmap' : 'SimPostIco', 'MenuText': MenuText, 'ToolTip': ToolTip}
FreeCADGui.addCommand('Ship_LoadExample', LoadExample())
diff --git a/src/Mod/Ship/Ship_rc.py b/src/Mod/Ship/Ship_rc.py
new file mode 100644
index 0000000000..99736bc998
--- /dev/null
+++ b/src/Mod/Ship/Ship_rc.py
@@ -0,0 +1,8700 @@
+# -*- coding: utf-8 -*-
+
+# Resource object code
+#
+# Created: Fri Nov 16 15:25:47 2012
+# by: The Resource Compiler for PyQt (Qt v4.8.1)
+#
+# WARNING! All changes made in this file will be lost!
+
+from PyQt4 import QtCore
+
+qt_resource_data = "\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x16\x2a\
+\x00\
+\x00\x51\x13\x78\x9c\xd5\x3c\x0b\x74\x1c\xd5\x75\xcf\x92\x56\xb2\
+\x56\xab\xb5\xfc\x41\x18\x47\x36\xe3\x0f\x20\x63\x21\x6c\x3e\xb6\
+\xe3\x18\xb0\x6c\x59\xf2\x47\xfe\xd4\x32\x10\x6c\x08\x8c\x76\x66\
+\xb5\x63\x66\x67\x36\x33\xb3\x92\x65\x9c\x84\x00\x0d\x25\xe1\x90\
+\x86\x84\xd6\xe4\x40\x08\xa4\xe1\x40\xa0\x29\xe7\x84\x16\x9a\x43\
+\x02\x29\xf9\x14\x4e\x68\x9b\x92\xf4\x93\xb4\x09\x24\x94\x40\x80\
+\xf4\x50\x9a\x53\xa0\x21\xed\x7d\xf7\xbd\x99\xf7\x66\xf6\x8d\xb4\
+\xb6\x6c\x4a\x0f\x07\x8f\x34\x9f\xfb\x7b\xf7\xff\xee\xd3\xfa\x47\
+\x8d\xf9\x4f\xff\xfb\x1d\xb7\x3d\xb3\xb8\xeb\xf1\xab\xee\xfe\xc6\
+\xbf\x6e\x24\xa4\xe9\x25\x42\x86\xfa\x09\xd9\xe2\x13\x72\xf1\x28\
+\x21\x03\x57\x91\xa6\xbf\xd8\x4c\x48\xd7\x2b\x24\xb3\xf6\x4b\x84\
+\x6c\xdf\x4f\x32\x5b\xce\x87\xeb\xcd\x24\x73\x17\x81\xf7\x37\x93\
+\xcc\xa3\xef\x10\xd2\xf9\x5d\x76\x5d\xff\x4b\x76\xdd\x76\x1f\xd1\
+\xfe\x79\x13\x21\x17\x0e\x92\xc5\x3f\xfc\x4b\x42\x1a\x3f\x4f\xb6\
+\xdf\xf8\x43\x78\xef\x0c\x76\x5d\xd3\xcd\xae\x5b\x36\x92\x4b\x5e\
+\xba\x8d\x90\xfe\xa7\xc9\x65\x47\x4e\x23\x64\xc3\xd7\xc9\xbe\xfb\
+\x3e\x07\xdf\x57\xc9\x15\x37\x3f\x09\xf7\xdf\x26\xa5\x27\x00\xdf\
+\xda\xd5\xe4\x86\x7f\x2c\x10\x92\x79\x83\x3c\xf1\x12\xbc\xb7\xf9\
+\x4c\xf2\x83\x9b\x5e\x26\xe4\xcc\x55\xe4\x57\xdf\xb8\x98\x90\x96\
+\xa5\x33\x16\xb4\xdd\x48\xc8\xec\xdf\x63\xd7\x8b\x5e\x9e\xb1\xf2\
+\xee\x1b\x00\xce\x8f\x67\xd8\x2f\x6c\x25\xe4\xb4\xa7\x66\x3c\xb2\
+\x2f\x47\xc8\x92\x37\x67\x3c\xb9\xe6\x9b\xf0\xfd\x9f\x35\x64\x5e\
+\x07\xba\x66\x3d\xd9\x70\xfe\x87\x2e\x23\xe4\xf4\x07\x1a\x2e\xd0\
+\x6f\x27\xa4\x75\x7e\xc3\x8e\x4f\xbc\x40\xc8\x59\x0f\x35\x7c\xe7\
+\x63\x80\x77\x60\x66\xc3\xab\x06\x7c\xbf\xe1\xbc\x86\xd7\xee\xfc\
+\x02\x21\x1d\x83\x0d\xff\x7d\xc7\x04\x21\xdd\xcf\x34\xfc\xf6\x6f\
+\x80\xee\x96\x87\x1b\x7e\xf7\x73\xa0\xe3\x8c\x7b\x1a\x7b\xee\x0c\
+\x08\x39\xe9\x39\x76\x1d\x7c\xbb\xf1\xfd\x4f\x95\x08\x59\xb8\xa0\
+\xb1\xcf\x05\x78\xeb\x5e\x6c\xdc\xba\x78\x0f\x21\xb9\xc3\x8d\xdb\
+\x7a\x9e\x02\xb9\xd9\x8d\x1f\x59\x36\x0f\xe4\x7a\x4f\xe3\xb7\xdf\
+\xd4\x40\x2e\xff\xd5\xf8\xf6\x1f\x38\x84\xcc\x79\x8e\x5d\x07\x3e\
+\xdd\xb4\xeb\x96\x46\x42\xfa\x9e\x6e\xfa\xf0\x6f\x1f\x03\x78\x7b\
+\x9a\x6e\x59\x73\x3f\xd0\x77\x53\xd3\xd7\xb7\x7f\x04\xee\xf7\x36\
+\x3d\xfd\x99\xaf\x12\xb2\xb5\xb9\xe9\x57\x5f\xed\x20\xe4\x82\x45\
+\x4d\xbf\xde\x06\xf4\x82\x84\x96\x6c\x84\xf5\xca\x5e\x92\xe9\xd9\
+\x79\x1f\xc8\xad\x89\x5d\xfb\xdb\x33\xe7\x8f\xcf\x05\xbc\x6f\x66\
+\x8a\xf7\x0f\x82\x9c\xbe\x98\xb1\xff\x70\x2f\xdc\xff\x6c\xc6\x7e\
+\xe4\xdb\x20\x8f\xc3\x99\xca\x9d\x8b\x08\x59\x70\x72\xe6\xc1\x85\
+\x20\x97\x55\x83\x99\x87\xff\xe8\x2d\x80\x7b\x4d\xe6\x7b\x5f\x06\
+\xbe\x67\x7c\x3c\xf3\xd7\xab\x81\x9e\xae\xc1\xcc\xcf\x06\x6e\x25\
+\x64\xfe\x55\x99\x57\x96\xfe\x3d\xac\xe3\x65\xcd\x0d\x57\x8c\x03\
+\x9f\x8f\x35\xaf\x3e\x83\xf2\x7f\x6e\xf3\x05\xe7\x7c\x14\xf8\x70\
+\x9b\x2f\x78\x62\x29\xc8\xbf\xbb\x79\xe7\x79\xb0\xce\xeb\x3a\x9b\
+\x1f\x58\xf0\x29\x42\xda\x8f\xb0\xeb\xc0\x5b\xcd\x0f\x2c\x7e\x82\
+\x90\xb6\xb9\xec\xba\xfa\x47\xcd\xcf\xf9\x7f\x0e\xfa\xd2\xd8\xfc\
+\x1b\xf7\x77\xc0\xc5\x93\x2d\xd9\xfd\x9f\x01\x76\xf4\x96\xf9\x2b\
+\xfe\x0d\xf8\x7c\xa0\x65\xe5\x1b\x70\xdd\xf8\xd9\x96\x03\x2f\xbf\
+\x01\xef\xdd\xde\xf2\x85\x31\x58\xaf\xc1\x2f\xb5\x3c\xd8\xd2\x0b\
+\x7a\xf4\xc5\x96\x87\x7a\x33\xc0\xf7\xdd\xec\xda\x79\xe9\x4c\xf3\
+\xba\x3c\x21\x9b\x1a\x67\x5e\xf3\x00\xc0\x5b\xb4\xa6\xf5\xec\xf2\
+\x8f\x08\x39\x9f\xb4\x96\xd7\xc3\xf7\xcb\x7e\xda\x3a\x5e\xfa\x0e\
+\xe0\x1d\x6d\xfd\xc8\x61\xb8\x9e\xfb\x3f\xad\x37\xf9\xed\x84\xbc\
+\x7f\x7b\xeb\x27\x9b\x7e\x41\xc8\x29\x1f\x6b\xfd\xd4\x35\x60\x0b\
+\xab\xff\x84\x5d\x37\xfe\x6d\xeb\x2d\x05\xb0\x8b\x93\x6f\x6c\x7d\
+\x66\xd5\x0e\x42\xe6\x5d\xdf\xfa\x0f\xde\x9f\x82\x9e\x6d\x6b\xfd\
+\xc5\xc0\xf7\x08\x39\xe7\x99\xec\xd2\x3e\xb0\x8f\xb9\xdb\xb2\x2b\
+\xbe\x76\x3d\xe8\x55\x5f\x76\xc3\xa9\xc0\x7f\xef\x3b\xd9\xc3\xef\
+\xfc\x9a\x90\xfc\x8a\xec\x1f\xcf\xee\x01\x3d\x7a\x35\x7b\xff\x96\
+\xf5\xa0\x87\x27\x67\xff\x69\x1c\xe8\x3f\xf5\x93\xd9\x9f\x34\xbe\
+\x06\x72\x38\x90\x7d\x25\x7f\x21\xd0\xd1\x93\x7d\xeb\xde\x9f\x12\
+\xa2\xdd\xd5\xe6\x5c\x7f\x1e\x21\x1f\x78\xa1\xed\xda\x93\x60\x1d\
+\xce\xfe\xcf\xb6\x9b\x48\x13\xac\x5f\x4b\xdb\xed\x01\xac\xe3\xfb\
+\x9e\x6b\xfb\xfc\xe3\x27\x11\x32\xd3\x69\xfb\xf2\xc3\x87\x41\x4e\
+\xaf\xb6\x3d\x71\xd7\x5f\x01\xfe\x47\xda\xfe\x6e\x26\xac\xeb\xfc\
+\xef\xb7\xbd\x3c\xe7\x3f\x80\xfe\x6c\x8e\x68\x40\xd7\xfa\xdf\xcf\
+\xcd\xfa\x31\xc8\x61\xf1\xd9\xb9\xb3\x3a\x60\x9d\x9b\x5f\xcd\xf5\
+\x1d\x59\x06\xbf\x3f\x9b\xdb\xd1\xb9\x1f\xd6\x65\x75\xae\xf0\x38\
+\xe8\x59\xcf\x47\x73\xe6\xa3\x80\x77\x19\xc9\x1d\x78\x06\xe4\xd8\
+\xfe\x7a\xce\xcf\x81\xbe\x2f\xba\x35\x77\x13\xf9\x25\xac\xf3\x3b\
+\xb9\x17\x90\xae\x23\xed\xcb\xa9\xbc\xd6\x5e\xdb\xbe\xf7\x9b\xc0\
+\x67\xe6\xf2\xf6\x4b\xae\xd3\x01\x6f\xbe\xfd\xf1\x9f\x81\xfc\xb2\
+\x3d\xed\x2f\x9e\x02\xf6\xbb\xfd\x5b\xf9\xe6\x4f\x9b\xa0\x57\x5f\
+\xc9\xb7\x7f\x02\xf4\x7e\x45\x77\x3e\xff\xf3\x3b\x41\x9e\x73\xf2\
+\x1d\x15\x58\xcf\x35\x8f\xb2\xeb\xa6\xeb\xf2\x0b\x1e\x04\xba\xe6\
+\x2c\xcc\x5f\xda\x09\xdf\xe5\x7f\x93\x1f\x79\x36\x0b\x7c\x76\xe5\
+\xaf\xbf\x05\xe4\x91\xeb\xcc\xdf\xfc\x34\xf0\x79\x51\x26\xff\xc8\
+\x43\x2d\xf0\xfe\x0f\xf2\xcf\x7e\x05\xe4\x71\xf6\x0d\xb3\x96\xce\
+\x80\xe7\xbd\x6b\x66\x7d\xae\x00\x76\xd3\xd0\x35\xeb\x36\xbc\xfe\
+\x64\xd6\x3d\x5d\x5f\x83\xef\xab\xb3\x1e\xfe\x3e\xe8\xed\xfa\x95\
+\xec\xda\xbf\x81\x5d\xb7\xee\xb7\xc0\xd1\xcd\x86\x9f\xc8\x99\x64\
+\x37\x71\x89\x47\x0a\xc4\x24\x0e\x09\x88\x4e\x46\xe1\x27\x8d\x18\
+\xf8\xaf\x0d\xff\xd1\xfb\x3a\xfc\xee\xce\xa4\x06\xd6\x0c\xff\x2f\
+\x1a\xb0\xab\x96\xa1\x15\x2d\xdb\xb6\x9c\x51\xcd\x36\xc7\x4c\x5b\
+\xab\x98\x5e\xc1\x74\x02\x7d\xd4\x6c\xa1\x9e\x71\xb8\x64\x55\x66\
+\x50\x04\x1f\x24\x7d\x00\xde\x04\x10\x02\xa8\x4b\x7c\xb8\x9a\x08\
+\xbc\xcc\x11\xb3\x7b\xe1\x1b\xf4\x6d\x9f\x54\x49\x05\x7e\xf7\x48\
+\x91\x58\x40\xa0\xc5\x9f\x59\x64\x84\x42\x8c\xc8\x59\x30\xe0\x99\
+\xa6\xe6\x57\xbd\xa2\x5e\x30\x35\xd3\x36\xcb\x40\x87\xaf\xe9\x9e\
+\xa9\xc7\x49\xb9\x8a\xec\x44\x5e\xcb\x00\x9e\xa2\xf6\x4f\x18\x49\
+\x5d\x6a\x92\x1c\xd7\x2b\xeb\x76\x9c\x28\x03\x17\xc0\xe7\xe0\x5c\
+\x40\x7c\x22\x09\x5b\xa4\x26\xac\xe2\xfa\x56\x60\xb9\x4e\x9c\xb4\
+\x83\x20\xaf\x2a\x22\xf5\x00\x65\x88\x50\x45\x0a\xfd\x39\x24\xc5\
+\x00\xa4\x74\xc1\x0b\x48\xc6\x1b\xf8\xe4\x60\xe2\x9d\x7a\xc9\xed\
+\x8d\x91\xeb\x54\xcb\x23\xa6\xa7\xb9\x45\x69\x91\x03\xed\xa0\x66\
+\x58\x9e\x59\x38\x91\xe4\x4f\x9c\x40\xf2\x27\xd2\xc8\xdf\x40\xfa\
+\x11\x29\x55\x0d\x03\x2d\x90\xb1\x60\xc3\xb5\x08\xff\x56\xf1\xbe\
+\x2b\xdd\xb5\x90\x25\x4a\x16\x55\x24\x2f\x22\x63\xde\x56\xc7\xb7\
+\x0c\x53\x2b\xa2\xd9\x1a\x26\xfc\x16\x4c\xc4\x91\x2d\x00\x2d\xa4\
+\x7a\xe7\x46\x9c\x7a\x28\x9b\x02\xd1\x23\x30\x6d\x43\xd6\x68\x29\
+\x18\x37\xe9\xbf\xf1\xaf\xb3\x64\x23\x90\xf3\x61\xf8\x5f\xf0\x8e\
+\x4f\xe3\xaf\xed\x25\x9b\xb8\xd8\xbd\x98\x0a\x8f\xc2\xef\x3a\x19\
+\x83\x9f\x65\x3e\x85\xf2\x57\x38\x69\xbe\xc4\xeb\x48\x0d\xc2\x53\
+\x29\x1e\xed\x52\x24\xcf\xd7\xa8\x2f\x32\x3d\x9f\x4a\x7b\xd4\xd3\
+\xc7\x6a\x18\x5e\x4b\x76\x00\x2e\x1f\xff\x3f\x36\x7c\x73\x63\xf8\
+\xca\xba\xef\x9b\x7e\x1c\xc7\x7a\xf4\x37\x65\xa6\x14\xc7\x8c\x67\
+\x4e\x0c\x8f\xa3\x97\x93\x68\x72\x42\xfa\xc4\x17\xab\x85\x9f\x19\
+\xa6\x6f\x8d\x26\x14\xeb\x08\xd9\x8c\xa8\xca\xa0\xdd\x06\x7c\x65\
+\x4b\xd6\x41\xb5\xdf\x87\x9f\x5e\x97\xee\x8d\x08\xe8\x48\x34\x5d\
+\x3c\xba\x58\xf4\x19\x75\xa4\xa3\xf0\xcc\x49\x08\x92\xfd\x56\x42\
+\x65\xa4\x8b\x5b\x46\x1b\x61\x01\xc6\x47\xdc\xcf\xe3\xb5\x80\x02\
+\xaa\x32\xaf\x17\xd1\xbe\x05\x69\x2f\xbb\x46\xd5\x36\xb5\x8a\xe7\
+\x8e\x81\xf6\xfa\x9a\xef\x96\x4d\xba\x9e\x41\xc9\xd4\x0a\x6e\xb9\
+\xec\x3a\xf6\x84\x56\xf5\x4d\x43\x0b\x5c\xd7\x86\x7f\x38\xb7\x9a\
+\x4f\xbf\x2e\x82\xaf\x4d\x08\x6a\x1e\x19\x06\x32\xca\xc8\xb2\x1e\
+\x9a\x77\x84\x34\x3b\x6c\x95\xab\xb6\x5e\x6b\x88\x1f\x04\xc5\xf5\
+\x90\x7f\x0d\x8d\x51\x43\x09\x69\xa8\xc6\x3a\x72\x14\xf2\xcd\xe4\
+\xa0\x71\x4e\x85\xd9\x0a\x09\x6a\x20\x39\x1d\x3d\x85\x21\x59\x96\
+\xb6\xd7\xab\x9a\x9a\x55\xd4\x2c\x70\x09\xda\x98\x6e\x83\x99\x22\
+\x13\x96\xe3\x07\xba\x53\x48\x84\xd4\xb1\x69\x13\xe4\x27\xe4\xe0\
+\xa2\xc9\xab\x96\x7b\x0c\x16\x2a\x49\xee\x8a\x34\x72\xfd\x48\x82\
+\x29\x94\xdb\xd3\xa6\x9c\xbe\xe3\x44\xc2\x4c\x52\xac\x16\xef\x69\
+\x69\xf4\x02\x85\x57\xa7\x50\xba\x8e\xec\x8a\xd4\xb8\x1b\x15\xb8\
+\x82\x70\x03\xc0\x63\x90\x1e\xee\xfe\xa9\xe4\xa8\x0f\xa6\xbf\x97\
+\xf0\x6d\x93\x2c\x17\xc1\xf6\x52\x7d\x0c\xf4\xb6\xbb\xaf\x5c\xb1\
+\xad\xa0\x6a\x98\x3d\x90\x24\x59\xae\xd1\x53\x29\xe9\xbe\xb9\x3c\
+\x99\x07\xf4\xc7\x22\x8f\xbc\x24\x21\x21\xae\x44\xd2\xca\xc8\x71\
+\x1a\x91\x3b\xd1\xf1\x77\xf9\x3d\xf6\x7d\x05\xee\xd0\xa7\x82\xb4\
+\xd3\x19\x69\x51\xe8\xd1\xba\x57\x82\xf5\x8c\x52\x23\xf2\xc1\x6f\
+\x3a\xda\x38\x7d\xbe\x3c\xe9\xe6\xc3\x20\x21\x4c\xb5\x85\x3b\xa6\
+\xf8\x9b\x5d\xe0\xe9\xab\x40\xcc\x98\xb4\xa2\xcf\xf3\x34\x50\x72\
+\x51\x7d\x90\xa2\x81\xab\xae\x7a\x63\x28\xfd\x59\xf4\xfb\x2b\xf1\
+\xe6\x26\x7a\x0f\x41\x9d\x43\x06\x91\x2b\x16\x69\xf5\x28\x06\x17\
+\xea\x40\xd0\xb5\xdb\x76\x03\x2d\xf0\x74\xc7\x1f\x83\x60\xa0\xdb\
+\x98\x14\x4e\x85\x71\x09\x10\xcf\x20\x79\x00\xd5\x41\xc5\x1a\x43\
+\x7f\x38\x82\xf7\x0a\x52\x2a\x3c\x7b\x13\x7c\x1b\x98\xa0\x56\x8e\
+\x39\x8e\x4a\x25\xc0\xb2\x47\x91\x4c\x2e\x8f\xc0\x32\xed\x4e\x01\
+\x1d\x5b\xc8\x0a\xea\x97\x89\x84\x30\x1b\xa1\xef\x1d\xe0\xa4\x15\
+\xb8\x92\xbc\x4c\xec\x88\xa0\x9e\x1a\x82\x40\xc1\x35\xd7\x33\x20\
+\xf3\x80\xc5\x1d\x77\xbd\xab\xb5\x71\x2b\x28\x51\x2f\x5a\x4e\xa5\
+\xb5\x47\x29\x02\x5d\xe1\x39\x64\x0f\x7a\x72\x1c\x77\xcc\x9d\xe6\
+\x65\x34\x56\x19\xb1\x14\x13\x12\xd1\xa7\xc6\x95\x90\x0e\x0d\x45\
+\x05\xd4\x49\x7a\x8f\x29\x46\x18\x5a\x02\xbc\x67\x48\x91\x74\x55\
+\x0a\x7d\x31\x09\x41\xb8\x29\x98\xbe\xaf\xc1\x23\xd3\x4b\xa3\xbc\
+\x7b\xd2\xb5\x94\x7c\x54\x84\xbb\xb3\x76\x5d\xa8\xf7\x49\xae\xc0\
+\x5e\xb8\x87\x18\x96\xa5\x2a\xa1\x0a\x7a\x5c\x0d\x27\x05\xdc\xa9\
+\x30\xcd\x41\xb2\x2f\x02\x35\x73\x70\x9f\xb0\x8f\x16\x84\x30\xb8\
+\x0f\xbf\xbc\x01\xbe\xa4\xce\xb5\xc0\x97\x24\xdd\x12\x47\x70\x81\
+\x0e\x71\xbf\x44\x3d\x14\x75\x95\x87\x90\xf0\x80\x07\x16\xc0\x89\
+\x7e\x8c\xfe\x16\xa0\x62\x5b\xa1\xe3\xe6\x8e\xde\xc3\xf7\x7d\xcc\
+\x35\x3c\x5c\x62\x5b\xf2\x60\x67\xee\x95\xcc\x1a\x3c\xf8\x88\x05\
+\x3e\x76\x42\x0b\xa9\xa7\x19\x42\xa5\x1a\x44\xfa\x17\xe3\x64\x01\
+\xd9\x82\x98\x58\x1a\x1a\x80\xc2\x04\xdc\xbb\x08\xdf\x91\xdb\x32\
+\x61\x78\xae\x4f\x21\x14\xd0\xbb\xcd\x46\x08\xf2\x5d\x84\x35\xa0\
+\xf4\x4f\x7e\x4c\x2e\xc2\x13\x97\xa6\xc4\xdb\x89\x3e\x0b\x15\xa4\
+\x54\x1f\x05\x1b\x71\x5d\x3c\x88\x06\x4c\x59\x8a\x51\x91\xeb\x13\
+\x55\x88\x0c\xeb\xa0\x03\x58\x07\xd1\xb0\x26\xfc\xd9\xc2\x21\x57\
+\x37\x34\xdd\xd1\xcc\x83\x3a\x44\x2d\x93\x11\x32\x6a\x42\xea\x15\
+\x78\x98\x42\x77\x20\x11\xf4\xb5\xcd\xec\x15\xa4\xe1\x5e\x89\x06\
+\x35\x05\x31\x7c\x29\xc9\x46\x48\x61\x05\xaf\x06\xaf\x44\x7c\xee\
+\x00\x45\x65\x16\x60\x40\x36\xb9\x36\x85\x8e\x90\xe9\x49\x98\x2c\
+\x88\xba\x4e\xc2\x11\xf1\x79\xd1\xa4\x7c\x6a\xfa\x08\xdc\x02\x67\
+\x30\x42\xf5\xc8\x01\x25\x0b\x20\xcb\xb4\x1c\xb8\xa3\xe3\x9b\xbd\
+\xe9\x92\x58\x04\x41\xd2\x46\xcd\x15\x5c\x4a\xf2\x10\xfa\xb5\xab\
+\x1a\xd8\x96\x63\x6a\x86\xa7\x8f\x0b\x70\xfc\x6e\x3f\xdc\xe4\x8b\
+\xbb\x97\x1b\x13\xcb\x86\x6c\x14\xcf\x24\x08\x6a\x45\xab\x52\x2d\
+\xb7\x2e\xe4\x4b\xc8\x10\x22\x3a\xc4\x35\x6b\x32\xe7\xdf\xb1\xa7\
+\xea\x50\xe9\xc4\xbc\x3e\x16\x21\x57\xc2\x93\xd0\x71\xae\xc3\xa2\
+\x96\x15\xa9\x0e\x5f\xd7\xb0\xa6\x56\x39\x7b\x1d\x57\xdb\xa2\x56\
+\x24\xd8\x18\x0e\xdc\x8a\xa6\x43\xde\x02\x66\x1e\xc7\x97\x43\x7c\
+\xf4\x79\x88\x70\x2d\xe4\xfc\x26\x96\x28\x96\x54\x84\x08\xc9\xa5\
+\x22\x17\x8c\x81\xa3\x29\x5c\x9d\x40\xd4\x8e\x88\xf0\x49\x88\x69\
+\x3d\x94\x55\xa1\x2b\xb3\x51\x4d\x43\xf6\x8e\xa6\xda\xeb\x18\x36\
+\xf9\x12\x8d\x8b\xc4\x8a\xb1\xc5\x33\x2d\x44\x76\x6d\x02\xd9\xa1\
+\xc8\xf7\xd4\x81\x8c\xf4\xc2\x6f\x43\xfc\x69\x3c\xa1\xf6\x79\x55\
+\xf7\x3a\x7a\x61\x6a\x6f\xcf\xe3\x3a\xa4\x07\xd5\x15\x49\x82\x7b\
+\x30\xfe\x40\x45\x5c\xf5\x03\x6a\x40\xba\x61\x80\xf1\x44\xe1\xb4\
+\x96\x17\x87\xc7\x15\x9d\xb7\x33\x7c\xde\xa3\x11\x79\x70\xf8\x44\
+\xee\xc1\xa8\x6b\xcb\x70\x59\x6b\x63\x92\x5e\x93\x1d\x2e\x95\xd2\
+\x4f\x56\x42\x82\x35\x14\x81\x19\xd3\x86\xa4\x18\x68\xde\x5f\xbe\
+\x82\x52\x9c\xa5\xdc\x5d\x89\x99\x23\xd2\x5b\x41\x93\xb4\xd0\xdc\
+\xde\x5d\x8a\x17\xd5\x50\x1c\x78\x56\x39\x22\x58\x45\x6c\x17\x1a\
+\x9c\xcf\x7d\xc6\xa1\x18\x72\xe1\xf6\x73\xfd\x96\x5f\xb1\xf5\x02\
+\xb6\xa5\x54\x60\x72\xf2\x1a\x45\x9f\x65\xfa\xa9\xc0\x54\xef\x9f\
+\x97\x88\x8a\xc2\xce\x8f\x4b\xde\x9e\x44\x97\x8f\x2f\x89\x68\x42\
+\xed\x05\xf9\xa8\x3e\xd8\x83\xad\x99\x50\xdf\xa9\x38\x0a\x68\x01\
+\x0e\xcf\x3b\x68\xca\x45\xdb\x69\x61\x6f\x23\xad\x64\x56\xf9\xa7\
+\x85\x7d\xce\x44\xad\x7b\x62\xa5\x95\x8b\xf5\x41\x0e\xa9\x81\xc8\
+\xe2\xbb\x3c\x6a\x6c\x53\xd0\xe3\x46\xad\x32\x15\x35\xf1\x3a\x51\
+\x55\xf6\x76\x51\x3a\xe4\xea\x9c\x97\x7a\x45\xb7\xea\x18\x6a\x32\
+\x68\xd6\xe9\x62\xd2\x15\x60\x9d\x3e\x81\xa4\x84\x5d\x46\x9d\x35\
+\x4c\x23\x04\xed\x1b\xab\x96\x6d\xd0\x2d\x00\x43\x0f\x74\x35\xc4\
+\xb5\x31\xc6\x44\x60\xa7\x8a\x20\xf2\xdb\x50\x35\xe8\x6f\x15\x0c\
+\x10\x82\x8d\xb9\x9b\x74\xe7\x8c\x40\x2b\xb0\x0c\xb7\xe8\xda\x06\
+\x77\x24\x35\xb8\x8a\x29\xb8\x1c\x14\xe9\x41\xbe\xb4\x22\xe8\xf8\
+\x11\xce\x30\x5d\x38\x28\xf7\x4f\x89\x39\x85\xaf\xee\x61\x94\x19\
+\x66\x00\x92\x85\x4c\x82\x16\xce\xa0\xab\xb4\xd9\xeb\x6b\x45\xcf\
+\x2d\xf3\x58\x3b\x72\x00\x9e\xab\x49\xfe\x50\xaa\x78\xe2\x3a\x10\
+\x96\x01\x42\x0b\xc2\x5e\x5d\x85\xef\x1e\x30\x2d\xa4\xb0\x76\xa1\
+\x08\xa9\x57\x1d\x8a\x48\x3d\x85\x91\x5a\xb4\x1c\x43\xdb\x55\x31\
+\x9d\x4d\x43\x40\xf6\x98\x55\x60\xbd\xc4\x5a\xba\x4e\xa4\x7d\x68\
+\x12\x2d\xba\xca\x54\xd4\x24\x5d\x38\x89\xa8\x7c\x2c\x39\x2c\x2c\
+\x22\xbc\x28\x4f\x62\x15\x75\x89\x09\x26\xa9\x4f\xe3\x9e\x15\x60\
+\x8e\x57\xb4\x6c\x53\x8d\xb1\x27\x51\xf0\x84\x96\x50\xeb\xc2\xe4\
+\x02\x2a\xb7\x09\x2b\x0f\x6a\x16\x83\xfb\xd4\x80\xcf\x49\x05\xac\
+\x52\x46\x27\xe6\x1b\xe7\x0b\xf0\x71\x8d\x53\xa3\x5a\x99\x82\x2a\
+\x5e\x88\xe8\xaa\x42\x44\x20\x4a\x16\x22\xb5\x68\xba\x53\xd0\xc4\
+\xfd\x94\x9c\x81\xcf\x11\xe0\xb9\x63\x4a\x01\xbd\x08\x22\x98\x1e\
+\x6d\xd5\x50\x85\x63\x29\x08\x6f\x7c\x89\xfe\x6d\x3f\x38\x21\xcd\
+\xd7\xc7\xcc\x14\xe7\x96\x85\xaa\xcf\x44\x85\x90\x02\x44\xbf\xeb\
+\xa4\xac\xfe\x08\xac\xaa\xc9\x93\x54\xc1\x50\x19\x69\x61\xe5\xac\
+\xf0\x0d\x3e\x9a\x62\x80\x05\x0e\x4b\xc3\x2c\xfc\x52\xe7\x85\x0b\
+\xd3\xd2\x02\xd2\xae\x12\xc6\xa9\x83\xa6\x63\x7a\x3a\x4a\x83\x66\
+\xe0\xba\xa7\xf9\x13\x7e\x60\x96\xb5\xb2\x0e\x21\xfe\xa0\x9a\xc2\
+\x39\x64\x2b\x9a\x21\x85\xc8\x29\x8c\x20\xe6\xb7\x3a\x56\x60\x81\
+\xf3\x3f\x84\x50\xd5\x00\x3a\x00\x40\x20\x33\x18\x7d\xde\xba\x35\
+\xe0\xf4\xa8\xbf\x3c\x5d\xaa\x0c\xc4\x5a\xd7\x78\x00\xb1\x05\x35\
+\xa4\x57\x9d\x42\x09\x57\x7b\x0a\x3b\xbf\x83\xef\xcc\xc8\x9d\xe0\
+\x78\x01\x5b\x8a\x1c\xce\x54\xe9\x57\x37\x26\xc1\xb6\xe4\x37\x0a\
+\x3c\xbe\x59\xbc\xaf\x16\xf6\x92\xc2\xca\x8a\x65\x11\xb5\x5b\x86\
+\x2c\xb1\x16\xed\x87\x0f\xec\x70\x3d\x70\x1f\x25\x28\x21\x41\x83\
+\xc2\x00\xcb\x13\xc7\x6e\xb0\x4c\x8f\x55\x8a\xbe\x36\x6e\xd9\x36\
+\xcd\x83\x1d\x73\x94\x3d\x5e\xae\xe6\xfb\x3e\x05\xdf\xe9\x8e\xb5\
+\x3e\x19\xe8\x47\x25\x03\x16\x85\x65\x19\xe8\x09\x19\xe8\x31\x19\
+\x0c\xa9\x64\x20\x12\x9e\x1a\x71\x44\x8f\xea\x17\xca\x6e\xbe\x57\
+\xe5\x82\x02\x1c\xc0\xc4\x80\x65\x43\x2e\x77\xfb\x53\x89\xa9\xa6\
+\xcb\x20\x4c\x6e\x17\x86\x65\xba\x27\xe0\x40\xb2\xa9\x27\xc9\x4f\
+\x8b\xd7\xc7\x99\x9e\x94\xdc\xed\xb4\x24\x75\xca\x5d\x16\x35\x8d\
+\xf3\x12\xb9\x77\xdc\xb2\x67\xed\x36\x3d\xba\x37\x46\x4d\xb1\x02\
+\x69\xb6\x1a\xc6\xcd\x7c\x2c\x84\xb6\x16\x74\xcc\x2b\x3c\x08\x87\
+\x61\xd2\x26\x0a\x67\x3a\x2c\xe2\xa2\xb2\x30\xa7\x18\x2a\x8c\x5d\
+\x53\x59\xca\xbd\xbf\x50\xc1\x7d\xee\x20\xc3\x1e\x60\x4a\x8d\x14\
+\xd1\x7e\xde\x6e\x1b\x12\x78\x33\xcc\x05\x75\xb6\x81\x13\x75\x6d\
+\x46\xcc\x22\x55\xc8\xaa\x4f\x79\x0b\x4a\x20\x3b\x5a\x23\xa9\x19\
+\xbc\x77\x4a\x06\x45\x40\x1e\xe5\x2c\x84\x4b\xab\x62\xba\x92\xf0\
+\x24\x18\x4b\x79\x3f\xff\x78\xb0\xde\x17\x67\xdd\xf5\x34\x1b\x3b\
+\x58\xbc\x53\x58\x05\x73\x3a\x26\x39\xdc\x3a\xc9\x66\xf0\x68\x4c\
+\x8d\x8c\x48\xc9\x69\xe3\x92\xbd\xe3\xcb\x09\x1e\xdf\x09\x0b\xcd\
+\x21\xcc\xd3\x5c\xcc\x33\x74\x54\xff\x20\xea\x65\xc9\x9d\x11\x19\
+\x8f\x1c\xd1\x57\x60\x19\xc8\xb7\x81\x2d\xba\x5b\xe5\xd3\xc6\x9c\
+\xd1\xa3\x15\x30\x85\xab\x30\x4d\x9e\x44\x8d\x05\x77\xee\x51\x70\
+\xa7\xbf\x2b\xdc\xad\x4d\xe5\x8e\xae\x96\xcf\x79\x1c\xf5\xf4\x4a\
+\x89\xb6\xeb\x20\x57\x62\xf5\x6f\x4a\x9a\x74\x0b\xb9\x38\x65\xcb\
+\x54\xdd\x01\x1e\x21\x61\xbf\xc7\x9b\x22\x7c\xec\x8c\x55\x1d\x71\
+\xcf\x97\x16\x7a\x45\x90\x38\x77\x58\xde\xc8\x8e\xba\x42\x22\x38\
+\x38\x2e\xaf\x90\xa2\x7b\x29\xb1\xe0\xbd\xca\xe1\x96\x3a\x38\x94\
+\xdc\x37\x96\xdf\x74\xf2\x27\x7a\x81\xb1\xef\xa7\xb0\xfd\x58\xd4\
+\xaa\x8b\x87\x8d\x64\x54\x4f\xab\xad\x85\x77\x0a\x78\x75\x24\x77\
+\x3e\x27\x73\xe0\xb2\x0f\x9b\xae\x90\x76\x0e\x8b\x52\x18\x75\x5b\
+\xc3\xf1\x8d\x91\xd0\xa3\x81\x14\x68\x8b\xa4\x42\x07\x3c\xe2\xde\
+\xac\x9b\xd6\x88\xf5\x69\xc8\x8b\xef\x19\x51\x31\x67\x72\x30\x2a\
+\x0b\x9c\x88\x0a\x2b\xda\xaf\x0f\x7b\x83\x2e\xdf\xdb\x17\x02\xf5\
+\x27\x11\xa9\x9c\x80\x5d\x71\xec\x42\x05\x9d\x04\xb1\xd1\x29\xce\
+\xa3\x54\xc7\x23\x53\x58\x61\x7a\xde\xf3\x6e\xd9\xe3\x85\xc3\x29\
+\xb3\x28\xd3\x71\x3e\xff\xf2\xae\xb0\x9d\x54\x9b\xa9\xd2\x49\x29\
+\x75\x3c\x2e\x0a\x75\xd9\xd1\x89\x8e\x7b\x35\xf1\xfa\xd1\x2a\xd3\
+\x77\x23\x83\x9d\x7c\xc3\x22\x8c\xba\x25\x5e\x21\x89\xba\x47\x6c\
+\x1f\x33\xde\x42\xf3\xa2\x5b\x1c\x3b\x89\xc9\xa7\x03\x2c\x1e\xd5\
+\x93\x6f\x9b\x38\x35\x10\x6e\x53\x4f\x3f\x4b\xdb\x3e\x2c\x6d\x84\
+\x68\x25\x9d\x65\xef\x23\xa6\x49\xab\xa1\xa0\x57\xbb\xcc\xad\x42\
+\xc9\x83\x13\x6b\xf4\x46\xf4\x66\x94\xb1\x99\x53\xe5\x6b\x43\x58\
+\x78\xa7\xe9\xc3\x04\x09\x9b\xc3\xea\xa6\x9d\x41\x4c\xee\x8e\xe2\
+\xe5\xc6\x02\x31\xfb\xa6\xe9\x36\xf8\x0e\x63\x02\x9b\xd5\x95\xb4\
+\x5e\x8a\x37\x29\x19\x7e\x14\x83\x19\x32\x83\xa3\xd7\x09\x1b\x5e\
+\xb5\x50\xf9\xec\x84\x7f\x65\xc9\x56\x95\x3f\xb1\xa2\xce\x44\xb2\
+\x97\x70\xae\x44\x2c\xd6\x91\x3e\xee\x07\x06\x38\x18\x68\x82\xfe\
+\x81\xb7\xd3\x0b\x41\x55\xb7\x35\x8b\x75\x31\xd2\x2a\xa5\xdd\x64\
+\x0f\x57\x3b\x1b\x4c\xc9\x22\xa2\xd9\x3d\xdd\x86\x4e\xe7\xb0\x6b\
+\x8f\xd5\x74\x73\x52\x52\xb7\xd5\x3c\x4b\x8d\x17\x4c\x42\xe3\x65\
+\x7d\x0f\xc3\x95\x5c\xd2\x9d\x42\x87\x3b\xe2\xda\xc6\xfd\xbf\x1a\
+\xdf\x73\xb8\x78\x61\x08\x12\xbe\xcc\x54\x6e\x08\xa6\x85\x4e\xe7\
+\xb8\x04\xcf\xf0\xb9\x19\xed\x39\x30\x25\xf0\x8e\x4b\x28\xd8\x83\
+\x92\xa9\x2f\x40\xfa\x81\x57\x05\xad\x01\x33\x8c\x45\xc9\xba\xc2\
+\xc3\x8c\xec\xff\x2b\x91\xbe\x3b\xd9\xc9\xfe\xe9\x0b\x1f\x53\x94\
+\xb0\x14\x1a\x09\x87\x7a\x52\x83\x74\x2f\x36\x44\x29\x47\xa3\xb1\
+\xa6\x6d\xb8\x05\xc4\x8c\xcc\x22\x6c\x0e\x45\x18\x50\xc7\x5e\xab\
+\x6c\xd2\xf9\x0e\x73\x74\xb2\xa6\xe7\xe1\xd8\xf9\x11\x79\x00\xa5\
+\xca\x05\x69\x44\x76\xcb\x96\xde\x8c\xba\x02\xac\x02\xb5\x62\x1b\
+\xa2\x22\xaa\xd0\xf1\x4c\xe1\x3e\xcb\x48\x7a\x35\x8e\x25\x22\x76\
+\xf5\xc5\xbe\x0f\xbe\x0d\x24\x39\x01\xd1\xc4\x70\x71\x33\x43\x77\
+\x02\x1a\x53\xa0\x9a\xb4\x8a\x13\x5a\x59\x77\xd8\x1b\x18\x4c\xdc\
+\x4a\xba\x07\xbc\x07\x11\x51\x69\x4c\x90\x78\x69\xab\x0a\x1f\x16\
+\xdf\x1a\x14\xbb\xf5\x3d\xa4\x9e\x69\x6f\xd1\x1c\x91\xe3\x45\x98\
+\x0e\x85\xe5\xb3\xaa\xe4\x96\x37\x24\x2e\x74\xaa\xe5\xca\x04\xfa\
+\x38\x4c\x4b\x6c\x2c\x96\xe5\xae\xa2\x1f\x54\x8b\x45\x16\x13\xc2\
+\x6a\x9a\x06\x05\x0f\xa3\x6b\x5a\xd7\x95\xb2\x2e\x6d\x99\xbd\xe7\
+\xc5\xd0\x57\x99\xe0\x3b\x78\xc7\x57\x12\x67\xe2\x74\xaf\xc7\x25\
+\x61\xa0\x9e\x0a\x0a\x63\x83\xc4\x62\x2f\xad\xaf\x08\x11\x96\x36\
+\x62\x80\x22\xc3\x2a\x00\x7e\xdc\x9b\x6d\x63\xd0\xd1\xcc\x79\x4f\
+\x72\x28\x8a\xa0\x6c\xd8\xd5\x97\x54\xba\x75\x23\x6d\x6d\xd1\x50\
+\xa9\xfc\x38\x8b\x9d\x71\x1a\x05\x04\xe6\x96\x8d\x34\x4b\x09\x4a\
+\xca\x0f\xa6\x3f\xc1\x5b\x03\x72\xaa\x01\x88\x9a\x0f\xea\x13\x27\
+\xdd\x66\x10\x4c\x9d\x34\xe0\x7a\xe3\xba\x67\xd4\x21\x50\x8d\x0c\
+\x93\xfa\x0e\x21\xe5\xe4\x43\x48\x29\xbc\xd1\x61\x22\x1b\x7d\x9b\
+\x20\xa6\x79\xc8\x74\x46\x53\x04\xac\xe1\x10\xa9\xce\xf7\x0f\x1c\
+\xee\xe1\xf4\x28\xe4\x08\x28\xd9\x1d\xba\x05\x75\x81\xa7\x97\xd5\
+\xb8\x0f\x25\x86\x7f\x28\x94\x83\x68\x1d\xc7\x6b\xb0\x66\xea\x9d\
+\xce\x1e\x79\xa4\x92\xcd\xd5\x94\xf5\x83\x60\x4d\xe5\x94\x89\xa0\
+\x0e\xe4\x42\xda\x15\x4d\x61\xc5\xc2\x44\xfb\xff\x9a\x15\xcb\x39\
+\x6a\x56\xae\x55\x1e\x9d\xab\x60\x16\x36\x55\x0a\x70\x7c\x19\x5a\
+\x51\xcb\x90\x38\x47\x57\x71\x2d\x7a\x8a\x4e\x9e\x7f\x52\xf3\xe3\
+\x9c\x90\x91\xad\xa9\xa9\x3f\xb5\x96\xfa\x9a\x89\x2d\x35\xc5\x0b\
+\x6a\x94\xe9\xf9\xd0\x2e\xc4\xfc\xcd\x0e\x59\x4b\x8f\x06\xd6\x6b\
+\xa1\x62\x4a\xb0\x64\x35\x49\x87\x45\xab\xea\xb7\x27\xd3\x0c\x91\
+\x54\xed\x4c\xac\x53\x3a\xd0\x1e\xc5\xb4\x58\x89\xe7\xa2\x5e\xaa\
+\x70\x67\x63\x03\x3d\x39\x9b\xa0\xc6\x30\xe5\x80\x98\xfa\xb3\xde\
+\xc4\x68\x75\xbd\x63\xd4\xb3\x71\xbc\x58\x9e\x2d\xa6\x38\x5a\x11\
+\x07\xdd\xb7\x41\xe0\x3b\xb1\xec\xb3\xf0\x38\x47\x3d\x3d\xc6\x7a\
+\x91\x77\x0d\xa3\x76\xb1\x6e\x73\x48\x83\x3c\xc2\x9d\xa0\x63\x3e\
+\xe9\x03\xa8\x74\xf1\xce\x42\xfc\xe1\xc8\x83\x38\x40\xda\xd6\x57\
+\x85\xe4\x92\x79\x6d\x91\x3c\xf0\x19\x62\x1e\x71\xe5\x61\x89\x30\
+\xa5\x51\x4f\x7e\xcc\xe2\x11\xb7\x76\xec\x43\x86\xb8\x96\x4b\xa7\
+\xcc\xbb\x05\xec\x08\x8c\x4b\xc2\xd9\xee\x30\xdd\x4a\xc7\x33\xb7\
+\x1f\xe4\x40\x23\x3b\x6d\x11\x4c\x8a\x6b\x3e\xb6\xa1\x68\x82\x11\
+\x1e\xf0\xe2\x1d\x0a\x11\x44\x87\x5c\x67\x94\x9e\xe1\xb2\x1c\xdd\
+\x56\x03\xb9\x7c\x8a\x83\xdc\x29\xe4\xf2\x22\x4b\x81\x9c\x3f\xdd\
+\x0f\x22\xb8\x22\x22\x64\x89\x4c\x48\xc4\x56\x74\x80\x3b\x74\xeb\
+\xb5\xe4\x1d\xf3\x5c\x7a\x2d\xa8\x6d\x98\x2f\x14\xb8\x4f\x11\x0a\
+\x1a\xdf\xe9\xa2\xa5\xa6\x40\xc0\x2a\xf6\x55\x64\x1d\x72\x15\x7e\
+\x2b\x8a\xc5\xf7\xb1\xd9\xf4\x82\x0e\xba\xda\xbd\x6a\x1d\xfb\x81\
+\xee\xee\xe9\xc1\x72\x35\x15\x39\x99\x0a\x91\x91\x0d\xd3\x2f\xd5\
+\x5f\x74\xf2\x59\xfa\xc4\xa1\x12\xa1\xe6\xd2\x91\x12\x35\x84\x7d\
+\xc7\xbc\xc6\xea\xe3\x2c\xaa\x15\x5e\x1c\x3b\xd8\x52\xff\x02\x77\
+\x49\x29\xb6\xa0\x49\x67\x13\x53\x82\xc7\x4b\xe9\x20\x36\xe6\xda\
+\x29\xc6\xb0\xa5\x2e\x1e\xed\x74\x5c\x35\x1c\xcd\x97\x70\xd6\xc1\
+\x48\x07\xf8\xa3\xd8\x71\x4b\x51\x27\x44\x27\x29\xf1\x60\x16\xce\
+\xd7\x58\xe5\x78\xa9\xd0\x87\x05\x9b\x3c\xe3\x25\x97\x0a\xaa\x6f\
+\x36\xd4\x7d\xd8\x6d\xaa\x99\x92\xae\xda\x43\x5e\x89\x53\x70\x0a\
+\xf4\xd3\xc8\xe4\x55\xe0\xe6\x24\xce\x91\xca\x47\x19\x5a\xb6\x80\
+\x20\x78\x7b\x43\x2d\xbd\x21\x1e\xee\x5c\x55\x19\xa0\xa6\x7e\x5a\
+\xf9\x80\x0a\x64\x9e\x57\x4e\xfc\x70\xad\xa0\x64\x37\x9e\x9e\x4d\
+\xfb\x6c\x26\x19\x48\x94\x95\x99\xdd\xf4\x9c\x6d\xfa\xfb\xfc\x84\
+\xaf\x78\x1f\x0f\xc5\xa6\xbd\xbf\x0c\x05\x5b\xef\xc0\x6d\x7b\x6c\
+\xca\x36\x52\x74\x0a\x93\xb6\xab\xb9\x07\x1b\x26\xb5\xa3\x3f\xcd\
+\xbb\x70\xb3\x5f\xfd\x89\x3c\x77\x57\xcf\xe1\x95\x39\xf4\x54\x0e\
+\xed\x8b\x2b\x86\x86\x62\x80\xbb\xc1\x37\x46\x8d\xb1\x68\x1d\x27\
+\x03\x3d\x4b\x6a\xc3\x07\x56\x39\x85\x47\x6a\x90\xa5\x44\x65\xd9\
+\xb8\xd3\xc5\xc8\xd2\x1e\xbe\x1d\xd0\x73\x34\x27\xf4\xb8\x4e\x2d\
+\xa6\xe3\x72\xc0\x92\x82\xa5\xbf\x24\x2d\xc2\x42\x2f\x2f\x6f\x70\
+\xa8\xfe\x8e\x4e\xfb\x80\xfc\x17\x74\x52\x01\x9e\x5e\xdf\x1f\x02\
+\x91\xc0\x26\xff\xce\x87\x12\xec\x31\x9e\x0c\x69\x8b\x60\x8d\x1e\
+\xaa\xbf\x33\x22\x7f\x90\x05\x43\x4d\xe6\x57\x8d\x9b\xd9\x91\x84\
+\x9a\x97\xe9\xa8\x34\xfd\x0b\x04\x85\xc4\xf4\x4e\xda\x61\x12\x79\
+\x12\x7b\x5e\xda\x61\xd0\x1a\x2c\xe1\xb9\x07\x83\xfb\xdf\x37\x24\
+\x47\x1f\xce\x80\x09\xfd\xc5\xec\x9e\xae\x5b\xc1\x75\x0c\x2b\x15\
+\xe8\x34\x5d\x63\x0d\xbc\x01\xf0\x8b\xec\x50\x42\x58\xb0\xc6\xf7\
+\xcc\xac\x68\xf4\x48\x34\x1a\x59\x7a\x24\x3a\x4f\x72\x9d\x70\xf2\
+\x6e\x8f\x1e\x74\xae\x56\x0c\x9d\x4d\xc2\xf3\xee\xba\x12\xf9\x12\
+\xf2\x2d\xbe\x0f\x13\x6e\x09\x88\xd9\xfb\x42\xc2\xbe\xdb\xf6\xb8\
+\x90\x72\xeb\xce\xa8\x6d\xaa\x39\xc9\xc7\x06\x97\x6d\x29\x79\x0b\
+\x74\x4f\xad\x34\x53\x16\x70\x35\x5f\xf4\x83\xe7\x51\x09\xc7\x48\
+\xd7\x7a\xc2\xfe\xd4\x4f\x41\xa1\xcf\x0b\x2f\x66\x62\x32\x24\x73\
+\x00\x16\x0d\x51\x2f\xd7\x10\x30\x33\xfc\x13\x33\x82\xd8\x1d\xba\
+\x2f\x8a\x54\x7c\x77\x5c\x3a\x08\x97\x93\xff\x5e\x8c\xf8\x68\x27\
+\xef\x9d\xa9\x3f\xd2\x52\x8e\x1d\x46\x1b\xea\x62\x59\x86\xc5\x8e\
+\xb3\x1a\xde\xff\x02\xb7\xa1\x0e\xab\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x00\x10\
+\x3c\
+\xb8\x64\x18\xca\xef\x9c\x95\xcd\x21\x1c\xbf\x60\xa1\xbd\xdd\
+\x00\x00\x28\xe4\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xdc\x00\x07\x00\x07\x2e\x6d\xaa\x01\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdb\x06\x03\
+\x0b\x21\x39\xf6\x17\x6e\x08\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\x7d\x79\x94\x5d\x55\x99\xef\xef\x3b\
+\xe7\xdc\x7b\x6b\xae\x54\x8a\x84\x84\x40\x12\x22\x61\x4a\x40\xc3\
+\x68\x10\x14\x70\x68\x27\x94\x38\x34\xad\x32\xf8\x96\xba\x7c\xb6\
+\xdd\xfd\xc4\xd5\xbe\x7e\xaf\x9f\x6b\xbd\x7f\x7c\x2d\xb6\xb6\x0a\
+\xab\x97\xad\xaf\xd7\x7b\xad\x88\x8a\x08\xe8\x0b\x04\x19\x14\x50\
+\x22\x04\x85\x30\x0f\x01\x22\x21\x33\x19\x2a\x55\xa9\xe9\x0e\x67\
+\xef\xef\xfd\xb1\xa7\x6f\x9f\x5b\x36\x4d\xaa\x92\xaa\xc0\xdd\xac\
+\x0a\x77\x3a\xe7\xdc\x7b\xf6\xb7\xbf\xe1\xf7\xfd\xbe\x6f\x03\xad\
+\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\
+\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\
+\xad\xd1\x1a\xad\xd1\x1a\xad\xf1\xda\x1c\x34\xd3\xbe\xd0\xce\x27\
+\xbe\xc2\x4c\x00\x81\xcc\xd7\x23\x06\x11\x81\x61\x5f\xa3\xf0\x95\
+\xc9\x3f\x26\x84\xb7\x0a\xef\x13\xcc\xb1\xe4\x1f\x88\x53\x98\x07\
+\xfd\x4b\xae\xa4\x96\x00\x1c\xc2\x71\xfb\x95\xc7\x31\x40\x38\xf5\
+\x8a\xcb\x40\x72\x82\xec\x24\x1b\x01\x00\x18\x76\xb2\x88\xc2\x17\
+\xb5\x93\x6a\x3f\x09\xf6\xef\x39\x21\x70\x27\xb4\x9f\x75\x47\xfa\
+\x63\x0a\xc2\xe3\x3f\x27\x06\x17\xee\x0c\x87\xe3\xfb\x8f\xfd\x02\
+\xb5\x04\x60\x0a\x26\x1f\x00\xd2\x8c\xb0\xec\xd2\x4f\xf8\xaf\xe1\
+\x57\x70\x61\xb2\xe4\x0a\x67\xab\x19\xc2\xe2\x97\xc7\x8a\x9f\x94\
+\x18\x41\x20\x2f\x30\xf6\x9c\x64\x44\x0b\x91\x46\x20\x30\x71\x74\
+\xc5\xf8\x16\x71\xb3\x30\xb0\xbb\xa8\x79\xaf\xff\xd8\xc3\x53\x8b\
+\x24\x87\x76\xf2\x97\xfa\x3b\x99\xa6\x84\x2c\x01\x98\xe1\xfe\x01\
+\x33\xc0\xcc\x80\x16\xaf\xd9\xff\xdc\xfb\xee\xf5\x70\x8c\x06\xd8\
+\x1d\x0b\xfb\x59\xb8\x27\xe6\xb9\xfb\xb8\xff\xbc\xbd\x8e\xfd\x1c\
+\x33\x83\xdc\x6b\x2c\x26\xda\x9d\x67\xc2\x25\x63\x27\x9f\x63\xf9\
+\x38\xdc\x46\x36\x1d\x93\x9f\xa4\x84\x2c\x35\x1a\x40\xd5\x6a\x48\
+\xcb\xe5\x78\xed\x11\x83\x99\xc0\x6e\x05\x87\x69\x35\xab\x95\x8d\
+\x12\x21\x6d\x6d\x3c\x01\xe4\x27\xaa\x79\xc5\x46\x8b\x16\x66\xb5\
+\x83\x61\x57\x7d\x02\xb0\x06\x3b\xbb\x23\x0f\x67\x6a\xd6\x91\xde\
+\xbc\xb0\xbb\xf0\x61\xbb\xfa\x0f\x99\x06\x30\x93\xcf\x61\xe5\xa7\
+\xe6\xff\x49\x42\xd8\x7e\xfb\xcd\xe6\xae\xea\x58\x13\x90\x5b\xc1\
+\x76\x85\xc2\xad\x60\xed\x96\xba\xd5\x0c\xcc\x80\xb6\x9f\x41\xe1\
+\x75\x7b\x5e\xf6\xe7\xb4\xe7\xd3\xf0\x2b\x57\x9e\x1b\x00\x58\x73\
+\xa4\x49\x8a\x0a\x20\x12\x08\x3a\x34\xab\xff\xae\x72\x89\x0e\x5b\
+\x01\x08\x2b\x9f\x90\xa4\x84\xd4\xfe\x25\x29\x21\xcd\xac\x19\xd5\
+\x56\xd1\x0b\xf5\xef\x27\xd4\x4d\x2a\x73\xa4\xfe\xe5\xfb\x0c\x6b\
+\x06\xbc\x70\x08\xc1\x81\xb6\x02\xa2\x8d\xfa\x07\x40\xe6\x22\xe1\
+\x7d\x67\x42\xb4\x9b\x74\x6d\x56\xb7\xbf\x5e\x41\x10\xbc\xda\xe7\
+\x83\xe2\x45\x6d\x68\x2b\x13\x00\xdc\x5b\x2e\xb7\x01\xc0\x30\xa1\
+\xfd\xa6\x72\xe9\x43\xd7\x95\x4a\xa5\xc3\xca\x09\x0c\x93\xcf\x48\
+\x92\x30\xf9\x59\x46\x48\x53\x20\xcb\x08\x47\xbe\x63\x15\x92\x52\
+\x16\x7b\xef\x3e\x84\xa3\x82\x43\x2e\x3c\x7d\xbf\x02\x49\xf8\x8d\
+\x52\x65\x27\xcd\x8e\x22\x0a\x1e\xbf\x8d\x20\x42\xd8\x19\xa2\x02\
+\xb2\xea\xdd\x79\x9f\xd1\xb1\x24\xcd\xc1\xc1\x89\x0c\x7e\x5f\x29\
+\xaf\x1a\x67\x7c\xbe\x0e\x3e\x7f\x0c\x78\xae\xc6\x38\x69\x1c\xd0\
+\xe3\x8c\x3b\xab\xc0\xf7\xab\xe0\x5b\xfe\x5b\x9e\x8f\xcd\x58\x0d\
+\x60\xbc\x7d\xb6\x0e\x79\x82\x34\x31\xaa\x3f\xcb\x80\x34\x01\x32\
+\x2b\x0c\xce\x91\x66\xad\x83\x63\x66\x57\x27\x6b\x1d\xab\x7b\xb0\
+\x09\xfd\x38\xa8\xfe\xa0\xf6\x85\x3a\x77\xce\xa2\x5d\xf1\xde\x51\
+\x44\xd0\x0c\x7b\x06\x46\xf0\xc0\xef\x37\x82\x21\x1d\x40\x73\x3c\
+\x59\xcd\xc0\xde\x89\x10\xe7\x87\x30\x49\x34\x91\x8d\x98\x9a\xc1\
+\xc0\xcd\x00\xde\x9e\x83\x52\xcd\x38\x29\x07\xa0\x80\x44\x01\xef\
+\x56\xe0\xeb\x15\x30\xfa\xe5\x2c\x5b\xff\xdf\xb3\xec\x94\x19\x27\
+\x00\x66\xe5\x87\xf0\x2c\x4d\x81\x24\x23\x24\x69\xe2\xcd\x40\x92\
+\x1a\x41\xa0\xc4\x38\x61\xde\xfe\x6b\xe1\xa5\x8b\xc9\x27\x3b\xa9\
+\xec\x4d\x44\xec\xe4\x41\x4c\x8e\x53\xed\x6c\x05\x2b\x12\x08\x7b\
+\xce\xb1\xb1\x1a\x1e\x5c\xbf\x29\x32\x27\xec\xcd\x8b\x3d\x9d\x0e\
+\xd1\x83\x34\x43\xc4\xd1\x85\xa7\xfc\xfe\x3d\x04\xbc\x93\x6b\x75\
+\x28\x66\x28\x33\xf1\xd0\x64\xac\xa3\x26\x86\x26\xf3\x9a\x62\xac\
+\xa8\x33\xbf\xab\xc7\xce\xe3\x5f\xa5\x29\x4d\xbb\x00\x48\xb5\x4f\
+\x24\xec\x7d\x62\x04\x21\x4b\xec\xe4\x5b\x41\x60\x0e\x2b\xac\xb8\
+\x92\xfd\xfd\x8d\x1c\x41\x1d\x1c\x42\x76\x61\x9d\x16\x0e\x1b\xc7\
+\x0e\x1e\x44\x38\xe9\x7c\x03\x00\xe5\x52\x8a\x7a\x3d\x0f\x17\x61\
+\x21\x27\x52\x28\x58\x87\xf0\xd3\x0a\x20\xb3\xb6\xce\xa2\x46\xff\
+\x92\x2f\x4e\xb9\xfa\xdf\xf9\xe5\x2f\x7f\x72\xff\x79\xe7\x21\xaf\
+\x54\x80\x7a\x1d\xdc\x68\x40\x2b\x46\x6e\x95\x9e\x62\xf2\x42\xd1\
+\x00\xbe\xf1\x17\x69\x3a\x0e\x00\xff\xac\xd4\xab\x96\xc6\x6c\xea\
+\xd5\x7e\xb0\xe1\x66\x92\xe1\xbd\x7e\xff\x97\x85\xe7\x60\xf3\x43\
+\x88\xd9\x20\x7f\x0e\xa4\x81\x06\x38\x31\xff\x37\x8a\x5f\xc4\x72\
+\xc6\x49\x13\x96\x1d\x0c\x6d\xec\x38\x87\x30\x12\x64\x43\xc9\x09\
+\x50\x9c\xac\x94\xa2\x5e\x57\x76\xa2\xcd\x75\x29\x8e\xf3\x62\x93\
+\x64\xaf\xc5\x22\xfc\x23\x3e\x38\x2e\xd4\xd8\x59\x67\x7d\x60\xe0\
+\x8c\x33\xd0\x18\xd8\x07\x7e\xf2\x49\x24\xeb\x1e\x00\x3f\xf9\x04\
+\x78\xff\x30\x34\x00\x95\xa5\xd0\x44\x50\x6c\xdc\xdf\x9c\x50\xbe\
+\x34\x4d\xff\xfe\x3a\xa5\xfe\x61\xda\x04\x40\xae\x7c\x80\x90\x24\
+\xb0\x8e\x5f\x98\xec\xcc\x0a\x44\x6a\x5f\x4f\x52\xe7\x69\x5b\x67\
+\x8f\x82\x6a\x27\x87\x07\x00\xd8\xb6\x7d\x1f\xd6\x3d\xb2\x05\x1f\
+\x7e\xdf\xa9\x02\x7c\x23\xff\x3e\xc1\x2c\x07\x26\xb6\x0e\x9c\x8b\
+\xd3\x39\x08\x8f\x47\x02\xcd\xf1\x95\x52\x8a\x5a\xad\x1e\x7c\x00\
+\xe7\x0d\xfa\x6f\xc3\xde\xe9\x63\x16\x00\x25\x87\xdf\xc8\x34\xf5\
+\xea\xff\x86\x9b\x56\x9f\xab\xeb\xd4\xc5\xe3\xa3\xd0\x2a\xc7\xf8\
+\x09\xc7\xa3\x7a\xdc\x1b\xd0\xd8\x3f\x04\xbd\x71\x23\xf8\xd1\x47\
+\xc1\x1b\x9e\x83\xde\xbf\xdf\x9a\x84\x84\xb4\x71\x52\x77\x4e\x1b\
+\x10\x74\xfb\x95\x4b\x3b\xdd\xe3\xa5\x1f\xbc\xc8\xd8\x75\xad\xb1\
+\xf5\xae\xdb\x90\x39\x7b\x9f\x59\x5f\x20\x0d\xa6\xa0\x74\xda\x7b\
+\xa0\xc1\x18\x1f\xab\x61\x60\xa8\x8a\xa3\xe7\xf7\x82\x40\xb8\xe7\
+\xfe\xe7\x51\xab\x2b\xbc\xfb\xfc\x13\x00\x22\xd4\x1b\x0a\xbb\x76\
+\x0f\x9b\x89\x61\x97\x23\xd0\x16\x28\x82\x59\xed\x0e\xe6\xb1\x9a\
+\xc4\x7e\x4a\x00\x36\x42\xd5\x93\x31\x01\xb5\xba\x8a\x4c\x80\x83\
+\xa0\xd9\x3f\x8e\xcf\xe1\xb4\x10\x79\x14\x70\xea\x35\xc0\xfc\x3f\
+\x5e\x75\xf9\x70\xfb\xc9\x18\x28\x1d\x8f\x1c\xb3\xa1\xea\x00\x57\
+\xc7\xa1\x1b\x39\xaa\x47\x2d\xc0\xf8\xbc\x79\xa8\x9f\x7b\x1e\xf2\
+\xad\x5b\xc0\x1b\x36\x40\xbd\xb8\x09\x7a\x78\x18\x65\xe0\x67\xd3\
+\x22\x00\xb7\x5f\xb9\x94\x4e\xb8\xf8\xa2\x11\x1f\xa2\x59\xcf\x8f\
+\xd3\x0c\x0b\xdf\x7d\x91\x0f\xa1\xf2\x46\x8e\xd1\x87\xee\x34\x1a\
+\x20\x33\xf8\x7b\x9a\x18\x35\xbb\x65\xdb\x10\xee\x5f\xff\x12\xfe\
+\xd3\x25\x67\x80\x19\x28\x65\x29\x86\x47\xea\x1e\x8a\x25\x22\x68\
+\x66\x68\xcd\x6e\x8e\x3c\x72\xe7\xa6\xdb\x79\xe4\xde\x8c\xd8\x15\
+\x4a\x72\x6e\xfd\x64\x02\xa5\x34\x01\xc0\xc8\x1b\x39\xb2\x52\x16\
+\x39\x74\x02\xe2\x17\xc7\x8a\xfc\x81\x3f\x97\x9e\x7a\x60\xa6\xbe\
+\xef\xc3\x9d\x23\x77\x23\x6d\xfc\x1a\x1d\x34\x0b\x43\xd9\x62\x0c\
+\xa4\xc7\x62\x9c\xfb\xa0\x1a\x04\xae\xd6\xc0\xf5\x1a\x1a\x7d\xb3\
+\x51\x3d\xf3\x2c\xd4\x96\x2d\x87\xda\xbb\xfb\x81\x9f\xdf\xf9\xab\
+\xe1\x69\x11\x80\xe3\x3f\xf8\x7e\xed\x9c\x2f\x77\xeb\xbd\xe3\x65\
+\x96\x27\x98\x08\x69\x29\x43\xcf\xca\xf7\x61\xf8\x89\x07\x90\xe4\
+\x83\x5e\xb5\x12\x80\x5a\xbd\x81\x72\x29\xf5\x5e\x58\xb9\xec\x1c\
+\x34\x8b\x1e\x12\x41\x29\x0b\xde\xd8\x55\x0e\x69\x0a\xdc\xb9\xec\
+\xaa\x65\xb2\x9f\x61\x93\x59\xf4\x3e\x81\xf8\x76\x00\x50\x29\x97\
+\x50\xad\x36\xd0\x95\x26\x22\x73\x18\xcc\x85\x39\xa7\x33\x4b\xee\
+\xba\xce\x0f\x98\x7a\x0d\x70\xff\x3f\x2c\x3b\x5d\x69\xcc\x6e\xa0\
+\x82\x3c\x61\x50\x7d\x04\x9d\xa3\xeb\x91\xe5\x0f\xa1\x53\x77\x62\
+\x90\xe6\x63\x1f\x8e\xc2\xb8\xee\x41\x9e\x13\x74\xad\x06\x5d\xab\
+\x43\x77\xf6\x5c\x3b\x6d\xb9\x00\x66\x0e\x8e\x1b\x87\x55\xe2\x27\
+\xc1\xc3\xe6\x46\x3c\xba\x97\xbf\x19\x0c\x46\xfe\xe8\xed\x1e\xf6\
+\x6d\xe4\x0a\xa5\x34\xb1\xe7\x72\xea\x39\xb7\xc2\x63\xc2\x45\xa5\
+\x84\xf7\x2f\x57\x34\xd8\x6a\x78\x33\xc9\xe4\x85\x2e\x84\xe9\x24\
+\xd0\x24\x9f\xf3\x23\xa0\x52\x4e\x51\xad\xe5\xe8\xea\x2c\x3b\xdf\
+\xd1\x9e\x3f\xb1\x68\x21\xf9\x63\x12\x7b\x12\xe9\x34\x1e\x84\x71\
+\x99\x83\x37\xb4\x66\x28\x26\xe4\x28\x21\x07\x03\xaa\x86\xce\xfa\
+\x73\xc8\xf2\x67\xd1\xa9\xca\x18\xd2\xfd\x18\xd0\x47\xa0\xca\x1d\
+\x60\x94\x6e\x9c\x16\x01\xd8\x78\xf7\x7f\x61\x09\x88\x30\x82\x10\
+\xf8\x1b\xe4\xd0\x3c\xe1\xdd\x11\x80\xd2\x8a\xf7\xf8\xa4\x4e\xa3\
+\xa1\x91\x65\xe4\xcf\x51\xca\x12\xd4\xeb\xb9\x0d\xfd\x08\x94\x18\
+\x0d\xc0\xd6\x1c\x84\x55\xac\xad\x27\xce\x21\x99\xe3\x04\x84\x85\
+\x93\x16\xa9\x6e\xab\x99\x34\xa3\xad\x92\xa1\x5a\x6b\x84\x4c\x61\
+\x14\x2d\x38\xcd\x21\xf0\x1e\xc7\x1d\x70\x61\xeb\xd4\xbb\x00\x7f\
+\xae\x98\xbd\xb9\xd3\xcc\x46\x18\x98\xa1\x99\xa0\x50\x82\x62\x0d\
+\x56\x0a\xed\xf9\x36\xcc\x69\x6c\x41\xb7\xca\x1e\xbd\x66\xcd\x8e\
+\x3d\xd3\x03\x04\xf9\x78\x3c\x28\x57\x1f\xcf\x6b\xfb\x58\x07\x30\
+\x47\x82\x37\x32\x69\xd3\xc8\x73\x64\x69\xe2\x63\xed\x52\x9a\xa0\
+\xde\x50\xfe\x8c\x59\x92\x78\x0d\x10\xd0\xbe\x38\xdd\x6b\xd4\x8c\
+\x8e\xd1\x3a\x9f\xd0\xb1\x78\x41\x21\x8f\xd0\x56\x29\x61\x7c\xbc\
+\x6e\x51\xc5\x10\xeb\xfb\x6c\x11\xcb\x20\xd0\xe5\x2a\x44\x62\x80\
+\xa7\xce\x07\x78\xf0\x6b\xa7\x9c\xcc\xa0\xf9\x4a\x33\xb4\x46\xf4\
+\xa7\xb4\xd5\x08\x9a\x5d\xe8\x87\x5c\xa7\x68\xe8\x0c\x00\xff\x70\
+\xfa\xd2\xc1\x5c\xc8\xb5\xda\x50\xce\xdb\x53\x01\xf0\x78\x06\x8f\
+\x0e\x2b\xd2\x79\xd3\x79\xae\x0d\x28\x64\x43\xb2\x52\x96\xa0\xd1\
+\x50\x3e\x0e\x4f\x53\x42\x9e\x6b\x6f\x22\x38\x4a\x64\x50\x6c\xd9\
+\x45\xdc\x1f\x94\x0e\xf9\x89\xf4\x26\x02\x64\x34\x40\xb5\xe1\x1d\
+\x49\xef\x47\x70\xf8\xee\x8e\x91\xc4\x14\xe3\x01\x34\xc5\x10\x70\
+\xae\xf4\xa5\x4a\x71\x98\x70\xb6\x93\x6f\xb5\x81\x62\x86\xb2\xaf\
+\x69\x65\xdf\x37\xf7\xf0\xa7\xd3\x26\x00\x11\xf9\xc2\x4f\xba\x98\
+\x05\x1d\x6e\x20\x34\x83\x1d\x4b\x47\x1e\x4f\x04\x95\x6b\x24\xce\
+\x77\x00\x1b\x13\xd0\x88\x7d\x80\x5c\xe9\x26\xdc\x9d\x11\x85\xeb\
+\x5e\x6d\x43\x93\xd1\x6d\xda\xaa\x71\x97\xd7\x89\x54\xb9\x35\x01\
+\xd5\x7a\x10\x54\x21\x28\x3e\x62\xf0\x7e\x04\x05\x1e\x80\xb6\x66\
+\x64\x6a\xc1\xff\x8f\x29\x6b\xfb\x23\xd5\xaf\x85\x49\xf0\xef\x19\
+\x61\x60\xf0\xb3\xd7\xac\xd9\xb9\x6d\xfa\x04\x80\x5d\x9c\x8c\x78\
+\xc5\xb8\x54\xaa\x0b\xd7\x9c\xed\xd6\x1c\x48\x9a\x30\xef\x11\x18\
+\x4a\x6b\xa4\x89\xf0\x01\x4a\x09\x1a\xb9\xb2\x6a\x38\x41\x96\x26\
+\xc8\x73\xe5\xaf\x09\xcf\xea\x22\xaf\x9a\xc3\xf7\xb0\xf1\xba\x0e\
+\x9a\x29\x68\x0d\x8b\x0f\x58\x03\x5e\xa9\x64\x18\xab\x36\x82\x29\
+\x11\x59\x42\xa7\x15\x34\x3b\xee\xa1\x43\xfe\xa8\x80\x1b\x4c\x7e\
+\xac\xbb\x6a\xf9\x92\x5c\xf1\x62\x37\xf1\x4a\x33\x94\xe2\x48\x13\
+\xb0\x15\x08\x25\x9c\x44\x80\x7e\x34\xd9\x6b\x1f\xb0\x00\x3c\x7f\
+\xe7\xe7\xd9\x4f\xba\x08\x8d\xdd\xa4\x06\xe7\x4b\x42\xb8\xf6\x7d\
+\x1b\x1a\x82\x0c\x13\x87\x35\x23\x11\x51\x40\x29\x71\x26\xc0\x2c\
+\x8d\x34\x31\x26\x20\xc2\x75\x19\xd1\xf3\x00\xfe\x44\xf3\xe8\xc3\
+\x3f\xf9\x3d\x5d\x44\xd8\xd1\x66\x7c\x00\x66\x8e\x30\x02\x2f\x04\
+\x12\x96\xe4\x42\x10\x49\xc0\xfc\x65\x5f\x9e\x12\x11\x50\x9a\x3f\
+\xae\x35\xa0\xac\x6a\xb7\x79\x28\x3f\xf9\x41\x1b\x38\xbf\xc0\x08\
+\x7d\x4a\xf8\xf1\xb4\xa5\x83\xa5\x33\x16\xb8\x1a\xc1\xc9\x62\x9b\
+\xd9\xf3\x9c\xbc\x88\xd3\x07\xe1\x78\x09\x7e\x9e\x3d\x6f\x96\x19\
+\x27\xd0\x39\x6b\x59\x96\x40\x6b\x0d\xe5\xd3\xc3\x5a\xb8\x66\x62\
+\x62\x74\x48\xe6\x00\x46\x55\x06\x87\x30\xfe\x8e\x60\x46\x7b\x25\
+\xc3\xd8\x78\xc3\xdb\x12\x2f\x2a\x3e\x73\x28\x32\x8f\xc5\x3f\x3d\
+\xa5\x3e\xc0\x27\x94\x5b\xfd\x7e\xa2\x9d\xca\xd7\x56\x2b\x04\xbb\
+\x6f\xfe\x68\xd3\xb7\x6e\xdd\xf9\xc7\x69\xd3\x00\xb1\xca\x8f\x57\
+\xa1\x47\x05\x39\x20\xf1\x14\xfe\x09\x50\x3e\x82\x00\x10\x19\x46\
+\x0e\x11\x50\xca\x08\x79\x23\x30\x75\x88\x80\x2c\x4b\xd1\xa8\xe7\
+\x48\x2b\x59\x04\xfa\xf8\x13\x49\x12\xa7\x4d\x02\xc5\xef\x73\x9c\
+\x10\x22\x46\x7b\x7b\x86\xf1\x97\xeb\x96\x51\x14\x6c\x93\x34\x07\
+\x4e\x89\x09\x40\x23\x98\x9b\x29\x18\xbf\xfb\x5f\xcb\x17\x80\xf9\
+\x44\xb3\xd2\xc5\xe4\x4b\x95\xaf\xc3\xff\xcd\x42\x60\x10\xe1\x27\
+\x53\x71\xfd\x6c\x72\xf6\xdf\x4e\x3a\x31\x28\xc6\x4d\xe1\xee\xa9\
+\x07\x6b\x24\x78\xe2\xd2\xb5\x1e\x2f\x88\x89\x1d\x69\x6a\xc2\x3e\
+\xd6\x0c\x32\x88\x2d\xca\x59\x82\x7a\x43\xa3\x5c\x0e\x67\xf4\x89\
+\x1f\xa1\xe4\x83\xd5\xe1\x90\x25\xb4\xd7\x82\x04\xac\x00\xb4\x57\
+\x4a\x18\x1d\x6b\x04\x01\x26\x2d\xec\x7c\x90\x17\x4a\x1c\x1e\x10\
+\xe0\xe7\xa9\xc2\x81\x28\xa1\x3f\xcf\xf3\xe0\xdc\x69\x36\x69\x5f\
+\xe5\x9d\x3f\x18\x87\x2f\x72\x0e\x81\x04\xb8\x6e\x5a\x05\x20\x24\
+\xc2\x5c\xba\xb6\x80\x8e\x91\x05\x63\x1c\x1a\x48\x02\xac\x71\x1c\
+\x7c\xe7\x0b\x78\x3e\x1e\x7b\xe7\x2e\x49\x80\x3c\xd7\xc8\x4a\x09\
+\x00\x42\xa9\x94\xa2\x5e\xaf\x83\x3a\x4a\x81\x0a\x56\x80\x6e\x82\
+\xfe\x71\x70\xb0\x04\x8d\x24\x96\x6f\x3e\xd5\xd1\x1e\x7c\x00\xcf\
+\x4c\x8a\x12\x3e\xda\x82\x5b\x21\x0a\x60\xd6\x7f\xa2\x7e\xe0\x80\
+\x17\xd2\x65\xde\xd6\x3b\xfb\x2e\x26\x5b\x89\x08\x40\x79\x87\x90\
+\x77\x7c\x7b\xcd\xce\xa7\xa7\x24\xf7\x30\x29\x0c\x28\x5a\xd1\xda\
+\x13\x29\xd8\x01\x41\x2c\x41\x13\xaf\xef\xad\x6a\x77\xfe\x81\x16\
+\x60\x4d\x00\x6e\x8c\x16\x50\xde\xa7\x28\x65\x09\x1a\xb9\x8e\x19\
+\xbf\x0e\x4c\xd2\x2e\xe9\xc3\x11\x43\x28\x50\xc1\x24\x99\x54\x7b\
+\xd2\x49\x47\xa5\x84\x31\x0b\x04\xf9\xef\xeb\xfd\x13\x1d\xd5\x29\
+\x70\x13\x10\x34\x79\x15\xf0\xe8\x37\x4e\xed\x07\xf3\x0a\x0f\xf2\
+\x28\xe9\xe5\x3b\x61\x80\xd7\x02\x4e\x08\x18\xf4\xb3\xa9\x12\xc0\
+\x03\x47\x02\x75\x98\x68\x48\x6a\xb5\x70\xa8\xa4\xa0\xb0\x78\x2f\
+\x70\xfa\xa4\xd3\x86\x88\x0a\x96\xa6\x26\x14\x74\xc7\x57\xca\x29\
+\x6a\x16\xb6\x0d\xac\x9d\x80\x28\xb2\xa0\x80\xe3\x15\xa9\xe3\xe6\
+\xb8\x8e\x8e\x12\x46\xc7\xea\xb1\x13\xe8\xe9\x61\x88\x18\xc6\xc1\
+\xd3\xa5\xf8\x3b\x4f\x86\xf8\x51\xd7\x1f\xf1\xab\xdc\x7d\x6d\x8d\
+\x68\xb5\x2b\xa9\x05\xac\x10\x10\xe1\xda\x69\x17\x00\x16\x5c\x69\
+\x2e\x4c\xb0\x5c\x31\xc4\x5a\x20\xab\x1c\x55\xdf\xb8\x73\x24\x09\
+\x41\x2b\x2d\x26\xd5\xa4\x6b\x73\xa5\x40\x96\xa7\x1f\x12\x44\x3a\
+\x9a\x44\x8e\x28\xe3\x3a\x9a\xf4\x02\x43\x4c\x14\x14\x69\xeb\x03\
+\x64\xa8\xd5\x72\x68\xa5\xe2\x89\xd6\x88\x85\x5a\x0a\xad\xbf\xce\
+\x94\xa8\xff\x2b\xa4\xad\x8f\x84\xc1\xad\x76\x1d\x4f\x3e\x33\x0f\
+\x5c\x7d\xeb\x8e\x87\xa7\x5f\x03\x44\x2c\x5b\x14\xf0\x7e\x77\x13\
+\x2d\x69\x03\x3a\xbe\x81\x45\xc2\x27\x19\x8f\x57\x86\x91\x49\x02\
+\x28\xc5\x3e\x91\x54\x29\x67\xa8\x56\x73\xc1\xd1\x17\xdc\x7e\x2e\
+\x70\xf9\x38\xe4\x21\x42\x58\x07\x61\x06\xe0\x13\x4b\x6d\x6d\x19\
+\x46\xc6\xeb\x96\xfb\x67\x8e\xd7\x62\xc2\x25\x3f\x31\x22\x9b\x4e\
+\x52\x03\x3c\xfc\x8d\x53\xbb\x99\x68\xa5\x62\x07\xf8\x34\x27\x81\
+\x94\x00\x7e\x94\x06\x72\xf6\x6c\x61\xcc\x08\x0d\xe0\x0a\x2d\x02\
+\x7a\x21\x93\x2d\xda\x57\xd8\xe8\x88\xc4\x89\x28\x46\x87\x06\x12\
+\x18\x38\x38\xe4\x17\x0c\xf8\xa3\x72\xed\xcf\xd7\x5e\x4e\x31\x5e\
+\x6b\xd8\x09\xd1\xe0\xc8\x14\x37\x17\x8d\xc8\x4a\xa1\xa8\xb0\xc4\
+\xbe\x4e\xf6\xb5\xce\xf6\x12\x46\x47\x6b\x71\xf2\x20\x62\x23\x87\
+\xc2\x93\x48\x4b\x4c\x52\x05\xd4\x1a\xfa\x62\x96\xe0\x8e\x77\xf6\
+\x10\x04\x22\xd2\x0e\x6c\xd1\x3f\xfc\x60\x2a\x05\x60\x52\x38\x80\
+\x07\xfc\x25\x8d\x8a\x11\x7b\xdb\x4c\x40\xe2\xa0\xd9\x10\x12\x06\
+\x58\xd7\x4e\xb6\xe2\xe0\x8d\x83\x90\x5a\x13\xe0\x56\x6a\x7b\x5b\
+\x86\xf1\xf1\x86\x4f\xfd\x1a\x34\x51\xf0\x7f\x8a\x59\x22\xc7\xd7\
+\xd0\x21\x3d\xed\xca\xd0\x59\xfb\xac\x0f\x3a\xdb\xcb\x18\x1d\xab\
+\xf9\xb0\x16\x4d\x09\x26\x12\x91\x85\x0b\x26\x18\xac\x27\x1b\x09\
+\xf0\x15\x5a\xb9\xd5\xae\x6d\xd8\x17\x60\x5e\x16\x0e\xa0\x33\x01\
+\x60\x8c\x5c\xb3\x66\xe7\xda\x19\xa1\x01\x5c\x01\x45\xf0\xfc\x11\
+\x15\x65\xc8\xd5\x5e\xf4\xc4\xa3\x15\xc4\x86\x35\x9c\x6b\x1d\xa1\
+\x88\x09\x01\x5a\x05\xcf\xbd\x52\xc9\x50\xad\xe5\x51\xd5\xb0\xf4\
+\x23\x9c\x17\xcf\xf2\x1a\xba\x58\x5a\x06\x11\x69\x18\x95\xdf\xd5\
+\x59\xc6\xc8\x68\x3d\xf8\x33\x45\x7f\x82\xd9\x32\xbf\x42\x5d\x01\
+\x6b\x9e\x14\x21\xe4\x85\xef\xbc\xa9\xc2\x8c\xb7\x2b\x09\xf5\x7a\
+\xe7\xcf\xa9\x7f\x6b\x02\x34\x43\xc1\xfc\x1f\xc0\xea\xa9\x26\x20\
+\x24\x93\x51\x00\x92\xb7\x4f\x05\x35\x1c\xbd\x16\x41\xc4\x88\x1d\
+\x2d\x30\x92\x24\x81\xf2\xc9\x1f\xb3\x6a\x13\x32\x8e\xa1\x13\x92\
+\xf6\x4a\x86\xd1\xb1\xba\x9d\x9b\xa2\xc9\x91\x7c\x0f\x8e\xe0\x60\
+\xe9\xc8\xc5\x7c\x00\xf3\x7a\x57\x47\x19\xc3\x23\xb5\x88\x6b\x10\
+\x71\x17\x5c\xed\xa1\x6e\x3a\xcd\x01\x8f\xdd\x83\x8d\xf7\xb3\xb6\
+\x49\x1f\x1d\x84\x20\xb7\x32\xe6\x42\x42\x9f\x08\xb2\xc2\x41\xc0\
+\xf7\xa7\x5a\x00\x26\x61\x02\x42\x49\x35\x45\xd4\xeb\x02\x22\xe7\
+\xad\x44\x5c\xe6\xed\x33\x75\x6c\xe8\xe2\xb9\xd2\x5e\x63\xd8\xb2\
+\x40\xc3\x7e\x61\x93\x53\xee\x6c\x13\x31\xbb\xcf\xd4\x46\x78\xb2\
+\xa5\x84\x85\xbc\x7f\xc4\x1a\x96\xb4\x1e\x97\xf4\x61\x32\x02\x30\
+\x5a\xf3\xc4\x16\x72\xe9\xe4\x82\x4d\x71\x25\xe5\x44\xdc\x0c\x7a\
+\xbd\xda\x08\x9a\xf0\x49\x1f\xef\x0b\xa0\x87\x65\x14\x00\x88\xc8\
+\x00\xd0\x4c\xf5\x6b\xd6\xec\xb8\x6b\xc6\x68\x00\xc8\x5a\x3d\xc8\
+\xd8\x59\x3a\x51\xd6\x9e\xa1\x99\xa5\x23\x43\xb6\x2c\x25\xe4\x0d\
+\x15\x55\xe3\x12\x11\xb4\x0a\x1a\xa3\xab\xb3\x84\xfd\x9e\x29\xec\
+\x34\x90\x8e\xe3\x7b\x77\xac\x70\x4c\x9d\xd3\xf8\xa7\x4a\xc8\x7b\
+\x3a\x8d\x06\xf0\xab\x5f\x0b\xb3\x52\x70\x1e\xa3\x84\xd6\x01\xce\
+\x3f\xdf\x73\x5e\x02\xc6\xbb\x95\x66\x68\xc5\x51\x82\x47\x6a\x03\
+\x16\xce\xa1\x51\xff\x7c\x1b\x0e\xc2\x98\x54\x2e\x40\xe2\xea\x22\
+\x97\x16\x9c\x40\xd6\x76\x25\x92\xcf\x06\xc0\x3a\x6f\x60\x32\xab\
+\x8d\x19\x59\x6a\x50\xbe\x70\x2e\x04\x50\xc6\xf2\x02\xbb\xed\x4a\
+\x95\xea\x9b\x44\xa5\x0e\x8b\xac\x83\x84\xab\x7d\x9f\x21\xef\x15\
+\xfa\xbc\x34\x98\x80\xce\x8e\x32\x46\x46\xab\x31\x7b\x94\x43\x33\
+\x09\x93\x23\x08\x1c\x82\x26\x32\xcc\xab\x1c\x0f\xae\xdb\xf7\x67\
+\xac\x91\x79\xa7\x4f\xc1\x3b\x80\x3e\xe6\xf7\xf4\x2f\xed\x1d\xc2\
+\x83\xa1\xfe\x27\x69\x02\x64\x9e\xfd\x4f\xdc\x0c\x42\x9c\x95\x13\
+\x19\x35\x5f\x6c\x41\x84\x52\x6a\x8a\x3f\x02\x99\xc8\x8a\x93\x0e\
+\x9a\xa4\xbb\xd3\x08\x80\xd6\x1a\x09\x25\x71\x86\x4f\xe0\xf8\x86\
+\xf2\x25\xaa\x86\x7c\xad\x80\x44\x26\x9d\x25\x60\x74\x77\x96\x8d\
+\x66\x11\xf4\x36\x23\x34\x1c\xfd\x90\x88\x38\x3a\x89\xc6\x10\xcc\
+\xec\xd5\xbf\x27\x80\x3a\x12\x88\xe5\xfb\xf9\xa4\x4f\x30\x01\xba\
+\xa7\x23\x3d\x28\x1a\x60\x12\x4e\xa0\x0e\x5e\xb1\x4b\xe6\x70\x11\
+\x24\x42\xe1\x35\xe1\xa0\x89\x98\xba\x5c\x4a\x43\xfe\x9f\x63\x07\
+\xcc\x9d\x28\x4b\x13\x74\xb4\x95\x30\x34\x5c\xf5\x88\x62\x84\x2c\
+\x46\x1d\x3f\xb4\xe0\x1a\x20\x8a\x2e\x44\x33\x21\x30\x18\x3d\x5d\
+\x15\xec\x1f\xa9\x7a\x07\xd5\xc7\x16\x3c\x51\x19\x3a\xc2\xf3\x03\
+\xf4\x02\x15\xe8\x22\xd5\xc4\xf8\x8d\x53\xc1\x4a\x07\x6a\x98\xf5\
+\xfe\xef\xfa\xca\xcf\xb6\x35\x66\x94\x00\x48\xf4\xcd\x19\x5e\xb6\
+\x88\x1f\x4f\x10\x4e\x4d\x78\x23\xed\x49\x4a\x59\x82\x5a\x3d\xb7\
+\xab\xd5\x1e\x43\x1c\xd5\xec\x83\x19\x47\xf4\xb5\x63\xcf\xbe\xb1\
+\x42\xd4\x11\x58\xbf\x12\x05\x64\x14\x42\x54\xc0\xc3\xca\xa1\xaa\
+\xd8\xb0\x82\x6a\xb5\x3c\x98\x20\x5d\x3c\xaf\x89\x02\x9a\x5a\xd3\
+\x1c\xc0\xb8\xff\xab\xcb\xce\x07\xb8\x3d\xca\xfe\x09\xdb\xcf\x5a\
+\x82\x3e\xe1\x75\x80\x7e\x80\x83\x34\x26\x21\x00\x3a\x9a\x1c\xc8\
+\x3a\x7c\x49\x05\xd7\xa1\x24\x3b\x84\x65\x3a\xd2\x06\x95\xb2\xa9\
+\xd3\x0b\xd9\x36\x93\xff\xaf\xb9\xda\x00\x2b\x44\xf3\xfa\x3b\xb1\
+\x63\xd7\x70\xdc\x15\x4c\x66\xf1\x80\x48\xc3\x14\x43\x3f\xd9\x64\
+\x42\x0a\x61\x77\x67\x05\xfb\x87\xab\x71\x17\x32\x11\x62\x42\x07\
+\xbf\x27\x64\x1a\xf9\x00\xb4\x26\xae\x50\x0a\x11\xc1\xd3\xa1\x7e\
+\x0e\xf6\x75\xb4\x70\xe5\x4c\x01\x18\x09\x78\xf5\x8c\x13\x80\xa8\
+\x04\x4c\xf6\xe5\x11\x8a\x94\x26\x9a\x84\x09\x20\xd5\x72\xc9\xb0\
+\x80\xe5\x7b\x6d\x95\x0c\xe3\xd5\x5c\x94\x00\x30\x16\x1e\xd5\x83\
+\x17\x5e\x1a\xb0\x9f\x09\x02\x48\x11\x8d\xcb\xa9\x77\x3d\x41\xde\
+\xc1\x9c\xbb\x48\x15\xeb\xed\xae\x60\x68\xb8\x1a\xd2\x5a\x02\x95\
+\x96\x20\x96\x4c\x80\x1d\xa0\x12\x58\xa5\xbc\x83\x17\xd4\x3c\xeb\
+\x80\x00\x4a\x34\xd0\xae\xa9\xfb\xbe\xbd\x66\xe7\xe8\x8c\x13\x00\
+\xe2\xd8\x9e\x6b\x17\x82\x69\x99\x4f\x0f\x2a\x98\xa3\x0e\x1e\x01\
+\x45\x84\x66\x54\x32\x57\xa9\x1b\x84\x67\x56\x57\x05\xfb\x86\xc6\
+\x23\x54\x71\xe9\xc2\x3e\xec\xd9\x37\x8e\xad\x2f\xef\x17\x9e\x78\
+\x9c\xb8\x91\x40\x93\xef\x06\x26\x52\xc2\x9e\xcf\xaf\xc3\x67\xbb\
+\x3b\x85\x1f\x50\xec\x3f\x28\x34\x15\x45\xda\x41\xbf\x5a\xf5\x7f\
+\x36\x03\xbd\x31\xaf\x2f\x14\x7c\x78\x14\xd0\xd2\xbe\x9c\x6f\x00\
+\xc6\x41\x53\xff\x93\x12\x00\xed\x89\x91\x46\x47\x92\xb0\xc3\xd1\
+\x44\x14\xc8\xa2\x81\x3c\x12\x2c\x42\x42\x40\xb9\x94\x60\xac\x96\
+\x7b\xfb\x3c\x77\x76\x27\x76\xee\x1e\x81\x5c\x8e\xa5\x34\xc1\xdb\
+\xce\x38\x06\xbf\x7a\xe0\xc5\x90\xe3\x97\x5d\xbc\x18\x22\xde\x17\
+\x6d\x26\x19\x31\xc2\xa7\x63\x35\xdf\xdb\x5d\xc6\xe0\x50\x15\xc4\
+\xa1\x15\x8d\x14\x1c\x2a\xf4\x09\xe2\x03\x81\x02\x19\x97\x9b\xc2\
+\x8f\x90\xf5\x53\xbe\xe0\x83\x3d\xe2\xa7\x10\x43\xc3\x09\x4d\x6d\
+\xf6\x6f\xea\x34\x80\xec\xa9\xa3\x43\x18\xed\x1d\x24\x2d\xd2\xc4\
+\x8c\x82\xf3\x87\x18\x94\x71\x0c\xdd\xb1\xba\xff\xdc\xb1\x0b\x7a\
+\xf0\xe2\xb6\xa1\xe0\x9c\xd9\xbf\xd3\x4e\x9a\x8b\xfd\x23\x35\x3c\
+\xf6\xcc\xcb\x02\xfa\x2d\xe6\x1b\x20\x4a\xc1\xd0\xd4\x67\xc8\x0b\
+\xb0\x7d\xda\xdb\x55\xc1\xe0\xf0\xb8\x75\x3f\x0a\xde\xbf\xf0\x33\
+\xb8\x60\x4e\x5e\xe5\x1d\xfb\x88\xcc\xf8\xe9\x02\xf3\x47\xb2\x7e\
+\xdc\xfb\x00\x1e\xfa\xf6\xad\x3b\xf7\xcd\x48\x01\x70\xed\x55\xa1\
+\x85\x2f\xe0\x3b\x6e\xe9\x82\xdd\xd4\xde\x19\x04\x0a\xf5\x7b\x56\
+\x40\x0c\xd4\x1b\x8a\x34\x3a\xdb\x4a\x58\xbc\xa0\x17\x8f\x3c\xbd\
+\x33\x52\xc5\x49\x92\xe0\xe2\x0b\x8f\xc3\xed\x6b\x37\x62\x68\xa4\
+\x2a\xfa\x0a\x86\x46\x90\x3e\xf2\xd0\x1c\x5d\x4b\x73\x33\x2f\x81\
+\x99\x31\xab\xa7\x1d\xfb\x86\xc6\x6d\x85\x31\x0a\xfd\x85\x74\x94\
+\xa3\x00\x5e\x7d\x6f\xa8\x07\xbe\xba\xfc\x54\xcd\x98\xab\x34\x89\
+\xe4\x0f\x47\x36\x5f\x41\xc6\xfe\x46\x3b\x30\xe8\x5a\x1c\xe4\x31\
+\xc9\x30\x50\x30\x81\x04\x99\xc2\xb7\x5a\x9b\x20\x37\xcf\x3a\x36\
+\x0d\x6e\xc2\x3a\xda\x32\x8c\x8e\x35\xa2\xd5\x7c\xde\x8a\xa3\xf1\
+\x9b\x87\xb7\x98\xea\x1d\x1d\x6c\xfe\xd1\x47\x76\xe3\xac\x53\x8f\
+\xc2\xf5\xb7\x3d\x8d\x5c\xa9\xd8\x19\x05\xc7\x31\xbd\xc8\x54\x86\
+\xf2\xef\x50\xdc\x49\xcc\xe8\xed\x32\x26\x80\x85\x23\xe9\x78\x0c\
+\xae\x65\x2d\xb8\xc8\x0c\xd2\xaf\xc6\x5c\x5e\xa6\xb5\x09\x25\x15\
+\x62\x1b\xef\x78\x7f\x1c\xc5\xfe\xe6\x71\x96\xe2\x86\x19\x2b\x00\
+\xd2\x01\x93\x84\x4e\x09\xe7\xa2\x10\xc7\xcb\xfa\x7e\x16\x95\xbc\
+\x60\x42\x67\x7b\x09\x23\xe3\xf5\x28\x9b\xb8\x60\x6e\x17\x4e\x39\
+\x6e\x0e\x6e\xba\x73\x03\x98\x55\x94\xe9\x7b\xeb\xe9\xc7\x60\x76\
+\x6f\x3b\xae\xbb\xf5\x29\xd4\x6d\x9a\x98\x25\xff\x4b\x3a\x7c\x5c\
+\xec\x25\x68\x26\xd0\x61\x57\x7d\xbd\x15\xec\xdb\x5f\x15\xe9\x04\
+\xe9\x0b\xe8\x02\xb0\x15\xce\xf5\xc7\x7b\xaf\xfc\x8f\xea\x81\x4b\
+\x14\x93\x77\xf6\x42\xec\x2f\x52\xbf\xd2\x09\x34\xdf\xfb\xc9\x6f\
+\xae\xde\xf1\xf2\xcc\xd5\x00\x7a\x02\xdb\xab\x39\x66\xe3\xca\x49\
+\x8f\xec\xab\x8e\x85\x82\x35\xba\x3b\x32\x8c\x8c\xd5\x45\x1f\x5f\
+\x73\xce\x77\x9c\xbd\x10\x1a\x8c\x5f\xae\x7d\x51\x5c\xc3\x68\x98\
+\x55\x17\x2e\x45\x5f\x77\x05\xff\x7a\xd3\x63\xd8\xb9\x77\xa4\x09\
+\xa1\x8b\x00\x22\xc8\xeb\x8a\xaa\x32\xd6\xa8\x94\x32\x64\x29\x61\
+\xc4\x12\x43\x9a\xa8\x65\x02\xf7\xe0\x26\x1e\xe2\x2b\x7a\xff\xc7\
+\x33\xf3\x31\x5a\x3b\x98\x97\xa0\x2c\xe8\xa3\x58\xb0\x7f\xbc\xfa\
+\x27\x07\xfe\x5c\x87\x43\x30\x26\xd9\x27\x50\xb4\x5c\xd7\x11\x3c\
+\x18\x11\x42\xe2\x92\x2c\xc8\xd2\x7b\xaf\xae\x7b\x3a\x2b\xd8\x3f\
+\x5c\x43\x33\x6f\x0f\xb8\xe4\x5d\x27\x60\xd3\xb6\x21\xdc\xfb\x87\
+\xcd\x41\x88\x6c\xf4\x70\xd1\xf9\x6f\xc0\xd9\xa7\xcc\xc7\xbf\xdd\
+\xfc\x38\x6e\xbb\x6f\x23\x86\x86\x6b\x05\xe8\x17\x71\xf9\x5a\x41\
+\x8d\xbb\xef\x36\xbb\xb7\x1d\x7b\x2d\xca\xe8\x23\x06\x14\xc8\x2d\
+\x51\x24\xf3\x1f\xcc\x08\x12\x7d\xdc\xf3\xfb\x74\xa1\xfa\x57\x64\
+\xfc\xb8\x50\x01\x0c\xe0\xfa\x19\x2d\x00\x31\xf7\x3f\xc6\xdb\xe3\
+\xb0\x8b\x43\xf5\x8f\x24\x6e\x4a\xcf\x5a\x6b\xf4\x74\x96\x30\x34\
+\x5a\x6b\x6a\x0c\x4d\x30\xfd\x02\x2e\x7f\xff\xc9\x78\xfc\xb9\xdd\
+\x78\xe0\xb1\x6d\x85\x89\x00\x4e\x3b\xe9\x48\x7c\xee\x92\x15\x48\
+\x13\xc2\x77\x7e\xba\x1e\xd7\xae\x7e\x02\xeb\x1e\xdd\x8a\x97\x77\
+\x0f\xa3\xe1\xd2\xcc\xba\x50\xb7\xc8\x92\xab\x08\xf4\xf5\xb4\x61\
+\x60\x70\x3c\x08\xb6\x33\x21\x45\x6d\x50\x20\x8e\xbc\x32\x60\xca\
+\x1f\x77\xf6\x9f\x25\xdd\x5b\x4b\x3a\x98\x7d\x0e\x5b\x05\xc4\x78\
+\xe1\xea\x35\x3b\x5e\x3a\x14\x02\x30\xe9\xd2\xb0\x50\xa6\x85\x28\
+\x65\x1a\x52\xa8\x8e\x87\x61\x5a\xbb\x91\xac\x22\x12\xa4\x8e\xde\
+\xae\x0a\x06\x86\xaa\x51\xa2\x95\x74\xa0\x18\x76\xb6\x95\x70\xd9\
+\xfb\x4e\xc6\x0f\x6e\x79\x0a\xd5\x5a\x8e\xf3\xcf\x5c\x18\x55\x25\
+\x77\x77\x96\xf1\xae\x95\x8b\x71\xfe\xe9\xc7\x60\xe3\xd6\x41\x3c\
+\xbf\x79\x10\x0f\x3f\xfd\x32\xf6\x0c\x8e\xa1\x5c\xca\xd0\xdf\xdb\
+\x86\xfe\x59\x1d\xe8\xe9\x2a\xa3\xbf\xaf\x03\x5d\x1d\x25\xcc\xea\
+\x69\xc7\xec\x9e\x36\x94\xcb\x19\x66\xf7\xb6\x61\x60\x68\x2c\xd8\
+\x7f\x47\x72\x91\x4d\x23\xa2\xb6\x37\xfc\x8a\x4d\xc2\xd6\x7d\x75\
+\xf9\xc2\x5c\xf3\xd2\x5c\xf0\xfb\x79\x02\xb4\xaf\x18\x19\x30\xd3\
+\x4f\x70\x88\xc6\x01\x0b\xc0\x8a\xcb\x7f\x46\x8f\x5c\xfb\x51\x8e\
+\xcb\xb3\xc8\x27\x74\x7c\xef\x4d\x0a\xdd\x37\x1c\xa3\x26\xea\xfe\
+\x6d\x27\x7c\x56\x57\x19\x43\x23\x35\x28\x65\xea\x04\x5c\xc6\x99\
+\x7c\x0f\x50\x8d\xde\xae\x32\x3e\xb5\xea\x14\x5c\x7f\xfb\x06\xec\
+\xde\xb7\x01\x17\x5f\x70\x9c\xe9\x2e\x86\xd0\x2d\xa4\x5c\x4e\x71\
+\xd2\x92\x7e\x9c\xf4\x86\x7e\x5f\xcb\x37\x32\x56\xc7\xc0\x50\x1d\
+\x7b\x86\xc6\x30\x36\x9e\x63\xfb\xae\x61\xec\x1b\xaa\x62\x68\xc4\
+\xf4\x27\x4c\x12\xd3\x2d\x64\xde\x11\x9d\xb6\xa6\x91\x3d\x93\x88\
+\x84\xc3\x6b\xe4\x3c\x09\x5d\x49\x5f\xa1\x44\x4c\x33\xff\x45\x14\
+\xef\x4b\x87\xcf\x69\x03\x01\x0a\xb9\xb4\x30\x08\x3f\x9a\xf1\x02\
+\x10\x1c\xa3\x98\x3e\x15\x76\xe8\xb2\xd4\x2d\xdb\xa5\xc3\xd5\xeb\
+\xc1\xe7\xfc\xc9\xd7\x04\x30\x9b\xc6\x50\xdd\x1d\x25\x0c\xec\xaf\
+\xa2\xbf\xb7\x3d\xea\x31\x40\x5a\xfb\x56\xf0\x9d\x6d\x19\x2e\x7f\
+\xff\xc9\xb8\xf5\xbe\x8d\xf8\xdf\x37\x3d\x8e\x4b\xfe\xec\x04\xcc\
+\xe9\xeb\xb0\x5a\xc8\x34\x71\x90\x3b\x83\x10\x13\xba\xda\xcb\xe8\
+\x6a\x2f\x63\xe1\xfc\xee\x88\xb9\xec\xbe\x4e\xad\xa1\xb0\xe1\xc5\
+\x01\xdc\xff\xc8\xb6\x60\xaa\x3c\x8e\xe1\x3a\x8f\x3a\xa1\xd4\xbe\
+\xe6\x50\xbf\xb2\x09\xb8\x54\x56\xfb\xb8\xd5\xce\x5c\xac\xfd\x0f\
+\x59\x41\x80\xb6\x5e\xb3\x66\xc7\x86\x43\x25\x00\x93\x76\x02\xd9\
+\x93\x26\x0b\x4d\x9a\x7d\xfa\x57\x46\x80\xc1\x99\xd2\xae\xc6\xdf\
+\x95\x90\x33\x30\xb7\xaf\x03\xbb\xf6\x8e\x58\xb0\x48\x07\x14\xae\
+\xe0\x73\x94\x52\x60\xd5\x05\xc7\xe1\xcd\xcb\xe7\xe1\xdf\x7e\xf1\
+\x04\x1e\x7e\x7a\x67\x84\x4d\x14\x59\xc0\x11\x77\x40\x17\xf6\x14\
+\x62\xa0\x92\x65\x58\xba\xb0\x0f\x03\x43\xe3\xf1\x0e\x25\x02\x37\
+\xe0\x42\x2d\x80\x4f\x46\xfd\x49\xf0\x67\xd9\x91\x0c\x9c\xa2\x94\
+\xf6\xec\x5e\x1f\xe7\xb3\x28\x00\x2d\x94\x85\x33\xf8\xa7\x38\x84\
+\x63\x52\x02\xe0\xbd\x7b\x8d\x18\x27\xb7\x0e\x8d\x0f\xbd\xa4\xdb\
+\xaf\x39\x70\xf0\x39\x74\xf6\x22\xd6\x98\xd7\xdf\x8e\xed\xbb\xc7\
+\x04\x5c\xac\x51\xa4\x92\x93\xf0\xce\x4f\x3b\x69\x2e\x3e\xf9\x81\
+\x65\x78\xf0\x89\x1d\xf8\xf1\x6d\x4f\x63\x70\xb8\x16\x0b\x67\x81\
+\xb6\x1e\xe1\x02\x88\xc3\xd8\xb6\x4a\x86\x34\x25\x41\x10\x8d\x4b\
+\xd5\x64\x42\xc9\xb7\xa0\xff\xf7\x34\x00\xe3\xa3\xb2\xc3\x97\xeb\
+\xf8\xa1\x0a\x36\xdf\x33\x83\xad\x53\x9a\x80\x7e\x78\xd8\x08\x40\
+\x91\x69\xc3\x36\x29\x14\xe7\xe0\x45\x3c\xae\xe3\x2d\x58\x64\xe7\
+\x0e\x06\x63\xe1\xbc\x6e\x6c\xda\xbe\xbf\x40\xcf\x16\x9d\x40\x8a\
+\xe1\x18\x80\x39\xb3\x3a\xf0\xe9\x55\xcb\x71\xe4\xec\x0e\x7c\xf7\
+\x86\x47\xb1\xf6\x91\xad\xb6\xa0\x24\x0e\xd5\xc8\xd2\xad\xb8\x40\
+\xee\x94\x80\xd5\x9c\x59\x1d\xd8\x33\x30\xda\x5c\x4c\x28\xca\x01\
+\xb9\x90\x02\xff\x77\x02\xe4\xcb\x95\xcd\x87\x44\x59\x3f\x16\xa5\
+\xde\x4c\x88\xf3\x03\xbc\xfb\xdb\x6b\x76\x3c\x76\x18\x69\x80\x42\
+\x4c\x2c\x2c\x41\x53\x51\x86\xdf\xed\xa3\x50\x58\x2a\xfa\xf0\x1f\
+\x33\xb7\x0b\x7b\x86\xc6\x30\x32\xda\x28\x9c\x7b\x22\x44\x11\x5e\
+\xe8\x4a\x69\x82\x0b\xcf\x5c\x88\x4f\xad\x5a\x8e\x17\xb7\x0e\xe1\
+\xbb\x37\x3c\x86\xe7\x5e\xdc\x1b\x69\x0e\x9e\xe0\x3c\xc5\xba\xc1\
+\xfe\xbe\x36\xbc\xbc\x77\xd4\x68\x25\x14\x8e\x2d\xd4\x21\x86\x84\
+\x56\xf3\xf8\xc3\xd7\x96\xcf\x62\xc6\x99\x91\x93\x67\x1f\x7b\x00\
+\x88\x63\x5a\x98\x32\xc4\xcf\x1b\x71\x88\xc7\xe4\x35\xc0\x04\x9b\
+\x38\x21\xca\xa6\x8a\x8c\x61\x30\xd4\xb1\xdf\x60\x8f\x4b\x13\xc2\
+\xb2\xc5\xb3\xb1\xee\xc9\x1d\x91\x7a\xe6\x28\xa9\x13\xa8\x67\x51\
+\xb1\x11\x18\xfd\xbd\x15\x5c\xfa\xde\x13\xf1\xae\x95\x0b\xf1\xeb\
+\xdf\x6f\xc6\xf7\x6e\x7c\x1c\xcf\x6e\xda\x63\x2a\x8c\x64\x16\x87\
+\x8b\xf4\x2f\xf3\xe5\xe6\xf6\x75\x60\xf7\xc0\x98\x60\xb2\xf1\x84\
+\xe6\x22\x22\x9f\x4c\x30\xea\x8a\x3f\x24\x5b\xbc\x28\x4d\x9e\xf4\
+\x11\x65\xfc\x54\x9c\x10\xc2\x21\x48\xfe\x4c\xb1\x00\x08\x67\x4a\
+\x3c\x77\x36\x3d\xf0\x05\x5c\xd0\xa0\x0b\xa4\xcc\x78\x77\x0e\x80\
+\x71\xde\x8a\xf9\x78\xec\xb9\x3d\xd8\xf2\xf2\xfe\xa6\x62\x4e\x44\
+\x84\x4f\x51\xb4\x29\x84\x89\x01\x2c\x3d\xa6\x0f\x9f\xfd\xc8\x29\
+\x58\xf9\xc6\xf9\xf8\xcd\x43\x5b\xf1\x9d\x9f\x3e\x82\xfb\x1f\xdd\
+\x86\xd1\xf1\x5a\x93\x42\x91\x1b\x56\xce\xed\xef\x34\x1a\xc0\xfa\
+\xf8\xc5\x5d\x47\x3c\xdf\x40\x28\xa6\x3f\x31\xae\x88\x52\xbd\xac\
+\xa3\x4e\x1f\x2c\xfb\xfe\xb0\xcb\x10\xf2\xd0\xd5\x6b\x76\xac\x3b\
+\xd4\x02\x90\x4d\x56\x00\x8c\xe0\x72\x54\x1f\x20\xf6\x5e\x88\x5b\
+\xc9\x90\x2c\x22\x65\xff\x69\xd3\x20\xca\x60\x06\x5d\xed\x65\xbc\
+\x67\xe5\x42\xfc\xf2\x77\x2f\xe1\x33\x17\x2f\x03\x25\x62\x8f\x60\
+\x1b\x5a\x86\xf3\xc6\x60\x8d\xa7\xf6\x5b\xd6\xf8\x29\x6f\xe8\xc7\
+\xb2\x25\xb3\xb1\x79\xe7\x30\xd6\x3f\xbb\x0b\xbf\x79\x78\x2b\xfa\
+\x7b\xdb\xb0\x74\xd1\x6c\xcc\x3f\xa2\x13\x9d\x1d\x25\x74\x77\x94\
+\x51\xa9\x64\xe8\x68\xcb\x30\xa7\xaf\x0d\x2f\xef\x19\x85\xd6\xa6\
+\x9e\x21\x94\x13\x30\x26\xee\x0b\xd5\x2c\x01\x0f\x7f\xfd\x94\x8e\
+\x6a\x5d\xbf\x35\x57\x1a\xa1\xf8\x53\xb4\x7d\x65\x16\x85\xa0\x41\
+\x28\x08\xf8\x05\xa6\x61\x4c\xb2\x5b\xb8\x8e\x8b\x32\xe4\x24\x15\
+\x5a\xfa\x15\x7b\xf8\xf9\xb2\x0b\x32\xea\xd0\x14\x89\x98\x8e\x50\
+\x27\x2d\xee\xc3\xfa\x0d\xbb\xf1\xd0\x33\xbb\x70\xe6\xc9\x73\x43\
+\xd1\x89\x6f\x0a\x15\x77\xff\x04\x01\xf5\x5c\x61\xfb\xae\x51\x28\
+\x0d\x74\xb6\x97\x70\xc4\xac\x76\x64\x59\x82\x04\x84\xc5\xf3\x7b\
+\xb1\x78\x7e\x0f\x1a\x39\xe3\xa5\x1d\x43\xd8\xb2\x6b\x04\xeb\x9f\
+\xde\x89\x91\x6a\x8e\x91\xb1\x3a\x6a\x75\x85\x5c\xd9\xf6\x74\xf5\
+\x1c\xd7\xdd\xf2\x14\x2e\xbb\x68\x99\xe8\x06\x4f\xb6\x8c\x41\x70\
+\x1d\x6d\x15\xf3\x86\x35\x9f\xe5\x13\xde\xf7\x3d\xff\xc9\x5a\x83\
+\x3f\xe0\x3d\xfe\x62\xf9\xb7\x5f\xf1\x5a\x84\x84\xda\xa9\xff\x1f\
+\x1c\x76\x02\x70\xfa\x67\x6e\xa1\x87\xfe\xf5\x22\x26\xdb\x97\x9f\
+\x34\x47\x37\x8d\x51\xa8\xf4\x29\xf4\xe4\x0d\x5b\xf3\xc5\x2d\x66\
+\x99\x81\x77\xbf\x79\x21\xbe\x7f\xeb\xb3\x38\x69\x51\x1f\xba\x3a\
+\x4b\xa0\xa6\xfd\x9b\x43\xbb\xb9\x97\xf7\x8e\xe3\xba\xdb\x9e\xc5\
+\xac\xee\x0a\xca\xa5\x04\xc3\xa3\x0d\x0c\x8f\x37\xb0\x68\x7e\x37\
+\x4e\x3b\x61\x0e\x4e\x5c\xd2\x0f\x30\xa1\x94\x11\x8e\x5b\x38\x0b\
+\xc7\x2d\xec\x83\x68\x37\x0a\x02\xa1\x9e\x2b\xe4\x4a\xe3\xfa\xdb\
+\x9f\xc5\x92\xa3\x7b\xe3\x56\x37\xa1\x60\x28\xae\x09\x71\xea\x26\
+\x96\xeb\x2b\xe2\x66\xcf\x21\xc7\xaf\x5c\x03\x28\xc8\x5e\xc0\x04\
+\xcd\x7a\xfc\xea\x35\x3b\xef\x39\x0c\x35\x00\x84\x87\x1f\xb6\x5d\
+\xa2\x89\x7a\x08\x52\xdc\xc2\x3d\x84\xd1\xa2\x5b\x58\x68\xc5\x8c\
+\xd9\x3d\x15\xbc\xe9\xf8\x23\x70\xe7\x83\x9b\xb1\xea\x82\x25\x85\
+\x04\x5b\xdc\x81\xf4\x57\xeb\x36\xe3\xfc\xd3\x17\xe0\xf4\x93\xe6\
+\xfa\xf7\xeb\x0d\x85\xe7\x36\x0f\xe2\xde\x87\xb7\x61\xfd\x86\xdd\
+\x78\xdf\xb9\xc7\xa2\xb7\xab\x12\xb0\x7d\xa1\x9e\x98\x4c\x6d\x42\
+\xb9\x94\x62\xd1\xfc\x1e\xd3\x8a\xc6\x3b\x9c\xae\x84\x4d\x88\x70\
+\xb4\x61\x94\x96\xd8\x7f\x49\x69\x7e\x97\x52\xb2\xcb\x07\x7c\xfa\
+\xd7\xe1\x00\x4e\x18\x54\x00\xba\x6e\xc5\x34\x8d\xc9\x6f\x1b\x37\
+\x41\xa7\xd0\xa6\xdd\xc0\x81\x08\x1f\xf0\x25\xe5\x51\x81\x88\x6e\
+\x0a\xdb\xce\x7b\xd3\x7c\x6c\xdb\x3d\x8a\xa7\x36\x0e\x34\x77\x22\
+\xf5\x04\x50\x60\xf3\xcb\xc3\x58\x76\x6c\x5f\xc4\x0c\x2a\x95\x52\
+\x2c\x7f\x43\x3f\x3e\x7d\xf1\xc9\x98\xd7\xdf\x81\xff\xf3\x8b\x27\
+\xb1\x6b\x60\x4c\xf0\x43\xb8\xa9\x73\x19\x98\x71\xd4\x9c\x2e\x6c\
+\xdf\x35\x62\x90\x4a\x99\xc9\xb4\x4e\x21\x15\xaa\x9d\xe2\x7d\xaa\
+\xf9\x3d\x0c\x24\xaa\x50\xda\xc5\x1e\xea\x95\x6d\x60\x2c\x27\x40\
+\xe3\xa0\xd5\xfd\x1d\x22\x01\x88\x09\x13\xa1\x7d\x3f\x47\xd0\x6f\
+\xd4\xdd\x4b\x54\xe8\x72\x71\x0b\x76\x31\x39\x59\x4a\xf8\xe8\x85\
+\xc7\xe2\x8e\x75\x9b\xb1\x6d\xf7\x48\x04\x29\x3b\x04\x71\xbc\xda\
+\x40\x42\x40\x5b\x39\x8b\x68\x5f\x64\xdf\x4f\x29\xc1\x05\xa7\x1f\
+\x8d\x77\x9e\xbd\x10\xd7\xdd\xf6\x8c\xa1\x9a\xcb\x50\xae\x50\x09\
+\xb4\x60\x4e\x27\xb6\xed\x1a\x11\x99\x4c\xf6\x65\x6f\xec\xe9\xef\
+\xa1\xb2\x28\x26\xa0\xd0\x27\x95\xe8\xf1\xaf\x7c\xa3\x47\x0b\xff\
+\x42\xb4\x7c\x55\xfe\xd2\x79\x77\x7b\x76\xc7\x61\xad\x01\xe0\x7a\
+\xef\x21\x90\x2c\x74\x81\x47\x17\x31\x81\x74\xa1\x46\x4f\x6a\x87\
+\xc2\x8a\x3c\xb2\xaf\x03\x17\xbd\x65\x11\x7e\x7a\xd7\x0b\x78\x61\
+\xcb\xbe\x48\x89\x00\xc0\xde\xc1\x71\xcc\xee\xae\xc4\x39\x00\x8d\
+\x98\xdc\xc9\xc0\xf2\x25\xfd\x78\xdb\x8a\x05\xf8\xe1\x6d\xcf\x62\
+\x6c\xbc\xd1\x2c\x8c\x76\x92\xbb\x3b\xca\x48\x13\xc2\xc0\xfe\x6a\
+\xb4\x69\x64\x14\xda\x16\xf8\x8e\xcf\xae\xfe\x94\x93\xcb\xf7\x2a\
+\xe1\xe0\xc5\x24\x8f\xa2\x06\x30\xab\x9f\x81\x3b\xbe\x72\xe3\x56\
+\x35\x5d\x02\x90\x4d\x85\x02\xf0\x5b\xbd\x8b\xd6\xb0\x28\x3c\x94\
+\x7d\x7b\x5c\xd9\x36\xc0\xa2\x95\xaf\xec\xf6\x4d\xd1\x46\x4f\xc7\
+\x1d\xd3\x83\x0f\x5d\x70\x2c\x7e\xf1\x9b\x4d\x38\x72\xf6\x1e\x2c\
+\x5f\x32\x1b\x7d\x3d\x65\x28\x06\xee\x5b\xbf\x1d\x27\x2c\x9a\x65\
+\x85\x90\xfc\xb1\xd1\x3e\x41\xf6\xf1\x8a\x13\xe7\x60\xd7\xe0\x38\
+\x6e\xba\xfb\x79\x5c\xfa\x9e\x13\x05\x77\x21\xe0\x01\x44\xc0\x82\
+\xb9\x5d\xd8\xb2\x63\x08\x7d\xdd\x73\xa3\x8d\x06\xa4\x9f\xc2\x51\
+\xa7\x0b\xe0\x81\xaf\x2e\x7f\x47\xae\xb8\xa2\x35\x45\x9d\x3d\x7d\
+\x25\xb0\x0a\x65\x72\x71\xdd\xff\xf4\xa9\xff\x29\xd1\x00\x67\x7d\
+\xee\x36\x6a\x6e\x01\xa7\xa3\x7a\x81\x18\x2c\x2a\xd4\x09\x0a\xed\
+\xc0\xb6\x7b\x98\xe4\x0e\xba\x15\xba\x68\x6e\x27\xfe\xf2\x43\x27\
+\xe3\xf8\x85\x3d\x78\x61\xeb\x20\xee\x58\xb7\x05\x77\xff\x61\x2b\
+\x16\xce\xeb\xc2\xca\xe5\x73\x25\x32\xd5\xcc\x46\x16\x6a\xe3\x9d\
+\x67\x1d\x83\x5a\x5d\x61\xdd\xe3\x3b\xe0\xda\xbf\xb0\x8e\xfd\x96\
+\x85\xf3\xba\xf0\xd2\x8e\x61\xe1\x67\xf0\x04\x4d\x23\xe0\xe1\x6d\
+\x80\x91\xf5\xcc\xbe\xcb\x51\xcf\x43\xea\x97\x7d\xc1\x27\x8b\x94\
+\xaf\xf2\x20\x24\xa3\x92\xd1\xad\xd3\x29\x00\x53\xb6\x73\x28\x4b\
+\xd0\xa4\xb8\xb5\x5b\xa1\xa3\x38\x91\x68\x2f\xa3\xe1\x6b\xf2\x7d\
+\x34\xe1\xba\x85\x89\xed\x5d\x08\xc6\x27\x38\xed\xf8\x23\x70\xda\
+\xf1\x73\xe2\x5d\x42\xdc\x31\x3e\xca\x98\xa8\x85\x8b\xb9\x58\x42\
+\x84\x0f\xbe\x6d\x09\xbe\xbf\xfa\x69\xcc\xeb\xef\xc0\xe2\x05\x3d\
+\x32\x41\x08\x22\xc6\xa2\x79\xdd\x78\xf8\x99\x5d\x70\xbd\x82\x09\
+\xf1\x16\x32\x61\x4f\x84\xf0\x6f\x6d\xff\xbe\x50\xdc\x01\x16\xdd\
+\x3f\xe3\x34\xb0\xec\x07\x08\xe0\xee\xaf\xff\xbf\xed\xd5\xc3\x5a\
+\x03\x18\xff\xaf\x50\x34\xa9\x9b\x09\x95\xec\x6b\x02\x74\x44\xdd\
+\x8e\x3a\x8c\x16\xda\xc6\x46\x09\xa0\xc2\x36\xef\xa1\x2b\x18\x22\
+\xa7\x32\xea\xe4\xe9\x95\x51\x5c\xe3\xd7\xdf\x53\xc1\x47\xde\x7e\
+\x1c\x6e\xbc\xfb\x05\x6c\xda\xbe\x1f\xb2\xc1\x00\x33\x30\xaf\xbf\
+\x03\x23\x63\x75\xb3\x79\x65\x13\xb7\x00\x85\x46\x54\x1a\x8d\xd1\
+\x61\xb0\xd2\xc8\xed\x7e\x3e\x26\xb6\x47\x94\x04\x92\x4c\x20\xf7\
+\x3a\x08\x3f\xc0\x34\x8f\x29\xdb\x3d\xbc\xd8\x88\x31\x2e\xd5\xd2\
+\xa2\x6a\x98\x82\x43\x88\xf8\xc6\x06\x26\xae\x8e\x88\x1c\x11\x4b\
+\x38\xaa\xea\x71\xe7\x7c\xa7\x02\x00\x00\x08\x33\x49\x44\x41\x54\
+\xe1\x64\xa1\x16\x51\xcb\xce\x9e\x71\x93\x67\x17\xc6\x2d\x9a\xdf\
+\x8d\x0f\x9d\xbf\x04\x37\xdf\xbd\x11\x8f\x3d\xb7\x5b\x60\xfb\x1a\
+\x04\x60\xf1\xfc\x1e\xfc\x71\xeb\x60\xc4\x61\x28\x66\x27\xed\x46\
+\x65\xa8\x0d\xee\xf6\x5b\xba\x68\xb0\xe8\xf8\x1d\xe2\x7e\x2d\x4c\
+\x81\x8b\xff\x13\x9a\x1e\xf8\x77\xca\x05\xe0\xec\xbf\xba\x83\x80\
+\x98\xf1\x2b\x5d\x75\x6e\x8a\xf7\x11\xa5\x64\x7d\x53\x08\xd7\x5b\
+\xb8\x40\xc0\x90\xc4\x12\x29\x28\x4e\x18\xb4\xac\x44\x9a\xa0\x01\
+\x45\x91\xd9\xe3\xd8\x3c\xc7\x1e\xd5\x83\xcb\xdf\x7b\x22\x7e\xbb\
+\x7e\x3b\x6e\xbe\x7b\xa3\xed\x11\x60\xf2\x15\x4b\x8f\xe9\xc5\xf3\
+\x9b\x07\x45\x88\x28\x48\x26\x82\x70\x02\x30\xf2\xe1\x7d\x4d\xac\
+\x9f\xc8\xeb\x8f\xd2\xbe\x9e\x20\xb2\xee\x5b\xb7\xec\xdc\xff\x9a\
+\xd1\x00\xa2\xa2\x23\xf4\x0d\x63\x1d\x75\xfe\xf2\xf1\x34\x8a\x1d\
+\xb7\x78\x82\x96\x2e\xe2\x6c\x1c\x57\x1a\x71\x21\xbc\x24\x88\x7d\
+\x0a\x99\xc1\xa4\x63\x2d\x81\xd0\xf0\x51\xa6\xa9\x99\x81\xd9\xbd\
+\x15\x7c\x76\xd5\x32\xf4\x76\x96\xf0\xdd\x9b\x9f\xc0\xaf\x7f\xff\
+\x12\x46\xc7\xeb\x58\xba\x70\x16\x5e\xd8\x32\x68\x3a\x96\xb3\xb6\
+\x5c\x86\x42\x9d\x01\x18\x6a\x7c\x14\x2a\x57\x21\xc1\xa3\x03\xed\
+\x9b\xe5\xee\x1f\xb2\xfb\x87\x71\x8f\xa6\x5d\xfd\x4f\xb1\x09\x40\
+\x5c\x39\xab\xe3\x8d\x1e\x9b\x2a\x6e\x38\xee\xb8\x18\x57\xf1\x40\
+\xa8\xd9\x58\xe5\x73\xb1\xd9\xa3\x83\x53\x29\x16\x26\x9e\x80\x04\
+\xe2\x0b\x47\x0b\x98\x43\x96\x26\x78\xfb\x19\x47\xe3\x3f\xaf\x3a\
+\x05\x23\x63\x0d\xfc\xf3\x0d\x8f\xe3\xbe\x47\xb6\xa3\xad\x92\x61\
+\xe3\x96\xc1\xe6\x96\xf1\x22\xd2\xa9\xef\xdf\x5b\x70\xf4\x04\xc9\
+\x33\xaa\x01\x90\x55\xc0\x8c\x34\xa5\x1b\x5f\x53\x02\xf0\xe6\xbf\
+\xb9\x8b\x34\xc7\x54\xab\x89\xba\x81\xc4\x25\xe2\x08\xa1\x56\x01\
+\x26\x0e\x50\x72\x2c\x60\x1c\xb5\xa3\xd5\x62\xaf\x80\x62\xd8\x29\
+\x7a\x04\x30\x0a\xa5\xe3\x85\xbd\x0e\xec\x39\xba\xbb\x32\x7c\xf0\
+\xbc\x63\xf1\xb9\x0f\x2f\x47\x5b\xc9\xb4\xa8\x79\x74\xc3\x1e\xc1\
+\x3b\x28\xee\x80\xca\x68\x8c\xec\x0b\x1b\x3a\x8a\xd5\x1f\x55\x01\
+\x15\x84\x80\x18\x8f\x7e\x73\xf5\x81\x6f\xf7\x3a\x23\xc3\xc0\x90\
+\x1d\x16\x5b\x30\xda\xc6\xcc\x61\x63\xee\xc0\xf2\xf7\xc9\x1c\x9f\
+\x08\x0c\x89\x7e\x16\x3c\x02\x8e\x12\x4a\x64\x7c\x04\xdf\xf6\x2d\
+\x84\x63\x72\x83\x40\xcf\x49\x70\xfb\x15\x12\x47\x6d\x02\xc9\x6f\
+\x75\xcf\x51\x4f\x40\x27\x32\x5d\x1d\x25\xbc\xed\xf4\x05\x38\xe7\
+\x8d\xf3\xf0\xf8\xf3\x03\xa8\x55\x35\x2a\x95\xd4\xe7\x38\xdd\xd7\
+\xd7\xf5\x2a\x74\xa3\x61\xda\xba\x22\xf4\xfa\x89\xc3\x3e\xab\xf6\
+\x95\xd8\x03\x80\x71\x1d\x66\xc8\x48\xa6\xf2\x64\x2b\xbf\xf0\x2b\
+\x6a\xea\x19\x5c\xb4\xf7\x28\x42\xc4\x88\xdb\xcc\xfb\x10\x0f\x4d\
+\xdb\xd0\xa1\x50\x6f\xe8\x4a\xb8\x83\x1e\x90\x1d\x3d\x85\xf3\x28\
+\x37\xe3\x13\x34\x33\xdd\x54\xf3\x17\xf3\x0e\xcb\x69\x8a\x33\x4e\
+\x9c\x83\x4a\x99\xe2\x96\x78\xf6\xb3\x8d\xe1\x01\x8f\xed\xab\x02\
+\xe7\x9f\xe5\x36\xaf\x96\xc4\x64\x27\x1f\x59\x9a\x5c\x3f\x53\x04\
+\x20\x9b\xea\x13\xb2\x66\x53\xb5\x29\x2a\x6b\x49\xee\x1c\x46\x1c\
+\x53\xa9\x58\xb2\x7d\x44\xe7\x51\xb9\x5a\x21\x5e\x93\x84\x0c\x96\
+\x1c\x24\x08\x38\x9a\x45\x55\x4f\xd0\x00\xf1\x0e\xb3\x61\x3f\xe0\
+\xc2\xce\x90\x31\xd7\x87\x10\x9d\xdf\x78\x92\x46\x83\x34\x46\x06\
+\x9b\xfb\xfd\xc9\xd5\x0f\xfb\x27\x01\x20\x60\xc3\xb7\x6f\xd9\xbe\
+\xed\xb5\x2b\x00\x30\xc4\x10\x4d\x13\xa0\x71\x76\x21\xc5\x3d\xfe\
+\x59\xf0\x05\xc4\x56\x72\xb6\xc1\xb4\x6b\x49\x4b\x32\xac\xb4\x02\
+\x46\x92\x78\x52\xa8\x4d\xf4\x42\x20\x3a\x93\xb2\xd8\xdb\x38\x10\
+\x58\x28\x62\xf8\xc8\xa6\xd7\x2c\xb6\x9d\xa7\xc2\xaf\x54\x8d\x06\
+\x54\xa3\x8e\xbc\x50\xde\x25\xb7\x7c\xf1\x59\x41\xd1\x00\x92\x99\
+\x7f\x84\x19\x34\xa6\x5c\x00\xce\xb9\xf2\x6e\xba\xff\x9b\x17\x8a\
+\x25\x57\xd0\x06\x44\xd1\x6e\xa2\x5e\x18\xfc\x73\x9e\x70\x5b\x5e\
+\x57\x27\x28\x97\x27\x87\xbc\x11\x5c\x3b\x57\x5f\x74\x4a\x2e\xa1\
+\x24\x72\x51\x7e\xbb\xba\x60\x89\x64\x7f\x61\x92\xff\x44\xda\x85\
+\x71\xea\xa5\x37\x44\x5f\xe9\xfe\x7f\x58\xfe\x3f\x34\xe3\x2b\x81\
+\xe1\x2b\x26\x5d\xc5\x6c\x20\x2d\x48\x21\x53\xb1\xdd\xeb\x8c\x16\
+\x00\xa9\x8b\x59\x6c\xba\xe8\x56\x31\x17\x76\xfb\x66\xd9\x6c\xde\
+\xb1\x49\x29\x6c\x25\x6f\x19\xa3\x9e\x7b\x08\xb9\x62\xed\xe3\xa8\
+\x5d\x75\x00\xec\x0d\x6b\x27\x11\x99\xbe\xc0\x41\x8b\x51\x49\x02\
+\x4e\xbb\xe2\xe6\x57\xb9\x05\x08\x7f\x42\x15\xd5\x3d\x17\xb6\x7f\
+\x29\xec\x06\xce\xa0\x97\xae\xbe\x75\xc7\xc6\xd7\x87\x00\x08\x7c\
+\xc8\x51\xb8\xb4\x48\xfd\x7a\x73\xef\x6c\xaa\x20\x89\xfa\xed\xd9\
+\x20\xd2\xba\x91\xd0\x68\x5b\x04\xca\x91\x2f\xcb\xd0\x20\x4a\x84\
+\x59\x09\xbd\xff\xc3\x96\x2f\x84\xd3\x3f\xf5\xf3\x49\xed\xf7\xf2\
+\xe0\x55\xcb\x8f\xca\x15\x9f\x14\xaf\x7e\xd1\xff\x3f\x8a\x06\x82\
+\x36\x00\xf8\x27\x98\x61\xe3\xa0\x08\xc0\x39\x5f\xbc\x97\xee\xff\
+\xa7\xf3\xa3\x6d\x84\x4c\x32\x8e\x3c\xc5\x5a\x56\x08\x73\x93\x13\
+\x61\x0d\x03\x91\xdf\xd7\x57\x58\xf6\x38\xfc\x23\x1b\x7f\xca\x7d\
+\x88\x10\xd7\xf4\x9f\xf1\x99\xd5\x34\x95\xbf\xaf\xde\x68\x5c\xc2\
+\x48\xa3\x6e\x9f\xf2\x71\xb1\x07\xb0\x13\x04\xa2\x99\x13\xfe\x1d\
+\x64\x0d\x80\xb0\x25\x7b\x64\x61\xed\x23\x7b\x37\x98\xa2\xe0\x3c\
+\xda\x7a\xbe\x79\xbb\xf7\xd0\xe7\x1f\x89\x55\xf8\xb2\x15\x3c\xc7\
+\x6e\xfe\x19\x9f\x5d\x43\x07\xeb\xb7\x1d\x71\xd4\xa2\xcb\xf6\xee\
+\xde\x05\x55\xaf\x16\x56\x7d\x73\xaf\x3f\x15\x48\x44\x3b\xaf\x5e\
+\xb3\xf3\xa9\xd7\x8d\x00\xbc\xe5\x6f\x7f\x43\xbf\xfb\xc6\x5b\x3d\
+\x6a\xe2\x1d\x2c\x4d\x51\x38\x17\x7a\xfc\x33\x62\xbe\x3f\xc9\xfd\
+\xc5\x10\x55\x66\x30\x47\x0e\x20\x03\x38\xeb\x2f\x7f\x49\x87\xe2\
+\x86\xd5\xd6\x7e\xb1\x3f\x57\xbc\xe2\xc8\xa3\x17\xe3\x77\xf7\xde\
+\x03\xa5\x09\xb9\x06\xea\x0d\x8d\x5a\x5d\x1b\x40\x08\x05\x73\x60\
+\xd4\xff\x0d\x98\x81\x23\x3b\xa8\x67\xf7\xd1\x9c\x44\xdc\x10\x39\
+\x5f\x9e\xcc\x21\x1d\x33\x11\xb7\x73\xb4\xe1\x73\xac\x19\xce\xfe\
+\xfc\x1d\x74\xa8\x6f\x58\x3d\x57\x17\xaa\x3c\x07\x88\x71\xf4\xa2\
+\x45\xf8\xe3\xc6\xcd\xe8\xea\xac\x60\xc5\x1b\x8f\xc4\xa6\xcd\x7b\
+\xb1\x61\xd3\x20\x5c\x4b\xd8\x5c\x45\x84\xd0\x1f\xbe\xee\x04\xe0\
+\x2d\x5f\xfa\x2d\xad\xfd\xc7\xb7\xfa\x06\xf1\x72\xb3\x10\xe1\xf0\
+\xdb\x49\xd7\x82\x6b\x2f\x26\xdb\x39\x84\x56\x4b\xbc\xf9\x6f\xee\
+\xa2\x69\xbd\x63\xcc\x8a\x39\xdf\xa5\x54\x3e\xb7\xa7\xb7\x1b\x27\
+\x9c\xb8\x10\xb3\x67\x77\xa2\xd1\x18\xc7\xbc\x23\xdb\xf1\xcc\x8b\
+\xfb\xd0\x50\x66\xdb\xfb\x9e\x2e\x60\xc7\x5e\x00\x4c\xfb\xae\x59\
+\xb3\xe3\xa1\xd7\x9f\x06\xb0\x09\x02\xf6\x3a\x3f\xb4\x8e\x29\x04\
+\x0b\xc1\xbd\x8b\x76\xf6\x32\x1e\xc1\xca\x2f\xfc\x8a\x66\xca\x0d\
+\x23\xe8\xf5\x60\xdd\xcb\x5a\xa1\xab\xab\x1d\x95\x0a\xa3\x51\xaf\
+\x21\x57\x39\xfa\x7a\x32\xf4\xcf\x6a\x43\xa5\x9c\xe3\xa8\x23\x80\
+\x79\x7d\x39\xee\x7e\x58\xe1\xc1\x67\x0e\x6e\xc3\xe7\x19\x2d\x00\
+\xe7\xfe\xd7\xb5\xb4\xf6\x6b\xe7\xb2\x43\xf5\x02\xda\x2b\x60\x61\
+\x01\xeb\xba\x32\xb1\x73\xae\xbc\x9b\x66\xe2\x0d\x6b\xe4\x8d\x4e\
+\xa5\x79\x37\xb3\x3e\x3a\x57\x0d\x68\xad\xc0\xac\xc0\x5a\xa1\xda\
+\x68\xe0\xcc\xe5\x9d\xc8\x1b\x55\xa8\xbc\x86\xc1\x61\x85\xa5\x47\
+\xe7\xd0\x8c\x6b\xff\xef\x3d\x33\x53\x00\x92\x43\x71\x91\x73\xff\
+\x6e\x2d\x15\x77\x18\x25\xe8\x09\x1b\x40\x9c\xf3\xc5\x7b\xe8\x9c\
+\x2f\xce\xcc\xc9\x07\x80\x24\xc9\xf6\x30\xe7\x9b\x0c\x77\x41\x19\
+\x16\xb0\xdd\xdf\x90\x59\x43\x29\x05\xad\x15\x34\x2b\x00\xba\xde\
+\xd9\xa6\x7f\xfb\xb9\x7f\xd9\xfd\xdb\x99\xfa\x7b\x0e\xe9\x8d\x5e\
+\x7b\xd5\xb9\xa1\x44\x98\x02\x87\xff\xdc\x2f\xdd\x37\x63\x27\x7c\
+\xa2\xb1\xeb\xd6\xcb\x36\x28\xd5\x38\x3e\x57\x35\xa8\xbc\x6a\xff\
+\xea\xc8\x73\xf7\xbc\x06\x95\xd7\xa0\x75\xfd\xb6\x3c\xaf\xfd\xcf\
+\x95\x7f\xbb\xef\xa1\x96\x00\xd8\x71\xdf\x55\x6f\x61\x22\xc2\xb9\
+\x7f\xb7\xf6\xb0\x9a\x74\x37\x86\x7f\xfd\x99\x9e\xb1\xf1\xf1\x7f\
+\x52\x79\xed\xd3\x41\x00\xea\xc8\x1b\x66\xd2\x95\xb2\x02\xa0\x6a\
+\x8f\x27\xa4\x2e\x3f\xed\xaf\x0f\x6d\xcf\x9f\x19\x2f\x00\xaf\x85\
+\xb1\x63\xf5\xc7\xbe\xc5\xba\xf1\x85\xbc\x51\x45\xae\xaa\x26\x2b\
+\x98\xd7\xa0\xf3\xaa\xd1\x02\xaa\xbe\x33\x6f\x8c\x7f\xec\xac\x2b\
+\x77\xdc\x3b\xd3\x7f\x4b\xd6\x9a\xce\x03\x89\x04\x75\x43\xeb\xbc\
+\xc6\xac\x2b\x86\xbc\xa2\x00\x56\x60\xb3\xe1\xcb\x33\x04\xfe\xd6\
+\xe1\x30\xf9\x87\xcc\x09\x7c\x6d\x4d\xfe\xd7\x09\xac\xd6\x32\xeb\
+\x8a\xb6\xde\x3f\xb3\x61\x0e\x6b\xad\x01\xf0\xdf\xb3\x56\x3f\x3e\
+\x5c\x7e\x4f\x4b\x03\xbc\x5a\x9b\x49\x5f\xe2\x6d\x3f\x5f\x55\x66\
+\xd6\x39\xb4\xca\x18\x0a\xac\x35\x98\xf5\x3e\x66\xfd\xdd\x37\x7e\
+\xee\xf9\x5f\x1c\x4e\xbf\xa7\xa5\x01\x0e\x44\x0b\x68\xec\x2a\x67\
+\xd8\x95\x24\xb0\x55\x4c\xba\x41\xc0\xf7\xf2\x46\xed\xaa\xc3\xed\
+\xb7\xb4\x34\xc0\x01\x8c\xf5\xcf\xed\x79\xfa\x85\x6d\x83\xb3\x56\
+\x9e\xd8\x8d\x63\xe6\x10\x46\x72\xfe\x97\x24\xa5\xaf\x9f\xfe\xd7\
+\x2f\xee\x6f\xdd\x9d\xd7\xc1\x78\xcb\x29\xfd\xc7\x57\x4a\xe9\x53\
+\x00\xd4\x05\x6f\xea\xbb\x97\x9f\x78\xdb\xac\xd6\x5d\x79\x3d\x99\
+\x80\xfd\x9f\xed\x98\xdd\x5d\x7a\xf0\xe8\x39\x95\xd5\x6f\x5f\x31\
+\xfb\xac\xd6\x1d\x79\x1d\x8e\x13\x8f\xe9\xfc\xd1\xe5\xef\x9c\xb7\
+\x90\xf7\x7e\xa4\xe5\x47\xbd\x3e\xc3\xc1\x5b\x2a\xad\xbb\xd0\x1a\
+\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\
+\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\xad\xd1\x1a\x87\xc7\xf8\xff\x96\
+\x1a\xe5\x8e\xbc\x46\xb7\xf4\x00\x00\x00\x00\x49\x45\x4e\x44\xae\
+\x42\x60\x82\
+\x00\x00\x38\xa6\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x06\x1d\
+\x0e\x3a\x1e\x51\x23\xc2\x06\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\xbd\x77\x94\x5d\xd7\x75\xe6\xf9\x3b\
+\xf7\xde\x97\x73\xa1\x0a\x40\x55\x21\x10\x91\x48\x04\x40\x8a\x19\
+\xa2\x48\x31\x67\xca\x96\xec\x6e\xc9\x9a\xb6\x5b\xf6\x2c\x7b\xba\
+\xa5\x96\x67\x8d\x48\xcd\x58\x96\xe3\x52\xcf\x9a\xb6\xbb\x67\x64\
+\x59\xb2\xe5\x19\x5b\x2d\x59\x96\x64\x5b\x52\x4b\x22\xc1\x04\x30\
+\x8b\x04\xc0\x4c\x01\x20\x89\x1c\x0a\x55\x85\x8a\x2f\xd5\xcb\xef\
+\x9e\x33\x7f\xdc\xf0\xce\x7d\x55\x60\x10\x01\x8a\x84\x70\xb8\x8a\
+\xf5\xea\xe1\xc5\xbb\xf7\xd9\xfb\xdb\xdf\x0e\x07\xce\xad\x73\xeb\
+\xdc\x3a\xb7\xce\xad\x73\xeb\xdc\x3a\xb7\xce\xad\x73\xeb\xdc\x3a\
+\xb7\xce\xad\x73\xeb\xdc\x3a\xb7\xce\xad\x5f\x8a\x25\xde\xad\x37\
+\xfa\xc2\x17\xbe\xa0\xbc\xdb\x5f\xfa\xd2\x97\xc4\xb9\x4b\xff\x4b\
+\xa2\x00\xe3\xe3\xe3\xbe\xe0\xbf\xfc\xe5\x2f\x9f\xf2\x71\xe7\x94\
+\xe2\x2c\x54\x00\x5d\xf8\xde\x52\x28\x50\x9d\xbf\xfe\xea\xaf\xbe\
+\x72\x4e\x21\xce\x76\x05\xc8\xe7\xf3\xe4\x72\x39\x47\xfc\xca\x51\
+\x02\xe1\xeb\x81\x73\x1f\xee\xfd\x5f\xfd\xea\x57\xcf\x29\xc3\xd9\
+\xa6\x00\x77\xdf\x7d\x37\x42\x08\x56\xaf\x5e\xcd\x9a\x35\x6b\xe8\
+\xeb\xed\x25\x9d\xc9\x30\xaf\xa7\x07\xd3\xb2\x50\x4a\x05\x2c\x84\
+\x50\xa0\x14\x7c\xed\x6f\xbe\xf6\x86\xaf\x7f\x4e\x31\xde\x47\x0a\
+\xd0\xbd\x92\xc9\x24\xd9\x4c\x86\x54\x3a\xc3\x8a\x15\xcb\x59\xb7\
+\x6e\x1d\xd9\x5c\xce\x91\x7c\x97\xab\x50\xae\x89\xf0\xf4\xe4\xeb\
+\x5f\xff\xfa\x39\x65\x78\xbf\x28\x80\x52\x8a\x7b\xee\xb9\x67\xd6\
+\xbf\x29\xa5\xb4\x1f\x47\xe0\xa6\x61\xb0\xfa\xfc\xf3\xb9\xec\xd2\
+\x4b\x59\xb9\x72\x25\x96\x65\x39\x1f\x52\xb8\xba\xa0\xf4\xdf\x12\
+\x81\xe0\xef\xfe\xee\xef\xce\x59\x87\xf7\xac\x02\x8c\x8d\x29\x05\
+\x01\x05\x50\x00\x52\xe1\xff\xa7\x94\xfb\xb7\xbb\xd3\x95\x77\x3f\
+\xe4\x72\x39\xd6\xac\x59\xc3\x92\x25\x4b\xc8\x66\xb3\xf4\xf5\xf6\
+\x91\xce\xa4\x35\xab\x80\xaf\x11\xd2\xfd\xfd\xf7\x7f\xff\xf7\xe7\
+\x5c\xc6\x7b\x45\x01\xc6\xc6\xc6\x14\xba\x02\x78\x3b\x3e\x20\x6c\
+\x50\x4a\xba\x8a\xd1\xb9\xad\x5b\x07\x50\x58\x96\x49\x26\x9d\x21\
+\x9e\x4c\x32\xd0\xbf\x90\x0d\x1b\x36\xb2\x76\xed\x1a\x5f\x11\x02\
+\x38\xc2\x77\x23\x20\x94\xe2\x1f\xbe\xf1\x8d\x73\x0a\xf1\x8b\x50\
+\x80\x93\x63\x63\x4a\xa0\xb8\xe7\x9e\xcf\xe3\x6c\x7c\x85\xf0\x84\
+\x2b\x3b\x16\xc0\xf1\xf7\x8e\xb0\xa5\xec\x08\x54\x21\x11\x8e\x81\
+\x40\x29\xe9\xe0\x00\xa9\x90\x74\xa2\x86\x9e\x5c\x8e\x4b\x2e\xb9\
+\x84\x4b\x2e\xbe\x98\x4c\x36\x87\x30\xc0\x10\x86\xe3\x36\x54\x37\
+\x96\x70\x9e\xf8\xcd\x6f\x7e\xf3\x9c\x32\xbc\x2b\x0a\x70\x72\x4c\
+\x81\xe2\xf3\x9f\xff\xbc\xbf\xa3\x01\xa4\x94\xce\x3b\x4b\x90\x4a\
+\x6a\x96\x40\x05\x76\xb4\x8f\x0f\x5c\xe1\x4b\xd5\xb1\x22\x40\x47\
+\x89\x34\xeb\xb2\x6a\xd5\x2a\x56\xad\x5a\x4d\x5f\x5f\x2f\x7d\xbd\
+\x7d\x2c\xec\x5f\x80\x65\x85\xdc\xe7\x38\x6f\xaa\x10\xfe\x7b\xfe\
+\xe3\xb7\xbe\xf5\x4b\x1d\x69\x9c\x61\x05\x38\xa9\xf0\x2c\x80\x72\
+\x84\xed\x0b\x0b\xd5\xc1\x02\x3e\x10\x04\x25\x65\x40\x01\xbc\x9d\
+\xee\x29\x8d\x67\x3d\x82\x8f\x71\x84\xe9\x28\x93\xbb\xdb\xa5\x24\
+\x9e\x48\x90\x4a\xa5\x48\xa5\x52\xac\x5d\xbb\x96\x8b\x2e\xba\x88\
+\x79\x3d\x3d\xbe\x25\xe8\xc4\x1b\x22\xa8\x58\x0a\xbe\xf3\x9d\x7f\
+\xfa\xa5\x50\x86\x33\xac\x00\xa3\x4a\x29\xf8\xfc\xe7\xef\x71\x77\
+\x72\x47\x60\x52\xc7\x04\x01\x21\x3a\x6e\x42\x4a\xd9\xb1\x18\x1d\
+\xa6\x08\x25\xa5\x6b\xd6\x05\x12\x57\xe0\xba\x72\xb9\xff\xae\x5c\
+\x6b\x21\x95\x9a\xa5\x50\xeb\xd6\xaf\xe3\xca\x2d\x57\xb2\x76\xcd\
+\x5a\x84\x10\x98\xa6\x89\x61\x18\x1d\x9c\xe2\x38\x2a\xff\x79\xdf\
+\xfd\xee\x77\xcf\x5a\xeb\x70\x46\xbf\xc0\xe8\xc9\x93\x0a\x37\x0c\
+\xd4\x01\x9d\xe3\xe7\x95\xbf\x53\xa5\x0b\xd6\xa4\x06\x12\x3d\xeb\
+\x10\x70\x07\x2e\x06\xd0\x79\x01\xe5\x09\xd9\x17\xb4\xc4\xff\x53\
+\xc9\x80\xa2\x79\xd6\x44\x0f\x3d\x73\xb9\x2c\x6b\xce\x77\x22\x8d\
+\x5c\x2e\xc7\xa2\x45\x83\xf4\xe4\xe6\x69\xd6\xc1\x07\x0f\x3e\xb0\
+\xfc\xe7\xef\x7d\xef\xac\x71\x19\x67\x56\x01\x46\x47\x95\x42\x71\
+\xcf\xdd\xf7\xb8\xe6\x5d\xb9\x4c\x9f\x72\x77\xac\x00\xa9\x1c\xaf\
+\xec\x2b\x80\x2b\x30\xa1\x50\x76\x47\x0c\xd2\x77\x0d\xae\x60\x03\
+\xe8\xdf\x05\x90\x7a\x64\xe1\x3d\x1e\xcf\x65\x28\x90\x60\xe3\xfb\
+\x9a\x40\x44\xa2\x94\xc2\xb2\x2c\x12\x89\x04\xf1\x78\x9c\xc1\xc1\
+\x45\x5c\x7c\xc9\xc5\x6c\xde\xb8\x51\x73\x5b\x04\x08\x29\xe7\x73\
+\x3a\xcf\xff\xfe\xbf\x7e\xff\x7d\xa9\x10\x67\x56\x01\x46\x1c\x05\
+\xb8\xfb\x9e\x7b\xe6\x30\xf7\x2a\xe8\x16\xd0\x76\xb3\x2b\x2c\xa9\
+\xa4\x7f\xa1\x7d\x81\x4b\x39\x2b\x8c\xf4\xac\x4a\x10\x40\x4a\xd7\
+\x35\xe8\x20\x11\xff\xfe\x8e\x25\x50\x7e\xa4\xd0\xf9\x2c\x2a\x10\
+\x8d\x64\x73\x59\x2e\xbf\xec\x72\x2e\xbb\xec\x32\x7a\xe6\xf5\x60\
+\x1a\x26\x56\x28\xe4\x5e\x3c\xc7\x1d\xe9\xd6\x0a\x05\x3f\xf8\xe1\
+\x0f\xde\x17\x56\xe2\x8c\x7e\x90\x91\x91\x11\x87\x0a\xfe\xdc\xdd\
+\x1d\xbf\x8c\xf2\x85\xe8\x47\x04\x01\xd3\xdd\x85\x11\x74\xe2\x48\
+\x67\x0f\xe7\xb8\xdf\xd1\x1b\x4d\xc0\x72\x0e\xc5\xf2\x05\xed\x1a\
+\x78\x29\x3b\xae\xc9\x7b\x6f\xef\x73\xea\x8f\xd3\xde\x7b\xd5\xaa\
+\x55\xac\x58\xb1\x92\xf9\xf3\x7b\x19\x1c\x1c\x64\xf1\xe2\x25\x84\
+\xc2\x21\x9f\x94\x52\x5a\xb6\xd3\x7b\xed\x87\x1e\x7a\x98\x6a\xb5\
+\xfa\x9e\x53\x88\x33\xab\x00\xc3\x23\x8e\x05\xb8\xfb\xee\x00\x06\
+\xf0\x04\x22\xbc\xd0\x4e\x0b\xe7\x7c\xe5\xe8\xda\x9d\x52\x69\xa6\
+\xbb\xdb\x7a\x74\xef\x68\x6d\xb7\x0b\xd1\xe1\x16\x7c\x17\x71\x8a\
+\xe7\xa1\x09\x7c\x6e\xb0\xea\x50\xd0\xbe\x12\x01\xd1\x68\x94\x44\
+\x2c\x4e\x2a\x9d\x64\xe3\xa6\x4d\x5c\x7e\xf9\xe5\x2c\x98\xbf\x20\
+\xa0\x08\xde\xf7\x0e\xba\x0f\xf8\xf1\x4f\x7e\xfc\x0b\x57\x86\x33\
+\xfa\x66\xc3\xc3\xc3\x7e\x32\x28\x08\xe4\x34\xdf\xad\xf9\x6b\xc7\
+\x1a\x78\x02\xf7\x84\xdd\x11\x9c\xaf\x08\x74\xf0\x83\xf2\x14\x42\
+\x0a\x1c\x34\xa1\xb9\x87\x00\xdb\xa8\x2b\x86\xea\xec\x70\x9d\x84\
+\xf2\xdf\x47\xb7\x40\x1d\x0c\xa1\x24\x9a\xe2\xea\x60\x54\x38\x8a\
+\x2b\xf0\x3f\xe7\xba\xf5\xeb\xb8\xea\xaa\xab\x58\x7d\xfe\x6a\x22\
+\xe1\x08\x91\x70\x04\xd3\x32\x3d\x7e\x32\xf0\x5c\x50\xdc\x7b\xef\
+\xbd\xbf\x10\xeb\x70\xc6\x15\x40\xa1\xb8\xfb\x73\x9f\x43\x2a\x5c\
+\x56\x4f\x6a\x3c\xbe\x73\xa1\x95\x74\x19\x3f\x74\x53\xae\x09\x91\
+\xce\xee\x0b\x28\x8f\xec\x98\x67\x49\xd0\xbf\x63\x2b\xa4\x08\x9a\
+\x7c\x5c\x76\x51\x49\x81\x12\x2e\x46\xe8\xe2\x1d\x3a\xa1\xa4\x86\
+\x3d\x3c\x2e\x42\x57\x2c\x98\xc3\x25\xe9\x34\x76\xc7\xda\x65\x73\
+\x59\x56\xad\x5a\xc5\xe2\xc1\xc5\x2c\x58\xb8\x80\xe5\xcb\x96\xd3\
+\xb7\xa0\xcf\x0f\x61\x41\x75\x38\x0e\xe5\x90\x55\x5b\xb7\xde\xcf\
+\xf2\xe5\xcb\x01\xf8\xed\xdf\xfe\xed\x33\x26\x27\xeb\x4c\x2a\x40\
+\xc0\x04\x2a\xdd\x37\x76\x4c\x28\x9a\xc0\x55\x20\xc9\x13\x24\x66\
+\xa4\x92\x8e\xb6\x76\x3c\x81\xe6\xa7\xf5\xe7\xb8\xd7\x54\x04\x81\
+\x5d\x87\x53\x70\x93\x0e\x92\xa0\x20\xe9\x28\x15\x73\x80\x4c\xe5\
+\xbb\x20\xba\xac\x0a\x1d\x65\x71\x77\x94\xf3\xb7\xf4\x23\x84\xe9\
+\xa9\x69\x76\x4d\xed\x62\x87\xda\x81\x69\x98\xc4\x62\x31\xc2\xe1\
+\x08\xcb\x97\x9f\xc7\x15\x57\x5c\xc9\xa5\x97\x5e\x8a\xee\x1b\x94\
+\x82\x5b\x6f\xbd\x8d\xd7\x5f\x7f\xed\x8c\xbb\x00\xeb\xcc\xbe\xbc\
+\xea\x2a\xf6\x90\xbe\x32\x30\x87\x9f\xf7\x4c\xb8\x0e\xd6\x3a\xbe\
+\x9b\x0e\xdb\x17\x10\xca\xec\xf8\x7f\xae\x1d\xaa\x03\x32\xe8\x4e\
+\x3a\x75\x14\xab\x5b\x21\x84\xef\x76\x1c\xc5\x09\x2a\xb1\xa7\x89\
+\x22\xa8\x30\xfe\xef\x8e\x1b\x11\xee\x7b\xb4\xed\x36\xa5\x52\x19\
+\x28\x31\x31\x31\xce\xae\x5d\xcf\x22\xa5\x22\x97\xcb\x70\xe5\x15\
+\x5b\xb8\xf4\xb2\x4b\x58\xb5\x7a\x75\x80\x7b\x38\x93\xcb\x38\xb3\
+\xe2\xef\x20\x7d\x3d\xe6\x96\x6e\x98\x16\x08\xbb\x3c\x1a\x57\xa9\
+\x59\x24\x90\xf0\x4d\xbe\xce\x0c\x7a\x22\xf1\x14\x49\x04\x49\x1b\
+\xd5\x79\x0d\x6f\xe7\xbb\xf0\x41\x0b\x25\x35\x80\xa6\x2b\x8a\x1b\
+\x86\xa2\x04\x1e\x85\xa0\xfc\xf7\x50\x7e\x98\xe9\x7f\x27\x82\x58\
+\x83\x40\xae\x82\x8e\x4b\xf3\xc1\x0d\x01\x20\x0b\x8a\xe9\xe9\x02\
+\xf7\xdd\x77\x2f\x5f\xfc\xc3\x3f\x0a\x28\xf1\xfb\xda\x02\x08\xf4\
+\x5d\xa5\xd5\x82\x82\x7f\x31\xbd\x6b\x22\x7c\x21\x05\xd1\xb9\x2f\
+\x0b\xa9\x10\xee\x4e\x13\x1a\x48\x73\x4c\xaf\xf2\xa5\xec\xbf\xa6\
+\xc7\x25\xe0\xd3\x82\x1d\xd0\xa9\x11\x48\x81\x1d\xaf\x5b\x0f\xe1\
+\x2a\xdc\x2c\xc1\x2a\x82\x46\x4c\x79\x54\x00\xd8\x0e\x81\xd5\xe1\
+\x2b\x84\x1f\x35\xe8\x8a\xab\x7c\x1c\xd4\xa5\x54\x74\xa2\x85\x77\
+\x6b\x9d\x61\x0c\xa0\xef\x46\x8f\x7d\xeb\xec\x38\x1f\xb0\x21\x91\
+\x2e\xf8\xf1\x2f\x66\x60\xa7\x68\xb7\xbb\x5f\x5f\x31\x4b\x88\x3e\
+\x17\x20\x14\x42\xba\x56\x42\x76\x04\xdf\xbd\x63\x03\x69\x69\x82\
+\x78\x45\x75\xb9\x04\xa9\x14\xc2\x45\xee\x3e\xd0\x13\x1d\x96\x53\
+\x0f\x11\xe9\x76\x2f\x3a\x8c\xf0\x4d\xa4\xf4\x0b\x62\x84\xc7\x41\
+\x28\xde\x35\x25\xb0\xce\x30\x04\x08\x12\x40\x4a\xbb\xe0\x04\xc9\
+\x16\x2f\xe4\xd3\x13\x39\x7e\x05\x31\x6a\x56\x82\x47\x04\x5e\x5f\
+\xcd\xde\x65\x5d\x8a\xe3\xf8\x6f\xa1\xd5\x1c\x76\x95\xa8\x0b\xcf\
+\x9f\x78\x56\x43\x7f\x0d\xe5\x2b\x10\x3a\x26\xe8\x52\xa2\xd9\xb8\
+\x83\xc0\x67\x51\xaa\x8b\x46\xd6\xb2\x92\x01\xd7\xf1\xee\xc9\xff\
+\x0c\x5b\x80\x0e\xb6\xee\xfa\xf2\x68\x66\x59\xbb\x90\x01\x53\xa8\
+\x25\x6c\xb5\x42\x11\x7c\x25\x70\x90\xbe\x92\x4e\x9e\xc0\xb6\x6d\
+\x84\x10\x08\x21\x7c\x96\xd0\x8f\xb3\xdd\x0c\x9f\x1e\x9e\xa1\xba\
+\xcd\xbb\xc7\x06\x76\x14\xab\xf3\xef\x3a\xab\xe7\xd5\x13\x80\x12\
+\x41\x50\x88\x9e\x8e\xf6\x8a\x5f\xd0\x52\xdd\x74\x57\x2d\x69\x6e\
+\xc7\xcb\x86\x4a\xf5\x6e\x7a\x80\x33\x6d\x01\xdc\x22\x0c\xff\x3b\
+\x05\x59\x3e\xdd\x4d\x28\x7f\x97\xb9\x3e\xa0\x2b\x96\xee\xf0\x06\
+\xda\x45\x94\x8a\x76\xbb\xcd\xf0\xf0\x30\xcd\x66\x93\x64\x2a\x49\
+\x2a\x95\x22\x1a\x8e\x6a\x9e\x54\x6a\x3b\x5d\x63\x1f\x09\x0a\xdf\
+\xc3\x0c\x73\x85\x96\xba\xe6\x4a\xd5\xa9\x50\x55\x52\x78\xf1\x68\
+\x40\xc1\x7d\x0a\xda\x47\x9f\x9a\x45\xec\x0a\x6f\xbb\xcb\xd7\x84\
+\x93\xf3\x3e\x4b\x14\xc0\xaf\xbc\x91\x81\xf8\x5d\x79\xc4\x87\xd4\
+\xdd\x02\x01\x50\x36\x7b\x17\x2a\xed\x22\x76\xcc\x77\xbb\x6d\x53\
+\xab\xd5\x48\x24\x12\x24\x13\x49\x6a\x95\x2a\x53\x93\x53\x64\xb2\
+\x59\xa2\x91\x08\x42\x08\x4d\xb1\x3c\xc2\xa8\xab\x46\x40\x8f\x1a\
+\xf4\xb4\xb5\xd2\x43\x52\x2d\x6d\xed\xf3\x05\x6a\x4e\xda\x5a\x07\
+\x99\x7a\xe8\xaa\x5b\x37\xb4\xa4\x98\xfb\x20\x87\xb8\x0a\x5c\x89\
+\xf7\xb9\x02\x48\x14\x42\x04\x3b\x7f\x7c\x21\xea\xa1\xde\x5c\xbb\
+\x23\x10\x3a\x68\x60\x2f\xc0\xf8\x81\x61\x08\xda\xad\x16\xc9\x64\
+\x92\x25\x4b\x96\x70\xf9\xe5\x97\xf3\xe2\x8b\x2f\xb2\x67\xcf\x1e\
+\x0a\xf9\x3c\xe9\x54\x8a\x70\x24\x82\x61\x1a\x5d\xae\x41\x73\x50\
+\x1a\x32\xd3\x3f\xa3\xd0\x3a\x99\x5c\x02\x57\xf3\xed\x5e\x28\x18\
+\x0c\x3f\x03\x96\xa0\x1b\xd0\x6b\xce\x5d\x6a\x5c\x81\x52\x2e\x4d\
+\xaa\x57\x46\x9d\x0d\x18\x40\xcc\x91\x43\x57\x73\x30\x82\x1e\xe2\
+\xd7\xaf\x91\x4f\xf8\xb8\x75\x01\xaa\x9b\x29\x04\xda\xed\x16\xcd\
+\x56\x93\x56\xbb\x4d\x34\x1a\xa5\x5e\xaf\x53\x2c\x16\xf9\xd4\xa7\
+\x3e\xc5\x81\x03\x07\xd9\xb5\xeb\x69\xf6\xec\xd9\x4d\x3e\x9f\x27\
+\x1e\x8f\x11\x8d\xc6\x82\xb1\x84\x66\x4d\xa4\x74\x6a\x13\x11\x86\
+\x16\xa6\xe1\xe7\x08\x34\x9a\x5f\xab\x4d\x24\x68\xdd\x74\xf4\xd2\
+\x4d\x62\x09\x15\x00\xa6\x41\xf7\xa2\x66\x91\x58\x67\x47\x18\x18\
+\xc0\x46\x1d\x13\xdb\xf1\xbf\x52\xe3\x07\xbc\x1c\xbe\x03\xdc\x04\
+\x9d\x1a\xbf\x20\xbb\xd6\xf1\xd1\x85\x42\x91\xa9\xf1\x31\xb2\x96\
+\xc5\x4c\xa9\xc4\x8d\x37\xde\xc8\x23\x8f\x3c\xc2\xe2\xc5\x8b\x59\
+\xbc\x78\x09\x95\xca\x20\xd9\xec\x05\x1c\x38\xf0\x0c\xfb\xf7\xef\
+\x61\x7c\x7c\x82\x6c\x26\x4b\x34\x16\x05\x04\xcd\x66\x83\x46\xa3\
+\x81\x94\x12\x43\x18\x98\x96\x89\x69\x18\x08\xc3\xf0\x4b\xc4\x02\
+\x89\x23\xcd\x95\xf8\xda\xd3\x05\xf4\xe8\x62\x1f\x3d\x06\x14\x29\
+\x02\xa1\x6f\x37\x43\xa9\xa4\x13\x4e\xd2\x05\x84\xdf\xe7\x18\x80\
+\x40\x68\xa7\x5b\x03\x9d\x25\x53\x74\x13\x2c\xc1\x74\xad\x4e\xf0\
+\xf9\x17\x58\x2a\xaa\x95\x19\xd6\xc4\xe3\xcc\x4b\x26\x39\x16\x0a\
+\xb1\x6c\xd9\x32\x16\x2c\x58\xc0\x73\xcf\x3d\xc7\x4d\x37\xf5\x31\
+\x3e\xde\xcf\xd4\xd4\x0a\x36\x6e\xbc\x98\x0b\x2f\x7c\x85\x43\x87\
+\x76\xf0\xfa\xeb\xfb\x18\x1f\x1f\xf7\x85\xbb\x78\xf1\x62\xe2\xf1\
+\x38\xb5\x5a\x8d\x42\xa1\x40\xa5\x5a\xa5\xdd\x6e\x63\x08\x41\x24\
+\x1a\x25\x12\x89\x74\x5c\x90\x08\x96\x98\x3b\xd1\x80\x24\x68\x4e\
+\x82\x3c\x03\x52\x69\x89\x25\x8d\x75\xa4\xcb\x05\xe8\xc9\xa4\xb3\
+\x26\x0c\xec\x06\x58\x6e\xb6\xc4\x17\xbe\x6e\x36\x75\x57\xd0\x15\
+\x33\xeb\xdc\x81\x4e\xd0\xb4\x9b\x4d\x7a\xa2\x51\x6a\x8d\x3a\xcb\
+\xd7\xad\x25\x1a\x8d\xb2\x62\xc5\x4a\x5e\x78\xe1\x79\x4a\xa5\x02\
+\x7d\x7d\x8a\xe1\x61\x9b\xc7\x1f\x1f\xa0\xdd\x5e\x44\x6f\xef\x26\
+\x56\xac\xd8\xca\xc8\xc8\xb7\xd9\xbc\x79\x33\x1f\xbe\xf6\x5a\x16\
+\x2f\x5a\x84\x69\x18\xc4\xe2\x71\x84\x10\x14\x0a\x05\x8e\x1c\x39\
+\xc2\xee\xdd\xbb\xd9\xbb\x77\x2f\xe3\xe3\xe3\xc4\xa2\x31\x62\xf1\
+\x18\x86\x30\x5c\xdf\x7d\x0a\x21\xea\x7e\xdd\xa7\x80\x5d\xdd\x11\
+\xc1\x4a\xa8\x00\x2b\x84\x42\x6a\x5e\x41\x9c\x4d\x16\xa0\x93\xf2\
+\xd5\x76\x3f\x1a\x69\xa3\x82\xe0\x47\x2a\x27\x35\xac\x27\x5f\x82\
+\xc4\x4a\x27\xf6\x6f\xb5\x5a\x44\x2c\x8b\xe1\x66\x83\x95\xfd\x03\
+\xb4\xdb\x36\xb9\x6c\x96\x42\xa1\x40\xb1\x58\x20\x97\x6b\x72\xf5\
+\xd5\xa3\x6c\xdc\x68\x71\x62\x28\xcb\xd0\x89\x3e\x6c\xbb\x9f\xe5\
+\xcb\x97\xf3\x89\x4f\x7c\x82\x95\xab\x56\x12\x0e\x85\xb1\x4c\xd3\
+\x8d\xc1\x25\x0b\x17\x2e\x60\xe5\xca\x55\x5c\x79\xe5\x95\x0c\x0d\
+\x0d\xf1\xc2\x0b\x2f\xf0\xdc\xb3\xcf\x32\x74\xe2\x04\xa6\x69\x12\
+\x89\x44\x08\x59\x21\xbf\x7e\xd1\xab\x71\x0c\xec\x7a\x35\x3b\x51\
+\x85\x9a\x9d\xe1\xd4\x6f\x07\x73\x11\xa0\xce\x0a\x26\x50\xab\xb9\
+\x0f\xb0\x7e\x5e\x62\x47\x28\x3f\xa1\x23\xb4\x1d\xa1\xbc\x78\x5b\
+\xba\xb4\xb0\x6e\x09\xdc\xfb\x6c\xbb\x85\x68\xb5\x08\x03\x35\xdb\
+\x26\xe6\x82\x40\x61\x08\x9a\xcd\x26\xa5\x52\x09\xc3\x30\x1c\xff\
+\x6e\x54\x18\x18\x2c\x90\xcd\x8d\xb2\x6b\xd7\x2b\xf4\xf4\xf4\xb0\
+\x70\xe1\x42\x50\xd0\x6c\x36\x69\x81\xd3\x81\xea\xfe\x32\x0c\x83\
+\x4c\x26\xe3\x54\x0c\xaf\x59\xc3\x35\x57\x5f\xcd\x77\xbf\xf7\x3d\
+\x76\xee\xdc\x49\xb5\x5a\xc5\x30\x0d\x12\xf1\x04\x42\x38\xf5\x09\
+\xb2\x2b\xec\x0b\xe4\x14\x34\x4e\x40\xd2\x45\x2f\xab\x4e\x1d\x80\
+\xef\xee\xbc\xac\x95\x38\x5b\x2c\x80\x76\x51\x74\x02\x67\x16\x0b\
+\xa6\xb4\x74\xb1\x97\x37\x20\x58\x1c\xe2\xb1\x6f\x28\xb0\x6d\x09\
+\xb6\x4d\xb5\xd5\xa2\x06\xd4\x6a\x35\x1a\x8d\x3a\xad\x56\x0b\x21\
+\x04\x95\x99\x19\x22\x91\x08\x33\x33\x33\xd8\xb6\xc3\x15\x4c\x4d\
+\x4d\x50\x28\xec\x63\xf3\xe6\x8b\xb0\x2c\x8b\x56\xab\xe5\x0a\xbd\
+\x73\xb5\xf5\xdb\x08\x10\x08\xfa\xfb\xfb\x59\xbf\x7e\x3d\xe5\x72\
+\x99\x55\xab\x56\x71\xdf\x7d\x5b\xa9\x54\x2a\xc4\x63\xf1\x0e\x28\
+\xd4\x89\x4d\xff\x0f\xe1\x24\x87\xba\xbe\x67\x80\x31\x94\x1d\xa0\
+\xe8\xb1\xd1\xba\xd2\xbf\xcf\x31\x00\xc1\x5a\x7e\xcf\x07\xce\xba\
+\x28\xca\xcf\x8b\xf8\xf6\x60\x16\x08\xec\x38\x7f\x29\x9d\xc2\xd2\
+\x2a\xf0\x9c\x94\xc8\x6c\x96\xdd\x7b\xf6\x90\x4a\xa7\xa8\x54\xaa\
+\x98\xa6\xc9\x4b\xaf\xbc\x42\x2c\x1a\x45\x29\x45\xa9\x54\x62\x66\
+\x66\x86\x6c\x36\xcb\xe2\xc5\x4b\x59\xb9\x72\x25\x52\x4a\xbf\x1a\
+\xc8\x91\xb9\xf0\x7f\x77\x2b\x43\xdb\x6e\x33\x31\x39\x49\x7f\x7f\
+\x3f\x1f\xfb\xd8\xc7\xc8\xe5\x72\xfc\xc3\x3f\xfc\x03\xcd\x56\x13\
+\xcb\xb4\x4e\xd1\xd6\xd6\xc9\x40\x05\xaa\x8e\xd0\x29\xe2\x6e\x97\
+\xd0\x01\x0e\x4a\x9c\x15\x0a\x10\x20\xff\x83\x7c\x80\x17\xf6\x68\
+\x5f\x3c\x10\x05\xa0\xb1\x70\xc8\x00\x6b\xa6\x94\xa2\x56\xaf\x11\
+\x89\xc7\xd9\x78\xd9\x65\x5c\x78\xe1\x85\x3c\xfc\xf0\xc3\x3c\xfd\
+\xf4\x0e\x94\x92\x14\x8b\x45\x62\xb1\x18\xf1\x58\x9c\x68\x34\x4c\
+\xff\xc2\x7e\x56\xac\x58\x4e\x22\x99\x24\x1a\x8d\xd2\xd3\xd3\x43\
+\xb3\xd9\x74\x05\xac\xdc\xdf\x42\x53\x02\x47\x2b\xbc\x9b\x95\x4a\
+\x85\xe3\xc7\x8f\x73\xc1\x86\x0d\xd8\xb6\xcd\x96\x2d\x5b\x78\xed\
+\xb5\xd7\x78\xe2\x89\x27\xc9\xa4\xd3\x7e\xde\xdb\xc1\x03\xa2\xeb\
+\x7b\xca\xa0\x2d\x54\xce\x5e\xef\x60\x04\x81\x52\x76\x90\x7d\x14\
+\xef\x1e\x13\xf4\x2e\x85\x81\xcc\xca\x00\x7a\x05\x00\x5a\x1a\x48\
+\xdb\x11\x7a\xaf\x9e\x08\x90\x23\x52\x39\xfe\x7f\x7a\x3a\xcf\xe6\
+\x4d\x9b\xb8\xf5\xd6\x5b\x49\xa5\x52\x48\x29\xf9\xd9\xcf\x76\x93\
+\xcd\x66\xb9\xe6\x9a\x6b\xc8\x66\xb3\x98\xa6\x45\x4f\x4f\x8e\x58\
+\x2c\x86\x2d\x25\xa6\x61\x60\x9a\xa6\x0f\x20\x9d\x0e\x62\x81\x61\
+\xcc\xed\x02\xbc\xdb\x27\x4e\x0c\x51\x2a\x16\x19\x1c\x1c\xa4\xd5\
+\x6c\x82\x10\x5c\x7d\xf5\xd5\x3c\xf7\xdc\x73\x34\x5b\x4d\xc2\xa1\
+\x90\x9f\xc3\x50\x48\x2d\xa1\xa3\x50\x7e\x9b\xb2\xea\x28\xbb\x47\
+\x0d\xe3\x55\x41\x75\x6a\x23\xba\x01\xe4\xfb\xde\x05\x08\xa1\x02\
+\xb1\xb0\x5e\x19\xec\xed\x14\xc3\x30\xb0\x6d\xbb\x03\x02\x85\x0c\
+\xa0\xe2\x40\xac\x8c\xa2\xd5\xb6\x69\xb5\x5a\xac\x5e\xbd\x9a\x44\
+\x22\x81\x94\x92\xd5\xab\x57\xb3\x7c\xf9\x72\xa2\xd1\x28\xd2\xb6\
+\x41\x08\x2c\xcb\x44\x29\x45\xa3\xd1\x70\x94\xc7\x30\x68\x36\x9b\
+\x4e\x19\x94\x30\x5c\x6b\xaf\xed\xfa\x39\x14\x40\x4a\xc9\xde\x57\
+\x5f\x25\x99\x4c\x32\x6f\xde\x3c\x9a\x2e\xc6\x18\x1c\x1c\xe0\xfc\
+\x35\xe7\xf3\xca\x4b\xaf\xb8\x93\x4c\xd4\xac\xb1\x36\xbe\xca\xcb\
+\x4e\x07\xd1\xac\x2a\xe5\x59\xf4\xb4\x46\x7a\xbd\xef\x2d\x40\xa0\
+\x47\x3f\x98\x30\xf1\x2e\xd8\xbc\x25\x8b\x09\x25\x7b\x68\xd7\xcb\
+\xb4\xcb\x45\x9a\x95\x2a\xf5\x46\x83\x66\xb3\x05\xb6\xdd\x45\x04\
+\x39\xcf\x09\x99\x26\x21\x2b\xc4\xd0\xd0\x10\x9b\x36\x6d\x22\x14\
+\x0a\x03\x0a\xc3\x30\x68\x34\x9a\x3e\x82\x6a\xb7\xdb\x18\x86\x5b\
+\x7d\xa4\x14\xa6\x69\x82\x10\xd8\x4a\xa1\x64\x1b\x61\x88\x40\x53\
+\xa8\xae\x09\xc2\x41\x80\x94\xcb\x65\x0e\x1e\x3c\xc8\xea\x55\xab\
+\x09\x85\x42\x3e\xc8\x14\xc2\x60\xed\xda\xb5\xbc\xf0\xfc\x0b\x2e\
+\x63\x29\x02\x34\x70\xa7\x32\x48\x75\xed\x6e\x7c\x65\xf0\x72\x00\
+\x81\xc2\x14\x3d\xed\x7d\x36\xa4\x83\x03\x89\x9e\x00\x69\xe2\x88\
+\xf3\xfc\x6b\x6e\xa7\x69\x7c\x88\x91\x03\x8a\x7c\x7d\x0c\x15\x3b\
+\x4a\xbc\xf7\x30\xb9\xd0\x71\xec\xfa\x04\x63\x87\x8f\xf8\x51\x83\
+\x10\x20\x6d\x85\x30\x4d\xe6\xf5\xf5\xb1\x73\xe7\x2e\x6c\xdb\xe6\
+\xba\xeb\xae\xa3\xa7\xa7\x27\xd0\x51\x6c\x18\x06\xad\x56\x8b\x46\
+\xb3\xe1\x03\xb5\x7a\xa3\x4e\xb3\xd1\x24\x64\x59\x84\xc3\x61\x84\
+\x61\xf8\x3c\xbf\x65\x59\x44\x42\x61\x0c\xd3\x08\x60\x98\xd7\x5e\
+\x7d\x95\xca\x4c\x85\x15\x2b\x56\x60\xb7\x6d\x5f\xb1\xa5\x54\x54\
+\x66\x2a\x8e\x65\xb1\x25\xc2\xd1\x34\x0d\xbb\xa8\xae\x01\x15\xaa\
+\x53\xad\xac\x13\x61\x92\x39\x13\x5e\x67\x45\x18\xa8\x57\xfb\x06\
+\x0a\x26\x34\x66\xb0\xd5\x84\xa3\x87\x62\x34\x1b\x16\x4b\x2e\xc8\
+\x51\x9b\x59\x43\xa5\xa8\xb0\x43\x4d\x96\x5c\x54\x64\xe9\x25\x8f\
+\x31\x79\x74\x37\x33\xf9\x32\x96\x05\xf5\xd2\x34\xf5\x62\x89\x70\
+\x28\x44\x28\x6c\xb2\x73\xe7\x4e\x26\x27\x26\xb8\xe3\xce\x3b\x89\
+\x27\x12\x58\x86\x41\xa9\x54\xa2\x5c\x2e\x63\x48\x89\x85\xa0\x56\
+\xaf\xd1\xa8\x56\x49\x44\xc2\xc4\x42\x61\x0a\xcd\x26\xf5\x46\x03\
+\x25\x25\x91\x48\x84\x70\x24\x02\xe1\x30\x84\xc3\x44\x92\x49\x52\
+\xe9\x34\xf1\x58\x8c\x7a\xad\xc6\x9e\xbd\x7b\x19\x1c\x1c\x24\x97\
+\xcb\xd1\x6e\xb7\xfd\xb8\x7d\xcf\x9e\x3d\x3c\xfb\xec\xb3\x9a\xdb\
+\x98\x8d\xe8\x03\x3d\x89\x82\x4e\x53\x4c\x17\x59\xd4\x49\x30\x05\
+\x13\x4a\x67\x81\x05\xa0\x8b\xe9\xea\x28\xba\x07\x8e\x8f\x3d\xfb\
+\x20\xe7\x5d\x52\xc1\x6e\x35\x69\x54\x0d\x2e\xbc\xf3\x23\x1c\xd9\
+\x93\xe4\xd5\x1d\x11\xbe\xf7\x5f\x17\x30\xb0\xfc\x2e\x56\x6e\xfe\
+\x10\x7d\x6b\x05\xe9\xbe\x34\xc5\xc9\x3c\x33\xe3\x43\xb4\x6a\x87\
+\x99\xdf\xdc\xcf\xe0\x9a\x21\x46\x8e\xef\xe7\xfe\xfb\x7e\xc4\x45\
+\x1b\x36\x11\x13\x06\x21\x29\x19\xc8\x66\x89\x9a\x26\xc2\xb6\x49\
+\x67\x32\x64\xfa\xfb\x91\xb6\x4d\xa3\xd1\xc0\x02\xa2\xa1\x10\x48\
+\x49\xb9\x5a\xa5\x50\x2e\x53\x29\x16\xa9\x34\x9b\x94\x6d\x9b\xe9\
+\x48\x84\x44\x7f\x3f\x85\x5a\x8d\x89\x89\x09\x2e\xbd\xf4\x52\x2c\
+\xcb\x42\xa1\x68\x35\x5b\x1c\x3a\x74\x88\x6d\xdb\xb6\x31\x3c\x3c\
+\x4c\x2c\x16\x73\xc0\xa4\xec\x22\x79\x3c\x21\x4b\x02\x39\x7f\xed\
+\x41\x81\x14\x32\x5d\x2d\xef\x67\x89\x0b\x20\xd8\xdb\xa7\xc5\xbf\
+\x5e\xa8\x33\x7a\xe0\x20\x23\xfb\x0e\x20\x42\x16\xa9\x9e\x1c\x1b\
+\xae\xbb\x94\xda\xcc\xf9\xd4\x66\x60\xc5\x46\x45\xef\x60\x14\xa5\
+\xfa\x38\xb2\xb7\x49\xab\x15\x26\x9e\x5e\x40\x32\x3b\x88\x95\xbe\
+\x0c\xd3\x82\x9e\x95\x33\xac\xfc\xe0\x09\x7e\xfa\xc3\x2f\x31\x79\
+\xe8\x20\xbf\x71\xd5\x55\x64\xe3\x49\xec\x76\x1b\x4b\x08\x22\x96\
+\x45\xbb\xd9\xa4\xdd\x68\x38\x15\x37\x42\x60\xb7\xdb\xc8\x46\x03\
+\xbb\xdd\x26\xa7\x24\xb9\x70\x18\x29\x04\xed\x70\x98\x6a\xbd\xce\
+\x54\x65\x86\x57\x9f\x7b\x8e\xc7\x47\x46\x58\xb4\x62\x05\x8b\x16\
+\x2d\x42\x08\x87\x61\x3c\x7c\xf8\x30\x0f\x3f\xfc\x30\xc7\x8e\x1d\
+\x23\x1a\x8d\x62\x9a\x96\xdf\x78\xaa\x82\x5b\x3f\xa0\x08\x72\x96\
+\x55\x24\x58\x8e\xd6\xd5\x28\xa3\x84\x3a\x8b\x5c\x80\x36\x1a\x46\
+\x47\xcb\x81\xd1\x30\xcd\x26\xc5\xb1\x31\x5e\x7f\xf2\x49\x12\xd9\
+\x0c\x97\xdd\x22\x49\x26\x86\x38\xf1\xea\x3e\xa0\xcd\xc2\x05\x2d\
+\x92\xd9\x04\x43\xaf\x9f\xa4\x5e\x4c\x43\x74\x39\x6d\xce\x63\x6a\
+\xa4\x9f\x56\x73\x1d\x98\x5f\x60\xcf\xa1\xbf\xa3\xb4\xde\x20\x51\
+\x9d\x44\xd8\x2d\x9a\xd2\xa1\x89\xa5\x6d\x83\x6d\x23\xa5\x8d\x6a\
+\xdb\x28\xdb\xf9\x91\x52\x22\xdb\x6d\x94\xf4\xee\x93\x28\xdb\x26\
+\x27\x6d\x8c\xa9\x29\x1a\xe3\xe3\xa4\x36\x6d\x22\x12\x89\xd0\x68\
+\x34\xd8\xb3\x67\x0f\x8f\x3f\xfe\x38\x47\x8e\x1c\x21\x91\x4c\x12\
+\x72\xa3\x8c\x59\xc9\x2b\x37\xe1\x15\x74\x7f\x9d\xde\x86\xb9\xd2\
+\xc6\x81\x26\xd4\xb3\x06\x04\xa2\x27\xbc\xb4\x4c\x98\xcf\xf8\x75\
+\x62\x61\x0f\x31\xbf\xfa\xe8\x83\x9c\xb7\x69\x94\x5a\xb9\xc4\xc8\
+\xfe\x03\xa8\x96\x4d\xb3\x5e\xa3\xd9\x6c\x3a\x48\x3e\x14\xc2\x32\
+\x0d\xc2\xd1\x18\xd1\x44\x82\x85\xeb\x36\xb0\x70\xf5\x87\x99\x9a\
+\x58\xcb\x8b\xe6\xa7\xf9\xe1\x91\x29\xae\xe8\x7b\x95\x65\xf1\x03\
+\x44\xa6\x0e\x23\x6d\x89\xdd\x56\x8e\x70\xa5\x8d\xec\x52\x00\xff\
+\xb6\xdd\xb9\x7f\xa2\xd1\xe0\xa5\xf1\x71\xd6\x47\x22\xa4\x86\x86\
+\x38\x31\x34\xc4\xc1\x43\x87\xd8\xb1\x63\x07\xa3\xa3\xa3\xa4\x52\
+\x29\x0c\xc3\xe8\xb0\x97\x82\x00\xb6\x09\x94\xb8\x69\xcd\x1f\x52\
+\x06\x53\xda\x7a\x01\x8c\xe8\x2e\x4b\x17\x67\x0b\x06\x10\xc1\x24\
+\x90\x40\xb8\x4d\xa0\xb3\xc7\xb8\x81\x62\x66\x72\x8a\xdd\x8f\x3c\
+\xda\x35\x55\xac\x53\x80\xd1\x6e\x34\x68\x01\xd5\x4a\x15\x26\x27\
+\x19\x39\x7a\x94\xc4\xae\x67\x58\xb4\x76\x13\x57\xde\x7c\x2b\xe3\
+\xe3\x1f\xe0\x47\x7b\x2e\x24\x31\x32\xc2\xca\x99\x47\x59\x91\x7e\
+\x9d\x6c\xe1\x67\x84\xdb\x05\x54\xbb\x89\x6c\xdb\x48\xdb\x49\x36\
+\x75\x76\xbe\xab\x00\xd2\xa6\xd5\x6a\xb3\xab\x56\xa3\xda\x68\x70\
+\xc5\xbc\x79\x8c\x1d\x3d\xca\xbf\x7e\xe7\x3b\x4c\x14\x0a\xd4\xea\
+\x75\x52\xc9\x14\xc2\x34\x7c\x20\x13\x28\x21\xef\x4e\x78\x75\x36\
+\x7e\x47\xdd\xbb\xd2\xdc\x73\x65\x08\x95\x50\x67\x51\x59\x78\xc0\
+\x27\xea\xee\x80\xae\x2c\x61\x27\x33\x48\xd7\x85\xf1\x52\xaa\xca\
+\x9b\xc9\xe1\xa6\xe0\xbc\x8b\x5e\x9e\x9c\xe2\xb5\x27\x1f\x61\x62\
+\xff\x5e\x56\x5f\x79\x05\x8b\xef\xf8\x00\xca\xbc\x92\xe1\x97\x3f\
+\xca\xe8\x78\x81\x54\xfe\x49\x7a\x4b\xbb\xc8\x85\x4f\x92\xb0\x27\
+\x30\x2b\x53\xa8\x4a\x01\x51\x2b\x21\x64\xdb\x2d\x09\x13\xb4\x25\
+\xec\x93\x36\x87\xec\x36\x0b\x85\x60\xbc\x58\xe2\x67\xa1\x10\xd5\
+\x79\x69\xe2\x3d\x49\x12\x2a\x45\xb3\xd2\x70\x12\x51\xaa\xd3\x5e\
+\x26\xe6\x6a\x6c\xd5\x62\xff\xc0\xd0\x8a\x80\x35\x50\x81\xd1\xb7\
+\x4a\x2f\x36\x3a\x6b\xea\x01\x7c\x9a\x53\x2b\xbe\x0c\x74\x0c\x74\
+\x1c\x9e\xec\x46\xc6\x74\x3a\x6d\xfd\x52\x71\xa1\x55\xed\xba\x1a\
+\xe3\x59\xe0\xf1\x91\x51\xc6\xbf\xff\x03\x0c\xeb\xc7\x9c\x77\xd1\
+\xe5\x44\x52\x6b\x60\xe1\x66\xf2\xbd\x1f\xe3\xc4\xc9\x8f\x62\x95\
+\x4f\x92\xa9\x1f\xa2\xa7\xf5\x1a\xe9\xea\x3e\xc2\xa5\x13\xa8\xe9\
+\x31\xc8\x4f\x60\x19\x2d\xa6\x65\x89\xa7\xec\x2a\x93\x18\x84\x12\
+\x59\x4e\x0e\x0c\x10\xdf\xfc\x71\xce\x8b\x5e\x8b\x65\x8c\x81\xbd\
+\x8f\x56\xfd\x00\xf5\x99\x61\x86\x5f\x7b\xdd\x25\x9d\x64\xa7\xe7\
+\xc0\xff\xb6\xba\x89\x97\xc1\x56\x20\xbd\x32\xaa\xcb\x35\xfa\x5b\
+\xc0\xab\x3e\x3a\x5b\x92\x41\xdd\x7e\x31\x38\x7d\x43\x06\x4b\xa5\
+\xb4\x4e\x60\x9d\x3f\x57\xdd\x54\x6b\x17\xa8\xd4\x9b\x37\xda\xad\
+\x16\x87\x9e\x7b\x1a\xcb\x78\x86\xde\x81\x41\x56\x7d\x70\x0b\x62\
+\xe9\x00\x95\x99\x01\xf2\xd3\x03\xec\x2b\x6d\xa6\x59\xca\x62\x36\
+\x2a\xc4\x6b\xc7\x09\x4f\x1e\x40\xd9\x0d\x0e\x17\xe1\xf0\x58\x13\
+\x61\x16\x18\x59\xd4\xe2\xe2\xbb\x36\x70\xfe\xc5\xd7\x70\xe8\xa5\
+\x08\xa1\xb0\x81\xe2\x36\x62\x89\x36\x99\xbe\x22\xf9\x13\x8f\x71\
+\xf2\xf0\x53\x4c\x0f\xed\x63\xe8\xc0\x41\x64\xbd\xae\xf5\x2d\xcc\
+\x51\x21\x4c\x97\x6b\x08\x00\x41\x1d\x2f\x74\xbb\xc5\xb3\x01\x04\
+\x2a\x8d\x0b\xe8\x4a\xef\xaa\xae\x2e\x21\xbd\x71\x6b\xce\x36\x2f\
+\xd5\x29\xc7\xf6\xe7\x0a\xa8\x20\xaa\x16\x80\x6c\xb7\x69\x28\xc5\
+\x89\xc3\x47\x38\x71\xe8\x10\xc2\xb2\x48\xf4\xcc\x23\xdd\xbb\x90\
+\x74\xdf\x20\xf1\xe5\x03\x58\xd1\x05\xd8\x0c\xd0\x56\x1b\x90\xf6\
+\x3c\xb2\x07\x5e\xe6\xd7\xd6\x0f\x50\x2b\x0b\xa6\x46\x2c\xa6\x87\
+\xfb\x79\xe2\x70\x04\x25\x05\x89\xb4\x22\xd3\x2b\xa8\xcf\x84\x38\
+\xba\xb7\x97\x56\xf3\x4e\x72\x7d\x5b\xb8\xf0\x8e\x93\x2c\x1d\xba\
+\x9f\x57\x9f\xbc\x9f\xd1\x23\x47\xe8\x50\xfb\xaa\xcb\xb2\x05\xbb\
+\x81\x3a\x43\x28\xba\x9a\x62\x82\x55\x14\xef\x7f\x2a\x38\x30\x0e\
+\x45\xa3\x41\x03\xa0\xc8\x4b\x83\x77\x0f\x72\xd2\xad\x80\x26\xe8\
+\xb9\xe2\x6c\x3d\x79\x26\x03\xa1\x94\xbb\xe3\x5a\x6d\x8a\x27\x4f\
+\x52\x3c\x39\x8a\x52\x2f\x3a\x11\x45\x38\x42\xba\xb7\x8f\xbe\x45\
+\x03\x64\x7b\x7b\x90\xc5\xfd\x1c\x7f\x3e\x45\x38\x91\x22\x62\x85\
+\x49\xcf\x5f\x42\x24\x39\x88\xdd\x1e\x20\x14\xff\x00\xd5\x72\x9a\
+\x74\x4e\xb0\xf1\x1a\x85\x15\x0a\xf3\xd2\x23\xfd\x3c\xf7\xd0\x00\
+\x03\x2b\x37\x72\xdd\xff\xfc\x51\x8a\x27\xb7\x31\x76\xec\x75\x46\
+\x0f\xee\x63\x78\xdf\x7e\x5a\x8d\x46\x30\xb3\x17\xe8\x25\xf4\xd2\
+\xbf\x02\x0d\x42\xfa\xd4\xb0\x38\x3b\xa8\x60\xa7\xc6\x45\xa8\xe0\
+\x90\x87\x40\x57\xaf\xeb\x06\xf4\x96\x3d\xbc\x9e\x3b\x85\x56\x0f\
+\x40\x57\xbb\x98\x4b\x96\x74\x51\xab\x4a\xe8\xe5\xda\x72\x96\xe5\
+\xd1\x71\x46\xbb\x51\x67\xea\xc4\x71\xa6\x86\x8e\xf9\xe3\x69\x0c\
+\x61\x62\xb7\xdb\x81\x1d\x18\x4b\xf7\x70\xfe\x95\x37\x92\x9e\x7f\
+\x25\xb5\x99\x2d\x3c\xf6\x9d\x1c\x86\x09\x33\x05\x90\x36\xbc\xf0\
+\x50\x88\xdd\x4f\xac\x63\xf5\x25\x2b\xe9\x1d\x28\xb1\xea\xe2\x09\
+\xc6\x8f\x3d\xc0\x91\x97\x1f\x61\xf2\xd8\x71\x26\x46\x46\xba\xe6\
+\x1a\x76\x98\x71\x81\xdd\xe9\x33\x40\xc3\x47\xf2\xac\x50\x00\xa7\
+\x40\xc2\x1f\xe3\x4a\x70\x50\x93\x0e\x0e\xd5\xac\x5d\xe2\x0d\x89\
+\xf6\xb2\x79\xda\x6b\x48\x15\xcc\xa7\x4b\x6d\x17\xc9\xd9\x53\x45\
+\xf4\x41\xd3\xcc\x39\xdf\xa7\x43\xcd\xd9\xb2\x1d\x9c\x14\xa2\x14\
+\x33\xf9\x09\x5e\x79\xe8\x5f\x48\x65\x1f\x64\xfd\xd5\x57\xb3\xee\
+\xb2\x2b\x68\x36\xaf\xe5\x85\x6d\x7d\xa4\x72\x8a\x5f\xf9\xbf\x25\
+\xa5\x89\xa3\x1c\x7a\x69\x98\xe9\xd1\x7e\xc6\x8e\xad\x40\x18\x9f\
+\x65\xe5\xa5\x9f\xe4\xe2\xdb\x5e\xe6\xa5\x87\xbe\xc6\xfe\x67\x9f\
+\xa5\x56\xa9\x76\x35\xb8\xb8\x35\x04\x73\x25\xca\xce\x06\x10\x18\
+\x28\x6f\xf6\x26\x84\xfb\xa2\xf3\x06\x43\x11\x14\x8a\x2f\x35\x9d\
+\x5c\x97\x5d\x8f\xe9\x6e\x1d\x93\xb3\xbb\x8d\xb4\xb2\xac\x40\xd5\
+\xed\xac\x71\xb1\x04\x53\xb5\x74\x0f\x8a\x72\x6b\x10\x5a\x4d\xa6\
+\xc7\x27\x79\xe2\x5f\xfe\x15\xc3\xfa\x1f\x6c\xba\xee\x76\xae\xb8\
+\xe3\x77\x18\x3b\xbe\x99\xe2\x38\x08\xb5\x93\xbd\x4f\xfc\x35\xe9\
+\xbe\x01\x56\x5d\x7c\x23\xb9\xfe\xeb\x98\x1a\x59\xc6\xd1\x57\x6f\
+\x60\xf5\xa5\x0b\xc9\x0d\xfc\x7f\x3c\xfe\x9d\x7f\xf4\x47\xca\x74\
+\xbd\xf9\xac\x21\x16\xef\x56\x4d\xd8\x99\xef\x0c\x52\xf0\xd1\x8f\
+\x7e\x94\xc9\xc9\x49\x8e\x1d\x3b\xce\xb1\x63\x47\x69\xb5\x5a\x01\
+\x2b\x20\x08\x5a\x04\xa9\xa7\x90\xbb\x5c\x47\xb0\x7f\x50\x05\x6a\
+\xe9\xba\xe7\xff\x05\xe6\x02\xcd\x72\x0b\x9e\x0d\x9e\xdd\x96\xe5\
+\x4f\x20\x21\x98\xd2\xf5\xdc\x87\xdd\x6a\xb1\xfb\xd1\xad\x54\xa6\
+\x8e\x73\xc5\xaf\xff\x1f\x24\x32\x6b\x39\x79\x78\x8a\xf1\x63\x07\
+\x18\x3b\xba\x9f\xa3\x2f\x3f\x4d\xdf\xe2\xff\x97\x75\x57\xdf\xce\
+\x79\xeb\x3f\x45\xbd\xb2\x81\x0f\x7f\xf2\x33\x1c\x78\x61\x07\xc7\
+\x5f\xdd\x1f\xa8\x05\xea\x06\xc4\x3a\xaf\x70\x16\x44\x01\xce\x17\
+\xb9\xf6\xda\x6b\x81\x4e\xe5\x6e\xa9\x54\xe6\x85\x17\x5e\x60\xd7\
+\xce\x5d\x4c\x4e\x4d\x6a\x03\x17\x3a\xe0\x50\x11\x1c\x98\xd0\x4d\
+\x9d\x2a\x8d\x20\xf2\x98\x00\x5d\x01\x82\x63\x64\x35\x4c\x0a\x41\
+\xa5\x92\x5d\xc3\x19\xf4\xf2\x2d\x08\x8c\xb1\xd1\x3f\x4b\xa3\xd1\
+\xe0\xb5\x5d\xcf\x51\x2b\xfd\x01\x03\x6b\xce\xe7\xf8\x6b\xfb\xfc\
+\xcf\xd8\x6a\x36\x39\x71\xf0\x10\x63\xc7\xff\x86\xf5\x57\xbd\x46\
+\xef\xd2\x2b\xd8\xbf\x2b\x44\xa5\x50\xc6\x6b\x15\x51\x2a\x48\x86\
+\x49\x6f\x7e\x51\x20\xac\x7d\x37\x58\x9a\x33\xbc\xf6\xee\xdd\xab\
+\x66\x75\xfc\x6a\xbb\x0b\x60\xcf\x9e\x3d\xec\xd8\xb1\x83\x83\x07\
+\x0f\xd1\x68\xd4\xa9\xd5\x1c\xee\xdf\x8b\x22\xfc\xe1\x90\x6a\xae\
+\xea\xdb\x0e\x23\xe7\x44\x18\xc1\x69\xe1\xc1\x8a\xdd\xce\x40\x48\
+\xa1\xf1\x10\xdd\xa3\xec\x83\x25\x5b\xc1\x2a\x9d\x40\xab\xb7\x74\
+\x89\x29\xe9\x94\xbe\xd9\xf6\x6c\x66\x13\x70\x2a\x91\x0c\x41\xb3\
+\x56\x0f\xce\x1f\xec\x9a\x63\xe4\x09\xfe\x27\xf7\xfe\x04\x14\x8c\
+\x8e\x8e\x02\xef\xe3\x39\x81\x00\xeb\xd7\xaf\xf7\x3f\xfc\x9e\xdd\
+\xbb\x55\xb0\x87\xde\xb9\xaa\xeb\xd7\xaf\x67\xdd\xfa\x75\xa0\x60\
+\x7a\x7a\x9a\x23\x47\x8e\x70\x72\x74\x94\x91\xd1\x51\x0e\x1c\x38\
+\xc0\xc4\xc4\x44\x40\x48\xb3\x48\x14\x8d\x5d\x54\x5d\xe6\x5f\x31\
+\x3b\x04\xeb\x9e\x0c\xa2\xe6\x18\xd7\xa2\x54\x70\x27\xce\x6a\xe6\
+\xec\x9a\x5b\xe0\xe5\x2b\x02\xed\x62\xae\xa1\xb7\x9b\xb6\x86\x7c\
+\xdc\x91\x71\xee\xae\xf7\x46\xc8\xe9\x6e\x4f\xaf\x18\x3a\x0b\xa8\
+\xe0\xce\xda\x70\xc1\x05\xe2\x8e\x3b\xef\x14\x7d\xbd\xbd\xc6\xd4\
+\xe4\xe4\xbf\x35\x2d\xeb\x2b\x7f\xfc\xc7\x7f\x9c\xd3\x95\x22\x97\
+\xcb\x91\xcb\xe6\xe0\x42\x45\xab\xdd\xa6\xd1\x6c\x3a\x79\xf8\x43\
+\x87\x78\xfa\xe9\xa7\x79\xf1\xc5\x17\xbb\x84\xaf\xba\xce\x04\xe8\
+\x1a\x25\xe7\x0d\x8d\xea\x2e\xbc\xd0\xa7\x81\x30\x57\x31\x46\x30\
+\xa2\x10\xba\x9f\xee\x9a\x2b\x30\xab\xf5\x5b\xea\x60\xb2\x6b\x0e\
+\x82\x3b\x1e\x5f\x2f\x10\xf1\x8f\xcd\x11\xef\x7e\x7b\xf8\xbb\x36\
+\x98\xf8\xb6\x5b\x6f\x8d\x18\xa6\x99\x32\x4c\xf3\xdf\x98\x86\xf8\
+\xaf\x86\x61\x46\x84\x10\x01\x22\xe8\x0b\x7f\xf8\x85\x2e\xbe\x7c\
+\x8e\x49\x63\xc0\xd4\xd4\x14\xbb\x76\xed\xe2\x85\x17\x5f\xa0\x90\
+\x2f\x30\x33\x53\xa1\x52\x9d\x99\x63\x32\x68\xf0\x9c\xa1\xe0\x54\
+\x70\x3d\xcc\xd4\x14\xc1\xc5\x04\x92\xee\x53\x4a\xba\x40\xa9\xc7\
+\x39\xb8\xa3\xe1\xbc\x71\xf5\xde\x70\xea\x59\xc0\x54\xab\x05\x08\
+\xcc\x4c\xd6\xba\x8a\x3d\x8b\x70\xdf\xbd\xf7\xa2\x14\x8c\x8d\x9d\
+\x3c\xe3\x2e\xe0\x8c\xbd\xf0\x6d\xb7\xdd\x66\x6c\xdd\xba\x55\xde\
+\x74\xe3\x4d\xd1\x48\x2c\xb2\xc2\x10\xc6\x47\x85\x10\x7f\x60\x59\
+\x66\x64\x16\x20\xeb\xea\xaf\xd7\x51\xfc\x17\xbf\xf8\x47\xc1\x69\
+\xdb\xba\x32\x28\x68\xb5\xda\x0c\x0d\x1d\x67\x68\x68\x88\xf1\xf1\
+\x71\x0e\x1c\x38\xc8\xbe\xfd\xfb\x68\xb7\x5a\xc1\xe9\xe0\x7e\x2d\
+\x82\x0a\xe4\x15\xfc\xbc\x84\x9a\xbb\x50\x23\x78\xd2\x89\xb3\xbd\
+\x75\xa5\x72\xac\x83\x17\x91\x48\x37\xae\x0f\x4e\x34\x0f\x64\x02\
+\x5d\x0b\x10\x1c\x20\x11\xc4\x35\xf7\xdd\x7b\x1f\x4a\x28\xc6\x4e\
+\x8e\xbd\xff\x14\xe0\xd6\xdb\x6e\x33\xee\xdf\xba\x55\x02\xdc\x71\
+\xc7\x1d\x1f\x36\x4c\xe3\x0e\x21\xc4\xa7\x0c\xc3\xcc\x18\x62\x76\
+\xbf\x43\x80\xf8\xe8\x02\x79\xfe\x64\x6e\x6d\xee\xff\x9f\xfc\xc9\
+\x9f\xcc\x1a\x23\xe3\x25\xcf\xa4\x72\x1a\x3e\xda\xed\x36\x85\x42\
+\x81\x5d\xcf\xee\xe2\xc9\x27\x9e\x64\x6c\x6c\x2c\x70\x1e\x41\x37\
+\x01\x75\x6a\x61\x04\xcf\x30\xf0\x4f\x3d\x11\x32\x38\x77\x30\x70\
+\xba\x59\xd7\x99\x87\x4a\x06\x7a\x1b\x65\xd7\x89\x67\xfe\x61\x17\
+\x6e\x26\x51\x4a\xc5\x7d\x5b\xef\x03\x05\x63\x63\x41\x05\x50\x4a\
+\x89\xfd\x8f\x3d\x96\x4e\xf6\xf6\xa4\xc3\x89\x64\xb5\x77\xf9\x8a\
+\xbc\x10\x42\xbe\x27\x14\xe0\xd6\x5b\x6f\x4d\xdf\x7f\xff\xfd\x25\
+\x77\xf7\x7f\xda\x0a\x99\x97\x80\x71\xb3\x21\xc4\x7c\x61\xe8\xd3\
+\x31\xbc\xe4\xad\x60\x56\xbb\x58\x80\x14\xd2\xd1\x79\x37\x8b\x28\
+\xfd\xbf\xff\xec\xcf\xfe\x3c\xe0\x1e\x4e\x65\x2d\xf6\xec\xde\xc3\
+\x8e\x1d\xcf\x70\xf0\xe0\x61\x2a\x95\x19\x8a\xa5\x22\x4d\xb7\x87\
+\x40\x37\xcd\xdd\x8a\xe0\x09\x1d\x4d\x58\x9d\x91\x6e\xce\xf1\xb5\
+\x7e\x37\xd0\x5c\x5c\x85\x0c\x0e\x99\x54\x1a\x23\xa9\xf4\x1a\x09\
+\x8d\xcf\xb8\xf7\xbe\xfb\x40\x29\x7f\x90\x85\x78\xe2\x49\xf3\xe6\
+\x7b\x3e\xd7\x27\xda\x8d\xeb\x0c\xd5\x5c\x25\x22\x89\xd7\x6d\xac\
+\x5d\x0b\xd7\xae\x1b\x12\x42\xd8\xbf\x50\x05\xb8\xe5\xe6\x5b\x22\
+\x0f\x3c\xf8\x40\x03\xe0\x96\xdb\x6e\xfd\xdf\x2d\xc3\xbc\xd1\x30\
+\x8c\xcb\x10\x22\xee\x56\x4b\x13\x6c\x76\xed\x08\x7e\x56\x5c\xaf\
+\x82\x39\xf2\xd9\x08\x3d\x38\xbe\x55\x2a\x85\x21\x0c\x96\x2f\x5f\
+\xc6\x85\x17\x5e\xe8\x87\x5c\xeb\xd6\xad\xeb\x4c\xef\x56\xcc\x9a\
+\xcd\x33\x9d\xcf\x73\xfc\xd8\x31\xc6\xc7\xc7\x39\x76\xec\x18\xbb\
+\x77\xef\xe6\xe4\xe8\x68\x67\x54\x6d\x57\x0e\xa1\xc3\x23\x74\x15\
+\x76\x28\x15\x18\x71\x1f\xc0\x10\xdd\xe7\x21\xf8\x84\x92\xf3\xda\
+\xb3\xb3\x98\x9d\x5c\xe8\xbd\xf7\xde\x07\xc0\xf8\xf8\x18\x4a\x29\
+\x6e\xf9\xc0\xa6\xdb\xa3\xa2\xf6\x09\x53\xd5\x97\xce\xb4\x12\x7f\
+\x6b\x1b\xe1\x1f\x2f\xbd\xf8\x92\xf2\x7b\xc6\x05\xdc\x72\xcb\xad\
+\x5f\x32\x4d\xe3\xd7\x0d\x21\x06\x95\x10\xb1\x4e\x7f\xa5\x98\x8b\
+\x1b\x74\xf7\xbf\x98\x2d\xf8\x80\x6f\x26\xd0\x7a\xad\xe6\x12\x8a\
+\x52\x2c\x5b\xbe\x8c\xcb\x2e\xbb\x6c\xd6\x67\x32\xdc\x3e\x40\xd3\
+\x34\x39\xef\xbc\xa5\x9d\xd7\x14\xba\x95\x01\x29\xdb\xb4\x5b\x6d\
+\xda\xb6\xcd\xeb\xfb\xf6\xf1\xd8\xa3\x8f\xf2\xec\xae\x5d\xb4\x6c\
+\x89\xd0\xa7\x97\xca\x2e\x1e\xc1\x3f\xf8\x42\x06\x07\x5b\xf9\x55\
+\x4f\x4a\x43\xfd\xfa\x78\xb9\x2e\xab\xa2\x9d\x87\xe4\xad\x7b\xef\
+\xbd\x0f\x85\x64\x62\x7c\x82\xfe\x4c\x92\x0f\xad\x4c\xee\x17\x28\
+\x2b\xdf\xcc\xfd\xf1\xa2\x4b\xb7\x7c\xfb\xad\xc8\x64\xf4\xb5\xd7\
+\xa2\x91\x64\x22\xdb\xb3\x78\xc9\xc9\x33\x12\x06\xde\x78\xe3\xf5\
+\x71\xc3\xb0\xbe\x60\x18\xc6\x67\x84\x10\x49\x50\xa2\x63\xaa\x45\
+\xe7\xe8\x56\xe1\x76\xcc\x0a\xad\xd0\x45\x68\xf5\x72\x5e\x85\x8f\
+\x50\x01\x26\x0c\x9d\x0e\xd6\xf2\xe6\xdd\xd9\xbd\x0d\x1b\x36\xcc\
+\xad\xd9\x02\x7f\x72\xe8\x89\x13\xc3\x18\x86\x89\x69\x1a\xf4\xf5\
+\xf5\x05\x4a\xb3\x0d\x61\x12\x0a\x1b\x84\x94\x62\xf3\xa6\x4d\x6c\
+\xde\xb4\x09\x50\xe4\xf3\x05\x9e\x79\xe6\x19\x5e\x7c\xe9\x45\xa6\
+\x26\xa7\x9c\xa9\x23\xa5\x62\x90\xb6\x65\xf6\x79\x03\x5e\x16\x74\
+\x16\x4e\x51\x81\xd0\xc6\x1b\x23\x3d\x37\xe9\xeb\x30\x4b\x2c\x48\
+\x27\xb9\x68\xa1\x20\x2e\x4a\x2b\xa7\xda\xfd\xff\x3d\x32\x6f\xc1\
+\x03\x6f\x55\x3e\xe1\x78\xdc\x34\x4d\x71\x69\xfe\xf8\xd1\xf1\xdc\
+\x92\xf3\x76\x9e\x16\x05\xb8\xf6\xda\x6b\xc3\xa1\x50\xa8\x57\x29\
+\xf5\xbf\x08\x21\xfe\xd0\x4f\x5a\xab\xce\x44\x5f\xe8\xcc\x52\xf2\
+\x67\x04\x6a\x8f\xd1\x07\x40\xa2\x1d\xe1\x8a\x9c\x63\x72\x68\x37\
+\x00\xf3\xfa\xed\xb5\x38\x31\x16\x8b\xbd\xa1\x71\x13\x78\x53\x3f\
+\x04\xc2\x10\xe4\xf3\x79\x7f\x72\x88\x94\x12\xdb\x2d\x0d\xef\xf3\
+\xce\xf9\x71\x5f\x3b\x9b\xcd\x70\xcb\x2d\xb7\x72\xcb\x2d\xb7\x60\
+\xb7\xdb\x0c\x0d\x9f\x60\x64\x64\x94\xb1\x93\x63\xec\xd9\xbd\x9b\
+\x9f\xed\xfe\x99\x5f\xa9\xac\x02\x8c\x9e\x98\xfb\x54\x11\x9f\x96\
+\xd6\xe6\x03\x48\xc5\xa9\x66\x41\xc4\x2c\x93\x65\xbd\x16\x7d\xd6\
+\x38\xcd\x76\xef\x64\x43\xc5\xee\x5d\xb4\x62\xe5\xd4\x5b\x95\xd5\
+\xbc\xa5\x4b\x2b\x85\xa1\x63\x4d\x93\xf6\xc7\x27\x0e\x1e\x1c\xee\
+\x5b\xb9\x72\xe8\x1d\x29\xc0\xf5\xd7\x5f\x7f\x99\x52\xea\x36\x29\
+\xe5\x17\xbd\x9d\xe5\xc5\xae\x9e\x1e\x08\x70\xd2\xbf\xae\x06\x08\
+\xf7\xdf\xfc\x0b\x83\x97\xfc\x11\x9d\x01\x0a\x10\x2c\xde\xe8\x3e\
+\x05\xdc\xf7\xb3\x22\x30\x7c\xc9\x5b\x13\x13\x13\x2c\x58\xb0\x60\
+\xee\x44\x14\x5d\xd3\xb9\x11\x08\x04\x86\x10\x08\xd3\xec\x80\x4d\
+\x21\x38\x79\x72\x94\x76\xbb\x8d\x6d\xdb\x2c\x5e\xb2\x58\xcb\x65\
+\x28\x0c\xd3\x64\xe9\x92\xa5\x2c\x59\xb2\x14\x25\x25\xb7\xdd\x7e\
+\x2b\xca\x56\xe4\x0b\x05\x7e\xfa\xd3\xa7\x78\xe4\x91\x47\x38\x71\
+\xe2\x84\x4e\xe7\x9d\xa2\x68\x45\xf9\x16\xef\xcd\x7a\x40\x73\x21\
+\xc1\xa2\x68\x1e\xc3\xae\xd2\xb0\x62\xc3\x6d\xa9\xf6\xbe\x5d\x2b\
+\x6d\x84\xa3\xaf\x19\xf5\xea\x7f\x08\x85\xc2\x37\x28\xa5\xbe\x21\
+\xc4\xec\x1c\xf3\xdb\xb1\x00\x3b\x63\xb1\x18\xe5\x99\x19\x84\x00\
+\xcb\x34\x11\xc2\x9b\xa7\xd7\xf1\xf5\x4e\x38\x27\x5c\x7b\x20\x02\
+\x47\xa8\x09\x81\xa9\x0a\x8a\x9e\x00\x00\x17\xf5\x49\x44\x41\x54\
+\xe6\xff\x82\x61\x20\xa2\xab\x4c\x4c\x0f\x0b\x99\x5d\x25\xec\xad\
+\x97\x5e\x7a\x89\xeb\xaf\xbf\xde\x6d\xd1\xd6\x53\xd1\x9a\xa5\x91\
+\x0a\x0c\xef\x35\x9c\xd1\xf4\xaa\xab\x31\xc5\xc3\x2c\x02\xc1\xb1\
+\x23\xc7\xb4\x93\x49\xe0\xbc\xa5\x4b\x03\x8f\x31\x0d\x13\x0c\xe8\
+\xed\x9d\xc7\x47\xee\xfa\x08\x1f\xb9\xeb\x2e\x3f\xd2\xd8\xb9\x73\
+\x27\x87\x0e\x1f\x22\x9f\x2f\x30\x39\x39\x41\xdd\xad\x15\x0c\x4c\
+\xff\x7c\x93\xfe\xff\x88\x69\xd2\x1f\xad\x11\x69\x4f\xb9\x35\x93\
+\x46\x49\xb6\xed\xd2\xdb\x47\x78\xa2\x88\x10\xca\xa2\x7d\xe7\xf8\
+\x81\xfd\x3f\x02\xa6\xdf\x89\x02\xa8\xdb\x6e\xbb\x4d\x4c\x4c\x4e\
+\x50\x2c\x14\x19\x3b\x79\x92\xb1\xf1\x71\x6a\xb5\x1a\x86\x0b\xb6\
+\x9c\x21\x8b\x02\x03\xa1\x75\x4b\x3b\x43\x12\x02\xe7\xfd\xd0\x19\
+\xc3\xaa\x6f\xd9\xee\x6a\x19\xfd\x74\xcf\x53\x7f\x47\xc1\x8e\x1d\
+\x3b\xb8\xea\xaa\xab\x02\xf7\x3b\xd3\xc6\x84\x7b\x58\x95\x44\x48\
+\xe9\x0a\xd8\x1b\xcd\xea\xf4\xfe\x4b\xbd\x4c\xdd\x35\x63\xdd\xef\
+\x78\xf4\xd8\x31\xff\x76\x3e\x9f\xe7\xc1\x07\x1f\xe4\xf3\xf7\xdc\
+\xe3\xba\xb9\x4e\x2a\x7f\xc3\x86\xf5\xac\xdf\xb0\x1e\x14\xe4\x8b\
+\x79\x46\x86\x47\x18\x1f\x9f\xe0\xe0\xc1\x03\x3c\xff\xfc\xf3\x0c\
+\x0d\x0d\x05\x94\xff\x54\x8e\x2b\x6a\x0a\x72\xc6\x14\xd4\xab\x60\
+\x45\x41\x49\xcb\x0c\x87\xcd\xb7\x2b\xff\x66\xa5\x12\x8a\x99\x44\
+\x42\x46\x73\x8d\x9d\xea\x59\x09\x3c\xfb\x8e\x30\xc0\xda\x75\xeb\
+\x58\xd9\x6c\x51\xaf\xd7\x28\xbb\x1d\xb8\xe5\x99\x19\x46\x47\x47\
+\x19\x1a\x1a\x72\x09\x17\xe5\xa2\x6f\xcb\xf1\xbb\xee\x45\x97\x5d\
+\x05\x22\xaa\xcb\x5e\xfb\xcd\x10\x81\x98\xfe\xcd\x79\xf1\xe9\xe9\
+\x69\xa6\xa7\xa7\xb9\xef\xbe\xfb\xd8\xb2\x65\x0b\xb9\x5c\x2e\x98\
+\xad\x43\x22\x85\x81\xc7\x97\x28\xb7\x3f\xd0\x19\xfe\xe0\x0d\x9d\
+\x94\x6e\x2c\x2e\xdd\x90\xed\xd4\xef\x9b\xc9\x64\x00\xf8\xbf\xfe\
+\xcb\x7f\x09\xdc\x7f\xf7\xe7\x3e\xd7\x89\x32\x50\x64\x33\x59\x32\
+\x99\x0c\x6b\xd7\xae\xe5\xaa\x0f\x7d\x90\xdf\xfc\xad\xdf\xc4\xb6\
+\x25\x7b\xf7\xee\x65\xdb\xc3\x0f\xb3\x63\xc7\x0e\x27\xe3\xd9\x2d\
+\x10\xcb\x22\x6e\x2a\xc2\x34\xa0\x5d\x07\x61\x60\xd1\x9c\x67\x9a\
+\xc6\x7c\x60\xe4\xed\x65\xe3\xe5\x3c\x43\x35\x07\x0c\xd5\xea\x11\
+\x52\xae\x7e\xc7\x0a\xd0\x6a\x36\x69\xb5\x5a\x98\xa6\x49\x36\x97\
+\x23\xd7\x93\x43\x4a\xc5\xf2\xe5\x2b\x68\x34\x6a\x34\x1a\x0d\xf2\
+\x79\x67\xd0\xe2\xd1\xa3\x47\x7d\xc0\xe5\x9d\xce\xed\x63\x87\x59\
+\x15\x03\xa0\x4f\x4a\xfc\x79\xd2\x21\xe5\x72\x99\x27\x9f\x7c\x92\
+\x25\x4b\x96\xb0\x62\xc5\x0a\xd2\xe9\xb4\x43\xd4\xb8\xd3\xc2\x85\
+\x3e\xaa\xc5\x3b\x57\xc0\x3b\x2f\x50\x3a\x67\x11\x2b\xa9\x66\x9d\
+\x4a\x32\xd7\xfb\xcc\xb5\xfe\xe2\x2f\xff\xd2\xbf\xfd\x1f\xfe\xe3\
+\x7f\x24\x16\x8d\x68\x23\xea\x1d\xb7\x61\x08\x93\xcd\x9b\x36\xb1\
+\x69\xe3\x46\x10\x90\x9f\xce\xf3\xec\xb3\xcf\xf2\xd2\x4b\x2f\x31\
+\x39\x39\xc9\xe4\xe4\x24\xf5\x5a\x8d\xa8\x29\x11\xed\x1a\xc8\xb6\
+\xa3\x04\x76\xf9\xbc\xa7\x5e\xdc\xf1\x9f\xae\xbf\xfe\xfa\xaf\x6e\
+\xdf\xbe\xfd\x05\x17\x93\x19\xdb\xb7\x6f\x7f\x43\x16\xd0\x34\xd4\
+\x45\x66\x63\x6a\x40\x88\x56\x58\x85\x33\x8b\xde\x11\x0f\x70\xfd\
+\xf5\xd7\xcb\x7b\xee\xb9\x5b\xb4\x9a\x4e\xc1\x64\x3e\x9f\x77\x7b\
+\xe4\xcc\x4e\x21\xa6\x74\x62\x5a\x69\xb7\xb1\x6d\x45\xbd\x59\x67\
+\x64\x64\x84\x43\x07\x0f\x71\xfc\xf8\x71\x1a\x8d\xc6\x1c\x8a\x70\
+\xfa\x67\xa2\x0d\x0e\x0e\x72\xde\x79\xe7\xd1\xd7\xd7\x47\x3c\x16\
+\xc7\x30\x4d\x2c\xd3\x99\x01\x2c\x9c\xf8\x30\xa0\x10\x52\x29\x3f\
+\x2a\xd0\xa7\x87\x75\x2f\xdb\xb6\x79\xe6\x99\x67\x1c\xc0\xf7\x73\
+\xac\xdf\xff\xfd\xcf\xa2\x57\xb2\x09\xad\xbc\xad\xdd\x6a\x33\x76\
+\x72\x94\xc9\x89\x09\x7e\xed\x43\x17\xb1\xda\x7c\x0d\xa3\x7a\xd2\
+\xc1\x00\xa9\xc5\x3c\x3e\x94\x6a\x7f\xe3\xde\xc7\x8f\x9e\x9c\x98\
+\x78\x19\x98\x01\xf6\x03\x0f\x6d\xdf\xbe\xfd\x45\x57\x3e\xf1\xed\
+\xdb\xb7\xfb\x67\xd3\x4e\x1d\x3d\x3a\x3f\x2c\x67\xfe\x36\x3e\xfe\
+\xe4\x9d\xca\x4a\xd8\xb5\xfe\xab\xff\xcf\xe4\xc0\xd2\x3f\xed\x06\
+\x82\x6f\x4b\x01\xee\xfe\xdc\xe7\x44\xb3\xdd\x02\x05\x3b\x77\xee\
+\x42\x29\x67\xf0\x52\x32\x95\x22\x93\xc9\x90\xce\x64\xfc\xd1\x6c\
+\x74\x15\x7f\x0a\x21\x28\x14\x8b\x0c\x1d\x3f\xc6\xa1\x43\x87\x19\
+\x1f\x1f\x3f\xe5\x85\x7e\xc7\x39\x6e\xcb\x22\x95\x4a\x23\x0c\x58\
+\x34\xb8\x88\xf9\xf3\x17\x90\xcd\x65\x9c\x76\x6e\xc3\x74\xc7\xbf\
+\x74\x46\x94\x79\x04\x8d\x2d\x65\x60\xaa\x97\xef\x4b\x9b\x4d\x1a\
+\x8d\x06\xaf\xbc\xf2\x0a\x27\x4e\x9c\x38\x2d\x29\xdb\xcf\x7e\xf6\
+\xb3\xda\x98\x18\xef\x30\x2c\xe7\x63\x2d\x4b\x9a\xac\xb3\xf6\x62\
+\x54\x46\x1c\x2b\x10\x8a\x33\x1d\x5e\xc1\x3f\x3e\x3d\xca\x7d\x8f\
+\x3f\xed\xbd\x44\x0d\x18\x07\x4e\x02\x79\x60\x8f\x10\xe2\x07\xdb\
+\xb6\x6d\xdb\x79\x78\xe7\xae\x70\x3c\x1d\xf9\xe3\x79\xf6\xe1\xcf\
+\x5a\x87\xb6\x26\xec\xc5\xd7\x34\xaa\xf3\x3f\xf8\xc5\xf4\xe2\x65\
+\x7f\xf1\x8e\x5c\x80\xad\x3a\x33\xff\xbc\x91\xea\xad\x76\x8b\xa9\
+\xa9\x29\x26\xa7\xa6\x5c\x5f\xaa\x88\xc7\xe3\x64\xb2\x19\x72\x99\
+\x1c\x89\x64\x02\xc3\x9d\xcb\x93\x4c\x24\x58\xbb\x76\x1d\xeb\xd6\
+\xad\x47\x29\xc9\xc4\xc4\x24\xc7\x8f\x3b\x99\xbc\x72\xb9\xec\x1f\
+\xfd\xf2\x8e\x14\xc3\x25\x80\x1a\x8d\x06\xe1\x90\xc5\xe8\xe8\x28\
+\xd1\x68\x94\x72\xb9\x44\x24\x12\x21\x91\x48\x90\x88\xc7\x89\x44\
+\x23\x08\xc3\xc1\x55\x76\xbb\xed\xef\x70\x21\x84\x3f\xb4\xaa\x54\
+\x2a\x92\xcf\x17\xa8\xcc\x54\xd8\xb7\xef\x75\x5a\xee\xe3\x4e\xc7\
+\xfa\xf2\x97\xbf\x1c\xf8\xfb\x33\x9f\xf9\xb4\x1f\x29\x34\x6d\x20\
+\x12\xea\xfc\x63\xbd\x40\x8f\x71\x8c\xdf\xd8\xb2\x02\xb8\x8a\x67\
+\x77\xbf\xca\xf8\xd4\x54\x0c\x58\xea\xfe\x00\x5c\xab\x94\xfa\x9d\
+\x7f\xf7\xc9\xdf\x68\x3c\xf5\xd2\xb3\xea\xd7\xb7\x2c\xee\xb3\x8e\
+\x3c\x60\x52\x3a\x81\x8a\x66\x1a\x0a\x31\xfc\x8e\x89\x20\xdd\x3c\
+\xfa\x04\x47\xf7\x09\x9c\x52\x51\x2e\x97\x29\x95\x4a\x1c\x93\xc7\
+\x90\x4a\x11\x09\x87\x49\xa7\x53\xe4\xb2\x39\x52\xe9\x0c\xe1\x70\
+\x18\xa5\x24\xd9\x6c\x96\x5c\x4f\x8e\x0b\x2f\xba\x90\x46\xbd\xc1\
+\xf8\xd8\x18\xc3\x23\xc3\x4c\x4c\x4c\xd2\x68\x34\x68\xba\xc5\x20\
+\xed\x76\xdb\x77\x19\xe2\x4d\x3a\x26\xbc\xd0\xd4\xb1\xf4\x8e\xc9\
+\x1f\x1e\x1e\x71\x47\xca\x84\x08\x85\xdc\x9f\x70\x98\x50\x28\x04\
+\x4a\xf9\x6e\x49\x4a\x49\xbd\x5e\x27\x9f\xcf\xd3\x6a\x36\x91\x4a\
+\x51\xc8\x17\x68\xb6\x5b\xbe\xf0\x3d\xec\x70\xba\xd7\x57\xbe\xf2\
+\xd7\x00\x2c\xed\xef\xe7\x93\xd7\x5f\x0c\x4b\xaa\xce\xee\x97\xae\
+\xd2\x95\x47\xe8\x8d\x37\xf9\xad\x0f\xae\xe0\xe2\xb5\xb7\xb0\x6b\
+\xef\x11\x0e\x9f\x18\xa1\x34\x53\x41\x29\x45\x26\x9d\x0e\x2f\x5b\
+\x3c\x18\xbe\xec\x82\x55\x5c\xd0\xd7\x26\x7a\x64\x2b\x8c\x3c\x0f\
+\x03\x17\x53\x90\x99\x5a\x48\x98\xaf\xbf\x63\x05\x50\x2a\x98\xf5\
+\xea\xd4\xea\xcd\xee\x8a\xd5\xc2\x7b\xea\xb5\x1a\xd5\x6a\x95\xd1\
+\xd1\x93\x48\x25\x31\x84\x20\x91\x4c\x91\xcb\x66\xc9\xe5\x72\x24\
+\x12\x71\x94\x84\xf9\x0b\xe6\xb3\x60\xc1\x42\x84\x21\x98\x99\x99\
+\x61\x62\x62\x82\x89\x89\x09\xca\xe5\x32\xf5\x7a\x9d\x6a\xb5\x4a\
+\xad\x56\xf3\xc1\xdd\x9c\xa0\x52\x4a\x1a\x0d\xe7\x1c\x80\x48\x4f\
+\xc4\x8d\x44\x40\x18\xde\x20\x48\xe1\x9c\x07\x80\x73\xe0\x73\xd3\
+\x05\xb6\xad\x56\x8b\x66\xab\xe5\x03\x5d\xe7\xa7\xe9\xbb\x07\xcb\
+\xb2\x68\xb7\xdb\x67\xb4\x62\x67\x70\x7e\x1f\xbf\x7a\xd5\x66\xb6\
+\x2c\xad\x63\xd4\xa6\xdc\x8a\x55\xe9\x28\x81\x92\x50\x1e\x21\xd3\
+\x9c\xe1\x8a\xdc\x20\x17\x5c\x33\x48\x41\x9e\x4f\xb5\xe9\x0c\x9e\
+\x4c\x46\x4d\x72\x56\x95\x44\x6d\x1f\xc6\xf1\xdd\x90\x3f\x0c\x56\
+\x14\xbb\x77\x3d\x56\x7c\xde\xa3\x46\x28\x7c\xe8\x9d\x5b\x00\x5b\
+\x75\x52\x97\x81\xd3\x37\xb5\xe3\x99\xfc\xe2\x0a\xe9\x13\x2f\x01\
+\x26\x4c\x82\xad\x6c\xf2\xd3\x79\xa6\xa7\xa6\x5c\xf4\x6d\x13\x8f\
+\xc5\xc9\xe6\xb2\x64\xb3\x3d\x64\xd2\x69\x2c\xd3\x64\x60\xe1\x42\
+\x06\x06\xfa\x51\x52\x51\x2a\x97\x29\x14\x0a\x94\x4a\x25\x6a\xb5\
+\x2a\xe5\xf2\x0c\xe5\x72\x99\x6a\xb5\x1a\x50\x06\x5d\x21\xa6\xa7\
+\x83\xbc\xc7\x9a\x35\x6b\x1c\x13\x2f\x00\x43\xf8\x07\x59\x7b\xbf\
+\x3d\x17\xa6\xbb\xb8\x5a\xb5\xfa\xae\x54\x4c\xcd\xcb\x64\xb8\xf3\
+\x8a\x8d\xdc\xb0\xaa\x49\xa8\x36\xee\xa0\x7f\x4f\x01\xf4\x9f\xea\
+\x24\x46\x75\x92\xb4\xb5\x8f\xb4\x15\x05\xc3\x72\x14\xa4\x54\x87\
+\x46\x09\x6a\xd3\xce\x73\x01\x99\x5b\xcd\x58\x68\x15\xb4\x8d\x9f\
+\x0c\x2e\x58\x50\x3c\x0d\x16\xa0\x73\xc4\x6b\x3a\x93\xa1\x5c\x2a\
+\xd1\xb2\xed\x39\x0e\x7c\x96\x5d\xa7\x76\x77\x1d\x00\x85\x4e\x99\
+\x3a\x8f\x99\xa9\x54\x28\xcf\x94\x39\x7a\xf4\x38\x4a\x49\x42\x56\
+\x88\x74\x3a\x4d\xcf\xbc\x1e\xff\x94\x8f\xfe\x85\x0b\xe9\x5f\xb8\
+\x90\x56\xbb\x4d\xb5\x52\x61\xa6\x52\xa1\x5e\xaf\x33\x33\x33\xe3\
+\x8e\x88\x2f\xfa\x91\x86\x67\xd6\xf5\xf5\xfa\xeb\xaf\xf3\x5e\x5c\
+\xf3\x32\x19\x7e\xf5\x83\x17\xf2\x91\x0d\x36\x46\x23\x0f\x76\x73\
+\xb6\xe0\x03\x3b\xb1\x0d\xf5\x42\xc7\x45\x78\x56\x42\xff\x3b\xde\
+\x0b\x4b\xb6\xb0\x7b\xb8\x42\xb6\x32\xb6\xe3\xb4\x24\x83\x1c\xa2\
+\xc4\x11\xd8\xaa\x55\x2b\x5d\x6e\xa0\x45\xb1\x5c\xa6\x58\x28\x50\
+\x2c\x14\xa9\xd6\xaa\xb3\x0f\x70\xd6\xcf\xce\xd3\x0b\x2d\xfc\xdc\
+\x19\x7e\x7e\xdf\xbb\xdd\x68\x36\x18\x9f\x18\xe7\xe4\xd8\x49\xd7\
+\xe4\x43\x32\x99\x26\x97\xcb\xd1\xd3\x93\x23\x99\x4c\xd2\x1b\x8b\
+\xa1\x94\xa2\xd9\x6a\xd1\x70\x67\x00\x36\x9b\x4d\x0a\x85\x02\x53\
+\x53\x53\x94\xcb\x65\x6c\xdb\x3e\x25\x07\xf1\x5e\x58\xf3\x73\x39\
+\xee\xda\xb2\x99\x5f\xd9\x64\x60\x34\x26\xe7\x16\x7e\xb7\x2b\xe8\
+\x56\x0c\xfd\xb7\x30\x20\x7b\x1e\x9c\x77\x0d\x8f\x8f\x64\x79\x6c\
+\xc7\xf3\x54\x6b\xb5\x89\xd3\xa2\x00\x52\xda\xfe\x81\x0e\x85\x62\
+\x89\x44\x3c\x8e\x69\x59\xe4\x72\x59\x7a\xb2\x59\x07\x49\x4b\x49\
+\x65\x66\x86\x7c\xa1\xc0\xf4\xf4\x34\xe5\x72\x29\x78\xe8\x23\x5d\
+\xe7\xed\x68\x05\x16\x02\xed\x90\x65\x3d\x31\x24\x04\xb6\x6d\x53\
+\x28\xe4\xc9\xe7\xa7\x39\x78\xd0\xc1\x22\xd1\x68\x84\x6c\x2e\xcb\
+\xbc\xdc\x3c\x32\x99\x0c\xa9\x54\x12\x25\x15\xe9\x74\x9a\x81\x81\
+\x01\xec\x76\x9b\x6a\xb5\xca\x74\x3e\xcf\xf4\xf4\x34\x95\x4a\xc5\
+\xaf\x15\x78\x2f\x28\x43\x5f\x36\xc3\x5d\x57\x6e\xe4\xce\x0b\x0c\
+\x42\xcd\xe9\xd9\x02\xd6\xff\x9e\x4b\xf8\xfa\xfd\x00\x89\xf9\xd0\
+\xbb\x86\x72\xee\x22\x9e\x1b\x31\x79\xe8\xa7\xcf\x52\x28\x16\x09\
+\x87\xc3\xa7\xa7\x1e\x40\xc9\x4e\x41\xc3\xb1\x63\x8e\xa9\x36\x84\
+\x20\x16\x8f\x93\x4e\xa5\x48\x24\x93\x4e\xa8\x95\x4c\x12\x4f\x26\
+\x19\x1c\x18\x40\x2a\x45\xbd\x5e\xa7\x50\x2c\x30\x3d\x35\x4d\x3e\
+\x5f\xa0\xd9\x6c\xf8\x11\x03\xcc\x71\x5a\x96\xa2\x93\x3d\x54\x5e\
+\xfe\x9c\xae\xc3\x95\x15\xd5\x6a\x95\x4a\xa5\xc2\xf0\x89\x61\x3f\
+\xfe\xff\xe0\x07\xaf\xc2\x30\x0c\xac\x90\x85\x69\x9a\x84\x42\x21\
+\x52\xe9\x14\x8b\x17\x2f\xc2\xb6\x6d\xca\xe5\x19\xa6\xa6\xa6\x7c\
+\x77\xf1\x56\xa3\x8b\xd3\xbd\xb2\xc9\x24\xb7\x5d\xba\x81\xdb\x37\
+\x98\x44\xed\xc2\x1b\xef\x7c\xfd\xc7\x8a\x42\x72\xa1\x73\xbb\x39\
+\xe3\xfc\x8e\xa4\x69\xc7\x07\xa8\x45\x06\x38\x51\x4f\xf3\xfc\x4b\
+\xa3\xbc\xb2\xef\x20\xf9\x42\x11\x43\x10\x48\x6c\xbd\x33\x0b\xa0\
+\x9b\x6f\x17\x24\xb5\xa5\x4d\xb1\x58\xa4\x50\x2c\xa2\xdc\x30\x31\
+\x16\x8b\x91\x4a\xa5\x48\xa5\x52\xc4\xe3\x71\x22\x91\x08\xf3\xe7\
+\xcf\xa7\xaf\x77\x3e\xb8\xdc\x41\xb1\x54\x64\x7a\x6a\x9a\xe9\xe9\
+\x3c\xe5\x99\xb2\x6f\xc1\x94\x77\xc4\x4c\x77\xae\xc0\xd5\x14\xa9\
+\xe6\x38\x8f\xcf\x5d\x0e\x4a\x97\xb3\x46\xb7\x29\xe5\x46\x00\x86\
+\xe9\x7c\xae\x74\x0a\x25\x15\xad\x96\xf3\x39\x9c\xd2\x72\xe7\x60\
+\x89\x77\x63\x25\x63\x31\x6e\xbb\xf4\x02\x3e\x7a\x51\x98\xa8\x2a\
+\xbf\x75\xe1\x9b\x61\xe4\xfc\x4d\xbc\x5a\x59\x84\x11\x0a\x11\x89\
+\x48\x84\x65\x51\xae\xc3\xc4\x54\x8b\xc3\xc3\x13\x1c\x1e\xda\xcd\
+\xc4\xf4\xb4\xef\x36\xa5\x12\x6f\xc8\xab\x9c\x76\x1e\x00\xe5\xcc\
+\xd7\x9f\x99\x99\x61\x78\x78\x18\xa9\x14\x21\xcb\x22\x99\x4a\x92\
+\xc9\x64\x48\x26\x92\x84\xc3\x61\x72\xd9\x1c\xd9\x74\x86\x65\xcb\
+\x96\xa1\x94\xa2\x5c\x2e\x31\x3d\x9d\x67\x72\x72\x8a\x62\xb1\x40\
+\xdb\x6e\x6b\xc7\xb0\xcc\x3e\x45\x67\xd6\x19\x7c\x01\xac\xa2\x35\
+\x8c\x8a\x4e\x89\xb7\x4f\xbd\x4a\x27\x92\x31\x0d\x93\x6c\x26\x4b\
+\x2e\x9b\x43\x08\x41\xbd\x5e\xa7\x5c\x2e\x53\x2c\x16\xa9\xd7\xeb\
+\xfe\xf7\x3d\x9d\xa1\x5f\x2a\x1e\xe7\x8e\xcb\x36\xf2\xef\x2e\x0f\
+\x61\xc8\xea\xdb\xdb\xf9\xf3\x37\xf0\xf0\xf1\x5e\xee\x7d\xea\xa7\
+\xb4\xa5\x24\x64\x59\x18\x42\xd0\x68\xb7\x68\x34\x9a\xd8\xd2\xf6\
+\x07\x59\x3b\x7c\x85\x00\xa1\xb0\xdf\x20\x03\xf9\x36\x2d\x40\x50\
+\x01\xde\x2a\x0f\xd0\x6c\x34\x98\xac\xd7\x99\x18\x9f\xf0\x79\x80\
+\x58\x3c\x41\x36\xed\xd0\xc7\xf1\x78\x8c\x44\x22\x49\x22\x9e\x60\
+\x70\x70\x11\x20\xa9\xd5\xea\x14\x0a\x05\x26\x27\xa7\x98\x9e\x9e\
+\xea\x84\x63\xde\x51\x32\xa7\x48\x23\x04\x0e\x5e\x72\x7b\xef\xbd\
+\xd3\xe8\xd5\xac\x88\x26\x58\xc1\x1b\x0e\x87\xe9\xed\xed\xa5\xaf\
+\xaf\x0f\x80\x6a\xb5\x4a\xb9\x5c\x66\x66\x66\x86\x66\xb3\x89\x6d\
+\xdb\x3e\x53\xe9\x65\x15\xdf\xae\xd9\xbf\xe5\xe2\x75\x7c\xfc\xd2\
+\x08\x86\xac\xbf\xad\x9d\x4f\xdf\x3a\x1e\x3d\x31\x8f\xad\x3f\x7d\
+\x81\xb1\xe9\x29\x0c\x61\x04\xc3\x5f\x04\x86\x30\x9c\x12\x3c\x43\
+\xfa\xf7\x09\x83\x37\x3c\x8b\xf8\x6d\x5a\x00\xbd\xdc\xf9\x9d\xf1\
+\x00\xc5\x42\x91\x42\x3e\xef\xf3\x00\xb1\x68\x8c\x74\x26\x4d\x26\
+\x93\x23\x95\x4c\x12\x0a\x85\xe9\xed\xeb\xa3\xaf\xaf\x17\xe9\x1e\
+\x12\x5d\x2a\x96\x98\x9c\x72\xb2\x66\xc5\x52\x71\xce\x29\x1a\xdd\
+\x07\x93\x0b\x08\x16\x5d\xba\x07\x53\x06\x0e\xf9\xd1\x94\x42\xdf\
+\xed\xd1\x68\x94\x58\x2c\xc6\x82\x05\x0b\xfc\x73\x87\x66\x66\x66\
+\xa8\xd5\x6a\x1a\x59\xd4\x0a\x98\xd8\x53\x29\x45\x3a\x1e\xe7\xa6\
+\x8b\xd6\xf2\xb1\x8b\x62\x44\x45\xfd\xd4\xa0\xae\xfb\xc7\xb0\x60\
+\xde\x6a\x1e\x1f\xee\xe5\xc7\x4f\xbd\xcc\xc8\xf8\xb8\x53\xcb\x20\
+\x94\xcb\x76\x2a\x57\xf0\x9d\x73\x87\x84\x14\x08\x0c\x47\xf8\x12\
+\xda\xa7\xcb\x02\x28\x29\xfd\x94\x69\x22\x91\xa0\x52\xa9\xd0\x96\
+\xf2\xb4\xf0\x00\x95\x6a\x95\x99\xca\x0c\x43\x43\xc3\x28\x25\xb1\
+\x4c\x8b\x54\x2a\x45\x2e\x97\x25\x95\x4e\x13\x8d\x46\xc9\x64\x33\
+\xa4\x33\x69\x96\x2d\x5b\x86\x94\x92\x6a\xb5\xca\xd4\xd4\x94\x0f\
+\xea\x9c\x43\xa0\x14\x74\x45\x12\xfa\xf1\xed\x81\x49\x65\x6f\x81\
+\xf7\xd0\x1f\x17\x8f\xc7\x49\x24\x12\x08\x21\x68\xb5\x5a\xd4\x6a\
+\x35\xbf\x93\xb9\xd9\x6c\x52\xaf\xd7\x69\x36\x9b\x9d\x34\xb4\xab\
+\x10\xf1\x48\x84\x1b\x2f\x5c\xc3\xaf\x5d\x1c\x23\x1d\x7e\x1b\xc2\
+\x17\x06\xf4\xac\xe4\x89\xd1\x05\xfc\xf0\xa9\x97\x39\x36\x7a\xd2\
+\x61\x36\xf5\x11\xa5\xc2\x21\xb4\x04\x06\x1d\x9b\xeb\x2a\x83\x9b\
+\x06\x57\x6f\x80\x6d\xde\x76\x14\x20\xdd\xa6\x8c\x45\x8b\x17\xbb\
+\xc0\xab\x45\xa5\x52\x65\xa6\x5c\xa6\x5c\x9e\xa1\xde\xa8\x9f\x16\
+\x1e\xa0\xd9\x6a\x32\x39\x35\xc9\xf8\x44\x27\x6b\x98\x48\x24\xc9\
+\xe5\xb2\x64\x33\x19\xe7\xfc\x9f\x58\x8c\xc1\x81\x01\xfa\xfb\xfb\
+\x1d\x3e\xc0\x6d\x29\x0f\x74\x12\xeb\x8d\x22\xb2\xfb\xc4\xf0\xb7\
+\xe7\xbf\xf5\xe7\x1a\x86\x41\x32\xe9\x1c\x57\x0f\xd0\x6a\xb5\x7c\
+\x05\xf0\x94\xa1\x5a\xad\x22\xa4\xe4\xe6\x8b\xd6\xf0\xc9\xcb\xa3\
+\x24\xc2\x2d\x67\x52\xca\xa9\xc2\x3a\xfd\x3e\x61\x20\xb3\x2b\x78\
+\x6a\x74\x01\xdf\x7f\xea\x65\x8e\x0c\x0f\x3b\xbe\x1d\x67\xb7\x0b\
+\xc0\x50\x0a\x70\x4f\x3e\x51\xb6\x53\x79\x65\x08\x84\xea\x70\x1e\
+\x4a\x89\x37\xac\x42\x7a\x3b\x0a\x20\x0e\x1d\x3a\x44\x5f\x5f\x2f\
+\x56\xc8\x72\xd8\x36\xd3\xc4\x34\x2c\x1f\xf1\xf7\xbb\x56\xa2\x5a\
+\xab\x51\x2a\x95\x28\x95\x4a\x54\x2a\x33\xa7\x85\x07\x90\x6e\x76\
+\xae\x58\x2c\xb8\xe0\x4c\x11\x8d\x86\x49\x67\xb2\xe4\xb2\x59\xd2\
+\xe9\x34\xa1\x70\xd8\x4d\xe7\x06\x4f\x19\x01\xbd\xbb\x27\x88\x15\
+\xde\xc9\xd2\x15\xc2\x34\x4d\x92\xc9\x64\xa7\x78\xa6\xd5\x42\x28\
+\xc5\x25\x4b\xfb\xf8\x37\x9b\x5a\x58\x86\x9a\x9b\xc0\x39\x15\xa9\
+\x93\x5b\xce\xd3\x63\xfd\x7c\xff\xf1\x17\x39\x3c\x32\xea\xc8\x58\
+\x74\x8e\x98\x37\x94\x40\x0a\xd1\x29\x75\xf3\xca\xee\xdc\xd2\x7a\
+\xe7\x3e\x40\x18\xd8\xea\xf4\x28\xc0\x8e\xc7\x1e\x7f\x2c\x22\x84\
+\xb8\x28\x9d\x4e\xd3\xdf\xdf\x4f\x7f\x7f\x3f\xa9\x54\x8a\x50\x28\
+\x44\x38\x1c\xc6\xb2\x2c\x84\x30\x88\xc7\x63\xc4\x62\x31\xe6\xcf\
+\x9f\xef\x64\x33\x35\x74\x5d\x2a\x95\x4f\x23\x0f\x50\xa3\x52\xa9\
+\x32\x3a\x32\xe2\xf3\x00\x4e\x93\x48\x90\xcf\xf7\x72\xfc\xb3\x8e\
+\x77\x3b\xcd\xe1\x5d\xc0\x5d\x44\xa3\x6c\x1e\x9c\xc7\x6d\xab\xea\
+\x58\xa6\xf1\xd6\x4c\xbe\x27\xfc\xec\x79\x3c\x33\xb6\x80\x7f\x79\
+\xfc\x25\x0e\x1c\x3f\xe1\xec\x6a\xe1\x36\xa1\x79\xe1\x9d\x10\x18\
+\x18\x5d\xe8\x47\xb8\x3d\x19\xc2\x3f\x01\xc7\x39\xdc\xd2\x7e\xc3\
+\x1a\xc4\xb7\xb5\xae\xbf\xfe\xfa\x1f\x4a\x29\xab\xed\x76\xdb\x56\
+\x4a\x5d\x15\x0a\x85\x96\x65\x73\x59\xe6\xf7\xcd\xa7\xb7\xb7\x97\
+\x48\x34\x42\x3c\x16\x23\x16\x8b\x3b\x87\x2c\x68\x5d\xb4\x5e\x59\
+\xb4\xdd\xb2\x29\x97\xcb\x14\x0a\x79\x0a\xc5\x12\x95\x4a\xc5\xc7\
+\x17\x52\x69\xe5\x59\x6e\xf6\x51\x79\xc5\x9b\x52\xba\x35\x09\x9d\
+\xc7\x76\xfb\xf2\x2d\x5b\xb6\x04\x9e\xaf\x27\x79\x74\xd4\xef\x25\
+\xb5\xce\xc4\x0a\x99\x26\x1b\xfb\x7b\xb8\x79\x65\x83\x9e\xa4\xea\
+\xf0\xf7\xdd\x7c\xfd\x5c\xf7\xa5\x17\xf1\xcc\xd8\x02\xbe\xfb\xe4\
+\xab\xec\x3b\x7a\xd4\x05\x73\x22\xd0\xe8\xd2\xb9\x4f\xcc\x91\x08\
+\xd3\x1e\xeb\x5a\xcf\x50\x28\x94\xf8\xee\x77\xbf\x5b\x7d\xc7\x18\
+\x00\x60\xfb\xf6\xed\xbf\xaa\x29\xc3\x87\x94\x52\x37\x4d\x4f\x4d\
+\xdb\xe3\x63\xe3\x2d\xd3\x34\xff\x2c\x12\x89\x90\xcd\x66\xc9\x66\
+\xb3\xa4\x53\x69\x15\x8f\xc7\x45\x2a\x9d\x22\x91\x48\x38\x25\xe4\
+\x4a\x82\x69\x92\x4e\xa7\x48\xa7\x53\x2c\x76\x77\x7f\xa5\x52\xa1\
+\x90\x2f\x30\x9d\xcf\x53\x2e\x97\x7e\x6e\x1e\x40\x76\xb5\x7f\xeb\
+\x87\x35\xe8\x8d\x26\x67\x6a\x04\x87\x69\x18\x5c\xb0\x20\xc3\xcd\
+\x2b\x6a\xf4\x24\xc5\xdc\xa6\xfe\x54\x3f\xe9\x45\xec\x9a\x58\xc8\
+\x3f\x3f\xb9\x97\xd7\x8f\x1c\x75\xb7\xa8\xd6\xd3\x26\x44\x27\xcc\
+\x93\x5a\x6a\xdb\xab\x2a\x12\xda\xee\xc7\x2b\x7d\x53\xa7\x8f\x08\
+\xd2\xd7\x4d\x37\xdd\x24\x1e\x7a\xe8\xa1\x27\x81\x27\x35\x85\x38\
+\xd4\x6e\xb7\xcd\xb1\xb1\x31\x71\xf2\xe4\xc9\x8d\x96\x65\xfd\x6f\
+\xd1\x48\x94\x44\x32\x41\x32\x99\x24\x9e\x48\x38\x67\xf2\x66\xb3\
+\x24\x12\x09\x94\x72\xca\xb0\x50\x0e\x7b\x18\x8d\x46\x59\xd8\xbf\
+\x10\xa9\x14\xcd\x46\x83\x62\xa1\x40\x3e\x5f\x20\x5f\xc8\x53\xaf\
+\xd5\xde\x12\x0f\xe0\x4e\x74\xe8\x74\x10\x69\xd1\x89\x42\x05\xea\
+\x4f\x4f\xf7\x32\x80\x0b\x17\xa4\xb9\xeb\xfc\x19\xe2\xf1\x10\x08\
+\x73\xf6\x8e\xef\x06\x7c\xee\x6f\x99\x1c\xe4\x67\xf9\x7e\xfe\xf9\
+\xc9\xbd\xbc\xea\x09\xdf\x77\x59\x8e\x20\x0d\xaf\xd3\xd6\x9b\x34\
+\x07\x18\xb6\x44\x1a\xce\x85\x30\xf0\xc8\x1f\xc7\x5d\x78\xff\x97\
+\x6f\x60\xea\xce\x18\x01\x7e\xc3\x0d\x37\xc4\x94\x52\x97\xd9\xb6\
+\x2d\x5b\xad\x56\x39\x14\x0a\x7d\xdf\x34\xcd\xe5\x91\x48\x84\x68\
+\x34\x4a\x34\x1a\x55\xc9\x64\x52\xcc\xeb\x9d\x47\x4f\x2e\x47\x38\
+\x1c\x45\x29\xaf\x24\xcc\xf6\x7b\xe6\x3d\xe1\xb5\x6d\x9b\x99\x72\
+\x99\xe9\xe9\x29\xa6\xa6\x1d\x2b\x21\xed\xd9\xa2\xbc\xfc\xf2\xcb\
+\x83\x43\x20\xbb\x7e\x4e\x37\xb3\xe7\xef\x7c\x21\xb8\x60\x7e\x9a\
+\x8f\x5f\x50\xc6\x8a\x26\x3a\x79\xfa\x37\x32\xf7\xde\xed\xc4\x7c\
+\x76\x17\x17\xf2\xed\x27\x0e\xf2\xe2\xbe\x03\x6f\x50\xed\xd4\x6d\
+\xf2\xe9\x14\xb9\xb8\x3b\xde\x70\x81\x9f\xdf\xad\xe5\xba\x80\xef\
+\x7f\xff\xfb\xd5\x77\x55\x01\xe6\x50\x88\xf9\x52\xca\x84\x94\x52\
+\xd8\xb6\x6d\x85\x42\xa1\x7d\x86\x61\x10\x0a\x85\xb0\x2c\x93\x48\
+\x24\xaa\x7a\x7a\x7a\x44\x5f\x5f\x1f\xd9\x6c\xd6\x2f\xd1\xf2\x95\
+\x61\x0e\x61\x56\xab\x35\x0a\x05\x27\xd3\x57\x2a\x95\x68\xb7\xdb\
+\x5c\x7e\xf9\xe5\x5a\x7f\xbf\xec\x3c\x17\xe5\x17\xb4\x9c\x89\x9d\
+\xbf\x6e\x7e\x96\xbb\x56\xd7\xe9\xc9\x86\x1c\xe6\xee\xcd\x7c\xbe\
+\xf7\x77\xac\x87\x97\xa7\x17\xf2\x4f\x4f\x1d\xe4\xe5\x03\x87\xde\
+\x5a\x38\xd6\xad\x08\x08\x37\x1a\xec\x44\x03\xc2\x73\x09\x38\x0a\
+\xf0\xc3\x1f\xfe\xe0\x17\xab\x00\x73\x80\xc9\xb8\x52\x4a\x4c\x4c\
+\x4c\x34\xe6\xcf\x9f\xff\x59\xe0\x2f\xbd\x82\x4c\x21\x04\x89\x44\
+\x82\x3e\x97\x09\x4c\x26\xd3\x7e\x2a\x5a\xd9\x1e\x50\xec\x90\x4d\
+\x1e\xe8\x6b\xdb\x2d\x4c\xc3\x9c\x63\xc7\x13\x88\x0a\x4e\xab\xf0\
+\x85\xe0\xfc\x79\x29\x6e\x5b\xd9\xa0\xbf\x37\xec\x08\x7f\xae\x1d\
+\x3f\x97\x12\x44\xb3\xbc\x32\xbd\x80\x6f\xff\xf4\xc8\x5b\x16\x7e\
+\x37\xe3\xe8\x83\x3f\x8f\xfa\x75\xfd\xbe\xd7\x07\x89\x80\x50\xc8\
+\x4a\xfc\xe8\x47\x3f\x7e\x6f\x29\xc0\x9b\x28\xc7\x41\x60\xb9\xf7\
+\xf9\x0c\xc3\x20\x93\xc9\x30\x7f\xfe\x7c\x7a\x7a\x72\x84\xc3\x61\
+\x47\xb0\x38\x87\x36\xaa\xae\xe1\x50\x4a\xc9\xc0\x0c\x1f\x27\x83\
+\x68\x9f\xf6\xf1\x6b\x02\x58\x33\x2f\xc5\xad\x2b\x1b\x0c\xf4\x45\
+\x9c\x84\x8d\x2e\x6c\x9d\xeb\x97\xed\xce\xdf\xb2\x0d\x91\x34\x7b\
+\x0b\x7d\x7c\xeb\xa9\xe3\xbc\xb8\xff\xe0\xcf\xfd\xfe\xee\x19\xf7\
+\x81\x82\x17\xe1\x1e\x7b\x6f\x18\x26\x08\xf6\x98\x96\x75\xc9\x4f\
+\x7e\xfc\xe3\xfa\x69\x05\x81\x67\x6a\xdd\x78\xe3\x8d\xe2\xe1\x87\
+\x1f\x5e\xe9\xfd\x7d\xfb\xed\xb7\x47\xea\xf5\x7a\x65\x7a\x7a\xba\
+\x38\x35\x35\x25\x94\x52\xf1\x70\x38\x1c\xe9\xe9\xc9\x31\xaf\xb7\
+\x97\x54\x32\xed\x1c\xe0\xa4\x3c\xfa\x55\xfa\x6c\xa0\x3f\xbd\x43\
+\xca\xd3\x0f\xfa\x95\x62\x7d\x5f\x9a\xbb\x56\x96\xe8\xe9\x4d\x43\
+\x28\x3e\x9b\xdd\xf3\x22\x00\xbd\x68\x43\x49\x64\x28\xc5\x70\x73\
+\x21\xdf\xdb\xf1\xf3\x0b\x9f\x00\xa5\xde\x19\xcc\x2d\xc0\xe9\x7c\
+\x16\xe2\x09\xc3\x10\xdb\x0d\xcb\xfc\x57\x04\x8d\x77\x1d\x04\x9e\
+\x41\x2c\xf1\x3b\x4a\xa9\x3f\x90\x52\xd6\xdd\x1d\xbf\x36\x1e\x4f\
+\xf8\x14\x71\x2c\x1e\xef\x30\x61\x18\x6e\x77\xad\x3a\xed\xa6\x7f\
+\x55\x36\xce\xaf\xad\x2e\x91\x9b\x97\xc6\x88\x65\x66\x9b\x7a\xbb\
+\x39\x1b\xfd\xcb\x36\x58\x51\x86\x6a\xbd\x7c\xeb\x99\x09\x1e\x7f\
+\xe5\xd5\xd3\xeb\x8e\x9c\x5a\xc8\xc7\x0c\x21\xbe\x61\x5a\xd6\x53\
+\xf7\xde\x7b\xef\xd1\xb7\x66\x45\xde\x27\xeb\x96\x5b\x6e\x11\x0f\
+\x3c\xf0\x80\xea\x72\x17\xff\xac\x94\xca\x4a\x29\x4d\xa5\x54\xd2\
+\x30\x8c\xcb\x12\x89\x04\xe9\x74\x9a\x64\x32\x89\x65\x39\xb4\xb5\
+\xf7\xbb\x9b\xb1\xfb\x79\x76\xfe\xb2\x4c\x82\xdb\x97\xd7\x38\x6f\
+\x30\x0e\x91\xf4\xa9\x01\x9e\x6e\xf2\x5d\xe1\x1f\xaf\x0f\xf0\xcd\
+\x9f\x8e\xf0\xe4\xcf\xf6\x9e\xb6\xeb\x22\x84\xc0\x34\xcd\x87\x81\
+\x3f\x37\x4d\x73\xdf\xd6\xad\x5b\x27\xde\x9e\x1b\x79\x9f\xae\x1b\
+\x6e\xb8\x41\x6c\xdb\xb6\xcd\x97\xe6\x9d\x77\xde\x19\xaa\x56\xab\
+\xdf\x94\x52\x56\xa5\x94\x36\x70\x83\x65\x59\xcb\xbc\x2c\x5e\x3c\
+\xee\xb0\x93\x5e\x73\x88\x69\x9a\xb3\x32\x7e\x6f\xb6\x96\x26\xa3\
+\xdc\x72\x5e\x9d\x55\x4b\x13\x10\xcd\x06\x7d\xfd\x1b\x29\x80\x19\
+\xe6\x78\xa5\x97\x87\x8f\x86\xf8\xd1\x63\x4f\xd2\x98\xa3\x33\xf8\
+\xe7\x14\xfc\x13\x42\x88\xdf\x15\x42\x1c\xbe\xff\xfe\xfb\x5b\x3f\
+\x1f\x8e\x38\x4b\xd7\x0d\x37\xdc\x70\xb5\x94\xf2\x5a\xa5\x94\x6d\
+\xdb\x76\xcb\x30\x8c\xff\x1c\x0e\x87\xfd\x3c\x7f\x24\x12\x51\x91\
+\x48\x44\x44\x22\x11\xe7\x34\x71\xbf\x63\x58\x9d\x52\xf8\x37\x2f\
+\xad\xb3\x7a\x69\xcc\x29\xbb\x7e\x2b\x48\xdf\xcd\xe9\x8f\x35\x7b\
+\xb8\x77\x9f\xc5\x81\xc9\x02\xbb\xf7\xec\x71\x53\xd7\x3f\xb7\xeb\
+\xaf\x9b\xa6\xf9\xb2\x65\x59\xbf\xbe\x75\xeb\xd6\x13\xef\xe4\x1a\
+\x59\x67\xab\xf0\x6f\xbe\xf9\x66\xf1\xe0\x83\x0f\x3e\x01\x3c\xa1\
+\xb9\x8b\xc3\xed\x76\x3b\x52\x2a\x95\x8c\x62\xb1\xb8\xc4\x34\xcd\
+\x3f\x0d\x85\x42\x44\x22\x11\xef\x47\x45\xa3\x51\x11\x8f\xc7\xdd\
+\xf6\xb5\x4e\x64\xb1\x2c\x19\xe1\xd6\xc5\x45\x96\x2f\x49\x3b\xc2\
+\x3f\x55\x22\xa7\x0b\x08\x4a\x2c\x9a\x22\xc9\x43\x87\xc2\xbc\x3e\
+\x36\x81\x61\x9a\xef\xe4\x6b\x9d\x30\x4d\xf3\x80\x65\x59\x9f\xdc\
+\xba\x75\xeb\xc8\xe9\xb8\x4e\x67\xb5\x05\x78\x13\x05\x31\xdb\xed\
+\xf6\xb5\x52\x4a\xdb\xb6\xed\x9a\x69\x9a\x7f\x6e\x18\xc6\x75\x9e\
+\x7b\xb0\x2c\x8b\x58\x2c\x46\x32\x99\x64\x75\x5f\x0f\xb7\x2d\x2e\
+\xb3\x6a\x49\x14\x23\xbb\xf8\xcd\x99\x3d\xef\x47\x18\x94\x5a\x09\
+\xee\x3b\x94\xe2\xc5\x13\x13\x28\x9c\xb4\xf1\x9e\xb7\x6f\x01\x5e\
+\x10\x86\x71\xc0\x10\xe2\x9e\x87\x1e\x7a\x68\xe8\x74\x5e\x87\x5f\
+\x5a\x05\x98\x83\x7b\xe8\x55\x4a\xf5\x29\xa5\x44\xab\xd5\xaa\x86\
+\xc3\xe1\x23\x86\x61\xb0\x6e\x60\x01\x9f\xd8\x9c\xe0\xe2\xb5\x19\
+\x48\x0d\xd0\xb6\xc1\xa4\x89\x29\xd4\x1b\xbb\x00\x60\xa2\x9e\xe6\
+\x81\xc3\x31\x76\x8f\x4e\xf9\x7c\xfc\xdb\x54\x80\x47\x11\xe2\x69\
+\xe0\xeb\xdb\xb7\x6d\x1b\x3e\x13\xdf\xfb\x9c\x02\x9c\x5a\x21\xb2\
+\x9f\xb9\xf1\xda\x0f\x6f\x9e\x37\xf1\x47\x8b\x06\x43\x1b\x77\x97\
+\x06\x8d\xdd\xc7\x8a\x94\x6b\x4d\x7a\x93\x61\x2e\x18\x0c\xb3\x66\
+\x7e\x63\x6e\x9f\xaf\x24\x13\xd5\x38\x0f\x1c\x49\xb2\x77\x2c\x4f\
+\x5b\xcb\xc6\xbd\x45\x05\x78\x08\xf8\x0e\xf0\xd8\xf6\xed\xdb\x87\
+\xce\xe4\xf7\x34\xce\x89\x7a\xee\xf5\xa7\x9f\xf8\x44\x73\x55\xb6\
+\x75\xd3\xe0\xbc\xfa\xfa\x42\x78\xdd\x8b\xd1\xd4\xf2\x3b\x4c\x11\
+\xcf\x5e\xb1\xe1\x03\xa1\xef\x3e\xfe\xfc\x5f\xff\xed\xb6\xfd\xec\
+\x3c\x8c\x73\x34\x7d\x17\x16\x28\x35\x22\x3c\x74\x34\xc1\xab\xe3\
+\x85\x80\xf0\xdf\xca\x8e\x17\x42\x6c\x01\x7e\x73\xfb\xf6\xed\xdf\
+\x3a\xd3\xc2\x3f\xab\x41\xe0\x3b\xde\x19\xaa\x3d\x90\x0b\x4f\x5f\
+\x69\x87\x73\x8d\x92\xdd\xf3\xbd\xd1\x43\xc7\x1e\xf8\xc4\xe7\x3e\
+\xe7\x95\xd6\x7c\x46\x29\xf5\x9f\x5e\xfd\xc1\xb7\xff\xa7\x7a\xfb\
+\xd8\x7f\x8b\x9b\xe5\x79\x9e\xf0\x5b\x36\xfc\xf7\x9d\x75\x76\x1e\
+\x3d\x46\x22\x95\x22\x99\x4c\x3a\x47\xc6\xbc\x31\xff\xb0\x13\xf8\
+\xb7\xc0\xe4\xb6\x6d\xdb\x2a\xef\xe6\xf7\x3c\xa7\x00\xa7\x8a\xb5\
+\xec\x76\x32\x16\x69\xf6\xd8\xd6\x40\xa3\x25\x8d\x83\x1f\xfe\xf4\
+\xa7\xed\xae\x18\x5c\x3d\xf7\x4f\xdf\x7e\xac\x12\x8a\x1d\x8d\x45\
+\x8a\x3d\x42\x49\xd1\x68\x5b\x95\x03\xf9\xc5\x5f\x7d\xf0\xe5\x07\
+\x7e\xbf\xd9\x6e\x97\xd4\xc4\x84\x01\xc4\x22\x91\x48\x2c\x93\xc9\
+\x38\x8d\x31\x9d\xba\x41\x1b\xd8\x29\x84\xb8\x7e\xdb\xb6\x6d\xf5\
+\x5f\xd4\xf7\x3c\xa7\x00\xa7\x54\x00\xd9\x6e\x4b\xa3\x19\x55\xcd\
+\xa4\x21\x64\x66\x4e\x2b\x11\x0a\x35\xa5\xa2\x85\x6c\x53\x6b\x18\
+\x85\xa3\xe5\x25\x5f\x2b\x34\xa2\x7f\xf1\xc0\x43\x0f\x7d\x5e\xc3\
+\x12\x1f\x69\xb5\x5a\x7f\x3d\x3e\x3e\x5e\x19\x1b\x1b\x33\x0c\xc3\
+\x30\x84\x10\x69\xc3\x30\x36\x3d\xfc\xf0\xc3\x23\xbf\xe8\xef\x79\
+\x4e\x01\x4e\x75\x61\x12\xa9\xb1\x62\x23\xb9\x2f\xd3\x9c\xba\x36\
+\x12\x9a\xb9\x76\xff\xa3\x8f\xdc\xbf\xfa\xda\xeb\x26\x03\x0f\x6a\
+\x56\x57\x47\x42\xa5\x85\x8d\x86\x2a\x1f\x2d\x2f\xfe\xfa\x54\x35\
+\xf4\xe5\xab\x7e\xef\x77\x0b\xfa\x43\xb6\x6f\xdf\xfe\x23\xe0\x47\
+\xef\xd9\xef\x79\x4e\xd4\x73\xaf\x70\x32\x9d\x2f\xd6\x7a\xb7\xd9\
+\xf5\x83\x1f\xec\x0b\x1d\xf8\x95\xe1\x8a\x3a\xf1\xb3\x1f\xfd\x8f\
+\xaf\x87\xd3\xd9\x93\x85\xe1\x13\x46\x38\x64\x2c\x4f\xdb\x27\x7f\
+\x3b\x2e\xf2\xf3\x0f\xe6\x17\x7f\xad\x2c\x32\xff\xcf\x55\xbf\xf7\
+\xef\xc7\xdf\x6f\xdf\xf3\x5c\x18\xf8\x06\xeb\xa9\xbf\xf9\x5a\x7f\
+\x4e\x8e\xfc\xd1\xba\xfe\xe1\xdf\x55\xd1\x9c\x9c\x68\x2d\x7a\xae\
+\x6a\x27\xf7\xc8\x46\xcd\x4c\x1a\x85\x8d\x7d\xb1\xb1\x0b\xf7\x4d\
+\x2d\xfb\xf2\x54\x33\xf5\xa5\xab\x7e\xf7\xf7\xa6\xde\x8f\xdf\xf1\
+\x9c\x02\xbc\x59\x5c\xf6\xdf\xfe\x72\x60\x41\x56\xfe\xaf\x3d\xa1\
+\xc9\x6b\xd3\xe1\xd2\x32\xd3\x14\x61\x5b\x8a\x66\xb1\x99\x3b\x58\
+\x34\x16\xdd\x5f\x68\x46\xbf\x7c\xc5\x6f\xfd\xfb\xfc\x69\xe6\x20\
+\xac\xed\xdb\xb7\xb7\xcf\x29\xc0\x7b\x64\x3d\xfe\x95\xbf\x4a\x46\
+\x62\x91\xa5\x61\xd1\x5a\x6f\x5a\x66\x4a\x62\xe4\x6d\x23\xfc\xba\
+\xb2\xa2\xc7\x2e\xfd\xf8\xc7\x2b\xe7\xae\xd0\xb9\xf5\xbe\x5d\xff\
+\x3f\xdd\x4b\xaa\x24\xa0\xd0\xd0\x8a\x00\x00\x00\x00\x49\x45\x4e\
+\x44\xae\x42\x60\x82\
+\x00\x00\x38\xda\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\x7a\x00\xff\x00\x80\x19\x01\xf4\xdc\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x07\x08\
+\x0b\x1f\x36\xd0\x09\xf6\xed\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\xbd\x79\x94\x25\xd5\x7d\xe7\xf9\xb9\
+\x11\xf1\xf6\x25\xdf\xcb\xb5\x32\xb3\xaa\xa8\x9d\xa2\x0a\x51\x20\
+\xb3\x23\x84\x84\x00\x09\x10\x92\xa6\xe5\x76\xcf\x78\xfc\xcf\xc8\
+\xdd\x67\xce\x4c\xdb\x23\xf7\x58\xa0\x69\xcb\x6a\x7b\xec\xa3\xf9\
+\xa3\xc7\x3e\x7d\xec\xf6\x72\xe4\x19\xcb\xc7\xee\xb1\x2c\xb5\xb7\
+\x96\xa1\x10\x05\x85\x04\x58\xa2\x28\x10\x20\x54\x59\x1b\xb5\x57\
+\xee\xcb\xcb\xb7\xaf\x11\x71\xef\xfc\x11\xcb\x8b\x78\x99\x85\x40\
+\x54\x96\xa0\x94\xb7\x4e\x9e\x7c\xf9\xea\xad\x71\xbf\xf7\xb7\x7c\
+\x7f\x1b\xac\xaf\xf5\xb5\xbe\xd6\xd7\xfa\x5a\x5f\xeb\x6b\x7d\xad\
+\xaf\xf5\xb5\xbe\xd6\xd7\xfa\x5a\x5f\xeb\x6b\x7d\xad\xaf\x9f\x89\
+\x25\xae\xd4\x1b\x7d\xe9\x4b\x5f\x52\xde\xed\xaf\x7c\xe5\x2b\x62\
+\xfd\xd2\xff\x8c\x00\x60\x61\x61\xc1\xdf\xf8\x3f\xf8\x83\x3f\xb8\
+\xe4\xe3\xd6\x41\x71\x15\x02\x20\xb8\xf9\xde\x52\x28\x50\xdd\xbf\
+\xfe\xf0\x0f\xff\xf3\x3a\x20\xae\x76\x00\x14\x8b\x45\xf2\xf9\xbc\
+\xb3\xfd\xca\x01\x81\xf0\x71\xe0\xdc\x87\x7b\xff\x1f\xff\xf1\x1f\
+\xaf\x83\xe1\x6a\x03\xc0\xa3\x8f\x3e\x8a\x10\x82\x5d\xbb\x76\xb1\
+\x7b\xf7\x6e\x86\x06\x07\xc9\xf6\xf5\x31\xd0\xdf\x8f\x6e\x18\x28\
+\xa5\x42\x12\x42\x28\x50\x0a\xfe\xe4\x4f\xff\xe4\x2d\x5f\x7f\x1d\
+\x18\xef\x23\x00\xf4\xae\x74\x3a\x4d\xae\xaf\x8f\x4c\xb6\x8f\xed\
+\xdb\xb7\xb1\x67\xcf\x1e\x72\xf9\xbc\xb3\xf3\x3d\xaa\x42\xb9\x22\
+\xc2\xc3\xc9\x57\xbf\xfa\xd5\x75\x30\xbc\x5f\x00\xa0\x94\xe2\xb1\
+\xc7\x1e\x5b\xf1\x7f\x4a\xa9\xc0\x8f\xb3\xe1\xba\xa6\xb1\xeb\xda\
+\x6b\xb9\xed\xd6\x5b\xd9\xb1\x63\x07\x86\x61\x38\x1f\x52\xb8\x58\
+\x50\xc1\xdf\x12\x81\xe0\xcf\xfe\xec\xcf\xd6\xa5\xc3\x7b\x16\x00\
+\xf3\xf3\x4a\x41\x08\x00\x0a\x40\x2a\xfc\x7f\x4a\xb9\x7f\xbb\x27\
+\x5d\x79\xf7\x43\x3e\x9f\x67\xf7\xee\xdd\x6c\xde\xbc\x99\x5c\x2e\
+\xc7\xd0\xe0\x10\xd9\xbe\x6c\x40\x2a\xe0\x23\x42\xba\xbf\xff\xfc\
+\xcf\xff\x7c\x5d\x65\xbc\x57\x00\x30\x3f\x3f\xaf\x08\x02\xc0\x3b\
+\xf1\xa1\xcd\x06\xa5\xa4\x0b\x8c\xee\xed\xa0\x74\x00\x85\x61\xe8\
+\xf4\x65\xfb\x48\xa6\xd3\x8c\x8d\x6e\xe0\xfa\xeb\x6f\xe0\xba\xeb\
+\x76\xfb\x40\x08\xd9\x11\xbe\x1a\x01\xa1\x14\x5f\xfb\x8b\xbf\x58\
+\x07\xc4\x4f\x03\x00\x73\xf3\xf3\x4a\xa0\x78\xec\xb1\x2f\xe2\x1c\
+\x7c\x85\xf0\x36\x57\x76\x25\x80\xa3\xef\x9d\xcd\x96\xb2\xbb\xa1\
+\x0a\x89\x70\x04\x04\x4a\x49\xc7\x0e\x90\x0a\x49\xd7\x6b\xe8\xcf\
+\xe7\xb9\xe5\x96\x5b\xb8\xe5\xe6\x9b\xe9\xcb\xe5\x11\x1a\x68\x42\
+\x73\xd4\x86\xea\xb5\x25\x9c\x27\xfe\xe5\x5f\xfe\xe5\x3a\x18\xae\
+\x08\x00\xe6\xe6\x15\x28\xbe\xf8\xc5\x2f\xfa\x27\x1a\x40\x4a\xe9\
+\xbc\xb3\x04\xa9\x64\x40\x12\xa8\xd0\x89\xf6\xed\x03\x77\xf3\xa5\
+\xea\x4a\x11\xa0\x0b\xa2\x80\x74\xd9\xb9\x73\x27\x3b\x77\xee\x62\
+\x68\x68\x90\xa1\xc1\x21\x36\x8c\x8e\x60\x18\x11\xf7\x39\xce\x9b\
+\x2a\x84\xff\x9e\xff\xe5\xaf\xfe\xea\x67\xda\xd3\x58\x63\x00\xcc\
+\x29\x3c\x09\xa0\x9c\xcd\xf6\x37\x0b\xd5\xb5\x05\x7c\x43\x10\x94\
+\x94\x21\x00\x78\x27\xdd\x03\x8d\x27\x3d\xc2\x8f\x71\x36\xd3\x01\
+\x93\x7b\xda\xa5\x24\x99\x4a\x91\xc9\x64\xc8\x64\x32\x5c\x77\xdd\
+\x75\x7c\xf0\x83\x1f\x64\xa0\xbf\xdf\x97\x04\x5d\x7f\x43\x84\x81\
+\xa5\xe0\xeb\x5f\xff\xeb\x9f\x09\x30\xac\x31\x00\x66\x95\x52\xf0\
+\xc5\x2f\x3e\xe6\x9e\xe4\xee\x86\xc9\xa0\x4d\x10\xda\x44\x47\x4d\
+\x48\x29\xbb\x12\xa3\xcb\x14\xa1\xa4\x74\xc5\xba\x40\xe2\x6e\x78\
+\x10\x5c\xee\xff\x2b\x57\x5a\x48\xa5\x56\x00\x6a\xcf\xde\x3d\xdc\
+\x79\xd7\x9d\x5c\xb7\xfb\x3a\x84\x10\xe8\xba\x8e\xa6\x69\x5d\x3b\
+\xc5\x51\x54\xfe\xf3\xfe\xe6\x6f\xfe\xe6\xaa\x95\x0e\x6b\xfa\x05\
+\x66\xe7\xe6\x14\xae\x1b\x18\x34\xe8\x1c\x3d\xaf\xfc\x93\x2a\x5d\
+\x63\x4d\x06\x8c\x44\x4f\x3a\x84\xd4\x81\x6b\x03\x04\x79\x01\xe5\
+\x6d\xb2\xbf\xd1\x12\xff\x4f\x25\x43\x40\xf3\xa4\x49\xd0\xf5\xcc\
+\xe7\x73\xec\xbe\xd6\xf1\x34\xf2\xf9\x3c\x1b\x37\x8e\xd3\x9f\x1f\
+\x08\x48\x07\xdf\x78\xf0\x0d\xcb\x6f\x7e\xe3\x1b\x57\x8d\xca\x58\
+\x5b\x00\xcc\xce\x2a\x85\xe2\xb1\x47\x1f\x73\xc5\xbb\x72\x99\x3e\
+\xe5\x9e\x58\x01\x52\x39\x5a\xd9\x07\x80\xbb\x61\x42\xa1\xec\xee\
+\x36\x48\x5f\x35\xb8\x1b\x1b\xb2\xfe\x5d\x03\x32\xe8\x59\x78\x8f\
+\xc7\x53\x19\x0a\x24\xd8\xf8\xba\x26\xe4\x91\x28\xa5\x30\x0c\x83\
+\x54\x2a\x45\x32\x99\x64\x7c\x7c\x23\x37\xdf\x72\x33\x37\xde\x70\
+\x43\x40\x6d\x11\x22\xa4\x9c\xcf\xe9\x3c\xff\xef\xfe\xf6\xef\xde\
+\x97\x80\x58\x5b\x00\xcc\x38\x00\x78\xf4\xb1\xc7\x56\x11\xf7\x2a\
+\xac\x16\x08\x9c\x66\x77\xb3\xa4\x92\xfe\x85\xf6\x37\x5c\xca\x15\
+\x6e\xa4\x27\x55\xc2\x06\xa4\x74\x55\x43\xd0\x48\xc4\xbf\xbf\x2b\
+\x09\x94\xef\x29\x74\x3f\x8b\x0a\x79\x23\xb9\x7c\x8e\xdb\x6f\xbb\
+\x9d\xdb\x6e\xbb\x8d\xfe\x81\x7e\x74\x4d\xc7\x88\x44\xdc\x8b\xe7\
+\xa8\xa3\xa0\xb4\x42\xc1\xdf\xff\xc3\xdf\xbf\x2f\xa4\xc4\x9a\x7e\
+\x90\x99\x99\x19\x87\x0a\xfe\xc2\xa3\x5d\xbd\x8c\xf2\x37\xd1\xf7\
+\x08\x42\xa2\xbb\xc7\x46\x08\x12\x47\x41\xf6\x70\x95\xfb\x1d\xdc\
+\x04\x36\x58\xae\x02\x2c\x7f\xa3\x5d\x01\x2f\x65\x57\x35\x79\xef\
+\xed\x7d\xce\xe0\xe3\x02\xef\xbd\x73\xe7\x4e\xb6\x6f\xdf\xc1\xf0\
+\xf0\x20\xe3\xe3\xe3\x6c\xda\xb4\x99\x48\x34\xe2\x93\x52\x2a\x10\
+\xed\xf4\x5e\xfb\xc0\x81\xa7\x69\x34\x1a\xef\x39\x40\xac\x2d\x00\
+\xa6\x67\x1c\x09\xf0\xe8\xa3\x21\x1b\xc0\xdb\x10\xe1\xb9\x76\x01\
+\x77\xce\x07\x47\xcf\xe9\x94\x2a\x20\xba\x7b\xa5\x47\xef\x89\x0e\
+\x9c\x76\x21\xba\xdc\x82\xaf\x22\x2e\xf1\x3c\x02\x1b\xbe\xba\xb1\
+\xea\x50\xd0\x3e\x88\x80\x78\x3c\x4e\x2a\x91\x24\x93\x4d\x73\xc3\
+\xbe\x7d\xdc\x7e\xfb\xed\x8c\x0c\x8f\x84\x80\xe0\x7d\xef\xb0\xfa\
+\x80\x6f\xfd\xd3\xb7\x7e\xea\x60\x58\xd3\x37\x9b\x9e\x9e\xf6\x83\
+\x41\x61\x43\x2e\xa0\xbb\x03\xfa\xda\x91\x06\xde\x86\x7b\x9b\xdd\
+\xdd\x38\x1f\x08\x74\xed\x07\xe5\x01\x42\x0a\x1c\x6b\x22\xa0\x1e\
+\x42\x6c\x63\x10\x18\xaa\x7b\xc2\x83\x24\x94\xff\x3e\x41\x09\xd4\
+\xb5\x21\x94\x24\x00\xdc\xa0\x31\x2a\x1c\xe0\x0a\xfc\xcf\xb9\x67\
+\xef\x1e\xee\xbe\xfb\x6e\x76\x5d\xbb\x8b\x58\x34\x46\x2c\x1a\x43\
+\x37\x74\x8f\x9f\x0c\x3d\x17\x14\x8f\x3f\xfe\xf8\x4f\x45\x3a\xac\
+\x39\x00\x14\x8a\x47\xbf\xf0\x05\xa4\xc2\x65\xf5\x64\x80\xc7\x77\
+\x2e\xb4\x92\x2e\xe3\x47\x50\x94\x07\x36\x91\xee\xe9\x0b\x81\x47\
+\x76\xc5\xb3\x24\xac\xdf\xb1\x15\x52\x84\x45\x3e\x2e\xbb\xa8\xa4\
+\x40\x09\xd7\x46\xe8\xe1\x1d\xba\xae\x64\xc0\xf6\xf0\xb8\x88\x20\
+\xb0\x60\x15\x95\x14\xa4\xb1\xbb\xd2\x2e\x97\xcf\xb1\x73\xe7\x4e\
+\x36\x8d\x6f\x62\x64\xc3\x08\xdb\xb6\x6e\x63\x68\x64\xc8\x77\x61\
+\x41\x75\x39\x0e\xe5\x90\x55\xfb\xf7\x3f\xc9\xb6\x6d\xdb\x00\xf8\
+\xe5\x5f\xfe\xe5\x35\xdb\x27\x63\x2d\x01\x10\x12\x81\x2a\xa8\x1b\
+\xbb\x22\x94\xc0\x86\xab\x50\x90\x27\x4c\xcc\x48\x25\x1d\xb4\x76\
+\x35\x41\x40\x4f\x07\x9f\xe3\x5e\x53\x11\x36\xec\xba\x9c\x82\x1b\
+\x74\x90\x84\x37\x92\x2e\xa8\x58\xc5\xc8\x54\xbe\x0a\xa2\x47\xaa\
+\xd0\x05\x8b\x7b\xa2\x9c\xbf\xa5\xef\x21\x2c\x17\x96\x39\x5c\x38\
+\xcc\x21\x75\x08\x5d\xd3\x49\x24\x12\x44\xa3\x31\xb6\x6d\xdb\xc2\
+\x1d\x77\xdc\xc9\xad\xb7\xde\x4a\x50\x37\x28\x05\x0f\x3d\xf4\x30\
+\x27\x4e\x1c\x5f\x73\x15\x60\xac\xed\xcb\xab\x9e\x64\x0f\xe9\x83\
+\x81\x55\xf4\xbc\x27\xc2\x83\xc6\x5a\x57\x77\xd3\x65\xfb\x42\x9b\
+\xb2\xd2\xff\x5f\xed\x84\x06\x0d\x32\xe8\x0d\x3a\x75\x81\xd5\x0b\
+\x08\xe1\xab\x1d\x07\x38\x61\x10\x7b\x48\x14\x61\xc0\xf8\xbf\xbb\
+\x6a\x44\xb8\xef\x61\xd9\x16\x95\x4a\x15\xa8\xb0\xb8\xb8\xc0\xe1\
+\xc3\x2f\x23\xa5\x22\x9f\xef\xe3\xce\x3b\xee\xe2\xd6\xdb\x6e\x61\
+\xe7\xae\x5d\x21\xee\x61\x2d\x97\xb6\xb6\xdb\xdf\xb5\xf4\x83\x3e\
+\xb7\x74\xdd\xb4\x90\xdb\xe5\xd1\xb8\x4a\xad\x20\x81\x84\x2f\xf2\
+\x83\xcc\xa0\xb7\x25\x1e\x90\x44\x98\xb4\x51\xdd\xd7\xf0\x4e\xbe\
+\x6b\x3e\x04\x5c\xc9\x80\x81\x16\x04\x8a\xeb\x86\xa2\x04\x1e\x85\
+\xa0\xfc\xf7\x50\xbe\x9b\xe9\x7f\x27\xc2\xb6\x06\xa1\x58\x05\x5d\
+\x95\xe6\x1b\x37\x84\x0c\x59\x50\x2c\x2f\x97\x78\xe2\x89\xc7\xf9\
+\xf2\x6f\xfe\x87\x10\x88\xdf\xd7\x12\x40\x10\x3c\x55\x81\x5c\x50\
+\xf0\x2f\xa6\x77\x4d\x84\xbf\x49\x61\xeb\xdc\xdf\x0b\xa9\x10\xee\
+\x49\x13\x01\x23\xcd\x11\xbd\xca\xdf\x65\xff\x35\x3d\x2e\x01\x9f\
+\x16\xec\x1a\x9d\x01\x02\x29\x74\xe2\x83\xd2\x43\xb8\x80\x5b\xb1\
+\xb1\x8a\xb0\x10\x53\x1e\x15\x00\xb6\x43\x60\x75\xf9\x0a\xe1\x7b\
+\x0d\x41\xe0\x2a\xdf\x0e\xea\x01\x15\x5d\x6f\xe1\x4a\xad\x35\xb6\
+\x01\x82\xa7\xd1\x63\xdf\xba\x27\xce\x37\xd8\x90\x48\xd7\xf8\xf1\
+\x2f\x66\xe8\xa4\x04\x6e\xf7\xbe\xbe\x62\xc5\x26\xfa\x5c\x80\x50\
+\x08\xe9\x4a\x09\xd9\xdd\xf8\xde\x13\x1b\x0a\x4b\x13\xb6\x57\x54\
+\x8f\x4a\x90\x4a\x21\x5c\xcb\xdd\x37\xf4\x44\x97\xe5\x0c\xba\x88\
+\xf4\xaa\x97\xa0\x19\xe1\x8b\x48\xe9\x27\xc4\x08\x8f\x83\x50\x5c\
+\x31\x10\x18\x6b\x6c\x02\x84\x09\x20\x15\xb8\xe0\x84\xc9\x16\xcf\
+\xe5\x0b\x06\x72\xfc\x0c\x62\xd4\x8a\x00\x8f\x08\xbd\xbe\x5a\x79\
+\xca\x7a\x80\xe3\xe8\x6f\x11\xc8\x39\xec\x49\x51\x17\x9e\x3e\xf1\
+\xa4\x46\xf0\x35\x94\x0f\x20\x82\x36\x41\x0f\x88\x56\xda\x1d\x84\
+\x3e\x8b\x52\x3d\x34\x72\x20\x2a\x19\x52\x1d\x57\x6e\xff\xd7\x58\
+\x02\x74\x6d\xeb\x9e\x2f\x4f\x40\x2c\x07\x2e\x64\x48\x14\x06\x02\
+\xb6\x81\x44\x11\x7c\x10\x38\x96\xbe\x92\x4e\x9c\xc0\xb6\x6d\x84\
+\x10\x08\x21\x7c\x96\xd0\xf7\xb3\xdd\x08\x5f\xd0\x3d\x43\xf5\x8a\
+\x77\x8f\x0d\xec\x02\xab\xfb\xff\x41\x56\xcf\xcb\x27\x00\x25\xc2\
+\x46\x21\xc1\x70\xb4\x97\xfc\x42\x20\xd4\x4d\x6f\xd6\x52\x40\xed\
+\x78\xd1\x50\xa9\xae\xa4\x06\x58\x6b\x09\xe0\x26\x61\xf8\xdf\x29\
+\xcc\xf2\x05\xd5\x84\xf2\x4f\x99\xab\x03\x7a\x7c\xe9\x2e\x6f\x10\
+\xb8\x88\x52\x61\x59\x16\xd3\xd3\xd3\x74\x3a\x1d\xd2\x99\x34\x99\
+\x4c\x86\x78\x34\x1e\xd0\xa4\x32\x70\xd2\x03\xec\x23\xe1\xcd\xf7\
+\x6c\x86\xd5\x5c\xcb\x20\x72\xa5\xea\x66\xa8\x2a\x29\x3c\x7f\x34\
+\x04\x70\x9f\x82\xf6\xad\xcf\x80\x44\xec\x71\x6f\x7b\xd3\xd7\x84\
+\x13\xf3\xbe\x4a\x00\xe0\x67\xde\xc8\x90\xff\xae\x3c\xe2\x43\x06\
+\xd5\x02\x21\xa3\x6c\xe5\x29\x54\x81\x8b\xd8\x15\xdf\x96\x65\xd3\
+\x6c\x36\x49\xa5\x52\xa4\x53\x69\x9a\xf5\x06\x85\xa5\x02\x7d\xb9\
+\x1c\xf1\x58\x0c\x21\x44\x00\x58\x1e\x61\xd4\x93\x23\x10\xf4\x1a\
+\x82\x61\x6b\x15\x74\x49\x03\x61\x6b\x9f\x2f\x50\xab\xd2\xd6\x41\
+\x23\x33\xe8\xba\x06\xa5\x1b\x81\xa0\x98\xfb\x20\x87\xb8\x0a\x5d\
+\x89\xf7\x39\x00\x24\x0a\x21\xc2\x95\x3f\xfe\x26\x06\x5d\xbd\xd5\
+\x4e\x47\xc8\x75\x08\x18\x7b\x21\xc6\x0f\x34\x4d\x60\x99\x26\xe9\
+\x74\x9a\xcd\x9b\x37\x73\xfb\xed\xb7\xf3\xda\x6b\xaf\x31\x31\x31\
+\x41\xa9\x58\x24\x9b\xc9\x10\x8d\xc5\xd0\x74\xad\x47\x35\x04\x14\
+\x54\xc0\x32\x0b\x7e\x46\x11\xa8\x64\x72\x09\xdc\x80\x6e\xf7\x5c\
+\xc1\xb0\xfb\x19\x92\x04\xbd\x06\x7d\x40\xb9\xcb\x00\x57\xa0\x94\
+\x4b\x93\x06\x33\xa3\xae\x06\x1b\x40\xac\x12\x43\x57\xab\x30\x82\
+\x9e\xc5\x1f\xbc\x46\x3e\xe1\xe3\xe6\x05\xa8\x5e\xa6\x10\xb0\x2c\
+\x93\x8e\xd9\xc1\xb4\x2c\xe2\xf1\x38\xad\x56\x8b\x72\xb9\xcc\xe7\
+\x3e\xf7\x39\x4e\x9d\x3a\xcd\xe1\xc3\xdf\x67\x62\xe2\x08\xc5\x62\
+\x91\x64\x32\x41\x3c\x9e\x08\xfb\x12\x01\x69\x22\xa5\x93\x9b\x88\
+\xd0\x02\x6e\x1a\x7e\x8c\x20\x40\xf3\x07\x72\x13\x09\x4b\xb7\xa0\
+\xf5\xd2\x4b\x62\x09\x15\x32\x4c\xc3\xea\x45\xad\x20\xb1\xae\x0e\
+\x37\x30\x64\x1b\x75\x45\x6c\x57\xff\xca\x00\x3f\xe0\xc5\xf0\x1d\
+\xc3\x4d\xd0\xcd\xf1\x0b\xb3\x6b\x5d\x1d\x5d\x2a\x95\x29\x2c\xcc\
+\x93\x33\x0c\x6a\x95\x0a\x0f\x3c\xf0\x00\xcf\x3e\xfb\x2c\x9b\x36\
+\x6d\x62\xd3\xa6\xcd\xd4\xeb\xe3\xe4\x72\x1f\xe0\xd4\xa9\x17\x79\
+\xf3\xcd\x09\x16\x16\x16\xc9\xf5\xe5\x88\x27\xe2\x80\xa0\xd3\x69\
+\xd3\x6e\xb7\x91\x52\xa2\x09\x0d\xdd\xd0\xd1\x35\x0d\xa1\x69\x7e\
+\x8a\x58\x28\x70\x14\x50\x25\x3e\x7a\x7a\x0c\x3d\x7a\xd8\x47\x8f\
+\x01\x45\x8a\x90\xeb\xdb\xcb\x50\x2a\xe9\xb8\x93\xf4\x18\xc2\xef\
+\x73\x1b\x80\x90\x6b\x17\x94\x06\x41\x96\x4c\xd1\x4b\xb0\x84\xc3\
+\xb5\x41\x82\xcf\xbf\xc0\x52\xd1\xa8\xd7\xd8\x9d\x4c\x32\x90\x4e\
+\x73\x21\x12\x61\xeb\xd6\xad\x8c\x8c\x8c\xf0\xca\x2b\xaf\xf0\xf1\
+\x8f\x0f\xb1\xb0\x30\x4a\xa1\xb0\x9d\x1b\x6e\xb8\x99\x9b\x6e\x7a\
+\x83\x33\x67\x0e\x71\xe2\xc4\x49\x16\x16\x16\xfc\xcd\xdd\xb4\x69\
+\x13\xc9\x64\x92\x66\xb3\x49\xa9\x54\xa2\xde\x68\x60\x59\x16\x9a\
+\x10\xc4\xe2\x71\x62\xb1\x58\x57\x05\x89\x70\x8a\xb9\xe3\x0d\x48\
+\xc2\xe2\x24\xcc\x33\x20\x55\x20\xb0\x14\x60\x1d\xe9\x51\x01\xc1\
+\x60\xd2\x55\xe3\x06\xf6\x1a\x58\x6e\xb4\xc4\xdf\xfc\xa0\xd8\x0c\
+\xaa\x82\x1e\x9f\x39\xc8\x1d\x04\x09\x1a\xab\xd3\xa1\x3f\x1e\xa7\
+\xd9\x6e\xb1\x6d\xcf\x75\xc4\xe3\x71\xb6\x6f\xdf\xc1\xab\xaf\xfe\
+\x80\x4a\xa5\xc4\xd0\x90\x62\x7a\xda\xe6\xb9\xe7\xc6\xb0\xac\x8d\
+\x0c\x0e\xee\x63\xfb\xf6\xfd\xcc\xcc\xfc\x7f\xdc\x78\xe3\x8d\x7c\
+\xf4\xde\x7b\xd9\xb4\x71\x23\xba\xa6\x91\x48\x26\x11\x42\x50\x2a\
+\x95\x38\x77\xee\x1c\x47\x8e\x1c\xe1\xe8\xd1\xa3\x2c\x2c\x2c\x90\
+\x88\x27\x48\x24\x13\x68\x42\x73\x75\xf7\x25\x36\x31\xa8\xd7\x7d\
+\x0a\xd8\xc5\x8e\x08\x67\x42\x85\x58\x21\x14\x32\xa0\x15\xc4\xd5\
+\x24\x01\xba\x21\xdf\xc0\xe9\x27\x40\xda\xa8\xb0\xf1\x23\x95\x13\
+\x1a\x0e\x06\x5f\xc2\xc4\x4a\xd7\xf7\x37\x4d\x93\x98\x61\x30\xdd\
+\x69\xb3\x63\x74\x0c\xcb\xb2\xc9\xe7\x72\x94\x4a\x25\xca\xe5\x12\
+\xf9\x7c\x87\x7b\xee\x99\xe5\x86\x1b\x0c\xa6\x26\x73\x4c\x4e\x0d\
+\x61\xdb\xa3\x6c\xdb\xb6\x8d\x5f\xfc\xc5\x5f\x64\xc7\xce\x1d\x44\
+\x23\x51\x0c\x5d\x77\x7d\x70\xc9\x86\x0d\x23\xec\xd8\xb1\x93\x3b\
+\xef\xbc\x93\xc9\xc9\x49\x5e\x7d\xf5\x55\x5e\x79\xf9\x65\x26\xa7\
+\xa6\xd0\x75\x9d\x58\x2c\x46\xc4\x88\xf8\xf9\x8b\x5e\x8e\x63\xe8\
+\xd4\xab\x95\x81\x2a\xd4\xca\x08\x67\xf0\x76\x38\x16\x01\xea\xaa\
+\x60\x02\x03\x39\xf7\x21\xd6\xcf\x0b\xec\x08\xe5\x07\x74\x44\xe0\
+\x44\x28\xcf\xdf\x96\x2e\x2d\x1c\x94\x04\xee\x7d\xb6\x6d\x22\x4c\
+\x93\x28\xd0\xb4\x6d\x12\xae\x11\x28\x34\x41\xa7\xd3\xa1\x52\xa9\
+\xa0\x69\x9a\xa3\xdf\xb5\x3a\x63\xe3\x25\x72\xf9\x59\x0e\x1f\x7e\
+\x83\xfe\xfe\x7e\x36\x6c\xd8\x00\x0a\x3a\x9d\x0e\x26\x38\x15\xa8\
+\xee\x2f\x4d\xd3\xe8\xeb\xeb\x73\x32\x86\x77\xef\xe6\x23\xf7\xdc\
+\xc3\xdf\x7c\xe3\x1b\xbc\xf4\xd2\x4b\x34\x1a\x0d\x34\x5d\x23\x95\
+\x4c\x21\x84\x93\x9f\x20\x7b\xdc\xbe\x50\x4c\x21\xc0\x09\x48\x7a\
+\xe8\x65\xd5\xcd\x03\xf0\xd5\x9d\x17\xb5\x12\x57\x8b\x04\x08\x5c\
+\x94\x20\x81\xb3\x82\x05\x53\x81\x70\xb1\x17\x37\x20\x9c\x1c\xe2\
+\xb1\x6f\x28\xb0\x6d\x09\xb6\x4d\xc3\x34\x69\x02\xcd\x66\x93\x76\
+\xbb\x85\x69\x9a\x08\x21\xa8\xd7\x6a\xc4\x62\x31\x6a\xb5\x1a\xb6\
+\xed\x70\x05\x85\xc2\x22\xa5\xd2\x49\x6e\xbc\xf1\x83\x18\x86\x81\
+\x69\x9a\xee\xa6\x77\xaf\x76\xf0\x36\x02\x04\x82\xd1\xd1\x51\xf6\
+\xee\xdd\x4b\xb5\x5a\x65\xe7\xce\x9d\x3c\xf1\xc4\x7e\xea\xf5\x3a\
+\xc9\x44\xb2\x6b\x14\x06\x89\x4d\xff\x0f\xe1\x04\x87\x7a\xbe\x67\
+\x88\x31\x94\x5d\x43\xd1\x63\xa3\x83\xa0\x7f\x9f\xdb\x00\x84\x73\
+\xf9\x3d\x1d\xb8\xe2\xa2\x28\x3f\x2e\xe2\xcb\x83\x15\x46\x60\x57\
+\xf9\x4b\xe9\x24\x96\x36\x80\x57\xa4\x44\xe6\x72\x1c\x99\x98\x20\
+\x93\xcd\x50\xaf\x37\xd0\x75\x9d\xd7\xdf\x78\x83\x44\x3c\x8e\x52\
+\x8a\x4a\xa5\x42\xad\x56\x23\x97\xcb\xb1\x69\xd3\x35\xec\xd8\xb1\
+\x03\x29\xa5\x9f\x0d\xe4\xec\xb9\xf0\x7f\xf7\x82\xc1\xb2\x2d\x16\
+\x97\x96\x18\x1d\x1d\xe5\xe7\x7f\xfe\xe7\xc9\xe7\xf3\x7c\xed\x6b\
+\x5f\xa3\x63\x76\x30\x74\xe3\x12\x65\x6d\xdd\x08\x54\x28\xeb\x88\
+\x20\x45\xdc\xab\x12\xba\x86\x83\x12\x57\x05\x00\x42\xe4\x7f\x98\
+\x0f\xf0\xdc\x9e\xc0\x17\x0f\x79\x01\x04\x58\x38\x64\x88\x35\x53\
+\x4a\xd1\x6c\x35\x89\x25\x93\xdc\x70\xdb\x6d\xdc\x74\xd3\x4d\x3c\
+\xfd\xf4\xd3\x7c\xff\xfb\x87\x50\x4a\x52\x2e\x97\x49\x24\x12\x24\
+\x13\x49\xe2\xf1\x28\xa3\x1b\x46\xd9\xbe\x7d\x1b\xa9\x74\x9a\x78\
+\x3c\x4e\x7f\x7f\x3f\x9d\x4e\xc7\xdd\x60\xe5\xfe\x16\x01\x10\x38\
+\xa8\xf0\x6e\xd6\xeb\x75\x2e\x5e\xbc\xc8\x07\xae\xbf\x1e\xdb\xb6\
+\xb9\xeb\xae\xbb\x38\x7e\xfc\x38\xcf\x3f\xff\x02\x7d\xd9\xac\x1f\
+\xf7\x76\xec\x01\xd1\xf3\x3d\x65\x58\x16\x2a\xe7\xac\x77\x6d\x04\
+\x81\x52\x76\x98\x7d\x14\x57\x8e\x09\xba\x42\x6e\x20\x2b\x22\x80\
+\x5e\x02\x40\x20\x0c\x14\x38\x11\xc1\x5a\x3d\x11\x22\x47\xa4\x72\
+\xf4\xff\xf2\x72\x91\x1b\xf7\xed\xe3\xa1\x87\x1e\x22\x93\xc9\x20\
+\xa5\xe4\x47\x3f\x3a\x42\x2e\x97\xe3\x23\x1f\xf9\x08\xb9\x5c\x0e\
+\x5d\x37\xe8\xef\xcf\x93\x48\x24\xb0\xa5\x44\xd7\x34\x74\x5d\xf7\
+\x0d\x48\xa7\x82\x58\xa0\x69\xab\xab\x00\xef\xf6\xd4\xd4\x24\x95\
+\x72\x99\xf1\xf1\x71\xcc\x4e\x07\x84\xe0\x9e\x7b\xee\xe1\x95\x57\
+\x5e\xa1\x63\x76\x88\x46\x22\x7e\x0c\x43\x21\x03\x01\x1d\x85\xf2\
+\xcb\x94\x55\x17\xec\x1e\x35\x8c\x97\x05\xd5\xcd\x8d\xe8\x35\x20\
+\xdf\xf7\x2a\x40\x08\x15\xf2\x85\x83\x99\xc1\xde\x49\xd1\x34\x0d\
+\xdb\xb6\xbb\x46\xa0\x90\x21\xab\x38\xe4\x2b\xa3\x30\x2d\x1b\xd3\
+\x34\xd9\xb5\x6b\x17\xa9\x54\x0a\x29\x25\xbb\x76\xed\x62\xdb\xb6\
+\x6d\xc4\xe3\x71\xa4\x6d\x83\x10\x18\x86\x8e\x52\x8a\x76\xbb\xed\
+\x80\x47\xd3\xe8\x74\x3a\x4e\x1a\x94\xd0\x5c\x69\x1f\x38\xf5\xab\
+\x00\x40\x4a\xc9\xd1\x63\xc7\x48\xa7\xd3\x0c\x0c\x0c\xd0\x71\x6d\
+\x8c\xf1\xf1\x31\xae\xdd\x7d\x2d\x6f\xbc\xfe\x86\xdb\xc9\x44\xad\
+\x68\x6b\xe3\x43\x5e\x76\x2b\x88\x56\x64\x29\xaf\xa0\xa7\x03\xa4\
+\xd7\xfb\x5e\x02\x84\x6a\xf4\xc3\x01\x13\xef\x82\x0d\x6c\xde\x44\
+\x24\xdd\x8f\xd5\xaa\x62\x55\xcb\x74\xea\x0d\x5a\xed\x36\x9d\x8e\
+\x09\xb6\xdd\x43\x04\x39\xcf\x89\xe8\x3a\x11\x23\xc2\xe4\xe4\x24\
+\xfb\xf6\xed\x23\x12\x89\x02\x0a\x4d\xd3\x68\xb7\x3b\xbe\x05\x65\
+\x59\x16\x9a\xe6\x66\x1f\x29\x85\xae\xeb\x20\x04\xb6\x52\x28\x69\
+\x21\x34\x11\x2a\x0a\x0d\x22\x41\x38\x16\x20\xd5\x6a\x95\xd3\xa7\
+\x4f\xb3\x6b\xe7\x2e\x22\x91\x88\x6f\x64\x0a\xa1\x71\xdd\x75\xd7\
+\xf1\xea\x0f\x5e\x75\x19\x4b\x11\xa2\x81\xbb\x99\x41\xaa\xe7\x74\
+\xe3\x83\xc1\x8b\x01\x84\x12\x53\x82\x61\xef\xab\x21\x1c\x1c\x0a\
+\xf4\x84\x48\x13\x67\x3b\xaf\xfd\xc8\x27\xe9\x68\x1f\x66\xe6\x94\
+\xa2\xd8\x9a\x47\x25\xce\x93\x1c\x3c\x4b\x3e\x72\x11\xbb\xb5\xc8\
+\xfc\xd9\x73\xbe\xd7\x20\x04\x48\x5b\x21\x74\x9d\x81\xa1\x21\x5e\
+\x7a\xe9\x30\xb6\x6d\xf3\xb1\x8f\x7d\x8c\xfe\xfe\xfe\x50\x45\xb1\
+\xa6\x69\x98\xa6\x49\xbb\xd3\xf6\x0d\xb5\x56\xbb\x45\xa7\xdd\x21\
+\x62\x18\x44\xa3\x51\x84\xa6\xf9\x3c\xbf\x61\x18\xc4\x22\x51\x34\
+\x5d\x0b\xd9\x30\xc7\x8f\x1d\xa3\x5e\xab\xb3\x7d\xfb\x76\x6c\xcb\
+\xf6\x81\x2d\xa5\xa2\x5e\xab\x3b\x92\xc5\x96\x08\x07\x69\x01\xdb\
+\x45\xf5\x34\xa8\x50\xdd\x6c\xe5\x20\x11\x26\x59\x35\xe0\x75\x55\
+\xb8\x81\xc1\x6c\xdf\x50\xc2\x44\x80\x19\x34\x3b\x70\xfe\x4c\x82\
+\x4e\xdb\x60\xf3\x07\xf2\x34\x6b\xbb\xa9\x97\x15\x76\xa4\xc3\xe6\
+\x0f\x96\xb9\xe6\x96\xef\xb2\x74\xfe\x08\xb5\x62\x15\xc3\x80\x56\
+\x65\x99\x56\xb9\x42\x34\x12\x21\x12\xd5\x79\xe9\xa5\x97\x58\x5a\
+\x5c\xe4\x91\x4f\x7d\x8a\x64\x2a\x85\xa1\x69\x54\x2a\x15\xaa\xd5\
+\x2a\x9a\x94\x18\x08\x9a\xad\x26\xed\x46\x83\x54\x2c\x4a\x22\x12\
+\xa5\xd4\xe9\xd0\x6a\xb7\x51\x52\x12\x8b\xc5\x88\xc6\x62\x10\x8d\
+\x42\x34\x4a\x2c\x9d\x26\x93\xcd\x92\x4c\x24\x68\x35\x9b\x4c\x1c\
+\x3d\xca\xf8\xf8\x38\xf9\x7c\x1e\xcb\xb2\x7c\xbf\x7d\x62\x62\x82\
+\x97\x5f\x7e\x39\xa0\x36\x56\x5a\xf4\xa1\x9a\x44\x41\xb7\x28\xa6\
+\x87\x2c\xea\x06\x98\xc2\x01\xa5\xab\x40\x02\xd0\xc3\x74\x75\x81\
+\xee\x19\xc7\x17\x5e\x7e\x8a\x2d\xb7\xd4\xb1\xcd\x0e\xed\x86\xc6\
+\x4d\x9f\xfa\x0c\xe7\x26\xd2\x1c\x3b\x14\xe3\x1b\xbf\x3f\xc2\xd8\
+\xb6\x4f\xb3\xe3\xc6\x0f\x33\x74\x9d\x20\x3b\x94\xa5\xbc\x54\xa4\
+\xb6\x30\x89\xd9\x3c\xcb\x70\xe7\x4d\xc6\x77\x4f\x32\x73\xf1\x4d\
+\x9e\x7c\xe2\xbf\xf1\xc1\xeb\xf7\x91\x10\x1a\x11\x29\x19\xcb\xe5\
+\x88\xeb\x3a\xc2\xb6\xc9\xf6\xf5\xd1\x37\x3a\x8a\xb4\x6d\xda\xed\
+\x36\x06\x10\x8f\x44\x40\x4a\xaa\x8d\x06\xa5\x6a\x95\x7a\xb9\x4c\
+\xbd\xd3\xa1\x6a\xdb\x2c\xc7\x62\xa4\x46\x47\x29\x35\x9b\x2c\x2e\
+\x2e\x72\xeb\xad\xb7\x62\x18\x06\x0a\x85\xd9\x31\x39\x73\xe6\x0c\
+\xcf\x3c\xf3\x0c\xd3\xd3\xd3\x24\x12\x09\xc7\x98\x94\x3d\x24\x8f\
+\xb7\xc9\x92\x50\xcc\x3f\xf0\xa0\x50\x08\x99\x9e\x92\xf7\xab\x44\
+\x05\x10\xae\xed\x0b\xf8\xbf\x9e\xab\x33\x7b\xea\x34\x33\x27\x4f\
+\x21\x22\x06\x99\xfe\x3c\xd7\x7f\xec\x56\x9a\xb5\x6b\x69\xd6\x60\
+\xfb\x0d\x8a\xc1\xf1\x38\x4a\x0d\x71\xee\x68\x07\xd3\x8c\x92\xcc\
+\x8e\x90\xce\x8d\x63\x64\x6f\x43\x37\xa0\x7f\x47\x8d\x1d\x1f\x9a\
+\xe2\x7b\xff\xf0\x15\x96\xce\x9c\xe6\x7f\xbc\xfb\x6e\x72\xc9\x34\
+\xb6\x65\x61\x08\x41\xcc\x30\xb0\x3a\x1d\xac\x76\xdb\xc9\xb8\x11\
+\x02\xdb\xb2\x90\xed\x36\xb6\x65\x91\x57\x92\x7c\x34\x8a\x14\x02\
+\x2b\x1a\xa5\xd1\x6a\x51\xa8\xd7\x38\xf6\xca\x2b\x3c\x37\x33\xc3\
+\xc6\xed\xdb\xd9\xb8\x71\x23\x42\x38\x0c\xe3\xd9\xb3\x67\x79\xfa\
+\xe9\xa7\xb9\x70\xe1\x02\xf1\x78\x1c\x5d\x37\xfc\xc2\x53\x15\x3e\
+\xfa\x21\x20\xc8\x15\x52\x91\x70\x3a\x5a\x4f\xa1\x8c\x12\xea\x2a\
+\x52\x01\x81\xd6\x30\x41\x6b\x39\xd4\x1a\xa6\xd3\xa1\x3c\x3f\xcf\
+\x89\x17\x5e\x20\x95\xeb\xe3\xb6\x07\x25\xe9\xd4\x24\x53\xc7\x4e\
+\x02\x16\x1b\x46\x4c\xd2\xb9\x14\x93\x27\xe6\x68\x95\xb3\x10\xdf\
+\x86\xc5\x16\x0a\x33\xa3\x98\x9d\x3d\xa0\x7f\x89\x89\x33\x7f\x46\
+\x65\xaf\x46\xaa\xb1\x84\xb0\x4d\x3a\xd2\xa1\x89\xa5\x6d\x83\x6d\
+\x23\xa5\x8d\xb2\x6c\x94\xed\xfc\x48\x29\x91\x96\x85\x92\xde\x7d\
+\x12\x65\xdb\xe4\xa5\x8d\x56\x28\xd0\x5e\x58\x20\xb3\x6f\x1f\xb1\
+\x58\x8c\x76\xbb\xcd\xc4\xc4\x04\xcf\x3d\xf7\x1c\xe7\xce\x9d\x23\
+\x95\x4e\x13\x71\xbd\x8c\x15\xc1\x2b\x37\xe0\x15\x56\x7f\xdd\xda\
+\x86\xd5\xc2\xc6\xa1\x22\xd4\xab\xc6\x08\x24\x18\xf0\x0a\x44\xc2\
+\x7c\xc6\xaf\xeb\x0b\x7b\x16\xf3\xb1\xef\x3c\xc5\x96\x7d\xb3\x34\
+\xab\x15\x66\xde\x3c\x85\x32\x6d\x3a\xad\x26\x9d\x4e\xc7\xb1\xe4\
+\x23\x11\x0c\x5d\x23\x1a\x4f\x10\x4f\xa5\xd8\xb0\xe7\x7a\x36\xec\
+\xfa\x28\x85\xc5\xeb\x78\x4d\xff\x15\xfe\xe1\x5c\x81\x3b\x86\x8e\
+\xb1\x35\x79\x8a\x58\xe1\x2c\xd2\x96\xd8\x96\x72\x36\x57\xda\xc8\
+\x1e\x00\xf8\xb7\xed\xee\xfd\x8b\xed\x36\xaf\x2f\x2c\xb0\x37\x16\
+\x23\x33\x39\xc9\xd4\xe4\x24\xa7\xcf\x9c\xe1\xd0\xa1\x43\xcc\xce\
+\xce\x92\xc9\x64\xd0\x34\xad\xcb\x5e\x0a\x42\xb6\x4d\x28\xc5\x2d\
+\x50\xfc\x21\x65\x38\xa4\x1d\x4c\x80\x11\xbd\x69\xe9\xe2\x6a\xb1\
+\x01\x44\x38\x08\x24\x10\x6e\x11\xe8\xca\x36\x6e\xa0\xa8\x2d\x15\
+\x38\xf2\xec\x77\x7a\xba\x8a\x75\x13\x30\xac\x76\x1b\x13\x68\xd4\
+\x1b\xb0\xb4\xc4\xcc\xf9\xf3\xa4\x0e\xbf\xc8\xc6\xeb\xf6\x71\xe7\
+\x27\x1e\x62\x61\xe1\xe7\xf8\x6f\x13\x37\x91\x9a\x99\x61\x47\xed\
+\x3b\x6c\xcf\x9e\x20\x57\xfa\x11\x51\xab\x84\xb2\x3a\x48\xcb\x46\
+\xda\x4e\xb0\xa9\x7b\xf2\x5d\x00\x48\x1b\xd3\xb4\x38\xdc\x6c\xd2\
+\x68\xb7\xb9\x63\x60\x80\xf9\xf3\xe7\xf9\xdb\xaf\x7f\x9d\xc5\x52\
+\x89\x66\xab\x45\x26\x9d\x41\xe8\x9a\x6f\xc8\x84\x52\xc8\x7b\x03\
+\x5e\xdd\x83\xdf\x85\x7b\x4f\x98\x7b\xb5\x08\xa1\x12\xea\x2a\x4a\
+\x0b\x0f\xe9\xc4\xa0\x3a\xa0\x27\x4a\xd8\x8d\x0c\xd2\x73\x61\xbc\
+\x90\xaa\xf2\x7a\x72\xb8\x21\x38\xef\xa2\x57\x97\x0a\x1c\x7f\xe1\
+\x59\x16\xdf\x3c\xca\xae\x3b\xef\x60\xd3\x23\x3f\x87\xd2\xef\x64\
+\xfa\x87\x9f\x65\x76\xa1\x44\xa6\xf8\x02\x83\x95\xc3\xe4\xa3\x73\
+\xa4\xec\x45\xf4\x7a\x01\x55\x2f\x21\x9a\x15\x84\xb4\xdc\x94\x30\
+\x81\x25\xe1\xa4\xb4\x39\x63\x5b\x6c\x10\x82\x85\x72\x85\x1f\x45\
+\x22\x34\x06\xb2\x24\xfb\xd3\xa4\x54\x86\x4e\xbd\xed\x04\xa2\x54\
+\xb7\xbc\x4c\xac\x56\xd8\x1a\xf0\xfd\x43\x4d\x2b\x42\xd2\x40\x85\
+\x5a\xdf\xaa\x60\xb2\xd1\x55\x93\x0f\xe0\xd3\x9c\x81\xe4\xcb\x50\
+\xc5\x40\x57\xe1\xc9\x5e\xcb\x98\x6e\xa5\xad\x9f\x2a\x2e\x02\x59\
+\xbb\x2e\x62\x3c\x09\xbc\x30\x33\xcb\xc2\xdf\xfd\x3d\x9a\xf1\x2d\
+\xb6\x7c\xf0\x76\x62\x99\xdd\xb0\xe1\x46\x8a\x83\x3f\xcf\xd4\xdc\
+\x67\x31\xaa\x73\xf4\xb5\xce\xd0\x6f\x1e\x27\xdb\x38\x49\xb4\x32\
+\x85\x5a\x9e\x87\xe2\x22\x86\x66\xb2\x2c\x2b\xfc\xb3\xdd\x60\x09\
+\x8d\x48\x2a\xc7\xdc\xd8\x18\xc9\x1b\xff\x07\xb6\xc4\xef\xc5\xd0\
+\xe6\xc1\x3e\x89\xd9\x3a\x45\xab\x36\xcd\xf4\xf1\x13\x2e\xe9\x24\
+\xbb\x35\x07\xfe\xb7\x0d\x8a\x78\x19\x2e\x05\x0a\x66\x46\xf5\xa8\
+\x46\xff\x08\x78\xd9\x47\x57\x4b\x30\xa8\x57\x2f\x86\xbb\x6f\xc8\
+\x70\xaa\x54\xa0\x12\x38\xc8\x9f\xab\x5e\xaa\xb5\xc7\xa8\x0c\x16\
+\x6f\x58\xa6\xc9\x99\x57\xbe\x8f\xa1\xbd\xc8\xe0\xd8\x38\x3b\x3f\
+\x74\x17\xe2\x9a\x31\xea\xb5\x31\x8a\xcb\x63\x9c\xac\xdc\x48\xa7\
+\x92\x43\x6f\xd7\x49\x36\x2f\x12\x5d\x3a\x85\xb2\xdb\x9c\x2d\xc3\
+\xd9\xf9\x0e\x42\x2f\x31\xb3\xd1\xe4\xe6\x4f\x5f\xcf\xb5\x37\x7f\
+\x84\x33\xaf\xc7\x88\x44\x35\x14\x0f\x93\x48\x59\xf4\x0d\x95\x29\
+\x4e\x7d\x97\xb9\xb3\xff\xcc\xf2\xe4\x49\x26\x4f\x9d\x46\xb6\x5a\
+\x81\xba\x85\x55\x32\x84\xe9\x51\x0d\x21\x43\x30\x68\x2f\xf4\xaa\
+\xc5\xab\xc1\x08\x54\x01\x2e\xa0\x27\xbc\xab\x7a\xaa\x84\x82\x85\
+\x5b\xab\x96\x79\xa9\x6e\x3a\xb6\xdf\x57\x40\x85\xad\x6a\x01\x48\
+\xcb\xa2\xad\x14\x53\x67\xcf\x31\x75\xe6\x0c\xc2\x30\x48\xf5\x0f\
+\x90\x1d\xdc\x40\x76\x68\x9c\xe4\xb6\x31\x8c\xf8\x08\x36\x63\x58\
+\xea\x7a\xa4\x3d\x40\xee\xd4\x0f\xf9\x97\x7b\xc7\x68\x56\x05\x85\
+\x19\x83\xe5\xe9\x51\x9e\x3f\x1b\x43\x49\x41\x2a\xab\xe8\x1b\x14\
+\xb4\x6a\x11\xce\x1f\x1d\xc4\xec\x7c\x8a\xfc\xd0\x5d\xdc\xf4\xc8\
+\x1c\xd7\x4c\x3e\xc9\xb1\x17\x9e\x64\xf6\xdc\x39\xba\xd4\xbe\xea\
+\x91\x6c\xe1\x6a\xa0\x6e\x13\x8a\x9e\xa2\x98\x70\x16\xc5\xfb\x9f\
+\x0a\x0e\xb5\x43\x09\xd0\xa0\x21\xa3\xc8\x0b\x83\xf7\x36\x72\x0a\
+\x4a\x81\xc0\x46\xaf\xe6\x67\x07\x83\x67\x32\xe4\x4a\xb9\x27\xce\
+\xb4\x28\xcf\xcd\x51\x9e\x9b\x45\xa9\xd7\x1c\x8f\x22\x1a\x23\x3b\
+\x38\xc4\xd0\xc6\x31\x72\x83\xfd\xc8\xf2\x9b\x5c\xfc\x41\x86\x68\
+\x2a\x43\xcc\x88\x92\x1d\xde\x4c\x2c\x3d\x8e\x6d\x8d\x11\x49\xfe\
+\x1c\x8d\x6a\x96\x6c\x5e\x70\xc3\x47\x14\x46\x24\xca\xeb\xcf\x8e\
+\xf2\xca\x81\x31\xc6\x76\xdc\xc0\xc7\xfe\xcd\x67\x29\xcf\x3d\xc3\
+\xfc\x85\x13\xcc\x9e\x3e\xc9\xf4\xc9\x37\x31\xdb\xed\x70\x64\x2f\
+\x54\x4b\xe8\x85\x7f\x05\x01\x13\xd2\xa7\x86\xc5\xd5\x41\x05\x3b\
+\x39\x2e\x42\x85\x9b\x3c\x84\xaa\x7a\x5d\x35\x10\x2c\xd9\xc3\xab\
+\xb9\x53\x04\xf2\x01\xe8\x29\x17\x73\xc9\x92\x1e\x6a\x55\x89\x60\
+\xba\xb6\x5c\x21\x79\x82\x76\x86\xd5\x6e\x51\x98\xba\x48\x61\xf2\
+\x82\xdf\x9e\x46\x13\x3a\xb6\x65\x85\x4e\x60\x22\xdb\xcf\xb5\x77\
+\x3e\x40\x76\xf8\x4e\x9a\xb5\xbb\xf8\xee\xd7\xf3\x68\x3a\xd4\x4a\
+\x20\x6d\x78\xf5\x40\x84\x23\xcf\xef\x61\xd7\x2d\x3b\x18\x1c\xab\
+\xb0\xf3\xe6\x45\x16\x2e\x7c\x9b\x73\x3f\x7c\x96\xa5\x0b\x17\x59\
+\x9c\x99\xe9\xe9\x6b\xd8\x65\xc6\x05\x76\xb7\xce\x80\x80\x7d\x24\
+\xaf\x0a\x00\x38\x09\x12\x7e\x1b\x57\xc2\x8d\x9a\x82\xc6\xa1\x5a\
+\x71\x4a\xbc\x26\xd1\x5e\x34\x2f\xf0\x1a\x52\x85\xe3\xe9\x32\x70\
+\x8a\xe4\xca\xae\x22\xc1\x46\xd3\xac\xda\xdf\xa7\x4b\xcd\xd9\xd2\
+\x0a\x77\x0a\x51\x8a\x5a\x71\x91\x37\x0e\xfc\x57\x32\xb9\xa7\xd8\
+\x7b\xcf\x3d\xec\xb9\xed\x0e\x3a\x9d\x7b\x79\xf5\x99\x21\x32\x79\
+\xc5\x7f\xf7\x9f\x24\x95\xc5\xf3\x9c\x79\x7d\x9a\xe5\xd9\x51\xe6\
+\x2f\x6c\x47\x68\x9f\x67\xc7\xad\xbf\xc4\xcd\x0f\xff\x90\xd7\x0f\
+\xfc\x09\x6f\xbe\xfc\x32\xcd\x7a\xa3\xa7\xc0\xc5\xcd\x21\x58\x2d\
+\x50\x76\x35\x18\x81\xa1\xf4\x66\xaf\x43\xb8\xbf\x75\x5e\x63\x28\
+\xc2\x9b\xe2\xef\x5a\x90\x5c\x97\x3d\x8f\xe9\x2d\x1d\x93\x2b\xab\
+\x8d\x02\x69\x59\xa1\xac\xdb\x15\xed\x62\x09\x87\x6a\xe9\x6d\x14\
+\xe5\xe6\x20\x98\x1d\x96\x17\x96\x78\xfe\xbf\xfe\x2d\x9a\xf1\x8f\
+\xec\xfb\xd8\x27\xb9\xe3\x91\x7f\xcd\xfc\xc5\x1b\x29\x2f\x80\x50\
+\x2f\x71\xf4\xf9\x3f\x22\x3b\x34\xc6\xce\x9b\x1f\x20\x3f\xfa\x31\
+\x0a\x33\x5b\x39\x7f\xec\x7e\x76\xdd\xba\x81\xfc\xd8\xff\xcb\x73\
+\x5f\xff\x2f\x7e\x4b\x99\x9e\x37\x5f\xd1\xc4\xe2\x4a\xe5\x84\xad\
+\x7d\x65\x90\x82\xcf\x7e\xf6\xb3\x2c\x2d\x2d\x71\xe1\xc2\x45\x2e\
+\x5c\x38\x8f\x69\x9a\x21\x29\x20\x08\x4b\x04\x19\x0c\x21\xf7\xa8\
+\x8e\x70\xfd\xa0\x0a\xe5\xd2\xf5\xf6\xff\x0b\xf5\x05\x5a\xa1\x16\
+\x3c\x19\xbc\xb2\x2c\xcb\xef\x40\x42\x38\xa4\xeb\xa9\x0f\xdb\x34\
+\x39\xf2\x9d\xfd\xd4\x0b\x17\xb9\xe3\x17\xfe\x3d\xa9\xbe\xeb\x98\
+\x3b\x5b\x60\xe1\xc2\x29\xe6\xcf\xbf\xc9\xf9\x1f\x7e\x9f\xa1\x4d\
+\xff\x0f\x7b\xee\xf9\x24\x5b\xf6\x7e\x8e\x56\xfd\x7a\x3e\xfa\x4b\
+\xbf\xca\xa9\x57\x0f\x71\xf1\xd8\x9b\xa1\x5c\xa0\x5e\x83\x38\xc8\
+\x2b\x5c\x05\x5e\x80\xf3\x45\xee\xbd\xf7\x5e\xa0\x9b\xb9\x5b\xa9\
+\x54\x79\xf5\xd5\x57\x39\xfc\xd2\x61\x96\x0a\x4b\x81\x86\x0b\x5d\
+\xe3\x50\x11\x6e\x98\xd0\x4b\x9d\xaa\x00\x41\xe4\x31\x01\x41\x00\
+\x84\xdb\xc8\x06\x6c\x52\x08\x83\x4a\xf6\x34\x67\x08\xa6\x6f\x41\
+\xa8\x8d\x4d\xf0\xb3\xb4\xdb\x6d\x8e\x1f\x7e\x85\x66\xe5\x37\x18\
+\xdb\x7d\x2d\x17\x8f\x9f\xf4\x3f\xa3\xd9\xe9\x30\x75\xfa\x0c\xf3\
+\x17\xff\x94\xbd\x77\x1f\x67\xf0\x9a\x3b\x78\xf3\x70\x84\x7a\xa9\
+\x8a\x57\x2a\xa2\x54\x98\x0c\x93\x5e\xff\xa2\x90\x5b\x7b\x25\x58\
+\x9a\x35\x5e\x47\x8f\x1e\x55\x2b\x2a\x7e\x03\xa7\x0b\x60\x62\x62\
+\x82\x43\x87\x0e\x71\xfa\xf4\x19\xda\xed\x16\xcd\xa6\xc3\xfd\x7b\
+\x5e\x84\xdf\x1c\x52\xad\x96\x7d\xdb\x65\xe4\x1c\x0f\x23\xdc\x2d\
+\x3c\x9c\xb1\xdb\x6d\x08\x29\x02\x3c\x44\x6f\x2b\xfb\x70\xca\x56\
+\x38\x4b\x27\x54\xea\x2d\x5d\x62\x4a\x3a\xa9\x6f\xb6\xbd\x92\xd9\
+\x04\x9c\x4c\x24\x4d\xd0\x69\xb6\xc2\xfd\x07\x7b\xfa\x18\x79\x1b\
+\xff\x4f\x8f\xff\x13\x28\x98\x9d\x9d\x05\xde\xc7\x7d\x02\x01\xf6\
+\xee\xdd\xeb\x7f\xf8\x89\x23\x47\x54\xb8\x86\xde\xb9\xaa\x7b\xf7\
+\xee\x65\xcf\xde\x3d\xa0\x60\x79\x79\x99\x73\xe7\xce\x31\x37\x3b\
+\xcb\xcc\xec\x2c\xa7\x4e\x9d\x62\x71\x71\x31\xb4\x49\x2b\x48\x94\
+\x00\xbb\xa8\x7a\xc4\xbf\x62\xa5\x0b\xd6\xdb\x19\x44\xad\xd2\xae\
+\x45\xa9\xf0\x49\x5c\x51\xcc\xd9\xd3\xb7\xc0\x8b\x57\x84\xca\xc5\
+\x5c\x41\x6f\x77\xec\x80\xe5\xe3\xb6\x8c\x73\x4f\xbd\xd7\x42\x2e\
+\xa8\xf6\x82\x19\x43\x57\x01\x15\xdc\x5d\xd7\x7f\xe0\x03\xe2\x91\
+\x4f\x7d\x4a\x0c\x0d\x0e\x6a\x85\xa5\xa5\xff\x5e\x37\x8c\xff\xfc\
+\x5b\xbf\xf5\x5b\xf9\x20\x28\xf2\xf9\x3c\xf9\x5c\x1e\x6e\x52\x98\
+\x96\x45\xbb\xd3\x71\xe2\xf0\x67\xce\xf0\xfd\xef\x7f\x9f\xd7\x5e\
+\x7b\xad\x67\xf3\x55\xcf\x4c\x80\x9e\x56\x72\x5e\xd3\xa8\xde\xc4\
+\x8b\x60\x37\x10\x56\x4b\xc6\x08\x7b\x14\x22\xa8\xa7\x7b\xfa\x0a\
+\xac\x28\xfd\x96\x41\x63\xb2\xa7\x0f\x82\xdb\x1e\x3f\x98\x20\xe2\
+\x8f\xcd\x11\x57\xbe\x3c\xfc\x8a\x35\x26\x7e\xf8\xa1\x87\x62\x9a\
+\xae\x67\x34\x5d\xff\x57\xba\x26\x7e\x5f\xd3\xf4\x98\x10\x22\x44\
+\x04\x7d\xe9\x37\xbf\xd4\xc3\x97\xaf\xd2\x69\x0c\x28\x14\x0a\x1c\
+\x3e\x7c\x98\x57\x5f\x7b\x95\x52\xb1\x44\xad\x56\xa7\xde\xa8\xad\
+\xd2\x19\x34\x3c\x67\x28\xdc\x15\x3c\xe8\x66\x06\x80\xe0\xda\x04\
+\x92\xde\x29\x25\x3d\x46\xa9\xc7\x39\xb8\xad\xe1\xbc\x76\xf5\x5e\
+\x73\xea\x15\x86\x69\x20\x17\x20\xd4\x33\x39\x50\x55\xec\x49\x84\
+\x27\x1e\x7f\x1c\xa5\x60\x7e\x7e\x6e\xcd\x55\xc0\x9a\xbd\xf0\xc3\
+\x0f\x3f\xac\xed\xdf\xbf\x5f\x7e\xfc\x81\x8f\xc7\x63\x89\xd8\x76\
+\x4d\x68\x9f\x15\x42\xfc\x86\x61\xe8\xb1\x15\x06\x59\x4f\x7d\x7d\
+\xd0\x8a\xff\xf2\x97\xff\x43\xb8\xdb\x76\x10\x0c\x0a\x4c\xd3\x62\
+\x72\xf2\x22\x93\x93\x93\x2c\x2c\x2c\x70\xea\xd4\x69\x4e\xbe\x79\
+\x12\xcb\x34\xc3\xdd\xc1\xfd\x5c\x04\x15\x8a\x2b\xf8\x71\x09\xb5\
+\x7a\xa2\x46\x78\xd2\x89\x73\xbc\x83\xa0\x72\xa4\x83\xe7\x91\x48\
+\xd7\xaf\x0f\x77\x34\x0f\x45\x02\x5d\x09\x10\x6e\x20\x11\xb6\x6b\
+\x9e\x78\xfc\x09\x94\x50\xcc\xcf\xcd\xbf\xff\x00\xf0\xd0\xc3\x0f\
+\x6b\x4f\xee\xdf\x2f\x01\x1e\x79\xe4\x91\x8f\x6a\xba\xf6\x88\x10\
+\xe2\x73\x9a\xa6\xf7\x69\x62\x65\xbd\x43\x88\xf8\xe8\x31\xf2\xfc\
+\xce\xdc\x81\xbe\xff\xbf\xfd\xdb\xbf\xbd\xa2\x8d\x8c\x17\x3c\x93\
+\xca\x29\xf8\xb0\x2c\x8b\x52\xa9\xc4\xe1\x97\x0f\xf3\xc2\xf3\x2f\
+\x30\x3f\x3f\x1f\x9a\x47\xd0\x4b\x40\x5d\x7a\x33\xc2\x33\x0c\xfc\
+\xa9\x27\x42\x86\xfb\x0e\x86\xa6\x9b\xf5\xcc\x3c\x54\x32\x54\xdb\
+\x28\x7b\x26\x9e\xf9\xc3\x2e\xdc\x48\xa2\x94\x8a\x27\xf6\x3f\x01\
+\x0a\xe6\xe7\xdf\x47\x00\x78\xe8\xa1\x87\xb2\x4f\x3e\xf9\x64\xc5\
+\x3d\xfd\xbf\x62\x44\xf4\x5b\x40\xfb\x84\x26\xc4\xb0\xd0\x82\xdd\
+\x31\xbc\xe0\xad\x60\x45\xb9\x58\x88\x14\x0a\x5a\xe7\xbd\x2c\xa2\
+\xf4\xff\xfe\x9d\xdf\xf9\xdd\x90\x7a\xb8\x94\xb4\x98\x38\x32\xc1\
+\xa1\x43\x2f\x72\xfa\xf4\x59\xea\xf5\x1a\xe5\x4a\x99\x8e\x5b\x43\
+\x10\x14\xcd\xbd\x40\xf0\x36\x9d\xc0\x66\x75\x5b\xba\x39\xe3\x6b\
+\xfd\x6a\xa0\xd5\xb8\x0a\x19\x6e\x32\xa9\x02\x8c\xa4\x0a\xe6\x48\
+\x04\xf8\x8c\xc7\x9f\x78\x02\x94\xf2\x1b\x59\xbc\xa7\x01\xf0\xe0\
+\x27\x1e\x8c\x7d\xfb\xa9\x6f\xb7\x01\x1e\x7c\xf8\xa1\xff\xc3\xd0\
+\xf4\x07\x34\x4d\xbb\x0d\x21\x92\x6e\xb6\x34\xe1\x62\xd7\xee\xc6\
+\xaf\xf0\xeb\x55\x38\x46\xbe\xd2\x42\x0f\xb7\x6f\x95\x4a\xa1\x09\
+\x8d\x6d\xdb\xb6\x72\xd3\x4d\x37\xf9\x2e\xd7\x9e\x3d\x7b\xba\xdd\
+\xbb\x15\x2b\x7a\xf3\x2c\x17\x8b\x5c\xbc\x70\x81\x85\x85\x05\x2e\
+\x5c\xb8\xc0\x91\x23\x47\x98\x9b\x9d\xed\xb6\xaa\xed\x89\x21\x74\
+\x79\x84\x9e\xc4\x0e\xa5\x42\x2d\xee\x43\x36\x44\xef\x3c\x04\x9f\
+\x50\x72\x5e\x7b\x65\x14\xb3\x1b\x0b\x7d\xfc\xf1\x27\x00\x58\x58\
+\x58\x7b\x09\xf0\xae\xbd\x80\x6f\x3f\xf5\xed\xf6\x83\x0f\x3e\xf4\
+\x15\x5d\xd7\x7e\x41\x13\x62\x5c\x09\x91\xf0\xad\x6d\x21\x02\x21\
+\xde\x70\xb0\x57\x04\xfb\x07\xf6\x06\x42\x54\xb8\xa2\x28\x98\x31\
+\x13\xda\x14\xa5\xb8\x66\xdb\x66\x6e\xbe\xf9\xe6\xd0\x67\x3a\x76\
+\xec\x18\x9a\x5b\x07\xa8\xeb\x3a\x5b\xb6\x5c\xd3\x6d\xf2\x24\x20\
+\x9f\xcb\x91\xcf\xe5\xdc\x06\x94\x16\x96\x69\x61\xd9\x36\x27\x4e\
+\x9e\xe4\xbb\xdf\xf9\x0e\x2f\x1f\x3e\x8c\x29\x65\x97\xca\x16\x81\
+\xa1\x11\x01\xd5\xa4\x7a\x5a\x96\xa8\x90\x71\x19\x6e\x11\x23\x08\
+\x27\x7e\x28\xd9\x93\x03\xb1\x82\x42\xbb\x32\xd1\xa0\x9f\x18\x00\
+\x0f\x3c\x70\x5f\x52\xd3\x8c\x2f\x69\x9a\xf6\xab\x42\x88\x34\x28\
+\xd1\x15\xd5\xa2\x3b\xba\x55\xb8\x15\xb3\x22\x90\xe8\x22\x02\xf9\
+\x72\x5e\x86\x8f\x50\x21\x26\x2c\x78\x51\x83\x71\xf3\xde\xe8\xde\
+\xf5\xd7\x5f\xbf\xba\x68\x13\xf8\x9d\x43\xa7\xa6\xa6\xd1\x34\x1d\
+\x5d\xd7\x18\x1a\x1a\x0a\xa5\x66\x6b\x42\x27\x12\xd5\x88\x28\xc5\
+\x8d\xfb\xf6\x71\xe3\xbe\x7d\x80\xa2\x58\x2c\xf1\xe2\x8b\x2f\xf2\
+\xda\xeb\xaf\x51\x58\x2a\x38\x5d\x47\x2a\xe5\x30\x6d\xcb\xca\x79\
+\x03\x5e\x14\x74\x85\x9d\xa2\x42\xae\x8d\xd7\x46\x7a\x75\xd2\xd7\
+\x61\x96\xde\x7b\x00\xb8\xf7\xde\x7b\xa3\x91\x48\x64\x50\x29\xf5\
+\xbf\x08\x21\x7e\xd3\xff\x90\xaa\xdb\xd1\x17\xba\xbd\x94\xfc\x1e\
+\x81\x81\xc7\x04\x1b\x40\x12\x18\xe1\x8a\x5c\xa5\x73\x68\xaf\x01\
+\xe6\xd5\xdb\x07\xfc\xc4\x44\x22\xf1\x96\xda\x4d\xe0\x75\xfd\x10\
+\x08\x4d\x50\x2c\x16\xfd\xce\x21\x52\x4a\x6c\x37\x35\x7c\xc8\x9b\
+\xf3\xe3\xbe\x76\x2e\xd7\xc7\x83\x0f\x3e\xc4\x83\x0f\x3e\x88\x6d\
+\x59\x4c\x4e\x4f\x31\x33\x33\xcb\xfc\xdc\x3c\x13\x47\x8e\xf0\xa3\
+\x23\x3f\xf2\x33\x95\x55\x88\xd1\x13\xab\x4f\x15\xf1\x69\xe9\x40\
+\x7f\x00\xa9\xb8\x64\x2f\x88\xf7\x5a\x75\xf0\x7d\xf7\xdd\x77\x9b\
+\x52\xea\x61\x29\xe5\x97\xbd\x93\xe5\xf9\xae\x1e\x0e\x04\x38\xe1\
+\x5f\x17\x01\xc2\xfd\x3f\xff\xc2\xe0\x05\x7f\x44\xb7\x81\x02\x84\
+\x93\x37\x7a\xa7\x80\xfb\x7a\x56\x84\x9a\x2f\x79\x6b\x71\x71\x91\
+\x91\x91\x91\xd5\x03\x51\xf4\x74\xe7\x46\x20\x10\x68\x42\x20\x74\
+\xbd\x6b\x6c\x0a\xc1\xdc\xdc\x2c\x96\x65\x61\xdb\x36\x9b\x36\x6f\
+\x0a\xc4\x32\x14\x9a\xae\x73\xcd\xe6\x6b\xd8\xbc\xf9\x1a\x94\x94\
+\x3c\xfc\xc9\x87\x50\xb6\xa2\x58\x2a\xf1\xbd\xef\xfd\x33\xcf\x3e\
+\xfb\x2c\x53\x53\x53\x41\x3a\xef\x12\x49\x2b\xca\x97\x78\x6f\x55\
+\x03\xda\xdb\x0f\xf1\xbd\x22\x01\x5e\x4a\x24\x12\x54\x6b\x35\x84\
+\x00\x43\xd7\x11\xc2\xeb\xa7\xd7\x15\x57\x8e\x3b\x27\x5c\x79\x20\
+\x42\x23\xd4\x84\x20\x60\x55\x87\xdd\x40\x44\x4f\x9a\x58\xd0\x2d\
+\x7c\x0b\x5d\xf9\xfa\xeb\xaf\x73\xdf\x7d\xf7\xb9\x25\xda\xc1\x50\
+\x74\x40\xd2\x48\x05\x9a\xf7\x1a\x4e\x6b\x7a\xd5\x53\x98\xe2\xa8\
+\x0d\x07\x20\x17\xce\x5d\x08\x4c\x26\x81\x2d\xd7\x5c\x13\x7a\x8c\
+\xae\xe9\xa0\xc1\xe0\xe0\x00\x9f\xf9\xf4\x67\xf8\xcc\xa7\x3f\xed\
+\x7b\x1a\x2f\xbd\xf4\x12\x67\xce\x9e\xa1\x58\x2c\xb1\xb4\xb4\x48\
+\xcb\xcd\x15\x0c\x75\xff\xbc\x82\xf5\xff\x97\x13\x00\xea\xe1\x87\
+\x1f\x16\x8b\x4b\x8b\x94\x4b\x65\xe6\xe7\xe6\x98\x5f\x58\xa0\xd9\
+\x6c\xa2\xb9\xc6\x96\xd3\x64\x51\xa0\x21\x02\xd5\xd2\x4e\x93\x84\
+\xd0\xbc\x1f\xba\x6d\x58\x83\xb0\xef\xcd\x96\x09\x4e\xf7\xbc\xa4\
+\x1b\x23\x04\x87\x0e\x1d\xe2\xee\xbb\xef\x0e\xdd\xef\x74\x1b\x13\
+\xee\xb0\x2a\x89\x90\xd2\xdd\x60\xaf\x35\xab\x53\xfb\x2f\x83\x69\
+\xea\xae\x18\xeb\x8f\xca\xc9\x00\x00\x00\x18\x29\x49\x44\x41\x54\
+\x7d\xc7\xf3\x17\x2e\xf8\xb7\x8b\xc5\x22\x4f\x3d\xf5\x14\x5f\x7c\
+\xec\x31\x57\xcd\x75\x43\xf9\xd7\x5f\xbf\x97\xbd\xd7\xef\x05\x05\
+\xc5\x72\x91\x99\xe9\x19\x16\x16\x16\x39\x7d\xfa\x14\x3f\xf8\xc1\
+\x0f\x98\x9c\x9c\x0c\x81\xff\x92\x17\xfa\x0a\x82\x43\xbc\x03\x15\
+\x20\x7f\xf3\xcb\x5f\x16\x66\xc7\xa4\xd5\x6a\x52\x75\x2b\x70\xab\
+\xb5\x1a\xb3\xb3\xb3\x4c\x4e\x4e\xba\x84\x8b\x72\xad\x6f\xc3\xd1\
+\xbb\x81\x16\xee\x97\xec\x7f\x17\x20\x82\xc2\x3e\xfd\xdb\xbf\x10\
+\x99\x4c\x86\xbb\xee\xba\x8b\x7c\x3e\x1f\x8a\xc2\xe9\x9a\x8e\xa6\
+\x6b\xfe\x80\x68\x4d\xd3\xfc\xcf\x24\xdd\xb1\x73\x52\x4a\xa4\x6d\
+\x63\x4b\x1b\xdb\xb2\xb1\x6d\xfb\x92\xa0\x93\x52\xf2\xcd\x6f\x7e\
+\x73\xc5\xfd\x8f\x7e\xe1\x0b\xbe\x97\x41\x8f\x1d\x23\xdd\xf7\xb0\
+\x6d\xc9\xd1\xa3\x47\x79\xe6\xe9\xa7\x39\x74\xe8\x90\x13\xf1\x5c\
+\x65\x7d\xeb\x5b\xdf\x42\x29\x45\xa1\x50\x78\x6f\xb9\x81\x66\xa7\
+\x83\x69\x9a\xe8\xba\x4e\x2e\x9f\x27\xdf\x9f\x47\x4a\xc5\xb6\x6d\
+\xdb\x69\xb7\x9b\xb4\xdb\x6d\x8a\x45\xa7\xd1\xe2\xf9\xf3\xe7\x7d\
+\x83\xcb\xbb\xf8\xbe\xed\xb0\x22\x63\x00\x82\x9d\x12\x7f\x12\xfc\
+\x57\xab\x55\x5e\x78\xe1\x05\x36\x6f\xde\xcc\xf6\xed\xdb\xc9\x66\
+\xb3\x0e\x51\xe3\x76\x0b\x17\xc1\x56\x2d\x1e\x28\xbd\x79\x81\xd2\
+\x99\x45\xac\xa4\x5a\x31\x95\x64\xb5\xf7\x59\x6d\xfd\xdf\xbf\xf7\
+\x7b\xfe\xed\xff\xf5\xdf\xfe\x5b\x12\xf1\x58\xa0\x45\xbd\xa3\x36\
+\x34\xa1\x73\xe3\xbe\x7d\xec\xbb\xe1\x06\x10\x50\x5c\x2e\xf2\xf2\
+\xcb\x2f\xf3\xfa\xeb\xaf\xb3\xb4\xb4\xc4\xd2\xd2\x12\x85\x42\x61\
+\x05\xf0\xef\xbb\xef\xbe\xdf\x02\x26\x81\x37\x0e\x1e\x3c\xf8\xaa\
+\x7b\x9f\x76\xf0\xe0\x41\x79\x45\x25\xc0\x63\x8f\x3d\x2a\xcc\x8e\
+\x93\x30\x59\x2c\x16\xdd\x1a\x39\xbd\x9b\x88\x29\x1d\x02\x44\xda\
+\x16\xb6\xad\x68\x75\x5a\xcc\xcc\xcc\x70\xe6\xf4\x19\x2e\x5e\xbc\
+\x48\xbb\xdd\x5e\x05\x08\x97\xbf\x27\xda\xf8\xf8\x38\x5b\xb6\x6c\
+\x61\x68\x68\x88\x64\x22\x89\xa6\xeb\x18\xba\xd3\x03\x58\x38\xfe\
+\x61\x08\x10\x52\x29\xdf\x2b\x08\x76\x0f\xeb\x5d\xb6\x6d\xf3\xe2\
+\x8b\x2f\x3a\x06\xdf\x4f\xb0\x7e\xed\xd7\x3e\x1f\x70\x21\xbb\x12\
+\x51\x01\x96\x69\x31\x3f\xe7\x84\xc0\x3d\x5e\xc3\x93\x00\xee\xf8\
+\xfa\x2a\x30\x05\x1c\x05\x6a\xc0\x9b\xc0\x81\x83\x07\x0f\xbe\xe6\
+\xee\x4f\xf2\xe0\xc1\x83\x8d\x35\x05\xc0\xa3\x5f\xf8\x82\xe8\x58\
+\x26\x28\x78\xe9\xa5\xc3\x28\xe5\x34\x5e\x4a\x67\x32\xf4\xf5\xf5\
+\x91\xed\xeb\xf3\x5b\xb3\xd1\x93\xfc\x29\x84\xa0\x54\x2e\x33\x79\
+\xf1\x02\x67\xce\x9c\x65\x61\x61\xe1\x92\x17\xfa\x5d\x8b\x35\xc3\
+\x20\x93\xc9\x22\x34\xd8\x38\xbe\x91\xe1\xe1\x11\x72\xf9\x3e\xa7\
+\x9c\x5b\xd3\xdd\xf6\x2f\xdd\x16\x65\xd2\x75\xc9\x6c\x29\x43\x5d\
+\xbd\xbc\xd5\xe9\x74\x68\xb7\xdb\xbc\xf1\xc6\x1b\x4c\x4d\x4d\xbd\
+\x2d\xd5\x24\x34\x0d\x74\x50\xb6\x63\x8b\xf4\x3e\xe7\xf3\x9f\xff\
+\x7c\xa0\x4d\x8c\x37\x0c\x2b\x6c\x7f\x14\x0a\x05\x6f\xf3\x57\x5b\
+\x4d\x60\x01\x98\x03\x8a\xc0\x84\x10\xe2\xef\x9f\x79\xe6\x99\x97\
+\xdc\xfd\x4a\x1d\x3c\x78\xb0\x7e\x59\x01\xf0\xbf\xff\xfa\xaf\x0b\
+\xcb\x34\x51\x4a\x71\xf8\xf0\x61\x3f\x23\xc7\x0b\x66\x28\xb7\x45\
+\x4b\x32\x99\xa4\x2f\xd7\x47\xbe\x2f\x4f\x2a\x9d\x42\x13\x22\x34\
+\xea\xcd\x11\xbf\x92\xc5\xc5\x25\x2e\x5e\x74\x22\x79\xd5\x6a\xd5\
+\x1f\xfd\xf2\xae\x80\x21\x20\x62\x44\x88\x44\xa2\x44\x23\x06\x91\
+\x68\x94\xad\x5b\xb7\x22\x84\x20\x16\x8b\x91\x4a\xa5\x48\x25\x93\
+\xc4\xe2\x31\x84\xe6\xb8\x82\xb6\x65\xf9\x27\x5c\x08\xe1\x37\xad\
+\xaa\x54\xca\x14\x8b\x25\xea\xb5\x3a\x27\x4f\x9e\xc0\x74\x1f\xf7\
+\xe3\x96\xa6\x69\xa8\x1c\x24\x07\x53\x10\xd3\x10\x1d\x81\x58\x54\
+\x54\x97\xcb\x97\x7c\xce\xaf\xfe\xea\xaf\x84\x8c\xe2\x3f\xfa\xa3\
+\x3f\x7a\xa7\xdf\xbc\x03\x34\x80\x3a\xb0\x28\x84\x78\xcd\x34\xcd\
+\x7f\x7c\xee\xb9\xe7\x9e\xb8\x6c\x00\xf8\xb5\x7f\xf7\xef\x84\xe5\
+\x76\xd7\xf4\x01\x20\x95\xef\x32\x49\x29\xfd\xbf\x95\x27\x56\x95\
+\x22\x16\x8d\x92\xcd\x66\xc8\xe7\xf2\x64\xb2\x7d\x44\xa3\x51\x3f\
+\x72\xe6\x35\x6a\x6a\xb7\xda\x2c\xcc\xcf\x33\x3d\x33\xcd\xe2\xe2\
+\x12\xed\x76\x9b\x8e\x9b\x0c\x62\x59\x96\xaf\x32\xc4\x8f\x61\xc8\
+\x84\xa6\x11\x8d\x44\x30\x0c\x83\x68\x24\x4a\x24\xea\x81\x21\xe2\
+\xde\x76\x7f\xa2\x51\x22\x91\x08\x28\xe5\xab\x25\x29\x25\xad\x56\
+\x8b\x62\xb1\x88\xd9\xe9\x20\x95\xa2\x54\x2c\xd1\xb1\x4c\xa7\x3d\
+\x9c\x0f\xde\xb7\x96\x00\xba\xae\x13\xd9\x18\x23\xbb\x3b\x47\x62\
+\x53\x1a\x0c\x98\x3a\x39\x45\xdf\xd1\x04\xe5\x4a\x19\xbb\x65\xb1\
+\xd6\xcb\xb6\x6d\xb9\x71\xe3\x46\x19\x89\x44\xb5\xe9\xe9\xa9\x7f\
+\x73\xe0\xc0\x81\xaf\xbd\x6b\x23\xd0\x3b\xed\x9e\x85\xde\xcd\xd5\
+\x5b\x59\x15\x1b\x70\xef\x69\x35\x9b\x34\x1a\x0d\x66\x67\xe7\x90\
+\x4a\xa2\x09\x41\x2a\x9d\x71\x38\xf9\x7c\x9e\x54\x2a\x89\x92\x30\
+\x3c\x32\xcc\xc8\xc8\x06\x84\x26\xa8\xd5\x6a\x2c\x2e\x2e\xb2\xb8\
+\xb8\x48\xb5\x5a\xa5\xd5\x6a\xd1\x68\x34\x68\x36\x9b\xbe\x71\xb7\
+\xaa\x51\x29\x25\xed\xb6\x33\x07\x20\xd6\x1f\x73\x3d\x11\x07\x68\
+\x4e\x4b\x38\xe1\xcc\x03\xc0\x19\xf8\xdc\x71\x0d\x5b\xd3\x34\xe9\
+\x98\xa6\x6f\xe8\x3a\x3f\x1d\x5f\x3d\x18\x86\x81\x65\x59\xef\xc0\
+\x33\x11\xe8\x71\x9d\xd4\xb6\x2c\xe9\x6b\xd2\xa4\xb7\x66\x29\x6f\
+\x28\x52\x7e\xb3\x4a\xdf\xf9\x1c\x95\x52\x19\x65\x5f\x5e\xdb\xc7\
+\x03\xe7\xe0\xe0\x20\xfd\xfd\xfd\x0e\xf7\x29\xe0\x43\x77\xdd\xf9\
+\xd7\x07\x0e\x1c\x78\xf7\x5e\x80\xb4\x55\x37\x74\x19\x9a\xbe\x19\
+\x18\xcf\xe4\x27\x57\x48\x9f\x78\x09\x31\x61\x12\x6c\x65\x53\x5c\
+\x2e\xb2\x5c\x28\xb8\xd6\xb7\x4d\x32\x91\x24\x97\xcf\x91\xcb\xf5\
+\xd3\x97\xcd\x62\xe8\x3a\x63\x1b\x36\x30\x36\x36\x8a\x92\x8a\x4a\
+\xb5\x4a\xa9\x54\xa2\x52\xa9\xd0\x6c\x36\xa8\x56\x6b\x54\xab\x55\
+\x1a\x8d\x46\x08\x0c\x41\x40\x2c\x2f\x2f\x87\x3e\xff\xee\xdd\xbb\
+\x1d\x11\x2f\x00\x4d\x74\x25\x95\xc7\x37\x48\x19\x08\xe7\x3a\xb7\
+\x9b\x8d\x77\x6c\x57\x05\x62\x1e\x1a\xd1\x64\x8c\xf4\x70\x86\x58\
+\x26\x4e\x2c\x95\x24\x33\x9c\xa6\x38\xb8\x4c\xfc\x74\x92\x85\xe9\
+\x39\x54\xeb\xf2\xd8\x41\xba\xae\xfb\xbd\x0c\x75\x5d\xc7\xb6\x6d\
+\x07\xfc\x68\x14\x8a\x25\xfd\xb2\xb8\x81\xde\xc5\x42\x41\xb6\xaf\
+\x8f\x6a\xa5\x82\x69\xdb\xab\x0c\x7c\x96\x3d\x53\xbb\x7b\x06\x40\
+\x11\xa4\x4c\x9d\xc7\xd4\xea\x75\xaa\xb5\x2a\xe7\xcf\x5f\x44\x29\
+\x49\xc4\x88\x90\xcd\x66\xe9\x1f\xe8\xf7\xa7\x7c\x8c\x6e\xd8\xc0\
+\xe8\x86\x0d\x98\x96\x45\xa3\x5e\xa7\x56\xaf\xd3\x6a\xb5\xa8\xd5\
+\x6a\x6e\x8b\xf8\xb2\xef\x69\x78\x62\x3d\xb8\x4e\x9c\x38\x71\x45\
+\x59\x36\xa5\x24\xca\x72\xa6\x85\xc8\xa8\x44\x8e\x42\x26\x9f\x27\
+\x32\x12\xa7\xdc\xbf\xc4\xc6\xa3\x9b\x59\xbc\xb8\x40\xab\xd2\x0c\
+\x8d\xcd\x79\xbb\x7b\x21\x84\x20\x12\x89\x10\x8f\xc7\xe9\xeb\x73\
+\x54\xab\xd7\x2a\xcf\x69\xc4\x81\xdb\xd1\x5c\x72\x99\x00\x20\xfd\
+\x49\x5f\x3b\x77\xee\x70\xb9\x01\x93\x72\xb5\x4a\xb9\x54\xa2\x5c\
+\x2a\xd3\x68\x36\x56\x0e\x70\x0e\x86\x41\x83\x89\x16\x7e\xec\x8c\
+\x40\x98\xd5\xb9\xdd\xee\xb4\x59\x58\x5c\x60\x6e\x7e\xce\x15\xf9\
+\x90\x4e\x67\xc9\xe7\xf3\xf4\xf7\xe7\x49\xa7\xd3\x0c\x26\x12\x28\
+\xa5\xe8\x98\x26\x6d\xb7\x07\x60\xa7\xd3\xa1\x54\x2a\x51\x28\x14\
+\xa8\x56\xab\xee\x49\x58\x9d\x83\x58\x4b\x76\x4d\xc3\x69\x21\x53\
+\xae\x95\x59\x3e\x5f\xe4\xf4\x85\x33\xcc\x2d\xcd\xb3\x79\x6c\x9c\
+\x2d\xc3\xdb\x18\xf8\xf0\x38\x62\x5c\x12\x39\x16\xa3\x72\x62\x99\
+\xc2\xc5\x45\x94\xf5\xf6\x37\x3f\x1a\x8d\x12\x8f\x27\x48\x26\x13\
+\xc4\x62\x31\x27\x1b\xca\x32\x9d\x68\x87\xd0\xd0\xdc\xce\x65\x42\
+\xe3\x2d\x8d\xea\x77\xa6\x02\xa4\xed\x0f\x74\x28\x95\x2b\xa4\x92\
+\x49\x74\xc3\x20\x9f\xcf\xd1\x9f\xcb\x39\xc6\x87\x94\xd4\x6b\x35\
+\x8a\xa5\x12\xcb\xcb\xcb\x54\xab\x95\xf0\xd0\x47\x7a\xe6\xed\x04\
+\x12\x2c\x04\x81\x21\xcb\xc1\xc0\x90\x10\xd8\xb6\x4d\xa9\x54\xa4\
+\x58\x5c\xe6\xf4\x69\xc7\x16\x89\xc7\x63\xe4\xf2\x39\x06\xf2\x03\
+\xf4\xf5\xf5\x91\xc9\xa4\x51\x52\x91\xcd\x66\x19\x1b\x1b\xc3\xb6\
+\x2c\x1a\x8d\x06\xcb\xc5\x22\xcb\xcb\xcb\xd4\xeb\x75\xdf\x4a\x5f\
+\x6b\x30\x78\xad\xa6\x4d\x65\xd1\x36\xdb\x14\xea\x05\x2e\x2e\x9c\
+\xa7\xa3\x75\xb0\xa3\x02\xb5\x09\x86\x6e\x1a\x24\x3d\x90\x83\x11\
+\x41\x76\xa2\x9f\xd9\xb3\xd3\xb4\xcb\x0d\xa4\x25\x2f\xb9\xf1\x86\
+\x61\x90\x4e\xa7\xd0\x8d\x08\xf1\x58\xd4\xe9\x87\xe0\x19\xc9\x6e\
+\xcf\x6b\x21\x9c\x78\x87\x40\x20\xa4\xb8\x8c\x12\x40\x76\xd3\xa7\
+\x2e\x5c\x70\x44\xb5\x26\x04\x89\x64\x92\x6c\x26\x43\x2a\x9d\x76\
+\x5c\xad\x74\x9a\x64\x3a\xcd\xf8\xd8\x18\x52\x29\x5a\xad\x16\xa5\
+\x72\x89\xe5\xc2\x32\xc5\x62\x89\x4e\xa7\xed\x7b\x10\xb0\xca\xb4\
+\x2c\x45\x37\x7a\xa8\xbc\xf8\x39\x3d\xc3\x95\x15\x8d\x46\x83\x7a\
+\xbd\xce\xf4\xd4\xb4\xef\xff\x7f\xe8\x43\x77\xa3\x69\x1a\x46\xc4\
+\x70\xac\xf1\x48\x84\x4c\x36\xc3\xa6\x4d\x1b\xb1\x6d\x9b\x6a\xb5\
+\x46\xa1\x50\xf0\xd5\xc5\xdb\xf5\x2e\x7e\x52\x10\xe8\x86\x46\x3c\
+\x99\x20\xda\x17\xa3\x93\x30\x99\x6d\x4c\xd3\x9a\xae\x53\xb7\xca\
+\x6c\xdb\xb0\x9d\xf1\x5d\x63\x0c\x6d\x1a\xa5\x36\x5e\x61\xf0\xc8\
+\x08\x8d\x1f\xd5\x29\xcf\x2e\x61\x77\xec\xc0\xf5\x71\x3c\x95\x6c\
+\x26\xeb\x78\x39\xb1\xa8\xd3\x2f\xc9\xb2\x10\x42\x73\x4f\xbc\xf2\
+\xe2\xde\x7e\xfb\x19\x21\x34\x10\x2a\x14\xd8\x7a\x77\x12\x20\x28\
+\xbe\x5d\x23\xc9\x92\x36\xe5\x72\x99\x52\xb9\x8c\x72\x59\xb4\x44\
+\x22\x41\x26\x93\x21\x93\xc9\x90\x4c\x26\x89\xc5\x62\x0c\x0f\x0f\
+\x33\x34\x38\x0c\x4a\x61\x5a\x26\xe5\x4a\x99\xe5\xc2\x32\xcb\xcb\
+\x45\xaa\xb5\xaa\x1f\x00\x52\xde\x88\x99\xde\x58\x81\x8b\x14\xa9\
+\x56\x99\xc7\xe7\x2e\xc7\x4a\x97\x2b\x5a\xb7\x29\xe5\x7a\x00\x9a\
+\xee\x7c\xae\x6c\x06\x25\x15\xa6\xe9\x7c\x0e\x27\xb5\xdc\x19\x2c\
+\x71\x99\xad\x00\x27\xfc\x6b\x08\xb4\x84\x46\xa4\x2f\x42\x2c\x16\
+\xc3\x8a\x49\xce\xd4\xcf\x32\x37\x35\xc7\x48\x79\x03\x1b\xf3\xe3\
+\x6c\xbc\x6e\x13\x83\x63\x23\xd4\x47\xab\x30\x21\xb1\x4e\x9b\x94\
+\xe6\x97\x11\x4a\x90\x4e\x67\xd0\x74\x81\xae\x69\x8e\x34\x74\x87\
+\x5a\x21\x34\xd0\x5c\x83\x1b\xef\xc4\xcb\x80\xba\xb3\x91\x4a\x5c\
+\x4e\x15\x20\xc3\xc3\x0f\xbc\x4e\x98\x2a\x3c\xf1\xb3\x5e\xaf\x53\
+\xab\xd5\x98\x9e\x9e\x46\x2a\x45\xc4\x30\x48\x67\xd2\xf4\xf5\xf5\
+\x91\x4e\xa5\x89\x46\xa3\xe4\x73\x79\x72\xd9\x3e\xb6\x6e\xdd\x8a\
+\x52\x8a\x6a\xb5\xc2\xf2\x72\x91\xa5\xa5\x02\xe5\x72\x09\xcb\xb6\
+\x02\x63\x58\x56\x4e\xd1\x59\x31\x83\xaf\x27\x97\xa2\x3b\xd9\xbb\
+\x9b\xe2\xed\x53\xaf\xd2\xf1\x64\x74\x4d\x27\xd7\x97\x23\x9f\xcb\
+\x23\x84\xa0\xd5\x6a\x51\xad\x56\x29\x97\xcb\xb4\x5a\x2d\xff\xfb\
+\xbe\xab\xe8\x9c\xdb\xfd\x5c\x46\x6d\x54\x4a\xa1\x27\x74\x34\x43\
+\xa3\xd1\x69\xd2\x34\x9b\x34\x2a\x4d\x5a\xb4\x40\xd3\x19\x1f\x1e\
+\x25\x75\x7b\x8e\x78\x7f\x82\x72\x7e\x89\xfe\x0b\x83\xaa\xbc\x58\
+\xa4\x53\x6f\x0b\xa1\xc0\x96\x0a\xaf\xb7\xb5\xb3\xe5\x12\x4d\x3a\
+\x89\x2e\x0a\x0d\xb0\x7d\x0b\xc4\xb9\x0e\x02\x84\xc2\x7e\x0b\x03\
+\xf3\x1d\x4a\x80\x30\x00\xde\x2e\x0f\xd0\x69\xb7\x59\x6a\xb5\x58\
+\x5c\x58\xf4\x79\x80\x44\x32\x45\x2e\xeb\xd0\xc7\xc9\x64\x82\x54\
+\x2a\x4d\x2a\x99\x62\x7c\x7c\x23\x20\x69\x36\x5b\x94\x4a\x25\x96\
+\x96\x0a\x2c\x2f\x17\xba\xee\x98\x37\x4a\xe6\x12\x61\x84\xd0\xe0\
+\x25\x97\x82\xf5\xa6\xd1\xab\x15\x1e\x4d\x38\x83\x37\x1a\x8d\x32\
+\x38\x38\xc8\xd0\xd0\x10\x00\x8d\x46\x83\x6a\xb5\x4a\xad\x56\xa3\
+\xd3\xe9\x60\xdb\xb6\xcf\x54\x7a\x56\xf8\x8f\xa7\x05\xdd\x1f\x03\
+\x64\x4c\x22\xe3\x12\x2d\xae\x91\x54\x29\x2c\x65\xd1\x6a\x37\xb9\
+\xd8\xba\x40\x63\xb9\x41\xdd\x2e\x73\xed\xd0\x5e\x06\x6f\xe9\x27\
+\xbe\x21\x4e\xe5\x64\x49\x24\x8e\x9a\x44\x2f\xc4\x68\x94\x6a\x28\
+\x4b\xa2\x94\xe6\x24\xa9\xb8\x9b\x2c\x01\x21\x5d\x30\x08\xcd\x49\
+\xc1\xd3\xa4\x9f\xdb\x20\x34\xde\x72\x16\xf1\x3b\x94\x00\xc1\x74\
+\xe7\x77\xc7\x03\x94\x4b\x65\x4a\xc5\xa2\xcf\x03\x24\xe2\x09\xb2\
+\x7d\x59\xfa\xfa\xf2\x64\xd2\x69\x22\x91\x28\x83\x43\x43\x0c\x0d\
+\x0d\x22\xdd\x21\xd1\x95\x72\x85\xa5\x82\x13\x35\x2b\x57\xca\xab\
+\x76\xd1\xe8\x1d\x4c\x2e\x20\x44\x43\x7b\x83\x29\x43\x43\x7e\x02\
+\xa0\x08\x9e\xf6\x78\x3c\x4e\x22\x91\x60\x64\x64\xc4\x9f\x3b\x54\
+\xab\xd5\x68\x36\x9b\x01\xb2\xc8\x0c\x89\xd8\x30\x28\x9c\xbc\x08\
+\xa5\x29\xa4\xa1\x90\x71\x89\x4c\x38\x20\x70\xab\x05\x30\x62\x11\
+\x94\xa5\x58\xb2\x96\x68\x2c\xd5\x99\xad\x2e\x30\x10\xed\xa7\x2f\
+\x9a\x63\x60\x67\x9e\xc1\x81\x11\x3a\xa7\x9a\x44\x4f\x45\xa9\xcc\
+\x14\xb1\xab\x8e\xde\x97\x42\xb9\x79\x8f\xca\xdd\xf8\xee\xdc\x21\
+\x21\x1d\xff\x5f\x68\x0e\x42\xac\xcb\x25\x01\x94\x4b\xf5\x2a\x14\
+\xa9\x54\x8a\x7a\xbd\x8e\x25\xe5\x65\xe1\x01\xea\x8d\x06\xb5\x7a\
+\x8d\xc9\xc9\x69\x94\x92\x18\xba\x41\x26\x93\x21\x9f\xcf\x91\xc9\
+\x66\x1d\x5f\x37\xd7\x47\xb6\x2f\xcb\xd6\xad\x5b\x91\x52\xd2\x68\
+\x34\x28\x14\x0a\xbe\x51\xe7\x0c\x81\x52\xd0\xe3\x49\x04\xc7\xb7\
+\x87\x3a\x95\xbd\x0d\x77\x2b\xf8\xb8\x64\x32\x49\x2a\x95\x42\x08\
+\x81\x69\x9a\x34\x9b\x4d\xbf\x92\xb9\xd3\xe9\xd0\x6a\xb5\xe8\x74\
+\x3a\xbe\x84\x70\x72\xa2\x24\x42\x57\x10\x55\xa8\x98\x03\x02\x3b\
+\x61\xa3\x94\xed\xea\x6c\x0d\x65\x29\x3a\x66\x87\x62\xad\x42\xad\
+\xd6\x62\x91\x02\x7d\x91\x3e\xc6\x53\x63\xc4\xb6\xc5\x49\xe7\x53\
+\x68\x83\x06\xb9\xd3\xa3\x2c\x5d\xbc\x48\x63\xa1\x8e\x6c\xdb\x9e\
+\xc9\xef\x78\x66\x68\x74\x65\xae\x0b\x06\x37\x0c\xae\xde\xc2\xb6\
+\x79\xc7\x5e\x80\x74\x53\x9e\x37\x6e\xda\xe4\x1a\x5e\x26\xf5\x7a\
+\x83\x5a\xb5\x4a\xb5\x5a\xa3\xd5\x6e\x5d\x16\x1e\xa0\x63\x76\x58\
+\x2a\x2c\xb1\xb0\xd8\x8d\x1a\xa6\x52\x69\xf2\xf9\x1c\xb9\xbe\x3e\
+\x67\xfe\x4f\x22\xc1\xf8\xd8\x18\xa3\xa3\xa3\x0e\x1f\xe0\x96\x94\
+\x87\x2a\x89\x83\x85\x22\xb2\x77\x62\xf8\x3b\x25\x76\x54\x68\x1e\
+\x41\x3a\xed\x8c\xab\x07\x30\x4d\xd3\x07\x80\x6d\xdb\xc8\x8c\x40\
+\xd7\x75\xc7\x99\x11\x02\xa9\x2b\x88\x28\x94\x61\xa3\x22\x12\x5b\
+\xb3\x1d\xd5\x60\x09\xf4\x96\x46\x4c\xc4\x10\x29\x0d\xd5\x56\x54\
+\xab\x65\x0a\xa5\x45\x8a\xa5\x02\x76\xdb\x62\xe7\x86\x1d\x6c\x1c\
+\x1d\x47\x6d\x86\xf6\xc9\x01\x52\x47\xb3\x2c\x9e\x9d\x43\x36\x4c\
+\x47\xbf\x08\x40\xd9\x4e\xe6\x95\x26\x10\xaa\xcb\x79\x28\x25\xde\
+\x32\x0b\xe9\x9d\x00\x40\x9c\x39\x73\x86\xa1\xa1\x41\x8c\x88\xe1\
+\xb0\x6d\xba\x8e\xae\x19\xbe\xc5\x3f\xea\x4a\x89\x46\xb3\x49\xa5\
+\x52\xa1\x52\xa9\x50\xaf\xd7\x2e\x0b\x0f\x20\xdd\xe8\x5c\xb9\x5c\
+\x72\x8d\x33\x45\x3c\x1e\x25\xdb\xe7\xe4\xf8\x67\xb3\x59\x22\xd1\
+\xa8\xeb\xf3\x86\xa7\x8c\x78\xe0\x0d\x55\x28\x5c\xca\x95\xf8\x09\
+\x01\xe1\x51\xb1\x1e\x38\x64\x0e\xe4\x80\x46\x3b\xd1\xa1\x26\x5a\
+\xae\xa2\x56\x48\x5d\xa1\x22\x8e\x4a\x40\x73\xc6\xca\x29\x5b\xa1\
+\x23\x10\x3a\x68\xba\x4e\x2c\x1a\xc3\xb0\x22\x98\xed\x0e\x67\xa6\
+\x4e\xd3\xac\x37\xe9\x8c\x77\x18\xde\x34\x42\xdf\x50\x9e\xe6\x70\
+\x9d\xf1\xfe\xcd\xcc\x1d\x9f\xc2\x2a\x9a\xce\xc0\x0a\x2f\xed\xce\
+\x4d\xad\x77\x3c\x01\x87\x8e\xb6\xd5\xe5\x01\xc0\xa1\xef\x3e\xf7\
+\xdd\x98\x10\xe2\x83\xd9\x6c\x96\xd1\xd1\x51\x46\x47\x47\xc9\x64\
+\x32\x44\x22\x11\xa2\xd1\x28\x86\x61\x20\x84\x46\x32\x99\x20\x91\
+\x48\x30\x3c\x3c\x0c\x10\xb2\xae\x2b\x95\xea\x65\xe4\x01\x9a\xd4\
+\xeb\x0d\x66\x67\x66\x7c\x1e\xe0\xb6\xdb\x6e\x0b\x88\xfe\x2e\xc7\
+\xdf\xb5\x0f\x7a\x1a\x35\x5f\x56\xea\xb7\x2b\xf5\x74\x3d\x82\x11\
+\xd1\xb1\x74\xe9\x93\x42\xde\x2f\x0d\x0d\x4d\x6a\x7e\xb1\x8a\x73\
+\x5a\x35\x84\x72\xf2\x29\x23\x7a\x04\x11\x15\x74\xcc\x0e\xe5\x5a\
+\x05\xb3\x61\x63\xd7\x6d\x2a\x1b\xaa\x8c\x0c\x6f\x20\xb9\x27\x89\
+\x96\x17\xf4\x0f\x6e\x40\x1d\xb3\x29\xcf\x17\x30\x6b\x1d\xa7\x21\
+\xb6\xf2\xb2\x9d\xbc\xda\x08\xa7\x49\xf6\xbb\x06\xc0\xc1\x83\x07\
+\xef\x74\xc3\xc2\xff\x50\xaf\xd7\x1b\x27\x4e\x9c\xb0\x8f\x1f\x3f\
+\x7e\x77\x24\x12\xd9\x9a\xcb\xe7\x18\x1e\x1a\x66\x70\x70\x90\x58\
+\x3c\x46\x32\x91\x20\x91\x48\x3a\x43\x16\x94\x72\xc6\xad\x46\xa3\
+\xe4\xfb\xfb\x1d\xb7\xc4\xb4\xa9\x56\xab\x94\x4a\x45\x4a\xe5\x8a\
+\xcf\xd0\x5d\x0e\x1e\x00\xba\xc3\x37\x2f\xe1\x1b\xc2\x9a\x6c\xff\
+\xea\x06\xa9\xab\x03\xd0\x94\x86\xb0\x35\x74\x4b\x43\x58\xc2\x07\
+\x85\x90\x0a\x61\x81\xb0\x14\x58\x02\x65\x3b\xad\xe7\x34\x04\x31\
+\x23\x41\x24\x9e\xc0\xaa\x58\x9c\xbb\x70\x9e\xb9\xa9\x39\x06\x07\
+\x06\xd8\xb6\x65\x3b\x5b\xaf\xd9\x42\xdf\x60\x3f\xed\x0d\x4d\xac\
+\xe3\x16\xd6\xe9\x0e\x95\xc5\x12\xaa\xa5\x10\xc2\xf5\x50\x14\x28\
+\x71\x19\x79\x00\x17\x08\xff\x22\x90\x23\xf0\x61\xa5\xd4\xc7\x97\
+\x0b\xcb\xf6\xc2\xfc\x82\xa9\xeb\xfa\xef\xc4\x62\x31\x72\xb9\x1c\
+\xb9\x5c\x8e\x6c\x26\xab\x92\xc9\xa4\xc8\x64\x33\xa4\x52\x29\x27\
+\x85\x5c\x49\xd0\x75\xb2\xd9\x0c\xd9\x6c\x86\x4d\xee\xe9\xaf\xd7\
+\xeb\x94\x8a\x25\x96\x8b\x45\xaa\xd5\xca\x4f\xcc\x03\xc8\x9e\xf2\
+\xef\xe0\xb0\x86\x60\xa1\xc9\xda\xef\xbf\xdf\xda\x1a\x65\x81\xb2\
+\x04\xaa\x03\x22\xa2\x41\x4b\x73\x4f\xbc\x42\x28\x0d\xcd\x14\xa8\
+\xb6\x00\x13\x84\x0d\x9a\xad\x21\x6c\x81\xb2\x9d\x5c\x89\x68\x44\
+\x60\x1b\x1a\x96\x65\xb3\xb4\x5c\x44\xd3\xce\xd3\xee\x74\x18\x1e\
+\x1a\xa1\xff\xba\x2c\xe9\x81\x3e\x3a\xa3\x4d\xf2\xe7\x06\x59\x98\
+\x9c\xc5\x5a\xea\xd0\x69\xb6\xdd\xd4\x37\x75\x79\x01\xe0\xad\x8f\
+\x7f\xfc\xe3\xe2\xc0\x81\x03\x2f\x00\x2f\x04\x00\x71\xc6\xb2\x2c\
+\x7d\x7e\x7e\x5e\xcc\xcd\xcd\xdd\x60\x18\xc6\xaf\xc7\x63\x71\x52\
+\xe9\x14\xe9\x74\x9a\x64\x2a\xe5\xcc\xe4\xcd\xe5\x48\xa5\x52\x28\
+\xe5\xa4\x61\xa1\x1c\xf6\x30\x1e\x8f\xb3\x61\x74\x03\x52\x29\x3a\
+\xed\x36\xe5\x52\x89\x62\xb1\x44\xb1\x54\xa4\xd5\x6c\xbe\x2d\x1e\
+\xc0\xed\xe8\xd0\xad\x20\x0a\x78\x27\x8a\x40\x47\xf2\x35\x89\xfe\
+\x29\x27\xf8\xa4\xeb\x44\x94\xe1\xd7\x3f\x82\x42\xb3\x04\x7a\x5b\
+\xa0\xe9\xa0\x0b\x81\x42\x77\x44\x95\x4b\x52\x08\xe9\x48\x09\xcd\
+\xd4\xc0\x72\x38\x1d\xcd\x02\x61\x82\x10\x3a\x91\x68\x04\x4b\xb3\
+\xb1\x4c\x93\xd9\x85\x39\x96\xcb\x25\xaa\x8d\x1a\xda\x96\x6d\xf4\
+\x6f\x1f\xa4\x7f\xa4\x8f\xfa\x60\x05\x23\x1e\xa5\x22\xab\x18\x33\
+\xdd\x0e\xeb\xf2\x32\xd9\x00\xa1\x75\xe0\xc0\x01\xb5\x8a\x74\xf8\
+\xba\x77\xfb\xfe\xfb\xef\x4f\x28\xa5\x9e\x68\xb6\x9a\xb2\x52\xad\
+\x54\x23\x91\xc8\xdf\xe9\xba\xbe\x2d\x16\x8b\x11\x8f\xc7\x89\xc7\
+\xe3\x2a\x9d\x4e\x8b\x81\xc1\x01\xfa\xf3\x79\xa2\xd1\x38\x4a\x49\
+\x77\x7e\xa0\xc4\x30\x0c\xfa\x07\x07\xe9\x1f\x18\x70\x28\x67\xdb\
+\xa6\x56\xad\xb2\xbc\x5c\xa0\xb0\xec\x48\x89\x55\x79\x80\x60\xe3\
+\xc9\x55\x8a\x49\xd6\x72\x28\xa3\x94\x92\x64\x32\x49\xb3\xd5\xa2\
+\xde\xae\x23\x1a\x11\x6c\x53\xa2\x2c\x05\x6d\x81\x68\x69\x08\xcd\
+\x29\xa8\x31\x94\x02\xa9\x79\xa5\x53\x08\x5b\x80\x05\xc2\x72\x11\
+\xda\x01\xd1\x51\xd0\x72\xb8\x13\xa1\x14\x86\xa1\x23\x80\x5a\xbd\
+\x46\xb5\x5c\x46\xda\x16\x86\xd0\x88\xc6\xe2\xe4\x86\x72\xc8\x8a\
+\x24\x3a\x57\x21\x35\x93\xc2\x8c\xb6\x31\x9b\x4e\xac\x43\xad\x85\
+\x04\xf8\x71\xeb\x99\x67\x9e\x69\x02\xcf\x05\x00\x71\x87\x94\x32\
+\xd5\x68\x34\x44\xb5\x5a\x35\x22\x91\xc8\x49\x4d\xd3\x98\x9c\x9c\
+\xc4\x30\x74\x62\xb1\xb8\xea\xef\xef\x17\x43\x43\x43\xee\xd4\x4f\
+\xad\x5b\xb8\xa1\x14\x9a\x10\x64\x32\x19\xd2\xe9\x34\x9b\x36\x6d\
+\x46\x29\xc7\x08\x2c\x95\x9c\x48\x5f\xa5\x52\xf1\x6d\x80\x50\xcb\
+\xe5\xc0\xe9\x0f\x12\x59\x6b\xb5\xa4\x94\x18\xba\x8e\x14\x4e\x6f\
+\x22\xa5\x5c\xa3\xcf\x14\x68\x6d\x81\xae\x09\x74\xa1\x75\x03\x34\
+\x0a\x90\xc2\x11\x5a\x96\x42\x98\x1a\xc2\xd6\x11\x1d\x0d\x61\xbb\
+\xa4\x8e\x10\xa0\x04\x66\xdb\xa2\x6d\xb6\x88\x44\xa2\x8c\x6d\x18\
+\x67\x7c\x74\x94\xd1\x0d\xa3\x24\x55\x8c\xca\xf1\x65\x6a\x47\x4a\
+\x30\xa1\x30\xa7\x5b\xd8\x6d\xcb\xef\x5e\x22\xa5\xba\xf2\x00\x58\
+\x05\x10\x0b\x3d\x39\x86\x29\x29\xa5\x98\x9a\x9a\x6a\x0f\x0f\x0f\
+\x7f\xbe\xd1\x68\xfe\x5e\xa9\x54\xe2\xfc\xf9\xf3\x08\x21\x48\xa5\
+\x52\x0c\xb9\x4c\x60\x3a\x9d\x75\xe6\xfd\x84\xea\xef\x25\xf1\x78\
+\x8c\x91\x91\x11\x86\x86\x87\x51\x52\x61\xd9\xe6\x2a\x81\xa0\x70\
+\x33\xc9\xb5\x5c\xa6\x5b\x5b\x08\xb8\xb1\x7d\x0d\xdb\x72\xfa\x08\
+\x69\x6d\x0d\xad\x61\xa0\xa1\xa3\x09\x0d\x29\x75\xb7\xac\x48\xa0\
+\xd9\xae\xe6\xb2\x1c\x55\x81\x05\x9a\x29\x1c\xa9\x60\x7b\x14\xbc\
+\x8d\x44\x11\x4b\xc4\x18\x19\x1c\x61\xc7\xb6\x6d\x0c\x66\x07\x88\
+\x99\x71\x3a\x27\x9a\x2c\xbe\x51\xa2\x71\xbc\x4a\x6b\xa6\xe1\x8e\
+\x64\x73\x0c\x4d\x25\x40\x4a\xf1\xd3\x07\xc0\x2a\xea\x22\x98\x6b\
+\xf5\xfb\xee\x8f\x07\x8e\xd3\xe5\x72\x79\x5b\xb9\x5c\x16\xa7\x4f\
+\x9f\x46\xd3\x34\xfa\xfa\xfa\x18\x1e\x1e\xa6\xbf\x3f\xef\x0c\x7d\
+\x54\xe1\xe1\x4c\x00\xba\x66\x84\xfa\xfd\x85\x1a\x4d\x22\xd7\xbc\
+\x1e\xaf\x5e\xab\xfb\xb9\x06\x5a\xda\x40\xb7\x23\x60\xbb\x6c\x9f\
+\xa9\x43\xd3\x40\x68\x06\x9a\x2e\xd0\x2c\xcd\xad\x95\xd4\xd0\x3c\
+\xf2\xd4\x56\x68\x96\x23\x2d\x90\x20\x2d\x1b\x4b\xda\x34\x1b\x2d\
+\x3a\xb6\x49\x7f\x36\xcf\x35\x1b\xb7\xb0\x63\xf3\x76\xc6\xf3\x63\
+\x58\x17\xda\x2c\x9f\x28\xb0\x3c\x51\xc5\x3e\x53\xa4\x5d\xeb\x38\
+\x15\xc7\xee\xd8\x7b\x37\xeb\x79\x42\xbe\x45\xb3\x81\x9f\x1a\x00\
+\x2e\xb5\x1e\x78\xe0\x01\xf1\xf4\xd3\x4f\xef\xf0\xfe\xfe\xe4\x27\
+\x3f\x19\x6b\xb5\x5a\xf5\xe5\xe5\xe5\x72\xa1\x50\x10\x4a\xa9\x64\
+\x34\x1a\x8d\xf5\xf7\xe7\x19\x18\x1c\x24\x93\xce\x3a\x69\xd8\xca\
+\xad\x02\xf2\x63\x10\xdd\xd8\x84\xdf\xf7\x77\x8d\x57\x34\x1a\xa1\
+\x52\x2e\x23\x74\x9d\x68\x27\x46\xc4\x12\x08\x15\x45\x93\xa0\x77\
+\x20\x52\x17\x44\xd0\xd1\x84\x81\xee\x7a\x2b\x1a\x8e\xe5\x8f\xe7\
+\xaa\x4b\x81\x6d\x49\x4c\xdb\x42\x28\x41\x3c\x91\xa0\xbf\x6f\x80\
+\x4c\x26\xc3\xf0\xe0\x20\x23\x7d\xc3\xc4\x6b\x71\xca\xc7\x0b\x74\
+\x4e\xb6\xa8\x9d\x2a\xd2\x9c\x2f\x62\x36\xdd\x6c\x20\x70\x2a\x9f\
+\x85\x78\x5e\xd3\xc4\x41\xcd\xd0\xff\x16\x41\xfb\xad\xb2\x97\xde\
+\x57\xeb\xfe\xfb\xef\xff\xd7\x4a\xa9\xdf\x90\x52\xb6\xdc\xd3\x7e\
+\x5d\x32\x99\xf2\x29\xe2\x44\x32\xd9\x65\xc2\xd0\xdc\x89\x24\xea\
+\x8a\x14\x5c\x16\x8b\x45\x00\x4a\xa5\x32\x91\xd1\x28\xf1\x7d\x29\
+\xa2\xd7\x27\xb1\x47\x15\x13\x27\x8f\x71\xf2\xcd\x93\xa4\x52\x29\
+\xe2\x89\x18\xb6\xb2\x9d\xa2\x31\x57\x4f\x77\x2b\xa4\x9d\xec\x27\
+\x5b\xda\x24\xe3\x71\x86\x87\x47\x18\x1a\x1c\x62\xb0\x6f\x90\xac\
+\x96\xc1\x98\xd7\xa8\x1e\x2b\x51\x3a\x56\xa0\x71\xbe\x46\xb3\xd4\
+\xf0\x39\x05\x37\x17\xf2\xbb\x9a\x10\x7f\xa1\x1b\xc6\x3f\x3f\xfe\
+\xf8\xe3\xe7\xdf\x4e\xfa\xda\xfb\x66\x3d\xf8\xe0\x83\xe2\xdb\xdf\
+\xfe\xb6\xea\xb1\x25\xbe\xa9\x94\xca\x49\x29\x75\xa5\x54\x5a\xd3\
+\xb4\xdb\x52\xa9\x14\xd9\x6c\x96\x74\x3a\x8d\x61\x38\xb4\xb5\xf7\
+\x3b\xc8\xd8\xad\xc5\x5a\x5a\x5c\x04\x21\x68\xa5\x3a\x64\x6e\xc9\
+\x63\x7c\x20\x46\x67\xd8\xe2\xe8\x89\x93\x9c\x7c\xf3\x38\xe9\x54\
+\x8a\x58\x34\xe6\x37\xaf\xf4\xb2\x87\x95\x02\x5b\xda\x74\x3a\x8e\
+\xe5\x9e\x4c\xa6\xd8\x38\x36\xca\x8e\xed\x3b\xc9\x25\x73\x68\x0b\
+\x36\xf5\x13\x35\xca\x13\xcb\x98\x67\x4d\x2a\x8b\x25\xbf\xbe\x40\
+\x08\x81\xae\xeb\x4f\x03\xbf\xab\xeb\xfa\xc9\xfd\xfb\xf7\x2f\xbe\
+\xfd\xac\xa5\xf7\xf1\xba\xff\xfe\xfb\xc5\x33\xcf\x3c\xe3\xef\xe6\
+\xa7\x3e\xf5\xa9\x48\xa3\xd1\xf8\x4b\x29\x65\x43\x4a\x69\x03\xf7\
+\x1b\x86\xb1\xd5\x8b\xe2\x25\x93\x0e\x3b\xe9\x15\x87\xe8\xba\xbe\
+\x22\xe2\x77\x39\x96\xae\xeb\x68\xc3\x06\x72\x87\xa0\xbd\xdd\xa6\
+\xda\x57\x67\xe2\xc4\x71\xde\x74\x25\x40\x2c\x16\x77\x5c\x33\xb7\
+\x3c\x51\x4a\xdb\x0f\x22\xe9\xba\xce\xd0\xd0\x10\x9b\xc6\x37\xb2\
+\x61\x68\x03\x79\xad\x0f\x79\xde\xa4\x3e\x51\xc1\x3e\x25\xb9\x78\
+\xee\x2c\xa2\xe1\xb8\x76\xee\xc6\x3f\x2f\x84\xf8\x9f\x85\x10\x67\
+\x9f\x7c\xf2\x49\xf3\x9d\xa7\xad\x5d\xc5\xeb\xfe\xfb\xef\xbf\x47\
+\x4a\x79\xaf\x52\xca\xb6\x6d\xdb\xd4\x34\xed\xff\x72\xb2\x69\x9d\
+\x38\x7f\x2c\x16\x53\xb1\x58\x4c\xc4\x62\x31\xc7\xb0\xf4\x2b\x86\
+\xd5\x65\x01\x00\xd7\xea\x34\xb7\x58\x2e\x00\x8e\x05\x00\x10\xf3\
+\x13\x4a\xbc\xbe\x86\x4a\x29\x62\xd1\x18\xfd\xb9\x1c\x63\xa3\xe3\
+\x6c\x1c\x1c\x27\xd1\x89\x63\x1e\x6f\x50\x3e\x5a\xa2\x75\xa2\x49\
+\x79\xa9\x08\x96\x52\x40\x4b\xd7\xf5\x1f\x1a\x86\xf1\x0b\xfb\xf7\
+\xef\x9f\x7a\x37\x9f\xd5\xb8\x5a\x37\xff\x13\x9f\xf8\x84\x78\xea\
+\xa9\xa7\x9e\x07\x9e\x0f\xa8\x8b\xb3\x96\x65\xc5\x2a\x95\x8a\x56\
+\x2e\x97\x37\xeb\xba\xfe\x7f\x46\x22\x4e\x9e\x9e\xfb\xa3\xe2\xf1\
+\xb8\x48\x26\x93\x6e\xf9\x9a\xba\x3c\x12\xc2\x9b\x43\xe0\x39\x67\
+\x42\x20\x6d\x49\xc7\xea\x50\x6f\xd4\x89\xc5\x62\x6c\xde\xb8\x99\
+\x4d\xe3\x9b\x18\x1b\xde\x40\xac\x1d\xa5\x7d\xb6\x49\x61\x62\x0e\
+\x75\x54\x52\x9c\x5b\xc2\x6c\x98\x20\xd5\x94\xae\xeb\xa7\x0c\xc3\
+\xf8\xa5\xfd\xfb\xf7\xcf\x5c\x8e\xeb\x74\x55\x4b\x80\x1f\x03\x10\
+\xdd\xb2\xac\x7b\xa5\x94\xb6\x6d\xdb\x4d\x5d\xd7\x7f\x57\xd3\xb4\
+\x8f\x79\xea\xc1\x30\x0c\x12\x89\x84\x43\x61\x27\x93\x44\x22\x91\
+\x6e\xa2\xc7\xdb\xa8\x0d\xec\x95\x00\x47\x4f\x9e\xe0\xc4\xc9\xe3\
+\x4e\x85\x72\xc4\xc0\x36\x4d\x34\x5d\x27\x1e\x8b\x33\x3c\x34\xc4\
+\xce\x2d\x3b\x19\x4a\x0e\x22\x16\x14\xcd\x53\x55\xea\x13\x4d\x0a\
+\x67\x67\xb0\x0b\x16\xb6\x65\xbf\x2a\x34\xed\x94\x26\xc4\x63\x07\
+\x0e\x1c\x98\xbc\x9c\xd7\xe1\x67\x16\x00\xbd\xeb\xbe\xfb\xee\x1b\
+\x54\x4a\x0d\x29\xa5\x84\x69\x9a\x8d\x68\x34\x7a\xce\x33\x1e\xdd\
+\xf4\x72\x95\x4a\xa5\x84\x97\xe9\xec\xb8\x9e\xab\x4b\x88\x5e\x00\
+\xd4\xfa\x1a\x1c\x39\x79\x94\x13\x27\x8e\xe1\xa8\x9b\x18\x11\xdd\
+\x20\x9b\xc9\x32\x32\x34\xc2\xf8\xe0\x28\x23\xb1\x61\xc4\x39\x45\
+\xe1\x47\x4b\xd4\x4f\x54\x29\x4e\x2f\x61\x35\xcd\xef\x20\xc4\xf7\
+\x81\xaf\x1e\x7c\xe6\x99\xe9\xb5\xf8\xde\xeb\x00\xb8\x34\x20\x72\
+\x4a\x29\xdd\xb2\x2c\xcd\x30\x8c\x6d\x42\x88\x97\xbc\xd2\x71\x4d\
+\xd3\x88\xc7\xe3\x2a\x93\xc9\x88\xac\x9b\xae\xd6\x8d\x43\xa8\x10\
+\x00\x6a\x9b\x5a\x94\xd2\x55\x7e\x78\xe4\x87\x1c\x3b\x7e\x8c\xfe\
+\xfe\x01\x36\x6f\xdc\xc4\x96\x4d\x5b\x18\x1b\x1b\x23\x29\x12\x58\
+\x53\x1d\xaa\x13\x65\xc4\xb1\x16\x73\xe7\x96\x69\x15\x6b\x4f\x2b\
+\x5b\xfd\x35\xf0\xdd\x83\x07\x0f\x4e\xae\xe5\xf7\x5c\x07\xc0\xdb\
+\x07\x84\x06\x68\x07\x0f\x1e\xb4\xee\xbb\xef\xbe\xdf\x03\x7e\xdd\
+\x4b\xbb\xd2\x34\x8d\x94\x1b\xe9\xcc\x64\x32\xc4\x13\x09\xb4\x21\
+\x1d\x76\xe9\x34\xae\xe9\x50\xed\x6b\x72\xe2\xf4\x71\x2e\x4c\x9e\
+\x67\x74\x78\x8c\x8d\x63\xe3\x8c\x0e\x8c\x93\xef\x64\x68\x9f\x6d\
+\x52\x3a\xb9\x8c\x75\xd2\x62\x7e\x76\xf6\x05\x59\x31\xff\xbd\x52\
+\xea\xcc\xc1\x83\x07\xe7\xaf\xc4\xf7\x5a\x07\xc0\xe5\x01\xc7\x79\
+\x60\xdc\xb3\xf3\x22\xd1\xa8\x36\xb8\x7b\x88\xfe\xdb\x87\x30\xae\
+\x8f\x63\x0d\x4b\x66\x17\xe7\x28\xd7\xcb\x0c\x65\x87\xc8\x6a\x59\
+\xf4\x02\xb4\x8f\xd5\xa9\x9c\x2c\x61\x4e\xb7\x5f\x93\xba\xfc\x57\
+\xd5\xa9\xca\xec\xdb\xe9\xea\x71\x39\x97\xb1\xbe\x7d\x97\x85\x8b\
+\xd8\xe2\xfd\xfd\xd0\x43\x0f\x19\xb6\x94\xf5\x72\xbd\xd2\x10\xe5\
+\x68\x74\x44\x25\xe2\x23\xfd\xc3\x5a\x7e\xa0\x9f\x4e\xa7\x0d\x73\
+\x36\x0b\xaf\xce\xa3\xbd\x21\xe4\xd2\xe4\xfc\xeb\x9f\xf9\x17\xbf\
+\xf8\x09\xed\x61\x55\xfc\x25\xf1\x59\xfb\xa7\xf1\xf9\xd7\x25\xc0\
+\x1a\xac\x49\x55\x8b\x7e\x95\x3f\xdc\x23\x30\x1e\x10\x25\xf5\x3f\
+\xc5\xd3\xa9\x6b\x65\xcd\xb6\xeb\xa7\xcb\xed\xc4\x44\xa2\x75\xf2\
+\x87\x47\xf4\xf1\xed\xd7\xdc\xf9\x1f\xff\xb7\xdf\x3d\xfe\xd3\xfe\
+\xac\xeb\x12\x60\x4d\x4e\x95\x8e\x8e\x40\xc3\xb0\x44\x8e\x33\x1d\
+\xda\xa6\x95\x33\x5f\xe9\xbb\x79\xe0\x89\xc4\xcd\x89\x57\xfe\x5a\
+\xfc\xd5\xd4\x7b\xe5\xb3\xae\x03\x60\x0d\xd6\x45\x5a\xaa\x8a\xdd\
+\x4e\x62\xcf\x68\xc8\xef\x29\x04\x77\x70\xf7\x2b\xb3\x4c\xbf\x72\
+\x9c\xd7\x6b\xef\x2d\xb0\xae\xaf\xcb\xbe\xfe\x93\xfa\x9e\x7e\x0d\
+\x99\x81\xa7\xf8\xc7\x91\x07\xf9\x68\xec\x3b\xfc\x69\xf3\x5f\xf2\
+\x1f\xa7\x3f\x2c\x36\x97\xd6\xaf\xce\xcf\xc8\xea\xa8\x45\x71\x51\
+\x4d\xe8\xdf\x53\x4f\x6a\x3f\x81\x57\xb1\x2e\x99\xd7\xd7\xfa\x5a\
+\x5f\x57\x60\xfd\xff\x91\xff\x98\x4a\x74\x03\x10\x92\x00\x00\x00\
+\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x21\x68\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdb\x05\x0f\
+\x0e\x20\x02\x55\xba\xb1\xee\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\x9d\x79\x7c\x56\xc5\xbd\xff\xdf\xe7\
+\xc9\x9e\x40\x12\x08\x59\x88\x40\xd8\x13\x30\xec\xb2\x09\x82\x52\
+\x40\x83\xd8\x7a\xeb\xd5\xab\xed\x7d\xb5\x0a\xb6\x5a\xeb\xd2\x5a\
+\xf5\xd7\xed\xde\xb6\xfe\x6c\x6b\xb5\xbd\xbf\x6a\xed\x6d\xa9\x6d\
+\x7f\xbd\x95\xda\x5a\xbd\xda\x5e\xc1\xaa\x60\x71\x81\x4a\x20\xec\
+\x81\x00\x61\x0b\x49\x90\xb0\x84\x24\x24\x79\x92\x9c\x33\x67\xee\
+\x1f\x33\xe7\x79\xe6\x79\xc8\x9e\x00\x11\x9e\xef\x8b\x87\x3c\xcf\
+\x39\x33\x73\xce\x99\xef\xe7\xbb\xce\x9c\x19\x88\x50\x84\x22\x14\
+\xa1\x08\x45\x28\x42\x11\x8a\x50\x84\x22\x14\xa1\x08\x45\x28\x42\
+\x11\x52\x24\xbb\xf8\xb9\x1c\x28\x03\xf8\x1e\xb0\x09\xa8\x05\x6c\
+\xe0\x04\xb0\x0a\xf8\xa7\x2e\xb6\xf5\x68\x58\xff\xfd\xba\x9b\x3c\
+\x69\x04\x8e\x00\x6f\x00\x8f\x01\xc3\x22\x00\x38\x3f\xb4\x14\x38\
+\xd3\x41\x1f\xbc\x0a\xc4\x77\xb2\xbd\xed\x61\x75\xab\x81\x98\x5e\
+\xe0\x89\x0d\x3c\xdb\x85\xfb\xe8\xd4\xc5\x2e\x77\x9a\x0d\x34\xeb\
+\xbe\x70\x81\xff\x04\x26\xea\x4e\x1e\x0c\x7c\x1d\x68\xd2\xe7\x5f\
+\xea\x44\x7b\xe3\x8d\xbe\x5d\x67\x7c\x5f\xda\x0d\x9e\xa4\x00\x93\
+\xb5\xf4\x57\x18\xe7\x3f\x00\x12\xfa\x02\x00\xbc\x36\x3e\xa9\x7f\
+\x0f\xd2\xea\xee\x23\xc0\x01\x1a\x80\x03\x9d\x64\xc2\xaf\x81\xbd\
+\xba\x4e\x8b\x56\x7d\x2b\x81\xab\xbb\xc0\xc8\xae\xb6\xe1\x03\x8a\
+\x8d\xe7\xf8\x6a\x1b\xe5\x96\x00\x22\xec\x59\xdb\xa2\xef\x1b\xed\
+\xe5\xeb\xfb\x90\xc0\x1f\x7a\xc8\x93\x54\xe0\x5d\xa3\xcc\x73\x7d\
+\x09\x00\xdf\x03\xfa\x01\x25\x5d\x34\x21\x96\x56\x69\x1d\xa9\xbe\
+\x1f\xeb\xb2\xbd\xdd\xc6\x62\xe3\xfc\xae\x76\xae\x01\xf0\x3b\x5d\
+\x6e\x63\x07\x7d\x72\x48\x97\xdb\xaa\x7f\xbf\xa5\x7f\x9f\xed\x40\
+\x6a\x3b\xd3\x5f\x69\xda\x9c\x48\x2d\x60\xc3\xfb\x0a\x00\xfe\x0c\
+\xfc\xc0\x40\xe6\x08\x20\x0a\x48\xd6\xea\xb4\x2d\x7a\xc2\x68\xe3\
+\x28\x70\xab\x56\x7b\x49\x5a\x65\xee\x37\xce\x3f\x72\x1e\xda\xf8\
+\x99\x71\xee\xb1\x0e\x9e\x75\x02\xf0\x3e\xb0\xa8\x9d\x32\x57\x1b\
+\xed\x7d\x57\x1f\xbb\xdb\x38\x76\x5b\x2f\xf0\xe4\xc7\x46\xb9\x6f\
+\xf7\x15\x00\x14\x03\x35\xc0\x37\xbb\x50\x77\xa4\x76\x6a\xa4\xae\
+\xdb\x1a\x9a\xaf\x30\x9c\xb3\xb3\x40\x7a\x2f\xb7\xf1\x0f\xe3\x19\
+\xe6\xf4\x82\x3f\xf1\xf3\x30\xf5\xef\x45\x17\xc2\x70\x24\x7b\xca\
+\x93\x45\x46\xb9\xb5\x7d\x05\x00\x1e\x08\x7c\x5d\xa8\xfb\x83\x56\
+\xa4\xa5\x35\x7a\xd2\x28\x77\x5f\x2f\xb7\xf1\x91\x71\x3c\xab\x87\
+\x7d\x11\xad\xc3\x46\xa9\x4d\xa1\x49\xef\xeb\xe3\x7e\xad\x15\x7b\
+\xc2\x93\x2b\x8c\x72\x15\x17\x3b\x0c\x34\xcb\x7c\xa5\x8b\xf7\xb0\
+\xd1\xa8\x3b\xb5\x9d\x72\x73\x8c\x72\xaf\xf5\x72\x1b\xcd\xc6\xf1\
+\x84\x1e\x02\x60\x89\xd1\xd6\xff\x0d\x3b\xf7\x55\xe3\xdc\xe7\x7b\
+\x08\x80\x38\xa3\x5c\x53\x5f\x02\xc0\x94\x2e\xde\xc3\x69\xa3\x6e\
+\x6a\x3b\xe5\x06\x18\xe5\xf6\xf7\x72\x1b\xc2\x38\xee\xeb\x21\x00\
+\x56\x1a\x6d\x85\xfb\x3d\xc3\x8d\x73\x7f\xeb\x21\x00\xa2\x8c\x72\
+\xa2\x2f\x99\x80\xfe\x5d\xac\xeb\x74\x03\x88\x35\xbd\xdc\x46\x9d\
+\x71\x3c\xb1\x07\xfd\x90\x08\xd4\xb7\x01\x52\x8f\xb6\x1a\xc9\x9c\
+\x41\x3d\xe0\x49\x8a\x51\xee\x2c\xed\xc4\xb7\x17\x9a\xea\xbb\x01\
+\x9e\xae\x52\xff\x5e\x6e\xe3\x74\x58\x88\xd5\x5d\xfa\x94\x8e\x3a\
+\x00\x5e\x69\xa3\xcc\x6b\x86\xaf\xf0\xcf\x3d\xb8\xd6\x60\xe3\xfb\
+\xb1\xbe\xa4\x01\xba\x4a\xa6\x03\x16\xd7\xcd\xeb\xf7\xb4\x8d\x37\
+\x8c\xfa\xd7\xf5\xa0\x1f\x56\x75\x51\x0b\xbd\xd7\x83\xbe\xbc\xd5\
+\x28\xf7\x72\x5f\xd2\x00\x5d\xa5\x3d\xc6\xf7\x9c\x8b\xd4\x46\x91\
+\xf1\x7d\x6e\x07\x65\xaf\x02\x3e\x6c\x45\x7a\xd3\x74\x42\xa9\x2b\
+\x34\x17\xc8\xee\xe6\x33\xdf\x64\x7c\x5f\xfb\x71\xd6\x00\xff\xc7\
+\xa8\xfb\x50\x37\xaf\xdf\xd3\x36\x26\x19\xf5\xf7\x76\x90\x09\xfc\
+\x8b\x2e\xf7\x76\xd8\xf1\x2f\x85\x65\x1b\xdb\xa3\x9f\xd0\x76\xda\
+\xb9\x33\x7d\x99\xa3\x43\x49\xcf\xfe\x0f\xf8\x38\x03\x20\x13\x95\
+\xb3\x97\xda\x96\x65\xb4\x83\xf8\x63\xc0\xeb\xad\x64\xeb\x7a\xa3\
+\x8d\xb7\x3b\x91\x6d\xbc\xcb\xf0\xba\x67\x84\x9d\xfb\xc0\xa8\x3f\
+\xa3\x83\x67\x9e\x69\x94\xdd\xd4\xc5\xbe\xec\x17\x96\xb8\xfa\xb7\
+\x8b\xc5\xb8\xde\x6c\xe7\xcb\x46\xfd\x03\xa8\x71\xf7\x14\xd4\xd0\
+\x69\x1e\xf0\xb8\x81\xf8\xb6\x52\x9f\x3d\x6d\x63\x8c\x8e\x0c\xbc\
+\xd1\xc0\x9f\xea\x63\xd1\x5a\xe2\x9e\x32\xc2\xc5\x27\x5a\x91\x48\
+\x57\x9f\x3b\xd4\xc9\x67\x3e\x6c\xdc\xcb\xa8\x0e\xfa\x32\x56\x5f\
+\xe3\x8b\x61\xf5\xde\xd4\xe1\xe0\xc7\x1e\x00\x00\x0f\x84\x25\x64\
+\x5a\xfb\x38\xa8\x51\x36\xeb\x3c\xb5\x31\x03\xa8\xa4\xeb\x83\x49\
+\x5f\x37\xce\xff\xa8\x93\xcf\xfb\x94\x51\xe7\x5b\x5d\xcc\xcd\x08\
+\x54\xba\x39\x8e\x3e\xc0\xb8\xde\x6c\x27\x47\xdb\xc7\x9d\x5a\xa5\
+\x3b\x5a\x2a\x8b\x74\x87\x8d\xbd\x00\x6d\x24\x6b\x86\x6e\x24\x38\
+\x23\xe8\x23\xd4\x40\x57\x5b\x0e\xe2\x2e\xe3\xf9\xa7\x75\xf2\x59\
+\xa7\x11\x3a\x02\xd9\x1e\x00\x5c\xe3\x19\x9e\x06\xc6\x11\xa1\x08\
+\x45\x28\x42\x11\x8a\x50\x84\x22\x14\xa1\x08\x45\x28\x42\x11\x8a\
+\x50\x84\x22\xf4\x31\xa2\x21\xa8\x29\x5a\x51\x91\xae\xb8\xbc\x68\
+\x0c\x6a\x52\xc4\x5a\x82\x33\x73\xfe\x1b\x95\xe7\x1e\x1e\xe9\x9e\
+\x4b\x9b\x66\x68\xa6\xcb\x98\x98\x18\x19\x1b\x1b\xdb\x5a\xda\x73\
+\x2f\x6a\x9e\xfe\x12\xd4\xc8\x57\x84\x7a\x40\x56\x1f\xbb\x9f\x39\
+\xc0\x7a\x80\xdb\x6f\xbf\x9d\x3f\xfd\xe9\x4f\xdc\x7d\xf7\xdd\x0c\
+\x1d\x3a\x94\xf5\xeb\xd7\xf3\xe1\x87\x1f\x52\x5f\x1f\x32\xa3\xac\
+\x45\x97\x5f\x83\x7a\xb3\xc6\x7b\xd9\xb2\x37\x28\x15\x35\xab\x66\
+\xae\xd6\x4a\x83\x51\xd3\xc4\xac\xb0\xeb\xd7\x00\x65\xa8\xe9\xee\
+\x85\xc0\x6a\xd4\xdb\xba\x11\xea\x06\x8d\x07\xe4\xc8\x91\x23\xe5\
+\x13\x4f\x3c\x21\x01\xb9\x74\xe9\x52\xb9\x6b\xd7\x2e\xb9\x63\xc7\
+\x76\x59\xb4\x79\xb3\xfc\xed\x6f\x7f\x2b\x97\x2f\x5f\x2e\xf3\xf3\
+\xf3\xa5\xcf\xe7\x0b\xd7\x0e\xc7\x51\xb3\x6e\xff\x95\xee\xcd\xdf\
+\x1f\x05\xbc\x48\x70\xde\x7e\x77\x3f\x35\x1a\x94\x9f\x47\x0d\xd5\
+\x46\x34\x40\x17\x1c\xbf\xf2\x8c\x8c\x0c\x9e\x7c\xf2\x49\x96\x2d\
+\x5b\x46\x4e\x4e\x0e\x3f\x7b\xee\x39\xb2\xb3\xb3\x71\x85\xc0\x75\
+\x05\xae\xeb\x22\x84\x4b\x4d\x4d\x0d\x45\x5b\xb6\xb0\xa9\xb0\x90\
+\xa2\xa2\x22\x4e\x9e\x3c\x69\xb6\x25\xb5\x46\xf0\xb4\xc3\x7a\x2d\
+\xb1\xad\xd1\x2c\xe0\x79\x82\x6f\xe9\x00\x90\x93\x93\x43\x6e\x6e\
+\x2e\xa3\x47\x8f\x26\x33\x33\x93\xac\xcc\x2c\x84\x2b\x88\x8e\x8e\
+\xc6\xb6\x6d\x5a\x5a\x6c\x4e\x54\x55\x71\xec\xd8\x31\x8e\x96\x1f\
+\xa5\xa4\xa4\x84\xe3\xc7\x8f\x87\xb7\xed\x02\xfb\x50\xaf\xc2\xfd\
+\x27\xea\x5d\x80\x57\x81\x6d\x11\x00\x9c\x4b\xc9\xa8\x21\x56\x72\
+\x72\x72\x90\x52\x52\x57\x57\x47\x7d\x7d\x3d\xdf\xf8\xfa\xd7\x29\
+\x58\xb2\x04\x21\x5c\x5c\xd7\x0d\x02\xc1\x15\xb8\xfa\x58\x59\xd9\
+\x11\x8a\x8a\xb6\xb0\x6d\xdb\x36\x8a\x8b\x8b\x69\x69\x09\xe1\x77\
+\x03\xea\xcd\x9b\xbf\x69\x07\xb3\x04\x35\x4d\xfb\x2d\x8c\x61\xdc\
+\xe9\xd3\xa7\x73\xd3\x4d\x37\x31\x77\xce\x1c\xd2\xd2\x07\x05\x64\
+\x5a\x6a\xcb\x22\x25\x58\x96\x44\x1a\x86\x46\x4a\x55\x48\x4a\xa8\
+\xad\xad\x65\xcb\x96\x2d\x6c\xdc\xb8\x91\x0d\x1b\x36\x84\x03\xa2\
+\x99\xe0\x18\xfd\x41\xad\xa9\x36\x46\x00\x10\x4a\x12\x20\x3a\x3a\
+\x9a\xd5\xab\x57\xf3\xd0\x43\x0f\xb1\x77\xef\x5e\x00\xbe\xf3\x9d\
+\xef\x70\xdd\x75\xd7\xe2\x0a\x17\xe1\xba\xfa\xaf\xd0\x80\x70\x11\
+\x22\xf8\xdd\xef\xf7\xb3\x6f\xdf\x3e\xb6\x6f\xdf\xce\xce\x9d\x3b\
+\x29\x2f\x2f\x0f\xbf\xce\x49\x0d\x80\x24\x80\x85\x0b\x17\x72\xdf\
+\x7d\xf7\x31\x72\xc4\x48\x8f\xd5\xfa\x7f\x69\xdc\x95\xf4\xfe\x05\
+\x7e\x9a\xd3\x1c\x8c\x22\x58\x52\xd5\x3c\x50\x7a\x80\xd5\x6f\xac\
+\xe6\xd5\x57\x5f\xc5\xef\xf7\x83\x9a\x3f\x60\x2e\x02\xf1\x07\x0d\
+\x84\x8b\x42\x7d\x31\xc6\xbe\x12\x18\xdf\xbf\x7f\x7f\x6b\xe9\xd2\
+\xa5\xdc\x71\xc7\x1d\xf8\xfd\x7e\x8a\x8b\x8b\xd9\xbe\x7d\x3b\x05\
+\x05\x05\xf8\xa2\xa2\x10\x42\xe0\xb8\x02\x21\x04\xab\x56\x0d\xa5\
+\xb2\x32\x9e\xf8\x78\x3f\x71\x71\xcd\x38\x42\x00\x16\x69\x69\x03\
+\x18\x37\x7e\x3c\xf3\xe7\xcf\x67\xde\xbc\x79\x64\x67\x67\x13\x13\
+\x13\x43\x75\x75\x35\x8e\xe3\x24\x01\xb1\x59\x59\x59\xfc\xf8\x27\
+\x3f\xe1\xce\x3b\xef\x24\x35\x35\x15\x57\x4a\xa4\x74\x91\xae\xab\
+\xe6\x70\xb9\x52\x7d\xa4\x0c\x9e\x93\xe8\xbf\x12\x57\xba\xa0\xcf\
+\xab\x72\x2e\x12\xfd\x5b\xba\xa4\x0e\x18\xc0\x8c\x19\x33\xa8\xa8\
+\xa8\x60\xff\xfe\xfd\x3c\xfc\xf0\xc3\x51\x8f\x3c\xf2\x08\x15\x15\
+\x95\x1e\x28\x27\xa2\xd6\x12\xf8\x35\x17\x61\x21\x8e\xbe\x04\x80\
+\x91\xa8\xe9\x54\xb7\x03\x2d\xcd\xcd\xcd\x31\x67\xcf\x9e\x65\xf6\
+\xac\xd9\x4c\x99\x3a\x85\xc2\xc2\x42\x2a\x2b\x2b\xb1\xb0\xc8\x9f\
+\x90\x8f\x10\x0e\xae\x10\xd8\xb6\xe0\xf1\xc7\xaf\xe6\xfd\xf7\x87\
+\xb1\x6a\xd5\x58\xd6\xad\x1b\xce\x81\xd2\x81\x9c\x3e\x1d\x8b\x65\
+\x09\x12\x13\xeb\x91\xae\x4b\x74\x4c\x34\x83\xb3\xb3\x99\x38\x61\
+\x02\xc5\xc5\xc5\xd4\xd4\xd4\x90\x95\x95\xc5\xca\x95\x7f\x60\xe4\
+\xc8\x11\xb8\x52\x82\x66\x6a\xe0\x83\x0c\x32\x5a\xab\x7a\x29\x51\
+\x40\xf0\x98\x2e\x95\x5d\x10\xae\x9a\x98\xe3\x4a\x55\xce\x75\xdd\
+\x00\x68\x90\x92\x97\x5f\x7e\x99\x8f\x3e\xfa\x88\x4f\x7d\xf2\x93\
+\x8c\x1b\x37\x8e\x45\x8b\x16\x92\x95\x95\xc5\xfa\xf5\xeb\xd1\x11\
+\xc6\x27\x80\xff\x7f\x39\x02\x20\x59\x3b\x47\xbf\x46\x4d\x83\x72\
+\x51\x2f\x44\x8c\x6a\x68\x68\xe0\xe6\x9b\x6f\x46\x08\x41\x56\x56\
+\x16\x6b\xd7\xae\xa5\xaa\xaa\x8a\x1b\x6f\xbc\x11\x57\x08\x1c\x21\
+\x68\x6a\x52\x8c\x88\x89\x71\xa8\xab\x8b\xa7\xae\x2e\x81\x8a\x8a\
+\x54\x76\xed\x1a\xc2\x7b\xef\xe5\xb2\x66\x4d\x3e\x25\x25\xd9\x1c\
+\x3f\xde\x8f\xe6\x66\x18\x38\xb0\x9a\x77\xdf\x7d\x97\x86\x86\x06\
+\x9e\x7c\xf2\x49\x46\x8e\x1c\xa9\x25\x5e\x33\xd8\x75\x71\x91\x21\
+\x40\x08\x30\x1c\x17\xd7\x35\x8e\x6b\x26\x4b\x57\xcd\xf7\x74\x03\
+\xe5\x5d\xd0\xdf\x91\x0a\x14\xbf\x5a\xb1\x82\xc6\xc6\x46\xee\x5a\
+\xbe\x8c\xfe\xfd\xfb\x23\xa5\x64\xf4\xe8\xd1\x0c\x1f\x3e\x82\x77\
+\xdf\x7d\x17\xd4\xc2\x4e\x71\xc0\x3b\x17\xb2\xf3\xa3\xfb\x48\xec\
+\xbf\x0c\x60\xc1\xd8\xb1\xdc\x32\x71\x62\xf4\xba\xfd\xfb\x17\xbf\
+\xb2\x73\x27\x69\x69\x69\xd8\x8e\x92\xf4\xf1\xe3\xc7\x93\x9a\x9a\
+\xca\xc9\x93\x27\x29\x29\x29\x61\xf4\xe8\xd1\x08\x21\xb0\x7c\x2e\
+\x9f\xbc\x69\x17\xc2\x15\x08\xe1\x52\x5e\x9e\x4c\x69\x69\x3a\x07\
+\x0e\x64\x70\xe8\x50\x26\x27\x4e\xa4\xb2\x6f\xdf\x10\xf6\xed\x1b\
+\x42\x72\xf2\x59\x1e\xfe\xea\x4f\xa8\xaa\xaa\x22\x2e\x2e\x8e\x49\
+\x93\x26\xe1\xba\x02\x89\x05\xd2\x35\x1c\xba\x80\x77\x17\xd0\xc9\
+\x12\xa9\xa0\x69\xf8\x04\x9e\xf5\xb7\x3c\x53\xa1\x7f\x59\x5a\x63\
+\x78\xf5\xce\x54\x9f\xe1\xd4\xa9\x53\x24\xc4\xc7\x93\x95\x99\x85\
+\xeb\xba\x81\xb6\xe7\xcd\x9b\xcb\xdd\x5f\xf8\x02\xbf\x7e\xfe\x79\
+\x50\xef\x2f\xac\xd0\x79\x85\xcb\x06\x00\xd9\x00\x93\xb3\xb3\xb9\
+\x77\xfa\x74\x5a\x5a\x5a\x78\x6b\xdf\x3e\x00\x0a\x0a\x6e\x40\xd8\
+\x36\xc2\x55\x4e\xdf\xb4\x69\xd3\x78\xe7\x9d\x77\xd8\xb9\x73\x07\
+\x39\xc3\x87\x07\xc2\x42\xe1\x4a\xa4\x10\x08\xd7\x25\x33\xeb\x24\
+\xe9\xe9\x55\xcc\x9a\xa5\x9c\xc4\x9a\xda\x38\x0e\x1d\xca\xe2\xd0\
+\xa1\xc1\x44\x45\xdb\xec\x2f\x2d\x05\x20\x3f\x3f\x9f\xa8\xa8\x28\
+\x84\x30\x58\x25\x43\x3d\x51\xcf\x91\x0b\x89\x02\xbc\x50\xc0\x8b\
+\x08\x30\x98\x2d\x83\x8e\xa3\x25\xad\x40\x9d\x9d\xbb\xd4\x9c\xce\
+\xdc\xbc\x3c\x35\x83\x53\x88\x10\xa7\xf1\xb6\x5b\x6f\x65\xc3\xfa\
+\xf5\x94\x94\x94\xf8\x80\xbf\xa2\x16\x7c\xba\x20\xd4\x17\x5e\x0d\
+\x1b\x06\x30\x32\x35\x15\xc7\xef\x67\xeb\xd1\xa3\x9c\x6d\x6e\x26\
+\x2d\x2d\x8d\xb9\xd7\x5c\x83\xed\x38\x38\xfa\x93\x97\xa7\x26\xbb\
+\x96\x1e\x38\x88\x63\xdb\xfa\xb8\xc0\xb1\x6d\xa3\x9c\xd0\xc7\x1c\
+\x6c\xc7\x26\x21\xa1\x8e\x71\xe3\xf6\x72\x43\xc1\x3b\x2c\xfc\xc4\
+\x3a\x0e\x1d\x52\xd3\xf2\x27\x4e\x9c\x14\x12\x41\xb8\xae\x76\xfc\
+\x74\x74\xe1\x0a\x81\xe3\x85\x99\x5e\x39\x21\x34\xe8\x14\x20\xa5\
+\x14\x3a\x1a\x09\x86\xa2\xae\xeb\x22\x85\x0c\xd4\x13\xae\xcb\xd6\
+\x2d\x5b\x00\x98\x30\x21\x1f\xa9\x23\x18\xe1\x45\x2e\xae\x8b\x94\
+\x2e\x0f\x3c\xf8\xa0\xd7\x1f\x93\xb4\x3f\x70\xd9\x68\x80\x61\x00\
+\x03\x62\x62\x70\x9a\xfc\x94\x54\x55\x01\x30\x6f\xde\x3c\x1c\xdb\
+\x09\x32\x48\xb8\x0c\xb9\x42\xbd\x26\x57\x7e\xf4\x28\x8e\xe3\x04\
+\xf2\x01\x5e\x6e\xc0\xcc\x09\x04\x18\x13\x12\x22\x4a\x8e\x1c\x39\
+\x02\xc0\xe4\x49\x13\x95\x24\x4a\x0b\x69\xc9\x73\xe2\x7d\xad\x02\
+\x82\x1a\x20\xdc\x34\x58\x96\x52\x01\xda\x06\x48\xdc\x80\x48\x4b\
+\x9d\xfe\x91\x3a\x0f\xb4\x75\xeb\xd6\x10\xd0\x79\x5a\xc4\x32\x34\
+\xca\xf0\xe1\x39\xcc\x9c\x39\x93\xc2\xc2\x42\x50\x2b\x95\x4c\xbf\
+\x5c\x00\x30\x14\x20\xd5\xe7\xc3\xf6\x37\x51\x5e\x5b\xab\x42\x82\
+\x91\x23\x14\x93\xa5\x8e\xf7\x85\x60\x50\xba\x5a\xb6\xe7\xd4\xa9\
+\x53\xd8\xb6\xad\x1d\x31\x0d\x00\xe1\x22\xa4\xd0\x65\xcf\x4d\x16\
+\x21\xc1\xef\xf7\x53\x55\x55\x45\x74\x74\x34\xb9\x79\x79\x4a\x5a\
+\xb1\x54\x18\x87\x52\xe7\xe7\x30\x5c\x4a\xa4\x05\xfa\xbf\x10\x06\
+\x7b\x40\xb0\x5c\x19\x92\x17\x70\x8d\xef\x27\x4e\x9c\xa0\xbc\xbc\
+\x9c\xc4\xc4\x44\x72\x73\x73\x71\xf5\xbd\x48\xc3\xd8\x48\x94\x0b\
+\x72\xdb\x6d\xff\xe2\x01\x60\x2a\x6a\xa0\xab\xfe\xb2\x31\x01\xc9\
+\x58\xd8\xfe\x26\xaa\x9b\xd4\x6a\x26\x83\x06\xa5\xab\x58\xdf\x0e\
+\xaa\x76\x9f\xcf\x47\x52\x52\x12\x42\x08\x15\xcb\xdb\x9e\xca\x77\
+\x70\x84\xad\x7e\x0b\x07\xe1\x38\x08\xc7\x56\xdf\x85\xea\x70\xc7\
+\x71\x28\x2b\x2b\x43\x4a\x49\x5e\x5e\x1e\xd1\x31\xd1\xb8\x42\x1a\
+\x5a\xc2\x00\x92\x79\x4c\x4a\xa4\x70\x03\xea\x5c\xd5\x31\xd5\xbd\
+\x32\x15\xaa\xac\xca\x4d\x48\x21\x90\x1a\x7c\x85\x1b\x0b\x01\x98\
+\x3a\x75\x2a\x3e\x9f\x15\x50\xfd\x01\xa0\x7a\x1f\x57\x30\x7a\xf4\
+\x28\x86\x0f\x1f\xee\xf1\xe5\xdf\x2f\x2b\x0d\x90\x82\xc4\x69\x6a\
+\xa4\x4e\xa7\x6f\x53\x52\x92\xb1\x6d\xdb\x50\xe9\xaa\x43\x93\x92\
+\x92\x68\x68\x68\xa0\xae\xb6\x8e\x84\xf8\x78\x5c\x37\x68\x6f\x55\
+\x66\x50\x06\x24\x1f\xa0\xa6\xa6\x86\x2d\x5b\x54\x7a\x38\x23\x23\
+\x23\xe0\x00\xba\x42\xc5\xed\xa1\x19\x3d\x25\xf9\x96\x16\xf0\x80\
+\x13\xe8\x65\x00\xb5\xda\x97\x61\x91\x40\x50\x9c\x5d\xed\x18\x06\
+\x75\xc5\xfa\x0d\xeb\x01\x98\x36\x6d\x1a\x42\x78\x47\x43\x9d\x44\
+\xd3\x74\xcc\xbf\x76\x3e\x47\x7e\x77\x04\xe0\xb3\x74\xbc\x24\xdd\
+\xc7\x1e\x00\x19\x40\x7c\x62\x54\x14\x56\x73\x0b\xb6\xeb\xd0\xa8\
+\x3d\xe4\xd8\xd8\x78\x1c\xc7\x51\x4e\x92\xeb\xa9\x75\x87\x84\x78\
+\xb5\x46\x53\x7d\x43\x3d\x03\x9d\x81\x41\x1b\x1f\x70\xd4\xd4\xef\
+\x03\x07\x0e\x50\x54\x54\x44\x69\x69\x69\x40\x9d\x8f\x1a\x35\x8a\
+\x9b\x6f\xbe\x99\x99\x33\x66\xea\xf0\x4f\xab\xfd\x90\xf4\x6d\x90\
+\x7d\x6e\x30\x06\x0c\x19\x0b\x08\xe1\x7e\x60\x5c\x40\xd7\xd5\xa0\
+\xb1\x24\xd4\xd6\xd5\xb2\x7b\xf7\x6e\xa2\xa2\xa2\x98\x36\x6d\x9a\
+\x52\xff\x1e\xab\xbd\x36\xa5\xa5\x0a\xab\x7c\x11\x73\xae\x9e\xc3\
+\xef\xff\xeb\xf7\x48\x29\xb3\x51\x2b\x7d\x55\x5e\xca\x00\x50\xf6\
+\x3f\x2a\x0a\xc7\xdf\x48\x8b\xe3\xe0\x02\x51\x51\x51\x58\x48\x1c\
+\x47\x9c\x93\xe3\x8f\x8d\x53\xa3\xab\x4d\x4d\x4d\xfa\x7c\xd0\x2b\
+\x3f\x5b\x57\xc7\xb6\x6d\xdb\xd8\xb2\x65\x0b\xb5\xda\x97\x88\x8e\
+\x8e\x66\xee\xdc\xb9\xdc\x78\xe3\x8d\xe4\x5f\x79\x65\x60\x78\xce\
+\x15\x6e\xc0\xf9\xf3\x62\x79\x57\x06\x63\xf9\x40\xa8\x17\x16\xf6\
+\x85\x5a\x6f\x42\xfd\x87\x80\x9f\xa0\x74\xcb\x07\x1f\x7c\x80\x10\
+\x82\xa9\x53\xa7\x2a\xd3\xe5\xba\x46\x68\x19\xda\x8e\x77\x2c\x35\
+\x35\x95\x8c\x8c\x0c\xaa\x94\x33\x7c\x0b\x6a\x75\xd3\x4b\x16\x00\
+\xc3\x00\x52\x7c\x3e\xec\x26\x3f\x7e\xdb\xd1\xd2\x1f\xab\x12\x40\
+\x5e\x98\xe4\xaa\xac\x9f\xeb\xba\x44\x45\xa9\xe4\x65\x53\x73\x13\
+\x8e\xb0\x11\x8e\xe0\xf0\xe1\xc3\x14\x15\x15\x51\x52\x52\x12\x50\
+\xfd\x59\x59\x59\x2c\x29\x58\xc2\xa2\x45\x0b\x49\x4e\x49\x41\x4a\
+\x10\xfa\x5c\x40\xf5\xba\xc1\x4c\x8e\x2b\x3d\x35\xaf\x3c\x32\x0f\
+\x14\x9e\x44\x87\x44\x01\x86\xb4\x87\x24\x8f\x02\xf5\xd5\x6f\x9d\
+\xe1\xe3\x9a\x6b\xae\x51\x80\x33\x1c\x4d\x19\x96\x74\xd0\x3a\x87\
+\xed\xdb\xb6\x7b\xcc\x97\xa8\xb9\x09\x97\xb4\x09\xb8\x02\xa0\xbf\
+\x04\xd1\x62\xd3\xec\xba\x24\x58\x16\xb6\x6d\x73\xe6\xcc\x19\x12\
+\x93\x92\x90\xae\x40\x08\x6d\xd7\x85\x20\x3e\x3e\x1e\xe0\xb0\x70\
+\xc4\x88\xf5\x1f\xac\xa7\xa8\xa8\x88\xd3\xa7\xd5\x1a\x4e\x3e\x9f\
+\x8f\xd9\xb3\x67\x53\x50\x50\xc0\xe4\xc9\x93\xf1\x59\x96\x4a\xbc\
+\x04\x42\x2f\x42\x54\xb0\xa9\xde\x43\xa4\xd2\xf4\xd2\x4d\x9b\x1f\
+\x5e\xb7\x0d\x46\x82\xa4\xa2\xa2\x82\xd2\xd2\x52\x12\x12\x12\xb8\
+\x6a\xda\x55\xb8\x7a\x4c\x41\x5d\xc3\x0a\xc2\x50\x06\x93\x50\xfe\
+\xe6\x26\x7e\xf3\x9b\xdf\x78\xad\xbd\x0d\x9c\xba\xd4\x01\xa0\x35\
+\x80\xc5\x29\x21\x78\xb9\xbe\x1e\xbf\x94\xe0\x38\xbc\xf0\xc2\x0b\
+\x2c\x5f\xbe\x3c\x24\x51\x23\x84\xcb\xf4\x19\xd3\xd9\xbe\x7d\xbb\
+\xfb\xe2\x8b\x41\xe1\x48\x4b\x4b\x63\xf1\xe2\xc5\x2c\x5e\xbc\x98\
+\xb4\x81\x03\xc1\xb2\x90\x52\x2a\x0f\xde\x74\xd8\x42\x62\x6f\x42\
+\xb5\x01\xa1\xe3\xfa\x26\x47\x65\x88\xce\x97\x21\x43\x76\x52\xca\
+\xd0\xfc\x81\x06\xcd\x7b\xef\xa9\xf5\x9d\x66\xcf\x9e\x4d\x54\x74\
+\x14\x42\x38\x4a\xfe\x03\x31\x64\x68\xaa\x19\x60\xe5\x0b\x2f\x70\
+\xea\xd4\x29\x50\x0b\x3b\x7e\xfa\x72\x88\x02\x86\x00\xac\xf1\xfb\
+\x5f\x5c\xe3\xf7\xdf\x01\x58\x89\x89\x6a\x19\xbe\x3d\x7b\xf6\xf0\
+\xde\xfb\xef\x31\x7b\xd6\xd5\xf8\xfd\x8d\x6c\xdd\xb6\x8d\xa2\xcd\
+\x9b\xbd\x09\x16\xa3\x2c\xcb\x62\xf2\xe4\xc9\xdc\x70\xfd\x0d\x5c\
+\x35\x7d\x3a\x51\x51\x3e\x90\x20\xa4\x6b\x24\x61\x94\x4e\x56\x5e\
+\x77\x50\xd2\x2d\x33\xc7\x2f\x25\x96\x65\x08\x7f\x98\xaa\x0f\x32\
+\xd7\x88\x00\x4c\x0f\xfe\x1c\x90\x48\x1c\x21\x58\xb7\x6e\x9d\x1a\
+\xe8\x98\x33\x27\x30\x68\x14\x42\x21\x49\x27\x49\x51\x51\x51\xa0\
+\x0e\xf0\x39\x2e\xd0\xbc\xc2\x8b\x0d\x80\x4d\x40\x2e\xf0\x19\x2f\
+\x56\x7e\xf4\xd1\x47\xd9\xb1\x63\x07\x4f\x3e\xf9\x24\xab\x57\xad\
+\xe6\xd0\xc1\x43\x94\x96\x96\xd2\xdc\xdc\xac\xc3\xc3\x14\xae\xbb\
+\xee\x3a\xae\xbf\xfe\x7a\xb2\x32\x33\x03\x5e\x7b\x40\xcd\xbb\x61\
+\xde\xb5\xeb\x65\xed\x82\x62\xef\xca\x73\x43\x3e\x69\x66\xff\x64\
+\x30\x3a\x30\x5d\x7f\x79\x0e\xc3\xc3\x67\x06\xa9\x63\x45\x9b\x8b\
+\xa8\xab\xab\x23\x3b\x3b\x9b\x31\x63\xc6\x20\x5c\xe1\x39\xfa\xc1\
+\xcc\xa1\x51\xb1\xaa\xaa\x8a\x5f\xa9\xc1\x20\x50\xeb\x07\xbe\x7c\
+\xb9\xa4\x82\x0f\xa3\x97\x8e\x5d\xb0\x60\x01\xf7\xdf\x7f\x3f\x96\
+\xcf\xc7\xcc\x99\x33\x59\xb8\x68\x11\x6b\xd7\xac\xa1\xb8\xb8\x18\
+\x80\xf1\xe3\xc7\xb3\x78\xd1\x62\x66\xcd\x9e\x45\x4c\x4c\x0c\x20\
+\x95\xb4\x4b\x02\x76\x55\xb6\x16\x9a\x05\x4d\xae\x61\xe7\x03\xde\
+\x5a\x20\x6b\x17\xc6\xe2\x73\x1d\xbc\xd6\xa2\x80\x56\xcf\x49\xde\
+\x7c\xeb\x4d\x00\xae\xbd\xf6\xda\x80\x53\x2a\xc3\xa4\xdf\x23\xbf\
+\xdf\xcf\xb3\xcf\x3e\x4b\x93\x4a\x80\x55\x02\xff\x72\x21\x19\x70\
+\x31\x01\x90\x0c\xfc\x09\xb0\x66\xce\x9c\xc9\x97\xbf\x7c\x9f\xea\
+\x17\xa1\x66\xd4\x2c\xbb\xf3\x2e\x1a\x1b\x1a\x48\x4d\x4d\x65\xe1\
+\xc2\x85\x0c\x1d\x3a\x2c\x28\xc1\x42\x84\xa8\xf0\x73\x1d\x34\x0b\
+\x29\x5d\x2c\xac\x73\x6d\xbc\x99\xb4\x31\x46\xf4\x42\x9d\x3e\x5a\
+\xb5\xd1\x98\xa3\x83\x96\x6c\x75\xfe\x4e\x59\x59\x19\xfb\xf7\xef\
+\x27\x2e\x2e\x8e\x39\x73\xda\x5f\x59\x5e\x4a\xc9\x8a\x15\x2b\xa8\
+\xac\xac\xf4\xec\xfe\xf4\xa0\x83\x70\xe9\x03\xe0\xcf\x40\xfc\xa0\
+\x41\x83\x78\xe0\x81\x07\x42\x26\x56\x00\xc4\xc4\x46\xf3\x95\xaf\
+\x7c\x25\x60\xb3\xbd\x1c\x3a\x21\x1e\xbb\x65\x24\x68\xe4\x39\x22\
+\xe6\xb6\xe2\xad\x4b\x53\x25\x9c\x33\x04\x2c\x09\x9f\x02\xd8\xe6\
+\x2c\xad\x36\x0e\xaf\x5d\xbb\x36\x10\xfa\x25\x25\x25\xb5\xdb\x01\
+\xaf\xbc\xf2\x0a\xdb\xb7\x6f\xf7\x5a\x5b\x8a\x5a\x6b\x88\xcb\x01\
+\x00\xa9\xe8\x55\x33\xef\xbe\xfb\x6e\x62\x62\x63\x10\x42\x06\x46\
+\xd6\xcd\x14\x6c\x70\x70\x26\x4c\x45\x9b\xea\xbc\x4d\x4d\x20\x5b\
+\x49\xf5\x12\xca\x64\x83\x93\x8d\x8d\x8d\x9c\x3c\x79\x92\xd3\xa7\
+\x4f\x53\x5d\x5d\x4d\x63\x63\x23\x8d\x8d\x8d\x9e\x7a\x26\x2a\x2a\
+\x8a\xb8\xb8\x38\x52\x52\x52\x48\x4b\x4b\x23\x33\x33\x93\xec\xec\
+\xec\x40\x6e\xa2\xae\xae\x8e\x8d\x1b\x37\x62\x59\x16\x8b\x16\x2d\
+\x6a\xb7\x03\xde\x79\xe7\x1d\x56\xaf\x5e\xed\xfd\x7c\x94\x0b\x3c\
+\x13\xe8\x62\x03\xe0\x7e\xcf\xe3\x9f\x3c\x79\x92\x9e\x21\x63\x30\
+\xcc\xd5\xd2\xdd\xe6\x30\xad\xa9\xce\xc3\xa2\xf4\x30\x63\x6b\x66\
+\xe7\x02\xca\xdf\x75\xa9\xa8\xa8\xa0\xac\xac\x8c\xf2\xf2\x72\x2a\
+\x2a\x2a\xa8\xac\xac\xa4\xa9\xa9\x89\x8c\x8c\x0c\x46\xa4\xa6\x92\
+\x91\x9a\xca\x80\x84\x04\x86\xc6\xc5\xc9\xf8\xc4\x44\x70\x05\xb6\
+\xed\xd0\xd8\xdc\xc4\xa9\x03\x07\xac\xed\x45\x45\x1c\x38\x7b\x96\
+\x33\x67\xce\x90\x97\x97\xc7\xd4\xa9\x53\xa9\xaa\xaa\xc2\xb6\x6d\
+\xa6\x4c\x99\x42\x66\x66\x66\xdb\x9e\xef\xa6\x4d\xac\x5c\xb9\xd2\
+\xfb\xf9\x0b\xd4\xaa\x65\x5c\x4e\x00\x98\x05\x30\x63\xc6\x8c\x40\
+\x86\x2c\xc4\x91\x92\x04\xe7\xd9\x78\xf6\x56\x25\xe8\xb0\xac\x60\
+\xfa\x35\x3c\xa4\x6b\x4b\x57\xbb\xae\xcb\xd1\xa3\x47\xd9\xbd\x7b\
+\x37\x7b\xf7\xee\xa5\xb4\xb4\x94\x01\x03\x06\x30\x75\xc4\x08\xf2\
+\x87\x0c\x95\xb7\x4c\x98\xc0\xa8\xcc\x0c\x2b\xbd\x7f\x32\xae\xe3\
+\x04\x3e\x52\x08\x5c\xdb\xb6\x5c\x21\x90\xde\x31\xc7\x41\x08\x07\
+\xe9\x08\x5c\xc7\xa1\xa6\xbe\x9e\x4d\x65\x65\x72\xdd\xdb\x6f\x5b\
+\x9b\x95\x2d\xa7\xa0\xa0\xa0\xcd\xbb\xd9\xb3\x67\x0f\x2b\x56\xac\
+\xf0\x34\xd6\x5b\x9c\xbb\xbb\xc9\x65\x01\x80\x18\xcf\x03\x76\xb4\
+\xdd\xb7\xa4\x85\xeb\x05\x75\x6d\xe4\xde\xc3\x52\xe8\xed\x99\x62\
+\x6a\x6b\x6b\xd9\xb1\x63\x07\xbb\x76\xed\x62\xcf\x9e\x3d\x24\x27\
+\x27\xb3\x60\xe2\x44\xbe\xb0\x70\xa1\x9c\x72\xcf\x3d\xd6\x80\xa4\
+\x44\xc5\x50\xdb\xb1\x84\x10\xe0\xd8\xd8\xf5\xf5\x9a\xf9\x02\x57\
+\x38\x48\xdb\x51\x7f\xc3\x40\x21\x34\x10\x5c\xe1\x90\x28\x1c\xae\
+\xc9\xcc\xb2\x8e\x9f\x3a\xcd\xe6\xca\x4a\x12\x13\x13\xc9\xc9\x69\
+\x7d\x3d\xea\x83\x07\x0f\xf2\xcc\x33\xcf\xa8\x21\x6a\xd8\x01\xdc\
+\x70\x91\xa3\xb0\x8b\xf6\x62\xc8\x23\xa8\x05\x0d\xf9\xda\xd7\x1e\
+\x61\xc2\x84\xfc\x5e\x69\xf4\xe4\xc9\x93\x6c\xd9\xb2\x85\xa2\xa2\
+\x22\x8e\x1d\x3b\xc6\xfc\xc9\x93\xb9\x66\xd2\x24\x39\x27\xff\x4a\
+\x2b\xbd\x7f\x7f\x5c\x5b\x33\x56\x38\xea\xbb\x13\xc6\xe0\x80\x64\
+\xdb\x0a\x04\x01\x46\xab\x63\xd2\x00\x87\xeb\x68\xad\x60\xdb\x34\
+\x36\x37\x73\xcf\xba\x75\x9c\xb5\x6d\xc6\x8d\x1b\x47\x7a\x7a\x3a\
+\xcb\x96\x2d\x0b\xb9\xb7\x23\x47\x8e\xf0\xc3\x1f\xfe\xd0\xcb\x67\
+\x1c\x06\x46\x5f\x68\x8f\xbf\x2f\x01\x20\x1a\xf5\x02\x65\x12\xc0\
+\xe2\xc5\x8b\xb9\xe5\x96\x5b\x88\x8b\xeb\xfa\xca\xa6\xd5\xd5\xd5\
+\x14\x16\x16\xb2\x69\xd3\x26\x4e\x9c\x38\xc1\x8d\xb3\x67\xb3\x78\
+\xc6\x0c\x66\xe4\xe6\x12\x65\x59\x48\xc7\xc6\xb5\x85\x62\xba\xc1\
+\xcc\x00\x03\x1d\x81\x2b\xec\x00\xe3\xa5\x63\x48\x78\xe0\xaf\x30\
+\x80\xa2\xeb\x6b\x10\x49\xe1\xf0\xea\xa1\x43\xfc\xf1\xc8\x11\xf2\
+\x52\x53\xf9\xd6\x94\x29\xdc\xbf\x75\x2b\x0f\x3f\xfc\x70\x40\x13\
+\x1c\x39\x72\x84\xa7\x9e\x7a\x8a\xc6\xc6\x46\x50\x8b\x51\x8f\xa0\
+\xed\xf7\x14\x2f\x0b\x00\x80\x7a\x6b\x76\x1d\x7a\xb7\xce\x94\x94\
+\x14\xee\xb8\xe3\x0e\x66\xcd\x9a\xd5\x61\xc5\xa6\xa6\x26\x36\x6f\
+\xde\xcc\x86\x0d\x1b\x28\x2f\x2f\xa7\x60\xe6\x4c\x6e\x9c\x7d\x35\
+\xd3\xf3\x72\xf1\xb9\x6e\x80\x39\xe1\xea\x3b\x60\xd7\x3d\x69\xb7\
+\x4d\x5b\xef\x68\xc9\x0e\xaa\xf7\x00\x48\x84\xa3\xce\x3b\x5a\x43\
+\x18\xe5\xea\x9b\x9b\x79\x70\xfb\x76\x1a\x85\xe0\x5b\x57\x5e\x49\
+\x7e\x6a\x0a\xab\x2a\x2a\x39\x38\x78\x30\xf7\xde\x7b\x2f\x87\x0f\
+\x1f\xe6\xe9\xa7\x9f\x36\x99\x9f\xcb\x05\x98\xea\xf5\x71\x00\x80\
+\x47\x9f\x47\xbd\x18\x92\x08\x30\x65\xca\x14\xee\xba\xeb\x2e\x92\
+\x93\xcf\xdd\x35\x6d\xff\xfe\xfd\xbc\xff\xfe\xfb\x6c\xdd\xba\x95\
+\xdc\xdc\x5c\x96\x2f\x58\xc0\x35\x13\x26\x10\x63\x59\x4a\x6a\x3d\
+\xa6\x99\xcc\x0c\xa8\x7b\x5b\x4b\xbf\x62\x5c\x50\xed\x8b\x73\x40\
+\x12\x30\x05\x1e\xe3\x0d\xa7\xcf\x35\xeb\x3a\x82\x57\x8e\x55\xf2\
+\x3f\xa7\x4e\x91\xdb\x2f\x89\x6f\x8f\x19\x8b\x74\x25\xf5\xb6\xcd\
+\x43\xa5\xfb\x79\xf8\xe1\x87\x79\xe6\x99\x67\xcc\x2c\x5f\x5e\x5f\
+\x62\x7e\x5f\x01\x80\x67\x12\x56\xa2\x76\xcc\xb4\x52\x52\x52\x78\
+\xf0\xc1\x07\x19\x35\x6a\x14\x7e\xbf\x9f\x0d\x1b\x36\xf0\xf7\xbf\
+\xff\x1d\xd7\x75\xf9\xfc\xc2\x85\x72\xe9\xd5\x57\x5b\x03\x13\x93\
+\x42\xd5\xb2\xd0\x36\x3a\x20\xf9\xea\x98\x6b\x1b\x52\xec\x98\x8c\
+\x0c\x05\x84\xeb\x68\x33\x61\xab\xe3\x3a\x02\xd0\x9a\x42\x84\xd6\
+\xd7\xdf\x4f\x37\x35\xf1\x58\x59\x19\x2e\xf0\xad\x61\x39\x8c\x8a\
+\x8f\x53\x51\x89\x94\x7c\xa3\xac\x8c\x2a\xdb\xf6\x9e\xaf\x42\x4b\
+\x7e\x9f\x5b\x38\xa2\xaf\xbd\x1d\x3c\x53\x27\x44\x92\x62\x63\x63\
+\x29\x28\x28\x60\xed\xda\xb5\x5c\x79\xe5\x95\x7c\x79\xd1\x42\xa6\
+\x8d\x19\x0b\x42\x18\xd2\xea\x31\xd9\x50\xed\x8e\x40\x3a\xb6\xf1\
+\x3b\x54\xdd\x9b\x52\x2f\x85\x83\x70\x0c\x07\xcf\xf0\x15\x4c\x6f\
+\x3f\xc4\x0c\x68\x73\x21\x85\xc3\xf3\xa7\x4f\xb3\xb9\xa9\x89\x69\
+\x89\x89\xdc\x3b\x30\x2d\xf0\x1e\xe1\x86\x86\x06\x56\xd6\xd6\x7a\
+\x1e\xde\x01\xd4\x0b\xaf\x2d\xf4\x41\xea\x8b\xaf\x87\xc7\x03\xbb\
+\x51\x2f\x8b\xf2\x9b\xc7\x1e\x93\x33\x73\x73\x2d\xd7\x71\xc2\x9c\
+\x33\x4f\x45\xdb\x61\x76\x5d\x84\xa9\x7f\x27\x20\xe9\xa1\xd2\x6e\
+\x07\xcc\x85\x10\xa6\x59\xf0\xea\x9b\x8e\xa2\x13\x0a\x28\x47\xb0\
+\xbf\xc9\xcf\x4f\x1b\x1a\x88\x01\xbe\x9b\x9a\x4a\xaa\xcf\x07\x52\
+\xb2\xba\xd1\xcf\x1b\xcd\x81\x7d\x1a\x3f\x44\xad\x3d\xe0\xd2\x47\
+\x29\x00\x80\x35\xd2\xee\xf6\xab\xc9\x8b\xac\x98\x73\x80\xd4\x93\
+\xf6\xa4\x94\x2c\xf6\xc5\x56\x00\x43\x86\xa5\xa7\xf3\xc7\xc7\x1e\
+\x23\xde\xe7\x43\x38\x41\xc9\x0d\xd1\x02\xda\x7b\xf7\x4c\x82\x08\
+\x30\xcc\x33\x01\xb6\x61\xeb\x4d\xaf\x3f\xcc\xa6\x0b\x5d\xd6\x11\
+\xad\x3a\x8e\x5e\x39\xdb\x76\x78\xba\xa5\x99\x8f\x80\xeb\xa3\xa3\
+\x59\x12\x1d\x8d\xed\xba\xbc\xe8\x38\x6c\x75\x5d\x7c\x51\x3e\xee\
+\x7f\xee\x59\x6e\xba\xf7\x9e\x1e\xf5\xe1\x05\x01\x80\xc9\xa8\xa3\
+\x7b\x61\xe3\xeb\x16\xfb\x8b\x2c\x8e\xee\xb5\xa8\x3d\x09\x2d\x1a\
+\xcc\xd1\xb1\x90\x3c\x10\x32\x86\x49\xae\x18\x0b\xa3\x26\x49\xf2\
+\xe7\x4a\x86\xe6\xb6\xdd\x78\xb3\x1f\x8e\x1f\x86\xe3\x47\x2c\xce\
+\x1c\x87\xda\x53\xea\x58\x8b\x3f\xf8\xac\xf1\x49\x92\x7e\x03\xa0\
+\x5f\x2a\x64\xe6\x48\x86\xe6\x41\x6a\x3a\xb4\x34\x35\xf1\xb9\xd1\
+\xb9\x9c\xae\x3c\xc6\xdd\x0b\x16\xb0\x7c\xfe\xb5\x8a\xd1\x86\xc7\
+\x2e\xdb\xf0\xf6\xa5\xc1\x4c\x05\x1a\x2d\xf1\xb6\x40\x18\x60\x09\
+\x61\xae\x6d\xb7\xe2\x10\x1a\x6d\x07\xc2\x3e\xc1\x5a\x24\x6f\xa0\
+\xb6\x01\x7b\x4c\xc7\xb3\xbf\xd3\x23\x39\x09\xfd\xfb\xf1\x85\x1f\
+\xfd\x95\x03\xdb\xae\xa5\xde\xd8\x7a\x32\xa1\x1f\x24\xf4\x87\xfe\
+\x03\x25\x03\x32\x21\x2d\x1b\xd2\x87\x48\xb2\x46\x40\xff\x01\x17\
+\x0f\x18\xd6\x1a\x69\xcb\x92\x42\xf8\xd5\xa3\x51\x14\x7f\xd0\xf5\
+\x6b\x65\xe4\x48\x3e\xf1\x59\xc9\x82\xcf\xb8\x9c\x3e\x66\xb1\xe7\
+\x43\xd8\xb7\xc9\xe2\xd0\x4e\x8b\x93\xe5\xdd\xbb\xf7\x01\x59\x92\
+\x31\x53\x25\x99\x39\x47\x78\xfd\x17\x05\xc4\x27\x55\xf0\xe7\xbb\
+\x96\x91\x12\x1b\x6b\x64\xe1\x4c\x06\x9b\xcc\x6c\x2d\xc6\x77\x42\
+\x13\x3b\x8e\x13\xe6\x00\x86\x32\x1d\x61\x23\xb4\x3f\x20\xf5\x3a\
+\x04\xde\x08\xe2\x31\x09\xff\xa1\x75\xfa\xbd\xa8\x2d\xb9\x5e\x41\
+\xad\xfd\x02\xd8\xbf\xda\xb5\x2d\x46\x38\xf9\x7c\x69\x4a\xe7\x93\
+\xac\xfd\x07\x4a\xae\x18\x03\xc3\xf3\x25\xa3\x26\x49\x46\x4f\x91\
+\x8c\x9a\x02\x09\x49\xe7\x1f\x0c\xd6\x1a\x69\xcb\xbf\xfe\xdc\xe2\
+\xb9\xfb\xa3\xf0\x45\x4b\xe6\xdc\x2c\xb9\xea\x7a\xc9\x88\x09\x92\
+\xb4\x6c\x85\x5c\x29\xc1\x6e\x86\x9a\x13\x70\xb2\xdc\xe2\xf0\x2e\
+\xd8\xb7\xd9\x62\xcb\x1a\x8b\xa6\xfa\x76\xee\xc9\x52\x0f\x96\x3e\
+\x44\x92\x99\x03\x89\xc9\xea\x13\x9f\x24\xb1\x9b\xc1\x17\x05\x76\
+\xb3\x45\xfd\x19\x38\xfd\x11\x1c\x3f\x6c\x71\xec\x00\x34\xd6\x85\
+\xb7\x59\xc4\xf4\x82\x06\xee\xfb\xe9\x1c\xb2\x7f\x74\x6f\x40\x2a\
+\x3d\xc6\x0a\xed\xc4\x85\xc6\xf3\x1e\x08\xec\xa0\x87\xef\x49\xb1\
+\xe9\x18\x0a\x53\xd5\x1b\x1a\xc5\x15\x7a\x56\x51\xf0\x2e\x6c\x29\
+\x79\x86\xc0\x36\x9c\x47\x74\x4a\xfb\x0a\x80\xf9\xb7\xfd\x33\x5f\
+\x7d\x7e\x05\x49\xc9\xc9\xb4\x34\xc3\xaa\x5f\x5a\xa4\x1a\x1b\xd0\
+\x37\x35\x82\xff\x2c\xd4\xd7\x58\x54\x7f\x04\xa7\x2a\xa1\xaa\xcc\
+\xa2\xaa\x8c\x56\xfb\x30\x2a\x46\x32\xf6\x2a\x98\xb2\x40\x72\xf5\
+\xcd\x2e\xb9\x57\x9d\x1f\x33\x12\x30\x01\xaf\xff\xc2\x62\xc1\x67\
+\x25\x49\xc9\xed\x57\x70\x5d\xd8\xf0\x17\x8b\xff\xf9\xb9\xc5\xf6\
+\x75\x96\x9e\x59\x03\x96\x4f\x32\x6a\x32\x4c\x9c\x27\xc9\x9b\x29\
+\x19\x7b\x95\x64\xf0\x48\xf0\xf9\xba\x6a\xff\x95\xd9\xd8\xfd\x0f\
+\x8b\x8d\xaf\x5b\x14\xae\x16\x34\x35\x04\x97\xd4\xc9\x1c\x2e\x99\
+\xb6\x48\x32\x65\xa1\x32\x41\xb1\xcb\x96\x86\xda\xff\x80\xc7\x2f\
+\x82\x26\xc3\xf0\xe4\xa5\x2d\x02\x4e\xdf\x39\x09\x21\xd7\x1b\x6d\
+\x92\xe7\x30\x1f\xe0\x45\x29\x29\x02\x92\x07\x65\xe2\xaf\x4f\xc2\
+\x6e\x4a\x27\x36\x61\x38\xd7\xdd\x7e\x0f\xe3\x66\xcd\x0b\x29\xdb\
+\x6f\x00\xa4\x66\x48\x52\x33\x20\x63\xa8\x12\xa4\x36\xb3\x99\xc7\
+\xa1\x6c\x8f\x45\xd9\x1e\x38\xb0\xcd\x62\xdf\x26\x8b\xa3\x25\xe0\
+\x8a\xe0\x0d\x64\x8d\x94\xdc\xb0\xcc\x65\xdc\xcc\x50\x90\xa4\x0c\
+\x82\xcc\x9c\xb6\xdb\xef\x08\x14\x56\x6b\x0e\x9b\x59\xc9\x3b\x27\
+\x25\xbc\xfb\x92\xc5\xca\xc7\x7d\x1c\x2d\x09\x32\xfd\x9a\x5b\xd4\
+\x67\xda\x62\xd9\xa6\x2d\xeb\x2c\x32\x5b\x73\x1c\x5b\x9a\xa0\xf0\
+\x0d\x8b\x0d\xaf\x59\x6c\x7e\xd3\xa2\xee\x54\x68\x53\x19\xc3\x24\
+\x63\xa6\x49\x72\xa7\x4b\x86\x8d\x83\x9c\xf1\x12\xf1\xc9\x29\xf8\
+\xdc\x66\x1d\xe6\x79\x92\x7e\x6e\x12\x48\x08\xa1\x10\x1d\x3e\x5f\
+\xcb\x18\x41\xb6\x89\x27\xb1\xf0\x2c\x2b\xbe\xf6\x12\xc5\xeb\x05\
+\x6a\x11\x93\x31\x74\x75\xf9\xbf\xd4\x0c\xc9\xb0\xf1\x92\xd1\x93\
+\x61\xf4\x54\x05\xde\xc1\x23\x5a\x2f\x7b\xec\x20\xfc\xe3\xaf\x16\
+\x1b\x57\x59\x1c\xd8\x6a\xd1\x50\xdb\x71\xf7\xf5\x4f\x93\x8c\xc8\
+\x87\xfc\xb9\x92\x49\xd7\x6a\xe1\x88\xef\x98\x07\x56\x67\x98\x22\
+\x25\x7c\x73\x89\x8f\xa2\x37\x7d\x01\xbb\xff\xe9\x87\x5c\x6e\x58\
+\x26\x49\x4a\x39\x7f\x76\x2a\x1c\x10\xae\x0b\xa5\x5b\xa0\xe8\x6d\
+\x8b\xe2\x0f\x2c\x4a\x36\xb6\xde\x39\x51\x31\x92\xf4\x21\x90\x3e\
+\x14\xd2\x87\x2a\x29\x4c\x19\x24\x49\x4e\x83\xf8\x24\x88\x89\x53\
+\x82\x1e\x1d\x03\x4d\x0d\xaa\x17\xfc\x67\xe1\x6c\x35\xf8\xeb\x2d\
+\x8e\x1f\x86\x53\x95\x16\xc7\x0e\x2a\x55\xed\x69\xb9\x50\x09\x6f\
+\x22\x6b\x44\x1c\xc9\x69\x92\x81\x83\x15\x60\x62\xd5\x5b\x6b\x08\
+\x07\x6a\x4f\x2a\x75\x5f\x73\x02\x2a\x4b\x41\xba\xe7\xb6\x91\x3d\
+\x5a\x32\xfd\x06\xc9\xd5\x9f\x92\x8c\x9b\x2d\x59\xf7\x47\x8b\x37\
+\x7f\xeb\xa3\xe4\x43\xab\x55\x3f\x21\x63\x98\x92\xf4\x98\x78\xd5\
+\x2d\x0d\x35\x16\x75\xd5\x50\xfd\x51\xa8\x63\x0d\x90\xd0\x5f\x32\
+\xff\x36\xc9\x4d\x5f\x72\x19\x3b\xad\x6d\xfe\x58\x9d\x65\xc2\xef\
+\xbf\xeb\xe3\xa5\xa7\x2c\xee\xfd\x0f\x97\x82\xe5\x92\xe8\x98\x0b\
+\x1b\xc2\xb4\xa6\x1d\xa4\x54\x91\xcb\xfe\xcd\x16\x07\x77\x58\x94\
+\xed\x86\x8a\xfd\xca\xae\xb6\xd6\xe1\xdd\xa1\xa8\x18\xe5\xc7\xf4\
+\x4b\x2d\xe5\x6c\xf5\xdf\xb8\xf5\x91\xf9\x5c\x77\x47\x3e\xf1\x5d\
+\xdc\x44\xbe\xaa\x0c\x8e\x14\x5b\x1c\xd8\x0e\xbb\x37\x58\xec\x7a\
+\xdf\xa2\xa9\xc1\x0a\xb9\x8e\xb0\xd5\x6f\x5f\xb4\x64\xe6\x8d\x0a\
+\x1c\x79\x33\x24\xc3\xf3\x21\xa6\x03\x85\x73\xea\x18\x94\x6e\xb1\
+\xd8\xf5\x81\x45\xe1\x6a\x8b\xa3\x7b\x82\x6d\x4f\x9c\x2f\xb9\xe7\
+\x27\x22\x00\x04\x93\x5f\x9d\x56\xcd\x42\x40\xdd\x29\x18\x90\x79\
+\xf1\x63\xd7\x8e\xf2\x0c\x2d\xcd\xca\x8f\x38\x59\x6e\x51\x7d\x5c\
+\x49\x63\xcd\x09\x8b\xb3\x67\x94\xc4\x3b\x2d\x0a\x3c\x8e\xad\x3a\
+\xd6\xf2\x41\x52\x8a\xd2\x0e\xc9\x03\x95\x44\x67\x0e\x57\x61\x69\
+\x66\x0e\x01\xb0\x2f\xb2\x62\x42\xc2\xe6\x9e\x98\x36\x21\x60\xdf\
+\x26\xd8\xf0\x17\x1f\x1b\x5e\xb3\xa8\x2c\xb5\x02\x8e\xf3\xdc\x4f\
+\x4b\xee\x7c\xdc\x25\x67\x7c\xe7\xb4\x6b\x6b\xed\x97\xef\x83\x37\
+\x9e\xf7\xf1\x97\x9f\x59\x38\x2d\x16\x63\xa7\x4b\x9e\x2b\x14\x58\
+\x56\x37\x01\xd0\x17\x92\x16\x3d\x05\x46\x4f\xe8\x7c\x9a\x36\x80\
+\xe2\x0d\xb0\xea\x97\x3e\xde\xf9\x83\x72\xac\x7d\xd1\x92\xa5\xf7\
+\x48\x96\x7d\xdf\x0d\x98\xd9\xee\x00\xae\xa1\x16\x7e\xf7\xef\x3e\
+\xae\xbf\xd3\x65\xf4\x94\x6e\x6a\x80\x08\x5d\x38\xd0\x9e\x28\x87\
+\x3f\xfe\xc0\xc7\xaa\x15\x0a\x08\x19\xc3\x24\x3f\x5e\x27\x18\x3c\
+\xb2\xeb\x20\x6c\x0d\x68\x5d\xf6\x01\x22\x74\x71\x80\x70\x60\x1b\
+\xfc\xe8\x73\x51\x0c\xc8\x94\xfc\xf0\x2d\x97\xa8\xa8\xf3\x94\x08\
+\x8a\x74\x7b\xdf\x05\x82\x63\x83\xbf\x3e\x98\x2a\x8e\x00\xe0\x32\
+\xd5\x06\x7d\xdd\xef\x8a\x50\x84\x22\x14\xa1\x08\x45\x28\x42\x11\
+\x8a\x50\x84\x22\x14\xa1\x8f\x0f\xa5\x02\xff\x84\x9a\xd1\x55\x8b\
+\x5e\xad\x24\x42\x97\x3e\x3d\x82\xda\x94\xa1\xb5\x3d\xff\xfe\xc4\
+\x05\x5c\xae\x3d\x42\x17\x47\xea\xf7\x68\x66\xb7\xa0\xb6\xa7\x79\
+\x40\x83\xc2\x03\x41\x71\xa4\x9b\x2e\x3d\xf2\x32\x69\x0f\x11\xdc\
+\x65\x34\x9c\x12\xf5\x39\x41\x64\xd7\xf2\x3e\x47\xa6\x9a\xee\xee\
+\xba\x06\xfd\x74\x7d\x17\x98\xdf\x46\x99\x62\x5d\x66\xce\xe5\xd0\
+\xa9\xbe\xcb\x0c\x44\xf5\xa8\x1d\x43\x2d\xd4\x8c\xee\xd6\x34\xc4\
+\x26\xfd\xf7\xf6\x88\xcc\xf5\x2e\x8d\x44\xed\x9b\xbb\x1e\xb5\x39\
+\x73\x0b\x6a\x17\xcd\x13\xfa\xd8\xb7\x51\xcb\xc7\x9f\x4f\x0d\x00\
+\x6a\x3d\x1e\xa9\xaf\x17\x4e\x73\xf4\xb9\x13\xe8\x65\x6c\x23\xd4\
+\x7b\x5e\xb7\x4d\xc7\xbb\x6e\xd7\x01\x37\x9d\x67\x00\xcc\xd7\x6d\
+\xd4\x02\x1f\xa0\xde\x45\xbc\x03\xf8\x23\x6a\x3b\x59\xef\x1a\xff\
+\xa5\xb5\x44\x6a\x84\x7d\x3d\xa3\x5b\x8c\x4e\x6d\x00\xbe\x81\x5a\
+\x1e\x25\x16\x48\x40\x2d\x8e\xf8\x82\x51\xa6\x11\xf5\x1e\xfd\xf9\
+\x02\x40\x34\xf0\x12\xe0\xd0\xb9\xad\xe0\x97\x44\x58\xd8\x33\x2a\
+\x32\x3a\xf3\xb3\xed\x94\xfb\xad\x51\xee\xf7\x1d\x00\xc0\x07\x8c\
+\xd5\x52\xeb\x99\x93\x32\xe0\x67\xc0\xa0\x0e\x22\x81\x38\xd4\xbb\
+\xfa\xe1\x79\x00\xa1\xff\xd6\xa3\x76\x18\xff\x12\x30\x2a\xcc\x3f\
+\xe8\x0a\xa5\x18\x6d\xef\xd7\xc7\xc6\xa0\x36\x8b\x3e\xae\x01\x78\
+\x1a\x78\x0d\xb5\x55\xdc\x25\x4b\xcd\x46\x47\xb4\x37\x99\x7a\x2c\
+\x6a\x7d\xfc\xf5\xc0\xff\x6b\x07\x00\xcd\xa8\x8d\x15\x6b\xdb\x90\
+\xd8\x12\xed\xed\xb7\x45\x4f\x87\x95\xb7\x81\xbd\xfa\xfb\x3f\x7a\
+\xf1\xb9\x63\x8d\x6b\x9c\x40\xad\x11\x70\xa6\x8d\x7b\x6e\x02\x16\
+\x5d\xca\x9e\xb7\xf7\xa0\x59\xbd\x10\x06\x56\x03\xbb\x50\x1b\x2a\
+\x5c\xa9\x3b\x7a\x1e\xea\xe5\x5c\xaf\xcc\x37\xdb\x69\x67\x2e\x6a\
+\xd1\x86\xc7\x81\x19\x86\x59\xf0\xcc\x4f\x6f\x46\x58\xa6\x59\xdb\
+\xa8\x93\x4e\xd3\xb5\x16\x1a\x06\xfc\xd2\x28\x53\xd5\x81\x80\x7c\
+\x6c\xe9\x5d\xe3\x21\x5f\xa0\xab\xef\x54\xb5\x6e\x02\x76\xeb\x4e\
+\x34\x69\x99\x71\xbe\xb0\x1b\xed\x7b\x26\x61\xc2\x79\xca\x5d\x1c\
+\x6a\x83\xc1\xef\x1b\x65\x96\x5f\x8a\x00\xf8\x84\x61\x5f\x25\x70\
+\x10\xf8\x37\x2d\x09\x51\xdd\xec\xcc\xbb\x5a\x39\x3f\xd4\x38\x5f\
+\xd3\x8d\xfb\xfc\x95\xae\xfb\x8d\xf3\x04\x80\xb6\xb6\x80\xfb\x57\
+\x42\xc7\x21\x2e\x49\xba\x59\xab\xb8\x70\xdb\x57\x03\xfc\x05\xf5\
+\xaa\x7d\x7a\x17\x3a\x73\x78\x1b\xde\xbd\xe9\xd0\x75\x95\x6e\x3c\
+\x0f\x7e\x80\x79\xcf\x6d\x6d\x05\x9b\x67\x94\xd9\x75\x29\x3b\x83\
+\x89\x5a\xc5\xfd\x2d\xcc\x2f\x30\x9d\xbb\x5f\x6a\xef\xb9\xa3\xce\
+\x8c\xe9\x44\x99\xae\x92\x97\x26\x76\xe8\xbd\x0c\xa9\x79\x3f\x69\
+\x6d\x94\xe9\x6f\x94\x39\x73\xb9\x84\x86\x31\x3a\xeb\xf6\x1d\x60\
+\x6b\x58\x47\x15\xa3\x36\x93\xe8\x0e\x73\x7b\x02\x00\x74\x04\x21\
+\xd1\x8b\x59\xf7\x32\x00\xda\x32\x77\x51\x61\x11\xc9\x65\x49\xd7\
+\xeb\x50\xc9\xeb\x88\xa7\x2e\x12\x00\xbc\x34\xf1\xf7\xcf\x03\x00\
+\xac\x76\x84\xc1\xd4\x82\x97\x2d\x2d\x09\xf3\x98\x2f\x06\x00\xbc\
+\x34\xf1\x8e\x4e\x96\xf7\x98\x1a\xdf\x86\x87\x6f\xde\x4f\x5b\xdb\
+\x87\x0c\x30\xca\x9c\xbe\xd4\x98\xfa\x3d\xe0\x4d\x9d\xf9\x1a\xda\
+\x41\xd9\x04\xa3\x23\x5a\x2e\x12\x00\x4c\x69\x8c\xef\x64\x9d\xef\
+\xea\xf2\x8f\x76\x70\x3f\x79\x6d\xd4\x9f\x64\x94\xd9\x7a\xa1\x19\
+\x74\xbe\x87\x83\xe7\x6a\xf5\x9e\x89\x1a\x13\x68\x8f\x4c\x27\xa9\
+\xfa\x22\x01\xd6\x06\xb6\x18\xf7\xde\x11\x0d\x43\xed\x7e\xe2\x69\
+\xb0\x8e\xb4\x4b\x6b\x34\xc3\xf8\x7e\xc9\x45\x01\xb7\x12\x9a\x0e\
+\xcd\x69\xa7\xec\x53\x46\xd9\x95\x17\x49\x03\x98\x12\xdd\xd1\xa6\
+\xcd\xb9\x5a\xc3\x79\xd7\xdb\xd6\xc1\xfd\xec\x6c\x25\x7a\xb1\x74\
+\xd2\xca\x2b\xf3\x99\x4b\x0d\x00\x16\xb0\xca\x78\xc0\xe3\xc0\x17\
+\x51\x3b\x86\x46\xeb\xd0\x6b\x16\xf0\x1b\x42\x47\x0c\xc7\x5e\x44\
+\x00\x5c\xa5\xeb\x97\x76\xc1\xc1\x1b\xd7\x41\x99\x66\xd4\x82\xd1\
+\xab\x80\x89\xa8\x6c\x68\x4e\xd8\x73\x1f\xa5\xfb\x59\xd2\x3e\x1f\
+\xff\xbf\x44\xe7\x86\x5e\x8f\x02\xd7\xf4\x80\xb9\x1d\x95\xe9\xec\
+\xa8\x5e\x0b\xc1\x8c\xe3\x6b\x46\x6e\x62\x11\xf0\xdf\x46\xc4\xb2\
+\x1e\xb5\xc7\x6f\x6c\x1b\x6d\x9b\x00\x28\x30\xda\x0d\xff\xd4\x77\
+\xd2\xe4\x7c\xac\x69\x2e\xb0\x42\xab\xc2\x1a\x54\xb6\xae\x09\x95\
+\x83\x7f\x5d\x27\x89\x12\x7b\x28\xdd\xed\x95\x49\xe8\xe4\x3d\xfe\
+\x42\xdf\x97\x1b\x17\xeb\x3b\xae\x00\x00\x00\xb7\x49\x44\x41\x54\
+\xd6\xde\x7d\xa8\xac\xa5\x19\xb3\x7f\xb1\x93\x5a\xc2\x5b\x2c\x7a\
+\x2a\x6a\x5b\xd8\x2a\x82\xc3\xc1\xaf\xa2\x06\xb5\x22\x74\x1e\xe9\
+\x1d\xcd\x88\xbb\x8d\x70\xac\x35\x89\x5d\xdd\x8a\x74\x86\x03\xe1\
+\x73\xe8\x95\xcc\x3b\xa1\x55\x7a\xc3\x24\x45\xa8\x17\xe8\xf7\x06\
+\x23\x3e\x44\x8d\x26\x3e\xa7\x1d\xb9\x1f\x69\x67\x6e\x5a\x1b\x0c\
+\x37\x25\xfe\xdd\x1e\x24\x82\x22\xd4\x07\xa2\x91\x43\xed\x48\xb6\
+\x68\xc7\x37\xf9\x54\x37\xaf\x1b\x01\x40\x1f\xa1\x68\xc3\xbf\x78\
+\x16\xb8\x4e\x4b\x74\x29\xf0\x8c\x8e\xc5\x0f\xa3\x26\x8a\x7c\x1f\
+\x35\x64\x2d\x51\x6f\x10\xfd\x82\xf6\xa7\x99\x45\x00\xf0\x31\x09\
+\x47\xc3\xed\x75\xb8\xc3\x69\x4e\x30\xb9\x82\xf6\xa7\x95\x45\x00\
+\x70\x89\x00\xe2\x7c\x53\x04\x00\x11\x8a\x50\x84\x22\x14\xa1\xbe\
+\x4a\xff\x0b\xae\x75\xe2\xe0\x08\xd2\x80\xca\x00\x00\x00\x00\x49\
+\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x33\xb3\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\x83\x00\x0f\x00\x0f\x94\xe6\x2b\x91\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x07\x08\
+\x0b\x32\x3b\x8e\x92\xd0\xbf\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\xbd\x69\x90\x5c\xd7\x75\xe7\xf9\xbb\
+\xef\xe5\xbe\x55\x66\xa1\x0a\x3b\x40\x62\x25\x48\x50\x04\x29\x73\
+\xa7\x68\x4a\x14\x48\x89\xa0\x48\x69\x5a\x9a\xf6\x8c\xa7\x3b\x62\
+\x42\xee\xfe\xd0\xd3\x52\xc8\x3d\x16\x29\xd9\xb2\x6c\xb7\x3b\x34\
+\x5f\xc6\x9e\x09\x77\xcb\xee\xb0\x67\x2c\x87\xda\xd3\xb2\xd4\xf2\
+\xd2\x32\x49\x91\x20\x41\x8a\xa2\x4d\x82\x20\x05\x52\x14\x00\x12\
+\x20\x00\x62\x29\x6c\xb5\x66\x66\x65\xe5\xfe\xde\xbd\xf3\xe1\x6d\
+\xf7\xbe\x2c\xd0\xa4\x80\x82\x04\xa8\x2e\xa2\xa2\x32\x13\xb9\xd5\
+\x3b\xe7\x9e\xf3\x3f\xff\xb3\x5c\x58\x5c\x8b\x6b\x71\x2d\xae\xc5\
+\xb5\xb8\x16\xd7\xe2\x5a\x5c\x8b\x6b\x71\x2d\xae\xc5\xb5\xb8\x16\
+\xd7\xe2\x5a\x5c\xbf\x10\x4b\x5c\xaa\x0f\xfa\xca\x57\xbe\xa2\x82\
+\xdb\x5f\xfb\xda\xd7\xc4\xe2\xa5\xff\x05\x51\x80\x89\x89\x89\x50\
+\xf0\x7f\xf4\x47\x7f\x74\xde\xe7\x2d\x2a\xc5\x15\xa8\x00\xba\xf0\
+\x83\xa5\x50\xa0\xa2\x7b\xff\xf1\x3f\xfe\xa7\x45\x85\xb8\xd2\x15\
+\xa0\x5a\xad\x52\xa9\x54\x3c\xf1\x2b\x4f\x09\x44\xa8\x07\xde\x63\
+\xf8\x8f\xff\xf1\x1f\xff\xf1\xa2\x32\x5c\x69\x0a\xf0\xc8\x23\x8f\
+\x20\x84\x60\xf3\xe6\xcd\x6c\xd9\xb2\x85\xd1\x91\x11\x4a\x43\x43\
+\x2c\x19\x1e\xc6\x4e\x24\x50\x4a\x19\x16\x42\x28\x50\x0a\xfe\xe4\
+\x3f\xff\xc9\xbb\xbe\xff\xa2\x62\x5c\x46\x0a\x10\x5f\x85\x42\x81\
+\xf2\xd0\x10\xc5\xd2\x10\x1b\x36\xac\xe7\xba\xeb\xae\xa3\x5c\xa9\
+\x78\x92\x8f\xb9\x0a\xe5\x9b\x88\x40\x4f\xfe\xf4\x4f\xff\x74\x51\
+\x19\x2e\x17\x05\x50\x4a\xf1\xe8\xa3\x8f\x0e\xfc\x9f\x52\x4a\xfb\
+\xf1\x04\x6e\x5b\x16\x9b\xaf\xb9\x86\xdb\x6e\xbd\x95\x8d\x1b\x37\
+\x92\x48\x24\xbc\x2f\x29\x7c\x5d\x50\xfa\x6f\x89\x40\xf0\x67\x7f\
+\xf6\x67\x8b\xd6\xe1\xe7\x56\x01\xc6\xc7\x95\x02\x43\x01\x14\x80\
+\x54\x84\xff\x94\xf2\xef\xfb\x3b\x5d\x05\x8f\x43\xa5\x52\x61\xcb\
+\x96\x2d\xac\x5d\xbb\x96\x72\xb9\xcc\xe8\xc8\x28\xa5\xa1\x92\x66\
+\x15\x08\x35\x42\xfa\xbf\xff\xfc\xcf\xff\x7c\xd1\x65\xfc\xbc\x28\
+\xc0\xf8\xf8\xb8\x42\x57\x80\x60\xc7\x1b\xc2\x06\xa5\xa4\xaf\x18\
+\xd1\x6d\xdd\x3a\x80\x22\x91\xb0\x19\x2a\x0d\x91\x2b\x14\x58\xb9\
+\x62\x39\xd7\x5f\x7f\x03\xd7\x5e\xbb\x25\x54\x04\x03\x47\x84\x6e\
+\x04\x84\x52\x7c\xe3\x2f\xfe\x62\x51\x21\x7e\x16\x0a\x70\x6e\x7c\
+\x5c\x09\x14\x8f\x3e\xfa\x25\xbc\x8d\xaf\x10\x81\x70\x65\x64\x01\
+\x3c\x7f\xef\x09\x5b\xca\x48\xa0\x0a\x89\xf0\x0c\x04\x4a\x49\x0f\
+\x07\x48\x85\x24\x8a\x1a\x86\x2b\x15\x6e\xb9\xe5\x16\x6e\xb9\xf9\
+\x66\x86\xca\x15\x84\x05\x96\xb0\x3c\xb7\xa1\xe2\x58\xc2\x7b\xe1\
+\x37\xbf\xf9\xcd\x45\x65\xb8\x24\x0a\x70\x6e\x5c\x81\xe2\x4b\x5f\
+\xfa\x52\xb8\xa3\x01\xa4\x94\xde\x27\x4b\x90\x4a\x6a\x96\x40\x19\
+\x3b\x3a\xc4\x07\xbe\xf0\xa5\x8a\xac\x08\x10\x29\x91\x66\x5d\x36\
+\x6d\xda\xc4\xa6\x4d\x9b\x19\x1d\x1d\x61\x74\x64\x94\xe5\x2b\x96\
+\x91\x48\x24\xfd\xd7\x78\x1f\xaa\x10\xe1\x67\xfe\xe5\x7f\xf9\x2f\
+\xbf\xd0\x91\xc6\x02\x2b\xc0\x39\x45\x60\x01\x94\x27\xec\x50\x58\
+\xa8\x08\x0b\x84\x40\x10\x94\x94\x86\x02\x04\x3b\x3d\x50\x9a\xc0\
+\x7a\x98\xcf\xf1\x84\xe9\x29\x93\xbf\xdb\xa5\x24\x97\xcf\x53\x2c\
+\x16\x29\x16\x8b\x5c\x7b\xed\xb5\x7c\xf0\x83\x1f\x64\xc9\xf0\x70\
+\x68\x09\xa2\x78\x43\x98\x8a\xa5\xe0\x5b\xdf\xfa\xaf\xbf\x10\xca\
+\xb0\xc0\x0a\x70\x56\x29\x05\x5f\xfa\xd2\xa3\xfe\x4e\x8e\x04\x26\
+\x75\x4c\x60\x08\xd1\x73\x13\x52\xca\xc8\x62\x44\x4c\x11\x4a\x4a\
+\xdf\xac\x0b\x24\xbe\xc0\x75\xe5\xf2\xff\x5f\xf9\xd6\x42\x2a\x35\
+\xa0\x50\xd7\x6d\xbd\x8e\x3b\xef\xba\x93\x6b\xb7\x5c\x8b\x10\x02\
+\xdb\xb6\xb1\x2c\x2b\xc2\x29\x9e\xa3\x0a\x5f\xf7\x57\x7f\xf5\x57\
+\x57\xac\x75\x58\xd0\x3f\xe0\xec\xb9\x73\x0a\x3f\x0c\xd4\x01\x9d\
+\xe7\xe7\x55\xb8\x53\xa5\x0f\xd6\xa4\x06\x12\x03\xeb\x60\xb8\x03\
+\x1f\x03\xe8\xbc\x80\x0a\x84\x1c\x0a\x5a\x12\xde\x55\xd2\x50\xb4\
+\xc0\x9a\xe8\xa1\x67\xa5\x52\x66\xcb\x35\x5e\xa4\x51\xa9\x54\x58\
+\xbd\x7a\x15\xc3\x95\x25\x9a\x75\x08\xc1\x43\x08\x2c\xbf\xf3\xed\
+\x6f\x5f\x31\x2e\x63\x61\x15\xe0\xec\x59\xa5\x50\x3c\xfa\xc8\xa3\
+\xbe\x79\x57\x3e\xd3\xa7\xfc\x1d\x2b\x40\x2a\xcf\x2b\x87\x0a\xe0\
+\x0b\x4c\x28\x94\x1b\x89\x41\x86\xae\xc1\x17\xac\x81\xfe\x7d\x00\
+\xa9\x47\x16\xc1\xf3\x09\x5c\x86\x02\x09\x2e\xa1\xaf\x31\x22\x12\
+\xa5\x14\x89\x44\x82\x7c\x3e\x4f\x2e\x97\x63\xd5\xaa\xd5\xdc\x7c\
+\xcb\xcd\xdc\x78\xc3\x0d\x9a\xdb\xc2\x20\xa4\xbc\xef\xe9\xbd\xfe\
+\xaf\xbf\xfb\xd7\x97\xa5\x42\x2c\xac\x02\x9c\xf1\x14\xe0\x91\x47\
+\x1f\x9d\xc7\xdc\x2b\xd3\x2d\xa0\xed\x66\x5f\x58\x52\xc9\xf0\x42\
+\x87\x02\x97\x72\x20\x8c\x0c\xac\x8a\x09\x20\xa5\xef\x1a\x74\x90\
+\x48\xf8\x78\x64\x09\x54\x18\x29\x44\xdf\x45\x19\xd1\x48\xb9\x52\
+\xe6\xf6\xdb\x6e\xe7\xb6\xdb\x6e\x63\x78\xc9\x30\xb6\x65\x93\x48\
+\x26\xfd\x8b\xe7\xb9\x23\xdd\x5a\xa1\xe0\x6f\xfe\xf6\x6f\x2e\x0b\
+\x2b\xb1\xa0\x5f\xe4\xcc\x99\x33\x1e\x15\xfc\xc5\x47\x22\xbf\x8c\
+\x0a\x85\x18\x46\x04\x86\xe9\x8e\x61\x04\x9d\x38\xd2\xd9\xc3\x79\
+\x1e\xf7\xf4\x46\x13\xb0\x9c\x47\xb1\x42\x41\xfb\x06\x5e\xca\xc8\
+\x35\x05\x9f\x1d\x7c\x4f\xfd\x79\xda\x67\x6f\xda\xb4\x89\x0d\x1b\
+\x36\xb2\x74\xe9\x08\xab\x56\xad\x62\xcd\x9a\xb5\x24\x53\xc9\x90\
+\x94\x52\x5a\xb6\x33\x78\xef\x9d\x3b\x9f\xa6\xd5\x6a\xfd\xdc\x29\
+\xc4\xc2\x2a\xc0\xe9\x33\x9e\x05\x78\xe4\x11\x03\x03\x04\x02\x11\
+\x41\x68\xa7\x85\x73\xa1\x72\xc4\x76\xa7\x54\x9a\xe9\x8e\x5b\x8f\
+\xf8\x8e\xd6\x76\xbb\x10\x11\xb7\x10\xba\x88\xf3\xbc\x0e\x4d\xe0\
+\xf3\x83\x55\x8f\x82\x0e\x95\x08\xc8\x64\x32\xe4\xb3\x39\x8a\xa5\
+\x02\x37\x6c\xdb\xc6\xed\xb7\xdf\xce\xb2\xa5\xcb\x0c\x45\x08\xfe\
+\x6e\xd3\x7d\xc0\xf7\xfe\xfe\x7b\x3f\x73\x65\x58\xd0\x0f\x3b\x7d\
+\xfa\x74\x98\x0c\x32\x81\x9c\xe6\xbb\x35\x7f\xed\x59\x83\x40\xe0\
+\x81\xb0\x23\xc1\x85\x8a\x40\x84\x1f\x54\xa0\x10\x52\xe0\xa1\x09\
+\xcd\x3d\x18\x6c\xa3\xae\x18\x2a\xda\xe1\x3a\x09\x15\x7e\x8e\x6e\
+\x81\x22\x0c\xa1\x24\x9a\xe2\xea\x60\x54\x78\x8a\x2b\x08\xbf\xe7\
+\x75\x5b\xaf\xe3\xee\xbb\xef\x66\xf3\x35\x9b\x49\xa7\xd2\xa4\x53\
+\x69\xec\x84\x1d\xf0\x93\xc6\x6b\x41\xf1\xd8\x63\x8f\xfd\x4c\xac\
+\xc3\x82\x2b\x80\x42\xf1\xc8\x17\xbf\x88\x54\xf8\xac\x9e\xd4\x78\
+\x7c\xef\x42\x2b\xe9\x33\x7e\xe8\xa6\x5c\x13\x22\xd1\xee\x33\x94\
+\x47\x46\xe6\x59\x62\xfa\x77\x5c\x85\x14\xa6\xc9\xc7\x67\x17\x95\
+\x14\x28\xe1\x63\x84\x18\xef\x10\x85\x92\x1a\xf6\x08\xb8\x08\x5d\
+\xb1\x60\x1e\x97\xa4\xd3\xd8\x91\xb5\x2b\x57\xca\x6c\xda\xb4\x89\
+\x35\xab\xd6\xb0\x6c\xf9\x32\xd6\xaf\x5b\xcf\xe8\xb2\xd1\x30\x84\
+\x05\x15\x71\x1c\xca\x23\xab\x9e\x78\xe2\xfb\xac\x5f\xbf\x1e\x80\
+\x5f\xfb\xb5\x5f\x5b\x30\x39\x25\x16\x52\x01\x0c\x13\xa8\x74\xdf\
+\x18\x99\x50\x34\x81\x2b\x23\xc9\x63\x12\x33\x52\x49\x4f\x5b\x23\
+\x4f\xa0\xf9\x69\xfd\x35\xfe\x35\x15\x26\xb0\x8b\x38\x05\x3f\xe9\
+\x20\x31\x05\x49\xa4\x54\xcc\x03\x32\x55\xe8\x82\x88\x59\x15\x22\
+\x65\xf1\x77\x94\x77\x5f\x86\x11\xc2\xcc\xf4\x0c\x7b\xa6\xf7\xb0\
+\x5b\xed\xc6\xb6\x6c\xb2\xd9\x2c\xa9\x54\x9a\xf5\xeb\xaf\xe6\x8e\
+\x3b\xee\xe4\xd6\x5b\x6f\x45\xf7\x0d\x4a\xc1\x8e\x1d\x0f\x72\xf0\
+\xe0\x5b\x0b\xee\x02\x12\x0b\xfb\xf6\x2a\x56\xec\x21\x43\x65\x60\
+\x1e\x3f\x1f\x98\x70\x1d\xac\x45\xbe\x9b\x88\xed\x33\x84\x32\x18\
+\xff\xcf\xb7\x43\x75\x40\x06\xf1\xa4\x53\xa4\x58\x71\x85\x10\xa1\
+\xdb\xf1\x14\xc7\x54\xe2\x40\x13\x85\xa9\x30\xe1\xef\xc8\x8d\x08\
+\xff\x33\x1c\xd7\x61\x76\xb6\x01\xcc\x32\x39\x39\xc1\x9e\x3d\xaf\
+\x20\xa5\xa2\x52\x19\xe2\xce\x3b\xee\xe2\xd6\xdb\x6e\x61\xd3\xe6\
+\xcd\x06\xf7\xb0\x90\xcb\x5a\x58\xf1\x47\x48\x5f\x8f\xb9\xa5\x1f\
+\xa6\x19\x61\x57\x40\xe3\x2a\x35\x40\x02\x89\xd0\xe4\xeb\xcc\x60\
+\x20\x92\x40\x91\x84\x49\xda\xa8\xe8\x3d\x82\x9d\xef\xc3\x07\x2d\
+\x94\xd4\x00\x9a\xae\x28\x7e\x18\x8a\x12\x04\x14\x82\x0a\x3f\x43\
+\x85\x61\x66\xf8\x37\x61\x62\x0d\x8c\x5c\x05\x91\x4b\x0b\xc1\x0d\
+\x06\x90\x05\xc5\xcc\x4c\x8d\xc7\x1f\x7f\x8c\xaf\xfe\xf6\xef\x18\
+\x4a\x7c\x59\x5b\x00\x81\xbe\xab\xb4\x5a\x50\x08\x2f\x66\x70\x4d\
+\x44\x28\x24\x13\x9d\x87\xb2\x90\x0a\xe1\xef\x34\xa1\x81\x34\xcf\
+\xf4\xaa\x50\xca\xe1\x7b\x06\x5c\x02\x21\x2d\x18\x81\x4e\x8d\x40\
+\x32\x76\xbc\x6e\x3d\x84\xaf\x70\x03\x82\x55\x98\x46\x4c\x05\x54\
+\x00\xb8\x1e\x81\x15\xf1\x15\x22\x8c\x1a\x74\xc5\x55\x21\x0e\x8a\
+\x29\x15\x51\xb4\x70\xa9\xd6\x02\x63\x00\x7d\x37\x06\xec\x5b\xb4\
+\xe3\x42\xc0\x86\x44\xfa\xe0\x27\xbc\x98\xc6\x4e\xd1\x6e\xc7\xdf\
+\x5f\x31\x20\xc4\x90\x0b\x10\x0a\x21\x7d\x2b\x21\x23\xc1\xc7\x77\
+\xac\x91\x96\xc6\xc4\x2b\x2a\xe6\x12\xa4\x52\x08\x1f\xb9\x87\x40\
+\x4f\x44\x2c\xa7\x1e\x22\x12\x77\x2f\x3a\x8c\x08\x4d\xa4\x0c\x0b\
+\x62\x44\xc0\x41\x28\x2e\x99\x12\x24\x16\x18\x02\x98\x04\x90\xd2\
+\x2e\x38\x26\xd9\x12\x84\x7c\x7a\x22\x27\xac\x20\x46\x0d\x24\x78\
+\x84\xf1\xfe\x6a\x70\x97\xc5\x14\xc7\xf3\xdf\x42\xab\x39\x8c\x95\
+\xa8\x8b\xc0\x9f\x04\x56\x43\x7f\x0f\x15\x2a\x10\x3a\x26\x88\x29\
+\xd1\x20\xee\xc0\xf8\x2e\x4a\xc5\x68\x64\x2d\x2b\x69\xb8\x8e\x4b\
+\x27\xff\x05\xb6\x00\x11\xb6\x8e\xfd\xf1\x68\x66\x59\xbb\x90\x86\
+\x29\xd4\x12\xb6\x5a\xa1\x08\xa1\x12\x78\x48\x5f\x49\x2f\x4f\xe0\
+\xba\x2e\x42\x08\x84\x10\x21\x4b\x18\xc6\xd9\x7e\x86\x4f\x0f\xcf\
+\x50\x71\xf3\x1e\xb0\x81\x91\x62\x45\xff\xaf\xb3\x7a\x41\x3d\x01\
+\x28\x61\x82\x42\xf4\x74\x74\x50\xfc\x82\x96\xea\x26\x5e\xb5\xa4\
+\xb9\x9d\x20\x1b\x2a\xd5\xa5\xf4\x00\x0b\x6d\x01\xfc\x22\x8c\xf0\
+\x6f\x32\x59\x3e\xdd\x4d\xa8\x70\x97\xf9\x3e\x20\x16\x4b\x47\xbc\
+\x81\x76\x11\xa5\xc2\x71\x1c\x4e\x9f\x3e\x4d\xaf\xd7\xa3\x50\x2c\
+\x50\x2c\x16\xc9\xa4\x32\x9a\x27\x95\xda\x4e\xd7\xd8\x47\x4c\xe1\
+\x07\x98\x61\xbe\xd0\x52\xd7\x5c\xa9\xa2\x0a\x55\x25\x45\x10\x8f\
+\x1a\x0a\x1e\x52\xd0\x21\xfa\xd4\x2c\x62\x2c\xbc\x8d\x97\xaf\x09\
+\x2f\xe7\x7d\x85\x28\x40\x58\x79\x23\x8d\xf8\x5d\x05\xc4\x87\xd4\
+\xdd\x02\x06\x28\x1b\xdc\x85\x4a\xbb\x88\x91\xf9\x76\x1c\x97\x76\
+\xbb\x4d\x3e\x9f\xa7\x90\x2f\xd0\x6e\xb6\x98\x9e\x9a\x66\xa8\x5c\
+\x26\x93\x4e\x23\x84\xd0\x14\x2b\x20\x8c\x62\x35\x02\x7a\xd4\xa0\
+\xa7\xad\x95\x1e\x92\x6a\x69\xeb\x90\x2f\x50\xf3\xd2\xd6\x3a\xc8\
+\xd4\x43\x57\xdd\xba\xa1\x25\xc5\xfc\x27\x79\xc4\x95\x71\x25\x2e\
+\x73\x05\x90\x28\x84\x30\x3b\x7f\x42\x21\xea\xa1\xde\x7c\xbb\xc3\
+\x08\x1d\x34\xb0\x67\x30\x7e\x60\x59\x02\xa7\xdf\xa7\x50\x28\xb0\
+\x76\xed\x5a\x6e\xbf\xfd\x76\x5e\x7b\xed\x35\xf6\xef\xdf\x4f\xad\
+\x5a\xa5\x54\x2c\x92\x4a\xa7\xb1\x6c\x2b\xe6\x1a\x34\x07\xa5\x21\
+\x33\xfd\x3b\x0a\xad\x93\xc9\x27\x70\x35\xdf\x1e\x84\x82\x66\xf8\
+\x69\x58\x82\x38\xa0\xd7\x9c\xbb\xd4\xb8\x02\xa5\x7c\x9a\x54\xaf\
+\x8c\xba\x12\x30\x80\x98\x27\x87\xae\xe6\x61\x04\x03\xc4\xaf\x5f\
+\xa3\x90\xf0\xf1\xeb\x02\x54\x9c\x29\x04\x1c\xa7\x4f\xaf\xdf\xa3\
+\xef\x38\x64\x32\x19\x3a\x9d\x0e\xf5\x7a\x9d\xcf\x7e\xf6\xb3\x1c\
+\x3e\x7c\x84\x3d\x7b\x5e\x64\xff\xfe\x7d\x54\xab\x55\x72\xb9\x2c\
+\x99\x4c\xd6\x8c\x25\x34\x6b\x22\xa5\x57\x9b\x88\xb0\xb4\x30\x8d\
+\x30\x47\xa0\xd1\xfc\x5a\x6d\x22\xa6\x75\xd3\xd1\x4b\x9c\xc4\x12\
+\xca\x00\xa6\xa6\x7b\x51\x03\x24\xd6\x95\x11\x06\x1a\xd8\x28\x32\
+\xb1\x91\xff\x95\x1a\x3f\x10\xe4\xf0\x3d\xe0\x26\x88\x6a\xfc\x4c\
+\x76\x2d\xf2\xd1\xb5\x5a\x9d\xe9\x89\x71\xca\x89\x04\x73\xb3\xb3\
+\xdc\x7f\xff\xfd\x3c\xfb\xec\xb3\xac\x59\xb3\x86\x35\x6b\xd6\xd2\
+\x6c\xae\xa2\x5c\xfe\x00\x87\x0f\xbf\xc4\xdb\x6f\xef\x67\x62\x62\
+\x92\xf2\x50\x99\x4c\x36\x03\x08\x7a\xbd\x2e\xdd\x6e\x17\x29\x25\
+\x96\xb0\xb0\x13\x36\xb6\x65\x21\x2c\x2b\x2c\x11\x33\x12\x47\x9a\
+\x2b\x09\xb5\x27\x06\xf4\x88\xb1\x8f\x01\x03\x8a\x14\x46\xe8\x1b\
+\x67\x28\x95\xf4\xc2\x49\x62\x40\xf8\x32\xc7\x00\x18\xa1\x9d\x6e\
+\x0d\x74\x96\x4c\x11\x27\x58\xcc\x74\xad\x4e\xf0\x85\x17\x58\x2a\
+\x5a\xcd\x39\xb6\xe4\x72\x2c\x29\x14\x38\x91\x4c\xb2\x6e\xdd\x3a\
+\x96\x2d\x5b\xc6\xab\xaf\xbe\xca\xc7\x3e\x36\xca\xc4\xc4\x0a\xa6\
+\xa7\x37\x70\xc3\x0d\x37\x73\xd3\x4d\x6f\x70\xf4\xe8\x6e\x0e\x1e\
+\x3c\xc4\xc4\xc4\x44\x28\xdc\x35\x6b\xd6\x90\xcb\xe5\x68\xb7\xdb\
+\xd4\x6a\x35\x9a\xad\x16\x8e\xe3\x60\x09\x41\x3a\x93\x21\x9d\x4e\
+\x47\x2e\x48\x98\x25\xe6\x5e\x34\x20\x31\xcd\x89\xc9\x33\x20\x95\
+\x96\x58\xd2\x58\x47\x62\x2e\x40\x4f\x26\x5d\x31\x61\x60\x1c\x60\
+\xf9\xd9\x92\x50\xf8\xba\xd9\xd4\x5d\x41\x2c\x66\xd6\xb9\x03\x9d\
+\xa0\x71\x7a\x3d\x86\x33\x19\xda\xdd\x0e\xeb\xaf\xbb\x96\x4c\x26\
+\xc3\x86\x0d\x1b\xd9\xbb\xf7\x47\xcc\xce\xd6\x18\x1d\x55\x9c\x3e\
+\xed\xf2\xfc\xf3\x2b\x71\x9c\xd5\x8c\x8c\x6c\x63\xc3\x86\x27\x38\
+\x73\xe6\xff\xe3\xc6\x1b\x6f\xe4\x23\xf7\xde\xcb\x9a\xd5\xab\xb1\
+\x2d\x8b\x6c\x2e\x87\x10\x82\x5a\xad\xc6\xb1\x63\xc7\xd8\xb7\x6f\
+\x1f\x07\x0e\x1c\x60\x62\x62\x82\x6c\x26\x4b\x36\x97\xc5\x12\x96\
+\xef\xbb\xcf\x23\x44\xdd\xaf\x87\x14\xb0\xaf\x3b\xc2\xac\x84\x32\
+\x58\x21\x14\x52\xf3\x0a\xe2\x4a\xb2\x00\x51\xca\x57\xdb\xfd\x68\
+\xa4\x8d\x32\xc1\x8f\x54\x5e\x6a\x58\x4f\xbe\x98\xc4\x4a\x14\xfb\
+\xf7\xfb\x7d\xd2\x89\x04\xa7\x7b\x5d\x36\xae\x58\x89\xe3\xb8\x54\
+\xca\x65\x6a\xb5\x1a\xf5\x7a\x8d\x4a\xa5\xc7\x3d\xf7\x9c\xe5\x86\
+\x1b\x12\x9c\x1a\x2b\x33\x76\x6a\x14\xd7\x5d\xc1\xfa\xf5\xeb\xf9\
+\xd5\x5f\xfd\x55\x36\x6e\xda\x48\x2a\x99\x22\x61\xdb\x7e\x0c\x2e\
+\x59\xbe\x7c\x19\x1b\x37\x6e\xe2\xce\x3b\xef\x64\x6c\x6c\x8c\xbd\
+\x7b\xf7\xf2\xea\x2b\xaf\x30\x76\xea\x14\xb6\x6d\x93\x4e\xa7\x49\
+\x26\x92\x61\xfd\x62\x50\xe3\x68\xec\x7a\x35\x98\xa8\x42\x0d\x66\
+\x38\xf5\xdb\x66\x2e\x02\xd4\x15\xc1\x04\x6a\x35\xf7\x06\xeb\x17\
+\x24\x76\x84\x0a\x13\x3a\x42\xdb\x11\x2a\x88\xb7\xa5\x4f\x0b\xeb\
+\x96\xc0\x7f\xcc\x75\xfb\x88\x7e\x9f\x14\xd0\x76\x5d\xb2\x3e\x08\
+\x14\x96\xa0\xd7\xeb\x31\x3b\x3b\x8b\x65\x59\x9e\x7f\xb7\x9a\xac\
+\x5c\x55\xa3\x5c\x39\xcb\x9e\x3d\x6f\x30\x3c\x3c\xcc\xf2\xe5\xcb\
+\x41\x41\xaf\xd7\xa3\x0f\x5e\x07\xaa\xff\xcb\xb2\x2c\x86\x86\x86\
+\xbc\x8a\xe1\x2d\x5b\xf8\xf0\x3d\xf7\xf0\x57\xdf\xfe\x36\x2f\xbf\
+\xfc\x32\xad\x56\x0b\xcb\xb6\xc8\xe7\xf2\x08\xe1\xd5\x27\xc8\x58\
+\xd8\x67\xe4\x14\x34\x4e\x40\x12\xa3\x97\x55\x54\x07\x10\xba\xbb\
+\x20\x6b\x25\xae\x14\x0b\xa0\x5d\x14\x9d\xc0\x19\x60\xc1\x94\x96\
+\x2e\x0e\xf2\x06\x98\xc5\x21\x01\xfb\x86\x02\xd7\x95\xe0\xba\xb4\
+\xfa\x7d\xda\x40\xbb\xdd\xa6\xdb\xed\xd0\xef\xf7\x11\x42\xd0\x9c\
+\x9b\x23\x9d\x4e\x33\x37\x37\x87\xeb\x7a\x5c\xc1\xf4\xf4\x24\xb5\
+\xda\x21\x6e\xbc\xf1\x83\x24\x12\x09\xfa\xfd\xbe\x2f\xf4\xe8\x6a\
+\xeb\xb7\x11\x20\x10\xac\x58\xb1\x82\xad\x5b\xb7\xd2\x68\x34\xd8\
+\xb4\x69\x13\x8f\x3f\xfe\x04\xcd\x66\x93\x5c\x36\x17\x81\x42\x9d\
+\xd8\x0c\xef\x08\x2f\x39\x14\xfb\x3b\x0d\xc6\x50\x46\x40\x31\x60\
+\xa3\x75\xa5\xbf\xcc\x31\x00\x66\x2d\x7f\xe0\x03\x07\x2e\x8a\x0a\
+\xf3\x22\xa1\x3d\x18\x00\x81\x91\xf3\x97\xd2\x2b\x2c\x6d\x01\xaf\
+\x4a\x89\x2c\x97\xd9\xb7\x7f\x3f\xc5\x52\x91\x66\xb3\x85\x6d\xdb\
+\xbc\xfe\xc6\x1b\x64\x33\x19\x94\x52\xcc\xce\xce\x32\x37\x37\x47\
+\xb9\x5c\x66\xcd\x9a\xab\xd8\xb8\x71\x23\x52\xca\xb0\x1a\xc8\x93\
+\xb9\x08\x7f\xc7\x95\xc1\x71\x1d\x26\xa7\xa6\x58\xb1\x62\x05\x9f\
+\xf9\xcc\x67\xa8\x54\x2a\x7c\xe3\x1b\xdf\xa0\xd7\xef\x91\xb0\x13\
+\xe7\x69\x6b\x8b\x32\x50\x46\xd5\x11\x3a\x45\x1c\x77\x09\x11\x70\
+\x50\xe2\x8a\x50\x00\x83\xfc\x37\xf9\x80\x20\xec\xd1\xfe\x70\x23\
+\x0a\x40\x63\xe1\x90\x06\x6b\xa6\x94\xa2\xdd\x69\x93\xce\xe5\xb8\
+\xe1\xb6\xdb\xb8\xe9\xa6\x9b\x78\xfa\xe9\xa7\x79\xf1\xc5\xdd\x28\
+\x25\xa9\xd7\xeb\x64\xb3\x59\x72\xd9\x1c\x99\x4c\x8a\x15\xcb\x57\
+\xb0\x61\xc3\x7a\xf2\x85\x02\x99\x4c\x86\xe1\xe1\x61\x7a\xbd\x9e\
+\x2f\x60\xe5\xff\x16\x9a\x12\x78\x5a\x11\xdc\x6c\x36\x9b\x9c\x3c\
+\x79\x92\x0f\x5c\x7f\x3d\xae\xeb\x72\xd7\x5d\x77\xf1\xd6\x5b\x6f\
+\xf1\xc3\x1f\xbe\xc0\x50\xa9\x14\xe6\xbd\x3d\x3c\x20\x62\x7f\xa7\
+\x34\x6d\xa1\xf2\xf6\x7a\x84\x11\x04\x4a\xb9\x26\xfb\x28\x2e\x1d\
+\x13\x74\x89\xc2\x40\x06\x32\x80\x41\x01\x80\x96\x06\xd2\x76\x84\
+\xde\xab\x27\x0c\x72\x44\x2a\xcf\xff\xcf\xcc\x54\xb9\x71\xdb\x36\
+\x76\xec\xd8\x41\xb1\x58\x44\x4a\xc9\x4f\x7e\xb2\x8f\x72\xb9\xcc\
+\x87\x3f\xfc\x61\xca\xe5\x32\xb6\x9d\x60\x78\xb8\x42\x36\x9b\xc5\
+\x95\x12\xdb\xb2\xb0\x6d\x3b\x04\x90\x5e\x07\xb1\xc0\xb2\xe6\x77\
+\x01\xc1\xed\x53\xa7\xc6\x98\xad\xd7\x59\xb5\x6a\x15\xfd\x5e\x0f\
+\x84\xe0\x9e\x7b\xee\xe1\xd5\x57\x5f\xa5\xd7\xef\x91\x4a\x26\xc3\
+\x1c\x86\x42\x6a\x09\x1d\x85\x0a\xdb\x94\x55\xa4\xec\x01\x35\x4c\
+\x50\x05\x15\xd5\x46\xc4\x01\xe4\x65\xef\x02\x84\x50\x46\x2c\xac\
+\x57\x06\x07\x3b\xc5\xb2\x2c\x5c\xd7\x8d\x40\xa0\x90\x06\x2a\x36\
+\x62\x65\x14\x7d\xc7\xa5\xdf\xef\xb3\x79\xf3\x66\xf2\xf9\x3c\x52\
+\x4a\x36\x6f\xde\xcc\xfa\xf5\xeb\xc9\x64\x32\x48\xd7\x05\x21\x48\
+\x24\x6c\x94\x52\x74\xbb\x5d\x4f\x79\x2c\x8b\x5e\xaf\xe7\x95\x41\
+\x09\xcb\xb7\xf6\xda\xae\x9f\x47\x01\xa4\x94\x1c\x78\xf3\x4d\x0a\
+\x85\x02\x4b\x96\x2c\xa1\xe7\x63\x8c\x55\xab\x56\x72\xcd\x96\x6b\
+\x78\xe3\xf5\x37\xfc\x49\x26\x6a\x60\xac\x4d\xa8\xf2\x32\xea\x20\
+\x1a\xa8\x52\x1e\xa0\xa7\x35\xd2\xeb\xb2\xb7\x00\x46\x8f\xbe\x99\
+\x30\x09\x2e\xd8\x92\xb5\x6b\x48\x16\x86\x71\x3a\x0d\x9c\x46\x9d\
+\x5e\xb3\x45\xa7\xdb\xa5\xd7\xeb\x83\xeb\xc6\x88\x20\xef\x35\x49\
+\xdb\x26\x99\x48\x32\x36\x36\xc6\xb6\x6d\xdb\x48\x26\x53\x80\xc2\
+\xb2\x2c\xba\xdd\x5e\x88\xa0\x1c\xc7\xc1\xb2\xfc\xea\x23\xa5\xb0\
+\x6d\x1b\x84\xc0\x55\x0a\x25\x1d\x84\x25\x8c\xa6\x50\x5d\x13\x84\
+\x87\x00\x69\x34\x1a\x1c\x39\x72\x84\xcd\x9b\x36\x93\x4c\x26\x43\
+\x90\x29\x84\xc5\xb5\xd7\x5e\xcb\xde\x1f\xed\xf5\x19\x4b\x61\xd0\
+\xc0\x51\x65\x90\x8a\xed\x6e\x42\x65\x08\x72\x00\x46\x61\x8a\x9e\
+\xf6\xbe\x12\xd2\xc1\x46\xa2\xc7\x20\x4d\x3c\x71\x5e\xf3\xe1\x4f\
+\xd0\xb3\x7e\x99\x33\x87\x15\xd5\xce\x38\x2a\x7b\x9c\xdc\xc8\x3b\
+\x54\x92\x27\x71\x3b\x93\x8c\xbf\x73\x2c\x8c\x1a\x84\x00\xe9\x2a\
+\x84\x6d\xb3\x64\x74\x94\x97\x5f\xde\x83\xeb\xba\x7c\xf4\xa3\x1f\
+\x65\x78\x78\xd8\xe8\x28\xb6\x2c\x8b\x7e\xbf\x4f\xb7\xd7\x0d\x81\
+\x5a\xa7\xdb\xa1\xd7\xed\x91\x4c\x24\x48\xa5\x52\x08\xcb\x0a\x79\
+\xfe\x44\x22\x41\x3a\x99\xc2\xb2\x2d\x03\xc3\xbc\xf5\xe6\x9b\x34\
+\xe7\x9a\x6c\xd8\xb0\x01\xd7\x71\x43\xc5\x96\x52\xd1\x9c\x6b\x7a\
+\x96\xc5\x95\x08\x4f\xd3\x34\xec\xa2\x62\x03\x2a\x54\x54\xad\xac\
+\x13\x61\x92\x79\x13\x5e\x57\x44\x18\xa8\x57\xfb\x1a\x05\x13\x1a\
+\x33\xd8\xef\xc1\xf1\xa3\x59\x7a\xdd\x04\x6b\x3f\x50\xa1\x3d\xb7\
+\x85\x66\x5d\xe1\x26\x7b\xac\xfd\x60\x9d\xab\x6e\xf9\x01\x53\xc7\
+\xf7\x31\x57\x6d\x90\x48\x40\x67\x76\x86\x4e\x7d\x96\x54\x32\x49\
+\x32\x65\xf3\xf2\xcb\x2f\x33\x35\x39\xc9\x43\x0f\x3f\x4c\x2e\x9f\
+\x27\x61\x59\xcc\xce\xce\xd2\x68\x34\xb0\xa4\x24\x81\xa0\xdd\x69\
+\xd3\x6d\xb5\xc8\xa7\x53\x64\x93\x29\x6a\xbd\x1e\x9d\x6e\x17\x25\
+\x25\xe9\x74\x9a\x54\x3a\x0d\xa9\x14\xa4\x52\xa4\x0b\x05\x8a\xa5\
+\x12\xb9\x6c\x96\x4e\xbb\xcd\xfe\x03\x07\x58\xb5\x6a\x15\x95\x4a\
+\x05\xc7\x71\xc2\xb8\x7d\xff\xfe\xfd\xbc\xf2\xca\x2b\x9a\xdb\x18\
+\x44\xf4\x46\x4f\xa2\x20\x6a\x8a\x89\x91\x45\x51\x82\xc9\x4c\x28\
+\x5d\x01\x16\x80\x18\xd3\x15\x29\x7a\x00\x8e\x4f\xbc\xf2\x14\x57\
+\xdf\xd2\xc4\xed\xf7\xe8\xb6\x2c\x6e\x7a\xf8\x53\x1c\xdb\x5f\xe0\
+\xcd\xdd\x69\xbe\xfd\x87\xcb\x58\xb9\xfe\x93\x6c\xbc\xf1\x97\x19\
+\xbd\x56\x50\x1a\x2d\x51\x9f\xaa\x32\x37\x31\x46\xbf\xfd\x0e\x4b\
+\x7b\x6f\xb3\x6a\xcb\x18\x67\x4e\xbe\xcd\xf7\x1f\xff\xef\x7c\xf0\
+\xfa\x6d\x64\x85\x45\x52\x4a\x56\x96\xcb\x64\x6c\x1b\xe1\xba\x94\
+\x86\x86\x18\x5a\xb1\x02\xe9\xba\x74\xbb\x5d\x12\x40\x26\x99\x04\
+\x29\x69\xb4\x5a\xd4\x1a\x0d\x9a\xf5\x3a\xcd\x5e\x8f\x86\xeb\x32\
+\x93\x4e\x93\x5f\xb1\x82\x5a\xbb\xcd\xe4\xe4\x24\xb7\xde\x7a\x2b\
+\x89\x44\x02\x85\xa2\xdf\xeb\x73\xf4\xe8\x51\x9e\x79\xe6\x19\x4e\
+\x9f\x3e\x4d\x36\x9b\xf5\xc0\xa4\x8c\x91\x3c\x81\x90\x25\x46\xce\
+\x5f\x7b\x92\x91\x42\x26\xd6\xf2\x7e\x85\xb8\x00\xcc\xde\x3e\x2d\
+\xfe\x0d\x42\x9d\xb3\x87\x8f\x70\xe6\xd0\x61\x44\x32\x41\x71\xb8\
+\xc2\xf5\x1f\xbd\x95\xf6\xdc\x35\xb4\xe7\x60\xc3\x0d\x8a\x91\x55\
+\x19\x94\x1a\xe5\xd8\x81\x1e\xfd\x7e\x8a\x5c\x69\x19\x85\xf2\x2a\
+\x12\xa5\xdb\xb0\x13\x30\xbc\x71\x8e\x8d\x1f\x3a\xc5\x3f\xfe\xed\
+\xd7\x98\x3a\x7a\x84\xff\xe5\xee\xbb\x29\xe7\x0a\xb8\x8e\x43\x42\
+\x08\xd2\x89\x04\x4e\xaf\x87\xd3\xed\x7a\x15\x37\x42\xe0\x3a\x0e\
+\xb2\xdb\xc5\x75\x1c\x2a\x4a\x52\x49\xa5\x90\x42\xe0\xa4\x52\xb4\
+\x3a\x1d\xa6\x9b\x73\xbc\xf9\xea\xab\x3c\x7f\xe6\x0c\xab\x37\x6c\
+\x60\xf5\xea\xd5\x08\xe1\x31\x8c\xef\xbc\xf3\x0e\x4f\x3f\xfd\x34\
+\x27\x4e\x9c\x20\x93\xc9\x60\xdb\x89\xb0\xf1\x54\x99\x5b\xdf\x50\
+\x04\x39\x60\x15\x31\xcb\xd1\x62\x8d\x32\x4a\xa8\x2b\xc8\x05\x68\
+\xa3\x61\x74\xb4\x6c\x8c\x86\xe9\xf5\xa8\x8f\x8f\x73\xf0\x85\x17\
+\xc8\x97\x87\xb8\xed\x01\x49\x21\x3f\xc6\xa9\x37\x0f\x01\x0e\xcb\
+\x97\xf5\x29\x94\xf3\x8c\x1d\x3c\x47\xa7\x5e\x82\xcc\x7a\x1c\xae\
+\x66\xfa\xcc\x0a\xfa\xbd\xeb\xc0\xfe\x0a\xfb\x8f\xfe\x19\xb3\x5b\
+\x2d\xf2\xad\x29\x84\xdb\xa7\x27\x3d\x9a\x58\xba\x2e\xb8\x2e\x52\
+\xba\x28\xc7\x45\xb9\xde\x8f\x94\x12\xe9\x38\x28\x19\x3c\x26\x51\
+\xae\x4b\x45\xba\x58\xd3\xd3\x74\x27\x26\x28\x6e\xdb\x46\x3a\x9d\
+\xa6\xdb\xed\xb2\x7f\xff\x7e\x9e\x7f\xfe\x79\x8e\x1d\x3b\x46\xbe\
+\x50\x20\xe9\x47\x19\x03\xc9\x2b\x3f\xe1\x65\xba\xbf\xa8\xb7\x61\
+\xbe\xb4\xb1\xd1\x84\x7a\xc5\x80\x40\xf4\x84\x97\x96\x09\x0b\x19\
+\xbf\x28\x16\x0e\x10\xf3\x9b\xcf\x3d\xc5\xd5\xdb\xce\xd2\x6e\xcc\
+\x72\xe6\xed\xc3\xa8\xbe\x4b\xaf\xd3\xa6\xd7\xeb\x79\x48\x3e\x99\
+\x24\x61\x5b\xa4\x32\x59\x32\xf9\x3c\xcb\xaf\xbb\x9e\xe5\x9b\x3f\
+\xc2\xf4\xe4\xb5\xbc\x66\x7f\x8e\xbf\x3d\x36\xcd\x1d\xa3\x6f\xb2\
+\x2e\x77\x98\xf4\xf4\x3b\x48\x57\xe2\x3a\xca\x13\xae\x74\x91\x31\
+\x05\x08\x6f\xbb\xd1\xe3\x93\xdd\x2e\xaf\x4f\x4c\xb0\x35\x9d\xa6\
+\x38\x36\xc6\xa9\xb1\x31\x8e\x1c\x3d\xca\xee\xdd\xbb\x39\x7b\xf6\
+\x2c\xc5\x62\x11\xcb\xb2\x22\xf6\x52\x60\x60\x1b\xa3\xc4\x4d\x6b\
+\xfe\x90\xd2\x4c\x69\xeb\x05\x30\x22\x5e\x96\x2e\xae\x14\x0c\x20\
+\xcc\x24\x90\x40\xf8\x4d\xa0\x83\x63\xdc\x40\x31\x37\x35\xcd\xbe\
+\x67\x9f\x8b\x4d\x15\x8b\x0a\x30\x9c\x6e\x97\x3e\xd0\x6a\xb6\x60\
+\x6a\x8a\x33\xc7\x8f\x93\xdf\xf3\x12\xab\xaf\xdd\xc6\x9d\x1f\xdf\
+\xc1\xc4\xc4\x2f\xf1\xdf\xf7\xdf\x44\xfe\xcc\x19\x36\xce\x3d\xc7\
+\x86\xd2\x41\xca\xb5\x9f\x90\x72\x6a\x28\xa7\x87\x74\x5c\xa4\xeb\
+\x25\x9b\xa2\x9d\xef\x2b\x80\x74\xe9\xf7\x1d\xf6\xb4\xdb\xb4\xba\
+\x5d\xee\x58\xb2\x84\xf1\xe3\xc7\xf9\xee\xb7\xbe\xc5\x64\xad\x46\
+\xbb\xd3\xa1\x58\x28\x22\x6c\x2b\x04\x32\x46\x09\x79\x3c\xe1\x15\
+\x6d\xfc\x48\xdd\x63\x69\xee\xf9\x32\x84\x4a\xa8\x2b\xa8\x2c\xdc\
+\xf0\x89\xba\x3b\x20\x96\x25\x8c\x32\x83\xc4\x2e\x4c\x90\x52\x55\
+\xc1\x4c\x0e\x3f\x05\x17\x5c\xf4\xc6\xd4\x34\x6f\xbd\xf0\x2c\x93\
+\x6f\x1f\x60\xf3\x9d\x77\xb0\xe6\xa1\x5f\x42\xd9\x77\x72\xfa\xc7\
+\x9f\xe6\xec\x44\x8d\x62\xf5\x05\x46\x66\xf7\x50\x49\x9d\x23\xef\
+\x4e\x62\x37\xa7\x51\xcd\x1a\xa2\x3d\x8b\x90\x8e\x5f\x12\x26\x70\
+\x24\x1c\x92\x2e\x47\x5d\x87\xe5\x42\x30\x51\x9f\xe5\x27\xc9\x24\
+\xad\x25\x25\x72\xc3\x05\xf2\xaa\x48\xaf\xd9\xf5\x12\x51\x2a\x6a\
+\x2f\x13\xf3\x35\xb6\x6a\xb1\xbf\x31\xb4\xc2\xb0\x06\xca\x18\x7d\
+\xab\xf4\x62\xa3\x2b\xa6\x1e\x20\xa4\x39\xb5\xe2\x4b\xa3\x63\x20\
+\x72\x78\x32\x8e\x8c\x89\x3a\x6d\xc3\x52\x71\xa1\x55\xed\xfa\x1a\
+\x13\x58\xe0\x89\x33\x67\x99\xf8\xeb\xbf\xc1\x4a\x7c\x8f\xab\x3f\
+\x78\x3b\xe9\xe2\x16\x58\x7e\x23\xd5\x91\xcf\x70\xea\xdc\xa7\x49\
+\x34\xce\x31\xd4\x39\xca\x70\xff\x2d\x4a\xad\x43\xa4\x66\x4f\xa1\
+\x66\xc6\xa1\x3a\x49\xc2\xea\x33\x23\x67\xf9\x07\xb7\xc5\x14\x16\
+\xc9\x7c\x99\x73\x2b\x57\x92\xbb\xf1\x7f\xe6\xea\xcc\xbd\x24\xac\
+\x71\x70\x0f\xd1\xef\x1c\xa6\x33\x77\x9a\xd3\x6f\x1d\xf4\x49\x27\
+\x19\xf5\x1c\x84\x7f\xad\x6e\xe2\xa5\xd9\x0a\xa4\x57\x46\xc5\x5c\
+\x63\xb8\x05\x82\xea\xa3\x2b\x25\x19\x14\xf7\x8b\xe6\xf4\x0d\x69\
+\x96\x4a\x69\x9d\xc0\x3a\x7f\xae\xe2\x54\x6b\x0c\x54\xea\xcd\x1b\
+\x4e\xbf\xcf\xd1\x57\x5f\x24\x61\xbd\xc4\xc8\xca\x55\x6c\xfa\xd0\
+\x5d\x88\xab\x56\xd2\x9c\x5b\x49\x75\x66\x25\x87\x66\x6f\xa4\x37\
+\x5b\xc6\xee\x36\xc9\xb5\x4f\x92\x9a\x3a\x8c\x72\xbb\xbc\x53\x87\
+\x77\xc6\x7b\x08\xbb\xc6\x99\xd5\x7d\x6e\xfe\xe4\xf5\x5c\x73\xf3\
+\x87\x39\xfa\x7a\x9a\x64\xca\x42\xf1\x20\xd9\xbc\xc3\xd0\x68\x9d\
+\xea\xa9\x1f\x70\xee\x9d\x7f\x60\x66\xec\x10\x63\x87\x8f\x20\x3b\
+\x1d\xad\x6f\x61\x9e\x0a\x61\x62\xae\xc1\x00\x82\x3a\x5e\x88\xbb\
+\xc5\x2b\x01\x04\x2a\x8d\x0b\x88\xa5\x77\x55\xac\x4b\x48\x6f\xdc\
+\x9a\xb7\xcd\x4b\x45\xe5\xd8\xe1\x5c\x01\x65\xa2\x6a\x01\x48\xc7\
+\xa1\xab\x14\xa7\xde\x39\xc6\xa9\xa3\x47\x11\x89\x04\xf9\xe1\x25\
+\x94\x46\x96\x53\x1a\x5d\x45\x6e\xfd\x4a\x12\x99\x65\xb8\xac\xc4\
+\x51\xd7\x23\xdd\x25\x94\x0f\xff\x98\xff\x71\xeb\x4a\xda\x0d\xc1\
+\xf4\x99\x04\x33\xa7\x57\xf0\xc3\x77\xd2\x28\x29\xc8\x97\x14\x43\
+\x23\x82\xce\x5c\x92\xe3\x07\x46\xe8\xf7\x1e\xa6\x32\x7a\x17\x37\
+\x3d\x74\x8e\xab\xc6\xbe\xcf\x9b\x2f\x7c\x9f\xb3\xc7\x8e\x11\x51\
+\xfb\x2a\x66\xd9\xcc\x6e\xa0\x68\x08\x45\xac\x29\xc6\xac\xa2\xb8\
+\xfc\xa9\x60\x63\x1c\x8a\x46\x83\x1a\xa0\x28\x48\x83\xc7\x07\x39\
+\xe9\x56\x40\x13\xf4\x7c\x71\xb6\x9e\x3c\x93\x46\x28\xe5\xef\xb8\
+\xbe\x43\xfd\xdc\x39\xea\xe7\xce\xa2\xd4\x6b\x5e\x44\x91\x4a\x53\
+\x1a\x19\x65\x74\xf5\x4a\xca\x23\xc3\xc8\xfa\xdb\x9c\xfc\x51\x91\
+\x54\xbe\x48\x3a\x91\xa2\xb4\x74\x2d\xe9\xc2\x2a\x5c\x67\x25\xc9\
+\xdc\x2f\xd1\x6a\x94\x28\x55\x04\x37\x7c\x58\x91\x48\xa6\x78\xfd\
+\xd9\x15\xbc\xba\x73\x25\x2b\x37\xde\xc0\x47\xff\xf5\xa7\xa9\x9f\
+\x7b\x86\xf1\x13\x07\x39\x7b\xe4\x10\xa7\x0f\xbd\x4d\xbf\xdb\x35\
+\x33\x7b\x46\x2f\x61\x90\xfe\x15\x68\x10\x32\xa4\x86\xc5\x95\x41\
+\x05\x7b\x35\x2e\x42\x99\x43\x1e\x8c\xae\x5e\xdf\x0d\xe8\x2d\x7b\
+\x04\x3d\x77\x0a\xad\x1e\x80\x58\xbb\x98\x4f\x96\xc4\xa8\x55\x25\
+\xf4\x72\x6d\x39\x60\x79\x74\x9c\xe1\x74\x3b\x4c\x9f\x3a\xc9\xf4\
+\xd8\x89\x70\x3c\x8d\x25\x6c\x5c\xc7\x31\x76\x60\xb6\x34\xcc\x35\
+\x77\xde\x4f\x69\xe9\x9d\xb4\xe7\xee\xe2\x07\xdf\xaa\x60\xd9\x30\
+\x57\x03\xe9\xc2\xde\x9d\x49\xf6\xfd\xf0\x3a\x36\xdf\xb2\x91\x91\
+\x95\xb3\x6c\xba\x79\x92\x89\x13\x4f\x72\xec\xc7\xcf\x32\x75\xe2\
+\x24\x93\x67\xce\xc4\xe6\x1a\x46\xcc\xb8\xc0\x8d\xfa\x0c\xd0\xf0\
+\x91\xbc\x22\x14\xc0\x2b\x90\x08\xc7\xb8\x62\x0e\x6a\xd2\xc1\xa1\
+\x1a\xd8\x25\xc1\x90\xe8\x20\x9b\xa7\xbd\x87\x54\x66\x3e\x5d\x6a\
+\xbb\x48\x0e\x4e\x15\xd1\x07\x4d\x33\xef\x7c\x9f\x88\x9a\x73\xa5\
+\x63\x4e\x0a\x51\x8a\xb9\xea\x24\x6f\xec\xfc\x6f\x14\xcb\x4f\xb1\
+\xf5\x9e\x7b\xb8\xee\xb6\x3b\xe8\xf5\xee\x65\xef\x33\xa3\x14\x2b\
+\x8a\xff\xe1\xff\x96\xcc\x4e\x1e\xe7\xe8\xeb\xa7\x99\x39\xbb\x82\
+\xf1\x13\x1b\x10\xd6\x17\xd8\x78\xeb\xbf\xe0\xe6\x07\x7f\xcc\xeb\
+\x3b\xff\x84\xb7\x5f\x79\x85\x76\xb3\x15\x6b\x70\xf1\x6b\x08\xe6\
+\x4b\x94\x5d\x09\x20\xd0\x28\x6f\x0e\x26\x84\x87\xa2\x0b\x06\x43\
+\x61\x0a\x25\x94\x9a\x4e\xae\xcb\xd8\x73\xe2\xad\x63\x72\xb0\xdb\
+\x48\x2b\xcb\x32\xaa\x6e\x07\xc6\xc5\x62\xa6\x6a\x89\x0f\x8a\xf2\
+\x6b\x10\xfa\x3d\x66\x26\xa6\xf8\xe1\x7f\xfb\x2e\x56\xe2\xef\xd8\
+\xf6\xd1\x4f\x70\xc7\x43\xff\x8a\xf1\x93\x37\x52\x9f\x00\xa1\x5e\
+\xe6\xc0\x0f\xbf\x4e\x69\x74\x25\x9b\x6e\xbe\x9f\xca\x8a\x8f\x32\
+\x7d\x66\x1d\xc7\xdf\xbc\x8f\xcd\xb7\x2e\xa7\xb2\xf2\xff\xe5\xf9\
+\x6f\xfd\x65\x38\x52\x26\xf6\xe1\x03\x43\x2c\x2e\x55\x4d\xd8\xc2\
+\x77\x06\x29\xf8\xf4\xa7\x3f\xcd\xd4\xd4\x14\x27\x4e\x9c\xe4\xc4\
+\x89\xe3\xf4\xfb\x7d\xc3\x0a\x08\x4c\x8b\x20\xf5\x14\x72\xcc\x75\
+\x98\xfd\x83\xca\xa8\xa5\x8b\xcf\xff\x33\xe6\x02\x0d\xb8\x85\xc0\
+\x06\x0f\xb6\x65\x85\x13\x48\x30\x53\xba\x81\xfb\x70\xfb\x7d\xf6\
+\x3d\xf7\x04\xcd\xe9\x93\xdc\xf1\xcf\x7f\x93\xfc\xd0\xb5\x9c\x7b\
+\x67\x9a\x89\x13\x87\x19\x3f\xfe\x36\xc7\x7f\xfc\x22\xa3\x6b\xfe\
+\x1f\xae\xbb\xe7\x13\x5c\xbd\xf5\xb3\x74\x9a\xd7\xf3\x91\x7f\xf1\
+\x79\x0e\xef\xdd\xcd\xc9\x37\xdf\x36\x6a\x81\xe2\x80\x58\xe7\x15\
+\xae\x80\x28\xc0\xfb\x43\xee\xbd\xf7\x5e\x20\xaa\xdc\x9d\x9d\x6d\
+\xb0\x77\xef\x5e\xf6\xbc\xbc\x87\xa9\xe9\x29\x6d\xe0\x42\x04\x0e\
+\x15\xe6\xc0\x84\x38\x75\xaa\x34\x82\x28\x60\x02\x74\x05\x30\xc7\
+\xc8\x6a\x98\x14\x4c\xa5\x92\xb1\xe1\x0c\x7a\xf9\x16\x18\x63\x6c\
+\xf4\xef\xd2\xed\x76\x79\x6b\xcf\xab\xb4\x67\x7f\x8b\x95\x5b\xae\
+\xe1\xe4\x5b\x87\xc2\xef\xd8\xef\xf5\x38\x75\xe4\x28\xe3\x27\xff\
+\x33\x5b\xef\x7e\x8b\x91\xab\xee\xe0\xed\x3d\x49\x9a\xb5\x06\x41\
+\xab\x88\x52\x26\x19\x26\x83\xf9\x45\x46\x58\x7b\x29\x58\x9a\x05\
+\x5e\x07\x0e\x1c\x50\x03\x1d\xbf\xda\xee\x02\xd8\xbf\x7f\x3f\xbb\
+\x77\xef\xe6\xc8\x91\xa3\x74\xbb\x1d\xda\x6d\x8f\xfb\x0f\xa2\x88\
+\x70\x38\xa4\x9a\xaf\xfa\x36\x62\xe4\xbc\x08\xc3\x9c\x16\x6e\x56\
+\xec\x46\x03\x21\x85\xc6\x43\xc4\x47\xd9\x9b\x25\x5b\x66\x95\x8e\
+\xd1\xea\x2d\x7d\x62\x4a\x7a\xa5\x6f\xae\x3b\xc8\x6c\x02\x5e\x25\
+\x92\x25\xe8\xb5\x3b\xe6\xfc\xc1\xd8\x1c\xa3\x40\xf0\x7f\xff\xd8\
+\xdf\x83\x82\xb3\x67\xcf\x02\x97\xf1\x9c\x40\x80\xad\x5b\xb7\x86\
+\x5f\x7e\xff\xbe\x7d\xca\xec\xa1\xf7\xae\xea\xd6\xad\x5b\xb9\x6e\
+\xeb\x75\xa0\x60\x66\x66\x86\x63\xc7\x8e\x71\xee\xec\x59\xce\x9c\
+\x3d\xcb\xe1\xc3\x87\x99\x9c\x9c\x34\x84\x34\x40\xa2\x68\xec\xa2\
+\x8a\x99\x7f\xc5\x60\x08\x16\x9f\x0c\xa2\xe6\x19\xd7\xa2\x94\xb9\
+\x13\x07\x9a\x39\x63\x73\x0b\x82\x7c\x85\xd1\x2e\xe6\x1b\x7a\xb7\
+\xe7\x6a\xc8\xc7\x1f\x19\xe7\xef\xfa\x60\x84\x9c\xee\xf6\xf4\x8a\
+\xa1\x2b\x80\x0a\x8e\xd6\xf5\x1f\xf8\x80\x78\xe8\xe1\x87\xc5\xe8\
+\xc8\x88\x35\x3d\x35\xf5\x3f\xd9\x89\xc4\x7f\xfa\xdd\xdf\xfd\xdd\
+\x8a\xae\x14\x95\x4a\x85\x4a\xb9\x02\x37\x29\xfa\x8e\x43\xb7\xd7\
+\xf3\xf2\xf0\x47\x8f\xf2\xe2\x8b\x2f\xf2\xda\x6b\xaf\xc5\x84\xaf\
+\x62\x67\x02\xc4\x46\xc9\x05\x43\xa3\xe2\x85\x17\xfa\x34\x10\xe6\
+\x2b\xc6\x30\x23\x0a\xa1\xfb\xe9\xd8\x5c\x81\x81\xd6\x6f\xa9\x83\
+\xc9\xd8\x1c\x04\x7f\x3c\xbe\x5e\x20\x12\x1e\x9b\x23\x2e\x7d\x7b\
+\xf8\x25\x1b\x4c\xfc\xe0\x8e\x1d\x69\xcb\xb6\x8b\x96\x6d\xff\x8a\
+\x6d\x89\x3f\xb4\x2c\x3b\x2d\x84\x30\x88\xa0\xaf\xfc\xf6\x57\x62\
+\x7c\xf9\x3c\x93\xc6\x80\xe9\xe9\x69\xf6\xec\xd9\xc3\xde\xd7\xf6\
+\x52\xab\xd6\x98\x9b\x6b\xd2\x6c\xcd\xcd\x33\x19\xd4\x3c\x67\xc8\
+\x9c\x0a\xae\x87\x99\x9a\x22\xf8\x98\x40\x12\x3f\xa5\x24\x06\x4a\
+\x03\xce\xc1\x1f\x0d\x17\x8c\xab\x0f\x86\x53\x0f\x00\x53\xad\x16\
+\xc0\x98\x99\xac\x75\x15\x07\x16\xe1\xf1\xc7\x1e\x43\x29\x18\x1f\
+\x3f\xb7\xe0\x2e\x60\xc1\xde\xf8\xc1\x07\x1f\xb4\x9e\x78\xe2\x09\
+\xf9\xb1\xfb\x3f\x96\x49\x67\xd3\x1b\x2c\x61\x7d\x5a\x08\xf1\x5b\
+\x89\x84\x9d\x1e\x00\x64\xb1\xfe\x7a\x1d\xc5\x7f\xf5\xab\xbf\x63\
+\x4e\xdb\xd6\x95\x41\x41\xbf\xef\x30\x36\x76\x92\xb1\xb1\x31\x26\
+\x26\x26\x38\x7c\xf8\x08\x87\xde\x3e\x84\xd3\xef\x9b\xd3\xc1\xc3\
+\x5a\x04\x65\xe4\x15\xc2\xbc\x84\x9a\xbf\x50\xc3\x3c\xe9\xc4\xdb\
+\xde\xba\x52\x79\xd6\x21\x88\x48\xa4\x1f\xd7\x9b\x13\xcd\x8d\x4c\
+\xa0\x6f\x01\xcc\x01\x12\x26\xae\x79\xfc\xb1\xc7\x51\x42\x31\x7e\
+\x6e\xfc\xf2\x53\x80\x1d\x0f\x3e\x68\x7d\xff\x89\x27\x24\xc0\x43\
+\x0f\x3d\xf4\x11\xcb\xb6\x1e\x12\x42\x7c\xd6\xb2\xec\x21\x4b\x0c\
+\xf6\x3b\x18\xc4\x47\x0c\xe4\x85\x93\xb9\xb5\xb9\xff\xbf\xf7\x7b\
+\xbf\x37\x30\x46\x26\x48\x9e\x49\xe5\x35\x7c\x38\x8e\x43\xad\x56\
+\x63\xcf\x2b\x7b\x78\xe1\x87\x2f\x30\x3e\x3e\x6e\x9c\x47\x10\x27\
+\xa0\xce\x2f\x0c\xf3\x0c\x83\xf0\xd4\x13\x21\xcd\xb9\x83\xc6\xe9\
+\x66\xb1\x33\x0f\x95\x34\x7a\x1b\x65\xec\xc4\xb3\xf0\xb0\x0b\x3f\
+\x93\x28\xa5\xe2\xf1\x27\x1e\x07\x05\xe3\xe3\x97\x91\x02\xec\xd8\
+\xb1\xa3\xf4\xfd\xef\x7f\x7f\xd6\xdf\xfd\x9f\x4b\x24\xed\x5b\xc0\
+\xfa\xb8\x25\xc4\x52\x61\xe9\xd3\x31\x82\xe4\xad\x60\xa0\x5d\xcc\
+\x20\x85\x74\x74\x1e\x67\x11\x65\x78\xff\xf7\x7f\xff\x3f\x18\xee\
+\xe1\x7c\xd6\x62\xff\xbe\xfd\xec\xde\xfd\x12\x47\x8e\xbc\x43\xb3\
+\x39\x47\x7d\xb6\x4e\xcf\xef\x21\xd0\x4d\x73\x5c\x11\x02\xa1\xa3\
+\x09\x2b\x1a\xe9\xe6\x1d\x5f\x1b\x76\x03\xcd\xc7\x55\x48\x73\xc8\
+\xa4\xd2\x18\x49\xa5\xd7\x48\x68\x7c\xc6\x63\x8f\x3f\x0e\x4a\x85\
+\x83\x2c\x7e\xae\x15\xe0\x81\x8f\x3f\x90\x7e\xf2\xa9\x27\xbb\x00\
+\x0f\x3c\xb8\xe3\xcb\x09\xcb\xbe\xdf\xb2\xac\xdb\x10\x22\xe7\x57\
+\x4b\x63\x36\xbb\x46\x82\x1f\x88\xeb\x95\x99\x23\x1f\x44\xe8\xe6\
+\xf8\x56\xa9\x14\x96\xb0\x58\xbf\x7e\x1d\x37\xdd\x74\x53\x18\x72\
+\x5d\x77\xdd\x75\xd1\xf4\x6e\xc5\xc0\x6c\x9e\x99\x6a\x95\x93\x27\
+\x4e\x30\x31\x31\xc1\x89\x13\x27\xd8\xb7\x6f\x1f\xe7\xce\x9e\x8d\
+\x46\xd5\xc6\x72\x08\x11\x8f\x10\x2b\xec\x50\xca\x18\x71\x6f\x60\
+\x88\xf8\x79\x08\x21\xa1\xe4\xbd\xf7\x60\x16\x33\xca\x85\x3e\xf6\
+\xd8\xe3\x00\x4c\x4c\x2c\xbc\x05\xb8\xe0\x28\xe0\xc9\xa7\x9e\xec\
+\x3e\xf0\xc0\x8e\xaf\xd9\xb6\xf5\xcf\x2d\x21\x56\x29\x21\xb2\x21\
+\xda\x16\x42\x4b\xf1\x9a\xc9\x5e\xa1\xcf\x0f\x8c\x27\x42\x94\xd9\
+\x51\xa4\x57\xcc\x18\x42\x51\x8a\xab\xd6\xaf\xe5\xe6\x9b\x6f\x36\
+\xbe\xd3\x9b\x6f\xbe\x89\xe5\xf7\x01\xda\xb6\xcd\xd5\x57\x5f\x15\
+\x0d\x79\x12\x50\x29\x97\xa9\x94\xcb\xfe\x00\x4a\x07\xa7\xef\xe0\
+\xb8\x2e\x07\x0f\x1d\xe2\x07\xcf\x3d\xc7\x2b\x7b\xf6\xd0\x97\x32\
+\xa2\xb2\x85\x76\x68\x84\xe6\x9a\x54\x6c\x64\x89\x32\xc0\xa5\x39\
+\x22\x46\x60\x16\x7e\x28\x19\xab\x81\x18\xa0\xd0\x2e\x4d\x36\xe8\
+\xa7\x56\x80\xfb\xef\xdf\x9e\xb3\xac\xc4\x57\x2c\xcb\xfa\xbc\x10\
+\xa2\x00\x4a\x44\xa6\x5a\x44\x47\xb7\x0a\xbf\x63\x56\x68\x85\x2e\
+\x42\xab\x97\x0b\x2a\x7c\x84\x32\x98\x30\xfd\xa2\xea\x79\xf3\x78\
+\x76\xef\xfa\xeb\xaf\x9f\xdf\xb4\x09\xc2\xc9\xa1\xa7\x4e\x9d\xc6\
+\xb2\x6c\x6c\xdb\x62\x74\x74\xd4\x28\xcd\xb6\x84\x4d\x32\x65\x91\
+\x54\x8a\x1b\xb7\x6d\xe3\xc6\x6d\xdb\x00\x45\xb5\x5a\xe3\xa5\x97\
+\x5e\xe2\xb5\xd7\x5f\x63\x7a\x6a\xda\x9b\x3a\x32\x5b\x37\x69\x5b\
+\x06\xcf\x1b\x08\xb2\xa0\x03\x38\x45\x19\xa1\x4d\x30\x46\x7a\x7e\
+\xd2\xd7\x63\x96\x7e\xfe\x14\xe0\xde\x7b\xef\x4d\x25\x93\xc9\x11\
+\xa5\xd4\xbf\x11\x42\xfc\x76\xf8\x25\x55\x34\xd1\x17\xa2\x59\x4a\
+\xe1\x8c\x40\xed\x39\xfa\x00\x48\xb4\x23\x5c\x91\xf3\x4c\x0e\x8d\
+\x03\xb0\xa0\xdf\x5e\x8b\x13\xb3\xd9\xec\xbb\x7a\x37\x41\x30\xf5\
+\x43\x20\x2c\x41\xb5\x5a\x0d\x27\x87\x48\x29\x71\xfd\xd2\xf0\xd1\
+\xe0\x9c\x1f\xff\xbd\xcb\xe5\x21\x1e\x78\x60\x07\x0f\x3c\xf0\x00\
+\xae\xe3\x30\x76\xfa\x14\x67\xce\x9c\x65\xfc\xdc\x38\xfb\xf7\xed\
+\xe3\x27\xfb\x7e\x12\x56\x2a\x2b\x83\xd1\x13\xf3\x9f\x2a\x12\xd2\
+\xd2\xda\x7c\x00\xa9\x38\xef\x2c\x88\x9f\xb7\xee\xe0\xed\xdb\xb7\
+\xdf\xa6\x94\x7a\x50\x4a\xf9\xd5\x60\x67\x05\xb1\x6b\xa0\x07\x02\
+\xbc\xf4\xaf\xaf\x01\xc2\xff\xbf\xf0\xc2\x10\x24\x7f\x44\x34\x40\
+\x01\xcc\xe2\x8d\xf8\x29\xe0\xa1\x9f\x15\xc6\xf0\xa5\x60\x4d\x4e\
+\x4e\xb2\x6c\xd9\xb2\xf9\x13\x51\xc4\xa6\x73\x23\x10\x08\x2c\x21\
+\x10\xb6\x1d\x81\x4d\x21\x38\x77\xee\x2c\x8e\xe3\xe0\xba\x2e\x6b\
+\xd6\xae\xd1\x72\x19\x0a\xcb\xb6\xb9\x6a\xed\x55\xac\x5d\x7b\x15\
+\x4a\x4a\x1e\xfc\xc4\x0e\x94\xab\xa8\xd6\x6a\xfc\xe3\x3f\xfe\x03\
+\xcf\x3e\xfb\x2c\xa7\x4e\x9d\xd2\xe9\xbc\xf3\x14\xad\xa8\xd0\xe2\
+\xbd\x5b\x0f\x68\x7c\x1e\xe2\xcf\x8b\x05\x78\x39\x9b\xcd\xd2\x98\
+\x9b\x43\x08\x48\xd8\x36\x42\x04\xf3\xf4\x22\x73\xe5\x85\x73\xc2\
+\xb7\x07\xc2\x38\x42\x4d\x08\x34\x54\x6d\x86\x81\x88\x58\x99\x98\
+\x1e\x16\xbe\x8b\xaf\x7c\xfd\xf5\xd7\xd9\xbe\x7d\xbb\xdf\xa2\xad\
+\xa7\xa2\x35\x4b\x23\x15\x58\xc1\x7b\x78\xa3\xe9\x55\xac\x31\xc5\
+\x73\x1b\x9e\x82\x9c\x38\x76\x42\x3b\x99\x04\xae\xbe\xea\x2a\xe3\
+\x39\xb6\x65\x83\x05\x23\x23\x4b\xf8\xd4\x27\x3f\xc5\xa7\x3e\xf9\
+\xc9\x30\xd2\x78\xf9\xe5\x97\x39\xfa\xce\x51\xaa\xd5\x1a\x53\x53\
+\x93\x74\xfc\x5a\x41\x63\xfa\xe7\x25\xec\xff\xbf\x98\x0a\xa0\x1e\
+\x7c\xf0\x41\x31\x39\x35\x49\xbd\x56\x67\xfc\xdc\x39\xc6\x27\x26\
+\x68\xb7\xdb\x58\x3e\xd8\xf2\x86\x2c\x0a\x2c\x84\xd6\x2d\xed\x0d\
+\x49\x30\xce\xfb\x21\x1a\xc3\xaa\xab\x7d\xbc\x5a\x46\x3f\xdd\xf3\
+\xbc\x61\x8c\x10\xec\xde\xbd\x9b\xbb\xef\xbe\xdb\x78\xdc\x9b\x36\
+\x26\xfc\xc3\xaa\x24\x42\x4a\x5f\xc0\xc1\x68\x56\xaf\xf7\x5f\xea\
+\x65\xea\xbe\x19\x8b\x7f\xe2\xf1\x13\x27\xc2\xdb\xd5\x6a\x95\xa7\
+\x9e\x7a\x8a\x2f\x3d\xfa\xa8\xef\xe6\xa2\x54\xfe\xf5\xd7\x6f\x65\
+\xeb\xf5\x5b\x41\xeb\xd9\x53\xbf\x00\x00\x13\x02\x49\x44\x41\x54\
+\x41\xb5\x5e\xe5\xcc\xe9\x33\x4c\x4c\x4c\x72\xe4\xc8\x61\x7e\xf4\
+\xa3\x1f\x31\x36\x36\x66\x28\xff\x79\x2f\xf4\x25\x54\x0e\xf1\x3e\
+\x5c\x80\xfc\xed\xaf\x7e\x55\xf4\x7b\x7d\x3a\x9d\x36\x0d\xbf\x03\
+\xb7\x31\x37\xc7\xd9\xb3\x67\x19\x1b\x1b\xf3\x09\x17\xe5\xa3\xef\
+\x84\xe7\x77\xb5\x11\xee\xe7\x9d\x7f\xa7\x11\x41\x66\x4c\xff\xde\
+\x2f\x44\xb1\x58\xe4\xae\xbb\xee\xa2\x52\xa9\x18\x59\x38\xdb\xb2\
+\xb1\x6c\x2b\x3c\x20\xda\xb2\xac\xf0\x3b\x49\xff\xd8\x39\x29\x25\
+\xd2\x75\x71\xa5\x8b\xeb\xb8\xb8\xae\x7b\x5e\xa5\x93\x52\xf2\x9d\
+\xef\x7c\x67\xe0\xf1\x47\xbe\xf8\xc5\x30\xca\x20\x86\x63\xa4\xff\
+\x19\xae\x2b\x39\x70\xe0\x00\xcf\x3c\xfd\x34\xbb\x77\xef\xf6\x32\
+\x9e\xf3\xac\xef\x7d\xef\x7b\x28\xa5\x98\x9e\x9e\xfe\xf9\x0a\x03\
+\xfb\xbd\x1e\xfd\x7e\x1f\xdb\xb6\x29\x57\x2a\x54\x86\x2b\x48\xa9\
+\x58\xbf\x7e\x03\xdd\x6e\x9b\x6e\xb7\x4b\xb5\xea\x0d\x5a\x3c\x7e\
+\xfc\x78\x08\xb8\x82\x8b\x1f\x62\x87\x81\x8a\x01\xd0\x27\x25\xfe\
+\x34\xfa\xdf\x68\x34\x78\xe1\x85\x17\x58\xbb\x76\x2d\x1b\x36\x6c\
+\xa0\x54\x2a\x79\x44\x8d\x3f\x2d\x5c\xe8\xa3\x5a\x02\xa5\x0c\xce\
+\x0b\x94\xde\x59\xc4\x4a\xaa\x81\x53\x49\xe6\xfb\x9c\xf9\xd6\xff\
+\xf9\x07\x7f\x10\xde\xfe\xdf\xfe\xed\xbf\x25\x9b\x49\x6b\x23\xea\
+\x3d\xb7\x61\x09\x9b\x1b\xb7\x6d\x63\xdb\x0d\x37\x80\x80\xea\x4c\
+\x95\x57\x5e\x79\x85\xd7\x5f\x7f\x9d\xa9\xa9\x29\xa6\xa6\xa6\x98\
+\x9e\x9e\x1e\x50\xfc\xed\xdb\xb7\xff\x2e\x30\x06\xbc\xb1\x6b\xd7\
+\xae\xbd\xfe\x63\xd6\xae\x5d\xbb\xe4\x25\xb5\x00\x8f\x3e\xfa\x88\
+\xe8\xf7\xbc\x82\xc9\x6a\xb5\xea\xf7\xc8\xd9\x51\x21\xa6\xf4\x08\
+\x10\xe9\x3a\xb8\xae\xa2\xd3\xeb\x70\xe6\xcc\x19\x8e\x1e\x39\xca\
+\xc9\x93\x27\xe9\x76\xbb\xf3\x28\xc2\xc5\x9f\x89\xb6\x6a\xd5\x2a\
+\xae\xbe\xfa\x6a\x46\x47\x47\xc9\x65\x73\x58\xb6\x4d\xc2\xf6\x66\
+\x00\x0b\x2f\x3e\x34\x14\x42\x2a\x15\x46\x05\xfa\xf4\xb0\xf8\x72\
+\x5d\x97\x97\x5e\x7a\xc9\x03\x7c\x3f\xc5\xfa\xf5\x5f\xff\x82\x16\
+\x42\x46\x16\x51\x01\x4e\xdf\x61\xfc\x9c\x97\x02\x0f\x78\x8d\xc0\
+\x02\xf8\xc7\xd7\x37\x80\x53\xc0\x01\x60\x0e\x78\x1b\xd8\xb9\x6b\
+\xd7\xae\xd7\x7c\xf9\xe4\x76\xed\xda\xd5\x5a\x50\x05\x78\xe4\x8b\
+\x5f\x14\x3d\xa7\x0f\x0a\x5e\x7e\x79\x0f\x4a\x79\x83\x97\x0a\xc5\
+\x22\x43\x43\x43\x94\x86\x86\xc2\xd1\x6c\xc4\x8a\x3f\x85\x10\xd4\
+\xea\x75\xc6\x4e\x9e\xe0\xe8\xd1\x77\x98\x98\x98\x38\xef\x85\xbe\
+\x60\xb3\x96\x48\x50\x2c\x96\x10\x16\xac\x5e\xb5\x9a\xa5\x4b\x97\
+\x51\xae\x0c\x79\xed\xdc\x96\xed\x8f\x7f\x89\x46\x94\x49\x3f\x24\
+\x73\xa5\x34\xa6\x7a\x05\xab\xd7\xeb\xd1\xed\x76\x79\xe3\x8d\x37\
+\x38\x75\xea\xd4\x45\xf1\xd1\x5f\xf8\xc2\x17\xb4\x31\x31\xc1\x61\
+\x58\x26\xfe\x98\x9e\x9e\x0e\x84\x3f\xdf\x6a\x03\x13\xc0\x39\xa0\
+\x0a\xec\x17\x42\xfc\xcd\x33\xcf\x3c\xf3\xb2\x2f\xaf\xfc\xae\x5d\
+\xbb\x9a\x17\x55\x01\xfe\xf7\xdf\xf8\x0d\xe1\xf4\xfb\x28\xa5\xd8\
+\xb3\x67\x4f\x58\x91\x13\x24\x33\x94\x3f\xa2\x25\x97\xcb\x31\x54\
+\x1e\xa2\x32\x54\x21\x5f\xc8\x63\x09\x61\x1c\xf5\xe6\x99\x5f\xc9\
+\xe4\xe4\x14\x27\x4f\x7a\x99\xbc\x46\xa3\x11\x1e\xfd\x72\x41\x8a\
+\x21\x20\x99\x48\x92\x4c\xa6\x48\x25\x13\x24\x53\x29\xd6\xad\x5b\
+\x87\x10\x82\x74\x3a\x4d\x3e\x9f\x27\x9f\xcb\x91\xce\xa4\x11\x96\
+\x17\x0a\xba\x8e\x13\xee\x70\x21\x44\x38\xb4\x6a\x76\xb6\x4e\xb5\
+\x5a\xa3\x39\xd7\xe4\xd0\xa1\x83\xf4\xfd\xe7\x2d\xc4\xfa\xfc\xe7\
+\x3f\x67\x80\xe2\xaf\x7f\xfd\xeb\xef\xf7\x2d\x7a\x40\x0b\x68\x02\
+\x93\x42\x88\xd7\xfa\xfd\xfe\xdf\x3d\xff\xfc\xf3\x8f\x5f\x34\x05\
+\xf8\xf5\x7f\xf7\xef\x84\xe3\x4f\xd7\x0c\x15\x40\xaa\x30\x64\x92\
+\x52\x86\xf7\x55\x60\x56\x95\x22\x9d\x4a\x51\x2a\x15\xa9\x94\x2b\
+\x14\x4b\x43\xa4\x52\xa9\x30\x73\x16\x0c\x6a\xea\x76\xba\x4c\x8c\
+\x8f\x73\xfa\xcc\x69\x26\x27\xa7\xe8\x76\xbb\xf4\xfc\x62\x10\xc7\
+\x71\x42\x97\x21\xfe\x09\x86\x4c\x58\x16\xa9\x64\x92\x44\x22\x41\
+\x2a\x99\x22\x99\x0a\x94\x21\xe9\xdf\xf6\x7f\x52\x29\x92\xc9\x24\
+\x28\x15\xba\x25\x29\x25\x9d\x4e\x87\x6a\xb5\x4a\xbf\xd7\x43\x2a\
+\x45\xad\x5a\xa3\xe7\xf4\xbd\xf1\x70\xa1\xf2\x5e\x98\x05\x58\xdf\
+\x68\xf0\xa7\x7b\xf6\xfc\xd4\xaf\xff\xfa\xe6\xcd\x3c\xb9\x6a\x15\
+\x3d\x9f\xcb\x38\x8f\xbb\x92\xab\x57\xaf\x96\xc9\x64\xca\x3a\x7d\
+\xfa\xd4\xbf\xde\xb9\x73\xe7\x37\x2e\x18\x04\x06\xbb\x3d\x40\xe8\
+\x51\xad\xde\x60\x57\xac\x16\xde\xd3\x69\xb7\x69\xb5\x5a\x9c\x3d\
+\x7b\x0e\xa9\x24\x96\x10\xe4\x0b\x45\x8f\x93\xaf\x54\xc8\xe7\x73\
+\x28\x09\x4b\x97\x2d\x65\xd9\xb2\xe5\x08\x4b\x30\x37\x37\xc7\xe4\
+\xe4\x24\x93\x93\x93\x34\x1a\x0d\x3a\x9d\x0e\xad\x56\x8b\x76\xbb\
+\x1d\x82\xbb\x79\x41\xa5\x94\x74\xbb\xde\x39\x00\xe9\xe1\xb4\x1f\
+\x89\x78\x8a\xe6\x8d\x84\x13\xde\x79\x00\x78\x07\x3e\xf7\x7c\x60\
+\xdb\xef\xf7\xe9\xf5\xfb\x21\xd0\xf5\x7e\x7a\xa1\x7b\x48\x24\x12\
+\x38\x8e\x73\x51\x84\xff\x2f\xdf\x79\xe7\x82\xde\xe3\x57\xfc\xb0\
+\x34\xae\x04\x81\x72\x8e\x8c\x8c\x30\x3c\x3c\xec\x71\x9f\x02\x3e\
+\x74\xd7\x9d\xff\x75\xe7\xce\x9d\x17\x1e\x05\x48\x57\x45\xa9\x4b\
+\xe3\xf4\x4d\xed\x78\xa6\xb0\xb8\x42\x86\xc4\x8b\xc1\x84\x49\x70\
+\x95\x4b\x75\xa6\xca\xcc\xf4\xb4\x8f\xbe\x5d\x72\xd9\x1c\xe5\x4a\
+\x99\x72\x79\x98\xa1\x52\x89\x84\x6d\xb3\x72\xf9\x72\x56\xae\x5c\
+\x81\x92\x8a\xd9\x46\x83\x5a\xad\xc6\xec\xec\x2c\xed\x76\x8b\x46\
+\x63\x8e\x46\xa3\x41\xab\xd5\x32\x94\x41\x57\x88\x99\x99\x19\xe3\
+\xfb\x6f\xd9\xb2\xc5\x33\xf1\x02\xb0\x44\x64\xa9\x02\xbe\x41\x4a\
+\x2d\x9d\xeb\xdd\x6e\xb7\x5a\x17\xcd\xcc\x07\xc2\xff\xd0\xe4\xe4\
+\x05\xd1\xbd\xa3\x42\x0c\x28\x81\x6d\xdb\xe1\x2c\x43\xdb\xb6\x71\
+\x5d\xd7\x53\x7e\x2c\xa6\xab\x35\xfb\xa2\x84\x81\xc1\xc5\x42\x41\
+\x69\x68\x88\xc6\xec\x2c\x7d\xd7\x9d\xe7\xc0\x67\x19\x3b\xb5\x3b\
+\x76\x00\x14\x3a\x65\xea\x3d\x67\xae\xd9\xa4\x31\xd7\xe0\xf8\xf1\
+\x93\x28\x25\x49\x26\x92\x94\x4a\x25\x86\x97\x0c\x87\xa7\x7c\xac\
+\x58\xbe\x9c\x15\xcb\x97\xd3\x77\x1c\x5a\xcd\x26\x73\xcd\x26\x9d\
+\x4e\x87\xb9\xb9\x39\x7f\x44\x7c\x3d\x8c\x34\x02\xb3\xae\xaf\x83\
+\x07\x0f\xfe\xcc\x18\x37\xa1\x14\x9f\x3f\x74\x88\xeb\x6b\x35\x53\
+\xf8\xc2\x23\xcd\x5c\x25\x70\x05\x38\xda\x6d\x57\x08\x1c\xc0\x05\
+\xef\x3e\x82\x75\xfd\x3e\x28\xc5\xa8\x10\x7c\xee\xed\xb7\x21\x99\
+\xe4\xb9\xcd\x9b\x19\x1a\xf2\x5c\x6b\x30\x2a\xcf\x1b\xc4\x81\x3f\
+\xd1\x5c\x72\x91\x14\x40\x86\x27\x7d\x6d\xda\xb4\xd1\xe7\x06\xfa\
+\xd4\x1b\x0d\xea\xb5\x1a\xf5\x5a\x9d\x56\xbb\x35\x78\x80\xb3\x9e\
+\x06\xd5\x0b\x2d\xc2\xdc\x19\x5a\x9a\xd5\xbb\xdd\xed\x75\x99\x98\
+\x9c\xe0\xdc\xf8\x39\xdf\xe4\x43\xa1\x50\xa2\x52\xa9\x30\x3c\x5c\
+\xa1\x50\x28\x30\x92\xcd\xa2\x94\xa2\xd7\xef\xd3\xf5\x67\x00\xf6\
+\x7a\x3d\x6a\xb5\x1a\xd3\xd3\xd3\x34\x1a\x0d\x7f\x27\xcc\xcf\x41\
+\x5c\x4a\xe1\xff\x5f\x7b\xf7\x9e\x5f\xf8\x08\x4f\xf0\x80\xab\x08\
+\x15\x41\x86\xc2\x8f\x14\xe1\x60\x2a\xc5\x96\xa0\x64\x5e\x08\x3e\
+\x77\xe0\x00\x43\x43\x43\x3c\x57\x1e\xa2\xef\xf4\xbd\x6c\x87\xb0\
+\xb0\xfc\xc9\x65\xc2\xe2\x5d\x41\xf5\xfb\x73\x01\xd2\x0d\x0f\x74\
+\xa8\xd5\x67\xc9\xe7\x72\xd8\x89\x04\x95\x4a\x99\xe1\x72\xd9\x03\
+\x1f\x52\xd2\x9c\x9b\xa3\x5a\xab\x31\x33\x33\x43\xa3\x31\x6b\x1e\
+\xfa\x48\xec\xbc\x1d\xad\xc0\x42\xa0\x1d\xb2\xac\x27\x86\x84\xc0\
+\x75\x5d\x6a\xb5\x2a\xd5\xea\x0c\x47\x8e\x78\x58\x24\x93\x49\x53\
+\xae\x94\x59\x52\x59\xc2\xd0\xd0\x10\xc5\x62\x01\x25\x15\xa5\x52\
+\x89\x95\x2b\x57\xe2\x3a\x0e\xad\x56\x8b\x99\x6a\x95\x99\x99\x19\
+\x9a\x4d\x2f\x2a\x9a\xcf\x3a\x2c\xd4\x0a\xcc\xfe\xbc\xc2\x47\xe0\
+\x28\x85\xf4\x77\xbb\xeb\x0b\xd9\xd1\x6e\xbb\x78\xc2\x97\x81\x65\
+\x40\xf0\x46\x2a\xcd\xb6\x5e\x37\x54\x82\x07\x7f\xfc\x63\x84\xe3\
+\xf0\xc2\xe6\xcd\x38\xc9\x24\x42\x78\xf9\x0e\x81\x40\x48\x71\x11\
+\x2d\x80\x8c\xca\xa7\x4e\x9c\xf0\x4c\xb5\x25\x04\xd9\x5c\x8e\x52\
+\xb1\x48\xbe\x50\xf0\x42\xad\x42\x81\x5c\xa1\xc0\xaa\x95\x2b\x91\
+\x4a\xd1\xe9\x74\xa8\xd5\x6b\xcc\x4c\xcf\x50\xad\xd6\xe8\xf5\xba\
+\x61\x04\x01\xf3\x9c\x96\xa5\x88\xb2\x87\x2a\xc8\x9f\x13\x3b\x5c\
+\x59\xd1\x6a\xb5\x68\x36\x9b\x9c\x3e\x75\x3a\x8c\xff\x3f\xf4\xa1\
+\xbb\xb1\x2c\x8b\x44\x32\x81\x6d\xdb\x24\x93\x49\x8a\xa5\x22\x6b\
+\xd6\xac\xc6\x75\x5d\x1a\x8d\x39\xa6\xa7\xa7\x43\x77\xf1\x5e\xa3\
+\x8b\x8b\xea\xf3\x85\xf0\x77\xb7\xf2\x05\x1f\xed\x70\x89\x08\x05\
+\xef\x0a\xbc\xc7\x45\x70\x5f\x84\xee\xe0\xd5\x74\x86\x5b\xba\x5e\
+\xa2\x69\x58\x08\x76\xec\xdf\x0f\x4a\xf1\xc2\x35\xd7\xe0\x24\x93\
+\x7e\xf2\xcd\x02\xa1\x8c\xc4\xd6\x85\x59\x00\xdd\x7c\xfb\x20\xc9\
+\x91\x2e\xf5\x7a\x9d\x5a\xbd\x8e\xf2\x59\xb4\x6c\x36\x4b\xb1\x58\
+\xa4\x58\x2c\x92\xcb\xe5\x48\xa7\xd3\x2c\x5d\xba\x94\xd1\x91\xa5\
+\xa0\x14\x7d\xa7\x4f\x7d\xb6\xce\xcc\xf4\x0c\x33\x33\x55\x1a\x73\
+\x8d\x30\x01\xa4\x82\x23\x66\xe2\xb9\x02\xff\x02\x4a\x35\xcf\x79\
+\x7c\xfe\xf2\x50\xba\x1c\x18\xdd\xa6\x94\x1f\x01\x58\xb6\xf7\xbd\
+\x4a\x45\x94\x54\xf4\xfb\xde\xf7\xf0\x4a\xcb\xbd\x83\x25\x2e\x8d\
+\xf0\x05\xae\x50\x9e\x50\x43\x01\xfb\xbf\x15\xfe\x8e\x57\x38\xbe\
+\x12\x44\xf8\x20\x78\x8d\x77\xff\xc5\x4c\x86\xbb\x3a\x9a\x12\x1c\
+\x38\x80\x82\xd0\x12\x80\x8b\x54\xe2\x62\xba\x00\x69\x1e\x7e\x10\
+\x4c\xc2\x54\xe6\x89\x9f\xcd\x66\x93\xb9\xb9\x39\x4e\x9f\x3e\x8d\
+\x54\x8a\x64\x22\x41\xa1\x58\x60\x68\x68\x88\x42\xbe\x40\x2a\x95\
+\xa2\x52\xae\x50\x2e\x0d\xb1\x6e\xdd\x3a\x94\x52\x34\x1a\xb3\xcc\
+\xcc\x54\x99\x9a\x9a\xa6\x5e\xaf\xe1\xb8\x8e\x76\x0c\xcb\xe0\x29\
+\x3a\x03\x67\xf0\xc5\x6a\x29\xa2\x93\xbd\xa3\x12\xef\x90\x7a\x95\
+\x5e\x24\x63\x5b\x36\xe5\xa1\x32\x95\x72\x05\x21\x04\x9d\x4e\x87\
+\x46\xa3\x41\xbd\x5e\xa7\xd3\xe9\x84\x7f\xef\xfb\x0d\xfd\xde\x0d\
+\xf0\x85\x3b\x3f\x14\xbe\xf0\x05\xad\xa2\x5d\x2e\x4c\xdf\x2f\x2d\
+\x70\x54\x64\x15\x5c\x08\x2d\xc6\x73\xd9\x2c\xf7\xb6\xdb\xa1\x12\
+\xfc\xcb\x57\x5f\xc5\xb5\x2c\x9e\xdf\xb2\xc5\x53\x7c\xa1\x70\xdf\
+\x25\x03\xf9\x3e\x2d\x80\xa9\x00\xef\x95\x07\xe8\x75\xbb\x4c\x75\
+\x3a\x4c\x4e\x4c\x86\x3c\x40\x36\x97\xa7\x5c\xf2\xe8\xe3\x5c\x2e\
+\x4b\x3e\x5f\x20\x9f\xcb\xb3\x6a\xd5\x6a\x40\xd2\x6e\x77\xa8\xd5\
+\x6a\x4c\x4d\x4d\x33\x33\x33\x1d\x85\x63\xc1\x51\x32\xe7\x49\x23\
+\x18\x07\x2f\xf9\xbd\xf7\xc1\x69\xf4\x6a\x20\xa2\x31\x2b\x78\x53\
+\xa9\x14\x23\x23\x23\x8c\x8e\x8e\x02\xd0\x6a\xb5\x68\x34\x1a\xcc\
+\xcd\xcd\xd1\xeb\xf5\x70\x5d\x37\x64\x2a\x95\x52\xe7\x75\x1b\xbf\
+\xf3\x93\x9f\xbc\x8b\xf0\x23\x1f\x2f\x7d\x01\x3b\x42\xf9\xa6\x5f\
+\xe0\xe2\xef\x7c\x1f\xc5\xcb\xc0\x3d\x08\x1f\x1c\x6a\x11\x82\xf7\
+\x5e\xf0\x64\x36\xc7\x03\xed\x56\x88\x09\xfe\xd7\x3d\x7b\x78\x6e\
+\xf3\x66\x0f\x03\x58\xbc\xeb\x59\xc4\xef\xd3\x02\xe8\xe5\xce\x17\
+\xc6\x03\xd4\x6b\x75\x6a\xd5\x6a\xc8\x03\x64\x33\x59\x4a\x43\x25\
+\x86\x86\x2a\x14\x0b\x05\x92\xc9\x14\x23\xa3\xa3\x8c\x8e\x8e\x20\
+\xfd\x43\xa2\x67\xeb\xb3\x4c\x4d\x7b\x59\xb3\xfa\x6c\x7d\xde\x29\
+\x1a\xf1\x83\xc9\x05\x18\x34\x74\x70\x30\xa5\x71\xc8\x8f\xa6\x14\
+\xfa\x6e\xcf\x64\x32\x64\xb3\x59\x96\x2d\x5b\x16\x9e\x3b\x34\x37\
+\x37\x47\xbb\xdd\xd6\xc8\xa2\xbe\x61\x62\x85\x10\xef\xe2\xf3\x3d\
+\xb4\x1f\x01\xba\xc8\xbf\x4b\x5f\x98\xde\x6d\x81\x0c\x42\xc2\x40\
+\x69\xfc\xf9\x8a\x9e\x2b\xf0\xdf\x4f\x44\x56\xe1\x7b\xf9\x3c\x9f\
+\x6c\x36\x0d\xce\x46\x58\x5e\x44\xee\x5c\x2c\x0b\xa0\x7c\xaa\x57\
+\xa1\xc8\xe7\xf3\x34\x9b\x4d\x1c\x29\x2f\x0a\x0f\xd0\x6c\xb5\x98\
+\x6b\xce\x31\x36\x76\x1a\xa5\x24\x09\x3b\x41\xb1\x58\xa4\x52\x29\
+\x53\x2c\x95\xc8\x64\x32\x0c\x95\x87\x28\x0d\x95\x58\xb7\x6e\x1d\
+\x52\x4a\x5a\xad\x16\xd3\xd3\xd3\x21\xa8\xf3\x0e\x81\x52\x10\x8b\
+\x24\xf4\xe3\xdb\x8d\x49\x65\xef\x81\xf7\xd0\x9f\x97\xcb\xe5\xc8\
+\xe7\xf3\x08\x21\xe8\xf7\xfb\xb4\xdb\xed\xb0\x93\xb9\xd7\xeb\xd1\
+\xe9\x74\x06\x73\xfc\xbe\xcf\x8f\x84\x19\x09\xde\x89\x61\x00\x47\
+\xc3\x01\x81\xd0\xdd\x30\x02\x88\x84\x2d\x35\x2b\xe2\x68\x56\x62\
+\xa0\x20\xc6\x4f\x83\xab\x77\xc1\x36\xef\x3b\x0a\x90\x7e\xc9\xf3\
+\xea\x35\x6b\x7c\xe0\xd5\xa7\xd9\x6c\x31\xd7\x68\xd0\x68\xcc\xd1\
+\xe9\x76\x2e\x0a\x0f\xd0\xeb\xf7\x98\x9a\x9e\x62\x62\x32\xca\x1a\
+\xe6\xf3\x05\x2a\x95\x32\xe5\xa1\x21\xef\xfc\x9f\x6c\x96\x55\x2b\
+\x57\xb2\x62\xc5\x0a\x8f\x0f\xf0\xe3\x63\xa3\x93\x58\x6f\x14\x91\
+\xf1\x13\xc3\xdf\x1f\xb0\xd3\x5f\x6b\x59\x16\x85\x82\x77\x5c\x3d\
+\x40\xbf\xdf\x9f\x57\x01\x5c\xe1\x55\x25\x45\x21\x1e\xda\x6e\x37\
+\x43\xbd\x70\x47\x5b\xba\x72\xf8\x82\xb6\xfc\xd7\x61\x86\x88\x12\
+\x15\xbe\x57\x9c\xb3\x21\x70\x83\x17\xc9\x02\x88\xa3\x47\x8f\x32\
+\x3a\x3a\x42\x22\x99\xf0\xd8\x36\xdb\xc6\xb6\x12\x21\xe2\x5f\xe1\
+\x5b\x89\x56\xbb\xcd\xec\xec\x2c\xb3\xb3\xb3\x34\x9b\x73\x17\x85\
+\x07\x90\x7e\x76\xae\x5e\xaf\xf9\xe0\x4c\x91\xc9\xa4\x28\x0d\x79\
+\x35\xfe\xa5\x52\x89\x64\x2a\xe5\xc7\xbc\xe6\x29\x23\x81\xf2\x1a\
+\x1d\x0a\xe7\x0b\x25\x7e\x4a\x85\x08\xa8\xd8\x81\xa4\x8c\x32\x4d\
+\xb5\x2e\x54\x03\x0f\x68\xf1\xbe\xc9\xfe\x05\x04\x91\xe7\x16\x74\
+\xb7\xe1\x04\x61\xe4\x3c\x0a\x10\x90\x67\x08\x0b\x57\x5d\x1c\x05\
+\xd8\xfd\x83\xe7\x7f\x90\x16\x42\x7c\xb0\x54\x2a\xb1\x62\xc5\x0a\
+\x56\xac\x58\x41\xb1\x58\x24\x99\x4c\x92\x4a\xa5\x48\x24\x12\x08\
+\x61\x91\xcb\x65\xc9\x66\xb3\x2c\x5d\xba\x14\xc0\x40\xd7\xb3\xb3\
+\x8d\x8b\xc8\x03\xb4\x69\x36\x5b\x9c\x3d\x73\x26\xe4\x01\x6e\xbb\
+\xed\x36\xcd\xf4\x47\x1c\x7f\x84\x0f\x62\x83\x9a\x2f\xe2\x9a\xcf\
+\xad\x78\x48\x5e\x45\xc2\xd3\xe2\x7c\x47\x68\xca\x41\xb4\xc3\x25\
+\xfa\x73\x85\x89\x05\xc2\xe7\x9b\x1c\x82\x9c\x07\xaf\x79\xb5\x2f\
+\xde\x90\xec\x0b\x56\x80\x5d\xbb\x76\xdd\xe9\xa7\x85\xff\xb6\xd9\
+\x6c\xb6\x0e\x1e\x3c\xe8\xbe\xf5\xd6\x5b\x77\x27\x93\xc9\x75\xe5\
+\x4a\x99\xa5\xa3\x4b\x19\x19\x19\x21\x9d\x49\x93\xcb\x66\xc9\x66\
+\x73\xde\x21\x0b\x4a\x79\xc7\xad\xa6\x52\x54\x86\x87\xbd\xb0\xa4\
+\xef\xd2\x68\x34\xa8\xd5\xaa\xd4\xea\xb3\x21\x43\x77\x31\x78\x00\
+\x88\x0e\xdf\x3c\x4f\x6c\x08\x0b\x22\xfe\xf3\xa4\x65\xf5\x1d\x2f\
+\xe6\x13\xbe\xee\xff\x35\xf3\x2e\x74\xb7\x10\x23\x84\x82\xff\x37\
+\x18\xc3\x79\x5c\x80\x02\x25\x2e\x22\x0f\xe0\x2b\xc2\x3f\xd3\x6a\
+\x04\x7e\x59\x29\xf5\xb1\x99\xe9\x19\x77\x62\x7c\xa2\x6f\xdb\xf6\
+\xef\xa7\xd3\x69\xca\xe5\x32\xe5\x72\x99\x52\xb1\xa4\x72\xb9\x9c\
+\x28\x96\x8a\xe4\xf3\x79\xaf\x84\x5c\x49\xb0\x6d\x4a\xa5\x22\xa5\
+\x52\x91\x35\xfe\xee\x6f\x36\x9b\xd4\xaa\x35\x66\xaa\x55\x1a\x8d\
+\xd9\x9f\x9a\x07\x90\xb1\xf6\x6f\xfd\xb0\x06\xbd\xd1\xe4\x52\x8d\
+\xe0\x70\x44\x9c\xd5\x3b\x0f\xcd\x1b\xb2\x81\x11\xd0\x73\x35\xa0\
+\xe7\x99\x7a\x61\x72\x08\xda\x6d\x27\x16\x92\x4a\x57\xfa\xa5\x6f\
+\xea\xe2\x2a\x40\xb0\x3e\xf6\xb1\x8f\x89\x9d\x3b\x77\xbe\x00\xbc\
+\xa0\x29\xc4\x51\xc7\x71\xec\xf1\xf1\x71\x71\xee\xdc\xb9\x1b\x12\
+\x89\xc4\x6f\x64\xd2\x19\xf2\x85\x3c\x85\x42\x81\x5c\x3e\xef\x9d\
+\xc9\x5b\x2e\x93\xcf\xe7\x51\xca\x2b\xc3\x42\x79\xec\x61\x26\x93\
+\x61\xf9\x8a\xe5\x48\xa5\xe8\x75\xbb\xd4\x6b\x35\xaa\xd5\x1a\xd5\
+\x5a\x95\x4e\xbb\xfd\x9e\x78\x00\x7f\xa2\x43\xd4\x41\xa4\x45\x27\
+\x0a\x6d\x22\xf9\x02\x2c\xa5\xd4\x00\x9b\x68\x80\xbd\x01\x53\x8e\
+\x69\x11\x30\xdd\x44\x80\xf0\xc3\x9d\xaf\x94\x17\x02\x0a\x2f\x87\
+\xe0\x0a\xcb\xc0\x0b\x03\x51\x00\x5e\xbe\x41\x5e\x24\x0c\x60\xac\
+\x9d\x3b\x77\xaa\x79\xac\xc3\xb7\x82\xdb\xf7\xdd\x77\x5f\x56\x29\
+\xf5\x78\xbb\xd3\x96\xb3\x8d\xd9\x46\x32\x99\xfc\x6b\xdb\xb6\xd7\
+\xa7\xd3\x69\x32\x99\x0c\x99\x4c\x46\x15\x0a\x05\xb1\x64\x64\x09\
+\xc3\x95\x0a\xa9\x54\x06\xa5\xa4\x7f\x7e\xa0\x24\x91\x48\x30\x3c\
+\x32\xc2\xf0\x92\x25\x1e\xe5\xec\xba\xcc\x35\x1a\xcc\xcc\x4c\x33\
+\x3d\xe3\x59\x89\x79\x79\x00\x7d\xf0\xe4\x3c\xcd\x24\x0b\x79\x28\
+\xa3\x94\x92\x5c\x2e\x67\x3e\xa6\xd3\xb9\x0a\x1c\xcb\x8f\xe7\xf5\
+\xc7\x7d\x21\x05\x3e\xdd\x15\x2a\x8c\xf5\x75\x01\x3b\x31\x17\x11\
+\xe0\x86\xe0\x7d\xe6\x03\xa8\x42\x5c\xc4\x64\xd0\xfb\x59\xcf\x3c\
+\xf3\x4c\x1b\x78\x5e\x53\x88\x3b\xa4\x94\xf9\x56\xab\x25\x1a\x8d\
+\x46\x22\x99\x4c\x1e\xb2\x2c\x8b\xb1\xb1\x31\x12\x09\x9b\x74\x3a\
+\xa3\x86\x87\x87\xc5\xe8\xe8\xa8\x7f\xea\xa7\x15\x35\x6e\x28\x85\
+\x25\x04\xc5\x62\x91\x42\xa1\xc0\x9a\x35\x6b\x51\xca\x03\x81\xb5\
+\x9a\x97\xe9\x9b\x9d\x9d\x0d\x31\x80\x31\x72\x59\xdb\xfd\x3a\x91\
+\xb5\x50\x2b\x6e\x6e\x1d\x3c\x1a\x37\x40\xf7\xd2\xdf\xc5\x7a\x62\
+\xc7\x11\xba\x29\xf7\x18\x42\x2f\x7a\xd0\xea\x01\xfc\x88\xc2\xd1\
+\x70\x84\x61\x31\xac\x79\x38\x1b\x21\xbc\x9e\x5b\xa9\x2e\xbd\x02\
+\xcc\xa3\x10\x13\xfa\xfd\xed\xdb\xb7\xe7\xa5\x94\xe2\xd4\xa9\x53\
+\xdd\xa5\x4b\x97\x7e\xa1\xd5\x6a\xff\x41\xad\x56\xe3\xf8\xf1\xe3\
+\x08\x21\xc8\xe7\xf3\x8c\xfa\x4c\x60\xa1\x50\xf2\xce\xfb\x31\xfa\
+\xef\x25\x99\x4c\x9a\x65\xcb\x96\x31\xba\x74\x29\x4a\x2a\x1c\xb7\
+\x3f\x4f\x22\xc8\x1c\x26\xb9\x90\xab\xef\xf7\x16\x9a\x2e\x40\xdb\
+\xc9\x21\x6a\xf7\xc0\xac\xa7\x08\xa6\x1f\x0f\x42\xbe\x90\x28\xd2\
+\x42\x3f\x47\xe9\x0c\xa0\xe6\x4a\xe6\xb1\x00\x6e\x30\xbc\x42\x80\
+\x94\xe2\x67\xaf\x00\xf3\xb8\x0b\xbd\xd6\xea\x0f\xfd\x9f\x40\x39\
+\x8e\xd4\xeb\xf5\xf5\xf5\x7a\x5d\x1c\x39\x72\x04\xcb\xb2\x18\x1a\
+\x1a\x62\xe9\xd2\xa5\x0c\x0f\x57\xbc\x43\x1f\x95\x79\x38\x13\x80\
+\x6d\x25\x8c\x79\x7f\xc6\xa0\x49\xe4\x82\xf7\xe3\x35\xe7\x9a\xd1\
+\x49\xa4\x7a\x14\x10\xa2\x76\x93\xd1\x0b\x84\xef\xc4\xd1\x7d\x28\
+\xe4\x28\x41\x34\x10\x05\x04\x0a\xa3\x65\x0b\xe3\x16\xc0\xaf\x7a\
+\xde\x2f\xdf\x65\xd8\xc0\xcf\x4c\x01\xce\xb7\xee\xbf\xff\x7e\xf1\
+\xf4\xd3\x4f\x6f\x0c\xee\x7f\xe2\x13\x9f\x48\x77\x3a\x9d\xe6\xcc\
+\xcc\x4c\x7d\x7a\x7a\x5a\x28\xa5\x72\xa9\x54\x2a\x3d\x3c\x5c\x61\
+\xc9\xc8\x08\xc5\x42\xc9\x3b\xc0\x49\xf9\x5d\x40\x61\x0e\x22\xca\
+\x4d\x84\x73\x7f\x17\x78\xa5\x52\x49\x66\xeb\xf5\x79\x78\x00\xbd\
+\xba\xc7\x8f\xf5\xf5\x74\x70\x2c\xde\x97\x71\xbe\x40\xc7\x0c\xf1\
+\x82\x11\xad\x82\x28\x46\x41\xff\xd0\xb2\xc4\x2e\x2b\x61\x7f\x17\
+\x41\xf7\xbc\xec\x1e\x97\xd9\xba\xef\xbe\xfb\xfe\x95\x52\xea\xb7\
+\xa4\x94\x1d\x7f\xb7\x5f\x9b\xcb\xe5\x43\x8a\x38\x9b\xcb\x85\x8d\
+\x28\x02\xcb\x3f\x91\x44\x5d\x92\x86\xcb\x6a\xb5\x0a\xc0\x37\xfe\
+\xe2\x2f\xc2\xe8\xe3\x60\x2a\x65\x50\xbf\x91\x4b\x10\xe7\x65\x05\
+\x23\xa6\x4f\x73\x01\x61\x22\x29\xc2\x05\x7a\xf2\xe8\x4b\xf5\x5a\
+\xc8\x9a\x02\x3c\xfc\xd0\x43\xeb\x1e\x7b\xec\xb1\xe3\xff\x24\xbd\
+\x7b\x39\x09\xff\x81\x07\x1e\x10\x4f\x3e\xf9\xa4\x8a\x61\x89\xef\
+\x28\xa5\xca\x52\x4a\x5b\x29\x55\xb0\x2c\xeb\xb6\x7c\x3e\x4f\xa9\
+\x54\xa2\x50\x28\x90\x48\x78\xb4\x75\xf0\xfb\x7c\x8c\xdd\xc5\x5a\
+\x53\x93\x93\x7c\xf3\x2f\xff\xd2\xc8\x06\xfe\x24\x95\xf2\x04\x68\
+\xe9\xe9\x5d\x61\xe4\xf5\x75\x50\x18\xd6\x08\x30\xcf\x8e\x1f\x20\
+\x93\x04\x5f\xae\x99\xc2\x07\xfe\x4e\xc0\x3f\x7b\x4f\xfc\x3e\x97\
+\xf1\xba\xef\xbe\xfb\xc4\x33\xcf\x3c\x13\x4a\xf3\xe1\x87\x1f\x4e\
+\xb6\x5a\xad\x6f\x4a\x29\x5b\x52\x4a\x17\xb8\x2f\x91\x48\xac\x0b\
+\xb2\x78\xb9\x9c\xc7\x4e\x06\xcd\x21\xb6\x6d\x0f\x64\xfc\x2e\xc6\
+\xba\xe3\x8d\x37\xf8\xcc\xb3\xcf\x1a\x4a\xf0\xa3\x4c\x3a\x22\x7a\
+\x02\x0b\x60\x61\xa0\x7f\x4f\xb0\xd6\xbc\xec\x5f\x98\xf5\x13\x68\
+\xd9\x45\xc1\x97\xeb\x03\xc2\xff\x47\xe0\x1e\xf1\x1e\xe9\x8e\xcb\
+\x5a\x01\xde\x83\x82\xdc\x23\xa5\xbc\x57\x29\xe5\xba\xae\xdb\xb7\
+\x2c\xeb\xff\x48\xa5\x52\x61\x9e\x3f\x9d\x4e\xab\x74\x3a\x2d\xd2\
+\xe9\xb4\x07\x2c\xc3\x8e\xe1\x0b\x53\x88\x44\xbf\xcf\xed\xfb\xf7\
+\xf3\x91\x57\x5f\xa5\x3c\x37\x17\x2a\xc1\x8b\x99\x8c\x49\xfa\x08\
+\x4d\x19\x44\x9c\x0a\xc6\x54\x98\x80\x23\x00\x4f\x71\xd4\xbc\xc2\
+\xff\x3b\xe0\xdf\x0b\x78\xe3\x3d\x67\xf8\xae\x54\xe1\x7f\xfc\xe3\
+\x1f\x17\x4f\x3d\xf5\x54\xdc\x5d\xfc\x8a\x52\x2a\x2d\xa5\xb4\x94\
+\x52\x6b\x6d\xdb\xfe\xf7\xc9\x64\x92\x74\x3a\x1d\xfc\xa8\x4c\x26\
+\x23\x72\xb9\x9c\xdf\xbe\xa6\x7e\x6a\x85\x38\x9f\x12\x3c\x97\xcd\
+\x9a\x60\x10\xe1\xf1\x00\xc2\xd2\x5c\xc2\x60\x59\x98\x4e\x27\x4b\
+\x01\x5f\xae\xd5\x2f\x58\xf8\x57\xbc\x05\xf8\x27\x14\xc4\x76\x1c\
+\xe7\x5e\x29\xa5\xeb\xba\x6e\xdb\xb6\xed\xff\x60\x59\xd6\x47\x03\
+\xf7\x90\x48\x24\xc8\x66\xb3\x1e\x85\x9d\xcb\x91\x4c\x26\xc3\x52\
+\xb0\xf7\xaa\x10\xe7\x53\x82\xa7\x72\x59\x0d\xe0\xc5\x81\x9f\x19\
+\xee\x39\x41\x18\xa8\x45\x08\x5f\xae\x5f\x1c\xe1\xff\x42\x2b\x40\
+\x7c\x6d\xdf\xbe\x7d\x44\x29\x35\xaa\x94\x12\xfd\x7e\xbf\x95\x4a\
+\xa5\x8e\x05\xe0\xd1\x2f\x2f\x57\xf9\x7c\x5e\x04\x95\xce\x5e\xe8\
+\xf9\xde\x2c\xc4\x7c\x98\xe0\x7b\xf9\xfc\x3c\xe8\x3f\x12\xba\x14\
+\xf1\x9c\x81\xa7\x04\xbf\x39\xb8\xf3\xdf\x97\xcf\x5f\x54\x80\xf7\
+\xae\x10\x65\xa5\x94\xed\x38\x8e\x95\x48\x24\xd6\x0b\x21\x5e\x0e\
+\x5a\xc7\x2d\xcb\x22\x93\xc9\xa8\x62\xb1\x28\x4a\x7e\xb9\x9a\xce\
+\xbf\xbf\x57\x25\xf8\x6e\xbe\x60\x96\x8a\x85\x26\xde\x2f\x16\x0d\
+\x6a\x03\x7d\x6b\xf0\x9b\x17\x08\xf8\x16\x15\xe0\xc2\x14\xc2\x02\
+\xac\x5d\xbb\x76\x39\xdb\xb7\x6f\xff\x03\xe0\x37\x82\xaa\x60\xcb\
+\xb2\xc8\xfb\x99\xce\x62\xb1\x18\xe2\x07\x3d\xe4\x3c\x9f\x3b\x78\
+\xff\x12\xbb\x70\xb3\xbf\xa8\x00\x17\x5f\x39\x8e\x03\xab\xfc\xeb\
+\x29\x2c\xcb\xb2\x4a\xa5\x12\xe5\x72\x99\x42\xa1\xe0\x1d\x19\x03\
+\xd8\xbd\x1e\x77\x1c\x38\xc0\x87\x5e\x7a\x89\x91\x4e\xe7\x42\x3e\
+\xf2\xa2\x08\x7f\x51\x01\x16\x80\x8b\xd8\xb1\x63\x47\xa2\xd7\xeb\
+\x35\x95\x52\xb3\x4a\x29\x0b\xc8\xa6\xd3\xe9\xec\xd0\xd0\x10\x43\
+\x43\x43\x94\xd3\x69\xae\x7a\xe6\x19\xfe\xcd\x5b\x6f\x5d\xc8\xc7\
+\xde\x78\x31\x84\xbf\xa8\x00\x97\xc6\x3a\x7c\x0a\xf8\xba\x94\xb2\
+\xa9\x94\xb2\x2c\xcb\xb2\x84\x10\x25\xcb\xb2\xb6\x3d\xfd\xf4\xd3\
+\x67\x16\xaf\xd0\xe2\x5a\x5c\x8b\x6b\x71\x2d\xae\xc5\xb5\xb8\x34\
+\xdc\x90\x58\xbc\x0a\x8b\x6b\x71\x2d\xae\x85\x5f\xff\x3f\xa5\x0f\
+\x64\x57\x3b\xb6\xe3\xb5\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
+\x60\x82\
+\x00\x00\x3f\x66\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdb\x09\x17\
+\x0b\x29\x38\x14\xe2\x83\x8f\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\xbd\x79\x94\x26\x57\x75\x27\xf8\xbb\
+\x2f\xe2\x5b\x73\x5f\x2a\x6b\xcb\x52\x55\xa9\xaa\xb4\x22\x23\x81\
+\x04\x36\xc8\xd8\x83\x05\xc6\x67\x38\x80\x30\xb8\x51\x23\x10\xb8\
+\x25\xc1\xcc\xe0\xe6\x9c\xc6\xd0\x3e\x9e\x71\x6b\xe8\xb1\x4f\x43\
+\xab\xe9\x31\x63\x18\x23\x64\x70\x7b\xc0\x56\x43\xd3\x60\x1b\x68\
+\x99\xc5\x3d\x0d\x36\x8b\x40\x42\x08\x0b\x24\x95\x84\xaa\x24\xd5\
+\x9e\x55\x95\x4b\x65\x7e\x5b\xc4\x7b\x77\xfe\x88\x88\x17\xf7\xbe\
+\x88\xa4\x67\x00\x37\x16\x53\x1f\x47\x48\x99\xf9\x2d\xf1\xc5\xbb\
+\xeb\xef\xfe\xee\xbd\xc0\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\
+\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\xf9\xc7\
+\xf9\xc7\xf9\xc7\xff\x5f\x1e\x74\xfe\x16\xfc\xd7\x1f\xef\x7f\xff\
+\xfb\x77\x5a\x6b\xff\x37\x10\xfd\x05\x81\xbe\xfe\x1b\xbf\xf1\x96\
+\x93\x77\x7c\xf0\x83\xf4\xa6\x5b\x6f\xe5\xa7\xfb\x77\x33\xe7\x8f\
+\xb7\xfa\x78\xcf\x7b\xde\x43\x00\xf0\x67\x1f\xfd\x33\xfa\xfd\xdf\
+\xff\xfd\x77\xac\xad\xad\x3d\xb2\xba\xba\xfa\xc6\x7e\xaf\xff\xe7\
+\x69\x9a\x9e\xf8\x83\xf7\xbd\xef\x03\x6f\xba\xf5\x56\xbe\xe3\x8e\
+\x3b\xe8\xbc\x05\xf8\x29\x7b\xdc\x7e\xfb\xed\xf4\xf6\xb7\xbf\x9d\
+\x6f\xbf\xfd\xf6\xe7\x02\xf8\x93\x8d\xde\xc6\xc5\xa3\xe1\x08\x69\
+\x9a\xb2\x63\x26\x76\x8e\x17\x16\x16\x68\x6e\x6e\xee\x79\x37\xdf\
+\x7c\xf3\xd7\xce\x0b\xc0\x4f\xe1\xe3\x5d\xef\x7a\xd7\x1f\x38\xe7\
+\xde\xd2\xeb\xf5\xc0\xcc\x60\x66\x38\xe7\x60\x22\x03\x9b\xa4\x00\
+\x01\x3b\x77\xee\xfc\xda\x8e\x6d\x5b\x7e\xe1\x55\xbf\xf6\x8f\x93\
+\xa7\xf3\x77\x8d\xcf\x1f\x37\xf0\x3b\xff\xeb\xbf\xe8\x36\xe3\xc6\
+\x2b\x0d\x99\x8f\x00\x78\x78\x34\x1a\x5d\x32\x1c\x8d\x98\x08\x04\
+\x26\x80\x00\x63\x0c\x26\x3a\x5d\xac\xd8\x73\x60\xe7\xb0\xbc\xbc\
+\xfc\x73\x71\xa3\xf9\x3a\x00\x1f\x3e\x6f\x01\x9e\x26\x8f\x77\xbe\
+\xf3\x9d\x74\xdb\x6d\xb7\xf9\xc0\xed\xb6\xdb\x6e\x7b\x3b\x80\xcb\
+\xa3\x38\xda\x0e\xe0\xc5\xcc\xc8\xb4\xdd\x3a\x66\x30\x21\xd7\x7e\
+\x76\x0e\x26\x8a\xd0\x6a\x34\xb0\xb6\xbe\x01\x02\x83\x01\x6c\xd9\
+\xb2\x90\x4c\x4f\x4d\xce\xdc\x72\xeb\xad\x1b\xe7\x05\xe0\x69\xf2\
+\xf8\xed\xdf\xfe\xed\x7f\xfc\xe8\xa3\x8f\x0e\x0f\x1c\xb8\xe8\x7f\
+\xef\x74\x3b\x8b\x00\x13\x18\xc8\x0e\xdf\x79\x93\xaf\xff\x71\x68\
+\xc6\x0d\x30\x03\xfd\xe1\x00\x00\xc3\x5a\xc7\xed\x56\x9b\xb6\x6d\
+\xdf\xf6\xb9\xb7\xbc\xe5\x2d\x2f\xb9\xf3\xce\x3b\xe9\x96\x5b\x6e\
+\xe1\xf3\x02\xf0\x0f\xec\x71\xe5\x95\x57\x4d\xbc\xe4\x25\xbf\x3c\
+\xc3\xcc\xf7\x11\xd1\x7f\x69\x77\xda\xaf\x62\xc7\x68\xb7\xdb\xe0\
+\xec\xd4\x61\x5d\x76\xd0\x80\x03\x33\xe0\x72\xad\x07\x73\xf6\xdf\
+\xec\xd0\x6a\x34\x30\x4a\x12\x24\x36\xfb\x3d\x33\x23\x49\x12\x5e\
+\x58\x58\xa0\xf9\xf9\xf9\x1b\x6f\xb9\xe5\x96\x3f\x3d\x6f\x01\x7e\
+\x42\x8f\xb7\xbd\xed\x6d\xf4\x9e\xf7\xbc\x87\xf3\x00\x2e\xfe\xad\
+\xdf\xfa\x2d\x7a\xed\x8d\xaf\x7d\xcd\xd4\xe4\xd4\x01\x66\x3e\xb0\
+\x65\xcb\x96\xd7\x8c\x8f\x8f\x23\x49\x12\x34\x5b\x4d\x76\xa9\x23\
+\x66\x86\xdb\x44\xe3\x5d\xfe\x6f\x38\x86\x83\x03\x18\x88\x8d\xc1\
+\x30\x49\x94\x55\x80\x23\x24\x36\xe1\xdd\xbb\x77\x2f\x77\xbb\xdd\
+\x6f\xc5\xad\xf8\xfa\x5f\xbf\xe9\xd7\xd7\xcf\x0b\xc0\xdf\xe3\xe3\
+\xd6\x37\xbd\x89\x3e\x78\xc7\x1d\x0c\x00\x7b\xf6\xec\xe9\x1c\x3e\
+\x7c\xb8\x0f\x00\x6f\x7e\xf3\x9b\xdf\x30\x1a\x25\x0f\x4e\x4f\x4f\
+\xdd\x6e\xad\xbd\x66\x6a\x7a\x8a\x0d\x99\xf1\x76\xbb\x8d\x66\xb3\
+\x09\xe7\x5c\xc5\xcc\x67\x9a\xce\x42\xd3\x59\xfc\xbd\x78\x2e\xc0\
+\x60\x18\x66\x24\xce\x01\xec\xe0\x5c\x16\x03\x14\x02\x12\x99\x08\
+\xed\x76\x1b\x8b\x8b\x8b\xff\xd3\xd7\xbe\xf6\xf5\xcf\x7e\xf8\xc3\
+\x1f\x7a\xe2\xbc\x00\xfc\x3d\x3e\xde\xf0\xc6\x37\xfe\x21\x11\x3e\
+\x7f\xe4\xa9\x23\xcf\x3b\xb0\x7f\xff\x2d\xa9\xb5\xf7\x6d\xdf\xbe\
+\xed\x85\xbd\xde\x00\x3b\x17\x77\x80\x9d\x03\x91\x81\x21\x83\xd4\
+\xd9\xc0\x9c\x8b\x7f\x1c\x83\xe1\xf2\x34\x0f\xb9\x4b\x70\x70\xc8\
+\x05\xc0\x49\x6d\x77\x70\x80\x4f\x09\xb3\xf3\xcf\xac\x84\x65\x07\
+\x93\x05\x85\x38\x74\xf8\xf0\x3d\x1f\xf8\xc0\x1f\xfe\xec\x5d\x77\
+\xdd\x45\x37\xdc\x70\x03\x9f\x17\x80\xff\x0f\x8f\x1b\x6f\x7c\x1d\
+\x7d\xf4\xa3\x1f\x61\x00\xb8\xf1\x75\x37\x46\x1f\xfd\xc8\x47\xed\
+\x0d\x37\xdc\xf0\x33\xd6\xda\x67\xcd\xce\xce\x76\x47\xa3\xd1\xfb\
+\xc7\xc7\x26\x1e\xdd\xb2\x30\x7f\xe0\xdc\xfa\x39\xb4\x5b\x1d\x6c\
+\xdb\xb6\x15\x1b\x1b\x1b\x98\x9c\x9c\x64\x6b\x2d\x59\x6b\xcb\xc3\
+\x65\xce\x0e\xd3\xb9\xdc\xc7\x23\xb7\x04\x75\x82\x10\x98\x7e\xce\
+\x7d\x3d\x00\x9b\x24\x00\x08\x4c\x54\xfe\x3e\x70\x19\xce\x5a\x44\
+\xc6\x60\xcb\xc2\x02\xe6\xe6\xe6\xfe\xc3\xcd\x37\xdf\xfc\x6b\x00\
+\xf0\x47\x77\xfe\x11\xdd\x7c\xcb\xcd\x7c\x5e\x00\x82\xc7\xeb\x6e\
+\xbc\x91\x3e\xf2\xd1\x8f\xb2\xb8\x0e\x06\x80\x5f\xfd\xd5\x57\xbd\
+\xec\xdc\xb9\xb5\x07\x77\xec\xd8\xf1\x6f\x7b\x1b\xbd\xab\xf6\x1f\
+\xd8\x4f\xc3\xe1\x70\xd7\x96\xf9\x2d\x58\xd8\xba\x80\xfe\xa0\x8f\
+\xb1\xee\x18\x5b\x6b\x29\x4d\xd3\xcc\x84\x13\xc3\xda\xcd\x22\xf8\
+\xea\x61\xbb\x3c\xf8\x93\xc2\x21\x0f\xd3\xfb\xfe\x5c\x30\x46\x83\
+\x21\x4c\x1c\x7b\xad\x2f\x82\xc7\x22\x58\xe4\x5c\x50\xd8\x39\x8c\
+\x92\x11\xef\x5a\x5c\x1c\x6d\xdf\xb6\xfd\x5b\x44\xe6\x9f\xbe\xfe\
+\xa6\xd7\xdf\x7b\xde\x02\x6c\xf2\x78\xf9\xcb\x5e\xf6\x2f\x01\x7c\
+\xf1\xd8\xf1\xe3\xdd\xbd\x7b\xf7\xdc\x31\x1a\x8d\xee\xb9\xf8\xe2\
+\x4b\x5e\x7d\xf6\xec\x59\x3c\xe7\x39\xcf\xc1\x68\x34\x42\xa7\xdb\
+\x41\xab\xd1\xc4\x28\x49\xc0\xec\xbc\xdf\x2e\xfd\x35\x44\xe0\xe6\
+\x72\xed\xcd\x0e\x0e\x0e\xe5\x6b\x36\x0b\xf6\x8a\xf7\xca\x0f\xdc\
+\xe6\x87\xeb\x85\x81\x1d\xfa\x1b\x7d\x34\xdb\xad\xec\x3d\x39\xb7\
+\x22\x2e\x17\xa0\x22\x8e\x40\x19\x3f\x10\x19\xb4\xdb\x6d\xec\x5a\
+\x5c\xfc\xc8\xaf\xbc\xe8\x85\x6f\xd8\x73\xe0\x12\xf7\x53\x2b\x00\
+\xaf\xbf\xe9\x26\xfa\xbf\xfe\xe4\x4f\x18\x00\x6e\xb8\xe1\x86\xf8\
+\xae\xbb\xee\x4a\x01\xa0\xdb\x6a\xcd\x5c\xf3\xdc\xe7\x4c\x7d\xe9\
+\xcb\x7f\x73\xf8\xe5\xaf\x78\xc5\x0b\x9c\x73\xaf\x1f\x0d\x07\x1f\
+\x9f\x9f\x5f\x98\xed\xf5\x7b\x77\xcd\xcc\x4c\xdf\xb7\xb8\x63\xf1\
+\xd9\xa7\x4f\x2f\xa1\xd1\x6a\xe1\xca\x2b\xaf\xc4\x99\xd3\x4b\xd8\
+\xb3\x67\x2f\x27\x69\x42\x69\x6e\x76\xad\xb3\xd9\x41\x82\xf3\xe0\
+\x8b\x33\x7f\x5c\x93\xab\x67\x87\x86\xfc\x40\x9c\xd7\x76\xff\x1c\
+\xe4\x87\xe5\x90\x65\x00\x90\xef\x53\x06\x88\x10\x56\x22\x49\x12\
+\x0c\x87\x03\xb4\xbb\x63\x60\xeb\xf2\xeb\x70\xb5\x58\x81\x13\x96\
+\xc1\xa5\x16\x3b\x77\xee\xc4\xd6\x6d\xdb\x9e\xf7\xc6\x37\xbe\xf1\
+\x6b\x3f\xd5\x16\xe0\xf5\x37\xdd\xf4\xc6\x33\x4b\x67\xbe\x32\x37\
+\x3f\xfb\xa7\x83\xfe\x60\xfb\x70\x34\xfc\x2b\x6b\xdd\xd4\xe4\xe4\
+\xc4\xcb\xfa\x83\x7e\xf4\xcc\x2b\xaf\x3c\x17\x99\x68\xfa\xe8\x91\
+\x23\xd8\xbd\x7b\x37\xf6\x5e\x78\x21\x7a\x1b\x1b\xd8\x32\xbf\x85\
+\x93\x34\xa5\x51\x32\x02\x31\x00\x30\x52\x9b\xe6\xe6\xb4\x3c\x30\
+\x27\xb4\xb2\x40\xe6\xd4\xc1\xc1\xe5\xa6\x18\xca\xa7\xfb\xe7\xf9\
+\xa0\xce\x95\x56\xc3\xe5\x42\xe3\xcd\xba\xf3\xd6\xa0\x38\x44\x00\
+\xe8\xf7\x36\xe0\x98\xd1\x6a\xb7\xc1\x96\xbd\x00\x54\x83\xca\xc0\
+\x1a\x39\x0b\x66\xe0\xb2\xcb\x2e\x43\xb3\xd9\x3a\xf3\x4f\xfe\xc9\
+\xaf\xcf\xff\x54\x0a\xc0\xeb\x6e\xbc\x31\x22\x63\xd2\x6e\xa7\x8b\
+\x6b\x5f\xf0\xf3\xe8\x6f\x6c\x60\xe9\xcc\x19\x10\x11\xf6\x5d\xb8\
+\x0f\xce\x59\x44\x91\x41\xab\xd5\x06\x11\x61\x34\x1a\x01\x22\x9a\
+\x2e\xb5\xaf\x00\x62\xca\x43\x67\x61\x62\xfd\xa1\x7a\xf3\x5c\x1c\
+\x58\x21\x00\xc2\xaf\x5b\xf8\xe8\xbe\x78\x6e\x61\xba\x21\x84\xca\
+\x6b\x6e\x6e\xc2\xb5\x7b\xc9\x04\x60\x75\x65\x05\xad\x56\x0b\x71\
+\xa3\xe1\x0f\xd9\x03\x45\xe1\x75\xaa\x80\xd2\xc1\x5a\x87\x34\x49\
+\x78\x6e\x6e\x0e\xcf\x78\xc6\x15\xdf\x62\x76\x77\xbe\xf6\xb5\xaf\
+\xbd\xe3\x1f\x92\x00\xfc\xc8\xc5\xa0\xc1\x70\x78\xc5\x96\xf9\x79\
+\x5c\xf7\xa2\x17\x63\x30\xe8\x63\x6a\x6a\x1a\xb3\x73\x73\x00\x01\
+\xce\x3a\xc4\x51\x0c\x10\x21\x49\xcb\xa2\x59\x11\xf9\x19\x02\x1c\
+\x13\x72\xf5\x07\xb3\x94\x47\xd6\x4f\x26\x00\xcc\x1e\x87\xa7\xfc\
+\xbf\x28\x7f\x82\xff\x0b\x17\xcf\x2d\xe2\x4a\x02\x81\xe0\x20\x3e\
+\x83\x58\xbc\x3d\xe5\x11\x28\xfb\xd7\x14\xaf\x64\x06\x92\x24\x41\
+\x77\x6c\xcc\x5f\x0a\x33\x83\xb2\x4a\x01\xfc\xe5\xe6\xd6\x2b\x0c\
+\xf5\x0d\x11\x1a\xcd\x06\xad\xad\xad\xe1\xdb\xdf\xbe\xff\xd9\x3b\
+\xb6\xef\xe0\x4f\xfe\xc7\x4f\xde\xdf\xeb\xf7\x1e\xb0\xd6\x8e\x6e\
+\xba\xe9\xa6\x9f\x78\x76\xf0\x23\x13\x42\x98\xf9\x17\xa7\xa6\xa7\
+\xe1\xd2\x04\x44\x99\x6f\x4d\xd3\x14\x36\xb5\xfe\x30\x88\x08\x44\
+\x26\x3b\x0a\x22\x98\xfc\x77\xd9\x1f\xcb\xf3\x25\x71\xfe\x44\xe4\
+\x9f\x2f\x7e\x99\x1f\x4f\x79\xce\xd9\x0f\x04\x22\xd6\xc2\x43\x79\
+\x64\x9e\x45\x82\x20\x66\x80\x48\x7d\x86\xff\xf8\xe2\x5a\xf2\xcf\
+\x65\x64\xcf\xb3\x2e\x85\x73\x0e\x51\x14\xe5\x4f\x0f\xae\xa7\xc6\
+\x84\x72\x21\xa0\x5c\x5e\x0a\x33\x63\x75\x75\x95\x97\x57\x96\xaf\
+\x3e\x71\xf2\xc4\x3d\x49\x92\x5c\x5f\x1c\xfe\xa7\x3e\xf5\x17\xf4\
+\xb4\x16\x00\x43\xe6\x97\xe6\xe6\xe6\xb2\xe8\xb9\xbc\xa3\xfe\xdd\
+\x29\xbf\x99\x94\x6b\x04\x89\x9b\xcd\xc5\xcf\xb9\x36\xb1\x97\x84\
+\x4d\x1c\x15\x97\x3f\xf8\x83\x23\x02\x53\x8d\x67\xcb\x64\xc0\x3f\
+\x2f\x13\xa8\xa2\xe8\x53\x63\x64\x18\x5e\x88\xb2\xb7\x35\x18\x0d\
+\x87\xd9\xe1\x57\xae\x87\xd4\x7b\x17\x17\x5d\x08\xb1\x30\x30\xfe\
+\xa5\x51\x14\xd1\xf1\xe3\xc7\x71\xef\xbd\xf7\x72\x9a\xda\xbb\xee\
+\xba\xeb\xdf\x9f\xfc\xde\x43\x0f\x37\xae\xbf\xfe\xe5\xfc\xb4\x16\
+\x80\x38\x8e\x7e\x76\x66\x66\x26\xf3\xaf\x24\xee\xa6\x3a\x3c\xf6\
+\xa0\x4a\xa6\x96\x94\x6b\xb0\x3c\x0d\x71\x28\x1c\x38\x02\xce\xad\
+\x81\x3c\x7c\x84\xee\x22\xff\x3b\x89\xcf\x17\xc2\x58\xbe\x2d\x57\
+\x84\xac\x70\x2b\x85\x89\x2f\xfc\xff\xa0\xd7\x47\xb3\xd9\xf4\xc2\
+\x84\x22\xbd\xe4\xc2\xe5\x50\xfe\x5c\x69\x8f\xf4\xbf\x39\x17\x70\
+\xca\x84\x00\xcd\x66\x93\xbe\xf1\xcd\x6f\xe0\x9b\xdf\xfc\xc6\xc2\
+\xf7\xbe\xfb\xdd\xff\xe3\x93\x9f\xfc\xe4\xab\x9e\xb6\x02\xf0\x9a\
+\x1b\x6e\x98\x6f\xb5\xdb\xf3\x9d\x6e\xd7\x47\xcf\xe1\x61\x16\x41\
+\x9e\xf3\xe6\x31\x4b\xbf\x50\x44\xe6\xa5\xc5\x46\xe1\xc2\x33\x6b\
+\x90\xfd\x8f\x98\x83\x23\x2c\x7c\xad\xab\x1a\x08\xe9\x4e\x50\x95\
+\x2b\xaf\xa7\x4c\x20\xae\x31\x32\x81\xdc\xf6\xfb\x7d\x34\x5b\xad\
+\xf2\x3a\x51\x5e\xa3\x0e\x50\xd8\x0b\x16\x83\x0b\x0e\x89\x17\xd8\
+\xe0\xad\x61\x88\xd0\xeb\xf5\xf0\xd0\x43\x0f\xbd\xf9\xf8\xf1\x63\
+\x1f\xfc\xd2\x97\xbe\xdc\x04\x80\x8f\x7d\xec\xe3\xf4\xb4\x12\x80\
+\x74\x94\xfc\xec\xe4\xc4\x24\x62\x63\xa0\xef\x92\x8f\x0f\xbc\x00\
+\xc0\xe7\xd7\x79\xc4\xef\x20\x75\xd2\xff\x48\x90\x92\x50\x1e\xb9\
+\x7c\x7b\xae\xf3\xbe\xac\x4f\x87\x6b\xbd\x08\x57\x42\x35\xaa\x73\
+\xe6\x04\xa4\xd6\x22\x49\x53\x34\x1a\x0d\x2f\x74\xec\x63\x97\xc0\
+\x4c\x15\xef\x5e\xb8\x85\x22\x33\x28\x7e\xc9\x55\x69\xb4\xd6\xe2\
+\xd1\x47\x0f\xf2\x93\x4f\x3e\x35\x73\xec\xd8\xd1\xe1\x27\x3e\xf1\
+\x1f\x7f\xff\x1f\xfd\xa3\x5f\xe3\xa7\x95\x00\x90\xa1\x5f\x9a\x9d\
+\x9d\xf5\xda\x2a\x9d\x2c\xb3\x8a\x82\x04\xb2\xc6\xa5\x25\x28\x84\
+\xc1\x5b\x8f\x42\x58\x6a\x74\x98\x64\x7c\xc7\x28\xbd\x07\xfb\x8a\
+\x5d\x78\xf8\x2c\x7c\x7e\x06\x04\x91\x8c\xf9\x03\x6d\x86\x77\x33\
+\x44\x84\xe1\x70\x80\xc8\x18\x18\x63\xbc\x9b\xa0\xc2\xe4\xe7\xb1\
+\x47\x55\x0e\xd9\x07\x90\xb4\xa9\x2e\x97\x22\xd8\x6a\xb5\xe8\xe4\
+\xc9\x93\xf8\xcc\xa7\x3f\xcd\xc7\x8e\x1e\x7d\xc3\x67\x3f\xf3\xd9\
+\xbb\xef\xfe\x4f\x9f\x3d\xf0\xb4\x11\x00\x63\xa2\x5f\x9c\x9d\x9b\
+\x45\x6a\x1d\x00\xca\xb4\xdb\x6b\x6c\x6e\xfa\x0b\xd4\x2d\x2c\xbe\
+\xf8\x52\x2c\x6a\xcc\x64\xa8\x61\xe2\x90\xa5\x40\x10\x2b\xaf\xc3\
+\xf2\xff\x73\x81\x22\xef\x5f\x0a\xcd\x74\xc1\x5b\x07\x48\x61\x7e\
+\xd0\x1b\xeb\x1b\x68\xb6\x5a\xe2\x24\xa9\x0c\x2d\x58\xb8\x26\x0e\
+\x05\x28\x77\x36\x3e\x0d\x0d\xc3\x9b\x22\x63\xc9\xde\x2f\x8a\x22\
+\xb4\xda\x6d\x7a\xe8\xe1\xef\x4d\x7d\xe5\x2b\x7f\xfb\x92\x95\x95\
+\xb5\x1b\x3f\xf3\x99\xcf\xec\x7f\x5a\x08\x40\xb3\xd9\xbc\x62\x62\
+\x62\x02\xce\xba\x5c\x73\x9d\x30\xf9\x19\xb4\x0a\xce\x51\x3a\x32\
+\x65\xf1\x24\x6e\x82\x1b\x6d\x70\x64\xb2\xe7\x44\x31\xb8\xd5\x01\
+\x47\x0d\x9f\xd9\x17\x01\x99\x03\xf9\xdc\x9d\x64\x10\xe7\xf3\x76\
+\xa1\x86\xec\x43\x4b\x14\x96\x9a\x89\x02\xcb\x50\x06\x8a\x5c\xe3\
+\x2a\x8a\xc7\xfa\xfa\x06\x3a\xdd\xb1\xb2\xd0\x53\x08\x07\x15\x2e\
+\x8b\x4a\x0b\x14\x98\x2a\x29\x48\xa1\x11\x23\xf1\x2c\x79\xed\xfd\
+\xfe\x00\x4f\x3d\xf5\x14\x4e\x2d\x9d\xfa\x17\xcb\xcb\xcb\x8f\x32\
+\xf3\x7f\x93\x9e\x8d\x1f\x1a\x08\x7a\xcd\x6b\x5e\x73\x79\xb7\xdb\
+\x89\x9a\xcd\x26\xd2\xd4\xfa\xf4\x08\xcd\x36\xe0\x2c\x60\x2d\x28\
+\x8e\xc1\x71\x33\xbb\xf9\x87\x1f\x02\xb6\xec\x04\x26\x67\x61\xff\
+\xfc\x43\xc0\xd6\x45\xd0\xe2\x3e\xf0\xf6\xdd\xc0\x27\x3e\x00\x6e\
+\x8f\x81\x77\x5f\x04\xde\xb6\x1b\x3c\x31\x05\x8e\x62\x30\x19\x98\
+\xe3\x4f\x80\xbb\xe3\xe0\x76\x37\xbb\xe9\x69\x0a\xa4\x23\xaf\xb1\
+\x65\xac\x01\xa5\xf9\x3e\x65\x64\xae\x31\xc2\x12\x2f\x40\x69\xda\
+\xf3\x87\x63\x87\x7e\xbf\x87\x1d\x9d\x1d\x70\x36\x07\x7e\x8a\x63\
+\x63\x2e\x8f\x99\xf2\xe0\x25\x40\x03\x51\x2a\x38\x98\x49\x89\x5a\
+\xe6\x8e\xa8\x8c\x47\x88\x41\x9c\xe3\x23\x51\x84\xaf\x7e\xed\xab\
+\x98\x18\x9f\xc4\xec\xec\xec\xfa\x5f\xdd\x7d\xf7\xdd\x2f\xf9\x95\
+\x5f\xf9\xd5\x7f\x90\x02\xc0\xcc\xbf\x30\x3d\x35\x05\x44\x31\x30\
+\x18\x80\xbb\xe3\xa0\x93\x4f\xc2\x3c\x78\x0f\xdc\xfe\x67\x64\xf2\
+\xff\xe7\x77\x82\x76\x5f\x0c\xcc\x6d\x85\xfd\xeb\x4f\x82\xc6\x26\
+\x81\xa9\x79\xf0\xd2\x11\xd8\x24\x85\x89\x22\xd0\xd8\x04\x90\x8e\
+\x60\x7b\x3d\x98\xaf\xfe\x15\xa8\xd9\x02\x4d\xce\x00\xdb\x76\x81\
+\x77\x5f\x8a\xe8\xeb\x77\x03\xc3\x01\x30\xbb\x00\xbb\x6d\x37\xec\
+\x8e\xbd\x48\x17\x76\xc1\x8d\x4f\x83\x1b\x8d\xcc\xa2\xa4\x09\x60\
+\xd3\x4a\x50\x0e\x30\x58\x24\xe5\xe4\x83\x4d\xf6\x01\x5b\x9d\x15\
+\x48\x46\x09\x1c\x33\x1a\xcd\x06\x6c\xea\x32\xc1\x66\xae\x38\x29\
+\x6f\x6a\xb8\x26\xec\xe4\x02\xb9\x2c\xc8\x23\x94\x59\x3b\x95\xc9\
+\x88\x4c\x29\x07\xa1\xda\xad\x36\xfa\x83\x3e\x3e\xf6\xb1\x8f\x75\
+\x2e\xbe\xf8\xe2\x17\xfe\xcd\x97\xbf\xfc\x4f\xfb\x83\xc1\xbd\xa3\
+\xd1\xe8\x9b\xd6\xda\xf4\xe5\x2f\xff\xf1\xe2\x06\x3f\x74\xda\xf1\
+\xaa\xd7\xbe\xf6\x93\x57\x3d\xf7\x79\xd7\xef\x89\x52\x98\xaf\xff\
+\x15\xcc\xf7\x1f\x04\x77\x27\xc1\xa7\x8e\x66\x00\x4f\x2b\x23\x5d\
+\xa6\xfd\x01\xc0\x0e\x8d\xc9\x69\xb8\x24\x41\xd2\xeb\xa1\x3d\x3b\
+\x8d\xb1\xf9\x79\xf4\x96\x4e\x63\xb8\xbe\x8e\xb8\xdd\xc6\xc2\x25\
+\x17\xe1\xdc\x89\x53\xe8\xaf\xac\xc2\xf6\xfb\x70\x36\x81\x61\x86\
+\x19\x9b\x00\x45\x06\x6e\x34\x04\xa5\x16\x26\x02\x4c\xdc\x02\x8f\
+\x8d\xc3\xce\x6d\x47\xb2\xed\x02\x24\x0b\x17\x20\x99\x59\x40\xda\
+\xec\xc0\xc1\x00\x2e\x05\xd2\x04\x6c\xad\x2f\x28\x71\x4d\xd5\xaf\
+\xfa\x37\x06\x11\x61\x69\xe9\x34\x1e\x5e\xf8\x2e\x9e\x6f\xaf\x45\
+\x9a\xa4\x25\xfe\xaf\x62\x19\x07\xf6\xe5\x66\x51\x49\x14\xa5\x69\
+\x76\x28\xeb\x16\x35\x9f\x55\x32\x92\x20\xea\x13\xd9\xfb\x58\xe7\
+\x30\x3d\x35\x89\x03\x07\x0e\x60\x66\x66\x16\x53\x53\x53\xbf\x7b\
+\xfd\xf5\xd7\xff\x0e\x00\x7c\xee\x73\x9f\xa3\x5f\xfe\xe5\x5f\xe6\
+\x9f\xa8\x00\x7c\xf8\x45\x57\x1c\x8f\xf7\x5e\xb6\xad\xfd\xe8\xb7\
+\xc0\xc3\x01\x1c\x80\x74\x30\xc4\xec\xee\xdd\x48\xfa\x03\x6c\x9c\
+\x39\x8d\x6d\x57\x5c\x8e\xb8\xd5\xc4\xb9\x63\x27\x30\xb9\x73\x07\
+\x26\x77\x6e\x47\xff\xec\x32\xc8\x18\x4c\x6c\xdb\x9a\x09\x44\x7f\
+\x80\x74\x38\xc0\xd8\x96\x79\x38\xeb\xe0\x92\x14\xc9\xc6\x3a\x36\
+\xce\x2e\x63\xfd\xd4\x12\x5c\xea\xb0\xeb\x39\xcf\x46\xef\xcc\x59\
+\xf4\x97\x97\xd1\x3b\x7b\x16\x83\xb5\x75\xa4\x83\x21\x60\x53\x10\
+\x3b\x44\x11\x01\xad\x0e\xec\xc4\x2c\x92\xf9\x1d\x18\x6c\x59\xc4\
+\x68\x76\x07\x46\xdd\x49\xd8\x28\xce\x6e\xb4\x4d\x41\x2e\x85\xb3\
+\xb6\x0c\x2a\xd9\x79\x2a\x58\x71\xe3\xa3\x28\xc2\xa3\x8f\x3e\x8a\
+\xe5\x2b\xce\xe2\x59\xeb\xcf\x46\x9a\xa6\xfe\x90\x21\x8b\x41\x79\
+\x84\xcb\x41\x86\x53\xa9\x10\x16\xc5\x21\xc7\xf5\xb4\x34\x51\xc6\
+\x96\x65\x6e\xc7\x9c\x43\xea\x09\x86\xc3\x11\xbf\xec\x65\x2f\xa3\
+\xdd\xbb\x77\x1f\x6d\xb7\xdb\xd7\xbe\xe0\x05\x2f\x38\xfc\x13\xb5\
+\x00\x7f\xf9\xc2\x8b\xa6\x47\x69\xba\xec\x46\x43\xb8\x38\x46\xdc\
+\x68\x62\xd7\x35\xcf\xc2\xf0\xdc\x39\x8c\x6f\xd9\x02\x8a\x22\xb0\
+\xb3\x00\x08\xa6\x11\xc1\x98\x08\x2e\x4d\xb3\x38\x39\x32\xde\x57\
+\x17\x78\xbf\x0a\xa5\xf2\x34\xcb\x18\x03\x98\xac\x15\x8b\xad\xcd\
+\x11\xd7\x2c\x8c\x72\x36\x45\x32\x18\x60\xb8\x7a\x0e\xbd\xe5\x15\
+\x0c\xd6\xd6\x90\xf4\xfa\xe0\x34\x01\x39\x8b\x88\x08\x88\x63\x70\
+\x7b\x0c\xa3\xa9\x2d\x18\xcc\x6d\x47\x6f\x66\x3b\xfa\x13\x73\x48\
+\x9a\x6d\x38\x10\x60\x6d\x66\x29\xac\x15\x56\xc1\xc1\x50\x84\x2f\
+\x8c\x3e\x8f\xed\x3b\x76\xe0\xe2\x13\x17\xc3\xba\x92\x02\xe6\x9c\
+\xb6\x02\x10\xa4\x92\x82\x3d\x5c\x4f\x38\xd9\xbc\xdf\x20\x13\x28\
+\xa7\xb3\xa3\x1a\xeb\xc0\x00\xa6\xa6\x26\xf1\xd2\x97\xbe\xf4\x83\
+\x9d\x4e\xe7\x3f\x4d\x4d\x4d\xfd\xe5\x35\xd7\x5c\xc3\x3f\x91\x18\
+\x60\xc4\xfc\x1c\x07\x42\x34\x3e\x81\xc9\xb9\x59\x6c\xb9\xe4\x00\
+\x38\x49\x31\x36\x3f\x97\x69\x18\xbb\xbc\x00\x44\x70\xa9\x05\x93\
+\xcb\x31\xff\xd2\x5f\xfa\x9f\x73\xff\x4a\x41\xf4\xee\xac\x2d\xfd\
+\x3a\x41\xdd\x20\x30\x23\x6e\x34\xd1\xd8\x32\x8f\xf1\x2d\x5b\x32\
+\x62\xc7\x28\xc1\xa8\xd7\xc7\x60\xed\x1c\x06\x6b\xe7\x30\xea\x6d\
+\x80\x93\x11\x9a\xa7\x9e\x42\xfb\xd4\x13\x98\x35\x06\x68\x34\x91\
+\x76\x27\xd0\x9b\x5a\xc0\xc6\xf4\x36\x6c\x4c\xcc\x63\xd0\x19\x87\
+\x35\x59\xa9\x17\xd6\xc2\xb9\x14\xa3\xe1\x10\xed\x56\x0b\xec\xb2\
+\x9c\xc4\x79\x90\x87\x95\xbb\x67\x1f\x1c\x16\xf0\x70\x18\x0c\x56\
+\x71\xed\x2a\x0c\xc5\x25\x60\x01\x5d\x0c\x63\x89\x8c\x32\x63\x65\
+\x79\x19\x0f\x3c\xf0\xc0\xad\x0b\x0b\x0b\xb7\x6e\xdb\xb6\x6d\x1c\
+\xc0\xc6\x4f\xc4\x02\x7c\xe2\x17\xf6\xbd\xdb\x5a\xfb\x8e\x99\x3d\
+\x17\x60\xfe\xc2\x3d\x48\x93\xc4\x57\xfc\xe0\x0b\x3c\xf9\xbf\x0d\
+\x95\x9a\x6e\x00\x82\xd1\x55\xb9\xe2\xbf\x59\xc6\x52\xec\xcd\x2d\
+\x73\x10\x65\xbb\x02\xd9\x29\x48\x19\x45\xba\x99\x17\x7f\x8a\x34\
+\xcd\x39\xd8\xe1\x08\xa3\x5e\x0f\xc3\xf5\x0d\x24\xbd\x1e\xec\x68\
+\x04\x4e\x2d\x0c\xbb\xac\x22\x19\x47\xb0\x8d\x36\x06\x63\x33\x58\
+\x9f\x98\xc7\xda\xc4\x3c\x36\xba\xd3\x78\x78\xf7\x53\xa0\x28\xc6\
+\xe2\xa1\xdd\x20\x97\x80\x02\x06\x52\x68\xee\xeb\x19\x4a\x05\xef\
+\x20\x0b\x02\x4b\xee\x60\x95\x77\x10\x12\x53\x21\xc8\x25\x3e\xc6\
+\x70\x0e\xce\x39\x0c\x06\x03\xcc\xcf\xcf\xe3\xfa\xeb\xaf\x47\x1c\
+\xc7\xa7\x9b\xcd\xe6\xbf\xbb\xee\xba\xeb\xde\xfe\xdf\x3a\x0b\xf8\
+\xef\xd8\x31\xda\xe3\xe3\x70\xa9\x55\x19\xae\x3a\x7c\x51\xf9\x2b\
+\x2a\x83\xf0\x8a\x4f\x65\xea\x48\x21\x5c\x4b\x00\x9b\xb2\x40\x20\
+\xeb\x3b\x3e\xe5\xcf\xab\x80\xbe\x56\x80\x92\x41\x94\xd3\xb6\x29\
+\x8e\xd0\x9a\x9c\x40\x6b\x72\x22\xbb\x99\xd6\x22\x1d\x0c\x91\xf4\
+\x07\x48\x06\x03\xd8\xd1\x08\x64\x2d\xba\x6b\x4b\x98\x58\x3b\x85\
+\x1d\x04\x70\xdc\x00\x45\x09\x7a\xad\x71\x6c\x3f\x63\xb1\xda\x99\
+\xc1\x46\xb3\x8b\xd4\xc4\x70\x8e\x41\xb0\x20\xb6\x1e\x03\x00\x73\
+\x86\x35\xc8\xd4\xb3\x44\x8c\x40\x5c\xd8\x10\x01\x55\x70\x95\x47\
+\xc0\x14\x20\x9b\x22\x68\x2d\xd2\x50\x02\xd0\x6e\xb7\xb1\xb2\xbc\
+\x8c\x3f\xfe\xe3\x0f\xa3\xdd\xe9\xcc\x5f\x75\xe5\x55\xaf\xfe\xc6\
+\x37\xbe\x71\xef\xc1\x83\x07\xef\xb9\xf1\xc6\x1b\x0f\xbf\xf5\xad\
+\x6f\xa5\xf7\xbe\xf7\xbd\xff\xaf\x5d\x43\xf4\xc3\x9c\xfe\xab\xf7\
+\xce\xbe\x0f\x40\x34\x77\xe1\x9e\x4c\xc3\x61\xb2\x03\x2e\xb4\xb9\
+\xd0\x7a\xf1\x0f\x6a\x7e\x86\x31\xde\x0d\xf8\x32\x31\x0b\x34\xcd\
+\x43\xb0\x39\x0e\xcf\x81\xe9\x44\xa9\xf5\x1e\x89\xf6\xce\x24\x7f\
+\x07\x97\x03\x51\xb9\x2f\xa7\x38\x42\xa3\xdd\x42\x73\xac\x8b\xd6\
+\xc4\x04\x1a\xe3\x63\x88\xdb\x6d\xa0\xd1\x80\x33\x11\x18\xc0\x99\
+\xd9\x0d\x74\x46\x7d\x5c\x7e\x68\x15\x8b\x2b\x4f\x61\xd7\xea\x11\
+\x2c\x6c\x2c\x61\x22\xd9\x80\x61\x87\x94\x22\x24\x51\x8c\x14\x26\
+\x8b\x27\x0a\xbe\x41\x4d\x15\x82\x2b\xc5\x09\x0a\xa0\x23\x2e\xdd\
+\x0b\xd7\x10\x61\x82\xf7\x28\x62\x27\x80\x30\x1a\x8e\xe0\x9c\x9b\
+\x1e\x8d\x46\xaf\x3a\x7d\xfa\xf4\xab\xe7\xe7\xe7\xbf\xfa\xa1\x0f\
+\x7d\xe8\xc8\xdf\xab\x0b\xf8\xd4\x0b\x0f\x5c\x94\x5a\xf7\x88\x69\
+\x36\xb1\xfb\x9a\x67\x65\xda\x66\x0c\x4c\x61\xe2\x89\x40\xc6\x64\
+\x01\x5f\xa1\xe9\xc6\x08\x01\x30\x5e\x48\x00\xe3\xf9\x00\x65\x1d\
+\x40\xf2\xff\x4a\x92\x26\xb8\x6c\xdc\x90\x3e\xb6\xe4\xfa\xe5\x80\
+\x4d\x10\xa0\x21\xe7\x0a\x7a\xd6\xae\x63\x8f\x5a\x16\x68\x25\x17\
+\x80\x91\x73\xf8\xf6\xfe\xd3\xb8\xe2\xa1\x29\x3c\xb0\xef\x34\x2e\
+\xff\xee\x64\xc6\xed\x03\x60\x88\x11\xe7\xb1\x8b\x33\x31\x86\x71\
+\x0b\xab\x8d\x31\x9c\x6e\x4c\xe0\x4c\x3c\x8e\x55\xd3\xc2\x10\x26\
+\xbf\x0e\x07\x62\x9b\x5d\x9f\xfb\x41\x34\x75\x1d\xfc\x49\xd7\x22\
+\x03\xcc\x82\x62\x56\x32\x98\xcb\x8c\x21\x23\xad\x0e\x71\xf5\xd5\
+\x57\xe3\xea\xab\xaf\xee\x4d\x4e\x4e\x3e\x32\x39\x39\xf9\x8b\xcf\
+\x7d\xee\x73\xd7\xfe\x5e\x5c\x80\x63\x7a\x01\x3b\x46\x7b\x62\xcc\
+\xdb\x63\xaf\xa1\x12\x33\xa7\xa2\x30\x92\x6b\x08\x69\x26\x0f\x73\
+\x76\x53\x51\x10\x35\x3c\xc9\x4b\xe2\xfb\x94\x93\x2b\x54\x35\x3f\
+\xa8\x0a\xb2\x06\x74\x2a\x4c\x32\xca\x6b\x06\xa1\x89\x96\x56\x24\
+\x17\x12\x97\xbb\x13\x63\x60\x1a\x31\xe2\x76\xab\x14\x1a\xe7\x90\
+\xb2\xf3\x82\xdd\x72\x09\xb6\x0d\x57\xb0\x73\xb4\x02\x22\x20\x8d\
+\x1a\x38\x67\xda\x38\x1d\x77\x71\xca\x74\x71\x1a\x6d\x9c\xe3\x08\
+\x29\x13\xc0\x0e\xa6\x00\xb9\xb9\xac\x95\x94\x2c\x98\xfa\x02\xb3\
+\xbf\x9d\x0e\x20\x2e\x8b\x58\xc4\x0c\x97\x5f\x7e\x1c\xc7\x88\xa2\
+\x08\x0f\x3c\xf0\x1d\x1c\x3c\x78\xb0\xbb\xb0\x65\xe1\xaa\x57\xfe\
+\xea\x2b\xdf\xf2\x85\x2f\x7c\xe1\x8b\xc3\xe1\xf0\x81\x97\xbe\xf4\
+\xa5\xc3\x1f\xab\x00\x30\xbb\xeb\x98\x19\xed\xa9\xc9\x32\x9a\xaf\
+\xa5\xee\xe4\x6c\x9d\x82\xbf\x57\x94\x7a\x49\x72\xfa\xe0\x99\x7d\
+\x92\xd6\x01\x92\x85\x22\xae\x9a\x7d\x19\x34\x33\xab\x7f\xcb\x82\
+\x2f\x15\xf7\x38\x2b\x49\x94\x34\x30\x0f\x23\x17\x15\xc8\x4c\x10\
+\xd3\x33\x03\x8c\x0e\xaf\x81\xe2\x59\x41\xf4\xf0\x45\x7c\x10\x9b\
+\x5c\xab\x1d\x52\xce\xac\x9b\x35\x06\x14\x45\x20\x30\xa6\x30\xc0\
+\x5c\x3a\xc4\xa5\xb4\x0c\x4b\x40\x9f\x9a\x58\xa6\x16\x4e\x50\x1b\
+\x27\xb8\x85\xb3\xdc\xc0\x00\x80\x65\x82\x01\x60\xe0\x80\x2c\x81\
+\x14\x09\x41\x19\xf0\x96\xd7\x96\x1b\x46\xaa\x89\x23\x0a\x5f\x1e\
+\x1b\x0c\x07\x43\x1c\x3d\x7a\x04\xf7\xdf\x7f\xff\xef\xcd\xcf\xcf\
+\xff\xde\xec\xec\xec\x69\x00\x5b\x7e\xbc\x02\x40\xf4\x7c\x10\xd0\
+\x9a\x9c\x80\x73\x0e\x52\x7f\xcb\x34\x9e\x44\xe9\x14\xb9\x09\x95\
+\x6c\x9d\xec\x6f\x04\xca\xcc\x3b\x05\x65\x94\xf0\x04\x3d\x01\xa4\
+\xb4\x13\xf0\x65\xdd\x22\x00\x08\x71\xff\x52\x14\x88\x18\x30\x00\
+\x5b\x54\xb8\x06\x65\x90\x4a\xb0\x6b\x43\x98\x7d\x0d\xd0\x1a\xe9\
+\x4a\x9f\x64\x89\xba\x52\x47\xd9\x66\xfc\x47\x97\x9f\x88\x31\x06\
+\x51\x14\xc3\x34\x1a\x30\xcd\x06\xda\x86\xb1\x68\x86\xd8\x43\x99\
+\x12\x26\x64\xb0\xca\x0d\x9c\xe4\x06\x8e\xa5\x31\x4e\xd8\x18\xab\
+\x96\x3c\xd9\x55\x5e\x9b\x3e\x68\x16\xc1\xa1\xf8\x3d\x0b\xbe\x41\
+\x6e\x82\x13\x6b\xf1\xb9\xcf\x7d\x0e\xd6\x5a\xbe\xec\xb2\xcb\xe6\
+\xbf\xf4\xa5\x2f\x7d\x7b\x30\x18\xdc\xd3\xef\xf7\xff\xf4\x15\xaf\
+\x78\xc5\x97\x7f\x24\x01\xf8\xd4\x2f\x5d\x34\x91\x3a\x5e\x8c\x1a\
+\x31\x1a\xed\x76\x96\x27\x93\x57\x2b\x15\xc7\xa3\x64\xc9\x09\x8d\
+\xa5\xd2\x00\x4b\xbf\x2f\x78\x03\x2a\x40\x09\xcc\x3f\x0a\x3c\x9d\
+\x35\x2d\x84\x03\xbe\x5e\x51\x15\x54\x37\x54\xb2\x81\x49\xbc\xbf\
+\xf8\xfc\xef\xec\x3b\x83\xab\x8e\xec\x04\x8f\x33\x82\x7b\xaf\x84\
+\x81\x1d\x09\xf6\x47\x11\x6c\x02\x2e\xb5\xb0\xa3\x04\xdc\xdb\x28\
+\xf8\x92\x30\xcd\x06\xa2\x56\x0b\x8d\x76\x0b\x71\xa3\x89\x99\xd8\
+\x61\xc1\x8c\xf0\xcc\xf6\x10\x8e\x09\xcb\x2e\xc2\x07\xcf\x8c\xc3\
+\xe4\x11\xb9\xa9\x7c\x23\x16\xd6\x51\x58\x86\x92\x85\x01\x87\xd2\
+\xa2\x19\x22\xb4\xdb\x6d\x00\xa0\x27\x9f\x7c\x12\x77\xde\x79\xe7\
+\x33\xaf\xbd\xf6\xda\x67\x2e\x2e\x2e\x9e\x03\xf0\xa3\x09\x00\x03\
+\xd7\x80\x81\xe6\xf8\x18\xa2\x66\x33\xfb\xb2\xa2\xf4\x95\x29\x39\
+\xe7\x9c\xbf\x5c\xc3\xb9\xb8\xf7\xc5\x5d\x34\xfe\xee\x8b\x7b\xe8\
+\x39\x83\x2c\x4c\xba\xa4\x99\xf9\xdf\x13\x34\xbf\x30\x50\x52\x0a\
+\x58\x82\x5c\x57\xf6\xad\x63\x0d\xa5\x0c\x97\x3a\x98\xb1\xa6\xf0\
+\x17\x21\x3f\x21\x28\x1f\x15\xa0\x16\x8b\x63\x32\x04\x38\x93\xb3\
+\x7e\x1c\xd2\x8d\x1e\xf8\xdc\x86\xb7\x52\x71\xb3\x81\xb8\xdd\x41\
+\xb3\xdb\x41\x73\xac\x8b\x6e\x44\x78\xe5\x74\x1f\xc7\x13\x83\xa3\
+\x23\xc2\xd2\x88\xd0\xb3\x19\xdc\x6c\x00\xc4\x3e\x06\x60\xaf\x44\
+\x35\xd4\x2b\x50\x0e\x51\x87\x8c\xac\xa3\x47\x8f\x82\x88\x30\x36\
+\x36\xf6\x69\xce\xca\x90\x11\x11\xa5\x3f\x94\x00\x38\xe0\xd9\x64\
+\x08\xc9\x60\xc0\xbd\xd3\x67\xa8\x35\x35\xe9\x19\x30\xfe\x90\xf2\
+\x1f\x4c\xe1\xe3\x99\xb5\x7f\x2f\x6e\x95\x83\xb2\x1a\x10\x84\x0f\
+\x56\x9a\x0b\x1f\xc0\x95\xbe\x31\x50\x4d\xe1\xd3\x4b\x52\x27\x6b\
+\x7a\xae\xa2\x8b\xe8\x3f\x13\x01\x76\x3d\x01\xba\x00\x19\x02\xa7\
+\x14\x10\x5a\xa1\x5c\x4f\x51\x0a\x2e\x0e\x44\x11\xcd\x02\xa2\x63\
+\x96\x05\x95\xdf\x23\xe9\x0f\x30\x5c\xef\xe1\x9c\x4d\x31\xb5\x63\
+\x3b\xa6\x76\x6c\xc7\xc5\x4d\xe0\x52\xca\xd2\xd4\x11\x13\xce\x5a\
+\x83\x93\x43\xc2\xb7\xd7\x18\x47\xfa\x08\x3a\x20\x9c\x12\x82\x22\
+\x2d\xe4\x4d\xb8\x70\xed\x76\x1b\xf3\xf3\xf3\x68\x34\x1a\xf7\x51\
+\xc6\x44\x49\x7f\x28\x42\xc8\x67\x5f\x7c\x09\xbd\xea\xaf\x0f\xde\
+\x4e\xc0\xdf\xa4\xfd\x01\xd9\x24\xcd\xb9\xfe\x0c\x72\x2c\xb9\x57\
+\xb9\x92\x0a\x23\xc5\x25\x11\x83\x21\x9c\x98\xe7\x07\x66\x51\x1a\
+\xe5\x69\x8f\x7f\xbf\x3a\x8a\xb0\x84\x4d\x59\xd4\xff\x5d\x90\x0a\
+\x14\x97\x23\xe3\x6a\x49\x0e\x92\x87\x66\x08\xe9\xca\x00\xa6\x13\
+\x6b\xb6\x30\x0b\xfe\x89\x10\x4e\x45\x32\x29\xe3\x5d\x41\x3b\x65\
+\x6c\x4a\x4f\xcd\xeb\x1c\x51\xa3\x81\x73\x27\x4e\xe1\xf8\xdf\x7d\
+\x0f\x27\x1e\x3b\x84\x33\x27\x96\xb0\xde\x1b\x00\x04\x2c\x74\x22\
+\x5c\x3d\x6d\xf0\x33\x93\x84\xa6\x21\xa4\x0e\xe8\xa5\x45\x16\xc2\
+\xf5\x58\x01\x0b\x56\x6c\xa1\xb0\xce\x61\x66\x66\x06\xdd\x6e\xf7\
+\xa9\x6b\xaf\xbd\x76\xfd\x47\x0a\x02\xff\xfb\xcf\x3f\x5c\x18\xbc\
+\x2b\x29\x8e\xd1\x9c\x18\xcf\x8b\x34\x24\x58\xb0\xc2\x56\xc0\x94\
+\xc0\x0d\xe5\x95\x34\x47\xf9\xf3\xb3\x03\x23\xaa\x92\x3c\xbd\x9f\
+\x53\x81\x90\x0b\x12\x25\xf2\x79\x7c\x79\x08\x65\x97\x6e\x85\xb9\
+\xcb\xa5\x5b\x52\xa0\xbc\xb7\x14\x84\xfb\xf7\x2c\xe1\xaa\x27\xb7\
+\x02\x0b\x10\x3d\x87\xec\xc9\x1b\x1a\x3c\x29\xaf\x47\x81\x80\x92\
+\xb1\xe4\x24\x09\x2c\x63\x10\xc9\x94\xb5\x30\x3d\x36\x49\x90\x2c\
+\x0f\xb0\xb1\x74\x06\x8c\x6c\x1a\x59\xdc\x6a\x62\xc7\x33\x7f\x06\
+\xd7\xcc\x36\xf0\xac\x19\x87\x73\x29\xe1\xec\x08\xf8\xf8\x93\x7d\
+\x9c\x4b\x18\x06\xac\x09\x31\x0e\xb5\xcc\x06\x6b\x2d\xb6\x6f\xdf\
+\x8e\x46\xa3\xf1\x95\x1f\x0b\x25\xec\xd3\x2f\xbe\x64\x91\x08\x13\
+\x71\xb3\x81\xb8\xd9\x50\x66\x4f\x51\xa7\x1c\x94\x69\xe6\xbc\x1e\
+\x0e\x05\xe0\x70\xd9\xdb\xe7\x41\x11\x17\xfc\xdd\x79\xb0\xa7\xc4\
+\xff\x4b\x33\xeb\x0f\x88\x64\xde\x4c\x9b\x04\x95\xd2\x65\x94\x1a\
+\xcb\x00\xd8\x32\x6c\x3f\x45\x34\xd9\xcc\x3e\xb3\xc2\x34\x96\xd7\
+\x29\x5a\xd8\x48\xc4\x2a\x4e\xa6\xa2\x24\x9b\x9e\xf2\xb3\x16\x2e\
+\x28\xec\x4e\x22\x03\x8a\x23\x98\x28\x06\x18\x18\xf5\x06\x58\x39\
+\x72\x0c\xcb\x4b\xcb\x18\x26\x0e\xe3\xad\x08\x7b\xc7\x23\x3c\x73\
+\x26\xc6\xb6\x8e\x11\x91\x48\x01\x23\x73\x4d\x63\x5a\x66\x01\x76\
+\xee\xdc\x09\x22\xfa\xeb\x1f\x4b\x1a\x98\x32\x3d\x9f\xd9\xa1\x35\
+\x36\x96\xc1\xbf\x6c\xf3\x2f\x54\x7e\x55\x2a\x0e\x24\xc7\xc8\x4b\
+\x1c\x3b\xd3\x7c\xe2\x52\x0f\xca\xe0\x90\x34\xcc\xc3\x22\x27\x66\
+\x91\xb7\x0b\x16\x31\x07\x07\x5a\x16\x93\x58\xab\xa4\xcc\x02\xa4\
+\x86\x32\x3c\x5b\x88\x47\x16\x80\x83\x69\xc5\x79\x6a\xcb\xfa\xb9\
+\xb2\x16\x11\xb0\x79\xfc\x67\x17\xe6\xce\x15\xd6\x2e\xe0\x09\xb2\
+\x14\x10\x78\x8e\xa3\x8a\x6d\x3d\x97\x10\x38\x73\xe8\x70\x3e\xea\
+\x86\xd0\x9d\x99\xc2\xde\xe7\xff\x1c\x5e\xb6\x27\x02\x5b\xc6\xf2\
+\x88\xf1\x3b\xf7\x9d\x81\x81\x43\x44\x40\xec\xf9\x89\xa8\x54\x14\
+\x17\x16\x16\xc0\xcc\x5f\xfe\x31\xe1\x00\x7c\x1d\xd8\xa1\x35\x31\
+\x5e\x6a\x6b\x7e\xc8\xc5\x97\x67\xd2\xa6\xd2\x3b\x48\xc7\x28\x68\
+\x8e\x0a\x02\xf2\xa9\xbe\x08\x6a\x64\xc7\x8d\x3c\x4b\x66\x5d\x35\
+\x64\x0d\x1f\x93\x64\xfd\x38\x99\x5d\xb0\xd0\xd6\xfc\x3a\x8b\xe8\
+\xd9\x00\xa3\xb5\x21\x68\x3e\xce\xdc\x98\x0b\x30\x79\xfd\x81\x92\
+\x58\xa6\xd5\x98\x59\xa1\x8f\x4c\x4e\xfc\x4e\xe8\xab\xa4\xb4\xb3\
+\x06\x7c\xe4\x21\x46\x51\x04\x8e\x0c\xe0\x18\x83\xb5\x0d\x1c\xbd\
+\xff\x3b\x68\x4f\x4d\x61\x6c\x61\x1e\xed\x76\x0b\x6f\x7d\xc6\x0c\
+\x9e\xda\x48\xf0\xe0\xd9\x01\x9e\x58\x1d\xd5\xe5\x06\xe8\x76\xbb\
+\x98\x9c\x9c\x1c\x5d\x77\xdd\x75\x07\x37\x15\x80\x03\xbb\xfe\xf5\
+\x6d\x4a\x6b\x0c\x95\xb8\xae\xaf\xd8\x65\x27\xf7\xd9\xd3\xdf\xb9\
+\x3e\xc6\x08\x63\xf1\x3c\xcc\xe9\x86\x87\x4d\x75\x55\x4f\xe2\xfb\
+\xc5\xfb\x98\xb2\x52\x88\xf0\x6f\xa4\x92\xb8\x32\x5b\x10\xbc\x4e\
+\x40\x75\xf2\x14\xed\x62\x4c\x3e\xc7\x04\x33\x21\xf0\xf2\xaa\x6e\
+\xef\x83\x50\x2e\xbb\x80\x39\x2f\x5e\x0d\xcf\xf4\x71\x62\xe7\x53\
+\x38\xf1\xd4\x45\x9e\x7c\x71\xec\xdc\x61\x1c\x5a\xd9\x53\x7e\x86\
+\xcc\x4e\x0a\x1b\xc1\xac\xe0\x05\xe6\xba\xda\x7f\x51\xdd\x2c\x6e\
+\x6b\xf6\xb9\x8c\x2a\x25\x9e\x6b\xb8\x85\x3e\xc6\x5d\x61\xf0\x69\
+\x8b\xb1\x73\xf3\x98\xd8\xb6\x00\x43\x84\xb8\x09\x0c\x27\x12\x1c\
+\xef\x0f\x60\x73\xc5\x89\x4c\x76\x4f\x9d\x63\x4c\x4d\x4d\xe1\x53\
+\x0f\xee\x5d\xda\xf9\xfa\x13\xb7\x15\x33\x8e\xc2\xb4\x39\x56\xb8\
+\xa2\xc2\x58\xa9\xac\x3c\x31\x23\x22\x1b\x35\x28\x9d\x03\x32\x9c\
+\xbc\xac\xd0\xb1\x2f\x06\x90\x44\x57\x88\x3c\x53\xbe\x28\x99\x72\
+\xd1\x80\x29\x5b\xb8\x25\x18\x40\x5c\xad\x96\xb1\x04\x8d\xa1\x40\
+\x91\x50\x43\xb9\x4a\xfb\xcd\xa9\xdc\xa4\xe1\xd3\xf2\xc4\xc0\x44\
+\x38\x7a\xc9\x21\x5c\x70\xf0\x22\xa0\x5d\xc3\x1e\x96\xf8\x6b\x2e\
+\xb0\x92\xf9\x4b\x32\xeb\x53\xd7\x5e\x22\x95\x5e\x4e\x5d\x50\xbf\
+\xa0\x7a\x2c\xa3\x8e\xcd\x6c\x88\xc0\xcd\x18\xbd\x33\x67\x31\x58\
+\x5d\x83\x69\x34\x30\xbd\x6b\x27\xb6\x8e\x35\xf1\xe2\xdd\x0d\xa4\
+\x0e\xb8\xef\x54\x0f\x67\x06\x29\xe2\x88\xe0\x9c\xc3\xc4\xe4\x04\
+\xd6\x06\xf1\xe1\x1f\x54\xf9\x33\xaa\x9b\x37\xe8\xe6\x21\x91\xd6\
+\xce\x36\xd7\xe7\x73\x5a\x16\x27\x1b\x3d\x15\xa9\x97\xc5\x9f\xb0\
+\x28\x23\xaa\x57\xcc\x2a\xf9\x52\x58\x3b\xb3\x90\x76\xae\x32\x7b\
+\x83\x0e\x22\x42\x09\xc0\x84\xb9\x3d\xd7\x74\xfb\x54\x12\x4a\x56\
+\xd5\x2d\xb0\x75\x30\x4d\xa3\x30\x84\xb0\x49\x45\xba\x9d\xe0\xb2\
+\xc5\x77\xab\x9a\x1f\x42\x11\x6b\xf0\x0f\xac\xc7\x06\x2d\xa5\x1a\
+\x0b\x24\x01\xf8\x18\x03\x67\x1d\x92\x5e\x1f\xfd\x95\x55\xf4\x37\
+\xfa\x70\xcc\x88\x63\x83\x3d\x53\x2d\x5c\x30\xd9\xf2\x91\xfd\xc4\
+\xc4\x04\x96\xce\x35\x1f\x0f\x15\x44\xbe\x77\xfc\xc2\xb7\xbd\xbe\
+\xac\xe4\x69\x5c\x46\xc4\x4b\x8e\x88\xcc\xc9\xb9\x13\x7f\xfb\x85\
+\x89\xd5\xc7\x5e\x14\xb7\x5b\xe8\x4c\x4f\xfb\xf4\xac\x30\xed\x65\
+\x7a\x4c\x02\x22\x86\x4a\xf2\xaa\x5f\x9e\x6a\xeb\xe8\xf2\xa2\x29\
+\x34\x8f\x2a\xe0\x83\x07\x9c\x18\x01\xb5\x8a\xab\xfe\x9c\x83\x9e\
+\x30\x3b\x4a\x31\x9c\x99\xc5\xfe\x2d\x5b\xcb\x18\x83\x19\xd8\xb5\
+\x82\x7d\xe9\x9c\x12\xc2\xea\xeb\x59\x05\xab\x32\xf3\x28\x99\x4c\
+\xd5\xdf\xeb\xa0\xb6\xc6\x8a\x31\xd7\xd4\x00\xb8\x22\xe9\xce\x9e\
+\x01\xf7\x4f\x23\x4a\x62\x6c\xbb\xe2\x72\x5c\x16\x35\x01\xeb\xf0\
+\x9f\x9f\x5c\x45\x3f\x01\x9e\xb9\xaf\x8b\x99\x8d\xd6\xd1\x4b\xf6\
+\x14\x5d\x4c\x56\x0f\xb5\x20\x91\x06\x4a\x56\x0a\x87\x36\x83\x0c\
+\x03\x40\x7b\x78\xf6\x02\x00\x88\x5a\x2d\x71\x73\x49\x74\x02\x69\
+\xad\x55\xd5\x0b\x51\xe9\x0a\xc2\xf6\x4a\xaa\x85\x1a\xb0\x0f\xa8\
+\xd3\xba\x90\x32\x51\xf3\x44\x12\x00\x8e\x4a\x21\xb3\xef\xe7\xfa\
+\x29\x28\x8e\x4a\x2e\x59\xd8\xd8\x4f\xf5\x98\x78\x2d\xfd\xa3\x9e\
+\x13\x92\x03\x4a\xc1\xfb\x33\xe9\x21\x17\xc1\xe1\xfb\xa7\x73\x10\
+\x7f\x8a\x3b\x48\x26\x4b\x1d\x9d\x63\x9c\x7a\xf8\x20\x96\x8f\x9d\
+\x84\x33\x84\xe7\x6c\x1f\x87\x69\x34\x61\x9a\x9d\x73\x89\x8b\x06\
+\xb2\x01\x96\xa4\xde\x31\x60\x2a\x71\x07\x05\x3e\x49\x00\x1d\x8d\
+\x64\x7d\x11\x44\x88\xe2\x38\x07\x5d\xf2\x3e\x39\x75\x52\xba\x8c\
+\xcb\x02\x79\x2b\x2b\x57\x32\x8a\x2f\xe1\x5d\xaa\x85\x7c\xa5\xf9\
+\xaf\x60\x78\xa5\xc0\x28\x80\x4c\xfc\xc2\xa1\x1a\x70\x09\x57\xf3\
+\xe8\x05\x8f\xe0\xc0\x53\x17\x65\xae\x40\x47\x8e\x41\x70\xb6\x79\
+\x1b\x19\x07\x98\x9f\x8c\x51\x28\xcc\xfd\x29\x48\x03\xc5\xbb\xaa\
+\x36\x77\xe6\x00\x2b\xa8\x73\x8f\xe5\x77\x4d\xfa\x7d\xf4\xce\x9c\
+\x45\x32\x18\xa1\x13\x47\xf8\xc5\xc5\x71\x34\x56\x4e\x1f\x41\xfd\
+\xcb\x7c\xdc\x6e\x40\xd5\x94\x37\x84\xd1\x89\x80\xe6\x68\xad\x4b\
+\x9c\x8e\x11\x65\xf5\x6f\xdd\x31\x17\x62\x2f\xe5\x41\x86\xc8\x9e\
+\xaa\x64\xe5\x45\x0c\x52\xe7\xcb\xea\xcb\x31\x4b\xbb\xc1\x08\xcb\
+\x74\x95\x0e\x7c\x41\xfc\x60\xae\xaf\x9d\x78\x9a\x19\x33\x5c\xe2\
+\x60\xda\x51\xbd\x8f\xe6\x32\xf8\xe3\x40\xb0\x09\x55\x46\x70\x18\
+\xbd\x17\xad\xe2\x24\x6a\x22\x14\x92\x3f\xa8\x7a\x38\xc4\x08\x5c\
+\x16\x94\xf4\x90\xec\x8f\xf4\x46\xda\x60\xd4\xeb\x63\x7d\xe9\x34\
+\x18\x84\x06\x18\x83\x24\x7a\x9c\x6a\xe2\x0c\x4d\xca\x11\x19\x1c\
+\x4b\x8e\x5d\x00\xef\x76\x7b\x47\x77\x80\x08\x64\x88\xad\x9f\xf4\
+\x15\xb6\x37\xc9\x8e\x59\x56\x60\x9c\xf2\x79\x81\x04\x2b\xd7\x40\
+\x50\x3d\x76\x5e\x93\x54\xf0\x55\xe3\x62\x74\x88\xe9\x2d\x08\x07\
+\xaa\xaf\x32\xf3\x34\xa7\x92\xc5\x11\x54\xfe\x21\x04\x39\x04\x6b\
+\xd4\xc1\x30\x87\x35\xa3\x20\xa2\x2f\xf9\x10\x15\xcf\x55\x3d\xc3\
+\x5a\x01\xdc\xc4\x03\x21\xc4\xaa\x98\x01\x13\x47\x58\x3d\x7a\x0c\
+\xe9\x68\x08\x10\xe1\x2c\xcd\x1f\x66\x4d\x81\x50\x4a\x0e\x02\x0c\
+\x87\x7f\x0c\xda\xe0\xb2\xef\xe9\x68\x65\xea\xd2\xc7\xfa\x9d\xad\
+\xf7\xb1\xb5\x64\x47\xa3\x72\x60\x4b\xc0\xd1\x62\x55\xaa\x65\x15\
+\x9a\x7b\x8b\x10\x04\x53\x3e\x30\x92\x19\x29\x73\xf0\x5e\xe5\x01\
+\x92\x90\x60\x09\xb4\x50\xc5\x9f\xb1\xbe\xf3\x01\x48\x68\x87\x16\
+\x14\x91\xa2\x0e\x84\xee\x8b\x03\xe8\x19\x1c\xd8\x1d\x61\x25\x20\
+\x84\x56\x1f\x38\x57\x4f\x5f\xa4\x83\xde\x4a\xa0\x26\x4d\x21\xdd\
+\x7f\xa0\xeb\x3d\xa4\x0b\x52\x0c\xc4\xad\x36\xe2\x56\x2b\x83\x0e\
+\x30\xbb\xb4\xa9\xf0\x14\x31\x40\xe8\x9b\x8a\x14\x9e\x65\x2a\x4a\
+\x86\x89\x80\x66\xba\xbe\x15\x44\x88\x1a\x0d\xa5\xb7\xe5\x21\xb3\
+\x22\x78\x56\x7a\x23\xc4\xcf\x24\xcd\xba\xd0\x28\x9d\x86\x95\x3f\
+\x3b\x5f\x64\x09\xf8\x01\xd2\x10\xa8\x32\xb2\x9e\x4c\xa2\x86\x56\
+\x14\xfe\x7f\xf1\x61\xec\x7f\xe2\x22\x51\xa3\xa8\x0a\x41\x45\x80\
+\xf2\xd4\xb1\x52\x94\x73\x55\xf0\x86\xb9\xaa\x71\xf5\x0d\x22\x81\
+\xf2\xd4\x59\x86\xca\x8c\x9a\x00\xbf\x01\xe0\x1c\xa3\xd9\x6d\xc3\
+\x44\x06\x09\x9a\x27\xeb\x5f\x2f\xeb\x13\x19\xdf\xa0\x12\xf8\x72\
+\x5d\x44\x4b\x40\x94\xf6\xb7\x81\x08\x26\x0f\x02\x89\x04\xf9\x53\
+\x04\x8c\x24\x2f\x34\xc0\x51\x74\x9a\x49\x55\xd1\xa4\xaa\xc2\x94\
+\x3e\x2b\xa4\x83\xd6\x0f\x98\x62\xed\x7b\xf4\x79\xba\xd2\x6c\xdb\
+\x91\x85\x69\xc5\xa2\x94\xcc\x02\x2d\x44\x65\xec\x4c\xe5\xc6\x7b\
+\xd8\x7a\x93\x14\x51\xc6\x2d\xa4\x63\x21\x4f\x03\x0f\xb8\xaa\x8a\
+\x5c\x22\x83\x5c\x84\x37\x43\xb4\x9d\xfb\xeb\x73\x68\x8d\x8f\x83\
+\x19\xe8\xd1\xf8\x61\xa9\xdc\x84\x60\x84\x62\x81\x03\x54\x78\x2e\
+\x35\x2f\x02\x03\x9d\xde\x89\x39\x22\x8e\x41\x86\x9d\xb5\x64\xa2\
+\xa8\x52\x60\x21\x47\x79\x65\x0a\x62\x62\x97\x28\xd7\xfa\x20\x06\
+\x12\x24\xd5\x52\xc9\x21\x75\x43\xf0\xfc\x29\x30\xcb\x01\x09\x43\
+\x64\x4a\x25\x92\xc9\x75\x52\x00\xfc\xc6\xbf\xfa\x1f\xfc\xcb\xdf\
+\xfb\x8e\x3f\x28\xc3\x33\xc7\xa8\x86\xff\x41\x89\x99\xb5\x79\x67\
+\x39\xc8\x8a\xeb\x53\xc2\xca\x19\xd6\xa0\x92\x00\x54\x3b\x3b\x18\
+\xb5\x88\x61\x5d\xba\x59\x04\xdb\xcd\xf1\x71\xb0\x73\x58\xa3\xa9\
+\x43\x84\x0a\x56\xa7\x06\x69\x15\xc8\x7f\x2d\xf7\x42\x07\x21\x8e\
+\x7a\xdd\x6d\x67\xd6\xc7\x76\x7d\x19\xec\x28\x1d\x0c\xf2\xc3\x08\
+\x06\x1f\x50\xd8\xf0\xc0\x41\x0e\x22\x4a\xbd\x92\x60\xe1\xab\x60\
+\x5c\xc5\xc3\x8b\x51\x33\x45\x57\x2e\xaa\xf3\x87\xa4\xd6\x7b\x53\
+\xee\x58\x8d\x75\x03\x38\x20\x59\x02\xb7\xfe\xde\x2d\xe2\xd2\xaa\
+\x44\x0b\x86\xe6\x06\x78\xac\x42\x99\xf9\x9a\xe0\x56\x80\x52\xfa\
+\xb6\x52\x2d\x04\x52\xc1\x0c\x44\x3a\xc8\xa8\x77\x05\x2c\x34\x89\
+\xcb\x0a\x12\x1a\xdd\x36\xc0\x8c\xb3\x34\x7f\x44\x59\x76\x0e\xac\
+\x4c\xfe\xf2\x98\x35\x60\x07\x39\xef\xb1\x9c\xb6\x9a\xc1\x05\x8d\
+\xb4\x37\x9b\x31\x5a\x22\x61\xd6\xb2\x99\x37\xd9\x8f\xd2\x07\x68\
+\xaa\x17\x85\xb8\x67\x5d\xe1\xa3\xe2\x20\x79\x13\x89\xe7\x60\x74\
+\x1b\x57\xfd\x74\x98\x96\xca\xd7\x9b\xec\x3a\x3e\xf8\x3f\xdf\xa9\
+\xc9\xa1\xa1\x9f\x54\xaa\x17\x1f\x00\x00\x1e\xb5\x49\x44\x41\x54\
+\x95\x83\x24\x78\x33\x0d\xa7\xca\x35\xeb\x48\x3f\x20\xbe\xd6\x61\
+\x12\xe0\x8a\x55\xd9\x0c\x78\x02\xe9\x0c\x42\x92\x45\xe3\x56\x13\
+\x51\xa3\x81\xd4\xd2\xc6\x10\x9d\x9e\xe2\x4a\x52\x80\xed\xc8\x34\
+\x10\x35\x29\x0a\xd7\x58\x82\x33\x53\x97\x7d\x95\x4d\xdc\x4f\x86\
+\x43\xd8\xbc\xdd\x5b\x69\x56\xa1\xf1\x4e\xd6\xed\x43\xaf\x2d\x2d\
+\x00\x87\x7f\x51\xa9\x1d\x73\x4d\x74\x1e\x68\x3c\x04\x7c\xcb\x21\
+\x9c\x1a\xd6\xed\x51\x6e\x04\x79\xd3\xbb\xde\x94\x99\xff\xb7\xbf\
+\x0f\x92\x69\xa5\x4a\xc9\x4e\xd2\xce\x50\x8d\x05\x6a\x60\x5c\x7d\
+\x0f\x49\x8d\xae\xf1\x64\x92\x42\xb8\x42\x86\x57\x40\xf8\x27\x66\
+\xed\x2a\x59\x5b\x33\x25\xeb\x8e\xd1\x1a\xeb\x02\x44\x18\x52\xfb\
+\x08\x07\x61\x18\x97\xc4\x28\x2f\x3c\xe4\xa1\x60\xae\xfa\xff\x70\
+\xd8\x26\x03\xd8\x18\xdf\x7d\xcc\xb0\xeb\x90\x31\x20\x63\x2a\x35\
+\x6c\x0e\x80\x59\x85\xe2\x09\xb2\x43\x98\x38\x88\x49\x92\x9a\xf6\
+\xe7\x39\x83\xac\x70\xfa\x92\xff\x56\x6a\xaa\xef\x9c\xf1\xe6\xbf\
+\xdc\xf9\x83\x00\x85\x64\x06\x6c\x62\x75\x21\x27\xac\x25\x48\x21\
+\x2d\x9b\x91\x95\x65\x60\xae\xf1\xcd\x1c\x7e\xb9\x00\xe7\x63\x0e\
+\x28\xaa\x61\x8a\x48\xe0\x00\x18\x0b\x81\x41\x55\x34\xca\x9f\xe7\
+\x6c\x8a\xe6\xf8\x38\xe0\x18\xeb\x98\x38\xa4\x62\xad\x00\xaa\x94\
+\xf2\x1c\x87\xe8\x13\x07\xfc\x6a\x19\x80\x8c\x6f\x1c\xde\x99\x51\
+\x00\x8c\xe8\xeb\x0f\x81\x2a\xd1\xe3\xeb\xd9\x41\x12\xe6\x0c\x25\
+\x26\xaf\xeb\x53\x35\xc0\x51\x94\xf3\x5a\xe6\x6d\x40\x32\x45\xd5\
+\x0c\x13\xd7\x40\xd2\x96\x7d\xda\xc6\x0e\xb5\x8c\x5e\x0e\x6a\xfa\
+\x15\x13\x4f\x35\xc5\x1f\xc5\xd1\xd3\xe6\x80\x24\xeb\xb9\x06\xaa\
+\xa0\xfa\x51\xa4\xf5\xf0\x81\xea\xbd\xc8\xba\xa1\x27\xb6\x6d\xcd\
+\x89\x3a\x8c\x15\x9a\x3d\xac\x94\x98\x74\x80\x2c\x63\x77\xa3\xf1\
+\xe9\x9a\xa9\xdd\x02\x29\x4c\xa3\x6e\x2f\x8d\x3b\xa7\x1c\x3b\xd8\
+\xc1\x30\xa0\x72\x55\xcb\xb9\xc5\xa8\x57\x5d\x06\x16\x79\x34\x02\
+\xc4\x90\x11\x00\x30\x14\x34\x8b\x6a\xd4\x51\x05\x5a\xc5\xeb\x5d\
+\xe9\x82\xb8\xa6\xee\x40\x0c\xa4\xc3\x14\x14\xa1\x86\x82\x5e\x4f\
+\x4b\x47\x80\x66\x86\x58\x40\x08\x6a\x69\x1c\x42\xe3\x21\x1c\x40\
+\x73\xfe\x3b\xe4\xdf\xd5\xb7\xd0\x31\xd7\x07\xe6\x41\x1c\xc2\x00\
+\x4c\x1c\x63\x6e\xef\x1e\xc4\xcd\x26\x33\xb3\x5d\xc1\xdc\xc9\xba\
+\x2a\x3f\x07\x2e\x9d\x08\x88\xc1\xba\x8d\x1f\xc2\x3f\xb0\x94\x18\
+\x02\x06\xed\x85\xe5\x34\xee\x9e\x8a\xd3\xfe\x42\x36\xea\x25\x94\
+\x7e\x52\x85\x8c\x32\xe0\xa0\x80\xf7\x2f\x4c\x5b\x4d\x50\x23\xa9\
+\x61\x9a\x16\xc6\x01\xd7\x40\x47\xcf\x1c\x04\x60\x0a\x12\xf6\x53\
+\xc3\x08\x8f\xee\x7a\x04\xfb\x1e\xb9\x48\x65\x27\x3a\xa0\xa4\x4a\
+\xcf\x61\xa5\x41\x45\xfc\x37\x2b\x33\x2d\x88\xa7\xea\x39\xd5\xc0\
+\x56\xe7\xf1\xae\xa6\xe8\x54\xcd\x8a\x2a\x89\x9a\x63\xb4\xc6\x3a\
+\x00\x33\x86\x68\x1d\xbb\x3f\x7a\xee\x9d\x8a\xdb\x43\x35\x00\x94\
+\xb0\xf2\xb1\xfc\xae\x14\xa4\x15\x95\xbc\x91\x80\x4e\xb2\x7a\x20\
+\x9b\x80\x6d\xca\xfc\x57\x91\x42\xc5\x70\xc6\x4d\xa2\xfd\x92\x9e\
+\x05\x35\xdc\x31\xbc\xb1\xe0\x7a\x92\x85\x8e\xee\x29\xdf\x14\x12\
+\x80\xde\x90\x9d\x83\x7a\x7e\xbb\x1d\x59\x44\xad\x38\x88\x51\x48\
+\x58\x2d\x0d\x1a\x85\xc2\x56\x6a\xa9\xf8\x0c\x55\x44\x20\x3d\x91\
+\x94\x59\x09\xaa\x2b\xf8\x92\x4c\x55\x33\x8f\xaa\x1b\xd2\xf3\xcc\
+\x83\x42\x95\x73\x68\x8e\x8f\x81\x01\xf4\xa8\xfb\xa4\xaa\x59\xd4\
+\x00\x40\xe1\x60\x6d\x23\xfa\x19\x6a\xc1\x20\x45\x1f\x72\xa3\x38\
+\x89\xba\xc7\x89\x00\x3b\x1a\x6a\x13\xa6\x46\xc2\x6b\x22\x03\x73\
+\xc8\x16\xd2\x11\xbc\x82\x6b\x1d\x97\xa3\xd9\x83\x82\xcf\x66\xcd\
+\x91\xaa\xd4\x1c\xd8\xc7\x72\x30\x75\xfe\x5e\xd6\xc1\x59\x87\xa8\
+\x69\x02\xce\x81\x53\xcc\xe3\xf7\xbd\xf5\xfd\xda\x1d\x81\x6b\xcd\
+\x3a\x15\x93\xae\x05\x58\xa4\x39\x0d\x1a\x07\x71\xbe\xce\xb1\xc9\
+\x7c\x20\x85\x33\xc8\x9a\x01\x57\x1a\x42\x8b\xff\x6c\x8d\x8f\x03\
+\xce\xe1\x1c\x66\x1e\xaf\x65\xc4\xff\x00\xc6\x94\x09\x53\xd4\x9a\
+\x44\xa0\xfc\xb3\x69\xa6\xa7\x67\x7e\xe6\xf3\x84\x6c\x08\x04\xc9\
+\x3e\x3d\x57\x03\x51\x8b\x2f\x4f\xe2\xb0\x25\xf0\x52\xd9\xe8\x25\
+\xa7\x6d\x06\x91\x7b\x45\x02\xb8\x86\x0f\x50\xc1\xff\xa1\x62\x08\
+\x9b\x38\xcf\xc5\x57\x28\x5f\x2d\xf9\x24\xcc\x1e\x38\x10\x5e\x0e\
+\xfc\x3b\xfb\xb8\x85\x5d\x10\x9f\x54\xfc\x3e\xd4\xda\x1a\x65\xf1\
+\x6a\x58\x4d\x1c\x80\x4c\xc5\x7b\x18\x63\xd0\xe8\x64\x33\x19\x97\
+\xcd\xfc\x11\xaa\x41\xd8\xa9\x8e\xb4\x50\x69\x0c\xa1\x1a\x9c\x46\
+\x06\x0c\xf9\x8f\xad\xe1\x99\xad\xf9\xd4\x2a\xb6\xa9\x55\x52\xae\
+\x02\x3e\x89\xda\x51\x50\xeb\x0f\x6e\x3a\x33\x54\x6b\x17\xb3\x2e\
+\xf9\x32\xd7\x68\x5f\x90\x1a\xfa\xb4\xcf\x95\x9a\xc6\x41\x30\x46\
+\x94\x05\x80\x26\x32\xd5\x98\x4a\xd4\x11\xde\xf6\xbe\x7f\x06\x00\
+\xf8\xcd\xf7\xbf\x4d\x53\xcb\x38\x08\x09\x38\xe8\x43\xe0\x32\x05\
+\xa0\xe0\x39\xec\xb4\x40\xb1\xd8\x66\x26\x85\xb5\x96\x3d\x14\x62\
+\x59\x42\x51\xa2\x56\x13\x51\x23\x86\x45\xb4\xd1\xe7\x56\x5f\x7e\
+\x57\x84\x55\xd3\x70\xd6\x36\x00\x13\x6a\x7e\x50\xd4\x0b\xd2\x5b\
+\x47\x4b\x33\x57\xdd\x3f\x6a\x4c\x3e\x2e\xe7\x3c\x41\xc1\x9e\xac\
+\x08\x1e\xa4\xc3\xfa\x20\xaa\x67\xd5\xe8\x51\x19\xfd\x52\xe7\x06\
+\x9c\x76\x35\x45\x64\xcf\xcc\x8a\x43\x27\xcd\xb2\xd4\xd6\x47\x77\
+\x1f\xc4\xfe\xc7\x0f\x64\xfd\x88\x08\xca\xbd\xcc\xf8\xcd\xfc\xf0\
+\x8b\xc7\x6f\xfe\x9f\x6f\xd3\x8d\x21\x5c\xf5\xd7\x12\xda\x96\x02\
+\x5c\x03\xfc\x69\x60\x49\x76\x13\x29\xd0\x49\xcf\x03\x08\xbf\x87\
+\xb7\x32\xd6\x21\x6e\x77\x00\x18\x0c\xb8\x7d\x44\xb7\x48\x05\xa4\
+\x13\xaa\x69\x9a\x62\x20\x96\xfb\x0f\x88\xaa\x2c\x68\x5d\x7f\xce\
+\x3c\x46\xd3\xf6\x76\x4a\x9e\xbd\x62\x9a\xb0\xee\x54\xe5\x5a\x20\
+\x84\x82\xf2\xa8\xf8\x5d\x08\x1c\x6f\x52\xa2\xa5\x9a\xcc\xa0\x1e\
+\x01\x2c\x9a\x39\x33\x3f\x6a\x93\x2c\x00\x94\xdc\x42\x16\x83\x83\
+\xff\xcd\xff\xf8\x1e\x80\x81\xdf\xfc\xc3\xb7\xe1\xf6\x37\xff\x9b\
+\x20\x18\x0c\x2a\x92\x1c\x0c\x70\x0a\x6b\x09\x1c\x36\xbc\x84\xcc\
+\x25\xd9\x64\x12\x04\xa2\x61\x4d\x25\x38\x56\x9b\x5a\xcc\x5d\xb8\
+\x07\xed\xa9\x49\x66\x6b\x69\x03\xe3\x87\x25\xa6\xa0\xc6\x18\x87\
+\xf9\x3f\x49\x20\x88\xeb\xc9\xba\x6a\x7c\x8d\x00\x85\xda\xc9\xea\
+\xb8\x61\xdb\x62\x43\xcc\x8e\xb3\xb6\x81\x62\x56\x10\x4b\x80\x02\
+\xc1\xc0\xf4\x60\x1e\x00\x58\xd7\xd0\x2b\x8d\x9b\xa8\x64\x00\x61\
+\x01\xad\x8a\xd1\xe8\xcf\x50\x9d\xc3\x80\x9f\x16\x66\xa2\x9a\x34\
+\xcf\xd5\x11\x37\x50\x03\xf4\x70\xa5\xb8\x58\x4d\xb6\x59\x1d\x28\
+\xea\x14\x42\x94\xe7\xe4\xca\xba\xac\x17\x03\x9b\x4f\x0c\xf3\x19\
+\x1b\xa1\x35\x36\x06\x13\x47\xb4\xca\x93\xf7\x2f\xd1\xd6\x87\x15\
+\x5d\x8c\x49\xd7\x0f\x02\xe6\x77\xf1\x3e\xa6\xb8\xa1\x9b\x2d\xea\
+\xd2\x53\x30\x1c\x0d\x1a\x53\xeb\x4b\x53\xcf\xf8\x38\x31\x88\xb3\
+\x87\xc6\xee\xd5\xf7\xd3\x00\x4e\x19\x58\x89\x85\xcb\x72\x10\x84\
+\x63\x05\xda\x94\x91\xb7\x53\x81\xa1\x1e\x1a\x09\xfd\xda\x60\x6c\
+\x3b\x71\xd9\x66\x96\x8e\xac\x9f\x60\x56\xa0\x75\x1c\x10\x3e\x98\
+\xab\x88\xa3\x76\x43\x08\xfc\xb6\xa8\x7d\x48\x01\x09\x5c\x4f\xe1\
+\xa6\x24\x8b\xaa\x8c\x0b\xe4\xb5\x90\xa6\xd4\x39\x1d\x74\x50\x9e\
+\x14\x46\x71\x8c\xb8\xd5\x04\x3b\xb6\xdf\xe3\x67\xfe\xc5\x1a\xa6\
+\x97\x51\x01\xbf\x6a\xd0\x55\x52\x7d\x3b\x39\x23\x88\x6a\x8a\x55\
+\x75\x19\x81\x31\x4c\xec\x68\x69\xf2\xf2\xef\xf5\x9b\x33\xdf\x45\
+\xdd\xe2\x1e\xe6\xda\x1b\xc7\x95\xdf\xeb\x9b\x2e\x09\x1b\xb2\xc4\
+\xca\x95\x72\x32\x7c\xa0\x07\x35\x01\x3c\x4c\x93\xc4\xe4\xcd\xfc\
+\xf1\xe8\xee\x83\xb8\xf0\xfb\xfb\xab\x9c\x41\xc7\x55\x86\x71\x25\
+\xb7\xaf\x1f\xce\xa4\x4c\xbf\x0b\xaf\x39\x98\x63\x20\xaf\x3d\x08\
+\x8a\x95\x22\x85\xe5\xbf\xa0\xe3\xc6\x59\x87\xb8\xd3\x01\x99\x08\
+\x09\x5a\x27\xe5\x67\xd7\xf5\x50\x78\xa8\xbf\xba\xfc\x24\x6b\x0e\
+\xe5\x1a\xe0\x80\xa9\xca\x22\xcd\xdc\x40\x1e\x07\xb8\xde\x36\xbf\
+\x81\xa7\x40\xc2\x84\xef\x2e\x4c\x59\xc5\x7c\x07\xcb\x19\x34\xbd\
+\x19\xa8\xe7\x62\xd7\xf4\xe9\x7b\x5f\x49\x22\xe8\xe4\x7a\xdc\x33\
+\xff\xe4\x74\x64\x11\x37\x23\xaf\xbd\x50\x0d\x25\xa8\x2d\x43\x73\
+\xa5\x36\xc0\xf5\x81\x9d\xbf\xc9\x5c\xc6\x0d\x54\xf3\x3d\x02\x57\
+\x59\xe9\x60\x27\x39\xa1\x26\x28\xaf\xe5\x16\x21\x6a\x34\xd0\x9e\
+\x98\x00\x98\xd1\xe3\xb1\xc3\xaa\xfd\xbc\x52\xc6\x25\x11\x07\xe9\
+\xba\x40\x39\xb0\x87\xeb\xa9\x67\x35\xdd\xd1\xfe\x87\x53\x13\x97\
+\x7f\x16\x44\x4e\x29\x49\x25\x5d\x0b\xb5\xb3\x86\x24\x82\x00\xd4\
+\x71\x22\xaa\x76\xac\xca\xbc\xfe\x79\xf9\x73\xc8\x41\x8f\x84\x71\
+\x55\x9a\x89\xaf\x32\xba\x6c\x06\x50\xdc\x88\x7c\x03\x68\x59\x9b\
+\x40\xd5\x7d\x20\xc0\x2c\x14\xdd\xbd\xae\xf4\x2d\x6b\x08\xb9\x70\
+\xb9\x10\x9f\xa0\x00\xbb\x60\x4d\xfd\x82\x00\x97\x02\x4e\x6d\xe9\
+\x36\x2c\xe6\x0f\xec\xc7\xc4\xb6\x05\x38\x6b\xb1\xca\x53\x4f\xf8\
+\x7b\xa2\x52\x69\x12\xa5\x67\x6c\xba\x4d\x2d\xae\x4c\xcd\xa2\x6a\
+\xdf\xa6\xda\xc5\x98\x67\x0a\xc3\xe6\xdc\x69\xf2\x8d\x25\x45\x97\
+\xac\xe8\xc0\x0d\x80\x20\x39\xe4\x90\x05\x6c\x5c\x76\xc9\x54\x03\
+\x30\x56\xe0\x08\xea\x03\x22\x05\xe3\x42\xc5\x22\x52\xbb\x39\xcd\
+\xae\xd1\x90\x98\xf4\x56\xc7\xd1\xe0\x2a\x85\x96\xc3\xd2\xaa\x10\
+\x04\x0a\x37\x89\x88\x37\x72\x08\xd3\x69\xae\x5a\x3c\xd6\xec\x60\
+\x3f\x13\x50\x05\x83\x05\x84\xcc\x20\x13\x23\x6e\x36\x00\xc7\x78\
+\xc4\x5d\x7a\xc7\x0a\x66\x4f\x91\x29\xad\x21\xfb\x35\xba\xec\x4b\
+\xcb\x44\x41\xf3\x81\x68\x00\xd7\x84\x10\xaa\xb2\x4f\x94\xf0\x0a\
+\xdf\x61\xc9\xb8\x51\xa3\xfb\x14\xa1\x1c\x03\xcf\xb5\x50\xae\x6e\
+\xcb\x52\xb0\xaa\x63\xbf\x75\xa3\x8e\xda\xc5\xa2\x9f\xbf\x42\xc4\
+\x50\x78\x81\x13\x81\x64\xb8\xaf\x30\x0b\x9a\x0e\xee\x3d\x88\xbd\
+\x8f\xec\xd3\x4d\x9e\x28\xd7\xd4\x87\x64\x0b\xdd\xcd\x44\x15\x74\
+\x92\x15\x73\x84\x6a\x51\x4a\x0a\xe6\x00\xa8\xcd\xe4\x22\x90\xd4\
+\xd6\x31\x10\x08\xd9\xf3\xe0\x1c\xe2\x46\x0c\x8a\x62\xa4\x1c\xaf\
+\x9d\xe5\x2d\xc7\x19\xe4\x58\x81\x47\xae\x16\xa4\xe2\x60\x8c\x4d\
+\x21\x98\xb1\xf4\xf5\x21\x51\x57\x69\x3d\xeb\x8c\x60\x18\x4f\xad\
+\xa7\x66\x6c\xa9\x49\xbd\x5d\x3e\x0a\x2f\xc6\xc1\x8a\x1b\xc3\x75\
+\x9c\x78\xae\x65\x81\x06\x1d\x45\xc1\xcb\x9c\x98\x43\x58\x59\x0c\
+\x15\x44\x11\xac\xf1\x05\x26\x20\x1d\xa5\x88\x9b\x91\x36\xf1\x2a\
+\xda\xa7\x4a\xf5\x8d\x9d\x9e\x37\x28\x35\xb8\xb8\x6c\xa7\x86\x60\
+\x71\xd5\x74\x53\xcd\x10\x68\x11\x68\x31\x71\xa5\x7f\x81\xc5\xfe\
+\x04\x1f\x5f\x5a\x8b\xf6\xe4\x24\xba\xf3\xb3\x4c\x00\xf5\xd1\x7e\
+\x32\x8f\x8d\xfc\xd4\x6c\x96\xfb\x4a\x6b\xd6\xe9\x91\xe0\xfa\x71\
+\x1e\x00\xc4\xc1\x48\x00\x1d\xf5\x53\x7d\x3a\xe8\xad\x80\x69\xf6\
+\xb2\x4e\x60\x03\x86\x15\xdd\x3c\xa8\x04\x2f\x72\x61\x63\x08\x16\
+\x61\xb3\x7e\x0e\xae\x07\x5f\xc2\xc3\xab\x7b\x2f\x96\x8d\x22\x2e\
+\xab\x01\x34\x9a\x51\x36\x9c\x2a\xc4\x0e\x02\x01\x65\x46\x05\xd7\
+\x00\xd7\x81\x41\x75\x55\xca\x82\xdc\x4a\x25\x06\xe1\x0f\x39\xbf\
+\x07\x4e\xd4\x3f\xb9\x9a\x9b\x4b\xeb\x53\xe8\x88\x4b\x2d\xc6\xb6\
+\xcc\x63\x6c\x6e\x86\x6c\x6a\xdd\x3a\x4f\x1e\x2e\xf9\x9b\x65\x37\
+\x29\x51\x20\x8f\x9c\xe1\x77\x24\x69\xef\x86\xf2\xe9\x6e\x94\x75\
+\x06\x85\x24\x10\x84\x14\xfd\xc0\x07\x16\x82\xfe\xe4\xf4\xcf\x7d\
+\xd1\x51\xe3\x1c\x40\x19\xbe\x2e\x9a\x3a\x58\x0e\x4f\x82\x58\xff\
+\x1a\x22\x66\x35\xff\x68\x78\xb8\x5e\x30\xd4\x06\x11\x57\xc2\xaa\
+\xa5\x49\x87\x9f\xc0\xed\x6c\x36\xf0\xd9\x44\x24\xa6\x85\x07\x24\
+\x16\x85\x45\xb0\x2a\x06\xf1\xa6\xd0\x75\x50\xb0\xf2\xd8\x82\x56\
+\x01\x66\x39\x38\x4b\x13\x68\x48\xb9\x83\x30\x87\xcf\x5d\xab\x75\
+\xd8\x7a\xe9\x25\x68\x4d\x8c\xb3\x4b\x2d\x1e\x48\x9f\xfd\x9e\x43\
+\x6e\xff\xbd\x54\xe0\x1c\x4e\xb8\xda\x1f\x40\x8e\xe5\x82\xb1\x25\
+\x16\x78\xc7\x95\x6e\xe0\xb0\x87\x2c\x14\x82\x40\x52\x0f\xcd\xbc\
+\xe0\xce\x7d\x67\xff\xf3\x3f\x03\x45\x4c\xc4\x94\x4d\xd9\x12\x5a\
+\x24\x24\x5f\x0b\x15\xd5\xb7\xab\x70\xc8\x10\xe6\xea\x88\x98\xda\
+\x80\x50\xbc\xd8\xe9\xef\x94\x24\x16\x94\xef\x30\x60\x66\xbc\xe3\
+\x43\xe5\x82\x8d\x7f\xfe\xe1\x77\x00\x00\xde\xfd\x86\x77\xd7\x8e\
+\xa2\x21\x09\x3b\x93\x8e\x6d\x2a\xcd\x20\xb2\x73\x29\xac\xcb\x72\
+\x6d\xef\x4b\xcd\x6a\x61\xae\x70\x22\x4c\xb3\x89\xf6\xd4\x04\x9c\
+\x75\x76\xc3\x8d\x1d\xec\x73\x77\xa3\x24\xcc\x95\xf3\x93\x09\x01\
+\x05\x18\x5c\x31\xdd\xbe\xb7\x22\x5f\x66\x61\x36\x8d\x80\x83\xd9\
+\x3c\x25\x7b\x47\xf4\x01\x38\x4b\x83\x78\x6a\x6d\xa5\xb5\xeb\x0b\
+\x59\x80\x1a\xb1\x04\x42\x48\x56\xf6\x1c\x2a\x29\xa1\xfa\xb7\x0c\
+\x88\x64\x29\x17\x54\x02\x2c\x01\x97\x40\x4d\xd6\x0e\x4a\xc7\x2c\
+\x40\x97\xc7\x2e\x7c\x0c\x7b\x1f\xd9\xe7\xff\xf0\xee\x5f\xff\xd7\
+\xea\x96\xbf\xfb\xa6\x77\x97\x3b\x06\x6a\x00\x1c\x6f\x8e\x5d\xb5\
+\x1f\x40\x69\x88\x0b\x4a\xb7\xae\xa6\x3c\xce\x55\x9e\x44\x05\x10\
+\x73\xf9\xcd\x76\xd9\xb1\x36\x3a\xed\x6c\x9b\x39\x77\x9e\x78\x20\
+\xb9\xea\xe3\x80\x23\xdd\x76\xc9\x1a\x0b\xf1\x42\x44\xfa\x6c\x1d\
+\x89\x95\x3b\x99\xd0\x18\xc5\x02\xaa\x01\x7f\xb8\x82\xf5\x91\x70\
+\x03\x86\xc1\x8e\x8e\x4c\x5e\xf3\x95\x34\xea\x9c\x20\x22\x32\x51\
+\xa4\xf6\xfc\xd4\x45\xc7\x15\x42\x88\xbc\x71\xd0\x1c\xbf\xc2\xa2\
+\x14\x37\xb8\x5a\x6d\x63\x55\x23\x97\x33\x0a\x8b\xcf\x4b\x47\x16\
+\x8d\xa6\x01\xdb\x1c\x3e\x76\x99\xc6\x03\xc0\xbb\x6e\x7a\x97\xe0\
+\x26\xe8\x34\x52\x2e\xaa\x50\xe6\x3e\x68\x6a\x55\x66\xbf\x06\xef\
+\xf0\x2e\xd1\xa1\xda\xa3\xe8\xaa\x10\xb2\xef\x87\xb4\x16\xb3\x17\
+\x2c\x62\x7e\xff\x3e\x76\xa9\xc3\xc0\x75\x8f\xe6\xa9\x1e\xd7\x76\
+\x0a\x81\xb2\x54\x9c\x49\x0b\x9f\xab\x61\x66\xe5\x55\x54\xa3\xfc\
+\x7d\x85\x63\x07\x39\xa8\x5b\x34\x3c\x96\x41\x0d\xc3\x30\xc0\x38\
+\xd5\x39\xf0\x79\x07\x33\x8c\x1a\x71\x86\x2f\x3b\xf1\xe5\xa4\x84\
+\x03\xc1\xd0\x45\xcd\xf1\x77\x1c\xf8\xde\x4a\xc9\xb6\x8e\x57\xc0\
+\xc1\xe7\x95\x9f\xe1\x1c\xc3\x5a\x87\x28\x8e\x02\x6a\xb9\xc6\xd8\
+\xfd\x04\x70\x57\xd7\xcd\xa4\xad\x8f\x86\xa2\x35\x03\xaa\x6e\xca\
+\x57\x65\xf4\x5c\xcd\xb0\x4b\x76\x3a\x75\x2b\x62\x9c\x46\xa7\x03\
+\x76\x8e\x4e\xd8\xad\x77\x3f\x65\x77\xdd\x5b\x80\x5b\x5c\x89\x3b\
+\x8a\xcf\x09\xe9\xed\x80\x92\x97\x60\x1e\x98\x91\x3e\x89\x82\x72\
+\x32\xd5\xcc\xcb\x27\x96\x28\x61\x69\xb2\xce\xb4\xf7\x3d\x6e\xc0\
+\xad\xac\x4f\x3d\x2e\x0f\xcf\xe9\xce\x5d\xae\x09\xb2\xb4\x43\x74\
+\xe5\xdf\x9c\x66\xf6\xc8\x66\x93\x70\xb1\x92\x22\xa2\x14\x3b\x7c\
+\xf2\x00\x30\x2b\x63\x50\x65\x08\xc5\xbb\x5e\xf7\xae\x1c\x31\x0b\
+\x2d\x89\xd8\x49\xac\x82\x41\x9d\x9b\x23\x0c\x44\x65\x20\xe9\x58\
+\x37\xc7\x70\x48\x2f\x93\x33\xa5\x35\xdc\x57\xf4\x56\x76\x67\x67\
+\xb2\x7d\x46\xcc\x78\x3c\x39\x70\xcf\x86\x1b\x5f\xd3\x0d\xc1\x5c\
+\x4b\x6c\xf5\xc3\x38\xc5\x2e\x01\xc5\x63\x10\x74\x45\xc3\xa4\xeb\
+\xc3\x92\x3b\x2e\xf7\xf8\xe9\xf4\x84\xca\x5c\x32\x7f\x71\x2b\x5d\
+\xef\x8e\xcc\xf8\x61\x10\xa5\x26\x8e\x10\xb5\xf2\xb1\xab\x8a\x4f\
+\xc7\x4a\x93\x88\xeb\x1a\x3e\x74\x33\x49\xc8\x10\xe2\x3a\x3a\x56\
+\x71\x23\x43\x1f\x0d\xc2\x63\xfb\x1e\xc3\xee\x87\x2e\x0c\xc9\x76\
+\x82\xc4\xe1\x2a\x34\xee\x32\x73\x11\xe6\xd3\xb1\x06\x89\x98\x2b\
+\x69\xa7\x6a\x31\x0f\x4d\x3a\x73\xa5\xa9\x84\x02\xcb\xe8\x21\xdc\
+\xd4\xf9\x75\xba\x60\x86\xe5\x78\x15\x41\x0f\x27\x0b\x2a\xb9\xcc\
+\x18\x28\x84\xe4\x29\xa8\x61\xb0\xfe\x5e\xa6\x52\xec\xa9\x21\x83\
+\xca\x8b\x93\x75\x6b\x19\xc6\x0e\xa3\xf1\xde\xf7\x27\x9e\xff\xef\
+\x07\xd1\xcc\xc3\xc8\xb8\xea\x9c\xc5\x03\xce\x5b\x01\xe2\x72\x13\
+\xb7\x2c\x85\x72\x2d\xef\xae\xc0\xb3\x03\xc2\xa7\xf0\x9b\xa4\xb4\
+\x4d\x68\xaa\x58\x22\x95\x24\x99\xff\x57\x68\x9c\x34\xb7\x8e\x2a\
+\x6c\x25\x35\xa4\x22\x2c\x30\x09\x0a\x9b\x4a\xb9\x1c\x36\x75\x51\
+\x75\x43\xaf\xa8\x12\x54\xe6\x97\x93\xa6\x18\x9b\x9f\xc5\xd4\xce\
+\xed\xec\x52\x8b\x65\x37\xf3\xb5\x7b\xfa\xd7\xbc\x97\x25\xb2\x18\
+\xb0\x78\x6b\x7b\x2a\x0a\x4b\xe0\xa0\x47\xe5\xfa\x2e\x64\x12\x7c\
+\x80\xb0\x8b\x14\x1a\xe1\x94\x60\x09\x71\xb5\x31\x21\xf3\x4b\x8e\
+\x12\x6a\x0f\x0e\x8e\xff\xfc\x27\x7a\xd1\xcc\x83\x06\x44\x51\xa3\
+\xa9\xaf\x4a\xfa\xeb\xf0\x8a\x45\xfe\x5e\x29\xb8\x54\xa0\xdf\xd0\
+\x12\xeb\x12\xb2\x8c\xe0\x6d\xea\x70\xf4\x8a\x27\xf0\xf8\x45\x8f\
+\xd7\xfb\x76\xbf\x0c\x32\xc0\x21\x8a\x80\xd2\xc9\xcf\xd4\x1b\x41\
+\xb5\x00\x73\x5d\x45\x3c\xfc\x21\x88\x17\x84\x1b\x15\x50\xf6\xf8\
+\xfc\x3c\xda\x93\x13\x94\x5a\xde\x58\x4b\xa7\x0f\x81\x62\x47\xec\
+\x88\xc5\x6c\x23\x15\xab\x84\x13\x9b\x2a\x38\x40\x80\xef\xbb\xd2\
+\xfa\xc4\x95\x7a\x2f\xd5\x0c\x8a\xa8\x4c\xeb\x94\x51\x70\x61\x35\
+\xc8\x77\x2c\xb7\x78\x7d\x0f\x83\x10\x35\x62\xb8\x24\x46\x3a\x4a\
+\xfc\x84\x5d\x85\x02\xaa\xad\x60\xa2\x5a\x06\xdd\x55\xab\x3a\x6c\
+\x0b\x5c\xc0\xd5\x30\x86\x58\xb3\x20\x9d\x03\x76\x7c\x67\x37\x66\
+\x67\x3a\x00\x31\x0e\x5f\xfc\xb8\x42\x27\xf7\x3c\xbc\x57\xf5\x49\
+\xd5\x36\x66\x84\x68\x1f\x34\x2e\xc1\x41\xa5\x88\x6b\x72\xea\x4a\
+\x70\xe8\x2a\x1d\x94\x8a\xb5\x1b\xb5\x5b\x60\xeb\x70\x4f\xef\xe7\
+\x6f\x2f\xd4\x94\x43\xda\x8e\x2f\xd6\x89\x31\xf4\xb9\xcf\x2e\xca\
+\xc3\x5c\xe9\xba\x21\xf1\xda\x6c\x82\x6a\xac\x96\x32\x92\xf6\xf5\
+\xc5\x61\x29\x8c\x39\xec\x3a\xa5\xdc\x8c\xfa\xc3\x21\x1c\xea\xfc\
+\xec\x1f\x4d\xa6\x27\x2f\x58\x18\x3e\xf6\xca\x46\xa7\x83\x34\x49\
+\x3c\xae\x1e\xf2\x05\xfd\x2e\x0c\x26\xcf\x2b\xa0\x0a\x9f\x4e\x9f\
+\x01\x55\x3a\x80\x04\x66\x21\xae\x2d\x4d\x9d\x5c\x4f\x8c\xdd\x0f\
+\xed\x55\x02\x73\xe8\x92\x43\x1e\xa0\xde\xf3\xd0\x5e\x7f\xfd\xd5\
+\x56\xb7\xea\x28\x8b\x3a\x5e\xbf\xae\xf6\xd5\xb5\x86\xd7\xa5\x6e\
+\xf0\xc3\x36\xe3\x76\x0b\x5b\x2e\xda\x97\x2d\xdb\x66\x8c\x58\x2c\
+\xc7\x54\xf3\x80\x8c\x18\xe5\xc3\x72\x20\x55\x01\x07\x97\x65\x5d\
+\x0a\x2d\x81\x81\xaf\x1a\xc2\x37\x87\x72\x0d\x97\xbc\x00\x11\xf2\
+\x19\xc0\xec\xea\xc6\xb8\x49\xdf\x52\x46\x9e\x1b\x66\x76\xa5\xd7\
+\x98\x5a\x9b\x1e\x1d\x7b\x76\x93\x37\x76\xb7\x27\x26\x60\x93\x14\
+\xa3\xf5\x0d\xb1\x21\xb4\x5c\x82\xc2\xc5\x9c\x61\xe6\xea\xe0\xc5\
+\x70\x4c\xfb\x26\x75\x82\xca\xa4\x2e\x02\x46\x23\x8b\x38\x36\x65\
+\xea\x26\x8c\x25\x31\xf9\x43\x07\x80\xc3\x97\x1e\xf2\x37\xe9\xce\
+\x77\x7e\x18\x00\xf0\xbf\x7c\xfc\x77\xf0\xbb\xaf\xfe\x97\xc1\x20\
+\x6a\x0e\x16\x49\x73\x30\x0c\xb0\xa6\xab\x09\xd5\x06\xd2\x82\xa4\
+\x41\x60\xb8\x51\x8a\xc9\x1d\xdb\x30\xb3\x67\x11\x6c\x2d\x12\x17\
+\x9f\x5e\xb2\xf3\x5f\x97\x35\x02\x22\x19\xd1\x91\x9e\xcd\xc0\x62\
+\x8e\x60\xd8\xdc\x5b\xa8\x6e\x7e\xf8\x61\x27\xb8\x91\x66\x9f\x18\
+\x95\x46\x0c\x35\x3d\x23\x68\x71\x52\x7d\xf7\x81\xef\x61\x44\xee\
+\x44\xeb\xe2\x2f\x00\x26\x05\x08\x51\xa3\xc1\x51\xa3\xa9\x52\x37\
+\x09\x7a\x84\xfe\x94\x1d\x2a\x34\x71\x19\x91\x73\x25\x7a\x86\x62\
+\xcd\x80\x33\x01\x68\xc4\x91\xd8\xfe\x51\x13\x6c\xe6\x87\xb1\xfb\
+\x7b\x7b\xfc\x3f\x00\x70\xf3\x6d\x6f\x54\x10\xb3\x14\x7e\x0a\xda\
+\xde\xe1\x04\x5d\xdd\x89\xf6\xf4\x0a\x65\x4d\x5f\x2f\x71\x06\xf6\
+\x74\x66\xa6\xd0\x9e\x9a\x04\x3b\xc6\xa9\x64\xcb\x17\xbf\xb3\x71\
+\xf9\xbf\x3b\x34\xd8\x77\x2f\x38\x9f\xb8\xaf\xf6\x65\x87\x4b\x04\
+\xa5\xb2\x50\xd9\xc8\x19\x66\x0c\x92\x73\x28\xdc\x95\x0a\x02\xcb\
+\xd2\x30\xab\x1e\xb8\x82\x76\x05\x55\x62\x0e\xaa\x67\x79\xae\x59\
+\x0a\xb8\xa3\xb3\xd1\xe2\x91\x6f\x77\x5f\xfa\xbb\x7d\x33\xfd\x20\
+\x91\xa1\xb8\xdd\x62\x3f\x5d\x44\x06\x86\x02\x2b\xd8\x7c\x2e\x30\
+\x54\x2a\x29\x5b\xa5\x58\xf4\x0c\xb0\xa8\xf3\xa7\xa9\x43\x23\x22\
+\xb0\x75\x02\x6a\xae\x92\x3b\x2b\xd0\x2d\x80\x3f\x7a\xe7\x1f\x0b\
+\x08\x15\x9a\xb0\xea\x36\xe9\x1e\xde\x74\x59\x85\x64\x33\xe9\xbd\
+\x4a\x2e\xb5\x98\xdb\xb7\x17\xad\xf1\x31\xb0\xb5\x38\x91\x6c\xff\
+\xbb\xbe\x1b\x5f\x2f\xf5\x8f\x02\x00\x87\x05\x76\x81\xea\x2c\x65\
+\x0e\xe7\x16\x6b\x2a\x7d\xa9\x20\x39\x7d\xef\xd6\xf7\x1e\xbf\xad\
+\xd2\x0d\xe4\x82\x06\x48\xd1\xaa\xed\xad\x8c\x13\x5d\xbc\xa1\x70\
+\xc8\x1b\xe3\x2c\x01\xc0\x95\x83\xcf\xff\x73\x03\xd7\x06\x11\xfa\
+\x2b\xab\xb0\xc3\x91\x6e\x4b\x0e\x47\xa5\x40\x7e\x0e\xd7\xf4\x15\
+\x70\xa5\xf4\x4f\xc2\x42\x39\x07\x2c\xaf\xf4\x31\x37\xd3\x2e\xb5\
+\x46\x8f\x83\x54\xd3\x3c\xa5\xc0\xeb\x0e\x65\x54\x78\x7c\xb5\x26\
+\xbe\xe2\xe2\x39\x68\xb0\x60\x4d\x05\x70\x8c\xb8\x11\x63\xea\x82\
+\x45\x74\x67\x26\x61\x1d\x0d\xbf\xba\xfe\xbc\x7f\x55\x34\xdb\x92\
+\xec\xdb\x22\xdd\xc7\x45\x79\x55\x8f\x88\xcb\xde\x7d\x19\xc4\xe7\
+\x55\x3b\x32\x41\x1b\x90\x58\xd5\x50\xbc\xce\xa8\x36\x26\xcd\xa1\
+\x54\x65\x4d\x3d\xb9\x5b\xb7\x0e\xc9\x51\x28\x85\xa4\xf9\x5a\x3c\
+\x19\x06\x22\x3e\x11\xed\xfb\xcb\x73\x34\x7b\x2f\x3b\x87\xf6\xc4\
+\x04\x3a\xb3\x33\xf5\x75\x01\x51\x72\x66\x27\x97\x2c\x69\x04\x51\
+\x22\x74\x70\x5c\xe9\xc3\x4b\x53\x8b\xc8\x90\x16\x96\x4a\xc1\x45\
+\xee\x2d\x0a\xc0\xa0\xb0\xed\x4c\x06\xa4\x2e\x60\x20\xbb\xb0\xa5\
+\x2d\x00\xab\x9c\x1e\x86\xc9\xce\x01\xce\xa2\xd1\xed\x60\x6c\x7e\
+\x16\x69\x4a\xbd\x0d\x3b\xf6\x88\xcc\xef\x25\x17\xb1\x6e\x89\xa5\
+\xe7\x1c\x6c\x4a\x03\x0f\x67\x2a\x84\xee\x22\xfb\x65\x1c\x8e\x89\
+\xf7\x3e\xde\x03\x64\x54\x9d\xb2\x59\x6c\xd0\x60\x0a\x72\xf5\xb0\
+\x5c\x5b\x6a\xed\xf1\xf8\xc0\xf7\x4e\xf2\xde\x47\xae\x18\xfe\xf5\
+\xa5\x11\xd2\x31\x13\x45\xdc\xe8\x76\xa8\x08\x0c\x6b\xb7\xb4\x78\
+\xc0\x89\x36\xef\xfc\xa9\x61\x2f\x6d\xf4\x52\xf4\x07\x29\xda\xcd\
+\x38\xa8\x2c\xe2\x07\xb7\x9d\x57\xc8\x1e\x5c\x61\x38\xa9\x72\x2d\
+\xe9\x09\xe9\x14\x72\xfd\xd4\x9c\xd9\x3c\x35\xb5\x29\x4c\x1c\x63\
+\x7a\xcf\x05\xe8\xce\x4e\xb3\x4b\x52\x3a\x95\x6e\xfd\xbf\xbf\x3f\
+\xd8\xff\x4d\x92\x93\x1b\x04\x9b\x89\x5c\x98\xa1\xe5\xab\x38\x88\
+\xc3\x1d\x3d\xc5\xc2\x36\x0f\xd8\x91\x1c\xdb\xa7\x37\xf8\x81\xb3\
+\xcd\x4f\x7a\x70\x50\x2d\x72\x85\xfa\x92\x31\xb1\xda\xbe\x5b\xb3\
+\xf6\x44\xd0\xaf\x9d\x23\xe6\xd8\x7e\xbb\xf9\xe2\xdb\x8f\x47\xfb\
+\x3f\x41\x20\x6a\x74\x3a\x6c\x1a\x8d\xec\x8b\xda\xd0\x0a\x70\x09\
+\x37\x33\x57\x27\x79\xa8\x52\xb3\xf6\xef\xfd\x81\x45\xab\x11\xa1\
+\xdd\x34\x39\x5f\x50\xd3\xad\x54\x61\xa7\xd2\x77\x28\xe1\x60\xaa\
+\xa2\x68\x21\x01\xa4\x66\xb4\x6c\x09\xb7\x0a\xc1\x72\x40\x3a\x4a\
+\xd0\x99\x9e\xc6\xf6\x2b\x2e\x43\x77\x6e\x06\x20\xa2\x95\x64\xf2\
+\x9b\x4b\xc3\x2d\x8f\x55\xc8\x2e\x61\xcf\x65\x05\xdb\x51\x83\x77\
+\x2b\xb8\x83\x5f\xab\xe3\x99\xc8\xba\xed\x27\xdb\x64\xc2\x79\x6b\
+\x58\x85\x0e\xbe\x09\x51\x43\x91\xd4\xa8\x82\x7c\x95\x1d\xb1\x72\
+\x5d\x4a\xa1\xcb\x59\xd5\x90\x1c\xd3\x31\x73\xd1\x83\x33\x7c\xea\
+\xca\x0e\xad\xef\x1f\x9b\x9d\xcd\xa6\x8f\xac\x9e\xc3\x70\x6d\x3d\
+\xf3\x7f\x44\x8a\xdc\x4d\x5c\xc7\xd0\x65\x41\xc1\x2a\x13\x45\xc7\
+\xd9\xba\xb4\xf1\x4e\xb3\xe4\x21\xd4\xb4\x9d\x55\x58\xc7\xaa\x81\
+\xae\xa0\x94\xeb\x4d\xa7\x14\x12\x3d\xea\x76\x06\x86\xad\x6c\x39\
+\xc2\x49\x64\x30\x7f\x60\x3f\xc6\xe6\x67\xe1\xd2\x14\x60\xf0\x23\
+\x1b\x07\x3e\x74\x3a\x5d\x38\xa2\x96\x6a\x43\xaf\xd3\xf5\xf1\x00\
+\xe5\x15\x4b\xd5\xad\x23\x06\x74\x04\x85\xbb\x52\xf3\x83\x4e\x10\
+\xd2\x70\x70\xac\x48\x9f\xde\x72\x93\xea\x5c\x2d\xdf\x57\xf6\x16\
+\xe9\x36\x24\x52\x8c\x1f\x52\x93\xbe\xfd\xcd\xcb\x21\x2a\x62\xe0\
+\x38\xf6\xfd\x97\x39\x3a\xba\xd4\xe6\x8d\xc5\x26\xf7\x17\x9b\x63\
+\x63\x30\x51\x44\x36\x49\x90\xf4\x06\x41\x50\x48\x55\x98\x58\x15\
+\x66\xca\x9b\x9f\xa6\x2e\x23\x39\x30\x57\xda\xbe\x00\x6c\x6e\xea\
+\x39\x98\xd3\x2f\x04\x41\x01\x69\x01\x95\x8c\xe4\xcd\x0b\xdc\x89\
+\x73\x59\x2b\x5a\x67\x7a\x1a\x33\x17\x2c\x72\xd4\x6c\x90\x4d\xd2\
+\x74\xc3\x8e\x3f\xf2\xed\xf5\x2b\xff\x43\x16\x84\x39\x62\x09\xd7\
+\x88\x31\xb0\x44\x50\x3c\x4a\x3f\x96\x57\x8e\x8b\x25\x31\x55\x3d\
+\xe8\xfa\xa0\x70\x44\x88\x10\xaa\xe2\x5a\xe3\xb0\x83\x54\xf1\xe9\
+\x2b\xae\x8c\x34\x14\xca\x21\xf6\x41\x08\x77\xec\x90\xef\x76\x11\
+\xa0\x0f\x03\xcb\xb4\xfd\xc8\x59\x6c\x3f\x02\x00\xcf\xe2\x2f\xbc\
+\xc3\x18\xd7\x6d\x8e\x75\x41\x64\xb0\x9e\x9c\x46\x3a\x18\x96\x51\
+\x79\x58\xa7\x56\xf1\x80\xa0\x9b\x11\x30\x4a\x2c\xe2\x98\xaa\x08\
+\x9d\xef\x4a\x42\x85\xe5\xab\x03\xcd\x12\x3e\x63\xb9\x08\x52\x6e\
+\x2a\x55\xf1\x01\x07\xe8\x69\x76\x49\x69\x92\xa0\x3d\x31\x8e\xc9\
+\x9d\xdb\xd1\x9e\x9c\x04\xc0\xb4\x3e\x68\x7e\xff\xf8\x68\xfb\x57\
+\x8f\x0d\xb7\x7f\x3f\xe7\xee\x13\x93\x61\xb5\x4c\xab\x78\x9f\x00\
+\xea\xf5\x9e\x9c\xf4\x39\xca\xb6\xaf\xb2\x1b\x8b\xfc\x7c\x4f\xd9\
+\x17\xe0\x81\x3d\x39\x2b\x38\x18\x00\x50\x56\xfd\xc0\x41\x3f\x7c\
+\xa9\x8d\x24\xfe\x56\x36\x3f\xe4\xd2\xe6\x48\xe5\xf3\x72\xce\x4d\
+\x65\x20\x53\xfe\xe5\xbe\x85\x5f\xba\x7d\x92\x97\x16\x66\xf9\xd4\
+\xbe\x79\x3a\xf6\xe2\xb1\xf9\x39\xb0\xb5\x48\x93\x14\x76\x30\xc4\
+\xe0\xdc\x3a\xf4\x96\x6e\x79\xcd\xae\x6c\x49\x63\x60\x94\x38\x74\
+\xf2\x05\x50\x92\x1d\xcc\x08\xc0\x20\xd4\x04\x9c\xa2\xa1\x55\xfb\
+\x45\x57\xb5\x10\x35\x1a\x5f\xfc\x64\x47\x09\x66\x2e\x58\xc4\xf8\
+\xd6\x2d\x99\x38\xb9\x6c\x71\xec\xf7\xfb\x17\xde\xbd\x92\x4c\x9f\
+\x2e\x4b\xec\xc4\xe5\xf2\xe7\x80\x97\x21\x0e\x15\x01\xcd\xaf\x5c\
+\x55\xc7\xea\x35\x24\xd6\xd0\xa8\x32\x7e\x29\x21\x7e\x83\x1a\x15\
+\xe3\xe5\x6b\xf7\xf1\x6c\xd2\x29\x2d\x73\x7d\xe2\x2a\xfe\x2e\xd7\
+\xa9\x43\x60\xd4\xcc\x35\x54\x70\x35\xbf\xd7\xf0\x2a\xb6\x9e\xec\
+\xf3\xe4\xea\x38\x96\x2f\x6d\x60\x38\x1f\x19\xd3\x69\xb4\xdb\x88\
+\x9b\x4d\x4e\xfa\x7d\x72\x49\x0a\xe7\x44\x05\x88\x8c\xf6\xe9\x94\
+\xf1\xf9\x52\xeb\x10\x9b\x48\xa7\x40\xd0\x96\x42\xb3\x72\x83\xec\
+\x5d\x4e\x3c\x2b\x7c\x69\xd8\xae\x15\x72\x27\xc0\x60\x6b\x81\x28\
+\x42\x14\xc7\xd8\x7a\xe9\x45\x68\x74\xda\x70\xd6\x71\xca\xd1\xea\
+\x37\x56\x9e\xf5\xfe\xf9\xd6\xd9\x1d\xab\xc3\xa9\x33\xb2\xd5\x9e\
+\x7c\xf1\x46\x44\xfc\x90\x1d\x47\xc5\x32\x2e\x56\xa3\x79\x2b\x2c\
+\xde\x22\x65\xa7\x1a\xb9\x94\x6d\x5e\xa6\x3a\x2f\x20\xae\xe6\x54\
+\x84\xda\x19\xbd\x2c\x97\x1f\x93\x30\x8f\xf0\x2b\x51\x54\xc4\x29\
+\x52\x41\x92\x4d\x91\xd2\x95\x04\xac\xde\x21\xda\x83\xef\xb8\x9f\
+\xff\x10\x31\x60\x78\xd4\xb8\xc8\x7c\xe7\x25\x13\xd1\xca\xb3\x27\
+\xb7\x6f\x87\x73\x0e\x2e\x4d\x91\x0e\x86\xf9\x3f\x03\x38\x2b\x26\
+\x75\x33\xc3\xe6\xfd\x71\x91\x21\xc1\x0d\xa4\xea\xf8\xf5\x0a\x0d\
+\x2e\x94\x72\x01\x16\x39\x11\x1f\x38\xb1\x2b\x31\xc7\xf2\x5d\x9a\
+\xa2\x35\x31\x8e\xb8\xdd\x42\x14\xc7\x98\x5a\xdc\x99\xf1\xf9\x52\
+\x8b\x81\x6b\x1f\xb9\x77\xf9\xea\x0f\x33\x31\x4e\x0c\xb6\x3d\x61\
+\xe0\x48\x4d\x06\xa3\xea\x80\x48\xf6\x41\x1f\xa9\xc2\x17\xe5\xd6\
+\x55\x6d\x7b\xf6\x19\x72\x39\x29\x95\x6a\x88\x9d\x7e\xff\x23\x82\
+\xc0\x51\x16\x83\x4a\x33\xcd\x35\xfd\x7a\xba\xb9\x5c\x30\xc4\x3c\
+\x21\x99\xea\x10\x31\x2e\xd9\x43\x54\x33\x01\x9c\xe4\x60\x25\x41\
+\x61\x62\x00\x96\x9b\xc9\x49\xb7\x78\x1f\xc0\x71\x1b\xbd\x9d\x0d\
+\x4a\xe6\xa3\x46\x03\x71\xa3\x01\x9a\x9a\x44\x7f\x65\x0d\x1b\x27\
+\x97\xb2\x2d\x99\xf9\x17\x32\x20\xcc\x8e\x37\xbc\xf6\x13\x82\x8e\
+\xe1\xa0\x8c\xab\x50\xc4\x10\xe8\xaa\xed\xe9\x23\xb8\xd4\x02\xce\
+\xa1\xd1\xed\x20\xed\x0f\x30\xbd\x6b\x11\x9d\x99\x69\x6e\xb4\x5b\
+\xe4\xac\x05\x3b\x8b\xd5\xd1\xd4\xbd\x03\x6e\x2d\x27\xae\xb1\x5e\
+\x1e\x4e\x96\x09\x71\xd0\x8a\xaf\xca\xb0\xa4\xe3\x2f\xd9\x71\x5d\
+\xb2\xb3\xb8\x52\xb7\x27\xf1\x3e\x5c\x53\x0d\x64\x2a\x15\xce\x04\
+\x09\x41\x5c\x5d\x16\xa8\x61\xe0\xd2\xd9\x97\xf9\x87\xda\xe7\xe3\
+\x21\x62\xaa\x69\xf5\xd2\x6b\xb2\x39\x64\xd6\x88\x53\x21\x47\x72\
+\x66\x22\x00\xe0\xac\xdb\x76\xec\xac\xdd\xfa\x29\x66\x20\xe2\x34\
+\x9a\x32\x67\xb7\x4e\x9a\xb3\x3b\xb7\x44\xc7\x5e\xd4\x9a\x18\x6f\
+\x36\xba\x5d\xd8\xe1\x10\xa3\xde\x00\xe9\x60\x98\x8f\xae\x73\x70\
+\x29\x4b\x4c\x54\xf5\xe7\x95\xd3\xc1\x04\x3b\x56\xee\x21\x65\xa1\
+\x31\x9c\x47\xf2\xf9\x7b\x39\x6b\x31\x7b\xe1\x2e\x0c\xcf\x6d\x60\
+\x7a\xd7\x4e\xd9\x31\x41\xe7\xfa\xcd\x47\x3b\x71\x7f\xf7\xc1\x73\
+\x17\xfd\xc9\xd2\x70\xee\x58\x31\x61\x9d\x02\xd3\xee\x3f\xdb\xe8\
+\x41\x1a\x65\x54\x4f\x7a\x21\xa6\x9a\xec\xc1\x4a\xeb\x33\x8b\xc0\
+\x2a\x0d\x54\x9b\x59\x03\x0b\xa7\x77\x0f\x64\x67\x17\x43\xd1\xbc\
+\x79\xd3\x36\x71\x9f\x83\x57\x06\x26\x86\x08\x59\x4d\xdf\xbf\x1c\
+\x4e\x13\x60\xe2\xc8\x19\xc4\xf5\xf3\x70\xcb\xa0\xd3\x52\xc3\x9e\
+\x75\x0b\xc7\xce\xa6\x0b\xc7\x26\xda\xab\x07\xda\xe8\xed\x31\x06\
+\xcd\xa8\x3b\x86\xe6\xd8\x58\x26\x60\xce\xc1\x8e\x12\x24\xfd\x3e\
+\x92\xde\x00\xe9\x60\x00\x9b\xa4\xb0\x49\x8a\xce\xd4\x24\x98\x39\
+\x73\x1d\xa9\xf5\x6b\xe2\xa3\x46\x03\xce\x3a\x38\x9b\x69\x76\xd4\
+\x6e\x83\x60\x60\x87\x23\x34\xda\x2d\x8c\xcd\xcc\xe7\xf8\x04\x30\
+\xb7\x77\x37\x4c\x23\x46\x67\x66\x06\xb0\xce\x83\xee\x47\xfb\xdb\
+\x3e\xfd\xf8\xfa\xbe\xfb\x8a\x54\x44\xd3\xeb\x38\x40\xe0\xb4\xa3\
+\xf6\x01\xa0\x38\xe0\x92\xb7\x41\xd5\x7e\x42\x88\xec\x80\x44\x29\
+\x1d\x65\x1f\xa2\xcf\x06\xc3\x35\x2d\xd0\x4a\xca\x7e\x54\x6c\xe1\
+\x3d\x02\x36\x8e\x84\x36\x6b\x07\x7f\x12\x95\xe8\x19\xb4\xcf\x2a\
+\x53\x4a\xaa\x21\x4a\xe8\x21\x19\x55\x86\xab\x0e\x26\x39\x00\x81\
+\xfe\xae\xff\xdc\x3f\x63\x00\x63\xb4\x3a\x35\x13\x9d\xde\x35\x69\
+\x56\x2e\xec\x46\xbd\xdd\x0d\xe2\xb9\xb8\xd5\x44\xdc\x6a\xa1\x3b\
+\x93\x09\x96\xb5\x16\xc9\x60\x80\x66\xa7\xc3\x26\x8e\x89\xad\x85\
+\x4d\x52\x24\xfd\x01\x86\xe7\xd6\x31\x36\x37\x83\xb8\xd3\x46\xda\
+\x1f\x62\xb8\xbe\x81\xe6\xd8\x18\xb7\x26\xc6\xc9\x8e\x86\x60\xc7\
+\xdc\xe8\x74\x88\xb7\xb2\x87\x83\x07\xa3\xf8\xc4\xc0\xb6\x4f\x3a\
+\x98\xc1\x83\xcb\x97\xdf\x3d\xd5\x5c\x99\x5b\x4d\xa7\xcf\x64\xea\
+\xa8\xd0\x97\x20\x07\x27\x31\x46\x2f\xff\x99\xf2\x58\x45\xc4\xb3\
+\x44\x3a\x0e\x51\x3e\x3d\x6c\x59\x92\x08\x0d\x91\x08\xf6\xe5\xa5\
+\x90\x8a\x75\x4a\x61\xc9\x14\x2b\x96\x34\x64\x19\x55\x97\xfb\x9c\
+\x45\x94\x0a\x9d\x5b\x53\xb8\xda\x1d\x2a\x38\xd0\x33\xca\xc2\x3e\
+\x3c\x89\x4e\xc9\x46\x4a\x15\x13\x51\x05\x99\x94\xb5\x81\x0d\x37\
+\xb5\xba\x91\x4e\xad\x32\xf8\xc1\xec\x9a\x6d\x34\x17\x9d\xde\x36\
+\x13\x9f\xd9\x3b\x16\xaf\xef\x6d\xd3\x60\x27\x19\xd3\x6e\x8f\x8f\
+\x81\x1d\xd3\x20\x89\x8f\x37\x89\xb7\x46\xcd\x86\xc9\x84\x64\x3a\
+\xd3\x7c\x26\x34\x3a\x1d\x34\xba\x5d\x30\x33\xd9\xd4\x8d\x4c\x14\
+\x37\x11\x83\xd6\xfa\xad\x87\x1b\x51\x3a\xdd\x8a\x46\xdb\x96\x06\
+\x5b\xbe\xf8\xc4\xfa\xae\x6f\xf5\x6d\xb6\x8c\x01\x04\xac\x8c\xa6\
+\xcf\x64\x8a\x6d\x3c\xa8\x20\xad\x9e\xe8\x69\x56\x7b\x18\x7d\xb5\
+\x31\x07\xdd\x98\x74\x70\x4c\x26\x10\x02\x7f\x3b\xab\xd2\x50\x58\
+\x01\x55\xce\xe7\x60\x07\x19\x85\x35\xdf\xec\xca\x62\xff\xe2\xda\
+\x16\xd5\x62\xcf\x4f\x2e\xbd\x9c\xf9\x33\x76\x81\xc6\x87\x15\x45\
+\xe1\x56\xb8\xa6\x26\x2e\x23\x21\x62\xaa\x61\x01\x71\x65\xbd\x19\
+\xd7\x0d\x2d\x08\x9b\x73\x39\xb2\xa7\x93\xad\x47\x97\x46\x5b\x8f\
+\x12\xf3\xdf\x32\x80\x6e\xb4\x31\x31\xd7\x58\xba\xa0\x45\xc3\xa9\
+\xc7\xd6\x2f\xfe\x2a\x00\x4c\x37\xce\x2c\xcc\x36\x97\x77\x4f\x36\
+\xd6\x2e\x6c\x46\xa3\xb9\x6f\x2c\x3d\xe7\x03\x5b\xdb\x27\x2f\x98\
+\x6e\xad\xec\x1d\x8f\x37\xf6\xdc\x7b\xfa\xea\x3f\x1e\x6f\xac\x4f\
+\xce\xb5\xce\x5c\xf0\xc4\xfa\xee\x07\xf3\x2f\x47\x0a\xad\x21\x15\
+\xee\x84\x68\x82\x32\xcb\x41\x05\xa6\xe4\xec\x93\xe4\xe2\x09\xa0\
+\xcc\xb0\xda\xb2\xa5\xa2\x78\x39\x58\xa3\x98\xf4\x60\x82\xf4\x10\
+\x92\x41\x24\x0d\x91\x04\x11\xb2\x7f\xd3\xad\xff\xf6\xf8\x6d\xde\
+\x3c\x14\x34\xec\x60\xe0\x90\x2f\xcb\x8a\xca\x20\xd7\xd0\x9e\xd5\
+\x00\xa4\x1c\x10\x92\xc3\x1d\xf4\x28\x75\xd2\x40\x93\xe3\xea\xf3\
+\x7c\xf3\x05\x69\xd7\xa2\xc6\xb1\x50\x4d\x66\xa1\x05\x98\xbc\x20\
+\x33\x11\xd7\x0e\xee\xae\xb4\x8c\xfb\x9b\x47\x59\x1b\x65\xdd\x7c\
+\x1d\xaa\x9b\xa9\x9c\xd7\xd9\x89\x74\x47\x2d\x91\xae\xcb\xeb\xda\
+\xbd\x7e\x1d\xcb\x9a\xbe\x78\x4d\x31\xe1\xc4\xff\x5d\x10\x40\xd5\
+\xe7\x0a\x24\x88\x8c\xa4\x7c\x09\x5e\x80\xc9\x9e\x13\x7b\x71\x92\
+\x3b\x76\x49\xb3\x57\x15\xfc\xc9\xd5\x7e\xb4\xd2\x0c\x65\x2f\x76\
+\x72\xe3\xa7\x1a\x7a\x24\x7a\xd8\x64\x5d\x21\xa8\x63\x93\xc0\xfe\
+\x15\xb9\x92\x39\x70\x0d\x65\xff\xbf\x4e\xe1\x48\xb0\x99\x75\x99\
+\x92\xc3\x4c\xa7\xf8\x34\x26\x0d\x79\x97\xc1\x1b\x57\x58\xc7\xa0\
+\xea\x30\x65\x0a\xb9\x8b\x54\x1a\x6f\x12\x23\x1a\x38\x44\x5b\x08\
+\xe1\x90\x0e\x0a\xb6\x78\xb0\x44\xf1\xa0\xe7\x50\x10\xe9\x19\x70\
+\x2a\x5d\xa4\x00\xb1\x2a\xb6\xbc\x8b\x98\x2c\x96\x15\xaf\x90\x30\
+\x10\x6e\x9d\xe2\xc0\xa7\x10\x07\x5b\x2d\x6b\xaa\x62\x9e\xaa\xec\
+\x58\xc3\xca\xb5\x44\x1a\x69\xca\x6a\x26\x7f\x08\x72\x3a\xb3\x1e\
+\xb0\x4c\xb2\x9b\xb8\x86\x13\xaf\xd3\xb0\x52\x90\x28\x68\xd9\xd6\
+\x41\x2c\x89\xdd\x07\xa4\x97\x6b\x16\xa4\x4e\xd2\x3b\x11\x59\x4d\
+\xfe\x20\x75\xdd\xaa\x2b\x9e\x82\x03\x27\xe1\x72\xa9\x52\xb8\x53\
+\x09\x3c\x57\xb6\x51\x96\x8a\x4b\xf2\xfd\x83\x58\x83\x1c\xca\xf1\
+\xe0\xe5\xa0\x48\x19\x90\x51\x75\x49\x05\x53\xb5\x63\xc8\x9b\x5a\
+\xd2\x45\x1f\x48\xda\x95\xb8\x02\xc9\xec\xa9\x43\xdb\x42\x61\xd8\
+\x74\x69\x63\x58\x9b\xe0\x60\xe2\x36\x05\xad\x53\x95\x8e\x30\xd5\
+\x4a\x45\xc2\x4d\x70\x58\xe3\x0f\xe6\xfd\x39\x94\x3d\x80\xbe\xda\
+\x21\xc9\x9e\xae\xca\x0f\xa8\x8e\x86\x85\x9f\x50\xa2\xc9\xac\x2c\
+\xd6\xcc\x48\x2a\xbf\x1e\xee\xcb\x75\x43\x35\x50\x37\x62\x47\x77\
+\x73\x91\x1f\x15\x17\x7a\x38\x86\x51\x01\x49\xd1\x7e\x20\x57\x4d\
+\x70\x1d\x45\x5b\x92\xc1\x64\xfd\x9a\xea\x2f\x8e\x50\x3f\xe6\x43\
+\x09\x0f\xc2\x93\xaa\x5a\x1f\x75\x13\x48\x0f\xaf\x08\x16\x3d\x52\
+\xed\xda\x96\xa0\xc1\xa4\xb2\x08\x4a\xa7\xa2\x24\xa6\x62\xf9\xbe\
+\x43\xd9\x49\x1c\x96\xab\xa1\x67\x03\xa8\xe1\x58\x08\xb3\x19\x68\
+\x9a\xb7\x56\xed\xb2\x75\x0e\xba\x90\x86\xc0\xeb\xa8\xe0\x8f\xf5\
+\x8c\x65\xa8\xb8\x95\xf4\x3a\x5b\x6f\x01\x82\x2a\x87\x1f\x23\x82\
+\x72\x93\x25\x73\x38\x31\x84\xf5\xb6\xd1\x0a\x74\xa3\x0f\x9f\xb9\
+\xba\x98\x91\x6b\x37\x6c\x92\xba\xf8\x60\xd1\x47\x40\x35\x0b\xc7\
+\xc1\xb1\x02\x9a\x58\x1c\x9e\x9c\xf4\x51\xb2\x8c\x48\xad\x7c\x91\
+\xac\x59\x04\x1c\x41\x0e\x7a\xed\x8b\x96\x6e\xd9\x83\x4f\xaa\xd3\
+\xb7\x5a\x50\x23\x96\xe9\x70\xd0\x3b\x58\xd7\x06\x17\x2a\x15\x28\
+\xe8\xd6\x0a\x48\xac\x21\x4d\x5c\xb8\x54\x46\x75\x3d\xb0\x2f\x07\
+\x53\x40\xb6\x50\x03\x0f\x3c\xe3\x97\x2a\xac\x1a\xdd\x39\x84\xc0\
+\xd7\x55\xb0\xc8\xb2\x16\xaf\xc6\xa0\x89\xb9\x03\x54\x6a\x19\x57\
+\x4c\x27\x95\x04\x87\x10\x2b\x77\x21\x4f\x11\x35\xcb\x9f\x39\x48\
+\x17\xa9\xb4\x72\x8e\xf5\xf4\x52\x75\xef\xb9\x62\x69\x64\x5e\x2f\
+\x27\x68\x30\xd7\x03\x6e\x52\x25\x65\xac\xa0\xe7\x2f\x15\x1b\x1c\
+\xeb\x8e\xc9\x4f\x00\xd4\x33\xfe\xe4\x7e\x07\x59\x0b\xd0\xc9\x07\
+\xd4\xfc\x56\x66\x05\x35\x67\x84\x94\xa0\x1d\x98\xbd\xff\xae\xb9\
+\x18\x2e\x8d\x7e\xf1\xa1\x04\x6d\xc2\x29\x38\x80\x4d\x86\x80\xa9\
+\xf5\x31\x65\x8f\x61\x29\x2c\xd2\xad\x70\xb0\x6d\x24\x74\x49\xb2\
+\xe7\x8e\xea\xba\x8a\x98\x2a\xbc\x3e\xbd\xb2\x7e\xb3\x6e\x5e\x12\
+\x7d\x01\x5a\xf3\xf4\x4a\x5a\x69\x7d\xa8\xc2\x72\xae\x5e\x2b\xd5\
+\x6c\xba\x63\xa0\x2e\xb1\xa8\x58\x15\xae\x58\x2a\x0e\x17\x41\x04\
+\x0b\xa1\x19\xda\x8a\x94\xde\x9d\x60\x7c\x6f\x5e\x25\x5e\x2d\x35\
+\x9f\x6b\xb7\x59\x52\xd0\x91\x53\x12\x05\x28\x18\x28\x41\x0a\xee\
+\x0d\x76\x0d\x72\xe8\x4c\x28\x58\x48\x59\x6e\x17\x63\x22\x15\xa8\
+\xb2\x12\x92\x2a\x75\x5a\xed\x33\x52\xbe\x5d\x73\x1d\xd4\xc4\x51\
+\x40\xb7\x91\x07\x23\x5c\x4a\x41\xa1\xca\x7c\x02\xe9\xd3\x29\x40\
+\x37\x59\x36\xce\x04\x56\x10\x95\x14\x90\x95\xf1\x93\xa7\x46\x7a\
+\x83\xa2\x62\x09\x95\x2d\x67\x41\x6a\x1a\x2c\xc1\x94\x7d\x14\xff\
+\x0f\x36\x86\x77\xb7\x57\xe9\x33\x5f\x00\x00\x00\x00\x49\x45\x4e\
+\x44\xae\x42\x60\x82\
+\x00\x00\x35\x8c\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\x18\x00\xec\x00\xe0\xa9\x21\xac\x80\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x08\x06\
+\x10\x1f\x13\xe9\xf1\x8e\xd9\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\xbd\x79\x94\x5c\xd5\x7d\xef\xfb\xd9\
+\xe7\xd4\x3c\x75\x55\xab\x5b\x52\x77\x4b\x02\x8d\x08\x09\x4b\x60\
+\x06\x81\x04\x66\x92\x19\xc4\xe0\x64\xe1\x9b\xfb\x5e\xec\xb5\xbc\
+\x3c\xdc\xf5\xd6\xbb\x4e\x96\x7d\x1d\x03\xef\x05\x3b\xce\xf0\x9c\
+\xf7\xb2\xae\x7d\xf3\x92\x38\xc9\x8b\x6f\xe2\xbb\x6c\x5f\x3b\x76\
+\x62\x48\x1c\x04\x66\x36\x10\x83\x24\x30\x60\x90\x00\xcd\x53\x4b\
+\x3d\x77\x57\x55\xd7\x5c\x75\xce\xde\xef\x8f\x33\xd4\x3e\xd5\x2d\
+\x06\xa3\x96\x91\xdc\x9b\xa5\xd5\xd5\x45\xf5\xa9\xaa\xb3\xbf\xfb\
+\x37\x7c\x7f\x13\xcc\xaf\xf9\x35\xbf\xe6\xd7\xfc\x9a\x5f\xf3\x6b\
+\x7e\xcd\xaf\xf9\x35\xbf\xe6\xd7\xfc\x9a\x5f\xf3\x6b\x7e\xcd\xaf\
+\x5f\x8b\x25\xce\xd4\x1b\xdd\x77\xdf\x7d\xca\x7b\xfc\xd5\xaf\x7e\
+\x55\xcc\xdf\xfa\x5f\x13\x00\x8c\x8d\x8d\xf9\x1b\xff\x17\x7f\xf1\
+\x17\xa7\x7c\xdd\x3c\x28\xce\x41\x00\xe8\x9b\xef\x2d\x85\x02\xd5\
+\xfe\xed\x2f\xff\xf2\xaf\xe6\x01\x71\xae\x03\x20\x9f\xcf\x93\xcb\
+\xe5\x9c\xed\x57\x0e\x08\x84\x8f\x03\xe7\x39\xdc\xe7\xff\xfa\xaf\
+\xff\x7a\x1e\x0c\xe7\x1a\x00\xee\xbe\xfb\x6e\x84\x10\xac\x59\xb3\
+\x86\xb5\x6b\xd7\xd2\xdb\xd3\x43\xa6\xab\x8b\x05\xdd\xdd\x98\xa1\
+\x10\x4a\xa9\x80\x84\x10\x0a\x94\x82\xbf\xf9\xdb\xbf\x79\xcb\xeb\
+\xcf\x03\xe3\x2c\x02\x40\xe7\x4a\xa5\x52\x64\xbb\xba\x48\x67\xba\
+\x58\xb9\x72\x05\xeb\xd6\xad\x23\x9b\xcb\x39\x3b\xdf\xa1\x2a\x94\
+\x2b\x22\x3c\x9c\xfc\xdd\xdf\xfd\xdd\x3c\x18\xce\x16\x00\x28\xa5\
+\xb8\xe7\x9e\x7b\x66\xfc\x3f\xa5\x94\xf6\xcf\xd9\x70\xd3\x30\x58\
+\x73\xc1\x05\x6c\xba\xe2\x0a\x56\xad\x5a\x45\x28\x14\x72\x3e\xa4\
+\x70\xb1\xa0\xf4\x9f\x12\x81\xe0\x9b\xdf\xfc\xe6\xbc\x74\x78\xdf\
+\x02\x60\x74\x54\x29\x08\x00\x40\x01\x48\x85\xff\x9f\x52\xee\xef\
+\xee\x49\x57\xde\xf3\x90\xcb\xe5\x58\xbb\x76\x2d\xcb\x96\x2d\x23\
+\x9b\xcd\xd2\xdb\xd3\x4b\xa6\x2b\xa3\x49\x05\x7c\x44\x48\xf7\xe7\
+\x3f\xfc\xc3\x3f\xcc\xab\x8c\xf7\x0b\x00\x46\x47\x47\x15\x3a\x00\
+\xbc\x13\x1f\xd8\x6c\x50\x4a\xba\xc0\x68\x3f\xd6\xa5\x03\x28\x42\
+\x21\x93\xae\x4c\x17\x89\x54\x8a\xfe\xbe\xc5\x5c\x74\xd1\x06\x2e\
+\xbc\x70\xad\x0f\x84\x80\x1d\xe1\xab\x11\x10\x4a\xf1\xad\xff\xf1\
+\x3f\xe6\x01\xf1\xab\x00\xc0\xc8\xe8\xa8\x12\x28\xee\xb9\xe7\x5e\
+\x9c\x83\xaf\x10\xde\xe6\xca\xb6\x04\x70\xf4\xbd\xb3\xd9\x52\xb6\
+\x37\x54\x21\x11\x8e\x80\x40\x29\xe9\xd8\x01\x52\x21\x69\x7b\x0d\
+\xdd\xb9\x1c\x97\x5f\x7e\x39\x97\x5f\x76\x19\x5d\xd9\x1c\xc2\x00\
+\x43\x18\x8e\xda\x50\x9d\xb6\x84\xf3\x87\xdf\xfe\xf6\xb7\xe7\xc1\
+\x70\x46\x00\x30\x32\xaa\x40\x71\xef\xbd\xf7\xfa\x27\x1a\x40\x4a\
+\xe9\xbc\xb3\x04\xa9\xa4\x26\x09\x54\xe0\x44\xfb\xf6\x81\xbb\xf9\
+\x52\xb5\xa5\x08\xd0\x06\x91\x26\x5d\x56\xaf\x5e\xcd\xea\xd5\x6b\
+\xe8\xed\xed\xa1\xb7\xa7\x97\xc5\x7d\x8b\x08\x85\xc2\xee\xdf\x38\
+\x6f\xaa\x10\xfe\x7b\x7e\xf7\x3b\xdf\xf9\xb5\xf6\x34\xe6\x18\x00\
+\x23\x0a\x4f\x02\x28\x67\xb3\xfd\xcd\x42\xb5\x6d\x01\xdf\x10\x04\
+\x25\x65\x00\x00\xde\x49\xf7\x40\xe3\x49\x8f\xe0\x6b\x9c\xcd\x74\
+\xc0\xe4\x9e\x76\x29\x49\x24\x93\xa4\xd3\x69\xd2\xe9\x34\x17\x5e\
+\x78\x21\x1f\xfc\xe0\x07\x59\xd0\xdd\xed\x4b\x82\xb6\xbf\x21\x82\
+\xc0\x52\xf0\xfd\xef\x7f\xef\xd7\x02\x0c\x73\x0c\x80\x61\xa5\x14\
+\xdc\x7b\xef\x3d\xee\x49\x6e\x6f\x98\xd4\x6d\x82\xc0\x26\x3a\x6a\
+\x42\x4a\xd9\x96\x18\x6d\xa6\x08\x25\xa5\x2b\xd6\x05\x12\x77\xc3\
+\x75\x70\xb9\xff\x5f\xb9\xd2\x42\x2a\x35\x03\x50\xeb\xd6\xaf\x63\
+\xf3\x96\xcd\x5c\xb8\xf6\x42\x84\x10\x98\xa6\x89\x61\x18\x6d\x3b\
+\xc5\x51\x54\xfe\xdf\xfd\xe3\x3f\xfe\xe3\x39\x2b\x1d\xe6\xf4\x0b\
+\x0c\x8f\x8c\x28\x5c\x37\x50\x37\xe8\x1c\x3d\xaf\xfc\x93\x2a\x5d\
+\x63\x4d\x6a\x46\xa2\x27\x1d\x02\xea\xc0\xb5\x01\x74\x5e\x40\x79\
+\x9b\xec\x6f\xb4\xc4\xff\x55\xc9\x00\xd0\x3c\x69\xa2\xbb\x9e\xb9\
+\x5c\x96\xb5\x17\x38\x9e\x46\x2e\x97\x63\xc9\x92\x01\xba\x73\x0b\
+\x34\xe9\xe0\x1b\x0f\xbe\x61\xf9\xc3\x1f\xfc\xe0\x9c\x51\x19\x73\
+\x0b\x80\xe1\x61\xa5\x50\xdc\x73\xf7\x3d\xae\x78\x57\x2e\xd3\xa7\
+\xdc\x13\x2b\x40\x2a\x47\x2b\xfb\x00\x70\x37\x4c\x28\x94\xdd\xde\
+\x06\xe9\xab\x06\x77\x63\x03\xd6\xbf\x6b\x40\xea\x9e\x85\xf7\x7a\
+\x3c\x95\xa1\x40\x82\x8d\xaf\x6b\x02\x1e\x89\x52\x8a\x50\x28\x44\
+\x32\x99\x24\x91\x48\x30\x30\xb0\x84\xcb\x2e\xbf\x8c\x8b\x37\x6c\
+\xd0\xd4\x16\x01\x42\xca\xf9\x9c\xce\xdf\xff\xe8\x9f\x7f\x74\x56\
+\x02\x62\x6e\x01\x30\xe4\x00\xe0\xee\x7b\xee\x99\x45\xdc\xab\xa0\
+\x5a\x40\x3b\xcd\xee\x66\x49\x25\xfd\x1b\xed\x6f\xb8\x94\x33\xdc\
+\x48\x4f\xaa\x04\x0d\x48\xe9\xaa\x06\xdd\x48\xc4\x7f\xbe\x2d\x09\
+\x94\xef\x29\xb4\x3f\x8b\x0a\x78\x23\xd9\x5c\x96\x2b\x37\x5d\xc9\
+\xa6\x4d\x9b\xe8\x5e\xd0\x8d\x69\x98\x84\xc2\x61\xf7\xe6\x39\xea\
+\x48\x97\x56\x28\xb8\xff\x81\xfb\xcf\x0a\x29\x31\xa7\x1f\x64\x68\
+\x68\xc8\xa1\x82\xbf\x78\x77\x5b\x2f\xa3\xfc\x4d\xf4\x3d\x82\x80\
+\xe8\xee\xb0\x11\x74\xe2\x48\x67\x0f\x67\x79\xde\xc1\x8d\xb6\xc1\
+\x72\x16\x60\xf9\x1b\xed\x0a\x78\x29\xdb\xaa\xc9\x7b\x6f\xef\x73\
+\xea\xaf\xd3\xde\x7b\xf5\xea\xd5\xac\x5c\xb9\x8a\x85\x0b\x7b\x18\
+\x18\x18\x60\xe9\xd2\x65\x84\x23\x61\x9f\x94\x52\x5a\xb4\xd3\xbb\
+\xf6\xa3\x8f\x3e\x46\xb5\x5a\x7d\xdf\x01\x62\x6e\x01\x70\x72\xc8\
+\x91\x00\x77\xdf\x1d\xb0\x01\xbc\x0d\x11\x9e\x6b\xa7\xb9\x73\x3e\
+\x38\x3a\x4e\xa7\x54\x9a\xe8\xee\x94\x1e\x9d\x27\x5a\x3b\xed\x42\
+\xb4\xb9\x05\x5f\x45\x9c\xe2\xef\xd0\x36\x7c\x76\x63\xd5\xa1\xa0\
+\x7d\x10\x01\xb1\x58\x8c\x64\x3c\x41\x3a\x93\x62\xc3\xc6\x8d\x5c\
+\x79\xe5\x95\x2c\x5a\xb8\x28\x00\x04\xef\x7b\x07\xd5\x07\xfc\xf8\
+\xdf\x7e\xfc\x2b\x07\xc3\x9c\xbe\xd9\xc9\x93\x27\xfd\x60\x50\xd0\
+\x90\xd3\x74\xb7\xa6\xaf\x1d\x69\xe0\x6d\xb8\xb7\xd9\xed\x8d\xf3\
+\x81\x40\xdb\x7e\x50\x1e\x20\xa4\xc0\xb1\x26\x34\xf5\x10\x60\x1b\
+\x75\x60\xa8\xf6\x09\xd7\x49\x28\xff\x7d\x74\x09\xd4\xb6\x21\x94\
+\x44\x03\xae\x6e\x8c\x0a\x07\xb8\x02\xff\x73\xae\x5b\xbf\x8e\x6b\
+\xae\xb9\x86\x35\x17\xac\x21\x1a\x89\x12\x8d\x44\x31\x43\xa6\xc7\
+\x4f\x06\xfe\x16\x14\x0f\x3e\xf8\xe0\xaf\x44\x3a\xcc\x39\x00\x14\
+\x8a\xbb\xbf\xf8\x45\xa4\xc2\x65\xf5\xa4\xc6\xe3\x3b\x37\x5a\x49\
+\x97\xf1\x43\x17\xe5\xda\x26\xd2\x3e\x7d\x01\xf0\xc8\xb6\x78\x96\
+\x04\xf5\x3b\xb6\x42\x8a\xa0\xc8\xc7\x65\x17\x95\x14\x28\xe1\xda\
+\x08\x1d\xbc\x43\xdb\x95\xd4\x6c\x0f\x8f\x8b\xd0\x81\x05\xb3\xa8\
+\x24\x9d\xc6\x6e\x4b\xbb\x6c\x2e\xcb\xea\xd5\xab\x59\x3a\xb0\x94\
+\x45\x8b\x17\xb1\x62\xf9\x0a\x7a\x17\xf5\xfa\x2e\x2c\xa8\x36\xc7\
+\xa1\x1c\xb2\xea\xa1\x87\x1e\x66\xc5\x8a\x15\x00\x7c\xfa\xd3\x9f\
+\x9e\xb3\x7d\x0a\xcd\x25\x00\x02\x22\x50\xe9\xba\xb1\x2d\x42\xd1\
+\x36\x5c\x05\x82\x3c\x41\x62\x46\x2a\xe9\xa0\xb5\xad\x09\x34\x3d\
+\xad\xff\x8d\x7b\x4f\x45\xd0\xb0\x6b\x73\x0a\x6e\xd0\x41\x12\xdc\
+\x48\xda\xa0\x62\x16\x23\x53\xf9\x2a\x88\x0e\xa9\x42\x1b\x2c\xee\
+\x89\x72\x7e\x97\xbe\x87\x30\x35\x39\xc5\xae\xc9\x5d\xec\x50\x3b\
+\x30\x0d\x93\x78\x3c\x4e\x24\x12\x65\xc5\x8a\xf3\xb9\xea\xaa\xcd\
+\x5c\x71\xc5\x15\xe8\xba\x41\x29\xd8\xb6\xed\x36\xf6\xee\x7d\x73\
+\xce\x55\x40\x68\x6e\x2f\xaf\x3a\x92\x3d\xa4\x0f\x06\x66\xd1\xf3\
+\x9e\x08\xd7\x8d\xb5\xb6\xee\xa6\xcd\xf6\x05\x36\x65\xa6\xff\x3f\
+\xdb\x09\xd5\x0d\x32\xe8\x0c\x3a\xb5\x81\xd5\x09\x08\xe1\xab\x1d\
+\x07\x38\x41\x10\x7b\x48\x14\x41\xc0\xf8\x3f\xdb\x6a\x44\xb8\xef\
+\x61\xd9\x16\xd3\xd3\x25\x60\x9a\xf1\xf1\x31\x76\xed\x7a\x01\x29\
+\x15\xb9\x5c\x17\x9b\xaf\xda\xc2\x15\x9b\x2e\x67\xf5\x9a\x35\x01\
+\xee\x61\x2e\x97\x31\xb7\xdb\xdf\xb6\xf4\x75\x9f\x5b\xba\x6e\x5a\
+\xc0\xed\xf2\x68\x5c\xa5\x66\x90\x40\xc2\x17\xf9\x3a\x33\xe8\x6d\
+\x89\x07\x24\x11\x24\x6d\x54\xfb\x1a\xde\xc9\x77\xcd\x07\xcd\x95\
+\xd4\x0c\x34\x1d\x28\xae\x1b\x8a\x12\x78\x14\x82\xf2\xdf\x43\xf9\
+\x6e\xa6\xff\x9d\x08\xda\x1a\x04\x62\x15\xb4\x55\x9a\x6f\xdc\x10\
+\x30\x64\x41\x31\x35\x55\x60\xfb\xf6\x07\xf9\xf2\x97\xfe\x20\x00\
+\xe2\xb3\x5a\x02\x08\xf4\x53\xa5\xe5\x82\x82\x7f\x33\xbd\x7b\x22\
+\xfc\x4d\x0a\x5a\xe7\xfe\x5e\x48\x85\x70\x4f\x9a\xd0\x8c\x34\x47\
+\xf4\x2a\x7f\x97\xfd\x6b\x7a\x5c\x02\x3e\x2d\xd8\x36\x3a\x35\x02\
+\x29\x70\xe2\x75\xe9\x21\x5c\xc0\xcd\xd8\x58\x45\x50\x88\x29\x8f\
+\x0a\x00\xdb\x21\xb0\xda\x7c\x85\xf0\xbd\x06\x1d\xb8\xca\xb7\x83\
+\x3a\x40\x45\xdb\x5b\x38\x53\x6b\x8e\x6d\x00\xfd\x34\x7a\xec\x5b\
+\xfb\xc4\xf9\x06\x1b\x12\xe9\x1a\x3f\xfe\xcd\x0c\x9c\x14\xed\x71\
+\xe7\xf5\x15\x33\x36\xd1\xe7\x02\x84\x42\x48\x57\x4a\xc8\xf6\xc6\
+\x77\x9e\xd8\x40\x58\x9a\xa0\xbd\xa2\x3a\x54\x82\x54\x0a\xe1\x5a\
+\xee\xbe\xa1\x27\xda\x2c\xa7\xee\x22\xd2\xa9\x5e\x74\x33\xc2\x17\
+\x91\xd2\x4f\x88\x11\x1e\x07\xa1\x38\x63\x20\x08\xcd\xb1\x09\x10\
+\x24\x80\x94\x76\xc3\x09\x92\x2d\x9e\xcb\xa7\x07\x72\xfc\x0c\x62\
+\xd4\x8c\x00\x8f\x08\x5c\x5f\xcd\x3c\x65\x1d\xc0\x71\xf4\xb7\xd0\
+\x72\x0e\x3b\x52\xd4\x85\xa7\x4f\x3c\xa9\xa1\x5f\x43\xf9\x00\x42\
+\xb7\x09\x3a\x40\x34\xd3\xee\x20\xf0\x59\x94\xea\xa0\x91\xb5\xa8\
+\x64\x40\x75\x9c\xb9\xfd\x9f\x63\x09\xd0\xb6\xad\x3b\xbe\x3c\x9a\
+\x58\xd6\x6e\x64\x40\x14\x6a\x01\x5b\x2d\x51\x04\x1f\x04\x8e\xa5\
+\xaf\xa4\x13\x27\xb0\x6d\x1b\x21\x04\x42\x08\x9f\x25\xf4\xfd\x6c\
+\x37\xc2\xa7\xbb\x67\xa8\x4e\xf1\xee\xb1\x81\x6d\x60\xb5\xff\xbf\
+\xce\xea\x79\xf9\x04\xa0\x44\xd0\x28\x44\x0f\x47\x7b\xc9\x2f\x68\
+\xa1\x6e\x3a\xb3\x96\x34\xb5\xe3\x45\x43\xa5\x3a\x93\x1a\x60\xae\
+\x25\x80\x9b\x84\xe1\x7f\xa7\x20\xcb\xa7\xab\x09\xe5\x9f\x32\x57\
+\x07\x74\xf8\xd2\x6d\xde\x40\xbb\x89\x52\x61\x59\x16\x27\x4f\x9e\
+\xa4\xd9\x6c\x92\x4a\xa7\x48\xa7\xd3\xc4\x22\x31\x4d\x93\x4a\xed\
+\xa4\x6b\xec\x23\xc1\xcd\xf7\x6c\x86\xd9\x5c\x4b\x1d\xb9\x52\xb5\
+\x33\x54\x95\x14\x9e\x3f\x1a\x00\xb8\x4f\x41\xfb\xd6\xa7\x26\x11\
+\x3b\xdc\xdb\xce\xf4\x35\xe1\xc4\xbc\xcf\x11\x00\xf8\x99\x37\x32\
+\xe0\xbf\x2b\x8f\xf8\x90\xba\x5a\x20\x60\x94\xcd\x3c\x85\x4a\xbb\
+\x89\x6d\xf1\x6d\x59\x36\xb5\x5a\x8d\x64\x32\x49\x2a\x99\xa2\x56\
+\xa9\x32\x39\x31\x49\x57\x36\x4b\x2c\x1a\x45\x08\xa1\x01\xcb\x23\
+\x8c\x3a\x72\x04\x74\xaf\x41\x0f\x5b\x2b\xdd\x25\xd5\xc2\xd6\x3e\
+\x5f\xa0\x66\xa5\xad\x75\x23\x53\x77\x5d\x75\xe9\x86\x16\x14\x73\
+\x5f\xe4\x10\x57\x81\x3b\x71\x96\x03\x40\xa2\x10\x22\x58\xf9\xe3\
+\x6f\xa2\xee\xea\xcd\x76\x3a\x02\xae\x83\x66\xec\x05\x18\x3f\x30\
+\x0c\x81\xd5\x6a\x91\x4a\xa5\x58\xb6\x6c\x19\x57\x5e\x79\x25\x2f\
+\xbf\xfc\x32\x7b\xf6\xec\xa1\x90\xcf\x93\x49\xa7\x89\x44\xa3\x18\
+\xa6\xd1\xa1\x1a\x34\x05\xa5\x59\x66\xfa\x67\x14\x5a\x25\x93\x4b\
+\xe0\x6a\xba\xdd\x73\x05\x83\xee\x67\x40\x12\x74\x1a\xf4\x9a\x72\
+\x97\x1a\x57\xa0\x94\x4b\x93\xea\x99\x51\xe7\x82\x0d\x20\x66\x89\
+\xa1\xab\x59\x18\x41\xcf\xe2\xd7\xef\x91\x4f\xf8\xb8\x79\x01\xaa\
+\x93\x29\x04\x2c\xab\x45\xb3\xd5\xa4\x65\x59\xc4\x62\x31\xea\xf5\
+\x3a\xc5\x62\x91\x4f\x7d\xea\x53\x1c\x38\x70\x90\x5d\xbb\x9e\x63\
+\xcf\x9e\xdd\xe4\xf3\x79\x12\x89\x38\xb1\x58\x3c\xe8\x4b\x68\xd2\
+\x44\x4a\x27\x37\x11\x61\x68\x6e\x1a\x7e\x8c\x40\xa3\xf9\xb5\xdc\
+\x44\x82\xd2\x4d\xb7\x5e\x3a\x49\x2c\xa1\x02\x86\x69\x50\xbd\xa8\
+\x19\x24\xd6\xb9\xe1\x06\x06\x6c\xa3\xb6\x88\x6d\xeb\x5f\xa9\xf1\
+\x03\x5e\x0c\xdf\x31\xdc\x04\xed\x1c\xbf\x20\xbb\xd6\xd6\xd1\x85\
+\x42\x91\xc9\xb1\x51\xb2\xa1\x10\xe5\xe9\x69\x6e\xba\xe9\x26\x9e\
+\x7c\xf2\x49\x96\x2e\x5d\xca\xd2\xa5\xcb\xa8\x54\x06\xc8\x66\x3f\
+\xc0\x81\x03\xcf\xb3\x7f\xff\x1e\xc6\xc6\xc6\xc9\x76\x65\x89\xc5\
+\x63\x80\xa0\xd9\x6c\xd0\x68\x34\x90\x52\x62\x08\x03\x33\x64\x62\
+\x1a\x06\xc2\x30\xfc\x14\xb1\x40\xe0\x48\x53\x25\x3e\x7a\x3a\x0c\
+\x3d\x3a\xd8\x47\x8f\x01\x45\x8a\x80\xeb\xdb\xc9\x50\x2a\xe9\xb8\
+\x93\x74\x18\xc2\x67\xb9\x0d\x40\xc0\xb5\xd3\xa5\x81\xce\x92\x29\
+\x3a\x09\x96\x60\xb8\x56\x27\xf8\xfc\x1b\x2c\x15\xd5\x4a\x99\xb5\
+\x89\x04\x0b\x52\x29\x8e\x85\xc3\x2c\x5f\xbe\x9c\x45\x8b\x16\xf1\
+\xe2\x8b\x2f\x72\xf3\xcd\xbd\x8c\x8d\xf5\x31\x39\xb9\x92\x0d\x1b\
+\x2e\xe3\x92\x4b\x5e\xe5\xd0\xa1\x1d\xec\xdd\xbb\x8f\xb1\xb1\x31\
+\x7f\x73\x97\x2e\x5d\x4a\x22\x91\xa0\x56\xab\x51\x28\x14\xa8\x54\
+\xab\x58\x96\x85\x21\x04\xd1\x58\x8c\x68\x34\xda\x56\x41\x22\x98\
+\x62\xee\x78\x03\x92\xa0\x38\x09\xf2\x0c\x48\xa5\x05\x96\x34\xd6\
+\x91\x0e\x15\xa0\x07\x93\xce\x19\x37\xb0\xd3\xc0\x72\xa3\x25\xfe\
+\xe6\xeb\x62\x53\x57\x05\x1d\x3e\xb3\xce\x1d\xe8\x04\x8d\xd5\x6c\
+\xd2\x1d\x8b\x51\x6b\xd4\x59\xb1\xee\x42\x62\xb1\x18\x2b\x57\xae\
+\xe2\xa5\x97\x7e\xce\xf4\x74\x81\xde\x5e\xc5\xc9\x93\x36\x4f\x3f\
+\xdd\x8f\x65\x2d\xa1\xa7\x67\x23\x2b\x57\x3e\xc4\xd0\xd0\xff\xe4\
+\xe2\x8b\x2f\xe6\xfa\x1b\x6e\x60\xe9\x92\x25\x98\x86\x41\x3c\x91\
+\x40\x08\x41\xa1\x50\xe0\xc8\x91\x23\xec\xde\xbd\x9b\xd7\x5f\x7f\
+\x9d\xb1\xb1\x31\xe2\xb1\x38\xf1\x44\x1c\x43\x18\xae\xee\x3e\xc5\
+\x26\xea\x7a\xdd\xa7\x80\x5d\xec\x88\x60\x26\x54\x80\x15\x42\x21\
+\x35\xad\x20\xce\x25\x09\xd0\x0e\xf9\x6a\xa7\x1f\x8d\xb4\x51\x41\
+\xe3\x47\x2a\x27\x34\xac\x07\x5f\x82\xc4\x4a\xdb\xf7\x6f\xb5\x5a\
+\x44\x43\x21\x4e\x36\x1b\xac\xea\xeb\xc7\xb2\x6c\x72\xd9\x2c\x85\
+\x42\x81\x62\xb1\x40\x2e\xd7\xe4\xda\x6b\x87\xd9\xb0\x21\xc4\x89\
+\xc1\x2c\x83\x27\x7a\xb1\xed\x3e\x56\xac\x58\xc1\x6f\xff\xf6\x6f\
+\xb3\x6a\xf5\x2a\x22\xe1\x08\x21\xd3\x74\x7d\x70\xc9\xe2\xc5\x8b\
+\x58\xb5\x6a\x35\x9b\x37\x6f\x66\x70\x70\x90\x97\x5e\x7a\x89\x17\
+\x5f\x78\x81\xc1\x13\x27\x30\x4d\x93\x68\x34\x4a\x38\x14\xf6\xf3\
+\x17\xbd\x1c\xc7\xc0\xa9\x57\x33\x03\x55\xa8\x99\x11\x4e\xfd\x71\
+\x30\x16\x01\xea\x9c\x60\x02\xb5\x9c\xfb\x00\xeb\xe7\x05\x76\x84\
+\xf2\x03\x3a\x42\x3b\x11\xca\xf3\xb7\xa5\x4b\x0b\xeb\x92\xc0\x7d\
+\xce\xb6\x5b\x88\x56\x8b\x08\x50\xb3\x6d\xe2\xae\x11\x28\x0c\x41\
+\xb3\xd9\x64\x7a\x7a\x1a\xc3\x30\x1c\xfd\x6e\x54\xe8\x1f\x28\x90\
+\xcd\x0d\xb3\x6b\xd7\xab\x74\x77\x77\xb3\x78\xf1\x62\x50\xd0\x6c\
+\x36\x69\x81\x53\x81\xea\xfe\x30\x0c\x83\xae\xae\x2e\x27\x63\x78\
+\xed\x5a\xae\xbb\xf6\x5a\xfe\xf1\x07\x3f\x60\xe7\xce\x9d\x54\xab\
+\x55\x0c\xd3\x20\x99\x48\x22\x84\x93\x9f\x20\x3b\xdc\xbe\x40\x4c\
+\x41\xe3\x04\x24\x1d\xf4\xb2\x6a\xe7\x01\xf8\xea\xce\x8b\x5a\x89\
+\x73\x45\x02\x68\x37\x45\x27\x70\x66\xb0\x60\x4a\x0b\x17\x7b\x71\
+\x03\x82\xc9\x21\x1e\xfb\x86\x02\xdb\x96\x60\xdb\x54\x5b\x2d\x6a\
+\x40\xad\x56\xa3\xd1\xa8\xd3\x6a\xb5\x10\x42\x50\x29\x97\x89\x46\
+\xa3\x94\xcb\x65\x6c\xdb\xe1\x0a\x26\x27\xc7\x29\x14\xf6\x71\xf1\
+\xc5\x1f\x24\x14\x0a\xd1\x6a\xb5\xdc\x4d\x6f\xdf\x6d\xfd\x31\x02\
+\x04\x82\xbe\xbe\x3e\xd6\xaf\x5f\x4f\xa9\x54\x62\xf5\xea\xd5\x6c\
+\xdf\xfe\x10\x95\x4a\x85\x44\x3c\xd1\x36\x0a\x75\x62\xd3\xff\x45\
+\x38\xc1\xa1\x8e\xef\x19\x60\x0c\x65\xdb\x50\xf4\xd8\x68\x1d\xf4\
+\x67\xb9\x0d\x40\x30\x97\xdf\xd3\x81\x33\x6e\x8a\xf2\xe3\x22\xbe\
+\x3c\x98\x61\x04\xb6\x95\xbf\x94\x4e\x62\x69\x15\x78\x51\x4a\x64\
+\x36\xcb\xee\x3d\x7b\x48\x67\xd2\x54\x2a\x55\x4c\xd3\xe4\x95\x57\
+\x5f\x25\x1e\x8b\xa1\x94\x62\x7a\x7a\x9a\x72\xb9\x4c\x36\x9b\x65\
+\xe9\xd2\xf3\x58\xb5\x6a\x15\x52\x4a\x3f\x1b\xc8\xd9\x73\xe1\xff\
+\xec\x04\x83\x65\x5b\x8c\x4f\x4c\xd0\xd7\xd7\xc7\x47\x3f\xfa\x51\
+\x72\xb9\x1c\xdf\xfa\xd6\xb7\x68\xb6\x9a\x84\xcc\xd0\x29\xca\xda\
+\xda\x11\xa8\x40\xd6\x11\x3a\x45\xdc\xa9\x12\xda\x86\x83\x12\xe7\
+\x04\x00\x02\xe4\x7f\x90\x0f\xf0\xdc\x1e\xed\x8b\x07\xbc\x00\x34\
+\x16\x0e\x19\x60\xcd\x94\x52\xd4\xea\x35\xa2\x89\x04\x1b\x36\x6d\
+\xe2\x92\x4b\x2e\xe1\xb1\xc7\x1e\xe3\xb9\xe7\x76\xa0\x94\xa4\x58\
+\x2c\x12\x8f\xc7\x49\xc4\x13\xc4\x62\x11\xfa\x16\xf7\xb1\x72\xe5\
+\x0a\x92\xa9\x14\xb1\x58\x8c\xee\xee\x6e\x9a\xcd\xa6\xbb\xc1\xca\
+\xfd\x29\x34\x10\x38\xa8\xf0\x1e\x56\x2a\x15\x8e\x1f\x3f\xce\x07\
+\x2e\xba\x08\xdb\xb6\xd9\xb2\x65\x0b\x6f\xbe\xf9\x26\xcf\x3c\xf3\
+\x2c\x5d\x99\x8c\x1f\xf7\x76\xec\x01\xd1\xf1\x3d\x65\x50\x16\x2a\
+\xe7\xac\xb7\x6d\x04\x81\x52\x76\x90\x7d\x14\x67\x8e\x09\x3a\x43\
+\x6e\x20\x33\x22\x80\x5e\x02\x80\x16\x06\xd2\x4e\x84\x5e\xab\x27\
+\x02\xe4\x88\x54\x8e\xfe\x9f\x9a\xca\x73\xf1\xc6\x8d\x6c\xdb\xb6\
+\x8d\x74\x3a\x8d\x94\x92\xd7\x5e\xdb\x4d\x36\x9b\xe5\xba\xeb\xae\
+\x23\x9b\xcd\x62\x9a\x21\xba\xbb\x73\xc4\xe3\x71\x6c\x29\x31\x0d\
+\x03\xd3\x34\x7d\x03\xd2\xa9\x20\x16\x18\xc6\xec\x2a\xc0\x7b\x7c\
+\xe2\xc4\x20\xd3\xc5\x22\x03\x03\x03\xb4\x9a\x4d\x10\x82\x6b\xaf\
+\xbd\x96\x17\x5f\x7c\x91\x66\xab\x49\x24\x1c\xf6\x63\x18\x0a\xa9\
+\x05\x74\x14\xca\x2f\x53\x56\x6d\xb0\x7b\xd4\x30\x5e\x16\x54\x3b\
+\x37\xa2\xd3\x80\x3c\xeb\x55\x80\x10\x2a\xe0\x0b\xeb\x99\xc1\xde\
+\x49\x31\x0c\x03\xdb\xb6\xdb\x46\xa0\x90\x01\xab\x38\xe0\x2b\xa3\
+\x68\x59\x36\xad\x56\x8b\x35\x6b\xd6\x90\x4c\x26\x91\x52\xb2\x66\
+\xcd\x1a\x56\xac\x58\x41\x2c\x16\x43\xda\x36\x08\x41\x28\x64\xa2\
+\x94\xa2\xd1\x68\x38\xe0\x31\x0c\x9a\xcd\xa6\x93\x06\x25\x0c\x57\
+\xda\x6b\xa7\x7e\x16\x00\x48\x29\x79\xfd\x8d\x37\x48\xa5\x52\x2c\
+\x58\xb0\x80\xa6\x6b\x63\x0c\x0c\xf4\x73\xc1\xda\x0b\x78\xf5\x95\
+\x57\xdd\x4e\x26\x6a\x46\x5b\x1b\x1f\xf2\xb2\x5d\x41\x34\x23\x4b\
+\x79\x06\x3d\xad\x91\x5e\x67\xbd\x04\x08\xd4\xe8\x07\x03\x26\xde\
+\x0d\x5b\xb0\x6c\x29\xe1\x54\x37\x56\xbd\x84\x55\x2a\xd2\xac\x54\
+\xa9\x37\x1a\x34\x9b\x2d\xb0\xed\x0e\x22\xc8\xf9\x9b\xb0\x69\x12\
+\x0e\x85\x19\x1c\x1c\x64\xe3\xc6\x8d\x84\xc3\x11\x40\x61\x18\x06\
+\x8d\x46\xd3\xb7\xa0\x2c\xcb\xc2\x30\xdc\xec\x23\xa5\x30\x4d\x13\
+\x84\xc0\x56\x0a\x25\x2d\x84\x21\x02\x45\xa1\x3a\x12\x84\x63\x01\
+\x52\x2a\x95\x38\x78\xf0\x20\x6b\x56\xaf\x21\x1c\x0e\xfb\x46\xa6\
+\x10\x06\x17\x5e\x78\x21\x2f\xfd\xfc\x25\x97\xb1\x14\x01\x1a\xb8\
+\x9d\x19\xa4\x3a\x4e\x37\x3e\x18\xbc\x18\x40\x20\x31\x45\x0f\x7b\
+\x9f\x0b\xe1\xe0\x40\xa0\x27\x40\x9a\x38\xdb\x79\xc1\x75\xb7\xd3\
+\x34\x3e\xc4\xd0\x01\x45\xbe\x3e\x8a\x8a\x1f\x25\xd1\x73\x98\x5c\
+\xf8\x38\x76\x7d\x9c\xd1\xc3\x47\x7c\xaf\x41\x08\x90\xb6\x42\x98\
+\x26\x0b\x7a\x7b\xd9\xb9\x73\x17\xb6\x6d\x73\xe3\x8d\x37\xd2\xdd\
+\xdd\x1d\xa8\x28\x36\x0c\x83\x56\xab\x45\xa3\xd9\xf0\x0d\xb5\x7a\
+\xa3\x4e\xb3\xd1\x24\x1c\x0a\x11\x89\x44\x10\x86\xe1\xf3\xfc\xa1\
+\x50\x88\x68\x38\x82\x61\x1a\x01\x1b\xe6\xcd\x37\xde\xa0\x52\xae\
+\xb0\x72\xe5\x4a\x6c\xcb\xf6\x81\x2d\xa5\xa2\x52\xae\x38\x92\xc5\
+\x96\x08\x07\x69\x9a\xed\xa2\x3a\x1a\x54\xa8\x76\xb6\xb2\x4e\x84\
+\x49\x66\x0d\x78\x9d\x13\x6e\xa0\x9e\xed\x1b\x48\x98\xd0\x98\xc1\
+\x56\x13\x8e\x1e\x8a\xd3\x6c\x84\x58\xf6\x81\x1c\xb5\xf2\x5a\x2a\
+\x45\x85\x1d\x6e\xb2\xec\x83\x45\xce\xbb\xfc\xa7\x4c\x1c\xdd\x4d\
+\x39\x5f\x22\x14\x82\xfa\xf4\x14\xf5\xe2\x34\x91\x70\x98\x70\xc4\
+\x64\xe7\xce\x9d\x4c\x8c\x8f\x73\xc7\x9d\x77\x92\x48\x26\x09\x19\
+\x06\xd3\xd3\xd3\x94\x4a\x25\x0c\x29\x09\x21\xa8\xd5\x6b\x34\xaa\
+\x55\x92\xd1\x08\xf1\x70\x84\x42\xb3\x49\xbd\xd1\x40\x49\x49\x34\
+\x1a\x25\x12\x8d\x42\x24\x02\x91\x08\xd1\x54\x8a\x74\x26\x43\x22\
+\x1e\xa7\x5e\xab\xb1\xe7\xf5\xd7\x19\x18\x18\x20\x97\xcb\x61\x59\
+\x96\xef\xb7\xef\xd9\xb3\x87\x17\x5e\x78\x41\x53\x1b\x33\x2d\xfa\
+\x40\x4d\xa2\xa0\x5d\x14\xd3\x41\x16\xb5\x03\x4c\xc1\x80\xd2\x39\
+\x20\x01\xe8\x60\xba\xda\x40\xf7\x8c\xe3\x63\x2f\x3c\xc2\xf9\x97\
+\x57\xb0\x5b\x4d\x1a\x55\x83\x4b\xee\xfc\x0d\x8e\xec\x49\xf1\xc6\
+\x8e\x28\x3f\xf8\xfa\x22\xfa\x57\x7c\x84\x55\x17\x7f\x88\xde\x0b\
+\x05\x99\xde\x0c\xc5\x89\x3c\xe5\xb1\x41\x5a\xb5\xc3\x2c\x6c\xee\
+\x67\x60\xed\x20\x43\xc7\xf7\xf3\xf0\xf6\x7f\xe5\x83\x17\x6d\x24\
+\x2e\x0c\xc2\x52\xd2\x9f\xcd\x12\x33\x4d\x84\x6d\x93\xe9\xea\xa2\
+\xab\xaf\x0f\x69\xdb\x34\x1a\x0d\x42\x40\x2c\x1c\x06\x29\x29\x55\
+\xab\x14\x4a\x25\x2a\xc5\x22\x95\x66\x93\x92\x6d\x33\x15\x8d\x92\
+\xec\xeb\xa3\x50\xab\x31\x3e\x3e\xce\x15\x57\x5c\x41\x28\x14\x42\
+\xa1\x68\x35\x5b\x1c\x3a\x74\x88\xc7\x1f\x7f\x9c\x93\x27\x4f\x12\
+\x8f\xc7\x1d\x63\x52\x76\x90\x3c\xde\x26\x4b\x02\x31\x7f\xed\x45\
+\x81\x10\x32\x1d\x25\xef\xe7\x88\x0a\x20\x58\xdb\xa7\xf9\xbf\x9e\
+\xab\x33\x7c\xe0\x20\x43\xfb\x0e\x20\xc2\x21\xd2\xdd\x39\x2e\xba\
+\xf1\x0a\x6a\xe5\x0b\xa8\x95\x61\xe5\x06\x45\xcf\x40\x0c\xa5\x7a\
+\x39\xf2\x7a\x93\x56\x2b\x42\x22\xb3\x88\x54\x76\x80\x50\x66\x13\
+\x66\x08\xba\x57\x95\x59\x75\xf5\x09\x7e\xf6\xc0\x57\x99\x38\x74\
+\x90\x8f\x5d\x73\x0d\xd9\x44\x0a\xdb\xb2\x08\x09\x41\x34\x14\xc2\
+\x6a\x36\xb1\x1a\x0d\x27\xe3\x46\x08\x6c\xcb\x42\x36\x1a\xd8\x96\
+\x45\x4e\x49\x72\x91\x08\x52\x08\xac\x48\x84\x6a\xbd\xce\x64\xa5\
+\xcc\x1b\x2f\xbe\xc8\xd3\x43\x43\x2c\x59\xb9\x92\x25\x4b\x96\x20\
+\x84\xc3\x30\x1e\x3e\x7c\x98\xc7\x1e\x7b\x8c\x63\xc7\x8e\x11\x8b\
+\xc5\x30\xcd\x90\x5f\x78\xaa\x82\x47\x3f\x00\x04\x39\x43\x2a\x12\
+\x4c\x47\xeb\x28\x94\x51\x42\x9d\x43\x2a\x40\x6b\x0d\xa3\x5b\xcb\
+\x81\xd6\x30\xcd\x26\xc5\xd1\x51\xf6\x3e\xfb\x2c\xc9\x6c\x17\x9b\
+\x6e\x95\xa4\x92\x83\x9c\x78\x63\x1f\x60\xb1\x78\x51\x8b\x54\x36\
+\xc9\xe0\xde\x11\xea\xc5\x0c\xc4\x56\x60\x71\x3e\x93\x43\x7d\xb4\
+\x9a\xeb\xc0\xbc\x8f\x3d\x87\xbe\xc9\xf4\x7a\x83\x64\x75\x02\x61\
+\xb7\x68\x4a\x87\x26\x96\xb6\x0d\xb6\x8d\x94\x36\xca\xb2\x51\xb6\
+\xf3\x4f\x4a\x89\xb4\x2c\x94\xf4\x9e\x93\x28\xdb\x26\x27\x6d\x8c\
+\xc9\x49\x1a\x63\x63\xa4\x37\x6e\x24\x1a\x8d\xd2\x68\x34\xd8\xb3\
+\x67\x0f\x4f\x3f\xfd\x34\x47\x8e\x1c\x21\x99\x4a\x11\x76\xbd\x8c\
+\x19\xc1\x2b\x37\xe0\x15\x54\x7f\xed\xda\x86\xd9\xc2\xc6\x81\x22\
+\xd4\x73\xc6\x08\x44\x0f\x78\x69\x91\x30\x9f\xf1\x6b\xfb\xc2\x9e\
+\xc5\xfc\xc6\x53\x8f\x70\xfe\xc6\x61\x6a\xa5\x69\x86\xf6\x1f\x40\
+\xb5\x6c\x9a\xf5\x1a\xcd\x66\xd3\xb1\xe4\xc3\x61\x42\xa6\x41\x24\
+\x16\x27\x96\x4c\xb2\x78\xdd\x45\x2c\x5e\x73\x3d\x93\xe3\x17\xf2\
+\xb2\xf9\x3b\x3c\x70\x64\x92\xab\x7a\xdf\x60\x79\xe2\x00\xd1\xc9\
+\xc3\x48\x5b\x62\x5b\xca\xd9\x5c\x69\x23\x3b\x00\xe0\x3f\xb6\xdb\
+\xcf\x8f\x37\x1a\xbc\x32\x36\xc6\xfa\x68\x94\xf4\xe0\x20\x27\x06\
+\x07\x39\x78\xe8\x10\x3b\x76\xec\x60\x78\x78\x98\x74\x3a\x8d\x61\
+\x18\x6d\xf6\x52\x10\xb0\x6d\x02\x29\x6e\x5a\xf1\x87\x94\xc1\x90\
+\xb6\x9e\x00\x23\x3a\xd3\xd2\xc5\xb9\x62\x03\x88\x60\x10\x48\x20\
+\xdc\x22\xd0\x99\x6d\xdc\x40\x51\x9e\x98\x64\xf7\x93\x4f\x75\x74\
+\x15\x6b\x27\x60\x58\x8d\x06\x2d\xa0\x5a\xa9\xc2\xc4\x04\x43\x47\
+\x8f\x92\xdc\xf5\x3c\x4b\x2e\xdc\xc8\xe6\x5b\xb6\x31\x36\x76\x29\
+\xff\xba\xe7\x12\x92\x43\x43\xac\x2a\x3f\xc5\xca\xcc\x5e\xb2\x85\
+\xd7\x88\x58\x05\x94\xd5\x44\x5a\x36\xd2\x76\x82\x4d\xed\x93\xef\
+\x02\x40\xda\xb4\x5a\x16\xbb\x6a\x35\xaa\x8d\x06\x57\x2d\x58\xc0\
+\xe8\xd1\xa3\xfc\xf3\xf7\xbf\xcf\x78\xa1\x40\xad\x5e\x27\x9d\x4a\
+\x23\x4c\xc3\x37\x64\x02\x29\xe4\x9d\x01\xaf\xf6\xc1\x6f\xc3\xbd\
+\x23\xcc\x3d\x5b\x84\x50\x09\x75\x0e\xa5\x85\x07\x74\xa2\xae\x0e\
+\xe8\x88\x12\xb6\x23\x83\x74\xdc\x18\x2f\xa4\xaa\xbc\x9e\x1c\x6e\
+\x08\xce\xbb\xe9\xa5\x89\x49\xde\x7c\xf6\x49\xc6\xf7\xbf\xce\x9a\
+\xcd\x57\xb1\xf4\x8e\x4b\x51\xe6\x66\x4e\xfe\xe2\x2e\x86\xc7\x0a\
+\xa4\xf3\xcf\xd2\x33\xbd\x8b\x5c\x64\x84\xa4\x3d\x8e\x59\x99\x44\
+\x55\x0a\x88\xda\x34\x42\x5a\x6e\x4a\x98\xc0\x92\xb0\x4f\xda\x1c\
+\xb2\x2d\x16\x0b\xc1\x58\x71\x9a\xd7\xc2\x61\xaa\x0b\x32\x24\xba\
+\x53\x24\x55\x9a\x66\xa5\xe1\x04\xa2\x54\xbb\xbc\x4c\xcc\x56\xd8\
+\xaa\xf9\xfe\x81\xa6\x15\x01\x69\xa0\x02\xad\x6f\x95\x9e\x6c\x74\
+\xce\xe4\x03\xf8\x34\xa7\x96\x7c\x19\xa8\x18\x68\x2b\x3c\xd9\x69\
+\x19\xd3\xae\xb4\xf5\x53\xc5\x85\x96\xb5\xeb\x22\xc6\x93\xc0\x63\
+\x43\xc3\x8c\xfd\xe8\x7e\x8c\xd0\x8f\x39\xff\x83\x57\x12\x4d\xaf\
+\x85\xc5\x17\x93\xef\xf9\x28\x27\x46\xee\x22\x54\x1a\xa1\xab\x7e\
+\x88\xee\xd6\x9b\x64\xaa\xfb\x88\x4c\x9f\x40\x4d\x8d\x42\x7e\x9c\
+\x90\xd1\x62\x4a\x4e\xf3\xef\x76\x95\x09\x0c\xc2\xc9\x2c\x23\xfd\
+\xfd\x24\x2e\xfe\x5f\x39\x3f\x76\x03\x21\x63\x14\xec\x7d\xb4\xea\
+\x07\xa8\x97\x4f\x72\xf2\xcd\xbd\x2e\xe9\x24\xdb\x35\x07\xfe\xb7\
+\xd5\x45\xbc\x0c\x96\x02\xe9\x99\x51\x1d\xaa\xd1\x3f\x02\x5e\xf6\
+\xd1\xb9\x12\x0c\xea\xd4\x8b\xc1\xee\x1b\x32\x98\x2a\xa5\x55\x02\
+\xeb\xfc\xb9\xea\xa4\x5a\x3b\x8c\x4a\xbd\x78\xc3\x6a\xb5\x38\xf4\
+\xe2\x73\x84\x8c\xe7\xe9\xe9\x1f\x60\xf5\xd5\x5b\x10\xe7\xf5\x53\
+\x29\xf7\x93\x9f\xea\x67\xdf\xf4\xc5\x34\xa7\xb3\x98\x8d\x0a\x89\
+\xda\x71\x22\x13\x07\x50\x76\x83\xc3\x45\x38\x3c\xda\x44\x98\x05\
+\x86\x96\xb4\xb8\xec\x23\x17\x71\xc1\x65\xd7\x71\xe8\x95\x28\xe1\
+\x88\x81\xe2\x36\xe2\x49\x8b\xae\xde\x22\xf9\x13\x3f\x65\xe4\xf0\
+\xbf\x33\x35\xb8\x8f\xc1\x03\x07\x91\xf5\xba\x56\xb7\x30\x4b\x86\
+\x30\x1d\xaa\x21\x60\x08\xea\xf6\x42\xa7\x5a\x3c\x17\x8c\x40\xa5\
+\x71\x01\x1d\xe1\x5d\xd5\x51\x25\xa4\x17\x6e\xcd\x5a\xe6\xa5\xda\
+\xe9\xd8\x7e\x5f\x01\x15\xb4\xaa\x05\x20\x2d\x8b\x86\x52\x9c\x38\
+\x7c\x84\x13\x87\x0e\x21\x42\x21\x92\xdd\x0b\xc8\xf4\x2c\x26\xd3\
+\x3b\x40\x62\x45\x3f\xa1\xd8\x22\x6c\xfa\xb1\xd4\x45\x48\x7b\x01\
+\xd9\x03\xbf\xe0\x3f\xac\xef\xa7\x56\x12\x4c\x0e\x85\x98\x3a\xd9\
+\xc7\x33\x87\xa3\x28\x29\x48\x66\x14\x5d\x3d\x82\x7a\x39\xcc\xd1\
+\xd7\x7b\x68\x35\xef\x24\xd7\xbb\x85\x4b\xee\x18\xe1\xbc\xc1\x87\
+\x79\xe3\xd9\x87\x19\x3e\x72\x84\x36\xb5\xaf\x3a\x24\x5b\xb0\x1a\
+\xa8\xdd\x84\xa2\xa3\x28\x26\x98\x45\x71\xf6\x53\xc1\x81\x76\x28\
+\x1a\x0d\x1a\x30\x8a\xbc\x30\x78\x67\x23\x27\x5d\x0a\x68\x1b\x3d\
+\x9b\x9f\xad\x07\xcf\x64\xc0\x95\x72\x4f\x5c\xcb\xa2\x38\x32\x42\
+\x71\x64\x18\xa5\x5e\x76\x3c\x8a\x48\x94\x4c\x4f\x2f\xbd\x4b\xfa\
+\xc9\xf6\x74\x23\x8b\xfb\x39\xfe\xf3\x34\x91\x64\x9a\x68\x28\x42\
+\x66\xe1\x32\xa2\xa9\x01\x6c\xab\x9f\x70\xe2\x52\xaa\xa5\x0c\x99\
+\x9c\x60\xc3\x75\x8a\x50\x38\xc2\x2b\x4f\xf6\xf1\xe2\xa3\xfd\xf4\
+\xaf\xda\xc0\x8d\xff\xe9\x2e\x8a\x23\x8f\x33\x7a\x6c\x2f\xc3\x07\
+\xf7\x71\x72\xdf\x7e\x5a\x8d\x46\x30\xb2\x17\xa8\x25\xf4\xc2\xbf\
+\x02\xcd\x84\xf4\xa9\x61\x71\x6e\x50\xc1\x4e\x8e\x8b\x50\xc1\x26\
+\x0f\x81\xaa\x5e\x57\x0d\xe8\x25\x7b\x78\x35\x77\x0a\x2d\x1f\x80\
+\x8e\x72\x31\x97\x2c\xe9\xa0\x56\x95\xd0\xd3\xb5\xe5\x0c\xc9\xa3\
+\xdb\x19\x56\xa3\xce\xe4\x89\xe3\x4c\x0e\x1e\xf3\xdb\xd3\x18\xc2\
+\xc4\xb6\xac\xc0\x09\x8c\x67\xba\xb9\x60\xf3\x4d\x64\x16\x6e\xa6\
+\x56\xde\xc2\x4f\xbf\x9f\xc3\x30\xa1\x5c\x00\x69\xc3\x4b\x8f\x86\
+\xd9\xfd\xcc\x3a\xd6\x5c\xbe\x8a\x9e\xfe\x69\x56\x5f\x36\xce\xd8\
+\xb1\x9f\x70\xe4\x17\x4f\x32\x71\xec\x38\xe3\x43\x43\x1d\x7d\x0d\
+\xdb\xcc\xb8\xc0\x6e\xd7\x19\xa0\xd9\x47\xf2\x9c\x00\x80\x93\x20\
+\xe1\xb7\x71\x25\xd8\xa8\x49\x37\x0e\xd5\x8c\x53\xe2\x35\x89\xf6\
+\xa2\x79\xda\x35\xa4\x0a\xc6\xd3\xa5\x76\x8a\xe4\xcc\xae\x22\x7a\
+\xa3\x69\x66\xed\xef\xd3\xa6\xe6\x6c\x69\x05\x3b\x85\x28\x45\x39\
+\x3f\xce\xab\x8f\xfe\x13\xe9\xec\x23\xac\xbf\xf6\x5a\xd6\x6d\xba\
+\x8a\x66\xf3\x06\x5e\x7a\xbc\x97\x74\x4e\xf1\x9b\x7f\x2e\x99\x1e\
+\x3f\xca\xa1\x57\x4e\x32\x35\xdc\xc7\xe8\xb1\x95\x08\xe3\x73\xac\
+\xba\xe2\xe3\x5c\x76\xdb\x2f\x78\xe5\xd1\xbf\x61\xff\x0b\x2f\x50\
+\xab\x54\x3b\x0a\x5c\xdc\x1c\x82\xd9\x02\x65\xe7\x82\x11\x18\x48\
+\x6f\xf6\x3a\x84\xfb\x5b\xe7\x35\x86\x22\xb8\x29\xfe\xae\xe9\xe4\
+\xba\xec\x78\x4d\x67\xe9\x98\x9c\x59\x6d\xa4\xa5\x65\x05\xb2\x6e\
+\x67\xb4\x8b\x25\x18\xaa\xa5\xb3\x51\x94\x9b\x83\xd0\x6a\x32\x35\
+\x36\xc1\x33\xff\xf4\xcf\x18\xa1\x7f\x61\xe3\x8d\xb7\x73\xd5\x1d\
+\x9f\x61\xf4\xf8\xc5\x14\xc7\x40\xa8\x9d\xbc\xfe\xcc\x37\xc8\xf4\
+\xf6\xb3\xfa\xb2\x9b\xc8\xf5\xdd\xc8\xe4\xd0\x72\x8e\xbe\xf1\x61\
+\xd6\x5c\xb1\x98\x5c\xff\xdf\xf3\xf4\xf7\xbf\xeb\xb7\x94\xe9\x78\
+\xf3\x19\x4d\x2c\xce\x54\x4e\xd8\xdc\x57\x06\x29\xb8\xeb\xae\xbb\
+\x98\x98\x98\xe0\xd8\xb1\xe3\x1c\x3b\x76\x94\x56\xab\x15\x90\x02\
+\x82\xa0\x44\x90\x7a\x08\xb9\x43\x75\x04\xeb\x07\x55\x20\x97\xae\
+\xb3\xff\x5f\xa0\x2f\xd0\x0c\xb5\xe0\xc9\xe0\x99\x65\x59\x7e\x07\
+\x12\x82\x21\x5d\x4f\x7d\xd8\xad\x16\xbb\x9f\x7a\x88\xca\xe4\x71\
+\xae\xfa\xad\xff\x93\x64\xd7\x85\x8c\x1c\x9e\x64\xec\xd8\x01\x46\
+\x8f\xee\xe7\xe8\x2f\x9e\xa3\x77\xe9\x7f\x67\xdd\xb5\xb7\x73\xfe\
+\xfa\x4f\x51\xaf\x5c\xc4\xf5\x1f\xff\x5d\x0e\xbc\xb4\x83\xe3\x6f\
+\xec\x0f\xe4\x02\x75\x1a\xc4\x3a\xaf\x70\x0e\x78\x01\xce\x17\xb9\
+\xe1\x86\x1b\x80\x76\xe6\xee\xf4\x74\x89\x97\x5e\x7a\x89\x5d\x3b\
+\x77\x31\x31\x39\xa1\x35\x5c\x68\x1b\x87\x8a\x60\xc3\x84\x4e\xea\
+\x54\x69\x04\x91\xc7\x04\xe8\x00\x08\xb6\x91\xd5\x6c\x52\x08\x82\
+\x4a\x76\x34\x67\xd0\xd3\xb7\x20\xd0\xc6\x46\xff\x2c\x8d\x46\x83\
+\x37\x77\xbd\x48\x6d\xfa\xf7\xe9\x5f\x7b\x01\xc7\xdf\xdc\xe7\x7f\
+\xc6\x56\xb3\xc9\x89\x83\x87\x18\x3d\xfe\xb7\xac\xbf\xe6\x4d\x7a\
+\xce\xbb\x8a\xfd\xbb\xc2\x54\x0a\x25\xbc\x52\x11\xa5\x82\x64\x98\
+\xf4\xfa\x17\x05\xdc\xda\x33\xc1\xd2\xcc\xf1\x7a\xfd\xf5\xd7\xd5\
+\x8c\x8a\x5f\xed\x74\x01\xec\xd9\xb3\x87\x1d\x3b\x76\x70\xf0\xe0\
+\x21\x1a\x8d\x3a\xb5\x9a\xc3\xfd\x7b\x5e\x84\xdf\x1c\x52\xcd\x96\
+\x7d\xdb\x66\xe4\x1c\x0f\x23\xd8\x2d\x3c\x98\xb1\xdb\x6e\x08\x29\
+\x34\x1e\xa2\xb3\x95\x7d\x30\x65\x2b\x98\xa5\x13\x28\xf5\x96\x2e\
+\x31\x25\x9d\xd4\x37\xdb\x9e\xc9\x6c\x02\x4e\x26\x92\x21\x68\xd6\
+\xea\xc1\xfe\x83\x1d\x7d\x8c\xbc\x8d\xff\xb7\x07\xff\x0d\x14\x0c\
+\x0f\x0f\x03\x67\x71\x9f\x40\x80\xf5\xeb\xd7\xfb\x1f\x7e\xcf\xee\
+\xdd\x2a\x58\x43\xef\xdc\xd5\xf5\xeb\xd7\xb3\x6e\xfd\x3a\x50\x30\
+\x35\x35\xc5\x91\x23\x47\x18\x19\x1e\x66\x68\x78\x98\x03\x07\x0e\
+\x30\x3e\x3e\x1e\xd8\xa4\x19\x24\x8a\xc6\x2e\xaa\x0e\xf1\xaf\x98\
+\xe9\x82\x75\x76\x06\x51\xb3\xb4\x6b\x51\x2a\x78\x12\x67\x14\x73\
+\x76\xf4\x2d\xf0\xe2\x15\x81\x72\x31\x57\xd0\xdb\x4d\x5b\xb3\x7c\
+\xdc\x96\x71\xee\xa9\xf7\x5a\xc8\xe9\x6a\x4f\xcf\x18\x3a\x07\xa8\
+\xe0\xf6\xba\xe8\x03\x1f\x10\x77\xdc\x79\xa7\xe8\xed\xe9\x31\x26\
+\x27\x26\xfe\x17\x33\x14\xfa\xab\xaf\x7c\xe5\x2b\x39\x1d\x14\xb9\
+\x5c\x8e\x5c\x36\x07\x97\x28\x5a\x96\x45\xa3\xd9\x74\xe2\xf0\x87\
+\x0e\xf1\xdc\x73\xcf\xf1\xf2\xcb\x2f\x77\x6c\xbe\xea\x98\x09\xd0\
+\xd1\x4a\xce\x6b\x1a\xd5\x99\x78\xa1\x77\x03\x61\xb6\x64\x8c\xa0\
+\x47\x21\x74\x3d\xdd\xd1\x57\x60\x46\xe9\xb7\xd4\x8d\xc9\x8e\x3e\
+\x08\x6e\x7b\x7c\x3d\x41\xc4\x1f\x9b\x23\xce\x7c\x79\xf8\x19\x6b\
+\x4c\x7c\xdb\xb6\x6d\x51\xc3\x34\xd3\x86\x69\xfe\x47\xd3\x10\x5f\
+\x37\x0c\x33\x2a\x84\x08\x10\x41\xf7\x7d\xe9\xbe\x0e\xbe\x7c\x96\
+\x4e\x63\xc0\xe4\xe4\x24\xbb\x76\xed\xe2\xa5\x97\x5f\xa2\x90\x2f\
+\x50\x2e\x57\xa8\x54\xcb\xb3\x74\x06\x0d\xce\x19\x0a\x76\x05\xd7\
+\xdd\x4c\x0d\x08\xae\x4d\x20\xe9\x9c\x52\xd2\x61\x94\x7a\x9c\x83\
+\xdb\x1a\xce\x6b\x57\xef\x35\xa7\x9e\x61\x98\x6a\xb9\x00\x81\x9e\
+\xc9\x5a\x55\xb1\x27\x11\xb6\x3f\xf8\x20\x4a\xc1\xe8\xe8\xc8\x9c\
+\xab\x80\x39\xbb\xf0\x6d\xb7\xdd\x66\x3c\xf4\xd0\x43\xf2\xe6\x9b\
+\x6e\x8e\x45\xe3\xd1\x95\x86\x30\xee\x12\x42\xfc\x7e\x28\x64\x46\
+\x67\x18\x64\x1d\xf5\xf5\xba\x15\xff\xe5\x2f\xff\x41\xb0\xdb\xb6\
+\x0e\x06\x05\xad\x96\xc5\xe0\xe0\x71\x06\x07\x07\x19\x1b\x1b\xe3\
+\xc0\x81\x83\xec\xdb\xbf\x0f\xab\xd5\x0a\x76\x07\xf7\x73\x11\x54\
+\x20\xae\xe0\xc7\x25\xd4\xec\x89\x1a\xc1\x49\x27\xce\xf1\xd6\x41\
+\xe5\x48\x07\xcf\x23\x91\xae\x5f\x1f\xec\x68\x1e\x88\x04\xba\x12\
+\x20\xd8\x40\x22\x68\xd7\x6c\x7f\x70\x3b\x4a\x28\x46\x47\x46\xcf\
+\x3e\x00\x6c\xbb\xed\x36\xe3\xe1\x87\x1e\x92\x00\x77\xdc\x71\xc7\
+\xf5\x86\x69\xdc\x21\x84\xf8\x94\x61\x98\x5d\x86\x98\x59\xef\x10\
+\x20\x3e\x3a\x8c\x3c\xbf\x33\xb7\xd6\xf7\xff\x0f\xff\xf0\x0f\x67\
+\xb4\x91\xf1\x82\x67\x52\x39\x05\x1f\x96\x65\x51\x28\x14\xd8\xf5\
+\xc2\x2e\x9e\x7d\xe6\x59\x46\x47\x47\x03\xf3\x08\x3a\x09\xa8\x53\
+\x6f\x46\x70\x86\x81\x3f\xf5\x44\xc8\x60\xdf\xc1\xc0\x74\xb3\x8e\
+\x99\x87\x4a\x06\x6a\x1b\x65\xc7\xc4\x33\x7f\xd8\x85\x1b\x49\x94\
+\x52\xb1\xfd\xa1\xed\xa0\x60\x74\xf4\x2c\x02\xc0\xb6\x6d\xdb\x32\
+\x0f\x3f\xfc\xf0\xb4\x7b\xfa\x7f\x27\x14\x36\x2f\x07\xe3\x16\x43\
+\x88\x85\xc2\xd0\xbb\x63\x78\xc1\x5b\xc1\x8c\x72\xb1\x00\x29\xa4\
+\x5b\xe7\x9d\x2c\xa2\xf4\x7f\xff\xe3\x3f\xfe\x93\x80\x7a\x38\x95\
+\xb4\xd8\xb3\x7b\x0f\x3b\x76\x3c\xcf\xc1\x83\x87\xa9\x54\xca\x14\
+\xa7\x8b\x34\xdd\x1a\x02\x5d\x34\x77\x02\xc1\xdb\x74\xb4\xcd\x6a\
+\xb7\x74\x73\xc6\xd7\xfa\xd5\x40\xb3\x71\x15\x32\xd8\x64\x52\x69\
+\x8c\xa4\xd2\x73\x24\x34\x3e\xe3\xc1\xed\xdb\x41\x29\xbf\x91\xc5\
+\xfb\x1a\x00\xb7\xde\x72\x6b\xf4\x27\x8f\xfc\xa4\x01\x70\xeb\x6d\
+\xdb\xfe\x8f\x90\x61\xde\x64\x18\xc6\x26\x84\x48\xb8\xd9\xd2\x04\
+\x8b\x5d\xdb\x1b\x3f\xc3\xaf\x57\xc1\x18\xf9\x4c\x0b\x3d\xd8\xbe\
+\x55\x2a\x85\x21\x0c\x56\xac\x58\xce\x25\x97\x5c\xe2\xbb\x5c\xeb\
+\xd6\xad\x6b\x77\xef\x56\xcc\xe8\xcd\x33\x95\xcf\x73\xfc\xd8\x31\
+\xc6\xc6\xc6\x38\x76\xec\x18\xbb\x77\xef\x66\x64\x78\xb8\xdd\xaa\
+\xb6\x23\x86\xd0\xe6\x11\x3a\x12\x3b\x94\x0a\xb4\xb8\x0f\xd8\x10\
+\x9d\xf3\x10\x7c\x42\xc9\xb9\xf6\xcc\x28\x66\x3b\x16\xfa\xe0\x83\
+\xdb\x01\x18\x1b\x9b\x7b\x09\xf0\x9e\xbd\x80\x9f\x3c\xf2\x93\xc6\
+\xad\xb7\x6e\xfb\xaa\x69\x1a\xbf\x65\x08\x31\xa0\x84\x88\xfb\xd6\
+\xb6\x10\x5a\x88\x37\x18\xec\x15\x7a\xff\xc0\xce\x40\x88\x0a\x56\
+\x14\xe9\x19\x33\x81\x4d\x51\x8a\xf3\x56\x2c\xe3\xb2\xcb\x2e\x0b\
+\x7c\xa6\x37\xde\x78\x03\xc3\xad\x03\x34\x4d\x93\xf3\xcf\x3f\xaf\
+\xdd\xe4\x49\x40\x2e\x9b\x25\x97\xcd\xba\x0d\x28\x2d\xac\x96\x85\
+\x65\xdb\xec\xdd\xb7\x8f\x9f\x3e\xf5\x14\x2f\xec\xda\x45\x4b\xca\
+\x36\x95\x2d\xb4\xa1\x11\x9a\x6a\x52\x1d\x2d\x4b\x54\xc0\xb8\x0c\
+\xb6\x88\x11\x04\x13\x3f\x94\xec\xc8\x81\x98\x41\xa1\x9d\x99\x68\
+\xd0\x2f\x0d\x80\x9b\x6e\xda\x9a\x30\x8c\xd0\x7d\x86\x61\xfc\xae\
+\x10\x22\x05\x4a\xb4\x45\xb5\x68\x8f\x6e\x15\x6e\xc5\xac\xd0\x12\
+\x5d\x84\x96\x2f\xe7\x65\xf8\x08\x15\x60\xc2\xf4\x9b\xaa\xc7\xcd\
+\x3b\xa3\x7b\x17\x5d\x74\xd1\xec\xa2\x4d\xe0\x77\x0e\x3d\x71\xe2\
+\x24\x86\x61\x62\x9a\x06\xbd\xbd\xbd\x81\xd4\x6c\x43\x98\x84\x23\
+\x06\x61\xa5\xb8\x78\xe3\x46\x2e\xde\xb8\x11\x50\xe4\xf3\x05\x9e\
+\x7f\xfe\x79\x5e\x7e\xe5\x65\x26\x27\x26\x9d\xae\x23\xd3\xc5\x20\
+\x6d\xcb\xcc\x79\x03\x5e\x14\x74\x86\x9d\xa2\x02\xae\x8d\xd7\x46\
+\x7a\x76\xd2\xd7\x61\x96\xde\x7f\x00\xb8\xe1\x86\x1b\x22\xe1\x70\
+\xb8\x47\x29\xf5\xbf\x0b\x21\xbe\xe4\x7f\x48\xd5\xee\xe8\x0b\xed\
+\x5e\x4a\x7e\x8f\x40\xed\x35\x7a\x03\x48\xb4\x11\xae\xc8\x59\x3a\
+\x87\x76\x1a\x60\x5e\xbd\xbd\xe6\x27\xc6\xe3\xf1\xb7\xd4\x6e\x02\
+\xaf\xeb\x87\x40\x18\x82\x7c\x3e\xef\x77\x0e\x91\x52\x62\xbb\xa9\
+\xe1\xbd\xde\x9c\x1f\xf7\xda\xd9\x6c\x17\xb7\xde\xba\x8d\x5b\x6f\
+\xbd\x15\xdb\xb2\x18\x3c\x79\x82\xa1\xa1\x61\x46\x47\x46\xd9\xb3\
+\x7b\x37\xaf\xed\x7e\xcd\xcf\x54\x56\x01\x46\x4f\xcc\x3e\x55\xc4\
+\xa7\xa5\xb5\xfe\x00\x52\x71\xca\x5e\x10\xef\xb7\xea\xe0\xad\x5b\
+\xb7\x6e\x52\x4a\xdd\x26\xa5\xfc\xb2\x77\xb2\x3c\xdf\xd5\xc3\x81\
+\x00\x27\xfc\xeb\x22\x40\xb8\xff\xcf\xbf\x31\x78\xc1\x1f\xd1\x6e\
+\xa0\x00\xc1\xe4\x8d\xce\x29\xe0\xbe\x9e\x15\x81\xe6\x4b\xde\x1a\
+\x1f\x1f\x67\xd1\xa2\x45\xb3\x07\xa2\xe8\xe8\xce\x8d\x40\x20\x30\
+\x84\x40\x98\x66\xdb\xd8\x14\x82\x91\x91\x61\x2c\xcb\xc2\xb6\x6d\
+\x96\x2e\x5b\xaa\xc5\x32\x14\x86\x69\x72\xde\xb2\xf3\x58\xb6\xec\
+\x3c\x94\x94\xdc\x76\xfb\x36\x94\xad\xc8\x17\x0a\xfc\xec\x67\xff\
+\xce\x93\x4f\x3e\xc9\x89\x13\x27\x74\x3a\xef\x14\x49\x2b\xca\x97\
+\x78\x6f\x55\x03\xda\xd9\x0f\xf1\xfd\x22\x01\x76\xc6\xe3\x71\x4a\
+\xe5\x32\x42\x40\xc8\x34\x11\xc2\xeb\xa7\xd7\x16\x57\x8e\x3b\x27\
+\x5c\x79\x20\x02\x23\xd4\x84\x40\xb3\xaa\x83\x6e\x20\xa2\x23\x4d\
+\x4c\x77\x0b\xdf\x42\x57\xbe\xf2\xca\x2b\x6c\xdd\xba\xd5\x2d\xd1\
+\xd6\x43\xd1\x9a\xa4\x91\x0a\x0c\xef\x1a\x4e\x6b\x7a\xd5\x51\x98\
+\xe2\xa8\x0d\x07\x20\xc7\x8e\x1c\xd3\x26\x93\xc0\xf9\xe7\x9d\x17\
+\x78\x8d\x69\x98\x60\x40\x4f\xcf\x02\x7e\xe3\x23\xbf\xc1\x6f\x7c\
+\xe4\x23\xbe\xa7\xb1\x73\xe7\x4e\x0e\x1d\x3e\x44\x3e\x5f\x60\x62\
+\x62\x9c\xba\x9b\x2b\x18\xe8\xfe\x79\x06\xeb\xff\x4f\x27\x00\xd4\
+\x6d\xb7\xdd\x26\xc6\x27\xc6\x29\x16\x8a\x8c\x8e\x8c\x30\x3a\x36\
+\x46\xad\x56\xc3\x70\x8d\x2d\xa7\xc9\xa2\xc0\x40\x68\xd5\xd2\x4e\
+\x93\x84\xc0\xbc\x1f\xda\x6d\x58\x75\xd8\x77\x66\xcb\xe8\xd3\x3d\
+\x4f\xe9\xc6\x08\xc1\x8e\x1d\x3b\xb8\xe6\x9a\x6b\x02\xcf\x3b\xdd\
+\xc6\x84\x3b\xac\x4a\x22\xa4\x74\x37\xd8\x6b\xcd\xea\xd4\xfe\x4b\
+\x3d\x4d\xdd\x15\x63\x9d\xef\x78\xf4\xd8\x31\xff\x71\x3e\x9f\xe7\
+\x91\x47\x1e\xe1\x58\x10\x58\x17\x00\x00\x14\xdb\x49\x44\x41\x54\
+\xde\x7b\xee\x71\xd5\x5c\x3b\x94\x7f\xd1\x45\xeb\x59\x7f\xd1\x7a\
+\x50\x90\x2f\xe6\x19\x3a\x39\xc4\xd8\xd8\x38\x07\x0f\x1e\xe0\xe7\
+\x3f\xff\x39\x83\x83\x83\x01\xf0\x9f\xf2\x46\x9f\x41\x70\x88\x77\
+\xa1\x02\xe4\x97\xbe\xfc\x65\xd1\x6a\xb6\xa8\xd7\x6b\x94\xdc\x0a\
+\xdc\x52\xb9\xcc\xf0\xf0\x30\x83\x83\x83\x2e\xe1\xa2\x5c\xeb\x3b\
+\xe4\xe8\x5d\xad\x85\xfb\x29\xfb\xdf\x69\x44\x50\xd0\xa7\x7f\xe7\
+\x37\x22\x9d\x4e\xb3\x65\xcb\x16\x72\xb9\x5c\x20\x0a\x67\x1a\x26\
+\x86\x69\xf8\x03\xa2\x0d\xc3\xf0\x3f\x93\x74\xc7\xce\x49\x29\x91\
+\xb6\x8d\x2d\x6d\x6c\xcb\xc6\xb6\xed\x53\x82\x4e\x4a\xc9\x0f\x7f\
+\xf8\xc3\x19\xcf\xdf\xfd\xc5\x2f\xfa\x5e\x06\x1d\x76\x8c\x74\xdf\
+\xc3\xb6\x25\xaf\xbf\xfe\x3a\x8f\x3f\xf6\x18\x3b\x76\xec\x70\x22\
+\x9e\xb3\xac\x1f\xff\xf8\xc7\x28\xa5\x98\x9c\x9c\x7c\x7f\xb9\x81\
+\xad\x66\x93\x56\xab\x85\x69\x9a\x64\x73\x39\x72\xdd\x39\xa4\x54\
+\xac\x58\xb1\x92\x46\xa3\x46\xa3\xd1\x20\x9f\x77\x1a\x2d\x1e\x3d\
+\x7a\xd4\x37\xb8\xbc\x9b\xef\xdb\x0e\x33\x32\x06\x40\xef\x94\xf8\
+\xcb\xe0\xbf\x54\x2a\xf1\xec\xb3\xcf\xb2\x6c\xd9\x32\x56\xae\x5c\
+\x49\x26\x93\x71\x88\x1a\xb7\x5b\xb8\xd0\x5b\xb5\x78\xa0\xf4\xe6\
+\x05\x4a\x67\x16\xb1\x92\x6a\xc6\x54\x92\xd9\xde\x67\xb6\xf5\x5f\
+\xbf\xf6\x35\xff\xf1\x7f\xfe\xec\x67\x89\xc7\xa2\x5a\x8b\x7a\x47\
+\x6d\x18\xc2\xe4\xe2\x8d\x1b\xd9\xb8\x61\x03\x08\xc8\x4f\xe5\x79\
+\xe1\x85\x17\x78\xe5\x95\x57\x98\x98\x98\x60\x62\x62\x82\xc9\xc9\
+\xc9\x19\xc0\xdf\xba\x75\xeb\x57\x80\x41\xe0\xd5\x27\x9e\x78\xe2\
+\x25\xf7\x39\xe3\x89\x27\x9e\x90\x67\x54\x02\xdc\x73\xcf\xdd\xa2\
+\xd5\x74\x12\x26\xf3\xf9\xbc\x5b\x23\x67\xb6\x13\x31\xa5\x43\x80\
+\x48\xdb\xc2\xb6\x15\xf5\x66\x9d\xa1\xa1\x21\x0e\x1d\x3c\xc4\xf1\
+\xe3\xc7\x69\x34\x1a\xb3\x00\xe1\xf4\xf7\x44\x1b\x18\x18\xe0\xfc\
+\xf3\xcf\xa7\xb7\xb7\x97\x44\x3c\x81\x61\x9a\x84\x4c\xa7\x07\xb0\
+\x70\xfc\xc3\x00\x20\xa4\x52\xbe\x57\xa0\x77\x0f\xeb\x5c\xb6\x6d\
+\xf3\xfc\xf3\xcf\x3b\x06\xdf\x2f\xb1\x3e\xff\xf9\xcf\x69\x2e\x64\
+\x5b\x22\x2a\xc0\x6a\x59\x8c\x8e\x38\x21\x70\x8f\xd7\xf0\x24\x80\
+\x3b\xbe\xbe\x04\x9c\x00\x5e\x07\xca\xc0\x7e\xe0\xd1\x27\x9e\x78\
+\xe2\x65\x77\x7f\x12\x4f\x3c\xf1\x44\x75\x4e\x01\x70\xf7\x17\xbf\
+\x28\x9a\x56\x0b\x14\xec\xdc\xb9\x0b\xa5\x9c\xc6\x4b\xa9\x74\x9a\
+\xae\xae\x2e\x32\x5d\x5d\x7e\x6b\x36\x3a\x92\x3f\x85\x10\x14\x8a\
+\x45\x06\x8f\x1f\xe3\xd0\xa1\xc3\x8c\x8d\x8d\x9d\xf2\x46\xbf\x67\
+\xb1\x16\x0a\x91\x4e\x67\x10\x06\x2c\x19\x58\xc2\xc2\x85\x8b\xc8\
+\xe6\xba\x9c\x72\x6e\xc3\x74\xdb\xbf\xb4\x5b\x94\x49\xd7\x25\xb3\
+\xa5\x0c\x74\xf5\xf2\x56\xb3\xd9\xa4\xd1\x68\xf0\xea\xab\xaf\x72\
+\xe2\xc4\x89\xd3\xa2\xa3\x3f\xf7\xb9\xcf\x69\x6d\x62\xbc\x61\x58\
+\x41\xfb\x63\x72\x72\xd2\xdb\xfc\xd9\x56\x0d\x18\x03\x46\x80\x3c\
+\xb0\x47\x08\x71\xff\xe3\x8f\x3f\xbe\xd3\xdd\xaf\xe4\x13\x4f\x3c\
+\x51\x39\xad\x00\xf8\xc2\xef\xfd\x9e\xb0\x5a\x2d\x94\x52\xec\xda\
+\xb5\xcb\xcf\xc8\xf1\x82\x19\xca\x6d\xd1\x92\x48\x24\xe8\xca\x76\
+\x91\xeb\xca\x91\x4c\x25\x31\x84\x08\x8c\x7a\x73\xc4\xaf\x64\x7c\
+\x7c\x82\xe3\xc7\x9d\x48\x5e\xa9\x54\xf2\x47\xbf\xbc\x27\x60\x08\
+\x08\x87\xc2\x84\xc3\x11\x22\xe1\x10\xe1\x48\x84\xe5\xcb\x97\x23\
+\x84\x20\x1a\x8d\x92\x4c\x26\x49\x26\x12\x44\x63\x51\x84\xe1\xb8\
+\x82\xb6\x65\xf9\x27\x5c\x08\xe1\x37\xad\x9a\x9e\x2e\x92\xcf\x17\
+\xa8\x94\x2b\xec\xdb\xb7\x97\x96\xfb\xba\xb9\x58\xbf\xfb\xbb\xbf\
+\x13\x30\x8a\xbf\xf1\x8d\x6f\xbc\xdb\x4b\x34\x81\x2a\x50\x01\xc6\
+\x85\x10\x2f\xb7\x5a\xad\x7f\x79\xfa\xe9\xa7\xb7\x9f\x36\x00\x7c\
+\xfe\xbf\xfc\x17\x61\xb9\xdd\x35\x7d\x00\x48\xe5\xbb\x4c\x52\x4a\
+\xff\x77\xe5\x89\x55\xa5\x88\x46\x22\x64\x32\x69\x72\xd9\x1c\xe9\
+\x4c\x17\x91\x48\xc4\x8f\x9c\x79\x8d\x9a\x1a\xf5\x06\x63\xa3\xa3\
+\x9c\x1c\x3a\xc9\xf8\xf8\x04\x8d\x46\x83\xa6\x9b\x0c\x62\x59\x96\
+\xaf\x32\xc4\xdb\x30\x64\xc2\x30\x88\x84\xc3\x84\x42\x21\x22\xe1\
+\x08\xe1\x88\x07\x86\xb0\xfb\xd8\xfd\x17\x89\x10\x0e\x87\x41\x29\
+\x5f\x2d\x49\x29\xa9\xd7\xeb\xe4\xf3\x79\x5a\xcd\x26\x52\x29\x0a\
+\xf9\x02\x4d\xab\xe5\xb4\x87\xf3\xc1\xfb\xfe\x70\xe1\xde\x6a\xd9\
+\xb6\x2d\x97\x2c\x59\x22\xc3\xe1\x88\x71\xf2\xe4\x89\xff\xf4\xe8\
+\xa3\x8f\x7e\xeb\x3d\x1b\x81\xde\x69\xf7\x2c\xf4\x76\xae\xde\xcc\
+\xaa\x58\xcd\xbd\xa7\x5e\xab\x51\xad\x56\x19\x1e\x1e\x41\x2a\x89\
+\x21\x04\xc9\x54\xda\xe1\xe4\x73\x39\x92\xc9\x04\x4a\xc2\xc2\x45\
+\x0b\x59\xb4\x68\x31\xc2\x10\x94\xcb\x65\xc6\xc7\xc7\x19\x1f\x1f\
+\xa7\x54\x2a\x51\xaf\xd7\xa9\x56\xab\xd4\x6a\x35\xdf\xb8\x9b\xd5\
+\xa8\x94\x92\x46\xc3\x99\x03\x10\xed\x8e\xba\x9e\x88\x03\x34\xa7\
+\x25\x9c\x70\xe6\x01\xe0\x0c\x7c\x6e\xba\x86\x6d\xab\xd5\xa2\xd9\
+\x6a\xf9\x86\xae\xf3\xaf\xe9\xab\x87\x50\x28\x84\x65\x59\xef\xeb\
+\xcd\xf7\xc0\xd9\xd3\xd3\x43\x77\x77\xb7\xc3\x7d\x0a\xb8\x7a\xcb\
+\xe6\xef\x3d\xfa\xe8\xa3\xef\xdd\x0b\x90\xb6\x6a\x87\x2e\x03\xd3\
+\x37\xb5\xf1\x4c\x7e\x72\x85\xf4\x89\x97\x00\x13\x26\xc1\x56\x36\
+\xf9\xa9\x3c\x53\x93\x93\xae\xf5\x6d\x93\x88\x27\xc8\xe6\xb2\x64\
+\xb3\xdd\x74\x65\x32\x84\x4c\x93\xfe\xc5\x8b\xe9\xef\xef\x43\x49\
+\xc5\x74\xa9\x44\xa1\x50\x60\x7a\x7a\x9a\x5a\xad\x4a\xa9\x54\xa6\
+\x54\x2a\x51\xad\x56\x03\x60\xd0\x01\x31\x35\x35\x15\xf8\xfc\x6b\
+\xd7\xae\x75\x44\xbc\x00\x0c\xd1\x96\x54\x1e\xdf\x20\xa5\x16\xce\
+\x75\x1e\xd7\xaa\x55\xce\x86\x65\x9a\xa6\xdf\xcb\xd0\x34\x4d\x6c\
+\xdb\x76\xc0\x8f\xc1\x64\xbe\x60\x9e\x16\x37\xd0\xbb\x59\x28\xc8\
+\x74\x75\x51\x9a\x9e\xa6\x65\xdb\xb3\x0c\x7c\x96\x1d\x53\xbb\x3b\
+\x06\x40\xa1\x53\xa6\xce\x6b\xca\x95\x0a\xa5\x72\x89\xa3\x47\x8f\
+\xa3\x94\x24\x1c\x0a\x93\xc9\x64\xe8\x5e\xd0\xed\x4f\xf9\xe8\x5b\
+\xbc\x98\xbe\xc5\x8b\x69\x59\x16\xd5\x4a\x85\x72\xa5\x42\xbd\x5e\
+\xa7\x5c\x2e\xbb\x2d\xe2\x8b\xbe\xa7\xe1\x89\x75\x7d\xed\xdd\xbb\
+\x97\x73\x65\x29\xb7\xdf\x51\x38\x1c\x26\x16\x8b\xd1\xd5\xe5\xa8\
+\x56\xaf\x55\x9e\xd3\x88\x03\xb7\xa3\xb9\xe4\x34\x01\x40\xfa\x93\
+\xbe\x56\xaf\x5e\xe5\x72\x03\x2d\x8a\xa5\x12\xc5\x42\x81\x62\xa1\
+\x48\xb5\x56\x9d\x39\xc0\x59\x0f\x83\xea\x89\x16\x7e\xec\x0c\x2d\
+\xcc\xea\x3c\x6e\x34\x1b\x8c\x8d\x8f\x31\x32\x3a\xe2\x8a\x7c\x48\
+\xa5\x32\xe4\x72\x39\xba\xbb\x73\xa4\x52\x29\x7a\xe2\x71\x94\x52\
+\x34\x5b\x2d\x1a\x6e\x0f\xc0\x66\xb3\x49\xa1\x50\x60\x72\x72\x92\
+\x52\xa9\xe4\x9e\x84\xd9\x39\x88\xb3\x79\xf3\x23\x91\x08\xb1\x58\
+\x9c\x44\x22\x4e\x34\x1a\x75\xb2\xa1\xac\x96\x13\xed\x10\x06\x86\
+\xdb\xb9\x4c\x18\xbc\xa5\x51\xfd\xee\x54\x80\xb4\xfd\x81\x0e\x85\
+\xe2\x34\xc9\x44\x02\x33\x14\x22\x97\xcb\xd2\x9d\xcd\x3a\xc6\x87\
+\x94\x54\xca\x65\xf2\x85\x02\x53\x53\x53\x94\x4a\xd3\xc1\xa1\x8f\
+\x74\xcc\xdb\xd1\x12\x2c\x04\xda\x90\x65\x3d\x30\x24\x04\xb6\x6d\
+\x53\x28\xe4\xc9\xe7\xa7\x38\x78\xd0\xb1\x45\x62\xb1\x28\xd9\x5c\
+\x96\x05\xb9\x05\x74\x75\x75\x91\x4e\xa7\x50\x52\x91\xc9\x64\xe8\
+\xef\xef\xc7\xb6\x2c\xaa\xd5\x2a\x53\xf9\x3c\x53\x53\x53\x54\x2a\
+\x8e\x57\x34\x9b\x74\x38\x5b\x36\x3e\x14\x0a\x91\x4a\x25\x31\x43\
+\x61\x62\xd1\x88\xd3\x0f\xc1\x33\x92\xdd\x9e\xd7\x42\x38\xf1\x0e\
+\x81\x40\x48\x71\x1a\x25\x80\x6c\xa7\x4f\x1d\x3b\xe6\x88\x6a\x43\
+\x08\xe2\x89\x04\x99\x74\x9a\x64\x2a\xe5\xb8\x5a\xa9\x14\x89\x54\
+\x8a\x81\xfe\x7e\xa4\x52\xd4\xeb\x75\x0a\xc5\x02\x53\x93\x53\xe4\
+\xf3\x05\x9a\xcd\x86\xef\x41\xc0\x2c\xd3\xb2\x14\xed\xe8\xa1\xf2\
+\xe2\xe7\x74\x0c\x57\x56\x54\xab\x55\x2a\x95\x0a\x27\x4f\x9c\xf4\
+\xfd\xff\xab\xaf\xbe\x06\xc3\x30\x08\x85\x43\x98\xa6\x49\x38\x1c\
+\x26\x9d\x49\xb3\x74\xe9\x12\x6c\xdb\xa6\x54\x2a\x33\x39\x39\xe9\
+\xab\x8b\x77\xea\x5d\xfc\xaa\x37\xde\x30\x0c\x32\xe9\x8c\xe3\xe5\
+\x44\x23\x4e\xbf\x24\xcb\x42\x08\xc3\x3d\xf1\xca\x8b\x7b\xfb\xed\
+\x67\x84\x30\x40\xa8\x40\x60\xeb\xbd\x49\x00\x5d\x7c\xbb\x46\x92\
+\x25\x6d\x8a\xc5\x22\x85\x62\x11\xe5\xb2\x68\xf1\x78\x9c\x74\x3a\
+\x4d\x3a\x9d\x26\x91\x48\x10\x8d\x46\x59\xb8\x70\x21\xbd\x3d\x0b\
+\x41\x29\x5a\x56\x8b\xe2\x74\x91\xa9\xc9\x29\xa6\xa6\xf2\x94\xca\
+\x25\x3f\x00\xa4\xbc\x11\x33\x9d\xb1\x02\x17\x29\x52\xcd\x32\x8f\
+\xcf\x5d\x8e\x95\x2e\x67\xb4\x6e\x53\xca\xf5\x00\x0c\xd3\xf9\x5c\
+\x99\x34\x4a\x2a\x5a\x2d\xe7\x73\x38\xa9\xe5\xce\x60\x89\xf7\xa3\
+\x9e\x4f\xa5\xd2\x18\xa6\xc0\x34\x0c\x47\x1a\xba\x43\xad\x10\x06\
+\x18\xae\xc1\x8d\x77\xe2\xa5\xa6\xee\x6c\xa4\x12\xa7\x53\x05\xc8\
+\xe0\xf0\x03\xaf\x13\xa6\x0a\x4e\xfc\xac\x54\x2a\x94\xcb\x65\x4e\
+\x9e\x3c\x89\x54\x8a\x70\x28\x44\x2a\x9d\xa2\xab\xab\x8b\x54\x32\
+\x45\x24\x12\x21\x97\xcd\x91\xcd\x74\xb1\x7c\xf9\x72\x94\x52\x94\
+\x4a\xd3\x4c\x4d\xe5\x99\x98\x98\xa4\x58\x2c\x60\xd9\x96\x36\x86\
+\x65\xe6\x14\x9d\x19\x33\xf8\x02\x37\x4e\x2b\x18\x15\xed\x14\x6f\
+\x9f\x7a\x95\x8e\x27\x63\x1a\x26\xd9\xae\x2c\xb9\x6c\x0e\x21\x04\
+\xf5\x7a\x9d\x52\xa9\x44\xb1\x58\xa4\x5e\xaf\xfb\xdf\x77\xae\x5d\
+\xbf\xbe\xbe\x3e\xaa\xd5\x2a\xc5\x62\x31\xf0\x7c\x3c\x1e\x57\x6e\
+\x98\x5b\xd4\xaa\x35\xa2\xd1\x18\xe1\x70\xc8\x0f\x9d\x08\x24\x86\
+\x74\x12\x5d\x14\x06\x60\xbb\x8e\xb7\x37\xf2\x4e\x80\x50\xd8\x6f\
+\x11\x81\x7c\x97\x12\x20\x08\x80\x77\xca\x03\x34\x1b\x0d\x26\xea\
+\x75\xc6\xc7\xc6\x7d\x1e\x20\x9e\x48\x92\xcd\x38\xf4\x71\x22\x11\
+\x27\x99\x4c\x91\x4c\x24\x19\x18\x58\x02\x48\x6a\xb5\x3a\x85\x42\
+\x81\x89\x89\x49\xa6\xa6\x26\xdb\xee\x98\x37\x4a\xe6\x14\x61\x84\
+\xc0\xe0\x25\xb7\xf6\xde\x9b\x46\xaf\x66\x78\x34\xc1\x0c\xde\x48\
+\x24\x42\x4f\x4f\x0f\xbd\xbd\xbd\x00\x54\xab\x55\x4a\xa5\x12\xe5\
+\x72\x99\x66\xb3\x89\x6d\xdb\x3e\x53\xe9\x9d\xce\xd3\xb1\xea\xf5\
+\x3a\x89\x44\xc2\x07\x40\x28\x14\x56\x91\x48\x18\xa9\x94\xb0\xa4\
+\xc4\xf0\xa5\x41\xdb\xa8\x36\xdc\x4d\x96\x80\x90\x2e\x18\x84\xe1\
+\xa4\xe0\x19\xd2\xcf\x6d\x10\x06\x6f\x39\x8b\xf8\x5d\x4a\x00\x3d\
+\xdd\xf9\xbd\xf1\x00\xc5\x42\x91\x42\x3e\xef\xf3\x00\xf1\x58\x9c\
+\x4c\x57\x86\xae\xae\x1c\xe9\x54\x8a\x70\x38\x42\x4f\x6f\x2f\xbd\
+\xbd\x3d\x48\x77\x48\xf4\x74\x71\x9a\x89\x49\x27\x6a\x56\x9c\x2e\
+\xce\xda\x45\xa3\x73\x30\xb9\x80\x00\x0d\xed\x0d\xa6\x0c\x0c\xf9\
+\xd1\x40\xa1\x9f\xf6\x58\x2c\x46\x3c\x1e\x67\xd1\xa2\x45\xfe\xdc\
+\xa1\x72\xb9\x4c\xad\x56\xd3\xc8\xa2\x56\x40\xc4\xfe\x32\xa0\xa8\
+\xd5\x6a\xe4\x72\x39\x0c\xc3\x50\xa1\x70\x08\x25\x11\x56\xcb\x69\
+\x67\x2f\xbc\x86\x94\x1a\xd1\x85\x70\xb2\xae\x9c\xb8\x96\x93\x19\
+\x6d\x49\x9b\x52\x69\x9a\xee\xee\x6e\x84\x74\xfc\x7f\x61\x38\x08\
+\xb1\x4e\x97\x04\x50\x2e\xd5\xab\x50\x24\x93\x49\x2a\x95\x0a\x96\
+\x94\xa7\x85\x07\xa8\x54\xab\x94\x2b\x65\x06\x07\x4f\xa2\x94\x24\
+\x64\x86\x48\xa7\xd3\xe4\x72\x59\xd2\x99\x8c\xe3\xeb\x66\xbb\xc8\
+\x74\x65\x58\xbe\x7c\x39\x52\x4a\xaa\xd5\x2a\x93\x93\x93\xbe\x51\
+\xe7\x0c\x81\x52\xd0\xe1\x49\xe8\xe3\xdb\x03\x9d\xca\xde\x81\x0e\
+\xd6\x5f\x97\x48\x24\x48\x26\x93\x08\x21\x68\xb5\x5a\xd4\x6a\x35\
+\xbf\x92\xb9\xd9\x6c\x52\xaf\xd7\x69\x36\x9b\xed\x30\xf4\x2c\x80\
+\x88\xc7\xe3\xae\x14\xb1\xb1\x6d\x89\x6d\xd9\x4c\x97\xa6\xb1\x8e\
+\x5b\x94\x4a\x25\x21\x6d\x1b\x4b\xda\x48\x5b\x62\xb9\x0d\x2c\x85\
+\x10\x64\x32\x19\xa2\xb1\x98\x63\xe5\xeb\x2d\x4a\x85\x43\x68\xed\
+\xdf\xbf\x8f\x5c\x2e\x17\x68\x4f\x27\xdc\x30\xb8\x7a\x0b\xdb\xe6\
+\x5d\x7b\x01\xd2\x4d\x79\x5e\xb2\x74\xa9\x6b\x78\xb5\xa8\x54\xaa\
+\x94\x4b\x25\x4a\xa5\x32\xf5\x46\xfd\xb4\xf0\x00\xcd\x56\x93\x89\
+\xc9\x09\xc6\xc6\xdb\x51\xc3\x64\x32\x45\x2e\x97\x25\xdb\xd5\xe5\
+\xcc\xff\x89\xc7\x19\xe8\xef\xa7\xaf\xaf\xcf\xe1\x03\xdc\x92\xf2\
+\x40\x25\xb1\x5e\x28\x22\x3b\x27\x86\xbf\x7b\xa3\x4c\x9f\x47\x90\
+\x4a\x39\xe3\xea\x01\x5a\xad\x96\x0f\x00\x0f\x0c\xd5\x6a\x95\x46\
+\xa3\x41\x6f\x6f\xaf\xaf\x3e\x10\x82\xde\x85\x0b\x59\xb6\x74\x19\
+\xab\x56\xad\x60\xc5\x8a\x95\x2c\x5d\xba\x94\xee\xee\x6e\x7f\xfe\
+\xf1\xc4\xc4\x04\x47\x8f\x1e\x65\xef\xde\xbd\xbc\xbe\x67\x0f\x6f\
+\xbc\xb9\x97\xe1\xe1\x21\x46\xc7\x46\x9d\xd6\xb7\xb6\xcd\x07\x2f\
+\xbd\x14\x43\x29\xc0\xa0\x5c\x29\x93\x9f\x9a\x72\x86\x61\xb9\x99\
+\x50\x1e\xf0\x94\x12\x6f\x99\x85\xf4\x6e\x82\x41\x6a\xcb\xe6\x2d\
+\xf4\xf6\xf6\x10\x0a\x87\x1c\xb6\xcd\x34\x11\x2a\xd8\xcf\x42\x49\
+\x49\xb5\x56\x63\x7a\x7a\x9a\xe9\xe9\x69\x2a\x95\x32\xb6\x2d\x03\
+\x81\x23\x3f\x82\xe8\x06\x8c\xda\xbf\xcb\x60\x96\x8e\x6c\xab\x14\
+\xe9\x32\x8e\x7e\x90\x49\x2a\x62\xb1\x08\x99\x2e\x27\xc7\x3f\x93\
+\xc9\x10\x8e\x44\x02\x74\xae\x77\xad\xf6\xfb\xa8\xc0\x35\x4e\xf7\
+\x68\x16\xfd\xb4\xb7\x5a\x2d\x0a\x85\x22\xd2\xb6\x30\x43\x61\xd6\
+\xae\xbd\x80\x1b\xb7\x6e\xe5\xf2\x8e\x1a\x86\x77\xb3\x9e\x7a\xea\
+\x29\xbe\xf7\xbd\xef\xf1\xfc\xf3\x3b\xa8\x54\x4a\xd8\xb6\x64\xd3\
+\xa6\x4d\xec\xdd\xbb\x97\xae\xae\x2e\xbf\xab\xb9\xf7\x59\x9c\x59\
+\x58\x06\xe1\x70\x24\xf9\x3f\xbf\xfb\x9d\xea\x7b\x05\xc0\xf3\xcd\
+\x66\x33\x2a\x84\xf8\x60\x26\x93\xa1\xaf\xaf\x8f\xbe\xbe\x3e\xd2\
+\xe9\x34\xe1\x70\x98\x48\x24\x42\x28\x14\xf2\x4b\xa5\x74\x29\xa0\
+\x5b\xd7\xd3\xd3\x25\x9a\xcd\x86\x1f\x39\xf4\x26\x77\x3b\xa7\x5c\
+\xf9\x23\xe1\xa4\x0b\x16\x7f\x13\xbd\xac\x1d\x0d\x1c\x9d\x16\x7a\
+\x28\x14\x62\xd3\xa6\x4d\xfe\x75\xfc\x4d\x77\xed\x15\x39\x83\xef\
+\x9f\x1b\xeb\xbe\x5c\x2e\x61\xd9\x36\xb9\x6c\x37\xb7\xdc\x72\x33\
+\x5b\xb7\x6e\x3d\xed\xef\xf1\x9d\xef\x7c\x87\xbf\xfd\xff\xfe\x96\
+\x23\x87\x8f\xa0\x94\xe2\xaa\xab\xae\x74\x13\x63\x85\x3f\x05\xcd\
+\xab\x8d\x08\x87\xc3\xc9\xef\x7d\xef\x7b\xef\x0d\x00\x1a\x10\x1e\
+\x90\x52\x56\x2d\xcb\xb2\x95\x52\xd7\x84\xc3\xe1\xe5\xd9\x5c\x96\
+\x85\xbd\x0b\xe9\xe9\xe9\x21\x1a\x8b\x92\x88\xc7\x89\xc7\x13\xce\
+\x90\x05\xad\x8a\xd6\x4b\x8b\xb6\x5b\x36\xa5\x52\x89\x42\x21\x4f\
+\xa1\x38\x4d\xa5\x52\xf1\xed\x0b\xa9\xb4\xf4\x2c\x0f\x00\x5e\xf2\
+\xa6\x94\xee\xbc\x9f\x60\xd8\x59\x5f\x5b\xb6\x6c\x09\xfc\xbd\x1e\
+\xe4\xd1\xad\x7e\x2f\xa8\x75\x3a\x57\xb3\xd9\xc2\xb6\x2d\xba\xba\
+\xba\xb8\xeb\xae\xbb\x66\x54\x2c\xcd\xc5\xda\xbe\x7d\x3b\x5f\xf9\
+\x83\xaf\x70\x7c\xf0\x38\xb6\x6d\x73\xdd\x75\xd7\xb7\x8b\x62\x5c\
+\x16\xf5\x81\x07\x1e\xf8\xae\x94\xf2\xcf\x81\x57\xde\x33\x00\x3a\
+\xc0\xf0\x21\xa5\xd4\xcd\xb6\x6d\xdb\x96\x65\xb5\x4c\xd3\xfc\xe3\
+\x68\x34\x4a\x36\x9b\x25\x9b\xcd\x92\x49\x67\x54\x22\x91\x10\xe9\
+\x4c\xda\x31\x9e\x0c\xc3\xa9\x96\x95\x0a\x29\xed\x00\x0b\x58\xa9\
+\x54\x28\xe4\x0b\x4c\xe5\xf3\x94\x4a\xd3\x58\x2d\x2b\x90\x57\xe0\
+\x81\xc1\x3b\xc5\xa7\x4a\xdd\xba\xea\xaa\xcd\x81\x52\x6c\xa5\x1c\
+\xd0\xa0\xe7\x2e\xa8\xd3\x3f\xa2\xdd\xd3\xb3\xd7\xdf\x70\x3d\x77\
+\xdc\x71\xc7\x19\x27\x8d\xfe\xf4\xff\xfe\x53\xfe\xea\x2f\xff\x92\
+\x5a\xbd\xc1\xf5\xd7\x5d\xe7\x67\x3d\x0d\x0f\x0f\xb1\x73\xe7\xce\
+\x31\x60\x35\x30\x7d\xda\x00\x70\xf3\xcd\x37\x8b\x47\x1f\x7d\x54\
+\x75\x00\xe2\xb7\xa5\x94\xa6\x6d\xdb\x42\x29\xb5\x21\x14\x0a\xfd\
+\x5e\x2c\x1a\x23\x99\x4a\x92\x4a\xa5\x48\x24\x93\xce\x4c\xde\x6c\
+\x96\x64\x32\x89\x52\x5e\x1a\x96\x1d\x70\x31\xa5\x52\x34\x1b\x0d\
+\x8a\x85\x02\xf9\x7c\x81\x7c\x21\x4f\xbd\x56\x73\x73\xf7\x6c\xff\
+\x84\x4b\x6d\x04\x6b\x1b\x00\x57\xf9\xa7\xdb\xab\xf2\x9d\xa1\xff\
+\x4f\x73\x5e\xbe\x69\x9a\x2c\x58\xb0\x80\xcf\x7f\xfe\xf3\xee\xb8\
+\xf9\x5f\xcd\x2a\x97\xcb\xdc\x78\xe3\x8d\xec\xdd\xbb\x97\xeb\xaf\
+\xbf\x9e\xa3\x47\x8f\xb2\x7f\xff\x7e\x0c\xc3\xb8\xa6\x52\xa9\xfc\
+\xec\xb4\xa8\x80\x77\xba\x3e\xfc\xe1\x0f\xc7\x95\x52\x9b\x6c\xdb\
+\x96\xad\x56\xab\x14\x0e\x87\x7f\x64\x9a\xe6\x8a\x68\x34\x4a\x2c\
+\x16\x23\x16\x8b\xa9\x54\x2a\x25\x16\xf4\x2c\xa0\x3b\x97\x23\x12\
+\x89\x39\xa7\xd5\x75\x91\x64\xc7\x64\x0d\xcb\xb6\x29\x97\x4a\x4c\
+\x4d\x4d\x32\x39\xe5\x48\x09\x69\xcf\x94\x00\x57\x5e\x79\x65\xb0\
+\x09\x64\xc7\xbf\xd3\xcd\xec\x45\xa3\x51\xd6\xad\x5b\xc7\xc7\x3f\
+\xfe\xf1\xf7\x0d\x85\xfc\x89\x4f\x7c\x82\x1f\xfe\xd3\x0f\x09\x99\
+\x21\x36\x6f\xde\x4c\x57\x57\x57\xf2\x47\x3f\xfa\x51\xf5\x3d\xbb\
+\x81\xef\x66\x3d\xfe\xf8\xe3\x35\xe0\x69\x0d\x10\x57\x49\x29\x93\
+\xd5\x6a\x55\x94\x4a\xa5\x50\x38\x1c\xde\x67\x18\x06\x83\x83\x83\
+\x84\x42\x26\xd1\x68\x4c\x75\x77\x77\x8b\xde\xde\x5e\x77\xea\xa7\
+\xd1\x2e\xdc\x50\x0a\x43\x08\xd2\xe9\x34\xa9\x54\x8a\xa5\x4b\x97\
+\xa1\x94\xa2\x5a\xad\x51\x28\x38\x91\xbe\xe9\xe9\x69\x67\xaa\x17\
+\xc1\x6a\x64\xbd\xfd\x8b\x2e\x65\x4e\xc7\x4a\x26\x93\x6c\xde\xbc\
+\x99\x5b\x6e\xb9\xe5\x7d\x15\x43\xf8\xf6\xb7\xbf\xcd\xb2\x65\xcb\
+\xf8\xfa\xd7\xbf\x4e\x2c\x16\x6f\x47\x63\xcf\xa4\x04\x78\x07\xf6\
+\x43\x42\x29\x25\xc6\xc7\xc7\x1b\x0b\x17\x2e\xfc\x1c\xf0\x35\x2f\
+\x21\x53\x08\x41\x32\x99\xa4\xd7\x65\x02\x53\xa9\x8c\x1f\x8a\x56\
+\xb6\x67\x28\xb6\xc9\x26\x4f\x25\x58\x76\x0b\xd3\x30\x67\x39\xf1\
+\x04\xb2\x7c\x4e\xc7\xca\x76\x75\xf1\xa1\x0f\x5d\xcb\xb5\xd7\x5d\
+\x3b\x27\xf7\x67\xd8\x6a\xf1\x0f\xe5\x29\x9e\xaa\x95\x79\xb3\x56\
+\x21\x66\x4b\x96\x0b\x93\x1b\x12\x19\x3e\xdd\xb3\x98\xbe\xc8\xdb\
+\xab\x9a\x3f\xfb\x7f\xfe\x8c\x3f\xfa\xe3\x3f\xe2\xe6\x9b\x6f\x4a\
+\xfe\xeb\xbf\xfe\xb8\xfa\xbe\x02\xc0\xdb\x80\xe3\x20\xb0\xc2\xfb\
+\x7c\x86\x61\xd0\xd5\xd5\xc5\xc2\x85\x0b\xe9\xee\xce\xb5\x33\x5f\
+\x70\x86\x36\xaa\x8e\xe6\x50\x4a\x33\xf4\xa4\x1f\x41\xb4\x4f\x5b\
+\xfb\xb5\x9e\x9e\x1e\x2e\xbf\xfc\xf2\x39\x71\xef\x00\xbe\x57\xca\
+\xf3\xa5\xd2\x04\x0d\xc3\x8d\xe5\xb7\x5a\xd0\xb2\xa0\xd5\x42\xb4\
+\x5a\xc4\x2c\x9b\x3f\x19\x58\xce\xc7\x16\x0d\xbc\xed\xb5\xee\xbb\
+\xef\x3e\xfe\xdb\x9f\xff\x37\xea\xb5\xba\xb7\xd7\x26\xb0\x07\xf8\
+\x34\xf0\xfc\xfb\x0e\x00\x37\xdd\x74\x93\x78\xec\xb1\xc7\xfc\x7d\
+\xba\xfd\xf6\xdb\xa3\xf5\x7a\xbd\xa2\x94\x2a\x2a\xa5\x84\x52\x2a\
+\x11\x89\x44\xa2\xdd\xdd\x39\x16\xf4\xf4\x90\x4e\x65\x9c\x01\x4e\
+\x4a\xfa\xe9\xe6\x5e\xd6\x92\xc4\x7d\x2c\x65\xa0\x27\xf1\x7b\x59\
+\x8b\x17\x2f\x66\xd5\xaa\x55\xfc\xe6\x6f\xfe\xe6\xdc\x6c\xfe\xf4\
+\x24\x5f\x2c\x8c\x41\x24\x04\xe1\xb0\xb3\xf9\x4d\x0b\xac\x16\x34\
+\x5b\xee\xef\x2d\x68\x35\xf9\xda\x79\x17\xf0\xb1\xbe\x25\x6f\x7b\
+\xcd\x8f\x7d\xec\x63\xdc\xff\xa3\xfb\x69\x34\x1b\x02\xf8\x02\x70\
+\x1b\x70\xe3\xfb\x56\x02\xbc\x8d\x71\xf9\x19\xa5\xd4\xef\x4b\x29\
+\xeb\xee\x89\xbf\x30\x91\x48\xfa\x14\x71\x3c\x91\xf0\x0b\x51\x04\
+\xae\xdb\x79\x9a\x48\x9f\xfe\xfe\x7e\xba\xbb\xbb\xf9\xe4\x27\x3f\
+\x39\x37\x62\xbf\xd5\x64\xf3\xf1\xbd\xd4\x43\x26\x84\xc2\x60\x18\
+\x4e\x93\x6d\xab\x05\x96\x2b\x01\x9a\x8e\x34\x50\xae\x24\x78\xfe\
+\xb2\xab\xe9\x8b\xc5\xdf\xf6\xda\x1b\x36\x6c\x60\xcf\x9e\x3d\x28\
+\xa5\x0e\x01\x37\x01\x87\xe7\xd4\x08\x9c\x8b\x75\xeb\xad\xb7\x8a\
+\x9f\xfc\xe4\x27\x7f\x0f\xfc\xbd\xa6\x2e\x7e\xd8\x68\xd4\xb3\x43\
+\x43\x43\xe6\xc9\x93\x27\x53\x86\x61\x6c\x4a\x26\x93\x64\x32\x19\
+\x52\xa9\x14\xa1\x90\x43\x5b\x7b\x3f\xdb\x21\xe3\x5f\x6e\x79\x69\
+\x65\x73\xb1\xbe\x35\x35\x4a\xc3\xb6\x9d\x18\x8f\x5b\x61\xad\x6c\
+\x8b\xe6\x4f\x7f\x06\xb6\x24\x72\xe5\xa5\x2e\x71\xe2\xa8\xb8\x86\
+\x6d\xf1\xad\xc1\x23\xdc\xb7\x7a\xdd\xdb\x5e\x7b\x6c\x6c\x14\xd3\
+\x34\xb0\x2c\xfb\x12\x9c\x32\x33\xce\x4a\x09\xd0\x21\x0d\xc4\xe3\
+\x8f\x3f\xee\xef\xe6\x9d\x77\xde\x19\xae\x56\xab\xdf\x96\x52\x56\
+\xa5\xc3\x34\x7d\x38\x14\x0a\x2d\xf7\xa2\x78\x89\x84\xc3\x4e\x7a\
+\xc5\x21\xa6\x69\xbe\x6b\x4a\xb8\xbf\xbf\x9f\x9e\x9e\x1e\x3e\xf1\
+\x89\x4f\x9c\xf6\xef\x73\xc3\x81\x57\xd9\xdb\x6a\xa2\x42\x26\x18\
+\x26\x4a\x4a\xc6\xae\xb8\x0e\x55\x74\xf8\x1b\x91\x49\xb3\xe8\xc9\
+\x7f\x73\x92\x1b\x5a\x16\xa2\xd5\x62\x6d\x34\xce\x53\x57\x5d\xff\
+\x96\xd7\xdd\x72\xf5\xd5\xbc\xfa\x8b\x5f\x50\xa9\x54\xc4\x59\x61\
+\x04\x9e\x46\x80\x5c\x2b\xa5\xbc\x41\x29\x65\xdb\xb6\xdd\x32\x0c\
+\xe3\x4f\x9d\x6c\x5a\x27\xce\x1f\x8d\x46\x55\x34\x1a\x15\xd1\x68\
+\xd4\x99\x26\xee\x57\x0c\xab\xb7\x05\xc1\x8a\x15\x2b\x4e\xbb\x1d\
+\x70\xfe\x2f\x9e\xa3\x61\x18\x10\x72\x9a\x6f\xd4\xff\xfd\x39\xf2\
+\xff\xdb\xe7\x03\xaf\xc9\xfd\xbf\x7f\x46\xf4\x8a\x4b\x7d\xc3\x30\
+\x2a\x6d\x8e\x7e\xf8\x23\xa7\xd6\xff\x1f\xff\x38\x0f\x6d\xdf\x4e\
+\xb1\x58\x14\x67\x94\x07\xf8\x55\xaf\x5b\x6e\xb9\x45\x3c\xf2\xc8\
+\x23\xcf\x00\xcf\x68\xea\xe2\xb0\x65\x59\xd1\xe9\xe9\x69\xa3\x58\
+\x2c\x2e\x33\x4d\xf3\x8f\xc2\xe1\x30\xd1\x68\xd4\xfb\xa7\x62\xb1\
+\x98\x48\x24\x12\x6e\xf9\xda\xec\x41\xa3\xa1\xa1\x21\xa7\xa3\xe7\
+\xf6\x87\xb8\xfd\xf6\xdb\x4e\xdb\x67\x16\x96\x8d\x30\xdc\x38\x86\
+\x21\xc0\x9a\x25\xe3\xc5\xb6\x11\xb6\xed\x0c\xb4\x50\x12\x61\x9f\
+\x3a\xdb\xe7\x77\x3e\xfb\x59\x1e\x7b\xe4\x91\x53\x6e\xfe\x39\x2f\
+\x01\xde\x06\x20\xa6\x65\x59\x37\x48\x29\x6d\xdb\xb6\x6b\xa6\x69\
+\xfe\x89\x61\x18\x37\x7a\xea\x21\x14\x0a\x11\x8f\xc7\x1d\x0a\x3b\
+\x91\x20\x1c\x0e\x07\x28\x65\x80\xc5\x8b\x16\xb3\x62\xe5\x72\xee\
+\xba\xeb\xa3\xa7\x47\x05\xbc\xba\x8b\xbd\xf5\xaa\x63\xfc\xb9\x2e\
+\xe0\xe8\xd6\x3b\x51\xd3\x8e\xca\x16\xe9\x34\x0b\x1f\xfc\x21\x86\
+\x52\x28\xdb\x46\x58\x2d\x2e\x8c\xa5\x78\xf2\xda\x9b\x66\x5c\xeb\
+\x53\x9f\xfc\x24\x0f\xff\xe4\x11\x46\x47\x47\xde\x72\x8f\x7f\x6d\
+\x01\x30\x0b\xf7\xd0\xa3\x94\xea\x55\x4a\x89\x56\xab\x55\x8d\x44\
+\x22\x47\x3c\xe3\xd1\x4d\x2f\x57\xc9\x64\x52\x78\x99\xce\x8e\xeb\
+\xe9\xd4\xe1\x2d\x58\xb0\x80\xcf\x7c\xe6\x33\xef\xf9\x33\xfc\x5f\
+\x87\xf7\xf3\x37\xc3\xc7\x50\xc2\x00\xc3\x31\x04\xa5\x65\xd1\xdc\
+\xf5\x73\x50\x8a\xe8\x65\x97\x38\xd9\x40\xb6\x05\xb6\x0d\x2d\x9b\
+\xff\xbc\x72\x0d\x5f\xba\x70\x43\xd0\x58\xde\xb6\x8d\x3d\xaf\xbd\
+\xc6\x89\x93\x27\xdf\x76\x7f\xe7\x01\x70\x6a\x40\x64\x95\x52\xa6\
+\x65\x59\x46\x28\x14\x5a\x21\x84\xd8\xe9\x31\x95\x86\x61\x10\x8b\
+\xc5\x54\x3a\x9d\x16\x99\x4c\x86\x81\x81\x7e\x42\xa1\x30\x9f\xfd\
+\xec\x67\xdf\xa2\x6d\xdd\x3b\x70\x03\x1b\x35\xb6\xec\x7a\x86\x1a\
+\xe0\x77\xd4\x72\xe7\x09\x28\x25\xc1\x56\xce\x98\x32\x77\x1a\x7a\
+\x5c\x18\x3c\x77\xfd\xad\xf4\xb9\xef\x59\x28\x14\xb8\xfe\xfa\xeb\
+\x29\x14\x8a\x1c\x3d\x7a\xe4\x1d\xed\xed\x3c\x00\xde\x39\x20\x0c\
+\xc0\x78\xe2\x89\x27\xac\xad\x5b\xb7\x7e\x0d\xf8\x3d\x2f\xfb\xc6\
+\x30\x0c\x3e\xf4\xa1\x0f\x21\x6d\xc9\x05\x17\xac\xe1\x3f\xfc\xd6\
+\x6f\xfd\xf2\x44\xd0\x89\x63\xdc\xbd\xf7\x35\xb7\xd3\x25\xda\x40\
+\x2b\xe9\x58\xff\xb6\x8d\x90\x4e\xfa\xf7\x7f\xdd\x70\x29\x1f\x5b\
+\xb6\x02\x80\x2f\x7c\xe1\x0b\x3c\xfc\xf0\xc3\xd8\xb6\xcd\xc1\x83\
+\x07\xdf\xf1\xbe\xce\x03\xe0\xf4\x80\xe3\x28\x30\x70\xed\x75\xd7\
+\x85\xa4\x5b\x8b\x78\xdd\x75\xd7\x71\xf5\xd5\x57\xff\x72\x20\x18\
+\x3c\xc2\x97\xdf\x7c\x8d\x9a\x5b\x86\xa7\x94\x42\xb8\xb9\x0d\x02\
+\x88\x19\x26\x7f\x72\xd1\xc5\x7c\x6c\xd9\x0a\xbe\xfb\xdd\xef\xf2\
+\x8d\x6f\x7c\x83\x4a\xb5\x8a\xb4\x2c\xde\xdc\xbb\xf7\x5d\xed\xe9\
+\x3c\x00\x4e\x33\x17\xb1\x6d\xdb\xb6\xd0\xe5\x97\x5f\xd1\x72\x72\
+\x01\x43\x5c\x7a\xe9\xa5\xdc\x7e\xfb\xed\xef\x5e\x1d\xd4\x6a\x7c\
+\xeb\xe8\x01\x9e\x1c\x1b\xe1\xcd\x52\x91\x98\x61\xb0\x3c\x99\xe6\
+\xc6\x85\x8b\xf9\xd4\xf9\xab\xf9\xa7\x6f\x7e\x93\x07\xfe\xe5\x01\
+\x2a\xa5\x32\x96\xb4\x79\xf5\x17\xaf\xfe\x52\x7b\x39\x0f\x80\x39\
+\x5c\xf7\xdd\x77\x9f\xf2\x5a\xd0\xe5\xba\xbb\xd9\xb2\x65\xcb\x2f\
+\x2d\x15\xc0\x69\x1f\x77\xff\xfd\xf7\x73\xec\xe8\x51\x2c\xdb\xc2\
+\xb6\x25\xbb\x76\xed\x7a\x4f\x7b\x38\x0f\x80\x33\xb0\xee\xbd\xf7\
+\x5e\xe5\xa5\x85\xdb\xd2\x69\xac\x95\xcb\xe5\x18\x18\x18\x60\xf9\
+\xf2\xf3\x39\xef\xbc\xf3\x59\xb8\x70\x21\x89\x44\x82\x6a\xb5\xca\
+\xc8\xc8\x08\x07\x0e\x1e\x64\xdf\xde\xbd\x1c\x38\x70\x80\x91\xe1\
+\x11\x3f\xbb\xda\xa9\x19\xb0\x79\xf6\xd9\x67\x4f\xcb\xde\xcd\x03\
+\xe0\x0c\xaf\xcf\x7d\xfe\x73\x4a\xda\x4e\x51\x88\xb4\x6d\xbf\xf8\
+\xc3\x2b\x06\xb1\xdd\x93\xdd\x2e\x43\x73\x81\x63\x4b\x1e\x79\xe4\
+\x91\xf9\xfd\x9a\x5f\xf3\xeb\xd7\xc1\xab\x08\xcd\xdf\x85\xf9\x35\
+\xbf\xe6\xd7\xdc\xaf\xff\x1f\x80\x04\x7a\xb0\xf1\xda\x3e\x93\x00\
+\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x17\x83\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdb\x09\x02\
+\x0c\x06\x0c\x45\xc2\xfe\x7f\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x16\xde\
+\x49\x44\x41\x54\x78\xda\xed\x5d\x5d\x6c\x5d\xd5\x95\xfe\xd6\xb9\
+\xf7\xfa\x2f\x71\x70\x1d\xff\x74\x4a\xe2\x49\x9c\x26\x40\x02\xc4\
+\x49\x4d\x1c\xe3\xc4\x49\x48\xd2\x24\xa8\xc4\x76\x30\x8a\x31\x8e\
+\x9d\x21\x29\x43\x1d\xc2\x9f\xd4\x32\x40\xa1\x9d\x91\x8a\x2a\x0d\
+\x30\x52\x2b\xf0\x54\xa4\x14\x1e\xa0\x45\x43\x63\x5b\x33\x0f\xe4\
+\x61\x2a\x21\xe5\x69\x2a\x8d\x34\xaf\x23\x34\x0f\x23\xa1\x99\x4a\
+\x10\x53\x75\x04\x52\x8b\xf6\x9a\x87\xb3\x7f\xd6\xda\xe7\x86\xda\
+\xc4\x76\x6c\xdf\xb3\x23\xcb\xb9\xbe\xe7\x9c\x7b\xee\xd9\x6b\xaf\
+\x9f\x6f\x7d\x6b\x6d\x20\x1f\xf9\xc8\x47\x3e\xf2\x91\x8f\x7c\xe4\
+\x23\x1f\xf9\xc8\x47\x3e\xf2\x91\x8f\x7c\xe4\x23\x1f\xf9\xc8\x47\
+\x3e\xfc\x98\x9e\x9e\xe6\xe9\xe9\x69\xce\x9f\xc4\xca\x1a\x49\xfe\
+\x08\x2a\x7b\xd0\x6c\x57\xbf\x7c\xdd\xd7\xd7\x47\xf9\xa3\xab\x30\
+\x0d\xd0\xd7\xd7\x8f\xbe\xbe\xbe\xfc\x89\x55\x9a\x00\xb8\xd5\x4f\
+\x04\x10\x51\x59\x8d\x90\x8f\x15\xae\x01\x06\x06\x06\x40\x44\x20\
+\x22\x0c\x0c\x0c\xe4\x4f\xad\x52\x04\x60\x6a\x6a\x8a\x99\xd9\x4f\
+\xbe\xfb\x01\x18\xd3\xd3\x53\xb9\x16\x58\xe9\x02\xc0\xcc\x60\x66\
+\xbc\xfb\xee\xbb\x7e\xf2\xdf\xfd\xf5\xaf\xc1\x86\xc1\x26\x7f\x78\
+\x15\x33\x2e\x4e\x5e\xe4\x52\xa9\xc4\xa5\x52\x89\x27\x2f\x5e\xcc\
+\x57\xfe\x0a\x1a\xc5\x59\x1d\xc5\xc1\x01\xcc\x67\xbf\x02\x05\x80\
+\x8d\xf1\xb6\x9f\x39\x17\x81\x8a\x8b\x02\x18\x00\x81\x00\x50\xae\
+\x01\x2a\xd3\x04\x30\x28\xa1\x54\x08\x72\x0d\x50\x79\x02\x60\xac\
+\x0e\x00\x01\x26\x17\x80\x4a\xf4\x01\x2c\x12\x98\x6b\x80\x0a\x35\
+\x01\x60\x24\x09\x01\x9c\xcf\x7f\x65\x6a\x00\x66\x80\x12\x10\x31\
+\x38\x47\x80\x2a\x31\x0a\x60\x24\x94\x1e\x9e\x2b\x80\x0a\xf5\x01\
+\x52\x0d\x00\xb0\xc9\x45\xa0\xe2\x34\x00\x60\x90\xc0\xb1\x47\x72\
+\x01\xa8\x40\x1f\x00\x36\x19\x84\xdc\x0b\xac\x5c\x27\x90\x04\x26\
+\x90\x8f\x8a\x13\x80\xc4\x25\x83\x72\x1f\xa0\x02\x05\x00\xa9\x13\
+\x98\x02\x01\xf9\x43\xab\x38\x01\x00\xb3\xb5\x00\x04\xce\x25\xa0\
+\x32\x4d\x80\xe7\x03\xe4\xf3\x5f\xd9\x02\x90\x73\xc1\x2a\xd5\x09\
+\x04\x81\x29\x77\x01\x2a\xd3\x07\x00\x80\x24\xa5\x84\xe4\x8c\xa0\
+\x8a\xd4\x00\x96\x12\xc6\xb9\x00\x54\xa8\x00\x58\x2e\x40\x92\x0b\
+\x40\xe5\x86\x81\x89\x0d\x03\x73\x01\xa8\x3c\x01\x30\x60\x50\x2a\
+\x01\xb9\x00\xac\xb0\x31\x3b\x3e\x80\x49\x73\x01\x94\xb3\x82\x2b\
+\x53\x00\x52\xe5\x6f\x8b\x43\x72\x0d\x50\x81\x26\x80\x0d\x12\x4a\
+\xd9\x40\x4b\xdc\x04\x14\x01\xb4\x03\x58\x6f\x85\xfb\x73\x00\xff\
+\x05\xe0\xbf\x91\x43\x18\xd7\xe2\x04\xba\xfe\x00\x58\x8a\x1a\x60\
+\x13\x80\x07\x00\x1c\x6b\x68\x68\xd8\xb9\x6d\xdb\xb6\xaa\x52\xa9\
+\x94\x86\xac\xc4\xf8\xdd\xff\xfe\x0e\x1f\x7c\xf0\xc1\xa7\x9f\x7f\
+\xfe\xf9\xbf\x01\xf8\x17\x00\x6f\x03\xf8\x9f\x7c\xea\xe7\x1c\x05\
+\x24\x00\xf3\x52\xaa\x0b\xd8\x00\xe0\xc7\xcd\xcd\xcd\x83\x83\x83\
+\x83\x85\xfb\x87\x86\x70\xdb\xf6\xdb\x03\x75\xdd\xfe\x62\x00\xff\
+\xf7\x87\x3f\xd4\xfd\xe6\x5f\x7f\xb3\xff\xbd\x4b\xef\xed\xbf\x74\
+\xe9\xd2\x8f\x67\x66\x66\xde\x01\xf0\x77\x00\xfe\x33\x17\x81\x59\
+\x8c\x57\x5f\x7d\x95\x37\x6e\x6c\xe7\x8d\xed\x1b\xf9\xd5\x89\x89\
+\xa5\x20\x01\x8f\x34\x36\x36\x7e\xfa\xd3\x9f\xfc\x84\x3f\xfa\xe8\
+\x23\xfe\xfd\x27\xbf\xe7\x4f\x3e\xf9\xc4\xff\xcc\xcc\xcc\xf0\xcc\
+\xcc\x0c\x5f\x99\x99\xe1\x2b\x57\xae\xa4\x3f\x1f\x5f\xe1\x2b\x1f\
+\x7f\xcc\x1f\x7e\xf8\x21\xbf\xf4\xd2\x4b\xdc\xd4\xd4\xf4\x27\x00\
+\x7f\x0b\xa0\x94\x3b\x81\x7f\xd6\x02\xd8\xd2\xb0\xeb\xef\x04\xd6\
+\x00\xf8\xe5\xf6\xed\xdb\x7f\x7a\xf9\xf2\xe5\xda\xd1\xb1\x51\x94\
+\x8a\xc5\x34\x45\xcd\x69\xa2\xda\xa5\xab\x99\xd9\xab\x00\xb6\xff\
+\x0c\x80\xea\x9a\x6a\x8c\x8d\x8d\xe1\xf2\xe5\xcb\xc5\x7b\xee\xb9\
+\xe7\x79\x00\xbf\xb5\x7e\x43\x2e\x00\x5f\xe4\x03\x24\x00\x12\x24\
+\xd7\x93\x0f\x50\x02\x70\x71\x68\xe8\xfe\xa1\x4b\x97\x2e\xf1\x8d\
+\x37\x7e\x0d\x2c\xc2\x52\xb6\xa6\x8a\x8d\xf6\xf6\x98\xfc\x9b\xc1\
+\x26\x00\x58\xbb\xb6\x09\xaf\xbf\xfe\x3a\x5e\x7b\xed\xb5\xed\x6b\
+\xd7\xae\xfd\x2d\x80\x03\xb9\x00\x5c\xd5\x05\x60\x4f\x0a\xbd\x4e\
+\x94\xb0\x04\xc0\xdb\xa7\x4f\x9f\x3e\xf6\xb3\x9f\xfd\x23\x6a\x6b\
+\x6b\x89\x99\x00\x36\xbe\x8b\x89\x9d\xff\x94\xb2\xc2\x76\xcd\x33\
+\x82\x16\x60\x52\x1a\xc1\x49\x42\x5f\x7f\x1f\xde\x7f\xff\xfd\xc6\
+\x9d\x3b\x77\xbe\x07\xe0\x58\x2e\x00\x57\x73\x02\x43\x18\x70\x3d\
+\xee\xf3\xfb\x7b\xf7\xee\x1d\x7c\xf9\xa5\x97\xd3\x55\xce\x4e\xd9\
+\x93\x6f\x74\xe8\x84\xc0\x38\x49\xf0\x4b\xdf\x1b\x05\xa5\x29\x7c\
+\xaf\x03\x06\x5a\x5a\x9a\xf1\xd6\x5b\x6f\x55\xdd\x72\xcb\x2d\x93\
+\x00\xbe\x99\x0b\x40\x39\x1f\xc0\xf6\x08\xba\x0e\x2e\x40\x6f\x73\
+\x73\xf3\xf3\x17\x2e\x5c\x40\x52\x28\xf8\x29\x75\x36\x9e\x55\x64\
+\x6a\xc2\x0b\x36\x56\x58\xa0\xb4\x04\x84\xb6\x70\x82\xc3\x0c\x34\
+\x36\x36\xe2\x9d\x77\x7e\x55\xdd\xde\xde\x3e\x09\xa0\x2b\x17\x00\
+\xad\x00\x00\x22\x24\xb4\xe8\xc9\xa0\xda\x24\x49\x7e\x71\xe1\xc2\
+\x6b\x85\xd6\xaf\xb6\xba\xa9\x57\x37\xc6\xd6\xbe\x73\x54\xb8\xea\
+\x94\xbc\x7b\xdf\x2b\x06\xc8\x73\xd8\x1f\xcc\x60\xb4\xb4\xb4\xe2\
+\x8d\x5f\xbc\x51\x57\x5b\x5b\x3b\x6d\xc1\xa4\x5c\x00\xa4\x0f\x00\
+\x5a\x74\x52\xe8\xf7\x47\x47\xc7\xda\xf7\xed\x3b\x10\x2c\x0f\x93\
+\xd3\xf3\x5e\xa9\x3b\x93\x00\xe1\xeb\x85\x23\x58\x88\x4d\x78\x2d\
+\x0e\x0f\xaf\x99\xb1\xf9\xa6\x2d\x78\xe1\x85\x17\x5a\x01\xfc\x12\
+\x73\x21\xcc\x54\x82\x00\x24\x44\xc0\xe2\x39\x81\x6d\xab\x57\xaf\
+\x7e\xe2\xd9\x67\x9f\x41\x9a\x8f\x74\x2b\xd7\xf8\x15\xef\x66\x9b\
+\x84\xa6\xf2\x21\x21\x4b\x0a\x3b\x09\x73\x41\x81\xdd\x1e\xa9\x8d\
+\xf4\xf2\x06\x43\x27\x4f\xe2\xc8\x91\x23\x3d\x16\x2c\xca\x05\xc0\
+\x15\x86\x10\x2d\x6a\x36\xf0\xe9\x87\x1f\xfe\x4e\x6d\x73\x53\xb3\
+\x8f\xe2\x1c\x21\x35\xf8\x01\xf0\xf9\x09\xa5\xea\x49\x6a\x03\xa9\
+\x12\x38\x9c\x2d\xe5\x23\x12\x18\x06\xf0\xe2\x8b\x2f\xa2\xb5\xb5\
+\xf5\x29\x00\x77\xe5\x51\x00\x87\x64\xc0\x22\xf9\x00\xed\x4d\x4d\
+\x4d\x67\x1e\x7f\xfc\x31\xa5\x9e\x63\x9b\x1e\x56\x3d\xc5\xba\x5f\
+\x4c\xb6\x10\x12\xe1\x1b\x04\xbf\x81\x03\x4c\x80\xf0\x19\x8d\x8d\
+\x8d\x98\x98\x98\x48\x0a\x85\xc2\x9b\x00\xea\x2b\x5a\x00\x0c\x10\
+\x34\xc0\xe2\x08\xc0\x53\xe7\x1e\x39\x57\x5a\xb5\x6a\x95\x56\xcf\
+\x7a\x11\xa7\x49\x2a\xf7\x1f\x66\xe1\xd5\x8b\xc9\xf6\x88\xa0\xfc\
+\x91\xf1\x8d\xfd\x4d\x2c\x22\x9e\xf4\xff\xbb\xba\x76\x61\x7c\x7c\
+\x7c\x1d\x52\xc8\xb8\x82\x35\x80\xb1\x8d\xe2\x16\x47\x00\xd6\xae\
+\x5d\xbb\x76\xf4\xcc\x83\x67\xc4\xa4\x87\x55\x0a\xe5\xd2\x85\x15\
+\xcb\xd0\x00\x4f\x10\x1a\x5b\xd0\xe2\xcd\x57\x10\x18\x96\xe8\xa0\
+\x61\x2f\x5c\x12\x40\x7a\xfc\x89\x27\x70\xd3\x4d\x37\x3d\x06\xa0\
+\xa3\xa2\x71\x80\x64\xf1\xda\xc4\x8d\x3c\xf8\xe0\x83\x35\xab\x57\
+\xd7\x0b\x1b\x8e\x30\x61\xb6\x63\x99\x5a\xd9\xc8\x4e\x5e\x98\x44\
+\xa3\xf3\x02\x52\x09\x30\x09\x41\x92\x20\x57\xf8\xa4\xaa\x52\x15\
+\x9e\x7b\xee\xb9\x04\xc0\x3f\x54\xbc\x0f\x40\x09\x2d\x78\x3a\x98\
+\x88\x4e\x8f\x8c\x8c\x58\x35\xcc\x5a\x51\xfb\x09\xe4\xc8\xdc\x73\
+\xa4\xce\x29\xc2\xff\xe0\xe1\x61\x28\xe4\xd0\x41\xc6\xa4\x42\xc4\
+\x14\x43\x0a\xc2\xb0\xaf\x77\x1f\x0e\x1d\x3a\xb4\x1f\xc0\x89\xca\
+\xd5\x00\x20\xd7\x22\x60\x21\xc7\x8e\x5d\xbb\x76\x75\xac\x6f\x6b\
+\x83\x61\x69\xc3\xdd\xc2\x67\x88\x90\x20\x84\x72\x14\x3c\x79\x66\
+\x8d\x02\x3a\xc9\x21\xe5\x43\xb0\xbc\x8c\xd2\x22\x0e\x45\x26\x11\
+\x1d\x30\x18\xcf\x3e\xfb\x0c\x4a\xa5\xd2\xdf\x23\xcd\x48\x56\x20\
+\x12\x98\x60\x31\x7c\x80\xd3\x83\x83\x83\x80\x31\xa9\x73\xc7\x52\
+\x25\x73\x6a\xa7\x49\x4c\x2c\x84\x07\x4f\x52\x60\x9d\x6a\x37\xde\
+\x7f\x30\x1c\xfb\x10\x01\x10\x92\xc0\x10\xc5\x02\xe2\xc2\x92\xf6\
+\x4d\xe8\xef\xef\x6f\x07\x30\x5e\xa1\x40\x50\x02\xa2\x05\x4d\x07\
+\x27\x85\x42\xe1\xbe\xe3\x7d\xc7\x6d\xb8\x19\x50\x3e\xa9\xe0\xc1\
+\x31\x0e\xc0\x32\xe2\x13\x12\xab\xc0\x41\x80\x42\x86\x30\x02\x0e\
+\xbd\x9f\xcb\x52\x38\x58\x1e\x9f\x1e\x75\xfe\xd1\xf3\x28\x14\x0a\
+\x4f\x01\x58\x5d\x79\x02\x00\x2c\x74\x3a\x78\xcf\xce\x1d\x3b\xff\
+\xa2\xa9\xa9\xc9\xab\x72\xe9\x01\x90\x8c\xe1\x95\x7a\xa7\xe0\xb4\
+\x79\x33\xa0\x53\xc4\x6a\xa6\x15\x83\x40\xc6\x93\xc2\xd9\x54\x79\
+\xa3\xf0\xa2\x6d\x7d\x1b\x06\x06\x06\x5a\x00\x9c\xab\x38\x13\x40\
+\x49\x02\x42\xb2\x90\x41\xc0\xf1\x23\x47\x8f\x04\x4f\x9e\x38\xf2\
+\xea\x35\x20\x14\xea\x14\xd9\xce\x1f\x5f\xe5\xc6\xc3\xb9\x41\xb0\
+\xd8\x05\x08\x41\x23\x18\x11\x0d\xb0\x13\x7a\x0e\x1a\xc7\x9a\x98\
+\xf3\xe7\x1f\x41\xa1\x50\x78\x02\x40\x6d\x05\x39\x81\x69\x71\x28\
+\x25\x0b\x1a\x06\x1e\x3f\x7c\xf8\xb0\xc0\xf8\x21\x56\x71\x98\x38\
+\x78\x1e\x50\x44\xf7\x52\x19\x3e\x61\x3a\x0c\x94\xbd\x27\x81\x27\
+\x80\x38\x72\x28\x53\xd8\x2b\x05\x85\xd2\x48\x82\x89\x45\x5a\x19\
+\x68\x6b\xfb\x4b\x1c\x39\x72\xa4\x15\xc0\x43\x95\xe5\x04\x92\x53\
+\xc3\x0b\x22\x00\x37\xaf\x5b\xb7\x6e\xf3\xb6\x5b\x6f\x0d\x1e\xb9\
+\x0a\xe3\x42\x02\x27\xb6\xe1\x6e\xe5\x92\xca\x0d\x90\x56\xf3\x2c\
+\xb4\x01\x22\x8f\x5f\x40\xc7\x2a\x59\xc4\x06\x60\x8a\x4c\x48\x7a\
+\xc2\xf8\xf8\x38\x00\x7c\x6f\x25\x44\x04\xb3\xc6\x01\x12\x10\x90\
+\x2c\x18\x21\xe4\x9e\xa3\x47\x8f\x0a\xe7\x2d\xcd\x3a\x72\x99\xd5\
+\x2a\x0f\x61\xe9\xc9\xb3\x9f\x63\xb8\xec\x61\x00\xfd\x58\xe3\x05\
+\x32\x5d\xec\x9c\x3d\x0a\x9a\xc2\xc1\x42\x86\xb5\x43\xe8\xde\xdf\
+\xba\x75\x2b\x0e\x1f\x3e\xfc\x35\x00\x23\x15\xe3\x04\xa6\x84\x90\
+\x64\xa1\x4c\xc0\x91\x54\x00\x54\xc6\x1e\x12\xde\xf3\x8b\xd8\xaa\
+\x64\x2f\x20\x52\x48\xc0\x2a\x2a\x48\x6d\xb7\xbc\x5f\x12\x5a\x42\
+\xfa\x11\x94\xfa\x10\x26\x58\x05\x16\x21\x87\x37\x08\x4c\xde\x14\
+\x9d\x3f\x7f\x1e\x44\xf4\x5d\x2c\xf3\xfd\x97\xe7\x46\x0b\x5f\x98\
+\xf2\xf0\x55\xab\x56\xad\xda\xb3\x7b\xf7\xee\x0c\x96\xaf\xc8\x1c\
+\xd6\xd1\xb3\x73\x2f\xf2\xfe\x32\xb2\x17\x7e\x43\xe4\xf4\xeb\xe8\
+\x40\xd8\x7d\x8b\x6d\xc8\x50\x11\x1c\xed\x8d\xc4\x82\x8b\x60\x9d\
+\xd3\xad\x5b\xb7\xa2\xab\xab\x6b\x0b\x96\x39\x91\x74\xd6\xd5\xc1\
+\x09\x6c\xb3\xe8\xf9\x17\x80\x9e\x9e\x9e\x9e\xea\xea\xea\x6a\x61\
+\xae\x35\x8a\xa7\xf3\xf7\x3a\x88\x57\xc4\xf0\xcc\xa4\xb1\x40\xf3\
+\xdc\xdb\xa4\x79\x02\x2c\x12\x4b\x0a\x1b\xd0\x18\x00\x20\x98\xc5\
+\xf6\x88\xb1\xb1\x31\x00\x78\x6c\xe5\xfb\x00\xb0\x7d\x22\x93\x05\
+\x01\x82\x0e\xf5\xf4\xf4\x08\x4f\x3d\xac\x50\x63\xe3\x2f\x16\xde\
+\x9f\xca\x01\x20\x4a\xfe\x40\x46\x02\xf0\x31\x83\x9d\x76\xfb\x19\
+\x26\xab\xdf\x7c\x48\x28\xf1\x03\x51\x0c\x2f\x73\xd0\x1c\x44\xee\
+\xe0\xc1\x43\xd8\xb0\x61\xc3\x21\x00\xb7\xad\x7c\x1f\x00\x94\x1e\
+\x3c\xff\x1a\xe0\x60\x4f\x4f\x8f\x02\x5f\x98\x11\x65\x00\x23\x08\
+\x47\x0a\x04\x62\x66\x0f\x22\x26\x10\x2b\x8e\x00\x31\x45\xef\xc1\
+\xe6\x0a\x34\x6b\x50\xc6\x3b\xbe\xa4\x40\xc0\xc6\x6c\x17\xc5\xf0\
+\xf0\x30\x2d\x67\x2d\x30\x47\x52\x68\x32\xdf\xcd\xa2\x1b\x57\xaf\
+\x5e\xdd\xb1\x75\xeb\x56\x81\xba\xe9\x30\x50\x26\x64\x04\x32\x94\
+\x41\x05\x25\x09\x04\xc4\x91\xed\xb6\x5a\x8c\x39\xf2\x17\xa4\xa7\
+\x91\x05\x08\x19\x31\xb7\x90\x95\x00\x32\x03\x27\x4e\x9c\x40\x6d\
+\x6d\xed\x03\x00\x5a\x56\xb0\x13\x08\x4b\x0a\x05\x30\xbf\x7d\x22\
+\x7b\x77\xed\xba\x23\x29\x14\x8b\x61\xf5\x97\x01\x6b\x83\x13\x47\
+\x02\xd0\xb1\x82\x40\x9a\xfa\xa5\x1c\x43\xd2\x24\x51\x16\xa1\x9f\
+\xd6\x6e\x10\xf6\x9e\xa3\x48\x41\xa0\x88\x2a\xff\x90\x1e\xbb\x66\
+\xcd\x1a\x1c\x3f\x7e\xbc\x06\xc0\xd9\x15\xec\x04\x9a\x94\x11\x4c\
+\xf3\x0e\x04\xf5\xde\x79\x67\x8f\x52\xe7\x92\xb8\xa1\x58\x3b\x7e\
+\x72\x49\x70\xfc\x04\x1a\x28\x96\xb4\x87\x7e\x8d\x80\x8e\x11\x25\
+\x81\x54\x85\x91\x46\x16\x35\x6b\x08\xd6\x6f\x08\xa8\x11\x21\xa4\
+\xa0\x01\x60\x74\x74\x14\x00\xfe\x1a\x40\x61\x85\x02\x41\x69\xb8\
+\x44\x94\xcc\x77\x14\xb0\xb7\xbb\xbb\xdb\xe9\x67\x3d\x81\x91\xed\
+\x0f\x31\xbd\x75\xe4\x62\x55\x81\x4c\xd6\x47\x75\x34\x52\x24\x32\
+\x8e\xbe\x1b\xc7\x70\x02\x67\xb2\x48\x2a\x3b\xe9\x9d\xc6\xd4\x9f\
+\xd8\xb4\xe9\xeb\xe8\xec\xec\x6c\x03\xf0\xad\x15\x8b\x03\x24\xf3\
+\x5f\x1a\x56\x5f\x57\x57\xd7\x71\xfb\xf6\xed\xe9\x43\x35\xb8\x2a\
+\xb1\x37\xb6\xcf\x14\xb2\x01\xaa\xc4\x4b\x26\x8d\x2c\xae\x13\xbd\
+\x87\x8c\xc6\x90\x21\x5f\xb4\xfe\xe1\x41\x66\xd6\x61\x62\xe0\x21\
+\x87\xba\x84\xe1\xe1\x61\x60\x19\x66\x09\xe7\xa6\x01\x80\xf9\xdc\
+\x36\xee\xce\xce\x6f\x74\x16\x4b\xc5\x12\x02\xdc\x1f\x00\x7a\x12\
+\x5a\x80\xe2\x5a\x7f\xc5\xe3\xb7\xab\xda\xd2\xc0\x42\xd2\xc8\x04\
+\x55\x0f\x4d\x01\x03\x6b\x2f\x1f\x62\xf2\x33\xb8\x80\xe7\x14\x0a\
+\x3b\xc2\x82\x80\x66\xb1\x91\x43\x87\x0e\xa1\xa5\xa5\xe5\x10\x80\
+\x2d\x2b\x4e\x00\x0c\x0c\x08\x04\x4a\xe6\x75\xdb\xb8\xde\xdd\xdd\
+\xbb\x21\x73\xf9\x31\x14\x2c\x6d\x7d\x1c\x82\x21\x56\xe9\x36\x79\
+\x13\x30\x21\x2a\x43\x06\xd0\xe7\xb3\x54\xe9\xd0\xfe\x42\x10\x0a\
+\x8a\x74\x61\xc4\x40\xb6\x6c\xa4\x52\xa9\x84\x13\xf7\x9e\x20\x00\
+\xdf\x59\x81\x61\x60\x5a\x17\x90\xcc\x2f\x12\xb8\x77\x77\x57\x57\
+\x84\xc6\x89\x87\xcc\x3a\xae\xf7\xf6\x97\x64\x6e\x40\x0a\x8d\x5c\
+\x95\xd2\x9b\x17\x9a\x42\x86\x7d\x32\x5f\x20\x01\x28\x85\x20\x52\
+\xe4\x80\x42\x39\x99\x82\xb8\x08\x06\xe3\xfe\x93\x43\x28\x16\x8b\
+\xa7\x01\xd4\xad\x30\x13\x10\x70\x80\x79\x72\x02\x6a\xaa\xab\xab\
+\x77\xed\xfc\x46\x67\x86\x88\xcd\xb2\xd8\xc3\xe3\xf3\xc1\x0c\x79\
+\xb2\x86\x10\x1a\x92\xf1\xa3\x50\xd1\xa4\x58\x3e\x62\xd3\x3b\xc1\
+\x02\xd6\x45\x22\xa4\xc2\xd1\x90\x5c\xe2\xa8\x2c\x3d\xce\x56\xa4\
+\x97\x6a\x6e\x69\xc1\xfe\xfd\xfb\x1b\x00\x0c\xaf\x3c\x20\x28\x99\
+\xd7\x6d\xe3\xba\x6e\xbf\xfd\xf6\xea\xea\xea\xaa\xe8\xa1\xea\xee\
+\x5e\x1c\x4c\xb9\x5d\xa5\xc6\x7f\xbc\x11\xf8\x3f\x97\xd3\x1e\x19\
+\x27\x32\x0b\x35\x3a\x3a\x78\xf8\x3c\xa3\x15\x3c\x0b\xb6\x29\x73\
+\x8a\x22\x4a\xfa\x59\x04\x51\x32\x03\x83\x83\x83\xc0\x32\x22\x8e\
+\xce\x81\x13\x98\x86\x81\xf3\x44\x09\xdc\xd7\xd5\xd5\x15\x3d\x3c\
+\xce\x16\x75\xc0\xb1\x80\x65\xfd\xbf\x3e\x4e\x96\x7f\x69\x58\x58\
+\xd7\x02\xc4\x71\x3f\x4b\xde\x80\xa7\x95\xc5\xbc\x02\x2d\x64\x06\
+\xd6\xcf\x20\x8e\xf2\x0e\xe1\x77\x4f\x4f\x0f\xd6\xad\x5b\xb7\x03\
+\xc0\x1d\x2b\x0a\x09\x74\x1b\x46\xcc\x53\x8b\x98\x03\xdd\xdd\xdd\
+\x19\xe2\xa6\x22\x80\xc8\xaa\x20\x01\xef\xc6\xb9\x01\x8a\x71\x43\
+\x36\x9e\x0e\x5e\x36\xd8\x8f\xbf\x98\xa4\x9d\xa9\xb7\x4c\xe4\x20\
+\x0a\xd3\x61\x74\x45\xb2\xbc\x4f\x22\xc2\xc9\x93\x27\x81\x65\x42\
+\x19\x9b\xbd\x0f\x80\x94\x10\x32\x0f\x4e\x60\x4d\x92\x24\xbb\x3b\
+\x3b\x3b\x15\xcf\xcf\x39\x62\x7e\x4d\x52\x54\x0d\x6c\xa4\x40\x18\
+\xaf\x05\x4c\xdc\x21\x44\xed\x6b\xa3\xbd\xfc\xb8\x3b\x48\x0a\x14\
+\x46\x1c\x07\xe5\x30\x92\xd2\x00\xd9\x4a\x25\x8e\x5b\x10\x00\x00\
+\x06\x06\x06\x50\x55\x55\x35\x04\x60\xcd\x0a\xf2\x01\xdc\x97\xbc\
+\x66\x01\xe8\xbe\xf9\xe6\x9b\x6b\x56\xd7\x5b\x6a\xbd\x2d\xca\x8c\
+\x55\xae\xc4\x02\x98\x03\xf8\x82\xa8\x8e\x8f\x14\x29\x84\x45\x38\
+\xc7\xfa\x0c\xe1\xad\xc7\x3c\x3f\xe9\xe0\x99\x08\x62\x0c\x21\xa9\
+\x51\x28\x65\x86\xaf\x20\x52\x4a\x37\x34\xdc\x80\x83\x07\x0f\xae\
+\x06\x30\xba\xe2\x7c\x80\x79\x70\x02\x0f\x74\xef\xee\x0e\x2b\x59\
+\xda\x52\xd9\xa4\x81\x35\x45\x3b\x44\x5d\x94\x61\x02\xa9\x58\x50\
+\x32\x7c\x39\x4e\x14\x21\xe2\xfe\x47\x15\xc2\x88\x38\x83\xac\x2b\
+\x86\x82\x9f\x42\xc2\x4c\xa1\x6c\x1e\x62\x68\xe8\x7e\x00\x78\x14\
+\x4b\x9c\x32\x36\x87\x6c\x60\x02\x4a\xe6\xa5\x43\xc8\xc1\xbb\x0e\
+\xde\x95\x01\x5d\x3c\xd9\x5b\xb2\x70\x22\xbb\x4c\xf0\x7c\x30\xcf\
+\xd9\xd7\xc8\x4e\xd4\x16\x2e\xaa\x2b\x88\xf9\xc6\x8c\x58\xf3\x20\
+\x53\x31\xa4\xd0\x44\xa4\x9c\x44\x8e\x92\xe2\x2a\x73\x68\xef\x63\
+\xc7\x8e\x0e\xdc\x76\xdb\x6d\x9b\x01\x1c\x5d\x01\x3e\x80\x49\x1b\
+\x84\x80\xae\xb5\x32\xe8\x86\xba\xba\xba\x3b\xba\x77\x77\xab\x15\
+\x29\xf1\x35\x12\x7e\x87\x84\x74\xe1\x6c\x36\xb1\xee\x0b\x10\xa1\
+\x78\xca\x27\x28\xd7\x35\x40\x39\x9c\x9c\xed\x1e\x12\x53\xc9\xca\
+\x70\x03\xc3\xb9\x46\xb5\xa0\x61\xd6\x25\x65\x36\x3f\xf0\xe8\xf2\
+\x87\x82\x8d\xd5\x00\xd7\x9e\x0e\x3e\xd8\xdd\xdd\x5d\xaa\xaa\xae\
+\x56\x16\x56\x96\x7c\xeb\xb2\x30\xa1\xf2\xa1\x57\xbb\xea\x00\x16\
+\x39\x69\x28\xd7\x29\x46\x69\x16\x41\x0e\x61\x64\x91\x3e\x68\x22\
+\x89\x8e\x48\x58\x77\x2c\x53\xc2\x0a\x91\xd0\x62\x1c\x3e\x7c\x18\
+\xad\xad\x2d\xdf\x04\x70\xcb\x32\x37\x01\x6c\x5b\x04\x5d\x33\x2b\
+\xf8\x68\x6f\x6f\xaf\x0e\x9d\xc2\xce\xf4\xa2\x04\x4b\x28\xe9\x08\
+\xf6\x85\x82\x80\xcb\x30\x77\x39\x6a\x16\x8d\x88\xe2\xe5\x22\x0d\
+\x56\x71\xa7\xaa\x48\x02\x43\x22\x50\x51\x5f\x01\x09\x38\xc6\xd1\
+\x03\x14\x46\x50\x2c\x95\xd0\xdf\x3f\x40\x00\x1e\x5f\x21\x50\xf0\
+\x35\x6f\x1d\x7a\x24\x2d\xff\x62\x35\xe1\xce\xb3\x26\xc7\xf9\xce\
+\x4c\x78\x94\x98\x70\xba\xc1\x59\x08\x57\x3d\x8a\x32\x5d\xc1\x22\
+\x98\xd8\xf8\x39\xe2\xb2\x66\x81\xa5\x4f\xc2\x9a\x9a\x66\x94\xdf\
+\x91\xd5\x58\xe5\xc0\xaa\xa1\xa1\x93\xa8\xae\xae\x3e\x05\xa0\x69\
+\x59\x27\x83\xc8\x16\x86\x98\x2f\x9f\x0e\xee\xd8\xb0\x61\x43\xdb\
+\xfa\xf5\xeb\x95\x0d\x76\xf0\x6e\x9a\xbf\xe7\x08\x5d\x43\xe6\xff\
+\xd9\xb9\x0d\xb5\x81\x9a\x0d\x1c\xf1\x06\x65\xd8\x18\x82\x3a\x61\
+\xb3\x45\x95\x90\x74\x40\x15\xa1\x54\x14\x96\x92\xcc\x57\x88\xf4\
+\xb5\xb6\x5f\x68\x68\xf8\x0a\x8e\xdd\x7d\x77\x2d\x80\x87\x97\xb9\
+\x13\x68\xbb\x85\x7f\x79\x0d\xd0\x7f\xe0\xc0\x01\x3d\xf9\x90\x4d\
+\x9d\x2d\x63\x57\x2d\xf4\x18\xe5\x0b\xd0\xb0\xf2\xd4\x39\xa2\x07\
+\x45\xf9\x7b\x56\xd0\xb0\xc3\x05\x38\x8a\x0d\x1d\xde\xaf\xc5\x47\
+\xaa\x7b\x4d\x17\x8b\x20\x67\xd9\x6f\x2a\x32\x1d\x0f\x04\xb2\x48\
+\xdd\xf2\xd4\x00\x98\x97\x6e\xe1\xfd\xfb\xf7\xef\xcb\x24\x63\x34\
+\x41\x23\xd2\xf9\x1c\x69\x01\x67\x82\x22\xda\xb7\x2b\xf6\x70\x13\
+\x63\x90\xc5\x04\xe4\xb5\x1d\xb7\x95\xbd\xaa\x0f\x3e\x1d\x0b\xa8\
+\x29\x2e\x13\x17\x36\x0b\xb2\xd3\x58\xdc\x7b\x90\x22\x71\xd9\xb4\
+\x69\x13\xba\xba\xba\xbe\x8a\x25\x48\x1c\x5d\xac\x66\xd1\xdb\x1a\
+\x1a\x1a\xb6\xef\xdd\xd3\xeb\x1d\x30\xc5\xb8\x75\xb4\x2b\x96\x10\
+\x6d\x96\x96\xe5\xfa\xbc\x68\x36\x0e\x54\xe7\x8f\xe0\x0e\x48\xba\
+\x38\x6b\xbc\x81\x75\xb8\xe9\x4d\x84\x09\xfc\x01\x13\x87\x77\x0a\
+\xed\x23\x4f\x39\x53\x82\xe8\x84\xce\x70\x74\x6d\xe0\xec\xd9\xb3\
+\x00\xf0\x5d\x00\x55\xcb\x13\x09\xbc\xb6\x66\xd1\xc3\xc7\x8e\x1e\
+\x45\xa1\x54\xb4\x1d\xfe\xc5\x04\x46\x6b\xc8\x87\x69\x14\xc5\x72\
+\xd6\x08\xb3\x02\x00\xa2\x9d\x00\xca\x56\x03\x93\xb0\x0a\x01\x22\
+\x56\x99\x41\x77\x3a\xe9\x10\xcf\x07\x15\xb2\x11\x69\x99\xd6\xf3\
+\x2a\x14\x14\x42\x26\x85\x60\xe7\x8e\x1d\xd8\xb1\xa3\x63\xdd\x52\
+\x83\x87\xe7\xde\x2b\x78\xee\x3e\x20\x01\xb8\xff\xe8\xb1\xbb\x33\
+\xde\xbd\xe6\xe7\xeb\x96\x6f\xc6\x48\xea\x37\x67\x48\xa2\x2a\x14\
+\xe3\xc0\x04\xe2\x72\x85\x25\xc2\x87\x20\x89\x18\xaa\xf6\x01\x8c\
+\x72\xfc\x71\x92\x21\x23\xc5\xdd\x49\xf4\xbd\x87\x66\x55\x1c\xfd\
+\x3d\x3d\xef\xd4\xa9\x51\x00\x78\x66\x29\x69\x81\x39\xe5\x02\x92\
+\x2f\xa7\x01\x0e\xdc\x78\xe3\x8d\x1b\xf7\xee\xe9\x51\xcd\x9e\x0d\
+\xc7\x21\x15\xeb\xcd\x1c\x48\x3e\x44\x42\xb9\x9e\x81\xa0\x28\x54\
+\x54\x78\xbd\x8e\xf1\x1c\xb7\x83\x23\x02\x89\xfe\x3a\x11\x08\x15\
+\x31\x89\x51\xa6\x40\x95\x2d\x6b\xc5\x47\x06\x3e\xaa\x71\xdc\xf1\
+\x80\x6f\xee\xdd\xbb\x17\x1d\x1d\x1d\x1b\x01\x7c\x7b\xd9\xe1\x00\
+\x70\xbb\x86\x99\x39\xab\x80\x73\xe3\xe3\xe3\x28\x14\x8b\x4a\x8d\
+\xfa\x46\x6e\xc2\x6e\xab\x20\xce\x65\x00\x29\x5b\xdf\xa7\xb2\x79\
+\x5e\x25\x9b\x0c\x30\x23\x57\x20\x59\x6c\x47\xef\x26\xa6\xab\x7c\
+\xca\xb5\xa7\x89\xb3\x07\x24\x3a\x89\x84\xbf\x93\xa7\x9f\x65\xb6\
+\xa7\x81\xb8\x37\x02\x9e\xfe\x9b\xa7\x51\x2c\x16\x9f\x07\xd0\xb0\
+\xcc\x70\x00\xe1\x6c\xcf\x7e\xdc\xdc\xda\xda\xda\x3f\x78\xdf\x7d\
+\x9a\x83\x4f\x1a\x32\x75\x93\xe8\x9b\x30\xf8\x78\x3d\xf0\x2e\xbd\
+\x3d\xe1\x40\xfc\x88\xa2\x31\x8d\x14\xaa\x92\xb1\x00\xea\x50\x26\
+\x83\x13\x52\xca\x40\xd4\x2a\x2e\xde\x94\x22\xd6\x00\x46\x38\x7a\
+\x06\xc8\xde\x90\x7b\x3b\x64\x35\xdb\xdb\x37\xe2\xc4\x89\x13\x2d\
+\x00\x7e\xb0\xcc\xc2\x40\xd7\x25\x6c\x4e\x22\xf0\xbd\xb1\xd1\xb1\
+\xa4\xba\xaa\x5a\x93\x3f\x39\x2e\xc7\x12\xd1\x95\xeb\xf7\x03\x44\
+\x0e\x1f\x22\xcc\x9f\xa2\x3d\x02\xc5\xe4\x23\xed\x69\xc0\xac\xe9\
+\x62\x10\xd9\xc6\x72\x3e\x82\x42\x83\xa3\xf6\x42\x88\xcd\x82\xaf\
+\x3d\x84\x6f\x26\xa5\xab\x87\xb2\x1a\xc1\x59\xac\x33\x67\xcf\xa2\
+\xbe\xbe\xfe\x1c\x80\xad\xcb\x2a\x0a\x98\x23\x1d\x60\x73\x7d\x7d\
+\xfd\xc8\xc8\xa9\x11\x64\x29\x5e\x65\x1a\x3e\xc8\xb4\xad\x51\x59\
+\x95\x8c\x5d\x56\xf8\x7e\xa6\x2f\x40\xb4\x86\x85\x36\x88\x8a\xbe\
+\x05\x0a\x48\xaa\x2e\x51\xae\x5e\x8a\x49\xa2\xca\x4f\x14\x60\x56\
+\xfc\xbd\x48\x14\xa8\x70\x20\x9b\x30\x18\x0d\x37\x34\xe0\xa1\x87\
+\xbe\x5d\x02\xf0\x4a\x00\xb1\x97\x7c\x14\x00\xdb\x23\x68\xd6\x3e\
+\xc0\xcb\xe7\xce\x9d\x2b\xad\x59\x53\xaf\x13\x27\x9c\xdd\xc8\x49\
+\x41\xb0\xfe\x33\xa9\x4c\xb1\xa6\xcd\x4e\x46\x9b\x3f\xa9\x07\xaf\
+\x4b\x8a\x1d\x90\x19\xed\x32\x16\x39\x8f\x14\x55\x00\x87\xa2\x32\
+\xef\x84\x52\xa6\x8a\x18\xd9\x4d\xab\x54\x62\x2a\xdb\x50\x82\x44\
+\xb2\xe1\xde\x13\xf7\x62\xf3\xe6\xcd\xfb\xaf\xb7\x43\x38\x7b\x52\
+\xa8\xc7\x01\x66\x35\xee\x69\x6b\x6b\xfb\xd6\xe9\xb1\xb1\x0c\x07\
+\xbf\x1c\x4b\xd7\x3b\x17\x51\xdf\x7f\x19\x97\xcb\xbf\x13\xeb\xaa\
+\x60\xe5\x4b\x28\xa8\x59\xc4\xf7\x40\xa6\x25\x8c\x1f\x46\x6b\x06\
+\xa9\xad\x54\x8e\x40\x32\x8c\x38\xda\x70\x2a\xb6\x17\x1c\xef\x61\
+\xa4\xe5\x32\x29\x14\xf0\xe4\x93\x4f\x82\x88\x5e\x06\xb0\x6d\x69\
+\x0b\x80\x71\x3e\xc0\xac\xc2\xc0\xe6\x62\xb1\x78\xe1\xd5\x57\x5e\
+\x41\x75\x4d\x8d\xc2\xcf\xb8\x5c\x7a\x8f\x49\x37\x6e\x8a\x57\x69\
+\xd4\x1c\x50\x2e\x70\x9d\xd5\x23\xe1\x28\xc6\xdd\xc6\x24\xa2\x23\
+\xe4\xd1\x68\x9a\xb8\xda\x87\x28\xf6\xff\xa3\x62\x90\x2c\xb7\x08\
+\x7a\x33\x2a\xa9\xbb\x88\xd4\xf7\x73\xe7\xee\xe8\xe8\xc0\x99\x33\
+\x67\x56\x01\xf8\x27\x00\x37\x2c\xdd\x30\xd0\xee\xd1\x99\xfa\x00\
+\x5f\x28\x00\x55\x00\xde\x7a\xe4\xfc\xf9\x96\x6d\xb7\xde\xaa\xbd\
+\xf3\xa8\xb0\x53\x51\x29\x35\xa5\x2f\xb2\xfd\xac\x9b\x43\xab\xf6\
+\x31\x51\x03\x08\x8e\x89\x9d\x64\x63\xf4\x68\x63\x69\x08\x76\x91\
+\xd5\x50\xc4\xd9\x8e\xe1\xda\x64\xa9\x9c\x54\x28\x1a\x31\xf2\x7b\
+\xb0\x68\x4c\x21\xd5\x80\xee\x36\x2a\xb5\xdd\xe9\xd3\x7f\x85\xce\
+\xce\xce\x5b\x00\xbc\x8d\xeb\xb0\x4d\xdd\x1c\x9c\xc0\x94\x12\xf6\
+\x05\x95\x21\x09\x80\x9f\xf7\xf6\xf6\x1e\x3e\x37\x7e\x4e\x3b\x76\
+\x31\xe8\x42\xa4\x3d\x3b\xe2\x2c\xba\x86\x2c\xa1\x53\x34\x70\xcd\
+\xb6\x04\x10\xe7\x92\xdc\x37\x40\x45\x1f\x21\x92\x08\xbd\x44\x4d\
+\x68\x3a\x11\xaf\xde\xcc\x2e\x63\x1e\x48\x16\x98\x75\xac\xee\x55\
+\xa6\x49\x2b\x3c\x8f\x26\x06\x61\x4d\x12\xc2\x0f\x7f\xf8\x03\xb3\
+\x65\xcb\x96\xbb\x01\xbc\xb1\xd8\x42\x30\x07\x42\x48\x02\x22\xba\
+\xda\xfc\xd7\x03\xb8\xd8\xbb\x6f\xdf\xc8\xc4\xc4\x04\x17\x8b\x05\
+\xcd\xb0\x41\x9c\xb4\x91\xab\x42\xdb\xce\xb8\x54\x4c\xee\xef\x47\
+\x31\x1f\xe0\x6a\xa5\x61\x19\xb9\x60\xb5\x2b\x98\x0a\x1d\x45\x3a\
+\x5a\xce\x1f\xa9\x44\x10\x29\xc5\x6f\xe2\x32\xf5\xa8\xb1\x81\xca\
+\x2f\xb0\xec\x31\xc2\x59\x20\x85\x81\xaf\x34\x36\x26\x13\x13\x13\
+\xdc\xb3\x67\xcf\x03\x00\xfe\x19\xb3\x68\x47\x3f\x39\x39\xc9\x53\
+\x53\x53\xbc\x38\x1a\x00\xf0\x7b\x07\x97\x81\x82\x0e\x01\xf8\xf7\
+\xe1\xe1\xe1\xbe\x9f\x5f\xb8\x80\xba\xba\x5a\xaf\x00\x4d\x1c\xf7\
+\x33\xc9\xbf\x06\x52\x46\x6c\xab\xcb\xd1\xad\x11\xc8\x3f\x1c\x77\
+\x05\xf5\xe7\x93\xc2\x0c\x42\x68\x46\xda\x09\xe4\xd8\x1e\x47\xa2\
+\x93\x41\x1c\x85\x20\x1b\x57\x8c\xaa\xa9\xe1\xfe\xf6\x49\x9b\x2f\
+\x44\x4e\x29\x47\x55\xc6\x4e\x28\x6a\x6a\x6a\xe8\x85\x1f\xfd\x08\
+\xc7\x8f\x1f\x3f\x0a\xe0\x3f\xec\x73\xfd\xb3\x63\x7a\x7a\x9a\xa7\
+\xa7\xa7\xbf\xb4\x20\x5c\x35\x06\x3d\x35\x72\x8a\x41\xf0\x44\x10\
+\xa2\xc4\x6a\xef\xf0\x9a\xac\x3a\x27\x0b\x13\x92\x2d\x1f\x73\xc2\
+\x42\x6e\x9b\x19\xf7\xda\xff\x58\x73\x62\x89\xa6\xb0\xc7\x26\x09\
+\xd2\xbf\x49\x81\x23\xca\xbe\x26\x20\x41\x62\x1b\x58\xa7\xbd\x8b\
+\xd2\x76\xf6\x52\x50\xe1\xbb\x9b\xca\xf3\xc8\x36\xbc\xcc\xde\x8b\
+\xdd\x14\x2b\xb1\xed\xf0\xae\x7a\xcf\xee\x7a\xf0\xf9\x11\xfb\x66\
+\x1a\x26\xdb\xcf\x4d\x20\x3e\x53\x3d\xbb\xf2\xdf\x2b\xbd\xe5\x04\
+\x94\x20\xdc\xb3\xf5\xbb\xfc\xb5\x90\x7e\x4f\xf7\xd9\x83\x83\x83\
+\x60\x66\x4c\x4e\x4e\xfa\x79\xeb\xeb\xeb\xa3\x79\x11\x80\x91\x53\
+\x23\x5c\x57\x5b\xa7\x8b\x30\x8c\x11\xce\x96\x93\x66\x23\xd4\xbb\
+\xf1\xe5\x5a\xf2\xbd\xb4\xaf\x2f\xc3\x94\xa1\x5c\xeb\xeb\x99\xf0\
+\xdb\x6d\xde\xe4\xb6\x8a\xb1\x79\x76\x66\x7b\x1d\x57\x4a\xc6\xe1\
+\xb7\x2a\x00\x35\x69\x31\x27\x1b\x56\x7c\xbe\x14\x68\x32\xa1\x1a\
+\xd8\x58\x2a\x1a\x33\x8c\x71\x0d\x2a\xcb\x5c\x33\xe3\x68\x8a\x28\
+\xc2\x18\xdb\xc2\xd6\x08\x1a\x99\xf1\xf7\xcf\x96\xeb\x68\xa0\xbf\
+\x2f\xd8\xf8\xcf\x72\xd7\x4c\xff\x66\x7f\x1b\xa1\xe1\x8c\xf6\x1d\
+\xca\x3d\xbf\xe9\xe9\xa9\x39\x0b\xc2\xec\xab\x56\x54\xc3\xbd\x08\
+\x71\x21\x01\x7f\x81\x94\xed\x27\xe8\x1c\x82\x36\x22\x94\x29\xf5\
+\x94\x27\xf8\x8d\x9b\x28\xb4\x7d\x03\x89\x4d\xa2\x24\x54\x6d\xaf\
+\x67\x7d\x7a\xeb\xd9\xdb\x14\xb6\x2e\xe8\x55\x62\x2f\x55\x76\x9c\
+\xeb\xa0\xe8\x9e\x59\xbd\x23\xca\x89\xc9\x5d\x96\x44\xa1\x09\xa9\
+\x2f\xcb\x54\x16\x5d\xf1\x87\xb2\x00\xc0\xc8\xb7\xc2\x23\x11\xb9\
+\x5e\xa5\xc0\xb5\xdc\xf5\xe6\x30\x8a\x5f\xa4\x1c\x3e\xfb\xec\xb3\
+\x32\xaa\x37\x2d\x11\x4b\x8a\xe9\x64\x27\x04\x9f\x29\xb4\x4a\xd4\
+\xab\x76\xb2\x6a\x0b\x49\xe2\xc3\x48\xa5\xde\x9c\xda\xf4\xc7\x06\
+\x33\x22\x55\xb0\xff\x1c\x0a\x2a\x38\x7d\x29\x3f\x87\x00\xa5\x2e\
+\x29\x73\xef\x24\xd5\xb2\x34\x0f\x80\x57\xe5\x4a\xed\xc3\x7e\x37\
+\x48\x35\x4d\xfe\x5c\xa7\x96\xe5\xb9\x59\xd5\x1e\x5d\xcf\xdd\xb3\
+\x37\x5d\xc1\x5c\x68\x33\x1a\xcc\x63\x12\x5f\xd7\x3e\xd3\xc1\x7b\
+\xef\x05\x00\x4c\x4d\x4d\xcd\xbf\x09\x90\x63\x6c\x6c\x94\xab\x4a\
+\x69\x31\xc7\x1f\xff\xf4\x47\xbc\xf9\xe6\x9b\xd7\x15\xbf\xce\x07\
+\x30\x35\x39\xc9\x94\x90\x9f\xc2\xb9\x4e\xfc\x2c\x34\x40\x99\x74\
+\x30\xb0\x58\x7b\x07\xe7\x63\x96\x6b\xf7\xcb\x4e\xfc\x1c\x05\x20\
+\x48\x40\x2e\x00\x4b\x63\xf4\x0f\xf4\xcf\x8b\x16\x9e\x1d\xea\xc4\
+\xc0\xa7\x9f\x7d\x3a\x17\xab\x91\x8f\x7c\xe4\x23\x1f\xf9\xc8\x47\
+\x3e\xf2\x91\x8f\x7c\xe4\x23\x1f\xf9\x58\x92\xe3\xff\x01\x20\x06\
+\x00\xbe\x06\x90\xe5\xa3\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
+\x60\x82\
+\x00\x00\x1c\x9f\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xb3\x00\xb3\x00\xb3\x3b\x54\x6b\xc4\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x05\x0e\
+\x09\x18\x35\x5a\x6e\xe9\x42\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x1b\xfa\
+\x49\x44\x41\x54\x78\xda\xed\x5d\x6b\xac\x5e\x65\x95\x7e\xd6\x6e\
+\xff\x58\x0a\x66\x28\x15\x64\xcc\x28\x33\x5a\x46\xc6\x4e\xa2\x11\
+\x33\x74\xc8\xd0\x30\x31\x26\x18\xb9\xd8\x1a\x70\xe2\xa4\x54\x09\
+\x28\x97\x52\xe8\x05\x39\x9c\x96\x53\x38\x52\xda\x53\xa8\xf4\x46\
+\xa5\x0e\x75\x10\x32\xc6\xc1\x70\xfb\x8f\xe0\x8c\xcd\x24\x38\xfc\
+\x40\xe6\x87\xd6\x18\x64\x74\x10\xa4\x17\x4a\x7b\x90\xc0\x59\x6b\
+\x7e\xbc\xb7\xb5\xd6\xde\xdf\xa5\xf4\x9c\xd3\x9e\xe3\x5e\xa1\x29\
+\x3d\x67\xef\x6f\xef\xfd\xbd\xeb\x5d\xeb\x59\xcf\xba\x6c\xa0\x95\
+\x56\x5a\x69\xa5\x95\x56\x5a\x69\xa5\x95\x56\x5a\x69\xa5\x95\x56\
+\x5a\x69\xa5\x95\x56\x5a\x69\xa5\x95\x56\x5a\x99\xce\x42\x7f\x4a\
+\x0f\xbb\x64\xc9\x92\x0b\x01\x5c\x06\x60\x01\x11\x7d\x14\x90\xd9\
+\x00\x1d\x16\xe0\x57\x04\xec\x01\xe1\xb1\xef\xed\xfe\xde\xd3\xad\
+\x02\x4c\x33\xb9\xf2\xca\x2b\x17\x02\x18\x02\x70\x01\x11\x20\x02\
+\x80\xc8\x3c\x3c\x51\xfa\x97\x3c\x0b\xd0\xd0\x83\x0f\x3e\xf8\x4c\
+\xab\x00\xd3\x40\x96\x2e\x5d\xba\x1a\xa0\x0d\xe1\x69\x05\x73\xe7\
+\xcc\xc5\x99\x7f\xfe\x41\xfc\xd9\xa9\x73\x70\xd2\xac\x59\x38\x72\
+\xe4\x08\xf6\xef\xdb\x8f\xdf\xbf\xfa\x0a\x5e\x7f\x7d\x5f\xf9\x5a\
+\x08\xb7\xfc\xcb\x77\xbf\xbb\xb1\x55\x80\x29\x2c\x5f\xfd\xda\x57\
+\x6f\x23\xa1\x61\x90\x60\xce\x9c\xd3\x70\xf6\xd9\x67\x63\xce\x9c\
+\xd3\x40\x24\x10\x21\x00\x12\xf6\xbc\x84\xbf\xf7\xed\xdb\x87\x5f\
+\xee\xdd\x8b\x03\xfb\xf7\xa7\x8f\x18\xdc\xb5\x6b\xd7\xb7\x5a\x05\
+\x98\x82\x72\xd5\x55\x5f\xbb\x18\xc0\x13\x00\xf0\x97\x7f\xf5\x51\
+\x9c\xf3\xf1\x8f\x07\xd3\x1f\x16\xfd\x69\x00\x8f\x41\xb0\x07\x24\
+\x0b\x44\x70\x19\x80\x0b\xd3\xaf\x7f\xf1\x8b\x5f\xe0\xa5\x97\x5e\
+\x8a\x8a\x82\x4b\x1e\x78\xe0\x81\x27\xa7\xeb\xf7\x34\x73\xda\x6a\
+\x36\x55\xc3\x20\xe0\x03\x73\x4f\xc7\xc7\xcf\x3e\x1b\xcc\x0c\x00\
+\xcf\x08\x30\xb4\xe8\x8b\x5f\x7c\x56\x1d\xfa\x3c\x80\x6d\x3f\x7a\
+\xf4\x47\x17\x08\xc9\x10\x04\x0b\xe7\xcd\xfb\x28\x46\x47\x8f\xe0\
+\xf5\xd7\xff\x00\x22\x1a\x06\xf0\x64\x6b\x01\xa6\x90\x5c\x7d\xcd\
+\xd5\x57\x00\xf4\x6f\x00\xb0\xe0\xbc\xf3\x70\xf2\xc9\x27\x03\x90\
+\x27\x17\x2d\x5a\x7c\x49\xaf\x73\xff\xfd\x87\x3f\x7c\x02\x84\x8b\
+\xdf\x7c\xf3\x30\x7e\xf6\xdc\x73\x90\xf0\x25\x7d\x79\xc7\xfd\xf7\
+\xff\x60\x3a\x7e\x57\xd5\xf4\xd4\xea\xea\x52\x22\xc2\x07\xcf\x38\
+\x03\xb3\x67\xcf\x06\xb3\x80\x45\x06\xfb\x39\x97\x45\x06\x99\x05\
+\xb3\x66\x9d\x84\x0f\x9c\xfe\x01\x54\x55\x05\x9a\x51\x5d\x3a\x5d\
+\x2d\xc0\xb4\x54\x80\x6a\x06\x9d\x5b\x11\xe1\xb4\xd3\xe6\x42\x98\
+\x21\xc2\x3f\xf8\xd2\xe2\x2f\xfd\xbc\x9f\x73\x2f\xbf\xfc\xf2\x9f\
+\xb3\xc8\x0f\x20\x82\x53\x4f\x9d\x83\x8a\x2a\x54\x54\x9d\xdb\x2a\
+\xc0\x94\xb2\x00\xf4\xa1\xaa\xaa\x70\xf2\xc9\xb3\xc1\x22\x10\x91\
+\xc7\x8f\xe6\x7c\x61\x7e\x9c\x85\x71\xd2\xec\xd9\x40\x45\x20\xc2\
+\x87\x5a\x10\x38\x95\xb4\xba\x4a\x7a\x2d\xc1\x02\x1c\xe5\xf9\x01\
+\x30\x12\x84\x19\x33\x88\xa6\xeb\x3e\x99\xc6\x16\xa0\xa2\xdf\x52\
+\x45\x38\x74\xe8\xcd\x60\x01\x58\x8e\xca\x87\x8b\xc8\xa5\x22\x8c\
+\x23\x47\x8e\x04\x86\xb0\xa2\xdf\xb6\x0a\x30\x95\x1e\x8a\xaa\xe7\
+\x2a\x22\x1c\x38\x78\x00\xcc\x0c\x16\xb9\xe2\xe1\x87\x1f\x9e\xdf\
+\xcf\xb9\x0f\x3d\xf4\xaf\xf3\x45\xe4\x0a\x11\xc6\xc1\x37\x0e\x82\
+\xaa\x0a\x15\xd1\x73\xad\x02\x4c\x29\x0e\x80\x1e\x27\x9a\x81\x83\
+\xfb\x0f\x62\x74\x74\x14\xcc\x0c\x11\x19\xee\x33\x0a\x18\x66\x66\
+\x8c\x8e\x8e\xe2\xd0\xa1\x43\xa0\xaa\x02\x55\xd5\xe3\xd3\x55\x01\
+\xa6\x2d\x13\x78\xf3\x4d\x37\xbf\x00\xc2\xfc\x53\x4e\x39\x05\x67\
+\x9d\x75\x56\xfa\xf1\x33\x00\x86\x96\x2c\x59\xf2\xac\x3f\x7e\xf7\
+\xee\xdd\x17\x20\x24\x8c\x16\x0a\x80\x97\x5f\x7e\x19\x87\x0f\xbf\
+\x09\x02\xfd\x7c\x64\x64\xe4\x6f\x5b\x10\x38\xf5\x70\xc0\x20\x80\
+\x27\xde\x7c\xf3\x30\x5e\x79\xe5\x15\x9c\x71\xfa\x19\x10\x60\x21\
+\x41\x9e\xd9\xbd\x7b\xf7\xd3\x02\x3c\x06\x60\x0f\x09\x16\x08\xe4\
+\x32\x11\xb9\x30\xc0\x46\xe0\xb5\xd7\x5e\xc3\xe8\x91\xc3\xa8\xa8\
+\x02\x80\x41\x4c\x63\x99\xd6\xc9\xa0\x55\x2b\x57\xde\x86\x40\xe5\
+\x62\xd6\xac\x59\x98\x3b\x77\x2e\x66\xcd\x9a\x85\x92\x12\x90\x84\
+\xfa\x20\x20\x8c\x8e\x1e\xc1\xfe\xfd\xfb\xf1\xc7\xb7\xfe\x98\xd2\
+\x44\x83\x1b\x36\x6c\x98\xd6\xc9\xa0\x19\xd3\xf9\xe1\xf6\xec\xd9\
+\xf3\x1f\xe7\x9f\x7f\xfe\x5b\x54\x55\x9f\x1d\x7b\xf7\x1d\x1c\x3a\
+\x74\x28\x60\x82\xb1\x31\x00\x02\xaa\x08\x6f\xbf\xfd\x36\x0e\x1f\
+\x3e\x8c\x7d\xfb\xf6\xe1\xe0\x81\x03\x18\x7b\xf7\x5d\x10\x11\xa8\
+\xa2\x5b\xee\xbe\xfb\xee\xbb\x31\xcd\xe5\xb8\x59\x80\x25\x4b\x96\
+\xc8\xe4\x3c\x20\x21\xec\xef\xf8\xb4\xb1\xf0\x83\x84\xf2\xd3\xe7\
+\x63\x08\x10\x90\x41\xc6\xa2\x0b\x47\xf2\x29\xf1\x7f\x84\x40\x24\
+\xe5\x6b\x4c\xc7\x8a\x94\xeb\x14\x64\x9a\x00\x6a\xb1\x3e\xf9\x18\
+\xc2\xfd\x3b\xef\xa7\x3f\x09\x05\x98\xc8\x85\xa7\xb8\x28\xb1\xe0\
+\x27\x3f\x9c\xa8\x85\x23\xf3\xe4\x65\x91\x04\x84\x5c\x14\x94\x17\
+\x5d\xcc\x31\xf6\x64\xd2\xeb\x8a\x54\x5d\x50\x2a\x8b\xe2\x2f\x05\
+\x46\x49\x28\x1d\x49\xe5\x7c\x91\x72\xed\x1d\x3b\x76\xd0\xb4\x55\
+\x00\xbf\xf8\x8b\x17\x2f\x9e\xbc\x8b\x8b\x38\x46\x50\xd2\x7f\x71\
+\x43\xd6\xf5\x52\xd2\x01\xee\x18\x7b\x3c\xc5\x23\xe3\x22\xab\xcf\
+\x11\x91\x8e\x9f\x57\x0e\x17\xfc\xe4\x27\xcf\x46\xab\x42\x20\x01\
+\xb6\x6d\xdf\x46\xd3\x4e\x01\xf4\xe2\x4f\xe4\xc2\x8b\x5a\x5c\x08\
+\x20\x24\x20\x41\x74\x02\x52\xcc\x73\x52\x08\x89\x0b\xe3\x94\x05\
+\xd1\x2d\x14\x05\xb0\x80\x11\xea\x1c\x01\x40\x22\x65\xfd\xb3\xb2\
+\x11\x44\x04\xb9\x0e\x11\xcd\xca\x11\xce\x07\x7e\xfa\xd3\xff\xcc\
+\x2e\x67\xeb\xd6\xad\x93\xb2\x36\x93\x4e\x04\x8d\xdb\xe2\x4b\x29\
+\xe7\xf2\x7f\xc0\x02\x11\x8e\x7f\x04\x2c\x02\x4e\xff\x0f\x24\x76\
+\x30\xfc\x0c\x1c\xf6\x2f\xc7\xf3\xe3\xdf\x9c\xce\x47\xf9\x1c\x61\
+\x01\x0b\xca\xbf\x25\xe6\x1a\xd2\xe7\x71\x3c\x26\xdf\x17\x07\xd5\
+\xc9\xf7\x13\x3f\x9b\x39\x28\x49\xfe\x13\xee\xe1\xbc\x05\x0b\x50\
+\x91\x73\x23\xd3\x41\x01\xc6\xc5\xef\x4b\x30\xb3\xf9\x4b\x14\x94\
+\x45\x4b\x0b\x17\x17\x63\x4c\x04\x51\x0f\xf2\x31\x50\x8b\xa5\xcf\
+\x61\xff\x37\x92\x72\x84\x6b\x30\x23\x2b\x0b\x8b\x00\x7a\xf1\x45\
+\x2f\xb6\xa4\xd4\x73\xbe\x46\x3a\xc7\x28\x10\x2b\xa5\x8c\x8a\x81\
+\xf8\x73\x66\x06\x51\x05\xa2\x0a\xcb\x6f\xbc\x71\x52\x40\xf2\xcc\
+\xc9\x72\x34\x04\x60\xd1\xa2\xc5\x7d\x99\x70\x8a\xa6\xbb\x58\x4c\
+\x89\xa6\x55\x19\xe3\xba\x3b\xcd\x66\x56\xd2\xf1\xc6\xdd\x17\xc3\
+\x9d\xcc\x2f\x45\x13\x1d\x7d\x05\xb8\x83\xcf\x2f\xc6\x9b\xf3\x8f\
+\x6a\x26\xdd\x59\xa6\x62\xe6\xc5\x52\x0e\xfa\x79\x28\x28\xa8\x76\
+\x23\x9f\xfe\xf4\xb9\x78\xfe\xbf\x7f\x06\x99\x24\xe3\x3c\x29\x0a\
+\x10\x18\x35\xe9\x0b\xa0\xa5\xff\x13\x6e\x02\x4e\xda\x5b\x93\xfe\
+\x3a\x6d\x95\xaf\x3f\x56\x83\x37\xc5\x01\x05\xf3\x9f\x7e\xc8\x76\
+\x31\xa5\xac\x58\x50\x46\x32\x5a\x67\x7e\xd6\xa0\x38\x92\xe3\x08\
+\xc9\xa1\xa1\x51\x04\x12\x80\x8b\xfa\x4a\xbe\x5f\x89\x56\x60\x9a\
+\xb8\x80\xa5\x4b\x97\x0a\x11\x81\xa8\x42\xb0\xc4\xc1\xec\x25\x13\
+\x98\xfc\xb1\x36\xcd\xcc\xc5\xa4\x82\x95\x89\x35\x3e\x9f\xf3\xf9\
+\xc9\xfc\x87\x7f\x17\x93\x0b\xe5\xd3\xd3\xe7\x71\x32\xd3\x32\x66\
+\xcc\x75\xfe\xbd\xb0\xc2\x01\xc5\x35\x48\xfc\xb9\xfe\x59\x32\xf1\
+\x2c\x41\x95\x38\xbb\x05\xc9\xd7\x80\xfa\xac\xf0\x0c\xe9\x79\x91\
+\x5d\x19\x1b\xb7\xc2\x81\x88\x22\xc2\xca\x15\x2b\x65\xca\x5b\x80\
+\xaa\xaa\x00\x01\x2e\xbe\xf4\xe2\x62\x6e\x11\x80\x14\xd4\x06\x0a\
+\xba\xcf\xce\xec\x53\x30\xbb\xc9\x7c\x8b\x07\xea\x16\x99\x93\xdb\
+\x65\xd6\x0a\x84\xe3\x05\x14\xc0\x41\xda\x9d\x49\x29\xa1\xef\x85\
+\xb3\x49\xd6\x46\x3e\x02\x7d\x6b\xcb\x1a\xae\x91\x83\x10\x01\x40\
+\x51\x89\xb3\x6b\x2b\xd6\x26\x85\x8e\xd9\xdb\xc5\x9f\xcf\x9f\x3f\
+\x1f\x2f\xfe\xcf\x8b\x93\x02\x06\x27\xd4\x02\x5c\x75\xd5\xd7\x24\
+\xd2\xaa\x51\xbb\xc7\xf2\x2e\xca\xbb\x33\xed\x24\xb0\xda\x69\x6c\
+\xd1\x36\x07\x30\x56\xac\x07\xe7\x1d\x99\x41\x1e\xdb\xdd\x9a\x2d\
+\x8b\x46\xda\x6c\x51\xbb\x28\x80\x87\x1c\x35\xb0\xfd\x3c\x28\x90\
+\x28\x3a\x0a\xd0\xd7\x50\xd6\x2b\x47\x03\x6c\x2c\x50\xfe\x3c\x75\
+\x0d\x6d\x75\x42\x44\x82\x68\x49\x38\xa4\xa1\x89\xb0\x7a\xf5\x6a\
+\x99\xb2\x16\x80\x42\x36\x0d\x9f\xbf\xe8\x22\x05\x76\x38\x6d\x0a\
+\x07\x98\x5c\x7c\x2c\xcd\x71\xb7\xe8\x9d\xc6\x3a\xce\x57\x5b\x9f\
+\xa5\x06\xcc\xc4\xfb\x77\x87\x12\x45\xec\x67\x67\x9c\x20\x81\x11\
+\x00\x13\x84\xc2\xa2\x51\xba\x4f\x1d\xdf\xa7\xbf\x59\xf3\x0a\xe2\
+\x70\xa1\xb2\x22\xc2\x0a\x94\x86\x6b\xb0\x3a\xeb\xaf\xcf\x9e\x87\
+\x5f\xfe\x72\xef\x84\x33\x35\x13\xac\x00\x14\xd7\x23\x7e\x71\x91\
+\x11\x61\x0d\x8f\x44\x9c\x39\x94\x82\xb7\x32\xbc\x67\x83\x94\x0d\
+\x98\xe2\x74\x7c\x41\xf3\x92\x6d\x39\xd5\x18\x3c\xd2\x0a\xa5\xd8\
+\x38\xad\x28\x64\xc8\x1f\x0a\x16\x2b\x86\xa0\x99\xf9\x13\x45\x22\
+\x45\x57\xa5\x63\x0d\x52\xf7\x6f\x49\x9f\x02\x58\x35\xf0\xf5\x91\
+\x82\xc4\x0d\x44\x53\xd5\x05\x5c\x73\xcd\x35\x52\x19\xf3\x8f\x54\
+\x9f\x1f\xe3\x61\x18\x00\x16\xec\x9f\x8b\x97\xc1\xf9\x67\x1c\x82\
+\xfa\x62\xd6\x99\x6b\xe4\x8d\x70\x0a\x01\xad\x3b\x29\x04\x51\x71\
+\x2d\xd9\xbc\x67\x73\xcc\x06\xc4\x65\x70\x67\xee\x31\xdd\x5b\x31\
+\xf7\x61\xb5\x38\x3f\xa3\x26\x9f\x02\xe0\x63\xe7\x86\x60\xaf\xc9\
+\xd6\x95\x15\xb7\xc7\xa0\x0a\x40\x45\x18\xb8\x75\x40\xa6\x9c\x05\
+\x20\x0a\xdc\xf6\x67\xff\xf1\xc2\xd4\x96\x65\xe2\xe3\x44\x8f\x26\
+\x20\x96\xa9\x57\x4d\xc5\x8a\xda\xcb\x8a\xdc\x21\x2a\xc4\x90\x01\
+\x84\xe2\xc2\x37\x1f\x42\x92\x05\x76\xdc\x89\xb7\xcf\x8c\xb1\x34\
+\xc4\xfd\xd6\x9a\x70\x27\x1e\xc0\xb9\xa5\x4c\x2e\x77\xc8\x0f\x98\
+\xd0\x33\x3e\xcb\x47\xfe\xe2\x23\xf8\xcd\xff\xbe\x3c\xa1\x21\xe1\
+\x84\x58\x80\x6f\x7c\xe3\x5a\x21\x0a\x69\x55\x61\x18\x06\x2f\xec\
+\x48\x14\x16\x2c\x2e\x2a\x6b\xb6\x0c\xe5\xdf\x9c\x81\x92\x14\x53\
+\xcc\xd6\x12\x00\x6c\x28\xdc\x0c\xaa\x58\x4c\xe8\x66\x80\x98\x0b\
+\xff\x72\x88\xa9\xc2\xc8\x0c\x3c\xd9\x52\xcd\xec\x2c\x46\xb2\x2e\
+\xa2\x2c\x58\x23\xd8\x63\x07\x48\x55\xc8\x09\x2e\x4c\x67\x02\x91\
+\x2c\x8c\x2a\x86\x84\x83\x83\x6b\x64\xca\x58\x80\x8a\x82\x6e\x5d\
+\x70\xc1\x3f\x64\xc4\x0f\x43\xd6\xb8\x30\x4c\x79\xc3\x2f\x7f\xf9\
+\x9f\x1a\x3f\xf3\xe1\x47\x1e\x89\x84\x8a\x4d\xde\x88\x08\x48\xc8\
+\x7a\x54\xf1\xf9\x82\xe2\x73\x8b\xb1\x28\x67\x50\x34\xdd\x96\x75\
+\xd4\xd6\xc5\xb0\x47\x8a\xff\x91\x9c\xda\x15\xb1\xad\xe6\xd4\x01\
+\x84\x96\xdb\x62\x13\x4f\x86\xe7\x08\x51\x00\x65\xdc\x01\x9c\x79\
+\xe6\x99\x78\xe5\xf7\xaf\x80\x26\x08\x0d\x4c\x88\x02\x50\x55\xe5\
+\x90\x46\xc3\x6b\x4d\xef\xa6\xa4\x1c\x67\xca\x4f\xfa\x4a\xe7\x8a\
+\x32\xb1\x09\x60\x71\x66\xdb\xd0\xb8\xd0\x7a\x0e\x00\x15\x1a\xa0\
+\x7c\x26\x59\xf6\x2e\xa3\x75\x71\x0a\x95\x14\x40\xa1\xd4\x0c\x40\
+\x45\xdd\x93\x3a\xa7\x28\x79\x83\x02\xe5\xe7\xa1\x0c\x32\xc3\x3d\
+\xb0\x3a\x9e\x50\x51\x05\x99\x2a\x2e\xe0\x86\x1b\x6e\x88\xcc\x9f\
+\x4a\xd6\x40\xc5\xd3\xc6\xc4\xea\xc4\x8b\x18\x9f\xec\x85\x33\x8b\
+\xa7\xd8\x36\x56\x8c\x9f\x66\xee\x32\x97\x60\xc1\x16\x0c\xcb\x98\
+\x62\x7a\x0b\x4a\xa1\xc1\xa5\x33\xf3\x52\x8b\xe5\xe3\xf9\x63\x3a\
+\x91\xa4\xdc\x11\x7b\xf7\x01\xc5\x55\x48\x0c\x8d\x35\x10\x45\x66\
+\x0a\x0b\x20\x0d\xcc\x60\x05\xc2\xd0\xd0\x90\x9c\xf0\x16\x80\x62\
+\xe9\xcc\x79\x7f\x77\x5e\x5e\x7c\xaf\xbe\x01\x13\xb2\x0e\xd4\xfa\
+\x30\x00\xe2\xb3\x3e\xe0\x9a\x59\x15\x05\xb6\x2c\x39\x07\x15\x67\
+\x67\x37\x42\xcd\x49\x1a\xf1\xc0\xd0\x85\x73\xa5\xa4\x80\xeb\x00\
+\xce\xe2\xd8\x92\xc5\xcc\x8c\x9f\x35\x81\xc2\x1e\x7c\x96\xcf\xe1\
+\xc8\x71\x9c\x7a\xea\xa9\x38\x70\xe0\x00\x26\x02\x0d\xce\x9c\x00\
+\xfb\x1f\xc1\x9f\x38\x92\xc6\x66\xd0\x32\x97\xa3\x90\xb9\x74\x31\
+\x74\x39\xb3\x26\x96\x8b\x6d\xca\xc2\x15\x4b\x52\x0a\x3b\xa4\xe6\
+\xc3\xa9\x60\x93\x5a\xb6\xce\xfa\x6d\xcd\x3d\x34\x65\x03\x0b\x39\
+\xa4\x5d\x06\xb9\x84\x12\xa7\x88\x31\x2a\x8f\x18\x02\xc9\x73\x22\
+\x04\x8a\x61\x6d\x49\x10\x65\x82\xe2\x44\x75\x01\xcb\x97\x2f\x97\
+\x2a\x86\x7f\x81\xda\x85\x4b\xf4\x14\xb3\x59\xa8\xdb\x62\x66\xbb\
+\x39\xba\x9c\xe8\xe1\x3a\xe5\x2a\x2a\x96\x66\x6f\x72\x53\x92\x48\
+\xf4\xfd\xa0\x44\x02\xac\xeb\x01\xea\xf5\x02\x16\xd9\xa7\xfb\xb4\
+\x45\x22\xc9\xb4\x27\xf3\x0e\xf1\xc9\xa3\x42\x43\x43\x94\x6b\x32\
+\x91\x43\xf9\x8e\x02\xfd\xc1\xc6\x3d\x55\x04\x10\x2a\x0c\x0f\x0f\
+\xcb\x09\x6b\x01\x12\xf3\xf7\xc9\x4f\x7e\x2a\x82\x5c\xce\xe6\xb1\
+\x30\x70\x63\x51\xf1\x49\x47\xfe\x2a\x4a\xe8\x64\x02\xb8\xec\xc2\
+\x54\x94\xdb\x58\xa3\x57\x4f\xe9\x26\x3b\x50\x2c\x03\xd7\x5c\x8e\
+\x28\x7a\x17\x63\x92\x4d\x3e\x29\x57\x23\x1e\x64\x9a\x88\x23\x7e\
+\x06\x19\x4e\x19\xc2\x8a\xc8\xf6\x2c\xa6\x66\x0c\x15\xe8\x53\xce\
+\x2a\xdf\xd3\xac\x93\x4e\xc2\x5b\xa3\xa3\xe3\xee\x06\xc6\x5f\x01\
+\xa2\x6f\x34\xa6\x59\x91\x3e\x52\x5b\x50\x81\x10\x59\xfb\xda\x64\
+\x01\xdc\x37\xcd\xca\x67\x06\x8b\x1e\xeb\xfc\x52\x15\xae\x06\xe6\
+\xca\x9f\x8a\xcb\x29\xe4\x7a\x3e\x45\x1b\x17\xe4\x4e\xd9\x32\x09\
+\x54\x3c\x18\xef\x59\x94\x5f\x90\xc2\x6c\x29\x93\xce\xb6\x0e\x41\
+\xbc\xef\x2a\xb4\x78\x58\x7b\x02\x29\x45\x0f\x91\x53\xd8\x33\xa0\
+\x10\x5d\x9d\xb0\x18\x60\xc5\x8a\x15\x92\x40\xa0\x78\x86\x2d\x73\
+\xe5\x54\x16\x4c\xb1\x73\x69\x35\xa5\x17\x08\x84\xe6\xde\xcb\x42\
+\x5e\x7d\xf5\xd5\x8d\xe7\xec\xdc\xb9\xb3\x00\xbb\xac\x10\xa2\x2a\
+\x81\x80\x6b\xaf\xbd\xb6\xf1\xdc\x6d\xdb\xb6\xe5\x6b\x5c\x7f\xfd\
+\xf5\x8d\xc7\x6c\xd9\xb2\x25\x2a\x0b\xb9\x54\x36\x5c\xea\x1b\x3e\
+\x89\x6c\x43\x52\x29\x9b\x82\x4d\xda\x58\x4c\xb8\x98\x36\xd8\xfa\
+\xf5\xeb\xe5\xd6\x5b\x6f\xa5\x13\x4a\x01\x02\x48\x01\xfe\xe6\x9c\
+\x73\xc0\xec\xf3\x77\x8c\x9c\xef\x92\x3a\xd0\x0a\x24\x4c\xf7\xe7\
+\x11\xd6\x49\xa3\xa2\x2c\x5f\xbf\xe6\x9a\xc6\xe3\xef\xbf\x7f\x47\
+\xf4\xd3\x9a\x7c\xa2\x7c\xbd\xeb\xae\xbb\xae\xeb\xf5\xae\xbf\xfe\
+\x7a\x6c\xdd\xb2\x05\x5d\xbd\x52\x0a\x41\xe1\x29\x63\x74\x59\x7c\
+\x45\x73\xab\x84\x12\x29\xcc\x98\x33\xa5\xea\xbb\x22\x11\xcc\x98\
+\x31\x23\xa4\x8a\xc7\xd1\x0d\x8c\x8b\x4d\x59\xb5\x7a\xb5\x50\xac\
+\x66\x4d\x9a\xcf\x0e\x08\xa5\xe2\x47\x0d\xe0\x38\xc6\xd0\x50\x54\
+\x6a\xc7\x2f\xdb\x25\x6e\x10\x2b\x7b\x9a\x64\xc7\x8e\x1d\xaa\x86\
+\xc0\x27\x63\x7a\x2f\x7e\xe6\x34\x96\x2d\xab\x71\xf7\xde\x2d\x09\
+\x2c\xff\x50\x03\x88\xb0\xb5\x02\xba\x30\x34\xd5\x42\x88\x2a\x10\
+\x65\x0d\x6a\x55\x31\x6b\x02\xca\x15\x85\x3a\x81\x91\x8d\x1b\xe5\
+\x84\xb1\x00\xa9\x84\x69\xde\xbc\x8f\x65\xa4\xaf\xc2\x67\xe5\x47\
+\xeb\x09\x90\x92\x6b\xef\x4e\x06\x98\x84\x52\xac\xd3\xbb\xf6\xeb\
+\x75\xf3\xbd\x7d\xfb\x76\x15\x51\x88\x4d\xdf\xbc\x87\xaf\xec\xc6\
+\x65\x37\x76\x0b\x4d\x14\x40\xf4\x69\x66\x1f\xb2\xea\xd4\x32\x6c\
+\x6d\x43\x2e\x12\x75\x61\xb3\xeb\x4b\x20\x21\x30\x31\x66\xce\x9c\
+\x39\x6e\x11\xe1\xf8\x28\x40\x2c\xfb\x65\x31\x4f\x85\xe4\xfe\x49\
+\x24\xd3\x3e\x30\x40\x4c\x54\x81\x46\x1f\x44\x90\xfa\xfb\xba\x6b\
+\xaf\xeb\xae\x28\x04\xd7\x01\x1c\x62\x8e\x65\xcb\x96\x75\xbc\xc6\
+\xb7\xbf\xfd\x6d\x73\x1f\xcb\x6f\x5a\xde\xf5\x9e\x58\x34\x0f\x40\
+\x30\x95\x0e\xb6\xba\x2d\x12\x4f\x16\x99\xd6\x80\xa8\xae\x13\x85\
+\x52\x22\x94\x84\x5a\xe0\xaf\x68\xdc\x0a\x45\x8e\xd9\x05\xdc\x7a\
+\xeb\x37\xa5\x22\x42\x45\x94\xcd\xb2\x31\xb9\x99\x4e\x45\xa6\x4b\
+\x0d\xf5\xc9\x36\xcb\xd6\x59\x01\xb8\x2c\x7e\x07\x13\xbe\x75\xeb\
+\x96\x02\xfa\x52\xa9\x19\x4b\xe1\x01\xba\x7c\xfe\xe6\xcd\x9b\xe3\
+\xfd\x15\x4a\xf7\xde\x7b\xee\xed\xa1\x94\x9c\x15\x4e\xd3\xce\x22\
+\xd6\x05\xa6\xc6\x8f\x6c\xf2\xe1\x68\x62\x2e\xae\xc4\x64\x35\x59\
+\x1a\x6b\x1e\xa8\xaa\x50\x55\x15\xee\xdd\x7c\xaf\x1c\x77\x0b\x40\
+\xa8\x80\x0a\xf8\xc8\x87\x3f\x5c\xcf\xdf\x67\xd4\x1f\x63\xfc\x54\
+\xc6\x95\xeb\x01\xc4\x24\x6d\xba\x65\xbc\x12\x81\x74\xc3\x0d\x9d\
+\x11\x39\x9b\xba\x2e\x57\xac\x09\xc1\xf2\xe5\x37\xf5\xdc\xcd\xa4\
+\xc0\x59\xaf\x5d\x96\x2c\x5e\x2d\x93\x98\xe0\xbd\x67\xfc\xa4\x64\
+\x0e\x33\x98\x75\x49\xa1\xa6\xfe\x41\xb0\x8d\x90\x46\x47\x8f\x60\
+\xf6\x49\xb3\xc7\xc5\x0a\x1c\xb3\x05\xa0\x8a\x40\x55\x95\xab\x67\
+\x52\x85\x8b\x01\x81\x99\x79\x93\x4c\x6f\xea\xc4\x4e\xda\x21\x2c\
+\xdc\xe5\xcb\xe6\x8e\x8b\x7f\xdf\x7d\xf7\xd5\x76\x4b\xfe\x37\xf7\
+\x4e\x34\xdd\xb3\x69\x53\xad\xda\x27\x01\xc6\x91\x4d\x23\x3d\xac\
+\x12\xab\x32\xf7\x68\xaa\xb9\x3c\x8f\xae\xf0\xc9\xcc\x64\x4a\x56\
+\xb1\x06\xcc\xb6\x3e\x40\x54\x45\x12\xab\x96\x32\x0e\xc5\x13\xa0\
+\x8a\xd2\x04\x93\xe3\xa7\x00\x83\x83\x83\xa5\xf0\x43\xdc\x83\xf8\
+\x12\x2d\x51\x99\x41\x9d\x0d\xcb\x15\xba\xd2\x35\x0a\x58\x76\xc3\
+\xb2\x8e\x7e\xdb\x7f\x69\xd9\xe4\xea\x7b\xe2\xee\x79\x06\x93\xfd\
+\x53\x59\x4a\x19\xe3\xae\xa1\x29\x67\x8b\xc1\xb9\x57\xc1\x57\x2c\
+\x73\x72\x2d\x4a\x19\x58\xf5\x40\xa0\xa1\xd5\x2d\x28\x07\x9b\x22\
+\x91\x44\x31\x8f\x09\xe7\x68\xe0\xbe\xfb\xb6\xc8\x71\x53\x80\xa0\
+\x85\x84\x33\xce\x3c\x53\x71\xe0\x62\x43\x9c\x46\x6e\x5d\xf5\xc7\
+\xc1\x35\x76\x1e\x7d\xfe\x41\x5d\x47\xed\xa0\x31\xd7\xd4\xd1\x2d\
+\xc2\x00\x54\x83\x8a\x6f\x36\xed\xcd\x03\xe8\x86\x14\xe4\x9c\x83\
+\x0a\x59\xc5\xe5\x30\x04\x0d\xfd\x89\x6c\x2a\x8d\xa0\x1b\x5f\x0c\
+\x96\x0a\xe7\xec\xdb\xbf\x0f\x44\x84\x19\x15\x1d\x1f\x0b\xb0\x76\
+\xed\xed\xb9\xe3\x07\xb9\x0c\x4b\xe5\xe2\xe1\x9a\x28\xe3\xcf\x4a\
+\x7d\xbd\x5d\xb0\xc4\x0b\xbc\x17\x29\xbb\xa9\x14\x7c\x32\x24\x11\
+\x01\xa5\x17\xa1\xe3\x4e\xd6\x8d\x9f\xec\x2c\x19\x77\x07\x81\x62\
+\xf3\xf9\x2c\x70\xa5\x5d\x50\x4a\x9e\x3e\xcf\x73\x03\xba\xfc\x0d\
+\x99\x2f\x31\x1b\x47\x5f\x27\x6a\x6d\xaa\xbb\xdc\xbe\x7d\xbb\x4c\
+\xba\x02\xa4\xd8\x7f\xee\xdc\xd3\x9c\x46\xc3\xd5\xdf\xa5\x0a\x59\
+\xe4\x5d\x59\xdf\x69\x9c\x09\x93\xf7\x22\x2b\x57\xac\x30\xbb\xc6\
+\xb4\x6c\x2b\xb3\xdb\xcd\x94\x27\x1f\x5d\x23\x6d\x7a\x11\x41\xda\
+\xa2\xa5\xeb\x72\x71\x05\x6c\xba\x85\xeb\x38\x43\x2b\x03\xa4\x44\
+\x20\x63\x62\x31\x8c\xb7\xa2\xcc\x63\x78\xf5\xd5\x57\x91\x8a\x6f\
+\x26\x5d\x01\xaa\xca\xf7\xfb\xe9\x9e\x7a\xd5\xfd\xa3\xd3\x9e\x70\
+\xa9\x54\x6d\x3e\x93\x09\xed\x21\x23\x23\x9b\x3a\x66\x0b\xc3\x62\
+\xb1\xdb\x3d\xa5\x6a\xa8\xdb\x4e\x86\x2a\x01\x67\x97\x22\xee\xaa\
+\x38\xba\x5b\x48\x57\x3d\xc1\xb6\xb3\x1b\x6b\x97\x19\x52\x58\xb0\
+\x6a\x80\xac\x9f\x4b\xa0\xe7\x1c\x70\x2e\x9c\xad\xaa\x2a\x37\xe0\
+\x4c\x9a\x02\xdc\xb1\xee\x0e\x01\x08\x15\xd9\xbc\x7a\xaa\x6c\x35\
+\xbb\x90\xad\xa9\x0b\x29\x71\xb1\x80\x09\xbd\xfd\xf4\xc8\xc8\x08\
+\x46\x46\x36\x76\x3c\x66\xd5\xea\xd5\xe5\x4b\x75\xfd\xfb\xc9\xbf\
+\x77\xc5\x00\x9a\xce\x05\x2b\x1a\xbb\x37\x0f\x20\x3a\x66\xcf\x03\
+\x27\x34\xa5\xcb\xb6\x4e\x81\x11\xeb\x25\x58\xd1\xc9\xec\xf8\x10\
+\x8f\x15\xd8\x0d\x9a\xe0\x9c\x20\x22\x22\xec\xfc\xce\x4e\x99\x34\
+\x05\x20\x0a\x16\xe0\x94\xf7\xbf\xdf\x68\xa5\x6e\xe0\x10\x95\x0f\
+\x30\x3b\xca\x34\x51\x48\x0d\x20\x75\x0d\xb9\xe2\x17\xb0\x61\xc3\
+\x86\xc6\x63\x6e\xf9\xe6\x2d\xe6\x3a\x1e\x84\x76\xc3\x00\x09\xc0\
+\xb1\x0f\x05\xc1\x5d\xb9\x09\xc0\xee\xda\xf0\xf8\x6a\xf7\x1a\xdc\
+\xa3\xfa\x10\x1d\xe2\xd7\xdd\xcb\x50\x9b\x43\x93\x58\xb5\x5a\x43\
+\x16\xbc\xf4\x9b\xdf\xc4\xd2\xf1\x6a\x72\x2c\xc0\xf0\xf0\x9d\x82\
+\xd8\xb8\x68\xe2\x6e\x68\x34\x0b\x83\x58\x6d\x7d\xbc\xee\xb8\xb1\
+\xc8\xb7\xbf\x50\xad\xd7\x71\xd1\x9c\xfb\x88\xa4\xcb\x39\x83\x83\
+\x83\x2e\x8c\x4d\x9d\x49\x82\xb5\x6b\xd6\x76\xcd\x4f\x64\x0b\x57\
+\xab\xec\x89\xd3\x45\xb8\xb0\x92\xe1\x87\x30\x1c\x89\x61\x4f\x21\
+\xaa\x67\x42\x81\x46\x37\xc5\x44\x5b\x54\x08\x07\x2e\x86\x80\x5d\
+\xbb\x1e\x38\x6a\x2b\x30\xf3\xe8\x77\x7f\xe8\x57\x7b\xdf\xfb\xde\
+\x17\x47\x9a\xf8\x5a\x0e\x5b\xde\x55\x2a\x73\x54\x7d\x9c\x61\xeb\
+\xc8\x72\xf6\x1d\xbf\x6c\x9d\x0e\x06\xee\xba\xeb\x2e\x0c\x0c\x0c\
+\xd4\x8e\x1b\x18\x18\xc0\xf0\xb7\x86\x6b\xc5\x9e\x10\xe0\xce\x3b\
+\xef\xc4\x9a\x35\x6b\x3a\x41\x88\x92\x3c\x8a\xa6\x95\x7b\x41\x12\
+\x35\xd4\x21\xf3\xf8\x68\xa8\x16\x02\x30\x3c\xdc\x3c\xab\x3a\x3f\
+\x83\x61\x02\x53\x17\x13\xa9\x22\x9a\xc0\xa6\x0a\x6c\xd1\x28\x18\
+\xd8\xbb\xf7\x57\x98\x37\x6f\xde\xe4\x58\x80\xe4\x73\x58\x01\x20\
+\x56\xa5\xd7\xbe\x14\x1a\xba\x1e\x90\x1d\x3b\xa6\x06\x46\x14\x54\
+\xdc\x19\x71\x73\x4a\x29\x73\x2f\x93\xae\x07\x4c\x70\x5f\x2e\x66\
+\xed\xed\x6b\xd5\x0e\x0b\xbb\x7b\x68\xe8\xf6\xbe\xc3\xcf\xe4\xaf\
+\x93\x09\xb7\xe6\xba\x37\x90\x14\x6d\x35\x81\x9a\xbf\xd7\x6c\x6a\
+\xa9\x33\x2c\x04\x5c\x6a\xc3\x9f\x50\x05\x58\xbf\x7e\x7d\x60\xfe\
+\x72\xf9\x95\x22\x30\x6a\xed\x53\x9c\x63\x7b\x33\x88\xc9\xa0\x7f\
+\x36\xc5\x90\xdd\x76\x5c\x4a\x33\x6b\xe2\xe8\xce\x0e\xbb\x6a\xcd\
+\x9a\x35\x39\xf4\xb4\xbc\x83\x60\xdd\xd0\x50\xc7\x6b\x0c\x0d\x0d\
+\x61\x68\xdd\x10\xd6\xad\x1b\xc2\xba\x75\xeb\x7a\xf3\x0f\x86\xa8\
+\x19\x2b\xd9\x41\x76\x80\xb2\x87\x12\x71\x4e\x5c\xa9\x69\x63\x22\
+\x18\x33\xc4\x11\xe7\xe8\x02\xaa\xb1\x35\x85\xbf\x81\x91\xad\xf0\
+\xe0\xee\xdd\x32\x61\x0a\x90\x76\xff\x8c\x19\x33\x8d\x5f\x87\x62\
+\xf4\x58\x21\x5d\x4f\x01\x43\xb8\x16\x3b\xeb\xc5\xe9\x1a\x06\xd6\
+\x3a\x82\x83\xf2\xdc\x71\xc7\x1d\x8d\x87\xdf\xbe\x76\xad\xcb\x37\
+\x14\x65\x3d\x4a\xba\xbb\xdb\xf2\x19\x64\x0f\x37\x34\x42\x8f\xc1\
+\xe9\xa7\xd0\x45\xf7\x38\x96\x71\x77\x3a\x94\x65\x95\x73\x11\x13\
+\x81\xbd\xf8\xe2\x8b\x11\x0b\x10\x26\x50\x01\xaa\x92\xf8\xc9\x89\
+\x1e\x31\xdd\x30\xbe\xe2\x25\x55\xef\xe8\x78\x9f\xa5\x81\xe9\xea\
+\x61\xd6\x99\x2d\xdf\xd0\x2f\xc7\x6f\xc8\xa0\xf8\x67\xed\xda\x35\
+\x7d\x3d\xef\x6d\xb7\xdd\xd6\xfd\xf3\xd9\x35\x8b\xba\xb1\x75\x9a\
+\xd1\xeb\x15\xdd\xb0\x29\x9d\xe7\x3a\x78\xce\x0d\xae\x9a\x43\x81\
+\xe9\x88\x22\x44\xeb\x3c\x11\x0a\x30\xb2\x71\x63\xcc\xfb\x17\x73\
+\x9c\x89\x1d\xd3\x0d\xcb\x96\xdd\xf3\x0b\x0e\x76\x83\x9e\x58\xf9\
+\xbf\xde\xb4\x2b\xfb\x88\x02\x8c\xdb\x6f\x6f\x36\xeb\xeb\xd6\xad\
+\x2b\x98\xc1\xc5\xe1\x83\x83\x83\x1d\x77\xf7\xc0\x6d\x03\x18\x18\
+\x18\xc8\xf7\xdb\x0f\x2e\xd1\x74\xaf\x61\x40\x7b\x29\xc0\x98\x43\
+\xff\x6c\xe7\x15\x9a\x5c\x0a\x90\x19\x42\xb8\xa4\x5b\x8a\x06\xaa\
+\x8a\xf0\xd0\xf7\x1f\xea\xdb\xcc\xf5\xad\x2e\x9b\x46\x36\x09\x08\
+\x78\xe7\x9d\x77\x6c\xa9\x57\x02\xc1\xae\xa4\x4b\x61\xda\xc6\xaa\
+\x5f\xdb\xbc\x09\x1b\x25\xa0\x53\x19\x97\xea\xf0\x51\xe5\x57\x76\
+\xfe\x06\x6a\x65\x58\x76\x5e\x5f\x7d\x9c\x1c\x52\x43\xa6\xd4\x47\
+\xc0\x02\xc0\xdd\xeb\xd7\x37\xf3\x0e\xb7\xac\xd6\xe5\x06\xf5\xea\
+\xa5\x54\x5f\x40\xca\x8d\x99\x6e\x63\xb8\x6e\xe7\x52\x1e\x6e\x5b\
+\xcd\x7c\x6d\x03\x4c\x34\xa0\xff\x7d\xee\x67\x3e\x03\x12\xe0\x2b\
+\xff\xfc\x15\x1a\x37\x0b\xb0\xe9\x9e\x7b\x24\xf9\xff\xec\x8b\xb8\
+\xbe\xd3\xfd\x84\x0b\x61\x65\x26\xfd\x8c\x80\x5a\xf5\x10\x5c\x2f\
+\x3f\x1b\xf7\x60\x62\xee\x48\xb6\xb0\xc9\x37\x70\xad\xf1\x32\xf3\
+\x0d\xdc\xcc\x49\x40\x5b\xab\xd4\xc8\xe2\xa6\x78\x76\x73\x01\x99\
+\xd5\x64\x3f\x86\x4e\x72\xde\x3e\xdf\xd3\x98\x94\x44\x91\xce\x0c\
+\xc2\x31\x84\x7e\x52\x4a\x43\x92\xcd\xa7\x95\x75\xf2\xaa\xa2\x90\
+\xa5\x7d\xe4\x91\x47\xfa\xb2\x02\x33\xfb\xd3\x12\x02\x2a\x60\xf4\
+\xad\xb7\xf4\x76\x77\x8d\x9f\x62\x9b\x26\x93\x56\x8a\x6d\xfe\xd4\
+\xe6\x90\x5d\xc5\x8e\xd6\x68\x26\xc9\x0d\x11\xfa\xb3\x52\xf3\x0e\
+\xa3\x69\x97\xab\x6b\xa8\x83\xf4\x94\xd1\xf5\x1d\x77\xf3\x2d\x48\
+\x1d\x2c\x65\x34\x91\x60\xe3\xc6\x66\xd6\x71\xd5\xaa\x95\x86\xbc\
+\x21\xb2\xa3\xe6\x84\x4a\xad\x60\xac\xf6\x87\xe6\x95\xeb\xdd\x4c\
+\xa5\xa7\x30\xe5\x10\x08\x7e\x96\x10\xca\x67\xe4\xa2\x5a\x1b\x65\
+\xec\xd9\xf3\x5f\xf8\xfb\xf3\x17\x8c\x2f\x06\xc8\xbb\x5f\x73\xdb\
+\x91\xd5\x82\x06\x3d\x35\x1f\xcd\x36\xbe\x6d\xa8\x19\xa8\x0d\x52\
+\x56\x20\x88\xc1\xaa\x82\x26\xf1\xf2\x2e\xcb\x68\xc6\xc9\xa9\xfc\
+\xbb\x9f\xdf\x8b\xee\xa9\xdd\x0d\x1b\x36\xa8\x90\x2e\xdc\xc7\xc6\
+\x8d\x1b\x7b\x00\xc0\x82\xde\xd9\xcd\xf9\x81\x4a\xfc\x40\x2c\x20\
+\x6c\x04\x78\xb9\x78\x66\x2c\x9e\x03\x03\x76\x73\x15\x91\x1b\x95\
+\xe7\x93\x44\x61\xfa\x58\xff\xd1\x40\xcf\xa3\x36\x6f\xde\x2c\xa9\
+\x23\xe5\xd0\x1b\x87\xac\xdf\xa2\x66\x7f\x9b\x5f\x88\x01\xdb\x49\
+\xa7\xdb\xba\xa9\xc1\xb7\x85\x0d\x20\x6e\x78\x64\xa1\x0f\xc5\xf7\
+\x73\x53\x53\xcf\x9d\xa4\x32\x3a\x3f\x5c\x2e\x9f\xd3\x29\x97\xd0\
+\xaf\xac\xb8\xf9\xe6\xe6\xfe\x40\xd8\xd2\xf0\xf2\x3d\xb8\x11\xb6\
+\x6a\x5c\x3d\xe9\x12\x72\xf5\x99\x50\xac\x9f\x9f\x75\x64\x3e\xd1\
+\xbf\x07\x41\x04\x0b\x17\x2e\xcc\x6f\x34\xb9\xfc\x8a\xcb\xe9\x98\
+\x2c\x40\x15\x79\xff\x37\x0e\xbe\xd1\x38\x9a\x5d\x1a\x06\x3e\x88\
+\x1f\x88\xc8\x25\x23\x37\x26\xc5\x52\xb0\xcf\xbf\x8b\x1f\xce\xe0\
+\x79\x72\x36\xbf\xd3\xc9\x1e\xa4\xd1\xec\x79\x7a\x57\xc3\x40\x49\
+\x84\x7b\x5c\xb5\x6a\xd5\x31\x29\x80\xe6\x32\x74\x78\xda\x3c\xb5\
+\xcc\x0d\xc1\x80\x64\x76\xb2\x94\x91\x41\xdd\xb7\xad\x62\x66\x57\
+\x10\x52\xe6\x27\x79\x36\xb5\x64\x3f\x7f\xfc\xe3\x1f\xc7\x90\x9d\
+\x8e\x1d\x03\x54\x15\x95\xce\x59\x3f\xc5\x5b\x37\x35\x34\x4c\xe7\
+\x36\x6f\xe3\x50\x73\x75\x04\xa4\xaa\x62\x6d\x5b\x54\xe3\xf0\x64\
+\x6d\x21\xd4\x1c\xc1\x72\xfd\xd8\x69\x9c\xb6\x3e\x4a\xc3\x69\x19\
+\xcc\x88\xd2\xf8\x09\xc2\x8a\x95\x2b\x70\xcf\xa6\x7b\x8e\xae\xfc\
+\xec\xa6\x9b\x72\xa2\x09\x00\x88\xc5\xa0\x71\x51\x3b\x92\xd0\xd0\
+\x18\x62\xb8\x7d\xa8\x81\x10\xc5\x42\xe4\xa6\x19\xd1\x65\xc9\x25\
+\x8a\x21\xd5\xeb\xe8\x7b\x1f\xf2\x80\x19\xa1\xdc\x47\x78\x4c\x2e\
+\x60\xeb\xd6\x6d\xa1\x47\x96\x80\x3f\xfc\xe1\xf5\x86\x11\xea\x02\
+\xef\x09\xa4\x61\xfa\xa7\x09\xf1\xf2\x40\x88\x62\xca\xf2\x80\x88\
+\x3c\x02\x4e\xbd\x84\x45\x1a\x42\x1e\x6a\x32\x89\xe5\x6d\x20\xa6\
+\xa3\x46\xea\x0d\xab\x56\x91\x05\xf7\xde\xbb\xb9\xfb\xc2\xdf\x78\
+\xa3\x0f\x56\x5d\xf9\x39\xb9\x07\xd6\x60\xb5\x74\x1a\xa7\xd6\x11\
+\x6a\x0a\x9b\xbb\xbc\x51\xa4\x69\x88\x05\xb9\x29\xe6\x09\xf8\xa6\
+\xc7\xfa\xdc\xe7\x3e\x97\x5f\x41\xb3\x68\xf1\x22\x7a\x4f\x0a\xb0\
+\x6d\xdb\x36\x21\x02\x5e\x7d\xf5\xb5\xf2\xa5\x99\xd8\xd9\xf7\xc7\
+\x7b\xe5\x20\xf3\xb5\x89\xf8\x78\xbf\x69\x66\x9e\x9b\x24\x66\x22\
+\x0e\x8b\x8b\xa5\x31\x8b\x58\x1f\x0f\xe3\x5b\xc2\xad\x42\x36\xbc\
+\xc7\x07\x62\xa7\x80\x36\x59\x3d\x95\xa1\x6b\x18\x2f\xd2\xf0\x64\
+\xa5\x7d\xbc\x7c\x8f\xba\x1f\x42\x0a\x6e\xf1\xb3\x0e\x0c\x9e\xf2\
+\xcf\x6d\x3b\x9f\xb4\x02\x5d\x74\xd1\xe7\x41\x10\x7c\x71\x51\x67\
+\x05\xe8\xe8\x02\x76\xec\xd8\x9e\xe1\x8b\x30\x07\x93\xca\xe2\x08\
+\x9a\xfa\x62\xea\x07\x12\xd5\x6b\x5f\xe7\x67\xa4\xb6\xb8\x7e\x10\
+\x23\xf4\x94\x31\x2a\x21\x97\x38\x25\xf4\x26\x47\x5b\xa3\x06\xf5\
+\xd0\x33\x5c\xeb\x24\x8e\x27\xad\x84\xeb\x03\x1d\x9c\x5b\x13\x12\
+\xb3\x98\x62\xd2\xdf\xe5\x19\x73\x80\xe9\xe6\x02\x71\xea\x23\x13\
+\xdd\xcb\xa8\x42\x3d\x4a\x1c\x02\xf2\x5b\xc8\xc4\x60\xeb\xe2\x54\
+\xf5\x03\xa5\x69\x2d\x8f\x3d\xf6\x98\x5c\x76\xd9\x65\x74\x54\x0a\
+\x90\x2a\x4c\xfe\xef\x77\xbf\xcb\x55\x2f\xe5\xb9\x75\x67\x4b\x6d\
+\x80\x7a\x68\x61\x56\xcb\xe9\x07\x45\x89\x9a\xb1\x27\xd1\x46\x53\
+\x9e\xda\xe1\xe2\xfa\x34\x60\x82\xdd\x7e\x8a\x3d\xf9\x86\x6d\x73\
+\xa3\xda\xb4\xef\xb7\x65\x07\x6a\x27\xb2\xb5\x1a\xfa\x10\xe3\x3a\
+\xfc\xa0\xa9\xe4\xd3\xf5\xa0\x28\x9d\xa9\x4b\x13\x50\xdc\x8b\x27\
+\x48\xea\x1d\x4b\xe2\x66\x13\x9b\xf9\x44\xb9\x16\xa2\xf0\x2c\xcc\
+\x1e\x43\xd4\x5f\x92\x21\x10\x3c\xf9\xd4\x93\xb8\xe4\x92\x4b\x73\
+\xcc\x70\x74\x0a\x10\x1b\x10\xf3\x14\x4d\xa8\x76\x2f\x88\xdb\x71\
+\xda\xf7\x91\xca\x72\xa1\x80\x33\x29\x2d\x61\x1e\x1f\x14\x34\x9b\
+\x2e\x2e\x76\x60\x12\x53\xed\xad\x5d\x7a\x48\x2b\x6b\x56\x49\xfc\
+\xeb\xe0\x50\x0f\xa5\x14\xa9\xd4\xed\x2d\x60\xdc\x40\xef\x5a\x57\
+\x23\x7a\x9b\x66\x14\x9e\xe8\x1c\x56\x8b\x42\x90\x3c\x35\x15\x1d\
+\x2c\xa2\x1e\x0f\x63\x5a\xc5\x54\x78\xc8\xe6\x2d\x23\x16\x87\x90\
+\xd4\xe6\x94\x47\x3e\x80\x8e\x4e\x01\xbe\xb3\xf3\x3b\x19\xd7\xb0\
+\x9f\xc9\xab\xfc\x63\xe3\x34\x10\xd4\xcd\xb0\x99\xd7\xeb\xc6\xb0\
+\xf9\xaf\xde\xbf\xd0\xc1\x70\xeb\x19\xe8\x48\x9e\x19\xdc\x0d\xdc\
+\x95\x5d\xe8\x27\x70\x35\x31\x93\xf5\x0a\xa5\x3a\xb0\x55\xb8\x84\
+\xc4\x72\xfb\x6c\x01\xa0\x74\xc0\x24\x4d\x2c\x60\xee\x2e\x16\xae\
+\xb9\x91\xe6\xf7\x0d\xd5\x20\xa9\xea\x37\xb4\x96\xac\x8a\xd1\xc0\
+\x53\x4f\x3d\x25\x5f\xf8\xc2\x17\xa8\x2f\x05\x48\xf1\xe3\xaf\x7f\
+\xfd\x6b\x5b\xfa\x14\x4d\x31\x45\x24\x6e\x36\x80\x7f\xef\x8f\x99\
+\xe9\x67\xdb\xc2\x35\x72\x37\xfa\x2d\x66\x2b\xbb\x2f\x2e\x9a\x7d\
+\x15\x1e\x32\xa3\x3e\xc6\xd5\x58\x6c\x56\x53\x40\xd3\x67\xa0\x61\
+\xc0\x33\x2b\x9f\xcb\x86\xa6\x36\xe1\x1c\x95\xb7\x98\xe8\x90\x16\
+\x1d\x22\x9f\xe2\x2e\x2d\xba\xb1\x93\x43\x29\xb3\x9b\xa5\xb4\xac\
+\x03\xa8\x14\x1b\x30\xf6\x23\x8f\xfe\xe8\xd1\xae\xaf\xea\xab\x29\
+\xc0\xae\x5d\xbb\xa4\x96\xd5\xca\xd3\xb3\x0a\xae\x29\xfd\x70\x64\
+\x98\x2c\x83\x0b\xd4\x5b\xbc\xec\x30\xef\x3a\x71\x20\x1d\x07\x27\
+\x24\x8c\x20\x66\x50\x94\xdd\xb8\xe2\xc6\xf2\x29\x9a\x50\xa4\x36\
+\x9f\xd0\x00\x36\xcd\x32\xaa\xe1\x52\x3e\x7a\x10\x17\xf7\x9b\x99\
+\x00\x79\xa0\x13\xd9\x50\xd0\x2b\x3e\x44\x8d\x18\x2e\x63\x61\x1b\
+\xdd\x8c\x7f\x59\xd5\x38\x48\x93\x15\xa8\x3a\xf1\xfe\x7b\xf7\xee\
+\x55\x25\x4f\x50\xac\x16\x37\x4c\xdb\xb6\xdd\x34\x30\x8c\x1d\x4c\
+\xaf\x1c\xc4\x75\xe0\xb8\xd1\xac\xba\x7f\x50\x0f\x60\x60\xd7\xe9\
+\x2b\x2e\xe7\xee\x67\xf8\x9b\x51\xb1\xbe\x59\x04\xaa\x16\x9f\x8b\
+\x2f\xaf\xf7\x05\xd6\xeb\xf5\xf5\x67\x98\xdf\x01\x66\xa6\x60\x1a\
+\x3d\xcb\x4d\xd9\x51\xf7\xaa\x19\xd6\x6c\x27\xc4\x4d\x58\x3d\xf6\
+\xc5\x7f\xf4\xd1\x47\xfb\xb7\x00\x09\x34\x04\x74\xeb\x18\x3b\xe4\
+\xf7\x23\xe4\xa9\x95\x22\xde\xf7\x39\x7e\x80\x44\x31\x70\xe2\x80\
+\x0b\x0c\x3b\x96\x5e\xa5\x62\xc1\x9e\xd4\x92\x30\xbe\xea\xc7\x7b\
+\x3e\x16\xcf\x48\x9a\xe9\xcc\x86\x43\xca\x38\xc2\x58\x3b\xb2\xef\
+\x1e\xf4\x55\xcd\x0d\xb5\x0f\x66\x44\x9c\x63\xe9\xa4\x84\x47\x0a\
+\xec\x35\x70\x20\xc7\x41\x66\x36\x96\x7d\x91\xab\x64\x11\xe5\xf3\
+\x3b\x52\xbf\x70\x04\x8e\x02\x7e\x1d\xe6\x01\x6b\x9f\x2f\xde\xe7\
+\x8b\x4b\x75\xea\x50\x0f\x50\x33\x75\x34\x60\xa2\x1a\x41\x62\x16\
+\x87\xea\x2f\x94\x64\x6f\x76\xf3\xf1\xe2\xde\x05\x5d\x42\x47\x62\
+\x4f\x12\x35\x24\x6e\xa4\x33\x1b\x8a\xe3\xb4\xd8\xfd\x29\x40\x05\
+\x40\x2a\x7c\xe2\x13\xf3\xf1\xc2\x0b\x2f\x94\x2f\x92\x3d\x33\x25\
+\x79\xf8\x5b\x13\x17\x00\x35\xff\x97\x7c\xbe\xde\xff\xac\x96\x19\
+\x94\xc8\x97\x90\x7d\xf1\xa2\x8f\xd5\x35\x17\xdf\x84\x23\xdc\xb4\
+\x48\x03\x5a\xfd\xb8\x36\xaa\x23\x73\xa8\x3c\x42\xce\x54\xb2\x7e\
+\xdf\x23\xdb\xa1\x3e\x8e\x88\x3a\x51\xa4\x1b\x08\xac\x61\x80\xa5\
+\x57\x2e\xa5\xaa\x2a\xd5\x3f\xa6\x3a\x46\xb7\x2c\xe5\xca\x20\xb8\
+\xcc\x1f\x9b\x31\xf0\xa8\x8d\x6a\x6b\x1a\x8f\xa6\x06\x47\x30\x87\
+\x2e\x23\x95\xdb\x6f\xca\x8b\xa3\xe9\x55\x6d\x06\x57\xb8\xcc\xa2\
+\xaa\x2c\x2a\x45\xaa\x9c\x67\xf6\x88\x9b\x58\x92\x78\x0b\xfd\xc2\
+\x47\x3f\xd3\xc7\xbc\xd4\xd2\xb3\x78\x27\xa0\xf4\x1f\x06\xa6\x99\
+\xbf\x9f\xfa\x24\x9e\xff\xd9\xf3\x26\xcb\x55\xf6\x70\xa4\x78\xf5\
+\x18\x75\xb0\xa3\x86\xc9\xb0\x7e\x86\xf1\xe5\xf8\x7b\x2a\x71\xba\
+\x37\x9f\x8d\x49\x10\x37\xf9\xd3\x8f\x9b\x2f\x11\x00\xd7\x58\x35\
+\x4d\xfa\x88\x2b\x38\xf5\x99\xcc\x1c\x11\x94\x37\x5b\x78\x1e\xe8\
+\x84\x5e\xec\x7e\x76\x7f\xd7\x64\xd0\xc3\xdf\xff\x7e\xb4\xbd\x94\
+\x99\xc1\xe4\xf2\x40\x88\xe8\x09\xd0\x13\xcb\x32\xcb\x97\x98\xc4\
+\xf8\x43\x6a\xba\x60\x3a\x98\xa0\x8f\x2e\xe0\x29\x9e\x97\x22\x2b\
+\x52\xf7\x52\xae\x49\x5a\x6b\x73\x91\x09\x22\x90\x4d\x9e\x39\x57\
+\xc7\xc4\x70\xb2\x5c\xb1\xf8\xf0\x72\xbb\xe5\xb9\xd2\xbd\x98\x6b\
+\x4f\x51\x69\xda\xfd\x3d\x9f\xaa\x14\x16\xba\x21\x04\x7a\xd1\x02\
+\xdd\x94\x77\xa6\x29\x45\x52\x8b\x4f\x7a\xe5\xb4\x12\xc1\x2a\x90\
+\x88\xba\x56\xbe\x8e\x1d\xd9\x45\xf1\x60\xf1\xe7\x3a\x45\xa2\x34\
+\xb1\x2b\xdd\xbf\x3f\x41\xab\x6a\x87\x6b\x4d\x07\xe9\xb4\xf8\xad\
+\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\
+\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\
+\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\
+\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\xad\xb4\xd2\x4a\x2b\
+\xad\xb4\xd2\x4a\x2b\xad\x4c\x31\xf9\x7f\x7b\x85\x02\x3e\xd1\x57\
+\xa6\x01\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x35\xd9\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\xe5\x00\xbe\x00\x46\x49\x08\xc4\x6f\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x01\x1d\
+\x11\x2e\x2d\x65\x07\x4c\x18\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\x9d\x79\x9c\x5d\x55\x95\xef\xbf\xeb\
+\xdc\x7b\x6b\xae\x4a\x65\xaa\xaa\x44\x42\x06\x42\x27\x84\x00\x61\
+\x1e\x92\x30\x28\x84\x49\x6c\x14\xa5\xd1\x7e\xbe\x56\xc4\xc6\x67\
+\xa3\xb6\xb6\xbe\xd7\x83\x36\x6a\xfb\x5a\x5b\xc1\x27\xb6\xaf\x15\
+\xa7\xe7\x80\x43\x1b\xda\xa1\x0d\x0a\x04\x04\x4c\x68\x09\x24\x10\
+\x48\x42\x08\x09\x90\xa9\x48\x2a\x43\xa5\xe6\x5b\x75\xef\x39\x7b\
+\xbd\x3f\xce\xb4\xf7\xb9\xb7\x08\x19\x50\xe8\xae\xfd\xa1\xc8\x1d\
+\xce\x3d\xf7\xdc\xb3\xd7\x5e\xc3\x6f\xfd\xd6\xda\x30\x36\xc6\xc6\
+\xd8\x18\x1b\x63\x63\x6c\x8c\x8d\xb1\x31\x36\xc6\xc6\xd8\x18\x1b\
+\x63\x63\x6c\x8c\x8d\xb1\x31\x36\xc6\xc6\xd8\x18\x1b\x63\x63\x6c\
+\x8c\x8d\xb1\x31\x36\xc6\xc6\xd8\x18\x1b\xaf\xd6\x71\x0c\xb0\x10\
+\xc8\x8d\xdd\x8a\xff\x5a\xe3\x78\xe0\x67\xc0\x7d\x80\x02\x3d\xc0\
+\xbf\x01\x7f\x0e\xcc\x18\xbb\x3d\xff\xb9\xc7\x59\xd1\xa4\x6b\xa1\
+\x50\xd0\x9a\x9a\x1a\x8d\x9f\x5b\x7f\xcf\x00\xff\x0c\x5c\x01\x34\
+\x8d\xdd\xb2\xea\x43\x5e\xa3\xd7\xbd\x10\x58\x09\x70\xdd\x75\xd7\
+\xf1\xe3\x1f\xff\x98\x1b\x6e\xb8\x81\x69\xd3\xa6\xb1\x72\xe5\x4a\
+\x7e\xf7\xbb\xdf\x31\x30\x30\x60\x1f\x5f\x8a\x8e\x5f\x0e\xdc\x03\
+\xac\x8d\x84\xe4\x68\x8c\x56\xe0\x6d\xc0\xa2\x48\x2b\x4d\x01\x9a\
+\x33\xf7\xb6\x14\x69\xa8\x6d\xc0\x7a\x60\x15\x70\x17\x30\xf4\x5f\
+\x42\xca\x76\xdf\xb3\xf8\x68\x0b\xda\x3c\x40\x67\xcd\x9a\xa5\x9f\
+\xf9\xcc\x67\x14\xd0\x37\xbe\xf1\x8d\xba\x6e\xdd\x3a\x7d\xf2\xc9\
+\xb5\xba\xfa\xb1\xc7\xf4\xdb\xdf\xfe\xb6\xbe\xe7\x3d\xef\xd1\xf9\
+\xf3\xe7\xab\xe7\x79\x59\xed\xb0\x1b\xb8\x03\xf8\x6f\x40\xc7\x61\
+\x7c\xff\x71\xc0\x0f\x81\x3d\x55\x34\xcf\xa1\xfc\xf5\x44\x42\xf9\
+\x67\x40\xcd\x1f\x62\x6e\xf2\xbf\xa7\xef\x69\x01\x7a\x8f\xe2\xf9\
+\xfa\x00\x06\x06\x06\x98\x3a\x75\x2a\x00\xeb\xd6\xad\xe3\x85\xad\
+\x5b\x99\x3a\x75\x2a\x46\x95\x79\xf3\x4e\x60\xee\xdc\x39\xbc\xeb\
+\x5d\xef\xa2\xa7\xa7\x87\xd5\x6b\xd6\xf0\xe8\xaa\x55\xac\x5e\xbd\
+\x9a\xbd\x7b\xf7\xb6\x03\x7f\x1a\xfd\x69\xa4\x11\x62\xed\xb0\x32\
+\x5a\xb1\xd5\xc6\x39\xc0\x37\x80\xf9\xf6\x8b\xd3\xa7\x4f\x67\xce\
+\x9c\x39\xcc\x9e\x3d\x9b\xf6\xf6\x76\x3a\xda\x3b\x08\x4c\x40\x3e\
+\x9f\xa7\x5c\x2e\x53\x2a\x95\xd9\xd3\xd5\xc5\x8b\x2f\xbe\xc8\xf6\
+\x1d\xdb\xd9\xb8\x71\x23\xbb\x77\xef\x06\x18\x07\x5c\x1c\xfd\x7d\
+\x1b\xd8\x04\x7c\x05\xf8\x17\xe0\x1f\x80\x9f\x02\x4f\x8c\x99\x80\
+\x97\x10\xa8\xe9\xd3\xa7\xa3\xaa\xf4\xf5\xf5\x31\x30\x30\xc0\xdf\
+\xfc\xf5\x5f\x73\xf9\x15\x57\x10\x04\x06\x63\x0c\xc6\x04\x18\x63\
+\x08\x4c\x80\x89\x5e\xdb\xb6\x6d\x2b\xab\x57\xaf\xe1\x89\x27\x9e\
+\x60\xfd\xfa\xf5\x94\x4a\xce\x7c\x0f\x02\xbf\x05\x7e\x1d\x39\x98\
+\x1b\x81\x86\x48\x38\x16\xc5\x07\x9d\x79\xe6\x99\x5c\x75\xd5\x55\
+\x2c\x5a\xb8\x90\x89\x93\x27\x25\x6b\x5a\x23\xcb\xa2\x0a\x22\x8a\
+\x5a\x86\x46\x35\x3c\x48\x15\x7a\x7b\x7b\x59\xb3\x66\x0d\x8f\x3c\
+\xf2\x08\x0f\x3f\xfc\x70\x2c\x10\xf1\x18\x01\x6a\xa3\xc7\xcf\x45\
+\x9a\xea\x91\x57\x5c\x00\xba\xee\x59\xdc\xd2\x7e\xe9\x8a\xbe\xd7\
+\x88\x10\x28\x40\x3e\x9f\xe7\xae\xbb\xee\xe2\x43\x1f\xfa\x10\xcf\
+\x3c\xf3\x0c\x00\x37\xdf\x7c\x33\x17\x5d\x74\x21\x26\x30\x04\xc6\
+\x44\xff\x06\x91\x40\x18\x82\x20\x7d\x5c\x2c\x16\xd9\xb4\x69\x13\
+\x6b\xd7\xae\xe5\xa9\xa7\x9e\x62\xc7\x8e\x1d\xd9\xef\xd9\x1b\x09\
+\x40\x23\xc0\xc5\x17\x5f\xcc\xfb\xdf\xff\x7e\x66\xcd\x9c\x15\x4f\
+\x75\xf4\x7f\xb5\xae\x4a\xe3\xff\x92\xa7\xd6\x33\xfb\x10\x44\xc3\
+\x4f\x6e\xd9\xbc\x85\xbb\x7e\x75\x17\x3f\xfd\xe9\x4f\x29\x16\x8b\
+\x00\x65\xa0\x60\x5d\xc7\x0f\x22\x41\x38\xaa\xc3\x89\x9d\x3f\xf6\
+\xce\xe9\xa5\x5b\xee\xd8\xfe\x5a\xd1\x02\x27\x02\xf3\x9a\x9b\x9b\
+\xe5\x8d\x6f\x7c\x23\x6f\x7f\xfb\xdb\x29\x16\x8b\xac\x5f\xbf\x9e\
+\xb5\x6b\xd7\x72\xf9\xe5\x97\xe3\xe5\x72\x04\x41\x80\x6f\x02\x82\
+\x20\x60\xd9\xb2\x69\x74\x76\xd6\x51\x57\x57\xa4\xb6\x76\x04\x3f\
+\x08\x00\x61\xe2\xc4\xf1\x9c\x30\x6f\x1e\x17\x5c\x70\x01\xe7\x9f\
+\x7f\x3e\x53\xa7\x4e\xa5\x50\x28\xd0\xdd\xdd\x8d\xef\xfb\x8d\x40\
+\x4d\x47\x47\x07\xb7\xdc\x7a\x2b\xef\x7a\xd7\xbb\x68\x6d\x6d\xc5\
+\xa8\xa2\x6a\x50\x63\x30\x80\x1a\x0d\xff\x54\xd3\xf7\x94\xe8\x5f\
+\xc5\xa8\x81\xe8\xfd\xf0\x38\x83\x12\x3d\x57\x43\xeb\xf8\xf1\x9c\
+\x75\xd6\x59\xec\xdc\xb9\x93\x67\x9f\x7d\x96\x8f\x7c\xe4\x23\xb9\
+\x8f\x7e\xf4\xa3\xec\xdc\xd9\x19\x0b\xe5\xc9\xc0\x9b\x80\x6f\x1e\
+\x45\x07\xd6\x15\x80\x8f\xbe\x73\xba\x77\xcb\x1d\xdb\xf5\x55\x3e\
+\xf1\xb3\x80\x5b\x80\xeb\x80\xd2\xc8\xc8\x48\xa1\xbf\xbf\x9f\x73\
+\xcf\x39\x97\x53\x4f\x3b\x95\x55\xab\x56\xd1\xd9\xd9\x89\x20\xcc\
+\x3f\x69\x3e\x41\xe0\x63\x82\x80\x72\x39\xe0\xd3\x9f\x3e\x8f\xdf\
+\xfe\xf6\x58\x96\x2d\xfb\x23\x1e\x78\x60\x06\x5b\x36\x4f\x60\xff\
+\xfe\x1a\x44\x02\x1a\x1a\x06\x50\x63\xc8\x17\xf2\x4c\x99\x3a\x95\
+\x93\x4f\x3a\x89\xf5\xeb\xd7\xd3\xd3\xd3\x43\x47\x47\x07\x77\xdc\
+\xf1\x03\x66\xcd\x9a\x89\x51\x85\x68\x52\x93\x3f\x34\x9d\xe8\x48\
+\xd5\xab\x12\x0a\x42\x3c\xe9\x1a\xda\x85\xc0\x28\x60\x30\x1a\x1e\
+\x67\x8c\x49\x84\x06\x55\x96\x2e\x5d\xca\xae\x5d\xbb\xf8\xe3\x37\
+\xbd\x89\x13\x4e\x38\x81\x4b\x2e\xb9\x98\x8e\x8e\x0e\x56\xae\x5c\
+\x49\x14\x61\xbc\x01\xf8\x7f\xaf\x88\x00\xbc\xca\x27\xbf\x25\x72\
+\x8e\xbe\x09\x9c\x0e\x18\xe0\x21\xe0\xb8\xc1\xc1\x41\xae\xbe\xfa\
+\x6a\x82\x20\xa0\xa3\xa3\x83\xfb\xee\xbb\x8f\xae\xae\x2e\xae\xbc\
+\xf2\x4a\x4c\x10\xe0\x07\x01\xc3\xc3\xe1\x44\x14\x0a\x3e\x7d\x7d\
+\x75\xf4\xf5\xd5\xb3\x73\x67\x2b\xeb\xd6\x1d\xc3\x43\x0f\xcd\x61\
+\xf9\xf2\xf9\x6c\xdc\x38\x95\xdd\xbb\x9b\x18\x19\x81\x09\x13\xba\
+\x79\xf0\xc1\x07\x19\x1c\x1c\xe4\x73\x9f\xfb\x1c\xb3\x66\xcd\x8a\
+\x56\x7c\x34\xc1\xc6\x60\x50\x47\x10\x92\x09\xc7\x60\x8c\xf5\x7a\
+\x34\xc9\x6a\x0c\x10\x6b\x88\x48\x2b\x44\x8f\xd1\x50\x28\xbe\x7e\
+\xfb\xed\x0c\x0d\x0d\xf1\xee\xf7\x5c\x4f\x73\x73\x33\xaa\xca\xec\
+\xd9\xb3\x99\x31\x63\x26\x0f\x3e\xf8\x20\xc0\xb1\x91\x7f\x70\xff\
+\x6b\x29\x0a\xa8\x18\x5d\xf7\x2c\x6a\x6e\xbf\x74\x65\xff\x21\xc6\
+\xfe\xd7\x03\xbc\xfe\x8f\xfe\x88\x6b\x4e\x3e\x39\xff\xc0\xb3\xcf\
+\x2e\xb9\xf3\xa9\xa7\x98\x38\x71\x22\x65\x3f\x5c\xe9\xf3\xe6\xcd\
+\xa3\xb5\xb5\x95\xbd\x7b\xf7\xb2\x71\xe3\x46\x66\xcf\x9e\x4d\x10\
+\x04\x88\x67\x78\xd3\x55\xeb\x08\x4c\x40\x10\x18\x76\xec\x68\x61\
+\xf3\xe6\xc9\x6c\xd9\xd2\xc6\xf3\xcf\xb7\xb3\x67\x4f\x2b\x9b\x36\
+\x1d\xc3\xa6\x4d\xc7\xd0\xd2\xd2\xcf\x47\x3e\x7c\x2b\x5d\x5d\x5d\
+\xd4\xd6\xd6\x72\xca\x29\xa7\x60\x4c\x80\x22\xa0\xc6\x72\xe8\x12\
+\xef\x2e\xd1\xc9\x8a\x86\xa2\x69\xf9\x04\xb1\xf5\x97\xd8\x54\x44\
+\xcf\x24\xd2\x18\xf1\xe7\x0e\x74\x1f\x60\xdf\xbe\x7d\xd4\xd7\xd5\
+\xd1\xd1\xde\x81\x31\x26\x39\xf7\xf9\xe7\x2f\xe2\x86\xf7\xbe\x97\
+\x6f\x7e\xe3\x1b\x00\xff\x0b\xb8\x3d\xc2\x15\x5e\x9b\x02\x70\x88\
+\x93\x0f\x30\x15\x60\xc1\xd4\xa9\xbc\xef\xcc\x33\x29\x95\x4a\xdc\
+\xb3\x69\x13\x00\x97\x5f\x7e\x19\x41\xb9\x4c\x60\x42\xa7\xef\xf4\
+\xd3\x4f\xe7\xfe\xfb\xef\xe7\xa9\xa7\x9e\x64\xfa\x8c\x19\x98\x20\
+\xc0\x98\x80\xc0\x28\x1a\x04\x04\xc6\xd0\xde\xb1\x97\xc9\x93\xbb\
+\x38\xe7\x9c\xd0\x49\xec\xe9\xad\xe5\xf9\xe7\x3b\x78\xfe\xf9\x29\
+\xe4\xf2\x65\x9e\xdd\xbc\x19\x80\xf9\xf3\xe7\x93\xcb\xe5\x08\x02\
+\x6b\xaa\xd4\xf5\x44\x63\x47\xce\x89\x02\xe2\x50\x20\x8e\x08\xb0\
+\x26\x5b\x53\xc7\x51\x54\x92\xcf\x3c\xb5\x6e\x1d\x00\x73\xe6\xce\
+\x45\x01\x13\x04\x8e\xd3\x78\xed\xdb\xde\xc6\xc3\x2b\x57\xb2\x71\
+\xe3\x46\x0f\xf8\x05\xb0\xe0\x48\xe7\xc1\x8b\xbc\xff\xc6\xd7\x80\
+\xd3\x77\x2c\xc0\xac\xd6\x56\xfc\x62\x91\xc7\xb7\x6f\xa7\x7f\x64\
+\x84\x89\x13\x27\xb2\x68\xf1\x62\xca\xbe\x8f\x1f\xfd\xcd\x9d\x7b\
+\x02\x00\x9b\xb7\x3c\x87\x5f\x2e\x47\xaf\x07\xf8\xe5\xb2\x75\x5c\
+\x10\xbd\xe6\x53\xf6\xcb\xd4\xd7\xf7\x71\xc2\x09\xcf\x70\xd9\xe5\
+\xf7\x73\xf1\x1b\x1e\xe0\xf9\xe7\x9f\x07\xe0\xe4\x93\x4f\x71\x22\
+\x08\x63\x22\xc7\x2f\x8a\x2e\x4c\x10\xe0\xc7\x61\x66\x7c\x5c\x10\
+\x44\x42\x17\x0a\xa4\x6a\x10\x45\x23\x69\x28\x6a\x8c\x41\x03\x4d\
+\x3e\x17\x18\xc3\xe3\x6b\xd6\x00\x70\xd2\x49\xf3\xd1\x28\x82\x09\
+\xe2\xc8\xc5\x18\x54\x0d\x1f\xf8\xe0\x07\xe3\xfb\x71\x4a\xe4\x0f\
+\x1c\xb9\x06\xd0\xd7\x06\x24\x79\x2c\xc0\xf8\x42\x01\x7f\xb8\xc8\
+\xc6\xae\x2e\x00\xce\x3f\xff\x7c\xfc\xb2\x9f\x4e\x50\x60\x38\xe6\
+\x75\x21\x38\xb4\x63\xfb\x76\x7c\xdf\x4f\xf0\x80\x18\x1b\xb0\x31\
+\x81\x64\x62\x9c\x10\x51\xd9\xba\x75\x2b\x00\x0b\x4e\x39\x39\x5c\
+\x89\x2a\xa8\x68\x45\xbc\x1f\xa9\x80\x54\x03\x64\x4d\x83\x48\xa8\
+\x02\x22\x1b\xa0\x98\x64\x49\x2b\xa1\x27\x13\x7e\xc2\xf0\xf8\xe3\
+\x8f\x3b\x42\x17\x6b\x11\xb1\x34\xca\x8c\x19\xd3\x39\xfb\xec\xb3\
+\x59\xb5\x6a\x15\xc0\xe7\x80\x33\x8f\xdc\x04\x08\x39\xc0\x7f\x95\
+\x0b\xc0\x34\x80\x56\xcf\xa3\x5c\x1c\x66\x47\x6f\x08\x2c\xce\x9a\
+\x35\x33\x9c\x64\x8d\xe2\xfd\x20\x60\xd2\xe4\xc9\x00\xec\xdb\xb7\
+\x8f\x72\xb9\x1c\x39\x62\x91\x00\x04\x86\x40\x83\xe8\xd8\x4a\xb0\
+\x08\x85\x62\xb1\x48\x57\x57\x17\xf9\x7c\x9e\x39\x73\xe7\x86\xab\
+\x15\x09\xc3\x38\x42\x75\x5e\x31\xe1\xaa\xa8\x40\xf4\x3f\x67\x82\
+\x63\x41\x10\xa3\x0e\x2e\x60\xac\xc7\x7b\xf6\xec\x61\xc7\x8e\x1d\
+\x34\x34\x34\x30\x67\xce\x1c\x4c\x74\x2d\x6a\x19\x1b\x25\x74\x41\
+\xae\xbd\xf6\x4f\x62\x01\x38\x2d\x4a\x74\x0d\x1c\x91\x09\xe8\x58\
+\xb2\xc2\x7f\xad\x68\x80\x16\x84\x72\x71\x98\xee\xe1\x61\x00\x26\
+\x4d\x9a\x1c\xc6\xfa\xe5\x54\xb5\x7b\x9e\x47\x63\x63\x23\x41\x10\
+\x84\xb1\x7c\x39\x56\xf9\x3e\x7e\x50\x0e\x9f\x07\x3e\x81\xef\x13\
+\xf8\xe5\xf0\x71\x10\xde\x70\xdf\xf7\xd9\xb6\x6d\x1b\xaa\xca\xdc\
+\xb9\x73\xc9\x17\xf2\x98\x40\x2d\x2d\x61\x09\x92\xfd\x9a\x2a\x1a\
+\x98\x44\x9d\x87\x9f\xb1\xd5\x7d\x68\x2a\xc2\x63\x43\x6c\x42\x83\
+\x00\x8d\x84\x6f\xd5\x23\xab\x00\x38\xed\xb4\xd3\xf0\x3c\x49\x54\
+\x7f\x22\xa8\xf1\x9f\x09\x98\x3d\xfb\x38\x66\xcc\x98\x11\xcf\xdf\
+\xdf\xbf\x26\x9d\xc0\xc3\xd5\x00\xe3\x50\xfc\xe1\x21\xfa\x22\xf8\
+\x76\xdc\xb8\x16\xca\xe5\xb2\xa5\xd2\xc3\x1b\xda\xd8\xd8\xc8\xe0\
+\xe0\x20\x7d\xbd\x7d\xd4\xd7\xd5\x61\x4c\x6a\x6f\x43\x64\x50\x93\
+\x95\x0f\xd0\xd3\xd3\xc3\x9a\x35\x21\x3c\xdc\xd6\xd6\x96\x38\x80\
+\x26\x08\xe3\x76\x17\xd1\x0b\x57\xbe\x44\x0b\x3c\x71\x02\x63\x04\
+\x30\x52\xfb\x9e\x16\x09\xa4\x2e\x5d\xc9\xc9\x72\x36\x91\x63\x98\
+\xea\x8a\x95\x0f\xaf\x04\xe0\xf4\xd3\x4f\x27\x08\xe2\x57\x5d\x27\
+\xd1\x36\x1d\x17\x5c\x78\x01\x5b\xbf\xb3\x95\x28\x9f\xf1\x3f\xff\
+\xb3\x0b\x40\x1b\x50\xd7\x90\xcb\x21\x23\x25\xca\xc6\x67\x28\xf2\
+\x90\x6b\x6a\xea\xf0\x7d\x3f\x74\x92\x4c\xac\xd6\x7d\xea\xeb\xea\
+\x01\x18\x18\x1c\x60\x82\x3f\x21\xb5\xf1\x89\xa3\x16\x3e\xdf\xb2\
+\x65\x0b\xab\x57\xaf\x66\xf3\xe6\xcd\x89\x3a\x3f\xee\xb8\xe3\xb8\
+\xfa\xea\xab\x39\xfb\xac\xb3\xa3\xf0\x2f\x52\xfb\x0e\x7c\x9b\x4e\
+\x9f\x49\x63\x40\x27\x17\x10\x50\x9b\x1a\xf9\x24\x2f\x10\x7d\x36\
+\x12\x1a\x51\xe8\xed\xeb\x65\xc3\x86\x0d\xe4\x72\x39\x4e\x3f\xfd\
+\xf4\x50\xfd\xc7\x53\x1d\x9f\x53\x25\x3c\x38\xc4\x8b\x58\x78\xde\
+\x42\xbe\xf7\xdd\xef\xa1\xaa\x53\x81\xd7\x01\x9d\x47\x24\x00\x5d\
+\xf7\x2e\xae\x6d\x5f\xb2\x62\xe4\x55\x6d\xff\x73\x39\xfc\xe2\x10\
+\x25\xdf\xc7\x00\xb9\x5c\x0e\x41\xf1\xfd\xa0\x02\xe3\xaf\xa9\x0d\
+\xb3\xab\xc3\xc3\xc3\xd1\xfb\xa9\x57\xde\xdf\xd7\xc7\x13\x4f\x3c\
+\xc1\x9a\x35\x6b\xe8\x8d\x7c\x89\x7c\x3e\xcf\xa2\x45\x8b\xb8\xf2\
+\xca\x2b\x99\x7f\xe2\x89\xc4\xe6\xdb\x04\x26\x71\xfe\xe2\x58\xde\
+\x68\x1a\xcb\x27\xa1\x5e\x26\xec\x73\xad\x37\xae\xff\x90\xf8\x09\
+\xa1\x6e\x59\xb1\x62\x05\x41\x10\x70\xda\x69\xa7\x85\xa6\xcb\x18\
+\x2b\xb4\x74\xcf\x13\xbf\xd6\xda\xda\x4a\x5b\x5b\x1b\x5d\xa1\x33\
+\x7c\x0d\xf0\xe5\x23\x12\x00\x0d\x93\x0f\xaf\x6a\xfb\x3f\xce\xf3\
+\x28\x0f\x17\x29\x96\xfd\x68\xf5\xd7\x84\x00\x50\x1c\x26\x99\x10\
+\xf5\x33\xc6\x90\xcb\x85\x20\xe7\xf0\xc8\x30\x7e\x50\x26\xf0\x03\
+\x5e\x78\xe1\x05\x56\xaf\x5e\xcd\xc6\x8d\x1b\x13\xd5\xdf\xd1\xd1\
+\xc1\x15\x97\x5f\xc1\x25\x97\x5c\x4c\xcb\xb8\x71\xe1\xca\x8d\xde\
+\x4b\x54\xaf\x49\x91\x1c\xa3\xb1\x9a\x0f\x3d\xb2\x58\x28\xe2\x15\
+\xed\x44\x01\xd6\x6a\x77\xc0\xa3\xe4\xf3\xe1\xf3\x08\xe1\x63\xf1\
+\xe2\xc5\xa1\xc0\x59\x8e\xa6\x66\x40\x87\x48\xe7\xb0\xf6\x89\xb5\
+\xf1\xe4\x2b\x21\x37\xe1\xc8\x4c\x40\xc7\x92\x15\xa6\xeb\x9e\xc5\
+\x75\xed\x97\xae\x18\x7e\x15\x0a\xc0\xeb\x00\x9a\x15\x82\x52\x99\
+\x11\x63\xa8\x17\xa1\x5c\x2e\x73\xe0\xc0\x01\x1a\x1a\x1b\x51\x13\
+\x10\x04\x91\x5d\x0f\x02\xea\xea\xea\x00\x5e\x08\xfc\x60\xe6\xca\
+\x15\x2b\x59\xbd\x7a\x35\xfb\xf7\xef\x0f\x3d\x5f\xcf\xe3\xdc\x73\
+\xcf\xe5\xf2\xcb\x2f\x67\xc1\x82\x05\x78\x22\x21\xf0\x92\x84\x5e\
+\x38\x2a\xd8\x56\xef\xce\xaa\xb4\xbd\xf4\x44\x2b\x54\xf9\xec\x28\
+\x13\x09\xca\xce\x9d\x3b\xd9\xbc\x79\x33\xf5\xf5\xf5\x9c\x71\xfa\
+\x19\x98\x28\xa7\x10\x7e\x87\xa4\x62\xa8\x29\x08\x55\x1c\x19\xe6\
+\x5b\xdf\xfa\x56\x7c\xb6\x7b\x81\x7d\x47\xc5\x07\x78\x95\x4e\xbe\
+\xa5\x01\x84\x7d\x41\xc0\xd2\x81\x01\x8a\xaa\xe0\xfb\x7c\xff\xfb\
+\xdf\xe7\x3d\xef\x79\x8f\x03\xd4\x04\x81\xe1\xcc\xb3\xce\xe4\xc9\
+\xb5\x6b\xf5\x87\x3f\x4c\x17\xc7\xc4\x89\x13\x59\xb2\x64\x09\x4b\
+\x96\x2c\x61\xe2\x84\x09\x20\x82\xaa\x86\x1e\xbc\x0d\xdd\x3a\xb1\
+\x37\xae\x36\xc0\xcd\xeb\xdb\x33\xaa\x8e\xce\x57\x27\x65\xa7\xaa\
+\x2e\x7e\x10\x09\xcd\x43\x0f\x3d\x04\xc0\xb9\xe7\x9e\x4b\x2e\x9f\
+\x23\x08\xfc\x70\xfd\x27\x31\xa4\x0b\x35\x03\xdc\xf1\xfd\xef\xb3\
+\x6f\xdf\x3e\x80\x61\xe0\x2d\xff\x15\xa2\x80\x63\x00\x96\x17\x8b\
+\x3f\x5c\x5e\x2c\xbe\x1d\x90\x86\x86\x06\x00\x9e\x7e\xfa\x69\x1e\
+\xfa\xed\x43\x9c\x7b\xce\x79\x14\x8b\x43\x3c\xfe\xc4\x13\xac\x7e\
+\xec\xb1\x98\x60\x31\x4b\x44\x58\xb0\x60\x01\x97\x5d\x7a\x19\x67\
+\x9c\x79\x26\xb9\x9c\x07\x0a\x81\x1a\x0b\x84\x09\x75\x72\xe8\x75\
+\xa7\x2b\x5d\x6c\x8c\x5f\x15\x11\x6b\xf1\x67\x54\x7d\x3a\xb9\x92\
+\x6a\x83\xe8\x9c\x39\x4a\x18\x0a\x15\x1a\xc3\x0f\x02\x1e\x78\xe0\
+\x81\x30\xd1\xb1\x70\x61\x92\x34\x72\x86\x03\x3a\x29\xab\x57\xaf\
+\x4e\x3e\x03\xfc\x77\x8e\x10\xc4\xab\x2a\x00\xfb\xee\x5b\xbc\x20\
+\x30\xfa\x33\x90\x19\xa1\x26\x12\x2b\x9d\x41\xe6\xb1\x23\xf6\x88\
+\x0a\x22\xfa\xf9\xfa\xda\xdc\x27\x9b\x2f\x78\xb0\x78\x94\x04\xe0\
+\x51\x60\x0e\xf0\x8e\x38\x56\xfe\xd8\xc7\x3e\xc6\x93\x4f\x3e\xc9\
+\xe7\x3e\xf7\x39\xee\x5a\x76\x17\xcf\x3f\xf7\x3c\x9b\x37\x6f\x66\
+\x64\x64\x24\x0a\x0f\xc7\x71\xd1\x45\x17\x71\xe9\xa5\x97\xd2\xd1\
+\xde\x9e\x78\xed\x89\x9a\x37\x19\xef\xda\xc4\xa8\x5d\xfa\x5b\x8c\
+\x56\x86\x7c\x6a\xa3\x7f\x9a\x46\x07\xd8\x4e\x60\x46\x2b\x18\x72\
+\xa8\x1a\x7b\xe1\x03\xca\xea\xc7\x56\xd3\xd7\xd7\xc7\xd4\xa9\x53\
+\x39\xfe\xf8\xe3\x09\x4c\x10\x3b\xfa\x29\x72\x68\x09\x44\x57\x57\
+\x17\x5f\x0f\x93\x41\x00\x77\x02\x4b\x8f\x7a\x32\xe8\xc0\x6f\x16\
+\xb5\x97\x7d\xfd\x1b\x54\xa6\x29\xf1\xe4\x93\x4e\xb8\x48\xf4\xc3\
+\x05\x57\x4f\x86\x76\x14\x41\x11\xf9\x9f\x43\xa5\x60\x56\xef\x43\
+\x17\xfc\xe5\xb8\x0b\x1e\xea\x3c\x0a\x02\xf0\x02\x70\x2a\xc0\xeb\
+\x5f\xff\x7a\x6e\xba\xe9\x26\xc4\xf3\x38\xfb\xec\xb3\xb9\xf8\x92\
+\x4b\xb8\x6f\xf9\x72\xd6\xaf\x5f\x0f\xc0\xbc\x79\xf3\x58\x72\xc9\
+\x12\xce\x39\xf7\x1c\x0a\x85\x02\xa0\xe1\x6a\x57\x12\xbb\xaa\x29\
+\x1d\x27\x0d\xcd\x52\x93\x6b\xd9\xf9\xc4\x5b\x4b\x50\xbb\xcc\x14\
+\x57\x3a\x78\xd5\xa2\x80\xaa\xef\x29\x77\xdf\x73\x37\x00\x17\x5e\
+\x78\x61\xe2\x94\x6a\xe5\x9a\x02\x42\x74\xf2\xcb\x5f\xfe\x32\xc3\
+\x21\x00\xd6\x09\xfc\xc9\x2b\x92\x0e\x1e\x29\x51\x9b\xcb\x49\xb7\
+\xc2\xb0\x27\xd2\x68\xd4\x5a\xe9\xf1\x02\x11\x89\xbc\xdb\xf8\xa6\
+\x45\x77\x2e\xb4\xa9\x12\x3e\x94\x37\x8c\x94\xf4\xd3\x7b\x96\x9f\
+\xff\xf5\xa6\x86\xdc\xe3\x0d\x0b\x1f\x38\xdc\x28\xa3\x05\xf8\x31\
+\x20\x67\x9f\x7d\x36\x7f\xf1\x17\xef\x0f\xaf\x21\x08\x19\x35\xd7\
+\xbf\xeb\xdd\x0c\x0d\x0e\xd2\xda\xda\xca\xc5\x17\x5f\xcc\xb4\x69\
+\xc7\xa6\x2b\x38\x08\x1c\x15\x5e\xe9\xa0\x09\xaa\x06\x41\x2a\x6d\
+\xbc\x0d\xda\x58\x19\x3d\xad\x92\x02\xce\xda\x68\xec\xec\xa0\x68\
+\x55\xfe\xce\xb6\x6d\xdb\x78\xf6\xd9\x67\xa9\xad\xad\x65\xe1\xc2\
+\x85\x2f\x79\x03\x54\x95\xdb\x6f\xbf\x9d\xce\xce\xce\xd8\xee\x9f\
+\x99\x3a\x08\x47\x51\x00\x7a\x7f\x7b\x7e\x5d\xb9\xc4\xdb\x02\xa3\
+\xd7\x29\xd2\x98\xdc\x07\x11\x5b\x06\x52\xe1\x94\x74\xe2\xe3\xe5\
+\x13\xcb\x83\xc2\x78\x51\xae\x17\x41\x54\xe4\xc3\x1c\x3e\x2b\xf8\
+\x27\x40\xdd\xa4\x49\x93\xf8\xc0\x07\x3e\xe0\x10\x2b\x00\x0a\x35\
+\x79\xfe\xf2\x2f\xff\x32\xb1\xd9\x31\x86\x8e\xe3\xb1\x8b\x05\xd0\
+\x68\xc5\x12\x33\x55\xbc\x75\xb5\x55\x42\x45\x0a\x58\xc9\x52\x00\
+\x47\x65\x69\x8d\xf2\xf2\x7d\xf7\xdd\x97\x84\x7e\x8d\x8d\x2f\x9d\
+\x8c\xbd\xf3\xce\x3b\x59\xbb\x76\x6d\x7c\xb6\x37\x02\xbb\x8e\x96\
+\x73\xe5\x08\x40\xcb\xf1\xcd\xa5\xee\xa7\xfb\xd7\x81\x0c\x4b\x14\
+\x1a\x91\x99\xfa\xc4\xd1\x49\x56\x7e\x8c\x50\xa9\x75\x9c\xf3\xc9\
+\x77\x0f\x0c\x94\xff\x78\xcf\xf2\xc5\x8b\xda\x2e\x59\xb1\xf1\x10\
+\xaf\xaf\x15\x58\x02\x70\xc3\x0d\x37\x50\xa8\x29\x10\x04\x9a\x64\
+\xd6\x6d\x08\x36\x4d\xce\x64\x54\xb4\xad\xce\x47\xd5\x04\x5a\x05\
+\xea\xc5\x9d\x64\xeb\x37\x0d\x0d\x0d\xb1\x77\xef\x5e\xf6\xef\xdf\
+\x4f\x77\x77\x37\x43\x43\x43\x0c\x0d\x0d\xc5\xea\x99\x5c\x2e\x47\
+\x6d\x6d\x2d\xe3\xc6\x8d\x63\xe2\xc4\x89\xb4\xb7\xb7\x33\x75\xea\
+\xd4\x04\x9b\xe8\xeb\xeb\xe3\x91\x47\x1e\x41\x44\xb8\xe4\x92\x4b\
+\x5e\xf2\x06\xdc\x7f\xff\xfd\xdc\x75\xd7\x5d\xf1\xd3\x8f\x71\x94\
+\x98\x40\x95\x40\x50\xef\x5b\x64\xdf\x63\xfb\xcf\x55\xf8\x81\x08\
+\x93\x42\x07\xc8\x73\x7d\x3d\x89\xd7\xb8\x6d\x16\x34\xf4\x07\xe2\
+\x98\xd5\x0b\xe5\xc1\xc6\xbf\x05\x26\x18\xe5\x1d\x7b\xee\x3b\xff\
+\x2b\x6d\x17\xff\xb6\xeb\x10\xae\xef\xa6\xd8\xe3\x5f\xb0\xe0\x94\
+\x88\x21\x63\xa7\x52\xa3\xd5\x3d\x6a\x9a\xd6\x56\xe7\x99\x28\x3d\
+\x63\x6c\x6d\x74\x2e\x51\xfe\xc6\xb0\x73\xe7\x4e\xb6\x6d\xdb\xc6\
+\x8e\x1d\x3b\xd8\xb9\x73\x27\x9d\x9d\x9d\x0c\x0f\x0f\xd3\xd6\xd6\
+\xc6\xcc\xd6\x56\xda\x5a\x5b\x19\x5f\x5f\xcf\xb4\xda\x5a\xad\x6b\
+\x68\x00\x13\x50\x2e\xfb\x0c\x8d\x0c\xb3\x6f\xcb\x16\x59\xbb\x7a\
+\x35\x5b\xfa\xfb\x39\x70\xe0\x00\xa7\xcc\x9f\xc3\x89\x27\x9f\x4e\
+\x57\x57\x17\xe5\x72\x99\x53\x4f\x3d\x95\xf6\xf6\xf6\xd1\x3d\xdf\
+\x47\x1f\xe5\x8e\x3b\xee\x88\x9f\x7e\x15\xb8\xf5\x68\x87\x57\xa9\
+\x06\x78\xbe\x3f\xa7\xaa\xe7\xa9\x22\x2a\x62\xfb\xf5\xb1\xb9\x24\
+\x74\xfd\xac\xf7\x84\xd4\x7e\x26\xef\xab\xf5\x9e\x13\x21\x7d\x3c\
+\x24\xc1\x71\xf3\xcb\xbd\x38\x11\xce\x55\x85\xb3\xce\x3a\x2b\x41\
+\xc8\x1c\x47\x4a\x49\x79\x36\xb1\xbd\x8d\x52\xa6\x22\x29\xfc\x9a\
+\x0d\xe9\x46\xd3\xd5\xc6\x18\xb6\x6f\xdf\xce\x86\x0d\x1b\x78\xe6\
+\x99\x67\xd8\xbc\x79\x33\xe3\xc7\x8f\xe7\xb4\x99\x33\x99\x7f\xcc\
+\x34\xbd\xe6\xa4\x93\x38\xae\xbd\x4d\x26\x37\xb7\x60\x7c\x3f\xf9\
+\xd3\x20\xc0\x94\xcb\x62\x82\x00\x8d\x5f\xf3\x7d\x82\xc0\x47\xfd\
+\x00\xe3\xfb\xf4\x0c\x0c\xf0\xe8\xb6\x6d\xfa\xc0\xbd\xf7\xca\x63\
+\xa1\x2d\xe7\xf2\xcb\x2f\x1f\xf5\x6a\x9e\x7e\xfa\x69\x6e\xbf\xfd\
+\xf6\x58\x63\xdd\x03\xbc\xff\x95\x88\xaf\x13\x01\x18\x18\x28\x1f\
+\xab\xca\x59\x2a\x32\x4e\x92\x95\x6e\x4f\x7c\xf8\x9a\xe3\x13\xc4\
+\x2b\x4e\x24\x5c\xf5\x49\x58\x65\x59\x05\x89\x24\x4a\x14\xa3\x7c\
+\x7c\xcf\xf2\xc5\x8b\xc4\xe3\x63\x93\xdf\xb0\xe2\xf1\x97\x76\x7c\
+\xf0\x6a\x0a\xd2\x50\xf6\x95\x62\xb1\x88\x1f\xd9\x7d\x51\xc1\xc4\
+\xbe\xc6\x28\xd8\x7b\x06\x42\x7f\x29\x53\x4c\x6f\x6f\x2f\x4f\x3e\
+\xf9\x24\xeb\xd6\xad\xe3\xe9\xa7\x9f\xa6\xa5\xa5\x85\xd7\x9f\x7c\
+\x32\xef\xbd\xf8\x62\x3d\xf5\xc6\x1b\x65\x7c\x63\x43\x38\xa1\x65\
+\x5f\x82\x20\x00\xbf\x4c\x79\x60\x20\x9a\xfc\x00\x13\xf8\x68\xd9\
+\x0f\xff\xcd\x08\x45\x10\x09\x82\x09\x7c\x1a\x02\x9f\xc5\xed\x1d\
+\xb2\x7b\xdf\x7e\x1e\xeb\xec\xa4\xa1\xa1\x81\xe9\xd3\xa7\x57\xbd\
+\xa6\xe7\x9e\x7b\x8e\xdb\x6e\xbb\x2d\x4c\x51\xc3\x93\xc0\x65\xaf\
+\x14\xc0\x92\xe8\xf2\xbd\xcb\x17\xff\x77\xa3\x7c\xd1\x20\x13\x89\
+\x55\xba\x00\xe2\x45\x37\xd0\x0a\x07\xc5\xb6\xf5\x92\x18\xcc\x70\
+\x52\x0c\x15\xfa\x23\x9a\x20\x89\xaa\x65\x40\x7b\x05\xfe\x71\xd2\
+\x25\x6d\xb7\x8a\xfc\x34\xa8\x32\xf9\xb2\x61\xe9\x31\xad\x7f\xf2\
+\xbf\xf6\x7f\x76\xc3\x0b\xc5\x1b\x01\xfe\xea\xaf\x3e\xca\x49\x27\
+\xcd\x3f\x2a\x3f\x7a\xef\xde\xbd\xac\x59\xb3\x86\xd5\xab\x57\xf3\
+\xe2\x8b\x2f\x72\xc1\x82\x05\x2c\x3e\xe5\x64\x16\xce\x9f\xcf\xe4\
+\xe6\x66\x4c\x39\x9a\xd8\xc0\x0f\x1f\xfb\x99\x09\x4e\x56\x76\x39\
+\x14\x82\x64\xa2\xc3\xd7\xd4\x12\x0e\xe3\x47\x5a\xa1\x5c\x66\x68\
+\x64\x84\x1b\x1f\x78\x80\xfe\x72\x99\x13\x4e\x38\x81\xc9\x93\x27\
+\x73\xfd\xf5\xd7\x3b\xd7\xb6\x75\xeb\x56\x3e\xfb\xd9\xcf\xc6\x78\
+\xc6\xd6\x9b\xdf\xca\x9c\x0b\x4f\x3c\xb8\xc7\x7f\xe1\x89\xe8\xd2\
+\xa5\xf0\xb6\xa5\x18\x39\x84\xba\x01\x2b\x19\x24\x13\x44\x28\x84\
+\xf9\xe7\x54\x34\x12\x06\xab\xa5\xf6\x13\x87\x50\x3c\x92\xc4\xb6\
+\x25\x10\x71\x9a\x33\x4e\x86\x88\x58\x09\x94\xf0\x83\xe3\x44\xf4\
+\x0d\xe0\xdf\x52\xf5\xaa\x96\xce\x2b\xec\xdc\x63\x8e\xf9\xcc\xfb\
+\x9b\x3b\xff\xe4\x6f\x9e\x31\x25\x5f\xbd\x5b\x6f\xbd\x85\x25\x4b\
+\x96\x70\xcd\x35\xd7\x50\x5b\x5b\x7b\xc8\x93\xde\xdd\xdd\xcd\xaa\
+\x55\xab\x78\xf4\xd1\x47\xd9\xb3\x67\x0f\x57\x9e\x7b\x2e\x7f\x7d\
+\xed\xb5\x9c\x35\x67\x0e\x39\x11\xd4\x2f\x63\xca\x01\xe5\x81\xc1\
+\x68\x92\xd3\x09\x4e\x27\xb4\x9c\x4c\xbc\xfa\xd6\x0a\x4f\xfe\x0d\
+\x2c\x41\x89\x3e\x1f\x09\x91\x06\x3e\xbf\x7c\xfe\x79\xfa\xcb\x65\
+\xe6\xb6\xb6\xf2\xb7\x1d\x1d\xdc\xf4\xf8\xe3\x6c\xdb\xb6\x2d\xd1\
+\x04\x5b\xb7\x6e\xe5\xf3\x9f\xff\x3c\x23\x23\x23\xe4\x3c\xf6\xde\
+\xf1\x91\x71\x6f\x6d\x6f\xf5\xe6\xba\xb3\x99\x89\xa6\x23\x2a\xcf\
+\x6f\xd6\xf9\xda\x76\x82\x3f\xbc\xe3\x1b\xfe\x3e\xdd\x49\xaf\x7c\
+\xea\xe5\x85\x89\x89\x06\xd8\x7d\xef\xf9\x3f\xf0\x84\x77\xc4\x71\
+\xbf\x4a\xaa\x05\x62\xc7\x2f\x04\x05\x25\x01\x83\x52\x6c\x54\x53\
+\x13\x10\xeb\x0a\xdb\x8d\xc6\x44\x8e\x61\x08\xa7\x86\x7e\x82\x0e\
+\x8a\xca\x73\x60\x7c\x55\xf5\xec\xcf\xab\xd1\xbc\x31\xda\xe4\x07\
+\x66\xbc\xef\xd3\xb8\x6b\xdf\x48\x7e\xa4\x14\x2a\x8a\x9c\xe7\x31\
+\xbe\xb5\x95\xc6\xc6\x86\x0a\x0d\x63\xd5\x5b\x21\x06\x0c\x86\xa1\
+\xc1\x41\x86\x06\x07\x28\x95\xca\xb4\x34\xd4\xd3\xd2\xd8\x48\x63\
+\x6d\x4d\xe8\x9c\xc6\xd5\x39\x46\x11\x35\x91\x33\x18\x42\xc4\x82\
+\x41\x4d\x74\xce\x88\x9e\x9d\x84\x19\x6a\x00\x43\x79\xb8\xc0\xc6\
+\xc7\xe7\x31\x32\x94\x4b\x54\xbd\x29\xc7\x02\x11\x6b\x80\x50\x20\
+\x06\x46\x46\xf8\xe0\xda\xb5\x0c\x05\x01\x7f\x77\xe2\x89\xcc\x6f\
+\x1d\xc7\xb2\x9d\x9d\x3c\x37\x65\x0a\xef\x7b\xdf\xfb\x78\xe1\x85\
+\x17\xf8\xc2\x17\xbe\xc0\xd0\xd0\x10\x4d\xf5\x52\xfc\xf6\x87\x27\
+\xdd\xd3\x5c\x2f\xbe\x67\x93\x0d\x2c\x83\x26\x09\x2c\xa3\x88\x1a\
+\x35\x4a\xb9\x20\x66\x3b\x12\x3c\x74\xdc\xd4\xc1\x47\xa7\xbd\x97\
+\x9e\x97\xa3\x09\x12\x0d\x50\xc8\xb1\xac\x1c\x70\x1e\xe8\x8c\x34\
+\xee\x57\x50\x8f\x38\x24\x94\x14\x05\x4d\x6e\x7e\x8c\xa4\xa6\x2a\
+\x3f\x49\x82\x5a\x76\xda\xc6\x0b\x12\x62\x45\xa3\xa0\x27\xab\x86\
+\x8e\x23\x16\x60\xe2\x09\x78\x39\xa1\xe0\xe5\xa0\xa0\x34\x4d\xab\
+\x0f\x01\xc6\x68\xb2\x90\x21\x44\x87\x2c\x81\xd3\x28\xda\x48\xe1\
+\x59\xbc\xf0\x64\x13\xc6\x29\x8c\xf3\x80\x02\x68\x19\xb4\x27\xd1\
+\x48\x82\x49\xfc\x05\x41\x11\xb5\xae\x43\xdd\x73\xbb\xc2\x1d\x9a\
+\x32\xbf\xd6\x63\x5c\x4b\x27\x9d\x7b\x27\x84\x13\x6f\x39\x7d\xc6\
+\xb7\x7d\x82\x80\x7f\x7f\xb1\x93\xa1\x20\x60\x4e\x53\x23\xf3\xea\
+\x0b\x94\x07\x86\x58\xd8\xd8\xc4\x4f\xd6\xac\x61\xe3\xc6\x8d\xdc\
+\x76\xdb\x6d\x0c\x0f\x0f\x33\xbe\xc9\x33\x5f\xff\xe0\xa4\x52\x43\
+\xad\x77\xa1\x06\x86\x20\xb9\xdf\xe2\x4c\x7e\x26\x44\x57\x51\x1d\
+\x0a\xc4\x7b\xd2\x33\x3c\xfd\xc2\xf3\x0d\xf9\x69\x2f\x33\x45\x90\
+\x08\x40\x2e\x27\x0f\x05\x46\x1f\xd2\x30\xf5\x5a\xc8\x92\x11\xe3\
+\x29\x17\x4b\x02\x12\xed\x9f\xcc\xbc\x26\x91\x40\xd5\x8c\x81\x45\
+\xaa\x90\xec\x9b\xea\xba\xff\x49\x42\x45\x42\x0f\xde\x81\x6b\x5d\
+\x7a\x84\x73\x1d\x12\x53\xa9\xc4\xf6\x04\xd5\x42\x2b\x9d\x2f\x4a\
+\x84\x35\x5a\x4b\xd1\x21\xb1\x63\xab\x16\xce\xe1\xa6\x7f\x45\x95\
+\x5c\x3e\x60\xf2\xd4\xbd\xec\xdb\x0a\x7d\x3d\x1e\x5a\xb6\x57\x7d\
+\xfa\x78\xff\xf0\x30\xcb\xc2\xec\x1d\x6f\x9d\x30\x89\x91\xbe\x21\
+\x44\x95\x3a\x55\x26\x00\xff\xf4\x4f\xff\x14\x66\x2b\x5b\x3c\xbe\
+\x76\x53\x9b\xd4\xd5\xd0\x12\xa2\xd7\x5e\xf2\x7b\xdc\xdf\xe1\xfc\
+\x02\x15\xc5\x88\x60\x30\x9a\xf7\x3c\x93\x0b\x30\xde\x21\xfb\x00\
+\xe3\x4e\x19\xb7\x7b\xff\x9a\xde\x5f\x04\xca\x65\x0a\xed\xe9\x4c\
+\xc5\x6a\x56\x52\xfa\xb3\x25\x95\x56\x16\x20\xba\x91\xc6\x91\x07\
+\x67\xce\xa2\xd0\x20\x36\x25\x21\x10\x63\x32\xf6\x48\x92\xe4\x8b\
+\x9d\x7d\xc3\xc2\xf3\xd2\x98\x44\x2a\xd2\xae\x38\x81\x6a\x84\x11\
+\x18\x41\x30\x19\xd1\x54\x07\xde\x72\x08\xbd\x62\x91\x39\x12\xf3\
+\x46\x2a\x14\x02\x1a\x26\xbd\x18\x37\x71\x90\x96\x89\x79\xf6\x6f\
+\xab\x73\xcd\x40\x10\x60\xca\xa1\x23\xf9\xaf\xfb\xf7\x63\x80\xd3\
+\x1b\x1a\x98\x61\x0c\xfe\xe0\x20\xaa\xca\xc3\x83\x83\xec\x2d\x87\
+\x36\x7d\xca\x84\x1c\x5f\xfd\x8b\xc9\x14\xf2\x49\x46\xaa\xb2\x76\
+\xdf\xba\x99\x09\x09\x25\xf5\xb5\x05\x4f\x4b\xaa\x3a\x34\x75\xc2\
+\x70\xf9\xe5\xd6\xfd\x27\x92\x22\xe3\xff\xdd\xe0\xb1\x02\x74\xaf\
+\xab\x92\xdd\x5c\xb7\x38\x88\x99\xc1\x8b\xd4\x64\xc2\x60\x49\xec\
+\xb2\xed\x03\x68\x22\x0d\x22\xe9\x4d\x8f\x24\x21\x89\x30\x34\xb9\
+\xed\xee\xca\x4e\xd3\xb4\x92\x98\x15\xad\x98\x72\xad\x98\xdc\x30\
+\x04\x8d\xae\x47\xc4\x51\xe1\x99\x23\xa3\x85\xa5\x51\x94\x42\x62\
+\x52\x24\x33\x03\x9a\xc9\xfa\xd5\x36\x18\x26\x4d\x19\xa0\x3c\x30\
+\x40\x69\x60\x80\xf2\xc0\x20\xe5\xc1\x41\xca\x03\x03\x94\x07\x07\
+\x79\xba\xa7\x87\xc7\x86\x87\x29\x00\x6f\xa9\xa9\xa1\x34\x34\x48\
+\x79\x68\x88\x5f\xec\xef\xe6\x7b\xbd\xbd\x18\x60\xee\xb4\x02\x5f\
+\xff\x40\x1b\x85\xbc\xe0\x42\x6d\x5a\x45\x45\x6a\x95\xf7\x50\x55\
+\x86\x05\x39\xa0\x1e\xbd\xe3\xeb\x29\xf1\x32\x23\x01\x07\x0a\xae\
+\xf5\xa4\x34\x1c\xe8\x3a\x83\x9c\x18\xaf\xf7\x38\x2a\x90\x0c\x20\
+\x2a\x36\x76\x2e\xea\xac\xbc\xd8\x3f\x4c\xcc\x85\x46\xce\x63\xc2\
+\x86\x55\x47\x4b\x48\x34\x51\xa9\x86\x93\xc4\x3e\x63\x4f\x90\x66\
+\x93\xd2\xea\xac\x76\x30\x91\xa2\x12\x87\x51\x63\x27\x2e\xe3\x15\
+\x2c\x9a\xe6\xf8\xdd\x7b\x6c\xf9\x2b\xaa\x2e\xba\x1d\x87\xb1\x19\
+\xbf\xac\xa6\xde\x27\x27\xfd\x8c\x0c\x1a\xc7\xf6\x97\xcb\x3e\xff\
+\x5a\x0a\xd3\xd3\xaf\xcf\xe7\x69\x1a\x1e\xa6\x68\x0c\x3f\xf4\x7d\
+\x1e\x37\x06\x2f\xe7\x71\xd3\x57\xbe\xcc\x55\xef\xbb\xf1\x65\x47\
+\x33\xe5\x4f\x4e\x71\x4c\x5b\x24\xb7\x46\x3c\x06\x41\x77\x7b\xc6\
+\xef\xda\xf1\x14\x23\x87\x6c\x02\x00\x9a\xa6\x35\x14\x87\x9f\x1b\
+\xf8\x35\xe8\x39\x22\x32\x53\x24\x46\x5b\x2d\x2f\x20\x49\xae\x48\
+\x1a\x1b\x68\x05\xff\xc5\xd6\xa4\x09\x0a\x27\xb1\x12\xb6\x58\x36\
+\xb1\xad\x8e\xc5\x4b\xd4\xa2\x56\x3b\xa6\xc5\xc1\xa5\x92\x4b\x4a\
+\xcc\x45\x6c\x14\x62\xcd\x13\xf9\x0e\x2a\x20\x76\xb6\x47\xc4\x11\
+\xd2\x8a\xa0\x48\x5c\xe8\x38\x56\xb5\xf1\xf7\x26\x4e\x6b\x72\x6d\
+\x42\xcb\xf8\x80\xb6\xe9\x65\x36\xef\x1c\xb1\xc2\xbe\x80\xfb\x50\
+\x76\x01\x13\x81\xd7\xfb\x3e\xbb\x7d\x9f\xef\x44\x99\x9c\xfa\xe6\
+\x26\xde\xfb\x4f\xbf\x60\xcb\xe3\x17\xf2\x0f\xd7\xa6\x57\x50\xdf\
+\x04\xf5\xcd\xd0\x3c\x41\x19\xdf\x0e\x13\xa7\xc2\xe4\x63\x94\x8e\
+\x99\xd0\x3c\x1e\x0a\x9f\xdc\x55\x2d\x92\xab\x91\x4f\x4e\xee\xf3\
+\xa0\x17\x3f\x28\x9d\x3e\xe5\xe5\xe3\x00\x15\xb7\xa0\xef\xa1\x0b\
+\xa6\x0f\x97\xcc\x3f\xa8\x72\x1d\x78\x05\x5b\xd8\xc5\xba\x63\x9a\
+\x51\xbd\x62\xb1\x66\xb0\xa2\x84\x4a\x52\xbc\x05\x0c\x25\x8f\x4d\
+\xc6\xb4\xe0\x80\x4b\x64\xce\xe3\xb9\x99\x1f\xeb\x7d\x75\xec\x63\
+\xfc\x1d\x12\x41\xc6\xb6\xe9\x49\x9c\x2b\x55\x37\xaa\x49\xae\xdb\
+\xa4\x0e\x61\x06\xd4\x8a\x4d\x52\x98\x07\x51\xb4\x6c\xd8\xba\xa6\
+\xc4\x23\x3f\xee\xa3\x77\x77\x18\x4e\xbe\xa8\xf0\xc5\x28\x67\xfb\
+\x3e\xa0\x3f\x62\x70\x8c\x00\x39\x0f\xbe\xfa\xe4\x13\x68\xe9\x78\
+\x6e\x3c\xfd\xe5\x97\x65\x36\x4f\x50\x5e\x77\x3c\xcc\x98\xaf\x1c\
+\x77\x8a\x32\xfb\x54\xe5\xb8\x53\xa1\x3e\x73\x8a\x03\xd7\x16\xf2\
+\xd7\x2e\x25\x38\x2c\x01\xd0\xcd\x97\xe6\xf7\x6d\x1d\xba\xd6\x28\
+\xff\xac\x30\x21\x71\x13\x12\x2f\x29\x16\x06\xcd\x70\xe0\xdc\x9c\
+\xa1\xed\x79\x8b\x45\xb1\x4a\x55\x97\xad\x55\x6c\x04\xd1\x24\x1a\
+\x5d\x22\x27\x47\xac\xec\x52\x6a\x3e\x0c\x0e\x21\xdf\xb1\xef\xea\
+\x78\x8f\xa2\xc6\xf1\x45\x92\x73\x64\x8f\x71\xd4\x7b\x84\x0d\x38\
+\xa4\x17\x4d\xb4\x41\xca\x04\x56\x3c\x94\x62\x6f\xc0\x8a\xef\xf4\
+\xf3\xdc\x23\x23\x94\x55\xb9\x0d\x78\x11\x68\x6b\xcd\xe1\x07\xd0\
+\xdd\x1f\xce\xc7\x05\xd7\xbe\x95\x0f\x7f\xe3\x76\x1a\x5b\x5a\x28\
+\x8d\xc0\xb2\xaf\x09\xad\x93\xd3\xfb\x37\x3c\x04\xc5\x7e\x18\xe8\
+\x11\xba\x77\xc1\xbe\x4e\xe8\xda\x26\x74\x6d\x83\xe1\x81\x4a\xd7\
+\x2e\x57\x50\xfe\xe8\x0c\x38\xf5\xf5\xca\x79\x57\x1b\xe6\x9c\x71\
+\xf0\x49\xbf\x44\x0a\x32\xaa\x00\x00\xec\xbd\x6f\xd1\xc9\xc6\x70\
+\x27\x78\xc7\xab\xe3\x83\x5b\xf6\x57\x32\x11\x95\x83\x14\xa4\xd0\
+\xaf\xe2\xae\x4a\xb1\x1d\x3d\xc5\xb9\xa9\x8e\x77\x6e\x4f\xa4\x90\
+\x4e\x9c\xb5\x7a\x45\xdd\xa4\x7c\xcc\xdd\x71\x57\xb4\xe2\x8d\xa2\
+\x29\x6c\x61\xc0\x3e\x9f\x05\x6c\xa5\xdf\x13\x1a\x3d\x07\xea\xb6\
+\xae\x5b\x80\xd5\x77\x0e\xf0\xd8\xbf\x0d\xf2\x43\x55\x56\x03\x2d\
+\x93\xda\x29\x0e\x34\x52\x1e\x9e\x4c\x4d\xfd\x0c\x2e\xba\xee\x46\
+\x4e\x38\xe7\x7c\xe7\x5e\x37\x8d\x87\xd6\x36\xa5\xb5\x0d\xda\xa6\
+\x85\x26\x60\x54\x34\x73\x37\x6c\x7b\x5a\xd8\xf6\x34\x6c\x79\x42\
+\xd8\xf4\xa8\xb0\x7d\x23\x98\x20\x9d\xc6\x8e\x59\xca\x65\xd7\x1b\
+\x4e\x38\xdb\x15\x92\x71\x93\xa0\x7d\x7a\xe5\xf9\xab\x0a\x40\xf7\
+\xfd\x8b\xa7\x05\x86\x5b\x15\xde\x6c\x94\x7c\x9c\xec\x53\x2b\x09\
+\xe4\x30\xc2\x70\x29\xcf\x92\xf5\x5c\xad\x58\x45\x1d\x71\x72\x27\
+\x16\xaa\x4f\x4c\x1a\x41\xd8\x00\x4e\xda\x64\x41\x1d\xed\x60\x9f\
+\x23\x16\x36\x63\x41\x00\x96\x36\x11\x75\x91\x4c\xc1\x45\xfc\x2c\
+\x41\x48\x8c\x9d\x33\xe9\x96\xd9\x51\x78\xa1\xe9\x4a\xfe\xc7\x3f\
+\x9f\xc1\x43\xf7\x36\x10\x36\x31\x39\x9e\x43\x6d\xff\xd7\xda\xa6\
+\x1c\x3b\x4f\x99\xbd\x00\x66\x9f\xa6\xcc\x5f\xa4\x4c\x99\x59\xfd\
+\xd8\x17\x9f\x83\xff\xf8\x85\xf0\xc8\x32\x61\xcb\xe3\xc2\x60\xef\
+\xc1\x83\xbf\xe6\x89\xca\xcc\xf9\x30\x7f\x91\x72\xca\x85\x5a\x5d\
+\x00\x0e\xdc\xbf\xb8\xde\x0f\xcc\x3b\x8c\xca\xc7\x89\xfa\xee\x26\
+\x31\x71\x9c\x2a\x56\x07\xb3\x71\x84\xc1\x4d\x06\xa5\xf9\x77\xb1\
+\x08\x02\xc9\x84\xa5\x25\xb4\x8e\x8a\xb7\x63\xb5\xac\x30\x24\x2b\
+\x55\x32\xda\x23\xa3\x51\xd2\x90\x52\x13\x28\x3a\x11\x44\x0b\x09\
+\x74\x35\x80\xa6\x97\xa8\x6a\xf9\x31\x59\xb3\xa5\x15\x02\xbb\x75\
+\xcf\x34\xfe\xfe\xc7\x7f\xc7\x2f\x1e\xbb\x82\x92\x5f\x13\xad\xf0\
+\x61\x3a\x66\xd6\xd2\x32\x51\x99\x30\x25\xfc\x48\x4d\x58\xb5\x46\
+\xe0\x43\xef\xde\x50\xdd\xf7\xec\x81\xce\xcd\xa0\xa6\x72\x4a\xa6\
+\xce\x56\xce\xbc\x4c\x39\xef\x8f\x95\x13\xce\x55\x1e\xf8\x91\x70\
+\xf7\xb7\x3d\x36\xfe\x4e\xaa\xfa\x09\x6d\xc7\x86\x2b\xbd\x50\x17\
+\x5e\xdf\x60\x8f\xd0\xd7\x0d\xdd\xbb\xa0\x54\x94\x83\x6b\x00\x80\
+\xfd\xf7\x2d\x3a\x3e\x08\xf4\x33\xc0\x9b\x15\x29\x24\x71\xb9\xb8\
+\x64\xd0\x6a\x68\x5f\x16\xc8\x50\xdb\xe6\x4a\x66\x75\x56\xa8\xfa\
+\x8c\xf3\x28\xe9\xe4\x25\xf1\x87\x02\x62\xdc\x09\xb7\x91\x27\xc7\
+\xc4\x58\xb9\x08\xa9\xf6\xbe\x56\x6a\x1c\x67\x82\xed\x6c\xa6\xab\
+\x5d\x6c\xe7\x50\x44\x31\x06\xee\xde\x74\x31\x9f\xfd\xd5\x1c\x16\
+\xff\xf9\x55\x5c\xf4\xf6\xf9\xd4\x35\x1c\x5a\xd2\xaa\x6b\x1b\x6c\
+\x5d\x2f\x6c\x59\x0b\x1b\x1e\x16\xd6\xfd\x56\x18\x1e\x14\x47\x9d\
+\x07\x11\xcc\xe3\xe5\x95\xb3\xaf\x0c\x85\x63\xee\x59\xca\x8c\xf9\
+\x50\x38\x88\xc2\xd9\xf7\x22\x6c\x5e\x23\xac\x5b\x21\xac\xba\x4b\
+\x5e\xba\x51\xe4\xfe\xe5\x0b\xff\xdc\x28\x5f\x50\xa5\x45\xd5\x75\
+\x04\x5d\x86\xb8\x5a\x70\xac\xa4\x93\xe6\x40\x2d\xb8\x37\xdf\xca\
+\xe3\x4b\xd6\x54\xc4\xb1\x3a\xd6\x79\x13\x84\x31\x83\xcd\x6b\x16\
+\x0f\x50\x57\xbb\x88\x26\x66\xc2\x09\xe9\x2c\x81\xaa\xf4\x4d\xb2\
+\x02\x6a\x32\x9a\x28\xe3\x58\x46\xb2\x25\x18\xfc\x42\x33\x4f\xbc\
+\x50\x64\xf8\xa3\x69\xfb\x9e\x91\x7f\x98\x9e\x71\x3a\xd5\x89\x94\
+\x62\xd3\x58\xb8\xb9\x92\x40\x1d\x04\xb0\xe9\x51\x78\xf8\xe7\x1e\
+\x0f\xff\x4c\xe8\xdc\x2c\x89\xf6\x5b\xf4\x16\xe5\x5d\x9f\x36\x4c\
+\x9f\x37\xba\x93\x67\x8f\xe5\x5a\xd6\x83\x46\x01\x8e\x34\xde\x7d\
+\xee\x15\x9e\xc8\xd7\x50\x99\x66\xec\x40\x3c\x8a\x85\xd5\xc2\xcb\
+\x35\xc3\x1a\xa8\x24\x4a\x66\xf9\x01\x96\x61\x51\x75\x43\x30\xfb\
+\xab\x1c\x35\x9c\x4e\x68\x62\x01\x44\xad\xc9\xb0\x31\x07\x75\x54\
+\x3e\x99\x08\x44\xd5\xce\x5a\xda\xd1\x85\x7d\xac\xb1\xc2\xc4\x4c\
+\xc4\x91\xa9\x0a\x0a\xaf\xdf\xe0\x01\x1b\xba\xf2\xec\xea\xf3\x32\
+\xe6\x25\xb3\x20\x94\x0a\xc7\xd7\x0d\x6b\xab\xc6\xfc\xac\x7f\x18\
+\x96\x7d\xcd\xe3\xfe\x1f\x08\xa8\xe0\xe5\x95\x37\xde\xa8\x5c\xff\
+\xbf\x0d\x8d\xe3\x5e\x5a\x00\xaa\x09\xc4\x4b\x1e\xd8\x7b\xff\x79\
+\x73\xcb\xbe\x7e\x56\x95\x2b\x55\x28\x58\x09\xfd\x8a\xa8\x80\x04\
+\x23\xa7\xc2\x07\x50\xad\x22\x04\x59\x78\xd3\x11\x8a\xd8\x67\x18\
+\x05\x0a\xd5\x6c\xea\xd7\x35\x2d\x59\x4d\xa0\x19\x95\x2e\x19\x6d\
+\x63\x6b\x07\x1c\xe0\xa8\x52\xeb\x48\x06\xa7\xc0\x02\xbb\x90\xf0\
+\xf8\x5d\xbd\x1e\x9b\xf7\xe7\x28\x07\x19\x4c\x44\x2b\x53\xba\x15\
+\x59\xa6\x6a\x82\x18\xfd\xbc\xdc\xa7\x53\x3a\xe5\x9e\x1d\xf0\xa3\
+\x7f\xf4\x58\x76\x7b\x28\x08\x6d\xc7\x2a\xb7\x3c\x10\x30\x65\xd6\
+\xcb\x17\x00\x27\x17\x50\x75\x18\xdd\x26\xe8\x72\xe0\xc5\xa4\x92\
+\x86\x6a\x21\x95\x26\xd5\xae\x52\x95\x80\x15\x61\xec\x42\x85\xba\
+\x8f\x92\x99\x91\xfd\xce\xf4\x57\xcd\x64\xfe\xc4\xf6\xc0\x33\xde\
+\xbb\xa0\x55\x90\x3d\xd7\x11\xad\x22\x77\x96\x10\x3b\x29\xc5\x24\
+\xc6\x15\x75\x23\x14\xb7\x38\xd4\xaa\x24\x92\x34\x13\x3a\xa1\x21\
+\x60\x7c\xbd\x89\xae\xd7\x75\x1e\x53\xb5\x4f\x96\x76\x9c\x1c\xeb\
+\x98\x1a\x6b\x91\x05\x9f\x68\xc3\x7c\x22\x04\x0d\xda\xa6\xc1\x87\
+\xbe\x6a\xf8\xea\x9a\x80\x19\xf3\x95\xd7\x1d\xaf\xb4\x4d\x3f\x02\
+\x4a\xd8\xa8\x4e\xc3\x3d\xe7\xcc\x51\xb8\x45\x94\xcb\x54\x9d\x72\
+\xf2\x51\x4e\xa3\x55\xec\xbd\x64\xf2\xd8\x5a\x89\x16\x3a\xce\x95\
+\x0d\xf1\xaa\x6b\x5e\x54\x2b\x54\x7a\x36\xd4\x4c\xbe\x5b\xd2\x42\
+\x4e\xd1\x4c\xe8\x97\x36\xee\x0b\x05\x90\xac\x86\xc8\x82\x47\x8c\
+\xf2\xdc\x38\x8e\x6c\x4c\x46\xdd\x3d\xe0\xb1\x69\x8f\x87\x6f\xc4\
+\x89\x2c\x2a\x17\x10\x55\x70\x08\xaa\xe0\x21\x59\xff\x49\x35\xf7\
+\x99\xfd\x02\xe0\x97\xa1\x38\x10\x42\xc5\x87\x62\x02\x0e\xae\x01\
+\x80\x49\x97\x3e\xb2\x49\x8c\x3e\xa6\x46\xcb\x21\xfa\xa7\xc9\x4d\
+\x4d\x12\x24\x6a\x42\x3b\xac\x26\xba\xd1\x1a\xa5\x5f\xdd\x1f\xab\
+\xd9\x18\xdb\x56\xd5\xb6\x4d\x76\x56\x4e\x7c\x2e\x3b\x5c\xcc\xe0\
+\x0e\x8a\xc5\x59\x22\xe5\xa5\x1b\x77\xb2\xc4\xc2\x14\x9c\x1b\x2e\
+\xa1\x86\x12\xc7\x14\x48\x32\x69\x22\x2e\xda\x28\x19\x7c\x22\x9d\
+\x44\x89\x08\x2b\x4a\x5b\x63\x40\xce\xe3\x25\x26\x3f\xb3\x12\x35\
+\xc3\x68\x55\x2a\x7c\x0f\x47\x33\x08\x12\x7c\x7c\x42\xd8\x30\xbb\
+\x70\x78\x93\x5f\x91\x0c\x1a\x55\x4a\x44\x77\x1a\x64\x40\x55\xeb\
+\x45\xa5\x02\xdf\x4f\x13\x3d\x19\x47\x10\x8b\x20\xa2\x95\xb6\x3c\
+\x71\xe4\x46\xb9\x31\x89\xa3\x16\xe9\x8e\xc0\x87\xe7\x77\x8f\xb0\
+\xfc\xb1\x3e\x7e\xf4\x9b\x03\x1c\x7f\x4c\x2d\x5f\x7a\xff\x14\x5a\
+\x1b\x73\xd5\x1d\xcf\x38\x1d\x1c\xb7\x73\x8d\xd0\x4b\x9b\xf0\x24\
+\x54\x09\x67\x25\x75\x30\xd3\x28\x44\xa8\x56\x2a\xa3\xb6\xc0\x59\
+\xef\xe7\x3c\xa5\xb1\x60\x18\x29\x8b\xc5\xa8\xac\x8c\x02\x5c\xb6\
+\x91\x89\xea\x13\xa8\xf4\x33\xb2\xc9\xb6\xb0\x06\xcf\x97\x4f\xb4\
+\x3e\x9b\x17\xff\xbb\xf9\x81\x91\xa5\x0b\xff\x0f\x87\xdc\xe9\xfb\
+\xe5\x95\x87\x2b\x6b\x44\x74\x35\xca\xc5\x8a\x16\xaa\xdb\x11\x0b\
+\xff\x17\xdb\xf9\x33\x29\x09\x40\xd5\x49\x07\xa7\xb7\x3e\x2b\x20\
+\xea\xb0\x33\x8a\xa5\x80\x2f\xfe\x64\x0f\xdf\xbd\x67\x3f\xfb\x7a\
+\xd3\x1c\xc7\x86\x6d\x23\xfc\xfa\xd1\x7e\xae\xbb\x70\x1c\xef\xbc\
+\xa4\x95\x33\x8e\xaf\xcf\xa4\x49\xc5\x61\x12\x89\x43\x23\xb7\xfd\
+\x91\x8c\x6b\x9b\x64\x11\xdd\x34\x64\x1a\x39\x90\x61\x30\x44\x0b\
+\xc0\xe9\x18\x0a\xed\xcd\x86\xfe\xe1\x1c\xbe\x19\x65\xf2\x33\xbe\
+\x80\x2d\xee\x8e\x39\xaa\x88\xa6\x12\xb3\x57\x16\xd1\x1e\x51\x7a\
+\x06\x0d\x65\x6e\x06\x3e\x75\x68\x02\xf0\xb2\xa8\x43\xe3\x27\xe6\
+\x36\x7a\xa2\xf7\x80\xee\x11\x8c\x46\x1d\x93\x5d\x47\x50\x63\xda\
+\xb7\x65\x0e\x12\x04\xce\x44\x36\xd5\xf6\xe0\x23\xa7\xce\x81\x8e\
+\xd3\xcf\x88\xc5\xf8\xa9\xc9\xc1\xa3\x1b\x07\x93\x84\xca\x29\xc7\
+\xd5\xf1\xa9\x3f\xe8\x22\xc5\x3f\x00\x00\x15\x28\x49\x44\x41\x54\
+\x6b\xe7\x0b\x37\x76\x50\x5b\x23\x7c\x77\x79\x0f\xef\xfc\xdc\x4e\
+\xf6\xf4\x96\xd3\xb8\x5a\xad\x95\x29\x99\x02\x27\xc9\xf8\x23\x68\
+\x05\x78\x14\xa7\x92\xd3\x8a\x58\x75\x34\x84\x4a\x26\x9c\x8b\x12\
+\x47\x62\x91\x54\x26\xd4\x85\xce\xe0\x68\x93\xef\x12\x4d\xb5\x22\
+\xe9\x44\x35\xa7\x3b\x5a\xfd\x61\x62\x5a\x8d\x80\x0f\xa6\x5c\x68\
+\xc0\xe7\x93\x87\xde\x46\xfe\x65\x09\x80\x9c\xf5\xbb\x92\x60\x7e\
+\xe5\xa1\x9b\x01\x23\xe0\x70\x01\x24\x63\xcf\x53\xed\xa5\x76\xe2\
+\xde\xf5\xdc\x13\xf4\xcf\x58\x3e\x81\xcd\xdb\xd3\xc4\xe6\xaf\x7b\
+\xae\xc8\x70\xc9\x60\x0c\x7c\xe9\xfd\x53\x78\xf0\x8b\xc7\xf1\xc1\
+\x37\x4f\xe4\x86\xcb\xc7\xb3\xfd\x8e\x39\xbc\xf7\x8a\x56\x76\x75\
+\xfb\x2c\x7d\xb0\x97\x94\x0e\x60\x52\x5b\x8a\x49\x4a\xc4\x24\xeb\
+\x83\x68\x86\x73\x90\xf0\x1d\x53\x6e\x81\x88\x66\x4a\xc3\x2d\xa0\
+\x48\x1c\x74\xdb\xd2\x0a\x4a\x7d\x0d\xb4\x37\x07\x2e\xa1\xa1\x6a\
+\xce\x24\xeb\xf1\x8f\x42\x09\x8b\x5f\x17\x92\xf2\x6c\x41\x47\x72\
+\x39\x6f\xf0\xd8\x02\xfe\xe1\xec\xff\xf2\xb2\xc9\x83\xad\x97\xae\
+\xd9\xac\xaa\xcf\x09\xd1\x4e\x08\x31\x48\x42\x46\x1b\x44\x7f\x9e\
+\x98\x04\x9e\xad\xf4\x6e\xb5\x22\x37\x2f\x49\xcf\x7d\x71\xb7\xd4\
+\x00\x86\x4a\x86\xc7\x36\x15\x99\xfd\xba\x1a\x16\x9f\xdc\x98\x38\
+\x8c\xb1\x20\xbd\xe7\xb2\xf1\xb4\x34\x78\x7c\xf3\xee\x1e\xb6\x75\
+\x95\x1c\x9a\x98\xdd\xc0\xc1\x9d\xc8\x38\x72\x93\x6a\x18\x4c\x4a\
+\x0d\x23\xeb\xbe\x48\xc6\x86\xa7\x44\xb6\x04\xa0\xb2\x66\xa2\xbd\
+\x49\xf1\xac\xf2\x35\x07\x7a\xd6\x4a\x6c\x20\x7d\x4d\x33\x4e\xa1\
+\xc5\x56\x56\x54\xc2\x3b\xe5\x0b\xda\x2f\xc6\x74\x1f\x37\x8e\xa1\
+\x43\x29\x08\x39\x64\x01\x88\x6e\xd8\xd3\x28\xfd\x9e\x67\x43\x02\
+\x2e\x7f\x50\xd4\x4e\xaa\xd9\x90\x6a\x06\x84\xc9\xb6\xdc\x4e\xf8\
+\x82\x06\xb7\x12\x41\x39\xef\xc4\x46\xe6\xcf\xac\x63\x4b\x67\x89\
+\xfd\x7d\x3e\x26\x16\xba\x28\xf6\x9e\x3b\xad\x86\xb7\x2e\x6e\xe6\
+\x85\xdd\x65\xbe\xf4\xb3\xee\xa8\x82\x38\x65\xd0\x8a\x83\x55\xaa\
+\xe3\xf8\x25\x02\x28\x36\x63\x38\x3b\xc1\x69\x58\xe9\x84\xb0\xea\
+\xc2\x06\x9a\xc9\x7d\xc4\x7e\x46\x4b\xad\x66\x38\x13\xee\x04\x8b\
+\x03\x49\xeb\x4b\xc4\xe7\x9a\x5e\x8a\xa0\x02\x03\x8a\x76\x8a\x9a\
+\xee\xcd\x5b\x0f\xaf\x5f\xc0\x21\x09\x40\xde\xd3\xdf\x08\xe6\x71\
+\x55\x13\x24\xa0\x85\x6d\xbb\xa2\xdd\x30\x30\xc6\xcd\xa2\x69\x95\
+\x5c\x7c\x02\x7c\x98\x8c\x2f\x41\x02\xd5\xc6\xb6\x58\x50\x3e\xf4\
+\x96\x89\x4c\x68\xce\xf1\x7f\x96\xee\x63\x47\x57\xd9\x12\x36\xc3\
+\xee\x6e\x9f\xa7\x5e\x08\x69\x70\xe7\xcc\xad\x23\xe7\xc5\xac\xe2\
+\x51\xb2\x7b\x9a\xb1\xb1\xd6\xc3\x54\x0d\x1b\x87\x38\x92\x64\x13\
+\x2d\xa1\x76\xc0\x21\xb1\xd8\x50\x9a\x02\x48\xaa\xd0\xd1\x6c\xc8\
+\x7b\xc6\xfd\xde\x0a\xd6\x94\x66\x30\x56\xaa\xfb\x02\x51\xef\x38\
+\x35\x1a\xa8\x30\x24\xc2\x00\xbe\x8c\x1c\x3f\x72\x78\x02\x70\x48\
+\xfb\xed\xfe\xe3\x87\xa7\xed\x1b\x19\x34\x13\x81\x33\x04\x1a\x6d\
+\xcc\x3e\x2a\x18\xb2\xf8\x78\x95\x61\x13\x16\xb8\x13\x86\xd9\x16\
+\x6b\x17\x97\xa2\x2d\x19\x15\x38\xbd\xad\x86\x91\xb2\xe1\x7b\xcb\
+\x7b\xf9\xb7\x15\x7d\x14\x47\x94\x13\x67\xd4\x72\xfb\xb2\x6e\x6e\
+\xbd\xb3\x9b\xa7\x5e\x18\xc1\x0f\x60\xc3\xd6\x12\xcb\x1e\x1d\xe4\
+\xae\x55\x03\x5c\xb3\xb0\x29\x51\xe7\x69\x38\x97\xc9\xe2\xd9\x0e\
+\x80\xda\x85\xae\x99\x48\x41\xdc\x95\x29\x99\x1a\x85\x94\x22\x66\
+\x9b\x0f\xc5\xcb\x29\x35\xa2\x0c\x95\x61\xa8\x24\x2e\x0b\xa9\x4a\
+\x0e\xc0\x0e\x7b\x2b\x2a\x9e\x62\xef\x44\x54\x3d\xd1\x40\xd0\xfd\
+\x39\x4f\xd7\xfa\x5a\xde\x30\xa3\xc8\x81\x4f\xad\x39\x74\x21\x38\
+\x64\xb7\x61\xf0\xde\xd3\x66\x94\x4a\xe6\x67\x28\x0b\x4c\x65\x89\
+\x4a\x95\x36\x52\xd9\x10\x4f\x1c\x7d\x29\x99\x46\x02\xa8\x56\x1a\
+\xde\x08\x9f\x1f\x2c\x19\x6e\xb8\xa5\x93\x5f\x3f\x76\xf0\xe6\xd8\
+\xb5\x05\xe1\xce\xbf\x9b\xc2\x05\x27\xd5\xb9\x6c\x5e\x67\x05\x57\
+\xcb\xeb\x57\xe1\x25\x66\x26\x48\x47\x2b\x85\xd3\x2a\xb9\x8e\x48\
+\x7b\x74\x0d\xc2\xfa\x5d\x39\x37\x84\xd4\x0c\x54\x9d\xf5\x05\xaa\
+\x20\x82\x61\xa4\x69\xd4\x43\x47\xf2\x9e\xd9\xe4\x09\x3f\xa8\xd3\
+\xd2\xd2\xb3\xf2\xec\x78\xb9\xf5\x80\x87\x6d\x02\x00\x1a\x97\x3c\
+\xbe\x15\xd8\xa1\x09\x36\x6f\xa1\x76\x8a\xa3\xe6\x34\x1b\xda\x54\
+\x81\x81\x55\xa9\x92\x0d\x8b\x42\x35\x49\x72\x12\x20\x50\x97\x17\
+\xbe\x72\x53\x07\x8b\xe7\xd7\x3b\xb8\x7f\xfc\x38\x9f\x83\x33\x8e\
+\xaf\xe5\xef\xdf\x31\x81\xfb\x3f\xfb\x3a\x16\x9e\x50\x97\x56\xa4\
+\x19\x32\xd8\x03\x95\xc0\x8e\xb8\xa0\x94\x58\x49\x2a\x91\x8c\x90\
+\x4b\x25\x1b\x4e\xe2\x42\x58\x3b\x42\x8a\x6c\xca\xc4\xfa\x51\x57\
+\x74\x95\xc9\xcf\x3c\xd6\x8c\xc3\xac\x51\xd3\x52\x23\x7d\x39\x09\
+\x76\xd5\x0e\x33\xc0\xa7\x0e\x6f\x27\xb1\xc3\xea\x13\xa8\xaa\x2b\
+\x05\x5d\x8c\xd0\x6a\x54\xdc\x14\x6c\xb5\x0a\x2c\x47\x8a\xd3\xf0\
+\x49\x93\x7a\x0d\x5b\x00\x6c\xa6\xb1\x49\x49\x24\xc0\xea\x67\x87\
+\xf8\xeb\x6f\xed\xe1\x89\x2d\x69\x3f\xcb\x90\x74\xa9\x94\xca\xca\
+\x67\xdf\x3d\x89\x3f\xbb\xb8\x25\x13\xb7\x6b\xda\x30\x42\x4d\x25\
+\x7b\xc8\xe6\x2f\x4a\x96\x9b\x98\xa9\x21\xc8\x92\x4c\x92\x53\xa9\
+\x55\x31\x94\x41\x08\xa3\x45\xe1\x01\xe3\xeb\x03\x7a\x8a\x1e\x95\
+\x45\x1e\xd5\x60\xe2\x51\xf2\x25\xe1\xbd\x33\xa0\x45\xf1\x74\x1f\
+\x81\x1e\x98\xd2\xc4\xc8\xe1\x44\x00\x87\xa5\x01\x00\x1a\x6b\xe4\
+\x6e\x94\xc7\xd5\xa0\x9e\x13\xd6\xe1\x38\x2d\x36\xb9\x42\xac\x88\
+\xa1\x32\xa9\x63\x63\xf6\x26\x93\xec\x49\xc3\xc2\xd3\x66\xd7\xf3\
+\xc1\x3f\x1e\xcf\xac\x29\x05\x3e\xf3\x67\x93\x58\x75\xdb\xb1\x6c\
+\xf9\xf6\x2c\x96\xff\xe3\x31\x0c\x0c\x2b\xff\x77\x59\x4f\x1a\xc2\
+\x89\x4b\x48\x4d\xf2\x09\xaa\x4e\xbd\x87\x58\x4e\xaa\x53\xe4\xaa\
+\x6e\x09\x8a\x54\x0d\x63\x33\x66\xcf\x52\xef\xd9\x2c\xa2\xe4\x94\
+\x8e\x26\xa5\xe0\x99\x2a\x55\x47\xea\xe4\x00\x88\x98\xc6\x55\x20\
+\x60\x8d\x21\x72\xa0\x24\x62\xfa\x14\x33\xd4\xd6\x74\xf0\xc9\xd7\
+\x51\xcc\xfd\x61\x69\x80\x9a\x25\xd3\xd6\x17\x97\x6d\xfd\x25\xca\
+\x69\xaa\xb4\x52\x2d\xb5\x29\xea\x84\xcd\x6e\xac\x2c\x64\xde\xb2\
+\x6c\x6b\x58\xcf\x97\xd6\x17\x44\x39\x79\x03\x35\x79\xe5\x2d\x0b\
+\x9b\x79\xcb\xc2\x26\xe7\x96\xcc\x9e\x5a\xc3\xc9\x33\x6b\x78\xea\
+\x85\x12\x0f\x6f\x18\xe2\xbc\x13\xea\x92\xfe\xbf\xc9\x87\xd5\xc6\
+\xf9\xd5\xb9\x2d\x9a\x61\xf7\xaa\xe2\xc4\xf5\x15\x64\x17\xa8\x42\
+\xe0\xd0\x2c\xa6\x6c\x55\xbf\x85\xe5\xea\xe3\x1b\x0d\xad\x43\x1e\
+\xfb\x06\xa8\x8a\xef\xdb\x9f\x37\x4e\xa6\xd1\x11\x12\x0d\x99\x83\
+\x5a\x56\x43\x49\x95\xe0\xc5\x81\x83\x0b\xc0\x68\x1a\xe2\xb0\x34\
+\x80\xc8\x2f\x4d\x53\xbd\xb7\x54\x24\xac\x23\x94\x04\xd6\x35\x91\
+\x0d\x4c\x59\xb8\x62\x6c\x67\x27\x86\x7a\xad\xac\x61\x12\xfb\x9a\
+\x14\x4a\x8e\x6b\xf2\xe3\x1a\x01\xcd\x86\x44\x24\xdf\x19\x6a\x0c\
+\xc3\x47\xae\x1e\xcf\xa4\x16\x8f\xcf\xdf\xd9\xc3\xe6\x17\x4b\x29\
+\x7f\x40\x4d\xa6\xf9\xb3\xba\x90\xb4\xdd\xfb\x44\xb3\x34\x35\x4d\
+\x21\x6d\x32\x59\x4a\xa5\x0a\x25\x4c\x12\xe4\xb0\x82\xee\x26\x50\
+\x9f\x87\xc9\x4d\x26\x63\xdf\x6d\x18\x18\x0b\x06\x27\x43\x92\x49\
+\x7b\xb6\x44\xf5\x12\x81\xa7\xda\xef\x79\xf4\x1d\x38\x82\xed\x7e\
+\xbc\xc3\xfd\x60\xae\x51\x76\x63\xb4\x53\xb2\x71\xaa\xb1\xf2\xe9\
+\x6a\xe5\x6a\xad\xb8\x58\x47\x59\x35\x0e\x13\x48\xb2\x04\x89\x0c\
+\xfb\xc6\x0e\xbf\x14\x2e\x39\xad\x9e\xf7\x5e\x36\x8e\x07\x9e\x2a\
+\xf2\xed\x7b\xfb\x53\x9b\x9c\x90\x3a\x32\xc4\x0c\xc9\x10\x3a\x9c\
+\xef\xb4\x42\x56\xa9\x04\xe5\xb2\x66\xc1\x4d\x0f\x4b\x62\x0a\xc4\
+\xc9\x4e\x2b\x9e\x40\x73\x8d\x8e\x62\xef\x33\xd4\xb3\x2a\x02\x6a\
+\x35\x2e\xf0\x3d\xd1\x1e\x0f\xba\x08\xe8\x3d\xf1\x53\x87\xdf\xea\
+\xff\xb0\x05\x80\x73\x8e\x33\xe2\xe9\x3d\xa8\xf6\xc8\x28\x54\x26\
+\x27\x19\x44\x86\x4f\xef\xc8\x80\xad\x9d\x4c\x0a\x1f\x2b\x55\x70\
+\x04\x3b\x57\x90\x2e\xdd\x96\x06\x8f\x0f\x5e\xd5\x02\xc0\xd7\x7e\
+\xdd\x97\x6c\xba\x20\x99\xd8\x54\x9c\x0d\x1d\x33\x31\x79\x45\xb8\
+\x97\x31\xa2\xea\x46\x2b\x4e\x07\xf0\x04\x75\xb4\x1c\xc9\x0a\x16\
+\xb2\x52\xc8\x29\x13\xea\x8d\xeb\xf8\xaa\x55\xce\xe6\xd0\xd7\x33\
+\x35\x16\x1a\x77\x31\x50\x5f\xd0\x3e\xd4\xec\xf5\x46\x8e\xac\x59\
+\xf4\x61\x0b\x80\xc8\xbf\x69\xce\x93\x7b\x44\x58\x13\xe1\xd2\x16\
+\x16\x5e\x59\x7b\x27\x55\xb8\x7f\x88\xb1\xa0\xdf\x30\x17\x60\x03\
+\x2c\x0e\xd3\x26\xc3\x16\x4a\xa5\xc7\x24\x94\xb2\xa6\x3a\x8f\x77\
+\x5e\xd4\x84\x31\xf0\xb5\x5f\x0f\x30\x5c\xca\x76\xfb\x70\x27\x32\
+\x09\xa9\x6c\x94\x48\xb3\xdc\x7f\x17\x30\xca\x90\x32\xac\xf4\xb1\
+\xb5\x53\x58\x86\x78\x92\xf6\xcd\x53\x6a\xf2\xc2\xe4\x26\xa5\x90\
+\x33\xee\xa2\xc1\x4d\x80\x55\xb6\x84\x89\x72\x2c\x60\x44\xb4\xe4\
+\xa1\x83\x88\x8e\xb4\xd6\x1d\xd9\x46\xd2\xde\x91\x7c\xb8\xb1\xbd\
+\x66\xbd\xc0\x32\x54\x07\xe2\x55\x1e\xdb\x4d\x9b\xdf\xef\xc2\xaf\
+\x26\x31\x0f\x62\x43\xfa\xd9\x22\x0c\x2b\x53\xe8\x20\x66\x51\x48\
+\x15\x4f\x9c\xad\x61\x40\xf9\x1f\x97\x37\x73\xfa\xec\x1a\xfe\xe5\
+\x57\xbd\xac\xd8\x50\xc4\x2d\x3c\xb5\x6e\x7a\x42\xf9\x32\xa9\xd7\
+\xa5\x54\xf4\x37\x8a\xc9\x24\x95\x4c\x24\xb5\xe8\x66\x89\x71\xce\
+\x24\xbe\x70\x34\x5b\x5c\x8c\x32\xa1\xde\x30\xae\x4e\x47\xef\x0c\
+\x6d\x9b\x5a\x31\x96\xc2\x53\x5b\x6e\xcb\x28\xc5\xa6\x9a\x83\xda\
+\x7f\xb9\xf9\x25\xe6\xf9\x88\x04\x40\xce\x78\xa2\xec\xe5\x75\x99\
+\xaa\xf6\x25\x76\x33\x2e\xa8\x8c\x9d\xba\x6c\xde\xdd\xc6\xdb\x93\
+\xe4\x4f\xaa\x05\xec\x24\x90\xc3\xf7\x57\x4b\xf5\xdb\x1a\x40\xdc\
+\x82\x92\x79\xc7\x16\xf8\xe8\x9b\x5b\xd8\xb6\x27\xe0\x8b\x3f\xef\
+\xcb\x10\x3d\xac\xc9\xb3\xf0\x87\xa8\xea\x8f\xe1\xb2\x61\xa8\x64\
+\x32\x95\x47\x16\x40\x24\x54\x9a\x31\x2b\xb2\xd0\x4c\xdb\xdc\x6c\
+\x28\x18\xdf\xf0\xc6\x1a\x65\x7c\x9d\x3a\xce\x65\xb6\xa0\x26\xbe\
+\x07\x61\x13\xf1\xc0\x76\x1a\x55\x44\x87\x3d\xd1\x9e\x5a\x8f\xbe\
+\x69\x4d\x94\x0e\x82\x01\xe8\xa7\x5e\xa2\xb1\xf4\x11\x09\x00\x40\
+\x8d\x68\x9f\x27\xba\xb5\x92\x82\x1d\x2b\x44\x63\x91\x3f\x52\x4e\
+\x7e\xa2\x0d\x2a\x30\x69\x37\xb3\x58\xa1\x26\x45\x33\xc4\x52\x4d\
+\x9c\x3c\x05\xf2\x1e\x5c\x75\x56\x3d\x33\xda\xf2\xac\x78\x7a\x84\
+\x4d\x3b\x4a\x19\xc4\xcf\x4e\x32\xa5\xc5\x20\xdf\xb8\x7f\x90\x8e\
+\xeb\xf7\xf0\xf7\x3f\xea\xa7\x6f\x38\xe5\x12\xa8\x58\x0e\x9a\xda\
+\xd7\xee\x62\xf9\x2a\x36\x90\x65\x09\x86\xb8\xbc\x40\x13\x5d\x76\
+\x5d\x81\xaa\x79\x00\x27\x4d\x5e\xc1\x3e\x8e\x55\x09\x43\x18\xb3\
+\xbb\xec\xb3\x8b\x47\x19\xfe\x83\x99\x00\x80\x42\x43\x6e\x40\x94\
+\x5f\x79\x68\x77\x5a\x9e\x95\x4e\x38\x4e\x43\x85\xc4\x8e\x39\x37\
+\x25\xd9\x12\x53\x2b\x8b\x44\x63\xad\x92\x24\x8e\x34\x55\xff\xa1\
+\x7c\x89\xd5\x9a\x36\xd5\x06\x1f\x7e\x53\x88\x15\x7c\xe1\x67\xfd\
+\x11\x8d\xac\xb2\x56\x20\x71\xf6\x02\xc3\x73\xbb\x02\x4a\x3e\xfc\
+\xeb\xc3\xc3\xdc\xbb\x76\x24\x09\xe4\xb3\x05\x20\x49\xd6\x2f\x93\
+\x3f\x10\xeb\x5a\xc5\x12\x4a\x89\xd1\xc7\x4c\x1d\x63\x63\x8d\x61\
+\x7c\x43\xe0\x82\x66\x96\x0f\x20\x15\xbe\x80\x02\x46\x05\x53\xf6\
+\xc4\xf4\x01\xbd\x05\x3d\xf2\x8d\xbe\x8e\x58\x00\xb8\x60\x5a\xd1\
+\xf3\x74\xb9\x51\xf3\x24\xaa\xea\x55\x71\x6a\x04\xe3\xb2\x6e\x22\
+\x88\x57\x34\x8d\xb3\x53\x87\xc9\x38\x4e\x9f\x64\x35\x84\x55\x80\
+\x81\xd8\x1a\xc6\x38\x29\xdb\xab\xcf\xa9\xe7\x1d\xe7\xd7\xf3\xf3\
+\x55\x43\xfc\x78\xc5\x60\xf2\xbe\xed\x97\x88\x42\xb9\x6c\x78\xec\
+\x39\x9f\x03\x83\xd1\x06\x92\x43\xca\x2f\x1f\x1b\x49\xaf\x4b\x2c\
+\x36\xb0\xb8\x45\xa6\xd9\xfd\x84\x9c\xc8\x41\xdc\x4d\x22\x12\xf2\
+\xab\x86\x06\xa7\x21\x0f\x93\x1a\x94\x9a\x9c\x56\x68\x3f\xd1\xca\
+\x72\xba\xb0\x7e\x25\xa6\xdd\xe1\x7b\x50\x1c\x56\xca\x2c\xfd\x03\
+\x3a\x81\xa1\x27\x7c\xb7\x36\x8c\xf3\x36\x78\x1e\xf7\x08\x5a\x54\
+\x35\x19\x89\xb6\xe8\x55\xaa\x88\x98\x8a\x1c\xb7\x54\xa3\x5c\x3b\
+\x5c\x39\xd7\xee\x4b\xe2\x12\x64\x53\xc7\x26\xd1\x02\x93\x9a\x73\
+\x7c\xf8\x4d\xcd\x28\xf0\xe5\x65\x03\x0c\x97\xdd\x8d\xa1\xe2\xa8\
+\xaa\x90\x13\xae\xf8\xdf\xdd\x7c\xef\xc1\x50\x93\xfe\xf6\xd3\xad\
+\x7c\xe7\xa6\x16\x2b\xb9\x85\x53\x49\x44\x06\xf2\xae\xa0\x71\xa9\
+\xdb\x86\xbe\x82\x22\x12\x69\x73\xcf\x83\x89\x8d\x4a\x63\x4d\xb5\
+\x7b\xe1\x4e\x7e\x46\x13\xf8\xa8\x0e\x09\x0c\x79\x3e\xe6\xe5\xb7\
+\xde\x7e\xa5\x34\x00\x20\x17\x3e\x33\xa4\x81\xfe\x07\xaa\x43\x59\
+\xe0\x44\xac\xba\x3f\x07\x2a\xce\xa6\x57\xad\x1f\xec\xf2\xf3\xb2\
+\xd5\x40\x90\x76\xf3\xaa\x92\x4e\xb5\xbe\x68\xde\xb4\x02\x6f\x3a\
+\xb3\x9e\xce\x6e\xc3\x27\x7e\xd8\xcf\x4d\x5f\xef\xe1\xde\x27\x86\
+\x01\x65\xcb\xae\x32\x9f\xf8\x61\x3f\xa7\xfc\xd5\x3e\x86\x46\xe0\
+\xd8\x49\x1e\x9f\xbc\xb6\x81\x8e\x56\x89\x6e\x8a\x54\xa6\x66\xb5\
+\x5a\x22\xdd\x0d\x35\xd3\xc2\x58\x37\x3f\x20\x19\x1c\x44\x50\x9a\
+\x6a\xa0\xa1\x60\x67\x1e\xb3\xed\xcb\xd2\xe7\x39\x31\x71\x42\xd2\
+\x08\xf4\xe7\x60\xcf\xc2\x0e\xfa\x0e\x96\x02\xd6\x83\xa4\xfc\x8f\
+\xda\xae\x61\xb9\x9c\x74\xab\xd1\xcd\xa8\x4e\x8a\xaf\xdd\xd3\x4c\
+\xd7\x10\xbb\xb9\x93\x85\x15\x54\x10\x35\x24\x2e\xfa\xcc\xb6\xa7\
+\x0b\xed\x6f\xb8\xf7\x2f\x14\xf2\x76\xd7\x2f\x17\x29\xec\x1f\x32\
+\xdc\xb3\x76\x84\x7d\x7d\x21\x93\xf8\xff\xfe\x7a\x10\x80\xff\xf7\
+\x9b\x22\xa7\xcc\xc8\xf3\x8e\x45\x75\xdc\xbf\xae\xc4\xe6\x5d\xe1\
+\xfb\x2d\xf5\xc2\xe2\xb9\x05\xa6\x8c\xf7\xaa\x10\x34\x6c\x1f\xc0\
+\x6a\x5c\x39\x4a\xb6\x93\x0c\xc0\xe4\x34\xcc\xb2\xb6\x7f\x15\x31\
+\x34\xd6\x86\x5b\xb7\x27\x5b\xf3\x68\xf5\xcc\xa0\x51\x41\x30\x81\
+\x87\xf6\x8a\x61\x97\xe4\xe8\xa6\x78\x70\x1f\xe0\x60\x59\xc2\xa3\
+\x26\x00\x0d\x75\xd2\x39\x30\x18\xdc\x0b\xcc\xf1\xc2\x0d\x22\x9c\
+\xb4\x6f\x76\x65\xb8\x08\x9c\x7b\xe3\x54\x5d\xb6\xbc\x7d\x63\x7c\
+\x1f\xae\xf8\xd4\x1e\x1e\x79\xb6\xc4\xd7\xde\x37\x9e\xb7\x9c\xdb\
+\x40\x7d\x8d\xab\x55\x14\xa5\xbe\x4e\xf8\xee\x03\x83\x3c\xb0\xbe\
+\x54\xf1\x9d\x4f\x6e\xf5\x79\x72\xeb\x00\xf9\x1c\x7c\xf7\xa6\x66\
+\xce\x39\x3e\xcf\xf4\xc9\xb9\xcc\xca\xab\x8c\xe9\x53\x8c\xdf\x66\
+\x05\x69\x95\x6e\xa9\x99\xcc\xa1\x55\xbf\xe8\xe6\xfa\x85\xf1\x75\
+\x86\x96\x3a\x8f\x9e\x62\x15\x1e\x80\xab\xe1\x34\x85\x81\x19\xc8\
+\x09\x83\x1c\x41\x0e\xe0\xa8\x0b\x80\x5c\xf6\x6c\xcf\xe0\xcf\x67\
+\xde\x6b\x02\xb9\x48\xd1\xc5\x9e\x88\x98\x08\xa1\x93\xcc\x8f\xb6\
+\x6f\x9a\xa8\x9d\x6d\x8b\xf7\xee\x33\x51\x03\x49\xad\x60\x54\xe7\
+\x3d\xb8\x64\x41\x1d\x1b\xb6\x97\xf9\xf3\x7f\x39\xc0\x97\x97\xf5\
+\xe3\x07\x30\x6f\x5a\x81\x0f\x5f\xd5\xc8\xca\x8d\x25\xba\x7a\x03\
+\xae\x39\xa7\x8e\xdd\x07\x5e\x9a\x20\x33\x63\x72\x8e\xd3\x66\xe6\
+\x99\x3e\x29\xe7\x66\x04\x35\xdd\x0d\x07\x75\xbc\x38\xa7\x8a\xd8\
+\xe9\x25\x14\xf7\x3b\x4c\x76\x25\xcb\x08\x46\x06\xd7\x88\x23\x83\
+\xc6\x1a\x61\x62\xa3\xd2\x3f\x0c\x81\x4a\xc5\xea\xb7\x9b\x6c\xe4\
+\x14\x93\xf3\x18\x11\x18\x36\x65\x0c\xfd\x87\x43\x04\x7f\x85\x04\
+\x00\xa0\xa1\xde\x7b\x62\x68\xc0\x3c\xac\x70\xb6\x1a\xad\x15\xd1\
+\xcc\xca\xc8\x74\x7b\xd4\x34\x45\xac\x71\x5a\x36\xb1\x11\xa6\x22\
+\x11\x13\x87\x70\x7f\x7a\x7e\x03\x1b\xb6\x97\xf9\xf9\xaa\x22\xbb\
+\x0f\x18\xf6\xf5\x1b\x9e\xe9\xf4\xf9\xe9\x23\xe9\x36\x85\x5f\xfa\
+\xe5\x60\x95\x6a\xe1\x70\x5c\xba\xa0\xc0\x6d\xef\x6e\x62\xc6\xe4\
+\xbc\xd5\x5f\xc8\xcd\x11\x25\x4c\x24\xc8\x34\x9a\x34\x4e\x13\x49\
+\xb5\x19\x4c\x31\x4e\x20\x6e\xa2\xc8\x6e\x68\x65\x95\x1d\x86\xfd\
+\x86\x3d\x98\xdc\xa8\xec\xea\x15\x86\x4a\x64\x68\x62\x69\x0e\x40\
+\xd2\x75\xe2\x8b\x47\x3f\x65\x06\xd8\x7d\xe4\x1a\xc0\x3b\x9a\x02\
+\x20\x97\x3e\x57\x54\xd5\x67\x51\x1d\xc9\x52\xc4\xb2\x0e\x90\x18\
+\x93\x84\x81\x48\x1c\x2f\x9b\x0a\xfa\xb8\x24\xb5\x07\x69\xde\xe0\
+\x98\x89\x1e\xdf\xfc\x8b\x56\xf6\x7c\xa7\x83\xa7\xbe\xd4\xc6\x4d\
+\x97\x37\xf0\xa3\x8f\x84\xb4\x84\xf9\xc7\xe6\xf9\xdb\x6b\x1a\xb9\
+\xeb\x6f\x5b\x99\xd4\x2c\xcc\x3f\x36\xcf\x47\xae\x6a\xa0\xa3\xd5\
+\xc3\x13\x58\x30\x23\xcf\x82\xe9\x79\x26\xb7\x78\x69\x31\xab\xa5\
+\xf2\x13\x3a\xbb\x31\xa9\x13\xaa\x36\x24\x2d\x56\x44\x62\xac\xd4\
+\xb6\x6d\x1a\xc4\x85\x91\x2d\x2d\xe7\x59\xed\x6b\x23\x8a\x3f\x8d\
+\x35\x50\xb0\xca\xeb\xab\xb0\x84\x24\x12\xcb\xb2\x51\xf6\x63\xe8\
+\xf2\x46\x18\x3c\xd2\x10\xd0\x15\xb4\xa3\x34\x86\x7f\x3a\x7d\xa1\
+\x1f\xf0\x45\xc2\xbd\xed\x44\xed\x24\x90\x58\xce\xbd\xdd\x7b\x5e\
+\xdd\x56\xae\xea\x76\x97\xaf\x54\x03\x2a\x19\x60\x25\x7c\xbd\x58\
+\x52\xea\xf3\xa9\xca\x2d\xf9\x50\x9b\x0f\x6f\xec\xae\x1e\x43\x63\
+\x0d\x34\xd7\x4b\xd4\xc6\xb6\xd2\xd1\xd3\x6c\xb7\x10\x9b\xea\xe6\
+\x24\x88\xb4\x22\x1c\x74\xd2\xd3\xd5\x4a\xd6\x71\x77\x39\xcb\x76\
+\x20\x7b\x7e\x1f\x6c\xef\x8e\x9d\xc1\x6a\xed\xea\x30\x1e\x1c\xa8\
+\xf5\x58\x99\x83\x6f\x9d\x35\x95\x87\xe4\x43\xf4\xbd\xaa\x34\x00\
+\x40\xa1\x20\xcf\x78\xc2\x03\x82\x1e\x10\xab\xa9\x83\x3a\x99\x38\
+\xb7\x0d\x9b\xc3\xb9\x93\x34\x74\xa4\xa2\x4b\xa7\xd5\x55\x4c\x5d\
+\x6a\x99\x28\xa1\x33\x68\xb5\x30\x8a\x27\x1f\x81\x29\xad\x1e\xe3\
+\xea\x43\x2d\xe0\xf6\x15\x4a\x9b\x3e\x54\xb2\x98\x2b\x19\xbe\xa9\
+\x52\xab\xbc\x3e\xa9\xe2\xd8\xda\x35\x0e\xae\x30\xb8\x02\x34\xb1\
+\xd1\xd0\x54\x8b\x05\x8f\x67\x29\x6a\x28\xca\x48\xa0\xf4\xa2\x94\
+\x29\x1e\x9d\xc5\x7b\xd4\x05\x20\x77\xd5\xd6\xfd\x9e\x98\x5f\xa2\
+\xba\x59\x88\x77\x68\xd6\x4c\x11\x08\x4e\xad\xa0\xda\xbd\x04\xac\
+\x9c\x41\x9a\xf1\xb3\x4b\xc8\x42\x68\xd5\x4b\x76\xee\x88\x4b\xca\
+\x8c\xc5\x4c\x72\x41\x1c\xb1\x5b\xb8\x44\xa6\xc4\x8b\xfd\x0c\xcd\
+\xf0\x12\xed\x1d\x43\xd5\x2d\xdc\x14\xab\xef\x81\x64\xf2\x0a\x61\
+\x6a\x43\xd3\xcf\x59\xad\xe9\xc4\x31\x1b\x76\xef\x84\x54\x30\x9a\
+\x6a\x60\x52\x93\xc1\x93\x2c\x63\xc9\xcd\x32\x7b\x8a\x9f\xcf\xe1\
+\x33\xfe\xc8\x61\xe0\x57\x44\x00\x00\x6a\x4f\x6b\x78\x44\x3c\xd6\
+\x2b\x1a\x48\x86\xf6\x24\x71\x43\x09\x2b\xff\x9e\x88\xb2\x31\x0e\
+\xe9\x42\x2d\x3c\x5c\x1d\x5e\xb7\xb1\xb7\x33\xb0\x9a\x38\xd8\xe0\
+\x91\xb1\xb6\x81\xd1\x64\x6f\x41\xa9\xe0\x5a\xaa\x93\x6e\x75\xe8\
+\x69\xd5\xda\xb5\x6b\x06\x61\x51\xb7\x55\x1c\x6a\x35\xc5\x16\xe3\
+\x20\x94\x36\x5e\x94\x68\xc4\xc8\xf6\xe7\x3c\x68\x6f\x0a\x77\x4b\
+\xa9\xd6\x87\x40\x14\x3c\x61\x44\x84\x6e\x1d\xa6\x9b\xf5\x2f\xaf\
+\x17\xf0\x1f\x44\x00\x64\xe6\xa6\x40\x8d\x6e\xc7\x50\xb6\xbb\x6b\
+\xb8\x14\x30\x53\x89\xa2\x45\xa1\x92\x5a\x1d\xc3\xdc\xf6\xf4\xc6\
+\x52\xad\xc6\xe2\xf8\x51\xb1\x82\x63\xec\xc1\xe9\x2d\xe8\xf4\xfb\
+\x1f\x85\x90\x59\x25\xff\x60\xf7\x26\x4a\x93\x4e\x26\x01\xad\xec\
+\x3d\x15\x64\xb4\xd4\x77\x7c\x1e\xbb\x6e\x20\x83\x1b\xd4\xd7\x40\
+\x2e\x8b\xa4\xa6\x0f\x03\x81\x7e\xcf\x63\xb7\xf8\xec\xe3\x9f\x29\
+\xbd\x6a\x05\x20\xfa\x81\x8f\x88\xe8\x33\xa8\x1a\x4f\xed\x2f\xb2\
+\x30\xf4\x24\xbb\xa6\x0e\xae\x5f\x61\x4f\x2d\xbe\x9d\x58\xcc\x5d\
+\xa7\xcc\xdc\xee\x00\xee\x1c\x93\xa1\x5e\x49\x95\xbe\x06\xa2\x4e\
+\x81\x26\x49\x63\x4a\xcd\x24\xb6\xa8\xd8\x34\x9a\xec\x75\x64\x9a\
+\x4b\x6a\xb6\x0a\x58\xb3\xfb\xab\xb9\xa3\xa3\x25\xd5\x66\x16\x8e\
+\x20\x22\xf8\x22\xf4\xa0\x74\x07\x75\x47\x67\xf2\x5f\x51\x01\xa8\
+\x2f\xb0\xda\x13\x7d\x50\xd0\x3e\x11\x55\x4d\x32\x80\x69\xea\x34\
+\x21\x90\x64\x1a\x39\xb9\xe9\x61\x75\xfa\x0e\xa5\xac\xa0\xac\x33\
+\x69\xf9\x1a\xea\x92\x2d\xd2\xd0\xd2\x38\x3a\x58\x46\x29\xeb\x12\
+\xaa\x14\x91\x66\xd2\xdc\xf6\x39\xed\xbd\x52\xb2\xcd\xa6\x44\xb5\
+\x6a\xde\x40\xb4\x4a\x82\x09\x98\xdc\x0c\x4d\xb5\x99\xc2\xa3\xf0\
+\x0b\x7c\x11\x4a\x02\xa5\xa6\x3c\x01\x1f\x3f\x3a\x18\xce\x2b\xa7\
+\x01\xde\xdc\xd9\x0d\xfa\x73\x85\xce\x34\x16\x36\x8e\x97\x5b\x91\
+\x38\xc9\x34\x85\x72\xfb\xf3\xb9\xa6\x44\xc9\xd0\xa7\xed\x46\xd6\
+\x19\x22\x89\x8a\x4b\x44\x8d\xfb\x1c\x39\xed\x69\x1c\x86\x50\xb5\
+\x06\x97\x54\x73\x20\x32\x7b\x26\x99\xca\xa4\x91\x9d\x39\x4c\xb6\
+\xaf\x51\xaa\x42\xf4\x12\x3a\x83\x93\x9b\x33\xf6\x3f\x3d\x78\xc4\
+\x18\x86\x6b\x0a\x18\x3e\x83\xaf\xdf\x3c\xf2\x48\xe0\x15\x13\x00\
+\x80\xba\xb7\xed\x5a\x81\xd1\xed\x71\x1b\x41\xb7\xb3\x88\x05\xb9\
+\x56\x74\x06\xb3\x13\x43\x6e\xa9\x94\x58\x88\xa0\xda\x59\x16\xbb\
+\xeb\x87\xa4\xf4\x72\x9b\xa1\x64\xe7\x0a\x9c\xca\x1c\x51\x87\x93\
+\x98\xdd\xfa\xce\x66\x9f\x65\xca\xb4\xad\xae\xa5\xd6\x8a\x77\x4c\
+\x9d\xba\xa4\x00\x74\xf4\xf4\x8c\x86\x69\xe2\xf6\x16\xac\x6d\xf7\
+\x92\xa3\x03\x94\x41\xf1\xe8\x39\xee\x75\x14\x23\xa1\x68\x38\x9c\
+\x0c\xe0\xef\x4d\x00\x00\xc4\xd3\x67\x3d\x31\x65\x4f\x8c\xc6\x94\
+\x2a\xb5\x56\x9a\x38\x6a\x3e\xd3\x21\x2b\x7e\xcf\xd8\x6c\x19\xbb\
+\xb3\xb8\x71\xfa\xf9\xd9\xa4\x8b\x78\xb5\x7a\x55\xd5\x7c\x06\xac\
+\xa9\xd8\x44\x2a\xed\x3d\x60\x6f\x58\xe1\x14\x8e\x56\x21\x80\xaa\
+\xcd\x8a\xce\xf0\x48\xe5\x10\xb0\xb7\xba\x02\xd4\xe4\x63\x88\x39\
+\x09\x72\x8a\x9e\x47\x67\xce\xb0\x87\x35\x61\x08\x28\x37\x30\x78\
+\x38\x19\xc0\xdf\xaf\x00\xa8\xb9\x1b\x78\x36\x44\x7c\xdd\x6a\xe2\
+\x94\x24\x42\x3a\xc1\x6a\xdc\x15\xab\x31\x7d\x5c\x53\x88\x35\x09\
+\xf1\x48\xec\x7f\x36\x7c\x0b\x2b\x92\xd2\x58\x5e\x92\xb8\xdf\xa4\
+\xac\x65\x35\x4e\x2f\x42\x9b\x5f\xe8\x0a\x59\x16\x9e\x26\x69\x3b\
+\x97\x0d\x65\x9d\xea\x23\x8c\xab\xd5\x74\x14\xd5\x5f\x65\x09\xb7\
+\x8f\x4b\xed\x7f\xd8\x08\x8a\x01\x0c\x7d\x0a\x45\x0e\x1c\x5e\x33\
+\x88\x3f\x88\x00\x78\x79\x7e\x27\xe8\x6f\x44\x75\x10\xa1\x92\xe1\
+\x23\x9a\x41\xfe\xdc\xb0\x30\x49\xc1\x3a\x04\x50\x92\xb8\x1e\x27\
+\x8f\x8e\x13\x11\xb8\xc9\x20\x93\xe5\x6b\xba\xe8\x64\xba\xd9\x68\
+\x45\xbd\x7e\x5a\x44\xea\xee\x3f\x20\xd9\x9d\x45\x32\xf0\x2e\xb6\
+\x89\x3b\x14\xd8\x5e\x60\x52\x13\x34\xd5\x26\x4a\xc7\x88\x30\x22\
+\x1e\x45\x0d\x50\xde\x76\x14\xe7\xe7\x95\x16\x80\x9a\xb7\xee\xe9\
+\x15\xf4\x27\xa0\xfb\xbd\x4c\xcb\x36\xc9\x24\x4c\x2a\xb6\x6f\x51\
+\xad\x68\xa8\xa0\x64\x7b\xed\x9a\x0a\x6c\x3d\x49\x9f\xbd\x84\x60\
+\x55\x76\xf0\xce\x38\x85\x6a\x53\xda\xa2\x77\x24\x53\xfc\x49\x35\
+\x3e\x60\x25\x4a\x78\xc8\x43\xa1\xb1\x16\x26\x37\x27\x7b\x5d\x1a\
+\xc2\x5d\xa3\x4b\x94\xf1\xd9\x60\x45\xa2\xdf\x3c\xb2\x39\x7c\xc5\
+\x05\x00\xa0\xe6\xba\xbd\xff\xe1\xa1\xfb\xd5\x2e\xe8\xb4\x6d\xbc\
+\xcd\x89\x33\x2e\xab\xd6\xc9\xb8\x39\x82\x61\x31\x70\xb1\x8e\xb5\
+\x8a\x42\x9d\x7c\x82\x49\x23\x06\xfb\x78\x9b\xd5\xeb\x16\x9c\xc6\
+\xc7\x59\x35\x0b\x0e\x94\x67\x9c\x96\x37\x68\xb4\x37\x91\xa6\xef\
+\x71\x04\xc9\x3a\x4f\x60\x52\x4b\x6a\x57\x04\x06\x04\xf6\x4e\x6a\
+\x62\xd0\x6e\x06\x21\x37\x60\x8e\x24\x1a\xf8\xbd\x08\x40\xe4\xcd\
+\xaf\x02\x2d\xb9\xd4\x6f\x43\x45\x31\xa4\x58\x21\x22\x54\xe9\xd7\
+\x53\xa5\x95\x8c\x4d\xd1\xb2\xc9\x1b\x36\xbb\x47\x2a\x41\x9a\x6a\
+\x9d\xc0\xaa\xed\x6b\xe0\x08\x9d\x58\xd1\x8c\xe2\x26\xa8\x9c\xe6\
+\xd8\x47\x9e\xa6\x2d\x78\x50\x5f\x83\x8a\x30\xe4\x09\x7b\x30\xec\
+\x9d\x35\x21\x89\x00\xec\xd1\x9c\xde\xb5\x43\x9b\xd3\xdf\x9b\x00\
+\xa8\xea\x2f\x45\xf5\x39\x2f\x1b\x82\x59\x6d\xda\x44\xb3\xbb\x89\
+\x64\x3a\x88\x55\x05\x6d\xd2\x49\x94\x2a\xc4\x50\x27\xec\xce\xec\
+\x49\xe0\xc4\x78\x4e\xba\x59\x5d\x3a\x9a\x15\x0f\x86\x51\x8c\x49\
+\xe9\xe9\x62\xed\x9c\xe0\xec\xa7\x70\x14\xec\xb3\x44\x66\x20\xdc\
+\x6e\xb0\xdb\xcb\xd1\xc7\x40\x65\x0e\x40\x6e\x08\xd3\xc2\xd1\x15\
+\x98\x57\xa5\x00\x14\x9a\xbc\x07\x45\xf5\x37\xc6\x68\x39\xf5\xc8\
+\x5d\xf8\x55\x71\x31\x01\x67\x1b\xe0\x8c\xed\x17\x8d\xf7\x30\xb1\
+\x6a\x0e\x8c\x0b\x1d\xab\xd3\xcb\xdf\xf6\xf6\x63\x45\x61\xdc\x7a\
+\x83\x6c\xa5\x2e\x99\x16\x71\x76\x20\x27\x55\xb4\x87\xe8\x51\xbd\
+\x67\x5e\xe4\x0c\x8e\xab\x47\x31\x94\xf1\x81\xbe\xa3\xcb\xe1\xf8\
+\xfd\x99\x80\x37\xed\x2b\xaa\x31\x3f\x01\xa3\x5a\xad\x0f\x6e\x6c\
+\x43\x33\xf6\x3f\xf6\x01\x34\xd9\x28\xd2\x38\x55\xbb\x31\x7b\xc7\
+\x29\xe2\x18\x2d\xdc\x54\xb5\xea\x09\xb2\x1a\xc5\x86\x80\x8d\x03\
+\x29\xab\xe3\x38\x1a\x2a\xab\x7f\xed\xb4\xf2\xd1\x34\x9b\xd0\x54\
+\x0f\x53\x27\x30\xec\xe5\xd8\xee\x29\x83\xf8\x47\x2f\x04\x84\x57\
+\x80\x11\x74\x10\xe7\x56\xf8\x0a\x8d\x2b\xf7\xd0\x6e\x82\xdc\x78\
+\xf2\xf9\x5c\x60\x0e\x76\x0d\x7e\xd5\x87\xd5\x46\x2e\x81\xcc\xc2\
+\xc7\xf9\xe4\xd9\x4b\x8c\xe0\x95\xf9\xad\x47\x03\xa8\x57\x0f\xc5\
+\x87\xbc\x50\x0e\x02\x7a\xcf\xca\xb1\x87\x2f\x30\x20\x47\xcb\xc6\
+\xfc\xbe\x05\x20\xf9\x61\x37\xe3\x01\x1e\x17\xf2\x87\x1f\x0f\xf2\
+\xda\x18\x4f\xa3\x2c\xc5\x1c\xcd\xc9\x1f\x1b\x63\x63\x6c\x8c\x8d\
+\xb1\x31\x36\xc6\xc6\xd8\x18\x1b\x63\x63\x6c\x8c\x8d\xb1\x31\x36\
+\xc6\xc6\xd8\x18\x1b\x63\x63\x6c\x8c\x8d\xb1\x31\x36\xc6\xc6\x7f\
+\xfe\xf1\xff\x01\xbc\x68\xa0\xde\xbe\x88\xf6\x8c\x00\x00\x00\x00\
+\x49\x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x27\xb3\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\
+\x06\x62\x4b\x47\x44\x00\x47\x00\x9a\x00\xe8\x4d\xc5\x68\x4a\x00\
+\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\x01\
+\x00\x9a\x9c\x18\x00\x00\x00\x07\x74\x49\x4d\x45\x07\xdc\x05\x01\
+\x09\x38\x17\x42\xe9\x9c\x52\x00\x00\x00\x19\x74\x45\x58\x74\x43\
+\x6f\x6d\x6d\x65\x6e\x74\x00\x43\x72\x65\x61\x74\x65\x64\x20\x77\
+\x69\x74\x68\x20\x47\x49\x4d\x50\x57\x81\x0e\x17\x00\x00\x20\x00\
+\x49\x44\x41\x54\x78\xda\xed\x7d\x7b\x90\x1d\xe5\x75\xe7\xef\xf4\
+\xbc\x25\xd0\x8c\x66\x34\x77\x44\x0c\x0e\x0b\xc8\x92\x10\x2f\x83\
+\x40\x40\xd8\x38\xb1\xc0\x3c\x84\xab\xe2\xc4\xb6\x04\xe5\x6c\x6d\
+\x52\xc9\x56\x2d\x54\x52\xb5\x15\x87\xda\x5d\x44\x82\x6d\xbc\x89\
+\x1d\xe2\x94\x37\x08\x27\xae\xdd\x38\xb1\x97\x45\xe8\x05\x96\x04\
+\x38\x48\xc2\x2f\x21\x84\x84\xde\x60\x49\x0b\x78\x29\x0c\x48\x58\
+\x36\x8c\x34\x08\xcd\xeb\xf6\xd9\x3f\xfa\x7b\x9c\x73\xbe\xbe\x5a\
+\x21\x8d\x75\x47\xe8\x76\xd5\x48\x33\xf7\xde\xee\xdb\xdd\xdf\x39\
+\xbf\xf3\x3b\xbf\x73\xbe\xaf\x81\xc6\xd6\xd8\x1a\x5b\x63\x6b\x6c\
+\x8d\xad\xb1\x35\xb6\x53\x6b\x23\x00\x73\x1a\xb7\xe1\xf4\xdb\x32\
+\x00\x9f\x04\xc0\xee\xe7\x9e\xc6\x2d\x39\x3d\xb6\x36\x00\x9f\x17\
+\x03\x5f\xf6\xd3\xd8\x8e\x03\x46\xc7\xfb\x76\x26\x80\xbf\x04\xf0\
+\x67\xfe\x85\x1d\x3b\x76\x80\x88\x40\x44\x00\x11\x32\x22\xcc\x9a\
+\x35\xeb\x54\xbc\xb6\x86\x01\x1c\x65\xeb\x05\xf0\x75\x00\xb7\xf9\
+\x17\xb6\x6d\xdf\x06\x02\x85\xc1\x27\x10\x28\x03\x88\x32\x80\x10\
+\xde\x9b\x39\x73\x66\xc3\x18\x4e\x61\x03\x38\x17\xc0\x3f\x03\xf8\
+\x98\x7f\x61\xcb\xd6\xad\xc8\x80\xe0\xf1\xc1\x00\xa8\xa0\x04\x19\
+\x51\x61\x00\x19\x05\x23\x80\xfb\x7f\xfa\xf4\x8f\x34\x0c\xe1\x14\
+\x31\x80\x73\x01\x2c\x01\x70\xa5\x7f\xe1\xf9\xe7\x37\x03\x20\x64\
+\x59\x1c\x50\x05\xfd\x20\x20\x23\x64\x00\x20\x06\xdf\xbe\x4f\x04\
+\x4c\xbb\x60\x5a\x03\x15\xc6\xa9\x01\x5c\x0a\x60\x05\x80\xf3\xfc\
+\x0b\x9b\x36\x6d\x2a\x3c\x1d\x00\x65\x59\x31\xc0\xa4\x0d\xa0\x70\
+\xf2\xac\x06\x32\x78\x74\xa0\x02\x15\x28\x2b\x8e\xe5\xde\x3b\xef\
+\xbc\xf3\x1a\xc6\x50\xe7\x0b\x27\x00\xbf\x05\x60\x19\x80\x6e\xff\
+\xe2\xb3\x1b\x37\x22\x0b\xb1\xdd\x79\x7d\x06\x1d\xf7\xc3\x60\xa3\
+\xf0\x70\x72\x03\x2c\x06\x3c\xf3\x9f\x77\xfb\xc2\xbd\x4f\x02\x11\
+\x0a\xa3\x20\x9c\x7b\xee\xaf\x9f\xd6\x86\x70\xb2\x2f\x38\x03\xf0\
+\x59\x00\xff\x02\xa0\xd5\xbf\xb8\x61\xc3\x86\xe0\xb5\x91\xe0\x39\
+\x62\x67\xd8\x7e\x88\xf1\x44\x28\x6c\xc4\x90\x42\x72\x83\x0c\x38\
+\x6e\xa0\x09\x63\x81\x1a\x1e\x41\xe2\xbe\x1f\xfe\xf0\x87\x4f\x4b\
+\x54\xa0\x93\x38\xf0\xf3\x9c\xc7\x87\x81\x7f\x66\xfd\xfa\x14\xba\
+\xe1\xc9\x9c\x36\x80\x82\xd8\x01\x19\x65\x61\x80\x2d\xe4\x13\x32\
+\x65\x48\xd6\x38\x02\x5f\x70\xc6\x04\x73\x6c\x8f\x1e\x1f\x3a\xfb\
+\xec\xd3\xc6\x18\x7e\xd5\x17\xd6\x0c\xe0\x73\x00\xbe\x25\x5f\x5c\
+\xbf\x7e\x7d\x3c\x81\xe0\xe1\x08\x9e\x9f\x19\x0f\x87\x34\x0e\x07\
+\xf9\x59\x06\x4d\x0c\xfd\x00\x53\xf9\xeb\xe4\xbc\x9e\xb2\x2c\x31\
+\x1e\x8d\x2e\xd1\x78\x40\x84\x5f\x3b\xeb\xac\x0f\xb4\x31\xfc\xaa\
+\x2e\xa6\x0d\xc0\x9f\x02\xf8\x6a\xad\x81\x17\x16\x50\x0c\x38\x08\
+\x59\x88\xd9\x36\xe6\x17\x9e\x5f\x64\x7d\x96\x14\x3a\x1d\xc0\x42\
+\xbe\xcc\x04\xfc\x77\x64\x1e\x25\xe2\xf7\xfa\x94\x31\x09\x27\xc2\
+\x08\x3d\xb2\x54\xfa\x2a\x1f\x38\x43\x18\xeb\x8b\x98\x08\xe0\x5e\
+\x14\x92\xed\xd1\x07\x3e\x8e\xbf\xb8\xe9\x99\x42\x05\x9f\x05\x44\
+\x02\x57\xdb\x7b\x91\x84\x04\x13\x36\x2c\xc7\xb0\xa1\x02\x82\x4c\
+\x0a\x44\x00\x15\x86\x09\x81\x10\xbd\xbd\x95\x0f\x0c\x2a\x8c\xe5\
+\x89\x9f\x03\xe0\x35\xfb\xe2\xd1\x06\xdf\x9f\x41\x56\x63\x70\xbd\
+\x11\x04\x16\x1f\xfe\x2f\xf7\xdc\x4c\x64\x08\xa0\x28\x10\x65\x6a\
+\x90\x65\x0a\xe9\x51\x81\x4a\xbe\xd7\x93\x46\x0a\xa8\xa1\x10\xc7\
+\x7d\xa6\xa7\xa7\xfb\x94\x36\x86\xe6\x31\xb3\x24\xa2\xe5\xcc\x7c\
+\x6c\x83\x2e\xf7\xe3\x62\x90\xc0\xe6\xd6\x71\xf1\x0f\x67\x84\xcc\
+\xbf\x49\xc5\xf1\x99\x7d\x9e\xaf\x77\x62\x75\x4c\x06\x33\x02\x3a\
+\xf8\x8f\xb2\x7f\x1f\x0c\x26\x20\x63\x17\xef\xfd\x31\xfc\x21\xdd\
+\x39\x91\x3d\x27\xa2\x70\x6e\x20\xe0\xed\xb7\xdf\x0e\x46\xd3\xd5\
+\xd5\xa5\x4e\xe3\x74\x42\x80\x0f\x01\x78\xfd\x7d\x7b\xbf\x3b\x85\
+\x84\xd0\xb9\xb8\x5b\x90\x3a\x03\xef\x42\x23\x88\xde\x1f\xc3\x44\
+\xa8\x0d\x88\x6c\x22\x40\x7d\x78\x9f\x12\x0d\x41\x91\x41\x15\x3a\
+\xe2\xbe\x85\x22\x29\xc3\x92\x3e\xb6\x47\x9c\xce\xce\xce\x53\x06\
+\x15\xc6\xea\xc4\x76\x02\xb8\x78\xef\x9e\x3d\x00\x11\xa6\x4f\x9f\
+\x8e\x63\x36\x06\x8a\xa9\x59\x88\xf9\x1e\x9a\xd5\x40\x19\x66\x1f\
+\x84\x1e\x33\x80\xb5\xd2\x3c\x41\xe8\x0a\x31\x48\xa7\x92\x3e\x54\
+\x44\xe1\x88\x12\xb2\x18\xc2\x40\x89\xf1\xf8\xba\x04\x99\x3b\x3a\
+\xde\x8d\x81\xc6\xd2\xfb\xf7\xec\xd9\xe3\x0e\x5a\x40\xf0\xf4\xe9\
+\x33\x8e\xc1\x10\xac\x00\x24\x84\x1c\xaf\x06\xaa\xaa\x5f\xf1\xb7\
+\x62\xed\x21\x05\x14\xbc\x41\xd6\x06\x84\x61\xf9\x54\x10\x25\x3a\
+\x42\x18\x54\x40\xa1\x8d\x4d\x0f\x33\xa3\x48\x06\xb4\xf2\xac\xb6\
+\xc6\x36\x1e\x8d\x61\x2c\x4e\x60\x13\x80\x2b\x77\xff\x64\xb7\x2b\
+\xc9\x16\x87\x65\x12\x07\x27\xc2\x8c\xa3\xa0\x82\x2e\xde\xc0\x90\
+\x2e\xd2\xa2\x8e\x34\x0c\x2a\x81\x77\x90\xc9\xf5\xb5\xe1\x50\x99\
+\x88\x24\x42\x83\x92\x8e\xa5\x67\xd7\xda\x8f\x7c\x6a\x1a\x09\xe5\
+\xb1\x6c\xc6\x18\xe8\x54\x35\x80\xb3\x00\xbc\x09\x00\x2f\xfe\xe4\
+\xc5\x78\xf1\x3e\x6d\xf3\x37\xc8\x3b\x06\x13\x18\xc0\x8c\x19\xa9\
+\x31\x6c\xd8\xf0\x8c\xca\xdb\x2d\xbc\x6a\xe8\x4d\x07\xa1\xbc\x20\
+\x64\x8c\x47\xd5\x0f\x52\x58\x2f\x90\xc1\xbe\xe6\xbf\x17\x69\x9a\
+\xe8\xb9\x82\x0f\x5b\xc1\x18\x8f\x7d\xab\x37\x2a\x9c\xe8\x97\xad\
+\x01\x70\xfd\x8b\x2f\xbc\x00\x39\xd2\x14\x58\xbb\x60\xf9\x02\x1d\
+\x9c\x58\x57\x1a\x22\x9e\x7d\xf6\xd9\xa0\x09\x10\x71\xf0\x5e\xa5\
+\xdf\x67\x82\x74\x85\x02\x90\x24\x84\x42\x52\x96\x32\x2f\x99\xb2\
+\x32\x10\x3e\x6f\xe5\xe5\xc8\x19\xca\x0c\x49\x87\x02\x9d\xaa\x1e\
+\xff\x2d\x2d\x31\x86\xab\x01\x3c\x37\x5e\x0d\xa0\x02\xe0\x2d\x00\
+\xd8\xb5\x6b\x57\x24\x71\x85\xa3\x23\x03\x81\x29\x02\xa2\xbd\x31\
+\xe1\x6f\x67\x24\xd3\x4b\x50\x61\xd3\xa6\x4d\xa2\x72\x67\xe3\xba\
+\xcb\xd3\x91\x89\x8a\x61\x49\xe8\x00\x95\x86\x93\xcc\x67\x13\xd2\
+\xdb\x65\x96\x41\x9e\x84\x66\x49\xe1\x28\xc4\xfd\x52\x71\xe9\xc4\
+\x7c\xaa\xc4\x08\xfe\x02\xc0\x97\xc6\xa3\x01\xac\x03\xf0\xf1\x9d\
+\x3b\x77\x3a\x0f\x20\x15\x02\x22\x1f\xa2\xf0\x02\x49\x5e\x10\x21\
+\x21\x78\x11\xbb\xc1\x2a\xcb\x22\x9e\x7f\xfe\x79\x1d\x77\x9d\xe7\
+\x66\x44\x49\xba\x18\xb3\x00\x38\xc2\x68\x0a\x4b\x26\xdb\xc8\x54\
+\xbd\x20\xa6\x7c\xd6\xb3\x75\x16\xa2\xa5\x67\xfb\x9d\x27\x3a\xf0\
+\x7b\xf7\xee\x05\x10\xee\xc5\xe7\x00\x3c\x34\x9e\x0c\xa0\x07\xc0\
+\x2f\x00\xd7\xa0\xe9\x07\x53\x78\xbc\xfa\x1d\xe9\x7b\xce\x77\x95\
+\x2d\x04\xc4\x08\x2f\x97\xa7\x94\x5b\xb7\x6d\x73\xde\x89\xd8\x37\
+\x50\x32\x40\x44\xb5\xba\x89\xac\xfa\x97\x19\x59\x18\xe2\x75\x52\
+\x1a\x83\xad\x21\x94\x85\x07\x1a\x83\x81\x97\x9b\xbb\x07\x17\x01\
+\x78\x71\xbc\x18\xc0\x52\x00\x9f\x06\x80\xed\xdb\x77\x88\xcc\x87\
+\x40\xe4\xe3\x3f\x81\x98\xa3\x34\xeb\x86\xbc\x18\x7f\xf9\x19\xa8\
+\xfd\x41\xd0\xe4\xd1\xbd\x56\x66\x08\x3b\xb6\x6f\x2f\xd7\x08\x84\
+\x37\x67\x25\xf0\x0d\x53\x36\x26\x93\x21\x04\x59\x3a\x13\xf5\x00\
+\xa1\x33\x14\x9c\x41\x67\x1a\x51\x08\xca\x70\x2c\x51\xe0\x58\x06\
+\xbe\xc4\x08\x7a\x00\xbc\x5d\x6f\x03\xe8\x04\xd0\x0f\x00\xdb\xb6\
+\x6d\x8b\xde\x2f\xe2\x7a\x02\xf3\x04\xfd\x39\x45\x06\x23\xfc\x47\
+\x20\x21\xc5\x15\xd8\xa3\x05\xa9\x9b\xa1\xb6\x5d\xbb\x76\xe9\xda\
+\x7e\x59\x26\xe0\x49\x9f\xc9\xed\x55\x96\x91\x51\x92\x86\xd6\xac\
+\x57\xd4\xc8\x12\xe8\x18\xb5\x80\xe5\xcb\x97\xe3\xa2\x8b\x2e\x3a\
+\xa6\x9b\x7e\xcf\x3d\xf7\x60\xc9\x92\x25\xef\xa2\xe8\xa0\x1a\xa9\
+\xa7\x01\x2c\x06\x30\xbf\x30\x80\xad\x42\x97\x87\x21\x82\x14\x07\
+\x9a\x44\x56\x20\x87\x9f\x58\x11\x06\x82\xce\x16\xfc\x81\x05\x60\
+\x24\x9f\x2f\x33\x06\x9f\x92\xaa\x78\x2e\x07\x32\x21\x6d\x16\x29\
+\x52\x03\x88\x72\xb3\xe5\x04\xee\x6a\x2c\x6a\x1c\x65\xe0\x77\xef\
+\xd9\x93\x64\x44\xc7\xb2\xb9\x6b\xdd\x03\xe0\x42\x8c\xd1\x44\x98\
+\xf7\x6b\x00\x4d\x00\x46\x43\x2c\xde\xb2\x25\x32\x3b\x8e\x03\x54\
+\xd4\x4b\xe2\x50\x03\xac\x62\xb3\xcd\x04\xe4\xc0\x7a\x3c\x40\x50\
+\x01\x45\xb8\x80\xa8\xd4\x10\x8b\x41\x2e\x37\x84\xdd\xbb\x77\x0b\
+\x5d\xdf\x43\xb9\x61\xef\xca\x8b\xcb\x59\x7d\x28\x47\x2b\xe3\x90\
+\x02\x11\x25\x99\x48\xd9\xc0\x07\xad\x84\x02\xe5\x15\x86\x7f\x6c\
+\xdc\xc1\x5d\xe7\x32\x00\x9f\xa9\x87\x01\x34\x03\x18\x79\xf2\x89\
+\x27\x71\xf3\x2d\x37\x6b\x62\xb6\x65\x6b\x24\x73\x0a\xce\xe5\xe0\
+\x46\x64\x20\x11\x1e\x24\x6f\xd6\x5e\x2e\x10\x83\xac\xc7\x50\xcd\
+\xf4\xb2\xcc\x18\xf6\xee\xdd\x9b\x14\x87\x74\xcf\x00\x25\xad\xe5\
+\xb1\x89\x94\x4a\x3b\x93\x43\x21\x8b\x4c\x4b\x3a\xe0\x2b\x83\x22\
+\x3c\xc5\x82\x97\x76\x00\x0a\xe8\x26\x4d\xe0\x68\x61\xc4\x5d\xdf\
+\xbd\x00\xbe\x50\x17\x03\x78\xe2\x89\x27\xa2\x47\x32\x70\xf3\x2d\
+\xb7\x68\x63\xd8\xba\x45\xa5\x7e\x5e\xcf\x97\xf5\x55\x2a\x1b\xc4\
+\x84\x43\x08\x99\x57\xd6\x66\xcb\x94\x46\xb3\x3f\x53\xed\x2c\xe2\
+\xe5\x97\x5f\x36\xf2\x71\xda\x4b\x98\x29\x19\xd8\x08\x42\x32\xac\
+\x08\x69\x9a\x99\xd1\xd3\xd3\x23\x48\xea\x8e\x28\x0f\x4b\x6e\x82\
+\x92\x73\x96\x48\x10\xc5\x94\x9a\x29\xa5\xbb\xae\x5b\x01\x3c\x7e\
+\xd2\x0d\xe0\xf1\x27\x1e\x97\xe0\x1c\xb6\x5b\x8c\x21\x6c\xd9\xb2\
+\x45\xc1\x3c\xcb\xd4\x4f\x4a\xa7\x2a\xc6\xfb\x04\x91\x45\x5a\x28\
+\x99\x03\xeb\x6c\x41\x5e\x85\x17\xa0\x04\xef\x90\x86\x66\x8d\xe1\
+\x95\x57\x7e\x5a\xb3\xed\x3c\x93\x1a\x41\x22\x1d\x67\xaa\xe8\xc4\
+\x39\xa3\xb7\xb7\x37\x1c\x77\xdb\xd6\x6d\x6e\x1f\x19\xbe\x2c\x19\
+\xf6\xa8\xa1\xf9\x91\x0d\x8b\x24\x90\xa7\x86\x11\x34\x03\xa8\x9e\
+\x5c\x03\x78\xfc\x71\x75\x00\x76\xe9\x1c\xe2\x58\xa6\xc6\xb0\x75\
+\x8b\x20\x85\xf1\x06\x30\x71\x09\xcc\x0b\xb4\x90\xa4\xd0\x86\x05\
+\x49\x2c\xcd\x8d\x94\xc6\x19\x84\xa6\xa3\xa0\xc2\xab\xaf\xbe\xaa\
+\x39\x41\x98\x76\x86\x44\x02\xf6\x70\x5d\xad\x56\x71\x96\x68\x1a\
+\x7d\x7e\xcb\x16\x91\xc5\x70\x14\xc7\x64\x9a\x08\x6d\x98\x32\x6b\
+\x29\x1b\x78\x8d\x82\x50\x69\xb5\xbb\x8e\x16\xc9\xcb\x4e\x8a\x01\
+\xac\x5e\xbd\xda\x88\x3b\xac\x20\x9f\xa1\xd9\x7b\x6a\x0c\x5b\x45\
+\xf8\x97\x80\xc8\xc2\xd2\x85\xf7\x12\x12\x8e\x40\x25\x6a\xa2\xdc\
+\x8f\x19\x31\xaf\x4f\xf8\x47\xfc\xde\x32\x63\x78\xed\xb5\x9f\x15\
+\x75\x80\x64\x5e\x41\xb1\xcf\xc8\xf0\x30\xce\x11\xf3\x08\x36\x6d\
+\xde\x04\xc1\x6c\x9c\xdc\xa1\xb9\x8e\x52\x4b\x49\x73\x20\x92\x26\
+\x2d\x79\x91\x0d\x97\xf2\xb3\x44\x98\x31\x63\x46\x7d\x10\x60\xd5\
+\xea\xd5\xc6\x2b\x19\xc4\xfe\x06\xb3\xf1\x56\x37\x18\x04\xdc\x72\
+\xcb\xbc\x54\xd5\x73\xc6\x10\x77\xc9\x1c\x2a\xa0\x34\x45\x0c\x37\
+\x56\x41\xa2\x80\x52\x90\xb6\x29\xe8\x9b\x06\xa4\x32\x35\x1d\x45\
+\x5f\x78\xe3\x8d\x37\x42\xfa\xf7\xde\x91\xf7\x70\xfe\xf9\xe7\x87\
+\xf7\x36\x6e\xdc\x98\xc0\x3b\x95\x48\xdc\x7a\xe0\x43\xac\x4a\x8d\
+\x84\xcc\xf5\xfa\xeb\x22\x19\x38\x23\x37\x70\xb3\xa0\xeb\x60\x00\
+\xab\x56\x89\x78\x6c\x58\xb9\x83\xf5\xa2\x65\x8e\x5c\x58\xe0\x84\
+\xcc\xcc\x9b\x37\xaf\x34\x8b\xb0\x85\x22\x70\x71\x13\x28\xf4\x18\
+\x98\x2a\xa3\x21\x88\x4a\x8c\xb2\xba\x81\xa2\x0f\x29\xf1\x3c\x9a\
+\xea\xa8\x4b\xd7\x1b\x94\xb7\xc6\xa0\x65\xb4\x01\x62\x31\x98\x99\
+\x42\x38\x5d\xa8\xd2\xc6\xa8\x65\x71\xd2\xd9\x94\x20\xc0\xb3\x66\
+\x5d\x58\x2f\x03\x58\x09\xdd\xf1\x21\x6b\xfe\x3e\x04\xb0\xc9\xfb\
+\x63\x9c\x26\x66\x55\x29\x4c\x8c\x41\x64\x11\xa0\xf2\x14\x51\xab\
+\x8e\x64\x48\x24\x61\xdd\x9b\xad\xe1\xef\xb9\xbf\x36\xa2\xd3\x4b\
+\x71\xa3\x51\x2b\xed\x74\x5f\x28\x8c\x61\xfb\xfa\xf5\xeb\x2f\x4b\
+\x34\x0b\x2a\x89\xdf\xc9\x80\x8a\xf7\x0d\x1f\xb1\xe8\x90\x20\x86\
+\x34\x54\x66\x55\xf4\x9a\x55\xa8\x88\x27\xdf\x00\xbe\xbb\x72\xa5\
+\x1a\x57\xe8\x28\x0e\xb2\x7f\x7b\xc3\x30\xf6\x20\x79\x42\x44\x86\
+\x5b\x93\x10\xa1\x3f\x9b\x56\xdc\xbc\x5a\xf7\xf4\x1b\x6d\x05\xda\
+\x90\x1e\xc4\x10\x57\x89\x30\x77\xaa\x34\x06\xae\x21\x46\x45\xa3\
+\x62\x30\x66\xce\x28\x16\x9c\xf8\xd1\x8f\x7e\x14\x8b\x4f\x25\x05\
+\xae\xcc\x7a\xa9\x47\xaa\xcc\x21\x59\xa6\xf9\x8b\xf6\xf6\x88\x06\
+\x0c\xed\xf5\xa5\x7c\x81\x08\x17\x5f\x7c\x71\x9d\x0c\xe0\xbb\xdf\
+\x35\x83\x98\x8e\xac\x87\x65\xe6\xb4\x4d\x8e\x02\x4b\xa3\x1a\x27\
+\x44\x98\x77\x6b\x09\x2a\x08\xd9\x59\x42\xe4\xba\xd7\x5b\xcd\x60\
+\xc7\xb0\x40\x02\x9a\x62\xe5\xb0\xb0\xba\xb9\x53\x47\x00\xd3\xba\
+\x66\x51\xc7\xc5\xd9\xdd\x3f\xfc\xe1\x0f\x66\xca\xde\x02\xd9\x3b\
+\x9e\x65\xa4\x0d\x9f\x4a\x52\x3f\x3f\x94\x64\xd8\x7d\x08\x73\x35\
+\x10\x4e\x91\x5b\x21\x67\x83\x71\xc9\xa5\x97\x9e\xb0\x01\x1c\xdf\
+\xbc\x00\x3f\x78\x8e\x02\xb0\xfb\xa5\x30\x84\x3c\x64\x01\x60\x16\
+\x1f\x8f\x39\x62\x9e\xb3\x1b\x13\x86\xc8\x8c\x5c\x4f\x3e\x81\xc1\
+\x90\x99\xc6\xad\xf3\xe6\xe1\xf2\xcb\xaf\xd0\x7c\x01\x8c\xb5\xaf\
+\xb7\x69\xe9\x99\xb8\xa8\x4d\x30\x3b\xb4\xf1\x67\x56\x78\x3a\xbb\
+\xef\x2d\xce\x87\xb1\x6e\x5f\x0b\x40\xc0\xdc\xb3\x86\x8b\xfd\x99\
+\x43\x56\xc3\xda\x37\x66\xe6\x0c\x64\xc4\xc8\xb9\x40\x22\x69\x60\
+\x79\x8e\x48\x86\x03\x33\xe2\x58\x27\x21\x88\xa3\x1a\xa2\xcc\x31\
+\x8b\x2a\xae\x9f\x6b\x8a\x3f\xfe\xfa\x72\x7d\x76\x27\x54\x13\x38\
+\x2e\x04\x78\xec\xb1\xc7\x2c\xee\xa7\xac\x5c\x9e\x1b\x21\xa1\x81\
+\x41\xed\x22\x2e\xe5\x13\x10\x13\x3a\x62\xcc\x04\x6e\xbf\xf7\x21\
+\xe5\x5d\x77\x2f\xbc\x3b\xc0\x25\xfb\xa2\x8e\x40\x03\xd5\x93\x22\
+\x09\xa0\x24\x7f\x14\x3f\xff\xf1\xbe\x11\x9f\xa9\x7b\x92\xb5\xfd\
+\xe9\xa7\x9f\xbe\x2c\x22\x85\x68\x55\x13\x03\x99\x51\x24\xa9\x89\
+\x78\x63\x95\xcb\x92\x4e\xa9\x18\xb6\x4c\x6a\x4b\x36\x64\xc4\xf7\
+\x3f\xfa\xd1\x8f\xfa\xfa\x4c\x7e\x52\x0d\xe0\xd1\xc7\x1e\x0b\x03\
+\x93\x8c\x2a\x23\xcc\xe0\x21\xa9\x0c\x85\xd2\x6e\x54\x8c\xca\xe4\
+\xee\x00\x83\x86\x1b\x3c\x7b\xa0\x3b\xda\x09\x11\x1e\x78\xe0\x81\
+\xc0\xb2\x01\x60\xe1\xdd\x77\x47\x7e\x40\x5c\xa2\xb9\x23\x92\xaa\
+\xa0\x12\xb2\x1a\x14\x15\xbb\x09\xf8\x93\xdf\x2e\xd6\x17\x5a\xb7\
+\x6e\x1d\xa4\x01\xd8\x3a\x87\x8f\xe3\x99\x89\xd9\x56\x03\xb0\xb2\
+\x37\x25\x7f\x47\xf1\x28\x0c\x7b\x06\x1d\x02\xc4\xbe\x97\x5f\x7e\
+\x79\x9d\x0c\x60\xc5\xa3\x69\x06\x60\xf2\xec\xb2\x6f\x91\x5c\x41\
+\x12\x46\x96\xbb\x32\xab\x1e\x81\x0d\x07\xba\x6d\xaf\x48\x3c\x64\
+\x31\x16\x78\xe0\x81\x45\x62\x50\x81\x85\x0b\xef\x56\x28\xa0\x25\
+\x05\x9d\x31\x90\xcd\x20\xdc\x3e\x5f\xfc\xe2\x17\xd1\x34\xb1\xf3\
+\xa5\x3f\xf9\x0f\x7f\x30\x8d\x40\x98\x73\x46\xbf\x40\x0f\xc9\xec\
+\xe5\xa0\xe8\xef\x23\xd9\xf4\x92\x99\x12\xb7\x25\x8e\xa6\x9c\x9e\
+\xa4\xb5\x8a\xcf\x14\xdf\x73\xc5\x15\x57\x9c\xb0\x01\x1c\x17\x07\
+\x60\x70\x18\x4c\x96\xa1\x88\x55\x54\xd0\x62\x0e\x43\xe8\x03\xee\
+\xa3\x62\x7f\x66\x6d\x2f\xeb\xdf\xea\x76\x37\x91\x93\x60\x17\xb4\
+\x86\xbc\xb8\x21\x77\xde\x79\x27\x88\x80\x07\x16\x2d\x02\x33\x70\
+\xdf\x7d\x5f\x0e\x07\x2a\x8c\x21\x42\x2e\x4b\xc2\xe1\xd1\x80\xc5\
+\xe0\x73\x31\xa7\x90\x19\xa8\x1e\x3e\x38\x8d\xf3\x1c\x20\xc2\xc6\
+\x81\x49\xa1\x59\x74\xce\x84\x83\xe2\x42\x39\x78\x2f\x4b\xe4\x0a\
+\xc6\xee\x79\x89\xff\x53\x43\x67\x2e\xb5\x09\x9f\x1e\x7b\x7e\x84\
+\x2c\x7c\x3e\xca\x5c\x0c\x73\xe3\x4f\x7e\x35\x70\xf9\xf2\xe5\x26\
+\xaf\x86\x62\xb3\xec\xc9\x9d\xee\x08\xd0\xde\x6e\xb3\x00\x02\x9e\
+\xd9\xdf\x13\xb9\x03\xe9\xb6\x30\xd6\x0e\xa4\x3d\xbb\xa4\x23\x69\
+\xd1\x83\x8b\x92\x2b\x5c\x78\xcf\xdd\x46\xc0\x31\xa8\xe0\x0e\xbc\
+\x72\xd5\x4a\xbc\xf0\xd2\xab\x2f\xff\xd1\xef\xcf\xbf\xa0\xa3\xbd\
+\x5d\xe7\xe3\x59\x8c\xc9\x73\x26\xf6\xab\x3e\x05\x19\xc7\x89\xa0\
+\x85\xab\x92\x86\x18\x2f\x2d\x6b\x8f\x37\x61\xc4\xb4\xc8\xf9\x03\
+\x13\x01\x57\x5d\x75\x55\x7d\x10\xc0\x27\xf5\xda\xa3\x8b\x1b\x91\
+\x73\x74\x0c\xff\x6a\x1e\x08\x83\xf0\x12\xe1\xd2\xcf\xec\xeb\x0e\
+\xb3\x7d\x99\x62\x9a\xc8\xec\x75\xf5\x88\x27\x11\x29\xac\xea\x10\
+\xb9\x3b\x13\xe1\x8e\x3b\xee\x08\x90\xea\x8d\xe1\xbe\x2f\x7d\xd9\
+\xa1\xc2\x42\x33\x11\x99\xd5\x31\x77\x6c\xdf\x0e\x00\x17\xb4\xb5\
+\xb6\x85\xef\x2b\xf4\x05\x80\x72\x20\x77\xc6\xb2\xf1\x70\x67\x18\
+\x98\x39\x13\x0e\x3a\xc3\x8f\x3c\x27\xf0\x5b\x16\xb0\x18\x46\x9c\
+\xc1\xb9\xd4\xf7\x59\xfa\xb7\x3a\x06\x91\xbf\x6f\x84\x2c\xe3\x98\
+\x38\xd4\x0d\x01\x96\x2d\x4b\x24\x60\x94\x0a\x3c\x35\xf2\x7c\x37\
+\xc0\xeb\xf7\xf5\x24\x5a\xbe\x4c\x9b\x34\x6b\x77\xc0\x90\x99\xf7\
+\xa4\xc2\x68\x3c\x5b\x1d\xc7\x9d\xeb\xa2\x45\x8b\x14\x7a\x2c\x5c\
+\xb8\x50\x79\xde\x7d\x5f\xfe\x12\x9a\x27\x4d\xd9\x79\xd5\x45\x1f\
+\xb9\x64\xf6\xec\x2b\x04\x9b\x67\xd1\x31\x84\xe4\x5c\x65\x3f\xc1\
+\x95\xed\xfd\x06\x59\xd2\xf8\x2d\xe5\xec\x58\xad\x2c\x67\xfc\x5a\
+\x15\x8c\xd7\x7a\xf5\xd5\xd7\xd4\x8b\x03\xc4\xb8\x9d\x45\xbf\x2b\
+\xc6\x35\x8f\x8d\x9c\x36\xb0\x13\x08\x3f\x7e\xb3\x3b\xa4\x59\xf1\
+\x2d\x0e\x79\x7c\xce\xaa\x20\x1c\x45\x25\xef\x89\xb9\x6b\x07\xe3\
+\x22\xed\x8a\x92\x33\xbb\x70\x29\x3c\x50\x7c\xb7\x3f\x95\x3b\xef\
+\xbc\xb3\x20\x8e\x0f\x2e\x02\x31\x70\xdf\x7d\xf7\x05\x03\xb8\xeb\
+\xae\xbb\x00\x00\xa3\x87\x7e\x71\xc9\xe5\x97\x2f\x00\x07\xf7\x97\
+\x71\x5e\xa4\xaf\x82\xd8\xb2\x3f\x47\x02\x36\x1d\xe9\x0c\x46\x77\
+\x65\xdb\xa1\x02\x36\x84\x67\x30\xfb\x35\x0a\xb4\xac\x12\x81\x2e\
+\xa2\x41\xe8\x8e\x93\xf2\xb9\xe7\x18\x63\xa0\x03\x1c\x9f\x01\x70\
+\x4c\xf3\xf2\x92\xef\x67\x45\x74\x0a\xf3\x58\xff\xc6\x14\xc3\x17\
+\x82\x44\x53\x72\x1d\x5c\xf0\x3b\x4f\x94\xa4\x64\xeb\xc8\x00\x3b\
+\x7c\x2d\x8c\x8e\xc3\x0d\x67\xa9\x3d\xb0\xe0\x1b\x10\x44\x0d\x8c\
+\x3b\xef\xb8\x33\x84\x9d\x45\x0f\x3e\x08\x66\xe0\xab\x5f\xfd\x2a\
+\x9a\x27\xf5\xee\x18\x1d\x38\x70\x29\xb3\x24\x8b\x3a\x0c\x59\x11\
+\x24\x98\x9b\x33\x0a\x78\x27\x20\x60\xf3\x60\x34\x86\xd9\xad\xfd\
+\xa2\x0d\x8c\xe3\x65\x27\x31\xc2\xbb\x95\x0e\xa1\x94\x03\x9c\xf9\
+\x5d\xb9\x7e\x21\x60\xc9\xd2\xa5\x8e\xa5\x52\x02\xb5\x32\xa7\x23\
+\x30\x9e\x79\xb3\xb7\xf4\xcb\xd8\xc4\x44\x32\x35\x72\xd5\x01\x96\
+\x89\xdb\x1f\xe0\xb8\x04\x1a\x09\xa5\x65\x5f\x2e\x6b\x4b\x57\xa9\
+\xa0\x57\x28\x73\xfc\xc3\x3f\xfe\x03\xee\xb8\xe3\x0e\x9d\xf2\x91\
+\x90\x6d\x6d\x15\x50\x4a\xbb\xa2\x85\x4b\x85\x2a\x43\x32\xaf\x6c\
+\xed\x4f\x3a\x80\x74\x93\x08\x4a\xc4\x21\xdb\x61\x44\xb8\xee\xba\
+\xdf\x88\x65\xc6\x93\x4a\x02\x73\x8e\xb0\x27\x80\x28\xc4\x7d\x66\
+\x3c\xf3\xe6\x14\x11\x9e\x19\x10\xd0\x2c\xb4\x22\x93\x41\x72\xb4\
+\x0e\xb2\x72\xa9\x37\x1a\x8e\x33\x8d\x3d\xcb\x0a\x5e\xaa\x0d\x8d\
+\x6d\xea\x1a\x7e\x77\xa3\x91\x2b\x49\x3f\xc0\x71\xce\x51\xb2\xf5\
+\xf4\x2c\xa6\xbe\x1c\x8c\x93\x29\x82\x35\x85\xf0\xe4\xef\x11\x89\
+\x7e\x08\x0e\x88\x40\x60\x6c\x1e\xea\x84\xef\x47\x9c\xdd\xd2\xef\
+\x38\x40\x44\x27\x59\x40\x93\x01\x41\x27\x4e\x63\x83\x00\x63\xa3\
+\x03\xe4\xc5\x88\x6e\x78\xb3\xd7\x60\x0a\xc7\xbc\x3b\xc4\x48\x99\
+\xc7\x8a\x24\xd8\x5c\xac\xfc\x1e\x26\xa4\xeb\x07\x05\xb5\xb1\x88\
+\x8d\x60\xa8\x5c\x9f\xbd\xf2\xc8\x22\x54\x08\x4e\xe1\x43\x89\x0f\
+\x59\x24\x15\x07\x76\xc6\x2d\xea\x07\xc5\x00\xb2\x08\x6a\x31\x80\
+\x71\xcc\x6d\x5d\xf8\x13\xc6\xe3\xde\xcb\xdc\xf5\xb3\xd3\x1e\xfc\
+\x00\x6f\x1e\xee\x0a\x88\x32\xbb\xf9\x60\x5c\xfb\x48\xe4\xbd\xc1\
+\x38\xbc\x03\x30\xd9\x5a\x45\x1d\x38\x80\x18\xb4\x0d\xfb\x7a\x13\
+\xd7\x23\x29\xb0\xb0\xc0\x7a\x06\xc8\x91\x22\x0e\x44\x2a\x56\xf8\
+\xe0\x0a\x39\x60\x8a\x11\x96\xe5\x71\x29\x02\x44\xfc\xc5\x7d\x0d\
+\x01\x59\x91\x5e\x51\x26\xb8\x0a\xf9\xdf\x29\xa6\x54\xce\x68\xa5\
+\x37\xc7\x67\x8f\xb8\xe3\xe5\xce\x73\x4d\xea\x19\x6a\xdb\x99\x68\
+\x7f\x73\xc4\x54\xb0\xe3\xc8\xd8\x05\xd8\xf8\x73\x25\xf8\xc5\xae\
+\x22\xb1\x7c\x7e\xa4\x33\x84\x89\xd9\xcd\xef\x04\x9e\xe7\xf7\xf3\
+\xce\x40\x32\x1b\xaa\x87\x01\xc0\xc1\xd1\xb3\xfb\x7b\x95\xba\x46\
+\x35\xb2\x05\x52\x74\x37\x6a\x04\x41\xd4\x32\x50\xee\x49\x8e\xf7\
+\xcb\xe0\xe1\x5e\x64\x0a\x24\x58\xc0\x86\x1f\x5c\x3f\xb0\xb9\xf3\
+\x58\x09\x3e\xbe\x5a\xe8\x98\x78\xac\x4f\x38\x96\xcd\xc5\x95\xe4\
+\x39\x9b\x7e\xc7\x78\xfe\x9c\x45\x69\x8a\x72\xcf\x01\x5c\x4e\x2f\
+\x78\x48\xc8\xf1\x89\x35\x92\x09\x7d\x00\x6e\xf0\x49\x1a\x82\x33\
+\x97\xcd\xa3\x5d\x81\x5f\xcc\x6e\xea\x87\x04\x52\xb8\xeb\xa8\x9b\
+\x01\x6c\xd8\x57\x31\xb9\x78\x34\x0a\x69\xdd\x47\x3b\xd1\x10\x09\
+\x44\x09\x36\xc2\x6f\x84\xbb\xe2\x30\x0c\xc9\xc3\x19\xba\x0b\x39\
+\x1c\x90\xe5\xbc\x00\xd6\xdc\x82\xa2\xd7\xb3\x58\x75\xce\x23\x4c\
+\xf0\x74\x16\x06\x2a\x4b\xd9\x88\x0c\x5f\x74\x78\xe9\xc2\xb1\xd3\
+\xfd\x59\xe8\xdd\x6c\x2a\xa3\xf1\x34\xb9\xa4\xe8\x45\x02\x21\xa2\
+\xe0\xf3\x3c\x17\x99\xc4\xec\xac\xdf\xc0\x55\x1d\x0c\xa0\x7b\xc6\
+\xed\x68\xaf\x16\x03\x34\x98\x29\x1a\x18\x6a\xed\xa1\x16\xcf\xe2\
+\x86\x23\x5a\xbf\xcc\x02\x4a\xbb\x85\x3c\xe1\xf1\x1f\xcc\x04\xc4\
+\xab\x1a\x31\x92\xe6\x54\x46\x34\x84\x38\x20\x66\x9f\xf0\x9d\x24\
+\x5e\xce\x45\xff\x02\x27\xa9\x9e\x3c\x1e\x50\xd4\x21\x38\x83\xae\
+\x7f\xc8\x5c\xdd\xa3\x88\x43\x0d\x6b\x08\x9e\xc6\x90\xe2\xb9\x26\
+\xd5\x34\xc8\xb0\xa5\xda\x15\xb2\x92\xcb\xb3\xfe\x31\x31\x80\xec\
+\xf8\x38\x40\xf1\xd3\x5e\x25\xf7\x93\xe9\x50\xef\xbd\xc8\x3c\xcb\
+\x8b\x02\x3d\x8b\xde\x93\x33\x83\xdd\x45\xfa\xe3\x6a\xa5\xb8\x80\
+\xf5\xe0\x9d\xee\xe0\x52\xa3\x61\x16\xaf\x31\xc4\xef\x1e\xd6\x39\
+\x1c\xdc\x7f\x9e\xd9\xe9\x07\xee\x7d\x11\xfa\x8b\xe3\xe5\xb9\xfb\
+\xde\xe2\x18\x39\x33\x38\xe7\xb8\xaf\xdf\x3f\x2f\x42\x46\xee\xde\
+\x43\x9e\x8b\xf3\xc9\xf5\x7e\x76\x7f\x2e\x84\xaf\x9c\xed\xfb\x8c\
+\x3c\x8f\xef\xfb\xf7\x72\xb7\x6f\x9e\x03\xcf\x1e\xea\xc4\x94\x8f\
+\xdd\x5e\x87\x10\x20\x88\x9d\x14\x40\xda\xab\x91\xb1\x0c\x66\x79\
+\x74\x69\xe3\x4c\x8a\xd8\x05\xce\x24\xfa\x70\x54\x4f\x01\x69\x95\
+\x5e\xc4\x7f\x55\xc4\x93\xa9\x52\x78\x5f\xf7\x22\xb3\xca\x34\xa2\
+\xa2\xc6\x6c\x74\x18\x37\xb0\xb1\xc5\x5d\x4c\x48\xf5\x21\x89\xac\
+\x86\x89\x88\x3c\xa4\xb3\x99\x64\xf1\x53\x77\x9c\x02\xc9\x23\x3d\
+\x8c\x2c\x8a\x0d\x10\xe8\x82\xc2\xf0\xe1\xaa\x59\x73\xa1\x1e\x24\
+\x90\xd9\x14\x69\x75\x01\xb8\xad\x1a\x1b\x27\x8f\x34\xe5\xb1\xa2\
+\xc7\x26\xee\xb1\x24\x04\xc2\xc3\x75\x33\x51\x24\x8e\x0c\x53\x2c\
+\x89\x4d\x95\x0a\x69\x02\x9f\x64\x03\xf3\x28\xb7\x48\x91\xdd\x78\
+\xef\x0c\x79\x77\x86\x98\xde\x19\x89\x1a\xaa\x7c\x53\x90\x4e\x6f\
+\x50\x5e\xbc\xd2\x65\x5c\xa1\x09\x18\x9d\xa1\xf8\x60\xee\x48\xaa\
+\x31\x04\x02\x46\xdf\x63\x5d\xb2\xd6\x72\xf0\xc9\x33\x80\x00\xb9\
+\xd2\xc1\x75\x02\xed\x06\xad\x38\xfb\xf6\x51\x0a\x5e\x7d\xa4\x89\
+\x55\x0e\xec\xfb\xff\x7c\xca\xa7\xf8\x9c\x24\x42\x56\x06\xe0\x18\
+\x4f\xd9\xaf\x44\x22\xbd\xcc\xf5\x09\xe4\x0c\x64\xa2\x9e\x1e\xd4\
+\x35\xc1\x53\x22\x51\x24\xa1\xfd\xe7\xc8\x3d\x4a\xb0\x20\x82\xa1\
+\xd6\xc1\xc8\x33\xdd\x7b\x48\x82\x6b\x86\x7b\x22\xfe\x66\x96\x13\
+\x43\x58\xe7\x48\x72\x0d\x62\x8a\xfa\xc2\xf0\xa0\x51\x2b\x83\xee\
+\x01\xa7\x05\xd4\x4d\x07\x88\x6c\xd6\x16\x31\x7d\x3e\x4f\x02\x25\
+\xfc\x6f\x9e\x2b\x00\x8c\xc1\x26\x06\x15\x77\x53\xa5\x69\x7e\x2d\
+\x41\x2e\x09\x3b\x2c\x34\x06\x26\x18\xcf\x16\xf7\x31\x7e\x50\x19\
+\x28\x41\x1a\x2f\x99\xf2\x6d\x3c\x7e\xce\x1c\xaf\x2f\x17\xe5\x69\
+\x3f\xd1\x83\x01\x72\x61\x22\x0d\x05\xee\xdf\x3c\x0a\x51\x14\x64\
+\x5c\x99\x33\x98\x69\xed\x22\xed\x1d\x19\xf4\x4d\xa7\xb2\x51\x16\
+\x11\x33\x02\x52\x9e\x78\x51\xe0\x38\x43\x80\x43\x9f\x5c\x22\x3a\
+\xcb\xaa\xbd\xe9\x14\xf2\x0b\x3a\xc4\x2d\x1a\x03\x30\xe8\xc2\x44\
+\x58\x21\x1c\x72\x8e\x21\x47\x6b\x27\xd1\x3d\x6b\x42\x01\x84\x38\
+\x14\x92\x00\xcf\x53\x5c\x5f\x3e\x87\xd6\x70\xc9\xf4\x85\x15\x79\
+\x42\x98\x5b\xad\x1a\x46\xcd\x8c\x5a\x65\x26\x18\xbd\x54\xb0\x6d\
+\xe2\x1a\x7a\xfd\xc3\xe7\x0b\x23\x66\x31\x17\x20\x1f\xca\x75\x58\
+\x62\xfb\x27\xab\x8c\x64\x2c\x20\xe0\xf8\x43\x80\x4c\xed\x84\xd2\
+\xa5\x53\x54\x36\xa9\x8f\x95\x85\x8b\xbf\xda\x47\xe3\xaa\x19\x83\
+\x4d\x1c\x3d\x55\x36\x4f\x90\xd2\x41\xca\x85\x26\x72\x95\x43\xb1\
+\x1c\x3c\x81\xc4\x80\x92\xab\xd4\x59\xb4\x90\x09\xba\x08\x05\x20\
+\x6d\x64\x36\x2c\x31\x90\x53\x14\x83\xcc\xb4\xc8\xa0\x85\xc4\xd9\
+\x50\xf1\x9a\x7d\xb5\x33\x1f\xce\x93\x6e\xa6\xa8\x6d\x49\x6f\x17\
+\xab\xad\x92\xef\x25\xab\x47\x08\x60\x5b\xc3\x8e\x74\x8c\x49\x96\
+\x2a\x49\xc4\x68\xd3\x3b\x48\x92\x14\x69\x6b\x6f\x1b\x2d\x6e\xfa\
+\x60\x33\xcb\x2a\x51\x42\x8e\x65\x0d\x9d\xa1\xc5\x04\x26\xa1\xa5\
+\x8b\xc1\xf5\x0a\xa0\x2c\x0e\xab\x81\x76\x6f\x4a\xa5\x32\xb0\x7e\
+\x55\xe9\xcc\x55\x77\x3f\xab\xd9\x8f\x1c\x09\xaf\x30\x5a\x79\x6f\
+\x98\x09\xf9\x28\x42\x0f\x85\x0a\x21\x72\x5e\xa5\xbf\x2f\x99\x9c\
+\x83\x9d\x47\x99\x9c\xeb\xc6\x01\x34\x14\x17\xd6\x99\x3b\xf9\xd5\
+\x64\x07\xc2\x9b\xb8\xa4\x0c\xce\xd0\x12\xaf\xff\x6c\xdb\x68\x16\
+\x6e\xcb\x50\x73\x5e\xda\xbe\xc5\xa6\xee\xc0\x42\x65\x0a\x9a\x83\
+\x10\x6f\x94\x01\xa9\x56\x2d\xc9\x02\x8a\xfc\x3d\x86\x15\x8b\x01\
+\x35\xaa\x71\xb1\x5e\x2d\x7a\x22\xa3\xf7\x83\x80\x6a\x55\x5c\x2b\
+\x65\x49\xfa\x1a\x4e\x2c\xf3\x45\x9f\x58\x01\x8d\x05\x2d\x82\x59\
+\x5b\xaf\x4e\x24\xd0\x94\x67\xa5\xe4\x2b\x59\x3c\xa0\x3d\x32\x2a\
+\x75\xb2\x71\x83\x8c\x51\x08\x74\x20\x46\xdb\x48\x16\x42\xc1\x50\
+\xb3\x28\x2a\xb3\xc8\x0a\x28\x56\xf5\x42\x41\x09\x10\xbf\x93\x4a\
+\x56\xb9\x6c\x00\x83\x14\xcc\x22\xef\x77\xa5\x61\xd6\xda\xbd\x6d\
+\x40\xa1\x52\x35\xcf\x69\x8c\x55\x23\x97\x7a\xe5\x51\xc9\xc5\xa2\
+\xc3\x29\x2f\x5e\x63\x37\xed\xde\x42\x9f\x46\xaf\x7a\x84\x00\x96\
+\x83\x2a\xb5\x73\xdb\xc8\x65\xa2\xb4\xaf\xce\xd9\xd4\x2c\x94\x7e\
+\xa1\xa4\x93\x10\xa3\x89\x43\x57\x55\xdb\x48\x16\xa0\xb3\x08\x13\
+\xba\x62\x28\xdb\xbe\x89\xc4\x24\x2c\x66\x13\xf7\x75\xa9\x47\x71\
+\x2a\x4e\xb3\x05\x64\x2c\x90\x45\x93\x43\x72\xf7\x43\x66\x01\x00\
+\x81\x47\x73\xb3\x82\x78\x84\xfa\x58\x2a\x16\x0a\xa9\xf4\x72\xd5\
+\xc7\xe0\xbe\xd7\x87\x38\x66\x59\x04\xad\x1f\x09\xd4\x3a\xb6\xbe\
+\x7c\x50\x24\x63\xc6\x84\xc3\xa4\x51\x0b\xa7\x2c\xe1\xc3\x86\x0f\
+\x91\x25\x78\x12\xd5\x36\x12\x6f\xec\xa0\x08\x13\x61\xc1\x8a\x1c\
+\x6a\x96\x92\xac\x4a\xfb\x29\xea\x7e\x14\x18\x51\xa6\xcd\x73\x97\
+\x2d\xc8\x2c\x2b\xa7\x90\x83\x47\x95\x92\x12\x52\xa8\xb2\x13\x17\
+\x42\xe4\x5c\x3e\x9d\x3e\xc3\x68\x00\x3a\x93\x22\xeb\x48\x63\x57\
+\x03\x3a\xf1\x10\x90\x9e\x8c\xa4\x79\xba\x2a\x66\x99\x6c\x9c\x1c\
+\x2a\xb4\x34\xd2\x9c\x4f\x8d\x16\x58\x8b\x2a\x52\x91\x73\x61\xa8\
+\x6d\x24\xbe\x36\xd4\xc2\x11\x4e\x39\xa2\x88\xe7\x2d\xb1\x4d\x4c\
+\x4c\x1e\x05\x85\xd8\xcf\x0c\xa0\xca\xb1\xd9\x2a\x23\x21\x7d\x8b\
+\x38\x9f\xb1\x91\xbc\x05\xf1\x25\x1d\xea\xf4\xf3\xa6\x0a\x5e\x90\
+\x9b\x29\x91\xe1\x61\x57\x10\x29\x15\x71\x22\xb8\x59\x94\xa8\x8b\
+\x14\x9c\x4a\x18\x32\x9e\xb3\x86\xd3\x92\xf6\x71\x9d\x86\x1b\x12\
+\x24\x3c\x39\xe4\xcc\xf6\x75\x26\x3d\x4b\x86\x22\xfc\xb7\x8d\x44\
+\xd5\x6d\xb0\x85\x75\x28\xb1\x3c\x84\x84\x2e\x10\x38\x80\x11\xa8\
+\x72\xb1\xce\x81\xf0\xce\x9f\x0d\x4d\xc6\x39\xad\xfd\x5a\x01\x0c\
+\xb3\x8b\xca\x16\x40\x28\x0b\x93\xa2\xf3\xc1\xc7\xfc\x92\x74\xb9\
+\xb4\x27\x95\xeb\xc5\x01\x64\xe5\x4c\xe7\x78\xea\xac\xd4\x44\x4f\
+\x94\xd4\xf4\x13\xd1\x28\x86\x88\xe8\xb9\x42\x4d\x60\x88\x24\x9a\
+\x13\x63\x24\xa1\xa7\xa1\xe8\x09\x41\xdb\x70\x4c\xcc\x87\x5a\xf3\
+\xe4\xb6\x5b\xb5\x25\x54\x25\x43\xac\x96\xcd\x24\xbe\xf1\xa4\xf8\
+\xf0\xd9\x2d\xef\x44\xa5\xce\x67\x23\xb9\x90\x99\xcb\x4b\x41\xaa\
+\xf1\xc3\x12\xe8\x34\xab\x88\xf0\x41\x90\x9d\xd4\x5c\x1f\x29\x98\
+\xc3\xec\x1f\x3f\x5b\x45\x8b\xc1\xca\x91\x73\x53\xd5\xb2\xcd\x22\
+\xb6\x8d\xcc\x68\x5e\x91\xf5\x26\xac\xd0\x41\x72\xca\xec\xb9\xc4\
+\x35\xfc\xe7\x5a\x87\x0a\xf5\xf1\xa7\x47\x26\xe1\x9c\xae\x83\xfa\
+\x13\xa2\x39\x24\x34\xbd\x8a\xee\x1f\xbf\xea\x98\x2c\x0c\xc9\xe9\
+\x85\xe2\x56\xe8\x22\x17\x0b\x42\xca\x52\xd8\x72\xb2\x37\xc7\x6c\
+\x82\x84\x00\x94\xa6\xcf\x8c\xf2\x72\x54\x5d\xb2\x00\x06\x5b\xa5\
+\x8f\x80\x9c\x6d\x5b\x18\x27\x35\x0f\xb0\x29\x1a\x95\x58\x33\x29\
+\x5d\x9f\x44\xde\xce\x5a\x61\x24\xa7\xdb\x8b\xd0\x13\x70\xc5\x0d\
+\x4c\x6e\xf3\x6c\x00\xe7\xb7\x0f\x80\x87\x8a\x3c\x7c\xb8\x9d\xc3\
+\xe7\xe5\x34\x30\x30\x8a\x96\xaf\x26\x99\xc4\xb0\x5a\x1b\xc3\x67\
+\x19\x2c\x08\x5b\x48\x8b\xa5\xd8\x24\xe6\x26\x84\x54\x35\x13\xbe\
+\x6c\x9b\x83\x84\x21\x91\x99\x24\x52\xb6\x94\xc2\xc9\x27\x81\x32\
+\x1f\x55\xda\x25\xab\x9b\xcf\x25\x98\xc6\x66\x90\x94\x87\x9b\x0c\
+\x21\xed\x28\x8a\xa5\xdf\x18\x2f\x05\xc9\x63\x1f\x47\x49\xa5\x84\
+\x6c\xa5\x43\x71\x33\x5b\x8e\x44\x83\x1b\x6e\x8b\x03\x9d\x35\x15\
+\x17\x91\x73\xb2\x72\x90\xd6\x12\x44\xaf\x36\xa9\xc0\x91\xb6\xa2\
+\x13\x99\x98\x6e\x5c\xc0\x2e\xb5\xc7\xa2\x40\xa4\x82\x9c\xb9\x94\
+\x93\x8c\x00\x14\x66\xe2\xa8\x29\xe1\x24\xd2\xb5\xdc\xcc\x5c\x0a\
+\xe5\x4b\x2e\x05\x30\x15\xda\x2d\x16\x70\xe4\x04\xb9\xd0\x10\x28\
+\x8f\xca\x5f\x94\x4d\x8d\xbf\xb3\xaf\xc2\x29\x81\x5d\x67\xd8\xa2\
+\x83\xac\xf9\x08\x8a\x81\x97\x1d\xc5\x21\xff\xd6\x1d\xc2\xc1\x00\
+\x89\x42\xfb\x97\xe2\x0a\x61\xf1\x13\x8a\x44\xd7\x69\x02\xbe\xda\
+\x48\x14\x67\x40\xc5\x5e\x47\x8e\xea\x1f\xe9\xfc\x5f\x9b\x5e\x56\
+\x2f\x04\x60\xdd\xc3\x2f\xd3\xb7\x00\x7f\x94\x90\xdf\x5c\x0d\xbe\
+\x9c\x47\x68\xc4\x13\x55\x50\x61\x23\xd5\x6a\x42\x48\x92\xfd\xdb\
+\xea\x0e\x9b\x50\x6a\x2a\x7f\xb2\x6b\x28\xc0\x73\xb5\xaa\xa4\xee\
+\x84\x82\x0b\x09\x34\x0c\x2e\x24\xb4\x0b\x72\xc7\x54\xd2\x14\x45\
+\x6a\xbe\x7f\xac\x5d\xc8\x06\x16\xf9\x3c\x65\x5d\xef\xd6\xf4\x22\
+\xaf\x4f\x2d\x40\xf5\xfd\xc9\x06\x4c\x86\xa9\xfb\x91\xe9\x13\x20\
+\xdd\x0d\x9b\x43\xb5\x88\x5b\xd9\x23\xc8\x4a\x1c\x8b\x31\x2c\x84\
+\x20\xf9\xd5\xaa\x65\x48\xb5\x7b\x09\x84\x20\x91\xd2\x51\x2c\x0f\
+\xcb\x26\x8d\xc0\xae\x55\x99\x9d\x4d\x2c\x97\x44\x85\xcb\x26\x30\
+\x29\xce\x52\x2e\x99\x48\x8f\x46\x49\xd9\x59\xb4\xd4\x85\x92\xb8\
+\x33\x38\x8f\xbe\x54\xef\x89\x21\x92\xaf\x0b\x18\x48\x89\x1d\x4b\
+\x2d\x2f\x85\x5f\xaf\xcc\x49\xbd\xcc\x84\x4a\x56\x33\x79\x04\xfb\
+\xe7\x98\xcf\x93\x50\x4b\x8a\x0c\x24\xce\xa5\x53\x52\x31\xc5\x14\
+\x45\xad\x43\x40\x91\xe4\x81\xf5\x3a\x5c\x81\xd3\xa8\x89\x1c\x10\
+\x8b\x5f\xb1\x4a\x43\xad\xc7\x84\xb9\x89\xde\xa3\x95\x45\x08\x05\
+\x55\x35\xd2\xf8\x2f\xc8\xa1\x9e\xc4\xca\x63\x2b\x08\x9e\x40\x4f\
+\x20\xa9\xd2\x27\x91\x2c\x14\x95\x4c\xd7\xb2\x93\x41\x45\x58\x08\
+\x4d\x55\x25\x90\xad\x16\x12\xe3\x88\xeb\xac\x96\x06\x11\x85\x20\
+\xc0\xd4\x07\x38\xd4\xdb\xc3\x04\x0d\x5f\xce\xb5\x03\xc2\x6c\x6a\
+\x1b\xb5\xd2\x72\x89\x2c\x9c\x88\x96\x69\xbe\xcf\x35\x9a\x3e\x45\
+\xb8\x40\x4c\x8d\xc3\x84\xd3\xd0\x13\xe1\xce\x5b\xa4\x20\xc4\x75\
+\x2c\x06\x31\x43\x7b\xb8\x2a\xb0\x70\x52\x1b\x0b\xb2\xa6\x20\x74\
+\x1e\x52\xd5\x3a\x02\x2c\x67\xf1\x8a\xb9\xf8\xee\x58\x39\x53\xd2\
+\x64\x22\x19\xba\xed\x03\x88\xe8\x12\xe5\x67\x56\xcd\x29\xb1\x98\
+\x13\x9c\x0d\x4e\x09\x04\x89\x38\xee\x91\x44\xa9\xfa\xd1\xf0\x49\
+\x78\x7f\xe8\x18\xca\xe3\xec\x65\x21\x5c\xa5\x44\x17\x6a\x2a\x78\
+\xda\x39\x1c\x09\xb4\x8d\x22\x75\x53\x02\x59\x30\xb5\xd0\x9d\x12\
+\x96\x39\x93\xde\x17\xa7\x6b\xc9\x49\x8f\x2c\x50\x40\x41\x82\x22\
+\x53\x50\x5e\x11\x73\xe2\x38\xf4\x32\xcf\xd7\x32\xa3\xe8\xa0\xc9\
+\x23\x59\x63\x16\xab\x98\xc6\x39\x5c\xc9\xb2\x8b\xa1\xf1\x33\xa4\
+\xb3\x6e\x45\x50\xab\x58\x98\x62\x52\x28\x13\x33\x8b\x54\x35\xa2\
+\xa1\x5a\x3f\x2a\x8f\x4b\xec\xc4\x12\x31\xeb\xd9\xc4\xa2\x71\x56\
+\xad\x9f\x8d\xb1\x8b\x01\xc7\xa1\x04\x0a\x32\x16\x72\x37\x52\xa4\
+\x90\x44\xef\x56\x5c\x33\x48\x76\x02\x95\xac\xfd\xc5\xf1\x79\x82\
+\xa1\xe3\xcc\xa5\x5a\xde\xef\xad\x92\xc0\x86\x4f\x68\xa8\x66\x35\
+\x93\x48\x61\x93\x5a\x84\x92\x82\x37\x29\xfd\x21\x4c\xdd\xd1\xbc\
+\x35\xae\x0b\x98\x23\x4e\x5b\xe6\xa4\x39\x35\x93\x28\x14\xae\xcd\
+\x5f\x1f\x99\xca\x8e\x98\x3a\xca\x04\xca\x58\xcd\x78\x57\xe1\x44\
+\xbc\x51\xb7\x8e\x20\x94\x89\x3c\x1c\xbd\x3c\x28\x82\xc9\x2a\x20\
+\x50\xcd\x1c\x56\xd5\x62\xd9\x6d\x22\x62\x6e\x2e\x66\xe9\xe7\x9c\
+\xf6\x43\x92\xea\x03\x30\xe5\x69\x22\x95\xd6\xb1\x4c\x11\x65\x4a\
+\xe9\xa6\x95\xc9\xb6\x77\x84\x26\xd3\x68\x72\x91\x8f\x88\xcc\x20\
+\x69\x03\x21\xe4\x42\xa8\xf2\x93\x52\xe5\x5c\x48\x55\x42\x26\x39\
+\xb1\x84\x45\xad\x23\x99\x37\xaf\xc2\x2c\xd5\x8d\x03\x88\x82\x0b\
+\xcb\x06\x0f\xd6\x25\x19\x49\x94\x74\xd5\xce\xd6\x8d\xca\xdb\xab\
+\x24\x64\xb3\xc9\x42\xe4\xea\x9f\x6c\x1b\x0b\x29\xf6\xe0\xe6\x76\
+\xdd\x20\x65\xa4\x5c\xba\x4e\x21\xb3\x14\x7f\x7c\x06\x20\x67\x25\
+\x47\x58\x0e\xcd\x19\x24\xd7\x2e\x64\xd1\x9d\x4c\x71\x15\x30\x36\
+\xab\xa5\x1a\x33\x96\x6d\xf1\x72\x06\x95\x9d\x37\x09\x1e\xb3\xa6\
+\xe0\xe3\x4c\x03\x73\x31\xb7\x5f\xd6\xb8\xfd\x0d\x15\xa5\xbc\x18\
+\xe7\xc4\xfa\x39\x30\xf5\x01\xd1\x3d\xa9\x9b\x3e\xb9\x44\x14\x24\
+\x85\x04\xb2\xe0\x14\x26\xa4\xe4\x54\x40\xb4\xec\xca\x2c\x59\xb8\
+\x4a\x92\x58\xd5\x89\x2c\x10\x80\xd5\x42\x8d\x71\x20\x95\x84\x98\
+\xc5\xf3\x90\x75\x09\xe9\xfd\x76\x72\x68\x5a\x05\x91\x05\x00\x12\
+\x15\xc0\x32\xc4\x1d\x23\xfc\x3f\x7e\x21\x88\xd3\xee\x60\xeb\x4d\
+\x4a\x22\xa4\x52\xc1\x84\x18\x46\xeb\x46\x69\x03\x36\x13\x85\x96\
+\x30\x36\x03\x98\x28\xbd\x6c\xe4\xd8\x9c\x45\x0f\x11\xc5\x2e\x20\
+\xb5\x38\x85\x0b\x30\xec\xb3\x8d\x18\xb8\x6c\x84\x67\xb3\xda\x49\
+\xb1\x0a\x39\xf4\x4a\xa1\x72\x0d\xa3\xd0\x2e\xc6\x81\xc7\x44\x89\
+\x37\x3e\xa9\x44\x66\x10\xc4\xb9\x10\xab\x28\x25\x80\x75\xcd\x02\
+\x5c\x39\x94\x84\xcb\xaa\x86\x50\xb5\x44\x3b\x54\xab\x53\x98\x02\
+\x66\xa7\x91\x97\x08\x1c\x64\x58\x7d\x69\x1f\x41\xc9\x02\x8c\xbe\
+\xdc\xcc\x22\x5e\x43\x6a\x02\xcc\x6a\x11\x6b\x96\x25\x67\x16\x35\
+\x05\xa7\xbc\xa9\x4e\x66\x02\xc8\x2d\x1d\xab\x3c\x5d\x14\x71\x64\
+\xda\xeb\x1b\x4b\x48\x3a\x04\x74\xd7\x1b\x88\x04\x2f\x90\xdd\x3f\
+\x14\x49\x68\x1e\xbb\x92\x34\x3b\xe2\x93\x6f\x00\xad\x67\x5c\x85\
+\x15\xab\x5f\xc6\xf0\xc0\x66\x2c\xb8\xed\x36\xd1\xa7\x67\xa4\x5e\
+\xd9\x15\x23\xeb\xe0\x46\x10\x61\x41\xd6\xf2\x12\xb1\x45\x12\x25\
+\xd5\x87\x20\xe2\x21\x4b\xa8\x94\xe7\x60\x55\x55\xa3\x5e\xca\x85\
+\x27\xa2\x55\x4a\x74\x65\xf5\xd0\x2b\xd5\xae\x26\x56\xea\x50\x2a\
+\x64\x60\x1f\x46\x06\xaf\xa5\x16\x2a\x72\x07\xa5\x16\x12\x0b\x25\
+\x31\x4c\x45\x23\x5d\x46\x3e\xc9\x06\x30\x3a\x32\xf0\xd3\x1d\x1d\
+\x6d\x83\x97\xe2\x8c\x2b\xb1\x62\xd5\xcb\x00\x11\x7e\x77\xde\xf9\
+\x6e\x46\x8e\xe9\xe8\x4a\x64\x31\x52\xf2\x28\x44\x9c\x4f\x5b\x39\
+\xc8\x14\x9a\xa4\x08\x22\xcc\x88\x4d\xa1\x8f\x63\x1a\x98\x73\xda\
+\x6b\x48\x90\xa8\x42\xa6\xd6\xcf\x21\xee\x2b\x4f\x54\xb3\x1c\x29\
+\xe1\x2c\x6c\xe6\x98\xb3\x22\x6e\xba\x9f\x2b\xe8\x1c\x3e\x93\x20\
+\xd6\xa5\x70\xc1\xa7\x92\x26\x18\x99\x0c\x17\x73\xde\x4e\xf8\x29\
+\xe2\xef\xbb\xa6\xf8\xee\xbe\x07\x2e\x3b\x32\x3c\x71\x4b\x36\xf4\
+\x22\x2e\x9b\xde\x04\x66\x60\xf9\xea\x57\xf0\xe8\xea\x97\xb1\x78\
+\xf1\xc3\xee\x46\xe6\xc1\x93\x72\x88\x85\x1f\xb8\xec\x66\x43\x2d\
+\x0e\xa1\x94\x46\x96\x3f\x71\xc1\x04\xdf\xb5\x13\xf7\xe5\xb0\x28\
+\x43\x58\x04\x42\xcc\x2d\x60\xf1\xe5\x76\x81\x06\xce\xdd\xb1\x10\
+\x8f\x97\x87\x85\x19\xa0\xbf\x3f\x8f\x42\x48\x1e\x16\x73\xc8\x63\
+\x74\xf1\x0b\x4a\xf8\x30\x24\xcf\x5f\x2c\x1c\xa1\xb3\x0d\xd7\x46\
+\xa6\x16\xac\xc8\xe3\xa2\x14\xcc\x6a\xa1\x0a\xff\xf3\xf0\xe2\x87\
+\x71\xc6\x85\x37\xfd\xf7\xba\x64\x01\xef\xbe\xf9\xf5\xd9\x74\xf6\
+\x9f\xff\x70\xe7\xce\x1d\xbf\x79\xd9\xc5\x17\xa3\xad\xad\x1d\x00\
+\xf0\xdc\xae\x2b\xb1\x62\xf5\x2b\x00\x80\x91\x77\x37\x63\xfe\x82\
+\x05\xb1\x37\x20\x0a\x6f\x4a\xce\x0a\xcb\xa6\x1a\x82\x68\x12\x24\
+\xe9\x6e\x7a\xd2\x28\xe9\x94\x14\x35\x0a\x50\x6c\xa6\x61\x97\x85\
+\x1a\x96\x8b\x5f\x90\x5e\x8e\xcd\xac\xe2\x97\x90\x56\x3b\x4b\x9a\
+\x4a\x2b\xa3\x32\x8d\x45\xf1\x3c\x40\x5f\x13\x61\xd9\x5a\x10\xe7\
+\x36\x2a\x81\xc1\xb7\x11\x13\x03\xc8\x46\xdf\xfc\x97\xdf\xff\xf3\
+\x93\x8e\x00\x7e\x1b\x78\xfd\x6f\x3e\x36\xcc\x53\xd7\x6c\xdf\xbe\
+\x03\x87\x0f\x1f\x06\x00\xcc\xb9\xb8\x23\xfc\x14\x5c\xe1\x15\x3c\
+\xf2\xc8\x62\xe7\x56\x6e\xe5\x0d\xe1\xf6\x6a\x19\x17\xef\x0d\xbe\
+\xe7\xce\x7b\x03\x9b\x65\x55\xfc\x00\x89\x1e\x3e\xbf\x0c\x4c\xf0\
+\x76\x08\xaf\x92\x9e\x0c\x8f\x1c\x71\xb9\x95\x30\xe7\x36\x1e\x3c\
+\x78\x65\x5e\xf2\xfd\xfa\x75\xb3\x44\x0d\x74\x18\x61\xb5\x54\x8d\
+\x43\x0e\xb5\xc4\x4c\x1e\xbd\x3e\x5c\x3f\xc2\xf9\xa9\xe3\x88\xf3\
+\x7e\x64\xf1\x23\xe8\x38\xff\xba\xff\x31\x16\x2c\xb0\xe9\x44\x76\
+\x1e\x3e\xb4\xfe\x3b\xad\xdd\xbf\x77\xc9\x81\xfd\x7b\x66\x9e\x39\
+\xe9\x4c\xb4\x3b\x24\x00\x80\x0f\xf5\x35\xe3\xec\xbe\x16\xec\xeb\
+\xaf\x60\xf7\x4b\xef\x60\xf7\x4b\xef\x60\xe7\xd6\xa7\xfc\xb3\xee\
+\x34\x99\x2d\xab\x72\xc8\xe5\x5e\x05\x49\xe3\x92\x06\x54\xbd\xc8\
+\x56\xf9\x73\x68\x6a\x2d\xb0\xa9\x24\x62\xce\xb1\xeb\x95\x17\x31\
+\x6d\xda\x05\x25\x55\x7a\x8e\x5e\x09\xa1\x2b\x24\xe7\x4e\x7a\xfd\
+\x07\x9b\xb6\x9a\xf5\x01\x98\x0c\x39\x61\x43\x68\x90\xb6\xa4\xfd\
+\xe4\x27\xbb\xf1\xf6\x9a\xbf\xbe\xba\xee\x06\x00\x00\x43\x07\xbf\
+\xbf\xa4\xbd\xf2\xc7\x67\xfd\xf2\xad\x5d\xb3\xf7\xef\xdf\x8f\xd1\
+\xea\x28\x3a\x3a\x9e\x3b\xc2\x97\x00\x00\x07\x02\x49\x44\x41\x54\
+\x3a\xd0\xd4\x54\x1c\xfa\xec\xbe\x96\xf0\xb3\xaf\xbf\x82\x3d\x2f\
+\xbd\x83\x1d\x5b\xd7\x60\xd6\xac\x59\x82\xec\x98\xb4\x46\xd9\x40\
+\x9c\x94\xa1\x96\x83\xa5\x5a\x16\x54\x22\x96\xaa\xfe\x3b\xbd\xf6\
+\x0c\x2b\xf1\x29\xc7\x0b\x2f\xbf\x80\x69\x17\x4c\x8b\x2d\x65\x9e\
+\x7a\x71\x5c\xbf\x3f\x31\x3a\xab\x5d\xcb\x81\x93\xb2\x3f\xdb\x90\
+\x66\xab\x97\xa2\x88\x65\x5a\xe2\xfc\x6d\x5a\xba\x74\x19\xda\xcf\
+\x99\xfd\x9d\xf7\xf6\x3e\xb5\x62\x2c\x84\xa0\xb1\x6c\x30\x45\xf7\
+\xf4\x87\xbe\x32\x72\x78\xfb\xd5\x18\xdd\xf7\x9b\x93\x26\x4d\x42\
+\xa5\x52\x41\xcf\x94\x1e\x34\x65\xda\xce\x9e\xdb\x35\x18\x2e\x6c\
+\x78\x60\x33\xe6\xcf\xff\xac\xba\x99\x54\xe3\x4c\xc9\x2c\xd9\x66\
+\x07\x3c\x31\x1c\xf1\x44\x32\xaa\x75\xc5\x61\x11\x4a\x46\xb5\x5a\
+\xc5\xe2\xa7\x1e\xc1\x4d\x37\xdd\x1c\x7a\x08\xf4\x03\x47\xd3\x85\
+\x9c\x43\x62\xe7\x9f\xef\x4b\xba\x88\x93\x3c\x01\x3d\x79\x56\x80\
+\xac\x5b\x64\x5a\x44\x92\x86\xee\xce\x73\xf9\x8a\x65\x18\xd8\xfa\
+\x70\x1b\x80\xe1\x71\x67\x00\x62\x9b\xdc\x75\xfe\xdf\x7f\x65\xf4\
+\xbd\xdd\xd7\x66\x34\x30\xab\xd2\x5b\x41\xa5\x52\xc1\x99\x67\x9e\
+\x99\x7c\xf0\xb9\x9d\xb1\x2d\xf7\x53\xf3\xce\x33\xd4\x8f\x55\xa9\
+\x58\xeb\xfd\x50\xd3\xc9\xa3\x24\xa8\x1e\xb3\xac\x5b\xaf\xe4\x8a\
+\xa3\x66\xb0\x00\xa0\x5a\x1d\xc5\xe2\xa7\x96\xe2\xa6\x9b\x6f\xd2\
+\x8b\x3f\x26\x46\x28\x1e\x02\x05\x63\x8f\x64\x1e\xfd\x6e\xf7\x23\
+\xf3\x5e\xf2\x59\xb1\xbf\x58\x12\x1f\x04\xac\x58\xbe\x02\x6d\x67\
+\xcd\x5a\xfe\x8b\x27\x16\x7e\x7a\xac\x06\xea\x57\x65\x00\x61\xeb\
+\xbd\x78\xed\x7f\x1e\x3a\xf8\xe3\x6b\x9b\xf9\xb5\x4f\x12\x11\xa6\
+\x4e\xed\x43\xa5\xd2\x87\xd6\xd6\xd6\xd4\x10\x3c\xb7\x78\x77\x33\
+\xe6\xcf\x5f\x50\xd2\x8b\x23\x9a\xc2\x4c\x08\x20\x11\x82\x89\xcb\
+\x0c\x02\x42\x95\x2b\x79\xc2\x39\x80\xbc\x5a\xc5\xe2\x35\x8f\xe0\
+\xc6\x1b\x6f\xd2\x4f\x09\x51\x80\x91\x2e\xeb\xae\x8e\xaf\xad\xa5\
+\xb6\x31\x94\xbc\xa7\x9f\x3b\x68\xa2\x3f\x11\x1e\x7d\x74\x05\x06\
+\xb6\x3d\x3c\x11\xc0\x7b\xa7\x8c\x01\xc8\xef\xea\x9e\xfe\xd0\x5f\
+\x8f\xbc\xbb\xed\x5a\x54\xf7\x5f\x77\xd4\x10\x11\x8c\x81\x30\xfc\
+\xee\x26\xcc\x9f\x3f\xbf\x16\x6d\x13\xf1\xd4\xf2\x08\x32\x69\x24\
+\x4a\x1f\xfc\x20\x6f\x76\x35\x1f\xc5\x23\x6b\x96\xe0\xc6\x4f\xdc\
+\xa8\x3d\x3e\x79\xc0\xb4\x7d\xb8\x13\x27\x5e\x9c\xa2\x82\x7e\x5e\
+\x41\x62\xc0\x24\x43\xa0\x0d\x15\x8c\x47\x1f\x7d\x0c\x2d\x3d\xe7\
+\xae\x7d\x67\xdd\x5f\xdd\x30\xa6\x83\x82\xfa\x6c\x93\xba\xce\xfb\
+\xfa\xd7\x46\x8f\xfc\x9f\x39\xc4\x07\x2f\xea\xee\xee\x46\x5f\x5f\
+\x1f\xba\xba\xba\xcc\x13\x48\x81\xe7\x76\x14\x21\xa2\x40\x85\xf9\
+\x25\x93\x24\x4b\x56\xa3\x0c\x33\x87\x4a\xaa\x28\x94\x56\x23\xc3\
+\x93\x49\xaa\xa3\x78\x64\xed\x32\x7c\xe2\xc6\x1b\x60\x1f\x39\x13\
+\x4b\xdb\xd2\xbb\x8b\x05\x01\x4b\x63\x3e\x21\x0d\x55\xe2\x99\x40\
+\xc9\xc3\x2b\x90\x86\x06\x22\xc2\x63\xee\x39\xcd\x6d\x67\xcf\xfe\
+\xf6\x2f\x57\xff\xd9\x1f\xe2\x04\x9e\x13\x3c\x9e\x0c\x40\x84\x88\
+\xef\xdf\x35\x74\xf0\x47\xd7\xb4\x66\xaf\xfd\xce\xe8\xc8\x28\x2a\
+\x7d\x15\xf4\x55\xfa\x30\x61\xc2\x84\xd4\x10\x54\x88\x98\x6f\x52\
+\x82\x5a\x85\x12\x4a\xfa\xed\xc5\xfa\x8b\x6a\x49\xf6\x6a\x3e\x8a\
+\x25\x6b\x97\xe1\x86\x1b\x6e\x88\x44\x2f\x81\x62\xf9\xd8\x5b\x23\
+\x5b\xd7\x22\x8e\xa5\xa8\x80\xe2\xb9\x80\x96\xd3\xb8\xcf\xaf\x5c\
+\xb9\x12\x20\x1a\xed\x38\xff\xb7\xbf\x71\x60\xf9\x1f\xff\xa7\xb1\
+\x1e\xf8\x71\x63\x00\x72\xeb\xb9\xf0\xb1\x7b\x87\x07\x36\x5d\xd3\
+\x94\xbf\xfe\x89\xb6\xf6\x76\xf4\x55\xfa\xd0\xdb\xdb\x8b\xe6\xe6\
+\xe6\x63\x33\x86\xf4\x31\xa4\x35\x42\x87\x5e\xcc\xd2\x6f\x79\xb5\
+\x8a\x25\x4f\x2f\xc5\xdc\x1b\x6e\x10\x4f\xf0\x34\xb9\x3b\x95\x3c\
+\x6a\x9e\x52\x0f\x97\xcf\x37\xa4\x34\x35\x30\xfb\xc5\xc7\xc2\xac\
+\x5e\xb5\x0a\xc8\x9a\x07\x26\x4e\xbf\xe5\xc1\xb7\x16\xdf\xf6\x5f\
+\x30\xe6\x4b\x42\x8c\x63\x03\x90\x45\xc7\xc9\x17\x7c\xf3\x6f\x47\
+\xde\x7b\xf1\x1a\xca\x7f\x79\x45\x77\xf7\x64\x54\xfa\xfa\x30\xb9\
+\xab\xcb\xa5\x4a\xa9\x31\x24\xa8\x50\x33\x3b\xe0\x9a\x37\xa2\x9a\
+\x57\xb1\xf4\xe9\x65\x98\x7b\xfd\xf5\xa9\x67\xc3\xa4\x7f\xea\xd1\
+\xae\xc2\xb0\x48\x92\x4d\x6b\x14\x5c\x02\xff\xc5\x1f\x8f\x3f\xfe\
+\x38\xb2\xd6\x89\x3f\x9b\x70\xd1\xef\x7d\xf3\xad\x7f\xbe\xf9\xbe\
+\x93\x46\xcc\x30\xce\xb7\x49\x1f\xbe\xf7\x52\xca\x3a\xee\x6a\xcf\
+\x5e\xb9\x7d\x68\x68\x10\x95\x4a\x1f\xfa\xfa\x2a\x98\x30\x61\x62\
+\x6d\x54\x18\xd8\x8c\xf9\x0b\xe6\xd7\x96\x88\xa8\x8c\x3f\x10\xf2\
+\x7c\xb4\x30\x80\xb9\xd7\x97\x6b\x10\x94\x12\x47\x9d\xba\x1d\x25\
+\xee\x4b\x24\x71\x46\xf3\xe4\x93\x4f\x16\x6a\x5c\x47\xcf\xae\x89\
+\x97\x2e\xf8\xf6\xbe\x6f\x5e\x77\xff\xc9\xbe\xbf\xe3\xde\x00\xe4\
+\x36\xe5\xc2\x55\x7f\x31\x34\xb0\xf1\x9a\xa6\xfc\xf5\x9b\x5a\x5b\
+\x5b\xd1\xd7\x57\x84\x88\x96\x96\x96\xf7\x81\x0a\xb5\xa2\x02\x21\
+\xaf\x8e\x62\xe9\xf7\x4b\x0c\x20\x11\xfb\x8c\xb8\xe3\x57\x39\x97\
+\xa1\x41\x90\x0c\xfd\xa0\x6a\xc6\xf7\xbe\xf7\xaf\x00\x18\x2d\x53\
+\xa6\xaf\xec\xff\xfe\x17\x6e\x1b\xcb\xb4\xee\x03\x6d\x00\x52\xc2\
+\x9e\x3c\xed\x9f\xee\x1f\x79\x6f\xd7\x35\x54\x3d\x30\xa7\x6b\x72\
+\x17\xfa\x2a\x7d\xe8\xee\x9e\xac\x42\x44\xc2\x15\x3e\x3b\x3f\x5d\
+\xad\x45\x09\x41\x55\x2c\xfb\x41\x0d\x03\x28\x31\x1a\x32\x8f\x80\
+\x29\x56\xa4\x2d\xf3\xf8\xe2\xb3\xc5\xc0\x13\x5a\xa6\x7c\x64\xd5\
+\xc1\x1f\x7c\xe1\x36\x00\x87\xeb\x7d\x23\x4f\x55\x03\x50\xc0\xd0\
+\xf9\x6f\xee\xff\xdb\x8e\xec\xa5\x7f\x77\xe4\xc8\x11\xf4\xf6\xf6\
+\xa2\x6f\x6a\x1f\xce\x98\x78\x46\x39\x2a\x0c\x6c\x06\x08\xd1\x18\
+\x04\x25\xa8\xe6\xc7\x60\x00\x47\xb9\x7b\x64\x62\xbf\xf7\xfa\xa7\
+\xd6\xfc\x2b\x00\xca\xdb\xce\xb9\xe6\x9f\xde\x79\xf2\x4f\xff\x23\
+\x80\xd1\xf1\x72\xf3\x3e\x08\x06\x10\x2d\x61\xd6\xf7\xee\x1e\x1e\
+\xd8\x70\x75\x53\xfe\xda\xad\xcd\xcd\xcd\xe8\x9b\xda\x87\x4a\x6f\
+\xe5\xe8\x21\x42\x18\xc2\xfb\x36\x80\x5a\x77\x93\x8a\x04\x6f\xcd\
+\x9a\x35\x00\x65\x23\xed\xe7\x7d\xe2\xef\xdf\x5e\xf9\xef\x3f\xff\
+\xab\x66\xf4\xa7\xbd\x01\xa8\x10\xf1\x91\x6f\xfd\xcd\xc8\xe1\x9d\
+\xd7\x50\xf5\xc0\xd5\x9d\x9d\x9d\xa8\x54\x2a\xe8\xee\xe9\x56\xaa\
+\xa3\x25\x8e\x9f\xfe\xcc\xa7\x4f\xcc\x00\xdc\xb6\x6e\xdd\x5a\x20\
+\x6b\x39\xd4\x31\xfd\x53\x5f\xff\xe5\xb2\xdf\xfd\xcb\xf1\x38\xf0\
+\x1f\x74\x03\x90\x5b\x77\xd7\x79\x7f\x77\xff\xc4\xe6\x97\xfe\xe0\
+\xd0\xa1\x43\x98\x32\x65\x0a\x2a\x95\x0a\x3a\x3b\x3b\x95\xea\xf8\
+\xdc\x8e\x23\x60\xce\x31\xd2\xb1\xe5\xb8\x0d\xc0\x0d\xfc\x40\xfb\
+\x05\xb7\x2c\x7a\xfb\xd1\xdb\xfe\xeb\x78\x1e\xf8\xd3\xc9\x00\xa2\
+\xea\x78\xc9\x8f\x3f\x3f\xd4\xff\xf4\x6f\x34\xf3\xab\xbf\x03\x00\
+\x95\x4a\x05\x95\xbe\x0a\x3a\xda\x3b\xc2\x67\x36\xbe\xfd\xce\xd2\
+\x91\x03\xbb\x3e\xf3\x7e\x8c\x60\xdd\xba\xb5\xa0\xe6\x09\xfb\x3b\
+\x66\x7e\xea\x1b\xbf\x58\xfc\xc9\x2f\x9e\x4a\xf7\xe4\xb4\x32\x00\
+\xa5\x3a\xce\x58\xfc\xdf\x86\xdf\xdd\x36\x27\xcb\xf7\x7d\xbc\xa3\
+\xa3\x03\x53\xa7\x4e\x45\x4f\x4f\x0f\x9a\x9b\x9b\xf1\x5c\xff\xc0\
+\xff\x1e\x7e\x6b\xdb\xed\xff\x3f\x23\x58\xb7\x6e\x2d\xa8\x65\xe2\
+\x1b\x13\x66\x2d\x58\x74\xe0\xa1\x1b\xfe\xea\x54\xbc\x0f\xa7\xad\
+\x01\x88\xad\x6d\xf2\x05\xdf\xf8\xda\xc4\xa6\x5d\x77\xf4\xf7\x1f\
+\x44\x4f\x4f\x0f\xfa\xfa\xfa\xb0\x37\x6b\xf9\x5f\x23\xfb\xb7\x7e\
+\xae\xcc\x08\xd6\xad\x5b\x0b\x6a\x9b\xf4\x7f\x27\xcc\x5a\xf0\x8f\
+\x07\xbe\xf3\xf1\xaf\x9c\xca\x17\xdf\x30\x00\x99\x45\xcc\xfc\xee\
+\x67\x46\x8e\xec\xfe\x54\x7b\xf6\xd3\xdb\x06\x07\x07\x51\x3d\xab\
+\xe3\xa5\x7c\xf0\xe0\xb4\xb9\x73\xaf\xc7\x5b\x3f\x7f\x0b\x2f\xec\
+\xda\x05\x6a\x9f\xbc\x67\xe2\xac\xdb\xff\xe7\xcf\xbf\xfd\x6f\xef\
+\xff\x20\x5c\x73\xc3\x00\x6a\xa6\x94\x4f\x2c\x1c\x3e\xb4\xe1\xda\
+\x6a\xf7\xeb\xb3\x79\x74\xb0\x37\x9b\x58\xd9\x3a\x61\xd6\x82\x87\
+\x7e\xfe\xad\x6b\xbf\xd6\xb8\x3b\xa7\xdf\xd6\xde\xb8\x05\x8d\xad\
+\xb1\x35\xb6\xc6\xd6\xd8\x1a\x5b\x63\x6b\x6c\x8d\xad\xb1\x35\xb6\
+\xc6\xd6\xd8\x1a\x5b\x63\x6b\x6c\x8d\xed\x94\xde\xfe\x1f\x85\xe6\
+\xea\x07\x1c\xa6\x75\x1a\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\
+\x60\x82\
+"
+
+qt_resource_name = "\
+\x00\x04\
+\x00\x05\x9f\x00\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\
+\x00\x05\
+\x00\x6f\xa6\x53\
+\x00\x69\
+\x00\x63\x00\x6f\x00\x6e\x00\x73\
+\x00\x0c\
+\x0d\xfc\x11\x13\
+\x00\x74\
+\x00\x72\x00\x61\x00\x6e\x00\x73\x00\x6c\x00\x61\x00\x74\x00\x69\x00\x6f\x00\x6e\x00\x73\
+\x00\x0a\
+\x06\x57\xbb\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x66\x00\x69\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x6d\xcb\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x70\x00\x6c\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x51\x9b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x63\x00\x73\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x56\x6b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x66\x00\x72\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x6b\x3b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x6a\x00\x61\x00\x2e\x00\x71\x00\x6d\
+\x00\x0d\
+\x08\xc9\x6a\x1d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x7a\x00\x68\x00\x2d\x00\x54\x00\x57\x00\x2e\x00\x71\x00\x6d\
+\x00\x0d\
+\x09\xfa\xaf\x9d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x65\x00\x73\x00\x2d\x00\x45\x00\x53\x00\x2e\x00\x71\x00\x6d\
+\x00\x0d\
+\x0a\xc7\xc9\x5d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x73\x00\x76\x00\x2d\x00\x53\x00\x45\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x6e\x5b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x6e\x00\x6f\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x61\x1b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x75\x00\x6b\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x62\x5b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x72\x00\x6f\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x54\x7b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x68\x00\x75\x00\x2e\x00\x71\x00\x6d\
+\x00\x07\
+\x09\xf0\x35\xdd\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x5c\xab\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x61\x00\x66\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x6f\xcb\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x6e\x00\x6c\x00\x2e\x00\x71\x00\x6d\
+\x00\x0d\
+\x08\xf8\xda\x1d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x7a\x00\x68\x00\x2d\x00\x43\x00\x4e\x00\x2e\x00\x71\x00\x6d\
+\x00\x0d\
+\x04\xf7\x98\xfd\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x70\x00\x74\x00\x2d\x00\x42\x00\x52\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x60\x6b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x74\x00\x72\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x51\x7b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x64\x00\x65\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x54\x6b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x68\x00\x72\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x62\x7b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x72\x00\x75\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x63\x1b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x73\x00\x6b\x00\x2e\x00\x71\x00\x6d\
+\x00\x0a\
+\x06\x6b\x4b\x7d\
+\x00\x53\
+\x00\x68\x00\x69\x00\x70\x00\x5f\x00\x69\x00\x74\x00\x2e\x00\x71\x00\x6d\
+\x00\x12\
+\x03\x27\x8a\x07\
+\x00\x4f\
+\x00\x75\x00\x74\x00\x6c\x00\x69\x00\x6e\x00\x65\x00\x44\x00\x72\x00\x61\x00\x77\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\
+\x00\x67\
+\x00\x10\
+\x0a\xa3\xc2\x07\
+\x00\x53\
+\x00\x69\x00\x6d\x00\x43\x00\x72\x00\x65\x00\x61\x00\x74\x00\x65\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0d\
+\x0b\xa7\x6e\x67\
+\x00\x53\
+\x00\x69\x00\x6d\x00\x52\x00\x75\x00\x6e\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x07\
+\x0f\xa2\x57\xc7\
+\x00\x49\
+\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0e\
+\x0f\xf7\x2d\x47\
+\x00\x53\
+\x00\x69\x00\x6d\x00\x53\x00\x74\x00\x6f\x00\x70\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x13\
+\x05\x9d\xfb\x67\
+\x00\x48\
+\x00\x79\x00\x64\x00\x72\x00\x6f\x00\x73\x00\x74\x00\x61\x00\x74\x00\x69\x00\x63\x00\x73\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\
+\x00\x6e\x00\x67\
+\x00\x0e\
+\x0f\xf0\x94\xc7\
+\x00\x53\
+\x00\x69\x00\x6d\x00\x50\x00\x6f\x00\x73\x00\x74\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x10\
+\x04\xed\x4c\xa7\
+\x00\x41\
+\x00\x72\x00\x65\x00\x61\x00\x43\x00\x75\x00\x72\x00\x76\x00\x65\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0a\
+\x0d\xfc\xe0\xa7\
+\x00\x57\
+\x00\x65\x00\x69\x00\x67\x00\x68\x00\x74\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0b\
+\x0f\x48\xf8\x47\
+\x00\x4c\
+\x00\x6f\x00\x61\x00\x64\x00\x49\x00\x63\x00\x6f\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x08\
+\x08\x4e\x5c\x07\
+\x00\x54\
+\x00\x61\x00\x6e\x00\x6b\x00\x2e\x00\x70\x00\x6e\x00\x67\
+"
+
+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\x02\x00\x00\x00\x02\
+\x00\x00\x00\x0e\x00\x02\x00\x00\x00\x0b\x00\x00\x00\x1b\
+\x00\x00\x00\x1e\x00\x02\x00\x00\x00\x17\x00\x00\x00\x04\
+\x00\x00\x01\xee\x00\x00\x00\x00\x00\x01\x00\x00\x17\x5a\
+\x00\x00\x02\x28\x00\x00\x00\x00\x00\x01\x00\x00\x17\x82\
+\x00\x00\x00\x70\x00\x00\x00\x00\x00\x01\x00\x00\x00\x28\
+\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x00\x17\x96\
+\x00\x00\x01\x6c\x00\x00\x00\x00\x00\x01\x00\x00\x16\xf6\
+\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x00\x3c\
+\x00\x00\x00\x3c\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x01\x9a\x00\x00\x00\x00\x00\x01\x00\x00\x17\x1e\
+\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x17\x6e\
+\x00\x00\x01\x38\x00\x00\x00\x00\x00\x01\x00\x00\x16\xce\
+\x00\x00\x01\x52\x00\x00\x00\x00\x00\x01\x00\x00\x16\xe2\
+\x00\x00\x02\x5c\x00\x00\x00\x00\x00\x01\x00\x00\x17\xaa\
+\x00\x00\x02\x76\x00\x00\x00\x00\x00\x01\x00\x00\x17\xbe\
+\x00\x00\x00\xa4\x00\x00\x00\x00\x00\x01\x00\x00\x00\x50\
+\x00\x00\x02\x90\x00\x00\x00\x00\x00\x01\x00\x00\x17\xd2\
+\x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x00\x14\
+\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00\x16\xba\
+\x00\x00\x01\xb4\x00\x00\x00\x00\x00\x01\x00\x00\x17\x32\
+\x00\x00\x00\xbe\x00\x00\x00\x00\x00\x01\x00\x00\x00\x64\
+\x00\x00\x01\xce\x00\x00\x00\x00\x00\x01\x00\x00\x17\x46\
+\x00\x00\x01\x86\x00\x00\x00\x00\x00\x01\x00\x00\x17\x0a\
+\x00\x00\x00\xde\x00\x01\x00\x00\x00\x01\x00\x00\x00\x78\
+\x00\x00\x00\xfe\x00\x00\x00\x00\x00\x01\x00\x00\x16\xa6\
+\x00\x00\x02\xaa\x00\x00\x00\x00\x00\x01\x00\x00\x17\xe6\
+\x00\x00\x03\x9e\x00\x00\x00\x00\x00\x01\x00\x01\x7c\x73\
+\x00\x00\x03\x50\x00\x00\x00\x00\x00\x01\x00\x01\x07\x79\
+\x00\x00\x03\xfa\x00\x00\x00\x00\x00\x01\x00\x01\xe6\x7a\
+\x00\x00\x02\xd4\x00\x00\x00\x00\x00\x01\x00\x00\x40\xce\
+\x00\x00\x02\xfa\x00\x00\x00\x00\x00\x01\x00\x00\x79\x78\
+\x00\x00\x03\xc4\x00\x00\x00\x00\x00\x01\x00\x01\x93\xfa\
+\x00\x00\x03\xde\x00\x00\x00\x00\x00\x01\x00\x01\xb0\x9d\
+\x00\x00\x03\x1a\x00\x00\x00\x00\x00\x01\x00\x00\xb2\x56\
+\x00\x00\x03\x7c\x00\x00\x00\x00\x00\x01\x00\x01\x46\xe3\
+\x00\x00\x03\x2e\x00\x00\x00\x00\x00\x01\x00\x00\xd3\xc2\
+"
+
+def qInitResources():
+ QtCore.qRegisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+def qCleanupResources():
+ QtCore.qUnregisterResourceData(0x01, qt_resource_struct, qt_resource_name, qt_resource_data)
+
+qInitResources()
diff --git a/src/Mod/Ship/SimInstance.py b/src/Mod/Ship/SimInstance.py
index 85740d0348..0e8f6db2af 100644
--- a/src/Mod/Ship/SimInstance.py
+++ b/src/Mod/Ship/SimInstance.py
@@ -1,29 +1,32 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
from math import *
import threading
+# Qt library
+from PyQt4 import QtGui,QtCore
+
# COIN
from pivy.coin import *
from pivy import coin
@@ -34,640 +37,660 @@ from FreeCAD import Base, Vector
import Part
# Ship design module
-from shipUtils import Paths, Translator, Math
+from shipUtils import Paths, Math
class FreeSurfaceFace:
- def __init__(self, pos, normal, l, b):
- """ Face storage.
- @param pos Face position.
- @param normal Face normal.
- @param l Element length (distance between elements at x direction)
- @param b Element beam (distance between elements at y direction)
- """
- self.pos = pos
- self.normal = normal
- self.area = l*b
+ def __init__(self, pos, normal, l, b):
+ """ Face storage.
+ @param pos Face position.
+ @param normal Face normal.
+ @param l Element length (distance between elements at x direction)
+ @param b Element beam (distance between elements at y direction)
+ """
+ self.pos = pos
+ self.normal = normal
+ self.area = l*b
- def __init__(self, pos, normal, area):
- """ Face storage.
- @param pos Face position.
- @param normal Face normal.
- @param area Element area
- """
- self.pos = pos
- self.normal = normal
- self.area = area
+ def __init__(self, pos, normal, area):
+ """ Face storage.
+ @param pos Face position.
+ @param normal Face normal.
+ @param area Element area
+ """
+ self.pos = pos
+ self.normal = normal
+ self.area = area
class ShipSimulation:
- def __init__(self, obj, fsMeshData, waves):
- """ Creates a new simulation instance on active document.
- @param obj Created Part::FeaturePython object.
- @param fsMeshData [L,B,N] Free surface mesh data, with lenght
- (x), Beam (y) and desired number of points.
- @param waves [[A,T,phi,heading],] Waves involved
- """
- # Add uniqueness property to identify Tank instances
- obj.addProperty("App::PropertyBool","IsShipSimulation","ShipSimulation", str(Translator.translate("True if is a valid ship simulation instance"))).IsShipSimulation=True
- # Compute free surface mesh
- self.createFSMesh(obj,fsMeshData)
- self.computeWaves(obj,waves)
- # Store waves
- obj.addProperty("App::PropertyVectorList","Waves","ShipSimulation", str(Translator.translate("Waves (Amplitude,period,phase)"))).Waves=[]
- obj.addProperty("App::PropertyFloatList","Waves_Dir","ShipSimulation", str(Translator.translate("Waves direction (0 deg to stern waves)"))).Waves_Dir=[]
- w = []
- d = []
- for i in range(0,len(waves)):
- w.append(Vector(waves[i][0], waves[i][1], waves[i][2]))
- d.append(waves[i][3])
- obj.Waves = w
- obj.Waves_Dir = d
- # Add shapes
- shape = self.computeShape(obj)
- if not shape:
- obj.IsShipSimulation=False
- return
- obj.Shape = shape
- obj.Proxy = self
+ def __init__(self, obj, fsMeshData, waves):
+ """ Creates a new simulation instance on active document.
+ @param obj Created Part::FeaturePython object.
+ @param fsMeshData [L,B,N] Free surface mesh data, with lenght
+ (x), Beam (y) and desired number of points.
+ @param waves [[A,T,phi,heading],] Waves involved
+ """
+ # Add uniqueness property to identify Tank instances
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship simulation instance",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyBool","IsShipSimulation","ShipSimulation", tooltip).IsShipSimulation=True
+ # Compute free surface mesh
+ self.createFSMesh(obj,fsMeshData)
+ self.computeWaves(obj,waves)
+ # Store waves
+ tooltip = str(QtGui.QApplication.translate("Ship","Waves (Amplitude,period,phase)",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyVectorList","Waves","ShipSimulation", tooltip).Waves=[]
+ tooltip = str(QtGui.QApplication.translate("Ship","Waves direction (0 deg to stern waves)",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyFloatList","Waves_Dir","ShipSimulation", tooltip).Waves_Dir=[]
+ w = []
+ d = []
+ for i in range(0,len(waves)):
+ w.append(Vector(waves[i][0], waves[i][1], waves[i][2]))
+ d.append(waves[i][3])
+ obj.Waves = w
+ obj.Waves_Dir = d
+ # Add shapes
+ shape = self.computeShape(obj)
+ if not shape:
+ obj.IsShipSimulation=False
+ return
+ obj.Shape = shape
+ obj.Proxy = self
- def onChanged(self, fp, prop):
- """ Property changed, tank must be recomputed """
- if prop == "IsShipSimulation":
- FreeCAD.Console.PrintWarning("Ussually you don't want to modify manually this option.\n")
+ def onChanged(self, fp, prop):
+ """ Property changed, tank must be recomputed """
+ if prop == "IsShipSimulation":
+ msg = QtGui.QApplication.translate("ship_console", "Ussually you don't want to modify manually this option",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintWarning(msg + "\n")
- def execute(self, obj):
- """ Shape recomputation called """
- obj.Shape = self.computeShape(obj)
+ def execute(self, obj):
+ """ Shape recomputation called """
+ obj.Shape = self.computeShape(obj)
- def createFSMesh(self, obj, fsMeshData):
- """ Create or modify free surface mesh.
- @param obj Created Part::FeaturePython object.
- @param fsMeshData [L,B,N] Free surface mesh data, with lenght
- (x), Beam (y) and desired number of points.
- """
- # Study input object
- try:
- props = obj.PropertiesList
- props.index("IsShipSimulation")
- if not obj.IsShipSimulation:
- msg = str(Translator.translate("Object is not a valid ship simulation.\n"))
- FreeCAD.Console.PrintError(msg)
- return
- except ValueError:
- msg = str(Translator.translate("Object is not a ship simulation.\n"))
- FreeCAD.Console.PrintError(msg)
- return
- # Get areas and number of elements per direction
- L = fsMeshData[0]
- B = fsMeshData[1]
- N = fsMeshData[2]
- A = L*B
- area = A/N
- l = sqrt(area)
- b = sqrt(area)
- nx = int(round(L / l))
- ny = int(round(B / b))
- # Start data fields if not already exist
- props = obj.PropertiesList
- try:
- props.index("FS_Nx")
- except ValueError:
- obj.addProperty("App::PropertyInteger","FS_Nx","ShipSimulation", str(Translator.translate("Free surface number of elements at x direction"))).FS_Nx=0
- try:
- props.index("FS_Ny")
- except ValueError:
- obj.addProperty("App::PropertyInteger","FS_Ny","ShipSimulation", str(Translator.translate("Free surface number of elements at y direction"))).FS_Ny=0
- try:
- props.index("FS_Position")
- except ValueError:
- obj.addProperty("App::PropertyVectorList","FS_Position","ShipSimulation", str(Translator.translate("Free surface elements position"))).FS_Position=[]
- try:
- props.index("FS_Area")
- except ValueError:
- obj.addProperty("App::PropertyFloatList","FS_Area","ShipSimulation", str(Translator.translate("Free surface elements area"))).FS_Area=[]
- try:
- props.index("FS_Normal")
- except ValueError:
- obj.addProperty("App::PropertyVectorList","FS_Normal","ShipSimulation", str(Translator.translate("Free surface elements normal"))).FS_Normal=[]
- # Fill data
- obj.FS_Nx = nx
- obj.FS_Ny = ny
- pos = []
- areas = []
- normal = []
- for i in range(0,nx):
- for j in range(0,ny):
- pos.append(Vector(-0.5*L + (i+0.5)*l,-0.5*B + (j+0.5)*b,0.0))
- areas.append(l*b)
- normal.append(Vector(0.0,0.0,1.0))
- obj.FS_Position = pos[:]
- obj.FS_Area = areas[:]
- obj.FS_Normal = normal[:]
+ def createFSMesh(self, obj, fsMeshData):
+ """ Create or modify free surface mesh.
+ @param obj Created Part::FeaturePython object.
+ @param fsMeshData [L,B,N] Free surface mesh data, with lenght
+ (x), Beam (y) and desired number of points.
+ """
+ # Study input object
+ try:
+ props = obj.PropertiesList
+ props.index("IsShipSimulation")
+ if not obj.IsShipSimulation:
+ msg = QtGui.QApplication.translate("ship_console", "Object is not a valid ship simulation",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + '\n')
+ return
+ except ValueError:
+ msg = QtGui.QApplication.translate("ship_console", "Object is not a ship simulation",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + '\n')
+ return
+ # Get areas and number of elements per direction
+ L = fsMeshData[0]
+ B = fsMeshData[1]
+ N = fsMeshData[2]
+ A = L*B
+ area = A/N
+ l = sqrt(area)
+ b = sqrt(area)
+ nx = int(round(L / l))
+ ny = int(round(B / b))
+ # Start data fields if not already exist
+ props = obj.PropertiesList
+ try:
+ props.index("FS_Nx")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Free surface number of elements at x direction",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyInteger","FS_Nx","ShipSimulation", tooltip).FS_Nx=0
+ try:
+ props.index("FS_Ny")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Free surface number of elements at y direction",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyInteger","FS_Ny","ShipSimulation", tooltip).FS_Ny=0
+ try:
+ props.index("FS_Position")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Free surface elements position",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyVectorList","FS_Position","ShipSimulation", tooltip).FS_Position=[]
+ try:
+ props.index("FS_Area")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Free surface elements area",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyFloatList","FS_Area","ShipSimulation", tooltip).FS_Area=[]
+ try:
+ props.index("FS_Normal")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("Ship","Free surface elements normal",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyVectorList","FS_Normal","ShipSimulation", tooltip).FS_Normal=[]
+ # Fill data
+ obj.FS_Nx = nx
+ obj.FS_Ny = ny
+ pos = []
+ areas = []
+ normal = []
+ for i in range(0,nx):
+ for j in range(0,ny):
+ pos.append(Vector(-0.5*L + (i+0.5)*l,-0.5*B + (j+0.5)*b,0.0))
+ areas.append(l*b)
+ normal.append(Vector(0.0,0.0,1.0))
+ obj.FS_Position = pos[:]
+ obj.FS_Area = areas[:]
+ obj.FS_Normal = normal[:]
- def computeWaves(self, obj, waves):
- """ Add waves effect to free surface mesh positions.
- @param obj Created Part::FeaturePython object.
- @param waves waves data [A,T,phase, heading].
- """
- grav = 9.81
- positions = obj.FS_Position[:]
- for i in range(0, len(positions)):
- for w in waves:
- A = w[0]
- T = w[1]
- phase = w[2]
- heading = pi*w[3]/180.0
- wl = 0.5 * grav / pi * T*T
- k = 2.0*pi/wl
- frec = 2.0*pi/T
- pos = obj.FS_Position[i]
- l = pos.x*cos(heading) + pos.y*sin(heading)
- amp = A*sin(k*l + phase)
- positions[i].z = positions[i].z + amp
- obj.FS_Position = positions[:]
+ def computeWaves(self, obj, waves):
+ """ Add waves effect to free surface mesh positions.
+ @param obj Created Part::FeaturePython object.
+ @param waves waves data [A,T,phase, heading].
+ """
+ grav = 9.81
+ positions = obj.FS_Position[:]
+ for i in range(0, len(positions)):
+ for w in waves:
+ A = w[0]
+ T = w[1]
+ phase = w[2]
+ heading = pi*w[3]/180.0
+ wl = 0.5 * grav / pi * T*T
+ k = 2.0*pi/wl
+ frec = 2.0*pi/T
+ pos = obj.FS_Position[i]
+ l = pos.x*cos(heading) + pos.y*sin(heading)
+ amp = A*sin(k*l + phase)
+ positions[i].z = positions[i].z + amp
+ obj.FS_Position = positions[:]
- def computeShape(self, obj):
- """ Computes simulation involved shapes.
- @param obj Created Part::FeaturePython object.
- @return Shape
- """
- nx = obj.FS_Nx
- ny = obj.FS_Ny
- mesh = FSMesh(obj)
- # Create BSpline surface
- surf = Part.BSplineSurface()
- for i in range(1,nx-1):
- u = i / float(nx-1)
- surf.insertUKnot(u,i,0.000001)
- for i in range(1,ny-1):
- v = i / float(ny-1)
- surf.insertVKnot(v,i,0.000001)
- for i in range(0,nx):
- for j in range(0,ny):
- u = i / float(nx-1)
- v = j / float(ny-1)
- point = mesh[i][j].pos
- surf.movePoint(u,v,point,i+1,i+1,j+1,j+1)
- return surf.toShape()
+ def computeShape(self, obj):
+ """ Computes simulation involved shapes.
+ @param obj Created Part::FeaturePython object.
+ @return Shape
+ """
+ nx = obj.FS_Nx
+ ny = obj.FS_Ny
+ mesh = FSMesh(obj)
+ # Create BSpline surface
+ surf = Part.BSplineSurface()
+ for i in range(1,nx-1):
+ u = i / float(nx-1)
+ surf.insertUKnot(u,i,0.000001)
+ for i in range(1,ny-1):
+ v = i / float(ny-1)
+ surf.insertVKnot(v,i,0.000001)
+ for i in range(0,nx):
+ for j in range(0,ny):
+ u = i / float(nx-1)
+ v = j / float(ny-1)
+ point = mesh[i][j].pos
+ surf.movePoint(u,v,point,i+1,i+1,j+1,j+1)
+ return surf.toShape()
class ViewProviderShipSimulation:
- def __init__(self, obj):
- """ Set this object to the proxy object of the actual view provider """
- obj.Proxy = self
+ def __init__(self, obj):
+ """ Set this object to the proxy object of the actual view provider """
+ obj.Proxy = self
- def attach(self, obj):
- """ Setup the scene sub-graph of the view provider, this method is mandatory """
- return
+ def attach(self, obj):
+ """ Setup the scene sub-graph of the view provider, this method is mandatory """
+ return
- def updateData(self, fp, prop):
- """ If a property of the handled feature has changed we have the chance to handle this here """
- return
+ def updateData(self, fp, prop):
+ """ If a property of the handled feature has changed we have the chance to handle this here """
+ return
- def getDisplayModes(self,obj):
- ''' Return a list of display modes. '''
- modes=[]
- return modes
+ def getDisplayModes(self,obj):
+ ''' Return a list of display modes. '''
+ modes=[]
+ return modes
- def getDefaultDisplayMode(self):
- ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
- return "Flat Lines"
+ def getDefaultDisplayMode(self):
+ ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
+ return "Flat Lines"
- def setDisplayMode(self,mode):
- ''' Map the display mode defined in attach with those defined in getDisplayModes.
- Since they have the same names nothing needs to be done. This method is optinal.
- '''
- return mode
+ def setDisplayMode(self,mode):
+ ''' Map the display mode defined in attach with those defined in getDisplayModes.
+ Since they have the same names nothing needs to be done. This method is optinal.
+ '''
+ return mode
- def onChanged(self, vp, prop):
- ''' Print the name of the property that has changed '''
- # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
+ def onChanged(self, vp, prop):
+ ''' Print the name of the property that has changed '''
+ # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
- def __getstate__(self):
- ''' When saving the document this object gets stored using Python's cPickle module.
- Since we have some un-pickable here -- the Coin stuff -- we must define this method
- to return a tuple of all pickable objects or None.
- '''
- return None
+ def __getstate__(self):
+ ''' When saving the document this object gets stored using Python's cPickle module.
+ Since we have some un-pickable here -- the Coin stuff -- we must define this method
+ to return a tuple of all pickable objects or None.
+ '''
+ return None
- def __setstate__(self,state):
- ''' When restoring the pickled object from document we have the chance to set some
- internals here. Since no data were pickled nothing needs to be done here.
- '''
- return None
+ def __setstate__(self,state):
+ ''' When restoring the pickled object from document we have the chance to set some
+ internals here. Since no data were pickled nothing needs to be done here.
+ '''
+ return None
- def getIcon(self):
- return """
- /* XPM */
- static char * Sim_xpm[] = {
- "32 32 301 2",
- " c None",
- ". c #CCCCCC",
- "+ c #A9A9A9",
- "@ c #989898",
- "# c #A1A1A1",
- "$ c #C3C3C3",
- "% c #C1C0C1",
- "& c #BFBFBF",
- "* c #A7A7A7",
- "= c #808080",
- "- c #5C5C5C",
- "; c #565655",
- "> c #4E4E4E",
- ", c #676767",
- "' c #898989",
- ") c #B6B5B6",
- "! c #BABABA",
- "~ c #B9B9B9",
- "{ c #A5A5A5",
- "] c #7E7E7E",
- "^ c #595A59",
- "/ c #575656",
- "( c #535353",
- "_ c #505050",
- ": c #4D4D4C",
- "< c #474747",
- "[ c #404040",
- "} c #4D4D4D",
- "| c #787878",
- "1 c #B8B7B8",
- "2 c #B6B6B6",
- "3 c #888888",
- "4 c #7C7C7C",
- "5 c #575657",
- "6 c #535354",
- "7 c #4E4D4E",
- "8 c #4A4A4A",
- "9 c #444444",
- "0 c #414141",
- "a c #3E3E3E",
- "b c #393938",
- "c c #313131",
- "d c #393939",
- "e c #636363",
- "f c #ABABAB",
- "g c #B3B3B3",
- "h c #848484",
- "i c #787979",
- "j c #545454",
- "k c #515151",
- "l c #4B4B4B",
- "m c #484748",
- "n c #3B3B3B",
- "o c #383838",
- "p c #353535",
- "q c #323232",
- "r c #2F2F2E",
- "s c #2A2A2A",
- "t c #222323",
- "u c #252625",
- "v c #AFAFAF",
- "w c #767676",
- "x c #484848",
- "y c #454545",
- "z c #424242",
- "A c #3F3F3E",
- "B c #3B3B3C",
- "C c #393838",
- "D c #2F2F2F",
- "E c #2C2C2C",
- "F c #292929",
- "G c #262626",
- "H c #222222",
- "I c #1F1F20",
- "J c #171716",
- "K c #959595",
- "L c #747474",
- "M c #4E4E4F",
- "N c #4C4B4C",
- "O c #484849",
- "P c #424243",
- "Q c #282828",
- "R c #525251",
- "S c #373737",
- "T c #353636",
- "U c #333233",
- "V c #30302F",
- "W c #2C2D2D",
- "X c #232323",
- "Y c #201F20",
- "Z c #1D1D1D",
- "` c #151414",
- " . c #717272",
- ".. c #4C4C4C",
- "+. c #484949",
- "@. c #464545",
- "#. c #424343",
- "$. c #3A3A3A",
- "%. c #5D4A49",
- "&. c #7E7E86",
- "*. c #56569F",
- "=. c #3E3E41",
- "-. c #757575",
- ";. c #575757",
- ">. c #222221",
- ",. c #262627",
- "'. c #242423",
- "). c #212020",
- "!. c #1A1A1A",
- "~. c #121212",
- "{. c #939493",
- "]. c #6F6F6F",
- "^. c #494949",
- "/. c #464646",
- "(. c #434343",
- "_. c #554545",
- ":. c #686863",
- "<. c #939394",
- "[. c #BDBDBD",
- "}. c #202021",
- "|. c #1E1E1E",
- "1. c #171718",
- "2. c #0F0F0F",
- "3. c #929292",
- "4. c #6C6D6D",
- "5. c #464746",
- "6. c #525F73",
- "7. c #444648",
- "8. c #3D3D3D",
- "9. c #2D2C2A",
- "0. c #A1A2A2",
- "a. c #AAACAC",
- "b. c #A6A7A7",
- "c. c #A8AAAA",
- "d. c #AFB0B0",
- "e. c #777676",
- "f. c #9A9A9A",
- "g. c #1B1B1B",
- "h. c #181818",
- "i. c #0C0C0C",
- "j. c #909090",
- "k. c #6B6A6B",
- "l. c #55657E",
- "m. c #6990FB",
- "n. c #6483CD",
- "o. c #5871B2",
- "p. c #434E7E",
- "q. c #A97C76",
- "r. c #AB7777",
- "s. c #AC7070",
- "t. c #A26565",
- "u. c #805C5C",
- "v. c #848686",
- "w. c #424342",
- "x. c #151515",
- "y. c #0A0909",
- "z. c #8F8F8F",
- "A. c #676868",
- "B. c #3B3A3A",
- "C. c #383738",
- "D. c #353534",
- "E. c #45525F",
- "F. c #6367AC",
- "G. c #804682",
- "H. c #942A39",
- "I. c #991312",
- "J. c #540901",
- "K. c #393742",
- "L. c #1C1C1C",
- "M. c #191919",
- "N. c #161515",
- "O. c #121313",
- "P. c #070707",
- "Q. c #8D8E8D",
- "R. c #656566",
- "S. c #3E3F3F",
- "T. c #2F2E2F",
- "U. c #353838",
- "V. c #35496A",
- "W. c #3E4D88",
- "X. c #354889",
- "Y. c #5573D7",
- "Z. c #5D80FB",
- "`. c #374899",
- " + c #293338",
- ".+ c #101010",
- "++ c #0D0D0D",
- "@+ c #040404",
- "#+ c #8C8C8C",
- "$+ c #8B8B8B",
- "%+ c #4B4A4B",
- "&+ c #303030",
- "*+ c #333232",
- "=+ c #2F2F30",
- "-+ c #232223",
- ";+ c #1A1919",
- ">+ c #2E3949",
- ",+ c #5C7BA3",
- "'+ c #36467D",
- ")+ c #536F93",
- "!+ c #0A0A0A",
- "~+ c #010101",
- "{+ c #C1C1C1",
- "]+ c #B8B8B8",
- "^+ c #A0A0A0",
- "/+ c #3F3F3F",
- "(+ c #222122",
- "_+ c #202020",
- ":+ c #161717",
- "<+ c #141414",
- "[+ c #111011",
- "}+ c #0D0E0E",
- "|+ c #0B0B0A",
- "1+ c #000000",
- "2+ c #525252",
- "3+ c #686868",
- "4+ c #ADADAD",
- "5+ c #9E9F9F",
- "6+ c #6D6D6D",
- "7+ c #3C3C3C",
- "8+ c #131414",
- "9+ c #111111",
- "0+ c #0E0E0E",
- "a+ c #0B0B0B",
- "b+ c #080708",
- "c+ c #050504",
- "d+ c #4C4D4C",
- "e+ c #4D4C4D",
- "f+ c #494A4A",
- "g+ c #454444",
- "h+ c #9D9D9D",
- "i+ c #9E9E9E",
- "j+ c #AEAEAE",
- "k+ c #BEBEBF",
- "l+ c #BEBDBD",
- "m+ c #979797",
- "n+ c #6A6B6A",
- "o+ c #3F3F40",
- "p+ c #020202",
- "q+ c #030303",
- "r+ c #878787",
- "s+ c #69696A",
- "t+ c #868685",
- "u+ c #646464",
- "v+ c #474647",
- "w+ c #656565",
- "x+ c #9E9F9E",
- "y+ c #A8A8A8",
- "z+ c #AFAFAE",
- "A+ c #A4A4A4",
- "B+ c #7A7A7A",
- "C+ c #969696",
- "D+ c #363636",
- "E+ c #777776",
- "F+ c #8C8D8D",
- "G+ c #7D7D7D",
- "H+ c #5E5E5E",
- "I+ c #4F4F50",
- "J+ c #808181",
- "K+ c #707070",
- "L+ c #909191",
- "M+ c #9C9C9C",
- "N+ c #787877",
- "O+ c #696969",
- "P+ c #616161",
- "Q+ c #6E6E6E",
- "R+ c #7C7B7C",
- "S+ c #777677",
- "T+ c #6F6E6E",
- "U+ c #595959",
- "V+ c #717171",
- "W+ c #8D8D8D",
- "X+ c #515051",
- "Y+ c #49494A",
- "Z+ c #4B4A4A",
- "`+ c #606060",
- " @ c #6A6A6A",
- ".@ c #616162",
- "+@ c #6C6D6C",
- "@@ c #767777",
- "#@ c #727272",
- "$@ c #6B6B6B",
- "%@ c #828283",
- "&@ c #757475",
- "*@ c #444545",
- "=@ c #565656",
- "-@ c #5A595A",
- ";@ c #666666",
- ">@ c #878687",
- ",@ c #8A8A8A",
- "'@ c #797979",
- ")@ c #444344",
- "!@ c #7F8080",
- "~@ c #737373",
- "{@ c #484747",
- "]@ c #707170",
- "^@ c #7F7F7F",
- "/@ c #676867",
- "(@ c #4D4C4C",
- "_@ c #5F5F5F",
- ":@ c #434444",
- " ",
- " ",
- " . + ",
- " @ # $ % & * ",
- " = - ; > , ' ) ! ~ { ",
- " ] ^ / ( _ : < [ } | # 1 2 # 3 ",
- " 4 5 6 _ 7 8 < 9 0 a b c d e ' f g + h ",
- " i j k 7 l m 9 0 a n o p q r s t u < | v ",
- " w k > l x y z A B C p q D E F G H I J K ",
- " L M N O y P Q R S T U V W F G X Y Z ` K ",
- " ...+.@.#.$.%.&.*.=.-.;.>.,.'.).Z !.~.{. ",
- " ].^./.(.[ c _._ :.<.[.$ ' /.}.|.!.1.2.3. ",
- " 4.5.6.7.8.9.# 0.a.b.c.d.e.f.g.g.h.` i.j. ",
- " k.9 l.m.n.o.p.q.r.s.t.u.v.w.g.h.x.~.y.z. ",
- " A.0 a B.C.D.E.F.G.H.I.J.K.L.M.N.O.2.P.Q. ",
- " R.S.n o p q T.E U.V.W.X.Y.Z.`. +.+++@+#+ ",
- " $+%+&+q *+=+E F G -+I Z ;+>+,+'+)+!+~+$+ ",
- " {+]+^+w /+H (+X _+Z !.:+<+[+}+|+P.1+' ",
- " k 2+_ > 3+z.4+5+6+7+x.~.8+9+0+a+b+c+1+3 ",
- " %+..d+e+..f+< g+h+i+j+k+l+m+n+o+P.p+q+p+1+r+ ",
- " s+t+u+< (.< v+y 9 (.w+x+y+z+y+h+A+B+C+K ].D+1+h ",
- " E+i+F+f.j.G+H+9 [ (.z I+J+m+f.j.K+z 9 9 9 K+L+r+/.9 (. ",
- " L M+N+O+u+P+Q+R+S+T+U+y 8 - ;...9 9 9 9 9 9 9 9 (.(.k w+ ",
- " V+m+' W+r+] , X+Y+(.: r+L P+k 9 z (.9 9 9 9 (.(.Z+;.- `+ ",
- " ].C+w @u+.@+@@@#@$@j %@B+&@#@L $@H+2+/.0 (.*@+.} 2+=@-@ ",
- " ;@| >@,@'@u+k 8 )@..!@| ~@V+#@#@#@#@L 6+..(.9 {@.._ ( ",
- " e ]@^@] /@k G+w #@#@#@#@#@V+ @$@_ 9 9 9 /.Y+(@ ",
- " - R.T+L ~@#@#@#@#@]._ _@_ 9 9 9 (.9 x ",
- " =@_@O+L ~@#@~@L _ 9 9 :@ ",
- " ;.H+ @-._ (. ",
- " ",
- " "};
- """
+ def getIcon(self):
+ return """
+ /* XPM */
+ static char * Sim_xpm[] = {
+ "32 32 301 2",
+ " c None",
+ ". c #CCCCCC",
+ "+ c #A9A9A9",
+ "@ c #989898",
+ "# c #A1A1A1",
+ "$ c #C3C3C3",
+ "% c #C1C0C1",
+ "& c #BFBFBF",
+ "* c #A7A7A7",
+ "= c #808080",
+ "- c #5C5C5C",
+ "; c #565655",
+ "> c #4E4E4E",
+ ", c #676767",
+ "' c #898989",
+ ") c #B6B5B6",
+ "! c #BABABA",
+ "~ c #B9B9B9",
+ "{ c #A5A5A5",
+ "] c #7E7E7E",
+ "^ c #595A59",
+ "/ c #575656",
+ "( c #535353",
+ "_ c #505050",
+ ": c #4D4D4C",
+ "< c #474747",
+ "[ c #404040",
+ "} c #4D4D4D",
+ "| c #787878",
+ "1 c #B8B7B8",
+ "2 c #B6B6B6",
+ "3 c #888888",
+ "4 c #7C7C7C",
+ "5 c #575657",
+ "6 c #535354",
+ "7 c #4E4D4E",
+ "8 c #4A4A4A",
+ "9 c #444444",
+ "0 c #414141",
+ "a c #3E3E3E",
+ "b c #393938",
+ "c c #313131",
+ "d c #393939",
+ "e c #636363",
+ "f c #ABABAB",
+ "g c #B3B3B3",
+ "h c #848484",
+ "i c #787979",
+ "j c #545454",
+ "k c #515151",
+ "l c #4B4B4B",
+ "m c #484748",
+ "n c #3B3B3B",
+ "o c #383838",
+ "p c #353535",
+ "q c #323232",
+ "r c #2F2F2E",
+ "s c #2A2A2A",
+ "t c #222323",
+ "u c #252625",
+ "v c #AFAFAF",
+ "w c #767676",
+ "x c #484848",
+ "y c #454545",
+ "z c #424242",
+ "A c #3F3F3E",
+ "B c #3B3B3C",
+ "C c #393838",
+ "D c #2F2F2F",
+ "E c #2C2C2C",
+ "F c #292929",
+ "G c #262626",
+ "H c #222222",
+ "I c #1F1F20",
+ "J c #171716",
+ "K c #959595",
+ "L c #747474",
+ "M c #4E4E4F",
+ "N c #4C4B4C",
+ "O c #484849",
+ "P c #424243",
+ "Q c #282828",
+ "R c #525251",
+ "S c #373737",
+ "T c #353636",
+ "U c #333233",
+ "V c #30302F",
+ "W c #2C2D2D",
+ "X c #232323",
+ "Y c #201F20",
+ "Z c #1D1D1D",
+ "` c #151414",
+ " . c #717272",
+ ".. c #4C4C4C",
+ "+. c #484949",
+ "@. c #464545",
+ "#. c #424343",
+ "$. c #3A3A3A",
+ "%. c #5D4A49",
+ "&. c #7E7E86",
+ "*. c #56569F",
+ "=. c #3E3E41",
+ "-. c #757575",
+ ";. c #575757",
+ ">. c #222221",
+ ",. c #262627",
+ "'. c #242423",
+ "). c #212020",
+ "!. c #1A1A1A",
+ "~. c #121212",
+ "{. c #939493",
+ "]. c #6F6F6F",
+ "^. c #494949",
+ "/. c #464646",
+ "(. c #434343",
+ "_. c #554545",
+ ":. c #686863",
+ "<. c #939394",
+ "[. c #BDBDBD",
+ "}. c #202021",
+ "|. c #1E1E1E",
+ "1. c #171718",
+ "2. c #0F0F0F",
+ "3. c #929292",
+ "4. c #6C6D6D",
+ "5. c #464746",
+ "6. c #525F73",
+ "7. c #444648",
+ "8. c #3D3D3D",
+ "9. c #2D2C2A",
+ "0. c #A1A2A2",
+ "a. c #AAACAC",
+ "b. c #A6A7A7",
+ "c. c #A8AAAA",
+ "d. c #AFB0B0",
+ "e. c #777676",
+ "f. c #9A9A9A",
+ "g. c #1B1B1B",
+ "h. c #181818",
+ "i. c #0C0C0C",
+ "j. c #909090",
+ "k. c #6B6A6B",
+ "l. c #55657E",
+ "m. c #6990FB",
+ "n. c #6483CD",
+ "o. c #5871B2",
+ "p. c #434E7E",
+ "q. c #A97C76",
+ "r. c #AB7777",
+ "s. c #AC7070",
+ "t. c #A26565",
+ "u. c #805C5C",
+ "v. c #848686",
+ "w. c #424342",
+ "x. c #151515",
+ "y. c #0A0909",
+ "z. c #8F8F8F",
+ "A. c #676868",
+ "B. c #3B3A3A",
+ "C. c #383738",
+ "D. c #353534",
+ "E. c #45525F",
+ "F. c #6367AC",
+ "G. c #804682",
+ "H. c #942A39",
+ "I. c #991312",
+ "J. c #540901",
+ "K. c #393742",
+ "L. c #1C1C1C",
+ "M. c #191919",
+ "N. c #161515",
+ "O. c #121313",
+ "P. c #070707",
+ "Q. c #8D8E8D",
+ "R. c #656566",
+ "S. c #3E3F3F",
+ "T. c #2F2E2F",
+ "U. c #353838",
+ "V. c #35496A",
+ "W. c #3E4D88",
+ "X. c #354889",
+ "Y. c #5573D7",
+ "Z. c #5D80FB",
+ "`. c #374899",
+ " + c #293338",
+ ".+ c #101010",
+ "++ c #0D0D0D",
+ "@+ c #040404",
+ "#+ c #8C8C8C",
+ "$+ c #8B8B8B",
+ "%+ c #4B4A4B",
+ "&+ c #303030",
+ "*+ c #333232",
+ "=+ c #2F2F30",
+ "-+ c #232223",
+ ";+ c #1A1919",
+ ">+ c #2E3949",
+ ",+ c #5C7BA3",
+ "'+ c #36467D",
+ ")+ c #536F93",
+ "!+ c #0A0A0A",
+ "~+ c #010101",
+ "{+ c #C1C1C1",
+ "]+ c #B8B8B8",
+ "^+ c #A0A0A0",
+ "/+ c #3F3F3F",
+ "(+ c #222122",
+ "_+ c #202020",
+ ":+ c #161717",
+ "<+ c #141414",
+ "[+ c #111011",
+ "}+ c #0D0E0E",
+ "|+ c #0B0B0A",
+ "1+ c #000000",
+ "2+ c #525252",
+ "3+ c #686868",
+ "4+ c #ADADAD",
+ "5+ c #9E9F9F",
+ "6+ c #6D6D6D",
+ "7+ c #3C3C3C",
+ "8+ c #131414",
+ "9+ c #111111",
+ "0+ c #0E0E0E",
+ "a+ c #0B0B0B",
+ "b+ c #080708",
+ "c+ c #050504",
+ "d+ c #4C4D4C",
+ "e+ c #4D4C4D",
+ "f+ c #494A4A",
+ "g+ c #454444",
+ "h+ c #9D9D9D",
+ "i+ c #9E9E9E",
+ "j+ c #AEAEAE",
+ "k+ c #BEBEBF",
+ "l+ c #BEBDBD",
+ "m+ c #979797",
+ "n+ c #6A6B6A",
+ "o+ c #3F3F40",
+ "p+ c #020202",
+ "q+ c #030303",
+ "r+ c #878787",
+ "s+ c #69696A",
+ "t+ c #868685",
+ "u+ c #646464",
+ "v+ c #474647",
+ "w+ c #656565",
+ "x+ c #9E9F9E",
+ "y+ c #A8A8A8",
+ "z+ c #AFAFAE",
+ "A+ c #A4A4A4",
+ "B+ c #7A7A7A",
+ "C+ c #969696",
+ "D+ c #363636",
+ "E+ c #777776",
+ "F+ c #8C8D8D",
+ "G+ c #7D7D7D",
+ "H+ c #5E5E5E",
+ "I+ c #4F4F50",
+ "J+ c #808181",
+ "K+ c #707070",
+ "L+ c #909191",
+ "M+ c #9C9C9C",
+ "N+ c #787877",
+ "O+ c #696969",
+ "P+ c #616161",
+ "Q+ c #6E6E6E",
+ "R+ c #7C7B7C",
+ "S+ c #777677",
+ "T+ c #6F6E6E",
+ "U+ c #595959",
+ "V+ c #717171",
+ "W+ c #8D8D8D",
+ "X+ c #515051",
+ "Y+ c #49494A",
+ "Z+ c #4B4A4A",
+ "`+ c #606060",
+ " @ c #6A6A6A",
+ ".@ c #616162",
+ "+@ c #6C6D6C",
+ "@@ c #767777",
+ "#@ c #727272",
+ "$@ c #6B6B6B",
+ "%@ c #828283",
+ "&@ c #757475",
+ "*@ c #444545",
+ "=@ c #565656",
+ "-@ c #5A595A",
+ ";@ c #666666",
+ ">@ c #878687",
+ ",@ c #8A8A8A",
+ "'@ c #797979",
+ ")@ c #444344",
+ "!@ c #7F8080",
+ "~@ c #737373",
+ "{@ c #484747",
+ "]@ c #707170",
+ "^@ c #7F7F7F",
+ "/@ c #676867",
+ "(@ c #4D4C4C",
+ "_@ c #5F5F5F",
+ ":@ c #434444",
+ " ",
+ " ",
+ " . + ",
+ " @ # $ % & * ",
+ " = - ; > , ' ) ! ~ { ",
+ " ] ^ / ( _ : < [ } | # 1 2 # 3 ",
+ " 4 5 6 _ 7 8 < 9 0 a b c d e ' f g + h ",
+ " i j k 7 l m 9 0 a n o p q r s t u < | v ",
+ " w k > l x y z A B C p q D E F G H I J K ",
+ " L M N O y P Q R S T U V W F G X Y Z ` K ",
+ " ...+.@.#.$.%.&.*.=.-.;.>.,.'.).Z !.~.{. ",
+ " ].^./.(.[ c _._ :.<.[.$ ' /.}.|.!.1.2.3. ",
+ " 4.5.6.7.8.9.# 0.a.b.c.d.e.f.g.g.h.` i.j. ",
+ " k.9 l.m.n.o.p.q.r.s.t.u.v.w.g.h.x.~.y.z. ",
+ " A.0 a B.C.D.E.F.G.H.I.J.K.L.M.N.O.2.P.Q. ",
+ " R.S.n o p q T.E U.V.W.X.Y.Z.`. +.+++@+#+ ",
+ " $+%+&+q *+=+E F G -+I Z ;+>+,+'+)+!+~+$+ ",
+ " {+]+^+w /+H (+X _+Z !.:+<+[+}+|+P.1+' ",
+ " k 2+_ > 3+z.4+5+6+7+x.~.8+9+0+a+b+c+1+3 ",
+ " %+..d+e+..f+< g+h+i+j+k+l+m+n+o+P.p+q+p+1+r+ ",
+ " s+t+u+< (.< v+y 9 (.w+x+y+z+y+h+A+B+C+K ].D+1+h ",
+ " E+i+F+f.j.G+H+9 [ (.z I+J+m+f.j.K+z 9 9 9 K+L+r+/.9 (. ",
+ " L M+N+O+u+P+Q+R+S+T+U+y 8 - ;...9 9 9 9 9 9 9 9 (.(.k w+ ",
+ " V+m+' W+r+] , X+Y+(.: r+L P+k 9 z (.9 9 9 9 (.(.Z+;.- `+ ",
+ " ].C+w @u+.@+@@@#@$@j %@B+&@#@L $@H+2+/.0 (.*@+.} 2+=@-@ ",
+ " ;@| >@,@'@u+k 8 )@..!@| ~@V+#@#@#@#@L 6+..(.9 {@.._ ( ",
+ " e ]@^@] /@k G+w #@#@#@#@#@V+ @$@_ 9 9 9 /.Y+(@ ",
+ " - R.T+L ~@#@#@#@#@]._ _@_ 9 9 9 (.9 x ",
+ " =@_@O+L ~@#@~@L _ 9 9 :@ ",
+ " ;.H+ @-._ (. ",
+ " ",
+ " "};
+ """
def FSMesh(obj, recompute=False):
- """ Get free surface mesh in matrix mode.
- @param obj Created Part::FeaturePython object.
- @param recompute True if mesh must be recomputed, False otherwise.
- @return Faces matrix
- """
- nx = obj.FS_Nx
- ny = obj.FS_Ny
- if not recompute:
- faces = []
- for i in range(0,nx):
- faces.append([])
- for j in range(0,ny):
- faces[i].append(FreeSurfaceFace(obj.FS_Position[j + i*ny],
- obj.FS_Normal[j + i*ny],
- obj.FS_Area[j + i*ny]))
- return faces
- # Transform positions into a mesh
- pos = []
- for i in range(0,nx):
- pos.append([])
- for j in range(0,ny):
- pos[i].append(obj.FS_Position[j + i*ny])
- # Recompute normals and dimensions
- normal = []
- l = []
- b = []
- for i in range(0,nx):
- normal.append([])
- l.append([])
- b.append([])
- for j in range(0,ny):
- i0 = i-1
- i1 = i+1
- fi = 1.0
- j0 = j-1
- j1 = j+1
- fj = 1.0
- if i == 0:
- i0 = i
- i1 = i+1
- fi = 2.0
- if i == nx-1:
- i0 = i-1
- i1 = i
- fi = 2.0
- if j == 0:
- j0 = j
- j1 = j+1
- fj = 2.0
- if j == ny-1:
- j0 = j-1
- j1 = j
- fj = 2.0
- l[i].append(fi*(obj.FS_Position[j + i1*ny].x - obj.FS_Position[j + i0*ny].x))
- b[i].append(fj*(obj.FS_Position[j1 + i*ny].y - obj.FS_Position[j0 + i*ny].y))
- xvec = Vector(obj.FS_Position[j + i1*ny].x - obj.FS_Position[j + i0*ny].x,
- obj.FS_Position[j + i1*ny].y - obj.FS_Position[j + i0*ny].y,
- obj.FS_Position[j + i1*ny].z - obj.FS_Position[j + i0*ny].z)
- yvec = Vector(obj.FS_Position[j1 + i*ny].x - obj.FS_Position[j0 + i*ny].x,
- obj.FS_Position[j1 + i*ny].y - obj.FS_Position[j0 + i*ny].y,
- obj.FS_Position[j1 + i*ny].z - obj.FS_Position[j0 + i*ny].z)
- n = Vector(xvec.cross(yvec)) # Z positive
- normal[i].append(n.normalize())
- # Create faces
- faces = []
- for i in range(0,nx):
- faces.append([])
- for j in range(0,ny):
- faces[i].append(FreeSurfaceFace(pos[i][j], normal[i][j], l[i][j], b[i][j]))
- # Reconstruct mesh data
- for i in range(0,nx):
- for j in range(0,ny):
- obj.FS_Position[j + i*ny] = faces[i][j].pos
- obj.FS_Normal[j + i*ny] = faces[i][j].normal
- obj.FS_Area[j + i*ny] = faces[i][j].area
- return faces
+ """ Get free surface mesh in matrix mode.
+ @param obj Created Part::FeaturePython object.
+ @param recompute True if mesh must be recomputed, False otherwise.
+ @return Faces matrix
+ """
+ nx = obj.FS_Nx
+ ny = obj.FS_Ny
+ if not recompute:
+ faces = []
+ for i in range(0,nx):
+ faces.append([])
+ for j in range(0,ny):
+ faces[i].append(FreeSurfaceFace(obj.FS_Position[j + i*ny],
+ obj.FS_Normal[j + i*ny],
+ obj.FS_Area[j + i*ny]))
+ return faces
+ # Transform positions into a mesh
+ pos = []
+ for i in range(0,nx):
+ pos.append([])
+ for j in range(0,ny):
+ pos[i].append(obj.FS_Position[j + i*ny])
+ # Recompute normals and dimensions
+ normal = []
+ l = []
+ b = []
+ for i in range(0,nx):
+ normal.append([])
+ l.append([])
+ b.append([])
+ for j in range(0,ny):
+ i0 = i-1
+ i1 = i+1
+ fi = 1.0
+ j0 = j-1
+ j1 = j+1
+ fj = 1.0
+ if i == 0:
+ i0 = i
+ i1 = i+1
+ fi = 2.0
+ if i == nx-1:
+ i0 = i-1
+ i1 = i
+ fi = 2.0
+ if j == 0:
+ j0 = j
+ j1 = j+1
+ fj = 2.0
+ if j == ny-1:
+ j0 = j-1
+ j1 = j
+ fj = 2.0
+ l[i].append(fi*(obj.FS_Position[j + i1*ny].x - obj.FS_Position[j + i0*ny].x))
+ b[i].append(fj*(obj.FS_Position[j1 + i*ny].y - obj.FS_Position[j0 + i*ny].y))
+ xvec = Vector(obj.FS_Position[j + i1*ny].x - obj.FS_Position[j + i0*ny].x,
+ obj.FS_Position[j + i1*ny].y - obj.FS_Position[j + i0*ny].y,
+ obj.FS_Position[j + i1*ny].z - obj.FS_Position[j + i0*ny].z)
+ yvec = Vector(obj.FS_Position[j1 + i*ny].x - obj.FS_Position[j0 + i*ny].x,
+ obj.FS_Position[j1 + i*ny].y - obj.FS_Position[j0 + i*ny].y,
+ obj.FS_Position[j1 + i*ny].z - obj.FS_Position[j0 + i*ny].z)
+ n = Vector(xvec.cross(yvec)) # Z positive
+ normal[i].append(n.normalize())
+ # Create faces
+ faces = []
+ for i in range(0,nx):
+ faces.append([])
+ for j in range(0,ny):
+ faces[i].append(FreeSurfaceFace(pos[i][j], normal[i][j], l[i][j], b[i][j]))
+ # Reconstruct mesh data
+ for i in range(0,nx):
+ for j in range(0,ny):
+ obj.FS_Position[j + i*ny] = faces[i][j].pos
+ obj.FS_Normal[j + i*ny] = faces[i][j].normal
+ obj.FS_Area[j + i*ny] = faces[i][j].area
+ return faces
diff --git a/src/Mod/Ship/TankInstance.py b/src/Mod/Ship/TankInstance.py
index 48a1269715..8bb084bf9a 100644
--- a/src/Mod/Ship/TankInstance.py
+++ b/src/Mod/Ship/TankInstance.py
@@ -1,28 +1,31 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import time
+# Qt library
+from PyQt4 import QtGui,QtCore
+
# COIN
from pivy.coin import *
from pivy import coin
@@ -33,1913 +36,734 @@ from FreeCAD import Base, Vector
import Part
# Ship design module
-from shipUtils import Paths, Translator, Math
+from shipUtils import Paths, Math
class ShipTank:
- def __init__(self, obj, solid, level=0, density=998.0):
- """ Creates a new tank on active document.
- @param obj Created Part::FeaturePython object.
- @param solid Solid shape that represent the tank.
- @param level Tank filling level.
- @param density Fluid density.
- """
- # Add uniqueness property to identify Tank instances
- obj.addProperty("App::PropertyBool","IsShipTank","ShipTank", str(Translator.translate("True if is a valid ship tank instance"))).IsShipTank=True
- # Add general options
- obj.addProperty("App::PropertyFloat","Level","ShipTank", str(Translator.translate("Fluid filling level percentage"))).Level=level
- obj.addProperty("App::PropertyFloat","Density","ShipTank", str(Translator.translate("Inside fluid density"))).Density=density
- # Add shapes
- shape = self.computeShape(solid)
- if not shape:
- obj.IsShipTank=False
- return
- obj.Shape = shape
- obj.Proxy = self
+ def __init__(self, obj, solid, level=0, density=998.0):
+ """ Creates a new tank on active document.
+ @param obj Created Part::FeaturePython object.
+ @param solid Solid shape that represent the tank.
+ @param level Tank filling level.
+ @param density Fluid density.
+ """
+ # Add uniqueness property to identify Tank instances
+ tooltip = str(QtGui.QApplication.translate("Ship","True if is a valid ship tank instance",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyBool","IsShipTank","ShipTank", tooltip).IsShipTank=True
+ # Add general options
+ tooltip = str(QtGui.QApplication.translate("Ship","Fluid filling level percentage",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyFloat","Level","ShipTank", tooltip).Level=level
+ tooltip = str(QtGui.QApplication.translate("Ship","Inside fluid density",
+ None,QtGui.QApplication.UnicodeUTF8))
+ obj.addProperty("App::PropertyFloat","Density","ShipTank", tooltip).Density=density
+ # Add shapes
+ shape = self.computeShape(solid)
+ if not shape:
+ obj.IsShipTank=False
+ return
+ obj.Shape = shape
+ obj.Proxy = self
- def onChanged(self, fp, prop):
- """ Property changed, tank must be recomputed """
- if prop == "IsShipTank":
- FreeCAD.Console.PrintWarning("Ussually you don't want to modify manually this option.\n")
- elif prop == "Level":
- if fp.Level > 100.0:
- fp.Level = 100.0
- elif fp.Level < 0.0:
- fp.Level = 0.0
+ def onChanged(self, fp, prop):
+ """ Property changed, tank must be recomputed """
+ if prop == "IsShipTank":
+ FreeCAD.Console.PrintWarning("Ussually you don't want to modify manually this option.\n")
+ elif prop == "Level":
+ if fp.Level > 100.0:
+ fp.Level = 100.0
+ elif fp.Level < 0.0:
+ fp.Level = 0.0
- def execute(self, obj):
- """ Shape recomputation called """
- obj.Shape = self.computeShape(obj.Shape)
+ def execute(self, obj):
+ """ Shape recomputation called """
+ obj.Shape = self.computeShape(obj.Shape)
- def computeShape(self, solid):
- """ Create faces shape. This method also calls to generate boxes.
- @param solid Solid shape that represent the tank.
- @return Computed solid shape. None if can't build it.
- """
- # Study input to try to build a solid
- if solid.isDerivedFrom('Part::Feature'):
- # Get shape
- shape = solid.Shape
- if not shape:
- return None
- solid = shape
- if not solid.isDerivedFrom('Part::TopoShape'):
- return None
- # Get shells
- shells = solid.Shells
- if not shells:
- return None
- # Build solids
- solids = []
- for s in shells:
- solid = Part.Solid(s)
- if solid.Volume < 0.0:
- solid.reverse()
- solids.append(solid)
- # Create compound
- shape = Part.CompSolid(solids)
- return shape
+ def computeShape(self, solid):
+ """ Create faces shape. This method also calls to generate boxes.
+ @param solid Solid shape that represent the tank.
+ @return Computed solid shape. None if can't build it.
+ """
+ # Study input to try to build a solid
+ if solid.isDerivedFrom('Part::Feature'):
+ # Get shape
+ shape = solid.Shape
+ if not shape:
+ return None
+ solid = shape
+ if not solid.isDerivedFrom('Part::TopoShape'):
+ return None
+ # Get shells
+ shells = solid.Shells
+ if not shells:
+ return None
+ # Build solids
+ solids = []
+ for s in shells:
+ solid = Part.Solid(s)
+ if solid.Volume < 0.0:
+ solid.reverse()
+ solids.append(solid)
+ # Create compound
+ shape = Part.CompSolid(solids)
+ return shape
class ViewProviderShipTank:
- def __init__(self, obj):
- """ Set this object to the proxy object of the actual view provider """
- obj.Proxy = self
+ def __init__(self, obj):
+ """ Set this object to the proxy object of the actual view provider """
+ obj.Proxy = self
- def attach(self, obj):
- """ Setup the scene sub-graph of the view provider, this method is mandatory """
- return
+ def attach(self, obj):
+ """ Setup the scene sub-graph of the view provider, this method is mandatory """
+ return
- def updateData(self, fp, prop):
- """ If a property of the handled feature has changed we have the chance to handle this here """
- return
+ def updateData(self, fp, prop):
+ """ If a property of the handled feature has changed we have the chance to handle this here """
+ return
- def getDisplayModes(self,obj):
- ''' Return a list of display modes. '''
- modes=[]
- return modes
+ def getDisplayModes(self,obj):
+ ''' Return a list of display modes. '''
+ modes=[]
+ return modes
- def getDefaultDisplayMode(self):
- ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
- return "Shaded"
+ def getDefaultDisplayMode(self):
+ ''' Return the name of the default display mode. It must be defined in getDisplayModes. '''
+ return "Shaded"
- def setDisplayMode(self,mode):
- ''' Map the display mode defined in attach with those defined in getDisplayModes.
- Since they have the same names nothing needs to be done. This method is optinal.
- '''
- return mode
+ def setDisplayMode(self,mode):
+ ''' Map the display mode defined in attach with those defined in getDisplayModes.
+ Since they have the same names nothing needs to be done. This method is optinal.
+ '''
+ return mode
- def onChanged(self, vp, prop):
- ''' Print the name of the property that has changed '''
- # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
+ def onChanged(self, vp, prop):
+ ''' Print the name of the property that has changed '''
+ # FreeCAD.Console.PrintMessage("Change property: " + str(prop) + "\n")
- def __getstate__(self):
- ''' When saving the document this object gets stored using Python's cPickle module.
- Since we have some un-pickable here -- the Coin stuff -- we must define this method
- to return a tuple of all pickable objects or None.
- '''
- return None
+ def __getstate__(self):
+ ''' When saving the document this object gets stored using Python's cPickle module.
+ Since we have some un-pickable here -- the Coin stuff -- we must define this method
+ to return a tuple of all pickable objects or None.
+ '''
+ return None
- def __setstate__(self,state):
- ''' When restoring the pickled object from document we have the chance to set some
- internals here. Since no data were pickled nothing needs to be done here.
- '''
- return None
+ def __setstate__(self,state):
+ ''' When restoring the pickled object from document we have the chance to set some
+ internals here. Since no data were pickled nothing needs to be done here.
+ '''
+ return None
- def getIcon(self):
- return """
- /* XPM */
- static char * Tank_xpm[] = {
- "128 128 1605 2",
- " c None",
- ". c #000000",
- "+ c #D1D1D1",
- "@ c #D2D2D2",
- "# c #D3D3D3",
- "$ c #D3D4D4",
- "% c #D5D5D5",
- "& c #CFD0CF",
- "* c #D0D0D0",
- "= c #D3D2D3",
- "- c #D4D4D3",
- "; c #D5D6D5",
- "> c #D6D6D6",
- ", c #D7D7D7",
- "' c #CDCECE",
- ") c #CFCECE",
- "! c #D0CFCF",
- "~ c #D3D3D2",
- "{ c #D3D3D4",
- "] c #D5D4D5",
- "^ c #D6D7D6",
- "/ c #D8D8D8",
- "( c #D8D8D9",
- "_ c #D9D9DA",
- ": c #CCCCCB",
- "< c #CCCCCC",
- "[ c #CECECD",
- "} c #CECECE",
- "| c #CFCFCF",
- "1 c #D1D2D2",
- "2 c #D5D4D4",
- "3 c #D8D9D9",
- "4 c #DAD9DA",
- "5 c #DADBDB",
- "6 c #DBDCDB",
- "7 c #CACACA",
- "8 c #CACBCB",
- "9 c #CBCBCB",
- "0 c #CCCDCD",
- "a c #CECDCD",
- "b c #D2D2D1",
- "c c #D2D3D3",
- "d c #D4D3D3",
- "e c #D9D9D8",
- "f c #D9D9D9",
- "g c #DADBDA",
- "h c #DBDCDC",
- "i c #DCDCDC",
- "j c #DDDDDD",
- "k c #DEDEDE",
- "l c #C7C8C8",
- "m c #C9C9C9",
- "n c #CAC9CA",
- "o c #CBCBCC",
- "p c #CCCDCC",
- "q c #CDCDCD",
- "r c #D0D1D1",
- "s c #D1D2D1",
- "t c #D3D2D2",
- "u c #D4D4D5",
- "v c #D5D5D6",
- "w c #D6D7D7",
- "x c #D8D7D8",
- "y c #D9D8D9",
- "z c #DADAD9",
- "A c #DBDADA",
- "B c #DBDBDC",
- "C c #DDDCDD",
- "D c #DDDEDE",
- "E c #DEDFDE",
- "F c #DFE0E0",
- "G c #E0E0E1",
- "H c #C6C6C6",
- "I c #C7C7C7",
- "J c #C8C8C7",
- "K c #C9C9C8",
- "L c #CACAC9",
- "M c #CBCACB",
- "N c #D0CFD0",
- "O c #D1D0D1",
- "P c #D1D1D2",
- "Q c #D4D4D4",
- "R c #D6D5D6",
- "S c #D7D6D7",
- "T c #D7D8D8",
- "U c #DAD9D9",
- "V c #DADADA",
- "W c #DBDBDB",
- "X c #DCDBDC",
- "Y c #DDDDDC",
- "Z c #DFDEDF",
- "` c #E0DFDF",
- " . c #E0E0E0",
- ".. c #E1E1E1",
- "+. c #E2E2E2",
- "@. c #C5C4C4",
- "#. c #C5C5C5",
- "$. c #C8C8C8",
- "%. c #C9C8C8",
- "&. c #D5D5D4",
- "*. c #D8D7D7",
- "=. c #D9D8D8",
- "-. c #DCDDDD",
- ";. c #DEDDDD",
- ">. c #E3E4E3",
- ",. c #E5E4E4",
- "'. c #C4C4C4",
- "). c #C6C7C6",
- "!. c #C7C8C7",
- "~. c #C8C8C9",
- "{. c #CACACB",
- "]. c #CCCBCB",
- "^. c #D0D0D1",
- "/. c #D5D6D6",
- "(. c #D7D7D6",
- "_. c #DFDFDF",
- ":. c #E1E2E2",
- "<. c #E3E3E3",
- "[. c #E4E3E4",
- "}. c #E6E5E5",
- "|. c #E6E6E6",
- "1. c #E6E7E7",
- "2. c #C4C5C5",
- "3. c #C6C6C7",
- "4. c #CFD0D0",
- "5. c #D1D0D0",
- "6. c #D6D5D5",
- "7. c #DADADB",
- "8. c #DCDDDC",
- "9. c #DDDDDE",
- "0. c #DEDFDF",
- "a. c #E1E1E2",
- "b. c #E3E2E2",
- "c. c #E4E4E4",
- "d. c #E5E5E5",
- "e. c #E8E8E7",
- "f. c #E9E8E9",
- "g. c #EAE9EA",
- "h. c #C5C5C4",
- "i. c #C6C6C5",
- "j. c #C7C7C6",
- "k. c #CBCACA",
- "l. c #CDCDCC",
- "m. c #CECFCF",
- "n. c #DBDADB",
- "o. c #E0E0DF",
- "p. c #E1E1E0",
- "q. c #E1E2E1",
- "r. c #E3E3E4",
- "s. c #E4E5E5",
- "t. c #E7E6E7",
- "u. c #E7E7E8",
- "v. c #E9E9E8",
- "w. c #E9EAE9",
- "x. c #EAEAEA",
- "y. c #EBEBEA",
- "z. c #C4C5C4",
- "A. c #C6C5C5",
- "B. c #C6C7C7",
- "C. c #CCCCCD",
- "D. c #CECECF",
- "E. c #D9DAD9",
- "F. c #DBDBDA",
- "G. c #DEDEDD",
- "H. c #E0DFE0",
- "I. c #E0E1E0",
- "J. c #E6E5E6",
- "K. c #E7E7E6",
- "L. c #E7E8E7",
- "M. c #E8E8E9",
- "N. c #E9E9E9",
- "O. c #ECECEC",
- "P. c #ECEDED",
- "Q. c #EDEDEE",
- "R. c #010101",
- "S. c #C5C4C5",
- "T. c #CBCCCB",
- "U. c #CDCCCC",
- "V. c #CECFCE",
- "W. c #CFCFCE",
- "X. c #CFCFD0",
- "Y. c #D7D8D7",
- "Z. c #DEDDDE",
- "`. c #E1E0E0",
- " + c #E5E6E6",
- ".+ c #EBEBEB",
- "++ c #ECEBEC",
- "@+ c #EDEDED",
- "#+ c #EEEEEE",
- "$+ c #EFEFEF",
- "%+ c #F0F0F0",
- "&+ c #C4C4C5",
- "*+ c #CFCECF",
- "=+ c #D2D1D1",
- "-+ c #D6D6D5",
- ";+ c #D8D9D8",
- ">+ c #DDDEDD",
- ",+ c #DFDEDE",
- "'+ c #E2E3E3",
- ")+ c #E7E7E7",
- "!+ c #E8E8E8",
- "~+ c #EBECEC",
- "{+ c #ECEDEC",
- "]+ c #EFEFF0",
- "^+ c #F1F0F1",
- "/+ c #F1F1F1",
- "(+ c #C7C6C6",
- "_+ c #C9C8C9",
- ":+ c #C9CAC9",
- "<+ c #CACBCA",
- "[+ c #D2D2D3",
- "}+ c #D4D5D5",
- "|+ c #DCDCDB",
- "1+ c #E3E3E2",
- "2+ c #E4E3E3",
- "3+ c #E4E4E5",
- "4+ c #E5E5E6",
- "5+ c #EAEAE9",
- "6+ c #ECEBEB",
- "7+ c #F0F0EF",
- "8+ c #F0F0F1",
- "9+ c #C8C7C8",
- "0+ c #C8C9C9",
- "a+ c #CBCBCA",
- "b+ c #CCCBCC",
- "c+ c #D7D6D6",
- "d+ c #DDDCDC",
- "e+ c #E2E2E1",
- "f+ c #E2E3E2",
- "g+ c #E3E4E4",
- "h+ c #E8E7E8",
- "i+ c #E9E8E8",
- "j+ c #EAE9E9",
- "k+ c #EDECEC",
- "l+ c #EEEEED",
- "m+ c #EFEEEF",
- "n+ c #EFF0F0",
- "o+ c #F1F0F0",
- "p+ c #C5C6C6",
- "q+ c #C7C6C7",
- "r+ c #D0D0CF",
- "s+ c #D4D5D4",
- "t+ c #E1E0E1",
- "u+ c #E8E9E9",
- "v+ c #EDECED",
- "w+ c #EEEDED",
- "x+ c #EEEFEF",
- "y+ c #F0EFF0",
- "z+ c #F0F1F0",
- "A+ c #D7D7D8",
- "B+ c #C8C7C7",
- "C+ c #C9C9CA",
- "D+ c #D2D1D2",
- "E+ c #D9DADA",
- "F+ c #E2E1E1",
- "G+ c #E9E9EA",
- "H+ c #EAEBEB",
- "I+ c #D8D8D7",
- "J+ c #CBCCCC",
- "K+ c #CDCCCD",
- "L+ c #D6D6D7",
- "M+ c #E6E6E5",
- "N+ c #E7E6E6",
- "O+ c #E8E7E7",
- "P+ c #EFEEEE",
- "Q+ c #CDCECD",
- "R+ c #D1D1D0",
- "S+ c #D2D3D2",
- "T+ c #DFE0DF",
- "U+ c #E3E2E3",
- "V+ c #E4E5E4",
- "W+ c #E5E6E5",
- "X+ c #ECECED",
- "Y+ c #D4D3D4",
- "Z+ c #CECDCE",
- "`+ c #E6E6E7",
- " @ c #EBEAEB",
- ".@ c #ECECEB",
- "+@ c #F0F1F1",
- "@@ c #DCDCDD",
- "#@ c #EBEAEA",
- "$@ c #F0EFEF",
- "%@ c #D3D4D3",
- "&@ c #E6E7E6",
- "*@ c #EEEDEE",
- "=@ c #ADADAD",
- "-@ c #565656",
- ";@ c #DCDBDB",
- ">@ c #DFDFE0",
- ",@ c #E7E8E8",
- "'@ c #E8E9E8",
- ")@ c #EDEDEC",
- "!@ c #EBEBEC",
- "~@ c #EEEFEE",
- "{@ c #B7B6B7",
- "]@ c #E5E4E5",
- "^@ c #EDEEED",
- "/@ c #B6B6B6",
- "(@ c #B6B7B7",
- "_@ c #B7B7B6",
- ":@ c #B7B6B6",
- "<@ c #E5E5E4",
- "[@ c #B5B6B5",
- "}@ c #B5B6B6",
- "|@ c #B5B5B5",
- "1@ c #B6B5B5",
- "2@ c #B6B5B6",
- "3@ c #E2E1E2",
- "4@ c #E4E4E3",
- "5@ c #B4B4B4",
- "6@ c #B4B5B5",
- "7@ c #B5B5B4",
- "8@ c #B6B6B5",
- "9@ c #E2E2E3",
- "0@ c #B3B4B4",
- "a@ c #B4B4B5",
- "b@ c #B4B5B4",
- "c@ c #B5B4B4",
- "d@ c #B3B3B3",
- "e@ c #B3B3B4",
- "f@ c #B4B3B3",
- "g@ c #B4B4B3",
- "h@ c #B5B4B5",
- "i@ c #D0D1D0",
- "j@ c #B3B3B2",
- "k@ c #B3B2B3",
- "l@ c #B4B3B4",
- "m@ c #90B9D9",
- "n@ c #91BAD9",
- "o@ c #C6C5C6",
- "p@ c #B1B2B2",
- "q@ c #B2B2B2",
- "r@ c #B2B3B2",
- "s@ c #B2B3B3",
- "t@ c #8FB7D8",
- "u@ c #8EB7D7",
- "v@ c #8FB8D8",
- "w@ c #90B8D8",
- "x@ c #91BBD9",
- "y@ c #91BCDA",
- "z@ c #C2C2C2",
- "A@ c #C3C4C3",
- "B@ c #C3C4C4",
- "C@ c #C8C9C8",
- "D@ c #CDCDCE",
- "E@ c #B1B1B1",
- "F@ c #B1B2B1",
- "G@ c #B2B1B2",
- "H@ c #B2B2B3",
- "I@ c #B3B2B2",
- "J@ c #8CB4D6",
- "K@ c #8DB4D6",
- "L@ c #8DB5D7",
- "M@ c #8EB6D7",
- "N@ c #8EB7D8",
- "O@ c #8FB7D7",
- "P@ c #90B9D8",
- "Q@ c #91BBDA",
- "R@ c #92BCD9",
- "S@ c #92BCDA",
- "T@ c #C1C1C0",
- "U@ c #C1C1C1",
- "V@ c #C2C2C1",
- "W@ c #C3C3C2",
- "X@ c #C3C3C3",
- "Y@ c #C3C3C4",
- "Z@ c #CAC9C9",
- "`@ c #B1B0B0",
- " # c #B2B2B1",
- ".# c #8BB2D5",
- "+# c #8BB2D6",
- "@# c #8CB3D6",
- "## c #8CB3D7",
- "$# c #8DB5D6",
- "%# c #8EB5D7",
- " c #8FB8D7",
- "*# c #92BBD9",
- "=# c #92BBDA",
- "-# c #BFC0C0",
- ";# c #C0C1C0",
- "># c #C2C1C1",
- ",# c #C3C2C2",
- "'# c #C4C4C3",
- ")# c #C5C6C5",
- "!# c #C5C5C6",
- "~# c #B0B0B0",
- "{# c #B0B1B0",
- "]# c #B1B1B2",
- "^# c #B2B1B1",
- "/# c #0E3459",
- "(# c #0E355A",
- "_# c #0F355A",
- ":# c #0F365A",
- "<# c #8AB2D5",
- "[# c #8CB3D5",
- "}# c #8BB3D6",
- "|# c #8FB6D7",
- "1# c #8FB9D7",
- "2# c #90B9D7",
- "3# c #90BAD8",
- "4# c #90BBD9",
- "5# c #92BDDA",
- "6# c #93BEDA",
- "7# c #BEBEBE",
- "8# c #BEBFBE",
- "9# c #BFBFBE",
- "0# c #BFBFC0",
- "a# c #C0C0BF",
- "b# c #C2C3C2",
- "c# c #C4C3C3",
- "d# c #AFB0B0",
- "e# c #AFAFB0",
- "f# c #B0AFB0",
- "g# c #B0B1B1",
- "h# c #B0B0B1",
- "i# c #B1B0B1",
- "j# c #7A9EC5",
- "k# c #799FC5",
- "l# c #7A9FC5",
- "m# c #7AA0C6",
- "n# c #0E345A",
- "o# c #0F3559",
- "p# c #8BB1D5",
- "q# c #8CB4D5",
- "r# c #8FB9D8",
- "s# c #90BAD7",
- "t# c #91BBD8",
- "u# c #91BCD9",
- "v# c #91BDD9",
- "w# c #92BEDA",
- "x# c #93BFDA",
- "y# c #BDBDBD",
- "z# c #BDBEBD",
- "A# c #BEBEBD",
- "B# c #BEBEBF",
- "C# c #BEBFBF",
- "D# c #BFBFBF",
- "E# c #C0C0C0",
- "F# c #C1C0C0",
- "G# c #C0C1C1",
- "H# c #C3C2C3",
- "I# c #C4C3C4",
- "J# c #AFAEAF",
- "K# c #AFAFAF",
- "L# c #B0AFAF",
- "M# c #789DC5",
- "N# c #789EC5",
- "O# c #799EC5",
- "P# c #7AA1C5",
- "Q# c #7BA1C5",
- "R# c #0F3659",
- "S# c #10375A",
- "T# c #8DB6D6",
- "U# c #8EB8D7",
- "V# c #92BDD9",
- "W# c #143F5B",
- "X# c #174A6A",
- "Y# c #84B0CB",
- "Z# c #85B0CC",
- "`# c #BCBCBC",
- " $ c #BDBCBC",
- ".$ c #C0C0C1",
- "+$ c #C1C2C1",
- "@$ c #C2C3C3",
- "#$ c #AEAEAE",
- "$$ c #AEAFAF",
- "%$ c #AFAFAE",
- "&$ c #779BC4",
- "*$ c #779CC4",
- "=$ c #789CC4",
- "-$ c #789DC4",
- ";$ c #789EC4",
- ">$ c #799FC4",
- ",$ c #7AA0C5",
- "'$ c #10385A",
- ")$ c #8DB7D7",
- "!$ c #8EB7D6",
- "~$ c #90BBD8",
- "{$ c #133E5B",
- "]$ c #83AEC9",
- "^$ c #84AFCA",
- "/$ c #85B1CB",
- "($ c #85B2CB",
- "_$ c #BDBCBD",
- ":$ c #BEBDBD",
- "<$ c #C0BFBF",
- "[$ c #C1C1C2",
- "}$ c #C9CACA",
- "|$ c #AEAEAD",
- "1$ c #AEAFAE",
- "2$ c #AEAEAF",
- "3$ c #7599C3",
- "4$ c #7699C3",
- "5$ c #7699C2",
- "6$ c #769AC3",
- "7$ c #779BC3",
- "8$ c #789BC4",
- "9$ c #799EC4",
- "0$ c #79A0C4",
- "a$ c #8CB5D5",
- "b$ c #8CB5D6",
- "c$ c #8DB7D6",
- "d$ c #426D8A",
- "e$ c #16486A",
- "f$ c #7AA5C1",
- "g$ c #83ADC9",
- "h$ c #84B1CB",
- "i$ c #85B1CC",
- "j$ c #BCBDBD",
- "k$ c #BDBDBC",
- "l$ c #BFBEBF",
- "m$ c #BFC0BF",
- "n$ c #ADADAC",
- "o$ c #AEADAD",
- "p$ c #ADAEAD",
- "q$ c #ADAEAE",
- "r$ c #7496C2",
- "s$ c #7597C2",
- "t$ c #7598C2",
- "u$ c #769BC2",
- "v$ c #779BC2",
- "w$ c #779CC3",
- "x$ c #789DC3",
- "y$ c #7AA0C4",
- "z$ c #7AA1C4",
- "A$ c #7AA2C5",
- "B$ c #7BA2C5",
- "C$ c #10395A",
- "D$ c #8EB6D6",
- "E$ c #8EB8D6",
- "F$ c #133D5A",
- "G$ c #81ABC8",
- "H$ c #82ACC9",
- "I$ c #82ADC9",
- "J$ c #82AEC9",
- "K$ c #83AFC9",
- "L$ c #83B0CA",
- "M$ c #BDBEBE",
- "N$ c #C1C0C1",
- "O$ c #C7C7C8",
- "P$ c #ADACAC",
- "Q$ c #AFAEAE",
- "R$ c #7395C1",
- "S$ c #7395C2",
- "T$ c #7496C1",
- "U$ c #7599C2",
- "V$ c #769BC3",
- "W$ c #779DC3",
- "X$ c #789EC3",
- "Y$ c #7AA2C4",
- "Z$ c #7BA3C4",
- "`$ c #7BA3C5",
- " % c #11395A",
- ".% c #113A5A",
- "+% c #123C5A",
- "@% c #164A6E",
- "#% c #4C7694",
- "$% c #80AAC7",
- "%% c #80ABC8",
- "&% c #81ACC9",
- "*% c #81ACC8",
- "=% c #81ADC9",
- "-% c #83AFCA",
- ";% c #84B0CA",
- ">% c #84B1CA",
- ",% c #86B3CB",
- "'% c #87B4CC",
- ")% c #BFBEBE",
- "!% c #ACACAC",
- "~% c #ABACAC",
- "{% c #ACACAD",
- "]% c #7294C0",
- "^% c #7194C0",
- "/% c #7294C1",
- "(% c #7394C1",
- "_% c #7396C1",
- ":% c #7497C2",
- "<% c #7498C2",
- "[% c #799FC3",
- "}% c #7CA3C5",
- "|% c #123B5A",
- "1% c #88B1D0",
- "2% c #7EA8C6",
- "3% c #7FA9C6",
- "4% c #7FAAC7",
- "5% c #81ADC8",
- "6% c #85B1CA",
- "7% c #86B2CB",
- "8% c #86B4CB",
- "9% c #87B5CB",
- "0% c #BCBCBD",
- "a% c #C0BFC0",
- "b% c #ABABAB",
- "c% c #ACABAC",
- "d% c #ABABAC",
- "e% c #ACADAC",
- "f% c #ACADAD",
- "g% c #7193C0",
- "h% c #7293C0",
- "i% c #7193C1",
- "j% c #7293C1",
- "k% c #7498C1",
- "l% c #789FC4",
- "m% c #79A1C3",
- "n% c #79A1C4",
- "o% c #7BA2C4",
- "p% c #7CA4C5",
- "q% c #7CA4C4",
- "r% c #16496F",
- "s% c #7DA7C5",
- "t% c #7FAAC6",
- "u% c #80ABC7",
- "v% c #80ACC7",
- "w% c #82AFC9",
- "x% c #84B1C9",
- "y% c #85B2CA",
- "z% c #87B5CC",
- "A% c #88B6CC",
- "B% c #BDBDBE",
- "C% c #C1C2C2",
- "D% c #AAABAB",
- "E% c #AAAAAA",
- "F% c #ABAAAB",
- "G% c #ABACAB",
- "H% c #ACACAB",
- "I% c #7192C0",
- "J% c #7292C0",
- "K% c #7598C1",
- "L% c #7599C1",
- "M% c #759AC1",
- "N% c #769AC2",
- "O% c #779CC2",
- "P% c #779DC2",
- "Q% c #789DC2",
- "R% c #78A0C3",
- "S% c #7CA3C4",
- "T% c #7AA2C2",
- "U% c #7CA5C4",
- "V% c #7DA5C4",
- "W% c #7DA6C5",
- "X% c #7EA8C5",
- "Y% c #82ADC8",
- "Z% c #83B0C9",
- "`% c #85B3CA",
- " & c #86B5CB",
- ".& c #87B6CC",
- "+& c #BCBDBC",
- "@& c #C2C1C2",
- "#& c #C2C2C3",
- "$& c #AAA9AA",
- "%& c #AAABAA",
- "&& c #ABAAAA",
- "*& c #7091BF",
- "=& c #7092BF",
- "-& c #7191C0",
- ";& c #7192BF",
- ">& c #7092C0",
- ",& c #7295C0",
- "'& c #7497C1",
- ")& c #759AC2",
- "!& c #769CC2",
- "~& c #789FC3",
- "{& c #79A0C3",
- "]& c #79A2C4",
- "^& c #7AA4C3",
- "/& c #7BA4C4",
- "(& c #7DA8C5",
- "_& c #7EA9C6",
- ":& c #80AAC6",
- "<& c #81ADC7",
- "[& c #82ADC7",
- "}& c #82AEC8",
- "|& c #88B7CC",
- "1& c #A9A9A9",
- "2& c #A9AAAA",
- "3& c #A9A9AA",
- "4& c #A9AAA9",
- "5& c #7090BE",
- "6& c #7091BE",
- "7& c #7092BE",
- "8& c #7191BF",
- "9& c #7397C1",
- "0& c #7499C1",
- "a& c #7AA1C3",
- "b& c #7AA2C3",
- "c& c #79A2C2",
- "d& c #7AA3C3",
- "e& c #7BA5C4",
- "f& c #80ABC6",
- "g& c #81ACC7",
- "h& c #81AEC8",
- "i& c #82AFC8",
- "j& c #83B1CA",
- "k& c #85B3CB",
- "l& c #85B4CA",
- "m& c #87B6CB",
- "n& c #88B8CC",
- "o& c #A8A8A8",
- "p& c #6F90BE",
- "q& c #6F91BE",
- "r& c #7192BE",
- "s& c #7193BF",
- "t& c #769BC1",
- "u& c #779EC3",
- "v& c #789FC2",
- "w& c #79A1C2",
- "x& c #7AA3C2",
- "y& c #7BA4C3",
- "z& c #7CA6C5",
- "A& c #7DA7C4",
- "B& c #7EA7C5",
- "C& c #7EA9C5",
- "D& c #7EAAC6",
- "E& c #7FACC6",
- "F& c #81AEC7",
- "G& c #82AFC7",
- "H& c #83B1C9",
- "I& c #84B2C9",
- "J& c #84B3C9",
- "K& c #86B4CA",
- "L& c #89B7CC",
- "M& c #89B8CD",
- "N& c #A8A8A7",
- "O& c #6F90BD",
- "P& c #6E90BD",
- "Q& c #6E90BE",
- "R& c #7293BF",
- "S& c #7396C0",
- "T& c #7397C0",
- "U& c #7498C0",
- "V& c #759BC1",
- "W& c #769CC1",
- "X& c #779EC2",
- "Y& c #789EC2",
- "Z& c #78A0C1",
- "`& c #78A1C2",
- " * c #7BA6C3",
- ".* c #7BA6C4",
- "+* c #7CA6C4",
- "@* c #7FABC6",
- "#* c #82AEC7",
- "$* c #83AFC8",
- "%* c #83B0C8",
- "&* c #88B7CB",
- "** c #89B9CC",
- "=* c #89BACD",
- "-* c #6E8FBD",
- ";* c #6F91BD",
- ">* c #7093BF",
- ",* c #7194BF",
- "'* c #7294BF",
- ")* c #7395C0",
- "!* c #7398C0",
- "~* c #779FC1",
- "{* c #77A0C1",
- "]* c #78A1C1",
- "^* c #7AA4C2",
- "/* c #7CA7C4",
- "(* c #7DA8C4",
- "_* c #7DA9C5",
- ":* c #7FAAC5",
- "<* c #80ACC6",
- "[* c #80ADC7",
- "}* c #84B1C8",
- "|* c #88B8CB",
- "1* c #89BACC",
- "2* c #BEBDBE",
- "3* c #12285A",
- "4* c #768CBE",
- "5* c #768DBE",
- "6* c #6E91BD",
- "7* c #7193BE",
- "8* c #7295BF",
- "9* c #7396BF",
- "0* c #7398BF",
- "a* c #7499C0",
- "b* c #749AC1",
- "c* c #779DC1",
- "d* c #789FC1",
- "e* c #779EC0",
- "f* c #769EC0",
- "g* c #769FC0",
- "h* c #77A0C0",
- "i* c #79A2C1",
- "j* c #79A3C2",
- "k* c #7BA4C2",
- "l* c #7CA7C3",
- "m* c #7EAAC5",
- "n* c #80ADC6",
- "o* c #82B0C7",
- "p* c #85B2C9",
- "q* c #85B3C9",
- "r* c #85B4C9",
- "s* c #86B5CA",
- "t* c #87B6CA",
- "u* c #88B9CC",
- "v* c #8AB9CC",
- "w* c #8ABACC",
- "x* c #8BBBCC",
- "y* c #758BBE",
- "z* c #758CBE",
- "A* c #768CBF",
- "B* c #6E91BE",
- "C* c #7093BE",
- "D* c #7397BF",
- "E* c #7497BF",
- "F* c #749AC0",
- "G* c #759AC0",
- "H* c #769BC0",
- "I* c #769CC0",
- "J* c #779EC1",
- "K* c #769DC0",
- "L* c #759DBF",
- "M* c #769DBE",
- "N* c #77A1C0",
- "O* c #7AA5C2",
- "P* c #7DA7C3",
- "Q* c #7EA9C4",
- "R* c #7EAAC4",
- "S* c #7FABC5",
- "T* c #81ADC6",
- "U* c #81AFC7",
- "V* c #82B0C8",
- "W* c #83B1C8",
- "X* c #84B2C8",
- "Y* c #86B6CB",
- "Z* c #87B7CA",
- "`* c #87B7CB",
- " = c #84AFCB",
- ".= c #143F5A",
- "+= c #12275A",
- "@= c #758BBD",
- "#= c #768BBE",
- "$= c #6E8FBC",
- "%= c #6E8EBD",
- "&= c #7296BF",
- "*= c #7297BF",
- "== c #779CC1",
- "-= c #749BBE",
- ";= c #749CBF",
- ">= c #759EBE",
- ",= c #769FBF",
- "'= c #76A0C0",
- ")= c #779FC0",
- "!= c #7BA5C3",
- "~= c #7CA6C3",
- "{= c #7CA8C4",
- "]= c #7DA9C3",
- "^= c #7FAAC4",
- "/= c #81AFC6",
- "(= c #82B1C7",
- "_= c #85B5C9",
- ":= c #86B6CA",
- "<= c #82AECA",
- "[= c #758ABD",
- "}= c #748ABD",
- "|= c #758CBD",
- "1= c #6D8FBC",
- "2= c #759CC1",
- "3= c #769DC1",
- "4= c #759BBF",
- "5= c #739ABE",
- "6= c #759DBE",
- "7= c #769EBE",
- "8= c #769EBF",
- "9= c #779FBF",
- "0= c #78A1C0",
- "a= c #78A2C1",
- "b= c #79A2C0",
- "c= c #7AA3C1",
- "d= c #7CA8C3",
- "e= c #7DA9C4",
- "f= c #82B0C6",
- "g= c #83B2C8",
- "h= c #84B3C8",
- "i= c #143E5B",
- "j= c #11265A",
- "k= c #7489BC",
- "l= c #748ABC",
- "m= c #758ABC",
- "n= c #6D8EBC",
- "o= c #6E8EBC",
- "p= c #6D8FBD",
- "q= c #6F8FBD",
- "r= c #7092BD",
- "s= c #7294BE",
- "t= c #7194BE",
- "u= c #7295BE",
- "v= c #7196BF",
- "w= c #759BC0",
- "x= c #749ABE",
- "y= c #7399BC",
- "z= c #729ABD",
- "A= c #739ABD",
- "B= c #749CBD",
- "C= c #769DBF",
- "D= c #779EBF",
- "E= c #78A2C0",
- "F= c #79A3C1",
- "G= c #7AA4C1",
- "H= c #7BA6C2",
- "I= c #7CA9C4",
- "J= c #7EABC4",
- "K= c #7FACC4",
- "L= c #80ADC5",
- "M= c #80AEC6",
- "N= c #81AEC6",
- "O= c #83B1C7",
- "P= c #7EA9C7",
- "Q= c #7FAAC8",
- "R= c #80AAC8",
- "S= c #7388BC",
- "T= c #7488BC",
- "U= c #7389BC",
- "V= c #7489BD",
- "W= c #6E8EBB",
- "X= c #6D8EBD",
- "Y= c #7195BE",
- "Z= c #7499BF",
- "`= c #749ABF",
- " - c #749BC0",
- ".- c #7198BB",
- "+- c #7298BC",
- "@- c #7299BC",
- "#- c #729ABC",
- "$- c #739BBD",
- "%- c #749BBD",
- "&- c #749DBE",
- "*- c #76A0BF",
- "=- c #77A2C0",
- "-- c #78A3C1",
- ";- c #79A4C1",
- ">- c #7CA8C2",
- ",- c #7DAAC4",
- "'- c #7FACC5",
- ")- c #7DA7C6",
- "!- c #7FA9C7",
- "~- c #133E5A",
- "{- c #7387BC",
- "]- c #6F92BD",
- "^- c #7094BE",
- "/- c #7296BE",
- "(- c #7399BD",
- "_- c #0E3559",
- ":- c #7096BB",
- "<- c #7197BB",
- "[- c #7199BB",
- "}- c #739BBC",
- "|- c #749CBE",
- "1- c #749EBE",
- "2- c #769FBE",
- "3- c #77A0BF",
- "4- c #77A1BF",
- "5- c #78A3C0",
- "6- c #79A4C0",
- "7- c #7AA6C2",
- "8- c #7BA7C2",
- "9- c #7DA8C3",
- "0- c #7EACC5",
- "a- c #7CA5C5",
- "b- c #10255A",
- "c- c #7286BB",
- "d- c #7287BC",
- "e- c #6D8EBB",
- "f- c #7093BD",
- "g- c #7094BD",
- "h- c #7195BF",
- "i- c #7399BF",
- "j- c #739ABF",
- "k- c #7398BE",
- "l- c #6F95BA",
- "m- c #7096BA",
- "n- c #7097BB",
- "o- c #739ABC",
- "p- c #739CBD",
- "q- c #759EBF",
- "r- c #78A2BF",
- "s- c #7CA7C2",
- "t- c #10245A",
- "u- c #7185BB",
- "v- c #7286BC",
- "w- c #7387BB",
- "x- c #7487BC",
- "y- c #6E90BC",
- "z- c #6F93BE",
- "A- c #7196BE",
- "B- c #7297BE",
- "C- c #7298BF",
- "D- c #7297BD",
- "E- c #6E94BA",
- "F- c #6F95B9",
- "G- c #6F96BA",
- "H- c #7097BA",
- "I- c #729ABB",
- "J- c #749DBD",
- "K- c #77A0BE",
- "L- c #78A4C0",
- "M- c #7AA5C0",
- "N- c #7CA7C5",
- "O- c #7185BA",
- "P- c #7286BA",
- "Q- c #7285BB",
- "R- c #7386BB",
- "S- c #7288BC",
- "T- c #7589BD",
- "U- c #6E91BC",
- "V- c #6F91BC",
- "W- c #6E92BC",
- "X- c #6F93BD",
- "Y- c #7194BD",
- "Z- c #7195BD",
- "`- c #7298BE",
- " ; c #7297BC",
- ".; c #6D93B8",
- "+; c #6E94B8",
- "@; c #6E95B9",
- "#; c #7096B9",
- "$; c #739CBC",
- "%; c #76A0BE",
- "&; c #78A1BF",
- "*; c #79A1C1",
- "=; c #79A4C2",
- "-; c #7BA3C3",
- ";; c #7084BA",
- ">; c #7184BB",
- ",; c #7085BB",
- "'; c #7186BB",
- "); c #7287BB",
- "!; c #7388BB",
- "~; c #6C8EBB",
- "{; c #6D8FBB",
- "]; c #6F92BC",
- "^; c #7095BD",
- "/; c #7196BD",
- "(; c #7195BC",
- "_; c #0E3359",
- ":; c #6C92B7",
- "<; c #6D94B8",
- "[; c #6F96B9",
- "}; c #6F97BA",
- "|; c #7299BB",
- "1; c #729BBB",
- "2; c #749DBC",
- "3; c #759EBD",
- "4; c #759FBE",
- "5; c #10235A",
- "6; c #7083BA",
- "7; c #7084BB",
- "8; c #7085BA",
- "9; c #7093BC",
- "0; c #7095BC",
- "a; c #6C91B7",
- "b; c #6E95B8",
- "c; c #7198BA",
- "d; c #739BBB",
- "e; c #78A2C2",
- "f; c #0F225A",
- "g; c #6F82B9",
- "h; c #7083B9",
- "i; c #6F83B9",
- "j; c #6F83BA",
- "k; c #7184BA",
- "l; c #6C8DBB",
- "m; c #6C8FBB",
- "n; c #6D90BB",
- "o; c #6E91BB",
- "p; c #6F93BC",
- "q; c #7094BC",
- "r; c #6F94BB",
- "s; c #0D3259",
- "t; c #6A8FB6",
- "u; c #6B91B7",
- "v; c #6E93B8",
- "w; c #7098BA",
- "x; c #7099BA",
- "y; c #7199BA",
- "z; c #729BBC",
- "A; c #6E81B9",
- "B; c #6E82B9",
- "C; c #6E90BB",
- "D; c #6E93BA",
- "E; c #698EB6",
- "F; c #6A8EB6",
- "G; c #6A90B6",
- "H; c #6B90B6",
- "I; c #6B92B7",
- "J; c #6D93B7",
- "K; c #6E96B8",
- "L; c #6F97B9",
- "M; c #7098BB",
- "N; c #78A0C0",
- "O; c #6E80B8",
- "P; c #6E81B8",
- "Q; c #6F81B8",
- "R; c #6F81B9",
- "S; c #6F82B8",
- "T; c #6F92BB",
- "U; c #6E92BA",
- "V; c #0D3159",
- "W; c #688DB4",
- "X; c #698EB5",
- "Y; c #698FB5",
- "Z; c #6A90B7",
- "`; c #6C93B7",
- " > c #518FC8",
- ".> c #6F96B8",
- "+> c #123A5A",
- "@> c #0F215A",
- "#> c #6D80B8",
- "$> c #6D81B8",
- "%> c #6C8FBA",
- "&> c #6E90BA",
- "*> c #6E92BB",
- "=> c #6E93BC",
- "-> c #0C3159",
- ";> c #678CB4",
- ">> c #678DB4",
- ",> c #688EB4",
- "'> c #698EB4",
- ")> c #6A90B5",
- "!> c #6B91B6",
- "~> c #6D94B7",
- "{> c #6D95B8",
- "]> c #6E96B9",
- "^> c #0E2159",
- "/> c #6C7FB8",
- "(> c #6D7FB7",
- "_> c #6D7FB8",
- ":> c #507FC9",
- "<> c #6D8FBA",
- "[> c #6D91BB",
- "}> c #6D91B9",
- "|> c #0C3059",
- "1> c #678AB3",
- "2> c #678BB3",
- "3> c #678DB3",
- "4> c #6B91B5",
- "5> c #6B92B5",
- "6> c #6C92B6",
- "7> c #6B92B6",
- "8> c #6C93B6",
- "9> c #0E2059",
- "0> c #6C7EB7",
- "a> c #6D7EB7",
- "b> c #6E80B7",
- "c> c #6E82B8",
- "d> c #7084B9",
- "e> c #6F84BA",
- "f> c #6C90B9",
- "g> c #668AB2",
- "h> c #698FB4",
- "i> c #6A90B4",
- "j> c #719ABB",
- "k> c #749BBC",
- "l> c #6B7EB7",
- "m> c #6B7DB6",
- "n> c #6C7DB7",
- "o> c #6C7FB7",
- "p> c #6D80B7",
- "q> c #6F84B9",
- "r> c #7186BA",
- "s> c #6C8EB9",
- "t> c #6589B1",
- "u> c #678CB2",
- "v> c #678DB2",
- "w> c #688EB3",
- "x> c #6A8FB5",
- "y> c #6A91B5",
- "z> c #6C92B5",
- "A> c #6C94B7",
- "B> c #6D95B7",
- "C> c #759DBD",
- "D> c #0E1F5A",
- "E> c #6A7CB6",
- "F> c #6A7DB6",
- "G> c #6C7EB6",
- "H> c #7082B9",
- "I> c #7285BA",
- "J> c #7085B9",
- "K> c #0E335A",
- "L> c #658BB1",
- "M> c #668BB1",
- "N> c #668CB1",
- "O> c #678CB1",
- "P> c #688DB3",
- "Q> c #688FB3",
- "R> c #698FB3",
- "S> c #6990B4",
- "T> c #7097B9",
- "U> c #7197BA",
- "V> c #739CBE",
- "W> c #0E1F59",
- "X> c #6A7BB6",
- "Y> c #6B7CB6",
- "Z> c #6C7DB6",
- "`> c #6B7DB7",
- " , c #6F82B6",
- "., c #648AB0",
- "+, c #658AB1",
- "@, c #658BB0",
- "#, c #668CB2",
- "$, c #688FB4",
- "%, c #6B90B5",
- "&, c #0D1E59",
- "*, c #697BB5",
- "=, c #6A7CB7",
- "-, c #6B7EB6",
- ";, c #6C7EB8",
- ">, c #6E82B7",
- ",, c #6389B0",
- "', c #6489B0",
- "), c #658AB0",
- "!, c #668AB1",
- "~, c #688DB2",
- "{, c #6990B5",
- "], c #697AB5",
- "^, c #697BB6",
- "/, c #6A7BB5",
- "(, c #6D7EB8",
- "_, c #6D81B6",
- ":, c #6388AE",
- "<, c #6388AF",
- "[, c #6389AF",
- "}, c #6489AF",
- "|, c #668BB0",
- "1, c #6979B4",
- "2, c #6879B5",
- "3, c #6879B4",
- "4, c #6979B5",
- "5, c #6A7AB5",
- "6, c #6B7CB7",
- "7, c #6D80B5",
- "8, c #6287AE",
- "9, c #6288AE",
- "0, c #0D1D59",
- "a, c #6878B4",
- "b, c #6778B4",
- "c, c #6C7EB5",
- "d, c #6186AC",
- "e, c #6186AD",
- "f, c #6286AE",
- "g, c #668DB1",
- "h, c #678EB3",
- "i, c #0D1C59",
- "j, c #6777B3",
- "k, c #6777B4",
- "l, c #697AB4",
- "m, c #6A7CB5",
- "n, c #6E81B7",
- "o, c #6084AC",
- "p, c #6185AC",
- "q, c #6086AD",
- "r, c #6187AE",
- "s, c #6387AE",
- "t, c #0C1C59",
- "u, c #6676B3",
- "v, c #6776B3",
- "w, c #6877B4",
- "x, c #687AB5",
- "y, c #697CB6",
- "z, c #6A7DB7",
- "A, c #6B7DB5",
- "B, c #5F83AC",
- "C, c #6083AC",
- "D, c #6185AD",
- "E, c #6288AD",
- "F, c #668BB2",
- "G, c #6A91B4",
- "H, c #6675B3",
- "I, c #6575B3",
- "J, c #6677B3",
- "K, c #6677B4",
- "L, c #6A7DB4",
- "M, c #5E82AB",
- "N, c #5F83AB",
- "O, c #5F84AC",
- "P, c #6085AD",
- "Q, c #6085AC",
- "R, c #10365A",
- "S, c #0C1B59",
- "T, c #6575B2",
- "U, c #6675B2",
- "V, c #6676B2",
- "W, c #6676B4",
- "X, c #6776B4",
- "Y, c #687AB4",
- "Z, c #5D81AA",
- "`, c #5D81AB",
- " ' c #5D82AA",
- ".' c #5E83AB",
- "+' c #6083AB",
- "@' c #6286AD",
- "#' c #648AB1",
- "$' c #6473B3",
- "%' c #6474B2",
- "&' c #697CB3",
- "*' c #5D80A9",
- "=' c #5E82AA",
- "-' c #5F84AB",
- ";' c #6287AD",
- ">' c #6389AE",
- ",' c #0B1A59",
- "'' c #6473B2",
- ")' c #6574B2",
- "!' c #6574B3",
- "~' c #6778B3",
- "{' c #6779B4",
- "]' c #687BB2",
- "^' c #5B7FA9",
- "/' c #5B80A9",
- "(' c #5C80A9",
- "_' c #5D81A9",
- ":' c #5E81AA",
- "<' c #6184AC",
- "[' c #638AB0",
- "}' c #678DB1",
- "|' c #0B1A58",
- "1' c #6372B1",
- "2' c #6472B2",
- "3' c #6472B1",
- "4' c #6473B1",
- "5' c #6573B2",
- "6' c #6576B3",
- "7' c #6878B3",
- "8' c #687AB3",
- "9' c #5B7EA7",
- "0' c #5B7FA8",
- "a' c #5B80A8",
- "b' c #5C81AA",
- "c' c #5F82AB",
- "d' c #668DB2",
- "e' c #11268E",
- "f' c #11268D",
- "g' c #0B1958",
- "h' c #6373B2",
- "i' c #6877B3",
- "j' c #6879B2",
- "k' c #0C2F59",
- "l' c #5A7DA7",
- "m' c #5A7EA7",
- "n' c #5B7FA7",
- "o' c #5B7EA8",
- "p' c #5C7FA8",
- "q' c #5F83AA",
- "r' c #6084AB",
- "s' c #6589B0",
- "t' c #0C196C",
- "u' c #152064",
- "v' c #11258D",
- "w' c #6371B1",
- "x' c #6271B1",
- "y' c #6372B2",
- "z' c #6778B1",
- "A' c #0C2E59",
- "B' c #597CA6",
- "C' c #5A7CA6",
- "D' c #597DA6",
- "E' c #5D80AA",
- "F' c #5E83AA",
- "G' c #0E355B",
- "H' c #0C1A6F",
- "I' c #131E62",
- "J' c #414C90",
- "K' c #10258E",
- "L' c #6271B0",
- "M' c #6272B1",
- "N' c #6373B1",
- "O' c #6677B1",
- "P' c #0B2E59",
- "Q' c #577BA5",
- "R' c #587BA6",
- "S' c #587CA6",
- "T' c #5A7EA8",
- "U' c #5D82AB",
- "V' c #6289AE",
- "W' c #1A5FA3",
- "X' c #0D1C75",
- "Y' c #131E61",
- "Z' c #404B8E",
- "`' c #475296",
- " ) c #10258D",
- ".) c #6270B0",
- "+) c #6272B0",
- "@) c #6576B2",
- "#) c #6576B1",
- "$) c #577AA4",
- "%) c #577BA4",
- "&) c #587BA5",
- "*) c #5C81A9",
- "=) c #648AAF",
- "-) c #0E345B",
- ";) c #0D1D79",
- ">) c #101B5F",
- ",) c #3C478B",
- "') c #11258E",
- ")) c #6371B0",
- "!) c #6575B1",
- "~) c #0B2E58",
- "{) c #5679A3",
- "]) c #5779A4",
- "^) c #567AA4",
- "/) c #577AA5",
- "() c #577BA6",
- "_) c #597BA6",
- ":) c #175797",
- "<) c #0E1F82",
- "[) c #101B5E",
- "}) c #384487",
- "|) c #0B1858",
- "1) c #6170B0",
- "2) c #6575B0",
- "3) c #5578A2",
- "4) c #5678A3",
- "5) c #5679A4",
- "6) c #5A7DA6",
- "7) c #102394",
- "8) c #111C60",
- "9) c #141F63",
- "0) c #293578",
- "a) c #0A1859",
- "b) c #616FAF",
- "c) c #616FB0",
- "d) c #6270AF",
- "e) c #6372B0",
- "f) c #6474AF",
- "g) c #0B2D58",
- "h) c #5576A2",
- "i) c #5577A2",
- "j) c #5577A3",
- "k) c #5578A4",
- "l) c #5578A3",
- "m) c #587CA5",
- "n) c #597DA7",
- "o) c #5D82A9",
- "p) c #6187AD",
- "q) c #154F8D",
- "r) c #1227A5",
- "s) c #0D185C",
- "t) c #1B266A",
- "u) c #313C80",
- "v) c #445093",
- "w) c #10248D",
- "x) c #6170AF",
- "y) c #6474B1",
- "z) c #6373AF",
- "A) c #5375A1",
- "B) c #5476A2",
- "C) c #587AA4",
- "D) c #5C7FA9",
- "E) c #6084AD",
- "F) c #102393",
- "G) c #0C196A",
- "H) c #0E1A5D",
- "I) c #242F73",
- "J) c #3A4589",
- "K) c #626FAF",
- "L) c #626FB0",
- "M) c #6475B2",
- "N) c #6272AE",
- "O) c #0A2C59",
- "P) c #5275A1",
- "Q) c #5376A2",
- "R) c #5477A2",
- "S) c #144A84",
- "T) c #0E1E7F",
- "U) c #121D61",
- "V) c #2B3679",
- "W) c #0A1858",
- "X) c #6370B0",
- "Y) c #6271AF",
- "Z) c #0A2C58",
- "`) c #5173A0",
- " ! c #5274A1",
- ".! c #5274A0",
- "+! c #0D1B74",
- "@! c #10248E",
- "#! c #6171AE",
- "$! c #51729F",
- "%! c #51739F",
- "&! c #5273A0",
- "*! c #5476A1",
- "=! c #5576A3",
- "-! c #114379",
- ";! c #102291",
- ">! c #0C196B",
- ",! c #1F2A6E",
- "'! c #364185",
- ")! c #465195",
- "!! c #10238D",
- "~! c #616EAF",
- "{! c #616FAD",
- "]! c #0A2B59",
- "^! c #50729E",
- "/! c #50729F",
- "(! c #5375A0",
- "_! c #134C8D",
- ":! c #0E1E81",
- "~ c #323D81",
- ",~ c #0A2D5D",
- "'~ c #1354AE",
- ")~ c #10228F",
- "!~ c #212C70",
- "~~ c #374286",
- "{~ c #0F228B",
- "]~ c #1251A7",
- "^~ c #283377",
- "/~ c #3E4A8D",
- "(~ c #0F4085",
- "_~ c #0B2F62",
- ":~ c #1328A8",
- "<~ c #0D1C77",
- "[~ c #303B7F",
- "}~ c #104289",
- "|~ c #0B3063",
- "1~ c #112497",
- "2~ c #1C276A",
- "3~ c #0C175B",
- "4~ c #0F438A",
- "5~ c #0B3266",
- "6~ c #0F2088",
- "7~ c #0C3367",
- "8~ c #365885",
- "9~ c #0B3369",
- "0~ c #0E1D7C",
- "a~ c #0B2F60",
- "b~ c #0C366E",
- " ",
- " ",
- " ",
- " ",
- " ",
- " . . ",
- " . . . . . . . ",
- " . . . . + @ # $ % . . . . ",
- " . . . . & * + @ = - % ; > , . . . . ",
- " . . . . ' ) ! * + @ ~ { ] % ^ , / ( _ . . . ",
- " . . . . : < [ } | * + 1 = $ 2 ; > , / 3 4 5 6 . . . . ",
- " . . . . 7 8 9 0 a } | * + b c d 2 % > , / e f g h i j k . . . . ",
- " . . . . l m n 9 o p q } | * r s t # u % v w x y z A B i C D E F G . . . ",
- " . . . . H I J K L M 9 < q ' | N O P t # Q % R S T / U V W X Y D Z ` ...+.. . . . ",
- " . . . . @.#.H I $.%.L M 9 < q } } N r + @ # Q &.R S *.=.f V W X -.;.k ` ...+.+.>.,.. . . . ",
- " . . . . '.'.'.#.H ).!.~.n {.].< 0 ' } | ^.b @ # Q ] /.(., / f 4 5 B i D k _. ...:.<.[.,.}.|.1.. . . . ",
- " . . . . '.'.'.'.'.2.H 3.J %.m 7 9 < p } ) 4.5.+ @ ~ Q Q 6.> , / 3 4 7.X 8.9.k 0. ...a.b.<.c.d.|.1.e.f.g.. . . ",
- " . . . . . '.'.'.'.'.'.'.h.i.j.$.$.m 7 k.< l.a m.| * + @ c Q Q % > , / f f n.B i j k _.o.p.q.+.r.c.s.|.t.u.v.w.x.y.. . . . ",
- " . . . . . '.'.'.'.'.'.'.'.z.A.B.I $.m 7 9 ].C.q D.| * + P t # Q 6.> (.T f E.F.6 i j G.0.H.I...+.<.c.d.J.K.L.M.N.x.y.O.P.Q.. . . . ",
- " R.. . '.'.'.'.'.'.'.'.'.'.'.S.A.3.I $.m n k.T.U.q V.W.X.+ + t # Q % /.S Y./ z F.W i -.Z.k _.`.a.+.<.r.s. +|.L.M.N.g..+++O.@+#+$+%+. . . ",
- " . . . . . '.'.'.'.'.'.'.'.'.&+i.H I $.K n 8 < < q } *+* ^.=+@ { Q ] -+, , ;+_ V W B 8.>+,+_.G ..+.'+c.d.d.t.)+!+M.x.x.~+{+Q.#+$+]+^+/+. . . . ",
- " . . =.f . . . . . '.'.'.'.'.'.2.A.H (+$._+:+<+].< q } | N ^.s [+# Q }+6.> *./ f V 5 |+C D 0._. ...q.1+2+3+4+|.1.!+N.5+y.6+O.Q.#+$+7+8+/+/+/+/+. . . . ",
- " . . / / y e . . . . . '.'.'.'.&+#.H I 9+0+m a+9 b+l.} m.X.5.+ @ = $ % > c+Y./ f U W X d+k k _. ...e+f+g+c.d.J.)+h+i+j+x.6+k+@+l+m+n+o+/+/+/+/+/+/+/+. . . . ",
- " . . S , *.x T / / 3 . . . . . '.'.#.p+q+!.~.m 7 9 < 0 ' } r+* P @ # { s+% w , / e V 5 B -.j k _. .t+e+1+2+3+d.|.K.u.u+N.x..+O.v+w+x+y+z+/+/+/+/+/+/+/+/+/+/+. . . ",
- " . . ; > > ^ , A+/ / e y ( . . . . . i.).B+$.C+7 9 : l.a } | * + D+t d Q % > , / f E+5 6 d+j k _.o.p.F+<.r.c.d.J.)+h+!+G+x.H+O.@+@+$+y+%+/+/+/+/+/+/+/+/+/+/+/+/+. . . . ",
- " . . 2 % % /.-+> ^ S , Y.I+/ =.e . . . . . I $.C+L 9 J+K+a } & 4.+ P c d Q v L+S / f f g |+i j k ,+H.t+:.+.<.c.s.M+N+O+i+N.x..+~+@+#+P+]+%+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+. . . . ",
- " . . # $ Q 2 s+6./.> > , , , , / / ;+y . . . . . 7 a+< U.Q+} | N R+P S+# u % > , / ( f V W i -.Z._.T+I...+.U+c.V+W+t.O+!+N.x.y.++X+@+#+$+%+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+/+. . . . ",
- " . . @ t # Y+Y+Q Q &.% v v > c+c+S , , / =.( f . . . . . < q Z+) X.^.D+c Q Q % /., Y./ 4 V W i d+k Z T+`.q.+.<.r.d.}.`+)+!+N.x. @.+k+@+#+x+%+z+/+/+/+/+/+/+/+/+/+/+/+/+/+. . . . f f . ",
- " . . + D+@ c # # $ Q Q Q }+% % /./.S S , *.T / ;+;+f . . . . . m.4.5.b @ # Q % R > , e f V W i 8.j k _.G ..+.'+<.c.4+`+)+h+v.w.y..@O.@+#+x+n++@/+/+/+/+/+/+/+/+/+/+/+. . . . f f f f f . ",
- " . . . ^.+ + P b @ c t # - - u u &.% /.R c+c+S , A+/ / y f . . . . . 5.+ @ # Q ] /.L+A+=.f V W |+@@9.k _. .t++.b.g+c.W+|.1.!+u+j+#@~+O.@+l+#+$@8+/+/+/+/+/+/+/+/+/+. . . . f f f f f f f f . ",
- " . . | N * * + + =+=+D+@ S+# %@%@- Q 2 % 6.v /.> , , , / T y f f . . . . . # Q % % > , / f E+V B -.9.k _.o.p.F+f+r.c.d.|.&@O+u+N.x..+++@+*@#+]+%+/+/+/+/+/+/+/+. . . =@f f f f f f f f f f -@. ",
- " . . . W.D.| | 4.* 5.r + P b @ S+# # Y+- Q Q }+% ; -+> w w S , I+/ / 3 f . . . . . ; > , A+f V g ;@i j k _.>@`...+.r.c.d.|.&@,@'@G+x..+O.)@@+x+$+z+/+/+/+/+/+. . . T / ( y f f f f f f f f f f . . ",
- " . . . a } V.} W.| r+4.* ^.* + D+@ @ @ # # - Q Q ] 2 ; /.-+> w (., A+Y./ f f . . . . . , / / U V X @@j k Z .t+a.+.<.c.d.|.K.O+!+G+x.y.!@P.Q.~@$+8+/+/+/+. . . ; > w ^ , T / 3 f f f f f f f f f . . ",
- " . {@. . . . Z+} ) D.m.| r+* * 5.r + D+@ S+c # # - Q Q s+% % -+> c+(., , / / / / f . . . . . f g B i j k _._.`.q.+.<.c.]@ +1.O+!+N.x..+!@)@^@#+$+%+%+. . . # - Q % % % > L+w Y./ / / f f f f f f f . . ",
- " . /@(@_@:@. . . . [ } } W.| N ! * * R++ + @ @ c c # # # Q u 2 % % ; > L+, , *./ / =.;+f . . . . . i j 9.E >@G ..+.'+c.<@4+&@)+!+N.G+.+O.O.l+#+@+. . . O s @ c c $ Q Q 2 % % > c+, I+x ;+f f f f f f . ",
- " . [@/@}@/@/@/@. . . . q } } W.V.! ! N * + O + b b [+t c # $ Q u 2 ] % v R > > ^ *.A+I+/ e f f . . . . 9.E _. ...+.'+[.V+}.|.)+!+v.x..+6+{+.+. . . *+X.r+* r + s @ S+c { - Q s+% > > (., *./ f f f f f . ",
- " . |@|@|@1@}@2@/@}@/@. . . . Q+[ } W.| N & * * R++ D+=+@ S+~ # # %@Q Q ] % R -+> ^ , w , , / =.;+f . . . . . ...3@<.4@3+}.|.)+!+u+w.x.)+. . . 0 q } [ V.| & 4.+ R++ b @ # # Q Q &.% 6.> > , A+x ( f f . ",
- " . 5@5@6@|@7@|@|@8@}@}@2@/@. . . . ' } ) | | X.| * * ^.+ P 1 @ @ ~ # d Y+Q Q % % v > v w , , *.T / =.f f . . . . . 9@2+,.d.|.t.!+!+b.. . . <+9 o b+p 0 q Z+} ) | N * O + s @ t = d - Q % % -+> ^ , *./ . ",
- " . 0@5@a@a@b@c@6@7@|@|@[@8@|@8@. . . . . } ) W.W.N & r+* * r + s 1 @ # # # { - Q u % % ; ; > c+, , , I+/ ( f f . . . . . d.M+t.j . . . $.0+m :+7 M 9 9 < U.q Z+} ) *+& 4.* O + @ @ c # { - }+% % R ^ , . ",
- " . d@e@f@f@g@5@5@h@b@5@h@|@b@|@|@|@|@. . . . Z+} } | | & X.r+5.i@+ s D+@ [+t # # Q Q 2 &.% % /.R > c+, , T T / y f . . . . . . . . H 3.I !.$.%.~.C+7 {.a+T.: C.< q q } D.| r+* ^.+ =+1 @ c # - Q s+% v . ",
- " . j@k@d@d@d@d@g@f@e@d@l@5@5@a@b@6@c@6@|@|@. . . . [ } } m.| | r+* * + + =+D+@ ~ ~ # m@n@n@Q &.% % v > c+(., , Y./ / =.f . . . '.h.#.#.o@H I I J $.K m C+7 M M ].< U.p q ' D.m.| ! * O + @ @ c @ d d 2 . ",
- " . p@q@q@r@r@r@j@s@d@d@f@e@5@l@0@5@5@b@b@c@7@7@7@. . . . } V.V.) | & * * * + s t@u@v@v@w@m@n@x@y@u % v % > > (., , *.x / Y.. . z@A@B@'.2.#.#.p+j.I !.$.C@_+:+C+<+8 9 o < U.0 D@} W.m.| r+* O + s @ t # . ",
- " . E@E@F@F@G@q@q@H@H@I@d@H@d@d@d@d@5@f@5@5@5@5@5@c@h@. . . . [ Z+) ) m.| 4.J@K@L@M@N@O@v@w@m@P@x@Q@R@S@] % 6.6.> > w , , . . T@U@V@W@X@Y@X@h.2.#.#.H B.I !.$.$._+Z@7 7 9 T.o < l.q q } } | | X.^.r D+=+. ",
- " . `@E@E@E@E@F@G@ #p@q@q@q@q@d@k@d@H@d@d@g@f@g@d@5@0@5@5@6@. . . . Z+} .#+#@###$#L@%#M@O@O@P@P@n@n@*#=#S@&.}+% 6.-+> > . . -#T@;#U@>#z@,#X@Y@'#@.#.)#!#H I I I $.K m 7 7 7 9 9 T.< q q } } D.r+4.* 5.. ",
- " . ~#~#~#{#~#E@E@E@]#G@^#^# #p@q@q@q@j@k@j@k@d@d@d@d@0@0@e@l@0@5@/#(#_#:#<#.#[#}#K@K@L@M@|#O@#2#3#4#4#x@R@5#6#% }+v . . 7#8#9#0#a#U@T@U@U@,#b#X@c#'.#.#.)#H 3.I l $.$.m m 7 7 M 9 9 < 0 q D@} *+| | . ",
- " . d#e#f#~#~#~#g#h#{#{#E@i#E@E@q@F@p@]#q@q@q@q@q@j@d@k@d@d@d@j#k#l#m#n#o#:#:#p#+#}#q#$#$#$#M@M@u@v@1#r#s#3#t#u#v#5#w#x#. . y#z#A#B#C#D#a#E#F#G#V@z@H#X@I#'.@.#.#.H H B.I $.$.0+K :+7 M M : : < q q ' } . ",
- " . J#K#K#K#K#L#~#~#~#~#~#~#{#{#i#E@E@^#]#G@]#q@q@^#q@I@H@M#M#N#O#k#k#l#P#Q#_#R#:#S#[#[#J@$#$#T#T#u@U#1#1#P@3#t#t#u#V#W#X#Y#Z#`# $y#z#7#7#D#D#-#.$U@U@+$z@@$H#'#'.2.2.#.p+j.I I l $.%.m m 7 7 9 ].< C.q . ",
- " . #$J#K#$$$$%$K#K#L#K#L#f#~#f#~#~#`@`@E@E@E@E@E@E@q@&$*$=$=$-$-$;$O#>$>$,$,$Q#:#:#S#S#'$q#J@$#$#T#)$!$U#1#1#s#~$t#t#{$W#]$^$^$/$($`#_$y#:$7#9#D#<$a#E#U@+$[$b#X@X@A@'.2.#.p+H H B.!.!.~._+m }$7 a+9 ].. ",
- " . =@|$#$#$#$1$2$K##$%$K#K#L#e#f#e#~#L#~#~#~#{#3$4$5$6$7$7$8$&$*$-$-$9$9$>$0$0$P#P#Q#S#S#'$'$'$a$b$T#c$!$!$#2#3#d$e$f$g$]$^$^$h$/$i$`#j$k$y#7#7#l$<$m$E#;#U@+$z@z@H#'.'.@.#.#.i.H q+I J $.K K :+C+7 . ",
- " . n$o$p$=@o$q$#$q$#$#$#$J##$$$%$$$K#K#e#e#r$s$s$t$4$5$5$u$v$7$w$w$w$-$x$9$>$>$0$y$P#z$A$B$'$'$'$C$b$T#D$D$!$E$#F$F$G$H$I$J$K$^$L$Y#h$($($`#`#y#y#M$7#C#D#E#E#N$U@>#z@b#X@'#'.z.#.#.p+H j.!.O$K 0+m . ",
- " . P$P$n$=@=@=@=@p$p$o$#$#$#$#$#$Q$K#Q$R$R$S$T$r$s$t$t$U$5$6$V$6$w$w$W$x$-$X$;$>$0$y$y$z$z$Y$Z$`$'$ % %.%T#T#!$u@+%@%#%$%%%&%*%=%J$K$-%;%>%>%($,%'%`#`#y#z#7#)%D#0#E#;#N$U@z@,#@$X@Y@'.S.#.o@H I j.I J . ",
- " . !%!%~%P${%!%n$!%=@=@=@=@=@p$#$]%^%/%/%/%(%S$T$_%:%s$<%t$5$5$5$6$u$7$w$w$-$X$X$>$[%>$y$y$Y$Y$A$`$}%C$ %.%.%|%1%+%+%2%3%4%$%%%*%5%I$J$K$^$;%>%6%7%,%8%9%0%k$:$7#8#8#D#a%E#.$U@[$z@z@X@Y@Y@S.@.#.A.H q+. ",
- " . b%b%c%b%d%d%!%!%!%e%f%e%n$g%g%g%^%h%h%i%j%/%R$R$T$_%:%s$k%U$U$4$6$u$V$w$7$w$x$X$X$l%l%0$m%n%z$A$o%`$p%q%.%.%|%r%+%s%2%2%3%t%u%v%*%5%J$]$w%L$x%y%6%7%,%'%z%A%`#y#B%7#l$l$D#E#E#T@[$C%z@H#X@A@I#z.#.A.. ",
- " . D%E%F%F%b%b%G%b%~%~%H%I%I%I%J%J%J%g%I%I%g%]%(%R$_%R$T$T$K%k%K%U$L%M%N%u$w$O%P%Q%X$X$X$[%R%0$n%n%z$Y$Z$Z$S%q%T%|%U%V%W%s%X%3%t%4%u%v%*%Y%J$J$Z%;%;%y%y%`%8% &9%.&`#+&y#7#7#B#D#0#E#E#U@U@@&W@X@B@&+. ",
- " . $&E%E%E%%&E%&&b%b%*&=&-&;&I%;&I%>&I%I%I%I%g%h%]%/%,&_%_%'&'&k%k%L%U$M%)&N%u$!&O%x$x$W$X$~&~&{&{&0$]&z$Y$Z$Z$T%.%^&/&U%W%s%(&2%_&3%:&u%v%<&[&}&K$K$;%>%y%y%,%8%9%9%z%|&`#y#:$7#7#C#m$E#E#.$U@U@z@@$X@. ",
- " . 1&$&E%2&3&4&5&6&6&*&7&6&=&=&*&=&>&-&8&-&I%I%J%g%h%]%,&(%R$_%9&9&'&k%0&L%)&)&u$v$O%!&W$P%W$X$~&~&[%a&z$Y$b&o%c&.%d&d&e&/&U%W%s%X%2%3%t%f&f&g&<&<&h&i&Z%Z%j&y%y%k&l& &m&.&|&n&0%y#z#A#)%D#<$E#;#T@>#@&. ",
- " . o&1&1&1&p&p&q&q&p&6&6&6&6&6&*&*&r&8&7&=&8&8&I%;&s&g%]%]%]%,&,&_%9&'&:%K%L%L%U$t&)&!&!&!&W$P%u&v&~&[%{&{&a&Y$w& %T%T%x&y&y&U%z&A&A&B&C&D&D&E&v%v%v%F&G&i&Z%H&x%I&J&K&8%9%m&.&|&L&M& $y#M$7#8#D#m$a%U@. ",
- " . N&o&O&O&P&Q&q&q&p&6&q&q&6&6&5&6&6&6&6&=&7&*&*&=&;&;&g%R&^%^%,&,&S&T&T&U&U&k%L%L%M%N%V&W&O%!&X&u&v&Y&v&{&m%m%Z&C$Z&`&c&x&x&y&y& *.*+*s%2%C&D&t%@*f&v%<*G&$*%*H&x%y%`%l&8%9%m&A%&*n&**=*y#y#7#7#9#m$. ",
- " . -*-*P&O&P&P&P&P&O&p&;*Q&p&p&p&q&q&5&6&q&6&6&6&6&*&=&=&>*s&s&,*'*,&)*S&T&T&!*k%k%L%M%M%V&t&!&O%P%P%X&Y&v&v&{&~*'$~*{*]*]*c&x&x&^*^& *+*/*(*_*D&t%:*E&<*[*F*G&$*%*}*I&I&`%K& &9%m&&*|*n&**1* $y#2*2*. ",
- " 3*4*5*-*-*-*-*O&-*P&O&P&6*P&P&Q&p&p&q&p&6&5&q&6&6&6&q&6&*&7*7*>*s&,*8*8*9*S&T&U&0*U&a*b*M%M%V&W&W&c*c*X&X&Y&d*e*'$f*g*h*{*]*i*j*x&x&k* * *l*(*(*_*C&m*@*f&n*[*F*G&o*%*}*p*q*r*K&s*t*m&&*|*u*v*w*x*k$. ",
- " 3*y*z*4*4*A*-*-*-*-*-*-*P&P&P&O&P&p&p&P&P&;*B*p&p&q&q&q&6&6&7&=&C*7*,*8*8*8*9*T&D*E*!*a*a*F*G*H*V&I*W&W&c*J*~*K*'$L*M*f*g*h*N*]*i*c&x&^*y&O* *l*P*(*Q*R*m*S*E&<*T*F&U*G&V*W*X*X*q*r*l&s*Y*Z*`*|***** =.= ",
- " +=y*@=@=#=4*4*4*5*$=%=-*-*-*-*O&O&P&-*P&P&Q&Q&P&q&p&;*q&q&q&7&q&7&C*s&,*,*'*8*9*&=*=D*!*U&a*F*G*M%V&t&W&W&==c*I*S#-=;=L*>=,='=)=h*]*i*j*j*^*O*!=~=/*{=]=Q*^=S*S*<*<*T*F&/=o*(=W*X*X*J&r*_=s*:=`*I$<=-%.= ",
- " +=[=}=}=[=y*@=y*z*|=z*4*1=1=-*$=-*%=-*-*-*P&P&-*P&P&P&Q&p&q&q&p&q&7&7&C*7*,*,*8*8*D*&=D*!*!*a*a*a*F*G*V&2=W&3=4=:#5=-=-=6=7=>=8=9=h*0=a=b=c=^*O*O*!=l*d={=e=R*R*R*S*E&n*F&U*U*f=o*W*g=X*h=r*G$G$&%H$I$i= ",
- " j=k=l=m=l=}=}=}=}=[=@=#=@=4*#=n=1=$=o=-*1=p=-*-*P&q=-*q=-*P&O&O&;*q&6&r=C*7*7*s=t=u=&=v=9*D*0*0*a*a*F*w=w=w=2=x=:#y=z=A=B=B=6=8=C=D='=h*N*E=F=F=G=^*H=H=l*d={=I=e=R*J=K=L=L=M=N=U*o*O=P=4%Q=R=R=G$*%H${$ ",
- " j=S=T=k=U=k=V=k=k=}=m=[=[=@=@=y*y*@=n=W=1=X=X=$=-*-*p=-*-*-*q=-*-*O&;*;*7&7&7&C*t=t=Y=v=&=&=*=D*D*0*a*Z=G*`= -5=_#.-+-@-#-$-%-B=&-6=7=,=*-N*=-E=----;-O*O* *l*>-d=]=,-J='-'-L=n*N=)-B&X%X%_&_&!-Q=R=R=~- ",
- " j={-S={-S=S=T=S=T=k=k=V=k=V=l=[=[=[=y*y*y*n=n=o=o=n=$=p=1=%=%=$=-*-*P&O&;*;*]-r=r&C*^-t=t=/-&=/-0*0*0*0*Z=`=F*(-_-:-<-.-[-#-A=}-$-|-&-1-2-*-3-4-0=E=5-6-;-f$7-8-l*d=9-]=,-J=0-U%a-z&W%W%s%2%2%2%_&3%4%F$ ",
- " b-c-c-c-d-{-d-{-S=S=S=S=T=T=k=k=V=k=V=}=[=[=y*@=n=o=e-n=1=o=1=$=p=%=-*-*P&O&;*r=]-7&f-g-t=t=Y=h-&=D**=0*0*i-j-k-(#l-m-n-.-[-@-#-o-$-p-B=&-q-2-2-3-4-r-E=5-;-G=f$H=s-8-d=x&x&y&y&q%U%U%z&W%s%s%X%2%_&2%F$ ",
- " t-c-u-c-c-c-v-d-{-w-{-w-S=x-S=S=S=U=k=l=k=k=V=}=}=[=e-e-e-W=e-e-o=o=n=$=$=-*y-O&;*]-]-z-C*g-^-Y=Y=A-&=B-B-C-i-D-n#E-F-l-G-H-.-.-@-I-}-}-B=J-1->=2-3-K-4-r-5-L-6-M-f$]*]*i*c&j*x&^*^*y&e&q%z&z&N-A&s%B&+% ",
- " t-O-u-u-u-u-P-Q-c-c-c-v-c-R-{-S-{-S=S=T=S=k=S=k=k=T-}=m=}=e-e-e-e-e-n=1=n=$=$=y-U-6*V-W-X-f-f-g-Y-Z-A-/-B-B-`- ;/#.;+;@;l-#;H-H-.-[-I-I-}-$;p-J->=>=2-%;4-&;r-,=3-,={*Z&]**;a=i*c&=;x&-;y&!=/&U%a-+*s%+% ",
- " t-;;>;,;;;O-u-u-';Q-u-Q-Q-P-c-d-);d-);w-!;S=S=U=T=T=k=T=k=V=}=l=e-~;e-e-e-n=$={;y-$=y-U-V-];]-f-f-Y-^;Z-/;/;/;(;_;:;.;.;<;@;l-[;};n-.-|;I-1;}-$;2;J-3;4;%;6=6=6=8=8=,=3-3-h*]*a=a=i*c&j*x&x&^&!=y&U%+*+% ",
- " 5;6;;;;;;;;;;;7;8;O-u-O-O-';';';';Q-c-c-);{-);w-{-{-S=k=S=U=T=k=V=k=m=e-e-~;e-e-{;1={;U-U-];V-];9;9;g-Y-^;^;/;0;_;a;a;:;.;.;b;@;[;G-H-c;[-|;I-d;$;$;J-o-}-B=B=|-&-6=8=8=,=9=3-h*0=]*`&e;a=c&x&d&^&^&y&|% ",
- " f;g;g;h;h;i;j;j;;;;;8;>;k;O-u-u-O-c-u-u-';c-c-c-);c-d-w-w-S=S=S=S=T=U=k=k=V=l;l;~;m;e-1=n;o;V-U-];p;9;g-q;g-0;r;s;t;u;u;:;:;.;v;+;b;[;};w;w;x;y;[-|;|;I-o-z;}-$-%-B=&-6=6=8=8=,=*-h*h*0=]*]*i*j*j*j*x&|% ",
- " f;A;B;g;g;g;g;g;h;j;6;6;;;k;;;;;O-;;O-k;u-u-c-Q-';';';c-v-);c-w-);d-S=S=U=S=S=T=S=l;~;m;{;{;C;y-y-V-];9;p;p;g-D;s;E;F;G;H;I;:;:;J;<;<;K;[;L;L;H-H-M;y;[-|;I-I-}-}-$-%-p-B=6=6=C=7=8=,=)=h*N;0=]*]*i*c&|% ",
- " f;O;P;Q;R;P;Q;S;g;g;g;g;g;i;j;j;;;;;;;;;7;k;O-O-u-u-u-P-';P-u-c-c-);d-w-S={-S=!;S=S=U=k=~;{;{;n;y-o;U-T;p;p;p;U;V;W;X;Y;Y;G;Z;u;:;`;J; >b;b;.>[;};H-n-n-c;[-[-I-#-#-o-$-$-p-|-&-6=6=q-8=8=9=9=h*h*0=]*+> ",
- " @>O;#>O;$>#>O;P;P;P;P;S;g;g;g;g;i;h;j;6;6;6;;;;;;;,;>;k;u-u-u-u-';u-';c-c-c-);{-);{-{-S-S=S=U=%>{;&>&>o;*>W-=>U;->;>>>,>'>Y;)>)>!>`;J;~>~>{>{>K;@;]>[;G-H-M;w;y;|;[-@-I-d;z;$-p-B=B=|-6=6=M*8=9=9=h*h*.% ",
- " ^>/>(>_>(>_>_>O;O;O;$>O;A;A;P;P;S;R;g;g;i;i;i;6;6;;;;;;;;;k;k;u-O-u-O-u-Q-u-c-c-';c-c-);w-d-S=S-S-:><>n;[>[>o;}>|>1>2>3>W;'>'>)>4>5>6>7>8>J;~>~>{>{>b;K;[;[;H-H-.-c;y;[-[-#-#-}-}-p-$-B=|-&-6=>=8=,=,=.% ",
- " 9>0>0>0>a>a>(>/>_>_>#>b>O;O;P;$>P;P;P;Q;g;S;c>g;g;h;i;d>j;6;e>;;;;;;k;u-;;O-u-O-Q-Q-';c-';c-);););{-S-S=n;n;[>f>|>g>g>2>'>h>h>h>h>i>)>!>7>7>8>`;`;~>~>b;b;K;.>[;[;m-w;w;c;.-[-j>I-#-z;}-k>B=B=B=&->=>=.% ",
- " 9>l>m>n>0>0>0>0>a>o>(>(>_>_>p>#>p>O;O;P;P;Q;P;Q;g;g;g;g;i;g;i;h;e>j;q>;;;;;;8;7;8;>;u-O-u-u-O-';r>c-c-););w-);s>|>t>u>v>3>w>,>,>'>h>x>)>i>y>5>z>7>`;`;A>~>B>{>K;b;[;L;};H-<-w;c;[-|;#-I-#-}-}-$-B=B=C> % ",
- " D>E>F>m>m>m>G>0>0>n>0>0>0>o>_>o>(>_>_>#>#>#>O;#>P;P;P;A;P;B;g;B;g;i;H>i;i;6;;;h;;;;;8;7;O-O-O-u-u-Q-I>';Q-c-c-J>K>L>M>N>O>u>v>w>P>w>Q>R>S>h>)>)>4>!>7>6>`;`;J;~>b;{>b;.>K;[;T>H-U>c;c;[-|;@-#-#-$-}-V> % ",
- " W>X>E>E>m>Y>m>Y>Z>`>n>0>0>0>l>0>0>0>(>0>(>/>(>_>_>#>#>O;P;P;P;P;A;B;A;R;g;g;g;j;i;i;i;;;;;;;;;;;8;k;8;O-u-O-u- ,K>.,+,@,M>M>#,u>v>3>P>,>Q>$,$,h>)>i>%,4>6>7>6>`;J;~>~>+;b;]>]>[;L;H-w;w;y;.-[-|;#-#-o-'$ ",
- " &,X>X>*,X>X>X>X>E>E>=,m>`>m>`>l>-,l>n>0>0>0>;,;,a>o>(>_>_>O;P;#>#>P;O;P;c>B;P;c>B;g;i;i;i;6;;;e>6;;;7;;;,;O-O->,_;,,',.,),!,L>N>N>#,v>v>~,w>w>w>h>h>{,i>y>4>4>7>6>:;`;J;~>{>{>b;]>.>[;L;w;w;c;[-.-[-#-'$ ",
- " &,],],],],^,*,],/,X>X>E>E>E>Y>m>m>m>`>n>`>l>G>l>0>0>0>(,;,o>(>_>(>#>O;p>#>#>P;P;P;c>A;S;g;g;g;g;i;j;i;;;;;6;;;_,s;:,<,[,},.,),+,|,L>M>N>#,v>v>P>w>w>$,h>h>S>)>)>4>7>7>6>`;A>~>{>b;b;b;]>.>[;L;w;H-c;[-'$ ",
- " &,1,2,3,4,2,],],],5,^,^,X>X>E>E>E>F>6,E>Y>`>`>l>`>`>`>n>l>0>o>a>_>(>_>_>_>#>p>O;O;P;$>P;P;P;g;c>g;c>g;g;i;q>i;7,s;8,8,9,:,[,[,',),.,),M>N>N>N>v>v>v>w>w>,>Q>$,Y;i>)>y>!>5>6>:;`;`;~>{>{>b;K;[;[;};H-U>'$ ",
- " 0,a,a,b,a,3,3,2,3,4,],],],*,^,],^,X>X>E>E>E>E>E>6,`>m>m>`>Z>G>`>l>0>0>0>a>_>(>p>(>#>#>#>$>P;#>P;P;P;P;P;B;g;i;c,s;d,e,f,8,:,<,:,[,[,',',),@,M>N>M>#,g,v>h,P>w>'>$,h>S>)>y>y>4>6>7>`;`;~>B>b;b;b;]>[;L;S# ",
- " i,j,k,k,b,j,b,a,3,3,3,2,l,3,],l,],],*,/,/,X>m,E>X>Y>Y>=,F>F>F>m>-,-,l>n>`>0>0>0>o>o>o>p>(>#>p>#>#>b>O;P;n,P;c>c,V;o,p,q,e,r,r,s,9,9,<,,,},.,.,+,L>M>M>N>O>v>v>3>w>Q>'>h>h>{,)>y>4>4>6>6>`;`;~>~>b;b;b;S# ",
- " t,u,u,j,v,k,k,j,k,a,w,a,b,a,a,3,1,4,x,],l,],],/,X>X>^,y,E>Y>=,=,m>z,`>`>m>l>n>n>l>0>G>0>0>o>(>/>_>#>#>#>O;$>$>A,V;B,C,o,p,D,e,e,r,8,E,9,<,[,},',.,.,!,M>M>F,O>O>~,3>P>w>$,Q>h>S>Y;G,y>4>7>6>8>`;J;~>~>:# ",
- " t,H,I,u,u,J,u,j,j,K,k,j,j,k,k,b,b,a,a,3,1,4,4,],4,],],/,/,^,X>/,*,E>E>E>E>`>m>`>`>`>`>m>0>-,0>0>0>0>(>/>_>/>p>L,|>M,N,N,C,O,P,Q,D,e,f,e,8,9,9,<,[,',.,),),|,M>N>N>u>u>v>P>w>w>,>$,h>S>)>y>4>4>7>:;8>`;R, ",
- " S,T,H,H,I,U,V,V,u,v,W,u,X,j,k,k,b,b,b,b,a,a,a,3,3,3,Y,x,x,],],],],],X>X>E>E>E>E>=,F>`>`>z,`>m>`>0>G>l>0>0>0>0>L,|>Z,`, '.'N,N,+'o,P,P,e,e,@'8,9,8,:,<,[,,,#'),),M>M>F,N>u>v>3>w>,>,>h>h>h>S>i>y>4>4>6>:# ",
- " S,$'%'%'T,T,I,U,I,V,U,H,u,u,J,J,u,v,v,j,j,k,b,b,a,a,b,3,3,1,l,3,],l,x,*,],*,*,/,m,X>m,E>F>Y>`>z,m>m>`>`>m>-,G>&'|>*'Z,Z,Z,=' 'M,N,B,-'o,o,d,D,e,;'8,8,9,>'[,,,',),),+,M>M>N>N>v>v>h,w>$,h>h>h>{,)>)>%,:# ",
- " ,''''''''')')')'!')'I,T,T,I,H,u,u,u,u,v,W,v,j,j,j,j,k,~'~'{'a,3,3,3,2,x,4,],],],],/,*,y,/,X>m,E>z,E>F>F>Y>`>`>]'|>^'/'('*'Z,_':'M,M,M,N,o,o,<'P,D,D,e,8,s,9,:,<,[,['.,.,),M>@,M>#,O>}'v>3>w>w>h>h>h>S>_# ",
- " |'1'2'3'4'''''''5'''%'T,)'T,T,I,H,u,I,6'u,u,u,v,u,u,X,v,j,j,j,7'b,a,a,b,3,3,3,Y,l,],Y,],*,*,*,*,*,X>X>E>E>E>Y>8'|>9'9'0'a'('('b'*'Z,='M,N,c'B,o,o,Q,P,Q,q,e,8,8,9,<,<,[,.,.,),),M>M>F,N>d'u>h,w>w>,>$,o# ",
- " e'f'g'1'1'1'2'h'4'''4'''''''%'%'%'I,T,T,I,T,u,6'u,u,u,u,J,v,j,J,j,k,k,j,i'b,a,a,3,3,2,],4,x,],],],],^,/,/,*,X>j'k'l'l'm'n'o'p'/'('('*'_'Z,='M,q'.'-'r'o,Q,D,e,e,8,8,8,9,<,[,',',s'),L>M>M>N>O>v>3>3>w>/# ",
- " t'u'v'v'e'w'x'w'1'y'1'3'3'4'4'''''5'%''')')'T,T,T,T,I,u,u,u,u,u,v,J,K,j,v,k,k,b,b,a,a,b,3,3,3,3,1,l,l,],*,*,],z'A'B'C'D'l'l'9'n'0'^'('('E'*'_'='='='F'N,O,o,P,P,P,D,e,f,8,9,:,[,[,,,.,),L>@,M>N>O>u>u>G' ",
- " H'I'J'K'K'v'g'L'L'w'w'M'1'1'y'''3'N'2'''%'%'%')'%'T,T,T,T,I,T,I,u,H,u,u,u,u,j,j,k,~'b,b,~'7'3,7'3,3,3,2,1,Y,O'P'Q'R'S'B'B'l'l'o'o'T'0'p'('*'E'_' 'U'='.'N,N,O,o,D,e,D,e,f,8,8,:,V'[,[,.,',),@,|,M>/#W' ",
- " X'Y'Z'`'`' ) ) )g'L'.)L'+)1'w'1'1'3'1'2'''''''''%'%'%'!')'T,)'I,T,H,@)u,H,u,u,u,J,j,j,j,k,k,b,b,a,a,b,a,3,#)P'$)%)&)R'R'S'B'D'l'l'9'9'0'0'p'('*)Z,Z, 'U'='.'N,N,r'P,D,P,D,@'e,8,s,9,<,[,=)',),@,-) ",
- " ;)>),)`'`'`'`'') )g'.).).)L'))w'w'))w'1'1'4'1'3'4'N'''''%'%')'%'T,T,T,T,I,T,V,H,u,u,u,u,K,v,J,J,k,~'b,~'!)~){)])^)/)/)()R'_)S'B'l'l'm'9'n'0'('('('b'Z,Z,=' 'M,N,N,C,o,o,p,e,e,e,8,8,9,:,<,[,_;:) ",
- " <)[)})`'`'`'`'`' ) ) )|)1).).)L'L'L'L'L'w'))1'1'1'3'2'3'h'h'''%'%')')'T,!'T,T,T,T,6'u,u,H,u,u,u,j,J,j,2)P'3)4){)5)5)$)$)Q'Q'S'S'B'D'6)l'T'o'o'0'0'('('*)Z,Z,M,M,.'N,-'o,o,o,P,d,e,;'8,8,:,K> ",
- " 7)8)9)0)J'`'`'`'`'`' ) )a)b)c)d).).)d).)L'.)e)1'))x'1'1'1'4'''''''''%'%')'%'!')')'I,I,U,U,V,u,I,u,u,f)g)h)i)j)4)k)l)5)])$)&)&)m)S'B'D'n)6)l'9'n'o'0'p'('E'_'o)Z,M,.'F'N,r'o,P,o,e,D,p)s;q) ",
- " r)X's)t)u)v)`'`'`'`'K'w)K'a)b)b)x)1).).).).).)L'w'))))1'1'1'3'1'N'1'4'''y)''%')')'T,T,T,T,6'I,V,z)g)A)A)B)h)i)i)l){){)$)$)/)C)()R'S'B'B'C'l'm'9'o'0'a'D)('_'Z,_'M,='F'N,N,r'o,P,E)s; ",
- " F)G)H)I)J)`'`'`'`'`'w) )w)b)b)b)c)K)L)d).).)d).)L'))))w'e)e)1'1'y'2'''4'4'%''')'%'M)T,T,T,N)O)P)A)A)Q)B)B)R)j)j){)5)5)5)$)$)Q'&)S'S'B'D'l'l'9'0'0'p'p'('('*'Z,:'M,F'M,N,-'V;S) ",
- " T)U)I'V)J'`'`'`'`'w)w)w)W)c)c)b)c)c)c)L)b)d).).).)X)L'+)w'e)e)1'1'1'h'2'4'''''%')'%'Y)Z)`) !.!P)A)A)A)B)i)j)4)4)4)4)5)$)$)/)Q'&)S'S'B'D'l'm'9'0'0'p'a'('*'_'Z,Z,:'M,V; ",
- " r)+!s)t)u)v)`'`'`'`'w)w)@!W)b)b)b)c)b)c)b)L)K).).)d)d)L'L'L'w'w'1'e)1'1'1'3'4'''#!Z)$!$!%!&!.! ! !P)A)*!B)=!i)l)l)4)5)5)$)$)Q'R'S'S'B'6)l'l'l'9'n'0'D)('*)E'_'|>-! ",
- " ;!>!s),!'!)!`'`'`'`'!!w)W)b)~!b)b)b)c)b)b)b)c)b)K).).)L'.).)L'))))e)+)1'1'{!]!^!/!$!$!%!%!&!.! !P)(!Q)B)B)h)j)l){)5)^)$)$)Q'&)R'S'S'B'D'6)m'm'9'9'p'|>|>_! ",
- " :!)[!}!`'`'`'`'!!!!!!|!~!~!~!c)b)b)c)c)b)b)c)K)x)L).)1).)X)L'L'))1!2!3!3!4!^!/!/!$!%!5!&!.!.! !A)A)B)h)i)i)l)4)5)5)$)$)%)R'&)R'S'B'n)l'k'6!7! ",
- " 8!9![)0!a!b!`'`'`'`'!!!!!!|!~!~!b)~!c)c)b)b)b)c)b)c)c)L)d).).).)c!2!d!e!3!f!4!4!g!/!%!`)`)&!.!.!P)A)h!B)B)i)i!4)4){)5)])$)$)%)&)S'k'j!k! ",
- " l!H's)m!n!o!`'`'`'`'!!!!|!~!~!~!~!p!b)b)c)c)b)b)b)b)b)b)K)q!2!r!r!s!e!e!3!3!4!4!/!/!`)%!`)`).!P)t!A)Q)B)u!i)j)l)l)4)5)5)P'v! ",
- " w!x![)y!z!`'`'`'`'!!!!!!A!~!~!~!~!~!p!~!b)b)c)b)b)c)q!2!B!B!B!B!r!C!e!e!3!f!D!4!/!$!%!`)E!.!.!P)A)F!B)B)G!R)P'P'H! ",
- " I!>)J!K!L!`'`'`'`'!!!!|!~!~!~!~!~!~!~!b)~!b)c)M!2!B!B!B!B!B!r!r!N!C!e!3!O!3!4!^!/!/!%!P!`).!.!t!(!Q!g)R! ",
- " S!T!s)U!V!o!`'`'`'!!!!!!|!W!~!~!W!~!~!~!~!X!2!B!B!B!B!B!B!B!r!B!r!Y!e!Z!e!`!D!4!^!$!$!%!5!Z)O) ~ ",
- " .~+~@~I)#~`'`'`'`'!!!!A!|!W!~!W!W!W!X!2!B!B!B!B!B!B!B!B!B!B!r!r!r!r!e!Z!3!D!D!g!Z)O)$~ ",
- " %~8)u'&~L!`'`'`'`'!!!!|!W!~!W!X!2!B!B!B!B!B!B!B!B!B!B!B!B!B!B!r!r!d!3!2!*~=~ ",
- " -~T!s);~>~v)`'`'`'!!!!!!A!X!2!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!2!,~'~ ",
- " )~t)s)!~~~)!`'`'`'!!{~2!B!B!B!B!B!B!B!B!B!B!B!B!B!B!2!,~]~ ",
- " :!U)U)^~/~`'`'`'(~2!B!B!B!B!B!B!B!B!B!B!B!2!_~ ",
- " :~<~@~+~[~b!`'}~2!B!B!B!B!B!B!B!B!2!|~ ",
- " 1~2~3~,!'!4~2!B!B!B!B!B!2!5~ ",
- " 6~x!@~7~2!B!8~2!9~ ",
- " 0~a~2!b~ ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " ",
- " "};
- """
+ def getIcon(self):
+ return """
+ /* XPM */
+ static char * TankS_xpm[] = {
+ "32 32 516 2",
+ " c None",
+ ". c #2A2A2A",
+ "+ c #6D6C6D",
+ "@ c #434343",
+ "# c #000000",
+ "$ c #3C3C3C",
+ "% c #878787",
+ "& c #DADADA",
+ "* c #D1D2D1",
+ "= c #DBDBDC",
+ "- c #DDDDDD",
+ "; c #777677",
+ "> c #636363",
+ ", c #3D3D3D",
+ "' c #D2D2D1",
+ ") c #CBCBCB",
+ "! c #CECECE",
+ "~ c #D2D2D2",
+ "{ c #D5D5D5",
+ "] c #D8D9D9",
+ "^ c #DCDCDC",
+ "/ c #E6E6E6",
+ "( c #ACADAC",
+ "_ c #949494",
+ ": c #2B2A2B",
+ "< c #202020",
+ "[ c #838383",
+ "} c #D0D0D1",
+ "| c #C4C3C3",
+ "1 c #C7C7C7",
+ "2 c #CACACA",
+ "3 c #D1D1D1",
+ "4 c #D5D4D5",
+ "5 c #D8D8D8",
+ "6 c #DEDEDE",
+ "7 c #E2E2E2",
+ "8 c #E5E5E5",
+ "9 c #F5F5F6",
+ "0 c #B5B5B5",
+ "a c #747474",
+ "b c #393939",
+ "c c #7E7E7E",
+ "d c #7B7B7B",
+ "e c #7C7C7C",
+ "f c #D3D3D3",
+ "g c #CCCCCC",
+ "h c #CDCDCD",
+ "i c #D4D4D4",
+ "j c #DBDBDA",
+ "k c #DEDFDF",
+ "l c #E2E2E1",
+ "m c #E5E4E5",
+ "n c #E9E8E8",
+ "o c #ECECEC",
+ "p c #F2F2F1",
+ "q c #FEFEFE",
+ "r c #989898",
+ "s c #737373",
+ "t c #ADADAD",
+ "u c #AAAAAA",
+ "v c #5A5A5A",
+ "w c #717171",
+ "x c #9D9D9D",
+ "y c #D7D7D7",
+ "z c #DBDBDB",
+ "A c #DEDDDD",
+ "B c #E1E1E1",
+ "C c #E4E5E4",
+ "D c #E8E8E8",
+ "E c #EBEBEC",
+ "F c #EFEFEF",
+ "G c #F1F1F1",
+ "H c #F0F0F0",
+ "I c #FFFFFF",
+ "J c #666666",
+ "K c #5E5E5E",
+ "L c #4D4D4D",
+ "M c #D8D7D8",
+ "N c #D7D7D6",
+ "O c #E3E3E3",
+ "P c #797979",
+ "Q c #656565",
+ "R c #A9AAAA",
+ "S c #707070",
+ "T c #949493",
+ "U c #C3C3C3",
+ "V c #E0E0E0",
+ "W c #E1E0E0",
+ "X c #E4E4E4",
+ "Y c #E7E7E7",
+ "Z c #EBEBEB",
+ "` c #EEEDED",
+ " . c #585858",
+ ".. c #5B5B5B",
+ "+. c #C3C4C3",
+ "@. c #D3D3D2",
+ "#. c #D3D3D4",
+ "$. c #D5D5D4",
+ "%. c #DFDFDF",
+ "&. c #474747",
+ "*. c #858585",
+ "=. c #505050",
+ "-. c #606060",
+ ";. c #848485",
+ ">. c #F4F4F5",
+ ",. c #6F6F6F",
+ "'. c #909090",
+ "). c #D9DAD9",
+ "!. c #D4D3D4",
+ "~. c #D6D6D5",
+ "{. c #525252",
+ "]. c #ADACAD",
+ "^. c #323232",
+ "/. c #ABABAA",
+ "(. c #D0CFCF",
+ "_. c #D1D0D1",
+ ":. c #D1D2D2",
+ "<. c #D3D4D3",
+ "[. c #D5D5D6",
+ "}. c #D6D6D6",
+ "|. c #1B1B1B",
+ "1. c #494949",
+ "2. c #919191",
+ "3. c #CFCFCF",
+ "4. c #D2D3D2",
+ "5. c #D4D5D4",
+ "6. c #848384",
+ "7. c #B2B2B2",
+ "8. c #B3B2B2",
+ "9. c #A7A7A7",
+ "0. c #444344",
+ "a. c #CCCFD1",
+ "b. c #ABC2D5",
+ "c. c #94BBD9",
+ "d. c #A9C4D7",
+ "e. c #C1CFD8",
+ "f. c #D0D1D1",
+ "g. c #2D2D2D",
+ "h. c #CDCECD",
+ "i. c #C5C5C5",
+ "j. c #C9C9C9",
+ "k. c #CBCBCA",
+ "l. c #CDCECE",
+ "m. c #CFCFD0",
+ "n. c #818181",
+ "o. c #B0B0B0",
+ "p. c #B1B1B1",
+ "q. c #9FA4AA",
+ "r. c #4D6782",
+ "s. c #557CA0",
+ "t. c #90B7DB",
+ "u. c #8DB5D7",
+ "v. c #8FB7D7",
+ "w. c #91BAD9",
+ "x. c #93BCD9",
+ "y. c #BCD3E1",
+ "z. c #747C81",
+ "A. c #BDBCBC",
+ "B. c #BEBEBE",
+ "C. c #C0C0C0",
+ "D. c #C2C2C2",
+ "E. c #C4C4C4",
+ "F. c #C6C6C6",
+ "G. c #C7C8C7",
+ "H. c #CAC9C9",
+ "I. c #7D7D7E",
+ "J. c #828281",
+ "K. c #AEAEAD",
+ "L. c #ADADAE",
+ "M. c #A6AAB1",
+ "N. c #7C9ABF",
+ "O. c #7699C2",
+ "P. c #769BC3",
+ "Q. c #789DC3",
+ "R. c #6288AE",
+ "S. c #4F7799",
+ "T. c #5981A3",
+ "U. c #94BDDC",
+ "V. c #8FB9D8",
+ "W. c #537E9A",
+ "X. c #87B2CE",
+ "Y. c #8AB0C7",
+ "Z. c #A8B6BE",
+ "`. c #B7BABB",
+ " + c #BDBDBD",
+ ".+ c #BFBFBF",
+ "++ c #C1C1C1",
+ "@+ c #C2C3C3",
+ "#+ c #C4C4C5",
+ "$+ c #C7C7C6",
+ "%+ c #7A7A7B",
+ "&+ c #7F8080",
+ "*+ c #A8AAAB",
+ "=+ c #9EA6AF",
+ "-+ c #7594BE",
+ ";+ c #7192C0",
+ ">+ c #7293C0",
+ ",+ c #7395C1",
+ "'+ c #7498C1",
+ ")+ c #7599C1",
+ "!+ c #779CC2",
+ "~+ c #779EC3",
+ "{+ c #769DC0",
+ "]+ c #638BAD",
+ "^+ c #4F7897",
+ "/+ c #4F7D9F",
+ "(+ c #7DA7C4",
+ "_+ c #7FAAC6",
+ ":+ c #80ADC7",
+ "<+ c #83B0C8",
+ "[+ c #8EB4C6",
+ "}+ c #B5B9BB",
+ "|+ c #BABBBC",
+ "1+ c #787878",
+ "2+ c #717B89",
+ "3+ c #6F90BD",
+ "4+ c #6F91BD",
+ "5+ c #6F90BE",
+ "6+ c #7091BE",
+ "7+ c #7192BF",
+ "8+ c #7194BF",
+ "9+ c #7396C0",
+ "0+ c #7498C0",
+ "a+ c #759AC1",
+ "b+ c #769CC1",
+ "c+ c #789FC2",
+ "d+ c #79A1C3",
+ "e+ c #4A7CA2",
+ "f+ c #7AA3C2",
+ "g+ c #7BA5C2",
+ "h+ c #7DA8C4",
+ "i+ c #7FABC5",
+ "j+ c #81AEC6",
+ "k+ c #83B1C8",
+ "l+ c #85B4C9",
+ "m+ c #98B7C4",
+ "n+ c #BABABB",
+ "o+ c #747576",
+ "p+ c #5B71A4",
+ "q+ c #6D89BE",
+ "r+ c #678BBF",
+ "s+ c #6D8EBD",
+ "t+ c #6D8FBD",
+ "u+ c #6E90BD",
+ "v+ c #7091BD",
+ "w+ c #7193BE",
+ "x+ c #7296BF",
+ "y+ c #7397C0",
+ "z+ c #7499C0",
+ "A+ c #759BC1",
+ "B+ c #779EC1",
+ "C+ c #4979A1",
+ "D+ c #769FBF",
+ "E+ c #78A0C0",
+ "F+ c #79A4C1",
+ "G+ c #7BA6C2",
+ "H+ c #7DAAC3",
+ "I+ c #80ACC5",
+ "J+ c #82B0C6",
+ "K+ c #84B2C7",
+ "L+ c #89B4C6",
+ "M+ c #95AFC1",
+ "N+ c #59819C",
+ "O+ c #5A6FA3",
+ "P+ c #7388BC",
+ "Q+ c #7489BC",
+ "R+ c #7189BD",
+ "S+ c #6B89BE",
+ "T+ c #678BBE",
+ "U+ c #6D8EBC",
+ "V+ c #6E8FBC",
+ "W+ c #6F92BE",
+ "X+ c #7194BE",
+ "Y+ c #7398BF",
+ "Z+ c #759BBF",
+ "`+ c #46759F",
+ " @ c #729ABC",
+ ".@ c #749CBD",
+ "+@ c #769FBE",
+ "@@ c #77A2BF",
+ "#@ c #79A5C0",
+ "$@ c #7BA7C2",
+ "%@ c #7CA9C2",
+ "&@ c #7AA5C3",
+ "*@ c #7CA6C4",
+ "=@ c #7DA7C5",
+ "-@ c #577E98",
+ ";@ c #586CA2",
+ ">@ c #7184BA",
+ ",@ c #7185BB",
+ "'@ c #7286BB",
+ ")@ c #7287BB",
+ "!@ c #7388BB",
+ "~@ c #6C86BD",
+ "{@ c #6486BF",
+ "]@ c #6B8DBB",
+ "^@ c #6D8FBB",
+ "/@ c #6E91BC",
+ "(@ c #7093BC",
+ "_@ c #7195BD",
+ ":@ c #7297BD",
+ "<@ c #43719D",
+ "[@ c #6E95B8",
+ "}@ c #7098BA",
+ "|@ c #729BBB",
+ "1@ c #749DBC",
+ "2@ c #799EB9",
+ "3@ c #719CBF",
+ "4@ c #769EBF",
+ "5@ c #77A0C0",
+ "6@ c #78A2C1",
+ "7@ c #7AA3C3",
+ "8@ c #557B96",
+ "9@ c #576AA1",
+ "0@ c #6F82B9",
+ "a@ c #7083BA",
+ "b@ c #7084BA",
+ "c@ c #7185BA",
+ "d@ c #7285BB",
+ "e@ c #7187BC",
+ "f@ c #6985BF",
+ "g@ c #6387C0",
+ "h@ c #6E90BC",
+ "i@ c #6F92BB",
+ "j@ c #7095BC",
+ "k@ c #416D9B",
+ "l@ c #6A90B5",
+ "m@ c #6A92B7",
+ "n@ c #6393BD",
+ "o@ c #6D95B9",
+ "p@ c #7097BA",
+ "q@ c #7199BA",
+ "r@ c #729ABB",
+ "s@ c #739BBD",
+ "t@ c #759DBE",
+ "u@ c #779FBE",
+ "v@ c #527794",
+ "w@ c #5567A0",
+ "x@ c #6D7EB7",
+ "y@ c #6D7FB7",
+ "z@ c #6E81B8",
+ "A@ c #6F82B8",
+ "B@ c #6F83B9",
+ "C@ c #7186BA",
+ "D@ c #6F85BB",
+ "E@ c #6183C2",
+ "F@ c #698DBC",
+ "G@ c #3D6A9A",
+ "H@ c #5E8BB7",
+ "I@ c #688EB3",
+ "J@ c #6A90B4",
+ "K@ c #6B91B5",
+ "L@ c #6C93B6",
+ "M@ c #6F97B8",
+ "N@ c #7199BB",
+ "O@ c #739BBC",
+ "P@ c #507492",
+ "Q@ c #52639E",
+ "R@ c #6A7BB5",
+ "S@ c #6A7CB6",
+ "T@ c #6B7DB6",
+ "U@ c #6C7EB7",
+ "V@ c #6D7FB8",
+ "W@ c #6D80B7",
+ "X@ c #6F83BA",
+ "Y@ c #436587",
+ "Z@ c #6388AF",
+ "`@ c #658AB0",
+ " # c #668CB1",
+ ".# c #688DB3",
+ "+# c #698FB4",
+ "@# c #6C92B6",
+ "## c #6D94B7",
+ "$# c #6F96B9",
+ "%# c #4E7190",
+ " c #50619D",
+ "*# c #6778B4",
+ "=# c #6878B4",
+ "-# c #6979B4",
+ ";# c #697BB5",
+ "># c #6A7CB7",
+ ",# c #6A7DB7",
+ "'# c #6B7EB7",
+ ")# c #6C7FB7",
+ "!# c #6E80B8",
+ "~# c #416285",
+ "{# c #6084AC",
+ "]# c #6186AD",
+ "^# c #6389B0",
+ "/# c #668BB0",
+ "(# c #678CB1",
+ "_# c #6B91B4",
+ ":# c #4B6E8E",
+ "<# c #4F5F9D",
+ "[# c #6575B2",
+ "}# c #6675B2",
+ "|# c #6676B3",
+ "1# c #6776B3",
+ "2# c #6777B4",
+ "3# c #6879B4",
+ "4# c #697AB5",
+ "5# c #6A7DB6",
+ "6# c #6B7DB7",
+ "7# c #6C7EB6",
+ "8# c #3E5E83",
+ "9# c #5C80A9",
+ "0# c #5D81AA",
+ "a# c #5F83AB",
+ "b# c #6085AC",
+ "c# c #6388AE",
+ "d# c #648AAF",
+ "e# c #668BB1",
+ "f# c #678CB2",
+ "g# c #688EB4",
+ "h# c #486B8C",
+ "i# c #233077",
+ "j# c #314293",
+ "k# c #6574B5",
+ "l# c #6573B2",
+ "m# c #6473B2",
+ "n# c #6575B3",
+ "o# c #6676B2",
+ "p# c #697AB4",
+ "q# c #3C5B81",
+ "r# c #587CA5",
+ "s# c #5A7DA7",
+ "t# c #5B7FA8",
+ "u# c #5D80A9",
+ "v# c #5D82AA",
+ "w# c #6185AD",
+ "x# c #6287AE",
+ "y# c #6389AF",
+ "z# c #678CB3",
+ "A# c #385C80",
+ "B# c #2A3576",
+ "C# c #35418C",
+ "D# c #253584",
+ "E# c #4F5FA4",
+ "F# c #6574B3",
+ "G# c #6372B1",
+ "H# c #6473B1",
+ "I# c #6474B2",
+ "J# c #6576B3",
+ "K# c #6777B3",
+ "L# c #3A587F",
+ "M# c #5578A3",
+ "N# c #5779A3",
+ "O# c #577BA5",
+ "P# c #597CA6",
+ "Q# c #5B7EA7",
+ "R# c #5C7FA8",
+ "S# c #5E82AA",
+ "T# c #4D7299",
+ "U# c #0C1A71",
+ "V# c #1E2A74",
+ "W# c #38448D",
+ "X# c #2E3D90",
+ "Y# c #33428C",
+ "Z# c #5D6AAC",
+ "`# c #6371B2",
+ " $ c #6270B0",
+ ".$ c #6372B0",
+ "+$ c #37557D",
+ "@$ c #52739F",
+ "#$ c #5274A1",
+ "$$ c #5577A3",
+ "%$ c #577AA4",
+ "&$ c #587CA6",
+ "*$ c #597DA6",
+ "=$ c #5C7FA9",
+ "-$ c #5478A1",
+ ";$ c #21466F",
+ ">$ c #111F72",
+ ",$ c #2B377D",
+ "'$ c #34428F",
+ ")$ c #303F8D",
+ "!$ c #455293",
+ "~$ c #6572B3",
+ "{$ c #616FB0",
+ "]$ c #626FB0",
+ "^$ c #34537B",
+ "/$ c #4E709D",
+ "($ c #50719E",
+ "_$ c #50729F",
+ ":$ c #5174A0",
+ "<$ c #5375A1",
+ "[$ c #577AA5",
+ "}$ c #3F618C",
+ "|$ c #2F5786",
+ "1$ c #0C315B",
+ "2$ c #182678",
+ "3$ c #1C2872",
+ "4$ c #354087",
+ "5$ c #2C3A88",
+ "6$ c #36448A",
+ "7$ c #5562A4",
+ "8$ c #6370B1",
+ "9$ c #34527A",
+ "0$ c #4C6D9B",
+ "a$ c #4D6E9C",
+ "b$ c #51739F",
+ "c$ c #385A87",
+ "d$ c #254672",
+ "e$ c #1F2A6F",
+ "f$ c #2A367A",
+ "g$ c #334088",
+ "h$ c #33428D",
+ "i$ c #254673",
+ "j$ c #4F709E",
+ "k$ c #375886",
+ "l$ c #224473",
+ "m$ c #09155A",
+ "n$ c #2A3577",
+ "o$ c #1E275A",
+ "p$ c #244676",
+ "q$ c #1F4373",
+ " ",
+ " . + @ # ",
+ " $ % & * = - ; > ",
+ " , % ' ) ! ~ { ] ^ / ( _ : ",
+ " < [ } | 1 2 ! 3 4 5 = 6 7 8 9 0 a # ",
+ " b c d e e f g h 3 i 5 j k l m n o p q r s # ",
+ " # t 7 u v _ w w x & f y z A B C D E F G H I J K ",
+ " L M f i N O P Q R S T U V 6 W X Y Z ` I d _ - V . ",
+ " ..+.3 3 @.#.$.5 %.&.*.=.-.;.8 Z Y >.,.'.).!.~.5 Y {. ",
+ " % ].^./.(._.:.<.!.[.}.V |.# # 1.Q 2.} g h 3._.4.5.6. ",
+ " *.7.8.t 9.0.N ' a.b.c.d.e.f.'.g.h.U i.1 j.k.g l.m.n. ",
+ " [ o.o.p.p.7.q.r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.k.I. ",
+ " J.t K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.`. +.+++@+#+$+%+ ",
+ " &+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+}+|+B.C.++1+ ",
+ " 2+3+4+5+6+6+7+8+9+0+a+b+c+d+e+f+g+h+i+j+k+l+m+n+A.o+ ",
+ " p+q+r+s+t+u+u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+ ",
+ " O+P+Q+R+S+T+U+V+3+W+X+x+Y+Z+`+ @.@+@@@#@$@%@&@*@=@-@ ",
+ " ;@>@,@'@)@!@~@{@]@^@/@(@_@:@<@[@}@|@1@2@3@4@5@6@7@8@ ",
+ " 9@0@a@b@c@d@'@'@e@f@g@h@i@j@k@l@m@n@o@p@q@r@s@t@u@v@ ",
+ " w@x@y@z@z@A@B@b@b@,@C@D@E@F@G@H@I@J@K@L@[@M@p@N@O@P@ ",
+ " Q@R@S@T@U@U@V@W@z@z@0@X@b@c@Y@Z@`@ #.#+#J@@###[@$#%# ",
+ " *#=#-#;#R@>#,#'#U@)#W@!#z@~#{#]#R.^#/#(#I@+#_#@#:# ",
+ " <#[#}#|#1#2#=#3#4#;#S@5#6#7#8#9#0#a#b#]#c#d#e#f#g#h# ",
+ " i#j#k#l#m#[#n#o#|#2#*#3#p#4#q#r#s#t#u#v#a#w#x#y#z#A# ",
+ " B#C#D#E#F#G#G#H#I#[#J#|#K#L#M#N#O#P#Q#R#0#S#{#T# ",
+ " U#V#W#X#Y#Z#`# $.$G#H#I#+$@$#$$$M#%$&$*$=$-$;$ ",
+ " >$,$'$)$!$~${$]$ $^$/$($_$:$<$[$}$|$1$ ",
+ " 2$3$4$5$6$7$8$9$0$a$a$b$c$d$ ",
+ " e$f$g$h$i$_$j$k$l$ ",
+ " m$n$o$p$q$ ",
+ " ",
+ " "};
+ """
def tankWeight(obj, angles=Vector(0.0,0.0,0.0), cor=Vector(0.0,0.0,0.0)):
- """ Compute tank fluid weight and their center of gravity.
- @param obj Tank object.
- @param angles Tank angles, Roll, Pitch and Yaw.
- @param cor Center or rotation.
- @return Weight and center of gravity. None if errors detected
- """
- # Test if is a tank instance
- props = obj.PropertiesList
- try:
- props.index("IsShipTank")
- except ValueError:
- return None
- if not obj.IsShipTank:
- return None
- # Get object solids
- Solids = obj.Shape.Solids
- W = [0.0, 0.0, 0.0, 0.0]
- for s in Solids:
- # Get fluid volume
- bbox = s.BoundBox
- z0 = bbox.ZMin
- z1 = bbox.ZMax
- dz = obj.Level/100.0 * (z1-z0)
- z = z0 + dz
- dx = bbox.XMax-bbox.XMin
- dy = bbox.YMax-bbox.YMin
- box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0)))
- fluid = s.common(box)
- vol = fluid.Volume
- W[0] = W[0] + vol*obj.Density
- # Compute fluid solid in rotated position (non linear rotation
- # are ussually computed as Roll -> Pitch -> Yaw).
- s.rotate(cor, Vector(1.0,0.0,0.0), angles.x)
- s.rotate(cor, Vector(0.0,1.0,0.0), angles.y)
- s.rotate(cor, Vector(0.0,0.0,1.0), angles.z)
- bbox = s.BoundBox
- z0 = bbox.ZMin
- z1 = bbox.ZMax
- dx = bbox.XMax-bbox.XMin
- dy = bbox.YMax-bbox.YMin
- Error = 0.01*vol
- z = 0.0
- v = 0.0
- while(abs(vol - v) > Error):
- z = z + (vol - v) / (dx*dy)
- dz = z - z0
- box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0)))
- fluid = s.common(box)
- v = fluid.Volume
- if(abs(vol - v) / (dx*dy) <= 0.000001):
- break
- # Add fluid moments
- for f in fluid.Solids:
- cog = f.CenterOfMass
- W[1] = W[1] + f.Volume*obj.Density*cog.x
- W[2] = W[2] + f.Volume*obj.Density*cog.y
- W[3] = W[3] + f.Volume*obj.Density*cog.z
- return [W[0], W[1]/W[0], W[2]/W[0], W[3]/W[0]]
+ """ Compute tank fluid weight and their center of gravity.
+ @param obj Tank object.
+ @param angles Tank angles, Roll, Pitch and Yaw.
+ @param cor Center or rotation.
+ @return Weight and center of gravity. None if errors detected
+ """
+ # Test if is a tank instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShipTank")
+ except ValueError:
+ return None
+ if not obj.IsShipTank:
+ return None
+ # Get object solids
+ Solids = obj.Shape.Solids
+ W = [0.0, 0.0, 0.0, 0.0]
+ for s in Solids:
+ # Get fluid volume
+ bbox = s.BoundBox
+ z0 = bbox.ZMin
+ z1 = bbox.ZMax
+ dz = obj.Level/100.0 * (z1-z0)
+ z = z0 + dz
+ dx = bbox.XMax-bbox.XMin
+ dy = bbox.YMax-bbox.YMin
+ box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0)))
+ fluid = s.common(box)
+ vol = fluid.Volume
+ W[0] = W[0] + vol*obj.Density
+ # Compute fluid solid in rotated position (non linear rotation
+ # are ussually computed as Roll -> Pitch -> Yaw).
+ s.rotate(cor, Vector(1.0,0.0,0.0), angles.x)
+ s.rotate(cor, Vector(0.0,1.0,0.0), angles.y)
+ s.rotate(cor, Vector(0.0,0.0,1.0), angles.z)
+ bbox = s.BoundBox
+ z0 = bbox.ZMin
+ z1 = bbox.ZMax
+ dx = bbox.XMax-bbox.XMin
+ dy = bbox.YMax-bbox.YMin
+ Error = 0.01*vol
+ z = 0.0
+ v = 0.0
+ while(abs(vol - v) > Error):
+ z = z + (vol - v) / (dx*dy)
+ dz = z - z0
+ box = Part.makeBox(3.0*(dx), 3.0*(dy), (z1-z0)+dz, Vector(bbox.XMin-dx, bbox.YMin-dy, bbox.ZMin-(z1-z0)))
+ fluid = s.common(box)
+ v = fluid.Volume
+ if(abs(vol - v) / (dx*dy) <= 0.000001):
+ break
+ # Add fluid moments
+ for f in fluid.Solids:
+ cog = f.CenterOfMass
+ W[1] = W[1] + f.Volume*obj.Density*cog.x
+ W[2] = W[2] + f.Volume*obj.Density*cog.y
+ W[3] = W[3] + f.Volume*obj.Density*cog.z
+ return [W[0], W[1]/W[0], W[2]/W[0], W[3]/W[0]]
diff --git a/src/Mod/Ship/makeResources.sh b/src/Mod/Ship/makeResources.sh
new file mode 100755
index 0000000000..f1c67a8428
--- /dev/null
+++ b/src/Mod/Ship/makeResources.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+## Create resources stuff for Ship module.
+
+# Perform trnaslations
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship.ts
+lrelease resources/translations/Ship.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_af.ts
+lrelease resources/translations/Ship_af.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_cs.ts
+lrelease resources/translations/Ship_cs.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_de.ts
+lrelease resources/translations/Ship_de.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_es-ES.ts
+lrelease resources/translations/Ship_es-ES.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_fi.ts
+lrelease resources/translations/Ship_fi.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_fr.ts
+lrelease resources/translations/Ship_fr.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_hr.ts
+lrelease resources/translations/Ship_hr.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_hu.ts
+lrelease resources/translations/Ship_hu.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_it.ts
+lrelease resources/translations/Ship_it.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_ja.ts
+lrelease resources/translations/Ship_ja.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_nl.ts
+lrelease resources/translations/Ship_nl.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_no.ts
+lrelease resources/translations/Ship_no.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_pl.ts
+lrelease resources/translations/Ship_pl.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_pt-BR.ts
+lrelease resources/translations/Ship_pt-BR.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_ro.ts
+lrelease resources/translations/Ship_ro.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_ru.ts
+lrelease resources/translations/Ship_ru.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_sk.ts
+lrelease resources/translations/Ship_sk.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_sv-SE.ts
+lrelease resources/translations/Ship_sv-SE.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_tr.ts
+lrelease resources/translations/Ship_tr.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_uk.ts
+lrelease resources/translations/Ship_uk.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_zh-CN.ts
+lrelease resources/translations/Ship_zh-CN.ts
+pylupdate4 -verbose `find ./ -name "*.py"` -ts resources/translations/Ship_zh-TW.ts
+lrelease resources/translations/Ship_zh-TW.ts
+
+# Create resources
+rm -f Ship_rc.py
+cd resources
+pyrcc4 Ship.qrc -o ../Ship_rc.py
+cd ..
diff --git a/src/Mod/Ship/resources/Ship.qrc b/src/Mod/Ship/resources/Ship.qrc
new file mode 100644
index 0000000000..e5a2525c3f
--- /dev/null
+++ b/src/Mod/Ship/resources/Ship.qrc
@@ -0,0 +1,38 @@
+
+
+ icons/AreaCurveIco.png
+ icons/HydrostaticsIco.png
+ icons/Ico.png
+ icons/LoadIco.png
+ icons/OutlineDrawIco.png
+ icons/SimCreateIco.png
+ icons/SimPostIco.png
+ icons/SimRunIco.png
+ icons/SimStopIco.png
+ icons/Tank.png
+ icons/Weight.png
+ translations/Ship.qm
+ translations/Ship_af.qm
+ translations/Ship_cs.qm
+ translations/Ship_de.qm
+ translations/Ship_es-ES.qm
+ translations/Ship_fi.qm
+ translations/Ship_fr.qm
+ translations/Ship_hr.qm
+ translations/Ship_hu.qm
+ translations/Ship_it.qm
+ translations/Ship_ja.qm
+ translations/Ship_nl.qm
+ translations/Ship_no.qm
+ translations/Ship_pl.qm
+ translations/Ship_pt-BR.qm
+ translations/Ship_ro.qm
+ translations/Ship_ru.qm
+ translations/Ship_sk.qm
+ translations/Ship_sv-SE.qm
+ translations/Ship_tr.qm
+ translations/Ship_uk.qm
+ translations/Ship_zh-CN.qm
+ translations/Ship_zh-TW.qm
+
+
diff --git a/src/Mod/Ship/Examples/s60.fcstd b/src/Mod/Ship/resources/examples/s60.fcstd
similarity index 100%
rename from src/Mod/Ship/Examples/s60.fcstd
rename to src/Mod/Ship/resources/examples/s60.fcstd
diff --git a/src/Mod/Ship/Examples/s60_katamaran.fcstd b/src/Mod/Ship/resources/examples/s60_katamaran.fcstd
similarity index 100%
rename from src/Mod/Ship/Examples/s60_katamaran.fcstd
rename to src/Mod/Ship/resources/examples/s60_katamaran.fcstd
diff --git a/src/Mod/Ship/Examples/wigley.fcstd b/src/Mod/Ship/resources/examples/wigley.fcstd
similarity index 100%
rename from src/Mod/Ship/Examples/wigley.fcstd
rename to src/Mod/Ship/resources/examples/wigley.fcstd
diff --git a/src/Mod/Ship/Examples/wigley_katamaran.fcstd b/src/Mod/Ship/resources/examples/wigley_katamaran.fcstd
similarity index 100%
rename from src/Mod/Ship/Examples/wigley_katamaran.fcstd
rename to src/Mod/Ship/resources/examples/wigley_katamaran.fcstd
diff --git a/src/Mod/Ship/Icons/AreaCurveIco.png b/src/Mod/Ship/resources/icons/AreaCurveIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/AreaCurveIco.png
rename to src/Mod/Ship/resources/icons/AreaCurveIco.png
diff --git a/src/Mod/Ship/Icons/AreaCurveIco.xcf b/src/Mod/Ship/resources/icons/AreaCurveIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/AreaCurveIco.xcf
rename to src/Mod/Ship/resources/icons/AreaCurveIco.xcf
diff --git a/src/Mod/Ship/Icons/AreaCurveIco.xpm b/src/Mod/Ship/resources/icons/AreaCurveIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/AreaCurveIco.xpm
rename to src/Mod/Ship/resources/icons/AreaCurveIco.xpm
diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.png b/src/Mod/Ship/resources/icons/HydrostaticsIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/HydrostaticsIco.png
rename to src/Mod/Ship/resources/icons/HydrostaticsIco.png
diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.xcf b/src/Mod/Ship/resources/icons/HydrostaticsIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/HydrostaticsIco.xcf
rename to src/Mod/Ship/resources/icons/HydrostaticsIco.xcf
diff --git a/src/Mod/Ship/Icons/HydrostaticsIco.xpm b/src/Mod/Ship/resources/icons/HydrostaticsIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/HydrostaticsIco.xpm
rename to src/Mod/Ship/resources/icons/HydrostaticsIco.xpm
diff --git a/src/Mod/Ship/Icons/Ico.png b/src/Mod/Ship/resources/icons/Ico.png
similarity index 100%
rename from src/Mod/Ship/Icons/Ico.png
rename to src/Mod/Ship/resources/icons/Ico.png
diff --git a/src/Mod/Ship/Icons/Ico.xcf b/src/Mod/Ship/resources/icons/Ico.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/Ico.xcf
rename to src/Mod/Ship/resources/icons/Ico.xcf
diff --git a/src/Mod/Ship/Icons/Ico.xpm b/src/Mod/Ship/resources/icons/Ico.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/Ico.xpm
rename to src/Mod/Ship/resources/icons/Ico.xpm
diff --git a/src/Mod/Ship/Icons/LoadIco.png b/src/Mod/Ship/resources/icons/LoadIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/LoadIco.png
rename to src/Mod/Ship/resources/icons/LoadIco.png
diff --git a/src/Mod/Ship/Icons/LoadIco.xcf b/src/Mod/Ship/resources/icons/LoadIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/LoadIco.xcf
rename to src/Mod/Ship/resources/icons/LoadIco.xcf
diff --git a/src/Mod/Ship/Icons/LoadIco.xpm b/src/Mod/Ship/resources/icons/LoadIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/LoadIco.xpm
rename to src/Mod/Ship/resources/icons/LoadIco.xpm
diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.png b/src/Mod/Ship/resources/icons/OutlineDrawIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/OutlineDrawIco.png
rename to src/Mod/Ship/resources/icons/OutlineDrawIco.png
diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.xcf b/src/Mod/Ship/resources/icons/OutlineDrawIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/OutlineDrawIco.xcf
rename to src/Mod/Ship/resources/icons/OutlineDrawIco.xcf
diff --git a/src/Mod/Ship/Icons/OutlineDrawIco.xpm b/src/Mod/Ship/resources/icons/OutlineDrawIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/OutlineDrawIco.xpm
rename to src/Mod/Ship/resources/icons/OutlineDrawIco.xpm
diff --git a/src/Mod/Ship/Icons/Ship.xcf b/src/Mod/Ship/resources/icons/Ship.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/Ship.xcf
rename to src/Mod/Ship/resources/icons/Ship.xcf
diff --git a/src/Mod/Ship/Icons/Ship.xpm b/src/Mod/Ship/resources/icons/Ship.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/Ship.xpm
rename to src/Mod/Ship/resources/icons/Ship.xpm
diff --git a/src/Mod/Ship/Icons/Sim.xpm b/src/Mod/Ship/resources/icons/Sim.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/Sim.xpm
rename to src/Mod/Ship/resources/icons/Sim.xpm
diff --git a/src/Mod/Ship/Icons/SimCreateIco.png b/src/Mod/Ship/resources/icons/SimCreateIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/SimCreateIco.png
rename to src/Mod/Ship/resources/icons/SimCreateIco.png
diff --git a/src/Mod/Ship/Icons/SimCreateIco.xcf b/src/Mod/Ship/resources/icons/SimCreateIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/SimCreateIco.xcf
rename to src/Mod/Ship/resources/icons/SimCreateIco.xcf
diff --git a/src/Mod/Ship/Icons/SimCreateIco.xpm b/src/Mod/Ship/resources/icons/SimCreateIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/SimCreateIco.xpm
rename to src/Mod/Ship/resources/icons/SimCreateIco.xpm
diff --git a/src/Mod/Ship/Icons/SimIco.xcf b/src/Mod/Ship/resources/icons/SimIco.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/SimIco.xcf
rename to src/Mod/Ship/resources/icons/SimIco.xcf
diff --git a/src/Mod/Ship/Icons/SimPostIco.png b/src/Mod/Ship/resources/icons/SimPostIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/SimPostIco.png
rename to src/Mod/Ship/resources/icons/SimPostIco.png
diff --git a/src/Mod/Ship/Icons/SimPostIco.xpm b/src/Mod/Ship/resources/icons/SimPostIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/SimPostIco.xpm
rename to src/Mod/Ship/resources/icons/SimPostIco.xpm
diff --git a/src/Mod/Ship/Icons/SimRunIco.png b/src/Mod/Ship/resources/icons/SimRunIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/SimRunIco.png
rename to src/Mod/Ship/resources/icons/SimRunIco.png
diff --git a/src/Mod/Ship/Icons/SimRunIco.xpm b/src/Mod/Ship/resources/icons/SimRunIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/SimRunIco.xpm
rename to src/Mod/Ship/resources/icons/SimRunIco.xpm
diff --git a/src/Mod/Ship/Icons/SimStopIco.png b/src/Mod/Ship/resources/icons/SimStopIco.png
similarity index 100%
rename from src/Mod/Ship/Icons/SimStopIco.png
rename to src/Mod/Ship/resources/icons/SimStopIco.png
diff --git a/src/Mod/Ship/Icons/SimStopIco.xpm b/src/Mod/Ship/resources/icons/SimStopIco.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/SimStopIco.xpm
rename to src/Mod/Ship/resources/icons/SimStopIco.xpm
diff --git a/src/Mod/Ship/Icons/Tank.png b/src/Mod/Ship/resources/icons/Tank.png
similarity index 100%
rename from src/Mod/Ship/Icons/Tank.png
rename to src/Mod/Ship/resources/icons/Tank.png
diff --git a/src/Mod/Ship/Icons/Tank.xcf b/src/Mod/Ship/resources/icons/Tank.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/Tank.xcf
rename to src/Mod/Ship/resources/icons/Tank.xcf
diff --git a/src/Mod/Ship/Icons/Tank.xpm b/src/Mod/Ship/resources/icons/Tank.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/Tank.xpm
rename to src/Mod/Ship/resources/icons/Tank.xpm
diff --git a/src/Mod/Ship/Icons/Weight.png b/src/Mod/Ship/resources/icons/Weight.png
similarity index 100%
rename from src/Mod/Ship/Icons/Weight.png
rename to src/Mod/Ship/resources/icons/Weight.png
diff --git a/src/Mod/Ship/Icons/Weight.xcf b/src/Mod/Ship/resources/icons/Weight.xcf
similarity index 100%
rename from src/Mod/Ship/Icons/Weight.xcf
rename to src/Mod/Ship/resources/icons/Weight.xcf
diff --git a/src/Mod/Ship/Icons/Weight.xpm b/src/Mod/Ship/resources/icons/Weight.xpm
similarity index 100%
rename from src/Mod/Ship/Icons/Weight.xpm
rename to src/Mod/Ship/resources/icons/Weight.xpm
diff --git a/src/Mod/Ship/resources/translations/Ship.qm b/src/Mod/Ship/resources/translations/Ship.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship.ts b/src/Mod/Ship/resources/translations/Ship.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_af.qm b/src/Mod/Ship/resources/translations/Ship_af.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_af.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_af.ts b/src/Mod/Ship/resources/translations/Ship_af.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_af.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_cs.qm b/src/Mod/Ship/resources/translations/Ship_cs.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_cs.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_cs.ts b/src/Mod/Ship/resources/translations/Ship_cs.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_cs.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_de.qm b/src/Mod/Ship/resources/translations/Ship_de.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_de.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_de.ts b/src/Mod/Ship/resources/translations/Ship_de.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_de.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_es-ES.qm b/src/Mod/Ship/resources/translations/Ship_es-ES.qm
new file mode 100644
index 0000000000..a72de36ef9
Binary files /dev/null and b/src/Mod/Ship/resources/translations/Ship_es-ES.qm differ
diff --git a/src/Mod/Ship/resources/translations/Ship_es-ES.ts b/src/Mod/Ship/resources/translations/Ship_es-ES.ts
new file mode 100644
index 0000000000..26f2a40702
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_es-ES.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+ True si se trata de una entidad tanque de buque valida
+
+
+
+ Fluid filling level percentage
+ Porcentage de llenado
+
+
+
+ Inside fluid density
+ Densidad del fluido del interior
+
+
+
+ True if is a valid ship simulation instance
+ True si se trata de una entidad simulacion de buques válida
+
+
+
+ Waves (Amplitude,period,phase)
+ Olas (amplitud,periodo,phase)
+
+
+
+ Waves direction (0 deg to stern waves)
+ Direccion de las olas (0 grados para olas de popa)
+
+
+
+ Free surface number of elements at x direction
+ Numero de elementos en la dirección x en la superficie libre
+
+
+
+ Free surface number of elements at y direction
+ Numero de elementos en la dirección y en la superficie libre
+
+
+
+ Free surface elements position
+ Posiciones de los elementos de la superficie libre
+
+
+
+ Free surface elements area
+ Area de los elementos de la superficie libre
+
+
+
+ Free surface elements normal
+ Normales de los elementos de la superficie libre
+
+
+
+ Ship
+ Buque
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+ El módulo de diseño de buques provee algunas de las herramientas más comunes
+
+
+
+ Ship design
+ Buques
+
+
+
+ Weights
+ Pesos
+
+
+
+ Simulation
+ Simulación
+
+
+
+ True if is a valid ship instance
+ True si se trata de una entidad buque valida
+
+
+
+ Ship Weights names
+ Nombres de los pesos del buque
+
+
+
+ Lightweight
+ Peso en rosca
+
+
+
+ Ship Weights masses
+ Masas de los pesos del buque
+
+
+
+ Ship Weights centers of gravity
+ Centros de gravedad de los pesos del buque
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+ Curva de áreas
+
+
+
+ Plot transversal areas curve
+ Grafica la curva de áreas
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+ Crear nuevo barco
+
+
+
+ Create a new ship in order to work with them
+ Crea un nuevo barco para poder trabajar con él
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+ Crear nueva simulación
+
+
+
+ Create a new simulation in order to process later
+ Crea una nueva simulación para procesarla más tarde
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+ Crear nuevo tanque
+
+
+
+ Create a new ship tank
+ Crea un nuevo tanque
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+ Curva de GZ
+
+
+
+ Transversal stability GZ curve computation
+ Calcula la curva de brazos adrizantes GZ (estabilidad transversal)
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+ Hidrostáticas
+
+
+
+ Plot ship hydrostatics
+ Grafica las curvas de hidrostáticas
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+ Cargar formas de buque de ejemplo
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+ Carga formas de ejemplo de buques que pueden ser directamente convertidas en buques
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+ Plano de formas
+
+
+
+ Plot ship outline draw
+ Traza el plano de formas de buque
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+ Lanzar simulación
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+ Deterner la simulación activa
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+ Seguimiento de la simulación
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+ Establecer los pesos del buque
+
+
+
+ Set ship weights, tanks must be added later
+ Establezca los pesos del buque. Los tanque se añadirán más tarde
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+ Graficar la curva de áreas
+
+
+
+ Draft
+ Calado
+
+
+
+ Trim
+ Trimado
+
+
+
+ Displacement
+ Desplazamiento
+
+
+
+ Areas curve tool draft selected [m]
+ Calado seleccionado en la herramienta de curva de areas
+
+
+
+ Areas curve tool trim selected
+ Trimado seleccionado en la herramienta de curva de areas
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+ El módulo de graficado está desactivado, no se podran trazar los graficos
+
+
+
+ Can't create folder
+ No se puede crear la carpeta
+
+
+
+ Can't write to file
+ No se puede esbribir el archivo
+
+
+
+ Data saved
+ Datos guardados
+
+
+
+ Ship instance must be selected (no object selected)
+ Una entidad de buque debe ser seleccionada (Ningun objeto seleccionado)
+
+
+
+ More than one ship selected (extra ships will be neglected)
+ Mas de un buque ha sido seleccionado (solo se considerara el primero de ellos)
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+ Una entidad de buque debe ser seleccionada (Ningun objeto seleccionado)
+
+
+
+ Ussually you don't want to modify manually this option
+ Normalmente usted no deseara modificar esta opcion manualmente
+
+
+
+ Object is not a valid ship simulation
+ El objeto no es una simulacion de buques valida
+
+
+
+ Object is not a ship simulation
+ El objeto no es una simulacion de buques
+
+
+
+ Can't find any active simulation
+ No se encuentra ninguna simulacion activa
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+ Los buques solo se puede crear a partir de la geometria del casco (Ningun objeto seleccionado)
+
+
+
+ Please create or load a ship hull geometry before using this tool
+ Por favor, cree o cargue una geometria para el casco antes de usar esta herramienta
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+ Los buques solo se puede crear a partir de la geometria del casco (No existen solidos en los objetos seleccionados)
+
+
+
+ Plot module is disabled, tools can't graph output curves
+ El modulo de graficado esta desactivado, no se podran trazar los graficos
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+ pyOpenCL no se encuentra instalado, las herramientas para simular seran desactivadas
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+ numpy no se encuentra instalado, las herramientas para simular seran desactivadas
+
+
+
+ Can't detect external faces from ship object
+ No se pueden extraer las caras exteriores del buque
+
+
+
+ Computing hydrostatics
+ Calculando hidrostaticas
+
+
+
+ Computing external faces
+ Calculando caras externas
+
+
+
+ Initializating
+ Iniciando
+
+
+
+ Iterating
+ Iterando
+
+
+
+ Generating linear system matrix
+ Generando matriz del sistema linear de ecuaciones
+
+
+
+ Solving linear systems
+ Resolviendo sistema linear de ecuaciones
+
+
+
+ Time integrating
+ Integrando en el tiempo
+
+
+
+ Building data
+ Construyendo datos
+
+
+
+ Launching simulation
+ Lanzando simulacion
+
+
+
+ Done
+ Hecho
+
+
+
+ Ship simulation instance must be selected (no object selected)
+ Una entidad de simulacion debe ser seleccionada (Ningun objeto seleccionado)
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+ Mas de una simulacion ha sido seleccionada (solo se considerara la primera de ellas)
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+ Una entidad de simulacion debe ser seleccionada (No existe una simulacion valida en los objetos seleccionados)
+
+
+
+ Can't find OpenCL devices
+ No se puede encontrar ningun dispositivo OpenCL
+
+
+
+ Simulation already stopped
+ La simulacion ya se encuentra detenida
+
+
+
+ Any active simulation to stop
+ No se encuentra ninguna simulacion activa
+
+
+
+ Simulation will stop at the end of actual iteration
+ La simulacion se detendra al final de la actual iteracion
+
+
+
+ Computing GZ
+ Calculando curva de GZ
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+ Los pesos del buque no has sido establecidos. Necesita establecerlos antes de usar esta herramienta
+
+
+
+ Performing plot
+ Graficando
+
+
+
+ Computing sections
+ Calculando secciones
+
+
+
+ Any valid ship section found
+ No se encontro ninguna seccion valida
+
+
+
+ Tank has not been created
+ El tanque no ha sido creado
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+ Las entidades tanque solo se pueden crear a partir de la geometria de la estructura (Ningun objeto seleccionado)
+
+
+
+ Please create a tank geometry before using this tool
+ Por favor, cree la geometria del tanque antes de usar esta herramienta
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+ Las entidades tanque solo se pueden crear a partir de la geometria de la estructura (No existen solidos en los objetos seleccionados)
+
+
+
+ ship_create
+
+
+ Base line
+ Linea base
+
+
+
+ Free surface
+ Superficie libre
+
+
+
+ Forward perpendicular
+ Perpendicular de proa
+
+
+
+ After perpendicular
+ Perpendicular de popa
+
+
+
+ Main frame
+ Cuaderna maestra
+
+
+
+ Create a new ship
+ Crear nuevo barco
+
+
+
+ Length
+ Eslora
+
+
+
+ Breadth
+ Manga
+
+
+
+ Draft
+ Calado
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+ Graficar hidorstaticas
+
+
+
+ Trim
+ Trimado
+
+
+
+ Minimum draft
+ Calado mÃnimo
+
+
+
+ Maximum draft
+ Calado máximo
+
+
+
+ Number of points
+ Número de puntos
+
+
+
+ Hydrostatics tool trim selected
+ Trimado seleccionado en la herramienta de hidrostaticas
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+ Calado minimo seleccionado en la herramienta de hidrostaticas
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+ Calado maximo seleccionado en la herramienta de hidrostaticas
+
+
+
+ Hydrostatics tool number of points selected
+ Numero de puntos seleccionado en la herramienta de hidrostaticas
+
+
+
+ ship_load
+
+
+ Load example ship
+ Cargar buque de ejemplo
+
+
+
+ Select ship example geometry
+ Elija la geometria del buque de ejemplo
+
+
+
+ ship_outline
+
+
+ Outline draw
+ Plano de formas
+
+
+
+ Auto create
+ Auto-generar
+
+
+
+ Scale
+ Escala
+
+
+
+ Delete all sections
+ Eliminar todas las secciones
+
+
+
+ Create sections
+ Generar secciones
+
+
+
+ Transversal
+ Transversal
+
+
+
+ Longitudinal
+ Longitudinal
+
+
+
+ Water lines
+ Lineas de agua
+
+
+
+ Transversal sections position [m]
+ Posiciones de las secciones transversales [m]
+
+
+
+ Longitudinal sections position [m]
+ Posiciones de las secciones longitudinales [m]
+
+
+
+ Water lines position [m]
+ Posiciones de las lineas de agua [m]
+
+
+
+ Plot scale (1:scale format)
+ Escala del grafico (formato 1:escala)
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+ Crear nueva simulacion de buques
+
+
+
+ Free surface
+ Superficie libre
+
+
+
+ Length
+ Largo
+
+
+
+ Breadth
+ Ancho
+
+
+
+ Number of points
+ Número de puntos
+
+
+
+ Waves
+ Olas
+
+
+
+ Amplitude
+ Amplitud
+
+
+
+ Period
+ Periodo
+
+
+
+ Phase
+ Fase
+
+
+
+ Heading
+ Dirección
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+ Lanza la simulación
+
+
+
+ Simulation time
+ Tiempo de simulación
+
+
+
+ Output
+ Salida
+
+
+
+ OpenCL device
+ Dispositivo OpenCL
+
+
+
+ shipsim_track
+
+
+ Track simulation
+ Seguimiento de la simulación
+
+
+
+ Now
+ Ahora
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+ Crear nuevo tanque
+
+
+
+ Filling level
+ Nivel de llenado
+
+
+
+ Fluid density
+ Densidad del fluido
+
+
+
+ shiptank_gz
+
+
+ Draft
+ Calado
+
+
+
+ GZ curve computation
+ Cálculo de la curva de GZ
+
+
+
+ Loading condition
+ Condición de carga
+
+
+
+ Roll angles
+ Ãngulos de escora
+
+
+
+ Trim
+ Trimado
+
+
+
+ Start
+ Inicial
+
+
+
+ End
+ Final
+
+
+
+ Number of points
+ Número de puntos
+
+
+
+ Displacement
+ Desplazamiento
+
+
+
+ Press update to compute
+ Presiona actualizar para calcularlo
+
+
+
+ Update displacement and draft
+ Actualizar desplazamiento y calado
+
+
+
+ shiptank_weights
+
+
+ Set weights
+ Establecer pesos
+
+
+
+ Name
+ Nombre
+
+
+
+ Mass
+ Masa
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_fi.qm b/src/Mod/Ship/resources/translations/Ship_fi.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_fi.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_fi.ts b/src/Mod/Ship/resources/translations/Ship_fi.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_fi.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_fr.qm b/src/Mod/Ship/resources/translations/Ship_fr.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_fr.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_fr.ts b/src/Mod/Ship/resources/translations/Ship_fr.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_fr.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_hr.qm b/src/Mod/Ship/resources/translations/Ship_hr.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_hr.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_hr.ts b/src/Mod/Ship/resources/translations/Ship_hr.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_hr.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_hu.qm b/src/Mod/Ship/resources/translations/Ship_hu.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_hu.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_hu.ts b/src/Mod/Ship/resources/translations/Ship_hu.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_hu.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_it.qm b/src/Mod/Ship/resources/translations/Ship_it.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_it.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_it.ts b/src/Mod/Ship/resources/translations/Ship_it.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_it.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_ja.qm b/src/Mod/Ship/resources/translations/Ship_ja.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ja.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_ja.ts b/src/Mod/Ship/resources/translations/Ship_ja.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ja.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_nl.qm b/src/Mod/Ship/resources/translations/Ship_nl.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_nl.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_nl.ts b/src/Mod/Ship/resources/translations/Ship_nl.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_nl.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_no.qm b/src/Mod/Ship/resources/translations/Ship_no.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_no.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_no.ts b/src/Mod/Ship/resources/translations/Ship_no.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_no.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_pl.qm b/src/Mod/Ship/resources/translations/Ship_pl.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_pl.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_pl.ts b/src/Mod/Ship/resources/translations/Ship_pl.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_pl.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_pt-BR.qm b/src/Mod/Ship/resources/translations/Ship_pt-BR.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_pt-BR.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_pt-BR.ts b/src/Mod/Ship/resources/translations/Ship_pt-BR.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_pt-BR.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_ro.qm b/src/Mod/Ship/resources/translations/Ship_ro.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ro.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_ro.ts b/src/Mod/Ship/resources/translations/Ship_ro.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ro.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_ru.qm b/src/Mod/Ship/resources/translations/Ship_ru.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ru.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_ru.ts b/src/Mod/Ship/resources/translations/Ship_ru.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_ru.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_sk.qm b/src/Mod/Ship/resources/translations/Ship_sk.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_sk.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_sk.ts b/src/Mod/Ship/resources/translations/Ship_sk.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_sk.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_sv-SE.qm b/src/Mod/Ship/resources/translations/Ship_sv-SE.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_sv-SE.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_sv-SE.ts b/src/Mod/Ship/resources/translations/Ship_sv-SE.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_sv-SE.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_tr.qm b/src/Mod/Ship/resources/translations/Ship_tr.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_tr.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_tr.ts b/src/Mod/Ship/resources/translations/Ship_tr.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_tr.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_uk.qm b/src/Mod/Ship/resources/translations/Ship_uk.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_uk.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_uk.ts b/src/Mod/Ship/resources/translations/Ship_uk.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_uk.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_zh-CN.qm b/src/Mod/Ship/resources/translations/Ship_zh-CN.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_zh-CN.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_zh-CN.ts b/src/Mod/Ship/resources/translations/Ship_zh-CN.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_zh-CN.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/resources/translations/Ship_zh-TW.qm b/src/Mod/Ship/resources/translations/Ship_zh-TW.qm
new file mode 100644
index 0000000000..be651eede2
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_zh-TW.qm
@@ -0,0 +1 @@
+<¸dÊÍ!¿`¡½Ý
\ No newline at end of file
diff --git a/src/Mod/Ship/resources/translations/Ship_zh-TW.ts b/src/Mod/Ship/resources/translations/Ship_zh-TW.ts
new file mode 100644
index 0000000000..ed2d718ae1
--- /dev/null
+++ b/src/Mod/Ship/resources/translations/Ship_zh-TW.ts
@@ -0,0 +1,863 @@
+
+
+
+ Ship
+
+
+ True if is a valid ship tank instance
+
+
+
+
+ Fluid filling level percentage
+
+
+
+
+ Inside fluid density
+
+
+
+
+ True if is a valid ship simulation instance
+
+
+
+
+ Waves (Amplitude,period,phase)
+
+
+
+
+ Waves direction (0 deg to stern waves)
+
+
+
+
+ Free surface number of elements at x direction
+
+
+
+
+ Free surface number of elements at y direction
+
+
+
+
+ Free surface elements position
+
+
+
+
+ Free surface elements area
+
+
+
+
+ Free surface elements normal
+
+
+
+
+ Ship
+
+
+
+
+ Ship module provides some of the commonly used tool to design ship forms
+
+
+
+
+ Ship design
+
+
+
+
+ Weights
+
+
+
+
+ Simulation
+
+
+
+
+ True if is a valid ship instance
+
+
+
+
+ Ship Weights names
+
+
+
+
+ Lightweight
+
+
+
+
+ Ship Weights masses
+
+
+
+
+ Ship Weights centers of gravity
+
+
+
+
+ Ship_AreasCurve
+
+
+ Areas curve
+
+
+
+
+ Plot transversal areas curve
+
+
+
+
+ Ship_CreateShip
+
+
+ Create a new ship
+
+
+
+
+ Create a new ship in order to work with them
+
+
+
+
+ Ship_CreateSim
+
+
+ Create a new simulation
+
+
+
+
+ Create a new simulation in order to process later
+
+
+
+
+ Ship_CreateTank
+
+
+ Create a new tank
+
+
+
+
+ Create a new ship tank
+
+
+
+
+ Ship_GZ
+
+
+ GZ curve
+
+
+
+
+ Transversal stability GZ curve computation
+
+
+
+
+ Ship_Hydrostatics
+
+
+ Hydrostatics
+
+
+
+
+ Plot ship hydrostatics
+
+
+
+
+ Ship_LoadExample
+
+
+ Load an example ship geometry
+
+
+
+
+ Load an example ship geometry able to be converted into a ship.
+
+
+
+
+ Ship_OutlineDraw
+
+
+ Outline draw
+
+
+
+
+ Plot ship outline draw
+
+
+
+
+ Ship_RunSim
+
+
+ Run a simulation
+
+
+
+
+ Ship_StopSim
+
+
+ Stop active simulation
+
+
+
+
+ Ship_TrackSim
+
+
+ Track simulation
+
+
+
+
+ Ship_Weights
+
+
+ Set ship weights
+
+
+
+
+ Set ship weights, tanks must be added later
+
+
+
+
+ ship_areas
+
+
+ Plot transversal areas curve
+
+
+
+
+ Draft
+
+
+
+
+ Trim
+
+
+
+
+ Displacement
+
+
+
+
+ Areas curve tool draft selected [m]
+
+
+
+
+ Areas curve tool trim selected
+
+
+
+
+ ship_console
+
+
+ Plot module is disabled, can't perform plot
+
+
+
+
+ Can't create folder
+
+
+
+
+ Can't write to file
+
+
+
+
+ Data saved
+
+
+
+
+ Ship instance must be selected (no object selected)
+
+
+
+
+ More than one ship selected (extra ships will be neglected)
+
+
+
+
+ Ship instance must be selected (no valid ship found at selected objects)
+
+
+
+
+ Ussually you don't want to modify manually this option
+
+
+
+
+ Object is not a valid ship simulation
+
+
+
+
+ Object is not a ship simulation
+
+
+
+
+ Can't find any active simulation
+
+
+
+
+ Ship objects can only be created on top of hull geometry (any object selected)
+
+
+
+
+ Please create or load a ship hull geometry before using this tool
+
+
+
+
+ Ship objects can only be created on top of hull geometry (no solid found at selected objects)
+
+
+
+
+ Plot module is disabled, tools can't graph output curves
+
+
+
+
+ pyOpenCL not installed, simulations stuff will disabled therefore
+
+
+
+
+ numpy not installed, simulations stuff will disabled therefore
+
+
+
+
+ Can't detect external faces from ship object
+
+
+
+
+ Computing hydrostatics
+
+
+
+
+ Computing external faces
+
+
+
+
+ Initializating
+
+
+
+
+ Iterating
+
+
+
+
+ Generating linear system matrix
+
+
+
+
+ Solving linear systems
+
+
+
+
+ Time integrating
+
+
+
+
+ Building data
+
+
+
+
+ Launching simulation
+
+
+
+
+ Done
+
+
+
+
+ Ship simulation instance must be selected (no object selected)
+
+
+
+
+ More than one ship simulation selected (extra simulations will be neglected)
+
+
+
+
+ Ship simulation instance must be selected (no valid simulation found at selected objects)
+
+
+
+
+ Can't find OpenCL devices
+
+
+
+
+ Simulation already stopped
+
+
+
+
+ Any active simulation to stop
+
+
+
+
+ Simulation will stop at the end of actual iteration
+
+
+
+
+ Computing GZ
+
+
+
+
+ Ship weights has not been set. You need to set weights before use this tool
+
+
+
+
+ Performing plot
+
+
+
+
+ Computing sections
+
+
+
+
+ Any valid ship section found
+
+
+
+
+ Tank has not been created
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no object selected)
+
+
+
+
+ Please create a tank geometry before using this tool
+
+
+
+
+ Tank objects can only be created on top of structure geometry (no solids can't be computed)
+
+
+
+
+ ship_create
+
+
+ Base line
+
+
+
+
+ Free surface
+
+
+
+
+ Forward perpendicular
+
+
+
+
+ After perpendicular
+
+
+
+
+ Main frame
+
+
+
+
+ Create a new ship
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Draft
+
+
+
+
+ ship_hydrostatic
+
+
+ Plot hydrostatics
+
+
+
+
+ Trim
+
+
+
+
+ Minimum draft
+
+
+
+
+ Maximum draft
+
+
+
+
+ Number of points
+
+
+
+
+ Hydrostatics tool trim selected
+
+
+
+
+ Hydrostatics tool minimum draft selected [m]
+
+
+
+
+ Hydrostatics tool maximum draft selected [m]
+
+
+
+
+ Hydrostatics tool number of points selected
+
+
+
+
+ ship_load
+
+
+ Load example ship
+
+
+
+
+ Select ship example geometry
+
+
+
+
+ ship_outline
+
+
+ Outline draw
+
+
+
+
+ Auto create
+
+
+
+
+ Scale
+
+
+
+
+ Delete all sections
+
+
+
+
+ Create sections
+
+
+
+
+ Transversal
+
+
+
+
+ Longitudinal
+
+
+
+
+ Water lines
+
+
+
+
+ Transversal sections position [m]
+
+
+
+
+ Longitudinal sections position [m]
+
+
+
+
+ Water lines position [m]
+
+
+
+
+ Plot scale (1:scale format)
+
+
+
+
+ shipsim_create
+
+
+ Create a new ship simulation
+
+
+
+
+ Free surface
+
+
+
+
+ Length
+
+
+
+
+ Breadth
+
+
+
+
+ Number of points
+
+
+
+
+ Waves
+
+
+
+
+ Amplitude
+
+
+
+
+ Period
+
+
+
+
+ Phase
+
+
+
+
+ Heading
+
+
+
+
+ shipsim_stop
+
+
+ Run the simulation
+
+
+
+
+ Simulation time
+
+
+
+
+ Output
+
+
+
+
+ OpenCL device
+
+
+
+
+ shipsim_track
+
+
+ Track simulation
+
+
+
+
+ Now
+
+
+
+
+ shiptank_create
+
+
+ Create a new tank
+
+
+
+
+ Filling level
+
+
+
+
+ Fluid density
+
+
+
+
+ shiptank_gz
+
+
+ Draft
+
+
+
+
+ GZ curve computation
+
+
+
+
+ Loading condition
+
+
+
+
+ Roll angles
+
+
+
+
+ Trim
+
+
+
+
+ Start
+
+
+
+
+ End
+
+
+
+
+ Number of points
+
+
+
+
+ Displacement
+
+
+
+
+ Press update to compute
+
+
+
+
+ Update displacement and draft
+
+
+
+
+ shiptank_weights
+
+
+ Set weights
+
+
+
+
+ Name
+
+
+
+
+ Mass
+
+
+
+
diff --git a/src/Mod/Ship/shipAreasCurve/Plot.py b/src/Mod/Ship/shipAreasCurve/Plot.py
deleted file mode 100644
index 4c2bc46e57..0000000000
--- a/src/Mod/Ship/shipAreasCurve/Plot.py
+++ /dev/null
@@ -1,211 +0,0 @@
-#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
-#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
-#* License along with this program; if not, write to the Free Software *
-#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
-#***************************************************************************
-
-import os
-# FreeCAD modules
-import FreeCAD,FreeCADGui
-from FreeCAD import Base
-import Image, ImageGui
-# FreeCADShip modules
-from shipUtils import Paths, Translator
-
-header = """ #################################################################
-
- ##### #### ### #### ##### # # ### ####
- # # # # # # # # # # # #
- # ## #### #### # # # # # # # # # # #
- #### # # # # # # # ##### # # ## ## ##### # ####
- # # #### #### # # # # # # # # # #
- # # # # # # # # # # # # # #
- # # #### #### ### # # #### ##### # # ### #
-
- #################################################################
-"""
-
-class Plot(object):
- def __init__(self, x, y, disp, xcb, ship):
- """ Constructor. performs plot and show it (Using pyxplot).
- @param x X coordinates.
- @param y Transversal areas.
- @param disp Ship displacement.
- @param xcb Bouyancy center length.
- @param ship Active ship instance.
- """
- if self.createDirectory():
- return
- if self.saveData(x,y,ship):
- return
- if self.saveLayout(x,y,disp,xcb,ship):
- return
- if self.execute():
- return
- ImageGui.open(self.path + 'areas.png')
-
- def createDirectory(self):
- """ Create needed folder to write data and scripts.
- @return True if error happens.
- """
- self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
- if not os.path.exists(self.path):
- os.makedirs(self.path)
- if not os.path.exists(self.path):
- msg = Translator.translate("Can't create '" + self.path + "' folder.\n")
- FreeCAD.Console.PrintError(msg)
- return False
-
- def saveData(self,x,y,ship):
- """ Write data file.
- @param x X coordinates.
- @param y Transversal areas.
- @param ship Active ship instance.
- @return True if error happens.
- """
- # Open the file
- filename = self.path + 'areas.dat'
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Print header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains transversal areas data, filled with following columns:\n")
- Output.write(" # 1: X coordiante [m]\n")
- Output.write(" # 2: Transversal area [m2]\n")
- Output.write(" # 3: X FP coordinate [m]\n")
- Output.write(" # 4: Y FP coordinate (bounds in order to draw it)\n")
- Output.write(" # 3: X AP coordinate [m]\n")
- Output.write(" # 4: Y AP coordinate (bounds in order to draw it)\n")
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Get perpendiculars data
- Lpp = ship.Length
- FPx = 0.5*Lpp
- APx = -0.5*Lpp
- maxArea = max(y)
- # Print data
- if len(x) < 2:
- msg = Translator.translate("Not enough data to plot.\n")
- FreeCAD.Console.PrintError(msg)
- string = "%f %f %f %f %f %f\n" % (x[0], y[0], FPx, 0.0, APx, 0.0)
- Output.write(string)
- for i in range(1, len(x)):
- string = "%f %f %f %f %f %f\n" % (x[i], y[i], FPx, maxArea, APx, maxArea)
- Output.write(string)
- # Close file
- Output.close()
- self.dataFile = filename
- msg = Translator.translate("Data saved at '" + self.dataFile + "'.\n")
- FreeCAD.Console.PrintMessage(msg)
- return False
-
- def saveLayout(self, x, y, disp, xcb, ship):
- """ Prints the data output.
- @param x X coordinates.
- @param y Transversal areas.
- @param disp Ship displacement.
- @param xcb Bouyancy center length.
- @param ship Active ship instance.
- @return True if error happens.
- """
- filename = self.path + 'areas.pyxplot'
- # Open the file
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Write header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains a script to plot transversal areas curve.\n")
- Output.write(" # To use it execute:\n")
- Output.write(" #\n")
- Output.write(" # pyxplot %s\n" % (filename))
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Write general options for hydrostatics
- Output.write("set numeric display latex\n")
- Output.write("set output '%s'\n" % (self.path + 'areas.eps'))
- Output.write("set nokey\n")
- Output.write("set grid\n")
- Output.write("# X axis\n")
- Output.write("set xlabel 'x / $m$'\n")
- Output.write("set xtic\n")
- Output.write("# Y axis\n")
- Output.write("set ylabel 'Area / $m^2$'\n")
- Output.write("set ytic\n")
- Output.write("# Line styles\n")
- Output.write("set style 1 line linetype 1 linewidth 1 colour rgb (0):(0):(0)\n")
- Output.write("set style 2 line linetype 1 linewidth 2 colour rgb (0):(0):(0)\n")
- # Get perpendiculars data
- Lpp = ship.Length
- FPx = 0.5*Lpp
- APx = -0.5*Lpp
- maxArea = max(y)
- # Perpendicular labels
- Output.write("# Perpendiculars labels\n")
- Output.write("set label (1) AP %f,%f\n" % (APx+0.01*Lpp, 0.01*maxArea))
- Output.write("set label (2) AP %f,%f\n" % (APx+0.01*Lpp, 0.95*maxArea))
- Output.write("set label (3) FP %f,%f\n" % (FPx+0.01*Lpp, 0.01*maxArea))
- Output.write("set label (4) FP %f,%f\n" % (FPx+0.01*Lpp, 0.95*maxArea))
- # Additional data
- Output.write("# Additional data\n")
- Output.write("set label (5) 'XCB = %g m' %f,%f\n" % (xcb, -0.25*Lpp, 0.25*maxArea))
- Output.write("set label (6) 'Maximum area = %g m2' %f,%f\n" % (maxArea, -0.25*Lpp, 0.15*maxArea))
- Output.write("set label (7) 'Displacement = %g tons' %f,%f\n" % (disp, -0.25*Lpp, 0.05*maxArea))
- # Write plot call
- Output.write("# Plot\n")
- Output.write("plot '%s' using 1:2 title 'Transversal areas' axes x1y1 with lines style 1, \\\n" % (self.dataFile))
- Output.write(" '%s' using 3:4 title 'FP' axes x1y1 with lines style 2, \\\n" % (self.dataFile))
- Output.write(" '%s' using 5:6 title 'AP' axes x1y1 with lines style 2\n" % (self.dataFile))
- # Close file
- self.layoutFile = filename
- Output.close()
- return False
-
- def execute(self):
- """ Calls pyxplot in order to plot an save an image.
- @return True if error happens.
- """
- filename = self.path + 'areas'
- comm = "pyxplot %s" % (self.layoutFile)
- if os.system(comm):
- msg = Translator.translate("Can't execute pyxplot. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Plot will not generated\n")
- FreeCAD.Console.PrintError(msg)
- return True
- comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename)
- if os.system(comm):
- msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Generated image will not converted to png\n")
- FreeCAD.Console.PrintError(msg)
- return True
- return False
diff --git a/src/Mod/Ship/shipAreasCurve/PlotAux.py b/src/Mod/Ship/shipAreasCurve/PlotAux.py
new file mode 100644
index 0000000000..42699539f6
--- /dev/null
+++ b/src/Mod/Ship/shipAreasCurve/PlotAux.py
@@ -0,0 +1,185 @@
+#***************************************************************************
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
+#* This program is free software; you can redistribute it and/or modify *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
+#* License along with this program; if not, write to the Free Software *
+#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
+#* USA *
+#* *
+#***************************************************************************
+
+import os
+# Qt library
+from PyQt4 import QtGui,QtCore
+# FreeCAD modules
+import FreeCAD,FreeCADGui
+from FreeCAD import Base
+import Image, ImageGui
+# FreeCADShip modules
+from shipUtils import Paths
+
+header = """ #################################################################
+
+ ##### #### ### #### ##### # # ### ####
+ # # # # # # # # # # # #
+ # ## #### #### # # # # # # # # # # #
+ #### # # # # # # # ##### # # ## ## ##### # ####
+ # # #### #### # # # # # # # # # #
+ # # # # # # # # # # # # # #
+ # # #### #### ### # # #### ##### # # ### #
+
+ #################################################################
+"""
+
+class Plot(object):
+ def __init__(self, x, y, disp, xcb, ship):
+ """ Constructor. performs plot and show it.
+ @param x X coordinates.
+ @param y Transversal areas.
+ @param disp Ship displacement.
+ @param xcb Bouyancy center length.
+ @param ship Active ship instance.
+ """
+ # Try to plot
+ self.plot(x,y,disp,xcb,ship)
+ # Save data
+ if self.createDirectory():
+ return
+ if self.saveData(x,y,ship):
+ return
+
+ def plot(self, x, y, disp, xcb, ship):
+ """ Perform areas curve plot.
+ @param x X coordinates.
+ @param y Transversal areas.
+ @param disp Ship displacement.
+ @param xcb Bouyancy center length.
+ @param ship Active ship instance.
+ @return True if error happens.
+ """
+ # Create plot
+ try:
+ import Plot
+ plt = Plot.figure('Areas curve')
+ except ImportError:
+ msg = QtGui.QApplication.translate("ship_console", "Plot module is disabled, can't perform plot",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintWarning(msg + '\n')
+ return True
+ # Plot areas curve
+ areas = Plot.plot(x,y,r'Transversal areas')
+ areas.line.set_linestyle('-')
+ areas.line.set_linewidth(2.0)
+ areas.line.set_color((0.0, 0.0, 0.0))
+ # Get perpendiculars data
+ Lpp = ship.Length
+ FPx = 0.5*Lpp
+ APx = -0.5*Lpp
+ maxArea = max(y)
+ # Plot perpendiculars
+ FP = Plot.plot([FPx,FPx], [0.0,maxArea])
+ FP.line.set_linestyle('-')
+ FP.line.set_linewidth(1.0)
+ FP.line.set_color((0.0, 0.0, 0.0))
+ AP = Plot.plot([APx,APx], [0.0,maxArea])
+ AP.line.set_linestyle('-')
+ AP.line.set_linewidth(1.0)
+ AP.line.set_color((0.0, 0.0, 0.0))
+ # Add annotations for prependiculars
+ ax = Plot.axes()
+ ax.annotate('AP', xy=(APx+0.01*Lpp, 0.01*maxArea), size=15)
+ ax.annotate('AP', xy=(APx+0.01*Lpp, 0.95*maxArea), size=15)
+ ax.annotate('FP', xy=(FPx+0.01*Lpp, 0.01*maxArea), size=15)
+ ax.annotate('FP', xy=(FPx+0.01*Lpp, 0.95*maxArea), size=15)
+ # Add some additional data
+ addInfo = r"""$XCB = %g \; \mathrm{m}$
+$Area_{max} = %g \; \mathrm{m}^2$
+$\bigtriangleup = %g \; \mathrm{tons}$""" % (xcb,maxArea,disp)
+ ax.text(0.0, 0.01*maxArea, addInfo,
+ verticalalignment='bottom',horizontalalignment='center', fontsize=20)
+ # Write axes titles
+ Plot.xlabel(r'$x \; \mathrm{m}$')
+ Plot.ylabel(r'$Area \; \mathrm{m}^2$')
+ ax.xaxis.label.set_fontsize(20)
+ ax.yaxis.label.set_fontsize(20)
+ # Show grid
+ Plot.grid(True)
+ # End
+ plt.update()
+ return False
+
+ def createDirectory(self):
+ """ Create needed folder to write data.
+ @return True if error happens.
+ """
+ self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
+ if not os.path.exists(self.path):
+ os.makedirs(self.path)
+ if not os.path.exists(self.path):
+ msg = QtGui.QApplication.translate("ship_console", "Can't create folder",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ self.path + "\'\n")
+ return True
+ return False
+
+ def saveData(self,x,y,ship):
+ """ Write data file.
+ @param x X coordinates.
+ @param y Transversal areas.
+ @param ship Active ship instance.
+ @return True if error happens.
+ """
+ # Open the file
+ filename = self.path + 'areas.dat'
+ try:
+ Output = open(filename, "w")
+ except IOError:
+ msg = QtGui.QApplication.translate("ship_console", "Can't write to file",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ filename + "\'\n")
+ return True
+ # Print header
+ Output.write(header)
+ Output.write(" #\n")
+ Output.write(" # File automatically exported by FreeCAD-Ship\n")
+ Output.write(" # This file contains transversal areas data, filled with following columns:\n")
+ Output.write(" # 1: X coordiante [m]\n")
+ Output.write(" # 2: Transversal area [m2]\n")
+ Output.write(" # 3: X FP coordinate [m]\n")
+ Output.write(" # 4: Y FP coordinate (bounds in order to draw it)\n")
+ Output.write(" # 3: X AP coordinate [m]\n")
+ Output.write(" # 4: Y AP coordinate (bounds in order to draw it)\n")
+ Output.write(" #\n")
+ Output.write(" #################################################################\n")
+ # Get perpendiculars data
+ Lpp = ship.Length
+ FPx = 0.5*Lpp
+ APx = -0.5*Lpp
+ maxArea = max(y)
+ # Print data
+ string = "%f %f %f %f %f %f\n" % (x[0], y[0], FPx, 0.0, APx, 0.0)
+ Output.write(string)
+ for i in range(1, len(x)):
+ string = "%f %f %f %f %f %f\n" % (x[i], y[i], FPx, maxArea, APx, maxArea)
+ Output.write(string)
+ # Close file
+ Output.close()
+ self.dataFile = filename
+ msg = QtGui.QApplication.translate("ship_console", "Data saved",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + ':\n\t' + "\'"+ self.dataFile + "\'\n")
+ return False
+
diff --git a/src/Mod/Ship/shipAreasCurve/Preview.py b/src/Mod/Ship/shipAreasCurve/Preview.py
index 6af80580d8..4cd17bf924 100644
--- a/src/Mod/Ship/shipAreasCurve/Preview.py
+++ b/src/Mod/Ship/shipAreasCurve/Preview.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -26,53 +26,53 @@ import FreeCAD,FreeCADGui
from FreeCAD import Base
import Part
# FreeCADShip modules
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class Preview(object):
- def __init__(self):
- """ Constructor.
- """
- self.reinit()
+ def __init__(self):
+ """ Constructor.
+ """
+ self.reinit()
- def reinit(self):
- """ Reinitializate drawer.
- """
- self.obj = None
- self.clean()
+ def reinit(self):
+ """ Reinitializate drawer.
+ """
+ self.obj = None
+ self.clean()
- def update(self, draft, trim, ship):
- """ Update free surface 3D view
- @param traft Draft.
- @param trim Trim in degrees.
- """
- # Destroy old object if exist
- self.clean()
- # Set free surface bounds
- bbox = ship.Shape.BoundBox
- L = 1.5 * bbox.XLength
- B = 3.0 * bbox.YLength
- # Create plane
- x = - 0.5 * L
- y = - 0.5 * B
- point = Base.Vector(x,y,0.0)
- plane = Part.makePlane(L,B, point, Base.Vector(0,0,1))
- # Set position
- plane.rotate(Base.Vector(0,0,0), Base.Vector(0,1,0), trim)
- plane.translate(Base.Vector(0,0,draft))
- # Create the FreeCAD object
- Part.show(plane)
- objs = FreeCAD.ActiveDocument.Objects
- self.obj = objs[len(objs)-1]
- self.obj.Label = 'FreeSurface'
- # Set properties of object
- guiObj = FreeCADGui.ActiveDocument.getObject(self.obj.Name)
- guiObj.ShapeColor = (0.4,0.8,0.85)
- guiObj.Transparency = 50
+ def update(self, draft, trim, ship):
+ """ Update free surface 3D view
+ @param traft Draft.
+ @param trim Trim in degrees.
+ """
+ # Destroy old object if exist
+ self.clean()
+ # Set free surface bounds
+ bbox = ship.Shape.BoundBox
+ L = 1.5 * bbox.XLength
+ B = 3.0 * bbox.YLength
+ # Create plane
+ x = - 0.5 * L
+ y = - 0.5 * B
+ point = Base.Vector(x,y,0.0)
+ plane = Part.makePlane(L,B, point, Base.Vector(0,0,1))
+ # Set position
+ plane.rotate(Base.Vector(0,0,0), Base.Vector(0,1,0), trim)
+ plane.translate(Base.Vector(0,0,draft))
+ # Create the FreeCAD object
+ Part.show(plane)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.obj = objs[len(objs)-1]
+ self.obj.Label = 'FreeSurface'
+ # Set properties of object
+ guiObj = FreeCADGui.ActiveDocument.getObject(self.obj.Name)
+ guiObj.ShapeColor = (0.4,0.8,0.85)
+ guiObj.Transparency = 50
- def clean(self):
- """ Erase all annotations from screen.
- """
- if not self.obj:
- return
- FreeCAD.ActiveDocument.removeObject(self.obj.Name)
- self.obj=None
+ def clean(self):
+ """ Erase all annotations from screen.
+ """
+ if not self.obj:
+ return
+ FreeCAD.ActiveDocument.removeObject(self.obj.Name)
+ self.obj=None
diff --git a/src/Mod/Ship/shipAreasCurve/TaskPanel.py b/src/Mod/Ship/shipAreasCurve/TaskPanel.py
index e027f5f9e1..258f487b7e 100644
--- a/src/Mod/Ship/shipAreasCurve/TaskPanel.py
+++ b/src/Mod/Ship/shipAreasCurve/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import math
@@ -28,207 +28,218 @@ import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
-import Preview, Plot
+import Preview, PlotAux
import Instance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
from shipHydrostatics import Tools as Hydrostatics
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/shipAreasCurve/TaskPanel.ui"
- self.preview = Preview.Preview()
- self.ship = None
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/shipAreasCurve/TaskPanel.ui"
+ self.preview = Preview.Preview()
+ self.ship = None
- def accept(self):
- if not self.ship:
- return False
- self.save()
- # Plot data
- data = Hydrostatics.displacement(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
- disp = data[0]
- xcb = data[1].x
- data = Hydrostatics.areas(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
- x = []
- y = []
- for i in range(0,len(data)):
- x.append(data[i][0])
- y.append(data[i][1])
- Plot.Plot(x,y,disp,xcb, self.ship)
- self.preview.clean()
- return True
+ def accept(self):
+ if not self.ship:
+ return False
+ self.save()
+ # Plot data
+ data = Hydrostatics.displacement(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
+ disp = data[0]
+ xcb = data[1].x
+ data = Hydrostatics.areas(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
+ x = []
+ y = []
+ for i in range(0,len(data)):
+ x.append(data[i][0])
+ y.append(data[i][1])
+ PlotAux.Plot(x,y,disp,xcb, self.ship)
+ self.preview.clean()
+ return True
- def reject(self):
- self.preview.clean()
- return True
+ def reject(self):
+ self.preview.clean()
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft")
- form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
- form.output = form.findChild(QtGui.QTextEdit, "OutputData")
- form.doc = QtGui.QTextDocument(form.output)
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- QtCore.QObject.connect(form.trim, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft")
+ form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
+ form.output = form.findChild(QtGui.QTextEdit, "OutputData")
+ form.doc = QtGui.QTextDocument(form.output)
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ QtCore.QObject.connect(form.trim, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- # Get objects
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- continue
- if obj.IsShip:
- # Test if another ship already selected
- if self.ship:
- msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.ship = obj
- # Test if any valid ship was selected
- if not self.ship:
- msg = Translator.translate("Ship instance must be selected (no valid ship found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- # Get bounds
- bbox = self.ship.Shape.BoundBox
- self.form.draft.setMaximum(bbox.ZMax)
- self.form.draft.setMinimum(bbox.ZMin)
- self.form.draft.setValue(self.ship.Draft)
- # Try to use saved values
- props = self.ship.PropertiesList
- flag = True
- try:
- props.index("AreaCurveDraft")
- except ValueError:
- flag = False
- if flag:
- self.form.draft.setValue(self.ship.AreaCurveDraft)
- flag = True
- try:
- props.index("AreaCurveTrim")
- except ValueError:
- flag = False
- if flag:
- self.form.trim.setValue(self.ship.AreaCurveTrim)
- # Update GUI
- self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship)
- self.onUpdate()
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ # Get objects
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console", "Ship instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ continue
+ if obj.IsShip:
+ # Test if another ship already selected
+ if self.ship:
+ msg = QtGui.QApplication.translate("ship_console", "More than one ship selected (extra ships will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.ship = obj
+ # Test if any valid ship was selected
+ if not self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no valid ship found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Get bounds
+ bbox = self.ship.Shape.BoundBox
+ self.form.draft.setMaximum(bbox.ZMax)
+ self.form.draft.setMinimum(bbox.ZMin)
+ self.form.draft.setValue(self.ship.Draft)
+ # Try to use saved values
+ props = self.ship.PropertiesList
+ flag = True
+ try:
+ props.index("AreaCurveDraft")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.draft.setValue(self.ship.AreaCurveDraft)
+ flag = True
+ try:
+ props.index("AreaCurveTrim")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.trim.setValue(self.ship.AreaCurveTrim)
+ # Update GUI
+ self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship)
+ self.onUpdate()
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Plot transversal areas curve"))
- self.form.findChild(QtGui.QLabel, "DraftLabel").setText(Translator.translate("Draft"))
- self.form.findChild(QtGui.QLabel, "TrimLabel").setText(Translator.translate("Trim"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("ship_areas","Plot transversal areas curve",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "DraftLabel").setText(QtGui.QApplication.translate("ship_areas","Draft",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "TrimLabel").setText(QtGui.QApplication.translate("ship_areas","Trim",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onData(self, value):
- """ Method called when input data is changed.
- @param value Changed value.
- """
- if not self.ship:
- return
- self.onUpdate()
- self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship)
+ def onData(self, value):
+ """ Method called when input data is changed.
+ @param value Changed value.
+ """
+ if not self.ship:
+ return
+ self.onUpdate()
+ self.preview.update(self.form.draft.value(), self.form.trim.value(), self.ship)
- def onUpdate(self):
- """ Method called when update data request.
- """
- if not self.ship:
- return
- # Calculate drafts
- angle = math.radians(self.form.trim.value())
- L = self.ship.Length
- draftAP = self.form.draft.value() + 0.5*L*math.tan(angle)
- if draftAP < 0.0:
- draftAP = 0.0
- draftFP = self.form.draft.value() - 0.5*L*math.tan(angle)
- if draftFP < 0.0:
- draftFP = 0.0
- # Calculate hydrostatics involved
- data = Hydrostatics.displacement(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
- # Prepare the string in html format
- string = 'L = %g [m]
' % (self.ship.Length)
- string = string + 'B = %g [m]
' % (self.ship.Beam)
- string = string + 'T = %g [m]
' % (self.form.draft.value())
- string = string + 'Trim = %g [degrees]
' % (self.form.trim.value())
- string = string + 'TAP = %g [m]
' % (draftAP)
- string = string + 'TFP = %g [m]
' % (draftFP)
- string = string + Translator.translate('Displacement') + ' = %g [ton]
' % (data[0])
- string = string + 'XCB = %g [m]' % (data[1].x)
- # Set the document
- self.form.output.setHtml(string)
+ def onUpdate(self):
+ """ Method called when update data request.
+ """
+ if not self.ship:
+ return
+ # Calculate drafts
+ angle = math.radians(self.form.trim.value())
+ L = self.ship.Length
+ draftAP = self.form.draft.value() + 0.5*L*math.tan(angle)
+ if draftAP < 0.0:
+ draftAP = 0.0
+ draftFP = self.form.draft.value() - 0.5*L*math.tan(angle)
+ if draftFP < 0.0:
+ draftFP = 0.0
+ # Calculate hydrostatics involved
+ data = Hydrostatics.displacement(self.ship,self.form.draft.value(),0.0,self.form.trim.value())
+ # Prepare the string in html format
+ string = 'L = %g [m]
' % (self.ship.Length)
+ string = string + 'B = %g [m]
' % (self.ship.Beam)
+ string = string + 'T = %g [m]
' % (self.form.draft.value())
+ string = string + 'Trim = %g [degrees]
' % (self.form.trim.value())
+ string = string + 'TAP = %g [m]
' % (draftAP)
+ string = string + 'TFP = %g [m]
' % (draftFP)
+ dispText = QtGui.QApplication.translate("ship_areas",'Displacement',
+ None,QtGui.QApplication.UnicodeUTF8)
+ string = string + dispText + ' = %g [ton]
' % (data[0])
+ string = string + 'XCB = %g [m]' % (data[1].x)
+ # Set the document
+ self.form.output.setHtml(string)
- def save(self):
- """ Saves data into ship instance.
- """
- props = self.ship.PropertiesList
- try:
- props.index("AreaCurveDraft")
- except ValueError:
- self.ship.addProperty("App::PropertyFloat","AreaCurveDraft","Ship", str(Translator.translate("Areas curve draft selected [m]")))
- self.ship.AreaCurveDraft = self.form.draft.value()
- try:
- props.index("AreaCurveTrim")
- except ValueError:
- self.ship.addProperty("App::PropertyFloat","AreaCurveTrim","Ship", str(Translator.translate("Areas curve trim selected [m]")))
- self.ship.AreaCurveTrim = self.form.trim.value()
+ def save(self):
+ """ Saves data into ship instance.
+ """
+ props = self.ship.PropertiesList
+ try:
+ props.index("AreaCurveDraft")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_areas","Areas curve tool draft selected [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloat","AreaCurveDraft","Ship", tooltip)
+ self.ship.AreaCurveDraft = self.form.draft.value()
+ try:
+ props.index("AreaCurveTrim")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_areas","Areas curve tool trim selected",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloat","AreaCurveTrim","Ship", tooltip)
+ self.ship.AreaCurveTrim = self.form.trim.value()
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/shipAreasCurve/TaskPanel.ui b/src/Mod/Ship/shipAreasCurve/TaskPanel.ui
index 8e03561851..efed908cd2 100644
--- a/src/Mod/Ship/shipAreasCurve/TaskPanel.ui
+++ b/src/Mod/Ship/shipAreasCurve/TaskPanel.ui
@@ -11,19 +11,51 @@
- Create new ship
+ Transversal areas curve
-
-
-
-
+
+
+ Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse
+
+
+
+ -
+
+
-
+
+
+ 0
+ 0
+
+
Draft
- -
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 16777215
+ 16777215
+
+
+
+ m
+
+
+
+ -
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -36,31 +68,20 @@
- -
-
-
-
- 24
- 16777215
-
-
-
- m
-
-
-
-
-
- -
-
-
-
+
-
+
+
+ 0
+ 0
+
+
Trim
- -
+
-
Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter
@@ -76,11 +97,17 @@
- -
+
-
+
+
+ 0
+ 0
+
+
- 24
+ 16777215
16777215
@@ -91,13 +118,6 @@
- -
-
-
- Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse
-
-
-
diff --git a/src/Mod/Ship/shipAreasCurve/__init__.py b/src/Mod/Ship/shipAreasCurve/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/shipAreasCurve/__init__.py
+++ b/src/Mod/Ship/shipAreasCurve/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/shipCreateShip/Preview.py b/src/Mod/Ship/shipCreateShip/Preview.py
index 72f6014328..60a61dec19 100644
--- a/src/Mod/Ship/shipCreateShip/Preview.py
+++ b/src/Mod/Ship/shipCreateShip/Preview.py
@@ -1,130 +1,142 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
import FreeCAD,FreeCADGui
from FreeCAD import Base
import Part
+# Qt library
+from PyQt4 import QtGui,QtCore
# FreeCADShip modules
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class Preview(object):
- def __init__(self):
- """ Constructor.
- """
- self.baseLine = None
- self.baseLineLabel = None
- self.reinit()
+ def __init__(self):
+ """ Constructor.
+ """
+ self.baseLine = None
+ self.baseLineLabel = None
+ self.reinit()
- def reinit(self):
- """ Reinitializate drawer.
- """
- self.clean()
+ def reinit(self):
+ """ Reinitializate drawer.
+ """
+ self.clean()
- def update(self, L, B, T):
- """ Update the 3D view printing annotations.
- @param L Ship length.
- @param B Ship beam.
- @param T Ship draft.
- """
- # Destroy all previous entities
- self.clean()
- # Draw base line
- xStart = -0.6*L;
- xEnd = 0.6*L;
- baseLine = Part.makeLine((xStart,0,0),(xEnd,0,0))
- Part.show(baseLine)
- objs = FreeCAD.ActiveDocument.Objects
- self.baseLine = objs[len(objs)-1]
- self.baseLine.Label = 'BaseLine'
- self.baseLineLabel = DrawText('BaseLineText', str(Translator.translate('Base line')), Base.Vector(xEnd,0,0))
- # Draw free surface
- fsLine = Part.makeLine((xStart,0,T),(xEnd,0,T))
- Part.show(fsLine)
- objs = FreeCAD.ActiveDocument.Objects
- self.fsLine = objs[len(objs)-1]
- self.fsLine.Label = 'FreeSurface'
- self.fsLineLabel = DrawText('FSText', str(Translator.translate('Free surface')), Base.Vector(xEnd,0,T))
- # Draw forward perpendicular
- zStart = -0.1*T
- zEnd = 1.1*T
- fpLine = Part.makeLine((0.5*L,0,zStart),(0.5*L,0,zEnd))
- Part.show(fpLine)
- objs = FreeCAD.ActiveDocument.Objects
- self.fpLine = objs[len(objs)-1]
- self.fpLine.Label = 'ForwardPerpendicular'
- self.fpLineLabel = DrawText('FPText', str(Translator.translate('Forward perpendicular')), Base.Vector(0.5*L,0,zEnd))
- # Draw after perpendicular
- apLine = Part.makeLine((-0.5*L,0,zStart),(-0.5*L,0,zEnd))
- Part.show(apLine)
- objs = FreeCAD.ActiveDocument.Objects
- self.apLine = objs[len(objs)-1]
- self.apLine.Label = 'AfterPerpendicular'
- self.apLineLabel = DrawText('APText', str(Translator.translate('After perpendicular')), Base.Vector(-0.5*L,0,zEnd))
- # Draw amin frame
- amLine = Part.makeLine((0,-0.5*B,zStart),(0,-0.5*B,zEnd))
- Part.show(amLine)
- objs = FreeCAD.ActiveDocument.Objects
- self.amLine = objs[len(objs)-1]
- self.amLine.Label = 'AminFrame'
- self.amLineLabel = DrawText('AMText', str(Translator.translate('Amin frame')), Base.Vector(0,-0.5*B,zEnd))
-
- def clean(self):
- """ Erase all annotations from screen.
- """
- if not self.baseLine:
- return
- FreeCAD.ActiveDocument.removeObject(self.baseLine.Name)
- FreeCAD.ActiveDocument.removeObject(self.baseLineLabel.Name)
- FreeCAD.ActiveDocument.removeObject(self.fsLine.Name)
- FreeCAD.ActiveDocument.removeObject(self.fsLineLabel.Name)
- FreeCAD.ActiveDocument.removeObject(self.fpLine.Name)
- FreeCAD.ActiveDocument.removeObject(self.fpLineLabel.Name)
- FreeCAD.ActiveDocument.removeObject(self.apLine.Name)
- FreeCAD.ActiveDocument.removeObject(self.apLineLabel.Name)
- FreeCAD.ActiveDocument.removeObject(self.amLine.Name)
- FreeCAD.ActiveDocument.removeObject(self.amLineLabel.Name)
+ def update(self, L, B, T):
+ """ Update the 3D view printing annotations.
+ @param L Ship length.
+ @param B Ship beam.
+ @param T Ship draft.
+ """
+ # Destroy all previous entities
+ self.clean()
+ # Draw base line
+ xStart = -0.6*L;
+ xEnd = 0.6*L;
+ baseLine = Part.makeLine((xStart,0,0),(xEnd,0,0))
+ Part.show(baseLine)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.baseLine = objs[len(objs)-1]
+ self.baseLine.Label = 'BaseLine'
+ text = str(QtGui.QApplication.translate("ship_create","Base line",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.baseLineLabel = DrawText('BaseLineText', text, Base.Vector(xEnd,0,0))
+ # Draw free surface
+ fsLine = Part.makeLine((xStart,0,T),(xEnd,0,T))
+ Part.show(fsLine)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.fsLine = objs[len(objs)-1]
+ self.fsLine.Label = 'FreeSurface'
+ text = str(QtGui.QApplication.translate("ship_create","Free surface",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.fsLineLabel = DrawText('FSText', text, Base.Vector(xEnd,0,T))
+ # Draw forward perpendicular
+ zStart = -0.1*T
+ zEnd = 1.1*T
+ fpLine = Part.makeLine((0.5*L,0,zStart),(0.5*L,0,zEnd))
+ Part.show(fpLine)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.fpLine = objs[len(objs)-1]
+ self.fpLine.Label = 'ForwardPerpendicular'
+ text = str(QtGui.QApplication.translate("ship_create","Forward perpendicular",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.fpLineLabel = DrawText('FPText', text, Base.Vector(0.5*L,0,zEnd))
+ # Draw after perpendicular
+ apLine = Part.makeLine((-0.5*L,0,zStart),(-0.5*L,0,zEnd))
+ Part.show(apLine)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.apLine = objs[len(objs)-1]
+ self.apLine.Label = 'AfterPerpendicular'
+ text = str(QtGui.QApplication.translate("ship_create","After perpendicular",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.apLineLabel = DrawText('APText', text, Base.Vector(-0.5*L,0,zEnd))
+ # Draw amin frame
+ amLine = Part.makeLine((0,-0.5*B,zStart),(0,-0.5*B,zEnd))
+ Part.show(amLine)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.amLine = objs[len(objs)-1]
+ self.amLine.Label = 'AminFrame'
+ text = str(QtGui.QApplication.translate("ship_create","Main frame",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.amLineLabel = DrawText('AMText', text, Base.Vector(0,-0.5*B,zEnd))
+
+ def clean(self):
+ """ Erase all annotations from screen.
+ """
+ if not self.baseLine:
+ return
+ FreeCAD.ActiveDocument.removeObject(self.baseLine.Name)
+ FreeCAD.ActiveDocument.removeObject(self.baseLineLabel.Name)
+ FreeCAD.ActiveDocument.removeObject(self.fsLine.Name)
+ FreeCAD.ActiveDocument.removeObject(self.fsLineLabel.Name)
+ FreeCAD.ActiveDocument.removeObject(self.fpLine.Name)
+ FreeCAD.ActiveDocument.removeObject(self.fpLineLabel.Name)
+ FreeCAD.ActiveDocument.removeObject(self.apLine.Name)
+ FreeCAD.ActiveDocument.removeObject(self.apLineLabel.Name)
+ FreeCAD.ActiveDocument.removeObject(self.amLine.Name)
+ FreeCAD.ActiveDocument.removeObject(self.amLineLabel.Name)
def DrawText(name, string, position, displayMode="Screen", angle=0.0, justification="Left", colour=(0.00,0.00,0.00), size=12):
- """ Draws a text in a desired position.
- @param name Name of the object
- @param string Text to draw (recommended format u'')
- @param position Point to draw the text
- @param angle Counter clockwise rotation of text
- @param justification Alignement of the text ("Left", "Right" or "Center")
- @param colour Colour of the text
- @param size Font size
- @return FreeCAD annotation object
- """
- # Create the object
- text = FreeCAD.ActiveDocument.addObject("App::Annotation",name)
- # Set the text
- text.LabelText = [string, u'']
- # Set the options
- text.Position = position
- FreeCADGui.ActiveDocument.getObject(text.Name).Rotation = angle
- FreeCADGui.ActiveDocument.getObject(text.Name).Justification = justification
- FreeCADGui.ActiveDocument.getObject(text.Name).FontSize = size
- FreeCADGui.ActiveDocument.getObject(text.Name).TextColor = colour
- FreeCADGui.ActiveDocument.getObject(text.Name).DisplayMode = displayMode
- return FreeCAD.ActiveDocument.getObject(text.Name)
+ """ Draws a text in a desired position.
+ @param name Name of the object
+ @param string Text to draw (recommended format u'')
+ @param position Point to draw the text
+ @param angle Counter clockwise rotation of text
+ @param justification Alignement of the text ("Left", "Right" or "Center")
+ @param colour Colour of the text
+ @param size Font size
+ @return FreeCAD annotation object
+ """
+ # Create the object
+ text = FreeCAD.ActiveDocument.addObject("App::Annotation",name)
+ # Set the text
+ text.LabelText = [string, u'']
+ # Set the options
+ text.Position = position
+ FreeCADGui.ActiveDocument.getObject(text.Name).Rotation = angle
+ FreeCADGui.ActiveDocument.getObject(text.Name).Justification = justification
+ FreeCADGui.ActiveDocument.getObject(text.Name).FontSize = size
+ FreeCADGui.ActiveDocument.getObject(text.Name).TextColor = colour
+ FreeCADGui.ActiveDocument.getObject(text.Name).DisplayMode = displayMode
+ return FreeCAD.ActiveDocument.getObject(text.Name)
diff --git a/src/Mod/Ship/shipCreateShip/TaskPanel.py b/src/Mod/Ship/shipCreateShip/TaskPanel.py
index de26764502..a92770759d 100644
--- a/src/Mod/Ship/shipCreateShip/TaskPanel.py
+++ b/src/Mod/Ship/shipCreateShip/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -29,192 +29,202 @@ from PyQt4 import QtGui,QtCore
# Module
import Preview
import Instance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/shipCreateShip/TaskPanel.ui"
- self.preview = Preview.Preview()
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/shipCreateShip/TaskPanel.ui"
+ self.preview = Preview.Preview()
- def accept(self):
- self.preview.clean()
- # Create new ship instance
- obj = App.ActiveDocument.addObject("Part::FeaturePython","Ship")
- ship = Instance.Ship(obj, self.solids)
- Instance.ViewProviderShip(obj.ViewObject)
- # Set main dimensions
- obj.Length = self.form.length.value()
- obj.Beam = self.form.beam.value()
- obj.Draft = self.form.draft.value()
- # Discretize it
- App.ActiveDocument.recompute()
- return True
+ def accept(self):
+ self.preview.clean()
+ # Create new ship instance
+ obj = App.ActiveDocument.addObject("Part::FeaturePython","Ship")
+ ship = Instance.Ship(obj, self.solids)
+ Instance.ViewProviderShip(obj.ViewObject)
+ # Set main dimensions
+ obj.Length = self.form.length.value()
+ obj.Beam = self.form.beam.value()
+ obj.Draft = self.form.draft.value()
+ # Discretize it
+ App.ActiveDocument.recompute()
+ return True
- def reject(self):
- self.preview.clean()
- return True
+ def reject(self):
+ self.preview.clean()
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.length = form.findChild(QtGui.QDoubleSpinBox, "Length")
- form.beam = form.findChild(QtGui.QDoubleSpinBox, "Beam")
- form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft")
- form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo")
- iconPath = Paths.iconsPath() + "/Ico.xpm"
- form.mainLogo.setPixmap(QtGui.QPixmap(iconPath))
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- self.preview.update(self.L, self.B, self.T)
- # Connect Signals and Slots
- QtCore.QObject.connect(form.length, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- QtCore.QObject.connect(form.beam, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.length = form.findChild(QtGui.QDoubleSpinBox, "Length")
+ form.beam = form.findChild(QtGui.QDoubleSpinBox, "Beam")
+ form.draft = form.findChild(QtGui.QDoubleSpinBox, "Draft")
+ form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo")
+ iconPath = Paths.iconsPath() + "/Ico.xpm"
+ form.mainLogo.setPixmap(QtGui.QPixmap(iconPath))
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ self.preview.update(self.L, self.B, self.T)
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.length, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ QtCore.QObject.connect(form.beam, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ QtCore.QObject.connect(form.draft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- # Get objects
- self.solids = None
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship objects can only be created on top of hull geometry (any object selected).\n")
- App.Console.PrintError(msg)
- msg = Translator.translate("Please create or load a ship hull geometry before using this tool.\n")
- App.Console.PrintError(msg)
- return True
- self.solids = []
- for i in range(0, len(selObjs)):
- solids = self.getSolids(selObjs[i])
- for j in range(0, len(solids)):
- self.solids.append(solids[j])
- if not self.solids:
- msg = Translator.translate("Ship objects can only be created on top of hull geometry (no solid found at selected objects).\n")
- App.Console.PrintError(msg)
- msg = Translator.translate("Please create or load a ship hull geometry before using this tool\n")
- App.Console.PrintError(msg)
- return True
- # Get bounds
- bounds = [0.0, 0.0, 0.0]
- bbox = self.solids[0].BoundBox
- minX = bbox.XMin
- maxX = bbox.XMax
- minY = bbox.YMin
- maxY = bbox.YMax
- minZ = bbox.ZMin
- maxZ = bbox.ZMax
- for i in range(1,len(self.solids)):
- bbox = self.solids[i].BoundBox
- if minX > bbox.XMin:
- minX = bbox.XMin
- if maxX < bbox.XMax:
- maxX = bbox.XMax
- if minY > bbox.YMin:
- minY = bbox.YMin
- if maxY < bbox.YMax:
- maxY = bbox.YMax
- if minZ > bbox.ZMin:
- minZ = bbox.ZMin
- if maxZ < bbox.ZMax:
- maxZ = bbox.ZMax
- bounds[0] = maxX - minX
- bounds[1] = max(maxY - minY, abs(maxY), abs(minY))
- bounds[2] = maxZ - minZ
- # Set UI fields
- self.form.length.setMaximum(bounds[0])
- self.form.length.setMinimum(0.001)
- self.form.length.setValue(bounds[0])
- self.L = bounds[0]
- self.form.beam.setMaximum(bounds[1])
- self.form.beam.setMinimum(0.001)
- self.form.beam.setValue(bounds[1])
- self.B = bounds[1]
- self.form.draft.setMaximum(bounds[2])
- self.form.draft.setMinimum(0.001)
- self.form.draft.setValue(0.5*bounds[2])
- self.T = 0.5*bounds[2]
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ # Get objects
+ self.solids = None
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship objects can only be created on top of hull geometry (any object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ msg = QtGui.QApplication.translate("ship_console",
+ "Please create or load a ship hull geometry before using this tool",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ self.solids = []
+ for i in range(0, len(selObjs)):
+ solids = self.getSolids(selObjs[i])
+ for j in range(0, len(solids)):
+ self.solids.append(solids[j])
+ if not self.solids:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship objects can only be created on top of hull geometry (no solid found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ msg = QtGui.QApplication.translate("ship_console",
+ "Please create or load a ship hull geometry before using this tool",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Get bounds
+ bounds = [0.0, 0.0, 0.0]
+ bbox = self.solids[0].BoundBox
+ minX = bbox.XMin
+ maxX = bbox.XMax
+ minY = bbox.YMin
+ maxY = bbox.YMax
+ minZ = bbox.ZMin
+ maxZ = bbox.ZMax
+ for i in range(1,len(self.solids)):
+ bbox = self.solids[i].BoundBox
+ if minX > bbox.XMin:
+ minX = bbox.XMin
+ if maxX < bbox.XMax:
+ maxX = bbox.XMax
+ if minY > bbox.YMin:
+ minY = bbox.YMin
+ if maxY < bbox.YMax:
+ maxY = bbox.YMax
+ if minZ > bbox.ZMin:
+ minZ = bbox.ZMin
+ if maxZ < bbox.ZMax:
+ maxZ = bbox.ZMax
+ bounds[0] = maxX - minX
+ bounds[1] = max(maxY - minY, abs(maxY), abs(minY))
+ bounds[2] = maxZ - minZ
+ # Set UI fields
+ self.form.length.setMaximum(bounds[0])
+ self.form.length.setMinimum(0.001)
+ self.form.length.setValue(bounds[0])
+ self.L = bounds[0]
+ self.form.beam.setMaximum(bounds[1])
+ self.form.beam.setMinimum(0.001)
+ self.form.beam.setValue(bounds[1])
+ self.B = bounds[1]
+ self.form.draft.setMaximum(bounds[2])
+ self.form.draft.setMinimum(0.001)
+ self.form.draft.setValue(0.5*bounds[2])
+ self.T = 0.5*bounds[2]
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Create a new ship"))
- self.form.findChild(QtGui.QLabel, "LengthLabel").setText(Translator.translate("Length"))
- self.form.findChild(QtGui.QLabel, "BeamLabel").setText(Translator.translate("Beam"))
- self.form.findChild(QtGui.QLabel, "DraftLabel").setText(Translator.translate("Draft"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("ship_create","Create a new ship",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "LengthLabel").setText(QtGui.QApplication.translate("ship_create","Length",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "BeamLabel").setText(QtGui.QApplication.translate("ship_create","Breadth",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "DraftLabel").setText(QtGui.QApplication.translate("ship_create","Draft",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onData(self, value):
- """ Method called when ship data is changed.
- Annotations must be showed.
- @param value Changed value.
- """
- self.L = self.form.length.value()
- self.B = self.form.beam.value()
- self.T = self.form.draft.value()
- self.preview.update(self.L, self.B, self.T)
+ def onData(self, value):
+ """ Method called when ship data is changed.
+ Annotations must be showed.
+ @param value Changed value.
+ """
+ self.L = self.form.length.value()
+ self.B = self.form.beam.value()
+ self.T = self.form.draft.value()
+ self.preview.update(self.L, self.B, self.T)
- def getSolids(self, obj):
- """ Returns object solids (list of them)
- @param obj Object to extract solids.
- @return Solids. None if errors happens
- """
- if not obj:
- return None
- if obj.isDerivedFrom('Part::Feature'):
- # get shape
- shape = obj.Shape
- if not shape:
- return None
- obj = shape
- if not obj.isDerivedFrom('Part::TopoShape'):
- return None
- # get face
- solids = obj.Solids
- if not solids:
- return None
- return solids
+ def getSolids(self, obj):
+ """ Returns object solids (list of them)
+ @param obj Object to extract solids.
+ @return Solids. None if errors happens
+ """
+ if not obj:
+ return None
+ if obj.isDerivedFrom('Part::Feature'):
+ # get shape
+ shape = obj.Shape
+ if not shape:
+ return None
+ obj = shape
+ if not obj.isDerivedFrom('Part::TopoShape'):
+ return None
+ # get face
+ solids = obj.Solids
+ if not solids:
+ return None
+ return solids
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/shipCreateShip/TaskPanel.ui b/src/Mod/Ship/shipCreateShip/TaskPanel.ui
index 5cd6a79b64..117e9324d8 100644
--- a/src/Mod/Ship/shipCreateShip/TaskPanel.ui
+++ b/src/Mod/Ship/shipCreateShip/TaskPanel.ui
@@ -68,126 +68,120 @@
false
-
-
-
- 0
- 20
- 241
- 141
-
-
-
-
- 6
-
-
- QLayout::SetDefaultConstraint
-
- -
-
-
- QLayout::SetDefaultConstraint
-
-
- 10
-
-
- 0
-
-
- 10
-
-
- 0
-
-
-
-
-
- Length
-
-
-
- -
-
-
- 3
-
-
- 0.010000000000000
-
-
-
-
-
- -
-
-
- 10
-
-
- 0
-
-
- 10
-
-
- 0
-
-
-
-
-
- Beam
-
-
-
- -
-
-
- 3
-
-
- 0.010000000000000
-
-
-
-
-
- -
-
-
- 10
-
-
- 0
-
-
- 10
-
-
- 0
-
-
-
-
-
- Draft
-
-
-
- -
-
-
- 3
-
-
- 0.010000000000000
-
-
-
-
-
-
-
+
+ -
+
+
+ 6
+
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ Length
+
+
+
+ -
+
+
+ 3
+
+
+ 0.010000000000000
+
+
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ Beam
+
+
+
+ -
+
+
+ 3
+
+
+ 0.010000000000000
+
+
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ Draft
+
+
+
+ -
+
+
+ 3
+
+
+ 0.010000000000000
+
+
+
+
+
+
+
+
diff --git a/src/Mod/Ship/shipCreateShip/__init__.py b/src/Mod/Ship/shipCreateShip/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/shipCreateShip/__init__.py
+++ b/src/Mod/Ship/shipCreateShip/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/shipHydrostatics/Plot.py b/src/Mod/Ship/shipHydrostatics/Plot.py
deleted file mode 100644
index d209bbf59d..0000000000
--- a/src/Mod/Ship/shipHydrostatics/Plot.py
+++ /dev/null
@@ -1,345 +0,0 @@
-#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
-#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
-#* License along with this program; if not, write to the Free Software *
-#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
-#***************************************************************************
-
-import os
-import math
-# FreeCAD modules
-import FreeCAD,FreeCADGui
-from FreeCAD import Base, Vector
-import Part, Image, ImageGui
-# FreeCADShip modules
-from shipUtils import Paths, Translator
-import Tools
-
-header = """ #################################################################
-
- ##### #### ### #### ##### # # ### ####
- # # # # # # # # # # # #
- # ## #### #### # # # # # # # # # # #
- #### # # # # # # # ##### # # ## ## ##### # ####
- # # #### #### # # # # # # # # # #
- # # # # # # # # # # # # # #
- # # #### #### ### # # #### ##### # # ### #
-
- #################################################################
-"""
-
-class Plot(object):
- def __init__(self, ship, trim, drafts):
- """ Constructor. performs plot and show it (Using pyxplot).
- @param ship Selected ship instance
- @param trim Trim in degrees.
- @param drafts List of drafts to be performed.
- """
- if self.createDirectory():
- return
- if self.saveData(ship, trim, drafts):
- return
- if self.saveLayout(trim):
- return
- if self.execute():
- return
- ImageGui.open(self.path + 'volume.png')
- ImageGui.open(self.path + 'stability.png')
- ImageGui.open(self.path + 'coeffs.png')
-
- def createDirectory(self):
- """ Create needed folder to write data and scripts.
- @return True if error happens.
- """
- self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
- if not os.path.exists(self.path):
- os.makedirs(self.path)
- if not os.path.exists(self.path):
- msg = Translator.translate("Can't create '" + self.path + "' folder.\n")
- FreeCAD.Console.PrintError(msg)
- return False
-
- def saveData(self, ship, trim, drafts):
- """ Write data file.
- @param ship Selected ship instance
- @param trim Trim in degrees.
- @param drafts List of drafts to be performed.
- @return True if error happens.
- """
- # Open the file
- filename = self.path + 'hydrostatics.dat'
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Print header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains transversal areas data, filled with following columns:\n")
- Output.write(" # 1: Ship displacement [ton]\n")
- Output.write(" # 2: Draft [m]\n")
- Output.write(" # 3: Wetted surface [m2]\n")
- Output.write(" # 4: 1cm triming ship moment [ton m]\n")
- Output.write(" # 5: Bouyance center x coordinate\n")
- Output.write(" # 6: Floating area\n")
- Output.write(" # 7: KBt\n")
- Output.write(" # 8: BMt\n")
- Output.write(" # 9: Cb (block coefficient)\n")
- Output.write(" # 10: Cf (Floating coefficient)\n")
- Output.write(" # 11: Cm (Main frame coefficient)\n")
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Get external faces
- faces = self.externalFaces(ship.Shape)
- if len(faces) == 0:
- msg = Translator.translate("Can't detect external faces from ship object.\n")
- FreeCAD.Console.PrintError(msg)
- else:
- faces = Part.makeShell(faces)
- # Print data
- FreeCAD.Console.PrintMessage("Computing hydrostatics...\n")
- for i in range(0,len(drafts)):
- FreeCAD.Console.PrintMessage("\t%d / %d\n" % (i+1, len(drafts)))
- draft = drafts[i]
- point = Tools.Point(ship,faces,draft,trim)
- string = "%f %f %f %f %f %f %f %f %f %f %f\n" % (point.disp, point.draft, point.wet, point.mom, point.xcb, point.farea, point.KBt, point.BMt, point.Cb, point.Cf, point.Cm)
- Output.write(string)
- # Close file
- Output.close()
- self.dataFile = filename
- msg = Translator.translate("Data saved at '" + self.dataFile + "'.\n")
- FreeCAD.Console.PrintMessage(msg)
- return False
-
- def saveLayout(self, trim):
- """ Prints the pyxplot layout.
- @param trim Trim in degrees.
- @return True if error happens.
- """
- filename = self.path + 'volume.pyxplot'
- # Open the file
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Write header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains a script to plot transversal areas curve.\n")
- Output.write(" # To use it execute:\n")
- Output.write(" #\n")
- Output.write(" # pyxplot %s\n" % (filename))
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Write general options for hydrostatics
- Output.write("set numeric display latex\n")
- Output.write("set output '%s'\n" % (self.path + 'volume.eps'))
- Output.write("set title '$trim$ = %g [degrees]'\n" % (trim))
- Output.write("set key below\n")
- Output.write("set grid\n")
- # Configure axis
- Output.write("# Y axis\n")
- Output.write("set ylabel '$\\bigtriangleup$ / $\\mathrm{ton}$'\n")
- Output.write("set ytic\n")
- Output.write("# X axis\n")
- Output.write("set xlabel '$Draft$ / $\\mathrm{m}$'\n")
- Output.write("set xtic\n")
- Output.write("set x2label '\\textit{Wetted area} / $\\mathrm{m}^2$'\n")
- Output.write("set x2tic\n")
- Output.write("set x3label '\\textit{1cm trim moment} / $\\mathrm{ton} \\times \\mathrm{m}$'\n")
- Output.write("set x3tic\n")
- Output.write("set x4label '$XCB$ / $\\mathrm{m}$'\n")
- Output.write("set x4tic\n")
- Output.write("set axis x2 top\n")
- Output.write("set axis x4 top\n")
- Output.write("# Line styles\n")
- Output.write("set style 1 line linetype 1 linewidth 1 colour rgb (0):(0):(0)\n")
- Output.write("set style 2 line linetype 1 linewidth 1 colour rgb (1):(0):(0)\n")
- Output.write("set style 3 line linetype 1 linewidth 1 colour rgb (0):(0):(1)\n")
- Output.write("set style 4 line linetype 1 linewidth 1 colour rgb (0.1):(0.5):(0.1)\n")
- # Write plot call
- Output.write("# Plot\n")
- Output.write("plot '%s' using 2:1 title 'Draft' axes x1y1 with lines style 1, \\\n" % (self.dataFile))
- Output.write(" '' using 3:1 title 'Wetted area' axes x2y1 with lines style 2, \\\n")
- Output.write(" '' using 4:1 title '1cm trim moment' axes x3y1 with lines style 3, \\\n")
- Output.write(" '' using 5:1 title 'XCB' axes x4y1 with lines style 4\n")
- # Prepare second plot
- Output.write("set output '%s'\n" % (self.path + 'stability.eps'))
- Output.write("# X axis\n")
- Output.write("set x2label '\\textit{Floating area} / $\\mathrm{m}^2$'\n")
- Output.write("set x2tic\n")
- Output.write("set x3label '$KB_{T}$ / $\\mathrm{m}$'\n")
- Output.write("set x3tic\n")
- Output.write("set x4label '$BM_{T}$ / $\\mathrm{m}$'\n")
- Output.write("set x4tic\n")
- # Write plot call
- Output.write("# Plot\n")
- Output.write("plot '%s' using 2:1 title 'Draft' axes x1y1 with lines style 1, \\\n" % (self.dataFile))
- Output.write(" '' using 6:1 title 'Floating area' axes x2y1 with lines style 2, \\\n")
- Output.write(" '' using 7:1 title '$KB_{T}$' axes x3y1 with lines style 3, \\\n")
- Output.write(" '' using 8:1 title '$BM_{T}$' axes x4y1 with lines style 4\n")
- # Prepare third plot
- Output.write("set output '%s'\n" % (self.path + 'coeffs.eps'))
- Output.write("# X axis\n")
- Output.write("set x2label '$C_{B}$'\n")
- Output.write("set x2tic\n")
- Output.write("set x3label '$C_{F}$'\n")
- Output.write("set x3tic\n")
- Output.write("set x4label '$C_{M}$'\n")
- Output.write("set x4tic\n")
- # Write plot call
- Output.write("# Plot\n")
- Output.write("plot '%s' using 2:1 title 'Draft' axes x1y1 with lines style 1, \\\n" % (self.dataFile))
- Output.write(" '' using 9:1 title '$C_{B}$' axes x2y1 with lines style 2, \\\n")
- Output.write(" '' using 10:1 title '$C_{F}$' axes x3y1 with lines style 3, \\\n")
- Output.write(" '' using 11:1 title '$C_{M}$' axes x4y1 with lines style 4\n")
- # Close file
- self.layoutFile = filename
- Output.close()
- return False
-
- def execute(self):
- """ Calls pyxplot in order to plot an save an image.
- @return True if error happens.
- """
- # Plot
- filename = self.path + 'volume'
- comm = "pyxplot %s" % (self.layoutFile)
- if os.system(comm):
- msg = Translator.translate("Can't execute pyxplot. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Plot will not generated\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Convert volume image
- comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename)
- if os.system(comm):
- msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Generated image will not converted to png\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Convert stability image
- filename = self.path + 'stability'
- comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename)
- if os.system(comm):
- msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Generated image will not converted to png\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Convert coefficients image
- filename = self.path + 'coeffs'
- comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename)
- if os.system(comm):
- msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Generated image will not converted to png\n")
- FreeCAD.Console.PrintError(msg)
- return True
- return False
-
- def lineFaceSection(self,line,surface):
- """ Returns the point of section of a line with a face
- @param line Line object, that can be a curve.
- @param surface Surface object (must be a Part::Shape)
- @return Section points array, [] if line don't cut surface
- """
- # Get initial data
- result = []
- vertexes = line.Vertexes
- nVertex = len(vertexes)
- # Perform the cut
- section = line.cut(surface)
- # Filter all old points
- points = section.Vertexes
- return points
-
- def externalFaces(self, shape):
- """ Returns detected external faces.
- @param shape Shape where external faces wanted.
- @return List of external faces detected.
- """
- result = []
- faces = shape.Faces
- bbox = shape.BoundBox
- L = bbox.XMax - bbox.XMin
- B = bbox.YMax - bbox.YMin
- T = bbox.ZMax - bbox.ZMin
- dist = math.sqrt(L*L + B*B + T*T)
- FreeCAD.Console.PrintMessage("Computing external faces...\n")
- # Valid/unvalid faces detection loop
- for i in range(0,len(faces)):
- FreeCAD.Console.PrintMessage("\t%d / %d\n" % (i+1, len(faces)))
- f = faces[i]
- # Create a line normal to surface at middle point
- u = 0.0
- v = 0.0
- try:
- surf = f.Surface
- u = 0.5*(surf.getUKnots()[0]+surf.getUKnots()[-1])
- v = 0.5*(surf.getVKnots()[0]+surf.getVKnots()[-1])
- except:
- cog = f.CenterOfMass
- [u,v] = f.Surface.parameter(cog)
- p0 = f.valueAt(u,v)
- try:
- n = f.normalAt(u,v).normalize()
- except:
- continue
- p1 = p0 + n.multiply(1.5*dist)
- line = Part.makeLine(p0, p1)
- # Look for faces in front of this
- nPoints = 0
- for j in range(0,len(faces)):
- f2 = faces[j]
- section = self.lineFaceSection(line, f2)
- if len(section) <= 2:
- continue
- # Add points discarding start and end
- nPoints = nPoints + len(section) - 2
- # In order to avoid special directions we can modify line
- # normal a little bit.
- angle = 5
- line.rotate(p0,Vector(1,0,0),angle)
- line.rotate(p0,Vector(0,1,0),angle)
- line.rotate(p0,Vector(0,0,1),angle)
- nPoints2 = 0
- for j in range(0,len(faces)):
- if i == j:
- continue
- f2 = faces[j]
- section = self.lineFaceSection(line, f2)
- if len(section) <= 2:
- continue
- # Add points discarding start and end
- nPoints2 = nPoints + len(section) - 2
- # If the number of intersection points is pair, is a
- # external face. So if we found an odd points intersection,
- # face must be discarded.
- if (nPoints % 2) or (nPoints2 % 2):
- continue
- result.append(f)
- return result
diff --git a/src/Mod/Ship/shipHydrostatics/PlotAux.py b/src/Mod/Ship/shipHydrostatics/PlotAux.py
new file mode 100644
index 0000000000..316bed13e6
--- /dev/null
+++ b/src/Mod/Ship/shipHydrostatics/PlotAux.py
@@ -0,0 +1,478 @@
+#***************************************************************************
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
+#* This program is free software; you can redistribute it and/or modify *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
+#* License along with this program; if not, write to the Free Software *
+#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
+#* USA *
+#* *
+#***************************************************************************
+
+import os
+import math
+# Qt library
+from PyQt4 import QtGui,QtCore
+# FreeCAD modules
+import FreeCAD,FreeCADGui
+from FreeCAD import Base, Vector
+import Part, Image, ImageGui
+# FreeCADShip modules
+from shipUtils import Paths
+import Tools
+
+header = """ #################################################################
+
+ ##### #### ### #### ##### # # ### ####
+ # # # # # # # # # # # #
+ # ## #### #### # # # # # # # # # # #
+ #### # # # # # # # ##### # # ## ## ##### # ####
+ # # #### #### # # # # # # # # # #
+ # # # # # # # # # # # # # #
+ # # #### #### ### # # #### ##### # # ### #
+
+ #################################################################
+"""
+
+class Plot(object):
+ def __init__(self, ship, trim, drafts):
+ """ Constructor. performs plot and show it (Using pyxplot).
+ @param ship Selected ship instance
+ @param trim Trim in degrees.
+ @param drafts List of drafts to be performed.
+ """
+ # Compute data
+ # Get external faces
+ faces = self.externalFaces(ship.Shape)
+ if len(faces) == 0:
+ msg = QtGui.QApplication.translate("ship_console", "Can't detect external faces from ship object",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + '\n')
+ return
+ else:
+ faces = Part.makeShell(faces)
+ # Print data
+ msg = QtGui.QApplication.translate("ship_console", "Computing hydrostatics",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '...\n')
+ self.points = []
+ for i in range(0,len(drafts)):
+ FreeCAD.Console.PrintMessage("\t%d / %d\n" % (i+1, len(drafts)))
+ draft = drafts[i]
+ point = Tools.Point(ship,faces,draft,trim)
+ self.points.append(point)
+ # Try to plot
+ self.plotVolume()
+ self.plotStability()
+ self.plotCoeffs()
+ # Save data
+ if self.createDirectory():
+ return
+ if self.saveData(ship, trim, drafts):
+ return
+
+ def plotVolume(self):
+ """ Perform volumetric hydrostatics.
+ @return True if error happens.
+ """
+ # Create plot
+ try:
+ import Plot
+ plt = Plot.figure('Volume')
+ except ImportError:
+ msg = QtGui.QApplication.translate("ship_console", "Plot module is disabled, can't perform plot",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintWarning(msg + '\n')
+ return True
+ # Generate sets of axes
+ Plot.grid(True)
+ for i in range(0,3):
+ ax = Plot.addNewAxes()
+ # Y axes can be moved to right
+ ax.yaxis.tick_right()
+ ax.spines['right'].set_color((0.0,0.0,0.0))
+ ax.spines['left'].set_color('none')
+ ax.yaxis.set_ticks_position('right')
+ ax.yaxis.set_label_position('right')
+ # And X axes moved down with an offset
+ for loc, spine in ax.spines.iteritems():
+ if loc in ['bottom', 'top']:
+ spine.set_position(('outward',(i+1)*35))
+ Plot.grid(True)
+ # Setup data
+ disp = []
+ draft = []
+ warea = []
+ t1cm = []
+ xcb = []
+ for i in range(0,len(self.points)):
+ disp.append(self.points[i].disp)
+ draft.append(self.points[i].draft)
+ warea.append(self.points[i].wet)
+ t1cm.append(self.points[i].mom)
+ xcb.append(self.points[i].xcb)
+ # Set plot size
+ axes = Plot.axesList()
+ for ax in axes:
+ ax.set_position([0.1, 0.2, 0.8, 0.75])
+ # Plot curves
+ plt.axes = axes[0]
+ serie = Plot.plot(draft,disp,r'$T$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,0.0))
+ Plot.xlabel(r'$T \; \mathrm{m}$')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[1]
+ serie = Plot.plot(warea,disp,r'Wetted area')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((1.0,0.0,0.0))
+ Plot.xlabel(r'$Wetted \; area \; \mathrm{m}^2$')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[2]
+ serie = Plot.plot(t1cm,disp,r'Moment to trim 1cm')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,1.0))
+ Plot.xlabel(r'$Moment \; to \; trim \; 1 \mathrm{cm} \; \mathrm{tons} \; \times \; \mathrm{m}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[3]
+ serie = Plot.plot(xcb,disp,r'$XCB$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.2,0.8,0.2))
+ Plot.xlabel(r'$XCB \; \mathrm{m}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ # Show legend
+ Plot.legend(True)
+ # End
+ plt.update()
+ return False
+
+ def plotStability(self):
+ """ Perform stability hydrostatics.
+ @return True if error happens.
+ """
+ # Create plot
+ try:
+ import Plot
+ plt = Plot.figure('Stability')
+ except ImportError:
+ return True
+ # Generate sets of axes
+ Plot.grid(True)
+ for i in range(0,3):
+ ax = Plot.addNewAxes()
+ # Y axes can be moved to right
+ ax.yaxis.tick_right()
+ ax.spines['right'].set_color((0.0,0.0,0.0))
+ ax.spines['left'].set_color('none')
+ ax.yaxis.set_ticks_position('right')
+ ax.yaxis.set_label_position('right')
+ # And X axes moved down with an offset
+ for loc, spine in ax.spines.iteritems():
+ if loc in ['bottom', 'top']:
+ spine.set_position(('outward',(i+1)*35))
+ Plot.grid(True)
+ # Setup data
+ disp = []
+ draft = []
+ farea = []
+ kbt = []
+ bmt = []
+ for i in range(0,len(self.points)):
+ disp.append(self.points[i].disp)
+ draft.append(self.points[i].draft)
+ farea.append(self.points[i].farea)
+ kbt.append(self.points[i].KBt)
+ bmt.append(self.points[i].BMt)
+ # Set plot size
+ axes = Plot.axesList()
+ for ax in axes:
+ ax.set_position([0.1, 0.2, 0.8, 0.75])
+ # Plot curves
+ plt.axes = axes[0]
+ serie = Plot.plot(draft,disp,r'$T$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,0.0))
+ Plot.xlabel(r'$T \; \mathrm{m}$')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[1]
+ serie = Plot.plot(farea,disp,r'Floating area')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((1.0,0.0,0.0))
+ Plot.xlabel(r'$Floating \; area \; \mathrm{m}^2$')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[2]
+ serie = Plot.plot(kbt,disp,r'$KB_T$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,1.0))
+ Plot.xlabel(r'$KB_T \; \mathrm{m}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[3]
+ serie = Plot.plot(bmt,disp,r'$BM_T$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.2,0.8,0.2))
+ Plot.xlabel(r'$BM_T \; \mathrm{m}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ # Show legend
+ Plot.legend(True)
+ # End
+ plt.update()
+ return False
+
+ def plotCoeffs(self):
+ """ Perform stability hydrostatics.
+ @return True if error happens.
+ """
+ # Create plot
+ try:
+ import Plot
+ plt = Plot.figure('Coefficients')
+ except ImportError:
+ return True
+ # Generate sets of axes
+ Plot.grid(True)
+ for i in range(0,3):
+ ax = Plot.addNewAxes()
+ # Y axes can be moved to right
+ ax.yaxis.tick_right()
+ ax.spines['right'].set_color((0.0,0.0,0.0))
+ ax.spines['left'].set_color('none')
+ ax.yaxis.set_ticks_position('right')
+ ax.yaxis.set_label_position('right')
+ # And X axes moved down with an offset
+ for loc, spine in ax.spines.iteritems():
+ if loc in ['bottom', 'top']:
+ spine.set_position(('outward',(i+1)*40))
+ Plot.grid(True)
+ # Setup data
+ disp = []
+ draft = []
+ cb = []
+ cf = []
+ cm = []
+ for i in range(0,len(self.points)):
+ disp.append(self.points[i].disp)
+ draft.append(self.points[i].draft)
+ cb.append(self.points[i].Cb)
+ cf.append(self.points[i].Cf)
+ cm.append(self.points[i].Cm)
+ # Set plot size
+ axes = Plot.axesList()
+ for ax in axes:
+ ax.set_position([0.1, 0.2, 0.8, 0.75])
+ # Plot curves
+ plt.axes = axes[0]
+ serie = Plot.plot(draft,disp,r'$T$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,0.0))
+ Plot.xlabel(r'$T \; \mathrm{m}$')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[1]
+ serie = Plot.plot(cb,disp,r'$Cb$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((1.0,0.0,0.0))
+ Plot.xlabel(r'$Cb$ (Block coefficient)')
+ Plot.ylabel(r'$\bigtriangleup \; \mathrm{tons}$')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[2]
+ serie = Plot.plot(cf,disp,r'$Cf$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.0,0.0,1.0))
+ Plot.xlabel(r'$Cf$ (floating area coefficient)')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ plt.axes = axes[3]
+ serie = Plot.plot(cm,disp,r'$Cm$')
+ serie.line.set_linestyle('-')
+ serie.line.set_linewidth(2.0)
+ serie.line.set_color((0.2,0.8,0.2))
+ Plot.xlabel(r'$Cm$ (Main section coefficient)')
+ plt.axes.xaxis.label.set_fontsize(15)
+ plt.axes.yaxis.label.set_fontsize(15)
+ # Show legend
+ Plot.legend(True)
+ # End
+ plt.update()
+ return False
+
+ def createDirectory(self):
+ """ Create needed folder to write data and scripts.
+ @return True if error happens.
+ """
+ self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
+ if not os.path.exists(self.path):
+ os.makedirs(self.path)
+ if not os.path.exists(self.path):
+ msg = QtGui.QApplication.translate("ship_console", "Can't create folder",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ self.path + "\'\n")
+ return False
+
+ def saveData(self, ship, trim, drafts):
+ """ Write data file.
+ @param ship Selected ship instance
+ @param trim Trim in degrees.
+ @param drafts List of drafts to be performed.
+ @return True if error happens.
+ """
+ # Open the file
+ filename = self.path + 'hydrostatics.dat'
+ try:
+ Output = open(filename, "w")
+ except IOError:
+ msg = QtGui.QApplication.translate("ship_console", "Can't write to file",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ filename + "\'\n")
+ return True
+ # Print header
+ Output.write(header)
+ Output.write(" #\n")
+ Output.write(" # File automatically exported by FreeCAD-Ship\n")
+ Output.write(" # This file contains transversal areas data, filled with following columns:\n")
+ Output.write(" # 1: Ship displacement [ton]\n")
+ Output.write(" # 2: Draft [m]\n")
+ Output.write(" # 3: Wetted surface [m2]\n")
+ Output.write(" # 4: 1cm triming ship moment [ton m]\n")
+ Output.write(" # 5: Bouyance center x coordinate\n")
+ Output.write(" # 6: Floating area\n")
+ Output.write(" # 7: KBt\n")
+ Output.write(" # 8: BMt\n")
+ Output.write(" # 9: Cb (block coefficient)\n")
+ Output.write(" # 10: Cf (Floating coefficient)\n")
+ Output.write(" # 11: Cm (Main frame coefficient)\n")
+ Output.write(" #\n")
+ Output.write(" #################################################################\n")
+ # Print data
+ for i in range(0,len(drafts)):
+ point = self.points[i]
+ string = "%f %f %f %f %f %f %f %f %f %f %f\n" % (point.disp, point.draft, point.wet, point.mom, point.xcb, point.farea, point.KBt, point.BMt, point.Cb, point.Cf, point.Cm)
+ Output.write(string)
+ # Close file
+ Output.close()
+ self.dataFile = filename
+ msg = QtGui.QApplication.translate("ship_console", "Data saved",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + ':\n\t' + "\'"+ self.dataFile + "\'\n")
+ return False
+
+ def lineFaceSection(self,line,surface):
+ """ Returns the point of section of a line with a face
+ @param line Line object, that can be a curve.
+ @param surface Surface object (must be a Part::Shape)
+ @return Section points array, [] if line don't cut surface
+ """
+ # Get initial data
+ result = []
+ vertexes = line.Vertexes
+ nVertex = len(vertexes)
+ # Perform the cut
+ section = line.cut(surface)
+ # Filter all old points
+ points = section.Vertexes
+ return points
+
+ def externalFaces(self, shape):
+ """ Returns detected external faces.
+ @param shape Shape where external faces wanted.
+ @return List of external faces detected.
+ """
+ result = []
+ faces = shape.Faces
+ bbox = shape.BoundBox
+ L = bbox.XMax - bbox.XMin
+ B = bbox.YMax - bbox.YMin
+ T = bbox.ZMax - bbox.ZMin
+ dist = math.sqrt(L*L + B*B + T*T)
+ msg = QtGui.QApplication.translate("ship_console", "Computing external faces",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '...\n')
+ # Valid/unvalid faces detection loop
+ for i in range(0,len(faces)):
+ FreeCAD.Console.PrintMessage("\t%d / %d\n" % (i+1, len(faces)))
+ f = faces[i]
+ # Create a line normal to surface at middle point
+ u = 0.0
+ v = 0.0
+ try:
+ surf = f.Surface
+ u = 0.5*(surf.getUKnots()[0]+surf.getUKnots()[-1])
+ v = 0.5*(surf.getVKnots()[0]+surf.getVKnots()[-1])
+ except:
+ cog = f.CenterOfMass
+ [u,v] = f.Surface.parameter(cog)
+ p0 = f.valueAt(u,v)
+ try:
+ n = f.normalAt(u,v).normalize()
+ except:
+ continue
+ p1 = p0 + n.multiply(1.5*dist)
+ line = Part.makeLine(p0, p1)
+ # Look for faces in front of this
+ nPoints = 0
+ for j in range(0,len(faces)):
+ f2 = faces[j]
+ section = self.lineFaceSection(line, f2)
+ if len(section) <= 2:
+ continue
+ # Add points discarding start and end
+ nPoints = nPoints + len(section) - 2
+ # In order to avoid special directions we can modify line
+ # normal a little bit.
+ angle = 5
+ line.rotate(p0,Vector(1,0,0),angle)
+ line.rotate(p0,Vector(0,1,0),angle)
+ line.rotate(p0,Vector(0,0,1),angle)
+ nPoints2 = 0
+ for j in range(0,len(faces)):
+ if i == j:
+ continue
+ f2 = faces[j]
+ section = self.lineFaceSection(line, f2)
+ if len(section) <= 2:
+ continue
+ # Add points discarding start and end
+ nPoints2 = nPoints + len(section) - 2
+ # If the number of intersection points is pair, is a
+ # external face. So if we found an odd points intersection,
+ # face must be discarded.
+ if (nPoints % 2) or (nPoints2 % 2):
+ continue
+ result.append(f)
+ return result
diff --git a/src/Mod/Ship/shipHydrostatics/TaskPanel.py b/src/Mod/Ship/shipHydrostatics/TaskPanel.py
index b5398690eb..bc5e2d967f 100644
--- a/src/Mod/Ship/shipHydrostatics/TaskPanel.py
+++ b/src/Mod/Ship/shipHydrostatics/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import math
@@ -28,202 +28,217 @@ import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
-import Plot
+import PlotAux
import Instance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
import Tools
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/shipHydrostatics/TaskPanel.ui"
- self.ship = None
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/shipHydrostatics/TaskPanel.ui"
+ self.ship = None
- def accept(self):
- if not self.ship:
- return False
- self.save()
- draft = self.form.minDraft.value()
- drafts = [draft]
- dDraft = (self.form.maxDraft.value() - self.form.minDraft.value())/(self.form.nDraft.value()-1)
- for i in range(1,self.form.nDraft.value()):
- draft = draft + dDraft
- drafts.append(draft)
- Plot.Plot(self.ship, self.form.trim.value(), drafts)
- return True
+ def accept(self):
+ if not self.ship:
+ return False
+ self.save()
+ draft = self.form.minDraft.value()
+ drafts = [draft]
+ dDraft = (self.form.maxDraft.value() - self.form.minDraft.value())/(self.form.nDraft.value()-1)
+ for i in range(1,self.form.nDraft.value()):
+ draft = draft + dDraft
+ drafts.append(draft)
+ PlotAux.Plot(self.ship, self.form.trim.value(), drafts)
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
- form.minDraft = form.findChild(QtGui.QDoubleSpinBox, "MinDraft")
- form.maxDraft = form.findChild(QtGui.QDoubleSpinBox, "MaxDraft")
- form.nDraft = form.findChild(QtGui.QSpinBox, "NDraft")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.trim, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- QtCore.QObject.connect(form.minDraft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- QtCore.QObject.connect(form.maxDraft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
+ form.minDraft = form.findChild(QtGui.QDoubleSpinBox, "MinDraft")
+ form.maxDraft = form.findChild(QtGui.QDoubleSpinBox, "MaxDraft")
+ form.nDraft = form.findChild(QtGui.QSpinBox, "NDraft")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.trim, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ QtCore.QObject.connect(form.minDraft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ QtCore.QObject.connect(form.maxDraft, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- # Get objects
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- continue
- if obj.IsShip:
- # Test if another ship already selected
- if self.ship:
- msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.ship = obj
- # Test if any valid ship was selected
- if not self.ship:
- msg = Translator.translate("Ship instance must be selected (no valid ship found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- # Get bounds
- bbox = self.ship.Shape.BoundBox
- # Set trim
- flag = True
- try:
- props.index("HydrostaticsTrim")
- except ValueError:
- flag = False
- if flag:
- self.form.trim.setValue(self.ship.HydrostaticsTrim)
- # Set drafts
- self.form.maxDraft.setValue(1.1*self.ship.Draft)
- self.form.minDraft.setValue(0.9*self.ship.Draft)
- # Try to use saved values
- props = self.ship.PropertiesList
- flag = True
- try:
- props.index("HydrostaticsMinDraft")
- except ValueError:
- flag = False
- if flag:
- self.form.minDraft.setValue(self.ship.HydrostaticsMinDraft)
- flag = True
- try:
- props.index("HydrostaticsMaxDraft")
- except ValueError:
- flag = False
- if flag:
- self.form.maxDraft.setValue(self.ship.HydrostaticsMaxDraft)
- self.form.maxDraft.setMaximum(bbox.ZMax)
- self.form.minDraft.setMinimum(bbox.ZMin)
- self.form.maxDraft.setMinimum(self.form.minDraft.value())
- self.form.minDraft.setMaximum(self.form.maxDraft.value())
- flag = True
- try:
- props.index("HydrostaticsNDraft")
- except ValueError:
- flag = False
- if flag:
- self.form.nDraft.setValue(self.ship.HydrostaticsNDraft)
- # Update GUI
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ # Get objects
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console", "Ship instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ continue
+ if obj.IsShip:
+ # Test if another ship already selected
+ if self.ship:
+ msg = QtGui.QApplication.translate("ship_console", "More than one ship selected (extra ships will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.ship = obj
+ # Test if any valid ship was selected
+ if not self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no valid ship found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Get bounds
+ bbox = self.ship.Shape.BoundBox
+ # Set trim
+ flag = True
+ try:
+ props.index("HydrostaticsTrim")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.trim.setValue(self.ship.HydrostaticsTrim)
+ # Set drafts
+ self.form.maxDraft.setValue(1.1*self.ship.Draft)
+ self.form.minDraft.setValue(0.9*self.ship.Draft)
+ # Try to use saved values
+ props = self.ship.PropertiesList
+ flag = True
+ try:
+ props.index("HydrostaticsMinDraft")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.minDraft.setValue(self.ship.HydrostaticsMinDraft)
+ flag = True
+ try:
+ props.index("HydrostaticsMaxDraft")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.maxDraft.setValue(self.ship.HydrostaticsMaxDraft)
+ self.form.maxDraft.setMaximum(bbox.ZMax)
+ self.form.minDraft.setMinimum(bbox.ZMin)
+ self.form.maxDraft.setMinimum(self.form.minDraft.value())
+ self.form.minDraft.setMaximum(self.form.maxDraft.value())
+ flag = True
+ try:
+ props.index("HydrostaticsNDraft")
+ except ValueError:
+ flag = False
+ if flag:
+ self.form.nDraft.setValue(self.ship.HydrostaticsNDraft)
+ # Update GUI
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Plot hydrostatics"))
- self.form.findChild(QtGui.QLabel, "TrimLabel").setText(Translator.translate("Trim"))
- self.form.findChild(QtGui.QLabel, "MinDraftLabel").setText(Translator.translate("Minimum draft"))
- self.form.findChild(QtGui.QLabel, "MaxDraftLabel").setText(Translator.translate("Maximum draft"))
- self.form.findChild(QtGui.QLabel, "NDraftLabel").setText(Translator.translate("Number of points"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("ship_hydrostatic","Plot hydrostatics",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "TrimLabel").setText(QtGui.QApplication.translate("ship_hydrostatic","Trim",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "MinDraftLabel").setText(QtGui.QApplication.translate("ship_hydrostatic","Minimum draft",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "MaxDraftLabel").setText(QtGui.QApplication.translate("ship_hydrostatic","Maximum draft",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "NDraftLabel").setText(QtGui.QApplication.translate("ship_hydrostatic","Number of points",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onData(self, value):
- """ Method called when input data is changed.
- @param value Changed value.
- """
- if not self.ship:
- return
- self.form.maxDraft.setMinimum(self.form.minDraft.value())
- self.form.minDraft.setMaximum(self.form.maxDraft.value())
+ def onData(self, value):
+ """ Method called when input data is changed.
+ @param value Changed value.
+ """
+ if not self.ship:
+ return
+ self.form.maxDraft.setMinimum(self.form.minDraft.value())
+ self.form.minDraft.setMaximum(self.form.maxDraft.value())
- def save(self):
- """ Saves data into ship instance.
- """
- props = self.ship.PropertiesList
- try:
- props.index("HydrostaticsTrim")
- except ValueError:
- self.ship.addProperty("App::PropertyFloat","HydrostaticsTrim","Ship", str(Translator.translate("Hydrostatics trim selected [m]")))
- self.ship.HydrostaticsTrim = self.form.trim.value()
- try:
- props.index("HydrostaticsMinDraft")
- except ValueError:
- self.ship.addProperty("App::PropertyFloat","HydrostaticsMinDraft","Ship", str(Translator.translate("Hydrostatics minimum draft selected [m]")))
- self.ship.HydrostaticsMinDraft = self.form.minDraft.value()
- try:
- props.index("HydrostaticsMaxDraft")
- except ValueError:
- self.ship.addProperty("App::PropertyFloat","HydrostaticsMaxDraft","Ship", str(Translator.translate("Hydrostatics maximum draft selected [m]")))
- self.ship.HydrostaticsMaxDraft = self.form.maxDraft.value()
- try:
- props.index("HydrostaticsNDraft")
- except ValueError:
- self.ship.addProperty("App::PropertyInteger","HydrostaticsNDraft","Ship", str(Translator.translate("Hydrostatics number of points selected [m]")))
- self.ship.HydrostaticsNDraft = self.form.nDraft.value()
+ def save(self):
+ """ Saves data into ship instance.
+ """
+ props = self.ship.PropertiesList
+ try:
+ props.index("HydrostaticsTrim")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_hydrostatic","Hydrostatics tool trim selected",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloat","HydrostaticsTrim","Ship", tooltip)
+ self.ship.HydrostaticsTrim = self.form.trim.value()
+ try:
+ props.index("HydrostaticsMinDraft")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_hydrostatic","Hydrostatics tool minimum draft selected [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloat","HydrostaticsMinDraft","Ship", tooltip)
+ self.ship.HydrostaticsMinDraft = self.form.minDraft.value()
+ try:
+ props.index("HydrostaticsMaxDraft")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_hydrostatic","Hydrostatics tool maximum draft selected [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloat","HydrostaticsMaxDraft","Ship", tooltip)
+ self.ship.HydrostaticsMaxDraft = self.form.maxDraft.value()
+ try:
+ props.index("HydrostaticsNDraft")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_hydrostatic","Hydrostatics tool number of points selected",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyInteger","HydrostaticsNDraft","Ship", tooltip)
+ self.ship.HydrostaticsNDraft = self.form.nDraft.value()
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/shipHydrostatics/TaskPanel.ui b/src/Mod/Ship/shipHydrostatics/TaskPanel.ui
index 23367df691..8542a7ab1f 100644
--- a/src/Mod/Ship/shipHydrostatics/TaskPanel.ui
+++ b/src/Mod/Ship/shipHydrostatics/TaskPanel.ui
@@ -17,7 +17,7 @@
- Create new ship
+ Plot Hydrostatics
-
@@ -25,7 +25,7 @@
-
-
+
0
0
@@ -53,9 +53,15 @@
-
+
+
+ 0
+ 0
+
+
- 24
+ 16777215
16777215
@@ -77,131 +83,125 @@
Drafts
-
-
-
- 9
- 19
- 231
- 181
-
-
-
-
- QLayout::SetDefaultConstraint
-
-
-
-
-
-
- 0
- 0
-
-
-
- Minimum draft
-
-
-
- -
-
-
- 3
-
-
- 0.010000000000000
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Maximum draft
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 3
-
-
- 0.010000000000000
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- Number of points
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- m
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- m
-
-
-
- -
-
-
-
- 0
- 0
-
-
-
- 2
-
-
- 9999
-
-
- 11
-
-
-
-
-
+
+ -
+
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+ m
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Number of points
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Minimum draft
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ m
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 2
+
+
+ 9999
+
+
+ 11
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ 3
+
+
+ 0.010000000000000
+
+
+
+ -
+
+
+ 3
+
+
+ 0.010000000000000
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+ Maximum draft
+
+
+
+
+
+
diff --git a/src/Mod/Ship/shipHydrostatics/Tools.py b/src/Mod/Ship/shipHydrostatics/Tools.py
index a42c9b774b..8e4faab288 100644
--- a/src/Mod/Ship/shipHydrostatics/Tools.py
+++ b/src/Mod/Ship/shipHydrostatics/Tools.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import math
@@ -32,393 +32,393 @@ import Instance
from shipUtils import Math
def areas(ship, draft, roll=0.0, trim=0.0, yaw=0.0, n=30):
- """ Compute ship transversal areas.
- @param ship Ship instance.
- @param draft Ship draft.
- @param roll Ship roll angle.
- @param trim Ship trim angle.
- @param yaw Ship yaw angle. Ussually you don't want to use this
- value.
- @param n Number of sections to perform.
- @return Transversal areas (every area value is composed by x
- coordinate and computed area)
- """
- if n < 2:
- return []
- # We will take a duplicate of ship shape in order to place it
- shape = ship.Shape.copy()
- shape.translate(Vector(0.0,0.0,-draft))
- # Rotations composition is Roll->Trim->Yaw
- shape.rotate(Vector(0.0,0.0,0.0), Vector(1.0,0.0,0.0), roll)
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,0.0,1.0), yaw)
- # Now we need to know the x range of values
- bbox = shape.BoundBox
- xmin = bbox.XMin
- xmax = bbox.XMax
- dx = (xmax - xmin) / (n-1.0)
- # First area is equal to zero.
- areas = [[xmin, 0.0]]
- # Since we need face entities, in order to compute sections we will
- # create boxes with front face at transversal area position,
- # compute solid common, divide by faces, and preserve only desired
- # ones.
- App.Console.PrintMessage("Computing transversal areas...\n")
- App.Console.PrintMessage("Some Inventor representation errors can be shown, ignore it please.\n")
- for i in range(1,n-1):
- App.Console.PrintMessage("%d / %d\n" % (i, n-2))
- x = xmin + i*dx
- area = 0.0
- # Create the box
- L = xmax - xmin
- B = bbox.YMax - bbox.YMin
- p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
- box = Part.makeBox(1.5*L + x, 3.0*B, - bbox.ZMin + 1.0, p)
- # Compute common part with ship
- for s in shape.Solids:
- # Get solids intersection
- try:
- common = box.common(s)
- except:
- continue
- if common.Volume == 0.0:
- continue
- # Recompute object adding it to the scene, when we have
- # computed desired data we can remove it.
- try:
- Part.show(common)
- except:
- continue
- # Divide by faces and compute only section placed ones
- faces = common.Faces
- for f in faces:
- faceBounds = f.BoundBox
- # Orientation filter
- if faceBounds.XMax - faceBounds.XMin > 0.00001:
- continue
- # Place filter
- if abs(faceBounds.XMax - x) > 0.00001:
- continue
- # Valid face, compute area
- area = area + f.Area
- # Destroy last object generated
- App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
- # Append transversal area
- areas.append([x, area])
- # Last area is equal to zero
- areas.append([xmax, 0.0])
- App.Console.PrintMessage("Done!\n")
- return areas
+ """ Compute ship transversal areas.
+ @param ship Ship instance.
+ @param draft Ship draft.
+ @param roll Ship roll angle.
+ @param trim Ship trim angle.
+ @param yaw Ship yaw angle. Ussually you don't want to use this
+ value.
+ @param n Number of sections to perform.
+ @return Transversal areas (every area value is composed by x
+ coordinate and computed area)
+ """
+ if n < 2:
+ return []
+ # We will take a duplicate of ship shape in order to place it
+ shape = ship.Shape.copy()
+ shape.translate(Vector(0.0,0.0,-draft))
+ # Rotations composition is Roll->Trim->Yaw
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(1.0,0.0,0.0), roll)
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,0.0,1.0), yaw)
+ # Now we need to know the x range of values
+ bbox = shape.BoundBox
+ xmin = bbox.XMin
+ xmax = bbox.XMax
+ dx = (xmax - xmin) / (n-1.0)
+ # First area is equal to zero.
+ areas = [[xmin, 0.0]]
+ # Since we need face entities, in order to compute sections we will
+ # create boxes with front face at transversal area position,
+ # compute solid common, divide by faces, and preserve only desired
+ # ones.
+ App.Console.PrintMessage("Computing transversal areas...\n")
+ App.Console.PrintMessage("Some Inventor representation errors can be shown, ignore it please.\n")
+ for i in range(1,n-1):
+ App.Console.PrintMessage("%d / %d\n" % (i, n-2))
+ x = xmin + i*dx
+ area = 0.0
+ # Create the box
+ L = xmax - xmin
+ B = bbox.YMax - bbox.YMin
+ p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
+ box = Part.makeBox(1.5*L + x, 3.0*B, - bbox.ZMin + 1.0, p)
+ # Compute common part with ship
+ for s in shape.Solids:
+ # Get solids intersection
+ try:
+ common = box.common(s)
+ except:
+ continue
+ if common.Volume == 0.0:
+ continue
+ # Recompute object adding it to the scene, when we have
+ # computed desired data we can remove it.
+ try:
+ Part.show(common)
+ except:
+ continue
+ # Divide by faces and compute only section placed ones
+ faces = common.Faces
+ for f in faces:
+ faceBounds = f.BoundBox
+ # Orientation filter
+ if faceBounds.XMax - faceBounds.XMin > 0.00001:
+ continue
+ # Place filter
+ if abs(faceBounds.XMax - x) > 0.00001:
+ continue
+ # Valid face, compute area
+ area = area + f.Area
+ # Destroy last object generated
+ App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
+ # Append transversal area
+ areas.append([x, area])
+ # Last area is equal to zero
+ areas.append([xmax, 0.0])
+ App.Console.PrintMessage("Done!\n")
+ return areas
def displacement(ship, draft, roll=0.0, trim=0.0, yaw=0.0):
- """ Compute ship displacement.
- @param ship Ship instance.
- @param draft Ship draft.
- @param roll Ship roll angle.
- @param trim Ship trim angle.
- @param yaw Ship yaw angle. Ussually you don't want to use this
- value.
- @return [disp, B, Cb], \n
- disp = Ship displacement [ton].
- B = Bouyance center [m].
- Cb = Block coefficient.
- @note Bouyance center will returned as FreeCAD.Vector class.
- @note Returned Bouyance center is in non modified ship coordinates
- """
- # We will take a duplicate of ship shape in order to place it
- shape = ship.Shape.copy()
- shape.translate(Vector(0.0,0.0,-draft))
- # Rotations composition is Roll->Trim->Yaw
- shape.rotate(Vector(0.0,0.0,0.0), Vector(1.0,0.0,0.0), roll)
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,0.0,1.0), yaw)
- # Now we need to know box dimensions
- bbox = shape.BoundBox
- xmin = bbox.XMin
- xmax = bbox.XMax
- # Create the box
- L = xmax - xmin
- B = bbox.YMax - bbox.YMin
- p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
- box = Part.makeBox(3.0*L, 3.0*B, -bbox.ZMin + 1.0, p)
- vol = 0.0
- cog = Vector()
- for solid in shape.Solids:
- # Compute common part with ship
- try:
- common = box.common(solid)
- except:
- continue
- # Get data
- vol = vol + common.Volume
- for s in common.Solids:
- sCoG = s.CenterOfMass
- cog.x = cog.x + sCoG.x*s.Volume
- cog.y = cog.y + sCoG.y*s.Volume
- cog.z = cog.z + sCoG.z*s.Volume
- cog.x = cog.x / vol
- cog.y = cog.y / vol
- cog.z = cog.z / vol
- Vol = L*B*abs(bbox.ZMin)
- # Undo transformations
- B = Vector()
- B.x = cog.x*math.cos(math.radians(-yaw)) - cog.y*math.sin(math.radians(-yaw))
- B.y = cog.x*math.sin(math.radians(-yaw)) + cog.y*math.cos(math.radians(-yaw))
- B.z = cog.z
- cog.x = B.x*math.cos(math.radians(-trim)) - B.z*math.sin(math.radians(-trim))
- cog.y = B.y
- cog.z = B.x*math.sin(math.radians(-trim)) + B.z*math.cos(math.radians(-trim))
- B.x = cog.x
- B.y = cog.y*math.cos(math.radians(-roll)) - cog.z*math.sin(math.radians(-roll))
- B.z = cog.y*math.sin(math.radians(-roll)) + cog.z*math.cos(math.radians(-roll))
- B.z = B.z + draft
- # Return data
- dens = 1.025 # [tons/m3], salt water
- return [dens*vol, B, vol/Vol]
+ """ Compute ship displacement.
+ @param ship Ship instance.
+ @param draft Ship draft.
+ @param roll Ship roll angle.
+ @param trim Ship trim angle.
+ @param yaw Ship yaw angle. Ussually you don't want to use this
+ value.
+ @return [disp, B, Cb], \n
+ disp = Ship displacement [ton].
+ B = Bouyance center [m].
+ Cb = Block coefficient.
+ @note Bouyance center will returned as FreeCAD.Vector class.
+ @note Returned Bouyance center is in non modified ship coordinates
+ """
+ # We will take a duplicate of ship shape in order to place it
+ shape = ship.Shape.copy()
+ shape.translate(Vector(0.0,0.0,-draft))
+ # Rotations composition is Roll->Trim->Yaw
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(1.0,0.0,0.0), roll)
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,0.0,1.0), yaw)
+ # Now we need to know box dimensions
+ bbox = shape.BoundBox
+ xmin = bbox.XMin
+ xmax = bbox.XMax
+ # Create the box
+ L = xmax - xmin
+ B = bbox.YMax - bbox.YMin
+ p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
+ box = Part.makeBox(3.0*L, 3.0*B, -bbox.ZMin + 1.0, p)
+ vol = 0.0
+ cog = Vector()
+ for solid in shape.Solids:
+ # Compute common part with ship
+ try:
+ common = box.common(solid)
+ except:
+ continue
+ # Get data
+ vol = vol + common.Volume
+ for s in common.Solids:
+ sCoG = s.CenterOfMass
+ cog.x = cog.x + sCoG.x*s.Volume
+ cog.y = cog.y + sCoG.y*s.Volume
+ cog.z = cog.z + sCoG.z*s.Volume
+ cog.x = cog.x / vol
+ cog.y = cog.y / vol
+ cog.z = cog.z / vol
+ Vol = L*B*abs(bbox.ZMin)
+ # Undo transformations
+ B = Vector()
+ B.x = cog.x*math.cos(math.radians(-yaw)) - cog.y*math.sin(math.radians(-yaw))
+ B.y = cog.x*math.sin(math.radians(-yaw)) + cog.y*math.cos(math.radians(-yaw))
+ B.z = cog.z
+ cog.x = B.x*math.cos(math.radians(-trim)) - B.z*math.sin(math.radians(-trim))
+ cog.y = B.y
+ cog.z = B.x*math.sin(math.radians(-trim)) + B.z*math.cos(math.radians(-trim))
+ B.x = cog.x
+ B.y = cog.y*math.cos(math.radians(-roll)) - cog.z*math.sin(math.radians(-roll))
+ B.z = cog.y*math.sin(math.radians(-roll)) + cog.z*math.cos(math.radians(-roll))
+ B.z = B.z + draft
+ # Return data
+ dens = 1.025 # [tons/m3], salt water
+ return [dens*vol, B, vol/Vol]
def wettedArea(shape, draft, trim):
- """ Calculate wetted ship area.
- @param shape Ship external faces instance.
- @param draft Draft.
- @param trim Trim in degrees.
- @return Wetted ship area.
- """
- area = 0.0
- nObjects = 0
- # We will take a duplicate of ship shape in order to place it
- shape = shape.copy()
- shape.translate(Vector(0.0,0.0,-draft))
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
- # Now we need to know the x range of values
- bbox = shape.BoundBox
- xmin = bbox.XMin
- xmax = bbox.XMax
- # Create the box
- L = xmax - xmin
- B = bbox.YMax - bbox.YMin
- p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
- box = Part.makeBox(3.0*L, 3.0*B, - bbox.ZMin + 1.0, p)
- # Compute common part with ship
- for f in shape.Faces:
- # Get solids intersection
- try:
- common = box.common(f)
- except:
- continue
- area = area + common.Area
- return area
+ """ Calculate wetted ship area.
+ @param shape Ship external faces instance.
+ @param draft Draft.
+ @param trim Trim in degrees.
+ @return Wetted ship area.
+ """
+ area = 0.0
+ nObjects = 0
+ # We will take a duplicate of ship shape in order to place it
+ shape = shape.copy()
+ shape.translate(Vector(0.0,0.0,-draft))
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
+ # Now we need to know the x range of values
+ bbox = shape.BoundBox
+ xmin = bbox.XMin
+ xmax = bbox.XMax
+ # Create the box
+ L = xmax - xmin
+ B = bbox.YMax - bbox.YMin
+ p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
+ box = Part.makeBox(3.0*L, 3.0*B, - bbox.ZMin + 1.0, p)
+ # Compute common part with ship
+ for f in shape.Faces:
+ # Get solids intersection
+ try:
+ common = box.common(f)
+ except:
+ continue
+ area = area + common.Area
+ return area
def moment(ship, draft, trim, disp, xcb):
- """ Calculate triming 1cm ship moment.
- @param ship Selected ship instance
- @param draft Draft.
- @param trim Trim in degrees.
- @param disp Displacement at selected draft and trim.
- @param xcb Bouyance center at selected draft and trim.
- @return Moment to trim ship 1cm (ton m).
- @note Moment is positive when produce positive trim.
- """
- factor = 10.0
- angle = factor*math.degrees(math.atan2(0.01,0.5*ship.Length))
- newTrim = trim + angle
- data = displacement(ship,draft,0.0,newTrim,0.0)
- mom0 = -disp*xcb
- mom1 = -data[0]*data[1].x
- return (mom1 - mom0) / factor
+ """ Calculate triming 1cm ship moment.
+ @param ship Selected ship instance
+ @param draft Draft.
+ @param trim Trim in degrees.
+ @param disp Displacement at selected draft and trim.
+ @param xcb Bouyance center at selected draft and trim.
+ @return Moment to trim ship 1cm (ton m).
+ @note Moment is positive when produce positive trim.
+ """
+ factor = 10.0
+ angle = factor*math.degrees(math.atan2(0.01,0.5*ship.Length))
+ newTrim = trim + angle
+ data = displacement(ship,draft,0.0,newTrim,0.0)
+ mom0 = -disp*xcb
+ mom1 = -data[0]*data[1].x
+ return (mom1 - mom0) / factor
def FloatingArea(ship, draft, trim):
- """ Calculate ship floating area.
- @param ship Selected ship instance
- @param draft Draft.
- @param trim Trim in degrees.
- @return Ship floating area, and floating coefficient.
- """
- area = 0.0
- cf = 0.0
- maxX = 0.0
- minX = 0.0
- maxY = 0.0
- minY = 0.0
- # We will take a duplicate of ship shape in order to place it
- shape = ship.Shape.copy()
- shape.translate(Vector(0.0,0.0,-draft))
- shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
- # Now we need to know the x range of values
- bbox = shape.BoundBox
- xmin = bbox.XMin
- xmax = bbox.XMax
- # Create the box
- L = xmax - xmin
- B = bbox.YMax - bbox.YMin
- p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
- box = Part.makeBox(3.0*L, 3.0*B, - bbox.ZMin + 1.0, p)
- # Compute common part with ship
- for s in shape.Solids:
- # Get solids intersection
- try:
- common = box.common(s)
- except:
- continue
- if common.Volume == 0.0:
- continue
- # Recompute object adding it to the scene, when we have
- # computed desired data we can remove it.
- try:
- Part.show(common)
- except:
- continue
- # Divide by faces and compute only section placed ones
- faces = common.Faces
- for f in faces:
- faceBounds = f.BoundBox
- # Orientation filter
- if faceBounds.ZMax - faceBounds.ZMin > 0.00001:
- continue
- # Place filter
- if abs(faceBounds.ZMax) > 0.00001:
- continue
- # Valid face, compute area
- area = area + f.Area
- maxX = max(maxX, faceBounds.XMax)
- minX = min(minX, faceBounds.XMin)
- maxY = max(maxY, faceBounds.YMax)
- minY = min(minY, faceBounds.YMin)
- # Destroy last object generated
- App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
- dx = maxX - minX
- dy = maxY - minY
- if dx*dy > 0.0:
- cf = area / (dx*dy)
- return [area, cf]
+ """ Calculate ship floating area.
+ @param ship Selected ship instance
+ @param draft Draft.
+ @param trim Trim in degrees.
+ @return Ship floating area, and floating coefficient.
+ """
+ area = 0.0
+ cf = 0.0
+ maxX = 0.0
+ minX = 0.0
+ maxY = 0.0
+ minY = 0.0
+ # We will take a duplicate of ship shape in order to place it
+ shape = ship.Shape.copy()
+ shape.translate(Vector(0.0,0.0,-draft))
+ shape.rotate(Vector(0.0,0.0,0.0), Vector(0.0,-1.0,0.0), trim)
+ # Now we need to know the x range of values
+ bbox = shape.BoundBox
+ xmin = bbox.XMin
+ xmax = bbox.XMax
+ # Create the box
+ L = xmax - xmin
+ B = bbox.YMax - bbox.YMin
+ p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
+ box = Part.makeBox(3.0*L, 3.0*B, - bbox.ZMin + 1.0, p)
+ # Compute common part with ship
+ for s in shape.Solids:
+ # Get solids intersection
+ try:
+ common = box.common(s)
+ except:
+ continue
+ if common.Volume == 0.0:
+ continue
+ # Recompute object adding it to the scene, when we have
+ # computed desired data we can remove it.
+ try:
+ Part.show(common)
+ except:
+ continue
+ # Divide by faces and compute only section placed ones
+ faces = common.Faces
+ for f in faces:
+ faceBounds = f.BoundBox
+ # Orientation filter
+ if faceBounds.ZMax - faceBounds.ZMin > 0.00001:
+ continue
+ # Place filter
+ if abs(faceBounds.ZMax) > 0.00001:
+ continue
+ # Valid face, compute area
+ area = area + f.Area
+ maxX = max(maxX, faceBounds.XMax)
+ minX = min(minX, faceBounds.XMin)
+ maxY = max(maxY, faceBounds.YMax)
+ minY = min(minY, faceBounds.YMin)
+ # Destroy last object generated
+ App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
+ dx = maxX - minX
+ dy = maxY - minY
+ if dx*dy > 0.0:
+ cf = area / (dx*dy)
+ return [area, cf]
def BMT(ship, draft, trim=0.0):
- """ Calculate ship Bouyance center transversal distance.
- @param ship Ship instance.
- @param draft Ship draft.
- @param trim Ship trim angle.
- @return BM Bouyance to metacenter height [m].
- """
- nRoll = 2
- maxRoll = 7.0
- B0 = displacement(ship,draft,0.0,trim,0.0)[1]
- BM = 0.0
- for i in range(0,nRoll):
- roll = (maxRoll/nRoll)*(i+1)
- B1 = displacement(ship,draft,roll,trim,0.0)[1]
- # * M
- # / \
- # / \ BM ==|> BM = (BB/2) / sin(alpha/2)
- # / \
- # *-------*
- # BB
- BB = [B1.y - B0.y, B1.z - B0.z]
- BB = math.sqrt(BB[0]*BB[0] + BB[1]*BB[1])
- BM = BM + 0.5*BB/math.sin(math.radians(0.5*roll)) / nRoll # nRoll is the weight function
- return BM
+ """ Calculate ship Bouyance center transversal distance.
+ @param ship Ship instance.
+ @param draft Ship draft.
+ @param trim Ship trim angle.
+ @return BM Bouyance to metacenter height [m].
+ """
+ nRoll = 2
+ maxRoll = 7.0
+ B0 = displacement(ship,draft,0.0,trim,0.0)[1]
+ BM = 0.0
+ for i in range(0,nRoll):
+ roll = (maxRoll/nRoll)*(i+1)
+ B1 = displacement(ship,draft,roll,trim,0.0)[1]
+ # * M
+ # / \
+ # / \ BM ==|> BM = (BB/2) / sin(alpha/2)
+ # / \
+ # *-------*
+ # BB
+ BB = [B1.y - B0.y, B1.z - B0.z]
+ BB = math.sqrt(BB[0]*BB[0] + BB[1]*BB[1])
+ BM = BM + 0.5*BB/math.sin(math.radians(0.5*roll)) / nRoll # nRoll is the weight function
+ return BM
def mainFrameCoeff(ship, draft):
- """ Calculate main frame coefficient.
- @param ship Selected ship instance
- @param draft Draft.
- @return Main frame coefficient
- """
- cm = 0.0
- maxY = 0.0
- minY = 0.0
- # We will take a duplicate of ship shape in order to place it
- shape = ship.Shape.copy()
- shape.translate(Vector(0.0,0.0,-draft))
- x = 0.0
- area = 0.0
- # Now we need to know the x range of values
- bbox = shape.BoundBox
- xmin = bbox.XMin
- xmax = bbox.XMax
- # Create the box
- L = xmax - xmin
- B = bbox.YMax - bbox.YMin
- p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
- box = Part.makeBox(1.5*L + x, 3.0*B, - bbox.ZMin + 1.0, p)
- # Compute common part with ship
- for s in shape.Solids:
- # Get solids intersection
- try:
- common = box.common(s)
- except:
- continue
- if common.Volume == 0.0:
- continue
- # Recompute object adding it to the scene, when we have
- # computed desired data we can remove it.
- try:
- Part.show(common)
- except:
- continue
- # Divide by faces and compute only section placed ones
- faces = common.Faces
- for f in faces:
- faceBounds = f.BoundBox
- # Orientation filter
- if faceBounds.XMax - faceBounds.XMin > 0.00001:
- continue
- # Place filter
- if abs(faceBounds.XMax - x) > 0.00001:
- continue
- # Valid face, compute area
- area = area + f.Area
- maxY = max(maxY, faceBounds.YMax)
- minY = max(minY, faceBounds.YMin)
- # Destroy last object generated
- App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
- dy = maxY - minY
- if dy*draft > 0.0:
- cm = area / (dy*draft)
- return cm
+ """ Calculate main frame coefficient.
+ @param ship Selected ship instance
+ @param draft Draft.
+ @return Main frame coefficient
+ """
+ cm = 0.0
+ maxY = 0.0
+ minY = 0.0
+ # We will take a duplicate of ship shape in order to place it
+ shape = ship.Shape.copy()
+ shape.translate(Vector(0.0,0.0,-draft))
+ x = 0.0
+ area = 0.0
+ # Now we need to know the x range of values
+ bbox = shape.BoundBox
+ xmin = bbox.XMin
+ xmax = bbox.XMax
+ # Create the box
+ L = xmax - xmin
+ B = bbox.YMax - bbox.YMin
+ p = Vector(-1.5*L, -1.5*B, bbox.ZMin - 1.0)
+ box = Part.makeBox(1.5*L + x, 3.0*B, - bbox.ZMin + 1.0, p)
+ # Compute common part with ship
+ for s in shape.Solids:
+ # Get solids intersection
+ try:
+ common = box.common(s)
+ except:
+ continue
+ if common.Volume == 0.0:
+ continue
+ # Recompute object adding it to the scene, when we have
+ # computed desired data we can remove it.
+ try:
+ Part.show(common)
+ except:
+ continue
+ # Divide by faces and compute only section placed ones
+ faces = common.Faces
+ for f in faces:
+ faceBounds = f.BoundBox
+ # Orientation filter
+ if faceBounds.XMax - faceBounds.XMin > 0.00001:
+ continue
+ # Place filter
+ if abs(faceBounds.XMax - x) > 0.00001:
+ continue
+ # Valid face, compute area
+ area = area + f.Area
+ maxY = max(maxY, faceBounds.YMax)
+ minY = max(minY, faceBounds.YMin)
+ # Destroy last object generated
+ App.ActiveDocument.removeObject(App.ActiveDocument.Objects[-1].Name)
+ dy = maxY - minY
+ if dy*draft > 0.0:
+ cm = area / (dy*draft)
+ return cm
class Point:
- """ Hydrostatics point, that conatins: \n
- draft Ship draft [m]. \n
- trim Ship trim [deg]. \n
- disp Ship displacement [ton]. \n
- xcb Bouyance center X coordinate [m].
- wet Wetted ship area [m2].
- mom Triming 1cm ship moment [ton m].
- farea Floating area [m2].
- KBt Transversal KB height [m].
- BMt Transversal BM height [m].
- Cb Block coefficient.
- Cf Floating coefficient.
- Cm Main frame coefficient.
- @note Moment is positive when produce positive trim.
- """
- def __init__(self, ship, faces, draft, trim):
- """ Use all hydrostatics tools to define a hydrostatics
- point.
- @param ship Selected ship instance
- @param faces Ship external faces
- @param draft Draft.
- @param trim Trim in degrees.
- """
- # Hydrostatics computation
- dispData = displacement(ship,draft,0.0,trim,0.0)
- if not faces:
- wet = 0.0
- else:
- wet = wettedArea(faces,draft,trim)
- mom = moment(ship,draft,trim,dispData[0],dispData[1].x)
- farea = FloatingArea(ship,draft,trim)
- bm = BMT(ship,draft,trim)
- cm = mainFrameCoeff(ship,draft)
- # Store final data
- self.draft = draft
- self.trim = trim
- self.disp = dispData[0]
- self.xcb = dispData[1].x
- self.wet = wet
- self.farea = farea[0]
- self.mom = mom
- self.KBt = dispData[1].z
- self.BMt = bm
- self.Cb = dispData[2]
- self.Cf = farea[1]
- self.Cm = cm
+ """ Hydrostatics point, that conatins: \n
+ draft Ship draft [m]. \n
+ trim Ship trim [deg]. \n
+ disp Ship displacement [ton]. \n
+ xcb Bouyance center X coordinate [m].
+ wet Wetted ship area [m2].
+ mom Triming 1cm ship moment [ton m].
+ farea Floating area [m2].
+ KBt Transversal KB height [m].
+ BMt Transversal BM height [m].
+ Cb Block coefficient.
+ Cf Floating coefficient.
+ Cm Main frame coefficient.
+ @note Moment is positive when produce positive trim.
+ """
+ def __init__(self, ship, faces, draft, trim):
+ """ Use all hydrostatics tools to define a hydrostatics
+ point.
+ @param ship Selected ship instance
+ @param faces Ship external faces
+ @param draft Draft.
+ @param trim Trim in degrees.
+ """
+ # Hydrostatics computation
+ dispData = displacement(ship,draft,0.0,trim,0.0)
+ if not faces:
+ wet = 0.0
+ else:
+ wet = wettedArea(faces,draft,trim)
+ mom = moment(ship,draft,trim,dispData[0],dispData[1].x)
+ farea = FloatingArea(ship,draft,trim)
+ bm = BMT(ship,draft,trim)
+ cm = mainFrameCoeff(ship,draft)
+ # Store final data
+ self.draft = draft
+ self.trim = trim
+ self.disp = dispData[0]
+ self.xcb = dispData[1].x
+ self.wet = wet
+ self.farea = farea[0]
+ self.mom = mom
+ self.KBt = dispData[1].z
+ self.BMt = bm
+ self.Cb = dispData[2]
+ self.Cf = farea[1]
+ self.Cm = cm
diff --git a/src/Mod/Ship/shipHydrostatics/__init__.py b/src/Mod/Ship/shipHydrostatics/__init__.py
index 5b9a3c477c..50a43c8a65 100644
--- a/src/Mod/Ship/shipHydrostatics/__init__.py
+++ b/src/Mod/Ship/shipHydrostatics/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
@@ -33,5 +33,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/shipLoadExample/TaskPanel.py b/src/Mod/Ship/shipLoadExample/TaskPanel.py
index b325a92364..9c463c99b0 100644
--- a/src/Mod/Ship/shipLoadExample/TaskPanel.py
+++ b/src/Mod/Ship/shipLoadExample/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -27,79 +27,82 @@ import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/shipLoadExample/TaskPanel.ui"
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/shipLoadExample/TaskPanel.ui"
- def accept(self):
- path = Paths.modulePath() + "/Examples/"
- if(self.form.ship.currentIndex() == 0): # s60 from Iowa University
- App.open(path + "s60.fcstd")
- elif(self.form.ship.currentIndex() == 1): # Wigley canonical ship
- App.open(path + "wigley.fcstd")
- elif(self.form.ship.currentIndex() == 2): # s60 (Katamaran)
- App.open(path + "s60_katamaran.fcstd")
- elif(self.form.ship.currentIndex() == 2): # Wigley (Katamaran)
- App.open(path + "wigley_katamaran.fcstd")
- return True
+ def accept(self):
+ path = Paths.modulePath() + "/resources/examples/"
+ if(self.form.ship.currentIndex() == 0): # s60 from Iowa University
+ App.open(path + "s60.fcstd")
+ elif(self.form.ship.currentIndex() == 1): # Wigley canonical ship
+ App.open(path + "wigley.fcstd")
+ elif(self.form.ship.currentIndex() == 2): # s60 (Katamaran)
+ App.open(path + "s60_katamaran.fcstd")
+ elif(self.form.ship.currentIndex() == 2): # Wigley (Katamaran)
+ App.open(path + "wigley_katamaran.fcstd")
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.ship = form.findChild(QtGui.QComboBox, "Ship")
- form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo")
- iconPath = Paths.iconsPath() + "/Ico.xpm"
- form.mainLogo.setPixmap(QtGui.QPixmap(iconPath))
- self.form = form
- self.retranslateUi()
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.ship = form.findChild(QtGui.QComboBox, "Ship")
+ form.mainLogo = form.findChild(QtGui.QLabel, "MainLogo")
+ iconPath = Paths.iconsPath() + "/Ico.xpm"
+ form.mainLogo.setPixmap(QtGui.QPixmap(iconPath))
+ self.form = form
+ self.retranslateUi()
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Load example ship"))
- self.form.findChild(QtGui.QGroupBox, "ShipSelectionBox").setTitle(Translator.translate("Select ship example geometry"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("ship_load","Load example ship",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "ShipSelectionBox").setTitle(QtGui.QApplication.translate("ship_load",
+ "Select ship example geometry",
+ None,QtGui.QApplication.UnicodeUTF8))
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/shipLoadExample/TaskPanel.ui b/src/Mod/Ship/shipLoadExample/TaskPanel.ui
index 19a2c8da9d..299c174fa9 100644
--- a/src/Mod/Ship/shipLoadExample/TaskPanel.ui
+++ b/src/Mod/Ship/shipLoadExample/TaskPanel.ui
@@ -62,58 +62,52 @@
Select ship example geometry
-
-
-
- 0
- 20
- 241
- 101
-
-
-
- -
-
-
-
-
- Series 60 from Iowa University
+
+
-
+
+
-
+
+
-
+
+ Series 60 from Iowa University
+
+
+ -
+
+ Wigley canonical ship
+
+
+ -
+
+ Series 60 (Katamaran)
+
+
+ -
+
+ Wigley (Katamaran)
+
+
+
+
+ -
+
+
+ Qt::Vertical
-
- -
-
- Wigley canonical ship
+
+ QSizePolicy::Fixed
-
- -
-
- Series 60 (Katamaran)
+
+
+ 20
+ 20
+
-
- -
-
- Wigley (Katamaran)
-
-
-
-
- -
-
-
- Qt::Vertical
-
-
- QSizePolicy::Fixed
-
-
-
- 20
- 20
-
-
-
-
-
-
+
+
+
+
+
diff --git a/src/Mod/Ship/shipLoadExample/__init__.py b/src/Mod/Ship/shipLoadExample/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/shipLoadExample/__init__.py
+++ b/src/Mod/Ship/shipLoadExample/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/shipOutlineDraw/Plot.py b/src/Mod/Ship/shipOutlineDraw/Plot.py
index 7715540da2..919fc87206 100644
--- a/src/Mod/Ship/shipOutlineDraw/Plot.py
+++ b/src/Mod/Ship/shipOutlineDraw/Plot.py
@@ -1,124 +1,127 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
+# Qt library
+from PyQt4 import QtGui,QtCore
# FreeCAD modules
import FreeCAD,FreeCADGui
from FreeCAD import Base, Vector
import Part
# FreeCADShip modules
-from shipUtils import Paths, Translator
+from shipUtils import Paths
def Plot(scale, sections, shape):
- """ Creates the outline draw.
- @param scale Plane scale (format 1:scale)
- @param sections Sections computed.
- @param shape Ship surfaces shell
- @return plotted object (DocumentObject)
- """
- msg = Translator.translate('Performing plot (Scale 1:%d)...\n' % (scale))
- FreeCAD.Console.PrintMessage(msg)
- scale = 1000.0 / scale
- # Take positions
- bounds = [0.0, 0.0, 0.0]
- bbox = shape.BoundBox
- bounds[0] = bbox.XLength
- bounds[1] = bbox.YLength
- bounds[2] = bbox.ZLength
- xTot = scale*bounds[1] + 32.0 + scale*bounds[0]
- yTot = scale*bounds[2] + 32.0 + scale*bounds[1]
- xMid = 210.0
- yMid = 185.0
- x0 = xMid - 0.5*xTot
- y0 = 297.0 - yMid - 0.5*yTot # 297 = A3_width
- # Get border
- edges = getEdges([shape])
- border = edges[0]
- for i in range(0,len(edges)):
- border = border.oldFuse(edges[i]) # Only group objects, don't try to build more complex entities
- border = border.oldFuse(edges[i].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)))
- # Fuse sections & borders
- # obj = sections.oldFuse(border)
- obj = border.oldFuse(sections)
- # Send to 3D view
- Part.show(obj)
- objs = FreeCAD.ActiveDocument.Objects
- obj = objs[len(objs)-1]
- # Create a new plane
- FreeCAD.ActiveDocument.addObject('Drawing::FeaturePage','OutlineDrawPlot')
- FreeCAD.ActiveDocument.OutlineDrawPlot.Template = FreeCAD.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
- # Side view
- FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawSideView')
- FreeCAD.ActiveDocument.OutlineDrawSideView.Source = obj
- FreeCAD.ActiveDocument.OutlineDrawSideView.Direction = (1.0,0.0,0.0)
- FreeCAD.ActiveDocument.OutlineDrawSideView.Rotation = -90.0
- FreeCAD.ActiveDocument.OutlineDrawSideView.Scale = scale
- FreeCAD.ActiveDocument.OutlineDrawSideView.X = 420.0 - x0 - 0.5*scale*bounds[1] # 420 = A3_height
- FreeCAD.ActiveDocument.OutlineDrawSideView.Y = y0 + 0.5*scale*bounds[2]
- FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawSideView)
- # Front view
- FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawFrontView')
- FreeCAD.ActiveDocument.OutlineDrawFrontView.Source = obj
- FreeCAD.ActiveDocument.OutlineDrawFrontView.Direction = (0.0,1.0,0.0)
- FreeCAD.ActiveDocument.OutlineDrawFrontView.Rotation = -90.0
- FreeCAD.ActiveDocument.OutlineDrawFrontView.Scale = scale
- FreeCAD.ActiveDocument.OutlineDrawFrontView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0]
- FreeCAD.ActiveDocument.OutlineDrawFrontView.Y = y0 + 0.5*scale*bounds[2]
- FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawFrontView)
- # Up view
- FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawUpView')
- FreeCAD.ActiveDocument.OutlineDrawUpView.Source = obj
- FreeCAD.ActiveDocument.OutlineDrawUpView.Direction = (0.0,0.0,1.0)
- FreeCAD.ActiveDocument.OutlineDrawUpView.Scale = scale
- FreeCAD.ActiveDocument.OutlineDrawUpView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0]
- FreeCAD.ActiveDocument.OutlineDrawUpView.Y = y0 + scale*bounds[2] + 32
- FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawUpView)
- FreeCAD.ActiveDocument.recompute()
- return obj
+ """ Creates the outline draw.
+ @param scale Plane scale (format 1:scale)
+ @param sections Sections computed.
+ @param shape Ship surfaces shell
+ @return plotted object (DocumentObject)
+ """
+ msg = QtGui.QApplication.translate("ship_console", "Performing plot",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + ' (1:%d)...\n' % (scale))
+ scale = 1000.0 / scale
+ # Take positions
+ bounds = [0.0, 0.0, 0.0]
+ bbox = shape.BoundBox
+ bounds[0] = bbox.XLength
+ bounds[1] = bbox.YLength
+ bounds[2] = bbox.ZLength
+ xTot = scale*bounds[1] + 32.0 + scale*bounds[0]
+ yTot = scale*bounds[2] + 32.0 + scale*bounds[1]
+ xMid = 210.0
+ yMid = 185.0
+ x0 = xMid - 0.5*xTot
+ y0 = 297.0 - yMid - 0.5*yTot # 297 = A3_width
+ # Get border
+ edges = getEdges([shape])
+ border = edges[0]
+ for i in range(0,len(edges)):
+ border = border.oldFuse(edges[i]) # Only group objects, don't try to build more complex entities
+ border = border.oldFuse(edges[i].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0)))
+ # Fuse sections & borders
+ # obj = sections.oldFuse(border)
+ obj = border.oldFuse(sections)
+ # Send to 3D view
+ Part.show(obj)
+ objs = FreeCAD.ActiveDocument.Objects
+ obj = objs[len(objs)-1]
+ # Create a new plane
+ FreeCAD.ActiveDocument.addObject('Drawing::FeaturePage','OutlineDrawPlot')
+ FreeCAD.ActiveDocument.OutlineDrawPlot.Template = FreeCAD.getResourceDir()+'Mod/Drawing/Templates/A3_Landscape.svg'
+ # Side view
+ FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawSideView')
+ FreeCAD.ActiveDocument.OutlineDrawSideView.Source = obj
+ FreeCAD.ActiveDocument.OutlineDrawSideView.Direction = (1.0,0.0,0.0)
+ FreeCAD.ActiveDocument.OutlineDrawSideView.Rotation = -90.0
+ FreeCAD.ActiveDocument.OutlineDrawSideView.Scale = scale
+ FreeCAD.ActiveDocument.OutlineDrawSideView.X = 420.0 - x0 - 0.5*scale*bounds[1] # 420 = A3_height
+ FreeCAD.ActiveDocument.OutlineDrawSideView.Y = y0 + 0.5*scale*bounds[2]
+ FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawSideView)
+ # Front view
+ FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawFrontView')
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.Source = obj
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.Direction = (0.0,1.0,0.0)
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.Rotation = -90.0
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.Scale = scale
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0]
+ FreeCAD.ActiveDocument.OutlineDrawFrontView.Y = y0 + 0.5*scale*bounds[2]
+ FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawFrontView)
+ # Up view
+ FreeCAD.ActiveDocument.addObject('Drawing::FeatureViewPart','OutlineDrawUpView')
+ FreeCAD.ActiveDocument.OutlineDrawUpView.Source = obj
+ FreeCAD.ActiveDocument.OutlineDrawUpView.Direction = (0.0,0.0,1.0)
+ FreeCAD.ActiveDocument.OutlineDrawUpView.Scale = scale
+ FreeCAD.ActiveDocument.OutlineDrawUpView.X = 420.0 - x0 - scale*bounds[1] - 32 - 0.5*scale*bounds[0]
+ FreeCAD.ActiveDocument.OutlineDrawUpView.Y = y0 + scale*bounds[2] + 32
+ FreeCAD.ActiveDocument.OutlineDrawPlot.addObject(FreeCAD.ActiveDocument.OutlineDrawUpView)
+ FreeCAD.ActiveDocument.recompute()
+ return obj
def getEdges(objs=None):
- """ Returns object edges (list of them)
- @param objs Object to get the faces, none if selected
- object may used.
- @return Selected edges. None if errors happens
- """
- edges = []
- if not objs:
- objs = FreeCADGui.Selection.getSelection()
- if not objs:
- return None
- for i in range(0, len(objs)):
- obj = objs[i]
- if obj.isDerivedFrom('Part::Feature'):
- # get shape
- shape = obj.Shape
- if not shape:
- return None
- obj = shape
- if not obj.isDerivedFrom('Part::TopoShape'):
- return None
- objEdges = obj.Edges
- if not objEdges:
- continue
- for j in range(0, len(objEdges)):
- edges.append(objEdges[j])
- return edges
+ """ Returns object edges (list of them)
+ @param objs Object to get the faces, none if selected
+ object may used.
+ @return Selected edges. None if errors happens
+ """
+ edges = []
+ if not objs:
+ objs = FreeCADGui.Selection.getSelection()
+ if not objs:
+ return None
+ for i in range(0, len(objs)):
+ obj = objs[i]
+ if obj.isDerivedFrom('Part::Feature'):
+ # get shape
+ shape = obj.Shape
+ if not shape:
+ return None
+ obj = shape
+ if not obj.isDerivedFrom('Part::TopoShape'):
+ return None
+ objEdges = obj.Edges
+ if not objEdges:
+ continue
+ for j in range(0, len(objEdges)):
+ edges.append(objEdges[j])
+ return edges
diff --git a/src/Mod/Ship/shipOutlineDraw/Preview.py b/src/Mod/Ship/shipOutlineDraw/Preview.py
index a1ccb20123..3897912b76 100644
--- a/src/Mod/Ship/shipOutlineDraw/Preview.py
+++ b/src/Mod/Ship/shipOutlineDraw/Preview.py
@@ -1,146 +1,151 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
+# Qt library
+from PyQt4 import QtGui,QtCore
# FreeCAD modules
import FreeCAD,FreeCADGui
from FreeCAD import Base, Vector
import Part
# FreeCADShip modules
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class Preview(object):
- def __init__(self):
- """ Constructor.
- """
- self.obj = None
- self.reinit()
+ def __init__(self):
+ """ Constructor.
+ """
+ self.obj = None
+ self.reinit()
- def reinit(self):
- """ Reinitializate drawer.
- """
- self.clean()
+ def reinit(self):
+ """ Reinitializate drawer.
+ """
+ self.clean()
- def update(self, L, B, T, sectionsL, sectionsB, sectionsT, shape):
- """ Update the 3D view printing annotations.
- @param L Ship Lpp.
- @param B Ship beam.
- @param T Ship draft.
- @param sectionsL Transversal sections.
- @param sectionsB Longitudinal sections.
- @param sectionsT Water lines.
- @param shape Ship surfaces shell
- @return Sections object. None if errors happens.
- """
- FreeCAD.Console.PrintMessage(Translator.translate('Computing sections...\n'))
- # Destroy all previous entities
- self.clean()
- # Receive data
- nL = len(sectionsL)
- nB = len(sectionsB)
- nT = len(sectionsT)
- if not (nL or nB or nT):
- return None
- # Found sections
- sections = []
- for i in range(0,nL):
- pos = sectionsL[i]
- # Cut ship
- section = shape.slice(Vector(1.0,0.0,0.0), pos)
- for j in range(0,len(section)):
- edges = section[j].Edges
- # We have 3 cases,
- # * when section is before midship, then only starboard section will be considered
- # * When section is midship, then all section must be preserved
- # * When section is after midship, then only board will be considered
- if pos > 0.01:
- # Look for edges at the wrong side and delete it
- for k in range(len(edges)-1,-1,-1):
- edge = edges[k]
- bbox = edge.BoundBox
- if bbox.YMin < -0.001:
- del edges[k]
- elif pos < -0.01:
- # Look for edges at the wrong side and delete it
- for k in range(len(edges)-1,-1,-1):
- edge = edges[k]
- bbox = edge.BoundBox
- if bbox.YMax > 0.001:
- del edges[k]
- sections.extend(edges)
- for i in range(0,nB):
- pos = sectionsB[i]
- section = shape.slice(Vector(0.0,1.0,0.0), pos)
- for j in range(0,len(section)):
- edges = section[j].Edges
- # Longitudinal sections will preserve board and starboard ever. Since we take from one side,
- # we nned to mirror it.
- section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0))
- edges2 = section[j].Edges
- sections.extend(edges)
- sections.extend(edges2)
- for i in range(0,nT):
- pos = sectionsT[i]
- section = shape.slice(Vector(0.0,0.0,1.0), pos)
- for j in range(0,len(section)):
- edges = section[j].Edges
- # We have 3 cases,
- # * when section is below draft, then only board section will be considered
- # * When section is draft, then all section must be preserved
- # * When section is above draft, then only starboard will be considered
- if pos > T + 0.01:
- # Look for edges at the wrong side and delete it
- for k in range(len(edges)-1,-1,-1):
- edge = edges[k]
- bbox = edge.BoundBox
- if bbox.YMax > 0.001:
- del edges[k]
- elif pos < T - 0.01:
- # Look for edges at the wrong side and delete it
- for k in range(len(edges)-1,-1,-1):
- edge = edges[k]
- bbox = edge.BoundBox
- if bbox.YMin < -0.001:
- del edges[k]
- sections.extend(edges)
- # Convert all BSplines into a shape
- if not sections:
- msg = Translator.translate('Any valid ship section found')
- FreeCAD.Console.PrintWarning(msg)
- return
- obj = sections[0]
- for i in range(1,len(sections)):
- obj = obj.oldFuse(sections[i]) # Only group the edges, don't try to build more complex entities
- # Create the representable object
- Part.show(obj)
- objs = FreeCAD.ActiveDocument.Objects
- self.obj = objs[len(objs)-1]
- self.obj.Label = 'OutlineDraw'
- return self.obj
-
- def clean(self):
- """ Erase all annotations from screen.
- """
- if not self.obj:
- return
- FreeCAD.ActiveDocument.removeObject(self.obj.Name)
- self.obj = None
+ def update(self, L, B, T, sectionsL, sectionsB, sectionsT, shape):
+ """ Update the 3D view printing annotations.
+ @param L Ship Lpp.
+ @param B Ship beam.
+ @param T Ship draft.
+ @param sectionsL Transversal sections.
+ @param sectionsB Longitudinal sections.
+ @param sectionsT Water lines.
+ @param shape Ship surfaces shell
+ @return Sections object. None if errors happens.
+ """
+ msg = QtGui.QApplication.translate("ship_console", "Computing sections",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + '...\n')
+ # Destroy all previous entities
+ self.clean()
+ # Receive data
+ nL = len(sectionsL)
+ nB = len(sectionsB)
+ nT = len(sectionsT)
+ if not (nL or nB or nT):
+ return None
+ # Found sections
+ sections = []
+ for i in range(0,nL):
+ pos = sectionsL[i]
+ # Cut ship
+ section = shape.slice(Vector(1.0,0.0,0.0), pos)
+ for j in range(0,len(section)):
+ edges = section[j].Edges
+ # We have 3 cases,
+ # * when section is before midship, then only starboard section will be considered
+ # * When section is midship, then all section must be preserved
+ # * When section is after midship, then only board will be considered
+ if pos > 0.01:
+ # Look for edges at the wrong side and delete it
+ for k in range(len(edges)-1,-1,-1):
+ edge = edges[k]
+ bbox = edge.BoundBox
+ if bbox.YMin < -0.001:
+ del edges[k]
+ elif pos < -0.01:
+ # Look for edges at the wrong side and delete it
+ for k in range(len(edges)-1,-1,-1):
+ edge = edges[k]
+ bbox = edge.BoundBox
+ if bbox.YMax > 0.001:
+ del edges[k]
+ sections.extend(edges)
+ for i in range(0,nB):
+ pos = sectionsB[i]
+ section = shape.slice(Vector(0.0,1.0,0.0), pos)
+ for j in range(0,len(section)):
+ edges = section[j].Edges
+ # Longitudinal sections will preserve board and starboard ever. Since we take from one side,
+ # we nned to mirror it.
+ section[j] = section[j].mirror(Vector(0.0, 0.0, 0.0),Vector(0.0, 1.0, 0.0))
+ edges2 = section[j].Edges
+ sections.extend(edges)
+ sections.extend(edges2)
+ for i in range(0,nT):
+ pos = sectionsT[i]
+ section = shape.slice(Vector(0.0,0.0,1.0), pos)
+ for j in range(0,len(section)):
+ edges = section[j].Edges
+ # We have 3 cases,
+ # * when section is below draft, then only board section will be considered
+ # * When section is draft, then all section must be preserved
+ # * When section is above draft, then only starboard will be considered
+ if pos > T + 0.01:
+ # Look for edges at the wrong side and delete it
+ for k in range(len(edges)-1,-1,-1):
+ edge = edges[k]
+ bbox = edge.BoundBox
+ if bbox.YMax > 0.001:
+ del edges[k]
+ elif pos < T - 0.01:
+ # Look for edges at the wrong side and delete it
+ for k in range(len(edges)-1,-1,-1):
+ edge = edges[k]
+ bbox = edge.BoundBox
+ if bbox.YMin < -0.001:
+ del edges[k]
+ sections.extend(edges)
+ # Convert all BSplines into a shape
+ if not sections:
+ msg = QtGui.QApplication.translate("ship_console", "Any valid ship section found",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintWarning(msg + '\n')
+ return
+ obj = sections[0]
+ for i in range(1,len(sections)):
+ obj = obj.oldFuse(sections[i]) # Only group the edges, don't try to build more complex entities
+ # Create the representable object
+ Part.show(obj)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.obj = objs[len(objs)-1]
+ self.obj.Label = 'OutlineDraw'
+ return self.obj
+
+ def clean(self):
+ """ Erase all annotations from screen.
+ """
+ if not self.obj:
+ return
+ FreeCAD.ActiveDocument.removeObject(self.obj.Name)
+ self.obj = None
diff --git a/src/Mod/Ship/shipOutlineDraw/TaskPanel.py b/src/Mod/Ship/shipOutlineDraw/TaskPanel.py
index 393e11ea8c..239b21a00c 100644
--- a/src/Mod/Ship/shipOutlineDraw/TaskPanel.py
+++ b/src/Mod/Ship/shipOutlineDraw/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -29,320 +29,345 @@ from PyQt4 import QtGui,QtCore
# Module
import Preview, Plot
import Instance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/shipOutlineDraw/TaskPanel.ui"
- self.ship = None
- self.skip = False
- self.LSections = []
- self.BSections = []
- self.TSections = []
- self.obj = None
- self.preview = Preview.Preview()
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/shipOutlineDraw/TaskPanel.ui"
+ self.ship = None
+ self.skip = False
+ self.LSections = []
+ self.BSections = []
+ self.TSections = []
+ self.obj = None
+ self.preview = Preview.Preview()
- def accept(self):
- self.saveSections()
- self.obj = Plot.Plot(self.form.scale.value(), self.obj.Shape, self.ship.Shape)
- self.preview.clean()
- self.obj.Label = 'OutlineDraw'
- return True
+ def accept(self):
+ self.saveSections()
+ self.obj = Plot.Plot(self.form.scale.value(), self.obj.Shape, self.ship.Shape)
+ self.preview.clean()
+ self.obj.Label = 'OutlineDraw'
+ return True
- def reject(self):
- self.preview.clean()
- return True
+ def reject(self):
+ self.preview.clean()
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.sections = form.findChild(QtGui.QTableWidget, "Sections")
- try:
- form.sections.setInputMethodHints(QtCore.Qt.ImhFormattedNumbersOnly)
- except:
- msg = Translator.translate("QtCore.Qt.ImhFormattedNumbersOnly not supported, will not used.\n")
- App.Console.PrintWarning(msg)
- form.sectionType = form.findChild(QtGui.QComboBox, "SectionType")
- form.deleteButton = form.findChild(QtGui.QPushButton, "DeleteButton")
- form.nSections = form.findChild(QtGui.QSpinBox, "NSections")
- form.createButton = form.findChild(QtGui.QPushButton, "CreateButton")
- form.scale = form.findChild(QtGui.QSpinBox, "Scale")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
- # Connect Signals and Slots
- QtCore.QObject.connect(form.sectionType,QtCore.SIGNAL("activated(QString)"),self.onSectionType)
- QtCore.QObject.connect(form.sections,QtCore.SIGNAL("cellChanged(int,int)"),self.onTableItem);
- QtCore.QObject.connect(form.deleteButton,QtCore.SIGNAL("pressed()"),self.onDeleteButton)
- QtCore.QObject.connect(form.createButton,QtCore.SIGNAL("pressed()"),self.onCreateButton)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.sections = form.findChild(QtGui.QTableWidget, "Sections")
+ try:
+ form.sections.setInputMethodHints(QtCore.Qt.ImhFormattedNumbersOnly)
+ hasImhFormattedNumbersOnly = True
+ except:
+ hasImhFormattedNumbersOnly = False
+ form.sectionType = form.findChild(QtGui.QComboBox, "SectionType")
+ form.deleteButton = form.findChild(QtGui.QPushButton, "DeleteButton")
+ form.nSections = form.findChild(QtGui.QSpinBox, "NSections")
+ form.createButton = form.findChild(QtGui.QPushButton, "CreateButton")
+ form.scale = form.findChild(QtGui.QSpinBox, "Scale")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.sectionType,QtCore.SIGNAL("activated(QString)"),self.onSectionType)
+ QtCore.QObject.connect(form.sections,QtCore.SIGNAL("cellChanged(int,int)"),self.onTableItem);
+ QtCore.QObject.connect(form.deleteButton,QtCore.SIGNAL("pressed()"),self.onDeleteButton)
+ QtCore.QObject.connect(form.createButton,QtCore.SIGNAL("pressed()"),self.onCreateButton)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- # Get selected objects
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- continue
- if obj.IsShip:
- # Test if another ship already selected
- if self.ship:
- msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.ship = obj
- # Test if any valid ship was selected
- if not self.ship:
- msg = Translator.translate("Ship instance must be selected (no valid ship found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- # Load sections (if exist)
- self.loadSections()
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ # Get selected objects
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ continue
+ if obj.IsShip:
+ # Test if another ship already selected
+ if self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "More than one ship selected (extra ships will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.ship = obj
+ # Test if any valid ship was selected
+ if not self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no valid ship found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Load sections (if exist)
+ self.loadSections()
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Outline draw"))
- self.form.findChild(QtGui.QGroupBox, "AutoCreateBox").setTitle(Translator.translate("Auto create"))
- self.form.findChild(QtGui.QGroupBox, "ScaleBox").setTitle(Translator.translate("Scale"))
- self.form.findChild(QtGui.QPushButton, "DeleteButton").setText(Translator.translate("Delete all sections"))
- self.form.findChild(QtGui.QPushButton, "CreateButton").setText(Translator.translate("Create sections"))
- self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(0, Translator.translate("Transversal"))
- self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(1, Translator.translate("Longitudinal"))
- self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(2, Translator.translate("Water lines"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("ship_outline","Outline draw",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "AutoCreateBox").setTitle(QtGui.QApplication.translate("ship_outline","Auto create",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "ScaleBox").setTitle(QtGui.QApplication.translate("ship_outline","Scale",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QPushButton, "DeleteButton").setText(QtGui.QApplication.translate("ship_outline",
+ "Delete all sections",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QPushButton, "CreateButton").setText(QtGui.QApplication.translate("ship_outline",
+ "Create sections",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(0, QtGui.QApplication.translate("ship_outline",
+ "Transversal",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(1, QtGui.QApplication.translate("ship_outline",
+ "Longitudinal",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QComboBox, "SectionType").setItemText(2, QtGui.QApplication.translate("ship_outline",
+ "Water lines",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onSectionType(self):
- """ Function called when the section type is changed.
- """
- # Search section type
- ID = self.form.sectionType.currentIndex()
- self.setSectionType(ID)
+ def onSectionType(self):
+ """ Function called when the section type is changed.
+ """
+ # Search section type
+ ID = self.form.sectionType.currentIndex()
+ self.setSectionType(ID)
- def setSectionType(self, ID):
- """ Function that set the type section related table.
- @param ID Id of the section to set: \n
- 0 = Transversal sections \n
- 1 = Longitudinal sections \n
- 2 = Water lines
- """
- SectionList = []
- if ID == 0:
- SectionList = self.LSections[:]
- elif ID == 1:
- SectionList = self.BSections[:]
- elif ID == 2:
- SectionList = self.TSections[:]
- nRow = len(SectionList)
- self.form.sections.clearContents()
- self.form.sections.setRowCount(nRow+1)
- if not nRow:
- self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
- return
- self.skip = True # Avoid recursive call to OnItem
- for i in range(0,nRow):
- if i == nRow-1:
- self.skip = False
- string = '%f' % (SectionList[i])
- item = QtGui.QTableWidgetItem(string)
- self.form.sections.setItem(i,0,item)
+ def setSectionType(self, ID):
+ """ Function that set the type section related table.
+ @param ID Id of the section to set: \n
+ 0 = Transversal sections \n
+ 1 = Longitudinal sections \n
+ 2 = Water lines
+ """
+ SectionList = []
+ if ID == 0:
+ SectionList = self.LSections[:]
+ elif ID == 1:
+ SectionList = self.BSections[:]
+ elif ID == 2:
+ SectionList = self.TSections[:]
+ nRow = len(SectionList)
+ self.form.sections.clearContents()
+ self.form.sections.setRowCount(nRow+1)
+ if not nRow:
+ self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
+ return
+ self.skip = True # Avoid recursive call to OnItem
+ for i in range(0,nRow):
+ if i == nRow-1:
+ self.skip = False
+ string = '%f' % (SectionList[i])
+ item = QtGui.QTableWidgetItem(string)
+ self.form.sections.setItem(i,0,item)
- def onTableItem(self, row, column):
- """ Function called when an item of table is changed.
- @param row Changed item row
- @param column Changed item column
- """
- if self.skip:
- return
- # Ensure that exist one empty item at least
- nRow = self.form.sections.rowCount()
- item = self.form.sections.item(nRow-1,0)
- if item :
- if(item.text() != ''):
- self.form.sections.setRowCount(nRow+1)
- # Ensure that new item is a number
- ID = self.form.sectionType.currentIndex()
- if ID == 0:
- SectionList = self.LSections[:]
- elif ID == 1:
- SectionList = self.BSections[:]
- elif ID == 2:
- SectionList = self.TSections[:]
- item = self.form.sections.item(row,column)
- (number,flag) = item.text().toFloat()
- if not flag:
- if len(SectionList) > nRow-1:
- number = SectionList[nRow-1]
- else:
- number = 0.0
- string = '%f' % (number)
- item.setText(string)
- # Regenerate the list
- SectionList = []
- for i in range(0,nRow):
- item = self.form.sections.item(i,0)
- if item:
- (number,flag) = item.text().toFloat()
- SectionList.append(number)
- # Paste it into the class list
- ID = self.form.sectionType.currentIndex()
- if ID == 0:
- self.LSections = SectionList[:]
- elif ID == 1:
- self.BSections = SectionList[:]
- elif ID == 2:
- self.TSections = SectionList[:]
- self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
-
- def onDeleteButton(self):
- """ Function called when the delete button is pressed.
- All sections mustt be erased
- """
- self.form.sections.clearContents()
- self.form.sections.setRowCount(1)
- # Clear active list
- ID = self.form.sectionType.currentIndex()
- if ID == 0:
- self.LSections = []
- elif ID == 1:
- self.BSections = []
- elif ID == 2:
- self.TSections = []
- self.setSectionType(ID)
-
- def onCreateButton(self):
- """ Function called when create button is pressed.
- Several sections must be added to list
- """
- # Recolect data
- nSections = self.form.nSections.value()
- SectionList = []
- L = 0.0
- ID = self.form.sectionType.currentIndex()
- if ID == 0:
- L = self.ship.Length
- d = L / (nSections-1) # Distance between sections
- start = - L/2.0 # Ship must have 0.0 at coordinates origin
- elif ID == 1:
- L = -0.5*self.ship.Beam # Ship must be in y<0.0
- d = L / (nSections+1.0) # Distance between sections
- start = d
- elif ID == 2:
- L = self.ship.Draft
- d = L / (nSections) # Distance between sections
- start = d
- # Calculate sections
- for i in range(0,nSections):
- sec = i*d + start
- SectionList.append(sec)
- # Paste into class table
- if ID == 0:
- self.LSections = SectionList[:]
- elif ID == 1:
- self.BSections = SectionList[:]
- elif ID == 2:
- self.TSections = SectionList[:]
- # Print the table
- self.setSectionType(ID)
+ def onTableItem(self, row, column):
+ """ Function called when an item of table is changed.
+ @param row Changed item row
+ @param column Changed item column
+ """
+ if self.skip:
+ return
+ # Ensure that exist one empty item at least
+ nRow = self.form.sections.rowCount()
+ item = self.form.sections.item(nRow-1,0)
+ if item :
+ if(item.text() != ''):
+ self.form.sections.setRowCount(nRow+1)
+ # Ensure that new item is a number
+ ID = self.form.sectionType.currentIndex()
+ if ID == 0:
+ SectionList = self.LSections[:]
+ elif ID == 1:
+ SectionList = self.BSections[:]
+ elif ID == 2:
+ SectionList = self.TSections[:]
+ item = self.form.sections.item(row,column)
+ (number,flag) = item.text().toFloat()
+ if not flag:
+ if len(SectionList) > nRow-1:
+ number = SectionList[nRow-1]
+ else:
+ number = 0.0
+ string = '%f' % (number)
+ item.setText(string)
+ # Regenerate the list
+ SectionList = []
+ for i in range(0,nRow):
+ item = self.form.sections.item(i,0)
+ if item:
+ (number,flag) = item.text().toFloat()
+ SectionList.append(number)
+ # Paste it into the class list
+ ID = self.form.sectionType.currentIndex()
+ if ID == 0:
+ self.LSections = SectionList[:]
+ elif ID == 1:
+ self.BSections = SectionList[:]
+ elif ID == 2:
+ self.TSections = SectionList[:]
+ self.obj = self.preview.update(self.ship.Length, self.ship.Beam, self.ship.Draft, self.LSections,self.BSections,self.TSections, self.ship.Shape)
+
+ def onDeleteButton(self):
+ """ Function called when the delete button is pressed.
+ All sections mustt be erased
+ """
+ self.form.sections.clearContents()
+ self.form.sections.setRowCount(1)
+ # Clear active list
+ ID = self.form.sectionType.currentIndex()
+ if ID == 0:
+ self.LSections = []
+ elif ID == 1:
+ self.BSections = []
+ elif ID == 2:
+ self.TSections = []
+ self.setSectionType(ID)
+
+ def onCreateButton(self):
+ """ Function called when create button is pressed.
+ Several sections must be added to list
+ """
+ # Recolect data
+ nSections = self.form.nSections.value()
+ SectionList = []
+ L = 0.0
+ ID = self.form.sectionType.currentIndex()
+ if ID == 0:
+ L = self.ship.Length
+ d = L / (nSections-1) # Distance between sections
+ start = - L/2.0 # Ship must have 0.0 at coordinates origin
+ elif ID == 1:
+ L = -0.5*self.ship.Beam # Ship must be in y<0.0
+ d = L / (nSections+1.0) # Distance between sections
+ start = d
+ elif ID == 2:
+ L = self.ship.Draft
+ d = L / (nSections) # Distance between sections
+ start = d
+ # Calculate sections
+ for i in range(0,nSections):
+ sec = i*d + start
+ SectionList.append(sec)
+ # Paste into class table
+ if ID == 0:
+ self.LSections = SectionList[:]
+ elif ID == 1:
+ self.BSections = SectionList[:]
+ elif ID == 2:
+ self.TSections = SectionList[:]
+ # Print the table
+ self.setSectionType(ID)
- def loadSections(self):
- """ Loads from ship object previously selected sections.
- """
- # Load sections
- props = self.ship.PropertiesList
- flag=True
- try:
- props.index("LSections")
- except ValueError:
- flag=False
- if flag:
- self.LSections = self.ship.LSections[:]
- self.BSections = self.ship.BSections[:]
- self.TSections = self.ship.TSections[:]
- # Load scale too
- flag=True
- try:
- props.index("PlotScale")
- except ValueError:
- flag=False
- if flag:
- self.form.scale.setValue(self.ship.PlotScale)
- # Set UI
- self.setSectionType(self.form.sectionType.currentIndex())
+ def loadSections(self):
+ """ Loads from ship object previously selected sections.
+ """
+ # Load sections
+ props = self.ship.PropertiesList
+ flag=True
+ try:
+ props.index("LSections")
+ except ValueError:
+ flag=False
+ if flag:
+ self.LSections = self.ship.LSections[:]
+ self.BSections = self.ship.BSections[:]
+ self.TSections = self.ship.TSections[:]
+ # Load scale too
+ flag=True
+ try:
+ props.index("PlotScale")
+ except ValueError:
+ flag=False
+ if flag:
+ self.form.scale.setValue(self.ship.PlotScale)
+ # Set UI
+ self.setSectionType(self.form.sectionType.currentIndex())
- def saveSections(self):
- """ Save selected sections into ship object.
- """
- # Test if previous section have been created
- props = self.ship.PropertiesList
- try:
- props.index("LSections")
- except ValueError:
- # Create new sections list
- self.ship.addProperty("App::PropertyFloatList","LSections","Ship", str(Translator.translate("Transversal sections position [m]"))).LSections=[]
- self.ship.addProperty("App::PropertyFloatList","BSections","Ship", str(Translator.translate("Longitudinal sections position [m]"))).BSections=[]
- self.ship.addProperty("App::PropertyFloatList","TSections","Ship", str(Translator.translate("Water lines position [m]"))).TSections=[]
- # Save sections
- self.ship.LSections = self.LSections[:]
- self.ship.BSections = self.BSections[:]
- self.ship.TSections = self.TSections[:]
- # Save also scale
- try:
- props.index("PlotScale")
- except ValueError:
- self.ship.addProperty("App::PropertyInteger","PlotScale","Ship", str(Translator.translate("Plot scale (1:scale format)"))).PlotScale=250
- self.ship.PlotScale = self.form.scale.value()
+ def saveSections(self):
+ """ Save selected sections into ship object.
+ """
+ # Test if previous section have been created
+ props = self.ship.PropertiesList
+ try:
+ props.index("LSections")
+ except ValueError:
+ # Create new sections list
+ tooltip = str(QtGui.QApplication.translate("ship_outline","Transversal sections position [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloatList","LSections","Ship", tooltip).LSections=[]
+ tooltip = str(QtGui.QApplication.translate("ship_outline","Longitudinal sections position [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloatList","BSections","Ship", tooltip).BSections=[]
+ tooltip = str(QtGui.QApplication.translate("ship_outline","Water lines position [m]",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyFloatList","TSections","Ship", tooltip).TSections=[]
+ # Save sections
+ self.ship.LSections = self.LSections[:]
+ self.ship.BSections = self.BSections[:]
+ self.ship.TSections = self.TSections[:]
+ # Save also scale
+ try:
+ props.index("PlotScale")
+ except ValueError:
+ tooltip = str(QtGui.QApplication.translate("ship_outline","Plot scale (1:scale format)",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.ship.addProperty("App::PropertyInteger","PlotScale","Ship", tooltip).PlotScale=250
+ self.ship.PlotScale = self.form.scale.value()
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui b/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui
index 0d41cbda2e..9d6f67ad94 100644
--- a/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui
+++ b/src/Mod/Ship/shipOutlineDraw/TaskPanel.ui
@@ -6,7 +6,7 @@
0
0
- 298
+ 316
402
@@ -20,10 +20,16 @@
0
- QLayout::SetMinimumSize
+ QLayout::SetDefaultConstraint
-
+
+
+ 0
+ 0
+
+
142
@@ -32,7 +38,7 @@
- 160
+ 16777215
32
@@ -61,6 +67,12 @@
-
+
+
+ 0
+ 0
+
+
142
@@ -69,7 +81,7 @@
- 160
+ 16777215
32
@@ -80,9 +92,15 @@
-
+
+
+ 0
+ 0
+
+
- 142
+ 0
256
@@ -95,53 +113,71 @@
Auto create
-
-
-
- 0
- 30
- 142
- 27
-
-
-
-
- 142
- 24
-
-
-
-
- 160
- 32
-
-
-
-
-
-
- 0
- 70
- 142
- 27
-
-
-
-
- 142
- 24
-
-
-
-
- 160
- 32
-
-
-
- Create sections
-
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 142
+ 24
+
+
+
+
+ 16777215
+ 32
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 142
+ 24
+
+
+
+
+ 16777215
+ 32
+
+
+
+ Create sections
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 140
+
+
+
+
+
@@ -156,6 +192,12 @@
-
+
+
+ 0
+ 0
+
+
128
@@ -164,7 +206,7 @@
- 128
+ 16777215
16777215
@@ -199,75 +241,69 @@
- 128
+ 0
72
- 256
+ 16777215
96
Plane scale
-
-
-
- 0
- 30
- 251
- 41
-
-
-
-
-
-
-
-
- 16
- 16
-
-
-
-
- 32
- 16777215
-
-
-
- 1:
-
-
- Qt::AlignCenter
-
-
-
- -
-
-
-
- 0
- 16
-
-
-
- 1
-
-
- 1000000
-
-
- 50
-
-
- 250
-
-
-
-
-
+
+ -
+
+
-
+
+
+
+ 16
+ 16
+
+
+
+
+ 32
+ 16777215
+
+
+
+ 1:
+
+
+ Qt::AlignCenter
+
+
+
+ -
+
+
+
+ 0
+ 16
+
+
+
+ 1
+
+
+ 1000000
+
+
+ 50
+
+
+ 250
+
+
+
+
+
+
diff --git a/src/Mod/Ship/shipOutlineDraw/__init__.py b/src/Mod/Ship/shipOutlineDraw/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/shipOutlineDraw/__init__.py
+++ b/src/Mod/Ship/shipOutlineDraw/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/shipUtils/Math.py b/src/Mod/Ship/shipUtils/Math.py
index 018467c58f..6b89a5279a 100644
--- a/src/Mod/Ship/shipUtils/Math.py
+++ b/src/Mod/Ship/shipUtils/Math.py
@@ -1,57 +1,57 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
def isAprox(a,b,tol=0.000001):
- """returns if a value is into (b-tol,b+tol)
- @param a Value to compare.
- @param b Center of valid interval
- @param tol Radius of valid interval
- @return True if a is into (b-tol,b+tol), False otherwise
- """
- if (a < b+abs(tol)) and (a > b-abs(tol)):
- return True
- return False
+ """returns if a value is into (b-tol,b+tol)
+ @param a Value to compare.
+ @param b Center of valid interval
+ @param tol Radius of valid interval
+ @return True if a is into (b-tol,b+tol), False otherwise
+ """
+ if (a < b+abs(tol)) and (a > b-abs(tol)):
+ return True
+ return False
def isSamePoint(a,b,tol=0.000001):
- """returns if two points are the same with a provided tolerance
- @param a Point to compare.
- @param b Reference point.
- @param tol Radius of valid interval
- @return True if twice point are the same, False otherwise
- @note FreeCAD::Base::Vector types must be provided
- """
- if isAprox(a.x,b.x,tol) and isAprox(a.y,b.y,tol) and isAprox(a.z,b.z,tol):
- return True
- return False
+ """returns if two points are the same with a provided tolerance
+ @param a Point to compare.
+ @param b Reference point.
+ @param tol Radius of valid interval
+ @return True if twice point are the same, False otherwise
+ @note FreeCAD::Base::Vector types must be provided
+ """
+ if isAprox(a.x,b.x,tol) and isAprox(a.y,b.y,tol) and isAprox(a.z,b.z,tol):
+ return True
+ return False
def isSameVertex(a,b,tol=0.0001):
- """returns if two points are the same with a provided tolerance
- @param a Point to compare.
- @param b Reference point.
- @param tol Radius of valid interval
- @return True if twice point are the same, False otherwise
- @note FreeCAD::Part::Vertex types must be provided
- """
- if isAprox(a.X,b.X,tol) and isAprox(a.Y,b.Y,tol) and isAprox(a.Z,b.Z,tol):
- return True
- return False
+ """returns if two points are the same with a provided tolerance
+ @param a Point to compare.
+ @param b Reference point.
+ @param tol Radius of valid interval
+ @return True if twice point are the same, False otherwise
+ @note FreeCAD::Part::Vertex types must be provided
+ """
+ if isAprox(a.X,b.X,tol) and isAprox(a.Y,b.Y,tol) and isAprox(a.Z,b.Z,tol):
+ return True
+ return False
diff --git a/src/Mod/Ship/shipUtils/Paths.py b/src/Mod/Ship/shipUtils/Paths.py
index 0ea1168ea0..e9798b50a8 100644
--- a/src/Mod/Ship/shipUtils/Paths.py
+++ b/src/Mod/Ship/shipUtils/Paths.py
@@ -1,55 +1,55 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import FreeCAD, FreeCADGui, os
def modulePath():
- """returns the current Ship design module path
- @return Module path"""
- path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Ship"
- path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Ship"
- if os.path.exists(path2):
- return path2
- else:
- return path1
+ """returns the current Ship design module path
+ @return Module path"""
+ path1 = FreeCAD.ConfigGet("AppHomePath") + "Mod/Ship"
+ path2 = FreeCAD.ConfigGet("UserAppData") + "Mod/Ship"
+ if os.path.exists(path2):
+ return path2
+ else:
+ return path1
def iconsPath():
- """returns the current Ship design module icons path
- @return Icons path"""
- path = modulePath() + "/Icons"
- return path
+ """returns the current Ship design module icons path
+ @return Icons path"""
+ path = modulePath() + "/resources/icons"
+ return path
def getPathFromFile(fileName):
- """ Gets the directory path from a file name
- @param fileName Name of the file
- @return Directory path.
- """
- if not fileName:
- return ''
- i = 1
- try:
- while 1:
- i = fileName.index("/", i+1)
- except ValueError:
- pass
- return fileName[0:i+1]
+ """ Gets the directory path from a file name
+ @param fileName Name of the file
+ @return Directory path.
+ """
+ if not fileName:
+ return ''
+ i = 1
+ try:
+ while 1:
+ i = fileName.index("/", i+1)
+ except ValueError:
+ pass
+ return fileName[0:i+1]
diff --git a/src/Mod/Ship/shipUtils/Translator.py b/src/Mod/Ship/shipUtils/Translator.py
deleted file mode 100644
index 1fe7f61e8d..0000000000
--- a/src/Mod/Ship/shipUtils/Translator.py
+++ /dev/null
@@ -1,30 +0,0 @@
-#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
-#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
-#* License along with this program; if not, write to the Free Software *
-#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
-#***************************************************************************
-
-import FreeCAD, FreeCADGui, os
-from PyQt4 import QtCore,QtGui
-
-def translate(text,context="ship"):
- "convenience function for Qt translator"
- return QtGui.QApplication.translate(context, text, None,
- QtGui.QApplication.UnicodeUTF8)
diff --git a/src/Mod/Ship/simCreate/TaskPanel.py b/src/Mod/Ship/simCreate/TaskPanel.py
index 38ea00b96a..7e200532b2 100644
--- a/src/Mod/Ship/simCreate/TaskPanel.py
+++ b/src/Mod/Ship/simCreate/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -28,150 +28,158 @@ import FreeCADGui as Gui
from PyQt4 import QtGui,QtCore
# Module
import SimInstance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/simCreate/TaskPanel.ui"
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/simCreate/TaskPanel.ui"
- def accept(self):
- form = self.form
- # Read waves data
- w = []
- for i in range(0,form.waves.rowCount() - 1):
- item = form.waves.item(i,0)
- A = item.text().toFloat()[0]
- item = form.waves.item(i,1)
- T = item.text().toFloat()[0]
- item = form.waves.item(i,2)
- phi = item.text().toFloat()[0]
- item = form.waves.item(i,3)
- head = item.text().toFloat()[0]
- w.append([A,T,phi,head])
- obj = App.ActiveDocument.addObject("Part::FeaturePython","ShipSimulation")
- sim = SimInstance.ShipSimulation(obj,
- [form.length.value(), form.beam.value(), form.n.value()],
- w)
- SimInstance.ViewProviderShipSimulation(obj.ViewObject)
- return True
+ def accept(self):
+ form = self.form
+ # Read waves data
+ w = []
+ for i in range(0,form.waves.rowCount() - 1):
+ item = form.waves.item(i,0)
+ A = item.text().toFloat()[0]
+ item = form.waves.item(i,1)
+ T = item.text().toFloat()[0]
+ item = form.waves.item(i,2)
+ phi = item.text().toFloat()[0]
+ item = form.waves.item(i,3)
+ head = item.text().toFloat()[0]
+ w.append([A,T,phi,head])
+ obj = App.ActiveDocument.addObject("Part::FeaturePython","ShipSimulation")
+ sim = SimInstance.ShipSimulation(obj,
+ [form.length.value(), form.beam.value(), form.n.value()],
+ w)
+ SimInstance.ViewProviderShipSimulation(obj.ViewObject)
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.length = form.findChild(QtGui.QDoubleSpinBox, "Length")
- form.beam = form.findChild(QtGui.QDoubleSpinBox, "Beam")
- form.n = form.findChild(QtGui.QSpinBox, "N")
- form.waves = form.findChild(QtGui.QTableWidget, "Waves")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.length, QtCore.SIGNAL("valueChanged(double)"), self.onFS)
- QtCore.QObject.connect(form.beam, QtCore.SIGNAL("valueChanged(double)"), self.onFS)
- QtCore.QObject.connect(form.n, QtCore.SIGNAL("valueChanged(int)"), self.onFS)
- QtCore.QObject.connect(form.waves,QtCore.SIGNAL("cellChanged(int,int)"),self.onWaves);
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.length = form.findChild(QtGui.QDoubleSpinBox, "Length")
+ form.beam = form.findChild(QtGui.QDoubleSpinBox, "Beam")
+ form.n = form.findChild(QtGui.QSpinBox, "N")
+ form.waves = form.findChild(QtGui.QTableWidget, "Waves")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.length, QtCore.SIGNAL("valueChanged(double)"), self.onFS)
+ QtCore.QObject.connect(form.beam, QtCore.SIGNAL("valueChanged(double)"), self.onFS)
+ QtCore.QObject.connect(form.n, QtCore.SIGNAL("valueChanged(int)"), self.onFS)
+ QtCore.QObject.connect(form.waves,QtCore.SIGNAL("cellChanged(int,int)"),self.onWaves);
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Create a new ship simulation"))
- self.form.findChild(QtGui.QGroupBox, "FSDataBox").setTitle(Translator.translate("Free surface"))
- self.form.findChild(QtGui.QLabel, "LengthLabel").setText(Translator.translate("Length"))
- self.form.findChild(QtGui.QLabel, "BeamLabel").setText(Translator.translate("Beam"))
- self.form.findChild(QtGui.QLabel, "NLabel").setText(Translator.translate("Number of points"))
- self.form.findChild(QtGui.QGroupBox, "WavesDataBox").setTitle(Translator.translate("Waves"))
- labels = []
- labels.append(Translator.translate("Amplitude") + " [m]")
- labels.append(Translator.translate("Period") + " [s]")
- labels.append(Translator.translate("Phase") + " [rad]")
- labels.append(Translator.translate("Heading") + " [deg]")
- self.form.waves.setHorizontalHeaderLabels(labels)
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("shipsim_create","Create a new ship simulation",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "FSDataBox").setTitle(QtGui.QApplication.translate("shipsim_create","Free surface",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "LengthLabel").setText(QtGui.QApplication.translate("shipsim_create","Length",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "BeamLabel").setText(QtGui.QApplication.translate("shipsim_create","Breadth",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "NLabel").setText(QtGui.QApplication.translate("shipsim_create","Number of points",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "WavesDataBox").setTitle(QtGui.QApplication.translate("shipsim_create","Waves",
+ None,QtGui.QApplication.UnicodeUTF8))
+ labels = []
+ labels.append(QtGui.QApplication.translate("shipsim_create","Amplitude",
+ None,QtGui.QApplication.UnicodeUTF8) + " [m]")
+ labels.append(QtGui.QApplication.translate("shipsim_create","Period",
+ None,QtGui.QApplication.UnicodeUTF8) + " [s]")
+ labels.append(QtGui.QApplication.translate("shipsim_create","Phase",
+ None,QtGui.QApplication.UnicodeUTF8) + " [rad]")
+ labels.append(QtGui.QApplication.translate("shipsim_create","Heading",
+ None,QtGui.QApplication.UnicodeUTF8) + " [deg]")
+ self.form.waves.setHorizontalHeaderLabels(labels)
- def onFS(self, value):
- """ Method called when free surface data is changed.
- @param value Changed value.
- """
- pass
+ def onFS(self, value):
+ """ Method called when free surface data is changed.
+ @param value Changed value.
+ """
+ pass
- def onWaves(self, row, column):
- """ Method called when waves data is changed.
- @param row Affected row.
- @param col Affected column.
- """
- item = self.form.waves.item(row,column)
- # Row deletion
- if column == 0:
- if not item.text():
- self.form.waves.removeRow(row)
- # Ensure that exist one empty item at the end
- nRow = self.form.waves.rowCount()
- if not nRow:
- self.form.waves.setRowCount(1)
- else:
- last = self.form.waves.item(nRow-1,0)
- if last:
- if(last.text() != ''):
- self.form.waves.setRowCount(nRow+1)
- # Fields must be numbers
- for i in range(0,self.form.waves.rowCount()-1): # Avoid last row
- for j in range(0,self.form.waves.columnCount()): # Avoid name column
- item = self.form.waves.item(i,j)
- if not item:
- item = QtGui.QTableWidgetItem('0.0')
- self.form.waves.setItem(i,j,item)
- continue
- (number,flag) = item.text().toFloat()
- if not flag:
- item.setText('0.0')
+ def onWaves(self, row, column):
+ """ Method called when waves data is changed.
+ @param row Affected row.
+ @param col Affected column.
+ """
+ item = self.form.waves.item(row,column)
+ # Row deletion
+ if column == 0:
+ if not item.text():
+ self.form.waves.removeRow(row)
+ # Ensure that exist one empty item at the end
+ nRow = self.form.waves.rowCount()
+ if not nRow:
+ self.form.waves.setRowCount(1)
+ else:
+ last = self.form.waves.item(nRow-1,0)
+ if last:
+ if(last.text() != ''):
+ self.form.waves.setRowCount(nRow+1)
+ # Fields must be numbers
+ for i in range(0,self.form.waves.rowCount()-1): # Avoid last row
+ for j in range(0,self.form.waves.columnCount()): # Avoid name column
+ item = self.form.waves.item(i,j)
+ if not item:
+ item = QtGui.QTableWidgetItem('0.0')
+ self.form.waves.setItem(i,j,item)
+ continue
+ (number,flag) = item.text().toFloat()
+ if not flag:
+ item.setText('0.0')
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/simCreate/__init__.py b/src/Mod/Ship/simCreate/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/simCreate/__init__.py
+++ b/src/Mod/Ship/simCreate/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/simPost/TaskPanel.py b/src/Mod/Ship/simPost/TaskPanel.py
index 9c6ca53c33..a607c71472 100644
--- a/src/Mod/Ship/simPost/TaskPanel.py
+++ b/src/Mod/Ship/simPost/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -30,127 +30,127 @@ from PyQt4 import QtGui,QtCore
import pyopencl as cl
# Module
import SimInstance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
from simRun import Simulation
Sim = Simulation.FreeCADShipSimulation
-# from Simulation import FreeCADShipSimulation as Sim
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/simPost/TaskPanel.ui"
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/simPost/TaskPanel.ui"
- def accept(self):
- return True
+ def accept(self):
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.time = form.findChild(QtGui.QLabel, "TimeLabel")
- form.first = form.findChild(QtGui.QPushButton, "First")
- form.prev = form.findChild(QtGui.QPushButton, "Prev")
- form.now = form.findChild(QtGui.QPushButton, "Now")
- form.next = form.findChild(QtGui.QPushButton, "Next")
- form.last = form.findChild(QtGui.QPushButton, "Last")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.first, QtCore.SIGNAL("pressed()"), self.onFirst)
- QtCore.QObject.connect(form.prev, QtCore.SIGNAL("pressed()"), self.onPrev)
- QtCore.QObject.connect(form.now, QtCore.SIGNAL("pressed()"), self.onNow)
- QtCore.QObject.connect(form.next, QtCore.SIGNAL("pressed()"), self.onNext)
- QtCore.QObject.connect(form.last, QtCore.SIGNAL("pressed()"), self.onLast)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.time = form.findChild(QtGui.QLabel, "TimeLabel")
+ form.first = form.findChild(QtGui.QPushButton, "First")
+ form.prev = form.findChild(QtGui.QPushButton, "Prev")
+ form.now = form.findChild(QtGui.QPushButton, "Now")
+ form.next = form.findChild(QtGui.QPushButton, "Next")
+ form.last = form.findChild(QtGui.QPushButton, "Last")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.first, QtCore.SIGNAL("pressed()"), self.onFirst)
+ QtCore.QObject.connect(form.prev, QtCore.SIGNAL("pressed()"), self.onPrev)
+ QtCore.QObject.connect(form.now, QtCore.SIGNAL("pressed()"), self.onNow)
+ QtCore.QObject.connect(form.next, QtCore.SIGNAL("pressed()"), self.onNext)
+ QtCore.QObject.connect(form.last, QtCore.SIGNAL("pressed()"), self.onLast)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Track simulation"))
- self.form.findChild(QtGui.QPushButton, "Now").setText(Translator.translate("Now"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("shipsim_track","Track simulation",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QPushButton, "Now").setText(QtGui.QApplication.translate("shipsim_track","Now",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onFirst(self):
- """ Called when first frame button is pressed.
- """
+ def onFirst(self):
+ """ Called when first frame button is pressed.
+ """
- def onPrev(self):
- """ Called when previous frame button is pressed.
- """
+ def onPrev(self):
+ """ Called when previous frame button is pressed.
+ """
- def onNow(self):
- """ Called when actual frame button is pressed.
- """
- sim = Sim()
- pos = sim.sim.FS_Position[:]
- nx = sim.FS['Nx']
- ny = sim.FS['Ny']
- for i in range(0, nx):
- for j in range(0, ny):
- pos[i*ny+j].z = float(sim.FS['pos'][i,j][2])
- sim.sim.FS_Position = pos[:]
- App.ActiveDocument.recompute()
- self.form.time.setText("t = %g s" % (sim.t))
+ def onNow(self):
+ """ Called when actual frame button is pressed.
+ """
+ sim = Sim()
+ pos = sim.sim.FS_Position[:]
+ nx = sim.FS['Nx']
+ ny = sim.FS['Ny']
+ for i in range(0, nx):
+ for j in range(0, ny):
+ pos[i*ny+j].z = float(sim.FS['pos'][i,j][2])
+ sim.sim.FS_Position = pos[:]
+ App.ActiveDocument.recompute()
+ self.form.time.setText("t = %g s" % (sim.t))
- def onNext(self):
- """ Called when next frame button is pressed.
- """
+ def onNext(self):
+ """ Called when next frame button is pressed.
+ """
- def onLast(self):
- """ Called when last frame button is pressed.
- """
+ def onLast(self):
+ """ Called when last frame button is pressed.
+ """
def createTask():
- try:
- simulator = Sim()
- except:
- msg = Translator.translate("Can't find any active simulation!\n")
- App.Console.PrintError(msg)
- return
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ try:
+ simulator = Sim()
+ except:
+ msg = QtGui.QApplication.translate("ship_console", "Can't find any active simulation",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/simPost/__init__.py b/src/Mod/Ship/simPost/__init__.py
index 64c597c02c..b153dc051f 100644
--- a/src/Mod/Ship/simPost/__init__.py
+++ b/src/Mod/Ship/simPost/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,9 +32,9 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
def stop():
- """ Stops the simulation """
- TaskPanel.stopSimulation()
+ """ Stops the simulation """
+ TaskPanel.stopSimulation()
diff --git a/src/Mod/Ship/simRun/Simulation.py b/src/Mod/Ship/simRun/Simulation.py
index aa8373df89..06773fc4e1 100644
--- a/src/Mod/Ship/simRun/Simulation.py
+++ b/src/Mod/Ship/simRun/Simulation.py
@@ -1,29 +1,32 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
from math import *
import threading
+# Qt library
+from PyQt4 import QtGui,QtCore
+
# pyOpenCL
import pyopencl as cl
import numpy as np
@@ -34,96 +37,101 @@ from FreeCAD import Base, Vector
import Part
# Ship design module
-from shipUtils import Paths, Translator, Math
+from shipUtils import Paths, Math
class Singleton(type):
- def __init__(cls, name, bases, dct):
- cls.__instance = None
- type.__init__(cls, name, bases, dct)
+ def __init__(cls, name, bases, dct):
+ cls.__instance = None
+ type.__init__(cls, name, bases, dct)
- def __call__(cls, *args, **kw):
- if cls.__instance is None:
- cls.__instance = type.__call__(cls, *args,**kw)
- return cls.__instance
+ def __call__(cls, *args, **kw):
+ if cls.__instance is None:
+ cls.__instance = type.__call__(cls, *args,**kw)
+ return cls.__instance
class FreeCADShipSimulation(threading.Thread):
- __metaclass__ = Singleton
- def __init__ (self, device, endTime, output, simInstance, FSmesh, waves):
- """ Thread constructor.
- @param device Device to use.
- @param endTime Maximum simulation time.
- @param output [Rate,Type] Output rate, Type=0 if FPS, 1 if IPF.
- @param simInstance Simulaation instance.
- @param FSmesh Free surface mesh faces.
- @param waves Waves parameters (A,T,phi,heading)
- """
- threading.Thread.__init__(self)
- # Setup as stopped
- self.active = False
- # Build OpenCL context and command queue
- self.device = device
- if self.device == None: # Can't use OpenCL
- self.context = None
- self.queue = None
- else:
- self.context = cl.Context(devices=[self.device])
- self.queue = cl.CommandQueue(self.context)
- # Storage data
- self.endTime = endTime
- self.output = output
- self.sim = simInstance
- self.FSmesh = FSmesh
- self.waves = waves
-
- def run(self):
- """ Runs the simulation.
- """
- self.active = True
- # Simulation stuff
- if self.device == None:
- from Sim import *
- else:
- from clSim import *
- msg = Translator.translate("\t[Sim]: Initializating...\n")
- FreeCAD.Console.PrintMessage(msg)
- init = simInitialization(self.FSmesh,self.waves,self.context,self.queue)
- matGen = simMatrixGen(self.context,self.queue)
- solver = simComputeSources(self.context,self.queue)
- fsEvol = simFSEvolution(self.context,self.queue)
- A = init.A
- FS = init.fs
- waves = init.waves
- dt = init.dt
- self.t = 0.0
- self.FS = FS
- nx = FS['Nx']
- ny = FS['Ny']
- msg = Translator.translate("\t[Sim]: Iterating...\n")
- FreeCAD.Console.PrintMessage(msg)
- while self.active and self.t < self.endTime:
- msg = Translator.translate("\t\t[Sim]: Generating linear system matrix...\n")
- FreeCAD.Console.PrintMessage(msg)
- matGen.execute(FS, A)
- msg = Translator.translate("\t\t[Sim]: Solving linear systems...\n")
- FreeCAD.Console.PrintMessage(msg)
- solver.execute(FS, A)
- msg = Translator.translate("\t\t[Sim]: Time integrating...\n")
- FreeCAD.Console.PrintMessage(msg)
- fsEvol.execute(FS, waves, dt, self.t)
- self.t = self.t + dt
- FreeCAD.Console.PrintMessage('t = %g s\n' % (self.t))
- # Set thread as stopped (and prepare it to restarting)
- self.active = False
- threading.Event().set()
- threading.Thread.__init__(self)
+ __metaclass__ = Singleton
+ def __init__ (self, device, endTime, output, simInstance, FSmesh, waves):
+ """ Thread constructor.
+ @param device Device to use.
+ @param endTime Maximum simulation time.
+ @param output [Rate,Type] Output rate, Type=0 if FPS, 1 if IPF.
+ @param simInstance Simulaation instance.
+ @param FSmesh Free surface mesh faces.
+ @param waves Waves parameters (A,T,phi,heading)
+ """
+ threading.Thread.__init__(self)
+ # Setup as stopped
+ self.active = False
+ # Build OpenCL context and command queue
+ self.device = device
+ if self.device == None: # Can't use OpenCL
+ self.context = None
+ self.queue = None
+ else:
+ self.context = cl.Context(devices=[self.device])
+ self.queue = cl.CommandQueue(self.context)
+ # Storage data
+ self.endTime = endTime
+ self.output = output
+ self.sim = simInstance
+ self.FSmesh = FSmesh
+ self.waves = waves
+
+ def run(self):
+ """ Runs the simulation.
+ """
+ self.active = True
+ # Simulation stuff
+ if self.device == None:
+ from Sim import *
+ else:
+ from clSim import *
+ msg = QtGui.QApplication.translate("ship_console","Initializating",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage("\t[Sim]: " + msg + "...\n")
+ init = simInitialization(self.FSmesh,self.waves,self.context,self.queue)
+ matGen = simMatrixGen(self.context,self.queue)
+ solver = simComputeSources(self.context,self.queue)
+ fsEvol = simFSEvolution(self.context,self.queue)
+ A = init.A
+ FS = init.fs
+ waves = init.waves
+ dt = init.dt
+ self.t = 0.0
+ self.FS = FS
+ nx = FS['Nx']
+ ny = FS['Ny']
+ msg = QtGui.QApplication.translate("ship_console","Iterating",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage("\t[Sim]: " + msg + "...\n")
+ while self.active and self.t < self.endTime:
+ msg = QtGui.QApplication.translate("ship_console","Generating linear system matrix",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage("\t\t[Sim]: " + msg + "...\n")
+ matGen.execute(FS, A)
+ msg = QtGui.QApplication.translate("ship_console","Solving linear systems",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage("\t\t[Sim]: " + msg + "...\n")
+ solver.execute(FS, A)
+ msg = QtGui.QApplication.translate("ship_console","Time integrating",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage("\t\t[Sim]: " + msg + "...\n")
+ fsEvol.execute(FS, waves, dt, self.t)
+ self.t = self.t + dt
+ FreeCAD.Console.PrintMessage('\t[Sim]: t = %g s\n' % (self.t))
+ # Set thread as stopped (and prepare it to restarting)
+ self.active = False
+ threading.Event().set()
+ threading.Thread.__init__(self)
- def stop(self):
- """ Call to stop execution.
- """
- self.active = False
-
- def isRunning(self):
- """ Report thread state
- @return True if thread is running, False otherwise.
- """
- return self.active
+ def stop(self):
+ """ Call to stop execution.
+ """
+ self.active = False
+
+ def isRunning(self):
+ """ Report thread state
+ @return True if thread is running, False otherwise.
+ """
+ return self.active
diff --git a/src/Mod/Ship/simRun/TaskPanel.py b/src/Mod/Ship/simRun/TaskPanel.py
index 58faa2b2d5..628347458e 100644
--- a/src/Mod/Ship/simRun/TaskPanel.py
+++ b/src/Mod/Ship/simRun/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -30,175 +30,189 @@ from PyQt4 import QtGui,QtCore
import pyopencl as cl
# Module
import SimInstance
-from shipUtils import Paths, Translator
+from shipUtils import Paths
from Simulation import FreeCADShipSimulation as Sim
import time
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/simRun/TaskPanel.ui"
- self.sim = False
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/simRun/TaskPanel.ui"
+ self.sim = False
- def accept(self):
- msg = Translator.translate("Building data...\n")
- App.Console.PrintMessage(msg)
- # Get GUI data
- endTime = self.form.time.value()
- output = []
- output.append(self.form.output.value())
- output.append(self.form.outputType.currentIndex())
- devId = self.form.device.currentIndex() - 1 # First is not OpenCL
- # Get OpenCL device
- device = None
- count = 0
- platforms = cl.get_platforms()
- for p in platforms:
- devs = p.get_devices()
- for d in devs:
- if count == devId:
- device = d
- count = count + 1
- # Get free surfaces data
- FSMesh = SimInstance.FSMesh(self.sim)
- wData = self.sim.Waves
- wDir = self.sim.Waves_Dir
- waves = []
- for i in range(0,len(wData)):
- waves.append([wData[i].x, wData[i].y, wData[i].z, wDir[i]])
- msg = Translator.translate("Launching simulation...\n")
- App.Console.PrintMessage(msg)
- # Build simulation thread
- simulator = Sim(device, endTime, output, self.sim, FSMesh, waves)
- simulator.start()
- msg = Translator.translate("Done!\n")
- App.Console.PrintMessage(msg)
- return True
+ def accept(self):
+ msg = QtGui.QApplication.translate("ship_console","Building data",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintMessage(msg + "...\n")
+ # Get GUI data
+ endTime = self.form.time.value()
+ output = []
+ output.append(self.form.output.value())
+ output.append(self.form.outputType.currentIndex())
+ devId = self.form.device.currentIndex() - 1 # First is not OpenCL
+ # Get OpenCL device
+ device = None
+ count = 0
+ platforms = cl.get_platforms()
+ for p in platforms:
+ devs = p.get_devices()
+ for d in devs:
+ if count == devId:
+ device = d
+ count = count + 1
+ # Get free surfaces data
+ FSMesh = SimInstance.FSMesh(self.sim)
+ wData = self.sim.Waves
+ wDir = self.sim.Waves_Dir
+ waves = []
+ for i in range(0,len(wData)):
+ waves.append([wData[i].x, wData[i].y, wData[i].z, wDir[i]])
+ msg = QtGui.QApplication.translate("ship_console","Launching simulation",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintMessage(msg + "...\n")
+ # Build simulation thread
+ simulator = Sim(device, endTime, output, self.sim, FSMesh, waves)
+ simulator.start()
+ msg = QtGui.QApplication.translate("ship_console","Done",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintMessage(msg + "!\n")
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.time = form.findChild(QtGui.QDoubleSpinBox, "SimTime")
- form.output = form.findChild(QtGui.QDoubleSpinBox, "Output")
- form.outputType = form.findChild(QtGui.QComboBox, "OutputType")
- form.device = form.findChild(QtGui.QComboBox, "Device")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- # QtCore.QObject.connect(form.time, QtCore.SIGNAL("valueChanged(double)"), self.onData)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.time = form.findChild(QtGui.QDoubleSpinBox, "SimTime")
+ form.output = form.findChild(QtGui.QDoubleSpinBox, "Output")
+ form.outputType = form.findChild(QtGui.QComboBox, "OutputType")
+ form.device = form.findChild(QtGui.QComboBox, "Device")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ # QtCore.QObject.connect(form.time, QtCore.SIGNAL("valueChanged(double)"), self.onData)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Set initial values for fields
- """
- # Get objects
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship simulation instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShipSimulation")
- except ValueError:
- continue
- if obj.IsShipSimulation:
- # Test if another ship already selected
- if self.sim:
- msg = Translator.translate("More than one ship simulation selected (extra simulations will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.sim = obj
- # Test if any valid ship was selected
- if not self.sim:
- msg = Translator.translate("Ship simulation instance must be selected (no valid simulation found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- # Get the list of devices
- self.form.device.addItem("CPU based version (No OpenCL)")
- devices = []
- platforms = cl.get_platforms()
- for p in platforms:
- devs = p.get_devices()
- for d in devs:
- devices.append([p,d])
- dname = d.get_info(cl.device_info.NAME)
- pname = p.get_info(cl.platform_info.NAME)
- self.form.device.addItem(dname + " (" + pname + ")")
- if not len(devices):
- msg = Translator.translate("Can't find OpenCL devices\n")
- App.Console.PrintWarning(msg)
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Set initial values for fields
+ """
+ # Get objects
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console", "Ship simulation instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShipSimulation")
+ except ValueError:
+ continue
+ if obj.IsShipSimulation:
+ # Test if another ship already selected
+ if self.sim:
+ msg = QtGui.QApplication.translate("ship_console",
+ "More than one ship simulation selected (extra simulations will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.sim = obj
+ # Test if any valid ship was selected
+ if not self.sim:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship simulation instance must be selected (no valid simulation found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Get the list of devices
+ self.form.device.addItem("CPU based version (No OpenCL)")
+ devices = []
+ platforms = cl.get_platforms()
+ for p in platforms:
+ devs = p.get_devices()
+ for d in devs:
+ devices.append([p,d])
+ dname = d.get_info(cl.device_info.NAME)
+ pname = p.get_info(cl.platform_info.NAME)
+ self.form.device.addItem(dname + " (" + pname + ")")
+ if not len(devices):
+ msg = QtGui.QApplication.translate("ship_console", "Can't find OpenCL devices",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Run the simulation"))
- self.form.findChild(QtGui.QLabel, "SimTimeLabel").setText(Translator.translate("Simulation time"))
- self.form.findChild(QtGui.QLabel, "OutputLabel").setText(Translator.translate("Output"))
- self.form.findChild(QtGui.QLabel, "DeviceLabel").setText(Translator.translate("OpenCL device"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("shipsim_stop","Run the simulation",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "SimTimeLabel").setText(QtGui.QApplication.translate("shipsim_stop","Simulation time",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "OutputLabel").setText(QtGui.QApplication.translate("shipsim_stop","Output",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "DeviceLabel").setText(QtGui.QApplication.translate("shipsim_stop","OpenCL device",
+ None,QtGui.QApplication.UnicodeUTF8))
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
def stopSimulation():
- try:
- simulator = Sim()
- if not simulator.isRunning():
- msg = Translator.translate("Simulation already stopped\n")
- App.Console.PrintWarning(msg)
- return
- except:
- msg = Translator.translate("Any active simulation to stop!\n")
- App.Console.PrintError(msg)
- return
- simulator.stop()
- msg = Translator.translate("Simulation will stop at the end of actual iteration\n")
- App.Console.PrintMessage(msg)
+ try:
+ simulator = Sim()
+ if not simulator.isRunning():
+ msg = QtGui.QApplication.translate("ship_console", "Simulation already stopped",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ return
+ except:
+ msg = QtGui.QApplication.translate("ship_console", "Any active simulation to stop",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return
+ simulator.stop()
+ msg = QtGui.QApplication.translate("ship_console", "Simulation will stop at the end of actual iteration",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintMessage(msg + '\n')
diff --git a/src/Mod/Ship/simRun/__init__.py b/src/Mod/Ship/simRun/__init__.py
index 64c597c02c..b153dc051f 100644
--- a/src/Mod/Ship/simRun/__init__.py
+++ b/src/Mod/Ship/simRun/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,9 +32,9 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
def stop():
- """ Stops the simulation """
- TaskPanel.stopSimulation()
+ """ Stops the simulation """
+ TaskPanel.stopSimulation()
diff --git a/src/Mod/Ship/tankCreateTank/TaskPanel.py b/src/Mod/Ship/tankCreateTank/TaskPanel.py
index 15305ca901..e03f897d9b 100644
--- a/src/Mod/Ship/tankCreateTank/TaskPanel.py
+++ b/src/Mod/Ship/tankCreateTank/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -29,140 +29,148 @@ import Part
from PyQt4 import QtGui,QtCore
# Module
from TankInstance import *
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/tankCreateTank/TaskPanel.ui"
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/tankCreateTank/TaskPanel.ui"
- def accept(self):
- # Create new ship instance
- obj = App.ActiveDocument.addObject("Part::FeaturePython","Tank")
- ShipTank(obj, self.solid, self.form.level.value(), self.form.dens.value())
- if not obj.IsShipTank:
- msg = Translator.translate("Tank has not been created.\n")
- App.Console.PrintError(msg)
- ViewProviderShipTank(obj.ViewObject)
- App.ActiveDocument.recompute()
- return True
+ def accept(self):
+ # Create new ship instance
+ obj = App.ActiveDocument.addObject("Part::FeaturePython","Tank")
+ ShipTank(obj, self.solid, self.form.level.value(), self.form.dens.value())
+ if not obj.IsShipTank:
+ msg = QtGui.QApplication.translate("ship_console", "Tank has not been created",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ ViewProviderShipTank(obj.ViewObject)
+ App.ActiveDocument.recompute()
+ return True
- def reject(self):
- return True
+ def reject(self):
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.level = form.findChild(QtGui.QDoubleSpinBox, "Level")
- form.dens = form.findChild(QtGui.QDoubleSpinBox, "Density")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.level, QtCore.SIGNAL("valueChanged(double)"), self.onLevel)
- QtCore.QObject.connect(form.dens , QtCore.SIGNAL("valueChanged(double)"), self.onDens)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.level = form.findChild(QtGui.QDoubleSpinBox, "Level")
+ form.dens = form.findChild(QtGui.QDoubleSpinBox, "Density")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.level, QtCore.SIGNAL("valueChanged(double)"), self.onLevel)
+ QtCore.QObject.connect(form.dens , QtCore.SIGNAL("valueChanged(double)"), self.onDens)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Get selected geometry.
- @return False if sucessfully find valid geometry.
- """
- self.solid = None
- solids = []
- selObjs = Gui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Tank objects can only be created on top of structure geometry (no object selected).\n")
- App.Console.PrintError(msg)
- msg = Translator.translate("Please create a tank geometry before using this tool.\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0, len(selObjs)):
- solid = selObjs[i]
- if solid.isDerivedFrom('Part::Feature'):
- # Get shape
- shape = solid.Shape
- if not shape:
- continue
- solid = shape
- if not solid.isDerivedFrom('Part::TopoShape'):
- return None
- # Get shells
- shells = solid.Shells
- if not shells:
- continue
- # Build solids
- for s in shells:
- solids.append(Part.Solid(s))
- if not solids:
- msg = Translator.translate("Ship objects can only be created on top of structure geometry (no solids can't be computed).\n")
- App.Console.PrintError(msg)
- msg = Translator.translate("Please create or download a tank geometry before using this tool\n")
- App.Console.PrintError(msg)
- return True
- self.solid = Part.CompSolid(solids)
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Get selected geometry.
+ @return False if sucessfully find valid geometry.
+ """
+ self.solid = None
+ solids = []
+ selObjs = Gui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Tank objects can only be created on top of structure geometry (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ msg = QtGui.QApplication.translate("ship_console",
+ "Please create a tank geometry before using this tool",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0, len(selObjs)):
+ solid = selObjs[i]
+ if solid.isDerivedFrom('Part::Feature'):
+ # Get shape
+ shape = solid.Shape
+ if not shape:
+ continue
+ solid = shape
+ if not solid.isDerivedFrom('Part::TopoShape'):
+ return None
+ # Get shells
+ shells = solid.Shells
+ if not shells:
+ continue
+ # Build solids
+ for s in shells:
+ solids.append(Part.Solid(s))
+ if not solids:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Tank objects can only be created on top of structure geometry (no solids can't be computed)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ msg = QtGui.QApplication.translate("ship_console",
+ "Please create a tank geometry before using this tool",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ self.solid = Part.CompSolid(solids)
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Create a new tank"))
- name = Translator.translate("Filling level") + " (%)"
- self.form.findChild(QtGui.QLabel, "LevelLabel").setText(name)
- name = '\n'
- name = name + Translator.translate("Density")
- name = name + '(kg/m3)'
- self.form.findChild(QtGui.QLabel, "DensityLabel").setText(name)
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("shiptank_create","Create a new tank",
+ None,QtGui.QApplication.UnicodeUTF8))
+ name = QtGui.QApplication.translate("shiptank_create","Filling level", None,QtGui.QApplication.UnicodeUTF8) + " (%)"
+ self.form.findChild(QtGui.QLabel, "LevelLabel").setText(name)
+ name = '\n'
+ name = name + QtGui.QApplication.translate("shiptank_create","Fluid density", None,QtGui.QApplication.UnicodeUTF8)
+ name = name + '(kg/m3)'
+ self.form.findChild(QtGui.QLabel, "DensityLabel").setText(name)
- def onLevel(self, value):
- """ Method called when tank filling level has been modified.
- @param value Changed value.
- """
- pass
+ def onLevel(self, value):
+ """ Method called when tank filling level has been modified.
+ @param value Changed value.
+ """
+ pass
- def onDens(self, value):
- """ Method called when fluid density has been modified.
- @param value Changed value.
- """
- pass
+ def onDens(self, value):
+ """ Method called when fluid density has been modified.
+ @param value Changed value.
+ """
+ pass
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/tankCreateTank/TaskPanel.ui b/src/Mod/Ship/tankCreateTank/TaskPanel.ui
index 635af00900..a5c246863b 100644
--- a/src/Mod/Ship/tankCreateTank/TaskPanel.ui
+++ b/src/Mod/Ship/tankCreateTank/TaskPanel.ui
@@ -15,124 +15,114 @@
-
-
-
-
-
-
-
- 240
- 160
-
-
-
- Fluid
-
-
- false
-
-
-
-
- 0
- 20
- 241
- 141
-
+
+
+
+ 240
+ 160
+
+
+
+ Fluid
+
+
+ false
+
+
+
-
+
+
+ 6
-
-
- 6
-
-
- QLayout::SetDefaultConstraint
-
-
-
-
-
- QLayout::SetDefaultConstraint
-
-
- 10
-
-
- 0
-
-
- 10
-
-
- 0
-
-
-
-
-
- Filling level (%)
-
-
-
- -
-
-
- 1
-
-
- 100.000000000000000
-
-
- 1.000000000000000
-
-
-
-
-
- -
-
-
- 10
-
-
- 0
-
-
- 10
-
-
- 0
-
-
-
-
-
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+ QLayout::SetDefaultConstraint
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ Filling level (%)
+
+
+
+ -
+
+
+ 1
+
+
+ 100.000000000000000
+
+
+ 1.000000000000000
+
+
+
+
+
+ -
+
+
+ 10
+
+
+ 0
+
+
+ 10
+
+
+ 0
+
+
-
+
+
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans'; font-size:10pt; font-weight:400; font-style:normal;">
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Density (kg/m<span style=" vertical-align:super;">3</span>)</p></body></html>
-
-
-
- -
-
-
- 1
-
-
- 1000000.000000000000000
-
-
- 10.000000000000000
-
-
- 998.000000000000000
-
-
-
-
-
-
-
-
-
-
+
+
+
+ -
+
+
+ 1
+
+
+ 1000000.000000000000000
+
+
+ 10.000000000000000
+
+
+ 998.000000000000000
+
+
+
+
+
+
+
+
+
diff --git a/src/Mod/Ship/tankCreateTank/__init__.py b/src/Mod/Ship/tankCreateTank/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/tankCreateTank/__init__.py
+++ b/src/Mod/Ship/tankCreateTank/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/tankGZ/Plot.py b/src/Mod/Ship/tankGZ/Plot.py
deleted file mode 100644
index 320f201854..0000000000
--- a/src/Mod/Ship/tankGZ/Plot.py
+++ /dev/null
@@ -1,186 +0,0 @@
-#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
-#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
-#* License along with this program; if not, write to the Free Software *
-#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
-#***************************************************************************
-
-import os
-# FreeCAD modules
-import FreeCAD,FreeCADGui
-from FreeCAD import Base
-import Part, Image, ImageGui
-# FreeCADShip modules
-from shipUtils import Paths, Translator
-
-header = """ #################################################################
-
- ##### #### ### #### ##### # # ### ####
- # # # # # # # # # # # #
- # ## #### #### # # # # # # # # # # #
- #### # # # # # # # ##### # # ## ## ##### # ####
- # # #### #### # # # # # # # # # #
- # # # # # # # # # # # # # #
- # # #### #### ### # # #### ##### # # ### #
-
- #################################################################
-"""
-
-class Plot(object):
- def __init__(self, x, y, disp, draft, trim):
- """ Constructor. performs plot and show it (Using pyxplot).
- @param x Roll angles [deg].
- @param y GZ value [m].
- @param disp Ship displacement [tons].
- @param draft Ship draft [m].
- @param trim Ship trim angle [deg].
- """
- if self.createDirectory():
- return
- if self.saveData(x,y):
- return
- if self.saveLayout(x,y, disp, draft, trim):
- return
- if self.execute():
- return
- ImageGui.open(self.path + 'gz.png')
-
- def createDirectory(self):
- """ Create needed folder to write data and scripts.
- @return True if error happens.
- """
- self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
- if not os.path.exists(self.path):
- os.makedirs(self.path)
- if not os.path.exists(self.path):
- msg = Translator.translate("Can't create '" + self.path + "' folder.\n")
- FreeCAD.Console.PrintError(msg)
- return False
-
- def saveData(self,x,y):
- """ Write data file.
- @param x Roll angles.
- @param y GZ value.
- @return True if error happens.
- """
- # Open the file
- filename = self.path + 'gz.dat'
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Print header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains transversal GZ stability parameter, filled with following columns:\n")
- Output.write(" # 1: Roll angles [deg]\n")
- Output.write(" # 2: GZ [m]\n")
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Print data
- if len(x) < 2:
- msg = Translator.translate("Not enough data to plot.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- for i in range(0, len(x)):
- string = "%f %f\n" % (x[i], y[i])
- Output.write(string)
- # Close file
- Output.close()
- self.dataFile = filename
- msg = Translator.translate("Data saved at '" + self.dataFile + "'.\n")
- FreeCAD.Console.PrintMessage(msg)
- return False
-
- def saveLayout(self, x, y, disp, draft, trim):
- """ Prints the data output.
- @param x Roll angles.
- @param y GZ value.
- @param disp Ship displacement.
- @param draft Ship draft.
- @param trim Ship trim angle.
- @return True if error happens.
- """
- filename = self.path + 'gz.pyxplot'
- # Open the file
- try:
- Output = open(filename, "w")
- except IOError:
- msg = Translator.translate("Can't write '" + filename + "' file.\n")
- FreeCAD.Console.PrintError(msg)
- return True
- # Write header
- Output.write(header)
- Output.write(" #\n")
- Output.write(" # File automatically exported by FreeCAD-Ship\n")
- Output.write(" # This file contains a script to plot transversal GZ stability parameter.\n")
- Output.write(" # To use it execute:\n")
- Output.write(" #\n")
- Output.write(" # pyxplot %s\n" % (filename))
- Output.write(" #\n")
- Output.write(" #################################################################\n")
- # Write general options for hydrostatics
- Output.write("set numeric display latex\n")
- Output.write("set output '%s'\n" % (self.path + 'gz.eps'))
- Output.write("set nokey\n")
- Output.write("set grid\n")
- Output.write("# X axis\n")
- Output.write("set xlabel '$roll$ / degrees'\n")
- Output.write("set xtic\n")
- Output.write("# Y axis\n")
- Output.write("set ylabel '$GZ$ / m'\n")
- Output.write("set ytic\n")
- Output.write("# Line styles\n")
- Output.write("set style 1 line linetype 1 linewidth 2 colour rgb (0):(0):(0)\n")
- # Additional data
- Output.write("# Additional data\n")
- Output.write("set label (1) '$\\Delta = %g \\mathrm{tons}$' %f,%f\n" % (disp, x[0] + 0.65*(x[-1] - x[0]), min(y) + 0.95*(max(y)-min(y))))
- Output.write("set label (2) '$T = %g \\mathrm{m}$' %f,%f\n" % (draft, x[0] + 0.65*(x[-1] - x[0]), min(y) + 0.85*(max(y)-min(y))))
- Output.write("set label (3) '$Trim = %g^\\circ$' %f,%f\n" % (trim, x[0] + 0.65*(x[-1] - x[0]), min(y) + 0.75*(max(y)-min(y))))
- # Write plot call
- Output.write("# Plot\n")
- Output.write("plot '%s' using 1:2 title 'GZ' axes x1y1 with lines style 1\n" % (self.dataFile))
- # Close file
- self.layoutFile = filename
- Output.close()
- return False
-
- def execute(self):
- """ Calls pyxplot in order to plot an save an image.
- @return True if error happens.
- """
- filename = self.path + 'gz'
- comm = "pyxplot %s" % (self.layoutFile)
- if os.system(comm):
- msg = Translator.translate("Can't execute pyxplot. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Plot will not generated\n")
- FreeCAD.Console.PrintError(msg)
- return True
- comm = "gs -r300 -dEPSCrop -dTextAlphaBits=4 -sDEVICE=png16m -sOutputFile=%s.png -dBATCH -dNOPAUSE %s.eps" % (filename,filename)
- if os.system(comm):
- msg = Translator.translate("Can't execute ghostscript. Maybe is not installed?\n")
- FreeCAD.Console.PrintError(msg)
- msg = Translator.translate("Generated image will not converted to png\n")
- FreeCAD.Console.PrintError(msg)
- return True
- return False
diff --git a/src/Mod/Ship/tankGZ/PlotAux.py b/src/Mod/Ship/tankGZ/PlotAux.py
new file mode 100644
index 0000000000..e74a8375f3
--- /dev/null
+++ b/src/Mod/Ship/tankGZ/PlotAux.py
@@ -0,0 +1,154 @@
+#***************************************************************************
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
+#* This program is free software; you can redistribute it and/or modify *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
+#* License along with this program; if not, write to the Free Software *
+#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
+#* USA *
+#* *
+#***************************************************************************
+
+import os
+# Qt library
+from PyQt4 import QtGui,QtCore
+# FreeCAD modules
+import FreeCAD,FreeCADGui
+from FreeCAD import Base
+import Part, Image, ImageGui
+# FreeCADShip modules
+from shipUtils import Paths
+
+header = """ #################################################################
+
+ ##### #### ### #### ##### # # ### ####
+ # # # # # # # # # # # #
+ # ## #### #### # # # # # # # # # # #
+ #### # # # # # # # ##### # # ## ## ##### # ####
+ # # #### #### # # # # # # # # # #
+ # # # # # # # # # # # # # #
+ # # #### #### ### # # #### ##### # # ### #
+
+ #################################################################
+"""
+
+class Plot(object):
+ def __init__(self, x, y, disp, draft, trim):
+ """ Constructor. performs plot and show it (Using pyxplot).
+ @param x Roll angles [deg].
+ @param y GZ value [m].
+ @param disp Ship displacement [tons].
+ @param draft Ship draft [m].
+ @param trim Ship trim angle [deg].
+ """
+ # Try to plot
+ self.plot(x,y,disp,draft,trim)
+ # Save data
+ if self.createDirectory():
+ return
+ if self.saveData(x,y):
+ return
+
+ def plot(self, x, y, disp, draft, trim):
+ """ Perform GZ stability plot.
+ @param x X coordinates.
+ @param y Transversal areas.
+ @param disp Ship displacement [tons].
+ @param draft Ship draft [m].
+ @param trim Ship trim angle [deg].
+ @return True if error happens.
+ """
+ # Create plot
+ try:
+ import Plot
+ plt = Plot.figure('GZ')
+ except ImportError:
+ msg = QtGui.QApplication.translate("ship_console", "Plot module is disabled, can't perform plot",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintWarning(msg + '\n')
+ return True
+ # Plot areas curve
+ gz = Plot.plot(x,y,r'GZ')
+ gz.line.set_linestyle('-')
+ gz.line.set_linewidth(3.0)
+ gz.line.set_color((0.0, 0.0, 0.0))
+ # Add some additional data
+ ax = Plot.axes()
+ addInfo = r"""$\bigtriangleup = %g \; \mathrm{tons}$
+$T = %g \; \mathrm{m}$
+$Trim = %g^\circ$""" % (disp, draft, trim)
+ ax.text(x[-1] - 0.001*(x[-1] - x[0]), max(y) - 0.01*(max(y)-min(y)), addInfo,
+ verticalalignment='top',horizontalalignment='right', fontsize=20)
+ # Write axes titles
+ Plot.xlabel(r'$x \; \mathrm{m}$')
+ Plot.ylabel(r'$GZ \; \mathrm{m}$')
+ ax.xaxis.label.set_fontsize(20)
+ ax.yaxis.label.set_fontsize(20)
+ # Show grid
+ Plot.grid(True)
+ # End
+ plt.update()
+ return False
+
+ def createDirectory(self):
+ """ Create needed folder to write data and scripts.
+ @return True if error happens.
+ """
+ self.path = FreeCAD.ConfigGet("UserAppData") + "ShipOutput/"
+ if not os.path.exists(self.path):
+ os.makedirs(self.path)
+ if not os.path.exists(self.path):
+ msg = QtGui.QApplication.translate("ship_console", "Can't create folder",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ self.path + "\'\n")
+ return True
+ return False
+
+ def saveData(self,x,y):
+ """ Write data file.
+ @param x Roll angles.
+ @param y GZ value.
+ @return True if error happens.
+ """
+ # Open the file
+ filename = self.path + 'gz.dat'
+ try:
+ Output = open(filename, "w")
+ except IOError:
+ msg = QtGui.QApplication.translate("ship_console", "Can't write to file",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintError(msg + ':\n\t' + "\'"+ filename + "\'\n")
+ return True
+ # Print header
+ Output.write(header)
+ Output.write(" #\n")
+ Output.write(" # File automatically exported by FreeCAD-Ship\n")
+ Output.write(" # This file contains transversal GZ stability parameter, filled with following columns:\n")
+ Output.write(" # 1: Roll angles [deg]\n")
+ Output.write(" # 2: GZ [m]\n")
+ Output.write(" #\n")
+ Output.write(" #################################################################\n")
+ # Print data
+ for i in range(0, len(x)):
+ string = "%f %f\n" % (x[i], y[i])
+ Output.write(string)
+ # Close file
+ Output.close()
+ self.dataFile = filename
+ msg = QtGui.QApplication.translate("ship_console", "Data saved",
+ None,QtGui.QApplication.UnicodeUTF8)
+ FreeCAD.Console.PrintMessage(msg + ':\n\t' + "\'"+ self.dataFile + "\'\n")
+ return False
+
diff --git a/src/Mod/Ship/tankGZ/TaskPanel.py b/src/Mod/Ship/tankGZ/TaskPanel.py
index a27b5a0331..ce7943139e 100644
--- a/src/Mod/Ship/tankGZ/TaskPanel.py
+++ b/src/Mod/Ship/tankGZ/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
import math
@@ -28,350 +28,377 @@ import FreeCADGui as Gui
# Qt library
from PyQt4 import QtGui,QtCore
# Module
-from Plot import *
+import PlotAux
from Instance import *
from TankInstance import *
-from shipUtils import Paths, Translator
+from shipUtils import Paths
from shipHydrostatics import Tools as Hydrostatics
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/tankGZ/TaskPanel.ui"
- self.ship = None
- self.tanks = {}
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/tankGZ/TaskPanel.ui"
+ self.ship = None
+ self.tanks = {}
- def accept(self):
- if not self.ship:
- return False
- # Get general data
- disp = self.computeDisplacement()
- draft = self.computeDraft(disp[0], self.form.trim.value())
- trim = self.form.trim.value()
- # Get roll angles
- roll0 = self.form.roll0.value()
- roll1 = self.form.roll1.value()
- nRoll = self.form.nRoll.value()
- dRoll = (roll1 - roll0) / (nRoll - 1)
- roll = []
- GZ = []
- msg = Translator.translate("Computing GZ...\n")
- App.Console.PrintMessage(msg)
- for i in range(0, nRoll):
- App.Console.PrintMessage("\t%d/%d\n" % (i+1,nRoll))
- roll.append(i*dRoll)
- GZ.append(self.computeGZ(draft[0], trim, roll[-1]))
- Plot(roll, GZ, disp[0]/1000.0, draft[0], trim)
- return True
+ def accept(self):
+ if not self.ship:
+ return False
+ # Get general data
+ disp = self.computeDisplacement()
+ draft = self.computeDraft(disp[0], self.form.trim.value())
+ trim = self.form.trim.value()
+ # Get roll angles
+ roll0 = self.form.roll0.value()
+ roll1 = self.form.roll1.value()
+ nRoll = self.form.nRoll.value()
+ dRoll = (roll1 - roll0) / (nRoll - 1)
+ roll = []
+ GZ = []
+ msg = QtGui.QApplication.translate("ship_console","Computing GZ",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintMessage(msg + "...\n")
+ for i in range(0, nRoll):
+ App.Console.PrintMessage("\t%d/%d\n" % (i+1,nRoll))
+ roll.append(i*dRoll)
+ GZ.append(self.computeGZ(draft[0], trim, roll[-1]))
+ PlotAux.Plot(roll, GZ, disp[0]/1000.0, draft[0], trim)
+ return True
- def reject(self):
- if not self.ship:
- return False
- return True
+ def reject(self):
+ if not self.ship:
+ return False
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.tanks = form.findChild(QtGui.QListWidget, "Tanks")
- form.disp = form.findChild(QtGui.QLabel, "DisplacementLabel")
- form.draft = form.findChild(QtGui.QLabel, "DraftLabel")
- form.update = form.findChild(QtGui.QPushButton, "UpdateData")
- form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
- form.autoTrim = form.findChild(QtGui.QPushButton, "TrimAutoCompute")
- form.roll0 = form.findChild(QtGui.QDoubleSpinBox, "StartAngle")
- form.roll1 = form.findChild(QtGui.QDoubleSpinBox, "EndAngle")
- form.nRoll = form.findChild(QtGui.QSpinBox, "NAngle")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.tanks,QtCore.SIGNAL("itemSelectionChanged()"),self.onTanksSelection)
- QtCore.QObject.connect(form.update,QtCore.SIGNAL("pressed()"),self.onUpdate)
- QtCore.QObject.connect(form.trim,QtCore.SIGNAL("valueChanged(double)"),self.onTrim)
- QtCore.QObject.connect(form.autoTrim,QtCore.SIGNAL("pressed()"),self.onAutoTrim)
- QtCore.QObject.connect(form.roll0,QtCore.SIGNAL("valueChanged(double)"),self.onRoll)
- QtCore.QObject.connect(form.roll1,QtCore.SIGNAL("valueChanged(double)"),self.onRoll)
- QtCore.QObject.connect(form.nRoll,QtCore.SIGNAL("valueChanged(int)"),self.onRoll)
- return False
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.tanks = form.findChild(QtGui.QListWidget, "Tanks")
+ form.disp = form.findChild(QtGui.QLabel, "DisplacementLabel")
+ form.draft = form.findChild(QtGui.QLabel, "DraftLabel")
+ form.update = form.findChild(QtGui.QPushButton, "UpdateData")
+ form.trim = form.findChild(QtGui.QDoubleSpinBox, "Trim")
+ form.autoTrim = form.findChild(QtGui.QPushButton, "TrimAutoCompute")
+ form.roll0 = form.findChild(QtGui.QDoubleSpinBox, "StartAngle")
+ form.roll1 = form.findChild(QtGui.QDoubleSpinBox, "EndAngle")
+ form.nRoll = form.findChild(QtGui.QSpinBox, "NAngle")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.tanks,QtCore.SIGNAL("itemSelectionChanged()"),self.onTanksSelection)
+ QtCore.QObject.connect(form.update,QtCore.SIGNAL("pressed()"),self.onUpdate)
+ QtCore.QObject.connect(form.trim,QtCore.SIGNAL("valueChanged(double)"),self.onTrim)
+ QtCore.QObject.connect(form.autoTrim,QtCore.SIGNAL("pressed()"),self.onAutoTrim)
+ QtCore.QObject.connect(form.roll0,QtCore.SIGNAL("valueChanged(double)"),self.onRoll)
+ QtCore.QObject.connect(form.roll1,QtCore.SIGNAL("valueChanged(double)"),self.onRoll)
+ QtCore.QObject.connect(form.nRoll,QtCore.SIGNAL("valueChanged(int)"),self.onRoll)
+ return False
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Get selected geometry.
- @return False if sucessfully values initialized.
- """
- # Get selected objects
- selObjs = FreeCADGui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- continue
- if obj.IsShip:
- # Test if another ship already selected
- if self.ship:
- msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.ship = obj
- # Test if any valid ship was selected
- if not self.ship:
- msg = Translator.translate("Ship instance must be selected (no valid ship found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- props = self.ship.PropertiesList
- try:
- props.index("WeightNames")
- except:
- msg = Translator.translate("Ship weights has not been set. You need to set weights before use this tool.\n")
- App.Console.PrintError(msg)
- return True
- # Setup available tanks list
- objs = App.ActiveDocument.Objects
- iconPath = Paths.iconsPath() + "/Tank.xpm"
- icon = QtGui.QIcon(QtGui.QPixmap(iconPath))
- for obj in objs:
- # Try to get valid tank property
- props = obj.PropertiesList
- try:
- props.index("IsShipTank")
- except ValueError:
- continue
- if not obj.IsShipTank:
- continue
- # Add tank to list
- name = obj.Name
- label = obj.Label
- tag = label + ' (' + name + ')'
- self.tanks[tag] = name
- # self.tanks.append([name, tag])
- item = QtGui.QListWidgetItem(tag)
- item.setIcon(icon)
- self.form.tanks.addItem(item)
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Get selected geometry.
+ @return False if sucessfully values initialized.
+ """
+ # Get selected objects
+ selObjs = FreeCADGui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console","Ship instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg)
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ continue
+ if obj.IsShip:
+ # Test if another ship already selected
+ if self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "More than one ship selected (extra ships will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.ship = obj
+ # Test if any valid ship was selected
+ if not self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no valid ship found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ props = self.ship.PropertiesList
+ try:
+ props.index("WeightNames")
+ except:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship weights has not been set. You need to set weights before use this tool",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Setup available tanks list
+ objs = App.ActiveDocument.Objects
+ iconPath = Paths.iconsPath() + "/Tank.xpm"
+ icon = QtGui.QIcon(QtGui.QPixmap(iconPath))
+ for obj in objs:
+ # Try to get valid tank property
+ props = obj.PropertiesList
+ try:
+ props.index("IsShipTank")
+ except ValueError:
+ continue
+ if not obj.IsShipTank:
+ continue
+ # Add tank to list
+ name = obj.Name
+ label = obj.Label
+ tag = label + ' (' + name + ')'
+ self.tanks[tag] = name
+ # self.tanks.append([name, tag])
+ item = QtGui.QListWidgetItem(tag)
+ item.setIcon(icon)
+ self.form.tanks.addItem(item)
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("GZ curve computation"))
- self.form.findChild(QtGui.QGroupBox, "LoadConditionGroup").setTitle(Translator.translate("Loading condition."))
- self.form.findChild(QtGui.QGroupBox, "AnglesGroup").setTitle(Translator.translate("Roll angles."))
- self.form.findChild(QtGui.QLabel, "TrimLabel").setText(Translator.translate("Trim") + " [deg]")
- self.form.findChild(QtGui.QLabel, "StartAngleLabel").setText(Translator.translate("Start") + " [deg]")
- self.form.findChild(QtGui.QLabel, "EndAngleLabel").setText(Translator.translate("End") + " [deg]")
- self.form.findChild(QtGui.QLabel, "NAngleLabel").setText(Translator.translate("Number of points"))
- self.form.disp.setText(Translator.translate("Displacement = Press update to compute"))
- self.form.draft.setText(Translator.translate("Draft = Press update to compute"))
- self.form.update.setText(Translator.translate("Update displacement and draft"))
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.findChild(QtGui.QLabel, "DraftLabel").setText(QtGui.QApplication.translate("shiptank_gz","Draft",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onTanksSelection(self):
- """ Called when tanks are selected or deselected.
- """
- pass
-
- def onUpdate(self):
- """ Called when update displacement and draft is requested.
- """
- # Set displacement label
- disp = self.computeDisplacement()
- self.form.disp.setText(Translator.translate("Displacement") + ' = %g [kg]' % (disp[0]))
- # Set draft label
- draft = self.computeDraft(disp[0], self.form.trim.value())
- self.form.draft.setText(Translator.translate("Draft") + ' = %g [m]' % (draft[0]))
- def onTrim(self, trim):
- """ Called when trim angle value is changed.
- @param trim Selected trim angle.
- """
- self.onTanksSelection()
-
- def onAutoTrim(self):
- """ Called when trim angle must be auto computed.
- """
- # Start at null trim angle
- trim = 0.0
- # Get center of gravity
- disp = self.computeDisplacement(trim)
- G = [disp[1], disp[2], disp[3]]
- disp = disp[0]
- # Get bouyancy center
- draft = self.computeDraft(disp)
- B = [draft[1].x, draft[1].y, draft[1].z]
- draft = draft[0]
- # Get stability initial condition
- BG = [G[0]-B[0], G[1]-B[1], G[2]-B[2]]
- x = BG[0]*math.cos(math.radians(trim)) - BG[2]*math.sin(math.radians(trim))
- y = BG[1]
- z = BG[0]*math.sin(math.radians(trim)) + BG[2]*math.cos(math.radians(trim))
- var = math.degrees(math.atan2(x,z))
- # Iterate looking stability point
- dVar = math.copysign(0.01, var)
- while True:
- if (dVar*var < 0.0) or (abs(var) < 0.1):
- break
- trim = trim - math.copysign(max(dVar, abs(var)/200.0), var)
- # Get center of gravity
- disp = self.computeDisplacement(trim)
- G = [disp[1], disp[2], disp[3]]
- disp = disp[0]
- # Get bouyancy center
- draft = self.computeDraft(disp, trim)
- B = [draft[1].x, draft[1].y, draft[1].z]
- draft = draft[0]
- # Get stability initial condition
- BG = [G[0]-B[0], G[1]-B[1], G[2]-B[2]]
- x = BG[0]*math.cos(math.radians(trim)) - BG[2]*math.sin(math.radians(trim))
- y = BG[1]
- z = BG[0]*math.sin(math.radians(trim)) + BG[2]*math.cos(math.radians(trim))
- var = math.degrees(math.atan2(x,z))
- self.form.trim.setValue(trim)
+ self.form.setWindowTitle(QtGui.QApplication.translate("shiptank_gz","GZ curve computation",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "LoadConditionGroup").setTitle(QtGui.QApplication.translate("shiptank_gz",
+ "Loading condition",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QGroupBox, "AnglesGroup").setTitle(QtGui.QApplication.translate("shiptank_gz","Roll angles",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.findChild(QtGui.QLabel, "TrimLabel").setText(QtGui.QApplication.translate("shiptank_gz","Trim",
+ None,QtGui.QApplication.UnicodeUTF8) + " [deg]")
+ self.form.findChild(QtGui.QLabel, "StartAngleLabel").setText(QtGui.QApplication.translate("shiptank_gz","Start",
+ None,QtGui.QApplication.UnicodeUTF8) + " [deg]")
+ self.form.findChild(QtGui.QLabel, "EndAngleLabel").setText(QtGui.QApplication.translate("shiptank_gz","End",
+ None,QtGui.QApplication.UnicodeUTF8) + " [deg]")
+ self.form.findChild(QtGui.QLabel, "NAngleLabel").setText(QtGui.QApplication.translate("shiptank_gz","Number of points",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.disp.setText(QtGui.QApplication.translate("shiptank_gz","Displacement",
+ None,QtGui.QApplication.UnicodeUTF8) + ' = ' + \
+ QtGui.QApplication.translate("shiptank_gz","Press update to compute",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.draft.setText(QtGui.QApplication.translate("shiptank_gz","Draft",
+ None,QtGui.QApplication.UnicodeUTF8) + ' = ' + \
+ QtGui.QApplication.translate("shiptank_gz","Press update to compute",
+ None,QtGui.QApplication.UnicodeUTF8))
+ self.form.update.setText(QtGui.QApplication.translate("shiptank_gz","Update displacement and draft",
+ None,QtGui.QApplication.UnicodeUTF8))
- def onRoll(self, value):
- """ Called when roll angles options are modified.
- @param value Dummy changed value.
- """
- roll0 = self.form.roll0.value()
- self.form.roll1.setMinimum(roll0)
- roll1 = self.form.roll1.value()
- self.form.roll0.setMaximum(roll1)
+ def onTanksSelection(self):
+ """ Called when tanks are selected or deselected.
+ """
+ pass
+
+ def onUpdate(self):
+ """ Called when update displacement and draft is requested.
+ """
+ # Set displacement label
+ disp = self.computeDisplacement()
+ self.form.disp.setText(QtGui.QApplication.translate("shiptank_gz","Displacement",
+ None,QtGui.QApplication.UnicodeUTF8) + ' = %g [kg]' % (disp[0]))
+ # Set draft label
+ draft = self.computeDraft(disp[0], self.form.trim.value())
+ self.form.draft.setText(QtGui.QApplication.translate("shiptank_gz","Draft",
+ None,QtGui.QApplication.UnicodeUTF8) + ' = %g [m]' % (draft[0]))
- def getTanks(self):
- """ Get the selected tanks objects list.
- @return Selected tanks list.
- """
- items = self.form.tanks.selectedItems()
- tanks = []
- for item in items:
- tag = str(item.text())
- name = self.tanks[tag]
- t = App.ActiveDocument.getObject(name)
- if not t:
- continue
- tanks.append(t)
- return tanks
+ def onTrim(self, trim):
+ """ Called when trim angle value is changed.
+ @param trim Selected trim angle.
+ """
+ self.onTanksSelection()
+
+ def onAutoTrim(self):
+ """ Called when trim angle must be auto computed.
+ """
+ # Start at null trim angle
+ trim = 0.0
+ # Get center of gravity
+ disp = self.computeDisplacement(trim)
+ G = [disp[1], disp[2], disp[3]]
+ disp = disp[0]
+ # Get bouyancy center
+ draft = self.computeDraft(disp)
+ B = [draft[1].x, draft[1].y, draft[1].z]
+ draft = draft[0]
+ # Get stability initial condition
+ BG = [G[0]-B[0], G[1]-B[1], G[2]-B[2]]
+ x = BG[0]*math.cos(math.radians(trim)) - BG[2]*math.sin(math.radians(trim))
+ y = BG[1]
+ z = BG[0]*math.sin(math.radians(trim)) + BG[2]*math.cos(math.radians(trim))
+ var = math.degrees(math.atan2(x,z))
+ # Iterate looking stability point
+ dVar = math.copysign(0.01, var)
+ while True:
+ if (dVar*var < 0.0) or (abs(var) < 0.1):
+ break
+ trim = trim - math.copysign(max(dVar, abs(var)/200.0), var)
+ # Get center of gravity
+ disp = self.computeDisplacement(trim)
+ G = [disp[1], disp[2], disp[3]]
+ disp = disp[0]
+ # Get bouyancy center
+ draft = self.computeDraft(disp, trim)
+ B = [draft[1].x, draft[1].y, draft[1].z]
+ draft = draft[0]
+ # Get stability initial condition
+ BG = [G[0]-B[0], G[1]-B[1], G[2]-B[2]]
+ x = BG[0]*math.cos(math.radians(trim)) - BG[2]*math.sin(math.radians(trim))
+ y = BG[1]
+ z = BG[0]*math.sin(math.radians(trim)) + BG[2]*math.cos(math.radians(trim))
+ var = math.degrees(math.atan2(x,z))
+ self.form.trim.setValue(trim)
- def computeDisplacement(self, trim=0.0, roll=0.0):
- """ Computes ship displacement.
- @param trim Trim angle [degrees].
- @return Ship displacement and center of gravity. None if errors
- detected.
- @note Returned center of gravity is refered to ship attached
- axis coordinates.
- """
- if not self.ship:
- return None
- # Get ship structure weights
- W = [0.0, 0.0, 0.0, 0.0]
- sWeights = weights(self.ship)
- for w in sWeights:
- W[0] = W[0] + w[1]
- W[1] = W[1] + w[1]*w[2][0]
- W[2] = W[2] + w[1]*w[2][1]
- W[3] = W[3] + w[1]*w[2][2]
- # Get selected tanks weights
- tanks = self.getTanks()
- for t in tanks:
- w = tankWeight(t, App.Base.Vector(roll,-trim,0.0))
- # Unrotate center of gravity
- x = w[1]*math.cos(math.radians(-trim)) - w[3]*math.sin(math.radians(-trim))
- y = w[2]
- z = w[1]*math.sin(math.radians(-trim)) + w[3]*math.cos(math.radians(-trim))
- w[1] = x
- w[2] = y*math.cos(math.radians(-roll)) - z*math.sin(math.radians(-roll))
- w[3] = y*math.sin(math.radians(-roll)) + z*math.cos(math.radians(-roll))
- W[0] = W[0] + w[0]
- W[1] = W[1] + w[0]*w[1]
- W[2] = W[2] + w[0]*w[2]
- W[3] = W[3] + w[0]*w[3]
- return [W[0], W[1]/W[0], W[2]/W[0], W[3]/W[0]]
+ def onRoll(self, value):
+ """ Called when roll angles options are modified.
+ @param value Dummy changed value.
+ """
+ roll0 = self.form.roll0.value()
+ self.form.roll1.setMinimum(roll0)
+ roll1 = self.form.roll1.value()
+ self.form.roll0.setMaximum(roll1)
- def computeDraft(self, disp, trim=0.0):
- """ Computes ship draft.
- @param disp Ship displacement.
- @param trim Trim angle [degrees].
- @return Ship draft, and bouyance center position. None if errors detected.
- """
- if not self.ship:
- return None
- # Initial condition
- dens = 1025
- bbox = self.ship.Shape.BoundBox
- draft = bbox.ZMin
- dx = bbox.XMax - bbox.XMin
- dy = bbox.YMax - bbox.YMin
- w = 0.0
- xcb = 0.0
- while(abs(disp - w)/disp > 0.01):
- draft = draft + (disp - w) / (dens*dx*dy)
- ww = Hydrostatics.displacement(self.ship, draft, 0.0, trim, 0.0)
- w = 1000.0*ww[0]
- B = ww[1]
- return [draft,B]
+ def getTanks(self):
+ """ Get the selected tanks objects list.
+ @return Selected tanks list.
+ """
+ items = self.form.tanks.selectedItems()
+ tanks = []
+ for item in items:
+ tag = str(item.text())
+ name = self.tanks[tag]
+ t = App.ActiveDocument.getObject(name)
+ if not t:
+ continue
+ tanks.append(t)
+ return tanks
- def computeGZ(self, draft, trim, roll):
- """ Compute GZ value.
- @param draft Ship draft.
- @param trim Ship trim angle [degrees].
- @param roll Ship roll angle [degrees].
- @return GZ value [m].
- """
- # Get center of gravity (x coordinate not relevant)
- disp = self.computeDisplacement(trim, roll)
- G = [disp[2], disp[3]]
- disp = disp[0]
- # Get bouyancy center (x coordinate not relevant)
- disp = Hydrostatics.displacement(self.ship, draft, roll, trim, 0.0)
- B = [disp[1].y, disp[1].z]
- # GZ computation
- BG = [G[0] - B[0], G[1] - B[1]]
- y = BG[0]*math.cos(math.radians(roll)) - BG[1]*math.sin(math.radians(roll))
- z = BG[0]*math.sin(math.radians(roll)) + BG[1]*math.cos(math.radians(roll))
- return y
+ def computeDisplacement(self, trim=0.0, roll=0.0):
+ """ Computes ship displacement.
+ @param trim Trim angle [degrees].
+ @return Ship displacement and center of gravity. None if errors
+ detected.
+ @note Returned center of gravity is refered to ship attached
+ axis coordinates.
+ """
+ if not self.ship:
+ return None
+ # Get ship structure weights
+ W = [0.0, 0.0, 0.0, 0.0]
+ sWeights = weights(self.ship)
+ for w in sWeights:
+ W[0] = W[0] + w[1]
+ W[1] = W[1] + w[1]*w[2][0]
+ W[2] = W[2] + w[1]*w[2][1]
+ W[3] = W[3] + w[1]*w[2][2]
+ # Get selected tanks weights
+ tanks = self.getTanks()
+ for t in tanks:
+ w = tankWeight(t, App.Base.Vector(roll,-trim,0.0))
+ # Unrotate center of gravity
+ x = w[1]*math.cos(math.radians(-trim)) - w[3]*math.sin(math.radians(-trim))
+ y = w[2]
+ z = w[1]*math.sin(math.radians(-trim)) + w[3]*math.cos(math.radians(-trim))
+ w[1] = x
+ w[2] = y*math.cos(math.radians(-roll)) - z*math.sin(math.radians(-roll))
+ w[3] = y*math.sin(math.radians(-roll)) + z*math.cos(math.radians(-roll))
+ W[0] = W[0] + w[0]
+ W[1] = W[1] + w[0]*w[1]
+ W[2] = W[2] + w[0]*w[2]
+ W[3] = W[3] + w[0]*w[3]
+ return [W[0], W[1]/W[0], W[2]/W[0], W[3]/W[0]]
+
+ def computeDraft(self, disp, trim=0.0):
+ """ Computes ship draft.
+ @param disp Ship displacement.
+ @param trim Trim angle [degrees].
+ @return Ship draft, and bouyance center position. None if errors detected.
+ """
+ if not self.ship:
+ return None
+ # Initial condition
+ dens = 1025
+ bbox = self.ship.Shape.BoundBox
+ draft = bbox.ZMin
+ dx = bbox.XMax - bbox.XMin
+ dy = bbox.YMax - bbox.YMin
+ w = 0.0
+ xcb = 0.0
+ while(abs(disp - w)/disp > 0.01):
+ draft = draft + (disp - w) / (dens*dx*dy)
+ ww = Hydrostatics.displacement(self.ship, draft, 0.0, trim, 0.0)
+ w = 1000.0*ww[0]
+ B = ww[1]
+ return [draft,B]
+
+ def computeGZ(self, draft, trim, roll):
+ """ Compute GZ value.
+ @param draft Ship draft.
+ @param trim Ship trim angle [degrees].
+ @param roll Ship roll angle [degrees].
+ @return GZ value [m].
+ """
+ # Get center of gravity (x coordinate not relevant)
+ disp = self.computeDisplacement(trim, roll)
+ G = [disp[2], disp[3]]
+ disp = disp[0]
+ # Get bouyancy center (x coordinate not relevant)
+ disp = Hydrostatics.displacement(self.ship, draft, roll, trim, 0.0)
+ B = [disp[1].y, disp[1].z]
+ # GZ computation
+ BG = [G[0] - B[0], G[1] - B[1]]
+ y = BG[0]*math.cos(math.radians(roll)) - BG[1]*math.sin(math.radians(roll))
+ z = BG[0]*math.sin(math.radians(roll)) + BG[1]*math.cos(math.radians(roll))
+ return y
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/tankGZ/TaskPanel.ui b/src/Mod/Ship/tankGZ/TaskPanel.ui
index 6f2da22e24..49dfa031d8 100644
--- a/src/Mod/Ship/tankGZ/TaskPanel.ui
+++ b/src/Mod/Ship/tankGZ/TaskPanel.ui
@@ -37,98 +37,92 @@
Loading condition
-
-
-
- 0
- 20
- 231
- 231
-
-
-
- -
-
-
- QAbstractItemView::NoEditTriggers
-
-
- QAbstractItemView::MultiSelection
-
-
-
- -
-
-
- Displacement = 0 [kg]
-
-
-
- -
-
-
- Draft = 0 [m]
-
-
-
- -
-
-
- Update displacement and draft
-
-
-
- -
-
-
-
-
-
-
- 3
- 0
-
-
-
- Trim [deg]
-
-
-
- -
-
-
-
- 3
- 0
-
-
-
- -45.000000000000000
-
-
- 45.000000000000000
-
-
- 0.100000000000000
-
-
-
- -
-
-
-
- 1
- 0
-
-
-
- Auto
-
-
-
-
-
-
-
+
+ -
+
+
-
+
+
+ QAbstractItemView::NoEditTriggers
+
+
+ QAbstractItemView::MultiSelection
+
+
+
+ -
+
+
+ Displacement = 0 [kg]
+
+
+
+ -
+
+
+ Draft = 0 [m]
+
+
+
+ -
+
+
+ Update displacement and draft
+
+
+
+ -
+
+
-
+
+
+
+ 3
+ 0
+
+
+
+ Trim [deg]
+
+
+
+ -
+
+
+
+ 3
+ 0
+
+
+
+ -45.000000000000000
+
+
+ 45.000000000000000
+
+
+ 0.100000000000000
+
+
+
+ -
+
+
+
+ 1
+ 0
+
+
+
+ Auto
+
+
+
+
+
+
+
+
-
@@ -142,75 +136,69 @@
Roll angles
-
-
-
- 0
- 20
- 231
- 101
-
-
-
-
- QLayout::SetMinimumSize
-
-
-
-
-
- Start [deg]
-
-
-
- -
-
-
- End [deg]
-
-
-
- -
-
-
- Number of points
-
-
-
- -
-
-
- 0.000000000000000
-
-
- 90.000000000000000
-
-
-
- -
-
-
- 180.000000000000000
-
-
- 45.000000000000000
-
-
-
- -
-
-
- 2
-
-
- 10000
-
-
- 46
-
-
-
-
-
+
+ -
+
+
+ QLayout::SetMinimumSize
+
+
-
+
+
+ Start [deg]
+
+
+
+ -
+
+
+ End [deg]
+
+
+
+ -
+
+
+ Number of points
+
+
+
+ -
+
+
+ 0.000000000000000
+
+
+ 90.000000000000000
+
+
+
+ -
+
+
+ 180.000000000000000
+
+
+ 45.000000000000000
+
+
+
+ -
+
+
+ 2
+
+
+ 10000
+
+
+ 46
+
+
+
+
+
+
diff --git a/src/Mod/Ship/tankGZ/__init__.py b/src/Mod/Ship/tankGZ/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/tankGZ/__init__.py
+++ b/src/Mod/Ship/tankGZ/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Ship/tankWeights/Preview.py b/src/Mod/Ship/tankWeights/Preview.py
index 23bb7fae6c..4a5b59fcaa 100644
--- a/src/Mod/Ship/tankWeights/Preview.py
+++ b/src/Mod/Ship/tankWeights/Preview.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -26,81 +26,81 @@ import FreeCAD,FreeCADGui
from FreeCAD import Base
import Part
# FreeCADShip modules
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class Preview(object):
- def __init__(self):
- """ Constructor.
- """
- self.objects = []
+ def __init__(self):
+ """ Constructor.
+ """
+ self.objects = []
- def reinit(self):
- """ Reinitializate drawer.
- """
- self.clean()
+ def reinit(self):
+ """ Reinitializate drawer.
+ """
+ self.clean()
- def update(self, names, pos):
- """ Update the 3D view printing annotations.
- @param names Weight names.
- @param pos Weight positions (FreeCAD::Base::Vector).
- """
- # Destroy all previous entities
- self.clean()
- for i in range(0, len(names)):
- # Draw gravity line
- line = Part.makeLine((pos[i].x,pos[i].y,pos[i].z),(pos[i].x,pos[i].y,pos[i].z - 9.81))
- Part.show(line)
- objs = FreeCAD.ActiveDocument.Objects
- self.objects.append(objs[-1])
- objs[-1].Label = names[i] + 'Line'
- # Draw circles
- circle = Part.makeCircle(0.5, pos[i], Base.Vector(1.0,0.0,0.0))
- Part.show(circle)
- objs = FreeCAD.ActiveDocument.Objects
- self.objects.append(objs[-1])
- objs[-1].Label = names[i] + 'CircleX'
- circle = Part.makeCircle(0.5, pos[i], Base.Vector(0.0,1.0,0.0))
- Part.show(circle)
- objs = FreeCAD.ActiveDocument.Objects
- self.objects.append(objs[-1])
- objs[-1].Label = names[i] + 'CircleY'
- circle = Part.makeCircle(0.5, pos[i], Base.Vector(0.0,0.0,1.0))
- Part.show(circle)
- objs = FreeCAD.ActiveDocument.Objects
- self.objects.append(objs[-1])
- objs[-1].Label = names[i] + 'CircleZ'
- # Draw annotation
- self.objects.append(DrawText(names[i] + 'Text', names[i], Base.Vector(pos[i].x+1.0,pos[i].y,pos[i].z)))
-
- def clean(self):
- """ Erase all annotations from screen.
- """
- for i in range(0,len(self.objects)):
- if not FreeCAD.ActiveDocument.getObject(self.objects[i].Name):
- continue
- FreeCAD.ActiveDocument.removeObject(self.objects[i].Name)
- self.objects = []
+ def update(self, names, pos):
+ """ Update the 3D view printing annotations.
+ @param names Weight names.
+ @param pos Weight positions (FreeCAD::Base::Vector).
+ """
+ # Destroy all previous entities
+ self.clean()
+ for i in range(0, len(names)):
+ # Draw gravity line
+ line = Part.makeLine((pos[i].x,pos[i].y,pos[i].z),(pos[i].x,pos[i].y,pos[i].z - 9.81))
+ Part.show(line)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.objects.append(objs[-1])
+ objs[-1].Label = names[i] + 'Line'
+ # Draw circles
+ circle = Part.makeCircle(0.5, pos[i], Base.Vector(1.0,0.0,0.0))
+ Part.show(circle)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.objects.append(objs[-1])
+ objs[-1].Label = names[i] + 'CircleX'
+ circle = Part.makeCircle(0.5, pos[i], Base.Vector(0.0,1.0,0.0))
+ Part.show(circle)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.objects.append(objs[-1])
+ objs[-1].Label = names[i] + 'CircleY'
+ circle = Part.makeCircle(0.5, pos[i], Base.Vector(0.0,0.0,1.0))
+ Part.show(circle)
+ objs = FreeCAD.ActiveDocument.Objects
+ self.objects.append(objs[-1])
+ objs[-1].Label = names[i] + 'CircleZ'
+ # Draw annotation
+ self.objects.append(DrawText(names[i] + 'Text', names[i], Base.Vector(pos[i].x+1.0,pos[i].y,pos[i].z)))
+
+ def clean(self):
+ """ Erase all annotations from screen.
+ """
+ for i in range(0,len(self.objects)):
+ if not FreeCAD.ActiveDocument.getObject(self.objects[i].Name):
+ continue
+ FreeCAD.ActiveDocument.removeObject(self.objects[i].Name)
+ self.objects = []
def DrawText(name, string, position, displayMode="Screen", angle=0.0, justification="Left", colour=(0.00,0.00,0.00), size=12):
- """ Draws a text in a desired position.
- @param name Name of the object
- @param string Text to draw (recommended format u'')
- @param position Point to draw the text
- @param angle Counter clockwise rotation of text
- @param justification Alignement of the text ("Left", "Right" or "Center")
- @param colour Colour of the text
- @param size Font size
- @return FreeCAD annotation object
- """
- # Create the object
- text = FreeCAD.ActiveDocument.addObject("App::Annotation",name)
- # Set the text
- text.LabelText = [string, u'']
- # Set the options
- text.Position = position
- FreeCADGui.ActiveDocument.getObject(text.Name).Rotation = angle
- FreeCADGui.ActiveDocument.getObject(text.Name).Justification = justification
- FreeCADGui.ActiveDocument.getObject(text.Name).FontSize = size
- FreeCADGui.ActiveDocument.getObject(text.Name).TextColor = colour
- FreeCADGui.ActiveDocument.getObject(text.Name).DisplayMode = displayMode
- return FreeCAD.ActiveDocument.getObject(text.Name)
+ """ Draws a text in a desired position.
+ @param name Name of the object
+ @param string Text to draw (recommended format u'')
+ @param position Point to draw the text
+ @param angle Counter clockwise rotation of text
+ @param justification Alignement of the text ("Left", "Right" or "Center")
+ @param colour Colour of the text
+ @param size Font size
+ @return FreeCAD annotation object
+ """
+ # Create the object
+ text = FreeCAD.ActiveDocument.addObject("App::Annotation",name)
+ # Set the text
+ text.LabelText = [string, u'']
+ # Set the options
+ text.Position = position
+ FreeCADGui.ActiveDocument.getObject(text.Name).Rotation = angle
+ FreeCADGui.ActiveDocument.getObject(text.Name).Justification = justification
+ FreeCADGui.ActiveDocument.getObject(text.Name).FontSize = size
+ FreeCADGui.ActiveDocument.getObject(text.Name).TextColor = colour
+ FreeCADGui.ActiveDocument.getObject(text.Name).DisplayMode = displayMode
+ return FreeCAD.ActiveDocument.getObject(text.Name)
diff --git a/src/Mod/Ship/tankWeights/TaskPanel.py b/src/Mod/Ship/tankWeights/TaskPanel.py
index a01f7c73c2..7a336bfffc 100644
--- a/src/Mod/Ship/tankWeights/TaskPanel.py
+++ b/src/Mod/Ship/tankWeights/TaskPanel.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -29,218 +29,224 @@ from PyQt4 import QtGui,QtCore
# Module
import Preview
from Instance import *
-from shipUtils import Paths, Translator
+from shipUtils import Paths
class TaskPanel:
- def __init__(self):
- self.ui = Paths.modulePath() + "/tankWeights/TaskPanel.ui"
- self.ship = None
- self.preview = Preview.Preview()
+ def __init__(self):
+ self.ui = Paths.modulePath() + "/tankWeights/TaskPanel.ui"
+ self.ship = None
+ self.preview = Preview.Preview()
- def accept(self):
- self.preview.clean()
- if not self.ship:
- return False
- # Setup lists
- name = []
- mass = []
- pos = []
- for i in range(0,self.form.weights.rowCount() - 1):
- item = self.form.weights.item(i,0)
- name.append(item.text().__str__())
- item = self.form.weights.item(i,1)
- mass.append(item.text().toFloat()[0])
- vec = []
- item = self.form.weights.item(i,2)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,3)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,4)
- vec.append(item.text().toFloat()[0])
- pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
- # Send to ship
- self.ship.WeightNames = name[:]
- self.ship.WeightMass = mass[:]
- self.ship.WeightPos = pos[:]
- return True
+ def accept(self):
+ self.preview.clean()
+ if not self.ship:
+ return False
+ # Setup lists
+ name = []
+ mass = []
+ pos = []
+ for i in range(0,self.form.weights.rowCount() - 1):
+ item = self.form.weights.item(i,0)
+ name.append(item.text().__str__())
+ item = self.form.weights.item(i,1)
+ mass.append(item.text().toFloat()[0])
+ vec = []
+ item = self.form.weights.item(i,2)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,3)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,4)
+ vec.append(item.text().toFloat()[0])
+ pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
+ # Send to ship
+ self.ship.WeightNames = name[:]
+ self.ship.WeightMass = mass[:]
+ self.ship.WeightPos = pos[:]
+ return True
- def reject(self):
- self.preview.clean()
- if not self.ship:
- return False
- return True
+ def reject(self):
+ self.preview.clean()
+ if not self.ship:
+ return False
+ return True
- def clicked(self, index):
- pass
+ def clicked(self, index):
+ pass
- def open(self):
- pass
+ def open(self):
+ pass
- def needsFullSpace(self):
- return True
+ def needsFullSpace(self):
+ return True
- def isAllowedAlterSelection(self):
- return False
+ def isAllowedAlterSelection(self):
+ return False
- def isAllowedAlterView(self):
- return True
+ def isAllowedAlterView(self):
+ return True
- def isAllowedAlterDocument(self):
- return False
+ def isAllowedAlterDocument(self):
+ return False
- def helpRequested(self):
- pass
+ def helpRequested(self):
+ pass
- def setupUi(self):
- mw = self.getMainWindow()
- form = mw.findChild(QtGui.QWidget, "TaskPanel")
- form.weights = form.findChild(QtGui.QTableWidget, "Weights")
- self.form = form
- # Initial values
- if self.initValues():
- return True
- self.retranslateUi()
- # Connect Signals and Slots
- QtCore.QObject.connect(form.weights,QtCore.SIGNAL("cellChanged(int,int)"),self.onTableItem);
- # Update screen
- name = []
- pos = []
- for i in range(0,self.form.weights.rowCount() - 1):
- item = self.form.weights.item(i,0)
- name.append(item.text().__str__())
- vec = []
- item = self.form.weights.item(i,2)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,3)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,4)
- vec.append(item.text().toFloat()[0])
- pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
- self.preview.update(name, pos)
+ def setupUi(self):
+ mw = self.getMainWindow()
+ form = mw.findChild(QtGui.QWidget, "TaskPanel")
+ form.weights = form.findChild(QtGui.QTableWidget, "Weights")
+ self.form = form
+ # Initial values
+ if self.initValues():
+ return True
+ self.retranslateUi()
+ # Connect Signals and Slots
+ QtCore.QObject.connect(form.weights,QtCore.SIGNAL("cellChanged(int,int)"),self.onTableItem);
+ # Update screen
+ name = []
+ pos = []
+ for i in range(0,self.form.weights.rowCount() - 1):
+ item = self.form.weights.item(i,0)
+ name.append(item.text().__str__())
+ vec = []
+ item = self.form.weights.item(i,2)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,3)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,4)
+ vec.append(item.text().toFloat()[0])
+ pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
+ self.preview.update(name, pos)
- def getMainWindow(self):
- "returns the main window"
- # using QtGui.qApp.activeWindow() isn't very reliable because if another
- # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
- # returned
- toplevel = QtGui.qApp.topLevelWidgets()
- for i in toplevel:
- if i.metaObject().className() == "Gui::MainWindow":
- return i
- raise Exception("No main window found")
+ def getMainWindow(self):
+ "returns the main window"
+ # using QtGui.qApp.activeWindow() isn't very reliable because if another
+ # widget than the mainwindow is active (e.g. a dialog) the wrong widget is
+ # returned
+ toplevel = QtGui.qApp.topLevelWidgets()
+ for i in toplevel:
+ if i.metaObject().className() == "Gui::MainWindow":
+ return i
+ raise Exception("No main window found")
- def initValues(self):
- """ Get selected geometry.
- @return False if sucessfully values initialized.
- """
- # Get selected objects
- selObjs = FreeCADGui.Selection.getSelection()
- if not selObjs:
- msg = Translator.translate("Ship instance must be selected (no object selected)\n")
- App.Console.PrintError(msg)
- return True
- for i in range(0,len(selObjs)):
- obj = selObjs[i]
- # Test if is a ship instance
- props = obj.PropertiesList
- try:
- props.index("IsShip")
- except ValueError:
- continue
- if obj.IsShip:
- # Test if another ship already selected
- if self.ship:
- msg = Translator.translate("More than one ship selected (extra ship will be neglected)\n")
- App.Console.PrintWarning(msg)
- break
- self.ship = obj
- # Test if any valid ship was selected
- if not self.ship:
- msg = Translator.translate("Ship instance must be selected (no valid ship found at selected objects)\n")
- App.Console.PrintError(msg)
- return True
- # Get weights
- w = weights(self.ship)
- # Set the items
- self.form.weights.setRowCount(len(w)+1)
- for i in range(0,len(w)):
- item = QtGui.QTableWidgetItem(w[i][0])
- self.form.weights.setItem(i,0,item)
- string = '%g' % (w[i][1])
- item = QtGui.QTableWidgetItem(string)
- self.form.weights.setItem(i,1,item)
- string = '%g' % (w[i][2].x)
- item = QtGui.QTableWidgetItem(string)
- self.form.weights.setItem(i,2,item)
- string = '%g' % (w[i][2].y)
- item = QtGui.QTableWidgetItem(string)
- self.form.weights.setItem(i,3,item)
- string = '%g' % (w[i][2].z)
- item = QtGui.QTableWidgetItem(string)
- self.form.weights.setItem(i,4,item)
- msg = Translator.translate("Ready to work\n")
- App.Console.PrintMessage(msg)
- return False
+ def initValues(self):
+ """ Get selected geometry.
+ @return False if sucessfully values initialized.
+ """
+ # Get selected objects
+ selObjs = FreeCADGui.Selection.getSelection()
+ if not selObjs:
+ msg = QtGui.QApplication.translate("ship_console", "Ship instance must be selected (no object selected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ for i in range(0,len(selObjs)):
+ obj = selObjs[i]
+ # Test if is a ship instance
+ props = obj.PropertiesList
+ try:
+ props.index("IsShip")
+ except ValueError:
+ continue
+ if obj.IsShip:
+ # Test if another ship already selected
+ if self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "More than one ship selected (extra ships will be neglected)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintWarning(msg + '\n')
+ break
+ self.ship = obj
+ # Test if any valid ship was selected
+ if not self.ship:
+ msg = QtGui.QApplication.translate("ship_console",
+ "Ship instance must be selected (no valid ship found at selected objects)",
+ None,QtGui.QApplication.UnicodeUTF8)
+ App.Console.PrintError(msg + '\n')
+ return True
+ # Get weights
+ w = weights(self.ship)
+ # Set the items
+ self.form.weights.setRowCount(len(w)+1)
+ for i in range(0,len(w)):
+ item = QtGui.QTableWidgetItem(w[i][0])
+ self.form.weights.setItem(i,0,item)
+ string = '%g' % (w[i][1])
+ item = QtGui.QTableWidgetItem(string)
+ self.form.weights.setItem(i,1,item)
+ string = '%g' % (w[i][2].x)
+ item = QtGui.QTableWidgetItem(string)
+ self.form.weights.setItem(i,2,item)
+ string = '%g' % (w[i][2].y)
+ item = QtGui.QTableWidgetItem(string)
+ self.form.weights.setItem(i,3,item)
+ string = '%g' % (w[i][2].z)
+ item = QtGui.QTableWidgetItem(string)
+ self.form.weights.setItem(i,4,item)
+ return False
- def retranslateUi(self):
- """ Set user interface locale strings.
- """
- self.form.setWindowTitle(Translator.translate("Set weights"))
- labels = []
- labels.append(Translator.translate("Name"))
- labels.append(Translator.translate("Mass") + " [kg]")
- labels.append(QtCore.QString("g.x [m]"))
- labels.append(QtCore.QString("g.y [m]"))
- labels.append(QtCore.QString("g.z [m]"))
- self.form.weights.setHorizontalHeaderLabels(labels)
+ def retranslateUi(self):
+ """ Set user interface locale strings.
+ """
+ self.form.setWindowTitle(QtGui.QApplication.translate("shiptank_weights","Set weights",
+ None,QtGui.QApplication.UnicodeUTF8))
+ labels = []
+ labels.append(QtGui.QApplication.translate("shiptank_weights","Name",
+ None,QtGui.QApplication.UnicodeUTF8))
+ labels.append(QtGui.QApplication.translate("shiptank_weights","Mass",
+ None,QtGui.QApplication.UnicodeUTF8) + " [kg]")
+ labels.append(QtCore.QString("g.x [m]"))
+ labels.append(QtCore.QString("g.y [m]"))
+ labels.append(QtCore.QString("g.z [m]"))
+ self.form.weights.setHorizontalHeaderLabels(labels)
- def onTableItem(self, row, column):
- """ Function called when an item of table is changed.
- @param row Changed item row
- @param column Changed item column
- """
- item = self.form.weights.item(row,column)
- # Row deletion
- if column == 0:
- if not item.text():
- self.form.weights.removeRow(row)
- # Ensure that exist one empty item at the end
- nRow = self.form.weights.rowCount()
- last = self.form.weights.item(nRow-1,0)
- if last:
- if(last.text() != ''):
- self.form.weights.setRowCount(nRow+1)
- # Fields must be numbers
- for i in range(0,self.form.weights.rowCount()-1): # Avoid last row
- for j in range(1,self.form.weights.columnCount()): # Avoid name column
- item = self.form.weights.item(i,j)
- if not item:
- item = QtGui.QTableWidgetItem('0.0')
- self.form.weights.setItem(i,j,item)
- continue
- (number,flag) = item.text().toFloat()
- if not flag:
- item.setText('0.0')
- # Update screen annotations
- name = []
- pos = []
- for i in range(0,self.form.weights.rowCount() - 1):
- item = self.form.weights.item(i,0)
- name.append(item.text().__str__())
- vec = []
- item = self.form.weights.item(i,2)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,3)
- vec.append(item.text().toFloat()[0])
- item = self.form.weights.item(i,4)
- vec.append(item.text().toFloat()[0])
- pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
- self.preview.update(name, pos)
+ def onTableItem(self, row, column):
+ """ Function called when an item of table is changed.
+ @param row Changed item row
+ @param column Changed item column
+ """
+ item = self.form.weights.item(row,column)
+ # Row deletion
+ if column == 0:
+ if not item.text():
+ self.form.weights.removeRow(row)
+ # Ensure that exist one empty item at the end
+ nRow = self.form.weights.rowCount()
+ last = self.form.weights.item(nRow-1,0)
+ if last:
+ if(last.text() != ''):
+ self.form.weights.setRowCount(nRow+1)
+ # Fields must be numbers
+ for i in range(0,self.form.weights.rowCount()-1): # Avoid last row
+ for j in range(1,self.form.weights.columnCount()): # Avoid name column
+ item = self.form.weights.item(i,j)
+ if not item:
+ item = QtGui.QTableWidgetItem('0.0')
+ self.form.weights.setItem(i,j,item)
+ continue
+ (number,flag) = item.text().toFloat()
+ if not flag:
+ item.setText('0.0')
+ # Update screen annotations
+ name = []
+ pos = []
+ for i in range(0,self.form.weights.rowCount() - 1):
+ item = self.form.weights.item(i,0)
+ name.append(item.text().__str__())
+ vec = []
+ item = self.form.weights.item(i,2)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,3)
+ vec.append(item.text().toFloat()[0])
+ item = self.form.weights.item(i,4)
+ vec.append(item.text().toFloat()[0])
+ pos.append(App.Base.Vector(vec[0],vec[1],vec[2]))
+ self.preview.update(name, pos)
def createTask():
- panel = TaskPanel()
- Gui.Control.showDialog(panel)
- if panel.setupUi():
- Gui.Control.closeDialog(panel)
- return None
- return panel
+ panel = TaskPanel()
+ Gui.Control.showDialog(panel)
+ if panel.setupUi():
+ Gui.Control.closeDialog(panel)
+ return None
+ return panel
diff --git a/src/Mod/Ship/tankWeights/TaskPanel.ui b/src/Mod/Ship/tankWeights/TaskPanel.ui
index 23dc4ff1bb..5123b44cab 100644
--- a/src/Mod/Ship/tankWeights/TaskPanel.ui
+++ b/src/Mod/Ship/tankWeights/TaskPanel.ui
@@ -11,7 +11,7 @@
- Set wieghts
+ Set weights
-
diff --git a/src/Mod/Ship/tankWeights/__init__.py b/src/Mod/Ship/tankWeights/__init__.py
index cbfb57d75d..0213909409 100644
--- a/src/Mod/Ship/tankWeights/__init__.py
+++ b/src/Mod/Ship/tankWeights/__init__.py
@@ -1,24 +1,24 @@
#***************************************************************************
-#* *
-#* Copyright (c) 2011, 2012 *
-#* Jose Luis Cercos Pita *
-#* *
+#* *
+#* Copyright (c) 2011, 2012 *
+#* Jose Luis Cercos Pita *
+#* *
#* This program is free software; you can redistribute it and/or modify *
-#* it under the terms of the GNU Lesser General Public License (LGPL) *
-#* as published by the Free Software Foundation; either version 2 of *
-#* the License, or (at your option) any later version. *
-#* for detail see the LICENCE text file. *
-#* *
-#* This program is distributed in the hope that it will be useful, *
-#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
-#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-#* GNU Library General Public License for more details. *
-#* *
-#* You should have received a copy of the GNU Library General Public *
+#* it under the terms of the GNU Lesser General Public License (LGPL) *
+#* as published by the Free Software Foundation; either version 2 of *
+#* the License, or (at your option) any later version. *
+#* for detail see the LICENCE text file. *
+#* *
+#* This program is distributed in the hope that it will be useful, *
+#* but WITHOUT ANY WARRANTY; without even the implied warranty of *
+#* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+#* GNU Library General Public License for more details. *
+#* *
+#* You should have received a copy of the GNU Library General Public *
#* License along with this program; if not, write to the Free Software *
#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
-#* USA *
-#* *
+#* USA *
+#* *
#***************************************************************************
# FreeCAD modules
@@ -32,5 +32,5 @@ from PyQt4 import QtGui,QtCore
import TaskPanel
def load():
- """ Loads the tool """
- TaskPanel.createTask()
+ """ Loads the tool """
+ TaskPanel.createTask()
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
index eb68aa3466..131e22ade4 100644
--- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
+++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp
@@ -326,6 +326,36 @@ void ViewProviderSketch::snapToGrid(double &x, double &y)
}
}
+void ViewProviderSketch::getProjectingLine(const SbVec2s& pnt, const Gui::View3DInventorViewer *viewer, SbLine& line) const
+{
+ const SbViewportRegion& vp = viewer->getViewportRegion();
+
+ short x,y; pnt.getValue(x,y);
+ SbVec2f siz = vp.getViewportSize();
+ float dX, dY; siz.getValue(dX, dY);
+
+ float fRatio = vp.getViewportAspectRatio();
+ float pX = (float)x / float(vp.getViewportSizePixels()[0]);
+ float pY = (float)y / float(vp.getViewportSizePixels()[1]);
+
+ // now calculate the real points respecting aspect ratio information
+ //
+ if (fRatio > 1.0f) {
+ pX = (pX - 0.5f*dX) * fRatio + 0.5f*dX;
+ }
+ else if (fRatio < 1.0f) {
+ pY = (pY - 0.5f*dY) / fRatio + 0.5f*dY;
+ }
+
+ SoCamera* pCam = viewer->getCamera();
+ if (!pCam) return;
+ SbViewVolume vol = pCam->getViewVolume();
+
+ float focalDist = pCam->focalDistance.getValue();
+
+ vol.projectPointToLine(SbVec2f(pX,pY), line);
+}
+
void ViewProviderSketch::getCoordsOnSketchPlane(double &u, double &v,const SbVec3f &point, const SbVec3f &normal)
{
// Plane form
@@ -360,8 +390,10 @@ bool ViewProviderSketch::mouseButtonPressed(int Button, bool pressed, const SbVe
assert(edit);
// Calculate 3d point to the mouse position
- SbVec3f point = viewer->getPointOnScreen(cursorPos);
- SbVec3f normal = viewer->getViewDirection();
+ SbLine line;
+ getProjectingLine(cursorPos, viewer, line);
+ SbVec3f point = line.getPosition();
+ SbVec3f normal = line.getDirection();
// use scoped_ptr to make sure that instance gets deleted in all cases
boost::scoped_ptr pp(this->getPointOnRay(cursorPos, viewer));
@@ -774,11 +806,11 @@ bool ViewProviderSketch::mouseMove(const SbVec2s &cursorPos, Gui::View3DInventor
assert(edit);
// Calculate 3d point to the mouse position
- SbVec3f point = viewer->getPointOnScreen(cursorPos);
- SbVec3f normal = viewer->getViewDirection();
+ SbLine line;
+ getProjectingLine(cursorPos, viewer, line);
double x,y;
- getCoordsOnSketchPlane(x,y,point,normal);
+ getCoordsOnSketchPlane(x,y,line.getPosition(),line.getDirection());
snapToGrid(x, y);
bool preselectChanged;
@@ -2626,12 +2658,14 @@ void ViewProviderSketch::rebuildConstraintsVisual(void)
for (std::vector::const_iterator it=constrlist.begin(); it != constrlist.end(); ++it) {
// root separator for one constraint
SoSeparator *sep = new SoSeparator();
+ sep->ref();
// no caching for fluctuand data structures
sep->renderCaching = SoSeparator::OFF;
// every constrained visual node gets its own material for preselection and selection
- SoMaterial *Material = new SoMaterial;
- Material->diffuseColor = ConstrDimColor;
+ SoMaterial *mat = new SoMaterial;
+ mat->ref();
+ mat->diffuseColor = ConstrDimColor;
// distinguish different constraint types to build up
switch ((*it)->Type) {
@@ -2651,17 +2685,15 @@ void ViewProviderSketch::rebuildConstraintsVisual(void)
edit->constrGroup->addChild(anno);
edit->vConstrType.push_back((*it)->Type);
// nodes not needed
- sep->ref();
sep->unref();
- Material->ref();
- Material->unref();
+ mat->unref();
continue; // jump to next constraint
}
break;
case Horizontal:
case Vertical:
{
- sep->addChild(Material);
+ sep->addChild(mat);
sep->addChild(new SoZoomTranslation()); // 1.
sep->addChild(new SoImage()); // 2. constraint icon
@@ -2677,7 +2709,7 @@ void ViewProviderSketch::rebuildConstraintsVisual(void)
case Equal:
{
// Add new nodes to Constraint Seperator
- sep->addChild(Material);
+ sep->addChild(mat);
sep->addChild(new SoZoomTranslation()); // 1.
sep->addChild(new SoImage()); // 2. first constraint icon
sep->addChild(new SoZoomTranslation()); // 3.
@@ -2691,7 +2723,7 @@ void ViewProviderSketch::rebuildConstraintsVisual(void)
case Tangent:
{
// Add new nodes to Constraint Seperator
- sep->addChild(Material);
+ sep->addChild(mat);
sep->addChild(new SoZoomTranslation()); // 1.
sep->addChild(new SoImage()); // 2. constraint icon
@@ -2726,6 +2758,9 @@ void ViewProviderSketch::rebuildConstraintsVisual(void)
}
edit->constrGroup->addChild(sep);
+ // decrement ref counter again
+ sep->unref();
+ mat->unref();
}
}
diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.h b/src/Mod/Sketcher/Gui/ViewProviderSketch.h
index 5749873a21..ecf41d89da 100644
--- a/src/Mod/Sketcher/Gui/ViewProviderSketch.h
+++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.h
@@ -35,6 +35,7 @@
class TopoDS_Shape;
class TopoDS_Face;
class SoSeparator;
+class SbLine;
class SbVec3f;
class SoCoordinate3;
class SoPointSet;
@@ -134,6 +135,9 @@ public:
/// give the coordinates of a line on the sketch plane in sketcher (2D) coordinates
void getCoordsOnSketchPlane(double &u, double &v,const SbVec3f &point, const SbVec3f &normal);
+ /// give projecting line of position
+ void getProjectingLine(const SbVec2s&, const Gui::View3DInventorViewer *viewer, SbLine&) const;
+
/// helper to detect preselection
bool detectPreselection(const SoPickedPoint *Point, int &PtIndex,int &GeoIndex, int &ConstrIndex, int &CrossIndex);
diff --git a/src/Mod/Start/Gui/CMakeLists.txt b/src/Mod/Start/Gui/CMakeLists.txt
index b3f9a98363..322752436a 100644
--- a/src/Mod/Start/Gui/CMakeLists.txt
+++ b/src/Mod/Start/Gui/CMakeLists.txt
@@ -42,6 +42,7 @@ SET(StartPage_Resources
StartPage/LoadPartDesignExample.py
StartPage/LoadDrawingExample.py
StartPage/LoadRobotExample.py
+ StartPage/LoadArchExample.py
StartPage/Background.jpg
StartPage/FreeCAD.png
StartPage/ArchDesign.png
diff --git a/src/Mod/Start/StartPage/CMakeLists.txt b/src/Mod/Start/StartPage/CMakeLists.txt
index b4233676a9..e2313cb935 100644
--- a/src/Mod/Start/StartPage/CMakeLists.txt
+++ b/src/Mod/Start/StartPage/CMakeLists.txt
@@ -13,6 +13,7 @@ SET(StartPage_DATA
LoadMRU0.py
LoadMRU1.py
LoadMRU2.py
+ LoadArchExample.py
Mesh.py
PartDesign.py
Background.jpg
diff --git a/src/Mod/Start/StartPage/LoadArchExample.py b/src/Mod/Start/StartPage/LoadArchExample.py
new file mode 100644
index 0000000000..ed3a5be411
--- /dev/null
+++ b/src/Mod/Start/StartPage/LoadArchExample.py
@@ -0,0 +1,3 @@
+import FreeCAD,FreeCADGui
+FreeCAD.open(FreeCAD.getResourceDir()+"examples/ArchDetail.FCStd")
+FreeCADGui.activeDocument().sendMsgToViews("ViewFit")
diff --git a/src/Mod/Start/StartPage/Makefile.am b/src/Mod/Start/StartPage/Makefile.am
index c23b289a92..0f6151dcb0 100644
--- a/src/Mod/Start/StartPage/Makefile.am
+++ b/src/Mod/Start/StartPage/Makefile.am
@@ -18,6 +18,7 @@ data_DATA = \
LoadMRU0.py \
LoadMRU1.py \
LoadMRU2.py \
+ LoadArchExample.py \
Mesh.py \
PartDesign.py \
Background.jpg \
diff --git a/src/Mod/Start/StartPage/StartPage.py b/src/Mod/Start/StartPage/StartPage.py
index 015aeda6af..117cca2955 100644
--- a/src/Mod/Start/StartPage/StartPage.py
+++ b/src/Mod/Start/StartPage/StartPage.py
@@ -76,6 +76,7 @@ text51 = translate("StartPage","http://sourceforge.net/apps/mediawiki/free-cad/i
text52 = translate("StartPage","Ship Design")
text53 = translate("StartPage","Designing and calculating ships")
text54 = translate("StartPage","The Ship Design module offers several tools to help ship designers to view, model and calculate profiles and other specific properties of ship hulls.")
+text55 = translate("StartPage","Load an Architectural example model")
# here is the html page skeleton
@@ -319,6 +320,7 @@ def getExamples():
""" + text11 + """
""" + text12 + """
""" + text13 + """
+
""" + text55 + """
"""
def getLinks():
diff --git a/src/WindowsInstaller/FreeCAD.wxs b/src/WindowsInstaller/FreeCAD.wxs
index 5dcf7ac418..bd2d427f5c 100644
--- a/src/WindowsInstaller/FreeCAD.wxs
+++ b/src/WindowsInstaller/FreeCAD.wxs
@@ -183,9 +183,6 @@
-
-
-
diff --git a/src/WindowsInstaller/FreeCADData.wxs b/src/WindowsInstaller/FreeCADData.wxs
index 2f52bf207b..2f12ae7db1 100644
--- a/src/WindowsInstaller/FreeCADData.wxs
+++ b/src/WindowsInstaller/FreeCADData.wxs
@@ -39,6 +39,7 @@
+
@@ -95,6 +96,7 @@
+
diff --git a/src/WindowsInstaller/LibPack.wxs b/src/WindowsInstaller/LibPack.wxs
index 6121468927..d49cc4ca69 100644
--- a/src/WindowsInstaller/LibPack.wxs
+++ b/src/WindowsInstaller/LibPack.wxs
@@ -150,6 +150,7 @@
+
diff --git a/src/WindowsInstaller/ModPlot.wxi b/src/WindowsInstaller/ModPlot.wxi
index c12fe57106..f536a491dc 100644
--- a/src/WindowsInstaller/ModPlot.wxi
+++ b/src/WindowsInstaller/ModPlot.wxi
@@ -29,73 +29,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/WindowsInstaller/ModShip.wxi b/src/WindowsInstaller/ModShip.wxi
index 029fe06c32..4938ba5d3a 100644
--- a/src/WindowsInstaller/ModShip.wxi
+++ b/src/WindowsInstaller/ModShip.wxi
@@ -29,38 +29,27 @@
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -77,7 +66,7 @@
-
+
@@ -155,7 +144,7 @@
-
+