diff options
| author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2025-09-24 14:13:56 +0200 |
|---|---|---|
| committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2025-09-26 07:32:33 +0200 |
| commit | 04a1c461d82e966510ac3f9c355b3e6b99a92d4b (patch) | |
| tree | c3094764ef7cdc76467b61fcf44e769322c389ce /examples/quick3d | |
| parent | b987278cfbbe6c8d6eab373ba0b1dfca12598d06 (diff) | |
Update the QtQuick3d customgeometry example
Change it to be a QML module completely loaded from the file system
and adapt to qtquick3d/d7f4419f1d763dbbd8d2b58f99ff3fbadba95297 (adding
a Torus).
Pick-to: 6.10
Task-number: PYSIDE-2206
Change-Id: Ifac722cc676421a75bef6fe5067f81d3fa6ff60b
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'examples/quick3d')
| -rw-r--r-- | examples/quick3d/customgeometry/CustomGeometryExample/Main.qml | 398 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/CustomGeometryExample/TorusMesh.qml | 60 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/CustomGeometryExample/qmldir | 3 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/CustomGeometryExample/qt_logo_rect.png (renamed from examples/quick3d/customgeometry/qt_logo_rect.png) | bin | 6319 -> 6319 bytes | |||
| -rw-r--r-- | examples/quick3d/customgeometry/customgeometry.pyproject | 4 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/examplepoint.py | 2 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/exampletriangle.py | 2 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/main.py | 9 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/main.qml | 240 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/resources.qrc | 6 | ||||
| -rw-r--r-- | examples/quick3d/customgeometry/resources_rc.py | 585 |
11 files changed, 469 insertions, 840 deletions
diff --git a/examples/quick3d/customgeometry/CustomGeometryExample/Main.qml b/examples/quick3d/customgeometry/CustomGeometryExample/Main.qml new file mode 100644 index 000000000..ced493e1f --- /dev/null +++ b/examples/quick3d/customgeometry/CustomGeometryExample/Main.qml @@ -0,0 +1,398 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick3D +import QtQuick3D.Helpers + +import CustomGeometryExample + +ApplicationWindow { + id: window + width: 1280 + height: 720 + visible: true + title: "Custom Geometry Example" + + property bool isLandscape: width > height + + View3D { + id: v3d + anchors.left: window.isLandscape ? controlsPane.right : parent.left + anchors.top: window.isLandscape ? parent.top : controlsPane.bottom + anchors.right: parent.right + anchors.bottom: parent.bottom + + camera: camera + + environment: SceneEnvironment { + id: env + backgroundMode: SceneEnvironment.Color + clearColor: "#002b36" + } + + Node { + id: originNode + PerspectiveCamera { + id: cameraNode + z: 600 + } + } + + DirectionalLight { + id: directionalLight + color: Qt.rgba(0.4, 0.2, 0.6, 1.0) + ambientColor: Qt.rgba(0.1, 0.1, 0.1, 1.0) + } + + PointLight { + id: pointLight + position: Qt.vector3d(0, 0, 100) + color: Qt.rgba(0.1, 1.0, 0.1, 1.0) + ambientColor: Qt.rgba(0.2, 0.2, 0.2, 1.0) + } + + Model { + id: gridModel + visible: false + scale: Qt.vector3d(100, 100, 100) + geometry: GridGeometry { + id: grid + horizontalLines: 20 + verticalLines: 20 + } + materials: [ + PrincipledMaterial { + lineWidth: sliderLineWidth.value + } + ] + } + + //! [model triangle] + Model { + id: triangleModel + visible: false + scale: Qt.vector3d(100, 100, 100) + geometry: ExampleTriangleGeometry { + normals: cbNorm.checked + normalXY: sliderNorm.value + uv: cbUV.checked + uvAdjust: sliderUV.value + } + materials: [ + PrincipledMaterial { + Texture { + id: baseColorMap + source: "qt_logo_rect.png" + } + cullMode: PrincipledMaterial.NoCulling + baseColorMap: cbTexture.checked ? baseColorMap : null + specularAmount: 0.5 + } + ] + } + //! [model triangle] + + Model { + id: pointModel + visible: false + scale: Qt.vector3d(100, 100, 100) + geometry: ExamplePointGeometry { } + materials: [ + PrincipledMaterial { + lighting: PrincipledMaterial.NoLighting + cullMode: PrincipledMaterial.NoCulling + baseColor: "yellow" + pointSize: sliderPointSize.value + } + ] + } + + Model { + id: torusModel + visible: false + geometry: TorusMesh { + radius: radiusSlider.value + tubeRadius: tubeRadiusSlider.value + segments: segmentsSlider.value + rings: ringsSlider.value + } + materials: [ + PrincipledMaterial { + id: torusMaterial + baseColor: "#dc322f" + metalness: 0.0 + roughness: 0.1 + } + ] + } + + OrbitCameraController { + origin: originNode + camera: cameraNode + } + } + + Pane { + id: controlsPane + width: window.isLandscape ? implicitWidth : window.width + height: window.isLandscape ? window.height : implicitHeight + ColumnLayout { + GroupBox { + title: "Mode" + ButtonGroup { + id: modeGroup + buttons: [ radioGridGeom, radioCustGeom, radioPointGeom, radioQMLGeom ] + } + ColumnLayout { + RadioButton { + id: radioGridGeom + text: "GridGeometry" + checked: true + } + RadioButton { + id: radioCustGeom + text: "Custom geometry from application (triangle)" + checked: false + } + RadioButton { + id: radioPointGeom + text: "Custom geometry from application (points)" + checked: false + } + RadioButton { + id: radioQMLGeom + text: "Custom geometry from QML" + checked: false + } + } + } + + Pane { + id: gridSettings + visible: false + ColumnLayout { + Button { + text: "+ Y Cells" + onClicked: grid.horizontalLines += 1 + Layout.alignment: Qt.AlignHCenter + + } + RowLayout { + Layout.alignment: Qt.AlignHCenter + Button { + text: "- X Cells" + onClicked: grid.verticalLines -= 1 + } + Button { + text: "+ X Cells" + onClicked: grid.verticalLines += 1 + } + } + Button { + text: "- Y Cells" + onClicked: grid.horizontalLines -= 1 + Layout.alignment: Qt.AlignHCenter + } + + Label { + text: "Line width (if supported)" + } + Slider { + Layout.fillWidth: true + id: sliderLineWidth + from: 1.0 + to: 10.0 + stepSize: 0.5 + value: 1.0 + } + } + } + Pane { + id: triangleSettings + visible: false + ColumnLayout { + CheckBox { + id: cbNorm + text: "provide normals in geometry" + checked: false + } + RowLayout { + enabled: cbNorm.checked + Label { + Layout.fillWidth: true + text: "Normal adjust: " + } + Slider { + id: sliderNorm + + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 0.0 + } + } + CheckBox { + id: cbTexture + text: "enable base color map" + checked: false + } + CheckBox { + id: cbUV + text: "provide UV in geometry" + checked: false + } + RowLayout { + enabled: cbUV.checked + Label { + Layout.fillWidth: true + text: "UV adjust:" + } + Slider { + id: sliderUV + from: 0.0 + to: 1.0 + stepSize: 0.01 + value: 0.0 + } + } + } + + } + Pane { + id: pointSettings + visible: false + RowLayout { + ColumnLayout { + RowLayout { + Label { + text: "Point size (if supported)" + } + Slider { + id: sliderPointSize + from: 1.0 + to: 16.0 + stepSize: 1.0 + value: 1.0 + } + } + } + } + } + Pane { + id: torusSettings + visible: false + ColumnLayout { + Label { + text: "Radius: (" + radiusSlider.value + ")" + } + Slider { + id: radiusSlider + from: 1.0 + to: 1000.0 + stepSize: 1.0 + value: 200 + } + Label { + text: "Tube Radius: (" + tubeRadiusSlider.value + ")" + } + Slider { + id: tubeRadiusSlider + from: 1.0 + to: 500.0 + stepSize: 1.0 + value: 50 + } + Label { + text: "Rings: (" + ringsSlider.value + ")" + } + Slider { + id: ringsSlider + from: 3 + to: 35 + stepSize: 1.0 + value: 20 + } + Label { + text: "Segments: (" + segmentsSlider.value + ")" + } + Slider { + id: segmentsSlider + from: 3 + to: 35 + stepSize: 1.0 + value: 20 + } + CheckBox { + id: wireFrameCheckbox + text: "Wireframe Mode" + checked: false + onCheckedChanged: { + env.debugSettings.wireframeEnabled = checked + torusMaterial.cullMode = checked ? Material.NoCulling : Material.BackFaceCulling + + + } + } + } + + } + } + states: [ + State { + name: "gridMode" + when: radioGridGeom.checked + PropertyChanges { + gridModel.visible: true + gridSettings.visible: true + env.debugSettings.wireframeEnabled: false + originNode.position: Qt.vector3d(0, 0, 0) + originNode.rotation: Qt.quaternion(1, 0, 0, 0) + cameraNode.z: 600 + + } + }, + State { + name: "triangleMode" + when: radioCustGeom.checked + PropertyChanges { + triangleModel.visible: true + triangleSettings.visible: true + env.debugSettings.wireframeEnabled: false + originNode.position: Qt.vector3d(0, 0, 0) + originNode.rotation: Qt.quaternion(1, 0, 0, 0) + cameraNode.z: 600 + } + }, + State { + name: "pointMode" + when: radioPointGeom.checked + PropertyChanges { + pointModel.visible: true + pointSettings.visible: true + env.debugSettings.wireframeEnabled: false + originNode.position: Qt.vector3d(0, 0, 0) + originNode.rotation: Qt.quaternion(1, 0, 0, 0) + cameraNode.z: 600 + } + }, + State { + name: "qmlMode" + when: radioQMLGeom.checked + PropertyChanges { + torusModel.visible: true + torusSettings.visible: true + directionalLight.eulerRotation: Qt.vector3d(-40, 0, 0) + directionalLight.color: "white" + pointLight.color: "white" + pointLight.position: Qt.vector3d(0, 0, 0) + originNode.position: Qt.vector3d(0, 0, 0) + originNode.eulerRotation: Qt.vector3d(-40, 0, 0) + cameraNode.z: 600 + } + } + ] + } +} diff --git a/examples/quick3d/customgeometry/CustomGeometryExample/TorusMesh.qml b/examples/quick3d/customgeometry/CustomGeometryExample/TorusMesh.qml new file mode 100644 index 000000000..7be605965 --- /dev/null +++ b/examples/quick3d/customgeometry/CustomGeometryExample/TorusMesh.qml @@ -0,0 +1,60 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick3D.Helpers + +ProceduralMesh { + property int rings: 50 + property int segments: 50 + property real radius: 100.0 + property real tubeRadius: 10.0 + property var meshArrays: generateTorus(rings, segments, radius, tubeRadius) + positions: meshArrays.verts + normals: meshArrays.normals + uv0s: meshArrays.uvs + indexes: meshArrays.indices + + function generateTorus(rings: int, segments: int, radius: real, tubeRadius: real) : var { + let verts = [] + let normals = [] + let uvs = [] + let indices = [] + + for (let i = 0; i <= rings; ++i) { + for (let j = 0; j <= segments; ++j) { + const u = i / rings * Math.PI * 2; + const v = j / segments * Math.PI * 2; + + const centerX = radius * Math.cos(u); + const centerZ = radius * Math.sin(u); + + const posX = centerX + tubeRadius * Math.cos(v) * Math.cos(u); + const posY = tubeRadius * Math.sin(v); + const posZ = centerZ + tubeRadius * Math.cos(v) * Math.sin(u); + + verts.push(Qt.vector3d(posX, posY, posZ)); + + const normal = Qt.vector3d(posX - centerX, posY, posZ - centerZ).normalized(); + normals.push(normal); + + uvs.push(Qt.vector2d(i / rings, j / segments)); + } + } + + for (let i = 0; i < rings; ++i) { + for (let j = 0; j < segments; ++j) { + const a = (segments + 1) * i + j; + const b = (segments + 1) * (i + 1) + j; + const c = (segments + 1) * (i + 1) + j + 1; + const d = (segments + 1) * i + j + 1; + + // Generate two triangles for each quad in the mesh + // Adjust order to be counter-clockwise + indices.push(a, d, b); + indices.push(b, d, c); + } + } + return { verts: verts, normals: normals, uvs: uvs, indices: indices } + } +} diff --git a/examples/quick3d/customgeometry/CustomGeometryExample/qmldir b/examples/quick3d/customgeometry/CustomGeometryExample/qmldir new file mode 100644 index 000000000..9d54279fa --- /dev/null +++ b/examples/quick3d/customgeometry/CustomGeometryExample/qmldir @@ -0,0 +1,3 @@ +module CustomGeometryExample +Main 1.0 Main.qml +TorusMesh 1.0 TorusMesh.qml diff --git a/examples/quick3d/customgeometry/qt_logo_rect.png b/examples/quick3d/customgeometry/CustomGeometryExample/qt_logo_rect.png Binary files differindex 129b873d5..129b873d5 100644 --- a/examples/quick3d/customgeometry/qt_logo_rect.png +++ b/examples/quick3d/customgeometry/CustomGeometryExample/qt_logo_rect.png diff --git a/examples/quick3d/customgeometry/customgeometry.pyproject b/examples/quick3d/customgeometry/customgeometry.pyproject index 3e31ac931..d3aeb7d0c 100644 --- a/examples/quick3d/customgeometry/customgeometry.pyproject +++ b/examples/quick3d/customgeometry/customgeometry.pyproject @@ -1,3 +1,5 @@ { - "files": ["examplepoint.py", "exampletriangle.py", "main.py", "main.qml", "resources.qrc"] + "files": ["examplepoint.py", "exampletriangle.py", "main.py", + "CustomGeometryExample/Main.qml", "CustomGeometryExample/TorusMesh.qml", + "CustomGeometryExample/qmldir", "CustomGeometryExample/qt_logo_rect.png"] } diff --git a/examples/quick3d/customgeometry/examplepoint.py b/examples/quick3d/customgeometry/examplepoint.py index 3b4984222..df5e8f90e 100644 --- a/examples/quick3d/customgeometry/examplepoint.py +++ b/examples/quick3d/customgeometry/examplepoint.py @@ -9,7 +9,7 @@ from PySide6.QtGui import QVector3D from PySide6.QtQml import QmlElement from PySide6.QtQuick3D import QQuick3DGeometry -QML_IMPORT_NAME = "ExamplePointGeometry" +QML_IMPORT_NAME = "CustomGeometryExample" QML_IMPORT_MAJOR_VERSION = 1 diff --git a/examples/quick3d/customgeometry/exampletriangle.py b/examples/quick3d/customgeometry/exampletriangle.py index 996a9f85c..8cc7a7278 100644 --- a/examples/quick3d/customgeometry/exampletriangle.py +++ b/examples/quick3d/customgeometry/exampletriangle.py @@ -8,7 +8,7 @@ from PySide6.QtGui import QVector3D from PySide6.QtQml import QmlElement from PySide6.QtQuick3D import QQuick3DGeometry -QML_IMPORT_NAME = "ExampleTriangleGeometry" +QML_IMPORT_NAME = "CustomGeometryExample" QML_IMPORT_MAJOR_VERSION = 1 diff --git a/examples/quick3d/customgeometry/main.py b/examples/quick3d/customgeometry/main.py index bff6b4a95..169cf17e8 100644 --- a/examples/quick3d/customgeometry/main.py +++ b/examples/quick3d/customgeometry/main.py @@ -3,27 +3,24 @@ from __future__ import annotations -import os import sys +from pathlib import Path -from PySide6.QtCore import QUrl from PySide6.QtGui import QGuiApplication, QSurfaceFormat from PySide6.QtQml import QQmlApplicationEngine from PySide6.QtQuick3D import QQuick3D -# Imports to trigger the resources and registration of QML elements -import resources_rc # noqa: F401 from examplepoint import ExamplePointGeometry # noqa: F401 from exampletriangle import ExampleTriangleGeometry # noqa: F401 if __name__ == "__main__": - os.environ["QT_QUICK_CONTROLS_STYLE"] = "Basic" app = QGuiApplication(sys.argv) QSurfaceFormat.setDefaultFormat(QQuick3D.idealSurfaceFormat()) engine = QQmlApplicationEngine() - engine.load(QUrl.fromLocalFile(":/main.qml")) + engine.addImportPath(Path(__file__).parent) + engine.loadFromModule("CustomGeometryExample", "Main") if not engine.rootObjects(): sys.exit(-1) diff --git a/examples/quick3d/customgeometry/main.qml b/examples/quick3d/customgeometry/main.qml deleted file mode 100644 index 45bb4462e..000000000 --- a/examples/quick3d/customgeometry/main.qml +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright (C) 2021 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import QtQuick3D -import QtQuick3D.Helpers -import ExamplePointGeometry -import ExampleTriangleGeometry - - -Window { - id: window - width: 1280 - height: 720 - visible: true - color: "#848895" - - View3D { - id: v3d - anchors.fill: parent - camera: camera - - PerspectiveCamera { - id: camera - position: Qt.vector3d(0, 0, 600) - } - - DirectionalLight { - position: Qt.vector3d(-500, 500, -100) - color: Qt.rgba(0.4, 0.2, 0.6, 1.0) - ambientColor: Qt.rgba(0.1, 0.1, 0.1, 1.0) - } - - PointLight { - position: Qt.vector3d(0, 0, 100) - color: Qt.rgba(0.1, 1.0, 0.1, 1.0) - ambientColor: Qt.rgba(0.2, 0.2, 0.2, 1.0) - } - - Model { - visible: radioGridGeom.checked - scale: Qt.vector3d(100, 100, 100) - geometry: GridGeometry { - id: grid - horizontalLines: 20 - verticalLines: 20 - } - materials: [ - DefaultMaterial { - lineWidth: sliderLineWidth.value - } - ] - } - - //! [model triangle] - Model { - visible: radioCustGeom.checked - scale: Qt.vector3d(100, 100, 100) - geometry: ExampleTriangleGeometry { - normals: cbNorm.checked - normalXY: sliderNorm.value - uv: cbUV.checked - uvAdjust: sliderUV.value - } - materials: [ - DefaultMaterial { - Texture { - id: baseColorMap - source: "qt_logo_rect.png" - } - cullMode: DefaultMaterial.NoCulling - diffuseMap: cbTexture.checked ? baseColorMap : null - specularAmount: 0.5 - } - ] - } - //! [model triangle] - - Model { - visible: radioPointGeom.checked - scale: Qt.vector3d(100, 100, 100) - geometry: ExamplePointGeometry { } - materials: [ - DefaultMaterial { - lighting: DefaultMaterial.NoLighting - cullMode: DefaultMaterial.NoCulling - diffuseColor: "yellow" - pointSize: sliderPointSize.value - } - ] - } - } - - WasdController { - controlledObject: camera - } - - ColumnLayout { - Label { - text: "Use WASD and mouse to navigate" - font.bold: true - } - ButtonGroup { - buttons: [ radioGridGeom, radioCustGeom, radioPointGeom ] - } - RadioButton { - id: radioGridGeom - text: "GridGeometry" - checked: true - focusPolicy: Qt.NoFocus - } - RadioButton { - id: radioCustGeom - text: "Custom geometry from application (triangle)" - checked: false - focusPolicy: Qt.NoFocus - } - RadioButton { - id: radioPointGeom - text: "Custom geometry from application (points)" - checked: false - focusPolicy: Qt.NoFocus - } - RowLayout { - visible: radioGridGeom.checked - ColumnLayout { - Button { - text: "More X cells" - onClicked: grid.verticalLines += 1 - focusPolicy: Qt.NoFocus - } - Button { - text: "Fewer X cells" - onClicked: grid.verticalLines -= 1 - focusPolicy: Qt.NoFocus - } - } - ColumnLayout { - Button { - text: "More Y cells" - onClicked: grid.horizontalLines += 1 - focusPolicy: Qt.NoFocus - } - Button { - text: "Fewer Y cells" - onClicked: grid.horizontalLines -= 1 - focusPolicy: Qt.NoFocus - } - } - } - RowLayout { - visible: radioGridGeom.checked - Label { - text: "Line width (if supported)" - } - Slider { - id: sliderLineWidth - from: 1.0 - to: 10.0 - stepSize: 0.5 - value: 1.0 - focusPolicy: Qt.NoFocus - } - } - RowLayout { - visible: radioCustGeom.checked - CheckBox { - id: cbNorm - text: "provide normals in geometry" - checked: false - focusPolicy: Qt.NoFocus - } - RowLayout { - Label { - text: "manual adjust" - } - Slider { - id: sliderNorm - from: 0.0 - to: 1.0 - stepSize: 0.01 - value: 0.0 - focusPolicy: Qt.NoFocus - } - } - } - RowLayout { - visible: radioCustGeom.checked - CheckBox { - id: cbTexture - text: "enable base color map" - checked: false - focusPolicy: Qt.NoFocus - } - CheckBox { - id: cbUV - text: "provide UV in geometry" - checked: false - focusPolicy: Qt.NoFocus - } - RowLayout { - Label { - text: "UV adjust" - } - Slider { - id: sliderUV - from: 0.0 - to: 1.0 - stepSize: 0.01 - value: 0.0 - focusPolicy: Qt.NoFocus - } - } - } - RowLayout { - visible: radioPointGeom.checked - ColumnLayout { - RowLayout { - Label { - text: "Point size (if supported)" - } - Slider { - id: sliderPointSize - from: 1.0 - to: 16.0 - stepSize: 1.0 - value: 1.0 - focusPolicy: Qt.NoFocus - } - } - } - } - TextArea { - id: infoText - readOnly: true - } - } -} diff --git a/examples/quick3d/customgeometry/resources.qrc b/examples/quick3d/customgeometry/resources.qrc deleted file mode 100644 index dc55e9ddd..000000000 --- a/examples/quick3d/customgeometry/resources.qrc +++ /dev/null @@ -1,6 +0,0 @@ -<RCC> - <qresource prefix="/"> - <file>main.qml</file> - <file>qt_logo_rect.png</file> - </qresource> -</RCC> diff --git a/examples/quick3d/customgeometry/resources_rc.py b/examples/quick3d/customgeometry/resources_rc.py deleted file mode 100644 index 1422353a3..000000000 --- a/examples/quick3d/customgeometry/resources_rc.py +++ /dev/null @@ -1,585 +0,0 @@ -# Resource object code (Python 3) -# Created by: object code -# Created by: The Resource Compiler for Qt version 6.2.2 -# WARNING! All changes made in this file will be lost! - -from PySide6 import QtCore - -qt_resource_data = b"\ -\x00\x00\x09C\ -\x00\ -\x00#\x9fx\x9c\xe5ZQs\xdaH\x12~\xe7W\xf4\ -\xf9\xf2`\xef\x11\x19;\x9b\x5c\x8e\xab\xab+\x01\xb2\xad\ -*,\x11I\xd8qmm\xa5\x844\xc0l\x84\x86\x95\ -F&l\xca\xff\xfd\xbaG\x12\x08\x108N\xec\xbd\xba\ -\xba)\x17\xa0\x99\x9e\xee\xaf\xbf\xee\xe9\x99Qr\xfa\xd3\ -3\xb6\x86\xfa\x83\xae\x98/\x13>\x99J8\xee\x9e\xc0\ -y\xeb\xfc\x0c\xbc)\x83\x0f\x12Gfs?^B_\ -\x86Z.\x19K?\x90m\x98J9O\xdb\xa7\xa7\x8b\ -\xc5B\xfb]j\x5c\x9cF<`q\xca\xe3\xc9i\xa1\ -\xd5\x9b\xf2\x14\xc6<b\x80\xdfs?\x91 \xc6 s\ -\xbdc\x91\xc0`)\xa7\x22\x06\xf6\xc5\x9f\xcd#\x96V\ -F=!\xa2\xcf\x5cj\x85\xa2W\x1f\xbcO\x1d\xe3\xd2\ -\xb4>\xf5\xcd\xaea\xb9F\xbb\xe3\xf6^\xe5pf3\ -\x96\x04\xdc\x8f\xa0\xaf\xcc3\x18\xa6\xfe\x84\xd1X\xd1\x81\ -\x8a\xa7\x22\x0a\x11\x17\xdc\xfb\x11\x0f!X\xcfAS9\ -j\x14\x9a\xf9K\xc8p\xbe\x5c\xa3\x8eI\x8d\x1f\x04\x22\ -\x09\xfd8`\xb0\xe0r\xaa VT\x14\xf3\xc1\x9f$\ -\x8c\xcdX,a\x9e\x88{\x1e\xb2p%NZ\x5c1\ -\x96\x0b?a \x92&\xf8\x91dI\xecK~\xcf\xa2\ -e\x13\xed\xd4\x1aA\x99Y\x8a\xa6\x90p\x1e\xa3\xba\x02\ -\x0e,\x12.%\x8b+\x16GL.\x18\xf6,E\x06\ -~\x1cn\xc5N\x83\x0b${\x15\x9d\x5c\xafR\x15\x13\ -\x19q\xc8%\x17q\x0aHUMT\x95\xf4\xeb\xb5X\ -\xaem\x9c%\x081!-<\xc6X\xce|\x1a,\xf8\ -c9\xe8@Ey\x06\xbe\xacQ[H\xbc\xce\xd22\ -\xc8\x18\xd2\xdd\x18\xea\x9bL\x91\x83\xbbq\xca\xe2\x90%\ -\x15\xca\x8a<\x22\x85Et\x94\xb7(-\xa2H,\xd2\ -va\xf1\xc8a!Oe\xc2G\x99BO|\x90f\ -\x8cG*\xb2\x04cA=#\x1e\xfb\xc9R\xb9\x926\ -\xf3\xe8 \x01\xf4-2Ijf\x22\xe4c\x1e(\x06\ -0\xb6\x18\xe39\xc2\xa0\x18\x85\xeb\x5c\x90S\xa4\x81P\ -\xe5\x18(\x0e\x15\xeaq\x92\xd2\xc4$a\x03\x80\x9f`\ -\x13\x9br\xaa\x00\x15\x88\x90\xc1,K%$\x8cRC\ -\xa9\xf5G\xe2\x9e\x86\x8au\x9ck\x01\x88\x85D\x06\x9a\ -9Y\x11*$=U\xc3q\xb8\x85\x0a\xad\x06\x91\xcf\ -1\xbd\xb5}P\xd0d\x85\x94\x12\x0a\xba\x1af\x01{\ -)4E\xfaS#\x91P\x04\x19\xe5\xbe_F\xee\x14\ -\x83\x22('1A0\x0dpi\xa6\xf5+\x91Z\xd5\ -\x9f\x95\x9b\x16\xe3j>\xa9\x8f\xfd\x19#p\xbbU\x10\ -\x9dX\x8b\xa8\xb0p\x99\x96z)\xab\x95^\x91\xe4\x05\ -e\xc4(\xa3\xd0+\x01,\x0e\xb1\x97\x0a\x00\xe1\x9a\x09\ -\xc9 \xa7L\xa6\x80\xf9\x8b\x19\x1e\x96j\xc68\x9e\x93\ -\x94\x96e\xa3\xc87H\xe7,\xa0l\xc3\xb9\x9c\xd2\xb0\ -\xa8\x05*\xe3\xd2\xb4p\xa7\xac\xbfW\xa6\x0b\xae}\xe1\ -\xdd\xea\x8e\x01\xf8{\xe0\xd87f\xcf\xe8A\xe7\x0e\x07\ -\x0d\xe8\xda\x83;\xc7\xbc\xbc\xf2\xe0\xca\xee\xf7\x0c\xc7\x05\ -\xdd\xeaa\xaf\xe59fg\xe8\xd9\x8e\xab\x96\x89\xee\xe2\ -\xe4#5\xa6[w`|\x1c8\x86\xeb\x82\xed\x80y\ -=\xe8\x9b\xa8\x0f\x0d8\xba\xe5\x99\x86\xdb\x04\xd3\xea\xf6\ -\x87=\xd3\xbal\x02\xea\x00\xcb\xf6T16\xafM\x0f\ -%=\xbb\xa9L\xef\xce\x04\xfb\x02\xae\x0d\xa7{\x85\x8f\ -z\xc7\xec\x9b\xde\x9d2yaz\x16\x99\xbb\xb0\x1dU\ -\x11`\xa0;\x9e\xd9\x1d\xf6u\x07\x06Cg`\xbb\x06\ -\x90\x7f=\xd3\xed\xf6u\xf3\xda\xe8i\x88\x01\xed\x82q\ -cX\x1e\xb8Wz\xbf\xbf\xe9.\xe9\xb1o-\xc3!\ -\x1f\xaa\xeeB\xc7@\xa4z\xa7o\x909\xe5m\xcft\ -\x8c\xaeGn\xad\x7fu\x91D\x04\xd9o\xaa\xca>0\ -\xba&\xfeF^\x0ctJw\xee\x9a\x85Z\xd7\xf80\ -D9\x1c\x84\x9e~\xad_\xa2\x8f\xc7\x8f\xb3\x83A\xea\ -\x0e\x1d\xe3\x9a\xb0#%\xee\xb0\xe3z\xa67\xf4\x0c\xb8\ -\xb4\xed\x9e\xa2\xdd5\x9c\x1b\xdc\x08\xdd\x7fB\xdfv\x15\ -qC\xd7P`z\xba\xa7+\xf3\xa8\x05\x89C\x09\xfc\ -\xdd\x19\xba\xa6\xa2\xd0\xb4<\xc3q\x86\x03\xcf\xb4\xad\x13\ -\x8c\xf9-2\x84Hu\x9c\xddS\x5c\xdb\x16\xf9\x9c\xe7\ -\x8ea;w\xa4\x9a\xf8P\xd1h\xc2\xed\x95\x81\xfd\x0e\ -\xd1\xabX\xd3\x89\x0e\x17\xd9\xebzU14\x89d*\ -\xc7\xd6\xfe\x82e\x5c\xf6\xcdK\xc3\xea\x1a$`\x93\xa2\ -[\xd35N0x\xa6K\x02\xa62\x8e\x19\x81f\x87\ -\xcaw\x0a\x1abS\xe1\xba\xd8L\xe7\xa6\x8a.\x98\x17\ -\xa0\xf7nL\xc2_\xc8c>\xb8f\x91>\x8a\xbe\xee\ -U\xc1\xbevT9N\x18V\xaf<L\xbc\xca\xbb\x9f\ -\xaf\x9d6\x1a|6\x17x\xde\xf9 ?d<\xf8\xbc\ -\xf5\xa8\xd1!*\x11Q\xba\xdd\xdf\xf7q\x83\x93\xdb\xdd\ -oz;\x1d\xda\x15\x8bp\xc9\xaf$\x8d\xfc\x085\x10\ -<\x96\x97L\xe0>\x92,\xb7\xc6<,\x89\xf1$b\ -\xab\xe1F\xe3\x96cIZ\xc0\xd7\x06\xd5\x1c\x1e\xb6\xb1\ -\xc8P\x87z\x5c\xf0PN\xdbpv\xfe\xbe\xa5\x9e\xa7\ -\x8c\x0ay\x1b\xfe~\x9e?\xdf\xf3\x94\x8f\x22\xd6\x06\x99\ -d\xac\x91\xd7\xbeH$m8\xfa\xeb\xfb\x9f\xdf\xbf\xff\ -\xc7\xdb\xa3\x86\xea\xbd\xe1l\xf1\xa6W\xd8(\xed\xdc\xbf\ -\x09W\xcfx\xe6\x99b]\xd4p'\x8f\xdatJ\xc4\ -\xa2\xbe\x1a\x0c\xb0\xc6&~\xbb\xf8n\xac\xfa\x07\xe8;\ -\x16B:\x16t\xd5P\xc5@i\xa4\x98S\xed\x9e\x8b\ -T\xed4mdR\xbb\xc7\xf9\x22y\x13\x1e\xb7\x9a\x80\ -\x7f\xefZ\xad\x93\x95\xf0\xc3\xdaT\x8f'dH\xc4~\ -\xd4W'\xe4\xaf\xdf\xa0\xf2\xf5\xdb\x16\xaaT\x1f\xaf\xcf\ -\xaa\x8a+D\xa1|2\x19\xf9\xc7-\xedg\x04\xa0\x9d\ -\xd3\xc7\xbb&\x9ci[\xe2\xfel\xc4\x91\x93\xee\xf6\xac\ -3\x9aP~l\xcc\xaa\xa0W\x19\xf1\xed\xb8s*\x1e\ -G\x9c[\xac\xb3}\x08\xf1\xf9\xca\xcf\xf3\xfd\x88\xaf\xf1\ -t\x13m\x81]%[\xe2\x87\x5c\x5c&<\xa4,\xd6\ -\x82)\x0b>\xb3pC4\x0d|\x12\xac:u\xd6\xca\ -}\xaaqlR,\x866\x94J\xe9i\xcb:5J\ -\xa8\x09\x8a\xec\x0c`\xee\xf2?\xe8,\x8b\xd9\x11\xb3\xb4\ -\x0d\xc5\xfa\xd8\x80\xcf\x12<\xf7\xec\x93x\xd8xZ\x1d\ -^\xda\xf0\xcb\x8e\xa2\x1e\x1b\xfbY$\xaf\x0b\x99\x1a\x9c\ -\xd4\x224s\x9b/\xdf\x14\xef;,\xe9\x97\x1d\x1a^\ -\x80\x8a\xd5\xba\x1f\xc1\xafuQ9=\xfd\x0b\xfc2S\ -\xa1\x91E!\xf9\xf5\x09!\xeb\xe2\x11\xf1\xd9C\xb6\xa7\ -\xb0\xd5\xb0\x12\xd3\x05\x85(\x0dF\x16\xfe\xacE\xb1\x96\ -\xfbxW\x12\xa7\x84\xeb9\xcb\xeeI\xdb\xf0f\xaf\xae\ -\xec^\x0f\x7fC\xb7K](\xba\xab\xe9\xd9c\xef\xb1\ -/2\xc3\xe3b\xfd(5\xca\xe4\x91\x9f2\xb5:\xaf\ -\xfd\xf9^\xc1\xfc\xb6\x81\x05\xfdw\xf9)\x12\x13\xf1\x89\ -\xea\xa06\x8f'G\xb5S\x1ej{\x83,\x8a(=\ -\xda\xdb\xf85\x0b\x93\x22\xc2T\x9d\xd4\xce\xc3\x1b\xd5\x18\ -\x0f\xce\x88\x8fh.\xbc*\xb9\x86\x7fox\x00m\x88\ -QU\xad\x1e\xda%\xb2\xc8O\xf4\x99\xc8b\x8cEK\ -{\xfb\x84\xf4/\x7f\xd5f\xff\x13\xd2\x7f\xb5/\xbfD\ -\xfeol\xfa\xf0\xf5%\xea\x09n\x1f\x18\xa8\xba\x18\xf6\ -\x8b\xb1\x97\x08~\xb1\x7f\x1c-\x19\xdd\x06\xeb\xb3nN\ -\xce\xbb\xfc\x0fV.\xb3A\xd9\xf1\xe4Z\x97\x7f\xaa\xaf\ -[?\x0d\x8b3Z\x84\x17\xc25-A\xd9\x19\xda\xa3\ -\xdf\x18\xbd\x06\xab\x9c2\x8a\xc9\x08;\x9b\xc5\xf9Q\xae\ -2\xb5\xef\x8fv\xb2Db^\xa3\x83C\xbc\x15\xde\xea\ -nO\xdd\x7f1Q\xe9\xe5\x86\xc0\xfb\xe5=\x9f a\ -\x9b\x8e\x8f\x11\x816\x12QX9ym\xfa\xd5\xc9\xa4\ -\x14\xf1e\x22\xb2\xf9\x96\xb9\x91\x1a\xa1L\xd8\xdcH\x9b\ -\x9bE\xba\xb9\x95\xb4\xb5K\xc2!\x91\xdcT\xcd\xd9k\ -C}\x9d\xcb\xd5\xedv\xd3\xc1b\x85l\xb9\x97\xbb\x1e\ -d\xe9@D<X\xaa\xd5b\x89\x0b\xea\xf9>p\xa5\ -\xb3u\xe0h\x0c\xdd.WZ~\x1d\xf7\xe7\xf3\xa8x\ -\xc9\x03\xc7e\x158\xd9\x83}\x8c\x0b\xee\x05\xc1\xafB\ -\xf3}\xe8\xd5\xa2I_\x04\xbbX\xec$>\xb5'\x1c\ -\xe0\xf6,\x9f\xb2\xd5\x12\xb3\xc5\xc0\xb5\xc0\x1d\xf0#\x04\ -X7\xd2\xfa\xb2!\xe2.z\xa3\xdc\xa5S\x9d\xb6q\ -B\x83\xbf\xfd\x0b\xcej\xa7=F\xc4.![\xb0\x0f\ -\xe3\xbe`\x0b\xac6?\x00\xfc\xf5\xf3\x02\x7fx\x91\xc0\ -\xdc=\xc5\xbf\xad\xe3\xf5\x7f94?\x04\xfd\xc5\x82\xf3\ -\xac\xcb\xafn\x9b\xaa\xf0@\xae\xe4\xef\x06\xe0\x98\x8f!\ -\xcd\xe6\xf4\x8e\x81\x85[\xc5d\x13\xaa\xabv\xe6=\xb7\ -\xaa\xad+\xca\x8e\x0c\x95\xaf6\xdd\x16w!\x09\xeco\ -\xd5\x0c\xa4\x92\xcd\xf33A\xddqO\x9d\x0b\xea5~\ -K$\xbe\x9f\xf7\x83\x97\xa0.\xf5u\xc4\x97=,\xe5\ -\x17\x97}Q)\xdes\x97\xf7\x1czA?\xa9\xdd\x5c\ -\xa9\x1d(\xf4O\xe7\xe0\x90\xf7\xd4\xf6\xa5S\x05\xfc\xcc\ -\x8f3<{\xfa\xea\xb6\xb4\x0bww\xc1\xeeM'j\ -\xeb\x94\xaa%Ly\xa82\xaa.q\x14*Q\x9f\x1b\ -\xd4\xaa\x89\xd5\xaa_\xccEv\xed\xd3\xfeg\xaf\xf5\x1f\ -\xcb\xb9\xe2\xde\xb5/\xedX\xec\xa3%u\x17\xcb_\x11\ -\xe1mc\xfe'$\xdc\xa3\xb8\x877\x8f\xad\x94\xe1\xcd\ -\xff\xd6\x22A\xbc\xcf\xbe@jXR\xbe\xfd\x1f-\x8f\ -\xc3\x17\xf3GN<\x87BJ\xedPX\xa9\x15\xa1U\ -\x18 E\xde\x0en\xa9\xf5\xae\x97\xed`\xc8\xa9\xad\xc3\ -\xbe\xba!\xef\x95\xdd\xbf\xe5\xae\xa0S\x16\xbc; \xb0\ -N\x85Cj\x0el\xc5+,\xdf\x98\x11\xd4v\xa9y\ -<O\xa8\xc4\xe9\x09\xab\xfb\x07\x04\xfa\x8f\x0d4\xbc1\ -\x80\xa2\xa1\x1dG\xcb\xda\xeb\xf7C\xe3\xa1\xf1\x1f\x04$\ -=\xda\ -\x00\x00\x18\xaf\ -\x89\ -PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ -\x00\x01_\x00\x00\x01)\x08\x02\x00\x00\x00\xbb\xac\xb6\x0a\ -\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x04gAMA\x00\x00\xb1\x8f\x0b\xfca\x05\x00\x00\x00\ -\x09pHYs\x00\x00\x0e\xc3\x00\x00\x0e\xc3\x01\xc7o\ -\xa8d\x00\x00\x18DIDATx^\xed\x9d\xffk\ -\x14\xd7\xfa\xc7\xef\x7fT\xb8\x5c\x8a\x88\xc8m)Wi\ -S\x09%\x10h\xa9\xd4\x22\xc1\x82\x12\xb0\xa2\x1fR\xa4\ -\x85\x16,---T\x0a\xf9A\xa1\x22\x96\xa2PA\ -\xc1R\x11\x94\x16\xb1\xb9\xc1\xa61,!JZcX\ -B\x1aC\x88\x12\x97\xdc\xe0\xe7=\xf3\xec\x9eLf\x9f\ -]\x93\xcd\x99|\xf3\xf5\xf0b\x98\xcc\x9eo\x1b\xe6y\ -\xed9\xb3\xbb\xb3\xff\xf8w\xff\x1b\x00\x00\xf5`\x07\x00\ -\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\ -\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\ -\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\ -\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\ -\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0f\ -v\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8\ -`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\ -\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\ -\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\ -\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\ -\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\ -\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\ -\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07\ -;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\ -\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\ -\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00\ -|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\ -\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\ -\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\ -\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\ -\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\ -\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\ -\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\ -\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00\ ->\xd8a}i\xaf;\x02\xab\x81\xffgL\xb0\xc3:\ -\xc2\xa9\x1c\x1d\xfe\xa51\xc1\x0e\xebE\xf5<\xde\xd9\xb7\ -g{_\x1b\xac\x92\x1d}m\xb5\x7f)\x82\x88\x06v\ -X/\xda_\xee\x7fcG\xdf\x9e\xd7n\xbf\xb5o\xa8\ -{\xef\xd0Ah\x19\xfd\x03;\x07\xbb^\xee\xef@\x0d\ -q\xc1\x0e\xeb\x82\xa9\xa1\xad}\xe0\x9d\xdfg\xef<%\ -V\x1dw\x1f\x8fv\xfc\xf1\xael\xab\x7fl\xdd\x7f\x1b\ -Z\x04;\xac=\x8b\xb3\x86[3\xfd:\xb3\xe7\x9f\xce\ -/<]\x80\xd6\xa8,\xcc\xeb\x7f88[zc\x00\ -;D\x06;\xac1\x89\x1av\xf6\xed\xd9u\xbb\xf3\xc6\ -\xf4\xcdD\x0d\x0b\xff\xd3Vg\xb9\xb6D\x0ba\xff\xc0\ -\xa1\xd9a\xec\x10\x1d\xec\xb0fhI\x9c\xaa\xa1\xbf\xfd\ -\x95\xfe\x8e\x9f\xa7\xae\xdb\x99\x1d^\x03\xd3S\x9dXq\ -`\x87\xe2\xc0\x0ekFU\x0d\xda^\x9e\xbcj\xa7\xb5\ -I\x015\xac&\xb0Cq`\x87\xb5!\x91\x82M\x1f\ -.N^\xb1s:\xa8\x01;\xac&\xb0Cq`\x87\ -5\xa0\xfa6\xdb\xce\xbe=\xdf\x97\x7f\xd4\xa9\x1c\x8c\x80\ -\x1aV\x1f\xd8\xa18\xb0C\xd1T\xd5\xb0\xbd\xaf\xedl\ -\xf9\x82\xcec\xbc\x107\xb0Cq`\x87BI\xd4\xa0\ -\xf3u[\xdf\xab\xa7\xc6\xcf\xe9$\x0eR@\x0d\xb1\x02\ -;\x14\x07v(\x8eE5\x9c\x1c;\xad3\x185\x14\ -\x11\xd8\xa18\xb0CA\x045\xec\xfe\xea~\xaf\x9d\xc7\ -A\x0d\xd8!b`\x87\xe2\xc0\x0eE\xf1r\x7f\xc7\x8b\ -}\xbb\xbf\xf8\xeb[;\x89QCA\x81\x1d\x8a\x03;\ -\x14A\xbb\xd4\xf0\xaf[\xff91\xfau\x90\x82mQ\ -C\xf4\xc0\x0e\xc5\x81\x1d\xe2\xa2\x05EU\x0d\x1f\x8f~\ -YY\xa8\xe8\xc4\xcd\x0a\x82\x88\x1e\xd8\xa18\xb0CD\ -\xecZC\xa2\x86\x0f\xee}\xfaxaNgm\xa1j\ -P\xb3\xa1\xfd\x1c\xf35r\xc7\x85\x95O\x1b\xd8\x0a\x81\ -\x1d\x8a\x03;\xc4\xa2z\x19\xf2\xc5\xbe\xdd\xc7F>\x99\ -\x9d\x7f\x94\x9c\xb8\x85\xa5bHr\xa1\xf4\xb0\x0cYN\ -$\xe5\x95P\x19M\xd8\xce\xe6\x0d\xecP\x1c\xd8!\x0a\ -\x89\x1a\xc4\xf6\xbe\xb6\xee\xe1\xe3\xd3\xf33\xe1\xacU\xc4\ -M\xbf\x90\xd5\x89\x14\xe4\x9fZh\x15\xf3wejl\ -n\xfc\xee\xe3\xd1\xe1\xc7#\xca\x96\xc1\xd9\x92\xb6\xda\xd7\ -\x11\x1d\xd7\xa3s\x0bO\xaa\xa5\xd3\xe1\x89\xd0\x9a\x1d\xdc\ -\x8c\x81\x1d\x8a\x03;DcG_[\xe7`\x97\x920\ -9ekY\x171\xf1Bk\xda\x06\xf5LT&\x7f\ -\x9d\xfe\xedl\xf9\xc2\xc7\xa3_\x1e(\x1d\xed\x18\xdc\xaf\ -\xa5\x8d$\xa5\xd5\xcd?o\xbd\xa2\xed\xf6\xbeW\x950\ -\xca\x9c\xae\xd2\x91\x0f\xef}\xfe]\xf9\x87\x1b\xd37%\ -\x0b\xab\x9e\x15\x84\xed,3\xb2\xb5\x9a\x10J\x16\x17\xd8\ -\xa18\xb0C4\x94\x93\x87\x86{\xc2\xf9\x1a7+B\ -kaGS\x83\xaf\xee\xf7*\xe7w\xf6\xedy\xe1\xd6\ -KZ\xd1h\x00\xda\xd7H$\x88Wjh_Gv\ -\xf6\xb7\xebQ\x95\x912\xb4\xb3o\xa8\xfb\xb3?\xbf\xb1\ -{\xcf(B\x1a\x1bv\xf0\x99\xb1\x9c\x92\xcbo\xad\xe5\ -\xc0\x0e\xc5\x81\x1d\xa2\xa1\xac;8\xfc\x7f:SW\x94\ -c\xcb\x09k-4;\xfe\xa4\xac\x99\xc2\xeb\x03ok\ -j\xb0-\x9d\x1a\xec\xba\xdd\x99\x8a \xb9\xf0\x91\x1b\x95\ -a\x0f\x995lr!M\xa8\xd6\xb1\x91O\xb4\xf4\xc8\ -6n\xfb\xb6\xd3$\xac\x8c\xb6\xe5\xca\x84f\x22\x1aR\ -\x16[\xc8\x842i\x8d\xa2\x02;\x14\x07v\x88F\xb0\ -\x83\x9d\xaf\xb1\x22\x97c?M]W\x1aH\x0a\xca\x84\ -05\x08\x17>\x96A\xf5\xea\xa9\xeaj\xa2\xa1v^\ -\xbb\xfd\x96}sT\x11zyfJ[\x01=SM\ -C\xd4\x82T\x15h\x1fxG\x8d\xcb_\xd9wm\x8a\ -\x0b\xecP\x1c\xd8!\x1aE\xd8\xc1R+$\xd8\xd9\xf2\ -\x05\xf5b9PK\x83\xe5{!\x8f5\xa2E\x87\x1c\ -\xa1E\x8a\x0d;\xd7c\xa3\xb0\x02\xaa\x12T\x15\xd0\x90\ -41\xd1\xac\x04;lv\xb0C4\x8a\xb3\x835(\ -5(\x0f\x95\xcc\xb5\x1e\xeb\xbdP=bi\x1f\xc8=\ -\x9aa\xb1\xbc\x16)\xd9\x0f}/\xdf\x0e\x9d\x83]v\ -\xb1#\xa0\x89\xc3\x8b}\xbb{\xee\x9e\xc0\x0e\x9b\x1d\xec\ -\x10\x8d\xe8v\xa8f`\xfa\xb6\xe5\xb5\x87\xbf(\x99k\ -j\xf0\xf3<uA\xf5\x1a\xe4\x8e\xdao\xc0\x84\xeb\x94\ -\xb5\xb4q\xeb&\xb7\xae\x92zrw\xa0\xd0\xb6Q\x04\ -;t\x0c\xeeO\xe7\x0b\x8b\x0db\x87-\x03v\x88F\ -\x5c;\x84\xf4\xd3vln\x5c/\xd1j?M\xfel\ -z'\x89m\xfb\xe1]\x09\x95\xe9\xf8\xe3\xdd\xfd\xa5\xc3\ -\xdd\xc3\xc7\xb5U\xf6Z\xbano6\xef\xb0?\xdbw\ -\xdd\xee\x0c\x17)\xc3\xd6\x0d\xec\xf0<\x80\x1d\xa2Q\xc4\ -\xdc\xc1R\xeb\xab\xfb\xbd\x9a\xf9+\xeb\x96f\xb5\xf6\x93\ -?\xcd\x0b\xaf\x0f\xbc}b\xf4\xeb_\xa7\x7f\x1b\x7fR\ -\x9e\xa8LN\xcf\xcf\xcc\xce?\xd2V\xfb:\xd2?3\ -\xa0\x85C\xfb\xc0^\x9bM\xa4)\x94\x17\x84\x0e\xaa\x1d\ -9%t\xdd$\xb1\xed!\xec\xb0\xb5\xc1\x0e\xd1\x88h\ -\x07\xcbL\xfbH\xd5\xe0l\xc9\xbcP\x97\xd2U5h\ -+}\xd8g\xb7\x9b\x87\xd2\xb5\xf7\xc1\x19M.jY\ -\x94\x13D\xd2\x9a\xfa\xd2*F\x85\x9b?\x0b\xec\xf0<\ -\x80\x1d\xa2\x11\xdd\x0e\xb6\xd3`\xe2\x90\xa0d\xd6\x94\xc1\ -~5\xc7\xc2*\xbaTK<}\xaayD\x9a\xd2\xf5\ -\xeb\x94\xe4\xf2\x84\x12\xfb\xd8\xc8'*\xa6g\x91\xab\x98\ -\x0d;\x8e\x1d\xb66\xd8!\x1aE\xd8\xa1\x5c\x99x\xed\ -\xf6[\xf5^HI.R\x86\xd7y\xabb\xb5lk\ -;\xe1\x88a\xd78%\x88]\xb7;\xebf\x10\xc9\xf4\ -D\x07e\x1c\x15P\xb1&O\xc4\x9a\xc5\x0e[\x1b\xec\ -\x10\x8d\x22\xecpe\xea\x9a2mi\x0e'\xfb:\xb2\ -\xadv\xbbJ\xeb.Ti\x14\xf6\xa8\xb6V\xfe\xbb\xf2\ -\x0f\xb6*\xc9\xa1\xdc\xd6T\xc5\xee\x91\x9b\xfd\x81O\xab\ -\x9b%)\xb0<;4\xc1\x0ah\xdbr`\x87\xe2\xc0\ -\x0e\xd1\x88k\x07\xdby\x7f\xe4\xa3\x5c\xee\x19J\xec\xf6\ -\x81w\xec\x1b_\xd9Lk\x1eV\xc6\xb6\x95\x85\xca\xde\ -\xa1\x83R\xccR\xf5\xc8;In\x87o\x9a\x86\x96\x1b\ -\xb5\xdf\xc4\x0ev\xf3\x9b\xe6\xd1\xa8\xd9\xe5\x07v(\x0e\ -\xec\x10\x8d\xe8v\x98\x9d\x7f\xa4\xf9\x7f\xdd+|r\xe1\ -P/\xef\xbd\x0f\xce\x84\xc2\xcb\xcf1+i\xeb\x0b\xb5\ -\x90~\x1abI\xfb&\x0b-g\x94oI\xc9\xf4\xb9\ -X-m\xe7\x16\x9ehF`h_#\xec\xf8\xe3\xdd\ -\xdc\xa7\xa1\xc2\xc5\x8b\x87\xf3\xd3\x12D(\x9fC\x0f\x85\ -f\xb5m9\xb0Cq`\x87hD\xb7\xc3\xaf\xd3\xbf\ -\xa5\xa9\x9b\x9f\xff+\x01\xa4\x8c\xc1\xd9\x92\x954\xd2z\ -\xcb\x8aP~ln\x5c\x16\xc8\xe5\xb6\x90}\xfey\xeb\ -\x15-jTF\xcf%\x94\x97\x0b\xbaJG:\x07\xbb\ -\xde\xbc\xf3^\xa0\xfe\xd2\xa6\xd0\xf0\xe4\xb5l\xb1,\x9a\ -\xb3(\x93\xbf\xf8\xeb[9\xc2\xc6\xa3m\xcb\x81\x1d\x8a\ -\x03;D#\x96\x1dB6\x9e\x1c;\x9dN\xdas\xaf\ -\xed\x1d\xdb\xfb^=4\xdc\xa3Wf+\x9cVZA\ -X\x15\xdb\x1e(\x1d\xdd\xd1\xd7\x96m_\xdd\xd9\xdc\xe4\ -\xab\xfb\xbd\xa1\xa4\xed\xc8\x0e\xb2\x89}\x9a[N1j\ -\xc3\xcb\x0e\xb2z$\x94\xc9\xa1G\xd5~\xac\xcb\x96\xd8\ -\xa18\xb0C4\x22\xce\x1d\xac\x05-\xfe\xd5\xe6\xd2^\ -\x92\xd4\xd5\x0b\xbb}'\xc2\xf2\xb6\x85\xec\x0a\xb5R\x01\ -\xe5\xbaH\xe6&\xeaW\xbd\xdbg(Ba\xfd\xf9\xfa\ -\xc0\xdb^\x06\xe6\xe7\x0e\xde\x91E\xf4\x14\xa4\x98\xdc\xad\ -7[\x0e\xecP\x1c\xd8!\x1aq\xe7\x0eB\x93\xf0:\ -;T\xa7\xfd\xe7'.\xa9\xa4\xbd\xa7`\xb5V\x14\xd6\ -\xbev\xae=\xfc\xa5\xd6\xc5b>+\xc14;P\xb2\ -\x95+\x13\xd9\xc25;\xe4\x87\xb4R\xec\xc2\x04v\xd8\ -\xf8`\x87hD\xb4\x83\xb6cs\xe3\xed\x03\xef\xe4R\ -1=\xf5\x93%\xbd\xdd\xd6\xa9\xe5\x8eB\xc2\x8f?)\ -\xa7\x8b\x97\xc5.\x0cK\xe0\xbb\x8fG\xb3\x85\xb1\xc3\xf3\ -\x06v\x88F,;\xd8\x07\xa8\xfbg\x06\xb4\xc8\xcf\xa5\ -\xaeN}%\xa7\xe6\x14\x96\xb7vC\xfa\xb4\xd2\x8a#\ -$\xbc\x1cT\xff\xb6\x88\x12\xf8_\xb7\xfec\x0e\xca\xda\ -\xc1\x0a\xeb\xd1\x80\x95_Z\xbdz$[,\x8b\xec\xb6\ -\xbd\xef\xd5\x0f\xef}\x8e\x1d68\xd8!\x1a\xd1\xec\x90\ -V\xbf<yU\x8b\x88\x5c\xde*\xb5\xb4b\xdf_:\ -<Q\x99T\x99\xd5\xe4\x95\xd5U~\xaa\xb5\xfa\xa4\xd2\ -\x9fzy\xbf8y\xc5J\x06;(\xb1e\x0d\x8d!\ -PSCv\x9c\xc9\xfe\xce\xf4\xc6S.\x12\xdc\x0b\xb7\ -^\x0a\xf7\xf5\xc7\x0e\x1b\x16\xec\x10\x8dxs\x87\xe4\xc3\ -\x08\xb5\xcf2\xe6\xed\xa0\xa4\xed\x1e>\xbe\xfaW]\xab\ -[Y\xa8(K5\xf2z;(\x8d\xb3\x1f\xa9\xd0V\ -\x9d\xbe?\xf2QW\xe9\xc8\x81\xd2\xd1\x80\x14\x96\x1b\xa4\ -\x90\x1a\xda\x07\xf6f\x8be\xd1\x7fi\xdfP\xb7\x1a\xb7\ -;\xe8c\x87\x0d\x0bv\x88F\x14;(U\xac\xfa\xc9\ -\xb1\xd3j0\xd7\x85RQ/\xdd\x9a\x93[\xc9\xd5\xe4\ -\x95\xd5\xd5\xf6\x8b\xbf\xbe\x95\x08\xe4\x9dlG\xca1M\ -\xfe\xf5P(f\xdb\xbf+S\x9a\xb6hkh_9\ -ioR\x064H)L\x83,W&r\xe5\x03:\ -8=?\x93m\xbc\xe5\xc0\x0e\xc5\x81\x1d\xa2\x11k\xee\ -PYH\xe6\x0e\x9f\xfd\xf9\xcd\xb6\xea7,\x02\xd5\xb7\ -3O\x8c~m\xc5V\x93W\xa1\xee\xa9\xf1sJf\ -\xcf\x0em\xca\xf0\x90\xc0\x8d\xfa\xea\x1c\xecRNf\xeb\ -\x9a\xc2l\x90\xcf\x8c\xd5<\x05\x0b\xecP\x1c\xd8!\x1a\ -\xb1\xe6\x0e\xf6\xf5\x84\x0f\xee}\xaa\x1c\xcb%\xad\xd9\xc1\ ->\xec\xb0\x9co14\x89\x90\x96g\xcb\x17\xea;2\ -;h\x1da\xcf\xc5\x0ak\x9bC\x86r\xbfgav\ -\xb0\xcfJ\xab\x85l\x95\x1c\xa1\xf1\x96\x03;\x14\x07v\ -\x88F<;$s\x87c#\x9f\xd4\x92vqUo\ -v\xf8\xea~\xaf\x0a\x84\xef)\xb4\x16!9\xbf/\xff\ -\xa8\x8e\xd4r\xe8\xc5P\xa6\xe9\xe9d\xed\x90\x0d;\xa2\ -G\x9b\xd8\xa1Q\xdd\xb8\x81\x1d\x8a\x03;D#\x96\x1d\ -\xec\xaa\xa4^\xb7\xbd\x97\xf4$\xf1\xec\x8b\xdb\xb1\xecp\ -q\xf2J#;\x1c(\x1d\xb5\x19J}Gv\x04;\ -lm\xb0C4\xa2\xd9!\xad\xde\xc0\x0e\xc9\x1b\x8d\xf6\ -V\xc2\xeaW\x16\x96\xb7\x97'\xaf6\xb2\xc3\xfe\xd2a\ -\xec\xf0<\x83\x1d\xa2\x11\xd7\x0e\xdd\xc3\xc7];l\xeb\ -{\xd5n\xcdb\x0b\x90\x96C\x1dY\xde\xfe4u]\ -\xab\x15\xd7\x0e\xfb\x86\xba\xb1\xc3\xf3\x0cv\x88\xc6\xda\xcc\ -\x1d\xd6\xd2\x0e\xcc\x1d\x9es\xb0C4\xd6\xcc\x0e\xb5\x95\ -E\x1c;\x5c\x99\xba\xd6\xc8\x0e\xe9u\x87\xa4\x97\xfa\x0c\ -\xb7#\xd8ak\x83\x1d\xa2\x11\xd7\x0e\xee{\x16\xfa3\ -{\xdda5\x89\xa7\xbaV\xbd\xf1u\x87\xb6C\xc3=\ -\x8d2\xdc\x8e\xe8Q\xec\xb0\x85\xc1\x0e\xd1\x88e\x07\x9b\ -\xcc\xf7\xdc=Q?wP\xe2e\xdf\xd1Lk\xb4\x18\ -\xea\xc8\xf2\xf6\xfc\xc4\xa5Fv\xe8\x1e>no\xa0\xd4\ -g\xb8\x1d\xc1\x0e[\x1b\xec\x10\x8d(vPX\xda\x7f\ -<\xfae\xfa\x11\xc6%]\x98\x1d>\xfb\xf3\x1b+\xb6\ -\x9a\xc4\x0bu\xbf+\xff\xd0\xe8\xb3\x92\x9a\xbf4\xcap\ -\xec\xf0<\x80\x1d\xa2\x11we\xa1\x09B\xfa\xf5\x87l\ -\x17\xd5ORK\x1c*\xa0b\xabI\xbcP\xf7\xe4\xd8\ -\xe9FvP\x86[\xb1\xfa\x8e\xec\x88\xc6\x80\x1d\xb60\ -\xd8!\x1a\xb1\xe6\x0e\xe1\x86\xd1\xb9\xac\x13\xcaa%\x9e\ -^\xd2\x95r\x86Ui!Bz+\x8d\xeb4\xb4\xe4\ -\xf2g(\x9c\x8dP\x1d;la\xb0C4\xa2\xd9!\ -\xad~~\xe2R\xda\xac\xf3\x0d\xeeC\xc3=\xe1\xc7&\ -\xd2\x1a\xad\x84\xd5\xd5\xf2\xe4\xfd\x91\x8f4r\xcf\x0e\xbb\ -\xbf/\xff\x98-\x9c\x0d\xec\xf0<\x80\x1d\xa2\x11\xd7\x0e\ -7\xa6o&?f\xb14\xf1t\xea\xab\x97\xbdC\x07\ -\xc7\xe6\xc6\x93\x92\xabH<K\xda\xd9\xf9Gj\xcd\x9d\ -\xa4HCv\xd3z\x95\xc4\x0e\xcf'\xd8!\x1a\xb1\xec\ -`\xe9\xa4\xd3\xddn\x00\x9d\xedB\xa7\xfe\xce\xf4\x97u\ -\x7f\x9f\xbd\xa32\xea\xa8\xe5\xdc\xb3\x8a\x9a\x83\xa4W\x1c\ -r\xb7o\xa9\xde9.\xfb\x93\x19i\xa5\xc5\xb0#\xd8\ -ak\x83\x1d\xa2\x11\xd7\x0e\xca\xdb\x8e?\xdeU\x9bi\ -\xe3\xf9\x8f<\x84\x9f\xa2Ik\xac8B\xc2+\xa9\xea\ -\xbb0\x94\xe46Cq\xd3\xdb\x0eb\x87\xad\x0dv\x88\ -FD;\xd8\x92a\xdfP\xf7\xf6\xe4\xc6\x8d\xd9^\xaa\ -o[\xd8\xf5B\x954\xd2z+\x88P\xeb\xfc\xc4\xa5\ -\xfa{L+\xc1\x94f\xea\xfd\xef\xcc\xeft\xa6\xf5\x16\ -\xc3\x8e`\x87\xad\x0dv\x88F,;(,\xa3>\x1e\ -\xfd\xd2K\xdd\xe4\xc6\xb3\xdd\x99_\xc1Mk\xac8\xac\ -b\xcf\xdd\x13\x8d\xba\xc8\xde3\xba\xbe\x17;\xa2g\xda\ -\xe8\xdeP\x1a\xbc}p\xa3\xe5\x11.3\xb0Cq`\ -\x87hD\x9c;XF]\x9c\xbc\x92N\xf8\xf3s~\ -\xa1\x1cX\xfd\xefh\xa6w\xa0\xdf\x9b\xcb\xed0=\xb1\ -7,\x1a5n\x075\xc7\xa9\xbf\xa8\xa9\xeaZ\xfbH\ -.\xd8a\xb3\x83\x1d\xa2\x11}\xee\xa0e\xbf\x9a\xad\xff\ -\xb1\x09\xcb\xde\x93c\xa7\xad\x98\xb6\xcb\xcf@+i+\ -\x97\xcb\x93W\x95Ku\xedWW\x16\xfd3\x03I\xc9\ -\x06\xcf%tm7\xbc_Z=\xb1\xc3\xb1H7\xa4\ -\x7ff`\x87\xe2\xc0\x0e\xd1\x88n\x07\xb5\xa3W\xe6\xdc\ -\x9b\x9a5\x92\x1f\xd1\x0f\xd7\x05l\xdb<\x0fC\x81\xb0\ -sh\xb8\xa7\xfe\xe3\x98\xfaSOd\xdfP\xf7\xf8\x93\ -r\xb6p.BSz\xca\xf5vP\xb3\xd9\xdf\x01v\ -[\x88\x15\xd8\xa18\xb0C4\xa2\xdbAqj\xfc\x5c\ --\x81\xb3\xaf\xf0\xc9\xbe\xba\xb3\x8fT+B\xf9Fy\ -\x18RT[\x1b\x9e\x16\x0e\xa9w\xac\xd9\xd0xub\ -b_\xf4\xb2ZV1\x17\xa1\xb5\xf7G>\xca]\xb9\ -\xd0h\x95\xa5o\xdey/\xfb\x96\x87\xdbH\x94\xc0\x0e\ -\xc5\x81\x1d\xa2\x11\xd7\x0e\x96Nw\x1f\x8f\xaaY\xbd\x1a\ -\xe7\xfaJiW2|W\xfe\xc1\xaaT\x16\xe6\xc3\x0f\ -\xe7eS1\x1c\x11\x1a\x98\xfd\xf9\xeb\xf4o\x9az\xc8\ -\x0eK\xbd\x93L\x1c\xb4\xd0\xd0C\xcf\xfc\x9d\xce\xd0\xc5\ -\x17\x7f}\x9b\x8e\xd0Z\xa8\xa2\x01\xeb\xa0]\x19\xa9,\ -T\xd4\xce\x22O5\xce\xf9d\xb4\xb5\xc1\x84\xa6Z\x0b\ -\xb5\xa3-v(\x02\xec\x10\x8d\x88vPX\xce(\xb5\ -z\xee\x9eH\x7f\xd8\x22\xf7\x99\xa5d\xdf.\x19\xf4>\ -8c\xef_(\xd4u}6\xa6\xe2\xa8\xde*FG\ -.N^Q\x22\xd5RzI\x9b\xe9\xa2`\xb7\xa6\x03\ -\xea=`\x15s\x11\x8e\x9f-_\xd8\xee,O\x92K\ -\x0f'\xd2\x9b\xd6[\xb1F\xd1\xa8\xfd\xe5\x87\x9e\x91\xb6\ -\xd8\xa1\x08\xb0C4\x22\xda!\x9b\x997\xa6o*\xfd\ -4\xe1\xcfu\x17\x12[yx\xa0t\xf4\xf2\xe4\xd5\xd1\ -\xb9\xfbV\xdd\x8d\x89\xca\xa4\x9a\xfa\xf0\xde\xe7Z\xaa\xd4\ -\xcd\x1a\xaa\xfb:\xae\x8e4\xb3Py{\x16\x8d\xb27\ -;<\x0d\xc0\x13Mr\x87\x08u\xa7\x81i&\xd2?\ -3\xa0fU\xf8\xe7\xa9\xebW\xa6\xae\x9d\x9f\xb8\xa4#\ -vq\xb4Q\x17\xcb\x0c\xecP\x1c\xd8!\x1aq\xe7\x0e\ -\x0aK\x1b\xbd\xfc\xda}\xa2RAd3P$\x7f\xea\ -\xb8\x12^\xbdk\xa9\xff\xc1\xbdO5\x95\xf8\xbe\xfc\xa3\ -rR\xa9hyxj\xfc\x9c^\xc6\xf7\x97\x0e\xeb%\ -]\xedh[\x97\xccU\xd4\x88\xf2Y\x9d6W\x83\x22\ -\xd8AJr\x9b2A\xa8;\x8dMK\x15\xb1\xebv\ -g\xed)\xb4\xbfp\xeb%\xcd\x89\xf8\x1d\xcd\x0d\x0ev\ -\x88F\x5c;X\xceXS\xbf\xcf\xdeQv\xd5N\xfd\ -zA$3y=\xa4\x01X6\xda\x14@\xd9(\xf4\ -h8\xae\xf2i~:\x8d\xa8\xba^\xea\x95`\xe1\xad\ -\x8a\xb0m\x14\xf6\xe8\xec\xfc#=kuQ\x97\x96I\ -\x17\xeaNc\xd3\x0aHCJ\xd7A\xd5\x83*/;\ -\xf0\x1b\xdc\x1b\x1c\xec\x10\x8d\xb8vP(m\x84\xb5\xa6\ -\xe9@\xfa\xd6@\x92\xc6u\xb9]=\xa2\x87j\xf3\x82\ -\xe4\x92DH\xc8\xda\xf1\xe0\x85\x5c\xf5D.i^u\ -\xd8g\x1c,]\x9b'\xad\x8d\xcd\xca|W\xfeA\xf6\ -1\x13\xe5Z\xb6#\xe9\x00\x12\xec\xb8:\xd2Zi\xf5\ -\x1f\xf7\xb4\xc0\x0e\xc5\x81\x1d\xa2Q\x84\x1dlk;'\ -\xc7N\xdb\xeb\x7f\x9a\xe7\xb9<4\xdc\x83\x81\xfaG\x93\ -\xecU:\xd9+\xffOS\xd7Cw\xd6\xe33\xc3\x8a\ -\x8d\xcd\x8d\xb7\x0f\xbc\xa3\xcc\xac-\x1cr\xbd\xe4\xb1\x1e\ -\xbbJG&*\x93\xa1\x91\x96\x03;\x14\x07v\x88F\ -t;(,s\xd2tM\xa2\xf7\xc1\x19\xcd\x08\xd4Q\ -\x83\x05Bk\xb4w\x0ev\xdd\x98\xbeY\xeb\xa8\xdac\ -\xdaa\xb3\xb0\xc2V\xf2\xe2\xe4\x95m}\xbb\xd5ZM\ -\x10\xcd\x06\xa6\x04V\x1a\xef\x1d:X\xaeLX;i\ -{-\x06v(\x0e\xec\x10\x8d\x22\xec\xa0\xb0\xe4\x09y\ -\xf8\xf3\xd4\xf57\xef\xbc\xf7\xcf[\xaf\xa8\xc7\x06\x99P\ -\x9f\x99\xd9#K\x1e\xb5\x97\xf1\xb3\xe5\x0bj\xb9R\xbb\ -\x8d\xed\x8a\xd25TI\xdf\xdal\xd3\xecFm6O\ -Q\xcd}\xb4\xe4\xe9\x18\xdc\xdf\xe4\x1b\xe2\xcb\x0f\xecP\ -\x1c\xd8!\x1a\x05\xd9A\x112\xd0v\xf4\x92{j\xfc\ -\xdc\xeb\x03o+\x15\x95\x0f\xd9\x0b~\x96\x99\xf5d\xc6\ -\x99\xb7\x83\x1ay\x7f\xe4\xa3\xec\x05\xc2\xe5\xa7k\xae|\ -\xff\xcc\xc0\xb1\x91O\xb6'o\xa0$\xef\xa1\xecH\xd8\ -\x93\xa1M\x07\x0du*\xc7e\xaf\x80\xb6\x1c\xd8\xa18\ -\xb0C4\x0a\xb5C\xc8\xc3\xd0\xb8\x16\xed\x9a\xcfw\x0f\ -\x1f\xdfu\xbbS)a+\x0ee\x9d\xb0\xe4\xacaG\ -\x92D\xad\x0d5\x08\xa2*\x94\x17\xfbv\x9f\x9f\xb8\xa4\ -6\xd5\xf8Js5\x0c\xcc\xfe\xd4\x04dt\xee\xfe\xe5\ -\xc9\xab'F\xbf\xd6\xd8\xbaJGd\x01\xad\x5c\xf6\x0d\ -u\xcbA\x9f\xfd\xf9\x8d\xa6\x18\xd7\x1e\xfe\xa22\xd3\xf3\ -3\xf6\x5cV\xdac.\xb0Cq`\x87h(\x03\x0b\ -\xb2\x83E\xc8\xc3\x5c:\xfd]\x99\xba1}\xb3\xf7\xc1\ -\x99\x0f\xef}~\xa0tT\xebyKHC\xfb:\xd2\ -s\xf7\xc4\xa1\xe1\x9et\x9c\xa6\x86EA(\x9d\x94T\ -*\xd9\xf2\xd7\x22\x1a\x0d\xcc\xa2\xd1q\x8b&\x0f-3\ -\xb0Cq`\x87h\x14m\x07E\xc84\xdbi\x94Z\ -z\x01\xd7JA/\xce\xc2>q\xa4\xd0\xbe\x14\x90\x99\ -A\x04\xaa\xdf\xbc\xfa\xe2\xafo\xadd\x93\x96\x1b\x85\x95\ -\xb7\x8a\xcd\xabg\xcbX1\xdb\xb6\x1c\xf6\xdf\x1e\x9c-\ -a\x87\xe8`\x87h\xac\x81\x1d,BR\xe5P\xbf\xc2\ -\xf6\xad\xa4\x85\xfe\xb4\xef;h%\xa2A\xa6\x13\x870\ -w\xa8\x92&U{\xcbw\x94\xb1\xb0*\xa1zsB\ -\xf9\x96\xc3\xda\x09v\xe8\xf8\x03;D\x06;Dc\xcd\ -\xec\xe0F\xc87\x17{H\x03\xd3\x08\xd3OUi\xc0\ -YA$\xfb:n\xe3\x0f\xed\xd8\xfe\xc6\x8c0<\xfb\ -oke\xd1>\xb0w'v\x88\x0av\x88\xc6\xfa\xda\ -\xa1y\x84l\xff}\xf6N\x93\x17Xe\x97\xe6\x17*\ -fOa#\x0b\xc2\xc6\x16\xb6Z\x16mK\xdeL\xb5\ -\x8f\x81@\x1c\xb0C46\x85\x1d\xb4\xfd\xec\xcfo^\ -\xec\xdb\xed~\xaeQO\xa1s\xb0+\xfb\x01g\xdbn\ -\xb4\xc8\x8d\xad\xf7\xc1\x19\xa9\xa1\xf6,\xf2O\x0aZ\x06\ -;Dc\x83\xdbA[\xfb\xc6\xf4\xe8\xdc}\xfb\xe0\xb3\ -]k\xa8\x8d?\xd9\xd1\x11=\x8b\x93c\xa7\xd3\xc2\xf3\ -\xaa\xb5\x01\xed\x10\xd4`;\xa7\xc6\xcfIv\xd9g\x01\ -\xb1\xc0\x0e\xd1\xd8\xf8s\x07ac;[\xbe\xe0\xcd\xc3\ -\x93w7\xb5\xb8\xd0\x02>\xfc\xd6VZ{\x03\x85\x19\ -\xc1\x9e\x8bv\xec\x89\x84\xf1g\x9e\x0bD\x00;Dc\ -#\xdbA\x11\xf2J\xdb\xd9\xf9G]\xa5#\xe9][\ -\x96\xac/\x12;\xa47_\xd0\x5c]\xc5\xc2\xad\xe86\ -B\x04#\x84\x9d\xa5?\xd5\x83\x1a\xe2\x83\x1d\xa2\xb1\xc1\ -\xed\xa0\xb0\xa4\xb2\xe1\xfd4u\xdd\xbe\xef #\x98\x14\ -\xb4\xd6\xd0S\xd8_:\xfc\xf3\xd4\xf5\x87\xf3\xd3Qn\ -\xdc\x141rj\xb88yE\x03\xb6\xf9\x0ej(\x08\ -\xec\x10\x8d\x8do\x07\x85e\x97\x8d0\xfdND\x9b\xbc\ -\xa0\xad\x12L^\xb8\xf6\xf0\x97\xf0\xe9\xa9\x90\x87\x1b!\ -l$aH\x97'\xaf\xdaWKPC\xa1`\x87h\ -l\x16;\x84\xed\xdd\xc7\xa3\xf6\x1d\x8dC\xc3=\xf2\x82\ -\x1d\xb4GC\xb1pp\x1d#\x0c\xc3\xfe\xb1\x9a\xda\xc8\ -\x086\xebA\x0d\x85\x82\x1d\xa2\xb1)\xec\xa0\x08\x99\xaf\ -\xad\xdd\x812=\x9c\x1c\x09\xd8\x9fv|}#\x8c\xc7\ -\xfe\xab7\xa6o\xda\x82(\xfd\x9f\xa3\x86b\xc1\x0e\xd1\ -\xd8,vP\xe4\xf2?d\xa0\xed\xdb\xceF\x8800\ -\xbb\xe3\xfe\xad\x99~MvvV\xbf*\x82\x1a\x0a\x07\ -;Dcs\xd9\xa1\x9au\xb5\xaff\xd8\xc1\xf4\xc1\x8d\ -\x12aT\xf6\xff\xec\x9f\x19\xf0~\xa1\x07\x0a\x04;D\ -c\x13\xd9\xc1B\x89\xb71\xbd\xa0\xc8\xa9\xe1\xf7\xd9;\ -\xf6s\xe1\xb5\xb7`\xb1\xc3Z\x80\x1d\xa2\xb1\xe9\xec\xb0\ -\x91\xc3\xec`\xff\xc9\xda\xbd\x1b\xec\x17\x03Q\xc3\xda\x81\ -\x1d\xa2\x81\x1dbEV\x0d\xc3\x8fG:\x07\xbb\xf4\xbf\ -\xad-(P\xc3\xda\x81\x1d\xa2\x81\x1d\xa2DV\x0d\xa3\ -s\xf7\xf7\x0e\x1d\xcc\xa8a\xc9?\x1c\x8a\x06;D#\ -k\x07\x9d\xe2\xd02\xa6\x86\xf1'\xe5\xfd\xa5\xc3\xdb\xab\ -?\xe1\x8b\x1a\xd6\x01\xec\x10\x0d\xd9\xe1\xd0p\x8fNk\ -b\xf5Q\xaeL\x1c(\x1d\xcd|U\x0c;\xac\x03\xd8\ -!\x1a\xb2\x83N\xe8\xcaB\xe5\xef\xca\x94\xdd\xd3\x11V\ -\xca\xc3\xf9\xe9\xd9\xf9Gcs\xe3\xdd\xc3\xc7k_\x12\ -\xd3\xff\x165\xac\x0f\xd8!\x0av\xfaj\x0b\x11\xd8\x99\ -\xfe\xfe\xc5\xd2\xff-\xac\x03\xd8!\x22\x9c\xc7\xd1\xe1_\ -\xba\x9e`\x87\x88p*G\x84\x7f\xe6\xfa\x83\x1d\x00\xc0\ -\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00\ -|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\ -\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\x01\ -\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\ -\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\xd8\ -\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\ -\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00>\ -\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\xe0\ -\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\x00\ ->\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\x00\ -\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\x00\ -\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\x0e\ -\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\xec\ -\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\xc1\ -\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\x1f\ -\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\xf0\ -\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\x00\ -\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\x00\ -\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\x00\ -\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\x07\ -\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0fv\ -\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8`\ -\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\x07;\x00\x80\x0f\ -v\x00\x00\x1f\xec\x00\x00>\xd8\x01\x00|\xb0\x03\x00\xf8\ -`\x07\x00\xf0\xc1\x0e\x00\xe0\x83\x1d\x00\xc0\xe7\x1f\xff\xfe\ -\xef\x1b\x00\x00y\xfe\xfb\xc6\xff\x034\xc3}\xffR)\ -\xdb\xa4\x00\x00\x00\x00IEND\xaeB`\x82\ -" - -qt_resource_name = b"\ -\x00\x08\ -\x08\x01Z\x5c\ -\x00m\ -\x00a\x00i\x00n\x00.\x00q\x00m\x00l\ -\x00\x10\ -\x0d\x0d\xd3\xc7\ -\x00q\ -\x00t\x00_\x00l\x00o\x00g\x00o\x00_\x00r\x00e\x00c\x00t\x00.\x00p\x00n\x00g\ -" - -qt_resource_struct = b"\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x01\ -\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01}k\x86\xb3\x9c\ -\x00\x00\x00\x16\x00\x00\x00\x00\x00\x01\x00\x00\x09G\ -\x00\x00\x01}k\x86\xb3\x9c\ -" - -def qInitResources(): - QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) - -def qCleanupResources(): - QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) - -qInitResources() |
