diff --git a/PPOCRLabel/PPOCRLabel.py b/PPOCRLabel/PPOCRLabel.py index 8babac65..99c3cce7 100644 --- a/PPOCRLabel/PPOCRLabel.py +++ b/PPOCRLabel/PPOCRLabel.py @@ -206,7 +206,7 @@ class MainWindow(QMainWindow, WindowMixin): self.labelList = EditInList() labelListContainer = QWidget() labelListContainer.setLayout(listLayout) - self.labelList.itemActivated.connect(self.labelSelectionChanged) + #self.labelList.itemActivated.connect(self.labelSelectionChanged) self.labelList.itemSelectionChanged.connect(self.labelSelectionChanged) self.labelList.clicked.connect(self.labelList.item_clicked) # Connect to itemChanged to detect checkbox changes. @@ -219,7 +219,7 @@ class MainWindow(QMainWindow, WindowMixin): ################## detection box #################### self.BoxList = QListWidget() - self.BoxList.itemActivated.connect(self.boxSelectionChanged) + #self.BoxList.itemActivated.connect(self.boxSelectionChanged) self.BoxList.itemSelectionChanged.connect(self.boxSelectionChanged) self.BoxList.itemDoubleClicked.connect(self.editBox) # Connect to itemChanged to detect checkbox changes. @@ -435,7 +435,7 @@ class MainWindow(QMainWindow, WindowMixin): ######## New actions ####### AutoRec = action(getStr('autoRecognition'), self.autoRecognition, - 'Ctrl+Shift+A', 'Auto', getStr('autoRecognition'), enabled=False) + '', 'Auto', getStr('autoRecognition'), enabled=False) reRec = action(getStr('reRecognition'), self.reRecognition, 'Ctrl+Shift+R', 'reRec', getStr('reRecognition'), enabled=False) @@ -444,7 +444,7 @@ class MainWindow(QMainWindow, WindowMixin): 'Ctrl+R', 'reRec', getStr('singleRe'), enabled=False) createpoly = action(getStr('creatPolygon'), self.createPolygon, - 'q', 'new', 'Creat Polygon', enabled=True) + 'q', 'new', getStr('creatPolygon'), enabled=True) saveRec = action(getStr('saveRec'), self.saveRecResult, '', 'save', getStr('saveRec'), enabled=False) @@ -452,6 +452,12 @@ class MainWindow(QMainWindow, WindowMixin): saveLabel = action(getStr('saveLabel'), self.saveLabelFile, # 'Ctrl+S', 'save', getStr('saveLabel'), enabled=False) + undoLastPoint = action(getStr("undoLastPoint"), self.canvas.undoLastPoint, + 'Ctrl+Z', "undo", getStr("undoLastPoint"), enabled=False) + + undo = action(getStr("undo"), self.undoShapeEdit, + 'Ctrl+Z', "undo", getStr("undo"), enabled=False) + self.editButton.setDefaultAction(edit) self.newButton.setDefaultAction(create) self.DelButton.setDefaultAction(deleteImg) @@ -512,10 +518,11 @@ class MainWindow(QMainWindow, WindowMixin): zoom=zoom, zoomIn=zoomIn, zoomOut=zoomOut, zoomOrg=zoomOrg, fitWindow=fitWindow, fitWidth=fitWidth, zoomActions=zoomActions, saveLabel=saveLabel, + undo=undo, undoLastPoint=undoLastPoint, fileMenuActions=( opendir, saveLabel, resetAll, quit), beginner=(), advanced=(), - editMenu=(createpoly, edit, copy, delete,singleRere, + editMenu=(createpoly, edit, copy, delete,singleRere,None, undo, undoLastPoint, None, color1, self.drawSquaresOption), beginnerContext=(create, edit, copy, delete, singleRere), advancedContext=(createMode, editMode, edit, copy, @@ -549,8 +556,13 @@ class MainWindow(QMainWindow, WindowMixin): self.labelDialogOption.setChecked(settings.get(SETTING_PAINT_LABEL, False)) self.labelDialogOption.triggered.connect(self.speedChoose) + self.autoSaveOption = QAction(getStr('autoSaveMode'), self) + self.autoSaveOption.setCheckable(True) + self.autoSaveOption.setChecked(settings.get(SETTING_PAINT_LABEL, False)) + self.autoSaveOption.triggered.connect(self.autoSaveFunc) + addActions(self.menus.file, - (opendir, None, saveLabel, saveRec, None, resetAll, deleteImg, quit)) + (opendir, None, saveLabel, saveRec, self.autoSaveOption, None, resetAll, deleteImg, quit)) addActions(self.menus.help, (showSteps, showInfo)) addActions(self.menus.view, ( @@ -566,9 +578,9 @@ class MainWindow(QMainWindow, WindowMixin): # Custom context menu for the canvas widget: addActions(self.canvas.menus[0], self.actions.beginnerContext) - addActions(self.canvas.menus[1], ( - action('&Copy here', self.copyShape), - action('&Move here', self.moveShape))) + #addActions(self.canvas.menus[1], ( + # action('&Copy here', self.copyShape), + # action('&Move here', self.moveShape))) self.statusBar().showMessage('%s started.' % __appname__) @@ -758,6 +770,7 @@ class MainWindow(QMainWindow, WindowMixin): self.canvas.setEditing(False) self.canvas.fourpoint = True self.actions.create.setEnabled(False) + self.actions.undoLastPoint.setEnabled(True) def toggleDrawingSensitive(self, drawing=True): """In the middle of drawing, toggling between modes should be disabled.""" @@ -866,10 +879,11 @@ class MainWindow(QMainWindow, WindowMixin): self.updateComboBox() def updateBoxlist(self): - shape = self.canvas.selectedShape - item = self.shapesToItemsbox[shape] # listitem - text = [(int(p.x()), int(p.y())) for p in shape.points] - item.setText(str(text)) + for shape in self.canvas.selectedShapes+[self.canvas.hShape]: + item = self.shapesToItemsbox[shape] # listitem + text = [(int(p.x()), int(p.y())) for p in shape.points] + item.setText(str(text)) + self.actions.undo.setEnabled(True) self.setDirty() def indexTo5Files(self, currIndex): @@ -902,23 +916,27 @@ class MainWindow(QMainWindow, WindowMixin): if len(self.mImgList) > 0: self.zoomWidget.setValue(self.zoomWidgetValue + self.imgsplider.value()) - # React to canvas signals. - def shapeSelectionChanged(self, selected=False): - if self._noSelectionSlot: - self._noSelectionSlot = False - else: - shape = self.canvas.selectedShape - if shape: - self.shapesToItems[shape].setSelected(True) - self.shapesToItemsbox[shape].setSelected(True) # ADD - else: - self.labelList.clearSelection() - self.actions.delete.setEnabled(selected) - self.actions.copy.setEnabled(selected) - self.actions.edit.setEnabled(selected) - self.actions.shapeLineColor.setEnabled(selected) - self.actions.shapeFillColor.setEnabled(selected) - self.actions.singleRere.setEnabled(selected) + + def shapeSelectionChanged(self, selected_shapes): + self._noSelectionSlot = True + for shape in self.canvas.selectedShapes: + shape.selected = False + self.labelList.clearSelection() + self.canvas.selectedShapes = selected_shapes + for shape in self.canvas.selectedShapes: + shape.selected = True + self.shapesToItems[shape].setSelected(True) + self.shapesToItemsbox[shape].setSelected(True) + + self.labelList.scrollToItem(self.currentItem()) # QAbstractItemView.EnsureVisible + self.BoxList.scrollToItem(self.currentBox()) + + self._noSelectionSlot = False + n_selected = len(selected_shapes) + self.actions.singleRere.setEnabled(n_selected) + self.actions.delete.setEnabled(n_selected) + self.actions.copy.setEnabled(n_selected) + self.actions.edit.setEnabled(n_selected == 1) def addLabel(self, shape): shape.paintLabel = self.displayLabelOption.isChecked() @@ -941,22 +959,23 @@ class MainWindow(QMainWindow, WindowMixin): action.setEnabled(True) self.updateComboBox() - def remLabel(self, shape): - if shape is None: + def remLabels(self, shapes): + if shapes is None: # print('rm empty label') return - item = self.shapesToItems[shape] - self.labelList.takeItem(self.labelList.row(item)) - del self.shapesToItems[shape] - del self.itemsToShapes[item] - self.updateComboBox() + for shape in shapes: + item = self.shapesToItems[shape] + self.labelList.takeItem(self.labelList.row(item)) + del self.shapesToItems[shape] + del self.itemsToShapes[item] + self.updateComboBox() - # ADD: - item = self.shapesToItemsbox[shape] - self.BoxList.takeItem(self.BoxList.row(item)) - del self.shapesToItemsbox[shape] - del self.itemsToShapesbox[item] - self.updateComboBox() + # ADD: + item = self.shapesToItemsbox[shape] + self.BoxList.takeItem(self.BoxList.row(item)) + del self.shapesToItemsbox[shape] + del self.itemsToShapesbox[item] + self.updateComboBox() def loadLabels(self, shapes): s = [] @@ -1001,7 +1020,7 @@ class MainWindow(QMainWindow, WindowMixin): item.setText(str([(int(p.x()), int(p.y())) for p in shape.points])) self.updateComboBox() - def updateComboBox(self): + def updateComboBox(self): # TODO:貌似没用 # Get the unique labels and add them to the Combobox. itemsTextList = [str(self.labelList.item(i).text()) for i in range(self.labelList.count())] @@ -1054,26 +1073,38 @@ class MainWindow(QMainWindow, WindowMixin): return False def copySelectedShape(self): - self.addLabel(self.canvas.copySelectedShape()) + for shape in self.canvas.copySelectedShape(): + self.addLabel(shape) # fix copy and delete - self.shapeSelectionChanged(True) + #self.shapeSelectionChanged(True) def labelSelectionChanged(self): - item = self.currentItem() - self.labelList.scrollToItem(item, QAbstractItemView.EnsureVisible) - if item and self.canvas.editing(): - self._noSelectionSlot = True - self.canvas.selectShape(self.itemsToShapes[item]) - shape = self.itemsToShapes[item] + if self._noSelectionSlot: + return + if self.canvas.editing(): + selected_shapes = [] + for item in self.labelList.selectedItems(): + selected_shapes.append(self.itemsToShapes[item]) + if selected_shapes: + self.canvas.selectShapes(selected_shapes) + else: + self.canvas.deSelectShape() + def boxSelectionChanged(self): - item = self.currentBox() - self.BoxList.scrollToItem(item, QAbstractItemView.EnsureVisible) - if item and self.canvas.editing(): - self._noSelectionSlot = True - self.canvas.selectShape(self.itemsToShapesbox[item]) - shape = self.itemsToShapesbox[item] + if self._noSelectionSlot: + #self.BoxList.scrollToItem(self.currentBox(), QAbstractItemView.PositionAtCenter) + return + if self.canvas.editing(): + selected_shapes = [] + for item in self.BoxList.selectedItems(): + selected_shapes.append(self.itemsToShapesbox[item]) + if selected_shapes: + self.canvas.selectShapes(selected_shapes) + else: + self.canvas.deSelectShape() + def labelItemChanged(self, item): shape = self.itemsToShapes[item] @@ -1113,6 +1144,8 @@ class MainWindow(QMainWindow, WindowMixin): if self.beginner(): # Switch to edit mode. self.canvas.setEditing(True) self.actions.create.setEnabled(True) + self.actions.undoLastPoint.setEnabled(False) + self.actions.undo.setEnabled(True) else: self.actions.editMode.setEnabled(True) self.setDirty() @@ -1548,6 +1581,7 @@ class MainWindow(QMainWindow, WindowMixin): self.fileListWidget.insertItem(int(currIndex), item) self.openNextImg() self.actions.saveRec.setEnabled(True) + self.actions.saveLabel.setEnabled(True) elif mode == 'Auto': if annotationFilePath and self.saveLabels(annotationFilePath, mode=mode): @@ -1643,7 +1677,8 @@ class MainWindow(QMainWindow, WindowMixin): self.setDirty() def deleteSelectedShape(self): - self.remLabel(self.canvas.deleteSelected()) + self.remLabels(self.canvas.deleteSelected()) + self.actions.undo.setEnabled(True) self.setDirty() if self.noShapes(): for action in self.actions.onShapesPresent: @@ -1653,7 +1688,7 @@ class MainWindow(QMainWindow, WindowMixin): color = self.colorDialog.getColor(self.lineColor, u'Choose line color', default=DEFAULT_LINE_COLOR) if color: - self.canvas.selectedShape.line_color = color + for shape in self.canvas.selectedShapes: shape.line_color = color self.canvas.update() self.setDirty() @@ -1661,7 +1696,7 @@ class MainWindow(QMainWindow, WindowMixin): color = self.colorDialog.getColor(self.fillColor, u'Choose fill color', default=DEFAULT_FILL_COLOR) if color: - self.canvas.selectedShape.fill_color = color + for shape in self.canvas.selectedShapes: shape.fill_color = color self.canvas.update() self.setDirty() @@ -1785,25 +1820,25 @@ class MainWindow(QMainWindow, WindowMixin): def singleRerecognition(self): img = cv2.imread(self.filePath) - shape = self.canvas.selectedShape - box = [[int(p.x()), int(p.y())] for p in shape.points] - assert len(box) == 4 - img_crop = get_rotate_crop_image(img, np.array(box, np.float32)) - if img_crop is None: - msg = 'Can not recognise the detection box in ' + self.filePath + '. Please change manually' - QMessageBox.information(self, "Information", msg) - return - result = self.ocr.ocr(img_crop, cls=True, det=False) - if result[0][0] != '': - result.insert(0, box) - print('result in reRec is ', result) - if result[1][0] == shape.label: - print('label no change') - else: - shape.label = result[1][0] - self.singleLabel(shape) - self.setDirty() - print(box) + for shape in self.canvas.selectedShapes: + box = [[int(p.x()), int(p.y())] for p in shape.points] + assert len(box) == 4 + img_crop = get_rotate_crop_image(img, np.array(box, np.float32)) + if img_crop is None: + msg = 'Can not recognise the detection box in ' + self.filePath + '. Please change manually' + QMessageBox.information(self, "Information", msg) + return + result = self.ocr.ocr(img_crop, cls=True, det=False) + if result[0][0] != '': + result.insert(0, box) + print('result in reRec is ', result) + if result[1][0] == shape.label: + print('label no change') + else: + shape.label = result[1][0] + self.singleLabel(shape) + self.setDirty() + print(box) def autolcm(self): vbox = QVBoxLayout() @@ -1914,8 +1949,8 @@ class MainWindow(QMainWindow, WindowMixin): self.savePPlabel() def saveRecResult(self): - if None in [self.PPlabelpath, self.PPlabel, self.fileStatedict]: - QMessageBox.information(self, "Information", "Save file first") + if {} in [self.PPlabelpath, self.PPlabel, self.fileStatedict]: + QMessageBox.information(self, "Information", "Check the image first") return rec_gt_dir = os.path.dirname(self.PPlabelpath) + '/rec_gt.txt' @@ -1953,6 +1988,33 @@ class MainWindow(QMainWindow, WindowMixin): self.canvas.newShape.disconnect() self.canvas.newShape.connect(partial(self.newShape, False)) + def autoSaveFunc(self): + if self.autoSaveOption.isChecked(): + self.autoSaveNum = 1 # Real auto_Save + try: + self.saveLabelFile() + except: + pass + print('The program will automatically save once after confirming an image') + else: + self.autoSaveNum = 5 # Used for backup + print('The program will automatically save once after confirming 5 images (default)') + + def undoShapeEdit(self): + self.canvas.restoreShape() + self.labelList.clear() + self.BoxList.clear() + self.loadShapes(self.canvas.shapes) + self.actions.undo.setEnabled(self.canvas.isShapeRestorable) + + def loadShapes(self, shapes, replace=True): + self._noSelectionSlot = True + for shape in shapes: + self.addLabel(shape) + self.labelList.clearSelection() + self._noSelectionSlot = False + self.canvas.loadShapes(shapes, replace=replace) + def inverted(color): return QColor(*[255 - v for v in color.getRgb()]) diff --git a/PPOCRLabel/README.md b/PPOCRLabel/README.md index 41a7ab44..633d042b 100644 --- a/PPOCRLabel/README.md +++ b/PPOCRLabel/README.md @@ -8,15 +8,18 @@ PPOCRLabel is a semi-automatic graphic annotation tool suitable for OCR field, w ### Recent Update +- 2021.2.5: New batch processing and undo functions (by [Evezerest](https://github.com/Evezerest)): + - Batch processing function: Press and hold the Ctrl key to select the box, you can move, copy, and delete in batches. + - Undo function: In the process of drawing a four-point label box or after editing the box, press Ctrl+Z to undo the previous operation. + - Fix image rotation and size problems, optimize the process of editing the mark frame (by [ninetailskim](https://github.com/ninetailskim)、 [edencfc](https://github.com/edencfc)). - 2021.1.11: Optimize the labeling experience (by [edencfc](https://github.com/edencfc)), - - Users can choose whether to pop up the label input dialog after drawing the detection box in "View - Pop-up Label Input Dialog". + - Users can choose whether to pop up the label input dialog after drawing the detection box in "View - Pop-up Label Input Dialog". - The recognition result scrolls synchronously when users click related detection box. - Click to modify the recognition result.(If you can't change the result, please switch to the system default input method, or switch back to the original input method again) - 2020.12.18: Support re-recognition of a single label box (by [ninetailskim](https://github.com/ninetailskim) ), perfect shortcut keys. ### TODO: - Lock box mode: For the same scene data, the size and position of the locked detection box can be transferred between different pictures. -- Experience optimization: Add undo, batch operation include move, copy, delete and so on, optimize the annotation process. ## Installation @@ -49,7 +52,7 @@ python3 PPOCRLabel.py ``` pip3 install pyqt5 pip3 uninstall opencv-python # Uninstall opencv manually as it conflicts with pyqt -pip3 install opencv-contrib-python-headless # Install the headless version of opencv +pip3 install opencv-contrib-python-headless==4.2.0.32 # Install the headless version of opencv cd ./PPOCRLabel # Change the directory to the PPOCRLabel folder python3 PPOCRLabel.py ``` @@ -76,12 +79,11 @@ python3 PPOCRLabel.py 7. Double click the result in 'recognition result' list to manually change inaccurate recognition results. -8. Click "Check", the image status will switch to "√",then the program automatically jump to the next(The results will not be written directly to the file at this time). +8. Click "Check", the image status will switch to "√",then the program automatically jump to the next. 9. Click "Delete Image" and the image will be deleted to the recycle bin. -10. Labeling result: the user can save manually through the menu "File - Save Label", while the program will also save automatically after every 5 images confirmed by the user.the manually checked label will be stored in *Label.txt* under the opened picture folder. - Click "PaddleOCR"-"Save Recognition Results" in the menu bar, the recognition training data of such pictures will be saved in the *crop_img* folder, and the recognition label will be saved in *rec_gt.txt*[4]. +10. Labeling result: the user can save manually through the menu "File - Save Label", while the program will also save automatically if "File - Auto Save Label Mode" is selected. The manually checked label will be stored in *Label.txt* under the opened picture folder. Click "PaddleOCR"-"Save Recognition Results" in the menu bar, the recognition training data of such pictures will be saved in the *crop_img* folder, and the recognition label will be saved in *rec_gt.txt*[4]. ### Note @@ -89,8 +91,7 @@ python3 PPOCRLabel.py [2] The image status indicates whether the user has saved the image manually. If it has not been saved manually it is "X", otherwise it is "√", PPOCRLabel will not relabel pictures with a status of "√". -[3] After clicking "Re-recognize", the model will overwrite ALL recognition results in the picture. -Therefore, if the recognition result has been manually changed before, it may change after re-recognition. +[3] After clicking "Re-recognize", the model will overwrite ALL recognition results in the picture. Therefore, if the recognition result has been manually changed before, it may change after re-recognition. [4] The files produced by PPOCRLabel can be found under the opened picture folder including the following, please do not manually change the contents, otherwise it will cause the program to be abnormal. @@ -106,28 +107,29 @@ Therefore, if the recognition result has been manually changed before, it may ch ### Shortcut keys -| Shortcut keys | Description | -| ---------------- | ------------------------------------------------ | -| Ctrl + shift + A | Automatically label all unchecked images | -| Ctrl + shift + R | Re-recognize all the labels of the current image | -| W | Create a rect box | -| Q | Create a four-points box | -| Ctrl + E | Edit label of the selected box | -| Ctrl + R | Re-recognize the selected box | -| Backspace | Delete the selected box | -| Ctrl + V | Check image | -| Ctrl + Shift + d | Delete image | -| D | Next image | -| A | Previous image | -| Ctrl++ | Zoom in | -| Ctrl-- | Zoom out | -| ↑→↓← | Move selected box | +| Shortcut keys | Description | +| ------------------------ | ------------------------------------------------ | +| Ctrl + Shift + R | Re-recognize all the labels of the current image | +| W | Create a rect box | +| Q | Create a four-points box | +| Ctrl + E | Edit label of the selected box | +| Ctrl + R | Re-recognize the selected box | +| Ctrl + C | Copy and paste the selected box | +| Ctrl + Left Mouse Button | Multi select the label box | +| Backspace | Delete the selected box | +| Ctrl + V | Check image | +| Ctrl + Shift + d | Delete image | +| D | Next image | +| A | Previous image | +| Ctrl++ | Zoom in | +| Ctrl-- | Zoom out | +| ↑→↓← | Move selected box | ### Built-in Model - Default model: PPOCRLabel uses the Chinese and English ultra-lightweight OCR model in PaddleOCR by default, supports Chinese, English and number recognition, and multiple language detection. -- Model language switching: Changing the built-in model language is supportable by clicking "PaddleOCR"-"Choose OCR Model" in the menu bar. Currently supported languages​include French, German, Korean, and Japanese. +- Model language switching: Changing the built-in model language is supportable by clicking "PaddleOCR"-"Choose OCR Model" in the menu bar. Currently supported languages​include French, German, Korean, and Japanese. For specific model download links, please refer to [PaddleOCR Model List](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/models_list_en.md#multilingual-recognition-modelupdating) - Custom model: The model trained by users can be replaced by modifying PPOCRLabel.py in [PaddleOCR class instantiation](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/PPOCRLabel/PPOCRLabel.py#L110) referring [Custom Model Code](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/doc/doc_en/whl_en.md#use-custom-model) @@ -136,7 +138,7 @@ Therefore, if the recognition result has been manually changed before, it may ch PPOCRLabel supports three ways to save Label.txt -- Automatically save: When it detects that the user has manually checked 5 pictures, the program automatically writes the annotations into Label.txt. The user can change the value of ``self.autoSaveNum`` in ``PPOCRLabel.py`` to set the number of images to be automatically saved after confirmation. +- Automatically save: After selecting "File - Auto Save Label Mode", the program will automatically write the annotations into Label.txt every time the user confirms an image. If this option is not turned on, it will be automatically saved after detecting that the user has manually checked 5 images. - Manual save: Click "File-Save Marking Results" to manually save the label. - Close application save @@ -160,11 +162,11 @@ For some data that are difficult to recognize, the recognition results will not ``` pyrcc5 -o libs/resources.py resources.qrc ``` -- If you get an error ``` module 'cv2' has no attribute 'INTER_NEAREST'```, you need to delete all opencv related packages first, and then reinstall the headless version of opencv +- If you get an error ``` module 'cv2' has no attribute 'INTER_NEAREST'```, you need to delete all opencv related packages first, and then reinstall the 4.2.0.32 version of headless opencv ``` - pip install opencv-contrib-python-headless + pip install opencv-contrib-python-headless==4.2.0.32 ``` - + ### Related -1.[Tzutalin. LabelImg. Git code (2015)](https://github.com/tzutalin/labelImg) +1.[Tzutalin. LabelImg. Git code (2015)](https://github.com/tzutalin/labelImg) \ No newline at end of file diff --git a/PPOCRLabel/README_ch.md b/PPOCRLabel/README_ch.md index df4f7dfa..c214698f 100644 --- a/PPOCRLabel/README_ch.md +++ b/PPOCRLabel/README_ch.md @@ -8,6 +8,10 @@ PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置P #### 近期更新 +- 2021.2.5:新增批处理与撤销功能(by [Evezerest](https://github.com/Evezerest)) + - 批处理功能:按住Ctrl键选择标记框后可批量移动、复制、删除。 + - 撤销功能:在绘制四点标注框过程中或对框进行编辑操作后,按下Ctrl+Z可撤销上一部操作。 + - 修复图像旋转和尺寸问题、优化编辑标记框过程(by [ninetailskim](https://github.com/ninetailskim)、 [edencfc](https://github.com/edencfc)) - 2021.1.11:优化标注体验(by [edencfc](https://github.com/edencfc)): - 用户可在“视图 - 弹出标记输入框”选择在画完检测框后标记输入框是否弹出。 - 识别结果与检测框同步滚动。 @@ -17,9 +21,8 @@ PPOCRLabel是一款适用于OCR领域的半自动化图形标注工具,内置P #### 尽请期待 - 锁定框模式:针对同一场景数据,被锁定的检测框的大小与位置能在不同图片之间传递。 -- 体验优化:增加撤销操作,批量移动、复制、删除等功能。优化标注流程。 -如果您对以上内容感兴趣或对完善工具有不一样的想法,欢迎加入我们的队伍与我们共同开发 +如果您对以上内容感兴趣或对完善工具有不一样的想法,欢迎加入我们的SIG队伍与我们共同开发。可以在[此处](https://github.com/PaddlePaddle/PaddleOCR/issues/1728)完成问卷和前置任务,经过我们确认相关内容后即可正式加入,享受SIG福利,共同为OCR开源事业贡献(特别说明:针对PPOCRLabel的改进也属于PaddleOCR前置任务) ## 安装 @@ -49,7 +52,7 @@ python3 PPOCRLabel.py --lang ch ``` pip3 install pyqt5 pip3 uninstall opencv-python # 由于mac版本的opencv与pyqt有冲突,需先手动卸载opencv -pip3 install opencv-contrib-python-headless # 安装headless版本的open-cv +pip3 install opencv-contrib-python-headless==4.2.0.32 # 安装headless版本的open-cv cd ./PPOCRLabel # 将目录切换到PPOCRLabel文件夹下 python3 PPOCRLabel.py --lang ch ``` @@ -65,9 +68,9 @@ python3 PPOCRLabel.py --lang ch 5. 标记框绘制完成后,用户点击 “确认”,检测框会先被预分配一个 “待识别” 标签。 6. 重新识别:将图片中的所有检测画绘制/调整完成后,点击 “重新识别”,PPOCR模型会对当前图片中的**所有检测框**重新识别[3]。 7. 内容更改:双击识别结果,对不准确的识别结果进行手动更改。 -8. 确认标记:点击 “确认”,图片状态切换为 “√”,跳转至下一张(此时不会直接将结果写入文件)。 +8. **确认标记**:点击 “确认”,图片状态切换为 “√”,跳转至下一张。 9. 删除:点击 “删除图像”,图片将会被删除至回收站。 -10. 保存结果:用户可以通过菜单中“文件-保存标记结果”手动保存,同时程序也会在用户每确认5张图片后自动保存一次。手动确认过的标记将会被存放在所打开图片文件夹下的*Label.txt*中。在菜单栏点击 “文件” - "保存识别结果"后,会将此类图片的识别训练数据保存在*crop_img*文件夹下,识别标签保存在*rec_gt.txt*中[4]。 +10. 保存结果:用户可以通过菜单中“文件-保存标记结果”手动保存,同时也可以点击“文件 - 自动保存标记结果”开启自动保存。手动确认过的标记将会被存放在所打开图片文件夹下的*Label.txt*中。在菜单栏点击 “文件” - "保存识别结果"后,会将此类图片的识别训练数据保存在*crop_img*文件夹下,识别标签保存在*rec_gt.txt*中[4]。 ### 注意 @@ -93,12 +96,13 @@ python3 PPOCRLabel.py --lang ch | 快捷键 | 说明 | | ---------------- | ---------------------------- | -| Ctrl + shift + A | 自动标注所有未确认过的图片 | | Ctrl + shift + R | 对当前图片的所有标记重新识别 | | W | 新建矩形框 | | Q | 新建四点框 | | Ctrl + E | 编辑所选框标签 | | Ctrl + R | 重新识别所选标记 | +| Ctrl + C | 复制并粘贴选中的标记框 | +| Ctrl + 鼠标左键 | 多选标记框 | | Backspace | 删除所选框 | | Ctrl + V | 确认本张图片标记 | | Ctrl + Shift + d | 删除本张图片 | @@ -120,7 +124,7 @@ python3 PPOCRLabel.py --lang ch PPOCRLabel支持三种保存方式: -- 程序自动保存:当检测到用户手动确认过5张图片后,程序自动将标记结果写入Label.txt中。其中用户可通过更改```PPOCRLabel.py```中的```self.autoSaveNum```的数值设置确认几张图片后进行自动保存。 +- 自动保存:点击“文件 - 自动保存标记结果”后,用户每确认过一张图片,程序自动将标记结果写入Label.txt中。若未开启此选项,则检测到用户手动确认过5张图片后进行自动保存。 - 手动保存:点击“文件 - 保存标记结果”手动保存标记。 - 关闭应用程序保存 @@ -132,22 +136,22 @@ PPOCRLabel支持三种保存方式: ### 错误提示 - 如果同时使用whl包安装了paddleocr,其优先级大于通过paddleocr.py调用PaddleOCR类,whl包未更新时会导致程序异常。 - + - PPOCRLabel**不支持对中文文件名**的图片进行自动标注。 - 针对Linux用户:如果您在打开软件过程中出现**objc[XXXXX]**开头的错误,证明您的opencv版本太高,建议安装4.2版本: ``` pip install opencv-python==4.2.0.32 ``` - + - 如果出现 ```Missing string id``` 开头的错误,需要重新编译资源: ``` pyrcc5 -o libs/resources.py resources.qrc ``` - -- 如果出现``` module 'cv2' has no attribute 'INTER_NEAREST'```错误,需要首先删除所有opencv相关包,然后重新安装headless版本的opencv + +- 如果出现``` module 'cv2' has no attribute 'INTER_NEAREST'```错误,需要首先删除所有opencv相关包,然后重新安装4.2.0.32版本的headless opencv ``` - pip install opencv-contrib-python-headless + pip install opencv-contrib-python-headless==4.2.0.32 ``` ### 参考资料 diff --git a/PPOCRLabel/libs/canvas.py b/PPOCRLabel/libs/canvas.py index bb166bac..fe81798e 100644 --- a/PPOCRLabel/libs/canvas.py +++ b/PPOCRLabel/libs/canvas.py @@ -37,7 +37,8 @@ class Canvas(QWidget): zoomRequest = pyqtSignal(int) scrollRequest = pyqtSignal(int, int) newShape = pyqtSignal() - selectionChanged = pyqtSignal(bool) + # selectionChanged = pyqtSignal(bool) + selectionChanged = pyqtSignal(list) shapeMoved = pyqtSignal() drawingPolygon = pyqtSignal(bool) @@ -51,9 +52,11 @@ class Canvas(QWidget): # Initialise local state. self.mode = self.EDIT self.shapes = [] + self.shapesBackups = [] self.current = None + self.selectedShapes = [] self.selectedShape = None # save the selected shape here - self.selectedShapeCopy = None + self.selectedShapesCopy = [] self.drawingLineColor = QColor(0, 0, 255) self.drawingRectColor = QColor(0, 0, 255) self.line = Shape(line_color=self.drawingLineColor) @@ -77,6 +80,7 @@ class Canvas(QWidget): self.drawSquare = False self.fourpoint = True # ADD self.pointnum = 0 + self.movingShape = False #initialisation for panning self.pan_initial_pos = QPoint() @@ -149,37 +153,20 @@ class Canvas(QWidget): clipped_x = min(max(0, pos.x()), size.width()) clipped_y = min(max(0, pos.y()), size.height()) pos = QPointF(clipped_x, clipped_y) - elif len(self.current) > 1 and self.closeEnough(pos, self.current[0]) and not self.fourpoint: + + elif len(self.current) > 1 and self.closeEnough(pos, self.current[0]): # Attract line to starting point and colorise to alert the # user: pos = self.current[0] color = self.current.line_color self.overrideCursor(CURSOR_POINT) self.current.highlightVertex(0, Shape.NEAR_VERTEX) - elif ( # ADD - len(self.current) > 1 - and self.fourpoint - and self.closeEnough(pos, self.current[0]) - ): - # Attract line to starting point and - # colorise to alert the user. - pos = self.current[0] - self.overrideCursor(CURSOR_POINT) - self.current.highlightVertex(0, Shape.NEAR_VERTEX) - if self.drawSquare: - initPos = self.current[0] - minX = initPos.x() - minY = initPos.y() - min_size = min(abs(pos.x() - minX), abs(pos.y() - minY)) - directionX = -1 if pos.x() - minX < 0 else 1 - directionY = -1 if pos.y() - minY < 0 else 1 - self.line[1] = QPointF(minX + directionX * min_size, minY + directionY * min_size) + self.line.points = [self.current[0], pos] + self.line.close() elif self.fourpoint: - # self.line[self.pointnum] = pos # OLD - self.line[0] = self.current[-1] self.line[1] = pos @@ -196,12 +183,14 @@ class Canvas(QWidget): # Polygon copy moving. if Qt.RightButton & ev.buttons(): - if self.selectedShapeCopy and self.prevPoint: + if self.selectedShapesCopy and self.prevPoint: self.overrideCursor(CURSOR_MOVE) - self.boundedMoveShape(self.selectedShapeCopy, pos) + self.boundedMoveShape(self.selectedShapesCopy, pos) self.repaint() - elif self.selectedShape: - self.selectedShapeCopy = self.selectedShape.copy() + elif self.selectedShapes: + self.selectedShapesCopy = [ + s.copy() for s in self.selectedShapes + ] self.repaint() return @@ -211,11 +200,13 @@ class Canvas(QWidget): self.boundedMoveVertex(pos) self.shapeMoved.emit() self.repaint() - elif self.selectedShape and self.prevPoint: + self.movingShape = True + elif self.selectedShapes and self.prevPoint: self.overrideCursor(CURSOR_MOVE) - self.boundedMoveShape(self.selectedShape, pos) + self.boundedMoveShape(self.selectedShapes, pos) self.shapeMoved.emit() self.repaint() + self.movingShape = True else: #pan delta_x = pos.x() - self.pan_initial_pos.x() @@ -263,65 +254,60 @@ class Canvas(QWidget): def mousePressEvent(self, ev): pos = self.transformPos(ev.pos()) - if ev.button() == Qt.LeftButton: if self.drawing(): # self.handleDrawing(pos) # OLD - - - if self.current and self.fourpoint: # ADD IF - # Add point to existing shape. - print('Adding points in mousePressEvent is ', self.line[1]) - self.current.addPoint(self.line[1]) - self.line[0] = self.current[-1] - if self.current.isClosed(): - # print('1111') + if self.current: + if self.fourpoint: # ADD IF + # Add point to existing shape. + # print('Adding points in mousePressEvent is ', self.line[1]) + self.current.addPoint(self.line[1]) + self.line[0] = self.current[-1] + if self.current.isClosed(): + # print('1111') + self.finalise() + elif self.drawSquare: # 增加 + assert len(self.current.points) == 1 + self.current.points = self.line.points self.finalise() elif not self.outOfPixmap(pos): # Create new shape. - self.current = Shape()# self.current = Shape(shape_type=self.createMode) + self.current = Shape() self.current.addPoint(pos) - # if self.createMode == "point": - # self.finalise() - # else: - # if self.createMode == "circle": - # self.current.shape_type = "circle" self.line.points = [pos, pos] self.setHiding() self.drawingPolygon.emit(True) self.update() - else: - selection = self.selectShapePoint(pos) + group_mode = int(ev.modifiers()) == Qt.ControlModifier + self.selectShapePoint(pos, multiple_selection_mode=group_mode) self.prevPoint = pos - - if selection is None: - #pan - QApplication.setOverrideCursor(QCursor(Qt.OpenHandCursor)) - self.pan_initial_pos = pos + self.pan_initial_pos = pos elif ev.button() == Qt.RightButton and self.editing(): - self.selectShapePoint(pos) + group_mode = int(ev.modifiers()) == Qt.ControlModifier + self.selectShapePoint(pos, multiple_selection_mode=group_mode) self.prevPoint = pos self.update() def mouseReleaseEvent(self, ev): if ev.button() == Qt.RightButton: - menu = self.menus[bool(self.selectedShapeCopy)] + menu = self.menus[bool(self.selectedShapesCopy)] self.restoreCursor() if not menu.exec_(self.mapToGlobal(ev.pos()))\ - and self.selectedShapeCopy: + and self.selectedShapesCopy: # Cancel the move by deleting the shadow copy. - self.selectedShapeCopy = None + # self.selectedShapeCopy = None + self.selectedShapesCopy = [] self.repaint() - elif ev.button() == Qt.LeftButton and self.selectedShape: # OLD + + elif ev.button() == Qt.LeftButton and self.selectedShapes: if self.selectedVertex(): self.overrideCursor(CURSOR_POINT) else: self.overrideCursor(CURSOR_GRAB) - elif ev.button() == Qt.LeftButton and not self.fourpoint: pos = self.transformPos(ev.pos()) if self.drawing(): @@ -330,24 +316,37 @@ class Canvas(QWidget): #pan QApplication.restoreOverrideCursor() # ? + if self.movingShape and self.hShape: + index = self.shapes.index(self.hShape) + if ( + self.shapesBackups[-1][index].points + != self.shapes[index].points + ): + self.storeShapes() + self.shapeMoved.emit() # connect to updateBoxlist in PPOCRLabel.py + + self.movingShape = False + def endMove(self, copy=False): - assert self.selectedShape and self.selectedShapeCopy - shape = self.selectedShapeCopy - #del shape.fill_color - #del shape.line_color + assert self.selectedShapes and self.selectedShapesCopy + assert len(self.selectedShapesCopy) == len(self.selectedShapes) if copy: - self.shapes.append(shape) - self.selectedShape.selected = False - self.selectedShape = shape - self.repaint() + for i, shape in enumerate(self.selectedShapesCopy): + self.shapes.append(shape) + self.selectedShapes[i].selected = False + self.selectedShapes[i] = shape else: - self.selectedShape.points = [p for p in shape.points] - self.selectedShapeCopy = None + for i, shape in enumerate(self.selectedShapesCopy): + self.selectedShapes[i].points = shape.points + self.selectedShapesCopy = [] + self.repaint() + self.storeShapes() + return True def hideBackroundShapes(self, value): self.hideBackround = value - if self.selectedShape: + if self.selectedShapes: # Only hide other shapes if there is a current selection. # Otherwise the user will not be able to select a shape. self.setHiding(True) @@ -363,7 +362,7 @@ class Canvas(QWidget): if self.pointnum == 3: self.finalise() - else: # 按住送掉后跳到这里 + else: initPos = self.current[0] print('initPos', self.current[0]) minX = initPos.x() @@ -399,28 +398,33 @@ class Canvas(QWidget): self.current.popPoint() self.finalise() - def selectShape(self, shape): - self.deSelectShape() - shape.selected = True - self.selectedShape = shape + def selectShapes(self, shapes): + for s in shapes: s.seleted = True self.setHiding() - self.selectionChanged.emit(True) + self.selectionChanged.emit(shapes) self.update() - def selectShapePoint(self, point): + + def selectShapePoint(self, point, multiple_selection_mode): """Select the first shape created which contains this point.""" - self.deSelectShape() if self.selectedVertex(): # A vertex is marked for selection. index, shape = self.hVertex, self.hShape shape.highlightVertex(index, shape.MOVE_VERTEX) - self.selectShape(shape) return self.hVertex - for shape in reversed(self.shapes): - if self.isVisible(shape) and shape.containsPoint(point): - self.selectShape(shape) - self.calculateOffsets(shape, point) - return self.selectedShape - return None + else: + for shape in reversed(self.shapes): + if self.isVisible(shape) and shape.containsPoint(point): + self.calculateOffsets(shape, point) + self.setHiding() + if multiple_selection_mode: + if shape not in self.selectedShapes: # list + self.selectionChanged.emit( + self.selectedShapes + [shape] + ) + else: + self.selectionChanged.emit([shape]) + return + self.deSelectShape() def calculateOffsets(self, shape, point): rect = shape.boundingRect() @@ -465,22 +469,28 @@ class Canvas(QWidget): else: shiftPos = pos - point - shape.moveVertexBy(index, shiftPos) + if [shape[0].x(), shape[0].y(), shape[2].x(), shape[2].y()] \ + == [shape[3].x(),shape[1].y(),shape[1].x(),shape[3].y()]: + shape.moveVertexBy(index, shiftPos) + lindex = (index + 1) % 4 + rindex = (index + 3) % 4 + lshift = None + rshift = None + if index % 2 == 0: + rshift = QPointF(shiftPos.x(), 0) + lshift = QPointF(0, shiftPos.y()) + else: + lshift = QPointF(shiftPos.x(), 0) + rshift = QPointF(0, shiftPos.y()) + shape.moveVertexBy(rindex, rshift) + shape.moveVertexBy(lindex, lshift) - lindex = (index + 1) % 4 - rindex = (index + 3) % 4 - lshift = None - rshift = None - if index % 2 == 0: - rshift = QPointF(shiftPos.x(), 0) - lshift = QPointF(0, shiftPos.y()) else: - lshift = QPointF(shiftPos.x(), 0) - rshift = QPointF(0, shiftPos.y()) - shape.moveVertexBy(rindex, rshift) - shape.moveVertexBy(lindex, lshift) + shape.moveVertexBy(index, shiftPos) - def boundedMoveShape(self, shape, pos): + + def boundedMoveShape(self, shapes, pos): + if type(shapes).__name__ != 'list': shapes = [shapes] if self.outOfPixmap(pos): return False # No need to move o1 = pos + self.offsets[0] @@ -497,46 +507,55 @@ class Canvas(QWidget): #self.calculateOffsets(self.selectedShape, pos) dp = pos - self.prevPoint if dp: - shape.moveBy(dp) + for shape in shapes: + shape.moveBy(dp) self.prevPoint = pos return True return False def deSelectShape(self): - if self.selectedShape: - self.selectedShape.selected = False - self.selectedShape = None + if self.selectedShapes: + for shape in self.selectedShapes: shape.selected=False self.setHiding(False) - self.selectionChanged.emit(False) + self.selectionChanged.emit([]) self.update() def deleteSelected(self): - if self.selectedShape: - shape = self.selectedShape - self.shapes.remove(self.selectedShape) - self.selectedShape = None + deleted_shapes = [] + if self.selectedShapes: + for shape in self.selectedShapes: + self.shapes.remove(shape) + deleted_shapes.append(shape) + self.storeShapes() + self.selectedShapes = [] self.update() - return shape + return deleted_shapes + + def storeShapes(self): + shapesBackup = [] + for shape in self.shapes: + shapesBackup.append(shape.copy()) + if len(self.shapesBackups) >= 10: + self.shapesBackups = self.shapesBackups[-9:] + self.shapesBackups.append(shapesBackup) def copySelectedShape(self): - if self.selectedShape: - shape = self.selectedShape.copy() - self.deSelectShape() - self.shapes.append(shape) - shape.selected = True - self.selectedShape = shape - self.boundedShiftShape(shape) - return shape + if self.selectedShapes: + self.selectedShapesCopy = [s.copy() for s in self.selectedShapes] + self.boundedShiftShapes(self.selectedShapesCopy) + self.endMove(copy=True) + return self.selectedShapes - def boundedShiftShape(self, shape): + def boundedShiftShapes(self, shapes): # Try to move in one direction, and if it fails in another. # Give up if both fail. - point = shape[0] - offset = QPointF(2.0, 2.0) - self.calculateOffsets(shape, point) - self.prevPoint = point - if not self.boundedMoveShape(shape, point - offset): - self.boundedMoveShape(shape, point + offset) + for shape in shapes: + point = shape[0] + offset = QPointF(2.0, 2.0) + self.calculateOffsets(shape, point) + self.prevPoint = point + if not self.boundedMoveShape(shape, point - offset): + self.boundedMoveShape(shape, point + offset) def paintEvent(self, event): if not self.pixmap: @@ -560,8 +579,9 @@ class Canvas(QWidget): if self.current: self.current.paint(p) self.line.paint(p) - if self.selectedShapeCopy: - self.selectedShapeCopy.paint(p) + if self.selectedShapesCopy: + for s in self.selectedShapesCopy: + s.paint(p) # Paint rect if self.current is not None and len(self.line) == 2 and not self.fourpoint: @@ -690,13 +710,13 @@ class Canvas(QWidget): elif key == Qt.Key_Return and self.canCloseShape(): self.finalise() elif key == Qt.Key_Left and self.selectedShape: - self.moveOnePixel('Left') + self.moveOnePixel('Left') elif key == Qt.Key_Right and self.selectedShape: - self.moveOnePixel('Right') + self.moveOnePixel('Right') elif key == Qt.Key_Up and self.selectedShape: - self.moveOnePixel('Up') + self.moveOnePixel('Up') elif key == Qt.Key_Down and self.selectedShape: - self.moveOnePixel('Down') + self.moveOnePixel('Down') def moveOnePixel(self, direction): # print(self.selectedShape.points) @@ -739,6 +759,7 @@ class Canvas(QWidget): if fill_color: self.shapes[-1].fill_color = fill_color + self.storeShapes() return self.shapes[-1] @@ -749,6 +770,17 @@ class Canvas(QWidget): self.line.points = [self.current[-1], self.current[0]] self.drawingPolygon.emit(True) + def undoLastPoint(self): + if not self.current or self.current.isClosed(): + return + self.current.popPoint() + if len(self.current) > 0: + self.line[0] = self.current[-1] + else: + self.current = None + self.drawingPolygon.emit(False) + self.repaint() + def resetAllLines(self): assert self.shapes self.current = self.shapes.pop() @@ -762,11 +794,18 @@ class Canvas(QWidget): def loadPixmap(self, pixmap): self.pixmap = pixmap self.shapes = [] - self.repaint() # 这函数在哪 + self.repaint() - def loadShapes(self, shapes): - self.shapes = list(shapes) + def loadShapes(self, shapes, replace=True): + if replace: + self.shapes = list(shapes) + else: + self.shapes.extend(shapes) self.current = None + self.hShape = None + self.hVertex = None + # self.hEdge = None + self.storeShapes() self.repaint() def setShapeVisible(self, shape, value): @@ -793,6 +832,24 @@ class Canvas(QWidget): self.restoreCursor() self.pixmap = None self.update() + self.shapesBackups = [] def setDrawingShapeToSquare(self, status): self.drawSquare = status + + def restoreShape(self): + if not self.isShapeRestorable: + return + self.shapesBackups.pop() # latest + shapesBackup = self.shapesBackups.pop() + self.shapes = shapesBackup + self.selectedShapes = [] + for shape in self.shapes: + shape.selected = False + self.repaint() + + @property + def isShapeRestorable(self): + if len(self.shapesBackups) < 2: + return False + return True \ No newline at end of file diff --git a/PPOCRLabel/libs/resources.py b/PPOCRLabel/libs/resources.py index 0f050275..808da253 100644 --- a/PPOCRLabel/libs/resources.py +++ b/PPOCRLabel/libs/resources.py @@ -9,2371 +9,6 @@ from PyQt5 import QtCore qt_resource_data = b"\ -\x00\x00\x02\xfd\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ -\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ -\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ -\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x7a\x49\x44\ -\x41\x54\x38\x8d\xd5\x95\x4b\x48\x55\x41\x1c\xc6\x7f\x73\x3c\x5e\ -\x6e\x47\xc3\x67\x56\x54\x84\x49\x50\x9b\x5a\x48\xad\xdc\x44\x48\ -\x19\x29\x2d\xad\x36\xb9\x68\x55\xd1\x26\x6a\x11\x81\x1b\x17\x9a\ -\xe8\xa2\x27\x44\xed\x6a\x13\x14\x14\x24\x5a\xbb\x5c\xb9\x90\x6a\ -\x51\x1a\x59\x54\xa2\x5d\xef\xfb\xde\x73\xee\xe3\xdc\x73\xe6\xdf\ -\x42\xf2\x51\x72\xcd\x2e\x2e\xfa\x60\x60\x1e\xdf\x7c\xf3\xcd\x7f\ -\x66\xfe\xa3\x44\x84\xf5\x80\xb1\x2e\xaa\x80\xf9\xab\xd2\xd4\xd6\ -\xdb\x82\xa9\x86\xb5\xd6\xd6\xb2\x95\x0d\x23\x83\x27\x47\xa6\x86\ -\xae\x8c\xae\x45\x58\x89\x08\x4d\x6d\xbd\x2d\xc1\x8a\xf2\xa1\xcb\ -\x67\x8f\x55\x6e\xdf\x5a\xb3\x8c\x30\x3d\x1b\xa7\xef\xde\x0b\x3b\ -\xe7\x14\xda\xd6\x22\x3e\x2f\xdc\xde\xe7\x5c\x3b\xdf\x6e\x05\x2d\ -\x8b\xd9\x58\x76\x19\x61\x6b\xed\x06\x72\x99\x0c\x83\xf7\x87\xdd\ -\x94\x93\x0b\x14\x13\x33\x94\xf2\xcc\xf2\xb2\x9e\xc9\xa7\x97\xba\ -\x4d\x00\xad\xb5\x55\x51\x61\xf1\xfe\x5b\xe2\x0f\x72\xca\xc9\xd3\ -\x50\x1d\xe4\xea\x85\x13\x01\xa5\x54\x51\x97\xb9\xbc\x6b\x76\x0f\ -\x3e\xb9\x0a\x74\x2f\xc4\x38\x96\xca\xa0\x67\x46\xf1\x92\xdf\xd1\ -\x5a\x10\xd1\x68\x3d\x5f\x92\x5a\x33\xa9\x35\xbe\xbf\xd8\xa7\xb5\ -\xbf\xac\x6d\xd5\xed\x64\xff\xa1\x53\x68\x11\x13\x96\x1c\x5e\x38\ -\x9e\xc5\x0e\x7d\xa2\xbf\x6f\x80\xd5\x9c\xfd\x0e\xad\x7d\x4e\x9e\ -\xee\x24\x1c\x5f\x0c\xe3\x82\xf0\x5c\xcc\x26\x67\x67\x50\x4a\xe1\ -\xba\x2e\x22\xc2\xfc\x1d\x17\xbe\xfd\x48\x70\xe5\xc6\x4b\xde\x4c\ -\xcc\x14\x91\x6f\x66\xec\xd1\x08\x86\x61\xd0\xd4\xde\xd7\xb5\x20\ -\x3c\x1b\xb5\x09\x38\x36\x00\xbf\x0c\x8b\xc0\xc3\xa1\xb7\xdc\x7a\ -\x3c\x46\x47\x6b\x33\x5d\x9d\x87\x59\x6d\x2f\xe1\x58\x9a\x9e\x9b\ -\xcf\xee\xa8\x5d\xc7\x7b\xbb\x80\x07\x5a\xeb\x15\x89\xfb\xf6\xee\ -\xa0\xa3\xf5\x00\x62\x98\x84\x53\x79\x74\x91\x97\x1a\x30\x0d\xaa\ -\x83\x8a\xeb\x77\x9f\x87\x4c\xe0\xf6\xb9\xae\xa3\x6c\xae\xaf\x5a\ -\x91\xec\x7a\x9a\x70\x2a\x4f\xd6\xcd\xae\x38\xbe\x14\xe5\x40\x24\ -\xe1\x60\x18\xc6\xb4\x69\x9a\x65\xb3\x6e\xc1\x6f\xfc\x32\x67\x93\ -\x2f\xac\xec\xfa\x6f\x21\x62\x10\x89\xdb\x88\xc8\x67\x13\x98\x08\ -\x45\xd2\x8d\xb5\x0d\x75\x78\x7e\x69\x09\x49\x6b\x88\xc6\xd3\x14\ -\x0a\xde\x84\x59\x28\x78\xe3\xa1\x48\xa2\xad\x66\x53\x2d\x9e\x5f\ -\x9a\x63\x5f\x6b\x22\xd1\x14\x22\xf2\xd5\x10\x91\x0f\xa1\x70\xd2\ -\xd5\xa2\xd0\x42\x49\xc5\x17\x88\x27\xec\x3c\xf0\xdd\x00\x26\xa3\ -\xd1\x44\x01\x4a\xcf\xcb\x22\x42\x32\x9d\x26\xfe\x71\x64\xa3\x09\ -\x4c\xda\x76\x36\xe8\x38\x59\xaa\x2a\xad\x55\x27\x17\x43\xda\xce\ -\x90\xcd\xba\xe5\xce\xf4\x78\x40\x89\x08\x5b\x0e\x9e\xe9\xb7\x1a\ -\xf6\x5c\x14\x59\x7c\x89\xff\x02\xa5\xc4\x4b\x4e\xbd\x7e\x15\x9b\ -\x18\x1a\x50\x22\x82\x52\xaa\x1e\xd8\x0d\x44\x4b\xb2\x0c\xdb\x00\ -\x05\xbc\x53\xff\xdd\x9f\xf7\x13\x77\x5b\x6b\x82\x49\x2e\xb3\xc2\ -\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x04\x44\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\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\x12\x00\x00\ -\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xd3\x0a\x17\x0a\x12\x16\x5e\xb7\xf3\xf2\x00\x00\x00\x1d\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\x54\x68\x65\x20\x47\x49\x4d\x50\xef\ -\x64\x25\x6e\x00\x00\x03\xa8\x49\x44\x41\x54\x78\xda\xad\x96\x5f\ -\x68\x1c\x55\x18\xc5\x7f\x77\x76\x36\x9b\x34\xe9\xda\x6e\xda\xb2\ -\x2a\x98\x27\x31\x55\xfa\x66\xdb\x6d\x82\x42\x5e\x35\x45\xf0\x29\ -\x46\x10\x82\xe0\x83\xa2\x82\xb5\x11\x04\x8b\xcf\xea\x8b\x0f\xe2\ -\x9f\x60\x7c\x08\x41\x6a\x71\x5b\xcd\xa3\x88\x6d\xd3\xc4\x9a\x36\ -\x69\x35\x14\x2a\xad\x94\xe2\x96\x4d\x28\x49\x48\xc8\xee\xce\xec\ -\xcc\xbd\x9f\x0f\x33\x3b\xfb\x67\x92\xda\xa2\x1f\x5c\x66\x19\x66\ -\xce\x39\xdf\xf9\xee\x3d\xb3\xf0\x3f\xd4\xd0\xd0\x90\x75\x3f\xcf\ -\xbd\x04\xc8\x03\xac\x32\xb0\x91\x4e\xa7\xa5\xb7\xb7\x57\x46\x46\ -\x46\x6e\x00\xed\x80\xda\x8e\x40\x16\x17\x17\xa5\x5c\x2e\xcb\xbf\ -\x95\xeb\xba\xe2\xba\x8e\xb8\xae\x23\xc5\x62\x51\x0a\x85\x82\xcc\ -\xcf\xcf\x4b\x4f\x4f\x4f\x01\xd8\x03\x6c\xd9\xd1\x7d\x81\xd7\x49\ -\x1c\x59\x5b\x5b\x95\xd3\xa7\xf3\xb2\xbc\xbc\x2c\x22\x22\x53\x53\ -\x53\x92\xcb\xe5\x34\x90\xae\x91\xd8\x8d\x0c\x1d\x1d\x1d\x00\x4c\ -\x4f\x4f\xc7\xd9\x45\x50\x4a\x21\x22\x88\x08\x5a\xfb\x38\x8e\x4b\ -\xa9\x54\x22\x95\x4a\x01\x30\x30\x30\x80\xe3\x38\xd6\xf0\xf0\xf0\ -\xc7\x9e\xe7\xbd\x13\xda\xd8\x88\x11\x2f\x63\x8c\x68\xad\xc5\xf7\ -\xbd\xe8\xea\x79\x9e\xb8\xae\x23\x1b\x1b\x1b\x32\x3e\x3e\xbe\xdd\ -\x8c\x46\x80\xa4\x6a\x21\x88\x3a\xa8\x29\x15\x31\x04\xb7\x25\x9c\ -\x5f\x70\x1f\xc0\xf7\x35\x4b\x4b\x45\xb2\xfb\xf6\xf1\xdb\xa5\x39\ -\x4e\x9c\xf8\x10\xaf\xd8\x4f\xe5\x4a\x86\xf4\x73\x53\x00\x9d\x31\ -\x82\x56\xe0\xe0\x2a\x4d\x16\x21\x82\xb2\x2c\xaa\xae\xcb\xca\xea\ -\x2a\x9e\xeb\xf0\xf8\x13\xfb\xf1\xef\x3e\x83\x37\x97\xe2\xb5\xb1\ -\xa2\x4c\x9c\xb9\xa6\x80\xbd\x76\xab\xd7\xc6\x68\xce\x9f\x9f\x8e\ -\x94\x06\x80\x20\x08\x0a\x85\x84\x0e\x18\x2d\x18\xa3\x31\xc6\xf0\ -\xfc\xe0\x51\xfc\xe5\x7e\xbc\xb9\x76\x8e\x7f\xb7\x46\x08\xfe\x3e\ -\xd0\x1e\xeb\xc0\xf3\xaa\x0d\xc0\x21\x09\x82\x18\x41\x59\x0a\x31\ -\x75\x8b\x44\x84\x9d\xe9\x87\xa8\x16\xfa\xa8\x2e\xec\xe0\xcd\xc9\ -\x4d\xbe\x39\x79\xb1\x86\xf7\x32\x70\x6e\x8b\x0e\x0c\x17\xa6\x2f\ -\x44\x4a\x03\xc0\x78\x07\xbe\xaf\x19\x1c\x3c\x8a\x7b\xeb\x08\xee\ -\xa5\x76\x5e\x9f\x58\x65\x22\xbf\xc0\xdb\x6f\xbc\xca\xa7\x9f\x7d\ -\x0d\xb0\x0e\x38\x71\x02\xad\x39\xd2\x97\x43\x4c\xa8\xb2\xc1\xaa\ -\x68\x9b\x1a\xc3\xae\xdd\xdd\xb8\x37\x73\x94\xaf\xed\xe1\xbd\x53\ -\x77\x98\xc8\x2f\x30\xf6\xe5\xe7\xdc\xbe\x75\xbd\x06\xb5\x06\xb8\ -\x5b\x77\x30\x33\x13\xf8\x1c\xda\x61\x85\xc0\x4a\xa9\xc8\x73\xe7\ -\xfa\x61\x2a\xf3\x29\x46\xcf\xfc\xcd\xd8\xb7\x57\x19\x1d\x3d\x46\ -\xa6\x3b\x43\x69\x3d\x53\x83\xaa\x00\xda\xde\xea\x48\xf7\xf7\xf5\ -\x21\x08\xc6\x98\x26\x02\x80\x5d\xbb\xbb\x29\xff\x71\x88\xd2\xe5\ -\x14\x6f\xe5\xd7\x99\xcc\x5f\x65\xec\xab\x2f\xc8\x64\x32\x3c\x9c\ -\xcd\xb2\xbe\x72\x27\xd2\x1a\x3b\xc9\x00\xbe\xf6\x99\x99\x99\xad\ -\xcd\x3d\x1c\x74\x30\x50\xcf\xf3\x00\xb8\x7d\xf3\x59\x3e\xfa\xf1\ -\x27\x26\xf3\xbf\x73\xfc\xdd\x63\x14\x97\x96\x10\x84\x03\x07\x9e\ -\x42\xb5\x44\x5d\x8c\x40\x6b\x4d\xee\xf0\xa1\x48\x71\x6d\xb7\x78\ -\x5e\x95\x47\x1e\x7d\x8c\x17\x06\xf6\xb2\xff\xc5\x4f\x00\xf8\xfe\ -\xd4\x49\xba\x76\x76\x91\xcd\x66\x49\xa5\xda\x50\x4a\x61\x29\xeb\ -\xde\x04\x46\x6b\x66\x67\x67\x43\x60\xa2\xf3\xe0\xba\x2e\x00\x3f\ -\xfc\x72\x97\x73\x67\x7f\x46\x59\x8a\xae\xce\x4e\x6c\x3b\x49\x5b\ -\x5b\x92\x44\x22\x81\x52\xf1\xa4\x8e\x5b\xe4\x7b\x1c\x3c\xf8\x74\ -\x93\x7a\x31\x06\x5f\xfb\xfc\x75\xe3\x4f\x94\x05\x95\x8a\x43\x32\ -\x69\x07\xf3\xb1\xac\xe8\xcc\x68\xad\x31\x46\x6f\x4f\x50\xad\x56\ -\xd1\x5a\x87\xf6\x04\xfb\x1e\x15\xcc\xc5\x18\x83\x36\x3e\xc6\x37\ -\x24\x93\x36\x89\x44\xa2\x1e\x1b\x4a\x45\xef\x35\x38\x1b\x27\xd8\ -\xdc\xdc\x44\x6b\x1d\x78\xa3\x68\x52\xa8\x94\x42\x29\x85\x6d\xdb\ -\xc1\xef\xb0\xbb\xda\xdc\x1a\xb3\xab\xb1\x9a\x26\x52\x28\x14\x40\ -\x0c\x22\x06\x63\xea\xab\x51\xa9\xa5\x14\xad\x32\x83\x38\x21\xcc\ -\x26\xd9\xbe\x83\x8b\xbf\x9e\x65\x47\x9b\x0a\x22\x41\x24\x8a\x68\ -\x23\x26\x0c\x6a\x1a\x94\xab\xc8\xef\x1a\xa8\x11\xc3\xe5\x85\x2b\ -\xd4\xf7\x78\x73\xbd\xf2\x80\x1f\xfd\x7b\xad\x0f\x80\x27\x5b\xd3\ -\xd4\x06\xba\xc3\x95\xfc\x8f\xff\x64\x3c\x60\x05\x58\xf9\x07\xbb\ -\x78\x04\xf0\x58\x0d\x4c\x09\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ -\x42\x60\x82\ -\x00\x00\x77\xc9\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x01\x2a\x00\x00\x01\x08\x08\x06\x00\x00\x00\xe8\x5e\xb9\x12\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ -\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\x00\x00\xfa\ -\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\x00\x00\x3a\ -\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\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\xd0\xcb\x00\x00\xd0\xcb\x01\x9f\x0e\xc0\x23\ -\x00\x00\x75\xde\x49\x44\x41\x54\x78\xda\xed\xbd\x67\xb4\x24\xd7\ -\x75\xdf\xfb\x3f\xd5\xf1\xe6\x1c\x26\x03\x18\x60\x30\x18\x0c\x66\ -\x10\x07\x83\x9c\x01\x82\x14\x49\x91\x22\x29\x3d\x2a\xd9\xb2\x6c\ -\x53\x92\x6d\xc9\xb2\xad\x67\x39\x2b\x58\x8e\x1f\xfc\xd6\xfb\x60\ -\xd9\x7e\x5e\x96\xc3\xf2\x32\x2d\x4a\xcc\x49\x94\x45\x52\x24\x45\ -\x10\x04\x88\x8c\xc1\x00\x83\xc9\x37\xe7\x7b\xfb\x76\xee\x3a\xef\ -\x43\xa5\x93\xab\xaa\xc3\x0d\x83\xda\xc0\x9d\xee\x3a\x67\x9f\x50\ -\xe9\xd7\xfb\xec\x93\x08\x12\x49\x64\x9b\x64\xf2\xf4\xa7\xbc\xaf\ -\x07\x00\xfc\x2c\x80\x4f\x02\xe8\x02\xf0\x1a\x80\x7f\x07\xe0\x5b\ -\x00\x30\xfb\xdc\xef\x6f\x77\x55\x13\xd9\x66\x21\xdb\x5d\x81\x44\ -\xde\x9b\xc2\x40\xea\x24\x80\x7f\x09\xe0\x09\x00\x19\x46\xe5\x55\ -\x00\x7f\x1d\xc0\x73\x40\x02\xab\xf7\xba\x58\xdb\x5d\x81\x44\xde\ -\x7b\xe2\x42\x8a\x00\x78\x0a\xc0\x1f\x00\x78\x1f\x78\x48\x01\xc0\ -\x09\x38\xa0\xca\xc4\xc9\x3b\x91\x6b\x53\x12\x50\x25\xb2\xa5\xe2\ -\x42\x2a\x03\xe0\x67\x00\xfc\x27\x00\xb7\x1b\xd4\x6f\x07\x30\xb0\ -\xdd\x75\x4e\x64\xfb\x25\x01\x55\x22\x5b\x26\x2e\xa4\xfa\x00\xfc\ -\x3a\x80\xff\x07\xc0\xa1\x90\x24\x3d\xee\x5f\x22\xef\x71\x49\x6f\ -\x77\x05\x12\x79\x6f\x88\x0b\xa9\x71\x00\xff\x08\xc0\x2f\xc2\x71\ -\x9a\x27\x92\x48\x24\x49\x40\x95\x48\x47\x85\x71\x9a\xdf\x04\xc7\ -\x69\xfe\x21\x24\xcf\x5d\x22\x31\x25\x79\x60\x12\xe9\x98\x30\x90\ -\x3a\x0d\xe0\xdf\x02\x78\x60\xbb\xeb\x94\xc8\xee\x94\xc4\x47\x95\ -\x48\x47\xc4\x85\x94\x05\xe0\xc3\x00\xfe\x0b\x12\x48\x25\xd2\x82\ -\x24\xa0\x4a\xa4\xed\xe2\x42\x2a\x0f\xe0\xaf\x01\xf8\x7d\x00\x47\ -\xb7\xbb\x4e\x89\xec\x6e\x49\x9a\x7e\x89\xb4\x55\x5c\x48\x0d\x02\ -\xf8\x3b\x00\x7e\x15\x4e\x2f\x5f\x22\x89\xb4\x24\x09\xa8\x12\x69\ -\x8b\x30\xfe\xa8\xfd\x00\x7e\x1b\xc0\x4f\x03\xc8\x9a\xd2\x50\x00\ -\x29\x2b\x05\xdb\x6e\x6c\x77\xf5\x13\xd9\xe1\x92\x34\xfd\x12\x69\ -\x59\x18\x48\xdd\x06\x67\x10\xe7\xcf\xc3\x00\x29\x4a\x29\x52\xa9\ -\x14\xee\xb9\xf3\x38\xf6\xee\xdf\x0f\x4a\xe9\x76\x9f\x42\x22\x3b\ -\x5c\x12\x50\x25\xd2\x92\x30\xd3\x61\x1e\x47\x30\x1d\x46\xfb\x5c\ -\x51\x4a\xd1\xd5\x95\xc7\x47\xdf\xff\x20\xfe\xd2\xc7\x9f\x42\x7f\ -\x5f\x0f\x12\x4e\x25\x12\x26\x49\xd3\x2f\x91\xa6\xc5\x85\x54\x1a\ -\xc0\xc7\x01\xfc\x73\x00\xd7\x9b\xf4\x6d\x9b\x62\x68\xb0\x0f\x3f\ -\xf5\xe1\x47\xf1\xf4\xc3\xb7\x63\xa3\x54\x4f\xac\xa9\x44\x22\x49\ -\x02\xaa\x44\x9a\x12\x17\x52\x3d\x00\x7e\x09\xc0\xdf\x07\x30\x62\ -\xd2\xb7\x6d\x8a\x7d\x7b\xc6\xf0\xf3\x9f\x78\x0a\xa7\x6f\xbf\x09\ -\x29\xcb\x02\xa5\xb5\xed\x3e\x8d\x44\x76\x89\x24\xa0\x4a\x24\xb6\ -\xb8\x90\x1a\x05\xf0\x0f\xe1\x0c\x41\xe8\x36\xe9\x53\x4a\x71\xcb\ -\x91\x43\xf8\x4b\x9f\x78\x0a\xc7\x6e\x3a\x00\x50\x8a\xc4\x8e\x4a\ -\x24\x8e\x24\xa0\x4a\x24\xb2\x30\x4e\xf3\xc3\x00\x7e\x0f\xc0\x47\ -\x61\x78\x86\x28\xa5\x20\xc4\xc2\xe9\xbb\x8e\xe1\xe7\x3e\xf6\x04\ -\x0e\xec\x19\x86\x4d\x69\xb2\x08\x5a\x22\xb1\x25\x01\x55\x22\x91\ -\x84\x81\xd4\x3d\x70\xa6\xc3\x3c\x6c\xd2\xa7\x94\x22\x93\xc9\xe0\ -\x89\x87\xee\xc4\x4f\x7d\xe8\x61\x8c\x0c\xf4\xc0\xb6\x29\x40\x00\ -\x0a\xe2\xc0\xca\x33\xab\x12\x72\x25\x12\x22\x09\xa8\x12\x09\x15\ -\x66\x3a\xcc\xb3\x00\xfe\x35\x80\x63\x26\x7d\x9b\x52\xf4\xf6\x74\ -\xe1\xc3\xcf\x3c\x80\x0f\x3d\x75\x0a\xdd\xf9\x2c\x6c\xcf\x69\x4e\ -\x01\x10\xa7\xe9\x97\x34\xff\x12\x89\x2a\x09\xa8\x12\x31\x8a\x0b\ -\xa9\x1c\x9c\x35\xcd\x7f\x0b\xc0\x5e\x93\xbe\x6d\x53\x8c\x8e\x0c\ -\xe2\x93\x1f\x79\x1c\x8f\x9c\xbe\x15\x99\x74\x4a\x6e\xee\x51\xff\ -\x9f\x44\x12\x89\x24\x09\xa8\x12\xd1\x8a\x0b\xa9\x01\x00\xbf\x06\ -\x67\xb1\xbb\x7e\x93\xbe\x4d\x29\x0e\x1d\x98\xc4\xcf\x7f\xfc\x29\ -\xdc\x75\xfc\x06\x10\x02\x7f\xf8\x01\x85\xba\x85\x97\xe0\x2a\x91\ -\x28\x92\x80\x2a\x11\x49\x18\x7f\xd4\x5e\x00\xff\x0c\xc0\xcf\xc1\ -\xb1\xaa\xb4\x42\x29\x70\xe2\x96\xc3\xf8\xb9\x8f\x3f\x89\x23\xd7\ -\xed\x01\xa5\xd4\x19\xc8\xc9\xd0\x29\x71\x49\x25\xd2\xac\x24\xa0\ -\x4a\x84\x13\x06\x52\xc7\xe0\xf8\xa3\x9e\x45\xc8\x48\x73\x2b\x95\ -\xc2\x83\xf7\x1c\xc7\x4f\x7f\xe4\x31\xec\x19\x1b\xf4\xfd\x51\x3a\ -\x87\xb9\x17\x9b\x58\x53\x89\x44\x95\x04\x54\x89\xf8\xc2\x40\xea\ -\x61\x38\x3d\x7b\xf7\x98\xf4\x29\xa5\xc8\xe5\xb2\x78\xe6\xd1\x7b\ -\xf0\xb1\x0f\x3c\x80\xfe\xde\x2e\xd8\xd4\x86\x47\x25\xce\xa0\x52\ -\xb5\xfd\x12\x5f\x55\x22\x11\x25\x01\x55\x22\x00\xb8\xe9\x30\x1f\ -\x85\x33\x46\xea\xb0\x49\xdf\xb6\x29\x06\xfa\x7b\xf1\xd1\x0f\x3c\ -\x84\xf7\x3d\x72\x07\xf2\xb9\x0c\x33\x1d\x26\xa0\x12\x67\x50\x49\ -\xd6\x55\x02\xa9\x44\xa2\x49\x02\xaa\x44\x3c\x48\x75\xc3\x19\x65\ -\xfe\x0f\xe1\x8c\x3a\xd7\x8a\x6d\x53\x4c\x4e\x8c\xe0\xa7\x3f\xfa\ -\x04\xee\xbf\xf3\x66\xa4\x52\x04\xb6\x4d\x41\xe4\xae\x3d\x18\x81\ -\x95\x48\x22\x11\x25\x01\xd5\x7b\x58\x98\xa6\xde\x30\x80\xdf\x04\ -\xf0\xcb\x88\x30\x1d\xe6\xc6\x1b\xf6\xe3\xe7\x3f\xf6\x14\x8e\xdf\ -\x7c\x10\x00\xf5\x57\x3f\xf0\x3e\x23\x03\x2b\x91\x44\x22\x4a\x02\ -\xaa\xf7\xa8\x30\x90\xba\x0e\x4e\x53\xef\xe3\x88\xf0\x3c\xdc\x79\ -\xe2\x66\xfc\xec\x4f\x3c\x81\xeb\xf6\x8d\xf1\x2b\x1f\xb0\xce\x72\ -\xea\xc0\xaa\xd1\xa0\xb0\x29\x45\x26\x6d\x41\x05\xac\xc4\x45\x95\ -\x48\x54\x49\x40\xf5\x1e\x14\x06\x52\x77\xc2\x71\x9a\x3f\x0a\x83\ -\x91\x43\x29\x45\x3a\x9d\xc6\x23\xf7\x9d\xc4\x4f\x7e\xe8\x11\x8c\ -\x0e\xf5\xf1\x3d\x7b\x00\xe7\x2c\x27\x00\x2a\xd5\x06\xa6\x16\x0b\ -\xe8\xef\xc9\x61\x6c\x20\xcf\xf0\x28\x21\x53\x22\xf1\x25\x01\xd5\ -\x7b\x4c\x98\x85\xee\x9e\x81\x33\xfc\xe0\x36\x93\x3e\xa5\x14\xdd\ -\x5d\x79\xbc\xff\xc9\xd3\xf8\xd0\x53\xf7\xa2\xa7\x3b\xc7\x8d\x34\ -\x57\xf5\xec\x6d\x96\x6b\xb8\x3c\xbf\x81\x8d\x62\x0d\x7d\xdd\x59\ -\x0d\x9a\xa8\xf7\x7f\x22\x89\x84\x4a\x02\xaa\xf7\x90\xb8\x90\xca\ -\xc2\x59\xcf\xfc\xb7\xe1\xac\x6f\xae\x15\x9b\x52\x0c\x0f\xf6\xe3\ -\xe3\x1f\x7c\x14\x8f\xdd\x77\x1c\xd9\x4c\x9a\x19\x69\xee\xe0\x89\ -\x80\x6f\xd4\xad\x15\x2a\xb8\x3c\xb7\x8e\x62\xa5\x0e\xcb\x0a\x8c\ -\x34\xae\x95\x98\x38\xa8\x12\x89\x29\x09\xa8\xde\x03\xc2\x34\xf5\ -\xfa\xe0\xec\x0c\xf3\x77\xe1\x4c\x8d\xd1\x0a\xa5\x14\x07\xf6\x8e\ -\xe3\xa7\x3f\xfa\x24\xee\xba\xed\x30\x2c\x66\x3a\x0c\xdb\x75\xe7\ -\xad\x84\x40\x29\xb0\xb0\x5e\xc4\xd5\x85\x02\xaa\xb5\x86\x1f\xa6\ -\x9a\x7d\xcc\xce\x4f\x4e\x24\x91\x28\x92\x80\xea\x1a\x17\x06\x52\ -\x93\x00\xfe\x29\x80\xbf\x8c\x08\xd3\x61\x6e\x39\x72\x3d\x7e\xe6\ -\x27\x9e\xc0\xcd\x37\xec\x75\xa6\xc3\x40\x37\x78\x93\xa2\x61\x53\ -\xcc\x2e\x17\x31\xb3\x54\x40\xbd\xe1\x0c\x53\xf0\x54\xa8\x32\x0d\ -\xe0\xae\xf7\x92\x48\x22\x91\x24\x01\xd5\x35\x2c\x0c\xa4\x6e\x06\ -\xf0\xaf\x00\xfc\x18\x80\x94\x4e\x9f\x52\x20\x95\x22\xb8\xe7\x8e\ -\x63\xf8\xe4\x8f\x3f\x86\x7d\x13\x43\xc1\xf2\x2c\x90\xc7\x42\x11\ -\x02\x54\xeb\x36\xa6\x16\x36\x30\xbf\x5a\x02\x37\xde\x13\x00\x25\ -\x7c\xba\x04\x4c\x89\x34\x2b\x09\xa8\xae\x51\x61\x20\xf5\x00\x9c\ -\x9e\xbd\xd3\x26\x7d\x4a\x29\xb2\xd9\x2c\x9e\x78\xe8\x2e\x7c\xf4\ -\xfd\x0f\x60\xa8\xaf\xdb\x5f\xe8\x4e\xd2\x85\x13\x5c\xac\xd4\x71\ -\x79\x6e\x03\xab\x85\xb2\x14\x0f\x10\x10\xa6\xd9\xa7\x1a\x3f\x95\ -\x2c\x48\x9c\x48\x54\x49\x40\x75\x0d\x8a\x0b\xa9\x14\x80\x0f\x03\ -\xf8\x97\x00\x6e\x32\xe9\x53\x4a\xd1\xd7\xdb\x83\x0f\x3e\x73\x3f\ -\xde\xf7\xc8\x5d\xe8\x62\x16\xba\x23\x9a\xf5\x59\xd6\x8b\x55\x5c\ -\x9e\x5b\xc7\x46\xa9\xc6\x45\x13\xa6\x49\x48\xdd\x7f\x59\x1c\x25\ -\x68\x4a\xa4\x19\x49\x40\x75\x8d\x89\x0b\xa9\x3c\x80\x5f\x04\xf0\ -\x8f\x01\x8c\x9b\xf4\x29\xa5\x18\x1b\x1d\xc6\x4f\x7e\xf8\x51\x3c\ -\x70\xd7\x51\xa4\xd3\x29\x50\x71\x62\xb1\x60\x0e\x2d\xaf\x97\x70\ -\x79\x6e\x03\xa5\x6a\x83\xf3\x47\x39\xf9\xb9\xaa\x02\xdc\x04\x2f\ -\x57\x32\x32\x3d\x91\x58\x92\x80\xea\x1a\x11\xa6\xa9\x37\x04\xe0\ -\x37\x00\xfc\x4d\x38\xdb\x59\x69\x85\x52\x8a\xeb\x0f\xed\xc3\x27\ -\x3f\xf2\x38\x4e\x1c\x3d\xc4\x2d\x74\xc7\x36\xd6\x3c\xc4\xd8\x36\ -\xc5\xdc\x4a\x11\x53\x0b\x1b\xa8\x35\x6c\xd7\x57\xe5\x02\x8d\x19\ -\xec\xe9\xe4\xcd\xe4\x22\xe5\xe9\x76\x06\x26\xe3\xa8\x12\x89\x28\ -\x09\xa8\xae\x01\x61\x20\x75\x10\xc0\xef\x02\xf8\x29\x00\x99\xb0\ -\x74\x27\x8f\xdf\x84\x4f\xfe\xf8\xe3\xb8\xfe\xc0\x78\xb0\xd0\x1d\ -\x54\x73\xf5\x08\x6a\x0d\x1b\x53\x8b\x05\xcc\x2d\x6f\xa2\x61\xb3\ -\x3d\x7b\xbc\xe7\x9c\x32\x69\xb9\x09\xc8\xca\x95\x13\x12\x52\x25\ -\x12\x4d\x12\x50\xed\x72\x61\x20\x75\x12\x8e\xd3\xfc\x09\x44\x98\ -\x0e\xf3\xc0\xa9\xdb\xf0\xf1\x1f\x7b\x18\xe3\x23\xfd\xd2\x6e\xc5\ -\xde\x5c\x3d\xb8\x19\x95\xab\x75\x5c\x9e\x5f\xc7\xd2\x5a\x59\xea\ -\xc1\x0b\x2c\x29\xd6\x84\xe2\xa1\xc5\xe5\xee\x1f\x24\x8d\xbf\x44\ -\xa2\x4b\x02\xaa\x5d\x2c\xcc\x74\x98\x27\xe0\x40\xea\xa4\x49\x9f\ -\x52\x8a\xae\xae\x3c\x9e\x79\xf4\x14\x7e\xec\xa9\x53\xe8\xef\xe9\ -\xd2\x6e\xa9\xee\xc1\x6a\xa3\x54\xc3\xa5\xd9\x75\xac\x6d\x56\x02\ -\xb4\x10\xc2\x01\xcb\x1f\x2f\xa5\x80\x96\xdc\xe8\xf3\x74\x12\x63\ -\x2a\x91\xe8\x92\x80\x6a\x97\x8a\x0b\xa9\x0c\x9c\x66\xde\xef\xc2\ -\x69\xf6\x69\x85\x52\x8a\xc1\xc1\x7e\x7c\xe4\xd9\x87\xf0\xd8\x7d\ -\x27\x90\xcb\xa5\xe5\x89\xc5\x82\x2c\x6f\x94\x71\x69\x76\x1d\xc5\ -\x72\xdd\x6f\xea\x01\x00\x11\xda\x88\x41\xb8\x5b\x16\x07\x2c\xed\ -\x4c\xbf\x44\x12\x89\x2c\x09\xa8\x76\xa1\xb8\x90\xea\x05\xf0\x37\ -\xe0\x38\xce\x87\x4c\xfa\x94\x52\xec\xdd\x33\x86\x9f\xfc\xf0\xe3\ -\xb8\xe7\xc4\x61\xa4\x2c\x0b\xd4\x0e\xa6\xc3\x88\xee\x23\x4a\x29\ -\xe6\x57\x4b\xb8\x32\xbf\x81\x8a\xd7\xb3\xc7\x34\x07\xc3\x80\xc5\ -\x59\x59\x5c\x84\x58\xb1\xed\xbe\x92\x89\xec\x16\x49\x40\xb5\xcb\ -\xc4\x85\xd4\x38\x9c\xa1\x07\xbf\x08\x67\x28\x82\x51\x6e\xbe\xe9\ -\x10\x7e\xea\xc7\x1f\xc7\xd1\x1b\xf6\x81\x80\x32\xcd\x3d\x61\x6c\ -\x01\x80\x86\x4d\x31\xbd\x58\xc0\xd4\x62\x01\x0d\xdb\x06\x61\x3c\ -\xeb\xa2\xb3\x5d\x02\x16\x13\xe9\x6f\xe0\xa0\x75\xa6\x27\x92\x48\ -\x74\x49\x40\xb5\x4b\x84\x71\x9a\xdf\x04\x67\x10\xe7\x87\x11\x3a\ -\x1d\xc6\xc2\x5d\x27\x8f\xe2\x13\x1f\x7a\x04\xfb\x27\x87\xfd\x39\ -\x7b\x80\xb0\xde\x26\x25\x20\x04\xa8\xd4\x1a\xb8\x32\xbf\x81\xf9\ -\x95\xa2\xbf\x94\x0b\x25\xfe\x06\xec\x5c\xde\x80\x0c\x2c\x40\x84\ -\x56\x10\x2f\x5a\x5b\x62\xba\x44\x12\x31\x49\x02\xaa\x5d\x20\x0c\ -\xa4\x4e\xc3\x71\x9a\x3f\x60\xd2\xf7\x76\x87\x79\xe4\xbe\x3b\xf0\ -\xe3\xef\xbb\x0f\xc3\x03\xbd\x4e\x53\x4f\xd8\xb2\x8a\xb1\x95\xb0\ -\x59\xae\xe3\xe2\xec\x3a\x56\x36\xca\xbc\x0e\x75\x60\x05\x40\x0b\ -\x2c\x40\x07\x2d\x31\x84\xd5\x49\x86\x26\x24\x12\x5d\x12\x50\xed\ -\x70\x71\x21\x65\x01\xf8\x20\x1c\x4b\xea\xa8\x49\x9f\x52\x8a\xde\ -\xde\x6e\xbc\xff\xc9\xfb\xf0\xcc\xc3\x77\xa2\xbb\x2b\xeb\x8e\x34\ -\x87\xe3\xe5\x56\x6c\x08\xba\xbe\x59\xc1\x85\x99\x75\x14\x4a\x55\ -\xf8\x38\x62\xc1\xe3\xfb\x9c\x28\xd3\xb3\x17\x05\x5a\x34\x80\x92\ -\x24\x44\x1b\x93\x48\x22\xa2\x24\xa0\xda\xc1\xe2\x42\x2a\x07\xe0\ -\x17\x00\xfc\x13\x38\x4b\xb5\x68\xc5\x99\x0e\x33\x84\x8f\x7e\xe0\ -\x11\xdc\x7f\xd7\x51\x64\x33\x29\xdf\x1f\xe5\x63\x81\x19\x42\x4e\ -\x01\x2c\xad\x96\x70\x71\x76\x1d\xe5\x6a\xdd\x05\x8c\x3b\xd9\x45\ -\x18\x6a\x2e\xf7\xec\xa9\xad\x2c\xa7\x1e\xec\x01\x34\x34\xa2\xa6\ -\xc8\x44\x12\xe1\x24\x01\xd5\x0e\x15\x17\x52\x83\x70\x16\xb9\xfb\ -\x55\x38\xbd\x7c\x5a\xa1\x94\xe2\xba\x83\x7b\xf1\x89\x0f\x3d\x86\ -\x93\xb7\x1c\xe2\x17\xba\x83\x3c\x21\xc6\xb6\x29\x66\x96\x36\x71\ -\x65\x3e\x98\x0e\xc3\xf7\xec\x79\x93\x92\xa3\x01\xcb\x51\x11\xa1\ -\x15\x0c\x50\x90\x2c\x2e\x4a\x92\xcd\x1d\x12\x89\x2c\x09\xa8\x76\ -\xa0\xb8\x90\xda\x0f\xe0\x77\x00\x7c\x12\xce\xf2\xc1\x5a\x21\x00\ -\x6e\xbb\xf5\x26\x7c\xfc\x83\x8f\xe0\xf0\xc1\x09\x84\x2d\xa0\x52\ -\xab\x37\x70\x65\x61\x03\x33\x4b\x45\x69\x3f\x3e\xd9\x51\x6e\x06\ -\x16\xe7\x1c\x27\x9c\x87\x4a\xbb\x69\x3b\x15\x56\xd5\x4b\x3a\x02\ -\x13\x09\x93\x04\x54\x3b\x48\x18\xa7\xf9\x6d\x00\xfe\x0d\x80\xa7\ -\xe0\xf8\xa7\x94\x42\x29\x45\x26\x93\xc6\xe9\xbb\x8e\xe3\x23\xef\ -\x7f\x10\x93\xa3\x03\x9c\x15\x25\xae\x60\x40\x00\x94\xaa\x0d\x5c\ -\x9c\x5d\xc3\xe2\x6a\x29\x58\x85\xd3\x85\x50\x2c\x60\x79\x19\x42\ -\x0d\x2d\x80\x72\xf3\xfe\x12\x49\xa4\x15\x49\x40\xb5\x43\x84\x99\ -\x0e\xf3\x18\x1c\x48\xdd\x69\xd2\xf7\x76\x87\x79\xe2\xe1\xbb\xf1\ -\xfe\x27\x4e\x61\xa0\xb7\xcb\x38\x67\x0f\x00\xd6\x8b\x35\x9c\x9f\ -\x5e\x73\xa6\xc3\x30\x90\xf1\x2c\x1f\xea\x0e\x53\x10\xf3\x00\x64\ -\x60\x01\x21\xd0\x02\xb8\x85\xf3\x12\x49\xa4\x15\x49\x40\xb5\x03\ -\xc4\x85\x54\x1a\xc0\x27\x00\xfc\x73\x38\x9b\x82\x6a\xc5\x9b\x0e\ -\xf3\xc1\xa7\x1f\xc0\xa3\xa7\x8f\x23\x9f\xcf\x18\xe7\xec\x01\xce\ -\x74\x98\x0b\x33\x6b\xd8\x2c\xd7\x9c\x46\x99\x6a\xa4\xb9\xbf\xeb\ -\xb1\xde\xc2\x62\xc3\xa3\x40\x4b\xe5\x32\x4f\xc6\x51\x25\x12\x57\ -\x12\x50\x6d\xb3\xb8\x90\xea\x01\xf0\x4b\x70\xb6\x55\x1f\x36\xe9\ -\x7b\xd3\x61\x7e\xe2\x03\x8f\xe0\xee\xdb\x6e\x44\x3a\x4d\xb8\x31\ -\x52\xf2\xb0\x01\x67\xe3\x85\x4b\x73\xeb\xce\xee\x30\xc6\xe6\x9d\ -\x97\x47\x60\x61\xb1\xf1\x62\x3a\x3e\x2d\x13\x48\x85\x9a\x88\xbb\ -\xd0\xa8\x83\x13\x49\x44\x2b\x09\xa8\xb6\x51\x5c\x48\x8d\x01\xf8\ -\x07\x00\xfe\x1a\x80\xee\xb0\x34\x37\xdf\x78\x08\x1f\xfb\xe0\x23\ -\x38\x7a\x78\x5f\xb0\x25\x15\xc0\x0c\x32\x0f\x46\x92\xd7\x1b\x36\ -\xae\x2e\x14\x70\x75\x61\xc3\x59\x43\x0a\x5e\x73\x50\x18\x9f\xde\ -\x24\xb0\xd8\xb4\x72\x3c\x75\xf6\xfe\xd3\xee\x8d\x95\x60\x2a\x91\ -\xe8\x92\x80\x6a\x1b\x84\x71\x9a\x1f\x06\xf0\x2f\x00\x7c\x04\x86\ -\x7b\x41\x29\x45\x2a\x95\xc2\x9d\x27\x6e\xc6\x47\x3e\xf0\x10\x0e\ -\xee\x19\xd1\x36\xf5\xbc\xe1\xe4\x95\x5a\x03\x17\x67\x36\x30\xb7\ -\xb2\xe9\xf7\xb2\x05\xce\x73\x47\x35\x2a\xb0\xbc\xed\x46\x75\xcd\ -\xc2\xa0\x9e\xfc\x71\xd0\xb1\xa7\x19\xf0\x99\x0c\x4e\x4f\x24\xa2\ -\x24\xa0\xda\x62\x61\x20\x75\x0a\xce\x74\x98\x87\x4c\xfa\xde\x74\ -\x98\x87\x4e\xdf\x8e\x1f\x7b\xea\x34\x46\x87\x7a\x99\xdd\x8a\x1d\ -\x11\x99\x51\x28\x39\x4e\xf3\x65\x77\x3a\x0c\x61\x96\x48\x60\x47\ -\x19\x84\x01\xcb\x89\x83\x50\x16\x65\x74\xf4\xd0\x62\xd3\x50\xa8\ -\xea\x9a\x78\xda\x13\x89\x2e\x09\xa8\xb6\x50\x98\xe9\x30\xef\x87\ -\xb3\xcf\xde\x31\x93\xbe\xb7\x3b\xcc\x33\x8f\xdf\x8b\x27\x1f\xbc\ -\x03\xbd\xdd\x39\x69\xce\x1e\xc0\xcf\xdb\x5b\x29\x54\xf0\xee\xd4\ -\x1a\x0a\xa5\x2a\x37\xbe\x89\x08\xdd\x72\x2a\x60\x01\xec\x98\xaa\ -\x30\x2b\x4b\x0d\x2d\x4f\x57\xec\x71\x64\xeb\xca\xa7\x4e\x24\x91\ -\x70\x49\x40\xb5\x45\xc2\x4c\x87\xf9\x39\x00\xff\x0c\xc0\x5e\x93\ -\xbe\x37\x1d\xe6\xc3\xcf\x3e\x84\xd3\x77\xdc\x8c\x5c\x36\x1d\x34\ -\xf7\x14\xa6\x94\x4d\x81\x85\xd5\x22\x2e\xcc\xac\xa1\x54\x69\x08\ -\x0b\xdd\x29\xa6\xbc\x28\x80\xe5\x94\xeb\x1e\xc7\xb0\xb2\xbc\x23\ -\x69\x63\x07\xca\x6c\xeb\x9e\x48\x22\x2d\x48\x02\xaa\x2d\x10\x17\ -\x52\x03\x00\xfe\xb6\xfb\xd7\x6f\xd2\xf7\xa6\xc3\x7c\xf4\x03\x8f\ -\xe0\xb6\xa3\x07\x91\xb6\x88\x0b\x29\xb7\xa9\xe5\x2b\x3a\x07\x0d\ -\x9b\x62\x6a\xa1\x80\xcb\x73\xeb\xa8\x37\xf8\x35\xa4\x3c\x35\x7f\ -\x62\x71\x4c\x60\x99\xac\x2c\x40\x18\xc2\x20\x9c\x07\xbf\x94\x8c\ -\xb8\x41\x60\xe2\xa0\x4a\x24\xba\x24\xa0\xea\xb0\xb8\x90\xda\x0b\ -\xe0\xb7\x00\xfc\x2c\x1c\xab\x4a\x29\x94\x02\x96\x45\x70\xfc\x96\ -\xc3\xf8\xe8\x07\x1e\xc6\x0d\x07\xc6\x39\xcb\x28\x70\x4d\x3b\x98\ -\x21\x00\x2a\x35\x1b\x97\x66\xd7\x30\xbd\xb4\x19\xac\x21\xe5\x4d\ -\x44\x6e\x06\x58\x00\x33\xd4\x21\xa8\x97\x17\x6b\x82\x96\x53\x26\ -\x5f\x9e\xf3\xc7\xaf\xa2\x10\xe0\x36\x12\xac\x12\x9c\x25\x92\x80\ -\xaa\x53\xc2\x38\xcd\x6f\x85\xe3\x8f\x7a\x16\x11\xa6\xc3\xdc\x7b\ -\xd7\xad\xf8\xd0\xd3\x0f\x60\x62\x6c\x80\xdf\xf8\x4e\xb1\x85\xd5\ -\x66\xa5\x8e\xf3\xd3\x6b\x58\x58\x2d\x06\x31\x84\x05\x4c\x04\x60\ -\xa9\x96\x6e\xd1\x58\x59\x4e\x9e\x41\x2e\x7c\xb6\x6a\x70\x29\xcf\ -\xd5\xfd\x57\x70\x6d\xa9\x24\x07\xe0\x38\x80\xe1\xc9\xd3\x9f\x8a\ -\x3a\x21\xa7\xd5\x89\x3b\xcd\xa4\x6f\xc7\x64\xa1\xb8\x79\x88\xfa\ -\xb4\x0d\x79\x00\x40\x05\xc0\x55\x00\x2b\x00\x1a\xb3\xcf\xfd\x7e\ -\x1b\x4e\xad\x75\x49\x40\xd5\x01\x61\xa6\xc3\x3c\x0c\x67\x3a\xcc\ -\x3d\x26\x7d\x4a\x29\xba\xbb\xf3\x78\xec\xc1\xbb\xf0\xcc\x23\x77\ -\x63\xb0\xbf\x5b\xee\xd9\x13\x1e\xc3\xd5\xcd\x0a\xde\x9d\x5a\xc5\ -\xda\x66\x15\x00\xdf\x1c\x94\x9b\x71\x06\x60\x79\x79\x23\x9e\x95\ -\xe5\xe4\x1b\x7c\x27\x44\x43\x28\x2d\xb8\x48\x48\x3c\x00\x60\x1f\ -\x80\xff\x06\xa0\xd1\xca\xfd\x88\x29\xbb\x61\x86\x62\x27\xeb\x68\ -\x03\xb8\x04\xe0\xcb\x00\xfe\xdf\xc9\xd3\x9f\x5a\xde\x09\xb0\x4a\ -\x40\xd5\x66\x61\xa6\xc3\xfc\x04\x9c\xe9\x30\x87\x4d\xfa\x94\x52\ -\x0c\x0d\xf6\xe3\xfd\x4f\xdd\x8f\x07\x4f\xdd\x8a\x9e\x7c\x56\x39\ -\x46\xca\x5b\x6d\x13\x00\x16\xd6\x4a\x78\x77\x7a\x15\xc5\x92\xbb\ -\x86\x14\x21\xfc\xcf\xa9\xd6\xef\x14\x0f\x58\x4e\x5a\x3d\xb4\xf8\ -\xbc\xe5\x73\x6b\xc3\xdb\x94\x02\x30\xd2\x7a\x36\x89\xc4\x94\x71\ -\x00\xb7\xc3\x59\xb5\xe3\xb7\x27\x4f\x7f\xaa\xb2\xdd\xb0\x4a\x40\ -\xd5\x46\x71\x21\xd5\x0d\xe0\xaf\xc3\x19\x6d\x3e\x6a\xd2\xa7\x94\ -\x62\xdf\x9e\x71\x7c\xf8\xd9\x87\x70\xc7\xf1\xc3\xc8\xa6\x2d\xdf\ -\xcf\xa4\x92\x06\xa5\x98\x59\xdc\xc4\xc5\xd9\x75\x54\x6a\x41\xcf\ -\x9e\xb7\x4e\x39\x25\x0a\x67\x3b\xe2\x03\x4b\xb7\x74\x0b\x51\x58\ -\x41\xaa\x15\x12\xd8\xb9\x7c\xde\x5a\x54\xf2\x7a\x54\x52\x56\x89\ -\xec\x2c\xc9\xc0\x99\x2d\xf1\x39\x00\x3f\xdc\xee\xca\x24\xa0\x6a\ -\x93\xb8\x90\x1a\x05\xf0\xf7\x01\x7c\x0a\xce\xfc\x3d\xa3\xdc\x7c\ -\xe3\x21\xfc\xf8\xfb\x1f\xc2\xcd\x37\xec\x73\x17\xba\x73\xc2\x85\ -\x15\x83\x41\x00\xd4\x1a\x36\x2e\xcd\xad\xe3\xea\x7c\xc1\x9f\x0e\ -\xe3\x99\x51\x81\x45\xd4\x1e\x60\x31\x49\x40\x38\x28\x99\xa1\x15\ -\xe8\x31\xe5\xa8\xe2\xbd\x7a\x53\x75\xd9\x89\xec\x18\x19\x86\xd3\ -\x22\x48\x40\xb5\xdb\x85\x71\x9a\x5f\x0f\xa7\xa9\xf7\x31\x38\xbf\ -\x46\x4a\xf1\xa6\xc3\xdc\x71\xe2\x66\x7c\xe8\x99\x07\x70\x60\xcf\ -\xb0\x30\x5a\x1b\xce\xea\x97\x6e\xa0\x45\x80\x52\xa5\x81\xf3\xd3\ -\xab\x98\x75\xa7\xc3\x38\x06\x89\x0b\x23\xc6\xd9\x1e\x17\x58\x5e\ -\x1c\xbf\x86\x95\xc6\xca\x72\x0f\x02\x6b\x89\x0a\x4d\x40\x79\x9c\ -\x42\x14\x6b\x29\x9d\xcd\x03\xc4\x8a\xa8\x9d\xc8\x36\x48\xe8\xfc\ -\xd3\xad\x90\x04\x54\x2d\x08\x03\xa9\xbb\x01\xfc\x6b\x00\x8f\xc2\ -\xe0\x9a\xa1\x94\x22\x9f\xcb\xe2\x81\xd3\x27\xf1\xbe\xc7\x4e\x61\ -\x74\xa8\x0f\xec\xba\x03\x1c\xb0\xdc\xb5\xa1\xd6\x37\xab\x38\x37\ -\xb5\x8a\xe5\x75\x66\x77\x18\xc2\x8c\x0a\x67\x81\xa5\xd9\x6f\x4f\ -\x07\x2c\x2f\x2f\x36\xce\x04\x2d\x21\xa9\x11\x5c\x5e\x9e\x34\x04\ -\x40\xb9\xde\x01\xe4\x7a\xfa\x51\x2d\xac\xea\xe7\xe2\x24\xf2\x9e\ -\x97\x04\x54\x4d\x0a\xd3\xb3\xf7\x3e\x38\x90\x3a\x6e\xd2\xa7\x94\ -\xa2\xbf\xaf\x07\x4f\x3d\x7a\x0a\x8f\xdc\x77\x12\x7d\x3d\x79\x50\ -\x4a\xa5\x71\x47\x2c\xac\x96\xd6\xca\x78\x67\x6a\x15\x85\x62\x0d\ -\x20\xd0\xf4\xec\x31\xc0\xf2\x58\x11\x15\x58\x8c\x92\x7a\xfc\x94\ -\x19\x5a\x6c\x19\xde\x01\x51\xc4\x39\xa3\x2c\x78\x60\x79\x96\x1c\ -\x49\x67\xd1\x37\x71\x08\xeb\x14\xa8\x95\x0b\xb0\x1b\x0d\xa8\xad\ -\xab\x04\x62\xed\x16\xef\x8a\xee\x86\xdf\x87\x04\x54\x4d\x88\x0b\ -\xa9\x2c\x80\x9f\x81\x33\x90\x73\xbf\x49\x9f\x52\x8a\xf1\xb1\x61\ -\xfc\xd8\xd3\x0f\xe0\x9e\x93\x47\x90\xcf\x05\xd3\x61\xc4\x39\x71\ -\x9e\xf3\x79\x76\x79\x13\xe7\xa7\x57\x51\xaa\x34\x60\xb9\x5e\x73\ -\x95\xef\x27\x0e\xb0\xe0\x0d\x08\x05\xfc\x42\x95\xd0\x52\xf6\xea\ -\x09\xa0\x89\x00\xae\x60\x1e\xa1\x3c\xb0\x93\x82\x22\x9b\x49\xe1\ -\xd6\xeb\x46\x70\x70\xbc\x0f\xd4\xbe\x1e\xb5\xf2\x26\xea\x95\x92\ -\xb2\xd7\x53\xfb\x2e\x91\x48\x5a\xd7\x86\x28\xc6\xd4\x29\x7b\x5b\ -\x09\x37\xa1\xc9\x98\xe5\xd2\xf2\x3a\xce\x9c\x39\x8b\x4a\xa5\xba\ -\xdd\x67\x67\x94\x04\x54\x31\xc5\x85\x54\x3f\x9c\x9d\x61\xfe\x0e\ -\x9c\xa9\x31\x5a\xa1\x94\xe2\xfa\x43\x7b\xf1\xa1\xf7\x3d\x84\x5b\ -\x8f\x1c\x44\x26\x65\x49\x0f\x17\x3b\xf1\xb7\x61\x53\x5c\x9e\xdb\ -\xc0\xa5\x59\x6f\x3a\x4c\x60\x8d\x78\xab\x68\x52\x02\x83\xa3\x5c\ -\x01\x2c\x27\x82\x55\x97\xac\x2c\x46\x85\x6f\x1a\x72\x11\xf1\xc0\ -\x65\x7a\x45\x28\x05\x7a\xbb\x32\x78\xea\xee\x43\x10\x32\x52\xe2\ -\xa6\x9d\x36\x56\x2c\x6f\x58\xa4\xe1\x61\x66\xa5\xa8\xe5\x51\x49\ -\x99\x2a\xbe\x31\xb1\x34\x42\x7e\x9a\xd1\xff\x5e\xd0\xd9\x77\xa7\ -\x71\xe9\xe2\x25\x94\xcb\x95\x1d\xdd\xb1\x91\x80\x2a\xa2\x30\xfe\ -\xa8\x49\x38\x93\x8a\x7f\x1e\x40\x5e\xa7\xef\x4d\x87\xb9\xed\xd8\ -\x61\x7c\xf0\x99\x07\x71\xfd\x81\x71\x10\xa2\x5f\x31\x80\x10\xa0\ -\x52\x6d\xe0\xc2\xcc\x1a\xa6\x17\x9d\xe9\x30\x5e\x3e\xaa\x0d\x16\ -\xa4\x51\xe3\x26\x60\x81\x77\xba\x33\xea\xbe\x95\xe5\xa4\x55\x40\ -\x8b\x53\x56\x5b\x5b\x4e\x36\x0a\x2b\x28\xe4\xb9\x27\x00\x52\xd6\ -\xd6\xbe\x1c\xb1\x86\x6f\x6b\x94\x83\x60\x1a\x29\x6d\x14\x50\x89\ -\xcd\xfe\xb0\x6a\xe8\x56\xa7\x60\x53\x13\x0f\x52\xda\xd5\x36\x08\ -\x2c\x8b\x24\x4d\xbf\x6b\x45\x18\x48\x1d\x85\x33\x1d\xe6\x03\x70\ -\x06\x23\x2a\x85\x52\x8a\x6c\x26\x8d\x53\x77\xdd\x8a\x67\x9f\x38\ -\x8d\xc9\x51\xcf\xe8\xa2\x01\x38\x18\x7d\x42\x80\xcd\x52\x0d\xef\ -\x5c\x5d\xf5\xa7\xc3\xb0\xbf\x6e\xaa\x0d\x16\x58\xeb\x8a\xcb\x2f\ -\x2a\xb0\x98\x44\xa2\x95\xe5\xa4\x8f\x00\x2d\x29\x52\x1e\xb9\xee\ -\xcd\xf3\xd3\x02\xba\x0d\xf7\xa7\x2d\xfd\x85\x34\x6a\x54\xb8\x62\ -\x2c\x0b\x4a\xfd\x45\x9b\x4f\x64\x2b\x4a\x91\x81\x6a\x18\xf1\x6e\ -\xe9\x6b\x4d\x40\x15\x22\x8c\xd3\xfc\x41\x38\xd3\x61\xee\x35\xe9\ -\x53\x4a\xd1\xd3\x9d\xc7\xa3\x0f\xdc\x85\xc7\x1f\xba\x13\x83\x7d\ -\x5d\x4c\x24\x7c\x52\x30\x2b\x44\x61\x65\xa3\x82\xb7\xaf\xac\x38\ -\xbb\xc3\x30\xf9\x00\x7a\x60\xa9\x9a\x83\x5e\x45\xfd\xb2\xa0\x02\ -\x56\xa0\xa5\xb5\xb2\xdc\xc2\x54\x96\x16\x57\x86\x94\x48\x3f\xdd\ -\x46\x7b\xbd\x5a\xbb\x3d\xcd\x49\xa4\x97\x3d\x46\x0d\x77\x0c\xa0\ -\xdc\x6f\xd4\x14\x1f\xfd\xb4\x76\x92\x24\xa0\x32\x88\x0b\xa9\x14\ -\x9c\xa5\x82\x7f\x0f\xc0\x4d\x26\x7d\x4a\x29\x86\x87\xfa\xf1\xbe\ -\xc7\xef\xc3\xe9\xbb\x8f\xa1\x3b\x9f\x91\x2d\x6f\x66\x24\x25\x05\ -\x30\xbf\x52\xc2\xb9\x2b\x2b\xd8\xac\xd4\xf9\x35\xa4\x98\x3c\xa5\ -\xb1\x4d\xcd\x00\x8b\x09\x14\xad\x2c\x95\x2f\x8b\xad\x2a\x84\xd1\ -\xf2\x46\x70\x89\x65\x52\xe6\x4f\x9b\xa0\xcd\x12\xf3\x25\xa4\xcd\ -\x64\xd0\xc4\xc8\xfa\x4e\x00\x2a\x48\x17\xd5\x8a\x12\x02\x77\x09\ -\xb0\x12\x50\x69\x84\x99\x0e\xf3\x57\x00\xfc\x63\x38\x9b\x30\x68\ -\x85\x52\x8a\xfd\x7b\xc7\xf1\x81\xa7\x1f\xc0\xc9\x63\x37\x20\x9b\ -\x09\x5a\x86\x8a\xce\x1a\xd8\x0d\x8a\xab\x8b\x05\x5c\x98\x5e\x43\ -\xa5\xde\x08\x96\x0b\x26\x72\x1a\xed\x94\x17\x13\xb0\x98\x02\xf5\ -\x03\x3e\xd9\xbe\x21\x05\xb4\x98\xc4\x3a\x6b\x2b\x28\x4b\xa6\x0f\ -\xdf\x78\x14\xdb\x8c\x0a\x89\x0b\xb0\x16\x5e\xb2\xd8\x56\x93\xa0\ -\x1a\xb7\xe8\xed\x80\x54\xc8\x49\xef\x16\x46\x01\x48\x40\xa5\x14\ -\x17\x52\xc3\x00\xfe\x6f\x00\xbf\x0c\xa0\x37\x2c\xcd\xd1\x9b\x0e\ -\xe1\xc7\x9e\x79\x10\x37\x5e\xb7\x17\x69\x8b\x28\xe9\x44\xe1\xbc\ -\xcf\xb5\x9a\x8d\x0b\x33\x6b\xb8\x32\xef\xee\x0e\xe3\x8e\x37\xa0\ -\x20\xca\xe6\x58\xe8\x1c\x3d\x05\xb0\x80\x70\x2b\x8b\x8d\x53\x42\ -\x0b\x6a\x9f\x96\x90\x85\x5f\x09\xd5\xba\x23\x0d\x9b\xa2\xde\xb0\ -\xf5\x9b\x51\x74\x50\x68\x13\x31\x2a\x95\xa6\xa1\xe4\x1e\x28\xfb\ -\xee\x42\xd8\x12\xcb\x17\xa5\xc8\x88\x3d\x4c\x59\xc4\x19\xe2\xd2\ -\xe4\xf9\xec\x04\x49\x40\xc5\x08\xe3\x34\x3f\x04\xe0\x77\x01\xfc\ -\x24\x42\xa6\xc3\xa4\xd3\x29\xdc\x71\xdb\xcd\x78\xf6\xc9\xfb\xb0\ -\x7f\x72\x24\x98\x28\xec\x2b\x05\x07\x84\x00\xc5\x72\x1d\xe7\xae\ -\xae\x62\x6e\x79\x93\x1b\x10\xe9\xc4\x33\xce\x76\x06\x58\xaa\xe6\ -\xa0\xa3\xaf\x07\x96\x53\xb4\xba\x59\xc8\xe6\x15\x0e\x2d\x46\x9b\ -\x2a\x8c\x9e\x10\x78\x5d\x5d\xd8\xe0\xd6\xcb\xd2\x4b\xb3\x6b\xa8\ -\x47\x23\x4a\x68\xde\x5a\xbf\x8e\xa6\x61\x18\x36\x6c\x81\xf9\xa2\ -\xf2\x0f\x29\x73\x55\x84\xab\x0d\x30\xb5\x13\x9c\x0a\xca\xde\x98\ -\xbc\x7d\xa3\xbd\xd8\x37\xda\x1b\xed\x3a\xec\x50\x49\x40\xe5\x0a\ -\x03\xa9\x3b\xe0\x8c\x34\x7f\x02\x61\xd3\x61\xf2\x59\x3c\x70\xea\ -\x24\x9e\x7c\xe4\x6e\x8c\x0e\xf5\x42\xec\xb8\x66\x61\x40\x08\xb0\ -\x56\xa8\xe2\xed\x2b\xcb\xee\x74\x18\xdd\xf6\xe9\x94\x1b\xb0\xd7\ -\x4e\x60\x39\xa0\x89\x0b\x2d\x1e\x21\x94\x4f\x61\x84\x17\x05\xb0\ -\x51\xac\x61\x03\x35\x68\x54\xda\x2a\x4d\xbd\x84\x26\xa0\xe8\xf2\ -\x35\x3a\xab\xa9\x06\x44\x2a\x2b\x89\x41\xa1\x89\xb7\x54\x86\xa6\ -\xca\xe2\x62\xad\x56\xd6\xbf\x38\xd4\x9b\xd7\x34\x34\x77\xc1\xb8\ -\x04\x57\x12\x50\x81\xeb\xd9\x7b\x0a\x0e\xa4\x4e\x9a\xf4\xbd\xe9\ -\x30\x4f\x3e\x72\x0a\x0f\x9c\xba\x0d\xfd\xbd\xec\xea\xc2\xdc\x28\ -\x16\xff\x51\x58\x58\x2d\xe1\xec\xe5\x65\x14\x4a\xde\x74\x18\x6a\ -\xdc\x89\x98\x30\xbd\x83\x40\x6b\xc0\x62\xcb\x68\x0a\x5a\x5c\x04\ -\x5b\x2b\x56\x55\x0d\x2f\xe5\xab\xd0\xa1\xf7\x43\x55\x77\x51\xa4\ -\x28\x6e\x45\x08\xb9\xd9\xa6\xac\x2e\x81\x64\xe9\x70\xf3\x1a\x09\ -\x7b\x6f\x98\x64\xdc\x88\x72\xa1\x5c\xf1\x1e\x08\x9d\x20\xfc\x8e\ -\x3f\x62\x5e\x8e\xa6\xb8\xa1\x07\xe0\x74\x7c\x88\x1b\xc3\xf2\xdf\ -\x77\x87\x8d\xf5\x9e\x07\x15\x33\x1d\xe6\xff\x02\xf0\x3b\x00\x0e\ -\x98\xf4\x29\xa5\x98\x18\x1b\xc6\xb3\x4f\xde\x8f\x3b\x4f\xdc\x84\ -\x7c\x36\xad\x7c\x78\x3c\x9b\xca\xa6\x14\xd3\x8b\x9b\x38\x37\xb5\ -\x82\xb2\xbb\x3b\x0c\x28\xf8\x89\xc5\x0a\x60\x89\xbb\xc1\xc4\x01\ -\x96\x93\xce\x6c\x65\x39\x79\x46\x84\x96\x77\x3a\xec\xa1\xa2\xab\ -\x8f\x28\xd5\x35\x23\x26\xd1\x7e\x5e\xd1\x98\xb1\x71\xba\xec\xa9\ -\xe6\x40\x65\x87\x99\xfc\x4b\xa2\xaf\x4e\x57\x07\xd1\x36\x52\x5b\ -\x50\x8a\x5a\x08\x3f\x30\x01\x8a\x9a\xea\xdb\xdc\x31\xf2\x9e\x06\ -\x95\x0b\xa9\x3e\x00\x7f\x03\xc0\xdf\x03\x30\x14\x96\xe6\x86\x43\ -\x7b\xf1\x81\xa7\x1f\xc4\xd1\x1b\x0f\x20\x93\xe6\x97\x40\x67\x47\ -\x0b\x13\x00\xb5\x46\x03\x97\x66\x37\x70\x71\x76\x1d\x35\x77\x3a\ -\x4c\xa0\x0c\x79\x8c\x53\x5c\x60\x29\x7a\xe4\x9a\xb1\xb2\x9c\x3c\ -\x14\xd0\x62\x33\x84\x01\x5c\x86\x7a\x44\x77\x69\x77\x6e\x42\x4c\ -\x68\x17\x7d\x58\x74\x08\x98\x80\x78\x70\x52\x16\xdf\x24\xa0\xfc\ -\x7f\x75\xce\x74\x71\xd5\xc2\x08\xf5\xdd\x89\xf2\x9e\x04\x15\xe3\ -\x8f\x9a\x80\x33\xf4\xe0\xaf\x20\xc2\x74\x98\xe3\xb7\xdc\x80\xf7\ -\x3f\x79\x3f\x0e\xed\x1b\x77\xa6\x7e\xa8\x7a\xf6\x5c\x58\x95\x6b\ -\x0d\x9c\xbb\xba\x8a\xa9\x85\x82\xb3\x6a\x27\xe1\x27\x5d\x18\x27\ -\x16\x47\x05\x16\xeb\x1f\x52\x0c\x6b\x70\xd2\x85\x5b\x59\x41\xbc\ -\x97\x07\xdb\x73\xe8\xe6\xa6\x3e\x5d\xe5\x41\x34\xe4\x68\xdd\xc6\ -\xed\xfb\xa5\x8f\x98\x51\x98\x65\xd5\x0c\x9c\x9c\xf8\x08\x83\x20\ -\x5a\x05\x94\x90\x31\xd7\xb0\xa3\x72\xcd\x77\x1b\xa0\x3c\x79\xcf\ -\x81\x8a\x81\xd4\x11\x00\xff\x12\xc0\x87\x10\x36\x1d\x26\x9b\xc1\ -\xa9\x3b\x8f\xe1\xa9\x47\xef\xc5\xc4\xc8\x40\x68\xcf\x5e\xa1\x58\ -\xc3\xd9\x2b\x2b\xfc\xee\x30\x82\x85\x23\xa5\x87\x1a\x58\x6a\x87\ -\xbb\xb9\x49\xc8\x64\xc9\x06\x85\xaf\x35\x45\x79\x38\xfa\x63\xe7\ -\x15\x73\xc5\x7c\x1d\x85\xe9\x41\xbd\x0b\x21\x48\xc8\x30\x51\x21\ -\x56\xff\x32\x36\x2b\x51\x2c\x2b\xd3\xa4\x92\x48\xe3\x9a\x9a\xb2\ -\x9e\x82\xa3\x76\x00\x4a\x5b\x8f\x5d\x0a\x29\xe0\x3d\x06\x2a\x06\ -\x52\xf7\xc3\x99\x0e\x73\xbf\x49\x9f\x52\x8a\xde\x9e\x2e\x3c\x72\ -\xff\x9d\x78\xf8\xbe\xdb\x31\xd8\xdf\xc5\xc7\xbb\x9f\xbe\x75\x44\ -\x80\xa5\xb5\x32\xce\x5e\x5e\xf6\x77\x87\x01\xd4\x4e\x54\x76\x82\ -\xb2\x09\x58\xec\x76\xe9\x2a\x0b\x8b\x77\xa2\x9a\xad\x2c\xb6\x2c\ -\xfd\x32\xc4\x72\xa3\x4d\x37\x96\x4a\x2b\xac\xb9\xa8\xb8\x5e\xba\ -\xf2\x78\x5d\x12\x9a\x32\x3c\x6f\xb3\x42\xd8\x4c\xb7\xa8\x2f\x76\ -\x24\x38\x31\x81\x51\xac\x27\x3e\xdc\x0c\x6d\xd1\x8a\x12\x23\x29\ -\x14\x65\xec\x32\x68\xbd\x67\x40\xc5\x4c\x87\xf9\x20\x1c\x4b\xea\ -\x66\x93\x3e\xa5\x14\x23\x43\x03\x78\xfa\xb1\x7b\x71\xf7\x1d\x47\ -\xd1\xdb\x95\xf5\x62\xa0\x7a\xb9\x28\x80\xd9\xc5\x4d\xbc\x7d\x65\ -\xd9\x9f\x0e\xe3\xfb\x7a\x28\x14\x96\x51\x3c\x60\x39\x69\xf4\xbd\ -\x84\x4e\x38\x6f\x65\xe9\xa0\xe5\xa4\xd7\x2c\xa7\xe2\x0d\xdc\x0c\ -\xfe\x09\xea\xa7\xf7\x8b\xf3\xf9\x89\x2f\x01\xd1\xa7\xd2\xbe\x31\ -\x4d\xfa\x90\x64\xbd\xe8\x6f\x64\x2b\x60\xd2\x56\x23\xa6\xf5\xc4\ -\x87\xb7\x00\x28\x37\x1f\xc9\x7f\xb5\xcb\x00\xe5\xc9\x7b\x02\x54\ -\x2e\xa4\xf2\x00\x7e\x01\xc0\x3f\x81\xe3\x9b\xd2\x0a\xa5\x14\x07\ -\xf6\x8e\xe3\xd9\xa7\xee\xc7\xad\x37\x5f\x8f\x5c\x26\x25\xf4\x9a\ -\x05\x68\x21\xf0\xd6\x90\x5a\xc7\xbb\xd3\xab\xa8\xd6\x6d\xdf\xa0\ -\x60\xf7\xc9\x53\xf7\x0c\x82\x9b\xcb\xd7\x6e\x60\x39\x59\x28\x80\ -\xa4\x1b\xb1\x2e\x1d\x68\xf2\x57\xea\x69\xcc\x2e\xa5\x61\x24\x14\ -\x1c\xa3\xfb\x4d\x19\xe3\xf5\xa4\x46\x7c\x0b\xe3\x36\x81\x4c\xa3\ -\xea\xc3\x9a\x93\x51\xad\x27\x3e\x2e\x3a\xa0\x74\xf5\x8b\xd2\x23\ -\xb8\x9b\xe4\x9a\x07\x95\x0b\xa9\x41\x38\xbd\x7a\x7f\x0b\x21\xd3\ -\x61\x08\x80\x9b\x6f\x3a\x84\x67\x9f\x7a\x00\x87\x0f\xee\x41\x3a\ -\x25\x3b\xa0\xfd\x9e\x3d\x42\x51\xa9\xd9\x78\x77\x6a\x0d\x97\xe7\ -\xd6\x61\xdb\x54\xf9\x62\x52\x42\x39\xeb\xca\x49\xcb\xe6\x29\xfb\ -\xaf\xbc\xba\xf0\xf9\x78\xe1\xe1\xc0\x22\x2a\x08\x89\x15\x53\x0e\ -\x4e\x25\xd2\x2e\x38\xdc\xc5\x31\x48\x90\x6b\xc8\x1b\x11\xba\x00\ -\x12\x7f\x11\x8d\x2f\x15\xdb\x8b\xe9\x34\x96\xb9\xeb\xd0\x8c\xc4\ -\x06\x93\x10\xa1\xea\x16\xd8\x7a\x40\x39\x57\x4e\x5c\x61\x75\xb7\ -\x01\xca\x93\x6b\x16\x54\x8c\x3f\xea\x00\x9c\xf1\x51\x9f\x44\xc4\ -\xe9\x30\x4f\x3f\x7e\x1a\x7b\xc7\x87\x60\x59\xc2\xc6\x9e\xbe\x2e\ -\xdc\x35\xa4\xea\x38\x7b\x65\x19\xb3\xcb\x45\xf7\xa1\x71\xe6\xea\ -\xa9\xe6\xd6\x89\xbb\x10\xb7\x17\x58\x6e\xce\x0a\xd3\x88\xf3\x33\ -\x89\xf3\x07\x95\xad\x58\x65\xdf\x9e\x21\x4a\xdd\x0c\x16\x47\x4f\ -\xf2\x43\x1b\xda\xf8\xba\x10\x31\x3b\xad\x99\x26\xd7\x33\x42\x3d\ -\xe2\x81\x89\x3f\x8a\x03\x27\xee\x5b\x1b\x00\xc5\x25\xdc\xe5\x90\ -\x02\xae\x51\x50\x31\x90\x3a\x01\x67\xa4\xf9\xd3\x08\x99\x0e\xd3\ -\x95\xcf\xe1\xfe\x53\x27\xf0\xe8\x83\x77\x62\x64\xb0\x4f\x32\x8c\ -\xd8\x63\x02\x60\xb5\x50\xc1\x99\x4b\xce\x74\x18\xc2\x90\x84\x9d\ -\x58\xac\x5e\xe3\xbc\x8d\xc0\x72\x03\x9d\xa6\x18\x5f\x4b\xd5\x5a\ -\xec\xc1\xa1\x06\x2e\x4c\x5d\xbd\x5d\x65\x88\x46\x57\x3d\x4e\x4a\ -\x33\xf1\x8f\x88\x2f\x89\xe6\x56\x48\x0e\x15\x68\xf5\x8c\xee\x6b\ -\xaa\xc9\x85\x9a\xad\xb3\x38\x0e\xf9\xd6\xe0\x14\xa4\x31\xf5\x6a\ -\x36\xd3\x93\x47\x35\x27\xaf\xbe\x5e\xc9\x14\x9a\x6d\x13\x66\x3a\ -\xcc\x63\x00\xfe\x2d\x9c\xb9\x7b\x5a\xa1\x94\x62\xa0\xbf\x17\x4f\ -\x3c\x7c\x37\xee\xbd\xeb\x38\xfa\x7a\xf2\xb2\x53\x58\x18\x8e\x30\ -\xb7\x52\xc4\x19\x77\x3a\x0c\x81\x08\x05\x79\x62\xb1\x7a\x8d\xf3\ -\xe8\xc0\x72\xc2\x89\x12\x09\xec\xc8\x25\xee\xd1\x23\x12\xde\x04\ -\x53\x4a\x3e\x31\x0e\x4a\xa6\x41\x9c\x94\x49\x66\x1a\xbe\x2e\x05\ -\x47\xee\x32\xd4\x65\x10\x58\x6b\x52\x71\x4c\xa0\xce\xa8\xf2\xa7\ -\x05\xc4\xef\x25\x6c\x06\x4c\xb2\x4e\x7b\xac\x27\x55\xb9\x2a\x40\ -\x79\xbd\x7d\xba\xba\xab\xca\xdb\xa9\x72\x4d\x81\xca\x85\x54\x06\ -\xc0\x27\xe0\x6c\x06\x7a\xc8\xa4\x4f\x29\xc5\xe4\xf8\x30\x9e\x79\ -\xe2\x3e\x9c\x38\x76\x23\xba\x72\x69\x28\x7f\x69\xdc\xa0\x06\xa5\ -\xb8\x3a\xbf\x81\x77\xae\xae\xa0\x5c\x6d\x18\x96\x0b\xe6\x7b\xdf\ -\x74\xcd\x41\x20\x1a\xb0\xbc\xba\x3a\xe1\x7c\x46\xe2\x48\xf5\x80\ -\x45\x82\xaf\x49\x80\xad\xaa\x27\xcf\x5f\x6d\x41\x31\xba\x53\x89\ -\x0f\x15\xe0\x42\xa5\xb5\x57\xc3\x6f\x51\x6a\x99\x48\x24\x0a\xf0\ -\x87\x04\x61\x74\x30\x5a\x6b\x68\x3f\x9c\x54\x41\xb1\x00\x25\x64\ -\xa0\x2f\xa7\x75\xff\xdd\x76\xc9\x35\x03\x2a\x17\x52\x3d\x70\xd6\ -\x8f\xfa\xfb\x70\xd6\x93\x32\xca\xe1\xeb\xf6\xe1\x7d\x4f\xde\x8f\ -\x23\x37\xec\xe7\xa6\xc3\x70\x2f\x2c\xdc\xe9\x30\x75\x1b\xe7\x67\ -\xd6\x70\x61\x66\xcd\x99\x0e\x03\x38\x4d\x09\x61\xdb\x29\xd1\xba\ -\x72\xfe\x0d\xc6\x37\xb5\x0a\x2c\x1f\x37\x8c\xf3\x49\x1e\x0f\x6e\ -\xf2\x2f\x11\x55\x6e\x42\x4a\x2a\x99\x4b\x4a\xf7\x14\x65\xf5\xa3\ -\xc2\x2a\x4c\x8f\x46\x0b\x15\x78\x43\xc3\xf1\xc2\xf4\x0e\x9a\xf2\ -\x8f\x0f\x25\x59\xaf\x39\x38\x39\xf9\xb4\x0f\x50\xd4\xd5\x63\x71\ -\xbd\xdb\x00\xe5\xc9\xae\x07\x15\xe3\x8f\x1a\x03\xf0\x8f\x00\xfc\ -\x55\x00\x5d\x3a\x7d\x4a\x81\x54\x8a\xe0\xf8\xd1\xc3\x78\xe6\xf1\ -\xfb\xb0\x7f\xef\xa8\xb3\xd0\x9d\x4a\x17\xce\xd0\x81\x52\xa5\x8e\ -\xb3\x57\x56\x30\xb5\x50\xe0\x36\x0d\xa5\x80\x72\x73\x4f\x19\x32\ -\x01\xb0\x94\xfe\xab\x40\x45\x09\x2c\xc2\x9a\x45\x8c\x3a\x61\xac\ -\x2a\xde\x39\xae\x6a\x73\xc2\xe5\x9b\x30\x60\x41\x20\x95\x9c\x17\ -\x97\x5c\x3a\xa0\x5c\x4a\x9d\xc4\xb1\xb8\x84\x73\x84\xfa\xa5\x94\ -\x0f\x65\x0a\xf1\xd6\x57\x98\x25\x45\x63\xbf\xc4\x9d\x86\x93\x58\ -\x46\xe8\x75\x90\xa2\x03\x6f\xba\xba\x88\xdd\x43\xad\x5d\x0d\x2a\ -\x06\x52\x87\xe1\x0c\xe2\xfc\x08\x42\xa6\xc3\xe4\xdc\xe9\x30\x8f\ -\x3d\x7c\x0f\xc6\x86\x07\xe0\x4d\xd9\x53\xb9\x74\x9c\x2d\xd5\x1d\ -\xa7\xf9\xc2\x6a\x29\x08\x17\x5c\x3c\x4e\x58\x00\x2c\xd6\xba\xf2\ -\xf2\x71\x43\x02\x5b\x2d\x06\xb0\x28\x98\xe6\x15\xdb\x7b\x47\xdd\ -\x70\xde\x61\x15\xe8\x4b\xdd\x95\xac\xe3\x3d\x48\x10\xd5\xad\x2a\ -\x3a\xdc\x45\x72\x49\x2e\x21\x6d\x0e\xd1\x84\xc4\x7e\x8f\x34\xc3\ -\x1a\x7c\x46\x49\x13\x73\x98\x6f\x4e\xaf\x69\x54\x8b\x46\x6b\x83\ -\x85\xb9\xe9\xb8\x3c\x9b\xb7\x9e\xb8\x43\x2d\xa0\xe0\x99\x55\xbb\ -\x5e\x76\x2d\xa8\x18\x48\x9d\x82\xe3\x34\x7f\xc8\xa4\xcf\x4e\x87\ -\xb9\xff\xde\x13\x18\xe8\xed\x96\x7a\xc5\x00\xbe\xf3\x6c\x71\xb5\ -\x84\x37\x2f\x2d\x63\xb5\xe0\xec\x0e\x23\xf5\xc2\xb1\xd0\xf0\xc3\ -\xd4\xcd\x41\x20\xdc\xe1\xce\xa6\x71\xbe\x73\xa6\x9b\x0b\x46\xc1\ -\x23\xe4\x56\x82\x87\x6d\x90\xce\x33\x26\xbc\x96\x1c\x6f\xaf\xc9\ -\xe7\xc1\xbe\xe0\x44\x31\xa0\x4a\xf2\x9d\xab\x47\x7f\x72\xd7\x44\ -\x95\x5a\x39\x0e\x54\x4c\x41\xf4\x99\xa9\xb9\x41\x61\xe0\x09\xf7\ -\xc2\xab\xf4\xd8\xb0\x4e\x80\xc9\xc9\x37\x9a\xf5\x24\xd6\x57\x99\ -\xb7\x09\x50\x50\x39\xd2\xc3\xeb\xb7\x53\x65\x57\x82\xca\x85\x94\ -\x05\x67\x7f\xbd\x7f\x05\xe0\x16\x93\x3e\xa5\x14\xa3\xc3\x03\x78\ -\xf2\xd1\x7b\x71\xc7\x89\x9b\xd1\x93\xcf\x9a\x37\x6f\xa4\xc0\xf4\ -\x62\x01\x6f\x5d\x5e\x46\xb1\x5c\x0f\xde\x7b\xd5\xc4\x62\xc1\x12\ -\xd3\x35\x07\x9d\xf4\xae\x2a\xe7\x70\x77\x34\xb8\x1e\x42\xf7\xe5\ -\x67\x39\xe0\xe4\x2b\xd0\xcc\x77\x90\x53\xc1\x82\xa2\x92\x55\xe5\ -\xd7\x55\xdc\x89\x58\xf2\x9b\x9b\xfd\x52\x94\x4f\x1a\x5c\x30\xad\ -\x49\x16\x15\x62\x3a\x5d\xca\x47\x31\x87\x54\x91\x94\x50\x75\x38\ -\x15\x2a\x4e\xa4\x30\xa1\xd9\x48\x82\x9e\xb4\x28\x60\x32\x45\x35\ -\x05\x27\x45\x86\x71\x00\xa5\xab\xd7\x6e\x03\x94\x27\xbb\x0e\x54\ -\x2e\xa4\x72\x70\x76\x2a\xfe\x67\x00\xf6\x98\xf4\x29\xa5\x38\xb0\ -\x6f\x1c\xef\x7b\xe2\x7e\x1c\xbd\xe9\x10\x72\xee\xee\x30\xaa\xf9\ -\x77\x04\x40\xdd\xa6\xb8\x38\xbb\x86\x73\x57\xdd\xe9\x30\x42\x6f\ -\x99\x97\x27\xc0\x0f\x19\x08\x6b\x0e\x02\x08\xb1\xb0\x18\x00\x52\ -\x17\x3e\x84\x08\xb5\x83\x44\x0d\xce\xca\x13\xcf\x89\xa8\xbe\x32\ -\x16\x93\x44\x29\x65\x02\xa5\x48\xb6\x51\x78\xbb\x0f\xbc\x62\xf4\ -\x81\x99\x86\x77\x57\x88\x50\x34\xed\x14\xd4\x52\x77\xe5\x13\x1f\ -\x56\x94\xd3\x57\x5b\x35\xa6\xba\x84\x0d\x24\x55\xae\x90\x10\xa5\ -\x9c\x26\x00\x45\xa9\x02\xb6\x5e\xe4\xee\x19\x46\xb5\x7b\x40\xc5\ -\x34\xf5\x06\x00\xfc\x3a\x80\xbf\x0d\x67\xd1\x3b\xad\x10\x02\x1c\ -\xbd\xe9\x3a\x3c\xf3\xf8\x7d\x38\x74\x60\x02\x99\x94\xd7\xb3\xe7\ -\xf5\x80\x10\x66\x3a\x8c\xb3\xa5\xfa\xdb\x57\x57\x70\xc9\x9b\x0e\ -\x03\x80\x9d\x17\x27\xb9\x7c\x54\xf3\xf4\x9a\x06\x96\x4c\x4d\xdf\ -\x2e\x0a\xcc\x21\xa9\xb9\x25\x41\x14\x42\x93\x51\xaa\x0b\x94\x56\ -\x95\xa3\xce\x38\xc4\x99\x25\x3c\xa9\x9a\x91\x3e\x15\xe3\x3d\xef\ -\x24\xe4\x98\xc6\x82\x82\x2a\x77\xca\xba\xe0\x49\xc4\xc4\x3e\xe8\ -\x78\x2a\x7a\x79\xc9\x23\xe0\x85\xe4\xad\xc0\x49\x71\x82\x7a\x38\ -\x29\x8e\x54\x69\xa9\x06\x67\xbb\xd4\xa4\xda\x15\xa0\x62\x20\xb5\ -\x0f\xc0\x6f\x01\xf8\x59\x38\xcb\x07\x2b\x85\x52\x8a\x4c\x3a\x8d\ -\x3b\x4e\x1c\xc1\x13\x8f\x9c\xc2\xe4\xd8\x90\xb3\xd0\x9d\xac\xe9\ -\xc3\xaa\x50\xaa\xe1\xcc\xc5\x65\xcc\x2c\x15\x84\x1e\x35\xd7\x7a\ -\x72\xc7\x25\x01\x7a\xeb\xca\xd1\x77\x75\x34\xfe\x2b\x40\x06\x96\ -\x0f\x1d\xc6\x22\xf2\xea\x25\xba\x87\x03\xe7\x3a\xdb\x56\xe4\x94\ -\xf8\xe6\x1e\xd3\x63\xa8\x6a\xc2\x11\xe9\xc0\xe4\x94\x92\x2e\xb4\ -\x41\xb7\xd9\x9f\x6b\x22\x18\x5b\xd4\xcf\x4d\xd7\x71\x25\x5a\x51\ -\xaa\xc3\xe0\xc7\x49\x75\x1a\x3a\x32\xf2\x20\x61\xeb\x10\x69\xfa\ -\x8d\xa6\xc2\x22\x84\x94\xd5\x6e\xb6\x79\x47\xf9\xab\x61\x2a\x6b\ -\x37\x39\xda\x77\x3c\xa8\x18\x48\xdd\x0a\x67\x3a\xcc\xfb\xe0\xf8\ -\xa7\x94\xe2\x4d\x87\x79\xe0\xde\x13\x78\xf0\xbe\x3b\x30\xd4\xdf\ -\x0b\xcb\x52\xfb\x5b\xdc\x14\x58\x5e\xaf\xe0\x8d\x8b\x4b\xfc\x74\ -\x18\xc9\xf7\x44\xf5\xfb\xe4\x21\xba\xff\x0a\x08\x80\x05\xa2\xb6\ -\x8a\x58\xa8\xf8\x71\x94\x7f\x81\xfd\x43\xb1\x69\xea\x0f\x41\x60\ -\x22\x9d\x42\xa1\x1a\x7a\x10\xc0\x4c\x53\x17\x95\x55\x26\x5d\x41\ -\x12\x8b\x6f\x62\x6a\x5d\x2a\xca\x82\x53\x04\x87\x77\x44\x38\x65\ -\x3f\x86\x8a\xf7\xd1\x43\xbb\xe0\x8b\x62\x31\x28\xbe\xb3\x54\xc0\ -\x63\x14\x48\x69\x97\x6e\x89\xd1\xb4\xe3\xbf\x36\x07\x28\x4e\x41\ -\x6b\xcd\xed\x9e\xb6\xdf\x8e\x06\x15\x33\x1d\xe6\x61\x38\x3d\x7b\ -\x77\x9b\xf4\x29\xa5\x18\xec\xef\xc5\xe3\x0f\xdf\x8d\xbb\x6f\x3f\ -\x86\x5e\x6f\x3a\x8c\xf8\x62\x32\x69\x66\x97\x37\xf1\xe6\xc5\x65\ -\x6c\x14\xab\x8e\xcf\x89\xc2\xf7\x4b\x01\x62\x53\x2e\xb0\xae\x80\ -\x70\x60\xa9\xf2\xf0\xeb\x40\x34\xf6\x8d\x4b\x38\x76\x98\x83\xae\ -\xb5\xe4\x8d\xcb\x92\x7d\x6d\x7c\xb3\xcd\xec\x1e\x87\x40\x55\xa1\ -\xf9\x68\xc8\x5b\xca\x43\x7f\x68\x18\x0f\xaa\x19\x52\x10\xd5\x69\ -\xad\xd4\x23\x1a\xf4\xb8\xe5\x79\xbe\xa8\x50\xaf\xbb\x73\x01\xe5\ -\x15\x19\x02\x80\x85\x82\x49\x53\xc7\x38\x70\x52\x56\x4b\x88\xd0\ -\x18\x90\xe6\x7a\xed\x22\xd9\xb1\xa0\x72\x21\x95\x06\xf0\x13\x00\ -\x7e\x0f\xc0\x0d\x26\x7d\x4a\x29\xf6\x8c\x8f\xe0\xe9\xc7\x4f\xe3\ -\xd8\xd1\x1b\xd0\x95\xcb\x68\xba\xd2\x03\x27\xe3\xe5\xd9\x0d\xbc\ -\x75\x65\x19\x95\x6a\x83\xef\x89\x63\x96\x4f\x69\x27\xb0\x02\x67\ -\x37\x09\xac\x22\x16\x3a\x6c\x26\x4c\x3b\x50\xdc\x3e\x8b\x1b\x36\ -\x25\x5a\x3a\xc2\xd4\x99\xa0\x09\x6a\xa8\x2b\xc4\x30\xa2\x8d\xe4\ -\xd6\x53\x8f\xe1\x7c\xa7\x91\x02\x49\xd4\x94\x5a\x3d\x1d\xc4\x44\ -\x8b\x86\xb7\xc6\x98\xd4\x44\x7d\x2c\x8b\x00\xb0\xd0\xa6\x67\x18\ -\x9c\x14\x47\xc6\x3c\xcc\x80\xa2\x8c\x1a\x05\xdd\xb5\x80\xf2\x64\ -\xc7\x81\x8a\x69\xea\x75\x03\xf8\xeb\x00\xfe\x01\x80\xd1\xb0\x74\ -\x37\x5e\xbf\x0f\x4f\x3f\x7e\x1f\x6e\xb8\x6e\x1f\xb2\x69\xb7\x67\ -\x0f\x72\x33\x86\x10\xa0\x5a\xb7\x71\x6e\x6a\x15\xe7\xa7\xd7\x50\ -\x77\xa7\xc3\x28\xa7\xbe\x30\xce\x76\xb5\xef\x29\x1e\xb0\x94\x4e\ -\x73\xf7\x8d\xe1\x46\xbb\x0b\xcd\x30\x65\x0f\x1b\xd3\x7d\x4e\x98\ -\xf4\xe2\xba\xc1\x12\x84\xa8\xc6\x15\x25\x54\x5e\x6c\x4e\x8a\xc2\ -\x7b\xe4\x20\xbc\xf9\x08\x05\x97\x51\x87\xaa\x95\xb8\x57\x53\x01\ -\x39\xf1\x25\x96\x0a\xd3\xac\x9e\x20\x85\x6a\x3a\xfb\xd8\xa6\xa3\ -\x34\x62\x3c\xac\x03\x20\x22\x9c\x54\xd5\x57\x9d\x57\x18\xa0\x4c\ -\xf9\xef\x46\xd9\x51\xa0\x62\x20\x35\x02\x07\x50\x9f\x82\x03\x2c\ -\xa5\x50\x00\x29\x8b\xe0\xb6\x5b\x0e\xe3\xc9\x47\xef\xc5\xde\x89\ -\x51\x77\xa1\xbb\xe0\xf5\x64\x5f\x54\x6f\x4b\xf5\x33\x97\x97\x71\ -\x75\x61\xc3\x5f\x43\xca\x7b\x29\x95\xc3\x06\x84\xc5\xe9\xd4\xbe\ -\xa7\x70\x60\x01\xbc\x65\xc4\xef\xa2\x20\x4d\x6c\x61\x0a\x0b\x9a\ -\x78\xbc\x29\xe5\x7c\x91\xfc\x54\xbe\x8f\x9d\x5f\x1a\x98\x12\xca\ -\xe8\xca\x65\x99\x96\x75\xe1\x20\xa4\x18\x8d\x20\xa5\x88\xe3\xfa\ -\xd0\x30\x45\x15\xcf\xf6\xe8\x99\x06\x83\xba\x43\xcc\x15\x51\x8a\ -\x26\xa1\x60\x5a\x49\xcd\x41\x71\xa3\x50\xca\x94\xcf\xf8\xbf\xe4\ -\xa1\x0d\x68\x09\x4e\x9c\x56\x84\xe6\x9d\xe4\x5f\xd3\xa5\x61\x03\ -\x77\x8f\x8b\x6a\x67\x81\xca\x95\xeb\xe1\x34\xf5\x3e\x66\xaa\x1f\ -\x3b\x1d\xe6\x91\x07\xef\xc6\xc8\x60\x5f\xd0\xb3\xc7\xbd\xb5\xc1\ -\xdd\x58\x2d\x54\xf1\xc6\xc5\x45\xcc\xaf\x38\xbb\xc3\x38\x2f\xae\ -\xdc\xa4\x52\x0e\xcc\x0c\x69\x0e\x3a\x9a\x32\xb0\x48\x90\x91\x50\ -\x7f\xf0\x8e\x7b\x86\x44\xbe\x33\x9c\x30\x10\x65\xcf\x24\xf0\x80\ -\x0b\x67\x48\xd4\x0f\x9f\xe0\xd3\x62\xc3\xe4\xa4\x6c\x3d\xe4\xeb\ -\x20\x65\xaa\xbc\x39\x9a\x70\xd3\x8b\xc1\x75\xa9\xc9\x19\x85\xf9\ -\x60\xc4\xd7\x92\x2a\xf2\x13\x90\x23\x81\x45\xed\x3c\x67\x20\x26\ -\xea\x09\xb0\x62\x2d\xab\x30\x30\x01\xd1\xe0\x64\x3a\x77\x1d\x9c\ -\xf4\x79\xea\xcb\xd8\xe9\xb2\x23\x40\xc5\x58\x52\x77\xc1\x71\x9a\ -\x3f\x02\xc3\x63\x4d\x29\x45\x5f\x4f\x17\x1e\x7e\xe0\x4e\xdc\x7b\ -\xd7\x6d\xe8\xef\xed\xe2\x01\x02\x48\x34\x99\x5f\x2d\xe1\xf5\x0b\ -\x4b\x58\x2b\x54\x34\xd6\x11\xd7\x57\xe6\x96\xa3\x6e\x0e\x02\x31\ -\x80\x25\x52\xc6\x83\x8c\xae\xa9\xc7\xfa\xb1\xc0\x20\x83\xb1\x84\ -\xd8\x5d\x96\x59\x73\x4a\xe0\x1d\x53\xac\xdc\x25\x27\x01\xce\x7b\ -\xc7\x14\xac\x53\x0d\x8e\xe5\x5f\x68\xa1\xcf\x52\x67\xed\x98\xde\ -\x0b\xad\x1f\x48\xa3\xa8\xf4\x1d\x31\xf6\x12\x95\x82\xc5\x51\x52\ -\x72\x9e\x54\x15\xcc\x9b\x2d\xb2\xaf\x4b\x70\xaa\xfb\x46\x58\x13\ -\x70\x62\x14\x4c\x96\x50\x1c\x40\x51\xea\x7d\xd9\xdd\x8d\xc0\x6d\ -\x07\x15\x33\x1d\xe6\x19\x38\xc3\x0f\x8e\x9b\xf4\x29\xa5\x18\x1b\ -\x19\xc0\x93\x8f\xdc\x8b\xdb\x6e\xbd\x09\xdd\x8a\xe9\x30\x1c\x17\ -\x6c\xe0\xea\xc2\x06\xde\xbc\xb4\xe4\x4e\x87\x21\xdc\x8b\xc7\xfb\ -\x9e\x02\xeb\x0a\xd0\x37\x07\x9d\x7a\x68\xfc\x57\x6e\x42\xde\x0f\ -\xa4\x68\xda\xb1\x4e\x6e\xb6\x55\xc5\x36\xcd\x3c\x87\x3b\x00\x71\ -\x78\x02\xe7\xef\xe6\xac\x21\xf8\x95\x08\x8a\x67\x9b\x4a\x01\x61\ -\xa9\xd8\xd4\xd3\x18\x64\xec\x35\xe1\x4e\x4b\x21\xfc\x8f\x44\x88\ -\xb2\x78\x3d\x22\xe9\xa9\x87\x0c\x04\x07\xea\x1e\x3f\xea\x11\x9e\ -\x49\x15\x64\x45\xfc\xa6\xaf\xe4\x6c\xa7\x22\xaf\x44\x42\xaa\x88\ -\xc9\xd4\x4f\x73\x5e\xad\xc2\xc9\x49\x16\xc5\x82\xa2\x1e\xa7\x76\ -\xb5\x6c\x2b\xa8\x5c\x48\x65\x01\xfc\x0c\x80\xdf\x86\x33\xa0\x53\ -\x2b\x94\x52\x1c\xda\x3f\x81\xa7\x1f\xbf\x0f\x37\xde\x70\x10\xb9\ -\x4c\xca\xb8\x0c\x52\xbd\x61\xe3\xfc\xf4\x1a\xde\xbe\xba\x82\x5a\ -\xdd\x66\x9a\x30\xf2\xae\x30\xa2\x75\xe5\x84\x85\xac\x84\xa0\xf0\ -\x5f\x01\x81\x2f\xc5\xb7\x6e\x24\xa8\xf0\x26\x96\x07\x3d\xd1\x22\ -\x0a\x44\x26\x08\x07\x3e\xce\x8a\x12\x56\x66\x20\xbc\xe5\xc4\xf2\ -\x91\xaf\xb5\x93\x40\x67\x55\x81\xe9\x14\x30\xde\x23\xc5\x41\x5c\ -\x57\x88\xa1\xd1\xa3\x1d\x45\x10\x58\x9d\x72\x32\x39\x8c\xf7\x3d\ -\x51\x21\x8c\x7d\xd1\xd9\xe6\x60\x10\xce\xa3\x90\x32\xf0\x64\xf7\ -\x61\xd4\xee\x94\x4c\x8d\x67\x18\xc9\xf7\x64\x4c\xc6\x58\x7b\x06\ -\x04\x86\xc4\xec\x2c\xd9\x36\x50\xb9\x90\xea\x07\xf0\xab\x00\xfe\ -\x0e\x9c\xa9\x31\x5a\x21\x84\xe0\x96\x23\x87\xf0\xd4\xa3\xa7\xb1\ -\x7f\x5f\x30\x1d\x46\x39\x67\x8f\x00\xe5\x6a\x03\x6f\x5d\x5a\xc6\ -\x45\x77\x3a\x0c\x6f\x1d\x31\x7e\x18\x06\x40\xb2\x65\xa4\x6e\x0e\ -\x7a\xfa\xaa\xe6\x20\xd7\xb3\xe7\xc3\x47\xb4\x86\xc4\x5e\x3d\x91\ -\x4e\xcc\xa4\x62\xf0\xf6\x18\x85\x02\x16\xa2\x73\x9d\xad\x82\x96\ -\x3c\x4c\x75\x04\x47\xb9\x09\x2c\xc1\x42\x35\x52\xe1\xaa\x16\xa6\ -\x21\x9f\xc0\xfa\xd2\xbf\x2c\x8a\x1e\x3f\x6a\xd2\x55\x37\x0b\x7d\ -\x63\x8a\x05\x11\xa7\x13\xe1\x75\x0d\xfc\xe5\x90\x66\x3e\x07\x05\ -\x48\xb9\xb5\x03\x4e\x4e\xf2\x10\xeb\x89\x39\x90\x3a\x0b\xa2\x58\ -\x75\x3b\x5c\xb6\x05\x54\x2e\xa4\xf6\x00\xf8\xa7\x00\xfe\x12\x9c\ -\x49\xc6\x4a\xa1\x94\x22\x93\x49\xe3\xae\x13\x47\xf0\xc8\x43\xa7\ -\x30\x36\x32\x80\x94\xb0\x3b\x0c\x0b\x0f\x42\x80\x8d\x62\x15\xaf\ -\x5f\x58\xc2\xcc\xe2\xa6\x1b\x01\x49\x9f\x08\x8e\xa5\x38\xcd\x41\ -\xb1\x4c\xd6\x96\x92\xc1\xc9\xbf\x6c\xaa\xe6\x1f\x6b\x7d\x05\x4c\ -\x0b\xc6\x43\x11\xa9\x82\xbc\xcf\x8a\x7d\xeb\x45\x90\x51\x76\xe8\ -\x02\x5b\xac\x0b\x4c\xa9\x3e\x80\xba\xd7\x92\x37\xc3\xe4\x73\x61\ -\x2f\x83\xfa\x90\x93\x60\x38\x05\xc3\x8c\xd0\x37\x87\x6f\xba\xc9\ -\x65\x11\x09\x3e\xfc\x21\xef\xf0\xf6\x83\x55\x90\x11\xfc\x51\x1c\ -\x66\xa8\x98\xaf\xe0\xa7\x62\x14\x1c\x3e\xd2\xb6\xc2\x49\x3e\x2f\ -\xb9\xa9\x6b\xba\x01\x94\x7f\xf4\x77\x85\x6c\x29\xa8\x18\xa7\xf9\ -\x51\x38\xfe\xa8\xf7\x23\x64\xa1\xbb\xee\xae\x1c\x1e\x38\x75\x02\ -\xf7\xdd\x7b\x3b\x06\xfa\x7a\x60\xf9\x93\x67\x64\x6b\x07\x14\x58\ -\x5c\x2f\xe3\xb5\xf3\x0b\x58\x5a\x2f\x07\xbd\xf9\x8a\x89\xc5\xf2\ -\x66\x9d\xd1\x9b\x83\x6c\x99\x3e\x3f\xd4\x04\xe2\xac\x37\x55\x8b\ -\x4e\x32\x63\x14\xbe\x28\xe5\xd0\x05\xc8\x73\xf7\xb4\x9d\x00\xfe\ -\x39\x28\x7a\x1f\x15\x55\x51\x54\x52\xb6\x20\xa0\x81\x55\x98\x68\ -\x9b\x6e\x2a\x09\x1f\xa9\xae\x07\x9c\xec\x3b\xf2\x61\xc6\x9a\xd7\ -\xec\xc9\xb3\x56\x0f\x6b\x25\xb1\xd6\x94\xd8\x14\x64\x8b\x61\x7c\ -\x5e\xfc\x70\x05\xd1\xf9\xa5\x3f\xa5\xc8\x7b\x0a\xea\x00\x25\x14\ -\xe3\xad\x49\x45\x95\x17\x72\xf7\x90\x6a\xcb\x40\xc5\x40\xea\x21\ -\x38\x3d\x7b\xa7\x4c\xfa\x94\x52\x0c\x0d\xf4\xe2\xf1\x87\xee\xc6\ -\xc9\x13\xb7\xa0\xa7\x2b\x07\x4b\xf3\x13\xee\xc1\x63\x7a\xb1\x80\ -\xd7\x2f\x2c\x62\xa3\x54\xe3\x74\x4d\x13\x8b\xa3\x34\x07\x3d\xab\ -\xc5\x5f\xa3\x08\x80\x4d\xf9\x87\x8f\xba\x75\x66\x97\xd5\x60\x9b\ -\x82\xc4\xcd\x90\x10\x67\xec\x57\xca\x22\xee\x20\x50\x0f\x43\x84\ -\xd1\x87\x5f\x49\xb5\x2f\xca\xed\xa5\xe3\x9c\xf6\xfa\x26\x98\xd6\ -\xaa\xf2\x5f\x23\xf5\x03\xcb\x5d\x5d\xa2\xce\x5c\xfd\xe3\xac\xeb\ -\xf6\x83\x16\x38\xea\xb2\xc5\x73\x92\x5f\x76\xe6\x72\x48\xf4\xe3\ -\x21\x26\x13\x42\xb6\x4a\x54\x40\x11\xfd\x51\x41\x18\xaf\x23\x94\ -\x4f\x83\x4f\xd6\x07\x16\x17\x4e\xea\x7a\xea\xad\x27\xbd\xe5\xb6\ -\x9b\x1a\x7a\xb2\x6c\x09\xa8\x5c\x48\xa5\xe0\x2c\x15\xfc\x2f\x00\ -\xdc\x68\xd2\xa7\x94\x62\xef\xe4\x08\x9e\x7a\xf4\x34\x6e\xbe\xe9\ -\x3a\xe4\xdc\xe9\x30\xbc\x85\x13\xe8\xdb\xb6\x8d\x8b\xb3\xeb\x38\ -\x73\x29\x98\x0e\xa3\xf2\x5d\x99\x26\x16\xab\x9a\x83\xb6\x4d\x61\ -\x53\x8a\x86\xed\xfc\xd9\x0d\x1b\x75\x9b\xa2\xd1\xb0\x51\x6f\x50\ -\xd4\x6d\xdb\x85\x53\xf0\x8c\x52\xcf\x39\xce\x64\xee\x35\xc5\x08\ -\x3c\x78\x11\x58\x84\xc0\xb2\x9c\xbf\x94\x45\x90\x4e\xa5\x90\x49\ -\x5b\xc8\xa4\x09\xd2\x96\x85\x54\xca\x42\x3a\x6d\x39\x03\x58\x09\ -\x11\x9a\x73\x94\xf7\x85\x05\x06\x9c\xd0\x5b\x68\xf8\xc5\x64\xd2\ -\xf3\x4d\x5d\xdd\x4d\xd1\x3b\xb0\xb4\x76\x9a\xca\x84\x54\x99\x05\ -\xba\xea\x41\x7c\xc7\x64\x00\xf2\x3e\x72\xb9\xe9\x17\x30\x84\xc9\ -\x51\xd9\x71\x17\x60\x8a\x6a\xca\xa0\x8c\x6e\x90\xce\xbb\x23\x72\ -\x0a\xbd\xc5\x15\x1f\x4e\x7c\x29\xaa\x38\x21\x8a\x83\xda\xee\x77\ -\x52\x75\x1c\x54\x2e\xa4\xba\xe0\x6c\xba\xf0\x8f\xe0\x6c\xc2\x60\ -\x94\x9b\xae\xdf\x8f\xa7\x1e\x3b\x8d\x83\x07\xf7\xf8\xd3\x61\x3c\ -\x61\x5f\x2a\x42\x80\x4a\xdd\xc6\xdb\x57\x56\xf0\xee\xd4\xaa\x33\ -\x1d\x46\xbb\x85\x95\x97\x3e\xb0\xae\xbc\xf7\xc6\x01\x0d\x45\xbd\ -\x61\xfb\x7f\xb5\xba\x8d\x6a\xdd\xf9\xee\x01\xcb\x83\x12\x27\x8c\ -\x9f\x27\xb0\x9e\x28\xd3\xa2\x23\x3e\x5d\x89\xaf\x44\x85\x7a\x11\ -\x10\x52\xf3\x75\x2c\xcb\xf2\x01\x96\x49\x5b\xc8\x66\x52\xc8\x65\ -\x52\xc8\xa6\x53\xc8\xa6\x2d\x64\xd2\x4e\x3c\x6f\x61\x32\x6f\x83\ -\xc2\x77\x2e\xfb\xc7\x08\xeb\xd7\x57\x28\xea\x2d\x34\x28\x92\x70\ -\x97\x44\x17\x21\x06\x08\xc0\x30\xfa\xc9\x25\x25\x73\x62\xaa\xb2\ -\x72\xbc\x74\x54\x6e\x52\x52\xc9\x4a\x0a\x74\xb9\x12\xc3\x06\x42\ -\x89\xf5\x50\xf8\xb0\xa2\x0e\xcc\x74\xbe\xc6\xb3\x9e\xa8\x7c\x62\ -\x6a\x3d\xec\x2e\xe9\x28\xa8\x5c\x48\x0d\x03\xf8\xbf\x01\xfc\x0a\ -\x9c\xed\xac\x94\x42\x29\x90\x4e\x59\xb8\xed\xd8\x61\x3c\xfe\xf0\ -\x29\x8c\x8f\x0f\x23\x9d\xb2\xf4\x99\x13\x60\xb3\x5c\xc7\x1b\x17\ -\x96\x70\x65\x61\x3d\x18\x2a\x14\xba\x85\x15\x1c\x2b\xa9\xe1\x80\ -\xa8\x5a\x6b\xa0\x5a\x6f\xa0\x56\x77\x80\xd4\xb0\x69\xa4\xb5\x86\ -\x00\xc6\x52\xe2\x80\x83\xa0\x6c\xb6\x1e\x5c\x13\xd0\xd7\x16\x5c\ -\x54\x2e\x3c\x29\x45\xa3\x41\xd1\x68\x00\xd5\x7a\x03\x9b\xe5\xba\ -\x0b\xb0\x00\x5e\x5d\xb9\x0c\xba\xb2\x29\xe4\xb3\x69\x64\x5d\x70\ -\x11\x61\x20\x29\xdf\x6c\x13\xbb\xe4\x64\x5f\x85\xce\xa0\xd2\x6f\ -\xdd\x25\xdd\x92\x58\xa2\x5b\xce\xca\xf8\x1a\xab\x78\x22\x24\x36\ -\x70\x83\xb9\x2a\xa2\x55\xe4\x1c\x50\x71\x19\x18\x22\x36\xd9\x98\ -\xa6\x20\x55\xe8\xb8\xbe\x2d\x1e\x30\xaa\x6e\x48\xa1\x7e\xed\x84\ -\x93\xe9\x9a\x87\x6a\xec\x4c\xe9\x08\xa8\x18\x7f\xd4\x21\x38\x1b\ -\x81\x7e\x02\xce\xc6\xa0\x4a\xa1\x94\x22\x9f\xcb\xe2\xde\xbb\x8e\ -\xe1\x81\xd3\x77\x62\x70\x20\x98\x0e\xa3\x7a\x79\x08\x80\x95\x8d\ -\x0a\x5e\x3b\xef\x4c\x87\x61\xfd\x14\x7e\x0f\x19\x00\x6f\x0a\x8a\ -\x6d\xd3\xc0\x4a\xaa\x35\x50\xa9\x35\x50\x6f\xd8\x68\xd8\x76\xd3\ -\xb3\x08\x3a\x05\x29\xd6\x15\x24\x0e\xc6\x74\xac\x3e\xa0\xde\x68\ -\xa0\x54\x6d\x80\xc0\x81\x7b\x36\x93\x42\x57\x2e\x8d\x7c\x36\x8d\ -\x7c\x26\x85\x4c\xc6\x72\x7c\x60\xba\xa6\xa1\x1f\x26\x0f\x8c\x50\ -\x9b\x43\xe1\x08\x32\x6a\xa8\x08\x47\xf9\xf1\xec\x86\x06\x0a\x73\ -\x01\x94\x0d\x3e\xb9\xba\xba\xb7\x3a\xca\x02\x79\xda\xb3\x0b\xc0\ -\x46\x29\x41\xf8\x83\xa3\x5a\x1e\xc6\x2b\xce\x85\x5d\x44\x38\xe9\ -\x6a\xa8\x03\x94\xc6\x55\x26\xe7\xbd\x7b\x7c\xe9\xed\x07\x15\x03\ -\xa9\x3b\x00\xfc\x1b\x00\x8f\x9b\x2e\x09\xa5\x14\xfd\xbd\xdd\x78\ -\xf8\xfe\x3b\x70\xf7\x1d\xc7\xd1\xd3\x93\x77\x9b\x34\x14\xba\x65\ -\x80\x67\x97\x37\xf1\xda\xf9\x45\x67\x77\x18\xcf\xe1\xcc\xbc\x8c\ -\x9e\x45\x52\xad\x3b\x50\xaa\x54\x3d\x30\xb5\xe7\xf7\x84\x08\x16\ -\x5b\xcb\x90\x12\xf3\x63\x21\x45\x18\x90\x71\xc7\x8e\xd4\x6d\x8a\ -\x7a\xa5\x8e\x62\xa5\x0e\x8b\xb8\xe0\x4a\x07\xe0\xea\xca\x39\xbe\ -\x2f\x2b\x68\xa0\x82\x2f\x4c\xbc\x1f\x7c\x9d\xc4\x38\x4d\x94\xc6\ -\xa9\x2e\x24\x34\x5d\x53\x21\x1f\xad\x12\x65\xb5\xf9\x14\x54\xcc\ -\x4d\x1a\xef\x44\x24\xa7\x3b\xdb\xbb\x27\x32\x4b\xb9\x2a\x82\xe4\ -\xb0\x97\x4d\x38\x7e\x9a\x8d\x94\x01\x53\x1f\x85\x2b\xa1\x49\x38\ -\xa9\x2e\x33\x75\xeb\x17\xc3\xe0\xda\xb1\xd2\x56\x50\x31\x0b\xdd\ -\x3d\x0d\x67\xf8\xc1\x09\x93\x3e\xa5\x14\xe3\x23\x83\x78\xe2\xd1\ -\x53\x38\x76\xf4\x46\xe4\x73\x19\xb5\xdf\xc5\xed\xad\xa3\x94\xe2\ -\xf2\xdc\x3a\xde\xb8\xe0\x4c\x87\xb1\x98\x5f\xff\x86\x0d\xd4\xea\ -\x4e\x33\xae\x5c\x75\x9a\x72\xad\x58\x4c\x3a\x21\x2a\x08\xb5\x0b\ -\x52\xac\xbe\x7b\xac\xb4\xb6\xdc\x74\x2a\x4b\xa8\xde\xa0\xa8\x37\ -\x5c\x70\x59\x40\x26\xe5\x40\xab\x3b\x9f\x41\x77\x2e\xed\xfb\xb7\ -\xc4\xab\xac\x83\x93\x74\xfe\x21\xf1\xcd\xfe\x50\x87\xdd\x26\xfd\ -\x7d\x54\x5b\x37\xe2\x02\x77\x7c\x41\x8a\x70\x25\xdc\xe4\x35\xd4\ -\xfd\xa6\x1f\x03\x4d\xb1\xb9\xc8\x9f\x4f\x90\x07\xc7\x33\x65\xef\ -\x61\x7b\xe0\xc4\x1d\x79\xa6\xaa\xb6\x3b\x70\x77\xd0\xab\x6d\xa0\ -\x72\x21\x95\x01\xf0\x49\x00\xbf\x03\xe0\x40\x58\x9a\xeb\x0e\x4c\ -\xe2\xa9\x47\xef\xc5\xf5\xd7\x1d\x40\xc6\x9d\x0e\xa3\xfa\x65\x26\ -\x70\xb6\x54\x7f\xe7\xea\x0a\x37\x1d\xa6\x6e\x53\xbf\x29\xe7\x35\ -\xe7\xec\x36\x59\x4d\x2a\xe1\x81\xe4\xfc\x43\x14\x0a\x61\x90\x22\ -\x8c\xbe\xce\x8a\x0a\x3e\x0c\x69\x82\x68\xee\x8a\xb1\xe3\x42\xab\ -\x75\x1b\xd5\x7a\x15\xeb\xc5\x2a\x32\x69\x0b\xf9\x6c\x1a\x3d\xf9\ -\x34\xba\x73\x69\x64\xd3\x29\x1e\x5a\xcc\xc8\x6d\xe5\x54\x19\xa2\ -\x7a\xbd\xb5\x7d\x7e\x62\x52\x43\x7c\x04\x8b\x8b\x18\x5e\x58\x89\ -\x55\x41\x67\x86\x1e\x02\x9a\xd5\x0e\x04\x63\x88\x28\xf5\x84\x02\ -\xa9\x08\x1c\x39\x9e\xb2\x3f\xba\x6e\xfd\x3c\x58\xd1\x50\x00\xc5\ -\x01\x94\xc1\x99\x15\xf9\x6a\xef\x3c\x69\x0b\xa8\x5c\x48\xf5\x01\ -\xf8\x9b\x00\xfe\x1e\x80\x41\x9d\x2e\x05\x60\x11\x82\x63\x47\x0e\ -\xe1\x89\x47\xee\xc5\xe4\xe4\x58\xb0\x3b\x0c\xf3\x73\xec\x7d\x25\ -\x04\x28\x55\x6a\x78\xf3\xe2\x32\x2e\xce\xac\xa1\xe6\x3a\xc1\x2b\ -\xd5\xba\x0f\xa7\xad\x58\xad\x42\x9c\x1a\x23\x41\xa8\x8d\x90\x62\ -\xc1\xc3\x8f\xab\x12\x36\x0e\x15\x9c\xe4\xe2\x88\x78\x91\x35\xb5\ -\xba\x8d\x5a\xbd\x8a\x42\xa9\x86\x74\xca\x42\x3e\x9b\x42\x8f\x6b\ -\x69\x65\x33\xbc\xa5\xa5\x5c\x21\x4b\x70\x5b\x11\x29\xd0\x78\x05\ -\x63\xc6\xf1\x84\xa1\x3a\x7d\xc5\xd8\x24\xaa\xa0\x94\xae\x81\x18\ -\xb8\x9b\x14\xe7\xc1\x36\xcd\x18\xf6\x68\x8d\x35\x36\x4c\x60\x17\ -\x91\x4b\x0e\x8e\x88\xd7\xf3\xac\xba\xd0\xdc\xa9\xea\xae\x10\x44\ -\x40\x51\x26\x0d\xd5\xe9\x53\xb2\x6b\xa8\xd5\x32\xa8\x5c\x48\x4d\ -\x00\xf8\x27\x00\xfe\x32\x9c\xa1\x08\x4a\xa1\x94\x22\x9b\x49\xe3\ -\xae\x93\x37\xe3\xe1\x07\xee\xc6\xd0\xd0\x80\xbc\x3b\x0c\xdb\x76\ -\x20\xc0\x5a\xa1\x8a\x97\xcf\xcd\xe3\xd2\xec\x3a\xca\x55\xa7\x69\ -\xb7\x55\x70\xf2\x84\x5b\x76\x65\xab\x20\x25\x34\xf5\x38\x0b\xc7\ -\xe8\xb7\x52\x00\xce\xaf\x56\x10\x58\x6f\xd8\x28\x94\x6c\x6c\x96\ -\x05\x68\xe5\x33\x4e\x2f\xa2\xc6\xa2\xd2\xdd\xaa\x30\x69\x66\x29\ -\x5c\xdd\x48\x04\xc5\xcd\xd1\x38\xca\x85\x84\x8c\x7f\x4b\xf6\x3f\ -\x05\x24\xf2\xb8\xa5\x36\x6a\xf8\x79\xa3\x54\xf2\x5c\xcb\xa4\x60\ -\xf9\xc3\x2f\x0b\x43\x85\x72\x9a\x68\xda\x09\x81\xba\x16\x1e\x35\ -\x6b\xec\x78\x69\x1a\x54\x8c\xd3\xfc\x08\x9c\xdd\x8a\x3f\x88\x90\ -\xe9\x30\x3d\xdd\x79\x3c\x70\xef\x09\x9c\xba\xeb\x04\xfa\x7a\xbb\ -\xfd\x5f\x70\xe9\x81\x77\xaf\xe5\xd4\x62\x01\x3f\x78\x63\x06\xd3\ -\x4b\x9b\x1d\xf1\x37\x45\x17\x95\x75\xe3\x7e\xc4\x82\x94\xa1\x67\ -\x4f\xab\x13\xd5\x8a\xd2\x00\x4a\x01\x1c\x3e\x0b\x82\x7a\x83\xa2\ -\x50\xaa\x63\xb3\x5c\x47\x3a\x55\x41\x57\xce\x6b\x1e\x66\x90\x4e\ -\x59\x81\x2f\x90\xf2\x3e\xb6\xf6\x08\x6d\x3a\x3a\x00\x80\xe9\x35\ -\x64\x9a\x56\x9c\x95\x43\x64\x67\x36\x21\x01\x78\x7c\x27\xbb\x93\ -\xab\xb4\x24\x8c\x7f\xc8\x98\x5a\x6e\x1a\x31\x9e\x70\x43\x17\xc4\ -\x3b\xa1\xf3\x5f\xe9\x2e\x41\x38\x9c\x38\x76\xfa\xf0\x54\x34\x09\ -\xdb\x7a\x1f\x3b\x2b\x4d\x81\x8a\x81\xd4\xfd\x70\xa6\xc3\xdc\x67\ -\xd2\xa7\x94\x62\x78\xb0\x0f\x8f\x3f\x74\x37\x6e\xbb\xf5\x66\xe4\ -\xf3\x59\x66\xce\x9e\xab\xc3\xe8\xd6\xea\x36\xde\x9d\x5a\xc5\x0f\ -\xce\xcc\xb8\x0b\xdd\x6d\xdf\x15\x35\xf7\xf0\xf1\x56\x4e\x3c\x48\ -\x45\x70\x9a\x9b\x20\x45\xd4\x75\xe2\xab\x43\x14\x61\xe2\xd9\x70\ -\x87\xa8\x37\x6c\x6c\x14\x9d\xe6\x61\xc6\x83\x56\x57\x06\xdd\xd9\ -\x94\x33\xae\x8d\x50\xc5\xb3\xde\xca\xfd\x51\xf9\xb8\xa8\x3a\x5a\ -\x7a\xd7\xa8\x32\x37\xb1\x67\x8f\x57\xd7\x0d\x5d\x90\x72\x50\x0b\ -\xeb\xb7\xf2\xd3\x09\xc0\x51\x4c\xaf\x0a\xaa\xc4\xc0\x90\xfa\xf6\ -\x99\x3a\x1f\xd5\x79\x1a\x5c\x50\xca\xa5\x6f\x84\xd3\xd6\x5f\xb9\ -\x9d\x2d\xb1\x41\xc5\x2c\x74\xf7\x61\x38\xd3\x61\x6e\x36\xe9\x53\ -\x4a\xb1\x6f\xcf\x28\x9e\x7a\xf4\x5e\x1c\xbe\xe1\x10\xb2\x99\xb4\ -\xf3\x0b\x4d\x01\x7f\xa2\x2f\x85\x33\x4d\xa5\x61\xa3\x52\x6b\xe0\ -\xcc\xa5\x65\xbc\x72\x6e\x1e\xa5\x4a\x63\x9b\x21\xe5\x7e\x32\xff\ -\x10\x01\x42\x81\x5e\x07\x21\x45\x78\x28\x9a\xac\x28\x25\xa0\x04\ -\x7d\xfe\x9c\x84\x73\x66\x02\x6b\x0d\x1b\xb5\x62\x15\x1b\xa5\x2a\ -\xb2\xe9\x14\xba\x5d\x4b\x2b\x9f\x4d\x23\x95\x22\x0c\xa4\x14\x3f\ -\xd3\x0a\x67\x76\xe4\xeb\xce\xf9\xa0\xe4\x66\x63\x50\xa2\xc1\x17\ -\xe5\xf6\xcc\x48\x0b\xe8\x79\xa9\x45\x07\x3c\x11\xc7\x35\x09\xff\ -\xba\xff\x50\x0d\xc7\x38\x18\x68\x74\x18\xa3\x2c\x68\x46\x08\x3e\ -\x36\x0a\x05\xaa\x62\xc1\x89\xa9\x37\x35\xb3\x79\x37\x49\x2c\x50\ -\x31\xd3\x61\x7e\x01\xc0\x3f\x86\xe3\x9b\xd2\x0a\x01\x70\xe4\xf0\ -\x01\x3c\xf1\xe8\xbd\xd8\xb7\x77\x12\x99\xb4\xbb\x86\x94\xfb\x8f\ -\x6d\x3b\xf3\xe5\x1a\x0d\xe7\x21\x29\x57\xea\x78\xf5\xfc\x02\xce\ -\x5c\x5a\x66\x16\xba\xdb\x1e\xd1\x3a\xcf\x01\x48\x51\xa1\x3e\xa9\ -\x70\x00\x71\xb0\x21\x44\x5d\x0f\xf0\xd0\x09\x6b\xe6\x49\x40\xe3\ -\xb3\x62\xee\x93\xbe\x39\x47\x00\x80\xc2\x19\xc1\x5f\x6b\xb8\xbd\ -\x87\x29\x74\xbb\x3d\x87\xf9\x6c\xda\x1d\x5c\x2a\x48\xac\xb7\xc2\ -\xd0\x0f\xa8\x00\x9e\xec\x3b\x12\x94\x38\x9f\x0c\x11\x03\xe0\x58\ -\x35\x62\x4e\x2a\x77\x37\xd1\xea\xb0\x68\xe4\x7d\x5a\x7c\x3c\xe5\ -\x76\xad\x11\x46\xb4\x8b\x5d\x8c\x5c\x42\xfd\x65\x34\xc1\x49\x17\ -\xbf\x9b\x21\x05\xc4\x00\x95\x0b\xa9\x21\x38\xbd\x7a\x7f\x03\x4e\ -\x2f\x9f\x52\x28\xa5\x48\xa7\x53\x38\x79\xeb\x8d\x78\xf4\xc1\xbb\ -\x31\x32\x32\xec\xee\x0e\xe3\xc4\x35\xdc\x91\xe2\xb6\x4d\xfd\xe9\ -\x2d\x1b\xc5\x2a\x5e\x38\x3b\x87\x0b\x33\x6b\x9a\x35\xba\xb7\x5a\ -\x78\x80\x70\x2f\x39\xe7\x97\x8a\xe3\x38\x6f\x1e\x52\x46\x2b\x2a\ -\xa4\x89\xa7\x02\x94\x7e\x83\x51\xf6\x40\xbe\x09\x36\x85\x3f\x1c\ -\x64\x7d\xb3\x8a\x6c\xda\x42\xb7\x3b\x4e\x2b\x97\x49\x39\x9d\x23\ -\x21\xad\x27\xdd\xb5\x0e\xc4\x64\x8e\x88\xe1\x0a\x38\x39\xee\x27\ -\x1e\x3b\x82\xc5\xc4\x0f\x77\x80\x34\xee\x2a\x68\x9d\x89\x4e\x76\ -\xbe\x59\xa7\xb4\x28\x29\x9f\x47\xa0\x25\x3b\xf7\x83\x2c\xe4\x61\ -\x0a\x26\xbf\x95\xa8\xa1\x83\x13\xa5\xe6\x5b\xb1\x5b\x00\x16\x09\ -\x54\x2e\xa4\x7a\x01\xfc\x2e\x80\x5f\x84\xb3\x7c\xb0\xfa\xc4\xdd\ -\xe9\x30\xa7\xef\xbe\x15\xf7\x9d\xba\x1d\xfd\xfd\xbd\xb0\x08\xf1\ -\xa7\xb1\x34\x6c\xca\x8d\x75\x22\x04\x58\x58\x2d\xe1\x87\x6f\xcd\ -\x62\x66\x69\x73\xbb\xaf\x87\x5b\x27\xd9\x2f\xa5\x77\x9e\x33\xe9\ -\xe4\xae\xba\xe8\x90\x32\xf8\xa3\xa2\x5a\x51\x91\x01\xa5\x83\x93\ -\xce\xf1\xae\x09\xb0\x29\x45\xb9\xd6\x40\xb9\xd6\xc0\x6a\x31\x68\ -\x1e\x76\xe7\xd2\x3c\xb4\x3c\xa1\x8a\xbc\x94\xbe\x13\xa1\x54\xe3\ -\x9a\xe2\x8a\x71\x48\x54\x61\xf7\xa8\xbb\xf0\x82\x23\x9d\xb3\xdc\ -\xbb\x2e\x8c\xc3\x5c\xde\x32\x4b\xdc\x8c\x94\x8d\x57\xcf\xfb\xd3\ -\x2d\x17\x43\x79\x7a\x69\xfd\x4e\xf2\x39\x09\xb1\x9c\x63\x4c\x83\ -\xa3\xdd\x42\x29\x44\x00\x15\xe3\x38\xff\x38\x9c\xd5\x38\x8d\x90\ -\xea\xef\xeb\xc6\xa3\xf7\xdf\x89\xdb\x4f\xde\x82\xae\x7c\x1e\x94\ -\x52\x54\x0d\xa3\xc4\x2f\xcf\x6d\xe0\x87\x6f\xcd\x62\x65\xa3\xb2\ -\x03\xac\x28\xe1\x5d\x55\xf9\xa5\xc0\x03\xc1\xfb\xae\x1a\x71\xae\ -\x6e\xfa\xb5\x07\x52\xa2\x2f\x2a\xb4\xf7\x4f\x07\x28\x95\x35\xa6\ -\x3c\x10\xf2\x17\x42\xa9\xed\x2c\xff\x5c\xa9\x36\xb0\xe6\x59\x5a\ -\x79\xc7\x09\x9f\xf5\xa0\x25\x0a\x8d\xf6\xae\x50\xbf\x8e\x54\x03\ -\x3b\xa1\xe9\xc7\x39\x83\x98\x70\x26\x11\x55\x76\xad\x89\xd3\x68\ -\x82\xf2\x54\x3d\x8c\xbe\x0f\x4c\x61\xfa\x70\xf9\x28\x5a\x78\x62\ -\xad\x44\x1f\x97\x0e\xac\xe1\xbb\xd8\x78\x1f\x41\x3d\xb4\xbd\x82\ -\x3b\xe0\x7d\x8b\x2a\x51\x9b\x7e\x3d\x70\x9c\xe7\xc6\xcd\x40\x27\ -\x46\x9d\xe9\x30\x47\x6e\xbc\x01\xa9\x74\x0a\xb5\x7a\x43\x3b\xbf\ -\xce\xb6\x29\xde\x99\x5a\xc5\x4b\xef\xcc\x63\xb3\x54\xdb\x11\x90\ -\x72\x84\x7d\xd1\xd5\x7e\x29\x25\xa4\xb8\x28\xd3\x38\x29\x03\xa4\ -\x0c\x4e\x73\x6d\xf3\x50\xa8\x9c\x68\x45\x89\x80\x52\x59\x4f\x7a\ -\x38\xa9\xa1\xa4\xd6\x0d\x0e\x39\x4b\xcb\x22\xc8\xba\x23\xe2\xf3\ -\xd9\x14\xf2\x99\x14\x52\xcc\x90\x07\xa2\x84\x95\xe0\x3c\x37\xf9\ -\x6b\xc4\x1a\x98\x1c\xe8\x9c\x2a\xe1\x1d\xd9\x3e\xf0\x58\x47\xbb\ -\xd4\x86\x94\xe1\xc2\x24\x13\xbf\xfb\x5a\x7e\x18\x03\x31\xe9\xc4\ -\xa9\x04\x43\xef\xdf\xb8\x70\xd2\x89\xc9\x3a\xdb\xe9\x12\x15\x54\ -\x29\x00\xf9\xb0\xab\x30\x3e\x36\x84\xfd\xfb\xf6\x80\x58\x16\xea\ -\x75\xdb\xa8\x5e\x6b\xd8\x98\x5e\x2c\x60\xb3\xbc\x73\x20\x25\xaf\ -\x88\x00\xb5\x5f\x4a\x70\x9e\x7b\x11\x92\x85\xd2\x2c\xa4\x08\x8f\ -\x08\xb3\x0f\x4b\x5d\x9f\x58\x80\x12\xe0\x64\x6a\xee\x79\x87\x54\ -\x0a\x56\x3b\x91\xa8\x4d\x51\xae\x3a\xf3\x2f\x2d\x42\x90\x4e\x11\ -\xe4\x32\x29\x1f\x5c\x19\x6f\x70\x29\x97\x5c\x2c\x50\x4d\x2a\x45\ -\x5f\x9f\xc4\x16\xc7\xe2\xe1\xf3\xa3\x3c\x9d\xf8\x2c\x24\xd2\x68\ -\x8e\x15\x3e\x2c\x2f\xbd\x34\xe5\xc6\x3f\x0c\xd2\x52\xee\x3b\x04\ -\x18\xb2\x65\xa8\x1c\xf8\x88\x0c\x27\x4f\x57\xb5\xa2\xc2\x0e\x79\ -\xed\x22\x49\x54\x50\x95\x00\x9c\x37\x29\x10\x42\x70\xe6\xed\xcb\ -\x20\xd6\x77\xf1\xd8\x43\xa7\x30\x34\x34\x64\x5c\xd7\x29\x97\x49\ -\xe1\xd4\x2d\x93\x48\xa7\x2c\xbc\x3b\xb5\x8a\x06\xa5\xdb\x7a\xe1\ -\x88\xe2\xed\x54\x37\xf9\x42\x86\x21\xf8\x7a\x2a\xf0\xc4\x83\x54\ -\x78\x53\x4f\x01\xb2\xa6\x00\xa5\x9e\xe0\x2c\x1f\x0a\xe5\x4b\xb4\ -\x52\xdf\x41\xb6\x01\x56\xab\x53\x54\xeb\x75\x14\xca\x75\xa4\x18\ -\x6b\xab\x8b\x69\x22\x72\x68\xf0\x7d\x40\x80\x48\xaa\xa0\x85\x27\ -\x38\xbc\xa5\x0a\x08\x0e\x77\xc5\xf6\xeb\x2c\xbb\x74\x4e\x76\x16\ -\x70\x4a\xbf\x93\x5c\x33\x88\x30\x14\xfd\x61\x3e\x84\x04\xef\x3e\ -\xd7\x6a\xf4\x06\xa2\x36\x61\x39\xf9\x6b\xa6\xcb\x67\x8a\xdd\x84\ -\xaa\x54\x98\x42\xe1\xea\x0b\xe8\xdd\x7f\xb7\x0d\xe0\x0a\x80\xc7\ -\x00\x8c\xea\x2f\x10\xc5\xfc\xc2\x0a\xe6\x17\x96\x30\x36\x32\x80\ -\xfe\xfe\x5e\x63\xde\xb9\x4c\x0a\x93\x23\x3d\x20\x84\x60\x79\xbd\ -\x84\x46\x83\x6e\x9b\x75\xc5\x5b\x53\x6c\xb3\xce\x0f\x54\xc4\x09\ -\x90\x22\x26\x48\x91\xe6\x21\xc5\x2c\xa6\x4e\x84\x7a\x84\x42\x4a\ -\x4c\x2b\x7c\x21\xcc\xf9\x78\x7f\xc1\x57\x37\xd6\xcb\x43\xd4\xe1\ -\x83\xa2\xfd\x05\xd5\x01\xa5\xce\x6a\x0f\xe5\xaa\xb3\x38\xe0\x66\ -\xb9\xe6\xfa\x33\xa9\x7f\xde\xc4\x22\xcc\xe6\x19\xce\x17\xee\x27\ -\x8d\xb3\x8e\x04\xcb\xc9\x0b\xf7\x96\x0b\xe2\xaf\x8c\xf3\x2f\x65\ -\x43\x64\x57\x3e\x21\x62\x2a\x11\x96\x94\x23\x31\xef\x54\x17\x86\ -\x2a\x28\x06\x30\x04\xee\x35\x21\x8e\xf2\xe1\x6c\x7a\x9d\xe8\xec\ -\x82\xb1\xc1\x2e\x8c\x0d\xaa\x66\xb6\x11\xac\x6d\x6c\xe2\x95\xd7\ -\xdf\x46\xa9\xa4\x1c\x58\x4d\x01\x7c\x11\xc0\x4b\x85\xab\x2f\x60\ -\x3b\xc5\x8a\xa1\xfb\x1a\x80\xdf\x00\x70\x36\x4c\xf1\xfc\xa5\x69\ -\x7c\xfe\x2b\xdf\xc2\x3b\xe7\x2e\x98\x77\xd5\xa0\x40\x2e\x9d\xc2\ -\xed\x37\x8e\xe1\x9e\xa3\x93\xe8\xce\xa7\xb7\x65\x9a\x0c\x37\x04\ -\xc1\x0f\xe4\x23\xc5\x26\x9f\xdc\xc3\x17\x11\x52\x6c\x39\x42\x73\ -\x50\x0b\x29\x36\x9d\x00\x4b\xef\x88\x5d\xdd\x93\x78\xe9\x34\x80\ -\x22\x90\x01\xc5\xc2\x09\x3e\x9c\xc4\x38\x05\x0e\x44\x02\x69\xff\ -\xf8\x84\x62\x7e\xb6\xdb\xe9\xb2\x5e\xac\x62\x61\xad\x84\x99\xe5\ -\x22\x66\x97\x8b\x58\x5c\x2b\x63\xbd\x58\x45\xa5\xd6\x70\x3a\x64\ -\x5c\x4c\x71\xc3\x2b\x3c\xf0\xf9\x17\x55\x65\x12\x8a\x2f\xa1\x0b\ -\x3c\x31\xad\xda\x37\xae\x63\x87\xdf\xa9\xa6\xed\x54\x64\xd2\x13\ -\x45\x98\xe4\x53\x63\xac\x2e\xee\x53\x23\xde\x64\x66\x76\xc2\xb4\ -\xff\x47\xdd\xd5\xa8\x5a\x1c\x58\x65\xa5\xf3\xd1\x95\x3b\x24\xa1\ -\x16\x15\xe0\x5b\x55\x00\xf0\x36\x80\x1f\x01\xb8\x05\x86\x65\x5c\ -\x08\x21\x28\x6c\x96\x70\xf9\xca\x0c\xba\x72\x19\x8c\x8d\x8d\x20\ -\x95\xd2\x17\x45\x08\xc1\xe8\x40\x17\x06\x7a\x72\x58\xde\x28\xa3\ -\x5c\x69\x6c\xa9\x65\x25\x59\x53\xaa\x66\x9d\xa9\xc9\xa7\x1a\x86\ -\xa0\xb2\xb4\x98\xb2\x44\x48\xf9\xb9\xea\x20\xe5\x9b\x4f\xac\x85\ -\xc1\x03\x33\x00\x92\x19\x50\xe0\xc2\xd8\x7a\xaa\xe1\x14\x54\x02\ -\x3e\x78\x88\xf7\xc7\xe4\x6a\xfe\x23\x3e\x50\x89\x02\x62\x62\x79\ -\x36\x75\x96\xf1\xa9\x54\x1b\x28\x55\xea\xd8\x2c\x39\x6b\x6c\x55\ -\x6a\x36\x6a\x0d\x1b\x36\xe5\x37\x99\xf7\xad\x1d\xa5\xc7\x5d\x61\ -\x8b\xf8\x96\x0c\xe1\xe3\x88\xda\xfa\x0a\x80\x26\xfe\x40\x11\x65\ -\xde\x01\x34\xfd\x62\x84\xbc\x88\x54\x06\x15\x00\xc7\x5d\x7b\xca\ -\x9c\xa5\xd6\x57\xa7\x8e\x1c\x1d\xec\xc2\xd8\x60\x37\xa7\x4c\xdd\ -\xe7\x2b\xd4\xa2\xa2\xf4\x4b\x5d\x93\xb7\xbe\xb4\xf2\xd6\x97\xb1\ -\x9d\x12\x09\x54\x00\x07\xab\x2b\x00\xbe\x0b\x60\x3f\x9c\x09\xc9\ -\x4a\xab\x8c\x10\x82\x72\xa5\x8a\xcb\x57\x67\x00\xbb\x81\xc9\x89\ -\x51\xa4\x33\x19\x63\x19\x83\xbd\x39\x8c\x0e\x74\x63\xad\x58\xc5\ -\x66\xa9\xb6\x25\x17\x20\xac\xc9\xa7\xb2\x62\x44\x48\x31\x2a\xfa\ -\xe6\x20\x53\x16\xf7\x3d\x8a\x25\xa5\x6b\xea\x09\x56\x94\x0f\x11\ -\xa6\x3e\x6c\x13\x0f\x4c\x98\xca\x7a\x92\xe0\x24\x82\x89\x01\x92\ -\xfa\x62\x1a\xfe\x8c\xaa\x02\xbc\xd8\x38\x12\x58\x08\x8d\x06\x45\ -\xa5\xd6\x40\xb9\x52\x77\x9b\x8a\x75\x94\x2a\xce\x88\x79\x6f\x45\ -\x0d\xaa\xba\x9e\x02\x5b\x54\xe3\xac\xfc\x28\x8d\xe3\x8a\x0f\x67\ -\x60\x26\x99\x3d\xbc\x09\xe4\xef\xa2\x2d\xe6\x2b\x0d\x59\x90\x1b\ -\x9f\x94\x49\x2f\xd6\xd6\x08\x27\xf0\x46\xdb\xd8\x60\x17\xc6\x06\ -\xba\xe5\x41\x1a\x51\x40\x05\x7c\xb1\xff\x86\x87\x5f\x5a\x78\xf1\ -\xbf\x6d\xa1\xe9\x20\x4b\xac\x29\x34\xb3\xcf\xfd\x3e\x00\x60\xf2\ -\xf4\xa7\xde\x06\xf0\x4b\x00\xa6\xe1\x4c\xa7\x51\x2e\xed\x42\x08\ -\x41\xa9\x5c\xc5\x9f\x3f\xf7\x32\xd6\x0b\x9b\x78\xe4\xc1\x7b\xd0\ -\xd7\xd7\x67\xdc\x85\x63\x7c\xa8\x0b\x0f\x9d\xd8\x87\x17\xce\xce\ -\xe1\xd2\xec\x5a\x47\x9b\x82\x51\x9a\x7c\x46\x48\xb1\xff\xb2\x4d\ -\x3e\xf8\x01\x1a\x48\x71\x2a\x88\x0a\x29\x95\x15\x15\x94\xcf\xd7\ -\x85\xd1\xe4\xce\x8b\xf0\x05\x6b\xce\x9f\x98\x61\xa4\x3d\xd4\xa5\ -\xe2\xcd\x03\x5d\x33\x89\xb5\x4a\xd9\xae\x7a\xfe\x1c\x02\xab\xa2\ -\xde\x70\xac\xab\x52\xd5\x83\x9a\x73\x1d\xd3\x29\x67\x9b\xb1\x4c\ -\xca\x72\xbf\xbb\x6b\xc8\x13\xc0\x22\xae\x9e\xe7\x64\x26\x42\x3d\ -\x0c\xc3\x06\x64\x0f\x13\x13\x4b\xe0\x3f\xd7\xa2\xe3\x5a\xe5\x65\ -\x12\xd7\xae\xa2\xde\x1a\xd0\x21\x43\x08\x82\xf9\x7b\x21\x83\x3a\ -\x4c\x56\x57\x4c\x39\xf0\xd4\x13\x78\xe3\x3f\x72\xb7\x68\xcb\x1d\ -\x34\x4d\xad\x9e\x30\xfb\xdc\xef\x63\xf2\xf4\xa7\xe6\x00\xfc\x26\ -\x80\x29\x38\xd3\x6a\x86\x54\xba\x84\x10\x34\x1a\x36\x7e\xf4\xca\ -\x59\x6c\x14\x8a\x78\xf2\xd1\xd3\x18\x1b\x1b\xd5\xc3\x8a\x02\x03\ -\x3d\x59\xdc\x7f\xeb\x1e\xf4\xe4\xd2\x78\xeb\xf2\x32\xea\x76\xa7\ -\x7a\x04\x05\x18\xb1\x20\x00\x03\x11\x46\x55\x4c\x2e\x41\x8a\x85\ -\x53\x70\x11\xc0\x7f\x15\xf2\x6f\x12\x52\x12\xa0\x44\x3d\xf1\x14\ -\x8d\x80\x22\x72\x98\x10\xa0\xd1\x88\x7e\x9d\x95\xe5\x0a\x2f\x33\ -\x15\x74\x08\xd3\xe3\xc7\xfa\xad\xbd\x6b\xe3\x9a\x24\x9e\x4f\x06\ -\xb6\xb3\xf9\x05\x6b\x9b\x78\xcd\xcd\xb4\xbb\x8b\x8f\x95\x72\xf7\ -\x4e\x74\x8f\x53\x29\xe2\xac\x29\xcf\xdd\x4f\x68\x76\x4b\x16\x68\ -\xe2\x1d\x2a\x9b\x9c\xac\x0a\x55\x46\x12\x30\x80\x63\xc6\x32\x70\ -\x30\x12\xfc\x58\xea\x35\x41\xc1\xe8\xc2\xdf\xda\xcd\xa6\x14\xf5\ -\x46\xb0\xbb\x92\xb7\x35\x9c\x07\xbc\xf0\x15\x71\x29\xf9\xf2\xc7\ -\x80\x14\x8f\x51\x25\x52\x3b\x29\x4d\xaf\x47\xe5\xc2\x6a\x03\xce\ -\x32\x2f\x53\x70\x96\x1f\x3e\x68\xb8\x7e\x38\x7b\xee\x32\x36\x8b\ -\x25\x3c\xf5\xe8\x69\x1c\x3c\xb8\x5f\x7f\x69\x28\xd0\x95\x4d\xe3\ -\xae\x9b\x27\xd0\x9d\xcf\xe0\xd5\x77\x17\x50\xae\xb6\xd7\x6f\x25\ -\x5a\x53\x6a\xab\x4a\x48\x23\x34\xf9\x88\x98\x40\xd9\xec\x90\xf7\ -\xfd\x63\xbf\xb7\x1f\x52\x62\x1a\xae\x62\x7a\x7d\xc5\xf9\x6b\xc1\ -\xa4\x83\x5d\x04\x91\x7f\xf5\xc5\x73\xa0\x1a\x68\x11\xae\x87\x4c\ -\x0b\x2c\xef\x54\xfd\xe6\x99\xbb\xfd\x99\xed\xec\xe0\xe3\x24\xf7\ -\x7a\x15\x83\x46\xb1\x65\x39\x2b\xcf\x12\xcb\xd9\x1c\x36\x45\xe0\ -\xee\x9d\x48\xfc\x3d\x14\x9d\xf5\xd3\xfc\xda\x20\x58\x03\x55\x7e\ -\x7f\xd9\x71\x53\x54\x88\x83\x10\xc7\x8e\xa3\x0a\x9c\xf3\x1e\x4c\ -\x78\xb8\xd8\xde\xa7\xed\xed\x37\xe9\x86\xb9\x7b\x4f\xda\xd4\xdb\ -\x38\x37\xd8\xfe\x6d\x65\xa3\xc7\x75\xa5\xf0\xc3\x32\x08\x21\xb0\ -\x23\x6c\x84\x9a\x12\x67\xc6\x07\x03\x53\xb6\x0c\x56\x2d\xad\xf0\ -\xe9\xc2\xaa\x06\xe0\xbf\x03\x98\x81\xb3\xeb\xcc\x49\x9d\x3e\x21\ -\x04\x57\xa7\x17\xf0\x85\xaf\x7e\x1b\x8f\x3f\x7c\x0f\x6e\xb9\xf9\ -\x46\x58\xa9\x94\xd2\xba\xa2\x70\x4c\xf8\xe3\xd7\x8f\xa0\x3b\x9f\ -\xc6\x8b\x67\xe7\xb0\x51\xac\xb6\x71\xd9\x17\xde\x9a\xf2\x0f\x43\ -\x7a\xf9\xa4\x97\x97\x88\x59\x70\xed\xbd\xd6\x20\xc5\x15\x63\x80\ -\x54\x44\x2b\xca\x08\x28\x13\x9c\x54\x4d\x64\xdd\xf5\xd4\x8a\xdc\ -\xf5\x2f\x35\x07\xa9\x50\x2f\x01\x5a\x01\x9c\xdc\x6f\x21\xc0\x72\ -\xb2\x20\xfe\xd8\xa9\x60\x23\x6c\xaf\xf9\xe8\xf5\x8a\x39\x8e\x7b\ -\x37\x4b\xb7\x38\xaa\xdc\x95\x9b\xbd\x9f\xec\x33\xc1\x1e\x4b\x23\ -\x38\xdd\xc3\x00\x61\x2e\xa4\x18\x0b\xc7\x76\xcc\x20\xd8\x34\x80\ -\x6b\x00\x28\x0a\xdb\x76\x80\xe4\x6d\x86\x0b\xc6\x2a\xe2\xc7\x78\ -\x05\x25\x78\xe7\x13\x67\xaf\x4a\xcd\x7d\x63\x7f\xba\xa9\xf0\xa9\ -\x38\xd9\xf6\x4b\xcb\x4b\x11\xbb\xb0\xa2\x00\xbe\x01\x67\x2e\xe0\ -\xbf\x01\xf0\x04\x34\x4f\x2e\x21\x04\x4b\x2b\xeb\xf8\xea\x37\xbe\ -\x87\x8d\xc2\x26\xee\xba\xe3\x38\x32\x99\xac\xf6\x42\x12\x42\x70\ -\x78\xef\x20\xba\x73\x19\x3c\x7f\x66\x16\x8b\x6b\xa5\x96\x2d\x2b\ -\xdf\x9a\x32\x5a\x55\x31\x9b\x7c\x4c\x84\xdc\xf4\x0b\x8e\xc4\xb2\ -\xbd\x73\xe4\xeb\x16\x36\x44\x41\x84\x94\xd9\x8a\x8a\x06\x28\x19\ -\x4e\xea\xcb\x2c\x53\x2b\xda\xed\x20\x0a\x6b\x2a\x38\x60\xeb\x1f\ -\xc0\x49\x01\x2d\x09\x58\x41\x93\xd0\x7f\xa5\x28\xb3\xb4\x1d\xf1\ -\x5a\x97\xee\x6e\x31\x08\xdc\x50\xc4\x9b\x46\xe3\xdd\x47\x0a\x04\ -\x83\x43\xfd\xb6\x9e\x72\xd9\x61\xe7\xab\xcd\x81\x2d\x68\xb2\x31\ -\x63\xa6\x14\xcd\xb9\x60\x98\x83\x46\x87\x2d\x8b\x0a\x79\x33\x50\ -\xd2\xbe\x33\x91\xee\x47\x44\xa1\x46\x48\x6d\x59\x53\x30\xce\x38\ -\x2a\xad\x78\x4e\x76\x00\x2f\x03\xf8\x2b\x00\xfe\x07\x80\xaa\x4e\ -\x9f\x10\x82\x42\xb1\x8c\x3f\xfb\xce\x8b\xf8\xd6\x9f\x3f\x8f\x62\ -\xb1\x18\x6a\x29\xed\x1d\xed\xc1\xc3\x27\xf7\xe1\xc0\xb8\x79\x10\ -\x69\x34\x91\xe1\xe2\x56\x8c\xfd\x60\x34\xa2\x36\xf9\x34\x7e\x29\ -\x88\xf9\xb2\x60\x8a\x06\x29\xef\x57\x5b\xea\xd5\x33\x40\x8a\x80\ -\xaf\x0f\x01\xef\x5c\x0f\x9a\x3e\x84\x0f\xe3\x20\x45\xfc\x08\xcf\ -\x59\x2d\x0e\xf4\x8c\x73\xd5\xfd\x3f\xa6\x2c\xe6\x0b\xaf\xc7\x9f\ -\x80\xf3\x1f\x13\x46\xfc\x7b\x23\x9c\xaf\x7f\x9d\x14\x4d\x67\xe1\ -\x7e\x99\x57\xb5\x10\x7e\x78\x0c\xf7\xca\xab\x5b\x70\x3a\x41\x2f\ -\x2d\x1f\x27\x7c\x67\x74\xbc\x53\xe1\x9e\x15\xc9\x62\x57\xff\xd8\ -\x75\x58\x88\xe2\x53\xbc\xfd\x1d\xad\x4d\xe4\xe1\x09\x61\x52\xb8\ -\xfa\x82\x3b\x84\xe1\xae\x35\x50\xfa\x6d\x10\x92\x02\x70\x3b\x34\ -\xab\x2d\x78\x4e\xf6\xe9\xd9\x05\xac\xaf\xad\x63\x72\x62\x04\x5d\ -\x5d\x5d\xc6\x32\xba\xf3\x69\xec\x19\xee\x41\xa5\x66\x63\x75\xa3\ -\x02\xbb\x89\xab\xa3\x1f\x8e\xa0\x80\x11\x6b\xce\x43\xd4\x91\x9b\ -\x83\x26\xbf\x94\x6a\xac\x54\xa8\x4f\x8a\xb3\x9c\x08\x1f\xef\x43\ -\x06\x7e\x1d\xc4\x97\xd6\x4b\x4c\x88\x1a\x50\x1c\x68\x45\x38\xf9\ -\xc3\x12\xc4\x38\xf1\x82\xb2\xd0\x21\x86\x3f\xfd\xcd\xe2\xe1\xc5\ -\xbf\x03\x32\xc7\x42\x80\xc5\xa6\x16\xaf\x29\x7b\xde\x1d\x80\x95\ -\xca\x8a\x65\xeb\x21\x02\x53\xf9\xac\x31\x67\x2e\xfd\xe8\xb1\x0f\ -\x07\xc4\xef\x7a\xd9\x33\xd2\x83\x3d\x23\x3d\xf2\x75\x27\x04\xa5\ -\x52\x19\xaf\xbd\xf9\x8e\x71\x1c\xd5\xe6\xd4\x8f\x5e\x42\x60\xd4\ -\xb0\x77\x52\x4c\xd0\x31\x58\xb5\xc5\xa2\x62\x65\xf6\xb9\xff\x80\ -\x67\xfe\xfb\x7f\x58\xb6\xeb\xe5\xdf\x02\xe8\x3f\x00\x30\xaf\xd3\ -\x25\xc4\x71\xfc\xbd\x76\xe6\x3c\xbe\xf8\xd5\x6f\x63\x7a\x7a\xd6\ -\xf8\x2b\x41\x29\xd0\xd3\x95\xc1\xbd\xc7\x26\x71\xe2\xf0\x28\xb2\ -\x69\xab\xf5\xe1\x0b\x44\xf3\xa9\x52\x13\x21\xc5\xc6\x1a\x20\xc5\ -\xea\xa9\x86\x44\x44\x83\x14\xff\x9c\x2a\x27\x30\x6b\xac\x28\x3f\ -\x3a\x22\xa0\x14\x03\xc9\x99\x68\x01\x40\x91\x6d\x2b\x7e\xc0\x27\ -\x07\x30\x51\x93\x01\x9f\x64\x69\x85\x01\x4b\x1a\x5b\xc6\xdf\x13\ -\xd5\xf5\x12\xef\x5b\x1c\x58\xf1\xf7\x50\x78\x2e\x84\xce\x0e\x22\ -\x1d\xb0\xd7\x86\x29\x57\x65\x45\x89\x10\xdb\x32\xab\x8a\xea\xc0\ -\xa4\xb3\xae\x3a\x52\xa3\xb6\x83\x0a\x00\xf9\xaf\x47\x08\x99\x7f\ -\xe1\x0f\xca\xd5\xb5\xe9\x7f\x0f\x6a\xff\x0a\x80\x77\xc2\x12\x39\ -\xd3\x6e\xbe\x89\x73\xe7\x2e\xc0\xd4\xdc\xa5\x14\xc8\xa6\x53\xb8\ -\xfd\xc6\xf1\xd8\xd3\x6e\x94\xd6\x14\x14\x0f\x81\x7b\xa0\x1a\xd8\ -\x09\x46\x93\x7f\x90\xf8\x4f\xf6\xa9\x54\x35\xe9\xa0\xaa\x8b\xe6\ -\x17\x97\xcf\x8e\xf8\xf5\xd2\xbf\x74\x0a\x2b\x4a\xac\x37\x17\xc6\ -\x34\xeb\x14\xd7\x8c\x87\x92\xee\xe2\xb2\x80\xe1\xff\xcc\x8f\x2e\ -\x0f\x2e\x51\x37\x80\x53\x04\x60\xb1\xf7\x53\xea\x11\xe5\x9b\x82\ -\xcd\xc2\x4a\xf7\x2c\x71\x97\x97\x03\x25\x4f\x4d\xee\x99\x63\x80\ -\xa4\xbf\xa8\xe0\xf2\x56\xfe\x7a\x74\x5e\xa2\xc0\xca\x58\xcb\x56\ -\xa5\xdd\xa0\xe2\x28\xbb\x7c\xe6\x8b\xf6\xd2\xeb\x7f\xf4\xc7\xb4\ -\x51\xfb\x45\x00\x3f\x30\x26\x24\x04\x73\x0b\x2b\xf8\xe2\xd7\xbe\ -\x83\x97\x5f\x79\x13\x76\xc3\xbc\xb1\x83\x65\x11\x1c\x3d\x38\x8c\ -\x07\x8e\xef\xc3\x60\x5f\xae\x39\xcb\x2a\xe6\x65\x96\xad\x2a\xe7\ -\x0b\xdb\xe4\x0b\x74\x09\x17\x44\x0c\x0f\xb9\x04\x29\x01\x8e\x3c\ -\xa4\xc0\xbf\x17\x44\xf5\xb2\x69\xac\x28\x11\x50\x4c\xd3\x8e\xbf\ -\x17\x01\xa0\x54\x17\x41\x09\x24\xee\x2a\xf1\x7f\x04\xd0\x43\x4c\ -\xca\x5e\x0d\x2d\x1d\xb0\x58\xb2\x88\xd6\x95\xd2\x77\x25\xc0\x8a\ -\x6f\xbe\x7b\xd7\x8f\x39\x57\xc3\x8f\x0d\x7f\xdb\x79\xdf\xa5\xb2\ -\xa3\x46\x02\x1e\xff\x83\xa4\xfc\x81\x34\xfd\xa0\x6e\x99\x55\x25\ -\x9f\xb2\x21\xac\x23\xb0\x6a\x27\xa8\x54\x15\x25\xb5\xcd\x25\x6b\ -\xee\x87\xff\xf9\xbb\x76\xad\xfc\x0b\x00\xfd\x02\x80\x86\x36\x03\ -\xe2\x0c\xe9\xff\x93\x6f\x3e\x87\xef\x7d\xff\x45\x54\x2a\xe5\x50\ -\x27\xfb\xc1\x89\x3e\x3c\x7c\x62\x3f\x26\x47\xba\x8d\xdd\x0e\xb1\ -\xac\x29\x08\x0f\x0b\x91\xf5\xfd\x53\x64\x9e\x56\x89\x57\xc2\x03\ -\xc9\xd5\x83\x0d\x17\x20\x25\x45\x69\x81\xa6\xb2\x1a\xc4\xaa\x89\ -\x80\x72\x53\x1b\xac\x27\x91\x10\x32\x90\x88\xf6\x4f\x0c\x41\x98\ -\xbe\x01\x5c\x01\xb4\xc0\xe7\xc4\x00\x4b\x6b\x5d\x71\x20\x0a\x03\ -\xbe\x19\x56\xfc\x57\xcd\x0f\x93\x04\x32\xfe\xd9\x60\xb3\x12\x7f\ -\xf0\xb4\x12\x19\x01\x1d\x24\x55\x30\x87\xc7\x54\x8b\x8e\xc3\xaa\ -\x5d\xa0\x0a\xab\xa8\x35\xff\xe2\x1f\x9c\x6d\x94\xd7\x7f\x05\xd4\ -\xfe\xff\x00\x94\xb5\x19\x11\x82\x52\xb9\x86\x3f\x7f\xee\x65\xfc\ -\xe9\x9f\xfd\x05\x36\x36\x36\x42\x61\xe5\x4c\xbb\xd9\x8f\xeb\xf7\ -\x0c\x44\xff\x75\x61\x6a\xa8\x7c\x70\xf4\x4f\x2a\xff\x0c\x2a\xd5\ -\x75\xbf\x7c\xb2\x25\x40\x84\x97\x25\x08\x23\x91\x5e\x2c\xbf\xee\ -\x4a\x4b\x40\x78\x01\x19\x2b\x8a\x0f\x92\xad\x27\x13\x98\x74\xd6\ -\x11\x21\x92\xaa\x51\x57\xce\x5b\x07\x2d\x03\xb0\xd8\x5c\x58\xeb\ -\x8a\xbb\x5e\x41\x64\x33\xb0\x52\xf9\x03\x03\x06\xc9\x0f\x9c\xda\ -\x9a\x92\x7e\x79\xe4\x72\x23\x38\xd6\xb7\xc9\xaa\xda\x76\x58\xb5\ -\xa3\xd7\x2f\xea\x49\x90\xe2\xec\xeb\x85\x4c\xdf\xe4\x77\x53\xd9\ -\xde\x2a\x21\xd6\x9d\xd0\xac\x1a\x4a\x88\x33\x46\x64\x66\x7e\x09\ -\xcb\xcb\x2b\x98\x18\x1b\x46\x4f\x4f\x0f\x4c\x92\xcf\xa6\xb0\x67\ -\xb8\x07\xb6\x4d\xb1\xbc\x5e\x86\x6d\x43\xb8\x89\x44\x02\x40\x58\ -\x4f\x9f\xf6\xe1\x61\xc8\xc6\xe9\x80\x81\x91\x00\x27\x39\x4e\xd7\ -\xb3\xc8\x97\xc9\xeb\xe9\x5e\x28\xe6\x45\x12\xea\xc9\xe9\x09\x56\ -\x94\xe4\x77\xe2\x20\x21\x58\x49\x1a\xab\x47\xff\x48\x44\x50\x94\ -\xac\x29\x35\xb4\xd8\x04\x12\xb0\x78\x93\x4a\xb2\xae\xe2\xc0\x0a\ -\xca\x6b\xcb\xdf\x7b\xe5\x8f\x95\xca\x5f\xe5\xd7\x57\x4a\x26\xd4\ -\xc1\x70\x09\xa3\x7c\x4a\x09\x64\x69\xad\xd7\xcf\xfe\xf2\xe6\xf4\ -\x4b\x62\xaf\x9f\xae\x26\x1d\x83\x55\xab\xa0\x8a\x4b\x5a\x52\x5e\ -\x7c\xa7\x0a\xbb\xf1\x83\x6c\xdf\xe4\x0c\xb1\x52\x77\x02\xe8\x37\ -\x15\xb0\xb8\xb4\x86\x99\xd9\x79\x8c\x0c\xf5\x63\x60\xc0\xa8\x8a\ -\x4c\xca\xc2\xc4\x70\x0f\x32\xe9\x14\x96\xd6\x4b\xa8\xbb\x0b\xf1\ -\x69\x97\x71\x21\x1a\x58\xf8\x0f\x74\x04\x90\x41\x9f\xbf\xd2\x9a\ -\x52\xfd\x9a\x0b\x3d\x7c\x92\x65\x14\xe1\x57\x9f\xfd\xb5\xf7\x00\ -\x10\x44\x08\x0d\x56\xc1\x82\x52\x59\x38\x2c\x9c\x54\x2f\x45\xd8\ -\x50\x04\xd6\xcf\xa5\xfc\x53\x3c\xbb\x3a\x68\xe9\x80\xc5\xb2\x23\ -\x00\x16\x0f\x81\x38\xb0\xe2\xae\x9f\xe2\xe9\x35\x39\xd7\xd9\x73\ -\x10\x9f\x01\x21\x52\xed\x7e\x50\xfd\xe8\x45\xb2\xaa\xc4\x1f\x64\ -\x59\x5a\x03\x55\xe3\xcb\x9b\xd3\x2f\xbd\xcc\xdc\x10\x18\x3e\x11\ -\x51\x27\xb6\xb4\xd2\xf4\x6b\xb6\xd2\x64\x73\xe6\x95\xfa\xf2\x9b\ -\x9f\xfb\x1f\x76\xad\xf4\xcb\x00\x7d\xdd\x58\x08\x09\xa6\xdd\xbc\ -\xf9\xd6\x3b\xa0\xd4\xd6\x36\x05\xd9\x69\x37\xa7\x6f\xdd\x83\xbe\ -\xee\x0c\x93\x8f\x58\x11\x55\x35\x85\x87\x80\x08\x9f\xaa\x93\xd4\ -\x98\xf4\x4a\x48\x29\xae\x9e\xaa\x87\xcf\x0b\x88\x07\x29\xe2\x57\ -\x94\x08\x75\xe0\x99\x25\x5b\x50\xcc\xad\xd1\xc2\x29\x6c\x48\x41\ -\x6c\x11\x41\x26\x14\xa8\x84\x27\x11\x2f\x91\x00\x5c\xff\x1a\x32\ -\xbe\x2b\x5f\x4f\xd4\x89\x0a\x2b\x8d\x73\x5d\x73\x8f\xc5\x73\xe0\ -\x3e\xa5\xfb\xaf\x22\x22\xf3\x3d\x92\x55\xa5\x7e\x8e\xdb\x28\x51\ -\x6d\xbb\x8e\xc2\xaa\x59\x50\x11\xcd\x71\xd4\xca\x92\xda\xe6\x12\ -\xe6\x5f\xfc\xaf\x7f\xd2\x28\x6f\xfc\x55\x50\xfa\x2d\x18\xc6\x24\ -\xb0\xd3\x6e\x9e\x7f\xe1\x55\xd4\x6a\xe6\x39\x7f\xde\xb4\x9b\x87\ -\x4e\xec\xc7\xe8\x40\x17\xbf\x56\x90\xa2\x36\x44\x38\xd6\x9e\x8a\ -\x44\x2d\x22\x67\x17\xe1\xe1\x54\xf9\xa5\xc4\x97\x27\x3e\xa4\x20\ -\xeb\x70\x3f\xe6\x3c\x0c\xc2\x20\xe0\xa7\xd1\xf4\xfe\xf9\xf6\x0e\ -\x89\xf9\x27\x5e\x13\xf6\x3c\x4c\xce\x7c\x43\x5d\x95\xd6\x15\x6b\ -\xfd\x48\xd7\x5d\xbe\xde\x46\x58\xa9\x9c\xeb\x0a\x90\x99\x9a\x80\ -\xca\xfb\x2c\x7e\x2a\x7f\x18\x75\x56\x95\xe6\xb3\x23\xac\x6a\x0b\ -\xac\xa0\x39\x8e\x24\xcd\x80\x2a\x0a\xc2\xc3\x48\xea\x3d\x3e\xa9\ -\x85\x97\xff\xe7\xcb\xb5\xcd\xf9\x4f\x81\xda\x9f\x06\xa0\x5d\x2d\ -\xcf\x5b\x35\xf4\xcf\xbe\xf3\x42\xac\x69\x37\x0f\x9d\xdc\x8f\xfd\ -\xc2\xb4\x1b\xf1\xe6\x2b\xc3\x89\xe9\xe1\x11\x3e\x4d\xbf\x8e\x21\ -\xe6\xbe\x94\x1f\x0b\x1e\xc8\x65\x87\x43\x8a\xc8\x3a\x8a\x66\x9e\ -\x1e\x50\x6a\x38\x89\x60\xd2\x7a\xcf\xc3\xfe\xdc\x74\xe2\x74\x1c\ -\xfe\x5e\x43\xae\x03\x57\x4f\xf6\x9a\x06\xd7\x53\xbb\xcb\x34\xf3\ -\x4f\x3c\x58\xf1\x95\x12\xe1\xa1\x7a\xba\xc5\x67\x82\xfb\x51\x12\ -\xca\x6d\xcd\xaa\x8a\x92\x47\x5b\x25\x0c\x3c\x61\x56\x53\x14\x6e\ -\x68\xa5\x19\x1f\x55\x5c\xba\xea\x28\xeb\x7f\x2f\xcd\xbf\xb5\x96\ -\xee\x1e\xfa\x4e\x2a\xdf\x9f\x26\xc4\x3a\x09\x40\xb9\x14\x28\x21\ -\x04\xb6\x6d\x63\xca\x9f\x76\x33\x6a\x9e\x76\x43\x9c\x69\x37\x93\ -\xc3\xbd\xa8\xd6\x6d\xac\x16\x2a\x7e\x3e\xce\xa7\xa3\x24\x37\xd1\ -\x14\xbf\xa6\x44\x13\x1e\x29\xbf\xe0\x1f\x75\x9c\xde\x79\x0e\x95\ -\x1e\x5b\x1f\xf0\x16\x07\xfb\xe2\xb3\x8e\x75\xb6\x7e\x5e\x68\xd4\ -\x9e\x35\x35\x98\x14\x18\x22\x86\x3f\xe1\xa6\x73\x8f\x81\x11\x5a\ -\x6a\x7f\x9a\x0e\xb4\xea\xe5\x9b\xe3\xc1\x8a\xbb\xbe\xc2\x8f\x84\ -\x74\xed\xc1\xe7\xa9\x34\x69\x88\x94\x5c\xfe\x34\xfe\x30\x0a\x65\ -\x09\xe9\xa1\x39\xf6\xa4\x25\x1f\x95\xdd\xf8\x8a\xeb\xa3\xb2\x84\ -\x22\x4c\xd6\x53\x14\x16\xc4\x92\xb8\xa0\x8a\x0a\xa3\x30\x48\x89\ -\x9f\xa4\xbc\x7c\xbe\x04\xbb\xf1\x5c\xb6\x6f\x7c\x95\x58\xe9\x3b\ -\xe0\x6c\x7a\xaa\x14\x4a\x81\xf9\x45\x67\xb7\x9b\xf1\xd1\x41\xf4\ -\xf5\xf5\x19\x6b\x9b\xcb\xa4\x30\x39\xdc\x03\xcb\x22\x58\x5e\xaf\ -\xa0\x61\x53\x67\x03\xcc\x30\x08\x49\x0f\xab\xc1\x39\x2e\x84\x1b\ -\x75\x84\xb2\xfc\xaa\x2a\xca\xe3\x1f\x5c\xc5\x8b\xc2\x90\x4b\x7e\ -\x61\x19\x90\xb1\x16\x06\x47\x8c\xf0\xb1\x4a\x12\x98\x44\x66\x49\ -\x04\x92\x91\xa4\x30\xaa\x04\x2d\x19\x5a\x5c\x72\x15\xb0\x98\x9b\ -\xac\x85\x95\xe2\x1a\x87\xc1\x4a\x35\x56\x4e\x7a\xa0\x15\x01\xda\ -\x1f\x2e\xf1\x81\x64\x2b\x4c\x84\xf0\x38\x86\x87\xd8\xd4\x14\x80\ -\xe8\x49\x6b\xa0\xaa\x7f\x75\x73\xfa\xe5\x97\x35\x15\x0b\x0b\x53\ -\x85\x37\x05\xad\x38\x4d\xbf\xb0\x0a\x98\x0a\x8f\x42\x5a\x6b\x73\ -\xe6\x95\xf2\xf2\x99\xaf\xfc\x27\xbb\x56\xfc\x75\x80\xbe\x1b\x56\ -\xa1\xf3\x97\xa6\xf1\xb9\x2f\x6b\xa6\xdd\x30\xcf\x01\xa5\x40\x36\ -\x93\xc2\xc9\xc3\x63\xb8\xe7\xe8\x84\x33\xed\x26\xd2\x69\xca\x0f\ -\xac\xf3\x35\xfc\x21\x33\x0e\x30\x15\xce\xbe\x33\x90\x82\xac\x03\ -\x48\x7a\x66\x40\xf1\x70\xe2\xc9\xe2\x5a\x34\xca\xff\xa2\xc5\xaa\ -\xc0\xc5\xe5\xad\x70\xdc\x73\x3e\x2c\x85\x75\xc5\xe9\x85\x58\x4e\ -\x66\x58\x41\x73\x2f\x14\xbd\x6f\x86\x57\x4f\xf2\x59\x9a\xac\x2a\ -\x5d\xf9\xd2\x0f\x69\xd8\x5b\xde\xb4\xe1\x22\x89\x62\xa5\xe8\xa8\ -\xc0\x89\x03\xb1\x50\x89\x0a\xaa\x76\xc1\x28\x2c\x3d\xa9\x15\xe6\ -\xec\xf9\x1f\xfd\x8f\xcf\xd7\x4b\x6b\xbf\x0c\x6a\x1b\x37\x13\xf3\ -\xa7\xdd\x7c\xfd\xcf\xf1\xf2\xab\xe1\xd3\x6e\x52\x16\xc1\xcd\x07\ -\x86\x70\xff\xad\x7b\x30\xd8\x9b\xf3\x57\xd5\x51\x3e\x04\x8a\x87\ -\x42\xfb\xa9\x79\x08\x4d\x57\xc7\xb7\xd0\xfc\x03\xd3\xaf\x78\x2b\ -\x90\x62\x5e\x62\x12\xe4\x27\x5a\x1d\x4a\x40\x71\x70\x12\x70\xa3\ -\xb3\xaa\x22\xfc\x05\x60\x62\xc1\xc5\xc4\x71\x57\x43\x3d\x76\x4a\ -\x0b\x63\xe9\x3c\x99\xeb\xad\x6a\xe6\x29\xe2\xbd\x4c\xb5\x50\x88\ -\xd0\x04\xe4\x9f\x43\xcd\xf7\xa6\xfd\x4c\xdc\xd5\xe1\x42\xc4\x67\ -\xb2\x0d\xc2\xdf\x0e\xa1\x98\x88\x9f\xfa\x13\x88\x08\xab\xb8\xce\ -\xf4\x66\x2b\x18\xcf\x54\xa4\x36\x59\x7c\xe5\x7f\x7d\xbf\x5a\x98\ -\xfb\x25\x6a\x37\xbe\x0a\x40\xbb\x3f\x3c\x21\x04\x6b\xeb\x9b\xf8\ -\x93\x3f\x7b\x0e\xdf\x7b\xee\x45\x54\x2a\x15\x10\x8b\x28\x33\xf6\ -\xe4\xe0\x44\x1f\x1e\xba\x6d\x1f\x26\x86\xbb\x23\x9c\xaa\xfb\x3d\ -\x86\x35\x65\x74\xa0\x43\xf1\x52\x40\x78\x29\xb8\x67\x96\x7d\x29\ -\xc4\xa2\xa2\x40\x0a\x46\x4b\xc3\x08\x28\x01\x4c\x1c\x70\x84\x33\ -\x8f\xfa\xa7\x4a\x28\x41\x8b\x0b\xe7\xcf\x95\xbb\x6a\x9a\xe6\xad\ -\x7f\x0e\xc2\x35\x92\x60\xe5\x69\xeb\x78\x21\x02\x41\xf1\xa3\x65\ -\x7a\x25\xb5\x3f\x64\xb1\xac\x2a\x9d\x7b\xc2\x94\x48\x53\xa1\xd6\ -\x25\x8e\x95\xd4\x2c\xc4\x94\x12\x05\x54\x51\xa0\x13\x35\x6d\x9c\ -\x93\xb1\x96\xdf\xf8\xfc\xd9\xca\xf2\xbb\xbf\x46\xed\xda\x7f\x05\ -\x50\xd1\x16\x42\xdc\x69\x37\xdf\x57\x4d\xbb\x21\xca\x5a\x8c\x0d\ -\x75\xe1\xc1\xdb\xf6\xe2\xba\xc9\x7e\xce\x11\x1a\xd9\x8a\x0a\x92\ -\xf0\x9f\xaa\x13\xd7\x24\x56\xc2\x49\xf5\xab\xee\x27\x61\x5f\x96\ -\x26\x21\xc5\xe6\x17\x0a\x28\x2f\x82\x3f\x15\xe2\x69\x78\x7e\xa3\ -\x18\x7f\xda\x6d\xb7\x04\x68\xa9\xac\x2c\xef\x20\xdc\xba\x12\xcf\ -\x5d\x03\x2b\xc6\xf2\x62\xad\x30\xfe\xde\x08\x2f\xbf\x08\x10\x31\ -\x0d\x7b\x5f\x5a\xb2\xaa\xc2\x44\x3f\x00\xb4\xbd\xe2\xaf\x9b\x1a\ -\xc7\x4a\x42\x88\x0e\x89\x9b\x36\x8a\x33\x3d\x2e\x21\x9b\xfd\x54\ -\x85\x59\xe5\xe5\x0b\x05\x50\xfa\x17\x99\x9e\xb1\x2a\xb1\xd2\xb7\ -\x03\xc8\x29\x2b\x49\xbc\x69\x37\x8b\x58\x5e\x5e\xc5\xe4\x38\x33\ -\xed\x46\x04\x8f\xfb\x70\xe4\xb3\x29\x4c\x0e\xf5\xa0\x41\x29\x56\ -\x37\x2a\xa0\x34\x78\x59\x83\x5f\x2f\xc5\xc3\x49\x98\x87\xc3\x7b\ -\xb1\x7d\x60\x69\xc2\x35\xf9\xe8\x75\x98\x47\x51\xac\x47\x04\x48\ -\xb1\x56\x85\xb2\xeb\x9e\xb1\x2c\x24\x40\x09\x26\x90\x7f\x28\x76\ -\xe3\x41\x88\x0f\xf9\xe3\x13\xc8\xe0\x62\xe3\x95\xc0\x62\x14\xd4\ -\xd6\x15\x7f\x0d\x98\x5b\x2d\x5c\x67\x39\x9e\xb7\x52\x44\x58\x89\ -\xe5\x6b\x9e\x56\x62\x88\x22\x9a\x4f\x6d\x56\x02\xfc\xcc\xca\xdc\ -\x49\xb0\x65\x50\xda\x9a\x33\x9d\xf2\xce\xf4\x76\xbc\xe3\xaa\x2b\ -\x18\x2a\x61\xa0\x8a\x0a\x97\xb8\xe1\x62\xbc\xa9\x0c\xab\xb6\x31\ -\x5b\xad\x6d\x2e\xbc\x90\x1b\xd8\x3f\x47\xac\xcc\xed\x20\x44\xd3\ -\xcd\xe7\xc8\xe2\xd2\x2a\x66\x66\x17\x30\x32\xd4\x8f\xc1\xc1\x7e\ -\x3e\x53\xee\x8e\x03\xd9\xb4\x85\x89\xa1\x6e\x64\xd2\x29\x2c\x6f\ -\x94\x51\xb7\x29\xac\x90\x1e\x3d\x7d\x38\xfb\x80\xcb\x26\xbb\x59\ -\x87\x39\x66\xf4\x64\x48\x69\xf4\xd8\x7a\x31\xa7\x68\x1c\x0c\xc9\ -\xea\x89\x2f\x83\x7f\x83\x18\x38\x09\x37\x8e\xb0\x79\x44\xf8\xd3\ -\xc2\xcb\xad\x98\xbf\x34\x2f\x13\xce\x01\x8b\x63\xa4\x07\x3a\xa6\ -\xbe\x11\x60\x15\x5c\x17\xee\xe4\x83\xeb\xc6\xdc\x1b\xfe\x4a\x04\ -\xd7\x89\xfb\xc1\x60\xc3\xd9\x7c\x45\x42\x09\xf9\xf0\x17\x3a\x94\ -\x5a\x7c\xf9\x50\x95\xaf\x12\x67\x9d\xfa\x36\x81\x4a\xd7\xfa\xd2\ -\x55\x21\x6a\x78\x18\xcc\x00\xb4\xbe\x7a\x42\x5c\x52\xc6\x3d\x29\ -\xbf\x9e\xd5\xb5\xa9\xda\xe2\x6b\x9f\xf9\x9f\xf5\xf2\xea\xaf\x81\ -\xda\x67\x8c\x95\x22\x04\x57\xa6\xe7\xf1\xf9\xaf\x7c\x0b\x6f\x9c\ -\xf1\xa6\xdd\xc8\x55\x23\x08\xa6\xdd\x1c\x3b\x34\x8c\x53\x47\x27\ -\xd1\xd7\x95\x71\xd6\xb6\xd2\xfd\x24\x4a\xd5\x54\x54\x59\x73\x36\ -\xc2\x0f\x9f\x16\x52\x7a\x67\x2d\xaf\x17\x75\x29\xe3\xa0\x4c\x1f\ -\x3d\x92\x15\x25\x59\x50\x82\xe5\xa4\x06\x13\x61\xf2\x34\xff\x17\ -\x50\x86\xc9\x57\x80\x97\x7f\x22\xa2\x95\xc5\x01\x8b\xb9\x66\xee\ -\x41\x1c\x58\xa9\xc6\x95\x05\x6a\xfc\xf9\xf2\xf7\x88\xfb\xa5\x80\ -\x90\x89\xf2\x5e\x35\x67\x55\x85\x3c\x5b\x5a\x31\x97\xdd\xa2\x98\ -\x0c\x0a\x93\x6e\x94\xf0\x48\x62\x02\x55\x54\xf2\xc5\x35\xfb\xa2\ -\x5c\x43\xa5\x25\x66\xd7\x4a\x58\x7c\xe5\xd3\x7f\x5a\xdd\x98\xfb\ -\x15\x4a\x1b\xdf\x45\x84\x69\x37\x5f\xf9\xfa\x77\xf1\xc3\x1f\xbe\ -\x82\x5a\xad\xe6\x5b\x4a\xca\x0b\x41\x08\x6e\xd8\xd3\x8f\xfb\x8f\ -\xef\xc5\xc8\x40\x5e\xda\xba\x29\xf4\x61\xe3\x9c\xb4\xba\xe1\x08\ -\xc2\x5b\x20\x9d\x2e\x78\x10\x41\xfe\xd2\x14\xa4\x02\x53\x4a\xb6\ -\xa2\x74\x80\xf2\x8e\xd9\x34\x1c\x44\x08\x1f\x2f\x26\x08\xb5\xa6\ -\x58\x78\xf1\x3a\x4c\x65\xf8\x87\x44\x61\x5d\xf9\x67\xc2\x5d\xe6\ -\x10\x58\x71\x64\x13\xee\xaf\x02\x48\xea\x1f\x16\xc3\x83\xdc\x8c\ -\x55\xa5\x4b\x2e\xfe\x90\x31\xd0\xe4\x1e\x23\xa2\x29\xbb\x55\xa1\ -\xca\x0a\xb7\x9b\x01\xa1\x4c\x68\xc7\xa4\xe4\x56\xf5\xe3\x9c\x24\ -\x01\x90\x5a\x7e\xf3\xf3\xaf\x94\x97\xce\xff\x2d\x6a\xd7\x3f\x0b\ -\xa0\xae\x2d\x90\x10\x14\x8a\x25\xfc\xe9\x9f\xbf\x80\x6f\x7e\xfb\ -\x07\xf2\xb4\x1b\x91\x04\xc4\x31\x93\x1f\x38\xbe\x17\xfb\x46\x7b\ -\x15\x7a\xaa\xea\x84\x9c\x8d\xe9\xa4\x4c\x0f\x3d\x13\xe1\xc3\x4f\ -\x91\x77\x24\x48\x09\x2f\x1c\x67\x45\x81\x01\x87\x00\x28\xd6\x72\ -\x92\x1c\xe0\x91\x60\xa4\xca\x4b\xa5\xcf\x43\x4b\xb4\xb0\xf4\x9b\ -\x53\x80\x01\x14\xe1\xaf\xa3\xe6\x1a\x88\xd7\x88\x04\x0a\x6a\x0b\ -\xc7\x04\x19\xc5\x0f\x50\x58\xd3\x4c\xf7\x43\xa7\xff\x11\x0b\x93\ -\xb0\xe6\x5f\xab\xcc\x32\x2e\x9d\xdb\x2e\x06\x84\x8a\xce\x47\x15\ -\x15\x1a\x51\x21\x13\x35\x1f\x51\x47\x1b\x5e\x59\xbe\xb0\x46\x08\ -\xf9\x5e\xba\x7b\x34\x4d\xac\xf4\x6d\x30\x4c\xbb\x69\xd8\x36\xa6\ -\x66\x16\xb0\xb6\xb6\x81\x3d\x93\xce\xb4\x1b\xfe\x79\xe0\xcd\xff\ -\xae\x5c\x1a\x93\xc3\x3d\xa8\xd6\x1b\x58\x2d\x54\x9d\x7d\xe2\x48\ -\xf0\xc0\x13\xcd\xc3\x6e\xfe\xe5\xd3\x8f\x76\xd7\xea\x40\x6d\x05\ -\xa8\x26\xbf\xaa\xf5\x84\x78\x15\xd4\xbc\x48\x16\x10\x24\x48\x20\ -\xf5\xfe\x71\x90\xd1\x0c\xe4\x54\xda\x4f\xb2\xa6\x16\x5a\x3a\x60\ -\x41\x00\x16\x73\x12\x51\x61\xc5\x3d\x50\x82\x15\xcc\x5c\x10\xf5\ -\xa1\xe1\x87\x45\x7a\x03\x75\x84\x52\x6b\x1b\x5e\x94\x90\x1f\x46\ -\x2e\x13\x22\xe5\x41\x41\x5a\xf7\x51\xcd\xbc\xf2\xb2\xb1\x8a\xf1\ -\x3e\xc3\x4f\x59\x21\xcd\x82\x2a\xca\x27\x69\x73\x7e\x52\xfe\xd5\ -\xf5\x99\x52\xa3\xbc\xf6\x7c\xb6\x6f\xcf\x3a\x49\x65\x4e\x02\x44\ -\x39\x30\x8a\xc0\xe9\xfd\x98\x5b\x58\xc1\xfc\xfc\x12\xc6\x47\x87\ -\xd0\xdf\xdf\xcb\x65\xc9\xfd\xb2\x02\xc8\x66\x2c\x4c\x0e\xf7\x80\ -\x10\x82\x95\x8d\x0a\x1a\x94\x46\x70\xa6\x0b\xe1\xa1\xa0\x62\xe3\ -\x45\x38\xf1\xdd\xdc\xe2\xcb\xa7\xec\xcd\x8a\xe0\x9f\xe1\x9b\x7a\ -\x04\xe2\xc3\xcd\xc2\x8c\x83\x89\xff\x55\x1e\xef\xc4\x01\x47\xf8\ -\x53\x73\x4b\x84\x97\xba\x1c\x1d\x40\x65\x58\x69\xc0\xaf\xb9\x26\ -\x2a\x66\x88\x96\xa9\xd6\x27\xc5\xa1\x83\x2b\x48\xa8\x93\x54\x84\ -\x50\x0f\xe6\xa4\x14\x79\x88\x9f\x32\x28\xf9\x67\x47\x2e\xd0\x89\ -\x6c\x4b\xaf\xdf\xcc\x2b\xaf\xa0\xb9\xa1\x4c\xcd\xea\x48\xa2\x2a\ -\x3c\x8c\x7c\xba\xf0\x66\xf5\x74\x15\x8f\x12\x6e\x95\x97\x2f\x94\ -\x97\xdf\xfc\xc2\x7f\xae\x97\xd6\x7e\x13\xd4\xbe\x18\x76\xc2\xef\ -\x5e\x9c\xc2\x67\xbf\xf4\x67\x78\x87\x99\x76\xa3\xba\xd9\x14\x40\ -\x26\x6d\xe1\xb6\xeb\x47\x71\xe7\x4d\x63\xe8\xce\xa5\x9d\x9d\x69\ -\xb9\x07\xdb\x74\x92\x61\x90\x02\xf7\x8c\xea\x7e\xd1\xd9\xc7\x5e\ -\x7e\x90\x04\x28\xfa\x7a\x41\x7e\xea\xb1\x42\xf0\x7b\x03\x65\x08\ -\xf0\xe0\xd0\xc1\x89\x71\x2d\x71\x7f\xaa\x9b\xa5\xd4\x13\x0e\x74\ -\xc0\x92\xac\x1b\xf6\x7a\x72\xd1\xd1\x60\x65\xba\x6e\x62\x39\x4a\ -\x9e\x88\xf0\x50\xe8\x4b\xf7\x41\xf1\x43\xc2\xdd\x57\xe5\xa7\xea\ -\x77\x5e\x27\x24\xa4\x0e\x6d\x93\x76\xbd\xf3\x88\x18\xee\x4b\x14\ -\x67\x7a\xd4\xf0\x76\x5f\x84\xc8\xe1\xf5\xf2\x9a\xbd\xf8\xea\xa7\ -\xbf\x50\x2d\xcc\xff\x1a\xa5\x8d\x97\x8c\x85\x10\x82\xd9\xf9\x65\ -\x7c\xee\x2b\xdf\xc6\x4b\x2f\x47\x9b\x76\x73\x64\xff\x10\xee\xbd\ -\x65\x12\x03\xde\xb4\x1b\x0e\x0a\x3a\xc0\x84\x5d\x3a\xf6\x05\x31\ -\x0c\x34\x25\x4a\x75\xf0\x96\x01\xfb\x32\x04\xca\x3a\x48\x99\xac\ -\x28\x11\x50\x3a\x38\x05\xe5\xc6\xfc\x63\x5e\x43\x09\x5a\xd0\x83\ -\x92\xb5\xae\x82\x6b\xc6\x5a\x31\xc1\x17\x11\x70\xec\x7d\x22\xd2\ -\x75\x64\xe2\xd8\xab\xa2\xf8\xc1\x60\xaf\x5f\x98\x55\x15\x4f\x88\ -\x31\x94\xaf\x4a\x38\xb4\x9a\xaa\xc2\xd6\x4a\x6c\xb6\x58\x2d\x66\ -\xd0\xac\xf5\xd5\xae\xf2\x02\xa1\x94\x2c\xbf\xf1\xb9\xef\x57\x96\ -\x2f\xfe\x2a\xb5\xeb\xdf\x40\x84\x69\x37\x5f\xfd\xd3\xef\xe3\x3b\ -\x7f\xf1\x82\xbb\xdb\x8d\x65\x2c\xe0\xc0\x58\x2f\xee\xbf\x75\x0f\ -\xc6\x87\xcc\xbb\x39\x3b\x79\xf0\x0f\xaf\xf8\x8b\xac\x83\x92\x7f\ -\x24\x51\x2a\xf8\xcd\x54\xfb\x5a\xd8\x7c\x62\x40\x4a\x61\x45\x29\ -\x01\xc5\xd6\x91\x1d\xa8\xa9\xb1\xaa\x8c\x7f\xc4\xb3\xe6\x08\x57\ -\x97\x28\xc0\x62\x41\x14\xd4\xd7\x0c\x2b\xbe\xef\x84\xbf\x86\xe2\ -\x65\x57\x5d\x5f\xd1\x32\x16\xef\x93\xde\x74\x10\xee\x97\x08\x45\ -\xae\x3c\x36\x61\xc8\x0f\x1f\x11\xce\x5d\x61\xe9\xf1\x37\x98\xbd\ -\xae\x2d\xc9\xb6\xbe\xeb\x29\x4d\xe4\x6e\xfd\xb4\xca\xcb\xe7\x17\ -\x49\x2a\xfd\x5c\xba\x6b\xb8\x8f\x58\xe9\xa3\xd0\xf8\xe1\x08\x21\ -\xa8\xd5\xeb\xb8\x32\x35\x87\xe2\x66\x11\x7b\x27\xc7\x90\xcb\xe7\ -\x84\x4b\xc4\x3b\x9e\x7b\xf2\x69\x8c\x0f\x76\xa3\x54\x6d\x60\x63\ -\xb3\x0a\xef\x01\xd4\xf9\x37\xb8\x5f\x5f\x2e\xdc\x10\x0f\xfd\xc3\ -\xad\x7a\x01\x4d\x3b\x2a\x87\x42\xca\x00\x03\x15\xa0\xa4\x01\x99\ -\xec\x53\x13\xf5\x4f\x4c\xc2\x8d\xc5\x52\x03\x8b\xaf\x96\x78\x4e\ -\x31\x60\xc5\x96\x2f\x5e\x63\xb1\x72\x82\xbe\x14\xcc\x31\x44\xf1\ -\xe3\x12\x09\x0c\x44\x9d\xb7\x32\x79\x58\x86\xfa\xe6\xdf\x64\x7b\ -\x7d\x54\xad\x1a\x17\x71\x01\x07\xa0\x33\xa0\x22\x9a\xfc\x74\xe1\ -\xed\xfe\x24\xd5\xb5\xa9\x82\x5d\x2d\xfe\x20\xdb\x3b\x51\x27\xa9\ -\xf4\x6d\x00\xd1\x4c\xbb\x21\xb0\x29\xc5\xf4\xec\x22\x96\x96\x57\ -\xb0\x67\x7c\x18\xbd\xbd\xc1\x0d\x65\x5f\x00\x47\x1f\xc8\x67\xd3\ -\x98\x18\xea\x46\xc3\xa6\x58\xdb\x64\xa6\xdd\x28\x7f\x35\x03\xf0\ -\x28\xe1\x24\xe8\xf0\x2f\x55\xb8\x0e\x3f\xe2\x9d\xa9\x71\x5c\x48\ -\xf9\x47\x82\xc5\x02\xc2\x01\x8a\xbb\x7b\x04\x60\xd7\x3b\x8f\xfc\ -\x9f\x68\x86\x79\x5f\x89\x77\x9e\x32\xb0\x88\xaa\xae\x2a\x28\xfb\ -\xdf\x85\xa7\x02\xf2\xb5\xe4\x9f\x03\xe1\x3a\x8b\x69\x54\x20\x62\ -\xca\xd0\x3f\x8c\xba\xfc\x54\x59\xa9\xdf\x73\x75\xde\xe1\xd0\x62\ -\x65\xcf\x48\x0f\x26\x9b\x07\xd5\xd7\x5c\x50\x91\xd0\x82\xc2\xc3\ -\x9b\x16\x16\x54\x71\x01\x23\x86\x37\x0b\x17\x5d\xfa\x56\xc2\x49\ -\xbd\xb8\x54\xad\x6e\x4c\xbf\x98\xeb\xdf\xb7\x60\xa5\x72\x27\x40\ -\x08\xbf\x1e\xb1\x20\x0b\x4b\xab\x98\x9e\x99\xc7\xe8\x48\x3f\x06\ -\x07\x07\xc0\xfd\xc6\x0a\x30\xc8\xa4\x2c\x8c\x0f\x75\x21\x9d\xb2\ -\xb0\xb2\x51\x41\xbd\xe1\x4e\xbb\x69\xd5\x9a\x32\x59\x4c\x2a\xb8\ -\x68\xe3\x88\xd0\x82\xd0\x43\x8a\xb3\x52\xb8\x97\x9c\x1f\x44\xc9\ -\xc1\x89\xb5\x74\x58\x09\xb1\xa2\x02\x35\x26\x0f\xd1\xd2\x22\xfe\ -\x3f\x3c\xb0\x24\x58\xc9\xe7\xc5\xc3\x8a\xbd\x36\xcc\xb5\x56\x5c\ -\x37\xa5\x70\xf7\x5c\x0f\x0c\xb6\x7e\xfc\x49\x68\x13\x09\x84\x62\ -\xef\xb5\x2a\xbd\x9a\x84\xaa\x1f\x24\xf1\x93\x00\xfe\x14\x9a\xc9\ -\x91\x1e\xe9\x54\x9b\x00\x55\x5c\x6b\x28\xec\x38\x72\x78\x1c\x67\ -\x7a\xd4\xca\xc4\x95\xa6\x2b\x1f\x56\xdf\x5a\x61\xa1\xb6\xf8\xda\ -\x1f\x7d\xba\xb6\x39\xff\x1b\x94\xda\x67\x8d\x95\x20\x04\x97\xa7\ -\xe6\xf1\xc7\x5f\xfc\x26\xde\x78\xe3\x6d\x50\xdb\xe6\x7f\xf5\x99\ -\x87\xd1\x9b\x76\x73\xcb\xc1\x61\xdc\x75\x64\x1c\xbd\x5d\x19\x6e\ -\xff\x08\x26\x01\xf7\x10\x1b\x9e\x3b\xfe\x04\x74\x57\x9a\x09\x33\ -\x39\x80\xb9\xe4\x21\x90\x92\xac\x28\xcf\x07\xc5\x96\xe7\x5b\x35\ -\x84\xaf\x07\xf1\xd5\xcd\xfe\x2a\x41\x8f\xcf\x46\xb0\xb4\x98\x34\ -\xea\xba\x0b\x50\x25\xea\x6b\xcb\xc1\x4a\xf9\x84\x08\x90\x8f\x70\ -\x5d\xd5\xf7\x56\xa3\xc2\x9c\x9f\xee\x56\xea\x44\x7f\xfb\x49\x68\ -\x9a\x88\xea\x5b\x2d\x2d\xb3\x24\xca\xf0\x84\x4e\x54\xb4\x5d\xe9\ -\xc3\xc2\x09\x6d\x54\xb1\xf4\xfa\x67\xff\xac\xba\x7a\xf9\xd7\xa9\ -\x5d\xff\x3e\x42\xa6\xdd\x2c\x2e\xaf\xe1\x0b\x5f\xfb\x73\x3c\xf7\ -\xfc\xcb\xa8\x55\x6b\xc6\x1e\x41\x42\x80\xeb\x26\xfb\x71\xef\x2d\ -\x93\x18\xee\xcb\xc9\x85\xb3\x9f\x44\x91\x98\x8d\x64\xde\x26\xe9\ -\x21\x97\xac\x24\xf9\xd7\x5b\x39\xb0\x39\x06\xa4\x3c\x7d\x8e\x23\ -\x22\xa0\x14\x50\xd2\xe2\x49\x3f\x88\x8a\x83\x97\x04\x2d\x01\x58\ -\xb2\xf3\x5f\xb4\x9c\x44\x1d\xd1\x12\x26\xdc\xf9\x2a\x8d\x1a\xed\ -\xd3\xc3\x1f\x8a\xd1\xf2\x91\x21\x53\xf1\x47\x44\xd1\x0b\xa9\x4b\ -\xaf\x7e\xab\xd5\xbf\x62\xb2\xf1\xd6\x71\x5a\x6d\x09\x2f\xda\xb5\ -\xa5\xbb\xae\x80\xc8\xd6\x4f\x8b\xe9\xc3\xf2\xb5\x56\xce\x7e\xed\ -\x95\xd2\xdc\x99\xbf\x4b\x1b\xd5\x2f\x22\x6c\xda\xcd\x66\x09\xdf\ -\xf8\xd6\x0f\xf0\x7f\xbe\xf5\x7d\x14\x37\xe5\xdd\x6e\xc4\x42\x26\ -\x87\xbb\x71\xfa\xd8\xa4\xd2\x61\xa9\x7b\x90\xc3\x5a\x05\x44\x77\ -\x45\x98\x30\xb9\x85\xc1\xbe\xe4\xcd\x41\xca\x8f\x22\x0a\x40\x71\ -\x15\x70\x2d\x2f\xd1\xaa\x62\x41\xa6\x08\x67\xcc\x25\xbf\x4e\x2a\ -\x60\xf1\xd6\x15\x61\xce\xc8\xab\xba\x1a\x56\xe2\xb9\xc8\x56\x6a\ -\xf4\x1f\x02\xd1\xaa\x12\x9b\x59\xc4\xf8\x19\x89\x72\x41\x4d\xa4\ -\xfb\x2e\xdd\x5c\x6d\xb9\x6a\x89\x08\xd0\x50\x91\x7e\xd7\xe3\xbe\ -\x7b\x6d\x11\xcf\x47\xa5\x3a\x2b\x12\x23\x5c\xfb\xde\xed\xa0\x4f\ -\x52\x59\xbb\xb2\x46\x1b\x95\xe7\x32\xbd\xe3\x59\x92\xca\x1c\x83\ -\x61\xda\x4d\xbd\x61\xe3\xea\xcc\x3c\xd6\xd6\xd6\xb1\x77\x72\x14\ -\xdd\xdd\x5d\x4c\x3c\x7f\x3f\x08\x01\xba\x72\x4e\x8f\x60\xad\x6e\ -\x63\xad\x58\xf5\xf5\x62\xf9\xac\x54\x4d\x10\xa2\x09\x67\x2a\x22\ -\xbf\x68\x7c\x59\xb1\x21\xc5\x22\x89\x4d\x23\xc2\x09\xf1\x45\x62\ -\x95\x06\x58\x92\x75\x45\x42\xea\xc9\x9d\x1f\x73\x93\x18\x3d\x19\ -\x5a\x21\x15\x35\xea\x84\x83\x40\x02\x22\x77\x14\x7e\x9d\xd8\x34\ -\x66\x5d\x22\xd7\x97\x49\x32\x39\xdc\x4a\xaf\x5f\xed\x6b\x9a\x91\ -\xe9\xcd\x02\xab\x29\xe3\x43\x07\x2a\x12\x31\x7c\x37\x7d\x12\x00\ -\xa4\xb6\xb9\x50\xaa\x15\x97\x5e\xc8\xf6\x4f\x16\xac\x54\xf6\x36\ -\x10\xa2\x1c\x18\x45\x88\x33\xfd\x60\x76\x7e\x19\x73\xf3\x8b\x98\ -\x18\x1d\x42\xff\x40\x9f\x1f\x17\x5c\x94\xe0\x21\xc9\x66\x2c\x8c\ -\x0f\x76\xc3\x22\x04\xab\x85\x0a\x6c\x9b\x22\x18\x01\x1e\x06\xac\ -\x20\x9c\x1d\xd1\x1c\x19\x60\x42\x3e\xfe\xc9\x93\x26\x21\x45\xd8\ -\xf3\x24\xfe\xb1\xf4\x34\xf9\x63\xaa\xa2\xfd\x71\x49\xc1\x58\x5a\ -\x22\xb0\x14\xd7\x97\xe8\xea\x2b\xd6\x93\x4d\x1b\x24\xe4\xaf\xa7\ -\x5f\xfd\x68\x56\x95\xf2\xc1\x12\xad\x1b\x08\x07\x21\x9f\xcd\x34\ -\xff\x4c\xd0\xd2\xc5\x70\xa0\x62\xaf\x6d\x74\x50\xbd\x6a\x2c\x38\ -\x9a\xb4\x04\xac\x66\x36\x77\xd8\x29\xd2\x34\xd1\xab\x6b\x57\x4b\ -\xcb\x6f\x7c\xe1\x0f\x6a\xc5\xa5\x7f\x0a\x6a\x5f\x0e\x2b\xe8\xdc\ -\x85\x29\x7c\xe6\x0b\xff\x07\x67\xdf\x3e\x0f\xde\x14\xe6\xdf\x5c\ -\x6f\xb7\x9b\x5b\xaf\x1b\xc6\xc9\xc3\xa3\xc8\xe7\xd2\xf0\x97\xb6\ -\x52\x3c\xd4\xe2\xaf\xa6\xf8\x30\x6a\x21\x25\xe8\xab\xba\xcf\x5b\ -\x81\x14\x67\x45\x89\xbd\x7f\x6e\x3d\x82\xa1\x09\x31\x6f\x9a\x0e\ -\x5a\x9c\x85\x25\x5b\x57\x5a\x58\x31\xf1\xd2\x39\x2a\xae\x75\x24\ -\x6b\x4a\xa7\x2b\x9b\x6d\x92\xbe\xfe\x9e\x86\x17\x66\x1e\xfc\xa9\ -\x2a\x91\xa8\xf3\x89\x71\x8a\x3b\x40\x22\x55\x33\xaa\x39\xd7\xf1\ -\x8a\x18\xf4\x5a\x35\x1d\x55\x7a\xa4\x51\x2d\x34\x96\x5e\xff\xe3\ -\x2f\x56\xd6\xa6\x7e\x83\xda\x8d\x57\x8d\x09\x08\xc1\xcc\xdc\x12\ -\x3e\xfb\xa5\x6f\xe2\x47\x2f\xbd\x8e\x46\xc8\xb4\x1b\xcb\x22\xb8\ -\x71\xdf\x00\xee\x39\x32\x8e\xfe\x1e\x77\x21\x3e\xb1\x9a\x66\x6a\ -\x85\x34\x4b\xd4\x79\xe8\x7e\xed\xfd\x50\x0d\xa4\x58\x7f\x14\x6b\ -\x45\xe9\x00\xa5\xab\x52\xd8\x9f\xea\xba\x4a\xeb\x5f\x05\xff\x70\ -\xf5\xd7\xc2\x4a\x79\x29\x08\x5f\x31\x3f\x4e\x03\xfa\x56\xac\x2a\ -\xf1\xbe\xea\x6e\x99\x26\x2f\xb5\xae\x26\x94\x08\x5f\xa5\x7b\xac\ -\xce\xa9\xf3\xfe\xf4\xce\x73\xa3\x9d\xce\xf4\x56\x81\xd4\x6e\xbd\ -\xb0\xf4\x04\xd4\x26\x2b\x6f\x7d\xf9\xb9\xf2\xe2\xdb\x7f\x97\x36\ -\x6a\xdf\x44\xc8\xb4\x9b\xd5\xb5\x02\xbe\xf4\xf5\xef\xe1\xdb\xdf\ -\x79\x1e\xe5\x72\x39\xd4\xc9\xbe\x7f\xac\x07\xf7\x1e\x9d\xc0\xd8\ -\x60\x97\xa4\xa3\xfb\xe5\x95\x1e\x68\x4d\x33\x41\xfd\x63\xcf\xdb\ -\x19\x60\xf3\x34\x40\x8a\x09\x06\x6b\x45\xb1\xe7\xae\xb2\x80\x82\ -\x3f\xcf\xfc\x31\xff\xb1\xdb\xb8\x8b\xd7\x4d\x5e\x8d\x94\xb9\x1a\ -\x3a\x58\x71\xf1\x2c\x90\x00\xfe\xbd\x0e\xf9\x71\x88\x22\x3a\xab\ -\x4a\x09\x0d\xd9\xc2\xd5\x95\x19\x05\x58\xd1\x8c\x3f\xc3\x8f\x5e\ -\x13\xa7\x1b\xf1\x6a\xb4\x4b\x2f\x54\x44\x1f\x55\x2b\x9f\xaa\xb7\ -\x44\x15\xae\x3b\x0e\x0b\xef\xd4\xa7\x55\x59\xb9\xb4\x08\xd0\xe7\ -\x33\xdd\xa3\xfd\x24\x95\x3e\x82\x90\x69\x37\x97\xaf\xce\x62\x73\ -\xb3\x88\x7d\x7b\xc6\x90\xcf\xe7\x99\x78\xe1\x34\x08\xd0\x93\xcf\ -\x60\x6c\xa0\x0b\xe5\x4a\x03\x1b\xa5\x9a\xd3\x14\x24\xc1\x83\x65\ -\x06\x92\x79\xb4\xbb\xf4\xeb\xef\xbf\x2c\x86\x26\x5f\x28\xa4\x64\ -\x2b\x8a\xbf\x06\xec\x79\x06\xb7\x89\x30\x71\x26\x2b\x8a\x7a\x69\ -\x08\x1b\xc6\x3f\x36\x54\xd2\x67\xf4\x28\x11\xe2\x9d\x7f\x28\x13\ -\xc0\xe9\x31\x71\x9e\x65\x1b\x7c\x12\x4d\x38\x5f\x2f\x2e\x1f\xf6\ -\x93\xd1\xd3\xe6\xe1\x7e\x61\xc3\xf5\xba\xf2\xa7\xb6\x6c\x49\x9f\ -\x3a\x9f\x5c\x9c\x13\x30\x39\xd2\x83\x3d\xc3\xf2\x78\xe7\x98\xce\ -\xf4\xce\xdb\x65\x06\x49\x37\x91\x66\xcb\x69\xba\x05\x62\x6d\x4e\ -\xbf\x3c\xdb\x28\xaf\xff\x5e\xdf\xa1\xfb\xe6\x52\xb9\xde\xbf\x0c\ -\xa8\x37\x90\x20\x84\xa0\xd6\xb0\xf1\xfc\x8b\x6f\x62\xa3\x50\xc4\ -\xfb\x9e\x7c\x00\x13\x13\x63\xe0\x17\x5a\x0f\xbe\x51\x4a\xd1\xd7\ -\x9d\xc1\x5d\x47\xc6\xd0\x75\x39\x8d\xf3\x33\xeb\xb0\x6d\xca\xf3\ -\x2c\x2a\xa4\x84\xbc\x8d\x4d\xbd\x10\x48\xc9\xe5\xcb\x56\x14\x7f\ -\xde\x42\x22\x20\xb4\x49\x41\x40\xd0\x9d\x4f\x21\x9d\x62\x60\xa3\ -\x18\xc5\x46\x15\x81\x6c\x58\x00\x84\x80\x3a\xdc\x77\xea\x87\xa8\ -\xc3\xd8\xfc\x68\x90\x96\xba\x8a\xa2\x0e\xf7\xe2\x2b\xc2\xbd\xef\ -\xd4\xff\xce\xe6\x6d\x28\x83\xd2\x90\x78\x27\x9c\x06\x85\x19\xea\ -\x22\x9e\xaf\x3a\x6f\x4a\x29\xba\x73\xc2\x6b\x4e\x82\x74\x6d\x96\ -\xa8\x39\xc7\xae\x41\x33\xa0\xea\xb4\x6c\x17\xe0\xac\xf2\xf2\xf9\ -\x8d\x7a\x79\xf5\xdf\x0f\xde\xf8\xe4\x6c\xba\x6b\xf0\x57\x41\xac\ -\x09\x5d\x05\x29\x80\x37\xde\xba\x80\x42\xa1\x88\xf7\x3f\xfd\x20\ -\xae\xbf\xee\x80\xf6\x74\x28\x75\xb6\xe6\x3a\x71\xfd\x08\xba\x72\ -\x69\x9c\xbd\xb2\x8a\x6a\xdd\x86\x79\xbd\x06\xc3\x95\x11\x9b\x17\ -\x82\x31\xca\xe1\x92\xb5\xda\xb8\x60\x35\x14\x9d\x30\xd1\xd2\x0a\ -\xca\x50\xfb\x44\x78\x90\x7a\x92\x4a\x11\x1c\xd9\xd7\x8f\xd1\xfe\ -\x9c\x12\x50\x00\xb8\x97\x4d\x7c\x76\xa9\x14\x44\xa5\x30\x2a\xa6\ -\xa5\x7c\x12\x0e\x08\x42\xc6\x94\xc9\x84\x4a\x65\x52\xe9\x98\xf2\ -\x19\xb3\x39\x30\x65\xf0\x16\x54\x50\x04\x35\xe6\xcf\x60\x39\x48\ -\xab\x04\x34\x9f\xb9\x0c\x6c\xbe\x0e\x14\x14\x99\x74\x94\x5d\xf1\ -\x76\xb6\xec\x44\x50\x6d\xa7\x90\x7a\x71\xb9\xba\xf4\xfa\x67\xff\ -\xf7\xd0\xd1\x67\x17\x32\xbd\x13\xbf\x41\xac\xd4\x4d\x5a\x65\x42\ -\x70\xe9\xea\x1c\xfe\xf0\xf3\x7f\x8a\x67\x9f\xbc\x1f\xb7\x1e\x3b\ -\x82\x54\x2a\xc5\x2d\xb0\x07\x04\x60\x4b\xa5\x08\x6e\xde\x3f\x88\ -\xee\x5c\x1a\x6f\x5c\x5c\xc6\x66\xb9\x0e\x22\xce\x49\x67\x7d\x33\ -\x10\xad\xa9\x88\xdd\xe4\x2a\x37\x0c\x67\x69\xf1\x90\x82\x11\x52\ -\x3a\x40\x11\x0d\xb4\xc0\xa5\xcf\xa6\x53\xe8\xca\xa6\x95\x56\x93\ -\x27\xfc\xfb\x45\x35\xe1\xc1\x41\x28\xac\x20\x82\x82\x2a\xc0\xa1\ -\x28\x4b\x80\x4f\x78\x1e\x94\xb3\x0d\x7c\xa3\x9a\x52\x09\x8c\xd1\ -\xa1\xa6\x02\x55\xa0\x24\x5e\x2b\xca\x64\xc8\x67\x13\x94\x68\x53\ -\xf1\x1a\xee\x3e\x69\xc6\x47\x15\xd7\x17\xb5\xd3\x7d\x54\xf2\x27\ -\xb5\x51\x5a\x38\x7b\x21\xd3\x3d\xfc\x5a\x2a\xd7\x77\x3d\xb1\x52\ -\xfb\x74\x17\x90\x10\x82\x62\xb1\x8c\x0b\x17\xa7\x90\x49\x11\x4c\ -\x4e\x8e\x21\x9d\x66\xf9\x2f\x4e\x24\x06\x06\x7b\x72\x18\xe8\xcd\ -\x61\xbd\x58\x45\xb9\xda\x60\x1c\xd2\x26\xdf\x14\x1b\x1e\xc5\x37\ -\x65\xf6\x4b\xb1\x23\xa0\x8d\x3e\x2b\xef\x3b\x43\x3c\xcf\x29\xae\ -\x82\x14\xeb\xb9\x4a\x59\x16\x26\x87\xba\xd0\x93\x4f\x45\x7a\x4f\ -\x98\xf5\x56\x15\xe1\x6c\x09\xea\xf7\x4e\x61\x5c\x19\xf2\x81\x02\ -\x26\x8c\x4f\x8c\x86\xe4\xa9\x38\x56\xe5\xa7\x3b\x56\x83\x53\xf8\ -\xce\x5a\x54\x6d\x28\x43\xbc\xba\xbb\xc9\x47\x95\x38\xd3\x0d\x4e\ -\xf6\xf2\xf2\xf9\x59\x92\xca\xbc\x98\xee\x1e\x1e\x23\x56\xfa\x7a\ -\x68\x7a\x49\x09\x21\xa8\x54\x6b\xb8\x78\x79\x06\xd5\x4a\x15\xfb\ -\xf7\x8e\x23\x9b\xcb\xfa\x59\x71\xa0\x72\xff\xed\xed\xce\x60\xa4\ -\x3f\x8f\x62\xa5\xe6\x58\x56\x06\x20\x45\x82\x90\x18\xae\x80\x5d\ -\x24\x1d\xa6\x0e\xc1\x77\x57\x57\x68\x22\xfa\x37\x8a\x1d\x1b\xc5\ -\xfc\x59\x16\xc1\x9e\xe1\x2e\xf4\x76\x65\xe0\x01\xdb\xf4\xb4\xcb\ -\x8e\x7a\x08\x75\x60\xea\xa2\x7a\xda\xf8\x8b\xac\x52\xd0\x07\x91\ -\x90\xac\x94\xfa\xbc\xd9\x1c\xe7\x4d\x26\x51\x22\x15\x85\x37\x4d\ -\x0b\xa5\x8f\xb1\xed\xa0\x8a\x6a\xb7\xc5\xb6\xef\x76\x02\xa8\xc2\ -\xf4\xb6\x13\x60\xa4\xba\x3e\xb5\x6a\xd7\x4a\xcf\x67\x9d\x69\x37\ -\x47\x01\x62\x98\x76\xd3\xc0\x95\xe9\x39\xac\xae\xae\x63\xef\x9e\ -\x31\x74\x77\x77\x2b\x1e\xfc\xe0\x89\xee\xca\xa5\x30\x3e\xd0\x85\ -\x5a\xc3\xc6\x7a\xb1\xe6\xe7\xa3\xb5\xa6\xdc\x7c\x62\x2d\x19\x23\ -\x86\xb3\xf9\xc5\x81\x14\x61\xcf\x01\x10\xc7\x40\xa9\xc4\xb2\x08\ -\xf6\x0c\x75\xa1\x27\x9f\x0e\x32\x8f\x30\x50\x54\xf4\x8b\xf1\x61\ -\xc2\xd3\xa0\x3f\x14\x5b\xaa\x8a\xf8\xf8\x68\x89\x9c\x42\x2c\x2f\ -\xf2\x60\x26\x43\xad\x62\x51\x8a\x84\x46\x13\xbc\x37\x2d\x2a\xdd\ -\xa7\x0e\x4c\x51\xf5\x9a\x05\x98\x2e\x3c\xae\x9e\x55\x2f\x2e\x95\ -\x6a\x85\x85\x17\x33\xfd\x93\x9b\x56\x2a\x77\x1c\x84\xe4\xa1\x10\ -\x42\x88\x3b\xed\x66\x09\xb3\x73\x0b\x98\x1c\x1f\x76\xa6\xdd\x70\ -\x3f\xbc\xc1\x13\x4c\xe0\x4c\xbb\x19\x1b\x70\x80\xb6\x56\xac\xc2\ -\xa6\xd0\x83\x4a\x01\x18\xb3\x35\xa5\x87\x1e\xfb\x22\x19\xb7\xdf\ -\x12\xac\x17\xc2\x46\x32\x17\x4e\x35\x34\x21\x68\xfa\x29\x5c\xa1\ -\x21\xc0\x52\x0f\x10\xe5\x8e\x78\x23\x81\x70\xa1\x0a\xe3\x4a\x49\ -\x2a\x5e\x43\x93\x87\x49\x48\xb3\xa1\x9a\xb2\xa3\xe7\x06\xee\x7e\ -\xab\x4e\x91\x84\x9c\x86\x03\xaa\x4a\x33\xa0\xea\x98\xe5\xa4\x93\ -\xa8\x73\xfd\xb6\xf3\x33\x2a\xc0\xe2\x86\xc7\x01\x1d\x69\x54\x0b\ -\xf5\xf2\xf2\xf9\x57\xb3\xfd\x7b\xa6\xad\x4c\xf7\x31\x42\xc8\x80\ -\xe9\xc2\x2e\xad\xac\xe3\xf2\x95\x19\x0c\x0d\xf4\x61\x64\x64\x88\ -\x71\x8a\x13\xe9\x25\x4a\xa7\x2c\x8c\x0c\xe4\x91\x4b\xa7\xb0\xba\ -\x59\x45\xbd\x41\x83\xc1\x91\x40\x04\x6b\xa9\xf5\x66\xa1\x0e\x52\ -\xa2\x15\x25\x8f\x22\xf7\x92\x11\xe9\xcf\xb1\xa8\xba\xd1\x93\xcf\ -\x08\x97\x95\xbd\xc2\xc4\x05\x3c\x85\x6d\xdb\x4e\x37\xbb\xf7\x67\ -\x53\xd8\x94\x82\xd2\x20\xdc\xb6\x99\x78\x37\xdc\x0f\x73\x3f\x6d\ -\x4f\xdf\x3f\x66\xf4\x6d\xf6\xd8\x2b\xc3\xd6\x97\x29\x96\xc7\x1d\ -\x7b\x65\xf3\xe9\xa9\x26\xbd\x4d\x29\xa8\x74\x8e\xc2\xb1\x70\x6e\ -\xd1\xe2\xa2\xd5\xd5\xd3\x83\x7b\x4c\x28\x50\x2c\x16\xf1\xfa\x99\ -\x73\xad\x5a\x54\x9d\x70\xd5\x73\x79\xee\x86\x5e\x3f\x7e\x80\x52\ -\xf3\xe1\x61\x7a\x61\xf9\x11\xbb\x5a\x6c\x2c\xbf\xf1\xf9\x2f\x0d\ -\x1e\x79\x7a\x31\x3b\xb0\xff\x37\x88\x95\x3e\xae\xcb\x9c\x10\x82\ -\xe9\xb9\x25\x7c\xe6\x0b\xff\x07\xcf\x3c\xbe\x89\x3b\xef\xb8\xd5\ -\x71\xb2\x53\x75\x01\x29\xe2\x6c\x29\xdf\x95\x4b\xe3\xf5\x8b\xcb\ -\xd8\x28\xd5\xc0\x9b\x3d\x10\x8e\xe5\xaa\xf2\x2a\xd1\x47\xbb\x83\ -\x8d\xd5\x40\x8a\x9f\x43\x28\xa4\x91\x2a\xa1\xae\x32\x40\xfc\x5e\ -\x2a\xc7\x82\xac\x61\x6a\x69\x13\x73\xd3\xd3\x98\x9f\xba\x8a\x4a\ -\xb9\xe2\xbc\x40\xc2\xb5\x89\xf5\x1e\x50\xe3\xa1\x3a\x01\x0d\xcd\ -\x26\x96\x88\x43\x08\xa2\xd6\x37\x52\x5d\xc3\x42\x43\x33\x09\x7a\ -\x1a\x09\x21\x28\x57\xaa\x28\x16\x4b\xc6\x29\x61\x3b\x41\x3c\x50\ -\x85\xbd\xb4\xad\x42\x41\x27\xad\xa6\xef\x44\x59\xc6\x73\xa5\xd4\ -\xc6\xca\xd9\xaf\x3d\xd7\x7f\xdd\x83\xbf\xd9\x35\x76\xe4\xef\x91\ -\x54\xf6\x41\x18\x9c\xec\xab\x6b\x05\x7c\xf1\x6b\xdf\xc1\xda\x7a\ -\x01\x0f\xdd\x7f\x17\xba\xba\xbb\xf8\xae\x7a\xa1\xa4\xbd\x23\xdd\ -\xc8\x65\x53\x78\xfd\xe2\x0a\x96\xd6\xcb\x7c\x7e\xaa\x4f\xc2\xc2\ -\x83\x84\x28\xab\xcf\x2c\x00\x17\x93\xd8\x08\x29\xf5\xc0\x51\x39\ -\x63\x59\x87\xd0\x20\xff\x42\xb9\x86\x6f\x7f\xef\x25\xbc\xf9\xd2\ -\x4b\x28\x97\x8a\x11\x6e\xcd\x7b\x45\xb6\x10\x1a\x04\xce\x32\xda\ -\x66\x69\xc7\x00\x07\x1a\x31\x5c\x79\xac\x5a\x33\xbd\x9d\xcd\xb1\ -\x30\x7f\x50\xdc\xf4\x3b\xe6\xb3\xb2\x7a\x79\x91\xda\xf5\x1f\x66\ -\x7a\xc6\xfa\x49\x2a\x73\x23\x4c\xd3\x6e\x6a\x75\x5c\xba\x32\x83\ -\xcd\x62\x11\xfb\xf6\x8e\x23\x9f\xcf\x33\x2f\xba\x60\x95\x10\xa0\ -\x3b\x9f\xc1\x68\x7f\x1e\xe5\x6a\x03\x85\x52\xdd\x57\x33\x35\xfb\ -\x62\x4f\xb9\xd1\x36\xf9\xe4\x75\xad\x82\xef\x6e\xbc\x70\x77\x88\ -\x1b\x2a\xfe\x97\xb2\x88\xec\xa3\x72\xd3\x59\x84\x60\x61\x71\x0d\ -\xdf\xf8\x93\x6f\x61\xb3\xb0\x01\xcb\xb2\xf8\x55\x19\x92\xbf\x2d\ -\xfb\x33\x88\xa9\xe9\xd7\x2c\x78\xe2\xea\x01\x68\x1e\x54\x71\x3f\ -\x75\x60\x8a\xaa\xd7\xe9\xf0\x66\xd2\x5b\xb5\xc2\xfc\x46\xbd\xbc\ -\xfa\x42\xb6\x6f\x82\x5a\xe9\xec\x2d\x00\xc9\xaa\x2e\x32\x21\x04\ -\x0d\x4a\x31\x35\x3d\x8f\xc5\xa5\x15\xec\x99\x18\x41\x5f\x5f\xaf\ -\x17\xc9\x15\xe2\xf9\x93\x72\x99\x14\xc6\x06\xf3\x68\xd8\xc0\x7a\ -\xb1\xea\xce\x11\x94\xe1\xd3\x54\x0f\xa0\x90\x87\x12\x60\x6c\xdd\ -\x18\x3f\x14\x6b\xb8\x79\x80\xf2\x9d\x69\xc2\x5f\xe0\xa3\x92\x3d\ -\x0c\xc4\xb2\x70\xf9\xca\x34\x9e\xff\xe1\x2b\xb0\x6d\xed\x5c\xf0\ -\x44\xb6\x57\x28\xb5\x6b\x5f\x16\xd6\xa3\x6a\x37\xa0\x22\x89\x69\ -\x17\x9a\x6d\xb7\x5a\x76\xc1\x27\x69\x94\xd7\x2a\xd5\xb5\xab\x2f\ -\x67\xfa\x26\x97\x53\x99\xfc\xad\x20\x44\xb5\x1e\xb1\x9f\x68\x7e\ -\x61\x05\x57\xa7\xe7\x30\x36\x32\x80\xa1\xa1\x01\xa5\xef\xc7\xc3\ -\x49\x26\x65\x61\x74\x20\x8f\x54\x8a\x60\x6d\xb3\x86\x86\x4d\x61\ -\xb9\xe6\x93\x0c\x22\x3d\xa8\xa2\x0d\x22\xd5\xe8\x88\xf9\xb0\x75\ -\xf4\xbd\xfd\x4a\x4e\xf9\x16\x55\xaf\x0a\x54\x84\xe0\xf2\x95\x69\ -\xbc\xfc\xea\xdb\x09\xa8\x76\xae\x14\x1a\xd5\xcd\xff\x52\x9c\x7b\ -\xfd\x12\xf4\xed\xd1\x8e\x3b\xd2\x81\x78\xa0\x6a\x57\x78\xb3\x7a\ -\xcd\x7e\x46\xad\x9f\x98\x36\x72\x7a\xbb\x5e\x6e\x94\x97\xde\x39\ -\x93\xe9\x1d\xbf\x98\xca\xf6\x1e\x25\xc4\x1a\xd6\xdd\x01\xcf\x6f\ -\x75\xe1\xd2\x34\xfa\xfb\xba\x31\x3e\x36\x02\xcb\xb2\xb8\x9c\xd9\ -\xee\x71\x8b\x10\x0c\xf7\xe5\xd1\x9d\x4b\x63\xad\x58\x45\xad\x61\ -\x33\xc3\x12\x54\x40\x8a\xdf\xec\xd3\x35\xf9\xb8\xe6\x9e\x64\x45\ -\x09\x17\x46\x31\x3e\xc1\xf2\x9a\x7e\xb9\x8c\x0f\x51\xd6\xa2\x9b\ -\x9a\x9e\xc7\xcb\xaf\x25\xa0\xda\xb1\x42\xed\x57\x2a\x2b\x97\xfe\ -\x53\x65\xe5\xe2\x26\xf4\xa0\xe2\x52\xb4\x29\x5c\x92\x9d\xb8\x01\ -\x69\xa7\x9a\x73\x9d\xfd\xa4\x36\xca\x8b\xe7\x2e\xa4\xf3\xfd\x6f\ -\xa4\xf3\x03\xd7\x13\x2b\xb5\x57\x77\xd1\x09\x21\xd8\x2c\x96\x71\ -\xde\x9d\x76\xb3\x77\x0f\x3f\xed\x86\x88\x4d\x2c\x02\x0c\xf4\xe4\ -\x30\xd0\x93\xc5\x7a\xb1\x86\x4a\xad\xe1\x9c\x38\x51\x59\x51\xe6\ -\x66\x5f\xac\xa5\x8c\x85\xe6\x5e\x00\x24\x19\x50\x7a\x8b\xca\x6b\ -\xfa\x11\x3e\x6d\x02\xaa\x9d\x2d\xd4\x7e\xbd\x51\xd9\xf8\x9d\xe5\ -\x33\x5f\x7a\x83\x0d\x15\x3e\xa1\x39\x46\x88\x5e\xdc\xf0\x8e\x0c\ -\x4f\x68\xf7\xb0\x81\x76\xe5\x1b\xa5\x2c\x7f\x5a\x69\x73\x9f\x94\ -\xac\xbd\xfb\xcd\x57\x1a\x95\x8d\x7f\xd8\x3d\x79\xfc\x6f\x5b\xe9\ -\xfc\x93\xba\x6b\x4c\x08\xc1\x46\xa1\x88\xaf\x7c\xe3\x2f\xb0\xb6\ -\x5e\xc0\x13\x8f\xde\x8b\x9e\xde\x1e\x7d\xaf\x36\x01\xc6\x07\xf3\ -\xb8\xeb\xa6\x51\xbc\x71\x69\x05\xf3\x6b\x25\xa6\xf2\xfa\xd3\xf7\ -\xe2\xcd\x17\x88\x30\xc8\x25\x72\x3a\xc2\x97\xc3\x59\x5a\x72\x61\ -\x21\x42\xb8\xe2\xf4\x77\x86\x56\xec\x7a\xe9\x79\x6a\xd7\xd7\x0c\ -\xda\xaa\xd9\x6c\x72\x18\x31\xe9\x1b\xd2\x09\x69\x18\x4b\xd7\x38\ -\xd5\x50\x28\x54\x93\x2f\x11\xa7\x36\x1a\xca\x27\x9a\x70\xe1\xfe\ -\x13\x13\x40\x88\x26\x9c\xad\x12\x01\x28\xad\x51\x6a\x5f\xa9\x17\ -\x97\xbf\xba\xfc\xe6\xe7\xdf\x84\x59\xda\xea\x87\x32\x89\x0e\x54\ -\xe2\x8b\x28\x86\xeb\xf4\x9b\x0d\x6f\xb6\xbc\x56\x41\x13\x56\x4e\ -\x9c\x73\xf1\xc7\x5b\x15\xae\xbe\x70\xa9\x51\x5e\xff\x9d\xde\x83\ -\xa7\xe6\x53\xd9\x9e\x4f\x00\xfa\x91\xec\x95\x6a\x0d\xdf\xfe\x8b\ -\x97\xb0\xbe\xb1\x89\x67\x9f\x7e\x10\xa3\x23\xc3\xd2\xea\x0b\xde\ -\x01\xa5\xc0\x40\x4f\x06\x77\x1c\x1e\xc1\x99\x2b\xab\xb8\xba\x58\ -\xe4\x67\xe5\x33\x15\x0c\x9f\x1e\x42\x14\x69\x98\x4f\xc2\x02\x29\ -\x08\x50\x42\x4a\x6c\xb2\x32\xe7\xe7\x59\x57\xd2\x93\x1b\x52\x3d\ -\x0a\xbb\x50\x5a\x78\xfb\xbf\x17\xae\xfe\xf0\x0c\xb1\xd2\x96\x1f\ -\xac\x7e\xe1\x54\xbf\xc8\xd4\xa0\xe7\xbe\xd4\x24\x4c\x4f\x11\x47\ -\xa8\x51\x97\x98\x75\x09\x7f\x1e\x62\x1a\x31\x9d\x90\x3f\x97\x46\ -\x2a\x83\x78\xf1\x7c\x1d\xdc\x30\xb1\x2e\x41\x5e\xc4\x89\xa3\x00\ -\x81\xdd\xa8\xd9\x8d\xf2\x6a\xd5\xd5\xb5\x14\xb7\xae\x5d\xcd\xbb\ -\xa8\x56\x15\x00\x19\x54\xed\x02\x4b\xbb\x40\x14\x96\x3e\x2c\x9f\ -\x38\xe7\x16\x17\x6a\x6c\xb8\xa8\x63\x95\x16\xdf\x5e\x6a\x54\xd6\ -\xff\x5d\xff\x0d\x8f\xcc\xa7\xf3\x83\xbf\x08\x42\x06\x55\x95\x22\ -\x84\xc0\xb6\x29\x5e\x7c\xe5\x2c\xd6\x37\x36\xf1\xa1\x67\x1f\xc6\ -\x81\x03\x7c\xab\x91\x2b\x9c\x02\xdd\xb9\x14\x6e\xbb\x6e\x18\x5d\ -\xb9\x34\xce\xcf\x6e\x38\x5b\xca\xb3\x9a\x9a\x06\xaa\xb4\x9c\xb1\ -\xa4\xc7\x39\xa9\x98\xf2\x35\x90\x52\xf8\xd4\x74\xc2\x5e\x28\x3f\ -\x84\x28\x11\xc6\x9c\xac\x5d\xa7\x76\xa3\x4e\xed\x86\xf8\xc2\x44\ -\x07\x52\x6c\x10\x45\x8a\xf3\xbe\xc7\xc9\x27\xee\xa7\x58\x46\x3b\ -\xf3\x0e\xfb\x4c\x41\xbe\x31\xed\x6a\xc6\x35\x05\x3e\xd5\xd8\x1f\ -\xc9\x59\x2c\x84\xb7\xeb\x53\xcc\x5f\xd4\x09\xab\x47\x98\x7e\x3b\ -\xea\xd6\xca\xa7\xd5\xa8\x16\x6a\xe5\xe5\xf3\xaf\x65\xfa\x26\x67\ -\xad\x6c\xf7\x2d\x84\x90\x7e\x18\x64\x69\x79\x0d\x17\x2f\xcf\x60\ -\x64\xb0\x1f\xa3\xa3\xea\x69\x37\x9e\xa4\x52\x16\x46\xfa\x73\xc8\ -\xa5\x2d\xac\x15\x6b\xce\xb4\x1b\x4b\xdd\x1b\x18\x67\xee\xa0\x17\ -\xcf\x39\xcc\x85\x21\x0b\x6c\x19\xbe\x1e\xe3\xb7\xf2\xfe\x2c\x22\ -\x8f\xa3\x0a\x98\xe8\xfa\xa8\x5e\x3d\xeb\xac\x78\x2a\x4b\xa9\xb6\ -\x31\xf7\x8d\xea\xfa\xd4\xa2\x10\x1e\x05\x58\xa6\xf8\x08\xcd\x36\ -\x65\x5c\x58\x59\x9d\x92\x66\xdd\x1a\xa6\xb4\x44\x13\x2f\xfe\x9e\ -\xc4\x1a\xeb\xd4\x06\xd1\xe6\xaf\x5b\xfa\x4f\xf5\xf2\x6d\x05\x20\ -\x3a\xfd\xb9\xe5\x79\x50\xbb\x6e\x97\x17\xdf\x79\x27\xdd\x3d\xfc\ -\x76\x2a\xd7\x77\x13\x21\xd6\xb8\xee\x66\x78\x7e\xab\x77\x2f\x5c\ -\x45\x77\x3e\x8b\x3d\x93\x63\x48\xa5\x52\x52\xe9\x3e\x30\x08\xc1\ -\x60\x6f\x0e\x7d\xf9\x0c\xd6\x4b\x35\x54\x6b\x0d\xc6\xc1\x6e\x02\ -\x91\x0c\x24\x1e\x42\xd1\x57\x62\x60\x01\x15\x10\xcb\xf9\x4c\x59\ -\x04\x13\x83\x79\x77\xae\x5f\x70\x0e\x04\x51\x40\x45\x4b\xb5\xc2\ -\xdc\x9f\x54\xd7\xa6\x16\xc4\x08\xc3\x71\xfc\x26\x60\x73\x96\x54\ -\xdc\x38\x53\x1a\x9d\xb4\x33\x8f\xb0\xbc\xa3\xea\xb7\x7a\x9e\x51\ -\xcb\x35\x0e\x4f\x60\x65\xab\xc1\xb1\x95\x10\x14\xf3\x6e\xa6\x8c\ -\x98\xe5\x52\x94\x97\xde\xbd\x92\xca\x74\xbd\x9a\xee\x1a\xda\x47\ -\xac\xd4\x01\x21\xaf\x20\x53\x42\x50\x2a\x57\xf0\xee\xc5\xab\xa0\ -\xb6\x8d\xfd\x7b\xc7\x91\xc9\x66\x04\x9d\x20\x7b\x02\xa0\xb7\x3b\ -\x83\xc1\xde\x1c\x36\xcb\x75\x94\xaa\x0d\x84\x0f\x4b\x68\x61\x28\ -\x83\x5b\xa8\x38\xc9\x19\xde\x24\x6a\x0f\x5c\xc4\xb1\xa8\x26\x06\ -\xbb\x82\x5e\x3f\xe6\xaa\x58\x84\xe0\x6a\x38\xa8\xbe\xae\x00\x15\ -\x10\xdd\xaa\x6a\x67\x53\x30\xae\x7e\xd4\xa6\x5d\x54\xdd\xb0\xf3\ -\x6f\x47\x53\x33\x4a\x78\x33\xd2\xb2\xd3\x3d\x0c\x54\xec\xf7\x9d\ -\x6a\x55\x89\x75\x68\xa5\x2e\x9d\xd2\x25\x00\x48\x65\xf5\xca\x02\ -\xb5\x6b\x2f\x64\x7a\x46\x07\x48\x2a\x73\x18\x21\xd3\x6e\x2e\x5e\ -\x9e\xc6\xe6\x66\x11\x07\xf6\x4d\xf8\xbb\xdd\x10\xfe\x1f\xff\x6b\ -\x77\x2e\x8d\x91\xbe\x3c\xca\xb5\x06\x0a\xe5\x60\xda\x8d\x79\x58\ -\x82\xb9\xd9\x17\x75\x25\x06\x45\xcb\x14\x80\x3b\x3c\x61\x90\x6d\ -\xfa\x31\x56\x98\x6f\x51\xe9\x86\x27\xd0\x62\xad\x30\xff\x27\xd5\ -\xb5\xab\x0b\xcc\x75\x8c\x0b\x28\xf6\xfb\x56\x5a\x5e\xed\x86\x54\ -\x54\xa8\xb4\x02\x84\xed\xb6\xa6\x8c\x75\x34\xad\xfa\xbe\x93\x81\ -\xd2\x2c\x4c\xda\x0d\xa4\xb8\x75\x22\xb5\xc2\xfc\x46\xbd\xb4\xfa\ -\x42\xb6\x77\x02\x51\xa6\xdd\x5c\x9d\x9e\xc7\xfc\xc2\x32\xf6\xee\ -\x19\x95\xa6\xdd\xf8\x99\xbb\x87\xd9\x4c\x0a\xa3\xfd\x39\xd8\x94\ -\x62\xa3\x58\x83\xed\xe6\x13\x06\xaa\xa6\x9a\x7d\x62\xb8\x17\xc7\ -\xcc\x21\xb3\x08\xc1\xc4\x50\x1e\x3d\xee\x2e\x28\x84\xfd\xd7\x8a\ -\x02\xaa\xb9\xaf\x47\x04\x95\x29\xae\x5d\x8e\xf7\xa8\x61\xad\x40\ -\x4a\x25\xcd\x00\x20\x2e\xd8\xda\x61\xd9\x85\xd5\xbf\xa5\xf0\x28\ -\xa0\x62\xbf\x6f\x95\xf5\x24\x96\xd5\xc9\x26\x60\xab\xba\x61\x71\ -\xa2\x58\xce\xb4\x9b\x2b\x2f\x67\xfa\xf6\xac\x44\x99\x76\x33\xb7\ -\xb0\x8c\x2b\x53\xb3\x18\x1f\x1d\xc2\xf0\xf0\x00\x97\x3d\x6b\x61\ -\x11\x38\xd3\x6e\x46\xfa\xf3\x48\xa7\x1c\x27\xbb\x6d\x53\xb7\x49\ -\x26\x83\x4a\x02\x8e\xc2\xca\x92\xe1\xc4\x5b\x53\x41\xcf\xa1\x3f\ -\x4c\xd5\x97\xc0\x47\x25\x2f\x6f\x13\xcd\xa2\x32\x82\x0a\x8a\xb0\ -\x76\x36\x03\x55\x61\xdb\x15\x17\xc7\xa1\xdf\x49\xf8\xb4\x0b\x80\ -\x61\xf9\x49\x12\xb6\x8f\xce\x4e\x04\x8d\x18\xb6\x13\x9a\x7a\xb1\ -\xe3\xec\x7a\xb9\x5e\x5e\x7a\xe7\xcd\x4c\xef\xc4\xc5\x54\xb6\x27\ -\xd2\xb4\x9b\xf3\x17\xaf\xa2\xbf\xb7\x1b\x13\xe3\xc1\xb4\x1b\x11\ -\x54\x70\x7d\x43\x43\x7d\x39\x74\x65\x53\x58\x2f\x56\x51\x73\x17\ -\xe2\xf3\xf2\x72\x3e\x19\xe8\x28\x21\x86\x18\x56\x16\x3b\xd9\x39\ -\xf8\x73\x7c\x54\x79\x45\xaf\x1f\x89\xda\xf4\xfb\x7a\x75\xed\xea\ -\xbc\x70\x2d\x81\xd6\x9a\x80\xba\xef\x71\x9a\x55\x3b\x05\x52\xed\ -\x00\x43\xab\xf0\x81\x26\x9d\x49\x62\xa7\x8d\x0a\x2a\xf6\xfb\x56\ -\x35\xd3\x5a\xc9\xa3\x53\xcd\xb7\xf6\xc6\x51\x1b\xe5\xc5\xb7\x2f\ -\xa4\xf3\x03\x91\xa7\xdd\x9c\xbb\x70\x15\xe9\x94\x85\x7d\x7b\xc7\ -\x91\x49\xa7\x99\x12\xf8\xb1\x4d\x16\x01\xfa\xbb\xb3\xe8\xef\xce\ -\xa0\x50\xaa\xa3\x5c\xb3\xfd\x26\xa0\x0f\x9d\x98\xab\x31\x44\x5f\ -\x32\xc6\xf9\x4b\xb9\x4d\x3f\x7f\x03\x4c\xc2\x9f\x4f\x28\xa8\x36\ -\xe7\xbf\xe6\x5a\x54\x52\x64\x8c\xe3\x56\x9b\x84\xdb\x09\xb0\x56\ -\x9a\x8d\xed\xb4\xbe\x4c\xd2\x6e\x2b\x4b\x29\x51\x76\x26\x8c\x0b\ -\x81\x4e\x5a\x4f\x9d\xca\xab\x93\xf9\x88\xdf\xa5\xeb\x5b\x59\xb9\ -\x38\x43\xac\xd4\x8b\xe9\xee\xe1\xf1\x28\xbb\xdd\x9c\xbf\x38\x85\ -\x6a\xa5\x82\x03\xfb\x26\x90\xcb\x65\xfd\x22\x58\x50\x79\xd0\xe8\ -\xc9\xa5\x31\xd4\x97\x43\xa9\xd2\x40\xb1\x52\x0f\xed\xf1\x0b\x05\ -\x95\xc6\x9a\xe2\x7a\x22\xdd\xa7\xc0\xb2\xdc\x5e\xbf\x1c\xbf\x5d\ -\x96\x97\x57\xb8\x45\xb5\xf0\xf5\xea\xda\x95\x79\x55\x64\x48\x58\ -\x27\xac\xac\xa8\xcd\xb0\xed\x82\x54\x27\x81\xd1\xa9\xa6\x5d\x14\ -\x98\x02\x88\x06\x2a\x60\x7b\x9b\x69\xad\x94\xdf\x09\x5f\x53\x94\ -\xb8\x30\x7d\x51\x8f\x54\xd7\xa7\x57\xed\x6a\xf1\x87\x99\xde\xb1\ -\x9c\x95\xca\xdc\x0c\x10\xed\x1c\xc1\x7a\xc3\xc6\xa5\xab\xb3\x58\ -\x59\x5d\xc7\xfe\xbd\xe3\xe8\xe9\xe9\x0e\x32\x15\x40\x05\x38\xbb\ -\x34\x8f\xf4\xe7\x50\x6f\x50\x6c\x94\x6a\xee\x32\xb4\x31\x41\x15\ -\xd7\xca\x02\xd3\xf4\xcb\xa5\xa5\xa7\x30\x62\xd3\xef\x6b\x1a\x50\ -\xf9\x4a\x9a\xef\x61\xc7\xed\x72\xa0\xab\xe2\x77\x92\xdf\xab\x9d\ -\x8e\xfe\x66\x9a\x93\x88\xa0\x6b\xd2\xf7\x25\x2e\xa8\xd8\xef\x5b\ -\x69\x2d\x79\xdf\xdb\x01\xb1\x76\xc6\xb5\xa2\x2f\xc6\x93\x7a\x71\ -\xa9\x58\x2b\xcc\xbf\x98\xed\x9b\x2c\x59\xe9\xfc\xad\xd0\xee\x76\ -\x03\x50\x0a\x4c\xcf\x2e\x62\x7a\x66\x01\x7b\x26\x86\x31\x38\xd8\ -\xcf\xe5\xc8\x82\x0a\x00\xb2\x69\x0b\xc3\xfd\x39\x10\x42\xb0\x5e\ -\xac\xb9\xbb\xdd\x44\x03\x15\x3b\x88\x34\x1a\xa8\x82\xa6\xdf\x78\ -\x2b\xa0\xda\x5c\xf8\x6a\x75\xf5\x0a\xeb\xa3\x8a\x03\x23\xf1\x38\ -\x4a\x5c\x33\xcd\xbc\xb0\xf8\xed\x02\x58\x2b\x4d\xc4\xed\x74\xe6\ -\x2b\x25\xce\xa6\xf4\x3b\xc5\xf2\xd9\x0d\xb0\x12\xbf\x9b\xf4\xb8\ -\x78\xbb\x5a\xa8\x95\x97\x2f\xbc\x9a\xed\xdb\x33\x9b\xca\x76\x1f\ -\x43\xc8\xb4\x9b\xc5\xe5\x35\x5c\xbc\x34\x8d\xe1\xa1\x3e\x8c\x8f\ -\x0d\x7b\xc4\x90\x40\x05\xe2\xf4\xc2\x0d\xf7\xe5\x90\xcb\x58\x58\ -\xf7\xa6\xdd\x10\xc1\x6f\xd5\x02\xa8\x58\xe7\xbc\xe7\x4c\xdf\x62\ -\x50\x45\xd1\x69\x15\x50\x61\xf1\xad\x58\x68\x5b\x01\xa9\x66\x9b\ -\x69\x51\xce\xbf\x15\x1f\x97\x51\xe2\x80\x0a\xd8\x39\x96\xcf\x4e\ -\x81\x95\xf8\x1d\x11\xd3\x98\xc2\x40\xed\x9a\x5d\x5e\x7c\xe7\x6c\ -\xa6\x67\xf4\x9d\x54\xae\xf7\x08\x21\xd6\x18\x34\x42\x08\xc1\x7a\ -\xa1\x88\x73\x17\xae\xa2\x2b\x97\xc5\x5e\x76\xda\x0d\x93\x3d\xeb\ -\x97\x1a\xe8\xcd\xa2\xd7\x9d\x76\x53\xab\xdb\x1d\xb2\xa8\x1c\x87\ -\x7e\x87\x41\x05\x4d\x78\x33\xcd\x3e\xf6\xb8\xd9\x66\x4e\x5c\x80\ -\x45\x4d\xd3\x29\x48\xed\x14\x4b\x2d\x54\x9a\x05\x15\xfb\x7d\xbb\ -\x60\xd2\xee\xfc\x11\x12\x16\xe5\x1a\x44\x29\x23\x4a\x79\x04\xa0\ -\x28\x2f\x9d\xbb\x92\xca\x74\xbf\x92\xee\x1a\x3c\x40\xac\xd4\x7e\ -\x5d\xbd\xbc\x69\x37\xe7\x2e\x5c\x81\x6d\x37\xb0\x7f\xdf\x04\xb2\ -\xca\x69\x37\x4e\xd6\x84\x00\xbd\xf9\x34\x06\x7b\xb2\xd8\x2c\x3b\ -\x3d\x82\x9e\x4e\x5c\x1f\x95\xe8\x4c\x67\xc6\xa2\x82\xb4\xe0\xa3\ -\x22\xa0\xc5\xfa\xe6\xe2\x57\x2a\xab\x97\xc3\x86\x27\xa8\x8e\xc5\ -\xb0\x76\x37\x01\xa3\x7c\xef\x54\xd3\xd0\x94\x76\x3b\x21\xd5\xac\ -\x75\x1a\x49\xe2\x82\x0a\x68\x2f\x78\x5a\xb5\x6e\xe2\x5a\x42\xba\ -\x73\x69\x87\x1f\x4a\x57\x56\x14\xff\x94\x2e\x3d\xa9\xac\x5e\x5e\ -\x00\xb5\x7f\x98\xe9\x19\x1d\x8c\xb2\xdb\xcd\x85\x4b\x33\x28\x14\ -\x36\x71\x60\xff\x04\xba\xba\xf2\x4c\x7c\x50\x84\xf7\xbd\x2b\x9b\ -\xc2\x70\x5f\x0e\x95\x9a\x8d\xcd\x72\x5d\xdb\xf4\x33\xf7\xfa\x09\ -\xba\xc1\x17\xc6\x99\x9e\x92\x9e\xe8\x48\x16\x55\x31\x32\xa8\x54\ -\xe1\x51\xad\xac\x56\x20\xd6\x4c\xbc\x4a\xb7\x59\xa8\xb5\xdb\xfa\ -\x0a\x8b\x6b\x35\xff\x28\x3e\x2e\xa5\x34\x03\x2a\x60\xeb\x9b\x7a\ -\x5b\x91\x4f\xd4\x38\xd3\x75\xd0\xe9\x45\x89\xd7\xe6\x5b\x2b\xcc\ -\x6d\xd4\xcb\x6b\x3f\x74\x77\xbb\x39\x06\xc3\xb4\x1b\x9b\x52\x5c\ -\x99\x9e\xc3\xfc\xc2\x12\xf6\xef\x19\xf3\xa7\xdd\x70\xa0\x62\x4a\ -\xc8\x66\x2c\x8c\xf4\xe5\x9d\x69\x37\xa5\xba\x0b\x11\x9d\xf5\xe4\ -\x84\x9b\xc7\x51\x05\x99\x3b\xa0\xca\x05\xe3\xa8\x84\xba\x86\x80\ -\x6a\xb3\xa6\xb7\xa8\x7c\xa5\x16\x8e\xe3\x34\x01\xa3\xe8\x34\xf3\ -\x42\x87\xc5\x6f\x65\x13\x31\x6a\x9c\x28\xad\x34\x05\x23\x4b\xb3\ -\xa0\x02\x76\x96\xdf\xa8\x5d\x3a\xe2\x77\xc4\x4c\x1b\x96\x06\x86\ -\x30\x53\x3e\xa4\x51\x5e\x2d\x57\xd7\xae\xbe\x94\xed\xdf\xb3\xe2\ -\xf6\x08\xf6\xc0\x20\x73\xf3\xcb\xb8\x7c\xc5\x99\x76\x33\x32\x32\ -\x28\x15\xc3\x36\xd1\xd2\x29\x0b\xc3\x7d\x39\xa4\x2c\x82\xf5\x62\ -\x1d\x0d\x77\xda\x4d\xb3\xcb\xbe\x78\x62\x11\x60\x7c\x80\x19\x99\ -\xce\x3c\x9e\xd1\x7c\x54\x1c\xa8\x9a\x71\x9c\x8b\x61\x71\xad\x27\ -\x93\x5e\x1c\xcb\x4a\x15\xde\x69\x80\x6d\x87\x45\x16\xe7\x3a\xc4\ -\x92\x56\x40\x05\xec\x0c\x58\x45\xa9\x4f\x54\x9d\x76\xc3\x2c\x4a\ -\xba\xc8\x69\xed\x7a\xb9\x5e\x5a\x7a\xf7\x8d\x6c\xdf\xe4\x25\x67\ -\x21\x3e\x6b\x08\xba\x0c\x09\xc1\xca\xda\x06\xde\xbd\x70\x15\x03\ -\x7d\xdd\x98\x98\xf0\xa6\xdd\x50\x48\xbe\x24\x38\x83\x33\x07\x7b\ -\x72\xe8\xca\xa5\xb0\x51\xaa\xa1\x56\xa7\x4d\xcc\xf5\xe3\x85\x1d\ -\x47\xe5\x3d\x9e\xd4\xfd\x37\x1a\xa8\x96\xbe\x5c\x59\xbd\x14\x07\ -\x54\xaa\xf0\xb0\x5f\xf2\x38\x4d\xb5\x56\xbe\xb7\xcb\x01\xdf\x6e\ -\x20\xb5\x9a\x67\xb3\xf5\x88\x25\xad\x82\x0a\xd8\x39\xb0\x6a\xd5\ -\x6f\xd5\xae\xe6\x5e\xbb\xbe\xab\xc5\x6e\xd0\xd2\xc2\xd9\x77\x33\ -\xdd\xc3\x6f\xa4\xf2\x7d\x37\x10\x12\x36\xed\xa6\x84\x77\xde\xbd\ -\x82\x74\xca\xc2\xfe\xbd\xe3\xfe\x6e\x37\x22\xa8\x3c\x87\x79\x5f\ -\x57\x06\xfd\x5d\x59\x6c\x94\x9d\xdd\x6e\x22\x5b\x55\x41\xa1\x3e\ -\x55\x38\x50\x81\x7f\x4a\x09\xc2\x41\x55\x2f\x2e\x7d\xb9\xb2\x62\ -\x04\x15\x10\x0f\x3e\x61\xf1\xcd\x58\x59\x9d\x70\xb0\xab\xe2\x3b\ -\x11\xd7\x6c\x5e\x5b\x0a\x29\xa0\xbd\xa0\x62\xbf\xef\x36\x58\xb5\ -\x0a\x24\x84\xc4\xb7\x62\x55\x29\x75\xcb\xcb\xe7\xa7\xad\x54\xf6\ -\xc5\x74\xd7\xf0\x44\x94\x69\x37\xef\x5e\xbc\x8a\x4a\xb9\x82\x83\ -\xfb\x27\x91\xcb\xe5\x94\x7a\x9e\x74\xe7\xd2\x18\xea\xcd\x3a\xd3\ -\x6e\xaa\x8d\x48\xce\x73\x55\x85\x2d\x0b\x98\x18\x70\xd6\xa3\x0a\ -\x9e\x52\xea\x97\x17\xb2\x70\x9e\x07\xaa\x39\xe1\x7a\xc4\xf5\x4b\ -\xa9\xc2\x9b\x01\x59\x2b\x10\xdb\x89\x00\x6b\x36\xaf\x56\x1c\xf1\ -\x4d\x4b\x3b\x40\x05\xb4\xd7\xc7\xd4\x4a\x3e\x51\xe3\x5a\xa9\x7b\ -\x58\xbd\xa3\xa4\x33\xa5\x35\xe5\xc5\x85\x57\xd7\xa6\x96\xed\x7a\ -\xe5\xf9\x6c\xef\x78\x9e\xa4\x32\x47\x61\xd8\x9a\xab\x5e\xb7\x71\ -\xe9\xca\x0c\x56\x56\xd6\x71\x60\xdf\x84\x3f\xed\x86\xd5\x61\x8b\ -\xcc\x67\x9c\x1e\xc1\x5a\x83\x62\xa3\x5c\x83\xe7\x65\x57\xc3\xca\ -\x0f\xf4\x8f\x03\x8b\xaa\x0b\xdd\xfe\xea\x09\x41\xfb\x2f\x1a\xa8\ -\x96\xbf\x54\x59\xb9\x18\x06\xaa\xa8\x61\xdb\x61\x65\xb5\xea\xdf\ -\xda\x4e\x0b\xac\x13\x3e\xae\xa6\xa5\x5d\xa0\x02\xda\x0b\x92\xb8\ -\x4d\xb4\x38\x71\x71\xeb\x60\xfa\x6e\x0a\x8b\x92\x2e\x4a\x9c\x49\ -\x8f\xd4\x37\x17\x37\x6b\x9b\x0b\x2f\x64\xfb\x26\xcb\x56\x2a\x77\ -\x3c\xda\xb4\x9b\x39\xec\x99\x18\xc5\xd0\x60\x3f\x9f\xb1\xb0\x2d\ -\x4d\x26\x6d\x61\xb8\x2f\x0b\x02\x6f\xda\x4d\xb0\x5c\x0c\x0b\x2b\ -\xbe\x62\xc1\x37\xcb\x5f\x8f\x8a\x79\xcc\x68\x50\xa1\xa9\x30\x50\ -\x95\x96\x44\x50\x99\x1e\xf8\x66\x2c\xad\x56\xe1\xa4\x8b\x6b\x16\ -\x50\x61\xba\x9d\xb4\x94\x3a\x1d\xd7\x92\xb4\x13\x54\x40\xe7\x61\ -\xd5\x89\xa6\x20\x62\x84\x75\x02\x58\x51\xe3\x74\x79\x92\x46\x65\ -\xa3\x5a\x59\xb9\xf4\x72\xb6\x7f\xcf\x4c\x2a\xd3\x75\x3c\x74\xda\ -\xcd\xd2\x1a\x2e\x5c\xbc\x8a\x91\xa1\x7e\x67\xda\x8d\xd7\x88\x13\ -\xac\x2a\x10\x07\x36\x43\xbd\x59\x64\x33\x16\x36\x8a\xb5\x60\x6d\ -\x2b\x1f\x50\x3c\xa9\x78\x8b\x0a\xfc\x2e\x34\x8c\x43\x3d\xc2\xe6\ -\x0e\xc5\x7a\x71\xf9\x8b\x0a\x8b\x8a\xc9\xc9\x18\x16\xb7\x09\x18\ -\x76\xbc\x13\x00\x15\x16\xbf\x53\x01\xd6\xb2\xb4\x1b\x54\xc0\xce\ -\x87\x55\x9c\xfc\x10\x92\x8f\x4e\xbf\xd5\x66\x5d\x9c\x3c\x00\x00\ -\xb4\x51\xb5\xcb\x8b\x6f\xbf\x95\xe9\x9b\x78\x3b\x95\xed\xbd\x39\ -\x74\xda\xcd\x46\x11\xef\xbc\x7b\x05\xdd\xf9\x2c\xf6\xee\x19\x67\ -\xa6\xdd\x04\xc5\xfb\xcd\x3c\x42\x30\xd0\x9d\x45\x77\x3e\x8d\x8d\ -\x52\x0d\x95\x3a\x0d\x2a\x47\x18\x58\x09\xb5\xb6\x88\xbb\x66\xba\ -\xdb\xeb\x47\x85\x3a\x44\x00\xd5\x97\x5a\x00\x95\x2e\xbc\xd9\x26\ -\xa0\x29\x2e\x2e\xa0\x54\x3a\x71\xe2\x5b\x01\xdc\xae\x83\x14\xd0\ -\x19\x50\x79\xd2\x6e\x67\x79\xab\xd6\x90\x2e\xdf\x28\x69\xa3\xe4\ -\xdd\x49\x7f\x55\x14\x68\x11\x50\x8a\xf2\xe2\x3b\x97\xd3\xf9\xfe\ -\x97\xd2\xf9\x81\x83\xc4\x4a\x1d\xd4\xa5\xf5\xa6\xdd\xbc\xf3\xee\ -\x55\xd0\x46\x03\x07\xf6\x4f\x22\x9b\x49\x4b\x59\xb2\x46\x56\x4f\ -\x3e\x8d\x81\xee\x0c\x8a\x95\x3a\x4a\xee\x42\x7c\x6c\xed\x58\x60\ -\x51\x04\xeb\x51\x75\xe7\x55\x53\x68\x80\xa9\xa9\x39\xbc\xfc\xda\ -\x3b\x86\x5e\xbf\x95\x2f\x56\x56\x2e\x44\x05\x95\x2e\xae\x95\x26\ -\x60\x58\x7c\xdc\xef\xec\x71\xbb\x1c\xf0\x3b\xc5\x39\xdf\x76\x07\ -\x3a\x2b\x9d\x04\x15\x10\xdf\xfa\x89\x13\xd7\x4c\xfe\xad\x02\x29\ -\x2e\xb0\xda\xe9\x3c\x8f\x9c\x4f\x65\xe5\xe2\x3c\xb1\xac\xe7\xd3\ -\xdd\x23\x83\xc4\x4a\xdf\x84\x90\x69\x37\xe7\x2f\x4e\xa3\x50\xd8\ -\xc4\xc1\x03\x93\xdc\xb4\x1b\xa7\x30\xbe\x4b\xaf\x2b\x9b\xc2\x50\ -\x6f\x16\x95\xaa\x8d\x42\xa5\xce\x57\x48\xa8\x99\xd4\xf4\xf3\x85\ -\xc2\x1f\x9e\xf0\x9a\x61\x78\x42\x69\xe5\x0b\x95\x65\x25\xa8\x82\ -\x8c\xc2\xc3\x9a\x69\x02\x9a\xe2\x3b\x65\x65\x75\x32\xbe\x13\x56\ -\x57\x98\x7e\x5b\xa5\xd3\xa0\x02\xe2\x5b\x35\xed\x6c\xee\xe9\xea\ -\xd1\x4c\xaf\x5e\x2b\x43\x0c\x9a\x01\x56\x54\x5d\xe5\xb9\x56\xd7\ -\x67\xd6\xed\xea\xe6\x0f\xb2\xbd\x13\x84\xa4\x32\xb7\x02\x24\xa3\ -\x4c\xec\x4d\xbb\x99\x9a\xc3\xdc\xbc\x33\xed\xa6\xbf\xbf\x97\xcb\ -\x9e\x08\xa5\x64\xd3\xce\x48\x76\x6a\xbb\x0b\xf1\x29\x2a\xe2\x59\ -\x54\x12\xa8\x28\xf5\x0a\x8e\x02\xaa\x2f\x56\x96\x2f\xcc\xa2\x35\ -\x50\xe9\xc2\x5b\x81\x53\x54\xdd\x66\xbf\x77\xd2\x8f\xa5\x0a\xdb\ -\x71\x4d\x3d\x51\xb6\x02\x54\xc0\xf6\x00\xa9\x19\x27\x78\xbb\x00\ -\xd4\x2e\xeb\xa9\x19\x7d\xff\x5c\xea\xc5\xe5\x72\x75\x7d\xe6\x85\ -\xdc\xc0\xde\x15\x2b\x95\x3b\x01\x42\xba\x4d\x09\x67\xe7\x97\x71\ -\xf9\xca\x0c\xc6\xc7\x86\x30\x3a\x3c\xc8\x65\x29\xc2\x2a\x6d\x39\ -\x1b\x48\x38\xd3\x6e\x6a\x68\x38\x2b\xf1\x71\xf9\xf9\xbd\x7e\xb9\ -\xb4\x0f\xa8\xa0\xd3\x2f\x0c\x54\xd8\x6c\x94\x57\xbe\x50\x5e\x3e\ -\x1f\x17\x54\xba\xb8\xb8\xd6\x57\xa7\xad\xac\x66\x9c\xf1\xcd\xe4\ -\xb5\x95\x00\xeb\x98\x6c\x15\xa8\x80\xad\x07\x52\x94\x72\xa3\xd4\ -\x35\x2c\xaf\x38\x3a\xad\x38\xcf\xe3\xe4\xe5\x8b\x5d\x2b\x36\xca\ -\x4b\xef\xbe\x96\xed\xdf\x7b\xd1\xca\x74\xdd\x4a\x08\x19\xd2\x16\ -\x40\x08\x56\x56\x37\x70\xee\xfc\x55\x0c\xf4\x77\x63\x62\x62\x94\ -\x9f\x76\x23\x94\x6a\x11\x82\xc1\x9e\x2c\xf2\xd9\x14\xd6\x8b\xee\ -\xda\x56\x60\xe3\xbd\xa6\x5f\x4a\x7a\x92\xa3\x80\xaa\x5e\x5a\x0d\ -\x03\x15\x10\xdd\x82\xd2\x85\xb7\xcb\xb9\xae\xd3\x6d\x47\x6f\x61\ -\x9c\x66\xe4\x76\x01\xac\xa3\xb2\x95\xa0\xf2\x24\xaa\xff\xc9\xa4\ -\xdf\x6a\xd3\xcd\x14\x16\x25\xbe\x1d\xd6\x53\xdb\x7a\xfc\xc2\xd2\ -\x51\xbb\x4e\x4b\xf3\x67\xce\x65\x7b\xc7\x5f\x4b\xe5\xfa\x6e\x22\ -\xc4\x8a\x30\xed\xe6\x32\x32\x29\x0b\xfb\xf7\x4e\xb8\xd3\x6e\xd4\ -\xb0\xf2\xa6\xdd\xf4\x75\x65\xb0\x51\xaa\xa3\x52\x0f\xa0\x63\x59\ -\x04\x13\x4a\x1f\x55\x54\x50\xad\x7c\xde\x05\x95\x47\x4b\xe5\xe9\ -\x19\xae\x47\xb3\x3e\xac\x56\xe1\x14\x55\xaf\x9d\x80\x6a\x35\xbe\ -\x15\xe7\x7c\xc7\x65\x3b\x40\x05\x6c\x8d\x75\xd5\x4c\x7c\x94\xfa\ -\xc6\x3d\xaf\x28\xf9\xb5\xab\x7c\xe3\xb9\x97\x97\xce\x4d\xa5\xb2\ -\xbd\xcf\xa7\xbb\x06\xf6\x10\x2b\x75\x3d\x4c\xd3\x6e\x2a\x35\x9c\ -\xbb\x70\x15\xd5\x72\x05\x07\x0f\x4c\xba\xbb\xdd\x30\xb0\x12\x6a\ -\xd5\x93\x4b\x63\xd0\x9b\x76\x53\x69\x80\x02\x48\x11\x82\x49\x61\ -\x5f\xbf\x20\xa9\x07\x2a\xdd\xf0\x04\x6c\xd6\xcb\xab\x9f\x2f\x2f\ -\xbd\xeb\x59\x54\x61\x2f\x46\x54\x7f\x55\x33\xf0\x8a\x63\x85\xb5\ -\xa3\x27\x30\x0a\xa0\x9a\x49\xb7\xab\xac\x28\x56\xb6\x0b\x54\xc0\ -\xd6\x37\xf7\x10\x12\x66\x0a\x8f\x12\xdf\xae\x41\x9d\xcd\x3a\xd0\ -\xa3\x08\xa9\xac\x5e\x5a\x06\xe8\xf7\x33\x3d\xa3\xdd\xc4\x4a\xdf\ -\x82\x90\x69\x37\x17\xaf\xcc\x60\x65\x65\x0d\x07\xf7\x7b\xd3\x6e\ -\x02\xd7\xb9\x08\xac\x60\xda\x8d\x8d\x8d\x52\x0d\xc4\x38\xe0\x13\ -\x98\x9a\x9e\xc7\x2b\xaf\xbd\x1d\x06\xaa\x28\x53\x68\x74\xe1\xed\ -\x72\xac\x87\x1d\x37\x63\x3d\xa9\xe2\x9a\x05\x54\x94\x32\xdb\xdd\ -\x0c\xdc\x52\xd9\x4e\x50\x79\xb2\x55\xcd\xbd\x76\x02\x2b\xaa\x4e\ -\x98\x5e\x33\x83\x47\x5b\x19\x60\x0a\x00\xa4\xb6\x31\xbb\x59\x2f\ -\xad\xfe\x20\xdb\x3f\x59\xb6\x52\x99\xdb\x00\xf3\xb4\x9b\xa9\x99\ -\x45\x4c\x4f\xcf\x63\xef\xe4\x68\xb0\xdb\x0d\x53\x34\x5b\x78\x26\ -\x6d\x61\xa8\x2f\x07\x02\x82\x42\xa9\xe6\x4f\x4a\x06\x65\x9f\x70\ -\x6f\x99\x97\xb9\x10\x50\xad\x7d\x8e\xb1\xa8\x82\xc4\x6a\xe9\x74\ -\x13\x50\x3c\xde\xca\x26\xa0\x29\x7c\xab\x9b\x81\xdb\x22\x3b\x01\ -\x54\x40\x67\x9b\x7b\xcd\xe6\x6f\x0a\x37\xe9\x34\xeb\x4c\x6f\xa6\ -\xec\xa6\xd3\x37\xca\xab\xb5\xea\xea\x95\x1f\x65\x07\xf6\xcf\x5a\ -\xe9\xdc\x6d\x61\xd3\x6e\x16\x96\x56\x71\xe1\xe2\x14\x46\x86\xf9\ -\x69\x37\x62\x91\x5e\x93\x6f\xb0\x37\x8b\x5c\x26\x85\xae\x6c\x0a\ -\xf9\x4c\x0a\x54\x78\xce\x3d\x1f\x95\x09\x54\x8d\xca\xda\xe7\xca\ -\x4b\xe7\x66\x10\x0d\x54\xa6\xf8\x66\xad\xad\x4e\x34\x09\xe3\xea\ -\xe8\xd2\x74\xba\x07\x71\xc7\x40\x0a\xd8\x39\xa0\xf2\xa4\x13\xcd\ -\xbd\xa8\x3d\x7d\x61\x3a\xad\x82\xad\xd5\x26\x5f\x2b\x30\x55\xea\ -\xdb\xf5\x72\xa3\xb4\xf0\xd6\x9b\xb9\xc1\xfd\x67\xad\x4c\xf7\x31\ -\x42\x48\xc8\xb4\x9b\x4d\x67\xda\x4d\x97\x6e\xda\x0d\xab\x0f\xf4\ -\x77\x67\x90\xcb\xa4\x94\x35\x8c\xd2\xf4\x6b\x94\xd7\x3f\x5b\x5e\ -\x3a\xa7\x1b\xf0\xd9\x6a\x6f\x9f\x2e\x7c\x3b\xfd\x55\xed\x82\x5b\ -\x27\x9a\x81\xdb\x2a\x3b\x0d\x54\xc0\xf6\x8e\x24\x8f\xa2\xb3\x55\ -\x4d\xbe\x56\xcb\x88\x26\xd4\x46\x69\xfe\xad\x0b\xd9\xde\xb1\x1f\ -\xa5\x72\xbd\xd7\x11\x62\x45\x98\x76\x73\x05\xd4\x76\xa6\xdd\x64\ -\x32\x19\x63\xf6\x44\x89\x18\x0a\x10\x82\xe9\x99\x30\x8b\x6a\xfd\ -\x73\xe5\xc5\x77\x74\xc3\x13\xae\xc5\x26\xa0\x78\xbc\x95\x80\x0a\ -\x2b\x6f\x5b\x65\x27\x82\xca\x93\xed\x1c\x49\x1e\x45\xa7\x93\xc3\ -\x0d\xda\xd1\xcb\x17\x2b\x4d\x79\xe9\xdc\x5c\x2a\xd3\xfd\xfd\x74\ -\xd7\xe0\x08\xb1\x52\x47\x60\xe8\x11\xe4\xa6\xdd\xec\x9f\x44\x57\ -\x57\x2e\xbc\x04\xc5\x80\xcf\x08\xa0\xfa\x6c\x13\xa0\x32\xc5\x6f\ -\x77\x2f\xa0\x49\xb7\x93\xdf\x77\x55\x33\x4f\x25\x3b\x19\x54\x40\ -\x7b\x86\x1b\x74\xe2\x7b\x58\x3d\x5b\xe9\xe5\x6b\x97\xb5\x15\x56\ -\x47\x29\xbe\xb2\x7a\x79\x8d\xda\xf5\xef\x67\x7a\xc7\x09\xb1\xd2\ -\xc7\x01\x68\x77\xbb\x69\x50\x8a\x2b\x53\xb3\x98\x9f\x5f\xc6\xbe\ -\x3d\x63\xe8\xef\xeb\x01\x75\x61\xe4\x15\x64\x7a\xe2\x23\x80\xaa\ -\xd0\xa8\x6c\x98\x40\xe5\x49\x3b\x7a\x01\x55\x71\x5b\xd1\x04\x34\ -\xc5\xb5\x1b\x50\xaa\xf0\x28\xd6\xe4\x8e\x90\x9d\x0e\x2a\x4f\xda\ -\xd1\x7b\xb7\x55\x53\x5f\x76\x47\x93\x4f\x9d\x27\xa9\x15\xe6\x4b\ -\xf5\xe2\xf2\xf3\xd9\xfe\x3d\xab\x56\x2a\x73\x12\x50\x4f\xbb\xf1\ -\x2a\x30\x3b\xbf\xe4\xec\x76\x33\x36\x84\x61\x6e\xda\x4d\x48\x61\ -\x51\x2c\xaa\xea\xc6\x67\xcb\x8b\x6f\x8b\xce\x74\x51\x76\x5b\x13\ -\xd0\x14\xd7\x2e\x88\xb5\xd2\x5b\xb8\x23\x65\xb7\x80\xca\x93\x76\ -\x03\x2b\xaa\x4e\xb3\xcd\xbf\x9d\xde\xe4\x53\xe6\xd3\x28\xaf\xd5\ -\x2b\xcb\xe7\x5f\xc9\x0d\x1e\xbc\xe8\xf6\x08\x86\x4e\xbb\x79\xf7\ -\xc2\x55\x0c\xf6\xf7\x60\x62\x7c\x04\x96\x15\x5e\x15\x42\x08\xa6\ -\x42\x40\x65\x57\x0a\x7f\x5c\x6a\x1e\x54\xa6\xf8\xad\x68\x02\x86\ -\x1d\xb7\x6b\x08\x43\x14\x9d\x5d\x0b\x28\x4f\x76\x1b\xa8\x3c\xe9\ -\x24\xb0\xa2\xe6\x15\x57\x6f\x2b\x07\x76\x36\x93\x07\xf7\xd0\xd2\ -\x46\xd5\x2e\xce\xbf\x79\x36\x37\x78\xf0\x35\x2b\xd3\x7d\x84\x10\ -\x62\x9c\x76\x53\xd8\x74\xa7\xdd\xa4\x53\xd8\xc7\xec\x76\xa3\x2c\ -\x88\xba\x16\xd5\xf4\x3c\x5e\x79\xdd\x64\x51\x15\xfe\xb8\xb4\x70\ -\x36\x0c\x54\xca\xfa\x87\x84\x77\x6a\x20\x68\x98\xfe\x76\x8e\xc3\ -\xda\x95\x80\xf2\x64\xb7\x82\xca\x93\x56\xe7\xf2\xa9\x74\xb6\xc2\ -\x79\xde\xae\xba\xb6\x43\x8c\xe7\x51\x9a\x7f\xeb\x4a\xb6\x77\xec\ -\x07\xa9\x5c\xef\x3e\x42\xac\xc3\x3a\x7d\x6e\xda\x4d\xa5\x8a\x03\ -\xfb\xdd\x69\x37\x54\xfd\x56\x10\x02\x4c\xcf\x2c\xe8\x41\x45\xb0\ -\xd9\xa8\x14\xfe\xc8\x05\x95\x69\xae\x9f\x27\xed\x68\x02\x36\x63\ -\x69\xc5\x8d\x6f\x15\x50\xed\xe8\x09\xdc\x75\xb2\xdb\x41\xe5\x49\ -\x3b\x86\x24\x98\xc2\x9b\xcd\x2f\x6a\x9e\xad\x8c\x36\xef\x04\xbc\ -\xb8\xfc\xcb\x4b\xe7\x16\xad\x74\xd7\xf7\x32\xdd\xc3\xdd\xc4\x4a\ -\x1d\x83\x71\xda\x4d\x03\x17\x2f\xcf\x60\x75\xd5\xd9\xed\xa6\xbb\ -\xbb\x8b\xd1\xa0\x9c\xee\xf4\xcc\x02\x5e\x36\x5a\x54\xc5\x3f\x2a\ -\x2d\xbc\xe5\x59\x54\xcd\x82\xca\x14\xdf\xae\x26\xa0\x18\xd6\xc9\ -\x26\xa0\x49\xef\x9a\x03\x94\x27\xd7\x0a\xa8\x3c\x69\x65\x50\x66\ -\xbb\xac\xa7\x76\x4c\x30\xde\xb6\x26\x9f\x2e\xaf\xea\xda\x95\x0d\ -\x38\x3d\x82\x15\x62\xa5\x4f\x02\xd0\x4c\xbb\x21\xee\xb4\x9b\x05\ -\x4c\xcf\xcc\x63\xef\xc4\x08\x06\x07\xfb\xa4\x62\x3c\x50\x99\x9a\ -\x7e\x76\x75\xd3\x03\x55\x1c\xd9\x09\x4d\xc0\xb0\xe3\x66\x74\x5b\ -\x75\xb4\xef\x6a\xb9\xd6\x40\xe5\x49\x27\x7b\xf8\xda\xd9\xe4\xdb\ -\xca\x29\x35\xad\xe6\x47\x6a\x85\xf9\x4a\xad\x30\xff\x42\x6e\x60\ -\xff\x0c\xb1\x32\xb7\x47\x9a\x76\x73\x69\x0a\x23\x43\x03\x18\x1b\ -\x1d\x12\x46\x7f\x12\x4c\x85\x81\xaa\x56\xfc\x4c\x69\xfe\x2d\xaf\ -\xe9\xe7\x49\xbb\x9b\x80\xed\x02\xd8\x4e\xb2\xb2\xae\x19\x40\x79\ -\x72\xad\x82\xca\x93\x4e\x3b\xcc\xdb\x39\xc8\xb3\x99\x34\x9d\x6e\ -\xf6\x89\x65\x91\x46\x65\xa3\x51\x9c\x7f\xeb\xf5\xfc\xf0\x0d\x67\ -\xad\x74\xf6\x56\x10\x32\xae\x4d\x40\x08\xd6\x36\x36\x71\xee\xfc\ -\x15\xf4\x74\xe5\x30\x39\x39\x06\xcb\x4a\x05\xce\xf4\x50\x8b\xaa\ -\xf8\x99\xd2\xfc\x99\x76\xcc\xf5\x33\xc5\xb5\x73\x6c\x95\x18\xb6\ -\x5d\x4d\xc0\x6b\x4e\xae\x75\x50\x79\xd2\x0e\x87\x79\xa7\xe6\xea\ -\xc5\xad\x7b\x94\xfc\x5a\xe9\x25\x0b\xd7\xa7\x0d\x5a\x9c\x7b\xfd\ -\x7c\x6e\xe8\xd0\x8b\xa9\x4c\xd7\x0d\x20\xe4\x90\xae\x4c\x42\x08\ -\x4a\xa5\x0a\xce\x9d\xbf\x02\x50\x1b\xfb\xf7\x4d\x20\x93\xc9\x44\ -\x03\x55\xad\xf4\x87\x02\xa8\xa2\xd6\x39\x2e\xac\x74\xe1\x9d\x6e\ -\x02\x8a\xc7\x09\xa0\x34\xf2\x5e\x01\x15\x2b\x3b\x65\xae\xde\x76\ -\x8d\x99\x6a\x25\x2d\xfb\x42\x90\xd2\xfc\x99\xe9\x4c\xef\xf8\x5f\ -\xa4\x72\x7d\xa3\x84\x58\x47\x60\xd8\xed\xa6\x5a\xab\xe3\xfc\xa5\ -\x69\x6c\x16\x8a\x38\xb0\x7f\x02\x5d\x5d\x79\x67\x52\xf2\xeb\xef\ -\x68\x47\xa6\x3b\xa0\x7a\xb3\x99\x29\x34\x3b\x69\x6c\x55\x98\x4e\ -\x02\xa7\x08\xf2\x5e\x04\x95\x27\x5b\xb9\x3c\x4b\xbb\xd7\x94\x8a\ -\x53\x76\x27\xf3\x24\xe5\xa5\x73\x2b\xa9\x6c\xcf\xf7\xd2\x5d\x43\ -\x29\x62\xa5\x6e\x83\x69\xda\x4d\xc3\x99\x76\xb3\xb0\xb0\x82\xfd\ -\xfb\xc6\xb1\xb1\x51\x74\x41\xa5\x5c\x8a\xb8\x60\xd7\xcb\x9f\x29\ -\xcd\xbd\xa9\x1b\x47\x15\xe5\x45\xed\x84\x5f\x4a\x15\xd6\xce\x26\ -\x60\xdc\xb4\xef\x09\x79\x2f\x83\x8a\x95\xed\x58\x9e\x25\x4c\x67\ -\xbb\x9d\xe7\x91\xf3\xad\xac\x5e\x2e\x82\x36\x9e\xcb\xf6\x8e\xaf\ -\x11\x2b\x7d\x3b\x80\x1e\xa5\xa2\x5b\x83\xd9\xf9\x25\x5c\x9d\x9a\ -\x43\xc3\x6e\xe0\xca\xd5\x39\x2d\xa8\x68\xbd\xfc\x87\xc5\xb9\x37\ -\x5a\x19\x99\xbe\x53\xa6\xd7\xc4\x3d\x4e\xe0\x24\x48\x02\x2a\x59\ -\xae\xd5\x26\x5f\x9c\x87\xbd\x89\x1e\xc1\xb9\x5a\x75\x6d\xea\x47\ -\xf9\xe1\xeb\x2e\x92\x54\xfa\x24\x40\x86\xb5\xca\x84\x60\x79\x65\ -\x1d\xd3\x33\x0b\xa8\x37\x6c\x9d\x5a\xc1\xae\x57\xfe\x77\x08\xa8\ -\x76\xf2\xd8\xaa\x76\x36\x01\xdf\xf3\x92\x80\xca\x2c\xd7\x52\x93\ -\xaf\xe3\x3d\x84\x76\xad\x48\x8b\xf3\x67\xce\x74\x8d\xde\xf4\xaa\ -\x95\xca\x1e\x05\x21\xfb\xb4\x95\x21\x44\xe7\x9b\xf2\x34\x0a\xb4\ -\x51\xfd\xc3\xe2\xec\xeb\xd3\x68\xde\xa2\x0a\xd3\xd9\xe9\x4d\xc0\ -\x44\x5c\x49\x40\x15\x5d\xb6\xbb\x97\xaf\x5d\xf5\xee\xac\xd0\x06\ -\x8a\xb3\xaf\x5d\xca\x8f\xdc\xf0\x9c\x95\xce\xef\x07\x21\x87\xa1\ -\x59\xdb\x2a\x44\x0a\xb4\x5e\xfd\xdf\xc5\xd9\xd7\xc2\x40\xe5\x97\ -\xdc\x44\x5c\xa7\xa7\xd7\x34\x73\x9c\x88\x42\x12\x50\x35\x27\xd7\ -\x62\x93\xaf\x9d\x40\x23\xc5\xb9\x37\x17\xb2\xfd\x7b\xbe\x63\xe5\ -\x7a\xfa\x08\xb1\xb4\xd3\x6e\x0c\x52\xa0\x8d\xca\xa7\x23\x82\x6a\ -\x2b\x9a\x80\xcd\x8e\x62\x8f\x3b\x76\x2b\x11\x85\x24\xa0\x6a\x5d\ -\xb6\x73\x82\x71\x3b\xe1\xd2\xee\x97\x87\x94\x16\xdf\x5e\xcf\x74\ -\x8f\x7c\x37\x95\xef\xaf\x12\x62\xdd\x01\xcd\xb4\x1b\x8d\x14\xa8\ -\x5d\xfb\x74\x71\xe6\xd5\x76\x80\x2a\x4c\xaf\xd3\xd3\x6b\xe2\xd4\ -\x31\x11\x85\x24\xa0\x6a\xbf\x74\x62\x82\x71\x33\x0f\xf9\xd6\x36\ -\xf9\x34\x75\x28\x2f\x9f\xaf\x80\xd2\x1f\x64\x7b\x27\x66\x89\x95\ -\xba\x03\x40\x7f\xc4\xb4\x05\xda\xa8\xfd\xaf\x88\xa0\x62\xa5\x93\ -\x23\xd3\x5b\x0d\x4b\xa4\x49\x49\x40\xd5\x79\x69\x15\x52\xed\xee\ -\x9a\x6f\xb6\x7e\x4d\x4b\x6d\x63\xb6\x51\x5d\x9f\x7a\xa5\x6b\xf8\ -\x86\xb7\x88\x95\x3a\x0e\x90\x89\x08\xc9\x0a\xb0\xeb\x9f\xde\x9c\ -\x79\x65\x1a\xd1\x96\x79\x69\xf5\x7a\xb4\x62\x41\x45\xc9\x3f\x91\ -\x16\xa4\x19\x27\x67\x22\xf1\x84\x0a\x7f\xba\xf0\xb8\x7f\xed\xca\ -\x67\x2b\xfe\x50\x2b\xcc\xd3\xb9\x17\xfe\xcb\x57\xed\x5a\xf9\x17\ -\x01\xfa\x4d\x84\xbf\xd8\x14\x20\x8d\x76\xd6\xa1\xc3\xd7\x3d\x91\ -\x0e\x4a\x62\x51\xed\x0c\xd9\xce\x9e\xbe\xad\x7c\xc9\xc8\xe6\xcc\ -\x2b\x53\x5d\xe3\xb7\x7c\xd7\xb2\x32\x63\x20\xe4\x28\xf4\xcf\xe0\ -\xf9\x46\x6d\xf3\x3f\x16\x67\x5f\x2f\x34\x51\xce\x56\x0c\x02\x4d\ -\x64\x0b\x25\x01\xd5\xce\x95\x8e\x2f\x88\xb7\x5d\xe7\x55\x9c\x79\ -\x75\xb9\x6b\xfc\x96\x6f\x5b\xa9\x4c\x06\x84\x9c\x84\x6a\xda\x0d\ -\xa5\x9f\x29\xcd\xbf\xf5\xd9\xea\xfa\x14\x15\xea\xba\x5d\x4d\xc0\ -\x44\xb6\x51\x12\x50\xed\x3e\xd9\x09\x4e\xf2\xb8\x75\x12\x5f\x7e\ -\x52\x9c\x7d\x75\x33\x3f\x76\xe4\x7b\x56\x2a\xbb\xe2\x5a\x56\x03\ -\x6e\x3e\x35\x00\x5f\xa4\x76\xed\x9f\x2f\x9f\xf9\xd2\x82\x22\xef\ -\x56\x41\x15\x47\x27\x91\x1d\x22\x3b\xf1\xa1\x4f\xa4\x79\xd9\xc9\ -\xeb\x59\xa9\x84\x0e\xde\xf4\x54\x2a\x37\x74\xdd\x31\x62\x59\x1f\ -\x00\x90\x07\xc5\x25\x6a\xd7\xbf\x3c\xf7\xc3\xff\xec\x6d\xe5\x1e\ -\xd7\x9a\x42\x0b\xfa\x89\xec\x50\xd9\xee\x07\x35\x91\xad\x17\x71\ -\xfd\xf1\x9d\xf0\x0c\xa8\x80\x62\xb2\xa4\xa2\xac\xa1\x9e\xc8\x35\ -\x24\x3b\xe1\x21\x4d\x64\x77\x48\xa7\x9e\x95\x04\x38\x89\x84\xca\ -\xff\x0f\x54\x62\xd6\x8a\x59\xb9\x9c\x52\x00\x00\x00\x14\x74\x45\ -\x58\x74\x41\x75\x74\x68\x6f\x72\x00\x4a\x61\x6b\x75\x62\x20\x53\ -\x74\x65\x69\x6e\x65\x72\xe6\xfb\xf7\x2f\x00\x00\x00\x49\x74\x45\ -\x58\x74\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x00\x50\x75\x62\x6c\ -\x69\x63\x20\x44\x6f\x6d\x61\x69\x6e\x20\x68\x74\x74\x70\x3a\x2f\ -\x2f\x63\x72\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\ -\x2e\x6f\x72\x67\x2f\x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\x70\x75\ -\x62\x6c\x69\x63\x64\x6f\x6d\x61\x69\x6e\x2f\x59\xc3\xfe\xca\x00\ -\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x63\x72\x65\x61\ -\x74\x65\x00\x32\x30\x31\x35\x2d\x31\x30\x2d\x31\x33\x54\x31\x35\ -\x3a\x30\x33\x3a\x33\x32\x2b\x30\x39\x3a\x30\x30\xf5\xf6\x5c\xde\ -\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x6d\x6f\x64\ -\x69\x66\x79\x00\x32\x30\x31\x35\x2d\x31\x30\x2d\x31\x33\x54\x31\ -\x35\x3a\x30\x33\x3a\x33\x32\x2b\x30\x39\x3a\x30\x30\x84\xab\xe4\ -\x62\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\ -\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\ -\x72\x67\x9b\xee\x3c\x1a\x00\x00\x00\x21\x74\x45\x58\x74\x53\x6f\ -\x75\x72\x63\x65\x00\x68\x74\x74\x70\x3a\x2f\x2f\x6a\x69\x6d\x6d\ -\x61\x63\x2e\x6d\x75\x73\x69\x63\x68\x61\x6c\x6c\x2e\x63\x7a\x69\ -\x66\xe3\x5e\x00\x00\x00\x0d\x74\x45\x58\x74\x54\x69\x74\x6c\x65\ -\x00\x47\x6f\x20\x44\x6f\x77\x6e\xf3\xfd\x14\x79\x00\x00\x00\x00\ -\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x06\x33\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\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\x10\x00\x00\ -\x0b\x10\x01\xad\x23\xbd\x75\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xd3\x09\x09\x14\x30\x03\x75\x06\x85\x3f\x00\x00\x05\xc0\x49\x44\ -\x41\x54\x78\xda\xc5\x97\x4d\x6c\x1b\xd7\x11\xc7\x7f\xbb\x5c\x7e\ -\x73\xad\x95\xe4\xc8\x72\x9c\x2a\x52\x80\x26\x46\x9a\xda\x54\x84\ -\xd4\x69\x9b\x16\x16\x20\x07\x69\x51\x24\x05\x9a\x22\x40\x0e\x59\ -\x03\x86\x7b\xe8\xc5\xe8\xb9\x28\x24\xf4\xd2\xab\xdd\x1e\x7b\xf1\ -\xa2\x97\xa2\x48\x51\xb4\x75\x5a\xc4\x68\x2b\xa1\x89\x03\x3b\x85\ -\x62\x26\x76\x52\x35\x82\x2d\xda\xaa\xf5\x41\x52\x21\x25\x92\xbb\ -\xfc\x58\xbe\xd7\xc3\x92\x14\x29\x92\x26\x9b\x4b\x1e\x30\xc4\xf2\ -\xbd\x99\xf7\xff\xef\xbc\xd9\x99\x79\x8a\x94\x92\x2f\x72\x68\x00\ -\xa6\x69\x0e\x6c\xb0\xfa\x98\x35\x09\x4c\x4a\xc9\xe9\xc6\x9c\x90\ -\x20\x04\x4b\x02\x92\xcf\x6c\x99\xc9\x41\xf7\xb2\x2c\xcb\x23\xd0\ -\x6f\xdc\x99\xb0\x0c\xe0\x2c\x60\x22\x88\xb7\x3a\xad\x0e\x8e\x80\ -\x79\x80\xdb\xe3\x56\x42\x48\x2c\x29\xb8\x7c\x32\x6d\xe6\x06\xf2\ -\x40\x1f\xf0\x05\xe0\x02\x60\xa8\x0a\x44\xc3\x10\xf4\xc3\x89\x47\ -\xf3\x44\xc3\x41\x00\xa4\x28\xf3\xde\x5d\x1d\xbb\x04\xc5\x32\xf1\ -\x72\x95\x38\x30\x7f\xf3\xb0\x75\x69\x3a\x63\x2e\x7c\x2e\x02\x6b\ -\x8f\x5b\x86\x90\x2c\x02\x71\x4d\x85\x58\x18\xbe\x7b\xb2\x4a\x7c\ -\x4a\x65\xfa\x09\x1f\xa0\xb7\x68\x07\xf8\x09\xb0\x9e\x11\x7c\xb8\ -\x26\x78\xe7\xd6\x2e\xd7\xd6\x46\x0d\xe1\x32\xbf\x3c\x6a\xbd\x02\ -\xcc\xce\xec\x74\xf7\x86\xd6\x03\x3c\x5e\x07\x37\xf4\x10\xcc\x3e\ -\x5d\xe1\xfb\xa7\x34\x46\x74\x3f\x00\x99\x3d\xc1\xda\x86\x4d\xc5\ -\x15\x08\xa9\x34\xed\x9e\x7d\x52\x67\xf6\x84\xca\xec\x89\x51\xde\ -\xfe\xc0\xe5\x8f\x37\x4a\x7c\xb2\x15\x8b\x0b\xc1\xda\x0d\xc3\x9a\ -\x3d\x95\x33\x13\x7d\x09\xb4\xbc\xb9\xf1\xc4\x61\x87\x1f\x7c\xdd\ -\x4f\x7c\x2a\x00\xc0\xc6\x8e\xcb\xd6\x8e\x03\xc0\x8b\x33\x7a\x07\ -\xf1\xab\xcb\x79\x00\x9e\x9a\xd0\x79\xe1\x69\x8d\x2f\x3f\x1a\xe1\ -\xcd\xa5\x6d\xfe\x74\xfb\x88\x01\x2c\x5e\x1f\xb2\xa6\x9e\xdf\x6d\ -\xf7\x44\x07\x81\x06\xb8\x11\x85\x73\x73\x41\x8e\x0c\xab\x38\x55\ -\x48\x65\x2b\x14\x8b\x0e\xdf\xf9\xda\x50\xcf\xf3\x6c\x90\xba\xba\ -\x9c\x67\xe2\xa8\xce\xa1\xa8\xca\xeb\x67\xc6\xa8\xc9\x14\x57\x6e\ -\x8f\x19\xc0\x22\x30\xdd\x6a\xa3\x76\x09\xb8\xb8\x1e\x82\xd7\x9e\ -\x77\x89\x86\x54\x0a\x0e\x64\xf3\xa2\x2f\xf8\x41\x22\xf7\x37\xf3\ -\x14\x1c\x70\x6b\x0a\x67\x9e\x3b\xcc\xf1\x71\x1b\x21\x89\xbf\x77\ -\xc8\x5a\xe8\x4a\xa0\xfe\xa9\x5d\x50\x15\x78\x6e\xaa\xc2\xe4\xb8\ -\x86\x53\x05\xa7\x0a\x77\x1e\x14\x3b\xc0\x37\xb3\x70\x6d\x05\xde\ -\x59\x81\xeb\xab\x90\x2f\xb5\x93\xf8\xd6\x57\xf5\xa6\x7d\x34\xac\ -\xf2\xf2\xa9\x00\x7e\x1f\x08\xc9\x85\x77\x75\xcb\xe8\xe6\x81\xb3\ -\x80\x71\x28\x02\x27\xa6\x34\xf2\x0e\x4d\x19\x1f\x6e\x73\x14\x4e\ -\x05\x6e\x26\x61\xb7\xbe\xfe\x59\x01\xfe\x9e\xa8\x50\x2c\xb9\x4d\ -\x9d\x70\x00\xca\x95\xfd\x3d\x8e\x8e\x68\x3c\xfb\xa5\x3c\x80\x21\ -\x24\x67\xbb\x11\x30\x55\x05\xa6\x27\xaa\x80\x8a\x5d\xa2\x29\x41\ -\x7f\x3b\x81\x8f\xd7\x69\x5b\xb7\x4b\x9e\x07\xd6\xb7\x9d\x36\x3d\ -\xbf\xe6\xad\xad\x6d\xd5\xf8\xd7\xaa\x8b\x1e\x0b\xa0\xa9\x20\x04\ -\x66\x5b\x10\xae\x3e\x66\x4d\x22\x88\x87\x43\x30\x14\x53\x29\x96\ -\xdb\xdd\x69\x87\x02\xcd\xe7\xb2\x0b\x9f\x6e\x42\xd5\x6d\xd7\xd9\ -\xdd\x49\x73\xfc\xf4\xb1\xb6\xb9\x7f\x7c\x58\x25\x99\x56\xb0\x5d\ -\xad\x09\x37\x12\x83\x8d\x2c\xf1\xa5\x88\x35\x09\x24\x1b\x2b\x93\ -\x52\x7a\x6e\x0b\xf8\x3a\x09\xdc\x49\xf9\xf8\xcb\x4d\x18\x89\xc1\ -\xea\x46\xe7\x79\xbb\xf6\x36\xaf\x7c\xd3\x68\x9b\xfb\xf7\x7f\x05\ -\x9f\x6c\xfa\x3b\x02\x34\x16\x06\xb2\x20\x25\xfb\x04\x1a\x85\x25\ -\xa4\xd5\x28\xd7\x7c\x94\x6b\x9d\x91\xfd\xf1\x7a\x8f\x54\x5a\xd9\ -\xe6\x47\xdf\x1b\x25\x1a\xda\xff\xa2\xed\xb2\xe4\xd7\x57\xab\x40\ -\xb0\x43\x3f\xe8\x07\x29\x41\x78\x98\x4b\x5a\x6b\x51\x31\x22\x35\ -\x8a\x65\xdf\xc0\x95\x31\x50\xbe\xc7\x8f\x5f\x3d\xd6\x01\xfe\x8b\ -\xdf\x57\x58\xcf\x05\xbb\xda\x84\x03\x1e\x96\xd7\x06\x28\x5e\x0c\ -\x88\x7a\x75\x13\x42\xa1\xe0\x0c\x06\x2e\x4b\x29\x7e\xfe\x46\x77\ -\xf0\x95\xad\xe0\xc3\x6d\x5b\xca\xa9\x47\x40\x78\x7f\xb2\xb6\x86\ -\xcf\xdf\x1f\x5c\x41\xf2\xd2\x71\xd1\x06\x9e\xde\x93\xfc\xea\x4a\ -\x95\x4f\xb7\x83\xa8\x4a\x6f\xdb\x83\xf1\xd5\xd8\x61\x49\xc0\x7c\ -\x55\x28\x94\xab\x0f\x67\xee\xd5\x7e\x85\xa7\x26\x22\x6d\x6b\xbf\ -\x7c\xab\xc6\xdd\x4c\x00\xad\xcf\x09\x96\xab\x80\x14\x00\x4b\xe0\ -\xab\x7b\x00\x92\x8d\x04\xe3\xd6\xc0\xa7\xca\x16\x50\xa5\x79\x44\ -\xa0\x34\x7f\x15\xf6\x75\xee\x67\x24\x6b\x69\x0d\x65\x80\xa3\xcb\ -\x15\x00\xcf\x36\xd9\x4c\x44\xcf\x6c\x99\x49\x21\x49\xec\xd9\xa0\ -\x2a\x1e\x68\x43\xc0\x9b\x3b\x28\x99\xc2\xfe\xab\x2e\xdf\x55\xba\ -\xea\x74\x93\xd4\x1e\x00\x89\xb9\xca\xb9\x64\x5b\x35\x94\x02\xab\ -\x2c\x88\xdb\x25\x17\x23\xd6\xbf\x53\xfb\xdd\xfb\x31\x36\xf2\x50\ -\x2c\x79\x35\x21\x30\x40\x73\xb7\x99\x75\x71\xbd\x04\x66\x75\x2b\ -\xc7\x97\x81\xf9\xf5\x1d\xd5\x38\x32\xdc\x7f\x33\xbb\xf0\x19\x46\ -\xc0\x4f\x48\xba\x8c\x0f\xe9\x64\xed\xfe\x0c\xfe\xb3\xa1\x00\x32\ -\x57\xc7\x6a\xaf\x05\x27\xd3\x66\x4e\x48\x2e\x15\x2b\x2a\xd9\xdd\ -\x02\xe1\x00\x3d\xc5\x27\xf2\xfc\xec\x87\x7e\x5e\x9c\xd1\x79\xf9\ -\x1b\xc3\xfc\xf4\x55\x0d\x23\xca\x43\x6d\xb6\x32\x79\x9c\xb2\x04\ -\xc4\xa5\xb9\xca\xb9\x5c\xd7\x7e\xa0\xde\x40\x26\x3e\x7a\x10\xa3\ -\x54\xcc\xe2\xd7\xe8\x2e\x8a\xcb\xe3\x47\xf5\xb6\xe4\x32\x39\x46\ -\x4f\xfd\xbd\xdc\x0e\xd7\xef\x84\x01\x91\x98\xab\x9c\x5f\xe8\xd9\ -\x90\xd4\xc7\xac\x10\xe4\xfe\xb6\x32\x4c\xa5\x90\x26\xe8\xa7\x43\ -\xc2\x91\x30\x4e\xe5\xc0\x91\x94\xe8\xaa\x6b\xef\xa5\x78\xeb\xd6\ -\x10\x20\x72\xc0\xec\x41\xb0\x0e\x02\x33\x3b\x66\x4e\x48\x66\xa5\ -\x24\x77\xe5\xf6\x23\x64\x52\xa9\x0e\x77\xea\xb1\x10\xbf\xbd\xe6\ -\x55\xc5\x7b\x69\xf8\xc3\xfb\x50\x72\x3b\xdd\xbe\xb9\xb9\xc9\x9b\ -\xcb\x23\x4d\xf0\xb9\xca\xf9\xdc\x40\x5d\xf1\xa9\x9c\x99\xb8\x3e\ -\x64\x4d\x09\xc9\xe2\xdb\x2b\x63\xf1\xc3\xf7\x6d\xce\x7c\xa5\xc0\ -\xe8\xe8\x58\x53\x67\xcf\x86\xbf\x7e\xb0\x6f\xd3\x92\x14\xc9\xa4\ -\x1e\xf0\xe7\x8f\x86\x48\x17\x1e\x01\x44\xa2\x17\xf8\x43\xef\x05\ -\xf5\xee\x75\xfa\x5d\xdd\x5a\x48\x15\x23\x17\x7e\x73\x23\x62\x1c\ -\xd3\xf3\xcc\x4c\xec\x32\x36\x1c\x24\x14\x0c\x11\x8d\x79\x71\x50\ -\x2c\xe6\x71\x1c\x87\xad\x4c\x89\x1b\xf7\x0c\x36\xf6\x8e\x00\xe4\ -\xbc\x80\x3b\xff\xf9\x2e\x26\x8d\xf1\x42\xde\x5c\xf8\x67\xcc\xba\ -\x08\x9c\x5d\xdf\xd5\xcd\xf5\x5b\x7a\xbc\x5e\x4e\x5b\x0a\x4b\x0c\ -\x64\xa4\x91\xe1\x12\xde\x77\x2e\x2e\xf7\x7a\xeb\xff\x8b\x00\xc0\ -\xb7\x0b\x66\x0e\xb8\x08\x5c\x5c\x0c\x7b\x97\x53\xe0\x74\xb3\xaa\ -\x35\x73\x3b\xc9\x46\x86\x1b\x74\x28\x5f\xf4\xf5\xfc\x7f\x92\x93\ -\xb2\xba\x6d\x79\x43\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ -\x60\x82\ -\x00\x00\x07\x7b\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ -\x67\x9b\xee\x3c\x1a\x00\x00\x07\x0d\x49\x44\x41\x54\x58\x85\xc5\ -\x97\x49\x6c\x1c\x65\x16\xc7\x7f\xef\xab\xea\xcd\x6e\xdb\xe9\xb6\ -\xe3\x71\x1c\xdb\x31\x31\x6d\x07\x05\xc5\x09\x4b\x34\xc9\x44\x80\ -\x66\xc4\xa2\x44\x42\x39\x70\xe4\x80\x10\x20\x84\x10\x52\x0e\x13\ -\x0e\x20\x61\x09\x44\x16\x89\x1c\xb8\xc0\x81\x2b\x42\x82\x03\x17\ -\x92\x81\x64\x32\x08\x65\x63\x11\x0e\x26\x13\x5b\x4a\x3c\xce\x82\ -\xdb\x59\xec\x76\xa7\xbb\xdd\x5d\xd5\xdd\xb5\xcc\xa1\xaa\xab\x17\ -\x5b\x73\x8b\xe6\x93\x4a\x5f\x2d\xaf\xde\xff\x5f\xff\xf7\xbe\xf7\ -\xbd\x12\xd7\x75\x39\x28\xb2\x17\x98\x00\xc6\x81\x30\xf7\x77\x54\ -\x80\x29\x60\xe2\xa8\xeb\x9e\x90\xbf\xc3\xde\xae\x58\xec\xf8\xdf\ -\x1e\x7a\x88\x1d\x43\x43\x44\x74\xfd\xbe\xa2\x97\x2d\x8b\x8b\x37\ -\x6f\x72\x7a\x66\x86\x9c\x61\xec\xd3\x81\x89\xbf\x6e\xd9\xc2\xf8\ -\xc6\x8d\x5c\x99\x9f\x67\x3e\x93\xa1\x6a\x59\x6b\xbe\x2c\x22\x68\ -\x22\x28\xa5\xd0\xfc\x43\x29\x85\x26\x12\x9c\x2b\xa5\x50\xbe\x4d\ -\xeb\xac\x2b\x45\x22\x1e\xe7\xd1\xa1\x21\x5c\xd7\xe5\xeb\x8b\x17\ -\x27\x74\x60\x7c\x7c\x70\x90\xab\xe9\x34\xf9\xe1\x61\x52\xaf\xbe\ -\x8a\x16\x89\xac\x85\x8e\x00\x4a\x04\x44\x50\xfe\x3d\x25\x82\xf8\ -\xcf\xa4\xe5\x9c\xc6\xfb\x00\xd5\x2a\xa5\x33\x67\xc8\xcd\xce\x32\ -\x3e\x38\xc8\xd7\x17\x2f\x8e\xeb\x40\x38\xac\x69\xa4\x33\x19\x52\ -\xaf\xbd\x86\x1e\x8f\xaf\xc6\x6e\x70\x12\xea\xea\x22\xdc\xdd\x4d\ -\x28\x91\x40\xeb\xea\xc2\xb2\x6d\xcc\x4c\x06\x29\x14\xd0\x56\x56\ -\x70\x56\x56\x02\xb5\xa4\x75\x0e\x85\x88\x3f\xf1\x04\xf9\xcb\x97\ -\x59\xe7\xe1\x84\x75\x00\xd7\x75\xa9\xda\x36\xae\x6d\x63\xf9\x0e\ -\x5a\xc1\xe3\x23\x23\x24\x77\xed\x42\x8f\xc5\x56\x11\xec\xec\xef\ -\xaf\xc7\xb8\x58\xe4\xc6\xe9\xd3\x24\x0b\x05\x10\x09\xd4\x0b\x66\ -\xc7\x01\x11\x5c\xd7\x05\x20\x20\x00\x60\x15\x8b\x88\xa6\x35\xc7\ -\x3c\x16\xa3\xf7\xa9\xa7\xe8\x18\x1d\x5d\x33\x2f\x5a\x47\xa4\xbd\ -\x9d\xd1\xe7\x9f\xe7\xc6\xe4\x24\x32\x39\x49\xbb\x52\x75\x70\x11\ -\xc4\x71\x50\xad\x04\x1c\xff\xc2\x2e\x16\xc1\x27\x20\x40\x7c\x78\ -\x98\xfe\xfd\xfb\x09\x35\x84\xc5\xb1\x6d\x96\xe6\xe7\xb9\x33\x37\ -\xc7\xdd\xb9\x39\xda\x22\x11\x12\x43\x43\x74\x0f\x0f\xd3\x3d\x30\ -\x80\xf2\x01\x37\x3d\xf2\x08\xc5\xcd\x9b\xb9\xf6\xd5\x57\xf4\x57\ -\x2a\x01\x01\xd7\x71\x50\x4a\x05\x98\x1e\x01\xc7\x01\xa0\x9a\xcf\ -\x23\xa1\x10\x4a\x04\x3d\x1e\x5f\x05\x7e\xed\xb7\xdf\xf8\xd7\xa7\ -\x9f\xb2\x29\x14\x62\x7d\x3c\xce\x48\x2c\x86\x52\x0a\xb9\x71\x83\ -\xdc\xf7\xdf\x73\x2b\x12\xa1\x6f\xff\x7e\x7a\xb7\x6c\x01\xa0\x7d\ -\xdd\x3a\x1e\x78\xe1\x05\xa6\x3e\xfa\x88\x2d\x89\x84\xa7\x80\xeb\ -\xa2\x44\x02\x4c\x05\x60\xfb\x17\xb7\x4e\x9e\xa4\xba\xbc\x8c\x5d\ -\x2a\xd1\xbf\x6f\x5f\x00\x5e\x35\x4d\xfe\xf1\xf1\xc7\x9c\x3b\x72\ -\x84\x3f\xb7\xb7\xf3\x40\x7b\x3b\x1d\x80\x6b\x9a\xb8\x86\x81\x6b\ -\x18\x44\x2c\x8b\x64\xa9\x84\xf5\xc5\x17\x5c\xff\xf2\x4b\xaa\xe5\ -\xb2\x47\x22\x91\x60\xfd\x73\xcf\x91\xcb\x66\xc1\x34\x11\xd3\x44\ -\x44\x02\x4c\xd5\x14\x82\x5c\x8e\xa5\x1f\x7e\xa0\x63\x64\x84\x75\ -\xdb\xb7\x07\x5f\x7e\xea\x93\x4f\xa8\x5e\xb8\xc0\x63\x3d\x3d\x84\ -\x2c\xcb\x03\x35\x4d\x22\x03\x03\x44\x06\x07\x71\x0d\xc3\x73\xee\ -\xcf\x91\xc9\x49\xf2\xdf\x7c\x13\xbc\x9f\xda\xb3\x87\x74\x77\x37\ -\xf8\x64\x95\x48\x80\x19\x28\xa0\xc0\x93\xb3\x5a\x65\xe8\xc5\x17\ -\xeb\xb2\xff\xfa\x2b\x37\x4f\x9c\x60\x24\x16\xf3\x80\x4b\x25\x1c\ -\xc3\x20\xf9\xec\xb3\xf4\xbf\xf1\x06\x7d\xaf\xbf\x4e\x61\xd7\x2e\ -\x8c\x5c\x0e\xd7\x34\xa1\x54\x02\xc3\xc0\x3a\x73\x86\xc2\xcc\x4c\ -\xe0\xe7\xd1\x97\x5f\xe6\xf2\xfc\xbc\xa7\x40\x83\xea\xaa\x96\x03\ -\xb5\x8a\xd6\x91\x4a\x11\x4e\x26\x83\x84\x3b\xfe\xc1\x07\xec\xe8\ -\xec\xf4\xd8\x97\x4a\x01\x89\xf8\xce\x9d\x81\xf3\x4d\x4f\x3e\xc9\ -\xd5\x3b\x77\xa0\x54\xf2\x48\x18\x06\x18\x06\xe5\xcf\x3f\xc7\xb5\ -\x6d\x00\x62\x5d\x5d\x64\xc3\x61\x9c\x4c\x06\x59\x95\x03\xae\x1b\ -\x94\xd3\x75\xdb\xb6\x05\x8e\xef\x5e\xb9\x42\x78\x66\x86\x68\x0b\ -\x38\xa6\x89\x34\x54\xcb\x70\x2c\x46\xae\x50\x80\x1a\xb8\x69\x82\ -\x69\xe2\xcc\xcf\x53\x4d\xa7\x03\xbb\xe8\x86\x0d\x54\xd3\x69\x94\ -\x08\x76\x63\x08\x1c\xc7\x09\x6a\x79\x57\x03\x81\xf4\xd4\x14\x5d\ -\x8e\x43\x35\x9d\xc6\x5a\x5a\xf2\xe4\xad\x81\x34\x0e\xd7\x85\x4a\ -\x05\xca\x65\xa4\x5c\x0e\x08\x88\x69\xe2\xcc\xcd\x05\x66\xbd\xa9\ -\x14\xf7\x2c\x6b\x0d\x05\x6a\x21\x50\x8a\x8e\x87\x1f\x0e\x5e\x58\ -\xf8\xfd\x77\x92\xa1\x90\xb7\xb6\x0d\x03\x7b\x79\x19\xf7\xde\x3d\ -\xdc\x62\xd1\x03\x6d\x1c\x95\x4a\xf0\xf5\x52\x2a\x41\x3e\x8f\x9b\ -\xcd\x62\x5d\xba\x14\x98\xfc\x69\xeb\x56\x32\xd5\x2a\x4a\xa9\x20\ -\x07\x74\x00\xdb\xb6\xd1\x94\x42\x6a\x55\xcb\x1f\x22\x42\x5c\xd7\ -\x83\xdd\x4c\x03\xc4\xb6\xbd\xaf\x6c\x19\x52\x2e\x23\x86\x51\xdf\ -\x90\xfc\x8d\xaa\xc5\x21\x2b\xb6\xed\x2d\x43\x3f\x37\x14\x80\xe5\ -\x87\x40\x53\x0a\x63\x7a\x3a\xb0\xdf\x38\x3e\x4e\xb1\x41\x9d\xc6\ -\xed\xb6\x75\x28\x1f\x50\x35\x80\x8b\x08\xa1\xb1\xb1\xc0\x66\xf1\ -\xf2\x65\x12\xe1\x30\x4a\x04\xab\x29\x04\xb6\x8d\xf8\xab\xa0\xd8\ -\x40\xa0\x7f\xdb\x36\x0a\xb5\xfc\x68\xd9\xdb\x57\x29\xb0\x06\xb8\ -\x12\x41\x4f\xa5\xea\x04\xa6\xa7\x59\x1f\x89\xac\x56\xc0\x76\x9c\ -\xa0\xd1\x30\x1a\xd6\xee\xfa\x54\x0a\xab\xaf\x6f\xcd\x06\xa3\x55\ -\x83\x46\xd0\xda\xa1\xf5\xf5\xa1\x86\x86\x02\x9b\xcc\xcc\x4c\x9d\ -\x40\x6b\x12\x8a\x2f\x6f\xe5\xfa\x75\x2a\xd9\xac\xf7\x50\xd3\x78\ -\xfc\xfd\xf7\x29\xf8\x3b\x58\x23\x89\x46\xa2\x77\x2e\x5d\x22\xa2\ -\x69\xcd\x21\x50\x8a\xb6\x03\x07\x82\xdd\xd5\xc8\x66\x51\xe9\x34\ -\xba\x52\xab\x0b\x91\x65\xdb\x75\xe7\x22\xa4\x8f\x1e\x0d\x9c\x0f\ -\xef\xde\x8d\xb1\x6f\x5f\xd0\xfd\xd4\xec\x4a\x9f\x7d\xc6\xad\x1f\ -\x7f\xe4\xe6\xf9\xf3\x9c\x3f\x76\x8c\x91\xb6\xb6\x26\xf0\xf0\xde\ -\xbd\xe8\xe3\xe3\x81\x9f\x73\x87\x0e\x31\x16\x8f\x7b\xca\x89\x60\ -\xf9\x21\xd0\x6b\x0a\xa8\x5a\x5f\x27\x42\xe9\xf4\x69\x16\x4f\x9d\ -\x62\xfd\xd3\x4f\x03\xb0\xfb\xed\xb7\xf9\xb7\xae\x93\x38\x79\x32\ -\x20\x61\xcf\xce\x22\xef\xbc\x43\xbe\x5a\x65\x4f\x28\x44\x5b\x34\ -\xda\x04\x1e\x79\xe5\x95\x00\x7c\xf6\xdb\x6f\x29\x9f\x3d\xcb\x58\ -\x6f\x6f\xd0\xa6\xad\x0a\x41\x6b\xa2\xe5\x8e\x1d\xc3\xcc\x64\x00\ -\x08\xc5\x62\xec\x78\xf7\x5d\xc2\x87\x0f\x53\xee\xe9\xa9\xc7\x59\ -\x29\xfa\xa2\x51\xda\x74\xdd\x6b\x5e\x36\x6c\xa0\xfd\xc3\x0f\x89\ -\xbd\xf9\x26\x2a\x1a\x05\xa0\xb4\xb8\xc8\xcf\x47\x8e\xf0\x97\x64\ -\xd2\x03\x6f\x21\xa0\xd7\x42\x10\x0d\x87\x9b\x62\xec\xe6\x72\xdc\ -\x7d\xef\x3d\x7a\x26\x26\x68\xeb\xe9\x01\xa0\x7f\xf7\x6e\x9c\x9d\ -\x3b\x29\x5e\xbb\x46\xe5\xca\x15\xe4\xea\x55\x22\x9a\x86\x36\x3a\ -\x8a\x4a\xa5\x08\x6d\xda\xd4\xd4\x51\x95\x16\x17\xf9\xe7\xc1\x83\ -\x6c\xd7\x34\xda\x43\xa1\x00\xdc\x6d\x0d\x41\x53\x0e\x34\xcc\xf6\ -\xd4\x14\x0b\x2f\xbd\x44\xe4\xad\xb7\x18\x7c\xe6\x19\x4f\x32\x5d\ -\xa7\x23\x95\x82\x86\xe5\xb5\xd6\xf8\xcf\x77\xdf\x31\x79\xf4\x28\ -\x8f\xe9\x3a\x03\x1d\x1d\xf5\xce\xd8\x6f\x4a\x56\x13\x80\xb5\x7b\ -\xf9\x95\x15\xd4\xe1\xc3\xcc\x9e\x3d\xcb\xc6\x03\x07\x88\x25\x12\ -\xff\x13\xd8\xc8\x66\x39\x77\xe8\x10\xea\xc2\x05\xf6\x26\x12\x84\ -\x35\xad\x19\xdc\xb7\x6b\x26\xe0\x38\xb8\xb0\xe6\x7a\xd7\x94\x42\ -\x44\xe8\x38\x7f\x9e\xc5\x73\xe7\xb8\xdd\xdb\x8b\x1a\x1d\x25\x36\ -\x36\x46\xf7\xd6\xad\x80\x57\xe1\x32\xd3\xd3\x54\x66\x67\x89\x2e\ -\x2c\x30\x12\x8b\x31\xd0\xdd\xdd\x14\xf3\xc6\x7f\x84\xaa\x6d\x07\ -\x95\x50\x07\x2a\xa6\x65\x85\x8b\xa6\x49\xb4\xb3\x73\x4d\xf0\x5a\ -\xd2\xb5\x29\xc5\x83\xcb\xcb\xc8\x4f\x3f\xa1\x7e\xf9\x05\xd3\x71\ -\xc8\x59\x16\x09\x4d\x63\x73\x38\xec\xad\xf1\x64\xb2\x0e\xb8\x06\ -\xb8\x88\x90\x5e\x5a\xc2\xf4\xfe\xbe\x2a\x3a\x30\x75\xbb\x50\x78\ -\x5c\xc3\xeb\x84\x93\x9d\x9d\x28\xd7\x45\xfc\xd6\xb9\x26\x59\x6d\ -\xef\x73\xfc\xbf\x22\xc7\x75\x89\x2a\x45\x9b\x5f\xd9\xc4\xbf\x27\ -\xae\x5b\x07\xac\x9d\xfb\xfe\x6c\xdb\x66\x7e\x71\x91\xab\x0b\x0b\ -\xdc\x2e\x14\x00\xa6\x74\x60\xe2\x66\x3e\x7f\xdc\x05\xca\xb6\xcd\ -\x82\x5f\x05\xef\xd7\xb0\x5d\x97\xc5\x52\x89\x3f\xf2\x79\x80\x09\ -\xf9\x7f\xff\x9e\xff\x17\xc5\xd6\x3d\x9a\xb0\xf3\x6b\xe8\x00\x00\ -\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x04\xb5\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x1c\x00\x00\x00\x1e\x08\x06\x00\x00\x00\x3f\xc5\x7e\x9f\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x04\ -\x6f\x49\x44\x41\x54\x48\x0d\xbd\x96\x6b\x68\x93\x57\x18\xc7\x9b\ -\x34\xa9\xa8\xd4\x2b\xce\xb6\x54\xa7\x78\x2b\x65\xe8\xa4\x2d\xf3\ -\xcb\x86\xf5\x0e\x32\xfd\xe0\x0c\x82\x8a\x0a\x92\xde\x28\xa5\xc3\ -\xa2\x43\x1d\x65\x4a\xfd\xd2\x0f\x42\x95\x5e\xac\x28\x38\x05\x2b\ -\x38\x10\x65\xb0\xba\x8a\xe0\xb5\x69\x55\xbc\x0b\x32\x6b\xd5\xd8\ -\x74\x3a\x87\xb4\xc9\xd2\xa4\xc9\x7e\x4f\x78\x4f\x7c\xdf\xf2\xe6\ -\x4d\xf4\x83\x07\x4e\x9e\xfb\xf3\x3f\xcf\xf3\x9e\x73\x72\xd2\xd2\ -\x3e\xf3\x48\x4f\x05\x2f\x1a\x8d\xda\x7c\x3e\xdf\xe2\xae\xae\xae\ -\x9e\x54\xfc\xad\x7c\x52\x02\xec\xeb\xeb\xab\x03\xb4\xb5\xa8\xa8\ -\x28\x00\xe8\x55\xab\x84\xc9\x6c\xf6\x64\x0e\xa5\xa5\xa5\x5b\x01\ -\xfb\x09\xbf\x50\x24\x12\xf1\x24\xf3\x4f\x66\xb7\x04\x04\x6c\x31\ -\x20\x2d\x92\xc4\x6e\xb7\x97\xb6\xb4\xb4\x5c\x4a\x96\x30\x99\xdd\ -\x96\xc8\xa1\xa2\xa2\x62\x6e\x38\x1c\xbe\x41\x75\x13\x6d\x36\xdb\ -\x79\xfc\xa4\xba\xa5\xcc\x59\xe8\xb2\xa0\x41\xf4\xef\xa0\xb7\x99\ -\x57\x32\x32\x32\x4e\x36\x34\x34\xbc\x84\xb7\x1c\xa6\x80\xd5\xd5\ -\xd5\x93\x06\x07\x07\x6f\x12\x39\xdb\x32\x5a\x67\x04\x3c\x82\x78\ -\x16\x5a\xd3\xd4\xd4\xd4\xa3\x33\x19\x58\xd3\x96\xfa\xfd\xfe\x56\ -\xbc\xe2\x60\x5a\xb2\x56\xda\xba\x8a\x99\xdb\xdc\xdc\x6c\xcf\xc9\ -\xc9\x71\xc2\xcf\xc4\xb6\x0e\xdf\x53\xcc\x20\x95\xff\xc0\x27\x78\ -\x54\x52\x52\x52\x6e\x40\xd1\x09\x0e\x1d\x1f\x67\x33\x33\x33\x37\ -\x0f\x0c\x0c\xb8\x09\xfe\x11\x65\x2e\x89\x64\x61\x4b\xa1\xb7\xb3\ -\xb3\xb3\x2f\x03\x12\x45\x0e\x33\x7b\xb4\x79\xb6\xaa\xaa\x6a\x6a\ -\x20\x10\xa8\x43\xde\x86\xdf\x61\xb7\xdb\x3d\x8f\x6f\x5e\x85\x6c\ -\x18\xa6\x2d\x55\x1e\x04\x49\x15\x1b\x01\xde\x89\x2e\x4f\xd3\xdf\ -\x24\xd1\x22\xe5\x33\x92\xb2\xd1\x5c\x00\x1e\x67\x8e\x66\x61\x7b\ -\xe9\xc6\x7e\xbd\x8f\x25\xa0\x72\x24\xd8\x46\x9b\xd6\x22\xef\x62\ -\x01\xbf\xf2\x8d\x0e\x29\x9b\x19\x05\x74\x25\x8b\xbc\x80\xcd\x0e\ -\xe8\x4a\x40\xdb\xcd\xfc\x52\xd2\xd5\xd6\xd6\x9a\x7e\xf7\x91\xc1\ -\x74\xa7\x86\x19\x65\xa1\x0f\xda\xda\xda\xe2\x17\x4c\x4a\x15\x56\ -\x56\x56\x8e\xa2\xca\xc9\xfa\xa4\x1c\x99\x70\x56\x56\xd6\x7b\x16\ -\xf0\x9f\x5e\xaf\x78\xf4\x0e\xaf\xd7\x7b\x0f\x39\x8f\x2a\xb7\x53\ -\xe5\x51\xb1\xa5\xb4\xda\x60\x30\xb8\x6c\x68\x68\xe8\x95\x7e\xd2\ -\x32\x1f\x09\xfd\x54\x70\x87\x16\x7e\xa5\x80\x14\x05\x30\x0c\xd0\ -\x2f\x9a\xbc\x49\xe9\x53\x02\x54\xce\xd0\x7f\x48\x72\x54\x9b\xc7\ -\x91\xff\xa2\xf2\x05\xcc\x3f\xcd\x5a\xcd\x6e\x3f\x87\x6f\x00\xfb\ -\xb7\x74\x69\x8a\xe4\x31\x3d\x16\x62\x48\x30\x7a\x69\xcd\x76\x65\ -\xe3\x1b\x8d\x27\xe1\x1b\x12\x7e\x41\xb5\x5f\xa3\xbf\xa5\x6c\x42\ -\xeb\xeb\xeb\x07\xe9\xc0\x15\xd8\xe5\x74\x69\x21\xf4\x8f\x8f\xad\ -\x50\xf2\xc4\x47\x7a\x7a\xfa\x6c\xc0\x64\xd1\x72\x2e\xdf\xc4\x0d\ -\x46\xe6\x99\x26\x4e\x17\x1a\xab\x90\x55\xc8\x1d\xb9\x91\xe0\x8b\ -\x9c\x31\xb9\x35\x12\x8d\x7c\xaa\x7a\xaa\x19\x47\x0d\x0f\x0f\x67\ -\x0b\xcf\x51\x39\xc0\x51\xe9\x35\x0b\xd2\x3a\x90\x06\x8d\x6d\x3a\ -\x55\xe1\x0c\xc0\xb6\xa1\x5c\x6e\x16\xa4\xd3\xf9\xe1\x7b\xf1\x9b\ -\x00\xcd\x85\xbe\xa0\xca\x42\xc0\x76\xeb\x7c\x0c\x2c\x79\xc5\x57\ -\x00\xff\x15\x1a\x03\x64\x85\xb1\xff\x39\x8c\xdf\x88\x32\xd1\x20\ -\xe8\x31\x1d\x58\x82\xff\x1c\x7c\xee\xe2\x3f\x83\x2a\xeb\xa8\xda\ -\x99\x28\x06\xfd\x34\xcd\xd6\x2f\x34\x06\x58\x5c\x5c\xfc\x80\x64\ -\x03\xc8\x79\xb2\x11\x34\x87\x84\xa4\xb1\xb1\xf1\x1d\x95\xb9\x70\ -\x90\x8a\x57\x10\xfb\xb3\x99\xb3\x1c\x78\x16\xf5\x9d\xd8\x38\x46\ -\x37\x84\xc6\x00\x5d\x2e\xd7\x30\xfc\x75\xa6\x8d\xd5\x6f\x16\x43\ -\xb2\x01\xe8\x13\x7c\x76\x68\x7e\xbb\xca\xcb\xcb\x65\x97\x1a\x46\ -\x47\x47\xc7\x32\x14\xb2\x93\xef\xd3\x99\xd7\x62\x54\xdf\x30\x8d\ -\x95\xd4\x8b\x02\xba\x9b\x2a\xc7\x08\xaf\x06\x01\x72\x9b\x78\x99\ -\x7f\x2b\x9d\x50\x92\x34\x42\xce\x10\xd3\xcf\xc5\x73\x90\xb8\x59\ -\x7a\xbb\xe4\xd2\xe4\x63\x4a\x6f\xb8\xda\xd8\xad\x97\x71\x92\x16\ -\xec\x23\x99\x69\x9b\x54\x60\x32\x4a\xae\x4d\xe4\x3a\xc1\x62\xfb\ -\xa1\x33\xc9\x27\xed\xff\x50\xa1\x08\x7c\x17\x79\x2c\x49\x7b\xf7\ -\xb0\xda\xf5\xa2\xfb\x94\x51\x56\x56\x36\x1f\x90\x66\x2d\xb6\x46\ -\x81\x89\x1c\xbf\xc5\x45\xf0\x78\x3c\x2f\x0a\x0a\x0a\xde\xc2\xae\ -\x66\x65\x6b\x0a\x0b\x0b\x5f\x77\x77\x77\xcb\x9b\x25\xe5\x21\x0f\ -\x2f\xc0\x7e\x27\x60\x1c\x39\x8e\x8c\xfc\x3f\x34\x00\x4a\x56\x00\ -\x3c\xbc\x3f\x33\x08\x2a\x46\x14\xd0\x39\xc8\xb7\x78\x8f\xc6\xce\ -\x91\xf8\x98\x0d\xd9\xdd\xf8\xee\x23\xee\x30\xf6\xb1\x80\x9d\xe6\ -\x61\xe5\xee\xec\xec\x94\x8e\xc5\x87\xe1\x1b\xc6\xb5\x30\xac\x74\ -\x03\x5b\x59\xde\x36\x63\x99\x21\x12\xc8\x03\xe9\x02\xba\x6b\x0e\ -\x87\xc3\xc7\x26\x09\x3a\x9d\xce\x1c\xe4\x7c\xce\xa2\xfc\x39\xcb\ -\x27\x98\x84\x4f\x04\xd0\x03\x54\xb6\x17\x5e\xae\x3c\xc3\x48\x08\ -\x28\x5e\x3c\x15\xbf\x0c\x85\x42\x7b\x60\xb7\x30\xad\x0e\xb7\xb8\ -\xcb\x6d\xd2\xce\xb1\xda\xc1\x91\xb9\x1b\x53\x98\xfc\x58\x02\x2a\ -\x7f\xfe\x5a\x72\xb9\xed\xbf\x47\x5e\xc5\xcc\x67\xca\x5f\x8d\xbc\ -\x59\xbc\x54\xf3\x1c\x90\x76\xe8\x6f\x54\xf5\x10\xbd\xe5\xf8\x1f\ -\x26\x14\xf6\x13\xa6\x79\x97\x77\x00\x00\x00\x00\x49\x45\x4e\x44\ -\xae\x42\x60\x82\ -\x00\x00\x01\x4f\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x04\x00\x00\x00\xfd\x0b\x31\x0c\ -\x00\x00\x01\x16\x49\x44\x41\x54\x78\x01\xed\x96\x4b\x4a\x03\x41\ -\x14\x45\xcf\x20\x66\x1a\x14\x5d\x81\x26\xad\x7b\x08\x82\x38\xd0\ -\x6d\x88\xe0\x46\x14\x07\xe2\x36\x32\x51\x83\x9a\x55\x28\x22\xb8\ -\x03\x23\x22\x0e\x84\x56\xb4\x03\x7e\xba\x53\x4a\xf3\x28\x32\x10\ -\x2c\x0b\xee\x24\xd4\x39\xe3\xcb\x85\xa2\xea\xbd\x22\x31\x85\x24\ -\x12\x1d\x4e\xc8\x29\xa9\xbc\xe3\x09\xdd\x2f\x8e\x18\xb0\x4c\x20\ -\x19\xcf\xb8\x08\x5f\x58\x21\x88\x33\x5c\xa4\x37\x34\x09\xe0\x15\ -\x17\xed\x21\x01\x38\xf3\x3f\xf4\x2c\x33\x66\x5d\x53\xd0\x62\x68\ -\xa9\x07\xe6\x14\x05\xb0\x4a\x65\xb9\xbe\xa6\x00\xf6\x7d\x72\x5b\ -\x53\x30\xc3\x95\x25\x0b\x96\x14\x05\xd0\xa1\xb0\xec\x25\x0d\x45\ -\x01\xec\xf8\xf4\x9e\xa6\x00\xff\x4c\x2b\xba\x9a\x82\x79\x1e\x2d\ -\x3f\xa4\xa5\x28\x80\x0d\x3f\x10\x7b\x9a\x82\x4d\x6d\xc1\x82\x3f\ -\xa2\x5b\xcd\x11\x9d\x5b\xba\xa4\xab\xbd\xa6\xbb\x9a\x87\x36\xb2\ -\xec\x05\x0d\xe5\xa8\x78\x63\x51\x3b\xec\xb6\xb4\xe3\xfa\x58\xb3\ -\x70\xee\x2c\x75\xcf\xac\x72\x65\x56\xac\xf1\x27\x05\x2e\xda\x03\ -\x02\x18\xe0\x22\xbd\xa6\x49\x00\x19\x39\x2e\xc2\x9c\x8c\x40\xda\ -\x1c\xf1\xc4\x7b\xed\x47\xed\x67\xed\xd7\x8f\x65\xed\xc4\x87\xd2\ -\x6e\xfe\x29\x6d\x12\x89\xc4\x54\xf3\x0d\x0a\x7f\x93\xd6\xf9\xe7\ -\x0c\x36\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x73\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -2448,6 +83,194 @@ qt_resource_data = b"\ \x01\x9d\x80\x23\xf6\xf8\x2f\x65\xfb\x8e\x7f\x07\xf8\x13\x7f\x10\ \x23\x23\x63\x99\xf1\x1a\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ \x60\x82\ +\x00\x00\x08\x58\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x07\xea\x49\x44\x41\x54\x78\xda\xed\ +\x57\x6b\x6c\x14\xd7\x15\x3e\xf7\xce\xec\x7a\xd7\x76\x36\x7e\xcb\ +\x4e\x00\x97\x85\x04\x27\x04\x28\xe0\xda\x78\xcd\x8a\x26\x31\x76\ +\x6c\x13\x27\x8e\xb0\x1b\xa2\x18\xc5\xb4\x34\x22\x52\x15\x4a\xca\ +\x8f\xa8\xf4\x47\x9b\x56\xaa\xd2\x87\xaa\x3a\xa1\x52\x10\xa2\x55\ +\xdd\x28\x8a\xa5\x22\x12\x22\xa7\x34\xb1\x1d\xdb\x3c\x6d\x8c\xa1\ +\xf1\x0f\xc0\x8f\xf8\x0d\xc6\x6b\xf0\xae\x3d\xbb\x3b\x3b\x8f\x7e\ +\x33\xf6\x76\x65\x66\x41\xfc\xcb\x9f\x5e\xe9\x6a\x76\x66\xee\x9c\ +\xef\x3b\xdf\x39\xe7\x9e\xbb\x4c\xd7\x75\xfa\x36\x07\xa7\x6f\x79\ +\x88\xd1\x1f\xbf\xcc\xcd\x25\x55\x51\x88\x18\x23\xa8\x92\xc8\x38\ +\x3f\xe4\x4a\x49\x79\x31\x18\x08\x9c\x51\x65\xf9\x67\x58\x78\x87\ +\x43\x2d\xae\x69\x26\x6b\x86\xdf\xc2\xe2\x6f\xba\x5b\x45\xdc\xc3\ +\x46\x12\x63\xec\x37\xc9\xc9\xc9\x2f\x48\x81\x40\x1b\xbe\x3b\x20\ +\x32\x76\xdb\xfc\x1e\xf3\x47\x73\x73\x51\x02\x4b\x87\xa6\x69\x5c\ +\x13\x84\xdf\x7d\x7f\xed\xda\x37\xf2\x67\x67\xe9\x9a\xcb\xf5\xc4\ +\xbf\xc6\xc6\xb2\x35\x59\xde\x0d\xb0\x19\x7a\x80\xa1\xe9\x7a\x02\ +\x28\x35\x14\xaf\x5b\x57\x9f\xb7\x6c\x19\x0d\x4a\xd2\x6b\xa7\x5b\ +\x5b\x5d\x6a\x24\xb2\x9b\x0b\xc2\xfc\x3d\x43\xa0\xa9\x2a\x8f\x30\ +\xf6\x7b\xef\x86\x0d\x6f\x94\x80\xa1\x0b\xaa\xe4\x87\x42\x54\x9a\ +\x99\x59\xc9\x44\xf1\x98\xaa\xeb\xae\x07\x00\xb7\xa9\x9a\xd6\x50\ +\xe8\x76\xd7\x6f\xca\xc9\xa1\xa4\xf5\xeb\x69\xa3\xdb\x4d\x9e\xed\ +\xdb\x5f\xc2\xf3\x0f\x40\xc2\x01\x95\x2d\x04\x4c\xc9\x34\x51\x7c\ +\x6f\x5b\x51\xd1\x4f\xb7\xdf\xbe\x4d\x7a\x59\x19\x89\x1f\x7d\x44\ +\xda\x81\x03\xf4\x5d\x9f\x8f\x9e\x4b\x4d\xad\x12\x6d\xb6\x26\x8d\ +\x28\xe7\x3e\xe0\x2e\x78\x7e\xd4\x93\x9b\xbb\x77\x63\x7a\x3a\xe9\ +\xd5\xd5\x64\x3b\x78\x90\xb4\x92\x12\xda\xb8\x72\x25\x6d\xdd\xb9\ +\xf3\x15\xe2\xfc\x43\x4d\x51\xb2\x2c\x04\x60\xf8\xe7\xdb\xbc\xde\ +\x7d\x15\xf0\x5c\x7c\xfa\x69\x12\xf6\xef\x27\x1a\x1b\x23\x7b\x55\ +\x15\xb1\x43\x87\x68\xed\xcc\x0c\x95\x3b\x1c\xa5\x82\x28\x1e\x85\ +\x12\x29\x77\x83\xc3\x01\x51\x67\xac\x61\x6b\x56\x56\xdd\x06\xa7\ +\x93\x58\x6d\x2d\x25\x94\x96\x12\x8d\x8f\x93\x50\x58\x48\xac\xb8\ +\x98\x36\xe5\xe5\x51\x71\x5d\x5d\x35\x13\x84\xdf\x5a\x08\x3c\x94\ +\x99\x59\xe3\x31\xa4\xe1\x78\xf4\xe6\x9b\x44\x13\x13\x44\x7e\xbf\ +\x69\xc0\x51\x51\x41\xec\xed\xb7\x69\x15\xee\x9f\x15\x84\x72\xc4\ +\xb1\x11\xde\xa6\x51\x8c\xbc\x43\x65\xec\xf0\x16\x97\x6b\xf7\x13\ +\xa2\x48\x6c\xd7\x2e\x4a\x34\xc0\x6f\xde\x24\x0a\x04\xcc\x2b\xcb\ +\xcf\x27\x4a\x4b\xa3\x75\x20\x91\x91\x97\x57\x66\x21\x10\x9a\x99\ +\x69\xef\x33\xc0\x51\x09\xfa\xb1\x63\x64\xc6\x29\x18\x5c\x30\x00\ +\x25\x9c\x30\xc8\x41\xc2\x1d\x0e\xd3\x33\x8a\x52\x29\x72\xde\xa8\ +\xc1\x24\xa6\x91\x70\x87\x0b\x45\x71\x6f\x1e\xc0\xa9\xae\x8e\x92\ +\x10\x3e\xba\x75\x6b\xe1\x5b\x49\x22\x52\x55\xd2\xbb\xba\x4c\x87\ +\x86\xe0\x90\x7f\x68\xa8\xdb\x52\x86\x5a\x28\x74\xf0\xf3\x8e\x8e\ +\x2c\xf2\x78\x76\x14\x7e\xfc\x31\x29\x00\x17\x77\xec\x20\x9a\x5f\ +\x4c\x5a\x18\x4a\x42\x68\x28\x12\x21\xf7\x3b\xef\x90\x9d\xa8\xbc\ +\x35\x21\xe1\x84\xa2\xeb\x92\x57\xd3\x4a\x57\xa3\xb4\x6c\x00\x77\ +\x81\xa8\x09\x8e\x7b\x73\x38\x1c\xa4\x5e\xbe\x4c\xbc\xb7\x97\xfa\ +\x61\xa3\xbd\xb1\xf1\x82\x2a\x49\xfb\xa3\xb8\xff\xdb\x09\x7f\xf5\ +\xe8\xa3\xa4\x45\x22\xe9\xdc\x6e\xff\x5b\x45\x41\x41\x65\x7e\x7f\ +\x3f\x29\x95\x95\x24\x96\x97\x9b\x24\x60\x70\x41\x95\xe4\x64\xf2\ +\xb7\xb6\x52\xf0\xdd\x77\x69\x14\x9e\xc9\x82\x40\x6e\x82\x0c\xfb\ +\xf6\x51\xea\xf3\xcf\x2f\xac\x85\x4d\x73\x6d\x42\x02\x29\x43\x43\ +\xc4\x2f\x5d\xa2\x61\x54\x53\x6b\x53\xd3\x05\x45\x92\x6a\xc4\x84\ +\x84\x91\x3d\x58\x67\x29\x43\xce\xb9\x8f\x42\xa1\x57\xff\xdd\xdd\ +\xdd\x7c\x65\xc5\x0a\x62\x27\x4e\x90\xfc\xe9\xa7\xa6\x31\x53\x4a\ +\x24\xa8\x11\x4f\x57\x51\x11\x39\x90\xa4\xd9\x00\x5a\x01\xa5\x6c\ +\xf5\xf5\x94\x8a\x4c\xa7\xe9\x69\x73\x4d\x54\xf6\x48\x5f\x1f\xe9\ +\x9d\x9d\x34\x8a\x50\x7c\x75\xfc\x78\x8f\x32\x3f\x5f\x2b\xda\xed\ +\x23\x06\xc1\xb8\x0a\xe0\xa3\x05\x46\x8a\x92\x63\x73\x3a\xff\x5a\ +\xf2\xf8\xe3\xa5\x4f\x21\x19\x19\x64\xb5\x7b\x3c\x04\x72\x31\xef\ +\x12\x13\xe9\x4e\x7b\x3b\xc1\x28\x65\x20\xe6\xd1\x77\x98\xa6\xe7\ +\xf2\xe8\x28\xa9\xdd\xdd\x34\x81\x9c\xea\x68\x6b\xbb\x24\x07\x02\ +\x3f\x80\xe7\xd7\xa3\xe0\x7b\x24\xe9\xde\x04\x04\x3c\xd3\x15\xc5\ +\xc5\x6d\xb6\xbf\x97\xb8\xdd\x55\x4f\x4d\x4e\x92\x0e\x0f\x9d\x20\ +\x01\xef\x62\x24\xec\x76\x43\xb6\x18\xf8\x62\xcc\xc3\x23\x23\xa4\ +\xf4\xf4\xd0\xa4\x2c\x53\xfb\xd9\xb3\xe7\x91\x4f\xb5\x00\x5f\xe2\ +\x39\x08\x2c\x4d\x42\x3d\x76\x35\xa7\xc0\xb9\x1f\xdb\x6f\x7d\xdb\ +\xe0\xe0\x3f\xec\xcb\x97\x3f\xe7\x6e\x6e\x26\x09\x06\x13\x37\x6f\ +\x36\x01\xa3\x89\x89\x11\x03\x07\xa1\xd0\xd5\xab\x24\x23\xe3\xa7\ +\x91\x33\x1d\xbd\xbd\x5d\x6a\x38\xbc\x2b\x2a\xfb\x7d\x9b\x51\x32\ +\xa4\x8a\x2e\x62\xb8\x32\xc2\x10\x84\x19\x34\xa2\x5d\x5f\x0e\x0f\ +\x7f\xa2\x64\x66\x7a\xbf\x73\xea\x14\x31\xa8\xe4\xc4\xf6\x4a\xb2\ +\x1c\x03\x66\xcc\x58\x4b\xe1\xc1\x41\x92\xce\x9d\xa3\x69\xd8\x3a\ +\xd3\xdf\x7f\x45\x09\x85\x5e\xc0\xc6\x35\xf9\x40\xdd\x50\x84\x41\ +\xdd\x00\x66\x6c\xc1\x29\x5c\x99\x71\x45\x99\x29\x91\x88\x24\xdb\ +\x6c\xa4\xa3\x04\x6f\xb7\xb4\x98\x57\x8e\x1c\x40\x7f\x30\xc0\xcd\ +\x7b\x10\xa5\x59\x78\x6f\x83\x2a\x6a\x52\x12\x45\x64\x39\xcc\x34\ +\xcd\xcf\xf1\xdc\xec\x80\xb0\x6d\x76\x51\x4c\x81\xc8\x9a\x84\x7f\ +\x4a\x4d\x5d\x42\x00\x3f\x16\xba\x1a\xe7\x7f\xf1\xae\x5a\x55\xff\ +\xe4\xd4\x14\xf9\x86\x87\x29\x62\xe4\x28\xa6\x8e\x44\x43\xef\x30\ +\x89\x72\x63\x72\x4e\x22\xb6\x60\x01\x33\xed\x91\x47\xc8\x70\xfb\ +\x74\x57\xd7\x67\x0c\x1d\x10\x34\x67\xee\x26\x50\x8b\xfb\xa5\x65\ +\x68\x6d\xcb\x36\x6c\x32\x0d\x85\x6b\xd6\xd4\xaf\x43\x5b\xf6\x03\ +\x5c\x37\x0c\x44\xdf\x63\x47\x94\x51\x01\x11\x94\x9d\x06\x05\x18\ +\x08\x80\x85\x79\xf5\xa3\x79\x2d\xc3\x7e\x51\x54\x5c\x5c\x89\xfb\ +\x63\xda\x7d\xba\x28\xbf\x07\xb8\x0b\x9e\x1f\x2d\xde\xb4\x69\xef\ +\x66\xd4\xb0\xff\xda\xb5\x25\xe0\x2c\x36\xcd\xd8\x33\x4c\x28\x16\ +\x7b\x07\x12\x81\x1b\x37\x68\x25\x54\x2d\x2a\x2b\xab\x12\xec\x76\ +\xb3\x8b\x3e\x10\x01\x5d\xd3\x44\x8d\xf3\x06\x6f\x51\x51\x5d\x21\ +\xf6\x6e\xe9\xeb\xaf\x01\x1e\x1b\x51\x10\x15\x33\x05\x33\x1d\x53\ +\xb3\xda\x35\x49\xcc\xa1\x87\xb8\xd1\x96\x3d\xd5\xd5\xa5\x28\xe9\ +\xa3\x1a\x3e\xb9\x2f\x01\x80\x3b\x20\xfb\x61\x8f\xd7\xbb\x3b\x1f\ +\xed\x57\xba\x78\x31\xea\x79\x6c\x44\xc1\x11\xff\x08\x6a\x7e\x1e\ +\xa5\x97\x0e\x05\x20\xf3\x92\x75\xa6\x22\x58\x33\x8f\xd0\xe5\x42\ +\x89\x82\x9a\x9a\x72\x24\x6d\x23\xec\xa5\xc5\x25\x80\x04\x4c\xc6\ +\x51\xec\xfd\x2d\xa5\xa5\x7b\xb7\x20\xe6\x41\x94\x93\x1a\x2f\x3c\ +\x06\x38\x80\x65\xc4\xf8\x0c\xe7\xff\x39\x4d\x74\x61\x16\xde\xa6\ +\xe3\x59\x3c\x25\x08\xe4\xa4\x81\x01\x5a\x9d\x9d\x4d\xf9\x75\x75\ +\x95\xe8\x35\x06\x89\x6c\x0b\x01\x48\xf6\xeb\xe2\xb2\xb2\x3d\x5e\ +\x80\x2b\xed\xed\xa6\x31\x16\x07\xfc\x61\x00\xcf\xc1\xa3\x8e\x48\ +\xa4\x2b\xac\xeb\x15\x78\xb6\xfd\x6c\x30\x78\xf2\x16\x14\x48\x45\ +\x69\xaa\x66\x17\xb4\x2a\x11\xbe\x7e\x9d\xd6\xe0\x88\xf7\xbd\xd7\ +\x5f\x2f\xe7\x4e\xe7\x1f\x2d\x04\x92\xb2\xb2\x76\xac\x77\x21\x59\ +\xbf\xf8\x22\xae\xe7\xba\x01\x8e\xf7\x81\xcc\x4c\xea\xf4\xfb\x2f\ +\xc8\xaa\xba\x53\x24\x1a\x83\x01\x3f\xd4\x7b\xad\xcb\xe7\xfb\xec\ +\x96\xaa\x52\x2a\xd6\x20\x94\x96\xbc\xd1\xa1\x84\x8a\xe6\xb4\x0a\ +\x07\x92\x94\xd5\xab\xb7\x59\x08\x04\xa7\xa6\xbe\xbc\x66\xb4\x48\ +\xaf\x37\xae\xe7\x0f\x21\x99\x02\x38\xe1\x76\xfa\x7c\x3d\xb2\xa2\ +\xd4\x8a\x8c\x8d\xc4\x9c\x64\x3e\x54\xce\xab\x17\xc7\xc6\x9a\x7d\ +\x8a\x42\x0f\xe3\xe4\xa3\xdf\xad\x04\x9e\x0b\x8f\x3d\x46\x23\xd8\ +\x2d\x67\x87\x86\xba\x2c\x04\xb8\xaa\xfe\xa2\xb3\xb9\xf9\x78\x0f\ +\x36\x11\x7b\x41\x41\xec\x85\x01\x8e\xf8\xf9\x96\x2f\xa7\xb6\xf1\ +\xf1\x4b\xe1\x70\xf8\x65\x1b\xe7\xc3\x96\x6c\xe6\xfc\x8e\xaa\x28\ +\x3f\x3c\x7f\xf5\xea\xa9\x1b\x92\x44\x2e\x10\x26\x90\x40\x72\x99\ +\x87\x98\x04\x9c\x8c\xbf\x41\x78\xcf\x1f\x39\x72\x46\x99\x9b\x7b\ +\xcb\x42\x00\xb5\x3c\xc5\x64\xf9\x95\xce\x93\x27\x3f\xbc\x0c\x12\ +\x4e\x34\x1d\xe3\x65\x32\xbc\xbe\x81\x8f\xbf\x1a\x18\x38\x1f\x0e\ +\x06\x5f\x14\x39\xbf\x1e\x83\xb5\x90\x98\x04\x89\x9a\xee\x2b\x57\ +\x3e\x19\x87\x9a\x06\x71\x06\x12\x49\x38\x11\x8f\xa0\xa4\xcf\x1d\ +\x39\xd2\xa2\xfa\xfd\x2f\x09\x44\x03\x71\xcb\x50\xb0\xd9\x42\xa2\ +\xae\xff\xf8\x5c\x4b\xcb\x3f\xfb\x32\x32\xc8\xb1\x75\x2b\x4d\x20\ +\x71\xda\xfb\xfa\xba\x14\xa3\xab\x09\xc2\x88\x25\x37\x18\x33\xe3\ +\x1d\x9d\x9c\x31\x3f\xc2\x51\xdf\xdb\xdd\xfd\xf9\x04\x40\x9d\x90\ +\x7d\x1c\xbb\xe5\xc5\xa6\xa6\xd3\x68\x60\x75\x00\xbf\x49\xf1\x7a\ +\xc1\xfb\x88\x5b\xb4\x69\x20\x5e\xa9\x30\xf4\x87\x8c\x9c\x9c\x67\ +\x66\xa7\xa7\x7b\x71\x8c\xfa\x09\x17\x84\x51\x8a\x33\x9c\x0b\x5d\ +\x31\xd6\x41\x17\xaf\xb0\x92\xc1\x45\xf1\xcf\x29\x39\x39\xc5\xfe\ +\xa9\xa9\x6e\x38\xf0\x16\xbc\xfd\x26\xfa\x5d\xcd\x22\xee\xff\xff\ +\x1d\xff\x17\xef\xd2\xfe\x9f\xb7\x3d\x84\x48\x00\x00\x00\x00\x49\ +\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x03\x12\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\ +\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\ +\xe2\x03\x02\x04\x32\x2f\x3b\x59\x63\x86\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\x02\x7a\x49\x44\x41\x54\x68\xde\xed\xd8\x4b\xa8\x8d\x6b\x1c\ +\xc7\xf1\xcf\xc6\xce\xe6\xd8\x25\xb9\x0d\x44\x88\x72\xa2\x30\xc1\ +\x84\x5c\x42\x71\x9c\x11\x29\x45\x06\x88\x94\x5c\x06\xe4\x32\x31\ +\x33\x32\xa0\x64\xe2\x96\x08\x21\x85\x93\xd2\x49\x92\x94\x5b\x29\ +\xb9\x76\x8a\x48\x31\x71\x89\xe3\xb2\x2d\x93\x47\xbd\xad\xde\x77\ +\xaf\xb5\x77\x6b\x6f\x7b\x6f\xff\x6f\xad\xc9\xfb\xfe\xff\xbf\xe7\ +\xf9\x3d\x97\xff\xf3\xac\x97\x20\x08\x82\x20\x08\x82\x20\x08\x82\ +\x20\x08\x82\xa0\x6d\x18\x8b\x26\x94\xb0\xfc\x77\x30\xfc\x4f\x32\ +\x7b\x17\xdd\xbb\xba\xd9\x39\xc9\x6c\x09\xb3\xba\xba\xd9\xee\xb8\ +\x97\xcc\x9e\xef\xcc\x46\x86\x60\x0b\xea\x2a\xc4\xad\x48\x66\x9b\ +\xf0\x67\xe6\xf9\x06\x8c\xec\xe8\x26\xbb\x61\x36\x4e\xe3\x1b\xee\ +\x54\x88\x6f\xc4\xab\x64\x78\x5f\x99\xce\x87\xa4\x71\x18\x63\x3a\ +\x9a\xd1\xfe\xd8\x84\x27\x99\xbd\x58\xc2\xa1\x0a\x79\x3b\x53\xdc\ +\x7b\x0c\xca\x3c\x1f\x55\xa6\xf3\x1d\x27\x30\xfe\x57\x9a\xac\xc3\ +\x94\x34\x03\xff\x97\x75\xb0\x84\xd7\xf8\xbb\xc2\x92\xff\x98\x62\ +\xb7\x96\xbd\x1b\x8a\x2b\x39\x9a\x25\x9c\xc3\xa4\xf6\x34\xda\x88\ +\x55\xe9\xf8\xc8\xeb\xd0\x4d\x2c\x43\x43\x05\x9d\x43\x29\xfe\x39\ +\x7a\x17\x0c\xe8\x4c\x5c\x2b\x68\xe7\x12\xa6\xb6\xa5\xd1\x71\xd8\ +\x8b\x77\x39\x8d\x7f\xc1\x51\x4c\xae\xa2\x48\xc1\xc4\xb4\x4c\x4b\ +\x58\x5a\xc5\x4a\x9a\x83\x1b\x05\xc6\xaf\xa6\xba\x51\x57\x4b\xb3\ +\x97\x0a\x1a\x7b\x89\x1d\x18\xdc\xc2\xad\xf0\x6f\xca\xbf\x9d\x0a\ +\x54\xb5\x79\xf3\x70\xab\xa0\x2f\x67\x6a\x65\x76\x40\x8e\xf8\x63\ +\x2c\x46\x7d\x2b\xf4\x16\x64\x74\xa6\xb7\xb2\x76\xac\xcb\xe9\xd3\ +\xa9\x5a\x19\x9e\x95\x23\xfe\x1d\xc7\x5a\x71\x5c\xd4\xe3\x41\xa6\ +\xf8\xb4\xd4\xe8\x4c\x9c\xcd\xdc\xb9\xb3\xbf\xed\xb5\x32\xfc\x07\ +\x36\xa6\xe5\x5b\xde\x48\x13\x8e\xa4\x63\xa4\x1a\xd6\xa6\xbc\x6f\ +\x2d\x18\xac\x46\xac\xc1\xfd\x82\xa5\x7c\x1b\x2b\xd1\xa7\xd6\x45\ +\xab\x01\xab\xf1\x5f\x81\xf1\x03\x18\xd1\x4c\x7e\x5f\xbc\x49\xf1\ +\x7b\xab\x68\x6f\x34\x76\xe3\x6d\x4e\x7b\x9f\x70\x30\x1d\x4f\x75\ +\xda\x98\xfa\x74\xec\x3c\xc8\xe9\xc8\x57\xec\xc7\xb0\x9c\xbc\x5d\ +\x29\xe6\x1d\x06\x36\xa3\x3f\x17\x17\x0b\x66\xf3\x21\xd6\xa3\xdf\ +\xaf\xba\xf4\x2f\x2a\x38\x8f\xaf\x96\xc5\x0e\xc7\xe7\xf4\x6e\x73\ +\x33\x9a\x3d\xd3\xa0\x95\x0f\xe2\x49\xcc\x68\x8f\xd9\xac\xb6\x98\ +\xcc\xc7\xf5\x4c\x27\xf7\x94\xc5\x1c\x4f\xcf\x9f\xa1\x57\x33\x5a\ +\x13\x32\x1a\xcf\xb0\xad\x85\x47\x5e\xbb\x1b\x9f\x81\xcb\xe9\x1f\ +\xd0\x4f\x26\x67\x4c\x2c\xa9\xa0\xb1\x14\x17\xf0\x57\x67\xfb\x08\ +\xd0\x23\x33\x08\xd7\x32\x57\xce\x6e\x55\xe6\x75\x5a\x16\x66\x66\ +\x77\x5a\x57\xff\x92\xd1\x13\x4f\x6b\x7d\xed\xeb\xc8\x6c\xcc\x54\ +\xd9\xd1\x1d\x71\xbf\xd5\x9a\x17\xe9\xa2\xf2\x02\x8f\x04\x41\x10\ +\x04\x41\x10\x04\x41\x10\x04\x41\x10\x04\x6d\xc8\x0f\xf0\x6b\xdf\ +\x7c\xd8\x29\x0f\xa9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ \x00\x00\x04\x4b\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -2519,236 +342,6 @@ qt_resource_data = b"\ \xc2\xbe\x6b\xc0\x55\xc8\x31\xa0\x80\x1e\x20\x21\xee\xf8\x2f\xe5\ \xea\x8d\x7f\x05\xf8\x03\xd8\xcb\xf0\xd4\x8e\x80\x5e\x37\x00\x00\ \x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0e\x35\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ -\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\ -\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\ -\x00\x00\x3a\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\x00\x00\x00\x06\ -\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\ -\x00\x07\x74\x49\x4d\x45\x07\xe1\x0a\x0d\x0f\x2b\x18\xc7\x56\x80\ -\xf9\x00\x00\x0d\x39\x49\x44\x41\x54\x68\xde\xc5\x5a\x7b\x78\x54\ -\xd5\xb5\xff\xad\xbd\xcf\xcc\x99\xcc\xe4\x01\x12\x20\x0f\x0a\x21\ -\x10\x5a\x79\xa3\x20\x05\x4b\x79\x84\x14\x10\x3e\xe4\xa5\x55\xf4\ -\x16\xea\x15\x42\x91\x54\x7c\xf5\xbb\xe5\xbb\xdc\xeb\x47\x51\x1e\ -\x1f\xca\x45\x81\xe2\xb5\x80\x82\xa0\x48\xa1\x48\x23\x85\x0b\x0a\ -\x52\xaa\x28\x04\x81\x12\x08\x31\x10\x9e\x81\xbc\x33\x79\xcd\x9c\ -\x39\xe7\xec\x75\xff\x98\x09\x86\x90\x4c\x48\xe4\xfb\xba\xfe\x59\ -\xf3\x9d\xb3\x67\xad\xdf\x7a\xec\xbd\xd7\xda\xfb\xd0\xe8\xd1\x23\ -\x04\x6e\x27\x02\xc0\x21\xae\x00\x88\x46\x38\x03\xa0\x03\x07\x0e\ -\xd9\x42\x88\x87\x99\xf9\x1d\x66\xee\x45\x44\x60\x66\x84\xe1\xd5\ -\x00\xde\x88\x8f\x8f\x5b\x32\x74\xe8\x43\x66\x45\x85\xb7\x55\x7a\ -\x43\x1c\x00\x58\xd4\xfb\xb3\x08\xf1\xfa\xbf\x65\xe8\xfd\x1d\xdc\ -\xe1\x70\xa0\x57\xaf\xfb\x75\x66\x9e\x0d\xa0\x17\x11\x05\x05\x85\ -\xe7\x91\x00\xd2\x8b\x8a\x8a\x7f\x32\x7d\xfa\x63\xad\xd2\x1b\xe2\ -\x75\xe3\x44\x7d\x03\xea\xf3\xa6\x3c\xc3\x75\x1e\x89\x8c\xf4\xd0\ -\x95\x2b\x57\x3d\x44\xb8\x1f\x2d\xa3\x58\x80\xbb\x4f\x99\xf2\xb4\ -\x6a\x8d\xde\x86\xcf\xeb\x0c\xe0\x30\x0a\x1b\x15\xf2\xe4\x93\xd3\ -\x6c\xd3\xb4\xee\x63\x46\x87\x16\x1a\xa0\x29\xc5\x9d\x99\xb9\xb9\ -\x71\xcd\x82\x07\x40\xf5\xc3\xd7\x22\x21\x93\x27\x4f\x83\x65\x59\ -\xb1\x00\xda\xb6\xd0\x00\x00\xe8\xb2\x6a\xd5\x32\x11\xe6\x7d\x73\ -\xe0\x6f\x45\xa8\x6e\x62\xdc\x46\x9d\x3b\x77\xe2\xf4\xf4\x7f\xb7\ -\x9e\x7f\xfe\x37\x2a\x25\xa5\x9b\x6a\x4c\x08\x91\x8b\x99\xb9\x13\ -\x00\x77\x4b\xd1\x33\x73\x97\x35\x6b\xde\x75\x3a\x1c\xda\x1d\xef\ -\x22\x22\x5c\x9c\x9a\x3a\x82\xd7\xaf\x7f\xc7\x4a\x4b\x1b\xc5\xba\ -\xee\x6c\x38\x81\xeb\x13\xd1\xe8\xd1\x23\x64\xdd\x0b\x66\x46\xd7\ -\xae\x5d\xf8\x83\x0f\x3e\x8e\xb3\x2c\xf3\x61\x66\x54\x46\x46\x7a\ -\xb2\x7e\xf9\xcb\xa9\x25\x1d\x3b\xb6\xa7\xac\xac\x93\x64\x18\x06\ -\x0d\x1a\xf4\x80\x5a\xba\x74\xa5\x12\x42\xfc\x8e\x99\x97\xb5\x22\ -\x02\x59\x1e\x8f\x67\x5c\x55\x55\x55\xf1\x98\x31\xa9\x9a\x52\x8a\ -\x3b\x76\xec\x80\x19\x33\x9e\x52\xb3\x66\xcd\x73\x15\x14\xdc\xe8\ -\xa1\x14\xf7\x21\xa2\x8b\xbd\x7b\xdf\x7f\x3c\x31\x31\xde\x36\x8c\ -\x40\x63\x59\xa2\x68\xf4\xe8\x11\xb7\x66\x7d\x4a\x4a\x37\xde\xb0\ -\xe1\x83\x0e\xa6\x69\x6e\x64\xe6\x5f\x00\xf0\x03\x38\x29\x04\xed\ -\x12\x42\x66\x26\x25\x75\xbe\x90\x9b\x9b\x67\x78\x3c\x9e\x04\xbf\ -\xdf\x3f\x9d\x99\x9f\x03\x90\xd4\x0a\x03\x0c\x22\xfc\x45\x4a\x6d\ -\x75\xa7\x4e\x89\x5f\x4f\x98\x30\x46\x6d\xd8\xb0\xb9\x9d\x61\x18\ -\x3f\xb7\x6d\x35\x15\xc0\x48\x00\x1d\x01\x94\x08\x41\xcf\x9d\x39\ -\xf3\xf5\x9f\x33\x32\x5e\x91\x8d\xc8\xe1\xba\x08\x40\x08\x41\xb1\ -\xb1\xed\xd4\x47\x1f\xed\xf8\x3d\x33\xff\xa1\x41\xb8\x18\x40\x01\ -\x11\xf6\x11\xd1\x09\xa5\xf8\x09\x00\x43\x43\xa1\xfd\x21\x54\x48\ -\x44\x1b\x00\xd4\x00\x3c\x91\x19\xfd\x00\xe8\xb7\xe7\x08\x8e\x3b\ -\x1c\xce\xc9\x19\x19\xb3\x0b\x4e\x9e\xfc\x67\x7d\x7d\x5c\x67\x00\ -\x01\x90\xfb\xf7\x1f\xb4\x75\xdd\xd9\xcf\x34\xad\x4f\x00\x74\x0e\ -\xa3\xb4\x2e\x27\xef\x15\xd5\xcd\xc1\x26\x17\x12\x22\xfa\xaf\x89\ -\x13\xc7\x2d\xf1\xf9\x7c\x64\xdb\xea\x36\x2c\x02\x80\xf0\x78\xdc\ -\x9c\x92\xd2\x4d\x37\x4d\xeb\xb9\x66\xc0\xe3\x1e\x83\xaf\x03\x4e\ -\xe1\xde\x33\xf3\xb3\x9f\x7e\xba\xaf\xcf\x6f\x7f\x3b\xc7\x6e\x60\ -\x38\x09\x66\xe6\x5d\xbb\x3e\x52\xf9\xf9\x97\x86\x03\x98\x76\x8f\ -\xc1\xdd\x2b\xea\x62\xdb\x6a\xde\xac\x59\xcf\x3b\x5d\x2e\xfd\x16\ -\x78\x00\x2c\xfa\xf5\xeb\x03\x8f\x27\x2e\x86\x19\xf3\x01\xb4\xf9\ -\x57\x23\x6d\x8a\x98\x79\x5a\x51\x51\xf1\xa8\xcc\xcc\x7d\x16\xea\ -\x2d\xab\xf2\xab\xaf\xbe\x61\xa5\xd4\xaf\x98\x79\x1e\xbe\xaf\x35\ -\x7e\x08\x59\x00\xbc\x00\xca\x01\xf8\x42\x9e\x72\xdc\x03\xb9\x2e\ -\x66\x8e\x6d\xdb\xb6\xcd\x9e\x61\xc3\x86\xf8\xca\xcb\x2b\x24\x00\ -\xa5\x69\x9a\x96\x62\xdb\xf6\xdc\x7b\xa0\xe4\x26\x11\x7d\x4a\x44\ -\x9f\x09\x21\xbe\x13\x82\xaa\x98\xa1\x29\xa5\x12\x94\x52\x83\x00\ -\x7e\x94\x19\x03\x7e\xa0\x9e\x51\x5e\x6f\xe5\xb4\x3e\x7d\x7a\xfd\ -\xe9\xe2\xc5\x4b\x8a\x99\x89\x88\x68\x39\x80\x97\xd0\xfa\xc9\x69\ -\x02\xf8\xc4\xe1\xd0\x96\xf7\xed\xdb\xfb\xe4\xb1\x63\x27\xcc\x25\ -\x4b\x5e\x25\x22\xa2\xc8\x48\x0f\x12\x12\xe2\x39\x27\x27\x97\x5e\ -\x7b\x6d\x45\xac\x61\x18\x4f\x29\xa5\x5e\x02\x90\xd8\x5a\x0b\x88\ -\x70\x42\xd7\xf5\xf1\x4f\x3e\x39\xad\xf8\xca\x95\x6b\x4c\x44\xb4\ -\x07\xc0\xb8\x56\xca\x0b\x10\xd1\xaa\xa8\xa8\xc8\xd7\xd7\xac\x79\ -\xc3\xbb\x65\xcb\x36\x69\x9a\x56\x63\xe3\xb8\x63\xc7\x0e\xa8\xac\ -\xac\xe2\xbf\xfd\x6d\x7f\xaa\x6d\xdb\x6b\x00\xa4\xb4\x52\x67\xa1\ -\xd3\xe9\x1c\xed\xf7\xfb\xb3\xd3\xd2\x46\x0a\x41\x84\x9d\x00\x2a\ -\x5a\x29\x6c\x53\x4c\x4c\xf4\x1f\x1e\x7f\x7c\x72\xe5\x7b\xef\x6d\ -\x69\x12\x3c\x00\x2a\x2c\x2c\x82\x61\x18\xc2\x34\xcd\xfd\x52\xca\ -\x97\x00\x94\xb4\x2e\x02\xf4\x45\x44\x84\xeb\xca\xd4\xa9\x13\x25\ -\x00\x16\x51\x51\xd1\x9b\x84\xa0\x0c\x00\x97\x5b\x28\x2b\xdb\xe9\ -\x74\x2c\xdb\xbd\xfb\xa3\xea\xfc\xfc\xcb\x4d\xa5\xdf\x6d\x55\xa5\ -\x52\x8a\x1f\x79\x24\x4d\xeb\xd9\xf3\xc7\x7b\x88\xe8\x4f\x2d\xd4\ -\x67\x10\xd1\xbb\x4e\xa7\xe3\xc5\x69\xd3\x1e\xad\xa9\xac\xac\x0a\ -\xee\x03\x63\xc7\xa6\x5a\xf3\xe6\xa5\x6f\x95\x52\x4e\x07\x70\xa4\ -\x05\x9e\x78\xdf\xef\x37\x2e\x2c\x5a\xb4\xac\xa9\x95\xab\xd1\x92\ -\xd8\x34\x2d\x4e\x4f\xff\x35\x4b\x29\x37\xb5\xc0\x69\x25\x42\x88\ -\x05\x51\x51\x91\x2f\x64\x64\xa4\xdf\xc8\xcf\xbf\x5c\xb7\xf9\xb1\ -\x28\x2d\x2d\xc3\xb9\x73\xe7\xc5\xda\xb5\x6f\x7c\xa5\xeb\xfa\xd3\ -\x44\xd8\x08\x20\xd0\x8c\xc0\x22\x21\xc4\xfe\x9c\x9c\xe3\x68\xa2\ -\x31\x09\x5b\xcf\x67\x66\xee\xa3\xe4\xe4\xa4\x0b\x44\x77\xe5\xb0\ -\x6c\x29\xe5\x33\xbd\x7a\xfd\x64\x55\x6a\xea\x70\xff\x89\x13\xa7\ -\x45\x5d\x9b\x0a\x80\x64\x72\x72\x92\x60\x66\xca\xce\xce\x11\x93\ -\x26\x8d\xf7\x9e\x3a\x75\xe6\x70\x20\x60\x0e\x45\xf8\x2a\xf3\x6c\ -\x54\x54\xe4\x9a\x82\x82\x9b\x81\xda\xda\xda\x86\x65\x40\xb3\xcd\ -\x88\x52\x8a\x8e\x1d\x3b\x61\x12\x89\x2e\x00\xc6\x84\xd1\xe3\x93\ -\x52\xce\xb1\x2c\xeb\xaf\x03\x06\xf4\x93\x3e\x9f\xbf\x1e\xf6\xa0\ -\xae\x3a\x05\x41\x53\xb3\x73\x44\x44\x84\xcb\x4f\x44\x66\x38\x97\ -\x10\xa1\x30\x3a\x3a\xda\xe7\xf5\x56\xb6\xc8\xf3\x77\xca\xa1\xeb\ -\x00\xec\x30\xaa\x98\x99\xab\x99\x99\x2c\xab\xd1\x05\x82\x34\xd4\ -\xdf\x96\xa5\x60\x87\xc3\x41\xcc\x1c\xae\xb8\x02\x33\x20\xa5\xe0\ -\x06\xe3\x5a\x04\x3e\x44\x06\xbe\xaf\x6e\x6b\x01\x54\x85\x9e\x69\ -\x00\xa2\x00\x94\x4a\x29\xcb\x9a\x68\xd9\xb9\x7e\x04\x08\x00\xf7\ -\xe9\xd3\x8b\xcb\xcb\x2b\x1c\x44\xa4\x21\x3c\xb5\xab\xa8\xf0\x46\ -\xc4\xc4\x44\x73\x3d\x61\x2d\x02\x3f\x77\xee\xb3\xc2\xe5\x72\x1d\ -\x23\xa2\x45\x42\x88\xf9\x52\x8a\x47\x74\xdd\x39\xca\xe9\x74\x0e\ -\xd7\x75\x7d\xa4\x94\xf2\x17\x0e\x87\x63\x6a\xb7\x6e\x49\xe7\xc6\ -\x8e\x4d\x6b\x6c\xa1\x20\x84\x94\x09\x21\x04\xaf\x5a\xb5\x5c\xad\ -\x58\xf1\x76\xa2\xdf\x6f\xbc\xc9\xcc\x43\x9b\x31\xa0\x6b\x4d\x4d\ -\x6d\xc2\x84\x09\x63\xb9\x95\x9e\x47\x6e\x6e\x9e\xf8\xd9\xcf\x7e\ -\x7a\x53\x29\xb5\x78\xc1\x82\x97\xdf\x4a\x4c\x4c\x38\x2e\x84\x28\ -\x15\x42\x10\x11\x6a\xdb\xb6\x8d\x39\x37\x73\xe6\xd3\x27\xcf\x9e\ -\x3d\x6f\x4a\x29\x1b\x0b\x41\xb0\x37\x7f\xf1\xc5\xe7\xa8\x7d\xfb\ -\xf6\xb4\x70\xe1\xe2\xc1\x4a\xa9\x65\xcc\x3c\x0c\xcd\x13\x0b\x21\ -\xe6\xdb\xb6\xfd\xd6\xe8\xd1\x23\xb4\x96\x82\x17\x42\xa0\x77\xef\ -\x9e\xf6\x96\x2d\x1f\x7b\x4a\x4b\x4b\x07\x28\xc5\x8f\x30\xf3\x20\ -\x22\x74\x62\x46\x04\x82\x05\x61\x11\x11\x9d\x24\xa2\x3d\x1e\x8f\ -\xfb\xef\x19\x19\xe9\x95\x59\x59\xdf\x92\x65\xd9\x24\x84\xe0\xf8\ -\xf8\x38\xd8\xb6\xcd\x14\x1b\xdb\x4e\x2f\x2b\x2b\x7f\x2c\xd4\x46\ -\x26\xdd\x05\xf8\x3a\xca\x72\xbb\x23\x26\x67\x66\x7e\x7c\xed\xb5\ -\xd7\x56\x68\x77\x0b\xde\xe9\x74\xc2\xe7\xf3\xa9\x23\x47\x8e\x0e\ -\xb2\x2c\xeb\x05\x04\xcb\x98\x68\x04\x27\x73\x25\x82\x73\xc1\x01\ -\x20\x06\xc1\xf6\xd2\x4f\x84\xcf\x85\x90\x4b\x1f\x7d\x74\xc2\x97\ -\x4a\x59\xb8\x76\xad\x40\x9e\x39\x73\xae\xad\xae\x3b\xab\xa5\xcf\ -\xe7\xff\x35\x80\x95\x00\xe2\x5a\x00\x1e\x00\xe2\x2d\xcb\xc2\x91\ -\x23\x47\x0f\x0f\x1e\x3c\xd0\x2c\x2d\x2d\x93\xcd\x81\x77\xb9\x74\ -\x9c\x3b\x97\x4b\xa7\x4f\x67\xff\x9b\x6d\xdb\xeb\x10\xec\xab\x8b\ -\x89\x68\xb3\x10\x62\xb9\xa6\x69\x2b\x35\x4d\xfe\xaf\x94\x72\x33\ -\x80\x3d\x00\xae\x02\xe8\x04\xe0\xa7\xcc\x3c\x26\x27\x27\xb7\x78\ -\xc6\x8c\xe9\xa7\xb6\x6e\xdd\x3e\xc0\xb2\xcc\x0f\xfd\x7e\x23\x5e\ -\x12\xd1\x22\x00\x7d\x5b\x08\x1e\x21\xa0\xfd\x2b\x2a\xbc\x81\xcb\ -\x97\xaf\x9e\x78\xec\xb1\x49\xc6\xd5\xab\xd7\x45\x53\x27\x6e\x52\ -\x4a\x94\x97\x57\xf0\xd9\xb3\xe7\x9f\x51\x4a\xbd\x19\xf2\xf0\x16\ -\xa7\xd3\x91\xf1\xe0\x83\x03\x36\x5d\xb9\x72\xf5\xac\x65\xd5\x14\ -\x0d\x1e\x3c\xb0\xe2\xf1\xc7\xa7\x94\xcc\x99\xf3\xec\x45\xaf\xd7\ -\x7b\xe8\xd2\xa5\x2b\x7b\x99\xd9\x03\x60\x08\x80\x51\x9f\x7f\xfe\ -\x45\x3e\x80\xfb\x98\x39\x03\x80\x4d\x44\xb4\x0c\xc0\xcb\x68\x7d\ -\x39\xed\x27\xc2\x26\x87\xc3\xb9\x72\xfc\xf8\xb1\xb9\x3b\x76\xec\ -\xe2\xf9\xf3\xe7\x12\x33\xa3\xb4\xb4\x8c\x8a\x8b\x4b\xa0\x94\xa2\ -\xfd\xfb\x0f\x5a\x0e\x87\x63\x8c\x6d\xdb\x9b\x01\x44\x13\xd1\x92\ -\xb6\x6d\xdb\xbc\xf9\xfa\xeb\xff\x5d\xbd\x73\xe7\x6e\x69\xdb\x77\ -\x6e\x07\x44\xc4\x4f\x3c\x31\x95\xe7\xcf\xff\x0f\x77\x4d\x4d\xed\ -\x7f\x32\xf3\xcb\x00\x2e\x11\x61\x17\x33\x5e\x00\xf0\x77\xd2\x34\ -\xd9\xdd\xb6\xd5\x76\x00\xfd\x5b\x69\x00\x42\xa9\x73\x81\x88\x76\ -\x09\x41\x07\xa4\x94\xf9\x52\x4a\x1f\x80\x40\xdf\xbe\xbd\xcb\x86\ -\x0c\x19\x64\xaf\x5f\xbf\x39\xb6\xaa\xaa\x7a\x3b\x80\x9f\x13\xe1\ -\xad\xb8\xb8\xb8\xdf\x4f\x9a\x34\xde\x9f\x9b\x9b\xd7\x9c\xe3\xb8\ -\x53\xa7\x04\x6c\xdf\xfe\x89\xc7\xe7\xf3\xad\x65\xe6\xa7\x00\x94\ -\x01\xb8\x0f\xc0\x17\x14\x0a\xef\x2c\xa5\xd4\x6a\x00\xce\x1f\x60\ -\x44\x1d\xf9\x42\x0a\xfc\x44\x28\x91\x52\x9b\x6d\x9a\xe6\x69\x21\ -\xc4\x4c\x66\x5e\x0f\xe0\x94\xcb\xa5\x4f\xda\xbd\x7b\xdb\xd5\x65\ -\xcb\x56\x86\x6d\x61\x85\x10\xfc\xa3\x1f\x25\x22\x39\x39\x59\x2d\ -\x58\xf0\x2a\x3b\x1c\x5a\x2f\xdb\x56\x7f\x05\xd0\x35\x34\xe4\x0b\ -\xb1\x7d\xfb\xfb\xe4\x72\xe9\x7f\x26\xc2\xc1\x7b\x00\x1e\x00\x22\ -\x10\xec\xb8\xba\x31\xa3\x27\x80\x98\xae\x5d\xbb\x38\x01\x4c\x09\ -\x62\xa2\x8d\x3e\x9f\xff\xca\xdd\x80\xaf\xa8\xf0\xca\xad\x5b\xb7\ -\x77\x58\xbc\x78\x59\x37\x97\x4b\xef\xea\x70\x38\xfc\x00\x0e\xdf\ -\x36\xee\x9d\x77\x36\x8a\xea\xea\x9a\x0a\x22\xf1\x3f\x08\x36\xe3\ -\xf7\x92\xae\x69\x9a\xfc\xee\xc6\x8d\xc2\x24\x66\x7e\x00\xc0\x0d\ -\x21\xc4\x67\xeb\xd7\xaf\x6e\x36\x6d\xe6\xcf\x9f\xcb\x27\x4e\x9c\ -\xea\x6f\x18\xc6\x5e\xbf\xdf\x38\x14\x08\x98\x87\xfd\x7e\xe3\x20\ -\x80\x89\xf5\xc7\x09\x00\x3c\x71\xe2\x38\x11\x1f\xdf\xf1\x10\x11\ -\x7d\x7c\x8f\x0d\x28\x88\x8f\x8f\xf3\x9a\xa6\xd9\x09\x40\x7b\x00\ -\xf9\xd1\xd1\xd1\x05\x7b\xf7\x1e\x08\x57\x6b\x31\x00\x1a\x37\x6e\ -\xaa\x12\x82\x88\xf9\xb6\x2b\x25\x00\xa8\x06\x70\x05\xc1\xc9\x7c\ -\x44\x00\x20\x9f\xcf\x4f\x3b\x76\x7c\x60\x08\x21\xd6\xa0\xf9\x26\ -\x43\xe1\x2e\x89\x88\xbc\x73\xe6\x3c\x63\x10\x21\x16\x80\x93\x88\ -\x0a\xdb\xb4\x89\xf1\x55\x55\x55\x37\x7b\x1f\x31\x66\xcc\x28\xad\ -\x47\x8f\x94\x2c\xb7\xdb\x3d\xd6\xe9\x74\x0c\x77\xb9\xf4\xe1\x4e\ -\xa7\x73\x84\xae\xeb\x23\x74\xdd\x39\x52\xd7\xf5\x11\x11\x11\xee\ -\x25\x75\x3b\xa8\x5c\xb8\x70\xb1\x48\x4f\x9f\x79\xe6\x8f\x7f\xdc\ -\xf0\x6e\xd3\x87\xbb\xb4\x17\xc0\x09\x66\x9e\x8e\xe0\xba\x1c\x36\ -\x15\x98\x19\xdf\x7d\x77\x81\x98\x83\x46\x33\x33\x49\xd9\x64\xea\ -\x37\x68\x3f\x59\xc5\xc7\x77\xa4\xd4\xd4\xe1\x37\x1d\x0e\x0d\xba\ -\xee\x42\x20\x10\x80\x10\x02\x42\x10\xaa\xab\x6b\x70\xf3\x66\x21\ -\x6e\x95\xd3\x4a\x29\x4a\x48\x88\x57\x6e\x77\xc4\xc6\x9a\x9a\xda\ -\xe1\x00\x46\x03\xf0\x13\xd1\xb7\x00\x76\x39\x1c\xda\x9e\x1e\x3d\ -\xba\xe7\x9e\x3e\x9d\x6d\xba\xdd\x11\xbb\x0c\x23\xf0\x34\x33\xff\ -\x06\x61\xca\x0f\x22\x8a\xd9\xb7\xef\x33\x8d\x88\x2a\x10\xec\xf2\ -\xda\x17\x15\x15\xbb\xfa\xf6\xed\x55\x5d\x51\xe1\x6d\xb6\x14\x67\ -\x66\xce\xce\x3e\x17\xae\xdf\xe6\xfa\xf7\x03\x0c\x40\xa4\xa4\x74\ -\xb7\xdf\x7f\x7f\x4b\x27\xc3\x30\x86\x10\x09\xaf\xcb\xa5\x1f\x9b\ -\x3d\xfb\x99\xf2\xb2\xb2\x52\x14\x16\x16\x0b\xd3\x34\x11\x19\xe9\ -\xe1\x5d\xbb\x3e\xb5\xef\xe2\x82\xe3\x9c\xc7\xe3\x1e\x65\x9a\x66\ -\x64\x20\x60\x1e\x02\x20\x35\x4d\x4b\xfd\xf0\xc3\xf5\x39\xeb\xd6\ -\x6d\x10\xe1\xc0\xa3\x99\xb2\x24\x44\x4a\x26\x27\x27\xd5\xc5\x94\ -\x00\x70\x59\x59\x99\x4c\x4b\x4b\xf5\x1e\x3d\x7a\x2c\xdb\xb6\x6b\ -\x2f\xb4\x6b\x77\x9f\x91\x9f\x7f\x89\x2a\x2b\xab\x84\x52\xc1\xf4\ -\x0f\x04\x4c\xba\x78\xf1\x92\x92\x52\xc4\x31\xf3\x94\x30\xa9\xe4\ -\xb2\x6d\x7b\x5f\x97\x2e\x9d\xcf\x96\x97\x57\x0c\x03\xf0\x20\xc0\ -\xb9\xdb\xb6\xed\x3c\x9a\x9c\x9c\xd4\xf0\xde\xb7\xa5\xe0\x6f\x5d\ -\xf2\xa9\x86\x42\x72\x72\xce\x8b\xb4\xb4\x91\xe2\xcb\x2f\xbf\x96\ -\x25\x25\xa5\x8d\x1e\x7f\x33\x2b\x02\xe8\x3a\x80\x9a\x30\x4a\xa2\ -\x98\x79\x54\x5e\xde\x45\x43\x08\xb1\x13\x80\x52\x8a\x67\xb8\xdd\ -\x11\x9d\x17\x2e\xfc\x9d\x8d\xef\xbb\xc1\x56\x81\x47\x68\x19\x6d\ -\x95\x90\x6d\xdb\xde\x83\xc3\xa1\x15\xa3\x99\x43\x31\x66\x9e\xe4\ -\x72\xe9\x89\x6e\xb7\x3b\x13\xc1\x4d\xe8\x01\xbf\xdf\xff\xd2\x8c\ -\x19\x73\x22\xfa\xf7\xef\x63\x33\x73\xab\xc1\x23\x74\x2a\x51\x37\ -\x07\x5a\x24\x24\x3f\xff\xb2\xb8\x70\xe1\x92\xb2\x2c\x73\x0a\xc2\ -\x9f\x75\x76\x50\x4a\x15\x19\x86\xb1\x5f\xd3\xb4\x02\x66\x1e\x03\ -\xe0\xe1\xca\xca\x2a\x75\xfe\x7c\x5e\xd6\xd2\xa5\xaf\xfa\x8f\x1f\ -\xff\x56\x70\xb0\x8c\x6d\x09\x78\x81\xd0\x1c\x68\x98\x8b\x77\x25\ -\xc4\xb6\x2d\x96\x52\xda\x45\x45\xc5\x43\x01\xf4\x0b\x33\x9e\x00\ -\x74\xd7\x75\xfd\xff\xd6\xad\x5b\xf9\x4d\x66\xe6\x3e\x2f\x33\x8f\ -\x04\x90\xea\xf3\xf9\x3a\xef\xd8\xf1\xc9\x05\xb7\xdb\x53\xf4\x8f\ -\x7f\x1c\x55\x97\x2f\xe7\x71\x5c\x5c\x1c\x4a\x4a\x4a\x60\xdb\xf6\ -\x5d\x1d\xd7\xd4\x6f\x07\x5b\xe4\x01\xd3\xb4\xc4\xea\xd5\xcb\x03\ -\x69\x69\x93\xde\x36\x4d\x2b\x1e\xc1\xc3\xda\x3b\x6e\xd2\x11\xfc\ -\x4c\xe2\x06\x33\xdb\x9a\xa6\x51\x62\x62\xc2\xc6\xeb\xd7\x0b\x0c\ -\xa5\xd4\x22\x00\xbf\x0a\x04\xcc\x91\xa7\x4e\xfd\x33\x53\xd3\xb4\ -\x03\x52\x8a\x8b\x42\x08\x6f\x54\x54\x54\xd1\x43\x0f\x3d\x68\x18\ -\x86\x11\x0e\xbc\x00\x60\x53\xe8\x6b\x15\x42\xd3\x11\xe0\x46\x80\ -\xdd\x12\x12\x1b\xdb\xce\xde\xb7\xef\xb3\xe8\xda\x5a\x5f\x5b\x22\ -\xa2\xe0\x57\x29\xa1\x3f\x32\x98\x88\x84\x10\x54\x35\x70\xe0\x80\ -\x72\x5d\xd7\x95\x94\x92\xbc\xde\x4a\x95\x95\xf5\xed\x40\xd3\xb4\ -\xe6\x23\xd8\x52\xb6\xc1\xf7\x17\x23\x3e\x22\x7a\x3b\x3d\x7d\xe6\ -\x8a\xbc\xbc\xfc\xfa\xa9\xd5\x10\xbc\x02\x82\xe7\x2f\xf5\x3f\x71\ -\xa9\xcf\xeb\xff\xb1\xe1\x18\xbb\x8e\x97\x94\x94\xd2\xa4\x49\x13\ -\xbc\x7d\xfa\xf4\xf4\xba\xdd\x6e\xd4\xd6\xd6\xc2\xe9\x74\xc2\x34\ -\x2d\x08\x21\xe0\x70\x68\x38\x78\xf0\x30\x55\x56\x56\xc1\xb6\x6d\ -\xb2\x2c\x4b\x45\x46\x7a\x68\xed\xda\x37\xbf\x79\xe5\x95\x85\xb3\ -\xbc\xde\xca\x21\xcc\x3c\x15\xc0\x30\x00\x49\x00\xb7\x63\x46\x4c\ -\xff\xfe\x7d\x39\x2f\x2f\x5f\x35\xa5\xb7\xee\xf9\xff\x03\x78\x8c\ -\x5f\x99\x77\x2f\x9e\x77\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\ -\x74\x65\x3a\x63\x72\x65\x61\x74\x65\x00\x32\x30\x31\x37\x2d\x31\ -\x30\x2d\x31\x33\x54\x32\x33\x3a\x34\x33\x3a\x30\x33\x2b\x30\x38\ -\x3a\x30\x30\x27\xbf\x77\xe8\x00\x00\x00\x25\x74\x45\x58\x74\x64\ -\x61\x74\x65\x3a\x6d\x6f\x64\x69\x66\x79\x00\x32\x30\x31\x37\x2d\ -\x31\x30\x2d\x31\x33\x54\x32\x33\x3a\x34\x32\x3a\x35\x30\x2b\x30\ -\x38\x3a\x30\x30\xc0\x28\xb0\x93\x00\x00\x00\x00\x49\x45\x4e\x44\ -\xae\x42\x60\x82\ \x00\x00\xe7\x64\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -6454,6 +4047,2088 @@ qt_resource_data = b"\ \xdb\x7a\x7d\xef\x63\xb7\x4e\xaf\xf8\x4b\x1e\xa9\x77\xff\x03\xbd\ \xa0\x7f\xb0\xc0\x59\x80\x24\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ \x42\x60\x82\ +\x00\x00\x05\x55\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\x00\x00\x00\x00\x00\xf9\x43\ +\xbb\x7f\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\ +\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd3\x01\x09\x0a\x09\x03\x5d\x4a\xcd\x3e\x00\x00\x04\xd2\x49\x44\ +\x41\x54\x78\xda\xbd\x94\x6f\x48\x95\x57\x1c\xc7\x3f\xcf\xf3\xdc\ +\xeb\x9d\xde\xeb\xbc\x7a\xef\x75\xa0\xd9\x35\xbd\xb0\x69\xea\xa2\ +\x49\x84\x5b\x28\x1a\x43\x73\x68\x21\xad\x26\xfd\x31\x26\x24\x1b\ +\xad\x16\xc4\x10\xc6\x20\x88\xb9\x37\x0e\xdf\xd5\x5e\x8c\xc5\x20\ +\x46\x6b\x25\x73\xf6\x42\x25\xb6\x4c\x2c\xff\x34\x72\x7a\x85\xea\ +\x8a\x9a\x7f\xe1\xfa\x87\xf2\xa6\xf7\xde\xe7\x79\xce\xb3\x17\x99\ +\x69\xf3\x4a\xbd\xd9\x0f\x0e\xe7\x70\x7e\xf0\xfb\x9c\xef\x39\xbf\ +\xf3\x95\x88\x10\x25\x25\x25\x65\x7e\xbf\x7f\x7f\x28\x14\xca\xd3\ +\x34\x6d\xb3\xae\xeb\x00\x8f\x80\xce\xb8\xb8\xb8\x2b\x3d\x3d\x3d\ +\x4d\xbc\x42\x48\x2f\x6f\x1c\x3e\x7c\x78\x7b\x5f\x5f\xdf\xf7\xb2\ +\x2c\xe7\x17\x15\x15\x91\x93\x93\x83\xc3\xe1\x40\x08\x81\xdf\xef\ +\xa7\xbb\xbb\x9b\x96\x96\x16\x34\x4d\xbb\x99\x9c\x9c\x7c\xba\xab\ +\xab\xeb\xef\x57\x06\x14\x14\x14\x94\x4d\x4d\x4d\x5d\xcd\xcb\xcb\ +\x33\x55\x54\x54\x90\x98\x98\x88\xd9\x6c\x46\x92\x24\x84\x10\xa8\ +\xaa\x4a\x30\x18\x64\x72\x72\x92\x4b\x97\x2e\x71\xfb\xf6\x6d\xcd\ +\x6e\xb7\x57\x0c\x0d\x0d\x45\x54\xa3\x3c\x5f\x94\x97\x97\x6f\x7f\ +\xf8\xf0\x61\xdb\xbe\x7d\xfb\x4c\x47\x8f\x1e\xc5\xe9\x74\x12\x1b\ +\x1b\x4b\x42\x42\x02\x4e\xa7\x13\x97\xcb\x85\xc3\xe1\xc0\x66\xb3\ +\x61\xb3\xd9\xc8\xce\xce\x66\x69\x69\x49\xbe\x77\xef\xde\xfe\x4d\ +\x9b\x36\x5d\x9f\x9b\x9b\x9b\xda\x10\x10\x0e\x87\x7f\xc9\xcb\xcb\ +\x4b\xab\xae\xae\xc6\x66\xb3\x61\xb7\xdb\x71\xb9\x5c\xd8\x6c\x36\ +\x2c\x16\x0b\x8a\xa2\xa0\x28\x0a\x16\x8b\x85\xd8\xd8\x58\xac\x56\ +\x2b\xe9\xe9\xe9\x3c\x78\xf0\x40\xf6\xf9\x7c\xef\x84\x42\xa1\x8b\ +\xeb\x01\x64\x80\x6d\xdb\xb6\x95\x09\x21\xf2\x8f\x1c\x39\x42\x4c\ +\x4c\x0c\x76\xbb\x1d\xa7\xd3\x49\x54\x54\x14\x8a\xa2\x20\xcb\x32\ +\xb2\x2c\xaf\x40\x64\x59\xc6\x6a\xb5\x92\x96\x96\x46\x4d\x4d\x0d\ +\x86\x61\xe4\x27\x24\x24\x94\x45\x54\x60\x18\xc6\xd7\x85\x85\x85\ +\x39\x19\x19\x19\x68\x9a\x86\x10\x82\xc7\x8f\x1f\xa3\x28\x0a\x31\ +\x31\x31\x48\xd2\x8b\xa7\x32\x0c\x03\x00\x21\x04\xba\xae\xe3\x70\ +\x38\x18\x1b\x1b\xc3\xeb\xf5\xea\x9a\xa6\x35\xae\xa7\xa0\x22\x1c\ +\x0e\x1f\x2a\x2d\x2d\xc5\xe3\xf1\x90\x9d\x9d\x4d\x7a\x7a\x3a\x6d\ +\xdd\xf7\x39\x74\xa6\x81\x89\x89\x89\x95\xa2\x86\x61\xb0\xf7\xb3\ +\x73\xfc\x78\xa5\xf5\x45\x97\x48\x12\xbb\x77\xef\x46\xd7\xf5\xbc\ +\x48\x57\xf4\x9b\xa2\x28\xa4\xa4\xa4\x60\xb1\x58\xb8\x3f\x3c\xc1\ +\x07\x9f\x7c\xc5\xc5\x6b\x37\x78\x3b\x2d\x19\xa7\xd3\x89\xcf\xe7\ +\x43\x08\x81\x61\x18\xec\xc9\xcf\xe5\xa7\x6b\x37\x28\xaa\xfa\x86\ +\xfb\xc3\xcf\xe0\x1e\x8f\x07\x60\x73\xa4\x36\x35\xe2\xe3\xe3\x69\ +\x6e\x6e\xe6\xfc\xd5\x0e\xbc\xbe\x31\x5e\x27\x72\x33\xb7\xb0\xbf\ +\x30\x9b\xd2\xd2\x52\x4d\x55\x55\xf3\xcb\x79\x13\x40\x52\x52\x12\ +\xc3\xc3\xc3\x9c\xfb\xe2\x00\x23\x93\x33\x7c\xf9\xdd\xb3\x86\xf8\ +\xa8\x20\x97\xda\x9a\x8f\x51\x55\x95\x40\x20\x80\xdf\xef\xe7\xcf\ +\xbb\x3e\x7e\xfe\xfd\x2f\x00\xbe\x3d\x79\x80\x24\xe7\x9b\xb4\xb7\ +\xb7\xa3\xeb\xfa\xa3\x88\x5d\xb4\x63\xc7\x0e\x5a\x5b\x5b\x09\x06\ +\x83\xa4\x26\x39\x69\x3e\x5f\xcb\x89\xca\x62\x7a\xfa\x7d\x84\x42\ +\x21\x34\x4d\x43\x96\x65\xec\x76\x3b\xbf\xdf\xe8\xe6\xc3\xf7\xdf\ +\xe5\xd7\xfa\x93\xa4\xbc\x15\x4f\x28\x14\xa2\xa5\xa5\x05\x21\x44\ +\x67\xc4\x2b\x6a\x6a\x6a\xe2\xe0\xc1\x83\x5c\xbe\x7c\x19\x8f\xc7\ +\x83\xc9\xa4\x10\x0e\xab\xcc\xcf\xcf\xaf\x74\x90\x24\x49\x68\x9a\ +\x86\xae\xeb\x58\xad\x56\xa2\xa3\xa3\x09\x06\x83\x0c\x0e\x0e\x72\ +\xec\xd8\x31\x84\x10\xe5\x40\xd3\xba\x0a\xb2\xb2\xb6\x92\x9b\x9b\ +\x4b\x5d\x5d\x1d\x81\xc0\x02\x8b\x8b\x8b\xe8\xba\x4e\x42\x7c\x3c\ +\x76\xbb\x1d\x9b\xcd\x46\x74\x74\x34\x26\x93\x09\x45\x91\x99\x9e\ +\x9e\x66\x61\x61\x81\x27\x4f\x9e\x50\x5f\x5f\x8f\x10\xe2\xe6\x7a\ +\xc5\x57\x14\xa8\xaa\xca\xad\x5b\xb7\xd8\xb3\x67\x0f\xc5\xc5\xc5\ +\x9c\x3a\x75\x0a\xb3\xd9\x8c\xa2\xc8\x18\xc6\xb3\xd3\xeb\xba\x8e\ +\xa6\x69\x84\x42\x41\x66\x66\x66\x89\x8b\x8b\xa3\xa1\xa1\x81\xb6\ +\xb6\x36\x0d\xd8\x0b\x5c\xdf\x10\xd0\xdf\xdf\x8f\x77\x60\x80\x4f\ +\xab\xab\xc9\xcc\xcc\xe4\xf8\xf1\xe3\xa4\xa5\x6d\x41\x96\x65\x84\ +\x30\x10\x42\x20\x84\xe0\xe9\xd3\x00\x7d\x7d\xff\xd0\xd8\xd8\xc8\ +\xe0\xe0\xa0\x06\x2c\x2e\xd7\x39\x03\xfc\x10\x01\x10\x66\x6e\x6e\ +\x8e\x91\x91\x51\xe6\xe7\xe7\x39\x7b\xf6\x2c\xdd\xdd\xdd\xec\xda\ +\xb5\x8b\x9d\x3b\x77\xe2\x76\xbb\x01\x18\x1a\xf2\xd1\xd1\xd1\xc1\ +\x9d\x3b\x5d\x00\x37\x81\xd3\xc0\x55\x20\x7e\xd9\x15\x66\x80\x13\ +\x40\xf3\x5a\x40\x38\xcc\xec\xec\x2c\x48\x60\x08\x83\xb1\xf1\x31\ +\xbc\xde\x41\xfe\x68\x6a\xa2\xa7\xb7\x97\xc9\xc9\x49\x00\x5c\x2e\ +\x17\xd3\xd3\xd3\x00\xe5\xcb\xc5\x26\x00\x52\x53\x53\x07\x00\x69\ +\x64\x64\x44\x06\x54\xa0\x04\xe8\x5c\x01\xe8\xba\x8e\xdf\xef\x47\ +\x08\xb1\x46\xde\xf8\xf8\xf8\x1a\x0f\x1a\x1a\x1a\xa2\xb2\xb2\x12\ +\x20\x15\x18\x5d\x4e\xb9\x81\xbb\x35\x35\x35\x71\xbd\xbd\xbd\x5a\ +\x6f\x6f\xaf\xba\xfc\xbf\x32\x80\x51\xd3\xea\x02\x92\x24\xad\xf8\ +\x0e\x40\x72\x72\xf2\x1a\x83\x0b\x04\x02\xcf\x53\xa3\xab\xce\x31\ +\x0a\xbc\x77\xe1\xc2\x85\x81\xda\xda\xda\x98\xa8\xa8\x28\x73\x67\ +\x67\xe7\x12\xe0\x05\xb6\xca\xab\x01\xcf\xfd\x66\xf5\xfa\xe5\xbd\ +\x0d\x22\xab\xae\xae\x4e\xcd\xc9\xc9\x31\xdc\x6e\xf7\x1b\x6b\xde\ +\xa0\xbd\xbd\x1d\x55\x55\xff\x63\xc9\xab\xd5\x00\x4c\x4c\x4c\x50\ +\x55\x55\xe5\x05\xb2\xd6\x01\xb8\x97\xe7\x3b\x40\x22\x50\x08\x8c\ +\x00\x7c\x0e\x18\xaf\x31\xaa\x37\x50\xe1\x5e\x35\xfe\x9f\xf8\x17\ +\xc1\x08\x40\x3b\x9d\x7d\xa8\x8b\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x77\xc9\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x01\x2a\x00\x00\x01\x08\x08\x06\x00\x00\x00\xe8\x5e\xb9\x12\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x00\ +\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\x00\x00\xfa\ +\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\x00\x00\x3a\ +\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\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\xd0\xcb\x00\x00\xd0\xcb\x01\x9f\x0e\xc0\x23\ +\x00\x00\x75\xde\x49\x44\x41\x54\x78\xda\xed\xbd\x67\xb4\x24\xd7\ +\x75\xdf\xfb\x3f\xd5\xf1\xe6\x1c\x26\x03\x18\x60\x30\x18\x0c\x66\ +\x10\x07\x83\x9c\x01\x82\x14\x49\x91\x22\x29\x3d\x2a\xd9\xb2\x6c\ +\x53\x92\x6d\xc9\xb2\xad\x67\x39\x2b\x58\x8e\x1f\xfc\xd6\xfb\x60\ +\xd9\x7e\x5e\x96\xc3\xf2\x32\x2d\x4a\xcc\x49\x94\x45\x52\x24\x45\ +\x10\x04\x88\x8c\xc1\x00\x83\xc9\x37\xe7\x7b\xfb\x76\xee\x3a\xef\ +\x43\xa5\x93\xab\xaa\xc3\x0d\x83\xda\xc0\x9d\xee\x3a\x67\x9f\x50\ +\xe9\xd7\xfb\xec\x93\x08\x12\x49\x64\x9b\x64\xf2\xf4\xa7\xbc\xaf\ +\x07\x00\xfc\x2c\x80\x4f\x02\xe8\x02\xf0\x1a\x80\x7f\x07\xe0\x5b\ +\x00\x30\xfb\xdc\xef\x6f\x77\x55\x13\xd9\x66\x21\xdb\x5d\x81\x44\ +\xde\x9b\xc2\x40\xea\x24\x80\x7f\x09\xe0\x09\x00\x19\x46\xe5\x55\ +\x00\x7f\x1d\xc0\x73\x40\x02\xab\xf7\xba\x58\xdb\x5d\x81\x44\xde\ +\x7b\xe2\x42\x8a\x00\x78\x0a\xc0\x1f\x00\x78\x1f\x78\x48\x01\xc0\ +\x09\x38\xa0\xca\xc4\xc9\x3b\x91\x6b\x53\x12\x50\x25\xb2\xa5\xe2\ +\x42\x2a\x03\xe0\x67\x00\xfc\x27\x00\xb7\x1b\xd4\x6f\x07\x30\xb0\ +\xdd\x75\x4e\x64\xfb\x25\x01\x55\x22\x5b\x26\x2e\xa4\xfa\x00\xfc\ +\x3a\x80\xff\x07\xc0\xa1\x90\x24\x3d\xee\x5f\x22\xef\x71\x49\x6f\ +\x77\x05\x12\x79\x6f\x88\x0b\xa9\x71\x00\xff\x08\xc0\x2f\xc2\x71\ +\x9a\x27\x92\x48\x24\x49\x40\x95\x48\x47\x85\x71\x9a\xdf\x04\xc7\ +\x69\xfe\x21\x24\xcf\x5d\x22\x31\x25\x79\x60\x12\xe9\x98\x30\x90\ +\x3a\x0d\xe0\xdf\x02\x78\x60\xbb\xeb\x94\xc8\xee\x94\xc4\x47\x95\ +\x48\x47\xc4\x85\x94\x05\xe0\xc3\x00\xfe\x0b\x12\x48\x25\xd2\x82\ +\x24\xa0\x4a\xa4\xed\xe2\x42\x2a\x0f\xe0\xaf\x01\xf8\x7d\x00\x47\ +\xb7\xbb\x4e\x89\xec\x6e\x49\x9a\x7e\x89\xb4\x55\x5c\x48\x0d\x02\ +\xf8\x3b\x00\x7e\x15\x4e\x2f\x5f\x22\x89\xb4\x24\x09\xa8\x12\x69\ +\x8b\x30\xfe\xa8\xfd\x00\x7e\x1b\xc0\x4f\x03\xc8\x9a\xd2\x50\x00\ +\x29\x2b\x05\xdb\x6e\x6c\x77\xf5\x13\xd9\xe1\x92\x34\xfd\x12\x69\ +\x59\x18\x48\xdd\x06\x67\x10\xe7\xcf\xc3\x00\x29\x4a\x29\x52\xa9\ +\x14\xee\xb9\xf3\x38\xf6\xee\xdf\x0f\x4a\xe9\x76\x9f\x42\x22\x3b\ +\x5c\x12\x50\x25\xd2\x92\x30\xd3\x61\x1e\x47\x30\x1d\x46\xfb\x5c\ +\x51\x4a\xd1\xd5\x95\xc7\x47\xdf\xff\x20\xfe\xd2\xc7\x9f\x42\x7f\ +\x5f\x0f\x12\x4e\x25\x12\x26\x49\xd3\x2f\x91\xa6\xc5\x85\x54\x1a\ +\xc0\xc7\x01\xfc\x73\x00\xd7\x9b\xf4\x6d\x9b\x62\x68\xb0\x0f\x3f\ +\xf5\xe1\x47\xf1\xf4\xc3\xb7\x63\xa3\x54\x4f\xac\xa9\x44\x22\x49\ +\x02\xaa\x44\x9a\x12\x17\x52\x3d\x00\x7e\x09\xc0\xdf\x07\x30\x62\ +\xd2\xb7\x6d\x8a\x7d\x7b\xc6\xf0\xf3\x9f\x78\x0a\xa7\x6f\xbf\x09\ +\x29\xcb\x02\xa5\xb5\xed\x3e\x8d\x44\x76\x89\x24\xa0\x4a\x24\xb6\ +\xb8\x90\x1a\x05\xf0\x0f\xe1\x0c\x41\xe8\x36\xe9\x53\x4a\x71\xcb\ +\x91\x43\xf8\x4b\x9f\x78\x0a\xc7\x6e\x3a\x00\x50\x8a\xc4\x8e\x4a\ +\x24\x8e\x24\xa0\x4a\x24\xb2\x30\x4e\xf3\xc3\x00\x7e\x0f\xc0\x47\ +\x61\x78\x86\x28\xa5\x20\xc4\xc2\xe9\xbb\x8e\xe1\xe7\x3e\xf6\x04\ +\x0e\xec\x19\x86\x4d\x69\xb2\x08\x5a\x22\xb1\x25\x01\x55\x22\x91\ +\x84\x81\xd4\x3d\x70\xa6\xc3\x3c\x6c\xd2\xa7\x94\x22\x93\xc9\xe0\ +\x89\x87\xee\xc4\x4f\x7d\xe8\x61\x8c\x0c\xf4\xc0\xb6\x29\x40\x00\ +\x0a\xe2\xc0\xca\x33\xab\x12\x72\x25\x12\x22\x09\xa8\x12\x09\x15\ +\x66\x3a\xcc\xb3\x00\xfe\x35\x80\x63\x26\x7d\x9b\x52\xf4\xf6\x74\ +\xe1\xc3\xcf\x3c\x80\x0f\x3d\x75\x0a\xdd\xf9\x2c\x6c\xcf\x69\x4e\ +\x01\x10\xa7\xe9\x97\x34\xff\x12\x89\x2a\x09\xa8\x12\x31\x8a\x0b\ +\xa9\x1c\x9c\x35\xcd\x7f\x0b\xc0\x5e\x93\xbe\x6d\x53\x8c\x8e\x0c\ +\xe2\x93\x1f\x79\x1c\x8f\x9c\xbe\x15\x99\x74\x4a\x6e\xee\x51\xff\ +\x9f\x44\x12\x89\x24\x09\xa8\x12\xd1\x8a\x0b\xa9\x01\x00\xbf\x06\ +\x67\xb1\xbb\x7e\x93\xbe\x4d\x29\x0e\x1d\x98\xc4\xcf\x7f\xfc\x29\ +\xdc\x75\xfc\x06\x10\x02\x7f\xf8\x01\x85\xba\x85\x97\xe0\x2a\x91\ +\x28\x92\x80\x2a\x11\x49\x18\x7f\xd4\x5e\x00\xff\x0c\xc0\xcf\xc1\ +\xb1\xaa\xb4\x42\x29\x70\xe2\x96\xc3\xf8\xb9\x8f\x3f\x89\x23\xd7\ +\xed\x01\xa5\xd4\x19\xc8\xc9\xd0\x29\x71\x49\x25\xd2\xac\x24\xa0\ +\x4a\x84\x13\x06\x52\xc7\xe0\xf8\xa3\x9e\x45\xc8\x48\x73\x2b\x95\ +\xc2\x83\xf7\x1c\xc7\x4f\x7f\xe4\x31\xec\x19\x1b\xf4\xfd\x51\x3a\ +\x87\xb9\x17\x9b\x58\x53\x89\x44\x95\x04\x54\x89\xf8\xc2\x40\xea\ +\x61\x38\x3d\x7b\xf7\x98\xf4\x29\xa5\xc8\xe5\xb2\x78\xe6\xd1\x7b\ +\xf0\xb1\x0f\x3c\x80\xfe\xde\x2e\xd8\xd4\x86\x47\x25\xce\xa0\x52\ +\xb5\xfd\x12\x5f\x55\x22\x11\x25\x01\x55\x22\x00\xb8\xe9\x30\x1f\ +\x85\x33\x46\xea\xb0\x49\xdf\xb6\x29\x06\xfa\x7b\xf1\xd1\x0f\x3c\ +\x84\xf7\x3d\x72\x07\xf2\xb9\x0c\x33\x1d\x26\xa0\x12\x67\x50\x49\ +\xd6\x55\x02\xa9\x44\xa2\x49\x02\xaa\x44\x3c\x48\x75\xc3\x19\x65\ +\xfe\x0f\xe1\x8c\x3a\xd7\x8a\x6d\x53\x4c\x4e\x8c\xe0\xa7\x3f\xfa\ +\x04\xee\xbf\xf3\x66\xa4\x52\x04\xb6\x4d\x41\xe4\xae\x3d\x18\x81\ +\x95\x48\x22\x11\x25\x01\xd5\x7b\x58\x98\xa6\xde\x30\x80\xdf\x04\ +\xf0\xcb\x88\x30\x1d\xe6\xc6\x1b\xf6\xe3\xe7\x3f\xf6\x14\x8e\xdf\ +\x7c\x10\x00\xf5\x57\x3f\xf0\x3e\x23\x03\x2b\x91\x44\x22\x4a\x02\ +\xaa\xf7\xa8\x30\x90\xba\x0e\x4e\x53\xef\xe3\x88\xf0\x3c\xdc\x79\ +\xe2\x66\xfc\xec\x4f\x3c\x81\xeb\xf6\x8d\xf1\x2b\x1f\xb0\xce\x72\ +\xea\xc0\xaa\xd1\xa0\xb0\x29\x45\x26\x6d\x41\x05\xac\xc4\x45\x95\ +\x48\x54\x49\x40\xf5\x1e\x14\x06\x52\x77\xc2\x71\x9a\x3f\x0a\x83\ +\x91\x43\x29\x45\x3a\x9d\xc6\x23\xf7\x9d\xc4\x4f\x7e\xe8\x11\x8c\ +\x0e\xf5\xf1\x3d\x7b\x00\xe7\x2c\x27\x00\x2a\xd5\x06\xa6\x16\x0b\ +\xe8\xef\xc9\x61\x6c\x20\xcf\xf0\x28\x21\x53\x22\xf1\x25\x01\xd5\ +\x7b\x4c\x98\x85\xee\x9e\x81\x33\xfc\xe0\x36\x93\x3e\xa5\x14\xdd\ +\x5d\x79\xbc\xff\xc9\xd3\xf8\xd0\x53\xf7\xa2\xa7\x3b\xc7\x8d\x34\ +\x57\xf5\xec\x6d\x96\x6b\xb8\x3c\xbf\x81\x8d\x62\x0d\x7d\xdd\x59\ +\x0d\x9a\xa8\xf7\x7f\x22\x89\x84\x4a\x02\xaa\xf7\x90\xb8\x90\xca\ +\xc2\x59\xcf\xfc\xb7\xe1\xac\x6f\xae\x15\x9b\x52\x0c\x0f\xf6\xe3\ +\xe3\x1f\x7c\x14\x8f\xdd\x77\x1c\xd9\x4c\x9a\x19\x69\xee\xe0\x89\ +\x80\x6f\xd4\xad\x15\x2a\xb8\x3c\xb7\x8e\x62\xa5\x0e\xcb\x0a\x8c\ +\x34\xae\x95\x98\x38\xa8\x12\x89\x29\x09\xa8\xde\x03\xc2\x34\xf5\ +\xfa\xe0\xec\x0c\xf3\x77\xe1\x4c\x8d\xd1\x0a\xa5\x14\x07\xf6\x8e\ +\xe3\xa7\x3f\xfa\x24\xee\xba\xed\x30\x2c\x66\x3a\x0c\xdb\x75\xe7\ +\xad\x84\x40\x29\xb0\xb0\x5e\xc4\xd5\x85\x02\xaa\xb5\x86\x1f\xa6\ +\x9a\x7d\xcc\xce\x4f\x4e\x24\x91\x28\x92\x80\xea\x1a\x17\x06\x52\ +\x93\x00\xfe\x29\x80\xbf\x8c\x08\xd3\x61\x6e\x39\x72\x3d\x7e\xe6\ +\x27\x9e\xc0\xcd\x37\xec\x75\xa6\xc3\x40\x37\x78\x93\xa2\x61\x53\ +\xcc\x2e\x17\x31\xb3\x54\x40\xbd\xe1\x0c\x53\xf0\x54\xa8\x32\x0d\ +\xe0\xae\xf7\x92\x48\x22\x91\x24\x01\xd5\x35\x2c\x0c\xa4\x6e\x06\ +\xf0\xaf\x00\xfc\x18\x80\x94\x4e\x9f\x52\x20\x95\x22\xb8\xe7\x8e\ +\x63\xf8\xe4\x8f\x3f\x86\x7d\x13\x43\xc1\xf2\x2c\x90\xc7\x42\x11\ +\x02\x54\xeb\x36\xa6\x16\x36\x30\xbf\x5a\x02\x37\xde\x13\x00\x25\ +\x7c\xba\x04\x4c\x89\x34\x2b\x09\xa8\xae\x51\x61\x20\xf5\x00\x9c\ +\x9e\xbd\xd3\x26\x7d\x4a\x29\xb2\xd9\x2c\x9e\x78\xe8\x2e\x7c\xf4\ +\xfd\x0f\x60\xa8\xaf\xdb\x5f\xe8\x4e\xd2\x85\x13\x5c\xac\xd4\x71\ +\x79\x6e\x03\xab\x85\xb2\x14\x0f\x10\x10\xa6\xd9\xa7\x1a\x3f\x95\ +\x2c\x48\x9c\x48\x54\x49\x40\x75\x0d\x8a\x0b\xa9\x14\x80\x0f\x03\ +\xf8\x97\x00\x6e\x32\xe9\x53\x4a\xd1\xd7\xdb\x83\x0f\x3e\x73\x3f\ +\xde\xf7\xc8\x5d\xe8\x62\x16\xba\x23\x9a\xf5\x59\xd6\x8b\x55\x5c\ +\x9e\x5b\xc7\x46\xa9\xc6\x45\x13\xa6\x49\x48\xdd\x7f\x59\x1c\x25\ +\x68\x4a\xa4\x19\x49\x40\x75\x8d\x89\x0b\xa9\x3c\x80\x5f\x04\xf0\ +\x8f\x01\x8c\x9b\xf4\x29\xa5\x18\x1b\x1d\xc6\x4f\x7e\xf8\x51\x3c\ +\x70\xd7\x51\xa4\xd3\x29\x50\x71\x62\xb1\x60\x0e\x2d\xaf\x97\x70\ +\x79\x6e\x03\xa5\x6a\x83\xf3\x47\x39\xf9\xb9\xaa\x02\xdc\x04\x2f\ +\x57\x32\x32\x3d\x91\x58\x92\x80\xea\x1a\x11\xa6\xa9\x37\x04\xe0\ +\x37\x00\xfc\x4d\x38\xdb\x59\x69\x85\x52\x8a\xeb\x0f\xed\xc3\x27\ +\x3f\xf2\x38\x4e\x1c\x3d\xc4\x2d\x74\xc7\x36\xd6\x3c\xc4\xd8\x36\ +\xc5\xdc\x4a\x11\x53\x0b\x1b\xa8\x35\x6c\xd7\x57\xe5\x02\x8d\x19\ +\xec\xe9\xe4\xcd\xe4\x22\xe5\xe9\x76\x06\x26\xe3\xa8\x12\x89\x28\ +\x09\xa8\xae\x01\x61\x20\x75\x10\xc0\xef\x02\xf8\x29\x00\x99\xb0\ +\x74\x27\x8f\xdf\x84\x4f\xfe\xf8\xe3\xb8\xfe\xc0\x78\xb0\xd0\x1d\ +\x54\x73\xf5\x08\x6a\x0d\x1b\x53\x8b\x05\xcc\x2d\x6f\xa2\x61\xb3\ +\x3d\x7b\xbc\xe7\x9c\x32\x69\xb9\x09\xc8\xca\x95\x13\x12\x52\x25\ +\x12\x4d\x12\x50\xed\x72\x61\x20\x75\x12\x8e\xd3\xfc\x09\x44\x98\ +\x0e\xf3\xc0\xa9\xdb\xf0\xf1\x1f\x7b\x18\xe3\x23\xfd\xd2\x6e\xc5\ +\xde\x5c\x3d\xb8\x19\x95\xab\x75\x5c\x9e\x5f\xc7\xd2\x5a\x59\xea\ +\xc1\x0b\x2c\x29\xd6\x84\xe2\xa1\xc5\xe5\xee\x1f\x24\x8d\xbf\x44\ +\xa2\x4b\x02\xaa\x5d\x2c\xcc\x74\x98\x27\xe0\x40\xea\xa4\x49\x9f\ +\x52\x8a\xae\xae\x3c\x9e\x79\xf4\x14\x7e\xec\xa9\x53\xe8\xef\xe9\ +\xd2\x6e\xa9\xee\xc1\x6a\xa3\x54\xc3\xa5\xd9\x75\xac\x6d\x56\x02\ +\xb4\x10\xc2\x01\xcb\x1f\x2f\xa5\x80\x96\xdc\xe8\xf3\x74\x12\x63\ +\x2a\x91\xe8\x92\x80\x6a\x97\x8a\x0b\xa9\x0c\x9c\x66\xde\xef\xc2\ +\x69\xf6\x69\x85\x52\x8a\xc1\xc1\x7e\x7c\xe4\xd9\x87\xf0\xd8\x7d\ +\x27\x90\xcb\xa5\xe5\x89\xc5\x82\x2c\x6f\x94\x71\x69\x76\x1d\xc5\ +\x72\xdd\x6f\xea\x01\x00\x11\xda\x88\x41\xb8\x5b\x16\x07\x2c\xed\ +\x4c\xbf\x44\x12\x89\x2c\x09\xa8\x76\xa1\xb8\x90\xea\x05\xf0\x37\ +\xe0\x38\xce\x87\x4c\xfa\x94\x52\xec\xdd\x33\x86\x9f\xfc\xf0\xe3\ +\xb8\xe7\xc4\x61\xa4\x2c\x0b\xd4\x0e\xa6\xc3\x88\xee\x23\x4a\x29\ +\xe6\x57\x4b\xb8\x32\xbf\x81\x8a\xd7\xb3\xc7\x34\x07\xc3\x80\xc5\ +\x59\x59\x5c\x84\x58\xb1\xed\xbe\x92\x89\xec\x16\x49\x40\xb5\xcb\ +\xc4\x85\xd4\x38\x9c\xa1\x07\xbf\x08\x67\x28\x82\x51\x6e\xbe\xe9\ +\x10\x7e\xea\xc7\x1f\xc7\xd1\x1b\xf6\x81\x80\x32\xcd\x3d\x61\x6c\ +\x01\x80\x86\x4d\x31\xbd\x58\xc0\xd4\x62\x01\x0d\xdb\x06\x61\x3c\ +\xeb\xa2\xb3\x5d\x02\x16\x13\xe9\x6f\xe0\xa0\x75\xa6\x27\x92\x48\ +\x74\x49\x40\xb5\x4b\x84\x71\x9a\xdf\x04\x67\x10\xe7\x87\x11\x3a\ +\x1d\xc6\xc2\x5d\x27\x8f\xe2\x13\x1f\x7a\x04\xfb\x27\x87\xfd\x39\ +\x7b\x80\xb0\xde\x26\x25\x20\x04\xa8\xd4\x1a\xb8\x32\xbf\x81\xf9\ +\x95\xa2\xbf\x94\x0b\x25\xfe\x06\xec\x5c\xde\x80\x0c\x2c\x40\x84\ +\x56\x10\x2f\x5a\x5b\x62\xba\x44\x12\x31\x49\x02\xaa\x5d\x20\x0c\ +\xa4\x4e\xc3\x71\x9a\x3f\x60\xd2\xf7\x76\x87\x79\xe4\xbe\x3b\xf0\ +\xe3\xef\xbb\x0f\xc3\x03\xbd\x4e\x53\x4f\xd8\xb2\x8a\xb1\x95\xb0\ +\x59\xae\xe3\xe2\xec\x3a\x56\x36\xca\xbc\x0e\x75\x60\x05\x40\x0b\ +\x2c\x40\x07\x2d\x31\x84\xd5\x49\x86\x26\x24\x12\x5d\x12\x50\xed\ +\x70\x71\x21\x65\x01\xf8\x20\x1c\x4b\xea\xa8\x49\x9f\x52\x8a\xde\ +\xde\x6e\xbc\xff\xc9\xfb\xf0\xcc\xc3\x77\xa2\xbb\x2b\xeb\x8e\x34\ +\x87\xe3\xe5\x56\x6c\x08\xba\xbe\x59\xc1\x85\x99\x75\x14\x4a\x55\ +\xf8\x38\x62\xc1\xe3\xfb\x9c\x28\xd3\xb3\x17\x05\x5a\x34\x80\x92\ +\x24\x44\x1b\x93\x48\x22\xa2\x24\xa0\xda\xc1\xe2\x42\x2a\x07\xe0\ +\x17\x00\xfc\x13\x38\x4b\xb5\x68\xc5\x99\x0e\x33\x84\x8f\x7e\xe0\ +\x11\xdc\x7f\xd7\x51\x64\x33\x29\xdf\x1f\xe5\x63\x81\x19\x42\x4e\ +\x01\x2c\xad\x96\x70\x71\x76\x1d\xe5\x6a\xdd\x05\x8c\x3b\xd9\x45\ +\x18\x6a\x2e\xf7\xec\xa9\xad\x2c\xa7\x1e\xec\x01\x34\x34\xa2\xa6\ +\xc8\x44\x12\xe1\x24\x01\xd5\x0e\x15\x17\x52\x83\x70\x16\xb9\xfb\ +\x55\x38\xbd\x7c\x5a\xa1\x94\xe2\xba\x83\x7b\xf1\x89\x0f\x3d\x86\ +\x93\xb7\x1c\xe2\x17\xba\x83\x3c\x21\xc6\xb6\x29\x66\x96\x36\x71\ +\x65\x3e\x98\x0e\xc3\xf7\xec\x79\x93\x92\xa3\x01\xcb\x51\x11\xa1\ +\x15\x0c\x50\x90\x2c\x2e\x4a\x92\xcd\x1d\x12\x89\x2c\x09\xa8\x76\ +\xa0\xb8\x90\xda\x0f\xe0\x77\x00\x7c\x12\xce\xf2\xc1\x5a\x21\x00\ +\x6e\xbb\xf5\x26\x7c\xfc\x83\x8f\xe0\xf0\xc1\x09\x84\x2d\xa0\x52\ +\xab\x37\x70\x65\x61\x03\x33\x4b\x45\x69\x3f\x3e\xd9\x51\x6e\x06\ +\x16\xe7\x1c\x27\x9c\x87\x4a\xbb\x69\x3b\x15\x56\xd5\x4b\x3a\x02\ +\x13\x09\x93\x04\x54\x3b\x48\x18\xa7\xf9\x6d\x00\xfe\x0d\x80\xa7\ +\xe0\xf8\xa7\x94\x42\x29\x45\x26\x93\xc6\xe9\xbb\x8e\xe3\x23\xef\ +\x7f\x10\x93\xa3\x03\x9c\x15\x25\xae\x60\x40\x00\x94\xaa\x0d\x5c\ +\x9c\x5d\xc3\xe2\x6a\x29\x58\x85\xd3\x85\x50\x2c\x60\x79\x19\x42\ +\x0d\x2d\x80\x72\xf3\xfe\x12\x49\xa4\x15\x49\x40\xb5\x43\x84\x99\ +\x0e\xf3\x18\x1c\x48\xdd\x69\xd2\xf7\x76\x87\x79\xe2\xe1\xbb\xf1\ +\xfe\x27\x4e\x61\xa0\xb7\xcb\x38\x67\x0f\x00\xd6\x8b\x35\x9c\x9f\ +\x5e\x73\xa6\xc3\x30\x90\xf1\x2c\x1f\xea\x0e\x53\x10\xf3\x00\x64\ +\x60\x01\x21\xd0\x02\xb8\x85\xf3\x12\x49\xa4\x15\x49\x40\xb5\x03\ +\xc4\x85\x54\x1a\xc0\x27\x00\xfc\x73\x38\x9b\x82\x6a\xc5\x9b\x0e\ +\xf3\xc1\xa7\x1f\xc0\xa3\xa7\x8f\x23\x9f\xcf\x18\xe7\xec\x01\xce\ +\x74\x98\x0b\x33\x6b\xd8\x2c\xd7\x9c\x46\x99\x6a\xa4\xb9\xbf\xeb\ +\xb1\xde\xc2\x62\xc3\xa3\x40\x4b\xe5\x32\x4f\xc6\x51\x25\x12\x57\ +\x12\x50\x6d\xb3\xb8\x90\xea\x01\xf0\x4b\x70\xb6\x55\x1f\x36\xe9\ +\x7b\xd3\x61\x7e\xe2\x03\x8f\xe0\xee\xdb\x6e\x44\x3a\x4d\xb8\x31\ +\x52\xf2\xb0\x01\x67\xe3\x85\x4b\x73\xeb\xce\xee\x30\xc6\xe6\x9d\ +\x97\x47\x60\x61\xb1\xf1\x62\x3a\x3e\x2d\x13\x48\x85\x9a\x88\xbb\ +\xd0\xa8\x83\x13\x49\x44\x2b\x09\xa8\xb6\x51\x5c\x48\x8d\x01\xf8\ +\x07\x00\xfe\x1a\x80\xee\xb0\x34\x37\xdf\x78\x08\x1f\xfb\xe0\x23\ +\x38\x7a\x78\x5f\xb0\x25\x15\xc0\x0c\x32\x0f\x46\x92\xd7\x1b\x36\ +\xae\x2e\x14\x70\x75\x61\xc3\x59\x43\x0a\x5e\x73\x50\x18\x9f\xde\ +\x24\xb0\xd8\xb4\x72\x3c\x75\xf6\xfe\xd3\xee\x8d\x95\x60\x2a\x91\ +\xe8\x92\x80\x6a\x1b\x84\x71\x9a\x1f\x06\xf0\x2f\x00\x7c\x04\x86\ +\x7b\x41\x29\x45\x2a\x95\xc2\x9d\x27\x6e\xc6\x47\x3e\xf0\x10\x0e\ +\xee\x19\xd1\x36\xf5\xbc\xe1\xe4\x95\x5a\x03\x17\x67\x36\x30\xb7\ +\xb2\xe9\xf7\xb2\x05\xce\x73\x47\x35\x2a\xb0\xbc\xed\x46\x75\xcd\ +\xc2\xa0\x9e\xfc\x71\xd0\xb1\xa7\x19\xf0\x99\x0c\x4e\x4f\x24\xa2\ +\x24\xa0\xda\x62\x61\x20\x75\x0a\xce\x74\x98\x87\x4c\xfa\xde\x74\ +\x98\x87\x4e\xdf\x8e\x1f\x7b\xea\x34\x46\x87\x7a\x99\xdd\x8a\x1d\ +\x11\x99\x51\x28\x39\x4e\xf3\x65\x77\x3a\x0c\x61\x96\x48\x60\x47\ +\x19\x84\x01\xcb\x89\x83\x50\x16\x65\x74\xf4\xd0\x62\xd3\x50\xa8\ +\xea\x9a\x78\xda\x13\x89\x2e\x09\xa8\xb6\x50\x98\xe9\x30\xef\x87\ +\xb3\xcf\xde\x31\x93\xbe\xb7\x3b\xcc\x33\x8f\xdf\x8b\x27\x1f\xbc\ +\x03\xbd\xdd\x39\x69\xce\x1e\xc0\xcf\xdb\x5b\x29\x54\xf0\xee\xd4\ +\x1a\x0a\xa5\x2a\x37\xbe\x89\x08\xdd\x72\x2a\x60\x01\xec\x98\xaa\ +\x30\x2b\x4b\x0d\x2d\x4f\x57\xec\x71\x64\xeb\xca\xa7\x4e\x24\x91\ +\x70\x49\x40\xb5\x45\xc2\x4c\x87\xf9\x39\x00\xff\x0c\xc0\x5e\x93\ +\xbe\x37\x1d\xe6\xc3\xcf\x3e\x84\xd3\x77\xdc\x8c\x5c\x36\x1d\x34\ +\xf7\x14\xa6\x94\x4d\x81\x85\xd5\x22\x2e\xcc\xac\xa1\x54\x69\x08\ +\x0b\xdd\x29\xa6\xbc\x28\x80\xe5\x94\xeb\x1e\xc7\xb0\xb2\xbc\x23\ +\x69\x63\x07\xca\x6c\xeb\x9e\x48\x22\x2d\x48\x02\xaa\x2d\x10\x17\ +\x52\x03\x00\xfe\xb6\xfb\xd7\x6f\xd2\xf7\xa6\xc3\x7c\xf4\x03\x8f\ +\xe0\xb6\xa3\x07\x91\xb6\x88\x0b\x29\xb7\xa9\xe5\x2b\x3a\x07\x0d\ +\x9b\x62\x6a\xa1\x80\xcb\x73\xeb\xa8\x37\xf8\x35\xa4\x3c\x35\x7f\ +\x62\x71\x4c\x60\x99\xac\x2c\x40\x18\xc2\x20\x9c\x07\xbf\x94\x8c\ +\xb8\x41\x60\xe2\xa0\x4a\x24\xba\x24\xa0\xea\xb0\xb8\x90\xda\x0b\ +\xe0\xb7\x00\xfc\x2c\x1c\xab\x4a\x29\x94\x02\x96\x45\x70\xfc\x96\ +\xc3\xf8\xe8\x07\x1e\xc6\x0d\x07\xc6\x39\xcb\x28\x70\x4d\x3b\x98\ +\x21\x00\x2a\x35\x1b\x97\x66\xd7\x30\xbd\xb4\x19\xac\x21\xe5\x4d\ +\x44\x6e\x06\x58\x00\x33\xd4\x21\xa8\x97\x17\x6b\x82\x96\x53\x26\ +\x5f\x9e\xf3\xc7\xaf\xa2\x10\xe0\x36\x12\xac\x12\x9c\x25\x92\x80\ +\xaa\x53\xc2\x38\xcd\x6f\x85\xe3\x8f\x7a\x16\x11\xa6\xc3\xdc\x7b\ +\xd7\xad\xf8\xd0\xd3\x0f\x60\x62\x6c\x80\xdf\xf8\x4e\xb1\x85\xd5\ +\x66\xa5\x8e\xf3\xd3\x6b\x58\x58\x2d\x06\x31\x84\x05\x4c\x04\x60\ +\xa9\x96\x6e\xd1\x58\x59\x4e\x9e\x41\x2e\x7c\xb6\x6a\x70\x29\xcf\ +\xd5\xfd\x57\x70\x6d\xa9\x24\x07\xe0\x38\x80\xe1\xc9\xd3\x9f\x8a\ +\x3a\x21\xa7\xd5\x89\x3b\xcd\xa4\x6f\xc7\x64\xa1\xb8\x79\x88\xfa\ +\xb4\x0d\x79\x00\x40\x05\xc0\x55\x00\x2b\x00\x1a\xb3\xcf\xfd\x7e\ +\x1b\x4e\xad\x75\x49\x40\xd5\x01\x61\xa6\xc3\x3c\x0c\x67\x3a\xcc\ +\x3d\x26\x7d\x4a\x29\xba\xbb\xf3\x78\xec\xc1\xbb\xf0\xcc\x23\x77\ +\x63\xb0\xbf\x5b\xee\xd9\x13\x1e\xc3\xd5\xcd\x0a\xde\x9d\x5a\xc5\ +\xda\x66\x15\x00\xdf\x1c\x94\x9b\x71\x06\x60\x79\x79\x23\x9e\x95\ +\xe5\xe4\x1b\x7c\x27\x44\x43\x28\x2d\xb8\x48\x48\x3c\x00\x60\x1f\ +\x80\xff\x06\xa0\xd1\xca\xfd\x88\x29\xbb\x61\x86\x62\x27\xeb\x68\ +\x03\xb8\x04\xe0\xcb\x00\xfe\xdf\xc9\xd3\x9f\x5a\xde\x09\xb0\x4a\ +\x40\xd5\x66\x61\xa6\xc3\xfc\x04\x9c\xe9\x30\x87\x4d\xfa\x94\x52\ +\x0c\x0d\xf6\xe3\xfd\x4f\xdd\x8f\x07\x4f\xdd\x8a\x9e\x7c\x56\x39\ +\x46\xca\x5b\x6d\x13\x00\x16\xd6\x4a\x78\x77\x7a\x15\xc5\x92\xbb\ +\x86\x14\x21\xfc\xcf\xa9\xd6\xef\x14\x0f\x58\x4e\x5a\x3d\xb4\xf8\ +\xbc\xe5\x73\x6b\xc3\xdb\x94\x02\x30\xd2\x7a\x36\x89\xc4\x94\x71\ +\x00\xb7\xc3\x59\xb5\xe3\xb7\x27\x4f\x7f\xaa\xb2\xdd\xb0\x4a\x40\ +\xd5\x46\x71\x21\xd5\x0d\xe0\xaf\xc3\x19\x6d\x3e\x6a\xd2\xa7\x94\ +\x62\xdf\x9e\x71\x7c\xf8\xd9\x87\x70\xc7\xf1\xc3\xc8\xa6\x2d\xdf\ +\xcf\xa4\x92\x06\xa5\x98\x59\xdc\xc4\xc5\xd9\x75\x54\x6a\x41\xcf\ +\x9e\xb7\x4e\x39\x25\x0a\x67\x3b\xe2\x03\x4b\xb7\x74\x0b\x51\x58\ +\x41\xaa\x15\x12\xd8\xb9\x7c\xde\x5a\x54\xf2\x7a\x54\x52\x56\x89\ +\xec\x2c\xc9\xc0\x99\x2d\xf1\x39\x00\x3f\xdc\xee\xca\x24\xa0\x6a\ +\x93\xb8\x90\x1a\x05\xf0\xf7\x01\x7c\x0a\xce\xfc\x3d\xa3\xdc\x7c\ +\xe3\x21\xfc\xf8\xfb\x1f\xc2\xcd\x37\xec\x73\x17\xba\x73\xc2\x85\ +\x15\x83\x41\x00\xd4\x1a\x36\x2e\xcd\xad\xe3\xea\x7c\xc1\x9f\x0e\ +\xe3\x99\x51\x81\x45\xd4\x1e\x60\x31\x49\x40\x38\x28\x99\xa1\x15\ +\xe8\x31\xe5\xa8\xe2\xbd\x7a\x53\x75\xd9\x89\xec\x18\x19\x86\xd3\ +\x22\x48\x40\xb5\xdb\x85\x71\x9a\x5f\x0f\xa7\xa9\xf7\x31\x38\xbf\ +\x46\x4a\xf1\xa6\xc3\xdc\x71\xe2\x66\x7c\xe8\x99\x07\x70\x60\xcf\ +\xb0\x30\x5a\x1b\xce\xea\x97\x6e\xa0\x45\x80\x52\xa5\x81\xf3\xd3\ +\xab\x98\x75\xa7\xc3\x38\x06\x89\x0b\x23\xc6\xd9\x1e\x17\x58\x5e\ +\x1c\xbf\x86\x95\xc6\xca\x72\x0f\x02\x6b\x89\x0a\x4d\x40\x79\x9c\ +\x42\x14\x6b\x29\x9d\xcd\x03\xc4\x8a\xa8\x9d\xc8\x36\x48\xe8\xfc\ +\xd3\xad\x90\x04\x54\x2d\x08\x03\xa9\xbb\x01\xfc\x6b\x00\x8f\xc2\ +\xe0\x9a\xa1\x94\x22\x9f\xcb\xe2\x81\xd3\x27\xf1\xbe\xc7\x4e\x61\ +\x74\xa8\x0f\xec\xba\x03\x1c\xb0\xdc\xb5\xa1\xd6\x37\xab\x38\x37\ +\xb5\x8a\xe5\x75\x66\x77\x18\xc2\x8c\x0a\x67\x81\xa5\xd9\x6f\x4f\ +\x07\x2c\x2f\x2f\x36\xce\x04\x2d\x21\xa9\x11\x5c\x5e\x9e\x34\x04\ +\x40\xb9\xde\x01\xe4\x7a\xfa\x51\x2d\xac\xea\xe7\xe2\x24\xf2\x9e\ +\x97\x04\x54\x4d\x0a\xd3\xb3\xf7\x3e\x38\x90\x3a\x6e\xd2\xa7\x94\ +\xa2\xbf\xaf\x07\x4f\x3d\x7a\x0a\x8f\xdc\x77\x12\x7d\x3d\x79\x50\ +\x4a\xa5\x71\x47\x2c\xac\x96\xd6\xca\x78\x67\x6a\x15\x85\x62\x0d\ +\x20\xd0\xf4\xec\x31\xc0\xf2\x58\x11\x15\x58\x8c\x92\x7a\xfc\x94\ +\x19\x5a\x6c\x19\xde\x01\x51\xc4\x39\xa3\x2c\x78\x60\x79\x96\x1c\ +\x49\x67\xd1\x37\x71\x08\xeb\x14\xa8\x95\x0b\xb0\x1b\x0d\xa8\xad\ +\xab\x04\x62\xed\x16\xef\x8a\xee\x86\xdf\x87\x04\x54\x4d\x88\x0b\ +\xa9\x2c\x80\x9f\x81\x33\x90\x73\xbf\x49\x9f\x52\x8a\xf1\xb1\x61\ +\xfc\xd8\xd3\x0f\xe0\x9e\x93\x47\x90\xcf\x05\xd3\x61\xc4\x39\x71\ +\x9e\xf3\x79\x76\x79\x13\xe7\xa7\x57\x51\xaa\x34\x60\xb9\x5e\x73\ +\x95\xef\x27\x0e\xb0\xe0\x0d\x08\x05\xfc\x42\x95\xd0\x52\xf6\xea\ +\x09\xa0\x89\x00\xae\x60\x1e\xa1\x3c\xb0\x93\x82\x22\x9b\x49\xe1\ +\xd6\xeb\x46\x70\x70\xbc\x0f\xd4\xbe\x1e\xb5\xf2\x26\xea\x95\x92\ +\xb2\xd7\x53\xfb\x2e\x91\x48\x5a\xd7\x86\x28\xc6\xd4\x29\x7b\x5b\ +\x09\x37\xa1\xc9\x98\xe5\xd2\xf2\x3a\xce\x9c\x39\x8b\x4a\xa5\xba\ +\xdd\x67\x67\x94\x04\x54\x31\xc5\x85\x54\x3f\x9c\x9d\x61\xfe\x0e\ +\x9c\xa9\x31\x5a\xa1\x94\xe2\xfa\x43\x7b\xf1\xa1\xf7\x3d\x84\x5b\ +\x8f\x1c\x44\x26\x65\x49\x0f\x17\x3b\xf1\xb7\x61\x53\x5c\x9e\xdb\ +\xc0\xa5\x59\x6f\x3a\x4c\x60\x8d\x78\xab\x68\x52\x02\x83\xa3\x5c\ +\x01\x2c\x27\x82\x55\x97\xac\x2c\x46\x85\x6f\x1a\x72\x11\xf1\xc0\ +\x65\x7a\x45\x28\x05\x7a\xbb\x32\x78\xea\xee\x43\x10\x32\x52\xe2\ +\xa6\x9d\x36\x56\x2c\x6f\x58\xa4\xe1\x61\x66\xa5\xa8\xe5\x51\x49\ +\x99\x2a\xbe\x31\xb1\x34\x42\x7e\x9a\xd1\xff\x5e\xd0\xd9\x77\xa7\ +\x71\xe9\xe2\x25\x94\xcb\x95\x1d\xdd\xb1\x91\x80\x2a\xa2\x30\xfe\ +\xa8\x49\x38\x93\x8a\x7f\x1e\x40\x5e\xa7\xef\x4d\x87\xb9\xed\xd8\ +\x61\x7c\xf0\x99\x07\x71\xfd\x81\x71\x10\xa2\x5f\x31\x80\x10\xa0\ +\x52\x6d\xe0\xc2\xcc\x1a\xa6\x17\x9d\xe9\x30\x5e\x3e\xaa\x0d\x16\ +\xa4\x51\xe3\x26\x60\x81\x77\xba\x33\xea\xbe\x95\xe5\xa4\x55\x40\ +\x8b\x53\x56\x5b\x5b\x4e\x36\x0a\x2b\x28\xe4\xb9\x27\x00\x52\xd6\ +\xd6\xbe\x1c\xb1\x86\x6f\x6b\x94\x83\x60\x1a\x29\x6d\x14\x50\x89\ +\xcd\xfe\xb0\x6a\xe8\x56\xa7\x60\x53\x13\x0f\x52\xda\xd5\x36\x08\ +\x2c\x8b\x24\x4d\xbf\x6b\x45\x18\x48\x1d\x85\x33\x1d\xe6\x03\x70\ +\x06\x23\x2a\x85\x52\x8a\x6c\x26\x8d\x53\x77\xdd\x8a\x67\x9f\x38\ +\x8d\xc9\x51\xcf\xe8\xa2\x01\x38\x18\x7d\x42\x80\xcd\x52\x0d\xef\ +\x5c\x5d\xf5\xa7\xc3\xb0\xbf\x6e\xaa\x0d\x16\x58\xeb\x8a\xcb\x2f\ +\x2a\xb0\x98\x44\xa2\x95\xe5\xa4\x8f\x00\x2d\x29\x52\x1e\xb9\xee\ +\xcd\xf3\xd3\x02\xba\x0d\xf7\xa7\x2d\xfd\x85\x34\x6a\x54\xb8\x62\ +\x2c\x0b\x4a\xfd\x45\x9b\x4f\x64\x2b\x4a\x91\x81\x6a\x18\xf1\x6e\ +\xe9\x6b\x4d\x40\x15\x22\x8c\xd3\xfc\x41\x38\xd3\x61\xee\x35\xe9\ +\x53\x4a\xd1\xd3\x9d\xc7\xa3\x0f\xdc\x85\xc7\x1f\xba\x13\x83\x7d\ +\x5d\x4c\x24\x7c\x52\x30\x2b\x44\x61\x65\xa3\x82\xb7\xaf\xac\x38\ +\xbb\xc3\x30\xf9\x00\x7a\x60\xa9\x9a\x83\x5e\x45\xfd\xb2\xa0\x02\ +\x56\xa0\xa5\xb5\xb2\xdc\xc2\x54\x96\x16\x57\x86\x94\x48\x3f\xdd\ +\x46\x7b\xbd\x5a\xbb\x3d\xcd\x49\xa4\x97\x3d\x46\x0d\x77\x0c\xa0\ +\xdc\x6f\xd4\x14\x1f\xfd\xb4\x76\x92\x24\xa0\x32\x88\x0b\xa9\x14\ +\x9c\xa5\x82\x7f\x0f\xc0\x4d\x26\x7d\x4a\x29\x86\x87\xfa\xf1\xbe\ +\xc7\xef\xc3\xe9\xbb\x8f\xa1\x3b\x9f\x91\x2d\x6f\x66\x24\x25\x05\ +\x30\xbf\x52\xc2\xb9\x2b\x2b\xd8\xac\xd4\xf9\x35\xa4\x98\x3c\xa5\ +\xb1\x4d\xcd\x00\x8b\x09\x14\xad\x2c\x95\x2f\x8b\xad\x2a\x84\xd1\ +\xf2\x46\x70\x89\x65\x52\xe6\x4f\x9b\xa0\xcd\x12\xf3\x25\xa4\xcd\ +\x64\xd0\xc4\xc8\xfa\x4e\x00\x2a\x48\x17\xd5\x8a\x12\x02\x77\x09\ +\xb0\x12\x50\x69\x84\x99\x0e\xf3\x57\x00\xfc\x63\x38\x9b\x30\x68\ +\x85\x52\x8a\xfd\x7b\xc7\xf1\x81\xa7\x1f\xc0\xc9\x63\x37\x20\x9b\ +\x09\x5a\x86\x8a\xce\x1a\xd8\x0d\x8a\xab\x8b\x05\x5c\x98\x5e\x43\ +\xa5\xde\x08\x96\x0b\x26\x72\x1a\xed\x94\x17\x13\xb0\x98\x02\xf5\ +\x03\x3e\xd9\xbe\x21\x05\xb4\x98\xc4\x3a\x6b\x2b\x28\x4b\xa6\x0f\ +\xdf\x78\x14\xdb\x8c\x0a\x89\x0b\xb0\x16\x5e\xb2\xd8\x56\x93\xa0\ +\x1a\xb7\xe8\xed\x80\x54\xc8\x49\xef\x16\x46\x01\x48\x40\xa5\x14\ +\x17\x52\xc3\x00\xfe\x6f\x00\xbf\x0c\xa0\x37\x2c\xcd\xd1\x9b\x0e\ +\xe1\xc7\x9e\x79\x10\x37\x5e\xb7\x17\x69\x8b\x28\xe9\x44\xe1\xbc\ +\xcf\xb5\x9a\x8d\x0b\x33\x6b\xb8\x32\xef\xee\x0e\xe3\x8e\x37\xa0\ +\x20\xca\xe6\x58\xe8\x1c\x3d\x05\xb0\x80\x70\x2b\x8b\x8d\x53\x42\ +\x0b\x6a\x9f\x96\x90\x85\x5f\x09\xd5\xba\x23\x0d\x9b\xa2\xde\xb0\ +\xf5\x9b\x51\x74\x50\x68\x13\x31\x2a\x95\xa6\xa1\xe4\x1e\x28\xfb\ +\xee\x42\xd8\x12\xcb\x17\xa5\xc8\x88\x3d\x4c\x59\xc4\x19\xe2\xd2\ +\xe4\xf9\xec\x04\x49\x40\xc5\x08\xe3\x34\x3f\x04\xe0\x77\x01\xfc\ +\x24\x42\xa6\xc3\xa4\xd3\x29\xdc\x71\xdb\xcd\x78\xf6\xc9\xfb\xb0\ +\x7f\x72\x24\x98\x28\xec\x2b\x05\x07\x84\x00\xc5\x72\x1d\xe7\xae\ +\xae\x62\x6e\x79\x93\x1b\x10\xe9\xc4\x33\xce\x76\x06\x58\xaa\xe6\ +\xa0\xa3\xaf\x07\x96\x53\xb4\xba\x59\xc8\xe6\x15\x0e\x2d\x46\x9b\ +\x2a\x8c\x9e\x10\x78\x5d\x5d\xd8\xe0\xd6\xcb\xd2\x4b\xb3\x6b\xa8\ +\x47\x23\x4a\x68\xde\x5a\xbf\x8e\xa6\x61\x18\x36\x6c\x81\xf9\xa2\ +\xf2\x0f\x29\x73\x55\x84\xab\x0d\x30\xb5\x13\x9c\x0a\xca\xde\x98\ +\xbc\x7d\xa3\xbd\xd8\x37\xda\x1b\xed\x3a\xec\x50\x49\x40\xe5\x0a\ +\x03\xa9\x3b\xe0\x8c\x34\x7f\x02\x61\xd3\x61\xf2\x59\x3c\x70\xea\ +\x24\x9e\x7c\xe4\x6e\x8c\x0e\xf5\x42\xec\xb8\x66\x61\x40\x08\xb0\ +\x56\xa8\xe2\xed\x2b\xcb\xee\x74\x18\xdd\xf6\xe9\x94\x1b\xb0\xd7\ +\x4e\x60\x39\xa0\x89\x0b\x2d\x1e\x21\x94\x4f\x61\x84\x17\x05\xb0\ +\x51\xac\x61\x03\x35\x68\x54\xda\x2a\x4d\xbd\x84\x26\xa0\xe8\xf2\ +\x35\x3a\xab\xa9\x06\x44\x2a\x2b\x89\x41\xa1\x89\xb7\x54\x86\xa6\ +\xca\xe2\x62\xad\x56\xd6\xbf\x38\xd4\x9b\xd7\x34\x34\x77\xc1\xb8\ +\x04\x57\x12\x50\x81\xeb\xd9\x7b\x0a\x0e\xa4\x4e\x9a\xf4\xbd\xe9\ +\x30\x4f\x3e\x72\x0a\x0f\x9c\xba\x0d\xfd\xbd\xec\xea\xc2\xdc\x28\ +\x16\xff\x51\x58\x58\x2d\xe1\xec\xe5\x65\x14\x4a\xde\x74\x18\x6a\ +\xdc\x89\x98\x30\xbd\x83\x40\x6b\xc0\x62\xcb\x68\x0a\x5a\x5c\x04\ +\x5b\x2b\x56\x55\x0d\x2f\xe5\xab\xd0\xa1\xf7\x43\x55\x77\x51\xa4\ +\x28\x6e\x45\x08\xb9\xd9\xa6\xac\x2e\x81\x64\xe9\x70\xf3\x1a\x09\ +\x7b\x6f\x98\x64\xdc\x88\x72\xa1\x5c\xf1\x1e\x08\x9d\x20\xfc\x8e\ +\x3f\x62\x5e\x8e\xa6\xb8\xa1\x07\xe0\x74\x7c\x88\x1b\xc3\xf2\xdf\ +\x77\x87\x8d\xf5\x9e\x07\x15\x33\x1d\xe6\xff\x02\xf0\x3b\x00\x0e\ +\x98\xf4\x29\xa5\x98\x18\x1b\xc6\xb3\x4f\xde\x8f\x3b\x4f\xdc\x84\ +\x7c\x36\xad\x7c\x78\x3c\x9b\xca\xa6\x14\xd3\x8b\x9b\x38\x37\xb5\ +\x82\xb2\xbb\x3b\x0c\x28\xf8\x89\xc5\x0a\x60\x89\xbb\xc1\xc4\x01\ +\x96\x93\xce\x6c\x65\x39\x79\x46\x84\x96\x77\x3a\xec\xa1\xa2\xab\ +\x8f\x28\xd5\x35\x23\x26\xd1\x7e\x5e\xd1\x98\xb1\x71\xba\xec\xa9\ +\xe6\x40\x65\x87\x99\xfc\x4b\xa2\xaf\x4e\x57\x07\xd1\x36\x52\x5b\ +\x50\x8a\x5a\x08\x3f\x30\x01\x8a\x9a\xea\xdb\xdc\x31\xf2\x9e\x06\ +\x95\x0b\xa9\x3e\x00\x7f\x03\xc0\xdf\x03\x30\x14\x96\xe6\x86\x43\ +\x7b\xf1\x81\xa7\x1f\xc4\xd1\x1b\x0f\x20\x93\xe6\x97\x40\x67\x47\ +\x0b\x13\x00\xb5\x46\x03\x97\x66\x37\x70\x71\x76\x1d\x35\x77\x3a\ +\x4c\xa0\x0c\x79\x8c\x53\x5c\x60\x29\x7a\xe4\x9a\xb1\xb2\x9c\x3c\ +\x14\xd0\x62\x33\x84\x01\x5c\x86\x7a\x44\x77\x69\x77\x6e\x42\x4c\ +\x68\x17\x7d\x58\x74\x08\x98\x80\x78\x70\x52\x16\xdf\x24\xa0\xfc\ +\x7f\x75\xce\x74\x71\xd5\xc2\x08\xf5\xdd\x89\xf2\x9e\x04\x15\xe3\ +\x8f\x9a\x80\x33\xf4\xe0\xaf\x20\xc2\x74\x98\xe3\xb7\xdc\x80\xf7\ +\x3f\x79\x3f\x0e\xed\x1b\x77\xa6\x7e\xa8\x7a\xf6\x5c\x58\x95\x6b\ +\x0d\x9c\xbb\xba\x8a\xa9\x85\x82\xb3\x6a\x27\xe1\x27\x5d\x18\x27\ +\x16\x47\x05\x16\xeb\x1f\x52\x0c\x6b\x70\xd2\x85\x5b\x59\x41\xbc\ +\x97\x07\xdb\x73\xe8\xe6\xa6\x3e\x5d\xe5\x41\x34\xe4\x68\xdd\xc6\ +\xed\xfb\xa5\x8f\x98\x51\x98\x65\xd5\x0c\x9c\x9c\xf8\x08\x83\x20\ +\x5a\x05\x94\x90\x31\xd7\xb0\xa3\x72\xcd\x77\x1b\xa0\x3c\x79\xcf\ +\x81\x8a\x81\xd4\x11\x00\xff\x12\xc0\x87\x10\x36\x1d\x26\x9b\xc1\ +\xa9\x3b\x8f\xe1\xa9\x47\xef\xc5\xc4\xc8\x40\x68\xcf\x5e\xa1\x58\ +\xc3\xd9\x2b\x2b\xfc\xee\x30\x82\x85\x23\xa5\x87\x1a\x58\x6a\x87\ +\xbb\xb9\x49\xc8\x64\xc9\x06\x85\xaf\x35\x45\x79\x38\xfa\x63\xe7\ +\x15\x73\xc5\x7c\x1d\x85\xe9\x41\xbd\x0b\x21\x48\xc8\x30\x51\x21\ +\x56\xff\x32\x36\x2b\x51\x2c\x2b\xd3\xa4\x92\x48\xe3\x9a\x9a\xb2\ +\x9e\x82\xa3\x76\x00\x4a\x5b\x8f\x5d\x0a\x29\xe0\x3d\x06\x2a\x06\ +\x52\xf7\xc3\x99\x0e\x73\xbf\x49\x9f\x52\x8a\xde\x9e\x2e\x3c\x72\ +\xff\x9d\x78\xf8\xbe\xdb\x31\xd8\xdf\xc5\xc7\xbb\x9f\xbe\x75\x44\ +\x80\xa5\xb5\x32\xce\x5e\x5e\xf6\x77\x87\x01\xd4\x4e\x54\x76\x82\ +\xb2\x09\x58\xec\x76\xe9\x2a\x0b\x8b\x77\xa2\x9a\xad\x2c\xb6\x2c\ +\xfd\x32\xc4\x72\xa3\x4d\x37\x96\x4a\x2b\xac\xb9\xa8\xb8\x5e\xba\ +\xf2\x78\x5d\x12\x9a\x32\x3c\x6f\xb3\x42\xd8\x4c\xb7\xa8\x2f\x76\ +\x24\x38\x31\x81\x51\xac\x27\x3e\xdc\x0c\x6d\xd1\x8a\x12\x23\x29\ +\x14\x65\xec\x32\x68\xbd\x67\x40\xc5\x4c\x87\xf9\x20\x1c\x4b\xea\ +\x66\x93\x3e\xa5\x14\x23\x43\x03\x78\xfa\xb1\x7b\x71\xf7\x1d\x47\ +\xd1\xdb\x95\xf5\x62\xa0\x7a\xb9\x28\x80\xd9\xc5\x4d\xbc\x7d\x65\ +\xd9\x9f\x0e\xe3\xfb\x7a\x28\x14\x96\x51\x3c\x60\x39\x69\xf4\xbd\ +\x84\x4e\x38\x6f\x65\xe9\xa0\xe5\xa4\xd7\x2c\xa7\xe2\x0d\xdc\x0c\ +\xfe\x09\xea\xa7\xf7\x8b\xf3\xf9\x89\x2f\x01\xd1\xa7\xd2\xbe\x31\ +\x4d\xfa\x90\x64\xbd\xe8\x6f\x64\x2b\x60\xd2\x56\x23\xa6\xf5\xc4\ +\x87\xb7\x00\x28\x37\x1f\xc9\x7f\xb5\xcb\x00\xe5\xc9\x7b\x02\x54\ +\x2e\xa4\xf2\x00\x7e\x01\xc0\x3f\x81\xe3\x9b\xd2\x0a\xa5\x14\x07\ +\xf6\x8e\xe3\xd9\xa7\xee\xc7\xad\x37\x5f\x8f\x5c\x26\x25\xf4\x9a\ +\x05\x68\x21\xf0\xd6\x90\x5a\xc7\xbb\xd3\xab\xa8\xd6\x6d\xdf\xa0\ +\x60\xf7\xc9\x53\xf7\x0c\x82\x9b\xcb\xd7\x6e\x60\x39\x59\x28\x80\ +\xa4\x1b\xb1\x2e\x1d\x68\xf2\x57\xea\x69\xcc\x2e\xa5\x61\x24\x14\ +\x1c\xa3\xfb\x4d\x19\xe3\xf5\xa4\x46\x7c\x0b\xe3\x36\x81\x4c\xa3\ +\xea\xc3\x9a\x93\x51\xad\x27\x3e\x2e\x3a\xa0\x74\xf5\x8b\xd2\x23\ +\xb8\x9b\xe4\x9a\x07\x95\x0b\xa9\x41\x38\xbd\x7a\x7f\x0b\x21\xd3\ +\x61\x08\x80\x9b\x6f\x3a\x84\x67\x9f\x7a\x00\x87\x0f\xee\x41\x3a\ +\x25\x3b\xa0\xfd\x9e\x3d\x42\x51\xa9\xd9\x78\x77\x6a\x0d\x97\xe7\ +\xd6\x61\xdb\x54\xf9\x62\x52\x42\x39\xeb\xca\x49\xcb\xe6\x29\xfb\ +\xaf\xbc\xba\xf0\xf9\x78\xe1\xe1\xc0\x22\x2a\x08\x89\x15\x53\x0e\ +\x4e\x25\xd2\x2e\x38\xdc\xc5\x31\x48\x90\x6b\xc8\x1b\x11\xba\x00\ +\x12\x7f\x11\x8d\x2f\x15\xdb\x8b\xe9\x34\x96\xb9\xeb\xd0\x8c\xc4\ +\x06\x93\x10\xa1\xea\x16\xd8\x7a\x40\x39\x57\x4e\x5c\x61\x75\xb7\ +\x01\xca\x93\x6b\x16\x54\x8c\x3f\xea\x00\x9c\xf1\x51\x9f\x44\xc4\ +\xe9\x30\x4f\x3f\x7e\x1a\x7b\xc7\x87\x60\x59\xc2\xc6\x9e\xbe\x2e\ +\xdc\x35\xa4\xea\x38\x7b\x65\x19\xb3\xcb\x45\xf7\xa1\x71\xe6\xea\ +\xa9\xe6\xd6\x89\xbb\x10\xb7\x17\x58\x6e\xce\x0a\xd3\x88\xf3\x33\ +\x89\xf3\x07\x95\xad\x58\x65\xdf\x9e\x21\x4a\xdd\x0c\x16\x47\x4f\ +\xf2\x43\x1b\xda\xf8\xba\x10\x31\x3b\xad\x99\x26\xd7\x33\x42\x3d\ +\xe2\x81\x89\x3f\x8a\x03\x27\xee\x5b\x1b\x00\xc5\x25\xdc\xe5\x90\ +\x02\xae\x51\x50\x31\x90\x3a\x01\x67\xa4\xf9\xd3\x08\x99\x0e\xd3\ +\x95\xcf\xe1\xfe\x53\x27\xf0\xe8\x83\x77\x62\x64\xb0\x4f\x32\x8c\ +\xd8\x63\x02\x60\xb5\x50\xc1\x99\x4b\xce\x74\x18\xc2\x90\x84\x9d\ +\x58\xac\x5e\xe3\xbc\x8d\xc0\x72\x03\x9d\xa6\x18\x5f\x4b\xd5\x5a\ +\xec\xc1\xa1\x06\x2e\x4c\x5d\xbd\x5d\x65\x88\x46\x57\x3d\x4e\x4a\ +\x33\xf1\x8f\x88\x2f\x89\xe6\x56\x48\x0e\x15\x68\xf5\x8c\xee\x6b\ +\xaa\xc9\x85\x9a\xad\xb3\x38\x0e\xf9\xd6\xe0\x14\xa4\x31\xf5\x6a\ +\x36\xd3\x93\x47\x35\x27\xaf\xbe\x5e\xc9\x14\x9a\x6d\x13\x66\x3a\ +\xcc\x63\x00\xfe\x2d\x9c\xb9\x7b\x5a\xa1\x94\x62\xa0\xbf\x17\x4f\ +\x3c\x7c\x37\xee\xbd\xeb\x38\xfa\x7a\xf2\xb2\x53\x58\x18\x8e\x30\ +\xb7\x52\xc4\x19\x77\x3a\x0c\x81\x08\x05\x79\x62\xb1\x7a\x8d\xf3\ +\xe8\xc0\x72\xc2\x89\x12\x09\xec\xc8\x25\xee\xd1\x23\x12\xde\x04\ +\x53\x4a\x3e\x31\x0e\x4a\xa6\x41\x9c\x94\x49\x66\x1a\xbe\x2e\x05\ +\x47\xee\x32\xd4\x65\x10\x58\x6b\x52\x71\x4c\xa0\xce\xa8\xf2\xa7\ +\x05\xc4\xef\x25\x6c\x06\x4c\xb2\x4e\x7b\xac\x27\x55\xb9\x2a\x40\ +\x79\xbd\x7d\xba\xba\xab\xca\xdb\xa9\x72\x4d\x81\xca\x85\x54\x06\ +\xc0\x27\xe0\x6c\x06\x7a\xc8\xa4\x4f\x29\xc5\xe4\xf8\x30\x9e\x79\ +\xe2\x3e\x9c\x38\x76\x23\xba\x72\x69\x28\x7f\x69\xdc\xa0\x06\xa5\ +\xb8\x3a\xbf\x81\x77\xae\xae\xa0\x5c\x6d\x18\x96\x0b\xe6\x7b\xdf\ +\x74\xcd\x41\x20\x1a\xb0\xbc\xba\x3a\xe1\x7c\x46\xe2\x48\xf5\x80\ +\x45\x82\xaf\x49\x80\xad\xaa\x27\xcf\x5f\x6d\x41\x31\xba\x53\x89\ +\x0f\x15\xe0\x42\xa5\xb5\x57\xc3\x6f\x51\x6a\x99\x48\x24\x0a\xf0\ +\x87\x04\x61\x74\x30\x5a\x6b\x68\x3f\x9c\x54\x41\xb1\x00\x25\x64\ +\xa0\x2f\xa7\x75\xff\xdd\x76\xc9\x35\x03\x2a\x17\x52\x3d\x70\xd6\ +\x8f\xfa\xfb\x70\xd6\x93\x32\xca\xe1\xeb\xf6\xe1\x7d\x4f\xde\x8f\ +\x23\x37\xec\xe7\xa6\xc3\x70\x2f\x2c\xdc\xe9\x30\x75\x1b\xe7\x67\ +\xd6\x70\x61\x66\xcd\x99\x0e\x03\x38\x4d\x09\x61\xdb\x29\xd1\xba\ +\x72\xfe\x0d\xc6\x37\xb5\x0a\x2c\x1f\x37\x8c\xf3\x49\x1e\x0f\x6e\ +\xf2\x2f\x11\x55\x6e\x42\x4a\x2a\x99\x4b\x4a\xf7\x14\x65\xf5\xa3\ +\xc2\x2a\x4c\x8f\x46\x0b\x15\x78\x43\xc3\xf1\xc2\xf4\x0e\x9a\xf2\ +\x8f\x0f\x25\x59\xaf\x39\x38\x39\xf9\xb4\x0f\x50\xd4\xd5\x63\x71\ +\xbd\xdb\x00\xe5\xc9\xae\x07\x15\xe3\x8f\x1a\x03\xf0\x8f\x00\xfc\ +\x55\x00\x5d\x3a\x7d\x4a\x81\x54\x8a\xe0\xf8\xd1\xc3\x78\xe6\xf1\ +\xfb\xb0\x7f\xef\xa8\xb3\xd0\x9d\x4a\x17\xce\xd0\x81\x52\xa5\x8e\ +\xb3\x57\x56\x30\xb5\x50\xe0\x36\x0d\xa5\x80\x72\x73\x4f\x19\x32\ +\x01\xb0\x94\xfe\xab\x40\x45\x09\x2c\xc2\x9a\x45\x8c\x3a\x61\xac\ +\x2a\xde\x39\xae\x6a\x73\xc2\xe5\x9b\x30\x60\x41\x20\x95\x9c\x17\ +\x97\x5c\x3a\xa0\x5c\x4a\x9d\xc4\xb1\xb8\x84\x73\x84\xfa\xa5\x94\ +\x0f\x65\x0a\xf1\xd6\x57\x98\x25\x45\x63\xbf\xc4\x9d\x86\x93\x58\ +\x46\xe8\x75\x90\xa2\x03\x6f\xba\xba\x88\xdd\x43\xad\x5d\x0d\x2a\ +\x06\x52\x87\xe1\x0c\xe2\xfc\x08\x42\xa6\xc3\xe4\xdc\xe9\x30\x8f\ +\x3d\x7c\x0f\xc6\x86\x07\xe0\x4d\xd9\x53\xb9\x74\x9c\x2d\xd5\x1d\ +\xa7\xf9\xc2\x6a\x29\x08\x17\x5c\x3c\x4e\x58\x00\x2c\xd6\xba\xf2\ +\xf2\x71\x43\x02\x5b\x2d\x06\xb0\x28\x98\xe6\x15\xdb\x7b\x47\xdd\ +\x70\xde\x61\x15\xe8\x4b\xdd\x95\xac\xe3\x3d\x48\x10\xd5\xad\x2a\ +\x3a\xdc\x45\x72\x49\x2e\x21\x6d\x0e\xd1\x84\xc4\x7e\x8f\x34\xc3\ +\x1a\x7c\x46\x49\x13\x73\x98\x6f\x4e\xaf\x69\x54\x8b\x46\x6b\x83\ +\x85\xb9\xe9\xb8\x3c\x9b\xb7\x9e\xb8\x43\x2d\xa0\xe0\x99\x55\xbb\ +\x5e\x76\x2d\xa8\x18\x48\x9d\x82\xe3\x34\x7f\xc8\xa4\xcf\x4e\x87\ +\xb9\xff\xde\x13\x18\xe8\xed\x96\x7a\xc5\x00\xbe\xf3\x6c\x71\xb5\ +\x84\x37\x2f\x2d\x63\xb5\xe0\xec\x0e\x23\xf5\xc2\xb1\xd0\xf0\xc3\ +\xd4\xcd\x41\x20\xdc\xe1\xce\xa6\x71\xbe\x73\xa6\x9b\x0b\x46\xc1\ +\x23\xe4\x56\x82\x87\x6d\x90\xce\x33\x26\xbc\x96\x1c\x6f\xaf\xc9\ +\xe7\xc1\xbe\xe0\x44\x31\xa0\x4a\xf2\x9d\xab\x47\x7f\x72\xd7\x44\ +\x95\x5a\x39\x0e\x54\x4c\x41\xf4\x99\xa9\xb9\x41\x61\xe0\x09\xf7\ +\xc2\xab\xf4\xd8\xb0\x4e\x80\xc9\xc9\x37\x9a\xf5\x24\xd6\x57\x99\ +\xb7\x09\x50\x50\x39\xd2\xc3\xeb\xb7\x53\x65\x57\x82\xca\x85\x94\ +\x05\x67\x7f\xbd\x7f\x05\xe0\x16\x93\x3e\xa5\x14\xa3\xc3\x03\x78\ +\xf2\xd1\x7b\x71\xc7\x89\x9b\xd1\x93\xcf\x9a\x37\x6f\xa4\xc0\xf4\ +\x62\x01\x6f\x5d\x5e\x46\xb1\x5c\x0f\xde\x7b\xd5\xc4\x62\xc1\x12\ +\xd3\x35\x07\x9d\xf4\xae\x2a\xe7\x70\x77\x34\xb8\x1e\x42\xf7\xe5\ +\x67\x39\xe0\xe4\x2b\xd0\xcc\x77\x90\x53\xc1\x82\xa2\x92\x55\xe5\ +\xd7\x55\xdc\x89\x58\xf2\x9b\x9b\xfd\x52\x94\x4f\x1a\x5c\x30\xad\ +\x49\x16\x15\x62\x3a\x5d\xca\x47\x31\x87\x54\x91\x94\x50\x75\x38\ +\x15\x2a\x4e\xa4\x30\xa1\xd9\x48\x82\x9e\xb4\x28\x60\x32\x45\x35\ +\x05\x27\x45\x86\x71\x00\xa5\xab\xd7\x6e\x03\x94\x27\xbb\x0e\x54\ +\x2e\xa4\x72\x70\x76\x2a\xfe\x67\x00\xf6\x98\xf4\x29\xa5\x38\xb0\ +\x6f\x1c\xef\x7b\xe2\x7e\x1c\xbd\xe9\x10\x72\xee\xee\x30\xaa\xf9\ +\x77\x04\x40\xdd\xa6\xb8\x38\xbb\x86\x73\x57\xdd\xe9\x30\x42\x6f\ +\x99\x97\x27\xc0\x0f\x19\x08\x6b\x0e\x02\x08\xb1\xb0\x18\x00\x52\ +\x17\x3e\x84\x08\xb5\x83\x44\x0d\xce\xca\x13\xcf\x89\xa8\xbe\x32\ +\x16\x93\x44\x29\x65\x02\xa5\x48\xb6\x51\x78\xbb\x0f\xbc\x62\xf4\ +\x81\x99\x86\x77\x57\x88\x50\x34\xed\x14\xd4\x52\x77\xe5\x13\x1f\ +\x56\x94\xd3\x57\x5b\x35\xa6\xba\x84\x0d\x24\x55\xae\x90\x10\xa5\ +\x9c\x26\x00\x45\xa9\x02\xb6\x5e\xe4\xee\x19\x46\xb5\x7b\x40\xc5\ +\x34\xf5\x06\x00\xfc\x3a\x80\xbf\x0d\x67\xd1\x3b\xad\x10\x02\x1c\ +\xbd\xe9\x3a\x3c\xf3\xf8\x7d\x38\x74\x60\x02\x99\x94\xd7\xb3\xe7\ +\xf5\x80\x10\x66\x3a\x8c\xb3\xa5\xfa\xdb\x57\x57\x70\xc9\x9b\x0e\ +\x03\x80\x9d\x17\x27\xb9\x7c\x54\xf3\xf4\x9a\x06\x96\x4c\x4d\xdf\ +\x2e\x0a\xcc\x21\xa9\xb9\x25\x41\x14\x42\x93\x51\xaa\x0b\x94\x56\ +\x95\xa3\xce\x38\xc4\x99\x25\x3c\xa9\x9a\x91\x3e\x15\xe3\x3d\xef\ +\x24\xe4\x98\xc6\x82\x82\x2a\x77\xca\xba\xe0\x49\xc4\xc4\x3e\xe8\ +\x78\x2a\x7a\x79\xc9\x23\xe0\x85\xe4\xad\xc0\x49\x71\x82\x7a\x38\ +\x29\x8e\x54\x69\xa9\x06\x67\xbb\xd4\xa4\xda\x15\xa0\x62\x20\xb5\ +\x0f\xc0\x6f\x01\xf8\x59\x38\xcb\x07\x2b\x85\x52\x8a\x4c\x3a\x8d\ +\x3b\x4e\x1c\xc1\x13\x8f\x9c\xc2\xe4\xd8\x90\xb3\xd0\x9d\xac\xe9\ +\xc3\xaa\x50\xaa\xe1\xcc\xc5\x65\xcc\x2c\x15\x84\x1e\x35\xd7\x7a\ +\x72\xc7\x25\x01\x7a\xeb\xca\xd1\x77\x75\x34\xfe\x2b\x40\x06\x96\ +\x0f\x1d\xc6\x22\xf2\xea\x25\xba\x87\x03\xe7\x3a\xdb\x56\xe4\x94\ +\xf8\xe6\x1e\xd3\x63\xa8\x6a\xc2\x11\xe9\xc0\xe4\x94\x92\x2e\xb4\ +\x41\xb7\xd9\x9f\x6b\x22\x18\x5b\xd4\xcf\x4d\xd7\x71\x25\x5a\x51\ +\xaa\xc3\xe0\xc7\x49\x75\x1a\x3a\x32\xf2\x20\x61\xeb\x10\x69\xfa\ +\x8d\xa6\xc2\x22\x84\x94\xd5\x6e\xb6\x79\x47\xf9\xab\x61\x2a\x6b\ +\x37\x39\xda\x77\x3c\xa8\x18\x48\xdd\x0a\x67\x3a\xcc\xfb\xe0\xf8\ +\xa7\x94\xe2\x4d\x87\x79\xe0\xde\x13\x78\xf0\xbe\x3b\x30\xd4\xdf\ +\x0b\xcb\x52\xfb\x5b\xdc\x14\x58\x5e\xaf\xe0\x8d\x8b\x4b\xfc\x74\ +\x18\xc9\xf7\x44\xf5\xfb\xe4\x21\xba\xff\x0a\x08\x80\x05\xa2\xb6\ +\x8a\x58\xa8\xf8\x71\x94\x7f\x81\xfd\x43\xb1\x69\xea\x0f\x41\x60\ +\x22\x9d\x42\xa1\x1a\x7a\x10\xc0\x4c\x53\x17\x95\x55\x26\x5d\x41\ +\x12\x8b\x6f\x62\x6a\x5d\x2a\xca\x82\x53\x04\x87\x77\x44\x38\x65\ +\x3f\x86\x8a\xf7\xd1\x43\xbb\xe0\x8b\x62\x31\x28\xbe\xb3\x54\xc0\ +\x63\x14\x48\x69\x97\x6e\x89\xd1\xb4\xe3\xbf\x36\x07\x28\x4e\x41\ +\x6b\xcd\xed\x9e\xb6\xdf\x8e\x06\x15\x33\x1d\xe6\x61\x38\x3d\x7b\ +\x77\x9b\xf4\x29\xa5\x18\xec\xef\xc5\xe3\x0f\xdf\x8d\xbb\x6f\x3f\ +\x86\x5e\x6f\x3a\x8c\xf8\x62\x32\x69\x66\x97\x37\xf1\xe6\xc5\x65\ +\x6c\x14\xab\x8e\xcf\x89\xc2\xf7\x4b\x01\x62\x53\x2e\xb0\xae\x80\ +\x70\x60\xa9\xf2\xf0\xeb\x40\x34\xf6\x8d\x4b\x38\x76\x98\x83\xae\ +\xb5\xe4\x8d\xcb\x92\x7d\x6d\x7c\xb3\xcd\xec\x1e\x87\x40\x55\xa1\ +\xf9\x68\xc8\x5b\xca\x43\x7f\x68\x18\x0f\xaa\x19\x52\x10\xd5\x69\ +\xad\xd4\x23\x1a\xf4\xb8\xe5\x79\xbe\xa8\x50\xaf\xbb\x73\x01\xe5\ +\x15\x19\x02\x80\x85\x82\x49\x53\xc7\x38\x70\x52\x56\x4b\x88\xd0\ +\x18\x90\xe6\x7a\xed\x22\xd9\xb1\xa0\x72\x21\x95\x06\xf0\x13\x00\ +\x7e\x0f\xc0\x0d\x26\x7d\x4a\x29\xf6\x8c\x8f\xe0\xe9\xc7\x4f\xe3\ +\xd8\xd1\x1b\xd0\x95\xcb\x68\xba\xd2\x03\x27\xe3\xe5\xd9\x0d\xbc\ +\x75\x65\x19\x95\x6a\x83\xef\x89\x63\x96\x4f\x69\x27\xb0\x02\x67\ +\x37\x09\xac\x22\x16\x3a\x6c\x26\x4c\x3b\x50\xdc\x3e\x8b\x1b\x36\ +\x25\x5a\x3a\xc2\xd4\x99\xa0\x09\x6a\xa8\x2b\xc4\x30\xa2\x8d\xe4\ +\xd6\x53\x8f\xe1\x7c\xa7\x91\x02\x49\xd4\x94\x5a\x3d\x1d\xc4\x44\ +\x8b\x86\xb7\xc6\x98\xd4\x44\x7d\x2c\x8b\x00\xb0\xd0\xa6\x67\x18\ +\x9c\x14\x47\xc6\x3c\xcc\x80\xa2\x8c\x1a\x05\xdd\xb5\x80\xf2\x64\ +\xc7\x81\x8a\x69\xea\x75\x03\xf8\xeb\x00\xfe\x01\x80\xd1\xb0\x74\ +\x37\x5e\xbf\x0f\x4f\x3f\x7e\x1f\x6e\xb8\x6e\x1f\xb2\x69\xb7\x67\ +\x0f\x72\x33\x86\x10\xa0\x5a\xb7\x71\x6e\x6a\x15\xe7\xa7\xd7\x50\ +\x77\xa7\xc3\x28\xa7\xbe\x30\xce\x76\xb5\xef\x29\x1e\xb0\x94\x4e\ +\x73\xf7\x8d\xe1\x46\xbb\x0b\xcd\x30\x65\x0f\x1b\xd3\x7d\x4e\x98\ +\xf4\xe2\xba\xc1\x12\x84\xa8\xc6\x15\x25\x54\x5e\x6c\x4e\x8a\xc2\ +\x7b\xe4\x20\xbc\xf9\x08\x05\x97\x51\x87\xaa\x95\xb8\x57\x53\x01\ +\x39\xf1\x25\x96\x0a\xd3\xac\x9e\x20\x85\x6a\x3a\xfb\xd8\xa6\xa3\ +\x34\x62\x3c\xac\x03\x20\x22\x9c\x54\xd5\x57\x9d\x57\x18\xa0\x4c\ +\xf9\xef\x46\xd9\x51\xa0\x62\x20\x35\x02\x07\x50\x9f\x82\x03\x2c\ +\xa5\x50\x00\x29\x8b\xe0\xb6\x5b\x0e\xe3\xc9\x47\xef\xc5\xde\x89\ +\x51\x77\xa1\xbb\xe0\xf5\x64\x5f\x54\x6f\x4b\xf5\x33\x97\x97\x71\ +\x75\x61\xc3\x5f\x43\xca\x7b\x29\x95\xc3\x06\x84\xc5\xe9\xd4\xbe\ +\xa7\x70\x60\x01\xbc\x65\xc4\xef\xa2\x20\x4d\x6c\x61\x0a\x0b\x9a\ +\x78\xbc\x29\xe5\x7c\x91\xfc\x54\xbe\x8f\x9d\x5f\x1a\x98\x12\xca\ +\xe8\xca\x65\x99\x96\x75\xe1\x20\xa4\x18\x8d\x20\xa5\x88\xe3\xfa\ +\xd0\x30\x45\x15\xcf\xf6\xe8\x99\x06\x83\xba\x43\xcc\x15\x51\x8a\ +\x26\xa1\x60\x5a\x49\xcd\x41\x71\xa3\x50\xca\x94\xcf\xf8\xbf\xe4\ +\xa1\x0d\x68\x09\x4e\x9c\x56\x84\xe6\x9d\xe4\x5f\xd3\xa5\x61\x03\ +\x77\x8f\x8b\x6a\x67\x81\xca\x95\xeb\xe1\x34\xf5\x3e\x66\xaa\x1f\ +\x3b\x1d\xe6\x91\x07\xef\xc6\xc8\x60\x5f\xd0\xb3\xc7\xbd\xb5\xc1\ +\xdd\x58\x2d\x54\xf1\xc6\xc5\x45\xcc\xaf\x38\xbb\xc3\x38\x2f\xae\ +\xdc\xa4\x52\x0e\xcc\x0c\x69\x0e\x3a\x9a\x32\xb0\x48\x90\x91\x50\ +\x7f\xf0\x8e\x7b\x86\x44\xbe\x33\x9c\x30\x10\x65\xcf\x24\xf0\x80\ +\x0b\x67\x48\xd4\x0f\x9f\xe0\xd3\x62\xc3\xe4\xa4\x6c\x3d\xe4\xeb\ +\x20\x65\xaa\xbc\x39\x9a\x70\xd3\x8b\xc1\x75\xa9\xc9\x19\x85\xf9\ +\x60\xc4\xd7\x92\x2a\xf2\x13\x90\x23\x81\x45\xed\x3c\x67\x20\x26\ +\xea\x09\xb0\x62\x2d\xab\x30\x30\x01\xd1\xe0\x64\x3a\x77\x1d\x9c\ +\xf4\x79\xea\xcb\xd8\xe9\xb2\x23\x40\xc5\x58\x52\x77\xc1\x71\x9a\ +\x3f\x02\xc3\x63\x4d\x29\x45\x5f\x4f\x17\x1e\x7e\xe0\x4e\xdc\x7b\ +\xd7\x6d\xe8\xef\xed\xe2\x01\x02\x48\x34\x99\x5f\x2d\xe1\xf5\x0b\ +\x4b\x58\x2b\x54\x34\xd6\x11\xd7\x57\xe6\x96\xa3\x6e\x0e\x02\x31\ +\x80\x25\x52\xc6\x83\x8c\xae\xa9\xc7\xfa\xb1\xc0\x20\x83\xb1\x84\ +\xd8\x5d\x96\x59\x73\x4a\xe0\x1d\x53\xac\xdc\x25\x27\x01\xce\x7b\ +\xc7\x14\xac\x53\x0d\x8e\xe5\x5f\x68\xa1\xcf\x52\x67\xed\x98\xde\ +\x0b\xad\x1f\x48\xa3\xa8\xf4\x1d\x31\xf6\x12\x95\x82\xc5\x51\x52\ +\x72\x9e\x54\x15\xcc\x9b\x2d\xb2\xaf\x4b\x70\xaa\xfb\x46\x58\x13\ +\x70\x62\x14\x4c\x96\x50\x1c\x40\x51\xea\x7d\xd9\xdd\x8d\xc0\x6d\ +\x07\x15\x33\x1d\xe6\x19\x38\xc3\x0f\x8e\x9b\xf4\x29\xa5\x18\x1b\ +\x19\xc0\x93\x8f\xdc\x8b\xdb\x6e\xbd\x09\xdd\x8a\xe9\x30\x1c\x17\ +\x6c\xe0\xea\xc2\x06\xde\xbc\xb4\xe4\x4e\x87\x21\xdc\x8b\xc7\xfb\ +\x9e\x02\xeb\x0a\xd0\x37\x07\x9d\x7a\x68\xfc\x57\x6e\x42\xde\x0f\ +\xa4\x68\xda\xb1\x4e\x6e\xb6\x55\xc5\x36\xcd\x3c\x87\x3b\x00\x71\ +\x78\x02\xe7\xef\xe6\xac\x21\xf8\x95\x08\x8a\x67\x9b\x4a\x01\x61\ +\xa9\xd8\xd4\xd3\x18\x64\xec\x35\xe1\x4e\x4b\x21\xfc\x8f\x44\x88\ +\xb2\x78\x3d\x22\xe9\xa9\x87\x0c\x04\x07\xea\x1e\x3f\xea\x11\x9e\ +\x49\x15\x64\x45\xfc\xa6\xaf\xe4\x6c\xa7\x22\xaf\x44\x42\xaa\x88\ +\xc9\xd4\x4f\x73\x5e\xad\xc2\xc9\x49\x16\xc5\x82\xa2\x1e\xa7\x76\ +\xb5\x6c\x2b\xa8\x5c\x48\x65\x01\xfc\x0c\x80\xdf\x86\x33\xa0\x53\ +\x2b\x94\x52\x1c\xda\x3f\x81\xa7\x1f\xbf\x0f\x37\xde\x70\x10\xb9\ +\x4c\xca\xb8\x0c\x52\xbd\x61\xe3\xfc\xf4\x1a\xde\xbe\xba\x82\x5a\ +\xdd\x66\x9a\x30\xf2\xae\x30\xa2\x75\xe5\x84\x85\xac\x84\xa0\xf0\ +\x5f\x01\x81\x2f\xc5\xb7\x6e\x24\xa8\xf0\x26\x96\x07\x3d\xd1\x22\ +\x0a\x44\x26\x08\x07\x3e\xce\x8a\x12\x56\x66\x20\xbc\xe5\xc4\xf2\ +\x91\xaf\xb5\x93\x40\x67\x55\x81\xe9\x14\x30\xde\x23\xc5\x41\x5c\ +\x57\x88\xa1\xd1\xa3\x1d\x45\x10\x58\x9d\x72\x32\x39\x8c\xf7\x3d\ +\x51\x21\x8c\x7d\xd1\xd9\xe6\x60\x10\xce\xa3\x90\x32\xf0\x64\xf7\ +\x61\xd4\xee\x94\x4c\x8d\x67\x18\xc9\xf7\x64\x4c\xc6\x58\x7b\x06\ +\x04\x86\xc4\xec\x2c\xd9\x36\x50\xb9\x90\xea\x07\xf0\xab\x00\xfe\ +\x0e\x9c\xa9\x31\x5a\x21\x84\xe0\x96\x23\x87\xf0\xd4\xa3\xa7\xb1\ +\x7f\x5f\x30\x1d\x46\x39\x67\x8f\x00\xe5\x6a\x03\x6f\x5d\x5a\xc6\ +\x45\x77\x3a\x0c\x6f\x1d\x31\x7e\x18\x06\x40\xb2\x65\xa4\x6e\x0e\ +\x7a\xfa\xaa\xe6\x20\xd7\xb3\xe7\xc3\x47\xb4\x86\xc4\x5e\x3d\x91\ +\x4e\xcc\xa4\x62\xf0\xf6\x18\x85\x02\x16\xa2\x73\x9d\xad\x82\x96\ +\x3c\x4c\x75\x04\x47\xb9\x09\x2c\xc1\x42\x35\x52\xe1\xaa\x16\xa6\ +\x21\x9f\xc0\xfa\xd2\xbf\x2c\x8a\x1e\x3f\x6a\xd2\x55\x37\x0b\x7d\ +\x63\x8a\x05\x11\xa7\x13\xe1\x75\x0d\xfc\xe5\x90\x66\x3e\x07\x05\ +\x48\xb9\xb5\x03\x4e\x4e\xf2\x10\xeb\x89\x39\x90\x3a\x0b\xa2\x58\ +\x75\x3b\x5c\xb6\x05\x54\x2e\xa4\xf6\x00\xf8\xa7\x00\xfe\x12\x9c\ +\x49\xc6\x4a\xa1\x94\x22\x93\x49\xe3\xae\x13\x47\xf0\xc8\x43\xa7\ +\x30\x36\x32\x80\x94\xb0\x3b\x0c\x0b\x0f\x42\x80\x8d\x62\x15\xaf\ +\x5f\x58\xc2\xcc\xe2\xa6\x1b\x01\x49\x9f\x08\x8e\xa5\x38\xcd\x41\ +\xb1\x4c\xd6\x96\x92\xc1\xc9\xbf\x6c\xaa\xe6\x1f\x6b\x7d\x05\x4c\ +\x0b\xc6\x43\x11\xa9\x82\xbc\xcf\x8a\x7d\xeb\x45\x90\x51\x76\xe8\ +\x02\x5b\xac\x0b\x4c\xa9\x3e\x80\xba\xd7\x92\x37\xc3\xe4\x73\x61\ +\x2f\x83\xfa\x90\x93\x60\x38\x05\xc3\x8c\xd0\x37\x87\x6f\xba\xc9\ +\x65\x11\x09\x3e\xfc\x21\xef\xf0\xf6\x83\x55\x90\x11\xfc\x51\x1c\ +\x66\xa8\x98\xaf\xe0\xa7\x62\x14\x1c\x3e\xd2\xb6\xc2\x49\x3e\x2f\ +\xb9\xa9\x6b\xba\x01\x94\x7f\xf4\x77\x85\x6c\x29\xa8\x18\xa7\xf9\ +\x51\x38\xfe\xa8\xf7\x23\x64\xa1\xbb\xee\xae\x1c\x1e\x38\x75\x02\ +\xf7\xdd\x7b\x3b\x06\xfa\x7a\x60\xf9\x93\x67\x64\x6b\x07\x14\x58\ +\x5c\x2f\xe3\xb5\xf3\x0b\x58\x5a\x2f\x07\xbd\xf9\x8a\x89\xc5\xf2\ +\x66\x9d\xd1\x9b\x83\x6c\x99\x3e\x3f\xd4\x04\xe2\xac\x37\x55\x8b\ +\x4e\x32\x63\x14\xbe\x28\xe5\xd0\x05\xc8\x73\xf7\xb4\x9d\x00\xfe\ +\x39\x28\x7a\x1f\x15\x55\x51\x54\x52\xb6\x20\xa0\x81\x55\x98\x68\ +\x9b\x6e\x2a\x09\x1f\xa9\xae\x07\x9c\xec\x3b\xf2\x61\xc6\x9a\xd7\ +\xec\xc9\xb3\x56\x0f\x6b\x25\xb1\xd6\x94\xd8\x14\x64\x8b\x61\x7c\ +\x5e\xfc\x70\x05\xd1\xf9\xa5\x3f\xa5\xc8\x7b\x0a\xea\x00\x25\x14\ +\xe3\xad\x49\x45\x95\x17\x72\xf7\x90\x6a\xcb\x40\xc5\x40\xea\x21\ +\x38\x3d\x7b\xa7\x4c\xfa\x94\x52\x0c\x0d\xf4\xe2\xf1\x87\xee\xc6\ +\xc9\x13\xb7\xa0\xa7\x2b\x07\x4b\xf3\x13\xee\xc1\x63\x7a\xb1\x80\ +\xd7\x2f\x2c\x62\xa3\x54\xe3\x74\x4d\x13\x8b\xa3\x34\x07\x3d\xab\ +\xc5\x5f\xa3\x08\x80\x4d\xf9\x87\x8f\xba\x75\x66\x97\xd5\x60\x9b\ +\x82\xc4\xcd\x90\x10\x67\xec\x57\xca\x22\xee\x20\x50\x0f\x43\x84\ +\xd1\x87\x5f\x49\xb5\x2f\xca\xed\xa5\xe3\x9c\xf6\xfa\x26\x98\xd6\ +\xaa\xf2\x5f\x23\xf5\x03\xcb\x5d\x5d\xa2\xce\x5c\xfd\xe3\xac\xeb\ +\xf6\x83\x16\x38\xea\xb2\xc5\x73\x92\x5f\x76\xe6\x72\x48\xf4\xe3\ +\x21\x26\x13\x42\xb6\x4a\x54\x40\x11\xfd\x51\x41\x18\xaf\x23\x94\ +\x4f\x83\x4f\xd6\x07\x16\x17\x4e\xea\x7a\xea\xad\x27\xbd\xe5\xb6\ +\x9b\x1a\x7a\xb2\x6c\x09\xa8\x5c\x48\xa5\xe0\x2c\x15\xfc\x2f\x00\ +\xdc\x68\xd2\xa7\x94\x62\xef\xe4\x08\x9e\x7a\xf4\x34\x6e\xbe\xe9\ +\x3a\xe4\xdc\xe9\x30\xbc\x85\x13\xe8\xdb\xb6\x8d\x8b\xb3\xeb\x38\ +\x73\x29\x98\x0e\xa3\xf2\x5d\x99\x26\x16\xab\x9a\x83\xb6\x4d\x61\ +\x53\x8a\x86\xed\xfc\xd9\x0d\x1b\x75\x9b\xa2\xd1\xb0\x51\x6f\x50\ +\xd4\x6d\xdb\x85\x53\xf0\x8c\x52\xcf\x39\xce\x64\xee\x35\xc5\x08\ +\x3c\x78\x11\x58\x84\xc0\xb2\x9c\xbf\x94\x45\x90\x4e\xa5\x90\x49\ +\x5b\xc8\xa4\x09\xd2\x96\x85\x54\xca\x42\x3a\x6d\x39\x03\x58\x09\ +\x11\x9a\x73\x94\xf7\x85\x05\x06\x9c\xd0\x5b\x68\xf8\xc5\x64\xd2\ +\xf3\x4d\x5d\xdd\x4d\xd1\x3b\xb0\xb4\x76\x9a\xca\x84\x54\x99\x05\ +\xba\xea\x41\x7c\xc7\x64\x00\xf2\x3e\x72\xb9\xe9\x17\x30\x84\xc9\ +\x51\xd9\x71\x17\x60\x8a\x6a\xca\xa0\x8c\x6e\x90\xce\xbb\x23\x72\ +\x0a\xbd\xc5\x15\x1f\x4e\x7c\x29\xaa\x38\x21\x8a\x83\xda\xee\x77\ +\x52\x75\x1c\x54\x2e\xa4\xba\xe0\x6c\xba\xf0\x8f\xe0\x6c\xc2\x60\ +\x94\x9b\xae\xdf\x8f\xa7\x1e\x3b\x8d\x83\x07\xf7\xf8\xd3\x61\x3c\ +\x61\x5f\x2a\x42\x80\x4a\xdd\xc6\xdb\x57\x56\xf0\xee\xd4\xaa\x33\ +\x1d\x46\xbb\x85\x95\x97\x3e\xb0\xae\xbc\xf7\xc6\x01\x0d\x45\xbd\ +\x61\xfb\x7f\xb5\xba\x8d\x6a\xdd\xf9\xee\x01\xcb\x83\x12\x27\x8c\ +\x9f\x27\xb0\x9e\x28\xd3\xa2\x23\x3e\x5d\x89\xaf\x44\x85\x7a\x11\ +\x10\x52\xf3\x75\x2c\xcb\xf2\x01\x96\x49\x5b\xc8\x66\x52\xc8\x65\ +\x52\xc8\xa6\x53\xc8\xa6\x2d\x64\xd2\x4e\x3c\x6f\x61\x32\x6f\x83\ +\xc2\x77\x2e\xfb\xc7\x08\xeb\xd7\x57\x28\xea\x2d\x34\x28\x92\x70\ +\x97\x44\x17\x21\x06\x08\xc0\x30\xfa\xc9\x25\x25\x73\x62\xaa\xb2\ +\x72\xbc\x74\x54\x6e\x52\x52\xc9\x4a\x0a\x74\xb9\x12\xc3\x06\x42\ +\x89\xf5\x50\xf8\xb0\xa2\x0e\xcc\x74\xbe\xc6\xb3\x9e\xa8\x7c\x62\ +\x6a\x3d\xec\x2e\xe9\x28\xa8\x5c\x48\x0d\x03\xf8\xbf\x01\xfc\x0a\ +\x9c\xed\xac\x94\x42\x29\x90\x4e\x59\xb8\xed\xd8\x61\x3c\xfe\xf0\ +\x29\x8c\x8f\x0f\x23\x9d\xb2\xf4\x99\x13\x60\xb3\x5c\xc7\x1b\x17\ +\x96\x70\x65\x61\x3d\x18\x2a\x14\xba\x85\x15\x1c\x2b\xa9\xe1\x80\ +\xa8\x5a\x6b\xa0\x5a\x6f\xa0\x56\x77\x80\xd4\xb0\x69\xa4\xb5\x86\ +\x00\xc6\x52\xe2\x80\x83\xa0\x6c\xb6\x1e\x5c\x13\xd0\xd7\x16\x5c\ +\x54\x2e\x3c\x29\x45\xa3\x41\xd1\x68\x00\xd5\x7a\x03\x9b\xe5\xba\ +\x0b\xb0\x00\x5e\x5d\xb9\x0c\xba\xb2\x29\xe4\xb3\x69\x64\x5d\x70\ +\x11\x61\x20\x29\xdf\x6c\x13\xbb\xe4\x64\x5f\x85\xce\xa0\xd2\x6f\ +\xdd\x25\xdd\x92\x58\xa2\x5b\xce\xca\xf8\x1a\xab\x78\x22\x24\x36\ +\x70\x83\xb9\x2a\xa2\x55\xe4\x1c\x50\x71\x19\x18\x22\x36\xd9\x98\ +\xa6\x20\x55\xe8\xb8\xbe\x2d\x1e\x30\xaa\x6e\x48\xa1\x7e\xed\x84\ +\x93\xe9\x9a\x87\x6a\xec\x4c\xe9\x08\xa8\x18\x7f\xd4\x21\x38\x1b\ +\x81\x7e\x02\xce\xc6\xa0\x4a\xa1\x94\x22\x9f\xcb\xe2\xde\xbb\x8e\ +\xe1\x81\xd3\x77\x62\x70\x20\x98\x0e\xa3\x7a\x79\x08\x80\x95\x8d\ +\x0a\x5e\x3b\xef\x4c\x87\x61\xfd\x14\x7e\x0f\x19\x00\x6f\x0a\x8a\ +\x6d\xd3\xc0\x4a\xaa\x35\x50\xa9\x35\x50\x6f\xd8\x68\xd8\x76\xd3\ +\xb3\x08\x3a\x05\x29\xd6\x15\x24\x0e\xc6\x74\xac\x3e\xa0\xde\x68\ +\xa0\x54\x6d\x80\xc0\x81\x7b\x36\x93\x42\x57\x2e\x8d\x7c\x36\x8d\ +\x7c\x26\x85\x4c\xc6\x72\x7c\x60\xba\xa6\xa1\x1f\x26\x0f\x8c\x50\ +\x9b\x43\xe1\x08\x32\x6a\xa8\x08\x47\xf9\xf1\xec\x86\x06\x0a\x73\ +\x01\x94\x0d\x3e\xb9\xba\xba\xb7\x3a\xca\x02\x79\xda\xb3\x0b\xc0\ +\x46\x29\x41\xf8\x83\xa3\x5a\x1e\xc6\x2b\xce\x85\x5d\x44\x38\xe9\ +\x6a\xa8\x03\x94\xc6\x55\x26\xe7\xbd\x7b\x7c\xe9\xed\x07\x15\x03\ +\xa9\x3b\x00\xfc\x1b\x00\x8f\x9b\x2e\x09\xa5\x14\xfd\xbd\xdd\x78\ +\xf8\xfe\x3b\x70\xf7\x1d\xc7\xd1\xd3\x93\x77\x9b\x34\x14\xba\x65\ +\x80\x67\x97\x37\xf1\xda\xf9\x45\x67\x77\x18\xcf\xe1\xcc\xbc\x8c\ +\x9e\x45\x52\xad\x3b\x50\xaa\x54\x3d\x30\xb5\xe7\xf7\x84\x08\x16\ +\x5b\xcb\x90\x12\xf3\x63\x21\x45\x18\x90\x71\xc7\x8e\xd4\x6d\x8a\ +\x7a\xa5\x8e\x62\xa5\x0e\x8b\xb8\xe0\x4a\x07\xe0\xea\xca\x39\xbe\ +\x2f\x2b\x68\xa0\x82\x2f\x4c\xbc\x1f\x7c\x9d\xc4\x38\x4d\x94\xc6\ +\xa9\x2e\x24\x34\x5d\x53\x21\x1f\xad\x12\x65\xb5\xf9\x14\x54\xcc\ +\x4d\x1a\xef\x44\x24\xa7\x3b\xdb\xbb\x27\x32\x4b\xb9\x2a\x82\xe4\ +\xb0\x97\x4d\x38\x7e\x9a\x8d\x94\x01\x53\x1f\x85\x2b\xa1\x49\x38\ +\xa9\x2e\x33\x75\xeb\x17\xc3\xe0\xda\xb1\xd2\x56\x50\x31\x0b\xdd\ +\x3d\x0d\x67\xf8\xc1\x09\x93\x3e\xa5\x14\xe3\x23\x83\x78\xe2\xd1\ +\x53\x38\x76\xf4\x46\xe4\x73\x19\xb5\xdf\xc5\xed\xad\xa3\x94\xe2\ +\xf2\xdc\x3a\xde\xb8\xe0\x4c\x87\xb1\x98\x5f\xff\x86\x0d\xd4\xea\ +\x4e\x33\xae\x5c\x75\x9a\x72\xad\x58\x4c\x3a\x21\x2a\x08\xb5\x0b\ +\x52\xac\xbe\x7b\xac\xb4\xb6\xdc\x74\x2a\x4b\xa8\xde\xa0\xa8\x37\ +\x5c\x70\x59\x40\x26\xe5\x40\xab\x3b\x9f\x41\x77\x2e\xed\xfb\xb7\ +\xc4\xab\xac\x83\x93\x74\xfe\x21\xf1\xcd\xfe\x50\x87\xdd\x26\xfd\ +\x7d\x54\x5b\x37\xe2\x02\x77\x7c\x41\x8a\x70\x25\xdc\xe4\x35\xd4\ +\xfd\xa6\x1f\x03\x4d\xb1\xb9\xc8\x9f\x4f\x90\x07\xc7\x33\x65\xef\ +\x61\x7b\xe0\xc4\x1d\x79\xa6\xaa\xb6\x3b\x70\x77\xd0\xab\x6d\xa0\ +\x72\x21\x95\x01\xf0\x49\x00\xbf\x03\xe0\x40\x58\x9a\xeb\x0e\x4c\ +\xe2\xa9\x47\xef\xc5\xf5\xd7\x1d\x40\xc6\x9d\x0e\xa3\xfa\x65\x26\ +\x70\xb6\x54\x7f\xe7\xea\x0a\x37\x1d\xa6\x6e\x53\xbf\x29\xe7\x35\ +\xe7\xec\x36\x59\x4d\x2a\xe1\x81\xe4\xfc\x43\x14\x0a\x61\x90\x22\ +\x8c\xbe\xce\x8a\x0a\x3e\x0c\x69\x82\x68\xee\x8a\xb1\xe3\x42\xab\ +\x75\x1b\xd5\x7a\x15\xeb\xc5\x2a\x32\x69\x0b\xf9\x6c\x1a\x3d\xf9\ +\x34\xba\x73\x69\x64\xd3\x29\x1e\x5a\xcc\xc8\x6d\xe5\x54\x19\xa2\ +\x7a\xbd\xb5\x7d\x7e\x62\x52\x43\x7c\x04\x8b\x8b\x18\x5e\x58\x89\ +\x55\x41\x67\x86\x1e\x02\x9a\xd5\x0e\x04\x63\x88\x28\xf5\x84\x02\ +\xa9\x08\x1c\x39\x9e\xb2\x3f\xba\x6e\xfd\x3c\x58\xd1\x50\x00\xc5\ +\x01\x94\xc1\x99\x15\xf9\x6a\xef\x3c\x69\x0b\xa8\x5c\x48\xf5\x01\ +\xf8\x9b\x00\xfe\x1e\x80\x41\x9d\x2e\x05\x60\x11\x82\x63\x47\x0e\ +\xe1\x89\x47\xee\xc5\xe4\xe4\x58\xb0\x3b\x0c\xf3\x73\xec\x7d\x25\ +\x04\x28\x55\x6a\x78\xf3\xe2\x32\x2e\xce\xac\xa1\xe6\x3a\xc1\x2b\ +\xd5\xba\x0f\xa7\xad\x58\xad\x42\x9c\x1a\x23\x41\xa8\x8d\x90\x62\ +\xc1\xc3\x8f\xab\x12\x36\x0e\x15\x9c\xe4\xe2\x88\x78\x91\x35\xb5\ +\xba\x8d\x5a\xbd\x8a\x42\xa9\x86\x74\xca\x42\x3e\x9b\x42\x8f\x6b\ +\x69\x65\x33\xbc\xa5\xa5\x5c\x21\x4b\x70\x5b\x11\x29\xd0\x78\x05\ +\x63\xc6\xf1\x84\xa1\x3a\x7d\xc5\xd8\x24\xaa\xa0\x94\xae\x81\x18\ +\xb8\x9b\x14\xe7\xc1\x36\xcd\x18\xf6\x68\x8d\x35\x36\x4c\x60\x17\ +\x91\x4b\x0e\x8e\x88\xd7\xf3\xac\xba\xd0\xdc\xa9\xea\xae\x10\x44\ +\x40\x51\x26\x0d\xd5\xe9\x53\xb2\x6b\xa8\xd5\x32\xa8\x5c\x48\x4d\ +\x00\xf8\x27\x00\xfe\x32\x9c\xa1\x08\x4a\xa1\x94\x22\x9b\x49\xe3\ +\xae\x93\x37\xe3\xe1\x07\xee\xc6\xd0\xd0\x80\xbc\x3b\x0c\xdb\x76\ +\x20\xc0\x5a\xa1\x8a\x97\xcf\xcd\xe3\xd2\xec\x3a\xca\x55\xa7\x69\ +\xb7\x55\x70\xf2\x84\x5b\x76\x65\xab\x20\x25\x34\xf5\x38\x0b\xc7\ +\xe8\xb7\x52\x00\xce\xaf\x56\x10\x58\x6f\xd8\x28\x94\x6c\x6c\x96\ +\x05\x68\xe5\x33\x4e\x2f\xa2\xc6\xa2\xd2\xdd\xaa\x30\x69\x66\x29\ +\x5c\xdd\x48\x04\xc5\xcd\xd1\x38\xca\x85\x84\x8c\x7f\x4b\xf6\x3f\ +\x05\x24\xf2\xb8\xa5\x36\x6a\xf8\x79\xa3\x54\xf2\x5c\xcb\xa4\x60\ +\xf9\xc3\x2f\x0b\x43\x85\x72\x9a\x68\xda\x09\x81\xba\x16\x1e\x35\ +\x6b\xec\x78\x69\x1a\x54\x8c\xd3\xfc\x08\x9c\xdd\x8a\x3f\x88\x90\ +\xe9\x30\x3d\xdd\x79\x3c\x70\xef\x09\x9c\xba\xeb\x04\xfa\x7a\xbb\ +\xfd\x5f\x70\xe9\x81\x77\xaf\xe5\xd4\x62\x01\x3f\x78\x63\x06\xd3\ +\x4b\x9b\x1d\xf1\x37\x45\x17\x95\x75\xe3\x7e\xc4\x82\x94\xa1\x67\ +\x4f\xab\x13\xd5\x8a\xd2\x00\x4a\x01\x1c\x3e\x0b\x82\x7a\x83\xa2\ +\x50\xaa\x63\xb3\x5c\x47\x3a\x55\x41\x57\xce\x6b\x1e\x66\x90\x4e\ +\x59\x81\x2f\x90\xf2\x3e\xb6\xf6\x08\x6d\x3a\x3a\x00\x80\xe9\x35\ +\x64\x9a\x56\x9c\x95\x43\x64\x67\x36\x21\x01\x78\x7c\x27\xbb\x93\ +\xab\xb4\x24\x8c\x7f\xc8\x98\x5a\x6e\x1a\x31\x9e\x70\x43\x17\xc4\ +\x3b\xa1\xf3\x5f\xe9\x2e\x41\x38\x9c\x38\x76\xfa\xf0\x54\x34\x09\ +\xdb\x7a\x1f\x3b\x2b\x4d\x81\x8a\x81\xd4\xfd\x70\xa6\xc3\xdc\x67\ +\xd2\xa7\x94\x62\x78\xb0\x0f\x8f\x3f\x74\x37\x6e\xbb\xf5\x66\xe4\ +\xf3\x59\x66\xce\x9e\xab\xc3\xe8\xd6\xea\x36\xde\x9d\x5a\xc5\x0f\ +\xce\xcc\xb8\x0b\xdd\x6d\xdf\x15\x35\xf7\xf0\xf1\x56\x4e\x3c\x48\ +\x45\x70\x9a\x9b\x20\x45\xd4\x75\xe2\xab\x43\x14\x61\xe2\xd9\x70\ +\x87\xa8\x37\x6c\x6c\x14\x9d\xe6\x61\xc6\x83\x56\x57\x06\xdd\xd9\ +\x94\x33\xae\x8d\x50\xc5\xb3\xde\xca\xfd\x51\xf9\xb8\xa8\x3a\x5a\ +\x7a\xd7\xa8\x32\x37\xb1\x67\x8f\x57\xd7\x0d\x5d\x90\x72\x50\x0b\ +\xeb\xb7\xf2\xd3\x09\xc0\x51\x4c\xaf\x0a\xaa\xc4\xc0\x90\xfa\xf6\ +\x99\x3a\x1f\xd5\x79\x1a\x5c\x50\xca\xa5\x6f\x84\xd3\xd6\x5f\xb9\ +\x9d\x2d\xb1\x41\xc5\x2c\x74\xf7\x61\x38\xd3\x61\x6e\x36\xe9\x53\ +\x4a\xb1\x6f\xcf\x28\x9e\x7a\xf4\x5e\x1c\xbe\xe1\x10\xb2\x99\xb4\ +\xf3\x0b\x4d\x01\x7f\xa2\x2f\x85\x33\x4d\xa5\x61\xa3\x52\x6b\xe0\ +\xcc\xa5\x65\xbc\x72\x6e\x1e\xa5\x4a\x63\x9b\x21\xe5\x7e\x32\xff\ +\x10\x01\x42\x81\x5e\x07\x21\x45\x78\x28\x9a\xac\x28\x25\xa0\x04\ +\x7d\xfe\x9c\x84\x73\x66\x02\x6b\x0d\x1b\xb5\x62\x15\x1b\xa5\x2a\ +\xb2\xe9\x14\xba\x5d\x4b\x2b\x9f\x4d\x23\x95\x22\x0c\xa4\x14\x3f\ +\xd3\x0a\x67\x76\xe4\xeb\xce\xf9\xa0\xe4\x66\x63\x50\xa2\xc1\x17\ +\xe5\xf6\xcc\x48\x0b\xe8\x79\xa9\x45\x07\x3c\x11\xc7\x35\x09\xff\ +\xba\xff\x50\x0d\xc7\x38\x18\x68\x74\x18\xa3\x2c\x68\x46\x08\x3e\ +\x36\x0a\x05\xaa\x62\xc1\x89\xa9\x37\x35\xb3\x79\x37\x49\x2c\x50\ +\x31\xd3\x61\x7e\x01\xc0\x3f\x86\xe3\x9b\xd2\x0a\x01\x70\xe4\xf0\ +\x01\x3c\xf1\xe8\xbd\xd8\xb7\x77\x12\x99\xb4\xbb\x86\x94\xfb\x8f\ +\x6d\x3b\xf3\xe5\x1a\x0d\xe7\x21\x29\x57\xea\x78\xf5\xfc\x02\xce\ +\x5c\x5a\x66\x16\xba\xdb\x1e\xd1\x3a\xcf\x01\x48\x51\xa1\x3e\xa9\ +\x70\x00\x71\xb0\x21\x44\x5d\x0f\xf0\xd0\x09\x6b\xe6\x49\x40\xe3\ +\xb3\x62\xee\x93\xbe\x39\x47\x00\x80\xc2\x19\xc1\x5f\x6b\xb8\xbd\ +\x87\x29\x74\xbb\x3d\x87\xf9\x6c\xda\x1d\x5c\x2a\x48\xac\xb7\xc2\ +\xd0\x0f\xa8\x00\x9e\xec\x3b\x12\x94\x38\x9f\x0c\x11\x03\xe0\x58\ +\x35\x62\x4e\x2a\x77\x37\xd1\xea\xb0\x68\xe4\x7d\x5a\x7c\x3c\xe5\ +\x76\xad\x11\x46\xb4\x8b\x5d\x8c\x5c\x42\xfd\x65\x34\xc1\x49\x17\ +\xbf\x9b\x21\x05\xc4\x00\x95\x0b\xa9\x21\x38\xbd\x7a\x7f\x03\x4e\ +\x2f\x9f\x52\x28\xa5\x48\xa7\x53\x38\x79\xeb\x8d\x78\xf4\xc1\xbb\ +\x31\x32\x32\xec\xee\x0e\xe3\xc4\x35\xdc\x91\xe2\xb6\x4d\xfd\xe9\ +\x2d\x1b\xc5\x2a\x5e\x38\x3b\x87\x0b\x33\x6b\x9a\x35\xba\xb7\x5a\ +\x78\x80\x70\x2f\x39\xe7\x97\x8a\xe3\x38\x6f\x1e\x52\x46\x2b\x2a\ +\xa4\x89\xa7\x02\x94\x7e\x83\x51\xf6\x40\xbe\x09\x36\x85\x3f\x1c\ +\x64\x7d\xb3\x8a\x6c\xda\x42\xb7\x3b\x4e\x2b\x97\x49\x39\x9d\x23\ +\x21\xad\x27\xdd\xb5\x0e\xc4\x64\x8e\x88\xe1\x0a\x38\x39\xee\x27\ +\x1e\x3b\x82\xc5\xc4\x0f\x77\x80\x34\xee\x2a\x68\x9d\x89\x4e\x76\ +\xbe\x59\xa7\xb4\x28\x29\x9f\x47\xa0\x25\x3b\xf7\x83\x2c\xe4\x61\ +\x0a\x26\xbf\x95\xa8\xa1\x83\x13\xa5\xe6\x5b\xb1\x5b\x00\x16\x09\ +\x54\x2e\xa4\x7a\x01\xfc\x2e\x80\x5f\x84\xb3\x7c\xb0\xfa\xc4\xdd\ +\xe9\x30\xa7\xef\xbe\x15\xf7\x9d\xba\x1d\xfd\xfd\xbd\xb0\x08\xf1\ +\xa7\xb1\x34\x6c\xca\x8d\x75\x22\x04\x58\x58\x2d\xe1\x87\x6f\xcd\ +\x62\x66\x69\x73\xbb\xaf\x87\x5b\x27\xd9\x2f\xa5\x77\x9e\x33\xe9\ +\xe4\xae\xba\xe8\x90\x32\xf8\xa3\xa2\x5a\x51\x91\x01\xa5\x83\x93\ +\xce\xf1\xae\x09\xb0\x29\x45\xb9\xd6\x40\xb9\xd6\xc0\x6a\x31\x68\ +\x1e\x76\xe7\xd2\x3c\xb4\x3c\xa1\x8a\xbc\x94\xbe\x13\xa1\x54\xe3\ +\x9a\xe2\x8a\x71\x48\x54\x61\xf7\xa8\xbb\xf0\x82\x23\x9d\xb3\xdc\ +\xbb\x2e\x8c\xc3\x5c\xde\x32\x4b\xdc\x8c\x94\x8d\x57\xcf\xfb\xd3\ +\x2d\x17\x43\x79\x7a\x69\xfd\x4e\xf2\x39\x09\xb1\x9c\x63\x4c\x83\ +\xa3\xdd\x42\x29\x44\x00\x15\xe3\x38\xff\x38\x9c\xd5\x38\x8d\x90\ +\xea\xef\xeb\xc6\xa3\xf7\xdf\x89\xdb\x4f\xde\x82\xae\x7c\x1e\x94\ +\x52\x54\x0d\xa3\xc4\x2f\xcf\x6d\xe0\x87\x6f\xcd\x62\x65\xa3\xb2\ +\x03\xac\x28\xe1\x5d\x55\xf9\xa5\xc0\x03\xc1\xfb\xae\x1a\x71\xae\ +\x6e\xfa\xb5\x07\x52\xa2\x2f\x2a\xb4\xf7\x4f\x07\x28\x95\x35\xa6\ +\x3c\x10\xf2\x17\x42\xa9\xed\x2c\xff\x5c\xa9\x36\xb0\xe6\x59\x5a\ +\x79\xc7\x09\x9f\xf5\xa0\x25\x0a\x8d\xf6\xae\x50\xbf\x8e\x54\x03\ +\x3b\xa1\xe9\xc7\x39\x83\x98\x70\x26\x11\x55\x76\xad\x89\xd3\x68\ +\x82\xf2\x54\x3d\x8c\xbe\x0f\x4c\x61\xfa\x70\xf9\x28\x5a\x78\x62\ +\xad\x44\x1f\x97\x0e\xac\xe1\xbb\xd8\x78\x1f\x41\x3d\xb4\xbd\x82\ +\x3b\xe0\x7d\x8b\x2a\x51\x9b\x7e\x3d\x70\x9c\xe7\xc6\xcd\x40\x27\ +\x46\x9d\xe9\x30\x47\x6e\xbc\x01\xa9\x74\x0a\xb5\x7a\x43\x3b\xbf\ +\xce\xb6\x29\xde\x99\x5a\xc5\x4b\xef\xcc\x63\xb3\x54\xdb\x11\x90\ +\x72\x84\x7d\xd1\xd5\x7e\x29\x25\xa4\xb8\x28\xd3\x38\x29\x03\xa4\ +\x0c\x4e\x73\x6d\xf3\x50\xa8\x9c\x68\x45\x89\x80\x52\x59\x4f\x7a\ +\x38\xa9\xa1\xa4\xd6\x0d\x0e\x39\x4b\xcb\x22\xc8\xba\x23\xe2\xf3\ +\xd9\x14\xf2\x99\x14\x52\xcc\x90\x07\xa2\x84\x95\xe0\x3c\x37\xf9\ +\x6b\xc4\x1a\x98\x1c\xe8\x9c\x2a\xe1\x1d\xd9\x3e\xf0\x58\x47\xbb\ +\xd4\x86\x94\xe1\xc2\x24\x13\xbf\xfb\x5a\x7e\x18\x03\x31\xe9\xc4\ +\xa9\x04\x43\xef\xdf\xb8\x70\xd2\x89\xc9\x3a\xdb\xe9\x12\x15\x54\ +\x29\x00\xf9\xb0\xab\x30\x3e\x36\x84\xfd\xfb\xf6\x80\x58\x16\xea\ +\x75\xdb\xa8\x5e\x6b\xd8\x98\x5e\x2c\x60\xb3\xbc\x73\x20\x25\xaf\ +\x88\x00\xb5\x5f\x4a\x70\x9e\x7b\x11\x92\x85\xd2\x2c\xa4\x08\x8f\ +\x08\xb3\x0f\x4b\x5d\x9f\x58\x80\x12\xe0\x64\x6a\xee\x79\x87\x54\ +\x0a\x56\x3b\x91\xa8\x4d\x51\xae\x3a\xf3\x2f\x2d\x42\x90\x4e\x11\ +\xe4\x32\x29\x1f\x5c\x19\x6f\x70\x29\x97\x5c\x2c\x50\x4d\x2a\x45\ +\x5f\x9f\xc4\x16\xc7\xe2\xe1\xf3\xa3\x3c\x9d\xf8\x2c\x24\xd2\x68\ +\x8e\x15\x3e\x2c\x2f\xbd\x34\xe5\xc6\x3f\x0c\xd2\x52\xee\x3b\x04\ +\x18\xb2\x65\xa8\x1c\xf8\x88\x0c\x27\x4f\x57\xb5\xa2\xc2\x0e\x79\ +\xed\x22\x49\x54\x50\x95\x00\x9c\x37\x29\x10\x42\x70\xe6\xed\xcb\ +\x20\xd6\x77\xf1\xd8\x43\xa7\x30\x34\x34\x64\x5c\xd7\x29\x97\x49\ +\xe1\xd4\x2d\x93\x48\xa7\x2c\xbc\x3b\xb5\x8a\x06\xa5\xdb\x7a\xe1\ +\x88\xe2\xed\x54\x37\xf9\x42\x86\x21\xf8\x7a\x2a\xf0\xc4\x83\x54\ +\x78\x53\x4f\x01\xb2\xa6\x00\xa5\x9e\xe0\x2c\x1f\x0a\xe5\x4b\xb4\ +\x52\xdf\x41\xb6\x01\x56\xab\x53\x54\xeb\x75\x14\xca\x75\xa4\x18\ +\x6b\xab\x8b\x69\x22\x72\x68\xf0\x7d\x40\x80\x48\xaa\xa0\x85\x27\ +\x38\xbc\xa5\x0a\x08\x0e\x77\xc5\xf6\xeb\x2c\xbb\x74\x4e\x76\x16\ +\x70\x4a\xbf\x93\x5c\x33\x88\x30\x14\xfd\x61\x3e\x84\x04\xef\x3e\ +\xd7\x6a\xf4\x06\xa2\x36\x61\x39\xf9\x6b\xa6\xcb\x67\x8a\xdd\x84\ +\xaa\x54\x98\x42\xe1\xea\x0b\xe8\xdd\x7f\xb7\x0d\xe0\x0a\x80\xc7\ +\x00\x8c\xea\x2f\x10\xc5\xfc\xc2\x0a\xe6\x17\x96\x30\x36\x32\x80\ +\xfe\xfe\x5e\x63\xde\xb9\x4c\x0a\x93\x23\x3d\x20\x84\x60\x79\xbd\ +\x84\x46\x83\x6e\x9b\x75\xc5\x5b\x53\x6c\xb3\xce\x0f\x54\xc4\x09\ +\x90\x22\x26\x48\x91\xe6\x21\xc5\x2c\xa6\x4e\x84\x7a\x84\x42\x4a\ +\x4c\x2b\x7c\x21\xcc\xf9\x78\x7f\xc1\x57\x37\xd6\xcb\x43\xd4\xe1\ +\x83\xa2\xfd\x05\xd5\x01\xa5\xce\x6a\x0f\xe5\xaa\xb3\x38\xe0\x66\ +\xb9\xe6\xfa\x33\xa9\x7f\xde\xc4\x22\xcc\xe6\x19\xce\x17\xee\x27\ +\x8d\xb3\x8e\x04\xcb\xc9\x0b\xf7\x96\x0b\xe2\xaf\x8c\xf3\x2f\x65\ +\x43\x64\x57\x3e\x21\x62\x2a\x11\x96\x94\x23\x31\xef\x54\x17\x86\ +\x2a\x28\x06\x30\x04\xee\x35\x21\x8e\xf2\xe1\x6c\x7a\x9d\xe8\xec\ +\x82\xb1\xc1\x2e\x8c\x0d\xaa\x66\xb6\x11\xac\x6d\x6c\xe2\x95\xd7\ +\xdf\x46\xa9\xa4\x1c\x58\x4d\x01\x7c\x11\xc0\x4b\x85\xab\x2f\x60\ +\x3b\xc5\x8a\xa1\xfb\x1a\x80\xdf\x00\x70\x36\x4c\xf1\xfc\xa5\x69\ +\x7c\xfe\x2b\xdf\xc2\x3b\xe7\x2e\x98\x77\xd5\xa0\x40\x2e\x9d\xc2\ +\xed\x37\x8e\xe1\x9e\xa3\x93\xe8\xce\xa7\xb7\x65\x9a\x0c\x37\x04\ +\xc1\x0f\xe4\x23\xc5\x26\x9f\xdc\xc3\x17\x11\x52\x6c\x39\x42\x73\ +\x50\x0b\x29\x36\x9d\x00\x4b\xef\x88\x5d\xdd\x93\x78\xe9\x34\x80\ +\x22\x90\x01\xc5\xc2\x09\x3e\x9c\xc4\x38\x05\x0e\x44\x02\x69\xff\ +\xf8\x84\x62\x7e\xb6\xdb\xe9\xb2\x5e\xac\x62\x61\xad\x84\x99\xe5\ +\x22\x66\x97\x8b\x58\x5c\x2b\x63\xbd\x58\x45\xa5\xd6\x70\x3a\x64\ +\x5c\x4c\x71\xc3\x2b\x3c\xf0\xf9\x17\x55\x65\x12\x8a\x2f\xa1\x0b\ +\x3c\x31\xad\xda\x37\xae\x63\x87\xdf\xa9\xa6\xed\x54\x64\xd2\x13\ +\x45\x98\xe4\x53\x63\xac\x2e\xee\x53\x23\xde\x64\x66\x76\xc2\xb4\ +\xff\x47\xdd\xd5\xa8\x5a\x1c\x58\x65\xa5\xf3\xd1\x95\x3b\x24\xa1\ +\x16\x15\xe0\x5b\x55\x00\xf0\x36\x80\x1f\x01\xb8\x05\x86\x65\x5c\ +\x08\x21\x28\x6c\x96\x70\xf9\xca\x0c\xba\x72\x19\x8c\x8d\x8d\x20\ +\x95\xd2\x17\x45\x08\xc1\xe8\x40\x17\x06\x7a\x72\x58\xde\x28\xa3\ +\x5c\x69\x6c\xa9\x65\x25\x59\x53\xaa\x66\x9d\xa9\xc9\xa7\x1a\x86\ +\xa0\xb2\xb4\x98\xb2\x44\x48\xf9\xb9\xea\x20\xe5\x9b\x4f\xac\x85\ +\xc1\x03\x33\x00\x92\x19\x50\xe0\xc2\xd8\x7a\xaa\xe1\x14\x54\x02\ +\x3e\x78\x88\xf7\xc7\xe4\x6a\xfe\x23\x3e\x50\x89\x02\x62\x62\x79\ +\x36\x75\x96\xf1\xa9\x54\x1b\x28\x55\xea\xd8\x2c\x39\x6b\x6c\x55\ +\x6a\x36\x6a\x0d\x1b\x36\xe5\x37\x99\xf7\xad\x1d\xa5\xc7\x5d\x61\ +\x8b\xf8\x96\x0c\xe1\xe3\x88\xda\xfa\x0a\x80\x26\xfe\x40\x11\x65\ +\xde\x01\x34\xfd\x62\x84\xbc\x88\x54\x06\x15\x00\xc7\x5d\x7b\xca\ +\x9c\xa5\xd6\x57\xa7\x8e\x1c\x1d\xec\xc2\xd8\x60\x37\xa7\x4c\xdd\ +\xe7\x2b\xd4\xa2\xa2\xf4\x4b\x5d\x93\xb7\xbe\xb4\xf2\xd6\x97\xb1\ +\x9d\x12\x09\x54\x00\x07\xab\x2b\x00\xbe\x0b\x60\x3f\x9c\x09\xc9\ +\x4a\xab\x8c\x10\x82\x72\xa5\x8a\xcb\x57\x67\x00\xbb\x81\xc9\x89\ +\x51\xa4\x33\x19\x63\x19\x83\xbd\x39\x8c\x0e\x74\x63\xad\x58\xc5\ +\x66\xa9\xb6\x25\x17\x20\xac\xc9\xa7\xb2\x62\x44\x48\x31\x2a\xfa\ +\xe6\x20\x53\x16\xf7\x3d\x8a\x25\xa5\x6b\xea\x09\x56\x94\x0f\x11\ +\xa6\x3e\x6c\x13\x0f\x4c\x98\xca\x7a\x92\xe0\x24\x82\x89\x01\x92\ +\xfa\x62\x1a\xfe\x8c\xaa\x02\xbc\xd8\x38\x12\x58\x08\x8d\x06\x45\ +\xa5\xd6\x40\xb9\x52\x77\x9b\x8a\x75\x94\x2a\xce\x88\x79\x6f\x45\ +\x0d\xaa\xba\x9e\x02\x5b\x54\xe3\xac\xfc\x28\x8d\xe3\x8a\x0f\x67\ +\x60\x26\x99\x3d\xbc\x09\xe4\xef\xa2\x2d\xe6\x2b\x0d\x59\x90\x1b\ +\x9f\x94\x49\x2f\xd6\xd6\x08\x27\xf0\x46\xdb\xd8\x60\x17\xc6\x06\ +\xba\xe5\x41\x1a\x51\x40\x05\x7c\xb1\xff\x86\x87\x5f\x5a\x78\xf1\ +\xbf\x6d\xa1\xe9\x20\x4b\xac\x29\x34\xb3\xcf\xfd\x3e\x00\x60\xf2\ +\xf4\xa7\xde\x06\xf0\x4b\x00\xa6\xe1\x4c\xa7\x51\x2e\xed\x42\x08\ +\x41\xa9\x5c\xc5\x9f\x3f\xf7\x32\xd6\x0b\x9b\x78\xe4\xc1\x7b\xd0\ +\xd7\xd7\x67\xdc\x85\x63\x7c\xa8\x0b\x0f\x9d\xd8\x87\x17\xce\xce\ +\xe1\xd2\xec\x5a\x47\x9b\x82\x51\x9a\x7c\x46\x48\xb1\xff\xb2\x4d\ +\x3e\xf8\x01\x1a\x48\x71\x2a\x88\x0a\x29\x95\x15\x15\x94\xcf\xd7\ +\x85\xd1\xe4\xce\x8b\xf0\x05\x6b\xce\x9f\x98\x61\xa4\x3d\xd4\xa5\ +\xe2\xcd\x03\x5d\x33\x89\xb5\x4a\xd9\xae\x7a\xfe\x1c\x02\xab\xa2\ +\xde\x70\xac\xab\x52\xd5\x83\x9a\x73\x1d\xd3\x29\x67\x9b\xb1\x4c\ +\xca\x72\xbf\xbb\x6b\xc8\x13\xc0\x22\xae\x9e\xe7\x64\x26\x42\x3d\ +\x0c\xc3\x06\x64\x0f\x13\x13\x4b\xe0\x3f\xd7\xa2\xe3\x5a\xe5\x65\ +\x12\xd7\xae\xa2\xde\x1a\xd0\x21\x43\x08\x82\xf9\x7b\x21\x83\x3a\ +\x4c\x56\x57\x4c\x39\xf0\xd4\x13\x78\xe3\x3f\x72\xb7\x68\xcb\x1d\ +\x34\x4d\xad\x9e\x30\xfb\xdc\xef\x63\xf2\xf4\xa7\xe6\x00\xfc\x26\ +\x80\x29\x38\xd3\x6a\x86\x54\xba\x84\x10\x34\x1a\x36\x7e\xf4\xca\ +\x59\x6c\x14\x8a\x78\xf2\xd1\xd3\x18\x1b\x1b\xd5\xc3\x8a\x02\x03\ +\x3d\x59\xdc\x7f\xeb\x1e\xf4\xe4\xd2\x78\xeb\xf2\x32\xea\x76\xa7\ +\x7a\x04\x05\x18\xb1\x20\x00\x03\x11\x46\x55\x4c\x2e\x41\x8a\x85\ +\x53\x70\x11\xc0\x7f\x15\xf2\x6f\x12\x52\x12\xa0\x44\x3d\xf1\x14\ +\x8d\x80\x22\x72\x98\x10\xa0\xd1\x88\x7e\x9d\x95\xe5\x0a\x2f\x33\ +\x15\x74\x08\xd3\xe3\xc7\xfa\xad\xbd\x6b\xe3\x9a\x24\x9e\x4f\x06\ +\xb6\xb3\xf9\x05\x6b\x9b\x78\xcd\xcd\xb4\xbb\x8b\x8f\x95\x72\xf7\ +\x4e\x74\x8f\x53\x29\xe2\xac\x29\xcf\xdd\x4f\x68\x76\x4b\x16\x68\ +\xe2\x1d\x2a\x9b\x9c\xac\x0a\x55\x46\x12\x30\x80\x63\xc6\x32\x70\ +\x30\x12\xfc\x58\xea\x35\x41\xc1\xe8\xc2\xdf\xda\xcd\xa6\x14\xf5\ +\x46\xb0\xbb\x92\xb7\x35\x9c\x07\xbc\xf0\x15\x71\x29\xf9\xf2\xc7\ +\x80\x14\x8f\x51\x25\x52\x3b\x29\x4d\xaf\x47\xe5\xc2\x6a\x03\xce\ +\x32\x2f\x53\x70\x96\x1f\x3e\x68\xb8\x7e\x38\x7b\xee\x32\x36\x8b\ +\x25\x3c\xf5\xe8\x69\x1c\x3c\xb8\x5f\x7f\x69\x28\xd0\x95\x4d\xe3\ +\xae\x9b\x27\xd0\x9d\xcf\xe0\xd5\x77\x17\x50\xae\xb6\xd7\x6f\x25\ +\x5a\x53\x6a\xab\x4a\x48\x23\x34\xf9\x88\x98\x40\xd9\xec\x90\xf7\ +\xfd\x63\xbf\xb7\x1f\x52\x62\x1a\xae\x62\x7a\x7d\xc5\xf9\x6b\xc1\ +\xa4\x83\x5d\x04\x91\x7f\xf5\xc5\x73\xa0\x1a\x68\x11\xae\x87\x4c\ +\x0b\x2c\xef\x54\xfd\xe6\x99\xbb\xfd\x99\xed\xec\xe0\xe3\x24\xf7\ +\x7a\x15\x83\x46\xb1\x65\x39\x2b\xcf\x12\xcb\xd9\x1c\x36\x45\xe0\ +\xee\x9d\x48\xfc\x3d\x14\x9d\xf5\xd3\xfc\xda\x20\x58\x03\x55\x7e\ +\x7f\xd9\x71\x53\x54\x88\x83\x10\xc7\x8e\xa3\x0a\x9c\xf3\x1e\x4c\ +\x78\xb8\xd8\xde\xa7\xed\xed\x37\xe9\x86\xb9\x7b\x4f\xda\xd4\xdb\ +\x38\x37\xd8\xfe\x6d\x65\xa3\xc7\x75\xa5\xf0\xc3\x32\x08\x21\xb0\ +\x23\x6c\x84\x9a\x12\x67\xc6\x07\x03\x53\xb6\x0c\x56\x2d\xad\xf0\ +\xe9\xc2\xaa\x06\xe0\xbf\x03\x98\x81\xb3\xeb\xcc\x49\x9d\x3e\x21\ +\x04\x57\xa7\x17\xf0\x85\xaf\x7e\x1b\x8f\x3f\x7c\x0f\x6e\xb9\xf9\ +\x46\x58\xa9\x94\xd2\xba\xa2\x70\x4c\xf8\xe3\xd7\x8f\xa0\x3b\x9f\ +\xc6\x8b\x67\xe7\xb0\x51\xac\xb6\x71\xd9\x17\xde\x9a\xf2\x0f\x43\ +\x7a\xf9\xa4\x97\x97\x88\x59\x70\xed\xbd\xd6\x20\xc5\x15\x63\x80\ +\x54\x44\x2b\xca\x08\x28\x13\x9c\x54\x4d\x64\xdd\xf5\xd4\x8a\xdc\ +\xf5\x2f\x35\x07\xa9\x50\x2f\x01\x5a\x01\x9c\xdc\x6f\x21\xc0\x72\ +\xb2\x20\xfe\xd8\xa9\x60\x23\x6c\xaf\xf9\xe8\xf5\x8a\x39\x8e\x7b\ +\x37\x4b\xb7\x38\xaa\xdc\x95\x9b\xbd\x9f\xec\x33\xc1\x1e\x4b\x23\ +\x38\xdd\xc3\x00\x61\x2e\xa4\x18\x0b\xc7\x76\xcc\x20\xd8\x34\x80\ +\x6b\x00\x28\x0a\xdb\x76\x80\xe4\x6d\x86\x0b\xc6\x2a\xe2\xc7\x78\ +\x05\x25\x78\xe7\x13\x67\xaf\x4a\xcd\x7d\x63\x7f\xba\xa9\xf0\xa9\ +\x38\xd9\xf6\x4b\xcb\x4b\x11\xbb\xb0\xa2\x00\xbe\x01\x67\x2e\xe0\ +\xbf\x01\xf0\x04\x34\x4f\x2e\x21\x04\x4b\x2b\xeb\xf8\xea\x37\xbe\ +\x87\x8d\xc2\x26\xee\xba\xe3\x38\x32\x99\xac\xf6\x42\x12\x42\x70\ +\x78\xef\x20\xba\x73\x19\x3c\x7f\x66\x16\x8b\x6b\xa5\x96\x2d\x2b\ +\xdf\x9a\x32\x5a\x55\x31\x9b\x7c\x4c\x84\xdc\xf4\x0b\x8e\xc4\xb2\ +\xbd\x73\xe4\xeb\x16\x36\x44\x41\x84\x94\xd9\x8a\x8a\x06\x28\x19\ +\x4e\xea\xcb\x2c\x53\x2b\xda\xed\x20\x0a\x6b\x2a\x38\x60\xeb\x1f\ +\xc0\x49\x01\x2d\x09\x58\x41\x93\xd0\x7f\xa5\x28\xb3\xb4\x1d\xf1\ +\x5a\x97\xee\x6e\x31\x08\xdc\x50\xc4\x9b\x46\xe3\xdd\x47\x0a\x04\ +\x83\x43\xfd\xb6\x9e\x72\xd9\x61\xe7\xab\xcd\x81\x2d\x68\xb2\x31\ +\x63\xa6\x14\xcd\xb9\x60\x98\x83\x46\x87\x2d\x8b\x0a\x79\x33\x50\ +\xd2\xbe\x33\x91\xee\x47\x44\xa1\x46\x48\x6d\x59\x53\x30\xce\x38\ +\x2a\xad\x78\x4e\x76\x00\x2f\x03\xf8\x2b\x00\xfe\x07\x80\xaa\x4e\ +\x9f\x10\x82\x42\xb1\x8c\x3f\xfb\xce\x8b\xf8\xd6\x9f\x3f\x8f\x62\ +\xb1\x18\x6a\x29\xed\x1d\xed\xc1\xc3\x27\xf7\xe1\xc0\xb8\x79\x10\ +\x69\x34\x91\xe1\xe2\x56\x8c\xfd\x60\x34\xa2\x36\xf9\x34\x7e\x29\ +\x88\xf9\xb2\x60\x8a\x06\x29\xef\x57\x5b\xea\xd5\x33\x40\x8a\x80\ +\xaf\x0f\x01\xef\x5c\x0f\x9a\x3e\x84\x0f\xe3\x20\x45\xfc\x08\xcf\ +\x59\x2d\x0e\xf4\x8c\x73\xd5\xfd\x3f\xa6\x2c\xe6\x0b\xaf\xc7\x9f\ +\x80\xf3\x1f\x13\x46\xfc\x7b\x23\x9c\xaf\x7f\x9d\x14\x4d\x67\xe1\ +\x7e\x99\x57\xb5\x10\x7e\x78\x0c\xf7\xca\xab\x5b\x70\x3a\x41\x2f\ +\x2d\x1f\x27\x7c\x67\x74\xbc\x53\xe1\x9e\x15\xc9\x62\x57\xff\xd8\ +\x75\x58\x88\xe2\x53\xbc\xfd\x1d\xad\x4d\xe4\xe1\x09\x61\x52\xb8\ +\xfa\x82\x3b\x84\xe1\xae\x35\x50\xfa\x6d\x10\x92\x02\x70\x3b\x34\ +\xab\x2d\x78\x4e\xf6\xe9\xd9\x05\xac\xaf\xad\x63\x72\x62\x04\x5d\ +\x5d\x5d\xc6\x32\xba\xf3\x69\xec\x19\xee\x41\xa5\x66\x63\x75\xa3\ +\x02\xbb\x89\xab\xa3\x1f\x8e\xa0\x80\x11\x6b\xce\x43\xd4\x91\x9b\ +\x83\x26\xbf\x94\x6a\xac\x54\xa8\x4f\x8a\xb3\x9c\x08\x1f\xef\x43\ +\x06\x7e\x1d\xc4\x97\xd6\x4b\x4c\x88\x1a\x50\x1c\x68\x45\x38\xf9\ +\xc3\x12\xc4\x38\xf1\x82\xb2\xd0\x21\x86\x3f\xfd\xcd\xe2\xe1\xc5\ +\xbf\x03\x32\xc7\x42\x80\xc5\xa6\x16\xaf\x29\x7b\xde\x1d\x80\x95\ +\xca\x8a\x65\xeb\x21\x02\x53\xf9\xac\x31\x67\x2e\xfd\xe8\xb1\x0f\ +\x07\xc4\xef\x7a\xd9\x33\xd2\x83\x3d\x23\x3d\xf2\x75\x27\x04\xa5\ +\x52\x19\xaf\xbd\xf9\x8e\x71\x1c\xd5\xe6\xd4\x8f\x5e\x42\x60\xd4\ +\xb0\x77\x52\x4c\xd0\x31\x58\xb5\xc5\xa2\x62\x65\xf6\xb9\xff\x80\ +\x67\xfe\xfb\x7f\x58\xb6\xeb\xe5\xdf\x02\xe8\x3f\x00\x30\xaf\xd3\ +\x25\xc4\x71\xfc\xbd\x76\xe6\x3c\xbe\xf8\xd5\x6f\x63\x7a\x7a\xd6\ +\xf8\x2b\x41\x29\xd0\xd3\x95\xc1\xbd\xc7\x26\x71\xe2\xf0\x28\xb2\ +\x69\xab\xf5\xe1\x0b\x44\xf3\xa9\x52\x13\x21\xc5\xc6\x1a\x20\xc5\ +\xea\xa9\x86\x44\x44\x83\x14\xff\x9c\x2a\x27\x30\x6b\xac\x28\x3f\ +\x3a\x22\xa0\x14\x03\xc9\x99\x68\x01\x40\x91\x6d\x2b\x7e\xc0\x27\ +\x07\x30\x51\x93\x01\x9f\x64\x69\x85\x01\x4b\x1a\x5b\xc6\xdf\x13\ +\xd5\xf5\x12\xef\x5b\x1c\x58\xf1\xf7\x50\x78\x2e\x84\xce\x0e\x22\ +\x1d\xb0\xd7\x86\x29\x57\x65\x45\x89\x10\xdb\x32\xab\x8a\xea\xc0\ +\xa4\xb3\xae\x3a\x52\xa3\xb6\x83\x0a\x00\xf9\xaf\x47\x08\x99\x7f\ +\xe1\x0f\xca\xd5\xb5\xe9\x7f\x0f\x6a\xff\x0a\x80\x77\xc2\x12\x39\ +\xd3\x6e\xbe\x89\x73\xe7\x2e\xc0\xd4\xdc\xa5\x14\xc8\xa6\x53\xb8\ +\xfd\xc6\xf1\xd8\xd3\x6e\x94\xd6\x14\x14\x0f\x81\x7b\xa0\x1a\xd8\ +\x09\x46\x93\x7f\x90\xf8\x4f\xf6\xa9\x54\x35\xe9\xa0\xaa\x8b\xe6\ +\x17\x97\xcf\x8e\xf8\xf5\xd2\xbf\x74\x0a\x2b\x4a\xac\x37\x17\xc6\ +\x34\xeb\x14\xd7\x8c\x87\x92\xee\xe2\xb2\x80\xe1\xff\xcc\x8f\x2e\ +\x0f\x2e\x51\x37\x80\x53\x04\x60\xb1\xf7\x53\xea\x11\xe5\x9b\x82\ +\xcd\xc2\x4a\xf7\x2c\x71\x97\x97\x03\x25\x4f\x4d\xee\x99\x63\x80\ +\xa4\xbf\xa8\xe0\xf2\x56\xfe\x7a\x74\x5e\xa2\xc0\xca\x58\xcb\x56\ +\xa5\xdd\xa0\xe2\x28\xbb\x7c\xe6\x8b\xf6\xd2\xeb\x7f\xf4\xc7\xb4\ +\x51\xfb\x45\x00\x3f\x30\x26\x24\x04\x73\x0b\x2b\xf8\xe2\xd7\xbe\ +\x83\x97\x5f\x79\x13\x76\xc3\xbc\xb1\x83\x65\x11\x1c\x3d\x38\x8c\ +\x07\x8e\xef\xc3\x60\x5f\xae\x39\xcb\x2a\xe6\x65\x96\xad\x2a\xe7\ +\x0b\xdb\xe4\x0b\x74\x09\x17\x44\x0c\x0f\xb9\x04\x29\x01\x8e\x3c\ +\xa4\xc0\xbf\x17\x44\xf5\xb2\x69\xac\x28\x11\x50\x4c\xd3\x8e\xbf\ +\x17\x01\xa0\x54\x17\x41\x09\x24\xee\x2a\xf1\x7f\x04\xd0\x43\x4c\ +\xca\x5e\x0d\x2d\x1d\xb0\x58\xb2\x88\xd6\x95\xd2\x77\x25\xc0\x8a\ +\x6f\xbe\x7b\xd7\x8f\x39\x57\xc3\x8f\x0d\x7f\xdb\x79\xdf\xa5\xb2\ +\xa3\x46\x02\x1e\xff\x83\xa4\xfc\x81\x34\xfd\xa0\x6e\x99\x55\x25\ +\x9f\xb2\x21\xac\x23\xb0\x6a\x27\xa8\x54\x15\x25\xb5\xcd\x25\x6b\ +\xee\x87\xff\xf9\xbb\x76\xad\xfc\x0b\x00\xfd\x02\x80\x86\x36\x03\ +\xe2\x0c\xe9\xff\x93\x6f\x3e\x87\xef\x7d\xff\x45\x54\x2a\xe5\x50\ +\x27\xfb\xc1\x89\x3e\x3c\x7c\x62\x3f\x26\x47\xba\x8d\xdd\x0e\xb1\ +\xac\x29\x08\x0f\x0b\x91\xf5\xfd\x53\x64\x9e\x56\x89\x57\xc2\x03\ +\xc9\xd5\x83\x0d\x17\x20\x25\x45\x69\x81\xa6\xb2\x1a\xc4\xaa\x89\ +\x80\x72\x53\x1b\xac\x27\x91\x10\x32\x90\x88\xf6\x4f\x0c\x41\x98\ +\xbe\x01\x5c\x01\xb4\xc0\xe7\xc4\x00\x4b\x6b\x5d\x71\x20\x0a\x03\ +\xbe\x19\x56\xfc\x57\xcd\x0f\x93\x04\x32\xfe\xd9\x60\xb3\x12\x7f\ +\xf0\xb4\x12\x19\x01\x1d\x24\x55\x30\x87\xc7\x54\x8b\x8e\xc3\xaa\ +\x5d\xa0\x0a\xab\xa8\x35\xff\xe2\x1f\x9c\x6d\x94\xd7\x7f\x05\xd4\ +\xfe\xff\x00\x94\xb5\x19\x11\x82\x52\xb9\x86\x3f\x7f\xee\x65\xfc\ +\xe9\x9f\xfd\x05\x36\x36\x36\x42\x61\xe5\x4c\xbb\xd9\x8f\xeb\xf7\ +\x0c\x44\xff\x75\x61\x6a\xa8\x7c\x70\xf4\x4f\x2a\xff\x0c\x2a\xd5\ +\x75\xbf\x7c\xb2\x25\x40\x84\x97\x25\x08\x23\x91\x5e\x2c\xbf\xee\ +\x4a\x4b\x40\x78\x01\x19\x2b\x8a\x0f\x92\xad\x27\x13\x98\x74\xd6\ +\x11\x21\x92\xaa\x51\x57\xce\x5b\x07\x2d\x03\xb0\xd8\x5c\x58\xeb\ +\x8a\xbb\x5e\x41\x64\x33\xb0\x52\xf9\x03\x03\x06\xc9\x0f\x9c\xda\ +\x9a\x92\x7e\x79\xe4\x72\x23\x38\xd6\xb7\xc9\xaa\xda\x76\x58\xb5\ +\xa3\xd7\x2f\xea\x49\x90\xe2\xec\xeb\x85\x4c\xdf\xe4\x77\x53\xd9\ +\xde\x2a\x21\xd6\x9d\xd0\xac\x1a\x4a\x88\x33\x46\x64\x66\x7e\x09\ +\xcb\xcb\x2b\x98\x18\x1b\x46\x4f\x4f\x0f\x4c\x92\xcf\xa6\xb0\x67\ +\xb8\x07\xb6\x4d\xb1\xbc\x5e\x86\x6d\x43\xb8\x89\x44\x02\x40\x58\ +\x4f\x9f\xf6\xe1\x61\xc8\xc6\xe9\x80\x81\x91\x00\x27\x39\x4e\xd7\ +\xb3\xc8\x97\xc9\xeb\xe9\x5e\x28\xe6\x45\x12\xea\xc9\xe9\x09\x56\ +\x94\xe4\x77\xe2\x20\x21\x58\x49\x1a\xab\x47\xff\x48\x44\x50\x94\ +\xac\x29\x35\xb4\xd8\x04\x12\xb0\x78\x93\x4a\xb2\xae\xe2\xc0\x0a\ +\xca\x6b\xcb\xdf\x7b\xe5\x8f\x95\xca\x5f\xe5\xd7\x57\x4a\x26\xd4\ +\xc1\x70\x09\xa3\x7c\x4a\x09\x64\x69\xad\xd7\xcf\xfe\xf2\xe6\xf4\ +\x4b\x62\xaf\x9f\xae\x26\x1d\x83\x55\xab\xa0\x8a\x4b\x5a\x52\x5e\ +\x7c\xa7\x0a\xbb\xf1\x83\x6c\xdf\xe4\x0c\xb1\x52\x77\x02\xe8\x37\ +\x15\xb0\xb8\xb4\x86\x99\xd9\x79\x8c\x0c\xf5\x63\x60\xc0\xa8\x8a\ +\x4c\xca\xc2\xc4\x70\x0f\x32\xe9\x14\x96\xd6\x4b\xa8\xbb\x0b\xf1\ +\x69\x97\x71\x21\x1a\x58\xf8\x0f\x74\x04\x90\x41\x9f\xbf\xd2\x9a\ +\x52\xfd\x9a\x0b\x3d\x7c\x92\x65\x14\xe1\x57\x9f\xfd\xb5\xf7\x00\ +\x10\x44\x08\x0d\x56\xc1\x82\x52\x59\x38\x2c\x9c\x54\x2f\x45\xd8\ +\x50\x04\xd6\xcf\xa5\xfc\x53\x3c\xbb\x3a\x68\xe9\x80\xc5\xb2\x23\ +\x00\x16\x0f\x81\x38\xb0\xe2\xae\x9f\xe2\xe9\x35\x39\xd7\xd9\x73\ +\x10\x9f\x01\x21\x52\xed\x7e\x50\xfd\xe8\x45\xb2\xaa\xc4\x1f\x64\ +\x59\x5a\x03\x55\xe3\xcb\x9b\xd3\x2f\xbd\xcc\xdc\x10\x18\x3e\x11\ +\x51\x27\xb6\xb4\xd2\xf4\x6b\xb6\xd2\x64\x73\xe6\x95\xfa\xf2\x9b\ +\x9f\xfb\x1f\x76\xad\xf4\xcb\x00\x7d\xdd\x58\x08\x09\xa6\xdd\xbc\ +\xf9\xd6\x3b\xa0\xd4\xd6\x36\x05\xd9\x69\x37\xa7\x6f\xdd\x83\xbe\ +\xee\x0c\x93\x8f\x58\x11\x55\x35\x85\x87\x80\x08\x9f\xaa\x93\xd4\ +\x98\xf4\x4a\x48\x29\xae\x9e\xaa\x87\xcf\x0b\x88\x07\x29\xe2\x57\ +\x94\x08\x75\xe0\x99\x25\x5b\x50\xcc\xad\xd1\xc2\x29\x6c\x48\x41\ +\x6c\x11\x41\x26\x14\xa8\x84\x27\x11\x2f\x91\x00\x5c\xff\x1a\x32\ +\xbe\x2b\x5f\x4f\xd4\x89\x0a\x2b\x8d\x73\x5d\x73\x8f\xc5\x73\xe0\ +\x3e\xa5\xfb\xaf\x22\x22\xf3\x3d\x92\x55\xa5\x7e\x8e\xdb\x28\x51\ +\x6d\xbb\x8e\xc2\xaa\x59\x50\x11\xcd\x71\xd4\xca\x92\xda\xe6\x12\ +\xe6\x5f\xfc\xaf\x7f\xd2\x28\x6f\xfc\x55\x50\xfa\x2d\x18\xc6\x24\ +\xb0\xd3\x6e\x9e\x7f\xe1\x55\xd4\x6a\xe6\x39\x7f\xde\xb4\x9b\x87\ +\x4e\xec\xc7\xe8\x40\x17\xbf\x56\x90\xa2\x36\x44\x38\xd6\x9e\x8a\ +\x44\x2d\x22\x67\x17\xe1\xe1\x54\xf9\xa5\xc4\x97\x27\x3e\xa4\x20\ +\xeb\x70\x3f\xe6\x3c\x0c\xc2\x20\xe0\xa7\xd1\xf4\xfe\xf9\xf6\x0e\ +\x89\xf9\x27\x5e\x13\xf6\x3c\x4c\xce\x7c\x43\x5d\x95\xd6\x15\x6b\ +\xfd\x48\xd7\x5d\xbe\xde\x46\x58\xa9\x9c\xeb\x0a\x90\x99\x9a\x80\ +\xca\xfb\x2c\x7e\x2a\x7f\x18\x75\x56\x95\xe6\xb3\x23\xac\x6a\x0b\ +\xac\xa0\x39\x8e\x24\xcd\x80\x2a\x0a\xc2\xc3\x48\xea\x3d\x3e\xa9\ +\x85\x97\xff\xe7\xcb\xb5\xcd\xf9\x4f\x81\xda\x9f\x06\xa0\x5d\x2d\ +\xcf\x5b\x35\xf4\xcf\xbe\xf3\x42\xac\x69\x37\x0f\x9d\xdc\x8f\xfd\ +\xc2\xb4\x1b\xf1\xe6\x2b\xc3\x89\xe9\xe1\x11\x3e\x4d\xbf\x8e\x21\ +\xe6\xbe\x94\x1f\x0b\x1e\xc8\x65\x87\x43\x8a\xc8\x3a\x8a\x66\x9e\ +\x1e\x50\x6a\x38\x89\x60\xd2\x7a\xcf\xc3\xfe\xdc\x74\xe2\x74\x1c\ +\xfe\x5e\x43\xae\x03\x57\x4f\xf6\x9a\x06\xd7\x53\xbb\xcb\x34\xf3\ +\x4f\x3c\x58\xf1\x95\x12\xe1\xa1\x7a\xba\xc5\x67\x82\xfb\x51\x12\ +\xca\x6d\xcd\xaa\x8a\x92\x47\x5b\x25\x0c\x3c\x61\x56\x53\x14\x6e\ +\x68\xa5\x19\x1f\x55\x5c\xba\xea\x28\xeb\x7f\x2f\xcd\xbf\xb5\x96\ +\xee\x1e\xfa\x4e\x2a\xdf\x9f\x26\xc4\x3a\x09\x40\xb9\x14\x28\x21\ +\x04\xb6\x6d\x63\xca\x9f\x76\x33\x6a\x9e\x76\x43\x9c\x69\x37\x93\ +\xc3\xbd\xa8\xd6\x6d\xac\x16\x2a\x7e\x3e\xce\xa7\xa3\x24\x37\xd1\ +\x14\xbf\xa6\x44\x13\x1e\x29\xbf\xe0\x1f\x75\x9c\xde\x79\x0e\x95\ +\x1e\x5b\x1f\xf0\x16\x07\xfb\xe2\xb3\x8e\x75\xb6\x7e\x5e\x68\xd4\ +\x9e\x35\x35\x98\x14\x18\x22\x86\x3f\xe1\xa6\x73\x8f\x81\x11\x5a\ +\x6a\x7f\x9a\x0e\xb4\xea\xe5\x9b\xe3\xc1\x8a\xbb\xbe\xc2\x8f\x84\ +\x74\xed\xc1\xe7\xa9\x34\x69\x88\x94\x5c\xfe\x34\xfe\x30\x0a\x65\ +\x09\xe9\xa1\x39\xf6\xa4\x25\x1f\x95\xdd\xf8\x8a\xeb\xa3\xb2\x84\ +\x22\x4c\xd6\x53\x14\x16\xc4\x92\xb8\xa0\x8a\x0a\xa3\x30\x48\x89\ +\x9f\xa4\xbc\x7c\xbe\x04\xbb\xf1\x5c\xb6\x6f\x7c\x95\x58\xe9\x3b\ +\xe0\x6c\x7a\xaa\x14\x4a\x81\xf9\x45\x67\xb7\x9b\xf1\xd1\x41\xf4\ +\xf5\xf5\x19\x6b\x9b\xcb\xa4\x30\x39\xdc\x03\xcb\x22\x58\x5e\xaf\ +\xa0\x61\x53\x67\x03\xcc\x30\x08\x49\x0f\xab\xc1\x39\x2e\x84\x1b\ +\x75\x84\xb2\xfc\xaa\x2a\xca\xe3\x1f\x5c\xc5\x8b\xc2\x90\x4b\x7e\ +\x61\x19\x90\xb1\x16\x06\x47\x8c\xf0\xb1\x4a\x12\x98\x44\x66\x49\ +\x04\x92\x91\xa4\x30\xaa\x04\x2d\x19\x5a\x5c\x72\x15\xb0\x98\x9b\ +\xac\x85\x95\xe2\x1a\x87\xc1\x4a\x35\x56\x4e\x7a\xa0\x15\x01\xda\ +\x1f\x2e\xf1\x81\x64\x2b\x4c\x84\xf0\x38\x86\x87\xd8\xd4\x14\x80\ +\xe8\x49\x6b\xa0\xaa\x7f\x75\x73\xfa\xe5\x97\x35\x15\x0b\x0b\x53\ +\x85\x37\x05\xad\x38\x4d\xbf\xb0\x0a\x98\x0a\x8f\x42\x5a\x6b\x73\ +\xe6\x95\xf2\xf2\x99\xaf\xfc\x27\xbb\x56\xfc\x75\x80\xbe\x1b\x56\ +\xa1\xf3\x97\xa6\xf1\xb9\x2f\x6b\xa6\xdd\x30\xcf\x01\xa5\x40\x36\ +\x93\xc2\xc9\xc3\x63\xb8\xe7\xe8\x84\x33\xed\x26\xd2\x69\xca\x0f\ +\xac\xf3\x35\xfc\x21\x33\x0e\x30\x15\xce\xbe\x33\x90\x82\xac\x03\ +\x48\x7a\x66\x40\xf1\x70\xe2\xc9\xe2\x5a\x34\xca\xff\xa2\xc5\xaa\ +\xc0\xc5\xe5\xad\x70\xdc\x73\x3e\x2c\x85\x75\xc5\xe9\x85\x58\x4e\ +\x66\x58\x41\x73\x2f\x14\xbd\x6f\x86\x57\x4f\xf2\x59\x9a\xac\x2a\ +\x5d\xf9\xd2\x0f\x69\xd8\x5b\xde\xb4\xe1\x22\x89\x62\xa5\xe8\xa8\ +\xc0\x89\x03\xb1\x50\x89\x0a\xaa\x76\xc1\x28\x2c\x3d\xa9\x15\xe6\ +\xec\xf9\x1f\xfd\x8f\xcf\xd7\x4b\x6b\xbf\x0c\x6a\x1b\x37\x13\xf3\ +\xa7\xdd\x7c\xfd\xcf\xf1\xf2\xab\xe1\xd3\x6e\x52\x16\xc1\xcd\x07\ +\x86\x70\xff\xad\x7b\x30\xd8\x9b\xf3\x57\xd5\x51\x3e\x04\x8a\x87\ +\x42\xfb\xa9\x79\x08\x4d\x57\xc7\xb7\xd0\xfc\x03\xd3\xaf\x78\x2b\ +\x90\x62\x5e\x62\x12\xe4\x27\x5a\x1d\x4a\x40\x71\x70\x12\x70\xa3\ +\xb3\xaa\x22\xfc\x05\x60\x62\xc1\xc5\xc4\x71\x57\x43\x3d\x76\x4a\ +\x0b\x63\xe9\x3c\x99\xeb\xad\x6a\xe6\x29\xe2\xbd\x4c\xb5\x50\x88\ +\xd0\x04\xe4\x9f\x43\xcd\xf7\xa6\xfd\x4c\xdc\xd5\xe1\x42\xc4\x67\ +\xb2\x0d\xc2\xdf\x0e\xa1\x98\x88\x9f\xfa\x13\x88\x08\xab\xb8\xce\ +\xf4\x66\x2b\x18\xcf\x54\xa4\x36\x59\x7c\xe5\x7f\x7d\xbf\x5a\x98\ +\xfb\x25\x6a\x37\xbe\x0a\x40\xbb\x3f\x3c\x21\x04\x6b\xeb\x9b\xf8\ +\x93\x3f\x7b\x0e\xdf\x7b\xee\x45\x54\x2a\x15\x10\x8b\x28\x33\xf6\ +\xe4\xe0\x44\x1f\x1e\xba\x6d\x1f\x26\x86\xbb\x23\x9c\xaa\xfb\x3d\ +\x86\x35\x65\x74\xa0\x43\xf1\x52\x40\x78\x29\xb8\x67\x96\x7d\x29\ +\xc4\xa2\xa2\x40\x0a\x46\x4b\xc3\x08\x28\x01\x4c\x1c\x70\x84\x33\ +\x8f\xfa\xa7\x4a\x28\x41\x8b\x0b\xe7\xcf\x95\xbb\x6a\x9a\xe6\xad\ +\x7f\x0e\xc2\x35\x92\x60\xe5\x69\xeb\x78\x21\x02\x41\xf1\xa3\x65\ +\x7a\x25\xb5\x3f\x64\xb1\xac\x2a\x9d\x7b\xc2\x94\x48\x53\xa1\xd6\ +\x25\x8e\x95\xd4\x2c\xc4\x94\x12\x05\x54\x51\xa0\x13\x35\x6d\x9c\ +\x93\xb1\x96\xdf\xf8\xfc\xd9\xca\xf2\xbb\xbf\x46\xed\xda\x7f\x05\ +\x50\xd1\x16\x42\xdc\x69\x37\xdf\x57\x4d\xbb\x21\xca\x5a\x8c\x0d\ +\x75\xe1\xc1\xdb\xf6\xe2\xba\xc9\x7e\xce\x11\x1a\xd9\x8a\x0a\x92\ +\xf0\x9f\xaa\x13\xd7\x24\x56\xc2\x49\xf5\xab\xee\x27\x61\x5f\x96\ +\x26\x21\xc5\xe6\x17\x0a\x28\x2f\x82\x3f\x15\xe2\x69\x78\x7e\xa3\ +\x18\x7f\xda\x6d\xb7\x04\x68\xa9\xac\x2c\xef\x20\xdc\xba\x12\xcf\ +\x5d\x03\x2b\xc6\xf2\x62\xad\x30\xfe\xde\x08\x2f\xbf\x08\x10\x31\ +\x0d\x7b\x5f\x5a\xb2\xaa\xc2\x44\x3f\x00\xb4\xbd\xe2\xaf\x9b\x1a\ +\xc7\x4a\x42\x88\x0e\x89\x9b\x36\x8a\x33\x3d\x2e\x21\x9b\xfd\x54\ +\x85\x59\xe5\xe5\x0b\x05\x50\xfa\x17\x99\x9e\xb1\x2a\xb1\xd2\xb7\ +\x03\xc8\x29\x2b\x49\xbc\x69\x37\x8b\x58\x5e\x5e\xc5\xe4\x38\x33\ +\xed\x46\x04\x8f\xfb\x70\xe4\xb3\x29\x4c\x0e\xf5\xa0\x41\x29\x56\ +\x37\x2a\xa0\x34\x78\x59\x83\x5f\x2f\xc5\xc3\x49\x98\x87\xc3\x7b\ +\xb1\x7d\x60\x69\xc2\x35\xf9\xe8\x75\x98\x47\x51\xac\x47\x04\x48\ +\xb1\x56\x85\xb2\xeb\x9e\xb1\x2c\x24\x40\x09\x26\x90\x7f\x28\x76\ +\xe3\x41\x88\x0f\xf9\xe3\x13\xc8\xe0\x62\xe3\x95\xc0\x62\x14\xd4\ +\xd6\x15\x7f\x0d\x98\x5b\x2d\x5c\x67\x39\x9e\xb7\x52\x44\x58\x89\ +\xe5\x6b\x9e\x56\x62\x88\x22\x9a\x4f\x6d\x56\x02\xfc\xcc\xca\xdc\ +\x49\xb0\x65\x50\xda\x9a\x33\x9d\xf2\xce\xf4\x76\xbc\xe3\xaa\x2b\ +\x18\x2a\x61\xa0\x8a\x0a\x97\xb8\xe1\x62\xbc\xa9\x0c\xab\xb6\x31\ +\x5b\xad\x6d\x2e\xbc\x90\x1b\xd8\x3f\x47\xac\xcc\xed\x20\x44\xd3\ +\xcd\xe7\xc8\xe2\xd2\x2a\x66\x66\x17\x30\x32\xd4\x8f\xc1\xc1\x7e\ +\x3e\x53\xee\x8e\x03\xd9\xb4\x85\x89\xa1\x6e\x64\xd2\x29\x2c\x6f\ +\x94\x51\xb7\x29\xac\x90\x1e\x3d\x7d\x38\xfb\x80\xcb\x26\xbb\x59\ +\x87\x39\x66\xf4\x64\x48\x69\xf4\xd8\x7a\x31\xa7\x68\x1c\x0c\xc9\ +\xea\x89\x2f\x83\x7f\x83\x18\x38\x09\x37\x8e\xb0\x79\x44\xf8\xd3\ +\xc2\xcb\xad\x98\xbf\x34\x2f\x13\xce\x01\x8b\x63\xa4\x07\x3a\xa6\ +\xbe\x11\x60\x15\x5c\x17\xee\xe4\x83\xeb\xc6\xdc\x1b\xfe\x4a\x04\ +\xd7\x89\xfb\xc1\x60\xc3\xd9\x7c\x45\x42\x09\xf9\xf0\x17\x3a\x94\ +\x5a\x7c\xf9\x50\x95\xaf\x12\x67\x9d\xfa\x36\x81\x4a\xd7\xfa\xd2\ +\x55\x21\x6a\x78\x18\xcc\x00\xb4\xbe\x7a\x42\x5c\x52\xc6\x3d\x29\ +\xbf\x9e\xd5\xb5\xa9\xda\xe2\x6b\x9f\xf9\x9f\xf5\xf2\xea\xaf\x81\ +\xda\x67\x8c\x95\x22\x04\x57\xa6\xe7\xf1\xf9\xaf\x7c\x0b\x6f\x9c\ +\xf1\xa6\xdd\xc8\x55\x23\x08\xa6\xdd\x1c\x3b\x34\x8c\x53\x47\x27\ +\xd1\xd7\x95\x71\xd6\xb6\xd2\xfd\x24\x4a\xd5\x54\x54\x59\x73\x36\ +\xc2\x0f\x9f\x16\x52\x7a\x67\x2d\xaf\x17\x75\x29\xe3\xa0\x4c\x1f\ +\x3d\x92\x15\x25\x59\x50\x82\xe5\xa4\x06\x13\x61\xf2\x34\xff\x17\ +\x50\x86\xc9\x57\x80\x97\x7f\x22\xa2\x95\xc5\x01\x8b\xb9\x66\xee\ +\x41\x1c\x58\xa9\xc6\x95\x05\x6a\xfc\xf9\xf2\xf7\x88\xfb\xa5\x80\ +\x90\x89\xf2\x5e\x35\x67\x55\x85\x3c\x5b\x5a\x31\x97\xdd\xa2\x98\ +\x0c\x0a\x93\x6e\x94\xf0\x48\x62\x02\x55\x54\xf2\xc5\x35\xfb\xa2\ +\x5c\x43\xa5\x25\x66\xd7\x4a\x58\x7c\xe5\xd3\x7f\x5a\xdd\x98\xfb\ +\x15\x4a\x1b\xdf\x45\x84\x69\x37\x5f\xf9\xfa\x77\xf1\xc3\x1f\xbe\ +\x82\x5a\xad\xe6\x5b\x4a\xca\x0b\x41\x08\x6e\xd8\xd3\x8f\xfb\x8f\ +\xef\xc5\xc8\x40\x5e\xda\xba\x29\xf4\x61\xe3\x9c\xb4\xba\xe1\x08\ +\xc2\x5b\x20\x9d\x2e\x78\x10\x41\xfe\xd2\x14\xa4\x02\x53\x4a\xb6\ +\xa2\x74\x80\xf2\x8e\xd9\x34\x1c\x44\x08\x1f\x2f\x26\x08\xb5\xa6\ +\x58\x78\xf1\x3a\x4c\x65\xf8\x87\x44\x61\x5d\xf9\x67\xc2\x5d\xe6\ +\x10\x58\x71\x64\x13\xee\xaf\x02\x48\xea\x1f\x16\xc3\x83\xdc\x8c\ +\x55\xa5\x4b\x2e\xfe\x90\x31\xd0\xe4\x1e\x23\xa2\x29\xbb\x55\xa1\ +\xca\x0a\xb7\x9b\x01\xa1\x4c\x68\xc7\xa4\xe4\x56\xf5\xe3\x9c\x24\ +\x01\x90\x5a\x7e\xf3\xf3\xaf\x94\x97\xce\xff\x2d\x6a\xd7\x3f\x0b\ +\xa0\xae\x2d\x90\x10\x14\x8a\x25\xfc\xe9\x9f\xbf\x80\x6f\x7e\xfb\ +\x07\xf2\xb4\x1b\x91\x04\xc4\x31\x93\x1f\x38\xbe\x17\xfb\x46\x7b\ +\x15\x7a\xaa\xea\x84\x9c\x8d\xe9\xa4\x4c\x0f\x3d\x13\xe1\xc3\x4f\ +\x91\x77\x24\x48\x09\x2f\x1c\x67\x45\x81\x01\x87\x00\x28\xd6\x72\ +\x92\x1c\xe0\x91\x60\xa4\xca\x4b\xa5\xcf\x43\x4b\xb4\xb0\xf4\x9b\ +\x53\x80\x01\x14\xe1\xaf\xa3\xe6\x1a\x88\xd7\x88\x04\x0a\x6a\x0b\ +\xc7\x04\x19\xc5\x0f\x50\x58\xd3\x4c\xf7\x43\xa7\xff\x11\x0b\x93\ +\xb0\xe6\x5f\xab\xcc\x32\x2e\x9d\xdb\x2e\x06\x84\x8a\xce\x47\x15\ +\x15\x1a\x51\x21\x13\x35\x1f\x51\x47\x1b\x5e\x59\xbe\xb0\x46\x08\ +\xf9\x5e\xba\x7b\x34\x4d\xac\xf4\x6d\x30\x4c\xbb\x69\xd8\x36\xa6\ +\x66\x16\xb0\xb6\xb6\x81\x3d\x93\xce\xb4\x1b\xfe\x79\xe0\xcd\xff\ +\xae\x5c\x1a\x93\xc3\x3d\xa8\xd6\x1b\x58\x2d\x54\x9d\x7d\xe2\x48\ +\xf0\xc0\x13\xcd\xc3\x6e\xfe\xe5\xd3\x8f\x76\xd7\xea\x40\x6d\x05\ +\xa8\x26\xbf\xaa\xf5\x84\x78\x15\xd4\xbc\x48\x16\x10\x24\x48\x20\ +\xf5\xfe\x71\x90\xd1\x0c\xe4\x54\xda\x4f\xb2\xa6\x16\x5a\x3a\x60\ +\x41\x00\x16\x73\x12\x51\x61\xc5\x3d\x50\x82\x15\xcc\x5c\x10\xf5\ +\xa1\xe1\x87\x45\x7a\x03\x75\x84\x52\x6b\x1b\x5e\x94\x90\x1f\x46\ +\x2e\x13\x22\xe5\x41\x41\x5a\xf7\x51\xcd\xbc\xf2\xb2\xb1\x8a\xf1\ +\x3e\xc3\x4f\x59\x21\xcd\x82\x2a\xca\x27\x69\x73\x7e\x52\xfe\xd5\ +\xf5\x99\x52\xa3\xbc\xf6\x7c\xb6\x6f\xcf\x3a\x49\x65\x4e\x02\x44\ +\x39\x30\x8a\xc0\xe9\xfd\x98\x5b\x58\xc1\xfc\xfc\x12\xc6\x47\x87\ +\xd0\xdf\xdf\xcb\x65\xc9\xfd\xb2\x02\xc8\x66\x2c\x4c\x0e\xf7\x80\ +\x10\x82\x95\x8d\x0a\x1a\x94\x46\x70\xa6\x0b\xe1\xa1\xa0\x62\xe3\ +\x45\x38\xf1\xdd\xdc\xe2\xcb\xa7\xec\xcd\x8a\xe0\x9f\xe1\x9b\x7a\ +\x04\xe2\xc3\xcd\xc2\x8c\x83\x89\xff\x55\x1e\xef\xc4\x01\x47\xf8\ +\x53\x73\x4b\x84\x97\xba\x1c\x1d\x40\x65\x58\x69\xc0\xaf\xb9\x26\ +\x2a\x66\x88\x96\xa9\xd6\x27\xc5\xa1\x83\x2b\x48\xa8\x93\x54\x84\ +\x50\x0f\xe6\xa4\x14\x79\x88\x9f\x32\x28\xf9\x67\x47\x2e\xd0\x89\ +\x6c\x4b\xaf\xdf\xcc\x2b\xaf\xa0\xb9\xa1\x4c\xcd\xea\x48\xa2\x2a\ +\x3c\x8c\x7c\xba\xf0\x66\xf5\x74\x15\x8f\x12\x6e\x95\x97\x2f\x94\ +\x97\xdf\xfc\xc2\x7f\xae\x97\xd6\x7e\x13\xd4\xbe\x18\x76\xc2\xef\ +\x5e\x9c\xc2\x67\xbf\xf4\x67\x78\x87\x99\x76\xa3\xba\xd9\x14\x40\ +\x26\x6d\xe1\xb6\xeb\x47\x71\xe7\x4d\x63\xe8\xce\xa5\x9d\x9d\x69\ +\xb9\x07\xdb\x74\x92\x61\x90\x02\xf7\x8c\xea\x7e\xd1\xd9\xc7\x5e\ +\x7e\x90\x04\x28\xfa\x7a\x41\x7e\xea\xb1\x42\xf0\x7b\x03\x65\x08\ +\xf0\xe0\xd0\xc1\x89\x71\x2d\x71\x7f\xaa\x9b\xa5\xd4\x13\x0e\x74\ +\xc0\x92\xac\x1b\xf6\x7a\x72\xd1\xd1\x60\x65\xba\x6e\x62\x39\x4a\ +\x9e\x88\xf0\x50\xe8\x4b\xf7\x41\xf1\x43\xc2\xdd\x57\xe5\xa7\xea\ +\x77\x5e\x27\x24\xa4\x0e\x6d\x93\x76\xbd\xf3\x88\x18\xee\x4b\x14\ +\x67\x7a\xd4\xf0\x76\x5f\x84\xc8\xe1\xf5\xf2\x9a\xbd\xf8\xea\xa7\ +\xbf\x50\x2d\xcc\xff\x1a\xa5\x8d\x97\x8c\x85\x10\x82\xd9\xf9\x65\ +\x7c\xee\x2b\xdf\xc6\x4b\x2f\x47\x9b\x76\x73\x64\xff\x10\xee\xbd\ +\x65\x12\x03\xde\xb4\x1b\x0e\x0a\x3a\xc0\x84\x5d\x3a\xf6\x05\x31\ +\x0c\x34\x25\x4a\x75\xf0\x96\x01\xfb\x32\x04\xca\x3a\x48\x99\xac\ +\x28\x11\x50\x3a\x38\x05\xe5\xc6\xfc\x63\x5e\x43\x09\x5a\xd0\x83\ +\x92\xb5\xae\x82\x6b\xc6\x5a\x31\xc1\x17\x11\x70\xec\x7d\x22\xd2\ +\x75\x64\xe2\xd8\xab\xa2\xf8\xc1\x60\xaf\x5f\x98\x55\x15\x4f\x88\ +\x31\x94\xaf\x4a\x38\xb4\x9a\xaa\xc2\xd6\x4a\x6c\xb6\x58\x2d\x66\ +\xd0\xac\xf5\xd5\xae\xf2\x02\xa1\x94\x2c\xbf\xf1\xb9\xef\x57\x96\ +\x2f\xfe\x2a\xb5\xeb\xdf\x40\x84\x69\x37\x5f\xfd\xd3\xef\xe3\x3b\ +\x7f\xf1\x82\xbb\xdb\x8d\x65\x2c\xe0\xc0\x58\x2f\xee\xbf\x75\x0f\ +\xc6\x87\xcc\xbb\x39\x3b\x79\xf0\x0f\xaf\xf8\x8b\xac\x83\x92\x7f\ +\x24\x51\x2a\xf8\xcd\x54\xfb\x5a\xd8\x7c\x62\x40\x4a\x61\x45\x29\ +\x01\xc5\xd6\x91\x1d\xa8\xa9\xb1\xaa\x8c\x7f\xc4\xb3\xe6\x08\x57\ +\x97\x28\xc0\x62\x41\x14\xd4\xd7\x0c\x2b\xbe\xef\x84\xbf\x86\xe2\ +\x65\x57\x5d\x5f\xd1\x32\x16\xef\x93\xde\x74\x10\xee\x97\x08\x45\ +\xae\x3c\x36\x61\xc8\x0f\x1f\x11\xce\x5d\x61\xe9\xf1\x37\x98\xbd\ +\xae\x2d\xc9\xb6\xbe\xeb\x29\x4d\xe4\x6e\xfd\xb4\xca\xcb\xe7\x17\ +\x49\x2a\xfd\x5c\xba\x6b\xb8\x8f\x58\xe9\xa3\xd0\xf8\xe1\x08\x21\ +\xa8\xd5\xeb\xb8\x32\x35\x87\xe2\x66\x11\x7b\x27\xc7\x90\xcb\xe7\ +\x84\x4b\xc4\x3b\x9e\x7b\xf2\x69\x8c\x0f\x76\xa3\x54\x6d\x60\x63\ +\xb3\x0a\xef\x01\xd4\xf9\x37\xb8\x5f\x5f\x2e\xdc\x10\x0f\xfd\xc3\ +\xad\x7a\x01\x4d\x3b\x2a\x87\x42\xca\x00\x03\x15\xa0\xa4\x01\x99\ +\xec\x53\x13\xf5\x4f\x4c\xc2\x8d\xc5\x52\x03\x8b\xaf\x96\x78\x4e\ +\x31\x60\xc5\x96\x2f\x5e\x63\xb1\x72\x82\xbe\x14\xcc\x31\x44\xf1\ +\xe3\x12\x09\x0c\x44\x9d\xb7\x32\x79\x58\x86\xfa\xe6\xdf\x64\x7b\ +\x7d\x54\xad\x1a\x17\x71\x01\x07\xa0\x33\xa0\x22\x9a\xfc\x74\xe1\ +\xed\xfe\x24\xd5\xb5\xa9\x82\x5d\x2d\xfe\x20\xdb\x3b\x51\x27\xa9\ +\xf4\x6d\x00\xd1\x4c\xbb\x21\xb0\x29\xc5\xf4\xec\x22\x96\x96\x57\ +\xb0\x67\x7c\x18\xbd\xbd\xc1\x0d\x65\x5f\x00\x47\x1f\xc8\x67\xd3\ +\x98\x18\xea\x46\xc3\xa6\x58\xdb\x64\xa6\xdd\x28\x7f\x35\x03\xf0\ +\x28\xe1\x24\xe8\xf0\x2f\x55\xb8\x0e\x3f\xe2\x9d\xa9\x71\x5c\x48\ +\xf9\x47\x82\xc5\x02\xc2\x01\x8a\xbb\x7b\x04\x60\xd7\x3b\x8f\xfc\ +\x9f\x68\x86\x79\x5f\x89\x77\x9e\x32\xb0\x88\xaa\xae\x2a\x28\xfb\ +\xdf\x85\xa7\x02\xf2\xb5\xe4\x9f\x03\xe1\x3a\x8b\x69\x54\x20\x62\ +\xca\xd0\x3f\x8c\xba\xfc\x54\x59\xa9\xdf\x73\x75\xde\xe1\xd0\x62\ +\x65\xcf\x48\x0f\x26\x9b\x07\xd5\xd7\x5c\x50\x91\xd0\x82\xc2\xc3\ +\x9b\x16\x16\x54\x71\x01\x23\x86\x37\x0b\x17\x5d\xfa\x56\xc2\x49\ +\xbd\xb8\x54\xad\x6e\x4c\xbf\x98\xeb\xdf\xb7\x60\xa5\x72\x27\x40\ +\x08\xbf\x1e\xb1\x20\x0b\x4b\xab\x98\x9e\x99\xc7\xe8\x48\x3f\x06\ +\x07\x07\xc0\xfd\xc6\x0a\x30\xc8\xa4\x2c\x8c\x0f\x75\x21\x9d\xb2\ +\xb0\xb2\x51\x41\xbd\xe1\x4e\xbb\x69\xd5\x9a\x32\x59\x4c\x2a\xb8\ +\x68\xe3\x88\xd0\x82\xd0\x43\x8a\xb3\x52\xb8\x97\x9c\x1f\x44\xc9\ +\xc1\x89\xb5\x74\x58\x09\xb1\xa2\x02\x35\x26\x0f\xd1\xd2\x22\xfe\ +\x3f\x3c\xb0\x24\x58\xc9\xe7\xc5\xc3\x8a\xbd\x36\xcc\xb5\x56\x5c\ +\x37\xa5\x70\xf7\x5c\x0f\x0c\xb6\x7e\xfc\x49\x68\x13\x09\x84\x62\ +\xef\xb5\x2a\xbd\x9a\x84\xaa\x1f\x24\xf1\x93\x00\xfe\x14\x9a\xc9\ +\x91\x1e\xe9\x54\x9b\x00\x55\x5c\x6b\x28\xec\x38\x72\x78\x1c\x67\ +\x7a\xd4\xca\xc4\x95\xa6\x2b\x1f\x56\xdf\x5a\x61\xa1\xb6\xf8\xda\ +\x1f\x7d\xba\xb6\x39\xff\x1b\x94\xda\x67\x8d\x95\x20\x04\x97\xa7\ +\xe6\xf1\xc7\x5f\xfc\x26\xde\x78\xe3\x6d\x50\xdb\xe6\x7f\xf5\x99\ +\x87\xd1\x9b\x76\x73\xcb\xc1\x61\xdc\x75\x64\x1c\xbd\x5d\x19\x6e\ +\xff\x08\x26\x01\xf7\x10\x1b\x9e\x3b\xfe\x04\x74\x57\x9a\x09\x33\ +\x39\x80\xb9\xe4\x21\x90\x92\xac\x28\xcf\x07\xc5\x96\xe7\x5b\x35\ +\x84\xaf\x07\xf1\xd5\xcd\xfe\x2a\x41\x8f\xcf\x46\xb0\xb4\x98\x34\ +\xea\xba\x0b\x50\x25\xea\x6b\xcb\xc1\x4a\xf9\x84\x08\x90\x8f\x70\ +\x5d\xd5\xf7\x56\xa3\xc2\x9c\x9f\xee\x56\xea\x44\x7f\xfb\x49\x68\ +\x9a\x88\xea\x5b\x2d\x2d\xb3\x24\xca\xf0\x84\x4e\x54\xb4\x5d\xe9\ +\xc3\xc2\x09\x6d\x54\xb1\xf4\xfa\x67\xff\xac\xba\x7a\xf9\xd7\xa9\ +\x5d\xff\x3e\x42\xa6\xdd\x2c\x2e\xaf\xe1\x0b\x5f\xfb\x73\x3c\xf7\ +\xfc\xcb\xa8\x55\x6b\xc6\x1e\x41\x42\x80\xeb\x26\xfb\x71\xef\x2d\ +\x93\x18\xee\xcb\xc9\x85\xb3\x9f\x44\x91\x98\x8d\x64\xde\x26\xe9\ +\x21\x97\xac\x24\xf9\xd7\x5b\x39\xb0\x39\x06\xa4\x3c\x7d\x8e\x23\ +\x22\xa0\x14\x50\xd2\xe2\x49\x3f\x88\x8a\x83\x97\x04\x2d\x01\x58\ +\xb2\xf3\x5f\xb4\x9c\x44\x1d\xd1\x12\x26\xdc\xf9\x2a\x8d\x1a\xed\ +\xd3\xc3\x1f\x8a\xd1\xf2\x91\x21\x53\xf1\x47\x44\xd1\x0b\xa9\x4b\ +\xaf\x7e\xab\xd5\xbf\x62\xb2\xf1\xd6\x71\x5a\x6d\x09\x2f\xda\xb5\ +\xa5\xbb\xae\x80\xc8\xd6\x4f\x8b\xe9\xc3\xf2\xb5\x56\xce\x7e\xed\ +\x95\xd2\xdc\x99\xbf\x4b\x1b\xd5\x2f\x22\x6c\xda\xcd\x66\x09\xdf\ +\xf8\xd6\x0f\xf0\x7f\xbe\xf5\x7d\x14\x37\xe5\xdd\x6e\xc4\x42\x26\ +\x87\xbb\x71\xfa\xd8\xa4\xd2\x61\xa9\x7b\x90\xc3\x5a\x05\x44\x77\ +\x45\x98\x30\xb9\x85\xc1\xbe\xe4\xcd\x41\xca\x8f\x22\x0a\x40\x71\ +\x15\x70\x2d\x2f\xd1\xaa\x62\x41\xa6\x08\x67\xcc\x25\xbf\x4e\x2a\ +\x60\xf1\xd6\x15\x61\xce\xc8\xab\xba\x1a\x56\xe2\xb9\xc8\x56\x6a\ +\xf4\x1f\x02\xd1\xaa\x12\x9b\x59\xc4\xf8\x19\x89\x72\x41\x4d\xa4\ +\xfb\x2e\xdd\x5c\x6d\xb9\x6a\x89\x08\xd0\x50\x91\x7e\xd7\xe3\xbe\ +\x7b\x6d\x11\xcf\x47\xa5\x3a\x2b\x12\x23\x5c\xfb\xde\xed\xa0\x4f\ +\x52\x59\xbb\xb2\x46\x1b\x95\xe7\x32\xbd\xe3\x59\x92\xca\x1c\x83\ +\x61\xda\x4d\xbd\x61\xe3\xea\xcc\x3c\xd6\xd6\xd6\xb1\x77\x72\x14\ +\xdd\xdd\x5d\x4c\x3c\x7f\x3f\x08\x01\xba\x72\x4e\x8f\x60\xad\x6e\ +\x63\xad\x58\xf5\xf5\x62\xf9\xac\x54\x4d\x10\xa2\x09\x67\x2a\x22\ +\xbf\x68\x7c\x59\xb1\x21\xc5\x22\x89\x4d\x23\xc2\x09\xf1\x45\x62\ +\x95\x06\x58\x92\x75\x45\x42\xea\xc9\x9d\x1f\x73\x93\x18\x3d\x19\ +\x5a\x21\x15\x35\xea\x84\x83\x40\x02\x22\x77\x14\x7e\x9d\xd8\x34\ +\x66\x5d\x22\xd7\x97\x49\x32\x39\xdc\x4a\xaf\x5f\xed\x6b\x9a\x91\ +\xe9\xcd\x02\xab\x29\xe3\x43\x07\x2a\x12\x31\x7c\x37\x7d\x12\x00\ +\xa4\xb6\xb9\x50\xaa\x15\x97\x5e\xc8\xf6\x4f\x16\xac\x54\xf6\x36\ +\x10\xa2\x1c\x18\x45\x88\x33\xfd\x60\x76\x7e\x19\x73\xf3\x8b\x98\ +\x18\x1d\x42\xff\x40\x9f\x1f\x17\x5c\x94\xe0\x21\xc9\x66\x2c\x8c\ +\x0f\x76\xc3\x22\x04\xab\x85\x0a\x6c\x9b\x22\x18\x01\x1e\x06\xac\ +\x20\x9c\x1d\xd1\x1c\x19\x60\x42\x3e\xfe\xc9\x93\x26\x21\x45\xd8\ +\xf3\x24\xfe\xb1\xf4\x34\xf9\x63\xaa\xa2\xfd\x71\x49\xc1\x58\x5a\ +\x22\xb0\x14\xd7\x97\xe8\xea\x2b\xd6\x93\x4d\x1b\x24\xe4\xaf\xa7\ +\x5f\xfd\x68\x56\x95\xf2\xc1\x12\xad\x1b\x08\x07\x21\x9f\xcd\x34\ +\xff\x4c\xd0\xd2\xc5\x70\xa0\x62\xaf\x6d\x74\x50\xbd\x6a\x2c\x38\ +\x9a\xb4\x04\xac\x66\x36\x77\xd8\x29\xd2\x34\xd1\xab\x6b\x57\x4b\ +\xcb\x6f\x7c\xe1\x0f\x6a\xc5\xa5\x7f\x0a\x6a\x5f\x0e\x2b\xe8\xdc\ +\x85\x29\x7c\xe6\x0b\xff\x07\x67\xdf\x3e\x0f\xde\x14\xe6\xdf\x5c\ +\x6f\xb7\x9b\x5b\xaf\x1b\xc6\xc9\xc3\xa3\xc8\xe7\xd2\xf0\x97\xb6\ +\x52\x3c\xd4\xe2\xaf\xa6\xf8\x30\x6a\x21\x25\xe8\xab\xba\xcf\x5b\ +\x81\x14\x67\x45\x89\xbd\x7f\x6e\x3d\x82\xa1\x09\x31\x6f\x9a\x0e\ +\x5a\x9c\x85\x25\x5b\x57\x5a\x58\x31\xf1\xd2\x39\x2a\xae\x75\x24\ +\x6b\x4a\xa7\x2b\x9b\x6d\x92\xbe\xfe\x9e\x86\x17\x66\x1e\xfc\xa9\ +\x2a\x91\xa8\xf3\x89\x71\x8a\x3b\x40\x22\x55\x33\xaa\x39\xd7\xf1\ +\x8a\x18\xf4\x5a\x35\x1d\x55\x7a\xa4\x51\x2d\x34\x96\x5e\xff\xe3\ +\x2f\x56\xd6\xa6\x7e\x83\xda\x8d\x57\x8d\x09\x08\xc1\xcc\xdc\x12\ +\x3e\xfb\xa5\x6f\xe2\x47\x2f\xbd\x8e\x46\xc8\xb4\x1b\xcb\x22\xb8\ +\x71\xdf\x00\xee\x39\x32\x8e\xfe\x1e\x77\x21\x3e\xb1\x9a\x66\x6a\ +\x85\x34\x4b\xd4\x79\xe8\x7e\xed\xfd\x50\x0d\xa4\x58\x7f\x14\x6b\ +\x45\xe9\x00\xa5\xab\x52\xd8\x9f\xea\xba\x4a\xeb\x5f\x05\xff\x70\ +\xf5\xd7\xc2\x4a\x79\x29\x08\x5f\x31\x3f\x4e\x03\xfa\x56\xac\x2a\ +\xf1\xbe\xea\x6e\x99\x26\x2f\xb5\xae\x26\x94\x08\x5f\xa5\x7b\xac\ +\xce\xa9\xf3\xfe\xf4\xce\x73\xa3\x9d\xce\xf4\x56\x81\xd4\x6e\xbd\ +\xb0\xf4\x04\xd4\x26\x2b\x6f\x7d\xf9\xb9\xf2\xe2\xdb\x7f\x97\x36\ +\x6a\xdf\x44\xc8\xb4\x9b\xd5\xb5\x02\xbe\xf4\xf5\xef\xe1\xdb\xdf\ +\x79\x1e\xe5\x72\x39\xd4\xc9\xbe\x7f\xac\x07\xf7\x1e\x9d\xc0\xd8\ +\x60\x97\xa4\xa3\xfb\xe5\x95\x1e\x68\x4d\x33\x41\xfd\x63\xcf\xdb\ +\x19\x60\xf3\x34\x40\x8a\x09\x06\x6b\x45\xb1\xe7\xae\xb2\x80\x82\ +\x3f\xcf\xfc\x31\xff\xb1\xdb\xb8\x8b\xd7\x4d\x5e\x8d\x94\xb9\x1a\ +\x3a\x58\x71\xf1\x2c\x90\x00\xfe\xbd\x0e\xf9\x71\x88\x22\x3a\xab\ +\x4a\x09\x0d\xd9\xc2\xd5\x95\x19\x05\x58\xd1\x8c\x3f\xc3\x8f\x5e\ +\x13\xa7\x1b\xf1\x6a\xb4\x4b\x2f\x54\x44\x1f\x55\x2b\x9f\xaa\xb7\ +\x44\x15\xae\x3b\x0e\x0b\xef\xd4\xa7\x55\x59\xb9\xb4\x08\xd0\xe7\ +\x33\xdd\xa3\xfd\x24\x95\x3e\x82\x90\x69\x37\x97\xaf\xce\x62\x73\ +\xb3\x88\x7d\x7b\xc6\x90\xcf\xe7\x99\x78\xe1\x34\x08\xd0\x93\xcf\ +\x60\x6c\xa0\x0b\xe5\x4a\x03\x1b\xa5\x9a\xd3\x14\x24\xc1\x83\x65\ +\x06\x92\x79\xb4\xbb\xf4\xeb\xef\xbf\x2c\x86\x26\x5f\x28\xa4\x64\ +\x2b\x8a\xbf\x06\xec\x79\x06\xb7\x89\x30\x71\x26\x2b\x8a\x7a\x69\ +\x08\x1b\xc6\x3f\x36\x54\xd2\x67\xf4\x28\x11\xe2\x9d\x7f\x28\x13\ +\xc0\xe9\x31\x71\x9e\x65\x1b\x7c\x12\x4d\x38\x5f\x2f\x2e\x1f\xf6\ +\x93\xd1\xd3\xe6\xe1\x7e\x61\xc3\xf5\xba\xf2\xa7\xb6\x6c\x49\x9f\ +\x3a\x9f\x5c\x9c\x13\x30\x39\xd2\x83\x3d\xc3\xf2\x78\xe7\x98\xce\ +\xf4\xce\xdb\x65\x06\x49\x37\x91\x66\xcb\x69\xba\x05\x62\x6d\x4e\ +\xbf\x3c\xdb\x28\xaf\xff\x5e\xdf\xa1\xfb\xe6\x52\xb9\xde\xbf\x0c\ +\xa8\x37\x90\x20\x84\xa0\xd6\xb0\xf1\xfc\x8b\x6f\x62\xa3\x50\xc4\ +\xfb\x9e\x7c\x00\x13\x13\x63\xe0\x17\x5a\x0f\xbe\x51\x4a\xd1\xd7\ +\x9d\xc1\x5d\x47\xc6\xd0\x75\x39\x8d\xf3\x33\xeb\xb0\x6d\xca\xf3\ +\x2c\x2a\xa4\x84\xbc\x8d\x4d\xbd\x10\x48\xc9\xe5\xcb\x56\x14\x7f\ +\xde\x42\x22\x20\xb4\x49\x41\x40\xd0\x9d\x4f\x21\x9d\x62\x60\xa3\ +\x18\xc5\x46\x15\x81\x6c\x58\x00\x84\x80\x3a\xdc\x77\xea\x87\xa8\ +\xc3\xd8\xfc\x68\x90\x96\xba\x8a\xa2\x0e\xf7\xe2\x2b\xc2\xbd\xef\ +\xd4\xff\xce\xe6\x6d\x28\x83\xd2\x90\x78\x27\x9c\x06\x85\x19\xea\ +\x22\x9e\xaf\x3a\x6f\x4a\x29\xba\x73\xc2\x6b\x4e\x82\x74\x6d\x96\ +\xa8\x39\xc7\xae\x41\x33\xa0\xea\xb4\x6c\x17\xe0\xac\xf2\xf2\xf9\ +\x8d\x7a\x79\xf5\xdf\x0f\xde\xf8\xe4\x6c\xba\x6b\xf0\x57\x41\xac\ +\x09\x5d\x05\x29\x80\x37\xde\xba\x80\x42\xa1\x88\xf7\x3f\xfd\x20\ +\xae\xbf\xee\x80\xf6\x74\x28\x75\xb6\xe6\x3a\x71\xfd\x08\xba\x72\ +\x69\x9c\xbd\xb2\x8a\x6a\xdd\x86\x79\xbd\x06\xc3\x95\x11\x9b\x17\ +\x82\x31\xca\xe1\x92\xb5\xda\xb8\x60\x35\x14\x9d\x30\xd1\xd2\x0a\ +\xca\x50\xfb\x44\x78\x90\x7a\x92\x4a\x11\x1c\xd9\xd7\x8f\xd1\xfe\ +\x9c\x12\x50\x00\xb8\x97\x4d\x7c\x76\xa9\x14\x44\xa5\x30\x2a\xa6\ +\xa5\x7c\x12\x0e\x08\x42\xc6\x94\xc9\x84\x4a\x65\x52\xe9\x98\xf2\ +\x19\xb3\x39\x30\x65\xf0\x16\x54\x50\x04\x35\xe6\xcf\x60\x39\x48\ +\xab\x04\x34\x9f\xb9\x0c\x6c\xbe\x0e\x14\x14\x99\x74\x94\x5d\xf1\ +\x76\xb6\xec\x44\x50\x6d\xa7\x90\x7a\x71\xb9\xba\xf4\xfa\x67\xff\ +\xf7\xd0\xd1\x67\x17\x32\xbd\x13\xbf\x41\xac\xd4\x4d\x5a\x65\x42\ +\x70\xe9\xea\x1c\xfe\xf0\xf3\x7f\x8a\x67\x9f\xbc\x1f\xb7\x1e\x3b\ +\x82\x54\x2a\xc5\x2d\xb0\x07\x04\x60\x4b\xa5\x08\x6e\xde\x3f\x88\ +\xee\x5c\x1a\x6f\x5c\x5c\xc6\x66\xb9\x0e\x22\xce\x49\x67\x7d\x33\ +\x10\xad\xa9\x88\xdd\xe4\x2a\x37\x0c\x67\x69\xf1\x90\x82\x11\x52\ +\x3a\x40\x11\x0d\xb4\xc0\xa5\xcf\xa6\x53\xe8\xca\xa6\x95\x56\x93\ +\x27\xfc\xfb\x45\x35\xe1\xc1\x41\x28\xac\x20\x82\x82\x2a\xc0\xa1\ +\x28\x4b\x80\x4f\x78\x1e\x94\xb3\x0d\x7c\xa3\x9a\x52\x09\x8c\xd1\ +\xa1\xa6\x02\x55\xa0\x24\x5e\x2b\xca\x64\xc8\x67\x13\x94\x68\x53\ +\xf1\x1a\xee\x3e\x69\xc6\x47\x15\xd7\x17\xb5\xd3\x7d\x54\xf2\x27\ +\xb5\x51\x5a\x38\x7b\x21\xd3\x3d\xfc\x5a\x2a\xd7\x77\x3d\xb1\x52\ +\xfb\x74\x17\x90\x10\x82\x62\xb1\x8c\x0b\x17\xa7\x90\x49\x11\x4c\ +\x4e\x8e\x21\x9d\x66\xf9\x2f\x4e\x24\x06\x06\x7b\x72\x18\xe8\xcd\ +\x61\xbd\x58\x45\xb9\xda\x60\x1c\xd2\x26\xdf\x14\x1b\x1e\xc5\x37\ +\x65\xf6\x4b\xb1\x23\xa0\x8d\x3e\x2b\xef\x3b\x43\x3c\xcf\x29\xae\ +\x82\x14\xeb\xb9\x4a\x59\x16\x26\x87\xba\xd0\x93\x4f\x45\x7a\x4f\ +\x98\xf5\x56\x15\xe1\x6c\x09\xea\xf7\x4e\x61\x5c\x19\xf2\x81\x02\ +\x26\x8c\x4f\x8c\x86\xe4\xa9\x38\x56\xe5\xa7\x3b\x56\x83\x53\xf8\ +\xce\x5a\x54\x6d\x28\x43\xbc\xba\xbb\xc9\x47\x95\x38\xd3\x0d\x4e\ +\xf6\xf2\xf2\xf9\x59\x92\xca\xbc\x98\xee\x1e\x1e\x23\x56\xfa\x7a\ +\x68\x7a\x49\x09\x21\xa8\x54\x6b\xb8\x78\x79\x06\xd5\x4a\x15\xfb\ +\xf7\x8e\x23\x9b\xcb\xfa\x59\x71\xa0\x72\xff\xed\xed\xce\x60\xa4\ +\x3f\x8f\x62\xa5\xe6\x58\x56\x06\x20\x45\x82\x90\x18\xae\x80\x5d\ +\x24\x1d\xa6\x0e\xc1\x77\x57\x57\x68\x22\xfa\x37\x8a\x1d\x1b\xc5\ +\xfc\x59\x16\xc1\x9e\xe1\x2e\xf4\x76\x65\xe0\x01\xdb\xf4\xb4\xcb\ +\x8e\x7a\x08\x75\x60\xea\xa2\x7a\xda\xf8\x8b\xac\x52\xd0\x07\x91\ +\x90\xac\x94\xfa\xbc\xd9\x1c\xe7\x4d\x26\x51\x22\x15\x85\x37\x4d\ +\x0b\xa5\x8f\xb1\xed\xa0\x8a\x6a\xb7\xc5\xb6\xef\x76\x02\xa8\xc2\ +\xf4\xb6\x13\x60\xa4\xba\x3e\xb5\x6a\xd7\x4a\xcf\x67\x9d\x69\x37\ +\x47\x01\x62\x98\x76\xd3\xc0\x95\xe9\x39\xac\xae\xae\x63\xef\x9e\ +\x31\x74\x77\x77\x2b\x1e\xfc\xe0\x89\xee\xca\xa5\x30\x3e\xd0\x85\ +\x5a\xc3\xc6\x7a\xb1\xe6\xe7\xa3\xb5\xa6\xdc\x7c\x62\x2d\x19\x23\ +\x86\xb3\xf9\xc5\x81\x14\x61\xcf\x01\x10\xc7\x40\xa9\xc4\xb2\x08\ +\xf6\x0c\x75\xa1\x27\x9f\x0e\x32\x8f\x30\x50\x54\xf4\x8b\xf1\x61\ +\xc2\xd3\xa0\x3f\x14\x5b\xaa\x8a\xf8\xf8\x68\x89\x9c\x42\x2c\x2f\ +\xf2\x60\x26\x43\xad\x62\x51\x8a\x84\x46\x13\xbc\x37\x2d\x2a\xdd\ +\xa7\x0e\x4c\x51\xf5\x9a\x05\x98\x2e\x3c\xae\x9e\x55\x2f\x2e\x95\ +\x6a\x85\x85\x17\x33\xfd\x93\x9b\x56\x2a\x77\x1c\x84\xe4\xa1\x10\ +\x42\x88\x3b\xed\x66\x09\xb3\x73\x0b\x98\x1c\x1f\x76\xa6\xdd\x70\ +\x3f\xbc\xc1\x13\x4c\xe0\x4c\xbb\x19\x1b\x70\x80\xb6\x56\xac\xc2\ +\xa6\xd0\x83\x4a\x01\x18\xb3\x35\xa5\x87\x1e\xfb\x22\x19\xb7\xdf\ +\x12\xac\x17\xc2\x46\x32\x17\x4e\x35\x34\x21\x68\xfa\x29\x5c\xa1\ +\x21\xc0\x52\x0f\x10\xe5\x8e\x78\x23\x81\x70\xa1\x0a\xe3\x4a\x49\ +\x2a\x5e\x43\x93\x87\x49\x48\xb3\xa1\x9a\xb2\xa3\xe7\x06\xee\x7e\ +\xab\x4e\x91\x84\x9c\x86\x03\xaa\x4a\x33\xa0\xea\x98\xe5\xa4\x93\ +\xa8\x73\xfd\xb6\xf3\x33\x2a\xc0\xe2\x86\xc7\x01\x1d\x69\x54\x0b\ +\xf5\xf2\xf2\xf9\x57\xb3\xfd\x7b\xa6\xad\x4c\xf7\x31\x42\xc8\x80\ +\xe9\xc2\x2e\xad\xac\xe3\xf2\x95\x19\x0c\x0d\xf4\x61\x64\x64\x88\ +\x71\x8a\x13\xe9\x25\x4a\xa7\x2c\x8c\x0c\xe4\x91\x4b\xa7\xb0\xba\ +\x59\x45\xbd\x41\x83\xc1\x91\x40\x04\x6b\xa9\xf5\x66\xa1\x0e\x52\ +\xa2\x15\x25\x8f\x22\xf7\x92\x11\xe9\xcf\xb1\xa8\xba\xd1\x93\xcf\ +\x08\x97\x95\xbd\xc2\xc4\x05\x3c\x85\x6d\xdb\x4e\x37\xbb\xf7\x67\ +\x53\xd8\x94\x82\xd2\x20\xdc\xb6\x99\x78\x37\xdc\x0f\x73\x3f\x6d\ +\x4f\xdf\x3f\x66\xf4\x6d\xf6\xd8\x2b\xc3\xd6\x97\x29\x96\xc7\x1d\ +\x7b\x65\xf3\xe9\xa9\x26\xbd\x4d\x29\xa8\x74\x8e\xc2\xb1\x70\x6e\ +\xd1\xe2\xa2\xd5\xd5\xd3\x83\x7b\x4c\x28\x50\x2c\x16\xf1\xfa\x99\ +\x73\xad\x5a\x54\x9d\x70\xd5\x73\x79\xee\x86\x5e\x3f\x7e\x80\x52\ +\xf3\xe1\x61\x7a\x61\xf9\x11\xbb\x5a\x6c\x2c\xbf\xf1\xf9\x2f\x0d\ +\x1e\x79\x7a\x31\x3b\xb0\xff\x37\x88\x95\x3e\xae\xcb\x9c\x10\x82\ +\xe9\xb9\x25\x7c\xe6\x0b\xff\x07\xcf\x3c\xbe\x89\x3b\xef\xb8\xd5\ +\x71\xb2\x53\x75\x01\x29\xe2\x6c\x29\xdf\x95\x4b\xe3\xf5\x8b\xcb\ +\xd8\x28\xd5\xc0\x9b\x3d\x10\x8e\xe5\xaa\xf2\x2a\xd1\x47\xbb\x83\ +\x8d\xd5\x40\x8a\x9f\x43\x28\xa4\x91\x2a\xa1\xae\x32\x40\xfc\x5e\ +\x2a\xc7\x82\xac\x61\x6a\x69\x13\x73\xd3\xd3\x98\x9f\xba\x8a\x4a\ +\xb9\xe2\xbc\x40\xc2\xb5\x89\xf5\x1e\x50\xe3\xa1\x3a\x01\x0d\xcd\ +\x26\x96\x88\x43\x08\xa2\xd6\x37\x52\x5d\xc3\x42\x43\x33\x09\x7a\ +\x1a\x09\x21\x28\x57\xaa\x28\x16\x4b\xc6\x29\x61\x3b\x41\x3c\x50\ +\x85\xbd\xb4\xad\x42\x41\x27\xad\xa6\xef\x44\x59\xc6\x73\xa5\xd4\ +\xc6\xca\xd9\xaf\x3d\xd7\x7f\xdd\x83\xbf\xd9\x35\x76\xe4\xef\x91\ +\x54\xf6\x41\x18\x9c\xec\xab\x6b\x05\x7c\xf1\x6b\xdf\xc1\xda\x7a\ +\x01\x0f\xdd\x7f\x17\xba\xba\xbb\xf8\xae\x7a\xa1\xa4\xbd\x23\xdd\ +\xc8\x65\x53\x78\xfd\xe2\x0a\x96\xd6\xcb\x7c\x7e\xaa\x4f\xc2\xc2\ +\x83\x84\x28\xab\xcf\x2c\x00\x17\x93\xd8\x08\x29\xf5\xc0\x51\x39\ +\x63\x59\x87\xd0\x20\xff\x42\xb9\x86\x6f\x7f\xef\x25\xbc\xf9\xd2\ +\x4b\x28\x97\x8a\x11\x6e\xcd\x7b\x45\xb6\x10\x1a\x04\xce\x32\xda\ +\x66\x69\xc7\x00\x07\x1a\x31\x5c\x79\xac\x5a\x33\xbd\x9d\xcd\xb1\ +\x30\x7f\x50\xdc\xf4\x3b\xe6\xb3\xb2\x7a\x79\x91\xda\xf5\x1f\x66\ +\x7a\xc6\xfa\x49\x2a\x73\x23\x4c\xd3\x6e\x6a\x75\x5c\xba\x32\x83\ +\xcd\x62\x11\xfb\xf6\x8e\x23\x9f\xcf\x33\x2f\xba\x60\x95\x10\xa0\ +\x3b\x9f\xc1\x68\x7f\x1e\xe5\x6a\x03\x85\x52\xdd\x57\x33\x35\xfb\ +\x62\x4f\xb9\xd1\x36\xf9\xe4\x75\xad\x82\xef\x6e\xbc\x70\x77\x88\ +\x1b\x2a\xfe\x97\xb2\x88\xec\xa3\x72\xd3\x59\x84\x60\x61\x71\x0d\ +\xdf\xf8\x93\x6f\x61\xb3\xb0\x01\xcb\xb2\xf8\x55\x19\x92\xbf\x2d\ +\xfb\x33\x88\xa9\xe9\xd7\x2c\x78\xe2\xea\x01\x68\x1e\x54\x71\x3f\ +\x75\x60\x8a\xaa\xd7\xe9\xf0\x66\xd2\x5b\xb5\xc2\xfc\x46\xbd\xbc\ +\xfa\x42\xb6\x6f\x82\x5a\xe9\xec\x2d\x00\xc9\xaa\x2e\x32\x21\x04\ +\x0d\x4a\x31\x35\x3d\x8f\xc5\xa5\x15\xec\x99\x18\x41\x5f\x5f\xaf\ +\x17\xc9\x15\xe2\xf9\x93\x72\x99\x14\xc6\x06\xf3\x68\xd8\xc0\x7a\ +\xb1\xea\xce\x11\x94\xe1\xd3\x54\x0f\xa0\x90\x87\x12\x60\x6c\xdd\ +\x18\x3f\x14\x6b\xb8\x79\x80\xf2\x9d\x69\xc2\x5f\xe0\xa3\x92\x3d\ +\x0c\xc4\xb2\x70\xf9\xca\x34\x9e\xff\xe1\x2b\xb0\x6d\xed\x5c\xf0\ +\x44\xb6\x57\x28\xb5\x6b\x5f\x16\xd6\xa3\x6a\x37\xa0\x22\x89\x69\ +\x17\x9a\x6d\xb7\x5a\x76\xc1\x27\x69\x94\xd7\x2a\xd5\xb5\xab\x2f\ +\x67\xfa\x26\x97\x53\x99\xfc\xad\x20\x44\xb5\x1e\xb1\x9f\x68\x7e\ +\x61\x05\x57\xa7\xe7\x30\x36\x32\x80\xa1\xa1\x01\xa5\xef\xc7\xc3\ +\x49\x26\x65\x61\x74\x20\x8f\x54\x8a\x60\x6d\xb3\x86\x86\x4d\x61\ +\xb9\xe6\x93\x0c\x22\x3d\xa8\xa2\x0d\x22\xd5\xe8\x88\xf9\xb0\x75\ +\xf4\xbd\xfd\x4a\x4e\xf9\x16\x55\xaf\x0a\x54\x84\xe0\xf2\x95\x69\ +\xbc\xfc\xea\xdb\x09\xa8\x76\xae\x14\x1a\xd5\xcd\xff\x52\x9c\x7b\ +\xfd\x12\xf4\xed\xd1\x8e\x3b\xd2\x81\x78\xa0\x6a\x57\x78\xb3\x7a\ +\xcd\x7e\x46\xad\x9f\x98\x36\x72\x7a\xbb\x5e\x6e\x94\x97\xde\x39\ +\x93\xe9\x1d\xbf\x98\xca\xf6\x1e\x25\xc4\x1a\xd6\xdd\x01\xcf\x6f\ +\x75\xe1\xd2\x34\xfa\xfb\xba\x31\x3e\x36\x02\xcb\xb2\xb8\x9c\xd9\ +\xee\x71\x8b\x10\x0c\xf7\xe5\xd1\x9d\x4b\x63\xad\x58\x45\xad\x61\ +\x33\xc3\x12\x54\x40\x8a\xdf\xec\xd3\x35\xf9\xb8\xe6\x9e\x64\x45\ +\x09\x17\x46\x31\x3e\xc1\xf2\x9a\x7e\xb9\x8c\x0f\x51\xd6\xa2\x9b\ +\x9a\x9e\xc7\xcb\xaf\x25\xa0\xda\xb1\x42\xed\x57\x2a\x2b\x97\xfe\ +\x53\x65\xe5\xe2\x26\xf4\xa0\xe2\x52\xb4\x29\x5c\x92\x9d\xb8\x01\ +\x69\xa7\x9a\x73\x9d\xfd\xa4\x36\xca\x8b\xe7\x2e\xa4\xf3\xfd\x6f\ +\xa4\xf3\x03\xd7\x13\x2b\xb5\x57\x77\xd1\x09\x21\xd8\x2c\x96\x71\ +\xde\x9d\x76\xb3\x77\x0f\x3f\xed\x86\x88\x4d\x2c\x02\x0c\xf4\xe4\ +\x30\xd0\x93\xc5\x7a\xb1\x86\x4a\xad\xe1\x9c\x38\x51\x59\x51\xe6\ +\x66\x5f\xac\xa5\x8c\x85\xe6\x5e\x00\x24\x19\x50\x7a\x8b\xca\x6b\ +\xfa\x11\x3e\x6d\x02\xaa\x9d\x2d\xd4\x7e\xbd\x51\xd9\xf8\x9d\xe5\ +\x33\x5f\x7a\x83\x0d\x15\x3e\xa1\x39\x46\x88\x5e\xdc\xf0\x8e\x0c\ +\x4f\x68\xf7\xb0\x81\x76\xe5\x1b\xa5\x2c\x7f\x5a\x69\x73\x9f\x94\ +\xac\xbd\xfb\xcd\x57\x1a\x95\x8d\x7f\xd8\x3d\x79\xfc\x6f\x5b\xe9\ +\xfc\x93\xba\x6b\x4c\x08\xc1\x46\xa1\x88\xaf\x7c\xe3\x2f\xb0\xb6\ +\x5e\xc0\x13\x8f\xde\x8b\x9e\xde\x1e\x7d\xaf\x36\x01\xc6\x07\xf3\ +\xb8\xeb\xa6\x51\xbc\x71\x69\x05\xf3\x6b\x25\xa6\xf2\xfa\xd3\xf7\ +\xe2\xcd\x17\x88\x30\xc8\x25\x72\x3a\xc2\x97\xc3\x59\x5a\x72\x61\ +\x21\x42\xb8\xe2\xf4\x77\x86\x56\xec\x7a\xe9\x79\x6a\xd7\xd7\x0c\ +\xda\xaa\xd9\x6c\x72\x18\x31\xe9\x1b\xd2\x09\x69\x18\x4b\xd7\x38\ +\xd5\x50\x28\x54\x93\x2f\x11\xa7\x36\x1a\xca\x27\x9a\x70\xe1\xfe\ +\x13\x13\x40\x88\x26\x9c\xad\x12\x01\x28\xad\x51\x6a\x5f\xa9\x17\ +\x97\xbf\xba\xfc\xe6\xe7\xdf\x84\x59\xda\xea\x87\x32\x89\x0e\x54\ +\xe2\x8b\x28\x86\xeb\xf4\x9b\x0d\x6f\xb6\xbc\x56\x41\x13\x56\x4e\ +\x9c\x73\xf1\xc7\x5b\x15\xae\xbe\x70\xa9\x51\x5e\xff\x9d\xde\x83\ +\xa7\xe6\x53\xd9\x9e\x4f\x00\xfa\x91\xec\x95\x6a\x0d\xdf\xfe\x8b\ +\x97\xb0\xbe\xb1\x89\x67\x9f\x7e\x10\xa3\x23\xc3\xd2\xea\x0b\xde\ +\x01\xa5\xc0\x40\x4f\x06\x77\x1c\x1e\xc1\x99\x2b\xab\xb8\xba\x58\ +\xe4\x67\xe5\x33\x15\x0c\x9f\x1e\x42\x14\x69\x98\x4f\xc2\x02\x29\ +\x08\x50\x42\x4a\x6c\xb2\x32\xe7\xe7\x59\x57\xd2\x93\x1b\x52\x3d\ +\x0a\xbb\x50\x5a\x78\xfb\xbf\x17\xae\xfe\xf0\x0c\xb1\xd2\x96\x1f\ +\xac\x7e\xe1\x54\xbf\xc8\xd4\xa0\xe7\xbe\xd4\x24\x4c\x4f\x11\x47\ +\xa8\x51\x97\x98\x75\x09\x7f\x1e\x62\x1a\x31\x9d\x90\x3f\x97\x46\ +\x2a\x83\x78\xf1\x7c\x1d\xdc\x30\xb1\x2e\x41\x5e\xc4\x89\xa3\x00\ +\x81\xdd\xa8\xd9\x8d\xf2\x6a\xd5\xd5\xb5\x14\xb7\xae\x5d\xcd\xbb\ +\xa8\x56\x15\x00\x19\x54\xed\x02\x4b\xbb\x40\x14\x96\x3e\x2c\x9f\ +\x38\xe7\x16\x17\x6a\x6c\xb8\xa8\x63\x95\x16\xdf\x5e\x6a\x54\xd6\ +\xff\x5d\xff\x0d\x8f\xcc\xa7\xf3\x83\xbf\x08\x42\x06\x55\x95\x22\ +\x84\xc0\xb6\x29\x5e\x7c\xe5\x2c\xd6\x37\x36\xf1\xa1\x67\x1f\xc6\ +\x81\x03\x7c\xab\x91\x2b\x9c\x02\xdd\xb9\x14\x6e\xbb\x6e\x18\x5d\ +\xb9\x34\xce\xcf\x6e\x38\x5b\xca\xb3\x9a\x9a\x06\xaa\xb4\x9c\xb1\ +\xa4\xc7\x39\xa9\x98\xf2\x35\x90\x52\xf8\xd4\x74\xc2\x5e\x28\x3f\ +\x84\x28\x11\xc6\x9c\xac\x5d\xa7\x76\xa3\x4e\xed\x86\xf8\xc2\x44\ +\x07\x52\x6c\x10\x45\x8a\xf3\xbe\xc7\xc9\x27\xee\xa7\x58\x46\x3b\ +\xf3\x0e\xfb\x4c\x41\xbe\x31\xed\x6a\xc6\x35\x05\x3e\xd5\xd8\x1f\ +\xc9\x59\x2c\x84\xb7\xeb\x53\xcc\x5f\xd4\x09\xab\x47\x98\x7e\x3b\ +\xea\xd6\xca\xa7\xd5\xa8\x16\x6a\xe5\xe5\xf3\xaf\x65\xfa\x26\x67\ +\xad\x6c\xf7\x2d\x84\x90\x7e\x18\x64\x69\x79\x0d\x17\x2f\xcf\x60\ +\x64\xb0\x1f\xa3\xa3\xea\x69\x37\x9e\xa4\x52\x16\x46\xfa\x73\xc8\ +\xa5\x2d\xac\x15\x6b\xce\xb4\x1b\x4b\xdd\x1b\x18\x67\xee\xa0\x17\ +\xcf\x39\xcc\x85\x21\x0b\x6c\x19\xbe\x1e\xe3\xb7\xf2\xfe\x2c\x22\ +\x8f\xa3\x0a\x98\xe8\xfa\xa8\x5e\x3d\xeb\xac\x78\x2a\x4b\xa9\xb6\ +\x31\xf7\x8d\xea\xfa\xd4\xa2\x10\x1e\x05\x58\xa6\xf8\x08\xcd\x36\ +\x65\x5c\x58\x59\x9d\x92\x66\xdd\x1a\xa6\xb4\x44\x13\x2f\xfe\x9e\ +\xc4\x1a\xeb\xd4\x06\xd1\xe6\xaf\x5b\xfa\x4f\xf5\xf2\x6d\x05\x20\ +\x3a\xfd\xb9\xe5\x79\x50\xbb\x6e\x97\x17\xdf\x79\x27\xdd\x3d\xfc\ +\x76\x2a\xd7\x77\x13\x21\xd6\xb8\xee\x66\x78\x7e\xab\x77\x2f\x5c\ +\x45\x77\x3e\x8b\x3d\x93\x63\x48\xa5\x52\x52\xe9\x3e\x30\x08\xc1\ +\x60\x6f\x0e\x7d\xf9\x0c\xd6\x4b\x35\x54\x6b\x0d\xc6\xc1\x6e\x02\ +\x91\x0c\x24\x1e\x42\xd1\x57\x62\x60\x01\x15\x10\xcb\xf9\x4c\x59\ +\x04\x13\x83\x79\x77\xae\x5f\x70\x0e\x04\x51\x40\x45\x4b\xb5\xc2\ +\xdc\x9f\x54\xd7\xa6\x16\xc4\x08\xc3\x71\xfc\x26\x60\x73\x96\x54\ +\xdc\x38\x53\x1a\x9d\xb4\x33\x8f\xb0\xbc\xa3\xea\xb7\x7a\x9e\x51\ +\xcb\x35\x0e\x4f\x60\x65\xab\xc1\xb1\x95\x10\x14\xf3\x6e\xa6\x8c\ +\x98\xe5\x52\x94\x97\xde\xbd\x92\xca\x74\xbd\x9a\xee\x1a\xda\x47\ +\xac\xd4\x01\x21\xaf\x20\x53\x42\x50\x2a\x57\xf0\xee\xc5\xab\xa0\ +\xb6\x8d\xfd\x7b\xc7\x91\xc9\x66\x04\x9d\x20\x7b\x02\xa0\xb7\x3b\ +\x83\xc1\xde\x1c\x36\xcb\x75\x94\xaa\x0d\x84\x0f\x4b\x68\x61\x28\ +\x83\x5b\xa8\x38\xc9\x19\xde\x24\x6a\x0f\x5c\xc4\xb1\xa8\x26\x06\ +\xbb\x82\x5e\x3f\xe6\xaa\x58\x84\xe0\x6a\x38\xa8\xbe\xae\x00\x15\ +\x10\xdd\xaa\x6a\x67\x53\x30\xae\x7e\xd4\xa6\x5d\x54\xdd\xb0\xf3\ +\x6f\x47\x53\x33\x4a\x78\x33\xd2\xb2\xd3\x3d\x0c\x54\xec\xf7\x9d\ +\x6a\x55\x89\x75\x68\xa5\x2e\x9d\xd2\x25\x00\x48\x65\xf5\xca\x02\ +\xb5\x6b\x2f\x64\x7a\x46\x07\x48\x2a\x73\x18\x21\xd3\x6e\x2e\x5e\ +\x9e\xc6\xe6\x66\x11\x07\xf6\x4d\xf8\xbb\xdd\x10\xfe\x1f\xff\x6b\ +\x77\x2e\x8d\x91\xbe\x3c\xca\xb5\x06\x0a\xe5\x60\xda\x8d\x79\x58\ +\x82\xb9\xd9\x17\x75\x25\x06\x45\xcb\x14\x80\x3b\x3c\x61\x90\x6d\ +\xfa\x31\x56\x98\x6f\x51\xe9\x86\x27\xd0\x62\xad\x30\xff\x27\xd5\ +\xb5\xab\x0b\xcc\x75\x8c\x0b\x28\xf6\xfb\x56\x5a\x5e\xed\x86\x54\ +\x54\xa8\xb4\x02\x84\xed\xb6\xa6\x8c\x75\x34\xad\xfa\xbe\x93\x81\ +\xd2\x2c\x4c\xda\x0d\xa4\xb8\x75\x22\xb5\xc2\xfc\x46\xbd\xb4\xfa\ +\x42\xb6\x77\x02\x51\xa6\xdd\x5c\x9d\x9e\xc7\xfc\xc2\x32\xf6\xee\ +\x19\x95\xa6\xdd\xf8\x99\xbb\x87\xd9\x4c\x0a\xa3\xfd\x39\xd8\x94\ +\x62\xa3\x58\x83\xed\xe6\x13\x06\xaa\xa6\x9a\x7d\x62\xb8\x17\xc7\ +\xcc\x21\xb3\x08\xc1\xc4\x50\x1e\x3d\xee\x2e\x28\x84\xfd\xd7\x8a\ +\x02\xaa\xb9\xaf\x47\x04\x95\x29\xae\x5d\x8e\xf7\xa8\x61\xad\x40\ +\x4a\x25\xcd\x00\x20\x2e\xd8\xda\x61\xd9\x85\xd5\xbf\xa5\xf0\x28\ +\xa0\x62\xbf\x6f\x95\xf5\x24\x96\xd5\xc9\x26\x60\xab\xba\x61\x71\ +\xa2\x58\xce\xb4\x9b\x2b\x2f\x67\xfa\xf6\xac\x44\x99\x76\x33\xb7\ +\xb0\x8c\x2b\x53\xb3\x18\x1f\x1d\xc2\xf0\xf0\x00\x97\x3d\x6b\x61\ +\x11\x38\xd3\x6e\x46\xfa\xf3\x48\xa7\x1c\x27\xbb\x6d\x53\xb7\x49\ +\x26\x83\x4a\x02\x8e\xc2\xca\x92\xe1\xc4\x5b\x53\x41\xcf\xa1\x3f\ +\x4c\xd5\x97\xc0\x47\x25\x2f\x6f\x13\xcd\xa2\x32\x82\x0a\x8a\xb0\ +\x76\x36\x03\x55\x61\xdb\x15\x17\xc7\xa1\xdf\x49\xf8\xb4\x0b\x80\ +\x61\xf9\x49\x12\xb6\x8f\xce\x4e\x04\x8d\x18\xb6\x13\x9a\x7a\xb1\ +\xe3\xec\x7a\xb9\x5e\x5e\x7a\xe7\xcd\x4c\xef\xc4\xc5\x54\xb6\x27\ +\xd2\xb4\x9b\xf3\x17\xaf\xa2\xbf\xb7\x1b\x13\xe3\xc1\xb4\x1b\x11\ +\x54\x70\x7d\x43\x43\x7d\x39\x74\x65\x53\x58\x2f\x56\x51\x73\x17\ +\xe2\xf3\xf2\x72\x3e\x19\xe8\x28\x21\x86\x18\x56\x16\x3b\xd9\x39\ +\xf8\x73\x7c\x54\x79\x45\xaf\x1f\x89\xda\xf4\xfb\x7a\x75\xed\xea\ +\xbc\x70\x2d\x81\xd6\x9a\x80\xba\xef\x71\x9a\x55\x3b\x05\x52\xed\ +\x00\x43\xab\xf0\x81\x26\x9d\x49\x62\xa7\x8d\x0a\x2a\xf6\xfb\x56\ +\x35\xd3\x5a\xc9\xa3\x53\xcd\xb7\xf6\xc6\x51\x1b\xe5\xc5\xb7\x2f\ +\xa4\xf3\x03\x91\xa7\xdd\x9c\xbb\x70\x15\xe9\x94\x85\x7d\x7b\xc7\ +\x91\x49\xa7\x99\x12\xf8\xb1\x4d\x16\x01\xfa\xbb\xb3\xe8\xef\xce\ +\xa0\x50\xaa\xa3\x5c\xb3\xfd\x26\xa0\x0f\x9d\x98\xab\x31\x44\x5f\ +\x32\xc6\xf9\x4b\xb9\x4d\x3f\x7f\x03\x4c\xc2\x9f\x4f\x28\xa8\x36\ +\xe7\xbf\xe6\x5a\x54\x52\x64\x8c\xe3\x56\x9b\x84\xdb\x09\xb0\x56\ +\x9a\x8d\xed\xb4\xbe\x4c\xd2\x6e\x2b\x4b\x29\x51\x76\x26\x8c\x0b\ +\x81\x4e\x5a\x4f\x9d\xca\xab\x93\xf9\x88\xdf\xa5\xeb\x5b\x59\xb9\ +\x38\x43\xac\xd4\x8b\xe9\xee\xe1\xf1\x28\xbb\xdd\x9c\xbf\x38\x85\ +\x6a\xa5\x82\x03\xfb\x26\x90\xcb\x65\xfd\x22\x58\x50\x79\xd0\xe8\ +\xc9\xa5\x31\xd4\x97\x43\xa9\xd2\x40\xb1\x52\x0f\xed\xf1\x0b\x05\ +\x95\xc6\x9a\xe2\x7a\x22\xdd\xa7\xc0\xb2\xdc\x5e\xbf\x1c\xbf\x5d\ +\x96\x97\x57\xb8\x45\xb5\xf0\xf5\xea\xda\x95\x79\x55\x64\x48\x58\ +\x27\xac\xac\xa8\xcd\xb0\xed\x82\x54\x27\x81\xd1\xa9\xa6\x5d\x14\ +\x98\x02\x88\x06\x2a\x60\x7b\x9b\x69\xad\x94\xdf\x09\x5f\x53\x94\ +\xb8\x30\x7d\x51\x8f\x54\xd7\xa7\x57\xed\x6a\xf1\x87\x99\xde\xb1\ +\x9c\x95\xca\xdc\x0c\x10\xed\x1c\xc1\x7a\xc3\xc6\xa5\xab\xb3\x58\ +\x59\x5d\xc7\xfe\xbd\xe3\xe8\xe9\xe9\x0e\x32\x15\x40\x05\x38\xbb\ +\x34\x8f\xf4\xe7\x50\x6f\x50\x6c\x94\x6a\xee\x32\xb4\x31\x41\x15\ +\xd7\xca\x02\xd3\xf4\xcb\xa5\xa5\xa7\x30\x62\xd3\xef\x6b\x1a\x50\ +\xf9\x4a\x9a\xef\x61\xc7\xed\x72\xa0\xab\xe2\x77\x92\xdf\xab\x9d\ +\x8e\xfe\x66\x9a\x93\x88\xa0\x6b\xd2\xf7\x25\x2e\xa8\xd8\xef\x5b\ +\x69\x2d\x79\xdf\xdb\x01\xb1\x76\xc6\xb5\xa2\x2f\xc6\x93\x7a\x71\ +\xa9\x58\x2b\xcc\xbf\x98\xed\x9b\x2c\x59\xe9\xfc\xad\xd0\xee\x76\ +\x03\x50\x0a\x4c\xcf\x2e\x62\x7a\x66\x01\x7b\x26\x86\x31\x38\xd8\ +\xcf\xe5\xc8\x82\x0a\x00\xb2\x69\x0b\xc3\xfd\x39\x10\x42\xb0\x5e\ +\xac\xb9\xbb\xdd\x44\x03\x15\x3b\x88\x34\x1a\xa8\x82\xa6\xdf\x78\ +\x2b\xa0\xda\x5c\xf8\x6a\x75\xf5\x0a\xeb\xa3\x8a\x03\x23\xf1\x38\ +\x4a\x5c\x33\xcd\xbc\xb0\xf8\xed\x02\x58\x2b\x4d\xc4\xed\x74\xe6\ +\x2b\x25\xce\xa6\xf4\x3b\xc5\xf2\xd9\x0d\xb0\x12\xbf\x9b\xf4\xb8\ +\x78\xbb\x5a\xa8\x95\x97\x2f\xbc\x9a\xed\xdb\x33\x9b\xca\x76\x1f\ +\x43\xc8\xb4\x9b\xc5\xe5\x35\x5c\xbc\x34\x8d\xe1\xa1\x3e\x8c\x8f\ +\x0d\x7b\xc4\x90\x40\x05\xe2\xf4\xc2\x0d\xf7\xe5\x90\xcb\x58\x58\ +\xf7\xa6\xdd\x10\xc1\x6f\xd5\x02\xa8\x58\xe7\xbc\xe7\x4c\xdf\x62\ +\x50\x45\xd1\x69\x15\x50\x61\xf1\xad\x58\x68\x5b\x01\xa9\x66\x9b\ +\x69\x51\xce\xbf\x15\x1f\x97\x51\xe2\x80\x0a\xd8\x39\x96\xcf\x4e\ +\x81\x95\xf8\x1d\x11\xd3\x98\xc2\x40\xed\x9a\x5d\x5e\x7c\xe7\x6c\ +\xa6\x67\xf4\x9d\x54\xae\xf7\x08\x21\xd6\x18\x34\x42\x08\xc1\x7a\ +\xa1\x88\x73\x17\xae\xa2\x2b\x97\xc5\x5e\x76\xda\x0d\x93\x3d\xeb\ +\x97\x1a\xe8\xcd\xa2\xd7\x9d\x76\x53\xab\xdb\x1d\xb2\xa8\x1c\x87\ +\x7e\x87\x41\x05\x4d\x78\x33\xcd\x3e\xf6\xb8\xd9\x66\x4e\x5c\x80\ +\x45\x4d\xd3\x29\x48\xed\x14\x4b\x2d\x54\x9a\x05\x15\xfb\x7d\xbb\ +\x60\xd2\xee\xfc\x11\x12\x16\xe5\x1a\x44\x29\x23\x4a\x79\x04\xa0\ +\x28\x2f\x9d\xbb\x92\xca\x74\xbf\x92\xee\x1a\x3c\x40\xac\xd4\x7e\ +\x5d\xbd\xbc\x69\x37\xe7\x2e\x5c\x81\x6d\x37\xb0\x7f\xdf\x04\xb2\ +\xca\x69\x37\x4e\xd6\x84\x00\xbd\xf9\x34\x06\x7b\xb2\xd8\x2c\x3b\ +\x3d\x82\x9e\x4e\x5c\x1f\x95\xe8\x4c\x67\xc6\xa2\x82\xb4\xe0\xa3\ +\x22\xa0\xc5\xfa\xe6\xe2\x57\x2a\xab\x97\xc3\x86\x27\xa8\x8e\xc5\ +\xb0\x76\x37\x01\xa3\x7c\xef\x54\xd3\xd0\x94\x76\x3b\x21\xd5\xac\ +\x75\x1a\x49\xe2\x82\x0a\x68\x2f\x78\x5a\xb5\x6e\xe2\x5a\x42\xba\ +\x73\x69\x87\x1f\x4a\x57\x56\x14\xff\x94\x2e\x3d\xa9\xac\x5e\x5e\ +\x00\xb5\x7f\x98\xe9\x19\x1d\x8c\xb2\xdb\xcd\x85\x4b\x33\x28\x14\ +\x36\x71\x60\xff\x04\xba\xba\xf2\x4c\x7c\x50\x84\xf7\xbd\x2b\x9b\ +\xc2\x70\x5f\x0e\x95\x9a\x8d\xcd\x72\x5d\xdb\xf4\x33\xf7\xfa\x09\ +\xba\xc1\x17\xc6\x99\x9e\x92\x9e\xe8\x48\x16\x55\x31\x32\xa8\x54\ +\xe1\x51\xad\xac\x56\x20\xd6\x4c\xbc\x4a\xb7\x59\xa8\xb5\xdb\xfa\ +\x0a\x8b\x6b\x35\xff\x28\x3e\x2e\xa5\x34\x03\x2a\x60\xeb\x9b\x7a\ +\x5b\x91\x4f\xd4\x38\xd3\x75\xd0\xe9\x45\x89\xd7\xe6\x5b\x2b\xcc\ +\x6d\xd4\xcb\x6b\x3f\x74\x77\xbb\x39\x06\xc3\xb4\x1b\x9b\x52\x5c\ +\x99\x9e\xc3\xfc\xc2\x12\xf6\xef\x19\xf3\xa7\xdd\x70\xa0\x62\x4a\ +\xc8\x66\x2c\x8c\xf4\xe5\x9d\x69\x37\xa5\xba\x0b\x11\x9d\xf5\xe4\ +\x84\x9b\xc7\x51\x05\x99\x3b\xa0\xca\x05\xe3\xa8\x84\xba\x86\x80\ +\x6a\xb3\xa6\xb7\xa8\x7c\xa5\x16\x8e\xe3\x34\x01\xa3\xe8\x34\xf3\ +\x42\x87\xc5\x6f\x65\x13\x31\x6a\x9c\x28\xad\x34\x05\x23\x4b\xb3\ +\xa0\x02\x76\x96\xdf\xa8\x5d\x3a\xe2\x77\xc4\x4c\x1b\x96\x06\x86\ +\x30\x53\x3e\xa4\x51\x5e\x2d\x57\xd7\xae\xbe\x94\xed\xdf\xb3\xe2\ +\xf6\x08\xf6\xc0\x20\x73\xf3\xcb\xb8\x7c\xc5\x99\x76\x33\x32\x32\ +\x28\x15\xc3\x36\xd1\xd2\x29\x0b\xc3\x7d\x39\xa4\x2c\x82\xf5\x62\ +\x1d\x0d\x77\xda\x4d\xb3\xcb\xbe\x78\x62\x11\x60\x7c\x80\x19\x99\ +\xce\x3c\x9e\xd1\x7c\x54\x1c\xa8\x9a\x71\x9c\x8b\x61\x71\xad\x27\ +\x93\x5e\x1c\xcb\x4a\x15\xde\x69\x80\x6d\x87\x45\x16\xe7\x3a\xc4\ +\x92\x56\x40\x05\xec\x0c\x58\x45\xa9\x4f\x54\x9d\x76\xc3\x2c\x4a\ +\xba\xc8\x69\xed\x7a\xb9\x5e\x5a\x7a\xf7\x8d\x6c\xdf\xe4\x25\x67\ +\x21\x3e\x6b\x08\xba\x0c\x09\xc1\xca\xda\x06\xde\xbd\x70\x15\x03\ +\x7d\xdd\x98\x98\xf0\xa6\xdd\x50\x48\xbe\x24\x38\x83\x33\x07\x7b\ +\x72\xe8\xca\xa5\xb0\x51\xaa\xa1\x56\xa7\x4d\xcc\xf5\xe3\x85\x1d\ +\x47\xe5\x3d\x9e\xd4\xfd\x37\x1a\xa8\x96\xbe\x5c\x59\xbd\x14\x07\ +\x54\xaa\xf0\xb0\x5f\xf2\x38\x4d\xb5\x56\xbe\xb7\xcb\x01\xdf\x6e\ +\x20\xb5\x9a\x67\xb3\xf5\x88\x25\xad\x82\x0a\xd8\x39\xb0\x6a\xd5\ +\x6f\xd5\xae\xe6\x5e\xbb\xbe\xab\xc5\x6e\xd0\xd2\xc2\xd9\x77\x33\ +\xdd\xc3\x6f\xa4\xf2\x7d\x37\x10\x12\x36\xed\xa6\x84\x77\xde\xbd\ +\x82\x74\xca\xc2\xfe\xbd\xe3\xfe\x6e\x37\x22\xa8\x3c\x87\x79\x5f\ +\x57\x06\xfd\x5d\x59\x6c\x94\x9d\xdd\x6e\x22\x5b\x55\x41\xa1\x3e\ +\x55\x38\x50\x81\x7f\x4a\x09\xc2\x41\x55\x2f\x2e\x7d\xb9\xb2\x62\ +\x04\x15\x10\x0f\x3e\x61\xf1\xcd\x58\x59\x9d\x70\xb0\xab\xe2\x3b\ +\x11\xd7\x6c\x5e\x5b\x0a\x29\xa0\xbd\xa0\x62\xbf\xef\x36\x58\xb5\ +\x0a\x24\x84\xc4\xb7\x62\x55\x29\x75\xcb\xcb\xe7\xa7\xad\x54\xf6\ +\xc5\x74\xd7\xf0\x44\x94\x69\x37\xef\x5e\xbc\x8a\x4a\xb9\x82\x83\ +\xfb\x27\x91\xcb\xe5\x94\x7a\x9e\x74\xe7\xd2\x18\xea\xcd\x3a\xd3\ +\x6e\xaa\x8d\x48\xce\x73\x55\x85\x2d\x0b\x98\x18\x70\xd6\xa3\x0a\ +\x9e\x52\xea\x97\x17\xb2\x70\x9e\x07\xaa\x39\xe1\x7a\xc4\xf5\x4b\ +\xa9\xc2\x9b\x01\x59\x2b\x10\xdb\x89\x00\x6b\x36\xaf\x56\x1c\xf1\ +\x4d\x4b\x3b\x40\x05\xb4\xd7\xc7\xd4\x4a\x3e\x51\xe3\x5a\xa9\x7b\ +\x58\xbd\xa3\xa4\x33\xa5\x35\xe5\xc5\x85\x57\xd7\xa6\x96\xed\x7a\ +\xe5\xf9\x6c\xef\x78\x9e\xa4\x32\x47\x61\xd8\x9a\xab\x5e\xb7\x71\ +\xe9\xca\x0c\x56\x56\xd6\x71\x60\xdf\x84\x3f\xed\x86\xd5\x61\x8b\ +\xcc\x67\x9c\x1e\xc1\x5a\x83\x62\xa3\x5c\x83\xe7\x65\x57\xc3\xca\ +\x0f\xf4\x8f\x03\x8b\xaa\x0b\xdd\xfe\xea\x09\x41\xfb\x2f\x1a\xa8\ +\x96\xbf\x54\x59\xb9\x18\x06\xaa\xa8\x61\xdb\x61\x65\xb5\xea\xdf\ +\xda\x4e\x0b\xac\x13\x3e\xae\xa6\xa5\x5d\xa0\x02\xda\x0b\x92\xb8\ +\x4d\xb4\x38\x71\x71\xeb\x60\xfa\x6e\x0a\x8b\x92\x2e\x4a\x9c\x49\ +\x8f\xd4\x37\x17\x37\x6b\x9b\x0b\x2f\x64\xfb\x26\xcb\x56\x2a\x77\ +\x3c\xda\xb4\x9b\x39\xec\x99\x18\xc5\xd0\x60\x3f\x9f\xb1\xb0\x2d\ +\x4d\x26\x6d\x61\xb8\x2f\x0b\x02\x6f\xda\x4d\xb0\x5c\x0c\x0b\x2b\ +\xbe\x62\xc1\x37\xcb\x5f\x8f\x8a\x79\xcc\x68\x50\xa1\xa9\x30\x50\ +\x95\x96\x44\x50\x99\x1e\xf8\x66\x2c\xad\x56\xe1\xa4\x8b\x6b\x16\ +\x50\x61\xba\x9d\xb4\x94\x3a\x1d\xd7\x92\xb4\x13\x54\x40\xe7\x61\ +\xd5\x89\xa6\x20\x62\x84\x75\x02\x58\x51\xe3\x74\x79\x92\x46\x65\ +\xa3\x5a\x59\xb9\xf4\x72\xb6\x7f\xcf\x4c\x2a\xd3\x75\x3c\x74\xda\ +\xcd\xd2\x1a\x2e\x5c\xbc\x8a\x91\xa1\x7e\x67\xda\x8d\xd7\x88\x13\ +\xac\x2a\x10\x07\x36\x43\xbd\x59\x64\x33\x16\x36\x8a\xb5\x60\x6d\ +\x2b\x1f\x50\x3c\xa9\x78\x8b\x0a\xfc\x2e\x34\x8c\x43\x3d\xc2\xe6\ +\x0e\xc5\x7a\x71\xf9\x8b\x0a\x8b\x8a\xc9\xc9\x18\x16\xb7\x09\x18\ +\x76\xbc\x13\x00\x15\x16\xbf\x53\x01\xd6\xb2\xb4\x1b\x54\xc0\xce\ +\x87\x55\x9c\xfc\x10\x92\x8f\x4e\xbf\xd5\x66\x5d\x9c\x3c\x00\x00\ +\xb4\x51\xb5\xcb\x8b\x6f\xbf\x95\xe9\x9b\x78\x3b\x95\xed\xbd\x39\ +\x74\xda\xcd\x46\x11\xef\xbc\x7b\x05\xdd\xf9\x2c\xf6\xee\x19\x67\ +\xa6\xdd\x04\xc5\xfb\xcd\x3c\x42\x30\xd0\x9d\x45\x77\x3e\x8d\x8d\ +\x52\x0d\x95\x3a\x0d\x2a\x47\x18\x58\x09\xb5\xb6\x88\xbb\x66\xba\ +\xdb\xeb\x47\x85\x3a\x44\x00\xd5\x97\x5a\x00\x95\x2e\xbc\xd9\x26\ +\xa0\x29\x2e\x2e\xa0\x54\x3a\x71\xe2\x5b\x01\xdc\xae\x83\x14\xd0\ +\x19\x50\x79\xd2\x6e\x67\x79\xab\xd6\x90\x2e\xdf\x28\x69\xa3\xe4\ +\xdd\x49\x7f\x55\x14\x68\x11\x50\x8a\xf2\xe2\x3b\x97\xd3\xf9\xfe\ +\x97\xd2\xf9\x81\x83\xc4\x4a\x1d\xd4\xa5\xf5\xa6\xdd\xbc\xf3\xee\ +\x55\xd0\x46\x03\x07\xf6\x4f\x22\x9b\x49\x4b\x59\xb2\x46\x56\x4f\ +\x3e\x8d\x81\xee\x0c\x8a\x95\x3a\x4a\xee\x42\x7c\x6c\xed\x58\x60\ +\x51\x04\xeb\x51\x75\xe7\x55\x53\x68\x80\xa9\xa9\x39\xbc\xfc\xda\ +\x3b\x86\x5e\xbf\x95\x2f\x56\x56\x2e\x44\x05\x95\x2e\xae\x95\x26\ +\x60\x58\x7c\xdc\xef\xec\x71\xbb\x1c\xf0\x3b\xc5\x39\xdf\x76\x07\ +\x3a\x2b\x9d\x04\x15\x10\xdf\xfa\x89\x13\xd7\x4c\xfe\xad\x02\x29\ +\x2e\xb0\xda\xe9\x3c\x8f\x9c\x4f\x65\xe5\xe2\x3c\xb1\xac\xe7\xd3\ +\xdd\x23\x83\xc4\x4a\xdf\x84\x90\x69\x37\xe7\x2f\x4e\xa3\x50\xd8\ +\xc4\xc1\x03\x93\xdc\xb4\x1b\xa7\x30\xbe\x4b\xaf\x2b\x9b\xc2\x50\ +\x6f\x16\x95\xaa\x8d\x42\xa5\xce\x57\x48\xa8\x99\xd4\xf4\xf3\x85\ +\xc2\x1f\x9e\xf0\x9a\x61\x78\x42\x69\xe5\x0b\x95\x65\x25\xa8\x82\ +\x8c\xc2\xc3\x9a\x69\x02\x9a\xe2\x3b\x65\x65\x75\x32\xbe\x13\x56\ +\x57\x98\x7e\x5b\xa5\xd3\xa0\x02\xe2\x5b\x35\xed\x6c\xee\xe9\xea\ +\xd1\x4c\xaf\x5e\x2b\x43\x0c\x9a\x01\x56\x54\x5d\xe5\xb9\x56\xd7\ +\x67\xd6\xed\xea\xe6\x0f\xb2\xbd\x13\x84\xa4\x32\xb7\x02\x24\xa3\ +\x4c\xec\x4d\xbb\x99\x9a\xc3\xdc\xbc\x33\xed\xa6\xbf\xbf\x97\xcb\ +\x9e\x08\xa5\x64\xd3\xce\x48\x76\x6a\xbb\x0b\xf1\x29\x2a\xe2\x59\ +\x54\x12\xa8\x28\xf5\x0a\x8e\x02\xaa\x2f\x56\x96\x2f\xcc\xa2\x35\ +\x50\xe9\xc2\x5b\x81\x53\x54\xdd\x66\xbf\x77\xd2\x8f\xa5\x0a\xdb\ +\x71\x4d\x3d\x51\xb6\x02\x54\xc0\xf6\x00\xa9\x19\x27\x78\xbb\x00\ +\xd4\x2e\xeb\xa9\x19\x7d\xff\x5c\xea\xc5\xe5\x72\x75\x7d\xe6\x85\ +\xdc\xc0\xde\x15\x2b\x95\x3b\x01\x42\xba\x4d\x09\x67\xe7\x97\x71\ +\xf9\xca\x0c\xc6\xc7\x86\x30\x3a\x3c\xc8\x65\x29\xc2\x2a\x6d\x39\ +\x1b\x48\x38\xd3\x6e\x6a\x68\x38\x2b\xf1\x71\xf9\xf9\xbd\x7e\xb9\ +\xb4\x0f\xa8\xa0\xd3\x2f\x0c\x54\xd8\x6c\x94\x57\xbe\x50\x5e\x3e\ +\x1f\x17\x54\xba\xb8\xb8\xd6\x57\xa7\xad\xac\x66\x9c\xf1\xcd\xe4\ +\xb5\x95\x00\xeb\x98\x6c\x15\xa8\x80\xad\x07\x52\x94\x72\xa3\xd4\ +\x35\x2c\xaf\x38\x3a\xad\x38\xcf\xe3\xe4\xe5\x8b\x5d\x2b\x36\xca\ +\x4b\xef\xbe\x96\xed\xdf\x7b\xd1\xca\x74\xdd\x4a\x08\x19\xd2\x16\ +\x40\x08\x56\x56\x37\x70\xee\xfc\x55\x0c\xf4\x77\x63\x62\x62\x94\ +\x9f\x76\x23\x94\x6a\x11\x82\xc1\x9e\x2c\xf2\xd9\x14\xd6\x8b\xee\ +\xda\x56\x60\xe3\xbd\xa6\x5f\x4a\x7a\x92\xa3\x80\xaa\x5e\x5a\x0d\ +\x03\x15\x10\xdd\x82\xd2\x85\xb7\xcb\xb9\xae\xd3\x6d\x47\x6f\x61\ +\x9c\x66\xe4\x76\x01\xac\xa3\xb2\x95\xa0\xf2\x24\xaa\xff\xc9\xa4\ +\xdf\x6a\xd3\xcd\x14\x16\x25\xbe\x1d\xd6\x53\xdb\x7a\xfc\xc2\xd2\ +\x51\xbb\x4e\x4b\xf3\x67\xce\x65\x7b\xc7\x5f\x4b\xe5\xfa\x6e\x22\ +\xc4\x8a\x30\xed\xe6\x32\x32\x29\x0b\xfb\xf7\x4e\xb8\xd3\x6e\xd4\ +\xb0\xf2\xa6\xdd\xf4\x75\x65\xb0\x51\xaa\xa3\x52\x0f\xa0\x63\x59\ +\x04\x13\x4a\x1f\x55\x54\x50\xad\x7c\xde\x05\x95\x47\x4b\xe5\xe9\ +\x19\xae\x47\xb3\x3e\xac\x56\xe1\x14\x55\xaf\x9d\x80\x6a\x35\xbe\ +\x15\xe7\x7c\xc7\x65\x3b\x40\x05\x6c\x8d\x75\xd5\x4c\x7c\x94\xfa\ +\xc6\x3d\xaf\x28\xf9\xb5\xab\x7c\xe3\xb9\x97\x97\xce\x4d\xa5\xb2\ +\xbd\xcf\xa7\xbb\x06\xf6\x10\x2b\x75\x3d\x4c\xd3\x6e\x2a\x35\x9c\ +\xbb\x70\x15\xd5\x72\x05\x07\x0f\x4c\xba\xbb\xdd\x30\xb0\x12\x6a\ +\xd5\x93\x4b\x63\xd0\x9b\x76\x53\x69\x80\x02\x48\x11\x82\x49\x61\ +\x5f\xbf\x20\xa9\x07\x2a\xdd\xf0\x04\x6c\xd6\xcb\xab\x9f\x2f\x2f\ +\xbd\xeb\x59\x54\x61\x2f\x46\x54\x7f\x55\x33\xf0\x8a\x63\x85\xb5\ +\xa3\x27\x30\x0a\xa0\x9a\x49\xb7\xab\xac\x28\x56\xb6\x0b\x54\xc0\ +\xd6\x37\xf7\x10\x12\x66\x0a\x8f\x12\xdf\xae\x41\x9d\xcd\x3a\xd0\ +\xa3\x08\xa9\xac\x5e\x5a\x06\xe8\xf7\x33\x3d\xa3\xdd\xc4\x4a\xdf\ +\x82\x90\x69\x37\x17\xaf\xcc\x60\x65\x65\x0d\x07\xf7\x7b\xd3\x6e\ +\x02\xd7\xb9\x08\xac\x60\xda\x8d\x8d\x8d\x52\x0d\xc4\x38\xe0\x13\ +\x98\x9a\x9e\xc7\x2b\xaf\xbd\x1d\x06\xaa\x28\x53\x68\x74\xe1\xed\ +\x72\xac\x87\x1d\x37\x63\x3d\xa9\xe2\x9a\x05\x54\x94\x32\xdb\xdd\ +\x0c\xdc\x52\xd9\x4e\x50\x79\xb2\x55\xcd\xbd\x76\x02\x2b\xaa\x4e\ +\x98\x5e\x33\x83\x47\x5b\x19\x60\x0a\x00\xa4\xb6\x31\xbb\x59\x2f\ +\xad\xfe\x20\xdb\x3f\x59\xb6\x52\x99\xdb\x00\xf3\xb4\x9b\xa9\x99\ +\x45\x4c\x4f\xcf\x63\xef\xe4\x68\xb0\xdb\x0d\x53\x34\x5b\x78\x26\ +\x6d\x61\xa8\x2f\x07\x02\x82\x42\xa9\xe6\x4f\x4a\x06\x65\x9f\x70\ +\x6f\x99\x97\xb9\x10\x50\xad\x7d\x8e\xb1\xa8\x82\xc4\x6a\xe9\x74\ +\x13\x50\x3c\xde\xca\x26\xa0\x29\x7c\xab\x9b\x81\xdb\x22\x3b\x01\ +\x54\x40\x67\x9b\x7b\xcd\xe6\x6f\x0a\x37\xe9\x34\xeb\x4c\x6f\xa6\ +\xec\xa6\xd3\x37\xca\xab\xb5\xea\xea\x95\x1f\x65\x07\xf6\xcf\x5a\ +\xe9\xdc\x6d\x61\xd3\x6e\x16\x96\x56\x71\xe1\xe2\x14\x46\x86\xf9\ +\x69\x37\x62\x91\x5e\x93\x6f\xb0\x37\x8b\x5c\x26\x85\xae\x6c\x0a\ +\xf9\x4c\x0a\x54\x78\xce\x3d\x1f\x95\x09\x54\x8d\xca\xda\xe7\xca\ +\x4b\xe7\x66\x10\x0d\x54\xa6\xf8\x66\xad\xad\x4e\x34\x09\xe3\xea\ +\xe8\xd2\x74\xba\x07\x71\xc7\x40\x0a\xd8\x39\xa0\xf2\xa4\x13\xcd\ +\xbd\xa8\x3d\x7d\x61\x3a\xad\x82\xad\xd5\x26\x5f\x2b\x30\x55\xea\ +\xdb\xf5\x72\xa3\xb4\xf0\xd6\x9b\xb9\xc1\xfd\x67\xad\x4c\xf7\x31\ +\x42\x48\xc8\xb4\x9b\x4d\x67\xda\x4d\x97\x6e\xda\x0d\xab\x0f\xf4\ +\x77\x67\x90\xcb\xa4\x94\x35\x8c\xd2\xf4\x6b\x94\xd7\x3f\x5b\x5e\ +\x3a\xa7\x1b\xf0\xd9\x6a\x6f\x9f\x2e\x7c\x3b\xfd\x55\xed\x82\x5b\ +\x27\x9a\x81\xdb\x2a\x3b\x0d\x54\xc0\xf6\x8e\x24\x8f\xa2\xb3\x55\ +\x4d\xbe\x56\xcb\x88\x26\xd4\x46\x69\xfe\xad\x0b\xd9\xde\xb1\x1f\ +\xa5\x72\xbd\xd7\x11\x62\x45\x98\x76\x73\x05\xd4\x76\xa6\xdd\x64\ +\x32\x19\x63\xf6\x44\x89\x18\x0a\x10\x82\xe9\x99\x30\x8b\x6a\xfd\ +\x73\xe5\xc5\x77\x74\xc3\x13\xae\xc5\x26\xa0\x78\xbc\x95\x80\x0a\ +\x2b\x6f\x5b\x65\x27\x82\xca\x93\xed\x1c\x49\x1e\x45\xa7\x93\xc3\ +\x0d\xda\xd1\xcb\x17\x2b\x4d\x79\xe9\xdc\x5c\x2a\xd3\xfd\xfd\x74\ +\xd7\xe0\x08\xb1\x52\x47\x60\xe8\x11\xe4\xa6\xdd\xec\x9f\x44\x57\ +\x57\x2e\xbc\x04\xc5\x80\xcf\x08\xa0\xfa\x6c\x13\xa0\x32\xc5\x6f\ +\x77\x2f\xa0\x49\xb7\x93\xdf\x77\x55\x33\x4f\x25\x3b\x19\x54\x40\ +\x7b\x86\x1b\x74\xe2\x7b\x58\x3d\x5b\xe9\xe5\x6b\x97\xb5\x15\x56\ +\x47\x29\xbe\xb2\x7a\x79\x8d\xda\xf5\xef\x67\x7a\xc7\x09\xb1\xd2\ +\xc7\x01\x68\x77\xbb\x69\x50\x8a\x2b\x53\xb3\x98\x9f\x5f\xc6\xbe\ +\x3d\x63\xe8\xef\xeb\x01\x75\x61\xe4\x15\x64\x7a\xe2\x23\x80\xaa\ +\xd0\xa8\x6c\x98\x40\xe5\x49\x3b\x7a\x01\x55\x71\x5b\xd1\x04\x34\ +\xc5\xb5\x1b\x50\xaa\xf0\x28\xd6\xe4\x8e\x90\x9d\x0e\x2a\x4f\xda\ +\xd1\x7b\xb7\x55\x53\x5f\x76\x47\x93\x4f\x9d\x27\xa9\x15\xe6\x4b\ +\xf5\xe2\xf2\xf3\xd9\xfe\x3d\xab\x56\x2a\x73\x12\x50\x4f\xbb\xf1\ +\x2a\x30\x3b\xbf\xe4\xec\x76\x33\x36\x84\x61\x6e\xda\x4d\x48\x61\ +\x51\x2c\xaa\xea\xc6\x67\xcb\x8b\x6f\x8b\xce\x74\x51\x76\x5b\x13\ +\xd0\x14\xd7\x2e\x88\xb5\xd2\x5b\xb8\x23\x65\xb7\x80\xca\x93\x76\ +\x03\x2b\xaa\x4e\xb3\xcd\xbf\x9d\xde\xe4\x53\xe6\xd3\x28\xaf\xd5\ +\x2b\xcb\xe7\x5f\xc9\x0d\x1e\xbc\xe8\xf6\x08\x86\x4e\xbb\x79\xf7\ +\xc2\x55\x0c\xf6\xf7\x60\x62\x7c\x04\x96\x15\x5e\x15\x42\x08\xa6\ +\x42\x40\x65\x57\x0a\x7f\x5c\x6a\x1e\x54\xa6\xf8\xad\x68\x02\x86\ +\x1d\xb7\x6b\x08\x43\x14\x9d\x5d\x0b\x28\x4f\x76\x1b\xa8\x3c\xe9\ +\x24\xb0\xa2\xe6\x15\x57\x6f\x2b\x07\x76\x36\x93\x07\xf7\xd0\xd2\ +\x46\xd5\x2e\xce\xbf\x79\x36\x37\x78\xf0\x35\x2b\xd3\x7d\x84\x10\ +\x62\x9c\x76\x53\xd8\x74\xa7\xdd\xa4\x53\xd8\xc7\xec\x76\xa3\x2c\ +\x88\xba\x16\xd5\xf4\x3c\x5e\x79\xdd\x64\x51\x15\xfe\xb8\xb4\x70\ +\x36\x0c\x54\xca\xfa\x87\x84\x77\x6a\x20\x68\x98\xfe\x76\x8e\xc3\ +\xda\x95\x80\xf2\x64\xb7\x82\xca\x93\x56\xe7\xf2\xa9\x74\xb6\xc2\ +\x79\xde\xae\xba\xb6\x43\x8c\xe7\x51\x9a\x7f\xeb\x4a\xb6\x77\xec\ +\x07\xa9\x5c\xef\x3e\x42\xac\xc3\x3a\x7d\x6e\xda\x4d\xa5\x8a\x03\ +\xfb\xdd\x69\x37\x54\xfd\x56\x10\x02\x4c\xcf\x2c\xe8\x41\x45\xb0\ +\xd9\xa8\x14\xfe\xc8\x05\x95\x69\xae\x9f\x27\xed\x68\x02\x36\x63\ +\x69\xc5\x8d\x6f\x15\x50\xed\xe8\x09\xdc\x75\xb2\xdb\x41\xe5\x49\ +\x3b\x86\x24\x98\xc2\x9b\xcd\x2f\x6a\x9e\xad\x8c\x36\xef\x04\xbc\ +\xb8\xfc\xcb\x4b\xe7\x16\xad\x74\xd7\xf7\x32\xdd\xc3\xdd\xc4\x4a\ +\x1d\x83\x71\xda\x4d\x03\x17\x2f\xcf\x60\x75\xd5\xd9\xed\xa6\xbb\ +\xbb\x8b\xd1\xa0\x9c\xee\xf4\xcc\x02\x5e\x36\x5a\x54\xc5\x3f\x2a\ +\x2d\xbc\xe5\x59\x54\xcd\x82\xca\x14\xdf\xae\x26\xa0\x18\xd6\xc9\ +\x26\xa0\x49\xef\x9a\x03\x94\x27\xd7\x0a\xa8\x3c\x69\x65\x50\x66\ +\xbb\xac\xa7\x76\x4c\x30\xde\xb6\x26\x9f\x2e\xaf\xea\xda\x95\x0d\ +\x38\x3d\x82\x15\x62\xa5\x4f\x02\xd0\x4c\xbb\x21\xee\xb4\x9b\x05\ +\x4c\xcf\xcc\x63\xef\xc4\x08\x06\x07\xfb\xa4\x62\x3c\x50\x99\x9a\ +\x7e\x76\x75\xd3\x03\x55\x1c\xd9\x09\x4d\xc0\xb0\xe3\x66\x74\x5b\ +\x75\xb4\xef\x6a\xb9\xd6\x40\xe5\x49\x27\x7b\xf8\xda\xd9\xe4\xdb\ +\xca\x29\x35\xad\xe6\x47\x6a\x85\xf9\x4a\xad\x30\xff\x42\x6e\x60\ +\xff\x0c\xb1\x32\xb7\x47\x9a\x76\x73\x69\x0a\x23\x43\x03\x18\x1b\ +\x1d\x12\x46\x7f\x12\x4c\x85\x81\xaa\x56\xfc\x4c\x69\xfe\x2d\xaf\ +\xe9\xe7\x49\xbb\x9b\x80\xed\x02\xd8\x4e\xb2\xb2\xae\x19\x40\x79\ +\x72\xad\x82\xca\x93\x4e\x3b\xcc\xdb\x39\xc8\xb3\x99\x34\x9d\x6e\ +\xf6\x89\x65\x91\x46\x65\xa3\x51\x9c\x7f\xeb\xf5\xfc\xf0\x0d\x67\ +\xad\x74\xf6\x56\x10\x32\xae\x4d\x40\x08\xd6\x36\x36\x71\xee\xfc\ +\x15\xf4\x74\xe5\x30\x39\x39\x06\xcb\x4a\x05\xce\xf4\x50\x8b\xaa\ +\xf8\x99\xd2\xfc\x99\x76\xcc\xf5\x33\xc5\xb5\x73\x6c\x95\x18\xb6\ +\x5d\x4d\xc0\x6b\x4e\xae\x75\x50\x79\xd2\x0e\x87\x79\xa7\xe6\xea\ +\xc5\xad\x7b\x94\xfc\x5a\xe9\x25\x0b\xd7\xa7\x0d\x5a\x9c\x7b\xfd\ +\x7c\x6e\xe8\xd0\x8b\xa9\x4c\xd7\x0d\x20\xe4\x90\xae\x4c\x42\x08\ +\x4a\xa5\x0a\xce\x9d\xbf\x02\x50\x1b\xfb\xf7\x4d\x20\x93\xc9\x44\ +\x03\x55\xad\xf4\x87\x02\xa8\xa2\xd6\x39\x2e\xac\x74\xe1\x9d\x6e\ +\x02\x8a\xc7\x09\xa0\x34\xf2\x5e\x01\x15\x2b\x3b\x65\xae\xde\x76\ +\x8d\x99\x6a\x25\x2d\xfb\x42\x90\xd2\xfc\x99\xe9\x4c\xef\xf8\x5f\ +\xa4\x72\x7d\xa3\x84\x58\x47\x60\xd8\xed\xa6\x5a\xab\xe3\xfc\xa5\ +\x69\x6c\x16\x8a\x38\xb0\x7f\x02\x5d\x5d\x79\x67\x52\xf2\xeb\xef\ +\x68\x47\xa6\x3b\xa0\x7a\xb3\x99\x29\x34\x3b\x69\x6c\x55\x98\x4e\ +\x02\xa7\x08\xf2\x5e\x04\x95\x27\x5b\xb9\x3c\x4b\xbb\xd7\x94\x8a\ +\x53\x76\x27\xf3\x24\xe5\xa5\x73\x2b\xa9\x6c\xcf\xf7\xd2\x5d\x43\ +\x29\x62\xa5\x6e\x83\x69\xda\x4d\xc3\x99\x76\xb3\xb0\xb0\x82\xfd\ +\xfb\xc6\xb1\xb1\x51\x74\x41\xa5\x5c\x8a\xb8\x60\xd7\xcb\x9f\x29\ +\xcd\xbd\xa9\x1b\x47\x15\xe5\x45\xed\x84\x5f\x4a\x15\xd6\xce\x26\ +\x60\xdc\xb4\xef\x09\x79\x2f\x83\x8a\x95\xed\x58\x9e\x25\x4c\x67\ +\xbb\x9d\xe7\x91\xf3\xad\xac\x5e\x2e\x82\x36\x9e\xcb\xf6\x8e\xaf\ +\x11\x2b\x7d\x3b\x80\x1e\xa5\xa2\x5b\x83\xd9\xf9\x25\x5c\x9d\x9a\ +\x43\xc3\x6e\xe0\xca\xd5\x39\x2d\xa8\x68\xbd\xfc\x87\xc5\xb9\x37\ +\x5a\x19\x99\xbe\x53\xa6\xd7\xc4\x3d\x4e\xe0\x24\x48\x02\x2a\x59\ +\xae\xd5\x26\x5f\x9c\x87\xbd\x89\x1e\xc1\xb9\x5a\x75\x6d\xea\x47\ +\xf9\xe1\xeb\x2e\x92\x54\xfa\x24\x40\x86\xb5\xca\x84\x60\x79\x65\ +\x1d\xd3\x33\x0b\xa8\x37\x6c\x9d\x5a\xc1\xae\x57\xfe\x77\x08\xa8\ +\x76\xf2\xd8\xaa\x76\x36\x01\xdf\xf3\x92\x80\xca\x2c\xd7\x52\x93\ +\xaf\xe3\x3d\x84\x76\xad\x48\x8b\xf3\x67\xce\x74\x8d\xde\xf4\xaa\ +\x95\xca\x1e\x05\x21\xfb\xb4\x95\x21\x44\xe7\x9b\xf2\x34\x0a\xb4\ +\x51\xfd\xc3\xe2\xec\xeb\xd3\x68\xde\xa2\x0a\xd3\xd9\xe9\x4d\xc0\ +\x44\x5c\x49\x40\x15\x5d\xb6\xbb\x97\xaf\x5d\xf5\xee\xac\xd0\x06\ +\x8a\xb3\xaf\x5d\xca\x8f\xdc\xf0\x9c\x95\xce\xef\x07\x21\x87\xa1\ +\x59\xdb\x2a\x44\x0a\xb4\x5e\xfd\xdf\xc5\xd9\xd7\xc2\x40\xe5\x97\ +\xdc\x44\x5c\xa7\xa7\xd7\x34\x73\x9c\x88\x42\x12\x50\x35\x27\xd7\ +\x62\x93\xaf\x9d\x40\x23\xc5\xb9\x37\x17\xb2\xfd\x7b\xbe\x63\xe5\ +\x7a\xfa\x08\xb1\xb4\xd3\x6e\x0c\x52\xa0\x8d\xca\xa7\x23\x82\x6a\ +\x2b\x9a\x80\xcd\x8e\x62\x8f\x3b\x76\x2b\x11\x85\x24\xa0\x6a\x5d\ +\xb6\x73\x82\x71\x3b\xe1\xd2\xee\x97\x87\x94\x16\xdf\x5e\xcf\x74\ +\x8f\x7c\x37\x95\xef\xaf\x12\x62\xdd\x01\xcd\xb4\x1b\x8d\x14\xa8\ +\x5d\xfb\x74\x71\xe6\xd5\x76\x80\x2a\x4c\xaf\xd3\xd3\x6b\xe2\xd4\ +\x31\x11\x85\x24\xa0\x6a\xbf\x74\x62\x82\x71\x33\x0f\xf9\xd6\x36\ +\xf9\x34\x75\x28\x2f\x9f\xaf\x80\xd2\x1f\x64\x7b\x27\x66\x89\x95\ +\xba\x03\x40\x7f\xc4\xb4\x05\xda\xa8\xfd\xaf\x88\xa0\x62\xa5\x93\ +\x23\xd3\x5b\x0d\x4b\xa4\x49\x49\x40\xd5\x79\x69\x15\x52\xed\xee\ +\x9a\x6f\xb6\x7e\x4d\x4b\x6d\x63\xb6\x51\x5d\x9f\x7a\xa5\x6b\xf8\ +\x86\xb7\x88\x95\x3a\x0e\x90\x89\x08\xc9\x0a\xb0\xeb\x9f\xde\x9c\ +\x79\x65\x1a\xd1\x96\x79\x69\xf5\x7a\xb4\x62\x41\x45\xc9\x3f\x91\ +\x16\xa4\x19\x27\x67\x22\xf1\x84\x0a\x7f\xba\xf0\xb8\x7f\xed\xca\ +\x67\x2b\xfe\x50\x2b\xcc\xd3\xb9\x17\xfe\xcb\x57\xed\x5a\xf9\x17\ +\x01\xfa\x4d\x84\xbf\xd8\x14\x20\x8d\x76\xd6\xa1\xc3\xd7\x3d\x91\ +\x0e\x4a\x62\x51\xed\x0c\xd9\xce\x9e\xbe\xad\x7c\xc9\xc8\xe6\xcc\ +\x2b\x53\x5d\xe3\xb7\x7c\xd7\xb2\x32\x63\x20\xe4\x28\xf4\xcf\xe0\ +\xf9\x46\x6d\xf3\x3f\x16\x67\x5f\x2f\x34\x51\xce\x56\x0c\x02\x4d\ +\x64\x0b\x25\x01\xd5\xce\x95\x8e\x2f\x88\xb7\x5d\xe7\x55\x9c\x79\ +\x75\xb9\x6b\xfc\x96\x6f\x5b\xa9\x4c\x06\x84\x9c\x84\x6a\xda\x0d\ +\xa5\x9f\x29\xcd\xbf\xf5\xd9\xea\xfa\x14\x15\xea\xba\x5d\x4d\xc0\ +\x44\xb6\x51\x12\x50\xed\x3e\xd9\x09\x4e\xf2\xb8\x75\x12\x5f\x7e\ +\x52\x9c\x7d\x75\x33\x3f\x76\xe4\x7b\x56\x2a\xbb\xe2\x5a\x56\x03\ +\x6e\x3e\x35\x00\x5f\xa4\x76\xed\x9f\x2f\x9f\xf9\xd2\x82\x22\xef\ +\x56\x41\x15\x47\x27\x91\x1d\x22\x3b\xf1\xa1\x4f\xa4\x79\xd9\xc9\ +\xeb\x59\xa9\x84\x0e\xde\xf4\x54\x2a\x37\x74\xdd\x31\x62\x59\x1f\ +\x00\x90\x07\xc5\x25\x6a\xd7\xbf\x3c\xf7\xc3\xff\xec\x6d\xe5\x1e\ +\xd7\x9a\x42\x0b\xfa\x89\xec\x50\xd9\xee\x07\x35\x91\xad\x17\x71\ +\xfd\xf1\x9d\xf0\x0c\xa8\x80\x62\xb2\xa4\xa2\xac\xa1\x9e\xc8\x35\ +\x24\x3b\xe1\x21\x4d\x64\x77\x48\xa7\x9e\x95\x04\x38\x89\x84\xca\ +\xff\x0f\x54\x62\xd6\x8a\x59\xb9\x9c\x52\x00\x00\x00\x14\x74\x45\ +\x58\x74\x41\x75\x74\x68\x6f\x72\x00\x4a\x61\x6b\x75\x62\x20\x53\ +\x74\x65\x69\x6e\x65\x72\xe6\xfb\xf7\x2f\x00\x00\x00\x49\x74\x45\ +\x58\x74\x43\x6f\x70\x79\x72\x69\x67\x68\x74\x00\x50\x75\x62\x6c\ +\x69\x63\x20\x44\x6f\x6d\x61\x69\x6e\x20\x68\x74\x74\x70\x3a\x2f\ +\x2f\x63\x72\x65\x61\x74\x69\x76\x65\x63\x6f\x6d\x6d\x6f\x6e\x73\ +\x2e\x6f\x72\x67\x2f\x6c\x69\x63\x65\x6e\x73\x65\x73\x2f\x70\x75\ +\x62\x6c\x69\x63\x64\x6f\x6d\x61\x69\x6e\x2f\x59\xc3\xfe\xca\x00\ +\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x63\x72\x65\x61\ +\x74\x65\x00\x32\x30\x31\x35\x2d\x31\x30\x2d\x31\x33\x54\x31\x35\ +\x3a\x30\x33\x3a\x33\x32\x2b\x30\x39\x3a\x30\x30\xf5\xf6\x5c\xde\ +\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x6d\x6f\x64\ +\x69\x66\x79\x00\x32\x30\x31\x35\x2d\x31\x30\x2d\x31\x33\x54\x31\ +\x35\x3a\x30\x33\x3a\x33\x32\x2b\x30\x39\x3a\x30\x30\x84\xab\xe4\ +\x62\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\ +\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\ +\x72\x67\x9b\xee\x3c\x1a\x00\x00\x00\x21\x74\x45\x58\x74\x53\x6f\ +\x75\x72\x63\x65\x00\x68\x74\x74\x70\x3a\x2f\x2f\x6a\x69\x6d\x6d\ +\x61\x63\x2e\x6d\x75\x73\x69\x63\x68\x61\x6c\x6c\x2e\x63\x7a\x69\ +\x66\xe3\x5e\x00\x00\x00\x0d\x74\x45\x58\x74\x54\x69\x74\x6c\x65\ +\x00\x47\x6f\x20\x44\x6f\x77\x6e\xf3\xfd\x14\x79\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x01\xd7\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x01\ +\x91\x49\x44\x41\x54\x58\x09\xed\x57\xdd\x6d\x84\x30\x0c\x3e\xa0\ +\x0b\x54\x55\x75\xdd\x06\xba\x40\x17\xe8\x3b\x62\x0c\x6e\x0a\x7e\ +\x76\xa9\x7a\xbc\x76\x92\x4a\x9d\x01\x38\x3b\xcd\x87\x4c\x5a\xd3\ +\x43\x84\xe3\xa1\x44\xba\x8b\x63\x27\xb6\xbf\x2f\x36\x52\x0e\x87\ +\xff\x3e\x02\x10\x90\xa6\x69\x0f\xf9\x16\x73\x5d\xd7\x26\xf6\x9d\ +\x0c\x16\x04\x41\xd7\xf7\xfd\x97\xd4\xf9\x96\x29\xc6\x23\xc5\x08\ +\xe1\x77\x94\x00\x07\xa7\xcc\x9e\x60\x5c\x63\x26\xa6\x3f\xc9\xef\ +\x11\xbe\x87\x4c\xa0\xb8\xf5\xbc\x27\x30\xaa\x01\x49\xbf\xef\xae\ +\x40\xd5\xcb\x18\x2c\x6f\x7e\x05\x2a\x03\x5a\xc6\x2e\x82\xa5\xeb\ +\xcd\x19\xd8\x13\x50\x6b\x60\x69\x17\x5c\x5b\x43\x9b\x5f\x81\xca\ +\xc0\xb5\x08\xf6\x2e\x58\xca\x80\x7a\x05\x4b\x1d\x4f\x9c\x7f\x23\ +\xdb\x3d\xec\xab\x26\x90\x65\x59\xd2\x75\xdd\x3b\x07\x0b\xc3\xf0\ +\xb9\x2c\xcb\x33\xd5\xd6\x2b\x82\x1b\xbd\x5c\xf8\x96\x29\x78\x0e\ +\x9f\x52\x86\x8e\x67\x95\x81\xb9\xdf\x01\xb7\x6b\x2c\xfa\x98\x62\ +\x34\x36\x60\xcc\x3a\x66\xc1\xae\xcd\xb4\xda\x77\x00\x88\x89\xfa\ +\x9c\x7f\x1c\x0d\x3a\x13\xd9\xfe\xa9\x0c\xb8\x88\xe4\xa1\xbf\x64\ +\x89\x1e\x88\x89\x51\x66\xe2\x07\x0b\xab\x30\x00\xa4\x40\xce\x09\ +\x43\x86\x0d\x20\xbc\x27\xc0\xe8\xc9\xb9\xb9\x7b\xa0\xe7\x60\x56\ +\x1e\x58\x60\x1d\x0f\xf5\x0a\xbe\xcd\xf3\xff\x05\xc2\x58\x2b\x64\ +\xbb\x27\x61\xef\xe6\x75\xc2\x02\x6f\x9e\xf3\x30\xa1\xbd\x1f\x55\ +\x55\xbd\xf0\x59\x0c\x7b\xf7\xa6\xef\xa1\xd3\xe6\x28\x8a\x92\xa2\ +\x28\x9a\x11\x03\xf6\xc5\x32\x3c\x1a\xb4\xc3\xac\xa7\xbd\x0f\xae\ +\x1d\xe8\xe9\xbe\xcd\x47\xc7\xb5\xf3\x1a\x49\xb6\x6d\x7b\xa2\x65\ +\x32\x30\xf0\xdb\xe6\x39\x3a\x38\xa6\x33\x0d\x75\x50\x32\x75\x96\ +\xd8\x3e\x93\x3d\xe6\x44\xbd\x15\xa1\x40\x9f\x93\xf3\xc9\x21\x3b\ +\xe2\x02\x11\x97\xac\xfa\x31\x31\x38\xd5\x00\x00\x00\x00\x49\x45\ +\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\x86\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\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\x12\x00\x00\ +\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd2\x02\x01\x0b\x00\x03\xc4\x02\x9d\xda\x00\x00\x02\x03\x49\x44\ +\x41\x54\x78\xda\xbd\x95\xbf\xab\xda\x50\x14\xc7\x3f\x79\x7d\x2d\ +\x0a\xa5\x94\x82\x98\x74\x2b\x05\x41\xfa\x63\x08\x8a\xbc\xff\xc1\ +\xff\xc1\x31\x05\x41\xb2\xb9\x14\xb4\x0e\xdd\x8a\x6e\x25\x20\xd4\ +\xd1\xcd\x41\xe7\x2e\x19\x44\x04\x47\xfd\x0b\x1e\xa8\x9b\xa0\x49\ +\x90\x36\xb7\x4b\xae\xcd\x8b\xfa\x12\x2d\xf4\xc0\x81\x5c\xc8\x3d\ +\x9f\x73\xee\xf7\xdc\x73\xe1\x3f\xd9\x17\x40\x5c\xe8\x9f\x81\xa7\ +\x80\x92\x04\x20\x46\xa3\x91\xf0\x3c\x2f\xd6\x1d\xc7\x11\xb6\x6d\ +\x4b\xc8\xab\x00\x72\xd6\x24\x5d\x78\x9e\xc7\x66\xb3\x49\x5c\x72\ +\x36\x9b\x05\x78\x0b\xac\x81\x5d\x00\x3c\xb2\xdb\xf0\x62\x30\x18\ +\xb0\x5e\xaf\x01\x48\xa5\x52\x54\x2a\x15\xa6\xd3\x29\xb3\xd9\x0c\ +\xc3\x30\xb0\x2c\x0b\x5d\xd7\x29\x16\x8b\x72\x4b\x2a\x88\xa1\x9c\ +\x03\x5c\x54\x81\x10\x7f\x63\xa8\xaa\x0a\xf0\x11\xb8\x07\x36\x80\ +\x7f\x6a\xcb\x03\x40\xb5\x5a\xc5\x75\x5d\xda\xed\x36\xad\x56\x8b\ +\x6c\x36\x8b\xae\xeb\x14\x0a\x05\x19\xf0\x12\x33\x80\x1f\x84\x00\ +\x62\xb5\x5a\x9d\x74\x40\x0c\x87\x43\x91\xd4\xe6\xf3\xf9\xa1\x09\ +\xce\x6a\x20\xcf\x5c\x1e\x4b\xb9\x5c\x4e\x9c\x7a\x3e\x9f\x97\x9f\ +\x2f\x63\x35\x10\x42\xa0\xaa\x2a\x42\x08\xfa\xfd\x3e\xcb\xe5\x12\ +\x80\x74\x3a\x8d\x61\x18\x8c\xc7\x63\x26\x93\x09\xa6\x69\xd2\xe9\ +\x74\x28\x95\x4a\xdc\xdd\xdd\xa1\x28\x0a\xc0\xbb\x93\x1a\x00\x07\ +\x1d\x32\x99\x0c\xcd\x66\xf3\x81\xc0\x49\x2c\x00\x7c\x88\xad\xc0\ +\xf7\x7d\x34\x4d\x43\x08\x41\xad\x56\xc3\x71\x1c\xba\xdd\x2e\xf5\ +\x7a\x1d\x4d\xd3\x0e\x19\x87\x2b\x39\x0b\xe8\xf5\x7a\x27\x35\x68\ +\x34\x1a\xd7\x56\xf0\xfe\x00\xd8\xed\x76\x6c\xb7\xdb\xc4\x1a\xc8\ +\x33\x07\x0e\x55\x58\x96\x85\xeb\xba\x98\xa6\x79\x0c\xb0\x6d\x9b\ +\x5c\x2e\xf7\x28\xe0\x5f\x2a\xf8\x04\x7c\x8f\xbb\xc5\x52\x03\x20\ +\x56\x87\x28\xe0\x16\x78\x0e\xbc\x00\x9e\x05\x23\x44\xfa\x6b\xe0\ +\xe7\xb5\x5d\x24\x2f\xda\x6f\x60\x0b\xec\x81\x9b\xd0\x8c\x52\x80\ +\x95\xdc\x74\x89\x06\xd1\x59\x14\x1d\x7e\xe1\xb5\x02\xfc\xba\x56\ +\x83\x9b\xe8\x51\x47\xdc\x97\x53\x72\xb1\x58\x24\x0e\x1e\xfa\xd7\ +\x4f\x94\x0c\xf0\xf5\x8a\x27\xf5\x1b\xf0\x46\x49\x98\xd4\x63\x4d\ +\xa0\x44\xdf\x96\xc0\xf7\xc0\x26\x29\x40\x01\x9e\x04\xc1\xa3\x4d\ +\x70\x2a\x86\x08\x1a\x67\xaf\x5c\xf8\x88\xc4\x35\xc5\x91\x9e\x7f\ +\x00\xb7\xae\x9e\x43\x7d\xb2\x82\x67\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ \x00\x00\x04\x4f\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -6525,316 +6200,217 @@ qt_resource_data = b"\ \x48\x26\x93\x5b\x3a\x3b\x3b\xef\x1a\x1e\x49\x35\x18\x6e\x90\xda\ \x92\xed\x5d\xc0\xa7\x65\xc0\xbd\xff\x00\x7c\x02\xcd\x92\x88\x3c\ \x0a\x8c\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0a\xfb\ +\x00\x00\x08\x96\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x0a\x8d\x49\x44\x41\x54\x78\xda\xed\ -\x9a\x5d\x88\x5d\x57\x15\xc7\x7f\x6b\xef\x73\xee\xbd\x93\x3b\x33\ -\x99\xc9\x57\x9b\x8f\x36\x4d\x93\xd2\x54\x6d\x5a\x8a\x6d\xb5\x05\ -\x5b\x29\x05\x5f\x0c\x54\x2a\x88\x2f\x16\x41\x6c\xc5\x22\x14\xd1\ -\x17\x1f\x7d\xb1\x42\xc5\x52\xf0\x31\x42\x5f\xaa\xd0\xaa\xd5\x46\ -\xb0\x54\x90\x52\xa5\x82\x6d\xac\xd4\xa4\x24\x4d\xd3\x4c\xcd\xe4\ -\xab\x99\x4e\x3a\xf7\xfb\x9c\xbd\xbc\x73\xcf\x3e\xb3\xe6\xce\x4c\ -\x26\x93\x20\x82\xe0\x86\x35\x7b\xdf\x7d\xf6\x39\x67\xfd\xd7\xfa\ -\xff\xd7\xde\x07\x26\x51\x55\xfe\x97\x5b\x02\xfc\xef\x03\x10\x79\ -\x8a\xb5\xb5\xfc\xa1\xc4\xcb\x63\xd5\x6a\xba\x03\xc8\x89\x2d\x68\ -\x61\x00\x22\x50\x49\x33\xfe\x33\x99\x4d\xc9\x73\x59\xfc\x2c\xdf\ -\x69\x77\x8f\x06\xe5\x19\xf0\x2f\xab\x3e\x71\x25\x19\xc8\x1f\xdf\ -\x7d\xcb\xe6\xa7\x1f\xf8\xfa\xbd\x8c\x6c\xdb\x04\x79\x00\x20\x00\ -\x93\x23\x30\x5e\x53\xb2\xe0\x09\xb3\x67\xd8\x5b\x3f\xc7\xf8\xfa\ -\x3a\x21\x5c\x1d\x08\x11\x41\xb3\x2e\x7f\x39\x1a\x98\x9d\xd8\xcb\ -\xba\x11\x45\x15\xbc\x17\x4e\xbf\x33\x7d\xcb\x6f\x7f\xf6\xda\xfe\ -\xe9\xa9\xd9\x87\x81\xe7\xd7\x08\x20\x4c\x8e\x8f\xd5\xbe\xbf\xff\ -\x07\x5f\xe4\xaf\xcd\x8d\xcc\x4e\x83\x77\x20\x02\x59\x80\xfb\x6f\ -\x84\x5d\x9b\x61\xb6\x05\xa2\x4d\x76\xef\xf2\x6c\xd9\xb2\x91\x3c\ -\x0f\x57\x0d\xc0\xd3\xe6\xc5\xd7\xcf\xf1\xf7\xc6\x04\xbb\x6e\x76\ -\x68\x0e\x12\x60\xd3\x67\x36\xf0\x8d\x1b\x37\xf0\xe4\x23\xbf\xfc\ -\xce\x95\x00\xd8\xba\xf3\xe6\x8d\x1b\x3f\x4c\x27\xf9\x60\x1a\xd6\ -\xa5\x10\x04\x5c\x04\xd0\x6a\x06\x2e\xce\xf6\xad\xe5\x48\xfb\xe3\ -\xe3\xc7\xa7\x39\x75\x6a\x06\xd5\xb5\x3b\xbc\xb8\xa9\x2a\xd5\xa4\ -\x47\xb3\x51\xa1\xa7\x4a\xde\xa5\x00\x20\x30\x7d\x1a\xee\xb8\x61\ -\x33\xdb\x77\xad\xdf\x7d\x25\x22\x76\xce\x3b\x51\x15\xd2\x04\x12\ -\x0f\x02\x88\x14\x96\xe7\xd0\x6a\x43\xb3\x6f\xa3\x99\x50\xab\xa5\ -\x7d\xab\xac\x49\x07\xaa\x90\xb8\x1c\xe7\x14\x80\x4e\xcf\x01\x8e\ -\x4a\x02\x3e\xf5\x88\x53\x9c\x03\x55\x7b\x67\xde\x13\x5c\xbf\x5d\ -\x02\x80\xae\xf8\x1a\x45\x0b\x87\x89\x4d\xcc\xba\x19\xcc\x35\xa1\ -\xd1\xb7\x8a\x08\xa3\xa3\x23\xd4\xeb\x97\xd7\x80\x77\x42\xb3\xd9\ -\xe2\xd5\x37\xdb\x9c\x9d\xad\xe2\x7d\xe0\xbe\xdb\x33\xb6\x5d\x33\ -\x89\xa7\x4b\x92\xe4\x08\x45\xa6\x03\x0c\x80\x10\x83\xa6\xfd\xb6\ -\x04\x40\xb8\x1e\xc2\x23\x95\x24\xdd\x87\x10\xcc\xf5\x3e\xe0\x2c\ -\x9d\x9c\x3a\xfe\x51\xda\x78\xfa\x20\x1f\xce\x05\x44\x73\x44\x0c\ -\xee\xc5\x54\x79\xd3\x05\x7a\xb9\x50\x91\x36\x7f\x5e\xdf\x23\x49\ -\xfc\xaa\x14\xf2\x3e\xe9\x9b\xa3\xd7\x47\x7f\xe8\x58\xc2\xe9\x8f\ -\x2a\x90\x2b\x9d\xaf\x55\x78\xf4\x9b\x5b\x48\x05\xbc\xef\x40\xa4\ -\x2a\xae\xe8\x15\x08\x5a\xf4\x18\x80\xb0\xaf\x3e\x9a\xbe\xf4\xa5\ -\x6f\xdd\xb3\x63\xfd\x9e\x6d\xe4\x99\xc2\x00\x25\xd4\x52\xd8\x54\ -\x87\x2c\x53\x5a\xb3\x0d\x76\x57\xa6\xd8\xbb\x7b\x23\xbd\xdc\xbc\ -\x53\x04\x0b\xb6\x90\x05\x59\x95\x3e\x89\x87\x43\x6f\x9f\xe7\xad\ -\xb9\xeb\x19\xdf\x38\xc2\xcd\x5e\x49\x12\x08\x9d\x0e\xbf\x3f\xf0\ -\x37\xce\x9d\x3e\xc4\x8f\x7f\x74\x7b\x7f\xae\x87\x8b\xdc\x77\x62\ -\x94\x55\x2d\x0c\x03\xa0\xdf\xdb\xff\xd8\xbd\x3b\xf2\x7b\x3e\xcd\ -\xab\xef\x81\x8f\x68\x73\x85\x1b\x46\xe1\xd6\x3d\xd0\xed\xc1\xdc\ -\xc5\x16\x7b\xea\x19\xfb\x6e\xbd\x9e\x5e\x16\xb8\xda\x56\x4d\x85\ -\x33\x33\xf0\xdc\xeb\x5b\xb9\xed\xb6\x71\x5a\xf1\x51\xa3\x75\xf8\ -\xea\x0f\xb7\xf2\xec\x77\x5f\xe0\xf0\xe1\x8f\x18\xa9\xd5\x91\x66\ -\x41\x9d\x10\x0c\xc0\xfc\x38\x2c\x06\x30\x3e\x56\xbd\x77\xc7\xdd\ -\x37\xf1\xe2\x3b\x40\x66\x25\x52\x81\x46\xaa\xcc\x5c\xc8\xe9\x76\ -\x85\x4e\x2b\x70\x6a\x76\x86\x6e\xa3\x49\x50\xae\xba\xa5\x89\x72\ -\xe6\x4c\x9b\x76\x03\xda\x2d\x90\xe8\xdc\xb9\x26\x4c\xec\x1c\x63\ -\xef\x5d\x3b\x78\xf7\xe8\x2c\xd5\xea\xfa\x02\x00\x0c\x51\x29\x2c\ -\xcd\x80\x38\xf1\x01\x47\xea\x20\xf8\x32\x03\x86\xb2\xdd\x86\x4e\ -\x57\xe9\x76\x20\xa9\x27\x54\xab\x09\x6b\x29\xf1\x0a\x78\x09\xa4\ -\x3e\x80\x40\x2f\x73\x04\x75\x03\x00\xe9\xa0\xc2\x14\xef\x02\x70\ -\xa5\x83\x01\x10\x8f\x13\x87\x4f\x04\x11\x5d\x46\xa1\x65\x00\x50\ -\x14\x8d\x0f\xb0\x85\xb8\xe8\x45\xb3\xad\x74\x3a\xd0\x6b\x07\xaa\ -\x1b\x52\xc6\xc6\x46\xc9\x83\x5e\x7e\x37\x0d\x3d\x0e\x1d\x99\xe1\ -\xd8\xe9\x75\x84\x1c\xf6\x6c\x6d\x72\xc7\x27\x26\xa9\x54\x52\xaa\ -\xb5\x1c\x89\x95\xad\x34\xca\x4a\xa3\x90\x24\x0e\xef\xbd\x55\x21\ -\x03\xb1\x1c\x80\x52\x4c\x98\xe3\x51\xf1\xf3\x16\x94\x76\x7b\xde\ -\xa0\xd7\x81\x4a\x9a\x32\x32\x92\x92\xe5\x97\x07\x90\x48\xce\x3f\ -\x4e\x8c\xf2\xcc\xef\x76\x41\x57\x79\x74\xff\x09\xee\xbf\xcb\x23\ -\x2e\x25\x4d\x93\x62\xc7\xb5\xa0\x45\x3f\x0a\x07\x7d\xe2\x48\xbc\ -\x8b\xd1\x37\x0a\x89\xb3\x35\x43\x65\x34\xa8\x21\x74\x0e\x9c\x3d\ -\x90\x56\x4b\x69\x77\x20\xeb\xea\xfc\x83\x63\xfa\x2f\x0f\x20\x75\ -\x09\xe2\x7a\xd0\x53\x00\x92\xf2\x5e\xef\x49\x13\xb7\xe0\x38\x62\ -\xef\x93\xe8\x4b\xe2\xdc\xe0\x5d\xc2\x30\x33\x5c\x14\xb1\x95\xd1\ -\xe8\x64\x1e\x86\x1f\x26\x18\xda\x66\x04\x90\x77\x75\x50\xdf\x2b\ -\x15\x8f\x64\x6b\x01\xe0\x71\x25\x27\xa4\x88\xea\xfc\xbd\x38\x4f\ -\x92\xfa\x21\xe7\x1c\x31\xe3\x14\xbe\x78\x97\x91\x38\xf3\x43\x82\ -\xe9\x64\x45\x0a\xe5\xc1\x68\x23\x25\x17\xc5\x32\xd0\x6a\x43\x18\ -\x54\x28\x5f\x6c\x52\xac\x01\x80\xf7\xf8\x52\xa5\x30\x18\x27\x49\ -\x01\x20\xf2\xdb\xa2\x8b\x05\x50\x81\x67\x9e\x0f\xf4\xb6\xd4\xd8\ -\x70\x8b\xd1\xcc\x00\xac\x40\x21\x8d\x4e\x6b\x18\xf4\xc6\xb7\x8c\ -\xbe\xf3\x05\x00\x72\xe6\x1d\x18\xd0\x00\x59\x1b\x00\xa7\x0e\xda\ -\x02\x30\x18\xa7\x15\x0f\x32\x4f\x21\x8f\x08\x98\xd9\x79\x47\x83\ -\x32\x53\xdf\xc0\xbe\xfb\x36\x30\x31\xaa\xe4\x19\xb8\xa5\x14\xd2\ -\xa5\x14\xca\x41\x18\x46\x2a\x51\xc4\x65\x06\xc8\x75\xc0\xe3\x6a\ -\x65\x6d\x1a\x70\x24\x6c\xbf\x36\xe7\xee\x3b\x2f\x02\x0c\xc6\xce\ -\x25\x83\x00\xf4\x6d\x58\xa0\x50\xfc\x89\x74\xde\xbc\x05\xb6\x6e\ -\x87\x6e\x53\x08\x6a\x41\x9d\xef\x43\x0e\xba\x5c\xc4\x31\x12\x6e\ -\x58\xcc\xaa\x45\x06\x9a\x2d\x10\x55\x7c\x92\x0c\xa2\xa8\xb2\x96\ -\x93\x66\x95\x87\x1f\x9c\xe0\xcb\x0f\x6a\xcc\xf2\x04\xe2\xab\x24\ -\xa9\x2b\x34\x20\x82\x49\x04\xc4\xce\x3a\x5c\x3b\x02\xbb\xc6\xa0\ -\x9b\x2a\x4e\x84\x56\x06\x17\xda\xf1\x08\xaf\x10\x96\x6b\xc0\x28\ -\x24\x60\x7c\x0b\x46\x21\xa7\x8a\x73\xd2\x37\xd7\x37\x65\x2d\x6d\ -\x62\x62\xdc\x0e\x7e\x0a\x21\x68\xf1\x6c\xef\x10\x86\xb3\x4e\xe4\ -\x77\x96\xc3\x67\xb7\x35\xf8\xca\xde\x39\x5a\xad\x0c\x27\x8e\x57\ -\xde\xaf\x73\xa1\xe5\x57\x16\x31\x6a\x22\x66\xa1\x8c\xda\x79\xa8\ -\xd9\x54\x1a\x7d\x4b\x45\x19\xa9\x40\xad\x92\x91\x88\x72\xb5\x2d\ -\xa9\xc0\x68\x75\x21\xea\x66\xa5\x2f\x0a\x1b\xc7\xab\x6c\x1a\x5f\ -\x47\x3e\xd2\xa5\xd1\x68\x01\x0a\x97\xd4\x40\x34\x27\xa0\x4b\x28\ -\x04\xd0\xcd\x21\x0b\xd0\x0b\x9e\x9f\xfe\x2a\xe1\x9a\xc9\x16\x59\ -\x86\xf1\x1d\xac\xc9\x2a\xba\xc0\x4e\xa3\xc7\xa7\x52\xf0\xbe\x3f\ -\x1e\xde\x44\x89\x0e\xce\x53\x15\x5c\xbf\xaf\x92\x85\x26\x79\x50\ -\x9c\xc3\xaa\x10\x4b\x34\x60\xa7\x3d\x33\x02\xd4\xd6\x7b\x6e\xfc\ -\xdc\xd8\x42\xb4\x0e\x77\x26\xf8\x67\x0b\xa3\x99\x23\x8a\x31\xce\ -\x11\xc7\x8b\x37\x45\xb0\x35\xb1\xb6\x27\x37\xc1\x9d\x63\x10\xb2\ -\xe1\xe3\x32\x91\xdf\xd6\x74\x40\x3b\x0d\xf6\x3e\x5d\xb6\x0f\x0c\ -\x53\xc8\x8e\x16\xe5\x8b\x53\x59\x40\x3f\x5e\x03\x6f\xce\x61\xe5\ -\x6d\xc9\x98\xe5\xd7\xc5\x0d\x5f\x93\xf8\x1e\x5b\x63\x7a\x04\xb0\ -\xe0\x86\xb8\xd1\x1a\xad\x55\x57\xc8\x80\xf3\xd0\x53\xd8\x35\x09\ -\x37\x6c\xb0\x07\x89\x58\x2f\x0c\x8f\x05\xe3\x86\xb3\x75\x36\x1f\ -\x3b\x9b\xb3\xdf\x10\x41\x00\xe7\xdb\x16\xf9\x10\xec\x3d\x1a\x01\ -\xa8\xea\x50\x06\xc2\xb2\x0c\xa8\x3d\x74\x53\x5d\x79\x60\xf3\x71\ -\x5c\x68\xa3\x08\x22\xf3\xe6\x70\xae\x18\x23\x71\x0e\x87\xb8\x72\ -\x2c\x88\x2b\x7b\x17\x29\xe4\x90\xb8\xd6\x95\xf7\x39\x37\x18\x4b\ -\xb4\x4a\x22\x1c\x39\x5f\xe3\x95\xa9\x0a\x4e\xac\xa4\x23\xc3\x5f\ -\xe4\x41\x2f\x71\x9c\x36\x94\x46\x83\x2c\x57\x7c\xf6\x31\x9b\x27\ -\xc6\x49\x6b\x63\x20\x1a\x69\x23\x0b\x20\xc4\x81\x17\x89\x7b\x87\ -\xe0\x88\x34\x2b\x1d\xf6\xa5\x0f\xe6\x2c\x10\x03\x00\x12\xe7\x43\ -\xaf\xc5\xbb\x17\x72\x3b\x4a\x5b\x74\x97\x01\x70\x52\xd0\x57\xc3\ -\xca\x1b\x59\x04\x60\x9a\xa8\x8d\x4e\x52\xed\x9b\x86\xf8\x95\xe6\ -\x30\xfe\x4a\x61\x5e\x2e\x39\xbf\xa6\xd6\xee\x76\xe8\xe5\x8a\x60\ -\x1a\x08\xcb\x34\xa0\xf3\x66\x7b\xd3\x6a\x14\x32\x00\x3a\x40\x8e\ -\xda\x37\xa8\x0f\xa0\xb2\x04\xec\x7c\xaf\xe5\xbc\x39\xaf\x26\xf2\ -\x55\x9b\x6a\x18\x38\x07\x31\xfb\x40\xae\xcb\x44\x5c\xe8\xc2\x19\ -\x00\x65\xb9\x88\x63\x14\x4d\x38\xe5\xe7\x9c\x94\xa0\x88\x62\x0d\ -\x10\x5c\x1c\x97\x11\x73\x10\xa7\x08\xd8\xbc\xc4\xac\x5c\xa2\x59\ -\xd5\x11\x03\x6b\x1c\x8f\xbf\x8d\x42\xab\x1c\xa7\x15\x2a\x2e\x02\ -\x08\x45\x06\x04\x4c\xf5\x21\xf6\xab\x80\x10\x57\x02\xb0\xf9\xbc\ -\xa4\x9f\xac\x9e\x81\x32\x78\x30\xbc\xd3\x6a\x28\x35\xa0\x45\x76\ -\xdd\x0a\x3b\x31\x6a\x1b\x99\xf1\x50\xb1\xf2\x17\x91\x63\x99\x50\ -\xc0\x1b\x88\x62\x6d\x19\x71\xac\xd9\x7c\x19\xe1\xe5\xfc\xce\x83\ -\x5a\x06\x22\x5d\x75\x71\xf4\x43\xb0\x2f\xc6\x15\x35\x80\xf1\xd7\ -\x89\xdd\x04\x5a\x7e\x29\x19\x2d\xb0\x4c\x88\x65\xa2\x88\xf6\xe0\ -\xb7\x1d\x49\x82\x1a\x20\x29\x69\xe2\x96\x55\x98\xb8\xdf\x58\xb6\ -\x8d\x22\x71\x1c\xd4\x02\xec\x20\xac\xbc\x91\x99\xf8\x54\x25\x46\ -\x45\x71\xce\xf4\x11\xb0\xc3\xd4\x72\x4d\xd8\x1a\x00\x62\xc4\x88\ -\xeb\x3c\x10\xb0\x79\x6b\x45\x06\x9c\x60\xeb\x43\xd1\xdb\x29\x21\ -\xd2\xcc\x18\x82\x22\x2b\x7f\x13\x7b\x57\x44\xc5\x28\x54\x18\x98\ -\x80\x9c\x5b\x19\x84\x2e\xd6\x80\x09\x9b\x82\x19\x96\x09\x35\x4d\ -\xc4\xe8\x2a\x56\x7a\x87\x0f\x6b\x8a\xed\x03\x89\x40\xea\xb1\x33\ -\xc8\x4a\x1b\x19\x02\xaa\xa6\x01\x43\x6d\xe5\x33\xb0\x32\x08\x82\ -\xed\x09\x6a\xc2\x2e\x9d\x37\x0a\x9a\xb0\x23\x85\x14\x00\x11\x63\ -\x43\x45\x7a\x40\xe8\xf7\x6d\xea\xd5\xc0\xba\xaa\x52\x19\x81\x86\ -\xc2\xb1\x23\x17\x60\xf6\xe2\xc9\x21\x0a\xe5\x5a\x02\xb0\xb4\x21\ -\x3a\x9c\x81\xc5\x20\x74\x15\x61\x0b\x50\x8a\x39\x98\xf8\x70\xa0\ -\x45\x07\xa1\xe4\xb3\x92\xc7\x8d\xcc\x3b\xdb\xbd\x9f\xfd\xd3\x0c\ -\x6f\x25\xa7\xe8\x75\x32\x54\x2b\x9c\x68\xf5\x68\x4b\x8b\xf7\x8e\ -\xcd\x72\xf8\xb9\x57\x20\x6f\x1d\xc0\x28\x64\xd1\x22\x8a\x68\x25\ -\x0a\xc1\x62\x2d\x2c\xd7\x84\x62\xd1\x46\x6d\xed\xe2\x52\xeb\x2c\ -\x23\xb1\x44\x86\x72\x1f\x30\x90\x22\x1c\x3c\xf0\xc6\xf9\x83\x07\ -\x8e\x34\x58\xc0\xa4\x80\x7a\xb4\xf7\x1e\x64\x3f\x81\xe4\x05\x2c\ -\x03\x42\xae\xca\xfb\x53\x27\x98\x6b\x34\xd8\xb7\x73\x37\x20\xe5\ -\x3e\x60\x14\x92\xe8\x98\x46\xd1\xea\xca\x9a\xf0\x80\x9a\x26\x50\ -\x93\x04\xaa\x20\xc5\xfd\xa6\x01\xb5\x0c\xb0\x50\x61\x3a\x8f\x03\ -\xcf\x01\x75\x30\x51\x83\x74\xc0\x67\x30\x5c\x85\x24\x04\xe8\x4c\ -\xbf\x4d\x6b\xe6\x2c\xf9\xd6\xed\x28\x0e\x19\x3a\xfa\x46\x87\x17\ -\x8f\x31\x70\x5c\x42\x13\x16\x71\x0c\x8d\xd8\xfd\x01\x25\x37\xed\ -\x40\x3c\xef\x83\xeb\xc4\x99\x06\xab\xb4\x84\xc8\x21\x15\xf8\xd4\ -\x9d\x5f\x20\x64\x39\x89\x3a\xf2\x3c\x47\x5c\xac\x4a\x56\x9f\x11\ -\xb5\x7d\x01\x35\xea\x40\x14\xac\x62\x6b\x25\xf6\x98\xb0\x8b\xdf\ -\x96\x11\x82\x12\x72\x8d\xef\xb2\x7d\x68\x2d\xcd\x00\x64\xdd\xa3\ -\x1f\xbe\x7b\xf6\xba\x7c\xdf\x1e\xd6\xe1\x09\xad\x9c\x5a\x1a\xa8\ -\x4a\x17\x2f\x19\xce\xe5\x84\xc8\x03\x2d\xab\x94\x13\x94\x62\x8c\ -\x9a\x73\xaa\x71\xde\x36\x2e\x3b\x76\x0f\x7e\x47\x93\xc2\xba\x69\ -\x4e\x25\x55\xaa\x15\x48\xab\x70\xf2\x78\x60\xee\xe4\xd9\x1c\xdc\ -\xf4\xda\x01\x10\x9e\xfa\xe0\xd7\x7f\xfc\xfc\xab\x49\x2a\xd7\x7e\ -\xf2\x3a\x5c\x1e\x68\x9e\xdd\xc9\xc1\x13\x6d\x90\x93\x58\x93\x28\ -\x36\xc1\xbe\xae\x5c\xbc\x24\x46\x37\x71\x71\x2c\xf1\x52\x79\x5d\ -\x6c\xce\x95\xeb\x6b\xfc\xab\x51\xe5\x22\x4a\x73\xae\xcd\x1b\xbf\ -\x78\x8d\xec\xe4\xfb\x2f\x43\xfa\xfa\x15\x00\xf0\x2f\x85\x8b\xb3\ -\x0f\x4d\xfd\xfc\x85\x6f\x4f\xd5\xc7\x77\x23\xe8\xeb\x9a\x98\x6a\ -\x57\x6d\x0a\x5c\xcd\x12\xc5\x82\xa2\xe0\xd4\xd1\xe9\x34\xe8\x7e\ -\xfc\x07\x48\x9e\x04\x74\xcd\x00\x54\x9f\x00\xf8\xcd\xbc\xfd\xff\ -\xbf\x55\xfe\xcb\xed\xdf\x99\xd5\xe1\x33\x6b\x2f\x52\xdc\x00\x00\ -\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x08\x19\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x08\x4b\x49\x44\x41\x54\x68\x81\xed\x99\x59\x6c\ +\x5c\xd5\x1d\x87\xbf\xbb\xcc\xea\x59\x3c\xbb\x97\xc4\x4b\xbc\x11\ +\x27\x26\x09\x01\x15\x2a\x14\xd4\x96\x50\xa9\x0b\x11\x09\xa8\x55\ +\x91\x20\x2f\x54\x95\xda\xbe\x54\x7d\xaa\x5a\x35\x20\x2a\xf1\x90\ +\x87\x2a\x40\xa1\x2a\x05\x4a\x68\x1a\x22\x91\x92\x86\xe0\x42\xd2\ +\x34\x24\x61\xb1\xe3\x38\xb6\x63\x3b\xc1\x8e\x67\xbc\x3b\x33\xe3\ +\x75\x3c\xcb\x9d\x99\xbb\xf4\xc1\xa4\x35\x59\x88\x1d\x4c\xcd\x83\ +\x3f\xe9\x3c\xcd\x3d\x67\xbe\xdf\x3d\x77\xce\xcc\xff\x3f\xb0\xc2\ +\x0a\x2b\xac\xb0\xc2\x17\x40\x58\x6e\x81\x9b\xb2\x0b\x91\x20\x15\ +\x38\x88\xf2\x18\xa9\xab\x5f\x16\x97\xc3\x69\xc1\xbc\x48\x0d\x21\ +\x3e\x10\x4c\x42\x1f\x09\x22\x3c\xce\xba\xab\x2f\x91\x96\xc3\xeb\ +\xa6\x18\x08\x04\xf9\x19\x08\x07\x03\x45\xc1\xca\xfa\xda\x3a\xd2\ +\x8a\x52\xa0\x8c\x2a\xe5\xb4\x70\x04\xc8\x5e\xb9\x54\x5e\x46\xcd\ +\xeb\xf3\xbc\x6d\xb5\xf0\xac\xfa\x8a\xc5\x6a\xfa\x56\x79\xd5\x2a\ +\xbe\x53\xbd\x86\x98\xa2\x70\x49\x17\x11\xf2\x92\xd5\x40\x0b\x01\ +\x33\x57\x2e\xff\x4a\x05\x90\xf6\x58\x1f\x13\x54\xfd\x59\x7f\x49\ +\xd0\xb5\xb1\xae\x8c\x9d\x95\x95\x1c\x8b\x46\x79\xbf\x3b\xcc\xec\ +\xe5\x64\xc6\x38\x66\x9c\x02\x94\xf9\x73\xbe\x12\x01\x6c\x7b\x6c\ +\xab\x54\x55\x7c\xc5\x24\x99\xee\x5f\x5d\x5b\xc4\xb6\xba\x4a\xb6\ +\x95\x96\xb2\x6f\x70\x90\xf7\x3a\xc3\x44\x7b\xc7\x33\xfa\x5f\xb5\ +\x17\xe9\xd7\x4f\x00\xa3\xf3\xe7\x2e\x7b\x00\xeb\x6e\xf7\x8f\xf5\ +\x1c\xbb\x7d\xa5\x2e\xe7\xda\xba\x12\x76\x56\x95\x53\xe3\x32\x73\ +\x70\x70\x84\x77\x3a\xc3\x44\x7b\x26\xb2\xfa\x81\xfc\xcb\x7a\xbb\ +\x7a\x18\xf8\x08\x50\xe7\xcf\x5f\xb6\x00\xce\xdd\x4e\xbf\xaa\x99\ +\xfe\x28\x49\xd2\xf6\xe2\x3a\x1f\x5b\xd7\xae\xe6\xc1\x32\x1b\x79\ +\x71\x98\xc6\x51\x0f\x6f\x75\x86\xb9\xdc\x3d\xa1\xaa\x87\x73\xaf\ +\x69\x2d\xf9\x43\xc0\x87\x40\xee\xea\x75\x96\x25\x80\xfd\x99\xd0\ +\x36\x2d\xaf\xbf\xe4\x0a\xd8\xfc\x55\xeb\x82\x3c\x5a\x53\x46\xd0\ +\xdb\xc7\x34\x59\x7a\x46\x6b\x38\xd0\xd6\xc7\x58\xc7\xa4\xaa\x1e\ +\xc9\xbe\xa6\x9d\x56\xfe\x0e\x9c\x66\xde\xc9\x33\x9f\xeb\x07\xd8\ +\x55\x61\xb5\xca\xd9\x90\xf2\xeb\xb1\x81\x25\x35\xdf\x55\x62\x77\ +\x48\xfa\x6e\x51\x10\x7f\x52\xb4\xd6\x2f\xdc\x53\x5b\xc4\xf6\x4a\ +\x3b\x31\xf3\x09\x14\xdc\x0c\x8c\xae\x67\x5f\x7b\x3f\xa3\x1d\x93\ +\x46\xfe\xb4\xf2\x56\xfe\x74\xfa\x2d\xe0\x24\x90\xb9\xd1\x92\xd7\ +\x7c\x13\x17\x3e\x5d\x5c\xae\x6b\xe2\x49\x41\x14\xca\xf4\xa4\xfe\ +\xb1\x31\xaa\x6d\x4b\xee\x8d\xc6\xbe\xa8\xbb\xf3\xa9\xd2\x7b\x04\ +\x43\xd8\x6b\x2d\x34\x57\x95\x37\x78\xf9\xc1\x6d\xa5\x54\x06\xe2\ +\x8c\xc9\x2d\x14\xe8\x41\x62\x97\x37\xf1\xfa\xf9\x61\x86\x5a\xc7\ +\xc9\x36\x25\x0f\x67\x0e\x4d\xfd\x05\x38\xc6\xbc\x23\xf3\x7a\x5c\ +\xb3\x03\x86\x6a\x7e\xc2\x19\xb4\x96\x15\xd7\xbb\x18\x39\x3f\x73\ +\x77\x4a\x4d\x35\x59\xb7\xb8\xbf\xa9\x9c\x9c\x89\xdc\x92\xf9\x9e\ +\x6a\x8b\x7b\x32\xf7\xa4\x80\xf0\x4b\xef\x1a\xa7\xd4\x50\xef\xe5\ +\xe1\x2a\x0f\x82\xf3\x13\xe2\xe2\x28\x36\xdd\x47\x32\xbe\x99\xbf\ +\x75\x8e\x30\x72\x76\x9a\x5c\xab\xf2\x5e\xe6\xd0\xd4\x3e\xe0\xf8\ +\xcd\xe4\xaf\x1b\x40\xcc\x4a\x26\x51\x17\x59\xef\x75\xe1\xdd\x6c\ +\xa5\x4b\x8b\x57\x24\x75\xf9\x38\xb0\xe8\x10\x85\xbf\xa9\xdc\x20\ +\x44\xf5\xd7\xcd\x2e\xeb\xfa\xe2\xf5\x6e\xb6\xd6\xf8\xb9\xbb\x4c\ +\x27\x65\xb9\x40\x96\x04\x66\xdd\x4d\x26\xb6\x91\x57\xce\x8f\x31\ +\x7c\x66\x86\x5c\x47\xe6\xfd\xf4\x9b\xf1\xd7\x80\x7f\x01\x53\x0b\ +\x79\x8f\x6b\x7e\x4a\x38\xbe\x5e\x38\x94\x4f\xf3\x53\xd5\x2b\x0b\ +\x8f\xd7\x17\x33\x61\x17\x99\x49\xa9\x85\x86\xcd\xb4\xc3\x70\xcb\ +\x87\xb5\xbe\xf4\xe4\x4d\x57\xdd\xb5\xce\xec\xbb\xd7\xf3\x3b\x11\ +\xf1\x55\x4f\x95\xa3\xe8\xf6\x3b\x03\xec\x6c\x08\xb1\xa6\x78\x96\ +\xac\x39\x8a\x86\x82\xa0\x59\x98\x8d\x35\xf0\x6a\x7b\x9c\xa1\xe6\ +\x69\xb2\x9d\xc9\x53\xc9\x03\x63\x7f\x66\xee\xb1\x59\xf0\x23\x7b\ +\x4d\x80\xf4\x07\xd3\x13\xf6\x3b\xfc\x5b\x74\x49\xaa\xf4\x15\x59\ +\xf8\xf6\x6a\x3f\x63\x26\x83\x44\x52\x77\x21\xcb\x3b\x64\x93\xf0\ +\x76\x6e\x30\x3d\x71\xa3\x05\x03\xbf\x5a\xb7\xd1\x96\xd3\xdf\xb5\ +\x14\x98\x1e\x2a\xd9\xe4\x11\xbf\xbb\x21\xc8\x83\x35\x2e\xac\xee\ +\x69\x54\x29\x85\x4e\x0e\x43\x17\x48\xc6\x6b\x78\xbd\x7d\x9a\xe1\ +\x33\x09\xb2\x17\x53\xcd\x89\xfd\xc3\x7f\x02\xde\x03\x2e\x2f\x54\ +\xfe\xba\x01\x00\x0a\xee\x0a\x0c\x6a\x0a\x3b\x33\x1e\x91\xfb\xcb\ +\xaa\xd9\xe8\xf7\x32\x20\x27\x99\x4d\xea\x2e\xdd\x6e\x79\x44\x74\ +\xca\x8d\xb9\x48\x32\xfe\x99\x49\x8f\x3c\x22\x05\xbf\x27\xfe\x56\ +\x34\x84\xbd\xee\x32\x5b\x51\xcd\xe6\x42\x7e\xb8\xce\x47\xc3\x6a\ +\x13\xa2\x2d\x8d\x26\x28\xe8\x64\xd1\x75\x9d\xd9\x68\x25\xfb\xce\ +\x27\x19\x6a\x4e\x90\xb9\x98\x6e\x9d\xd9\xd7\xff\x02\x73\x77\x7e\ +\x64\x31\xf2\x37\x0c\x90\x6e\x1e\xef\xb7\x6f\x0c\xee\xd0\x4c\x52\ +\xc8\xe1\xcb\x70\x5f\xc9\x03\xac\x72\xa6\x19\x92\x52\x24\x53\x38\ +\x0c\x93\x69\x87\xe8\x92\xfe\x1b\xc2\xff\x8b\x0d\xb5\x4e\xf7\xc4\ +\x11\x93\x55\x7e\x34\xb0\xc1\x29\x6e\xd9\x58\xc8\xf6\xb5\x5e\x8a\ +\xfd\x32\x82\x9c\x43\x63\x4e\x5e\xd3\x35\x66\x62\x25\xbc\xd1\x91\ +\x66\xe0\xa3\x24\xe9\x4b\xe9\xce\xa9\xfd\xfd\x7f\xc0\x30\x8e\x02\ +\x83\x8b\x95\xbf\x61\x00\x80\x82\x0d\xa1\x84\x96\x93\xb6\xe7\xfc\ +\x02\xf5\x01\x99\x3a\xcf\xd7\x08\x16\x4c\x31\x24\x65\x48\xa5\x05\ +\x07\xa2\xf5\x61\xc1\x69\x69\xf4\x3d\x54\xfd\x23\x49\x10\xdf\x74\ +\xac\xb2\x94\x97\xdf\xe1\x60\x5b\x83\x9b\x7b\xd7\xf8\x71\x3a\x44\ +\x34\x21\x8b\x86\x82\x46\x16\x55\xcf\x33\x19\xf5\x71\xa0\x5d\xa1\ +\xbf\x49\x41\x89\x64\x7a\xa6\x0e\xf4\x3e\x67\xe4\xf5\x63\xc0\xad\ +\x9d\x70\x9f\x17\x20\x55\x75\x5f\xb7\x53\x9a\x7a\x22\x6f\x11\x9d\ +\x85\x81\x24\xb5\xde\x0a\x8a\xec\xab\xf0\x17\x4c\x33\x2c\x2a\x64\ +\x52\x82\x43\xb4\xda\x76\x9a\xac\xf2\xf7\x3d\xeb\xac\xf2\x9d\x9b\ +\xec\x6c\xaf\xf7\x71\x5b\x89\x0f\xd9\xac\xa3\x31\x4f\xde\xc8\x31\ +\x11\x73\x71\xb0\x3d\xcf\x60\x53\x0e\x65\x40\x19\x1e\x3f\xd8\xfb\ +\xbc\x9e\x56\x8f\x01\x3d\xb7\x2a\xff\xb9\x01\xe8\xee\x36\x9c\xeb\ +\x8b\x44\x43\x95\xb6\xaa\x7e\x81\xea\x80\x80\xcb\xea\xc2\x6f\xf7\ +\xe3\xb3\x27\x18\x11\x73\x64\x55\xd1\x14\x6c\xb0\xf0\xc0\xed\x76\ +\xb6\xd6\x95\x12\xf2\x38\xd0\xc5\xdc\x55\xf2\x59\x62\x51\x3b\x87\ +\xda\x35\x06\x5a\x54\xd2\x61\x65\x64\xfc\xcd\x0b\xbf\xd7\x66\xb3\ +\x8d\xc0\x05\xc0\xf8\x72\x02\x00\xee\x6f\x54\x9c\x23\x21\xfc\x5c\ +\xb1\x89\x96\x50\x28\x45\xb9\x27\x00\xa2\x86\xb7\xc0\x85\xcb\x96\ +\x44\x76\xeb\xdc\x5f\xe7\x60\x73\x45\x09\x76\xab\x34\x4f\xfc\x53\ +\x79\x14\xe2\x71\x99\x77\x3a\x04\x22\x4d\x2a\xa9\x4b\xd9\xcb\xf1\ +\x43\x5d\x7b\xd4\x84\xf2\x4f\xa0\xfb\x8b\xca\xdf\x34\x40\xe2\xe3\ +\x61\xd5\x75\xdb\xaa\x10\xba\xe9\x6e\xd5\xab\xb3\x26\x20\x61\xb3\ +\xc8\x20\x68\xf8\x9d\x4e\x6a\x43\x05\x94\x7a\x5c\x88\x92\x3a\xf7\ +\x21\x9d\x27\xae\x91\x25\x1a\x13\x38\xd2\x2a\x13\x3e\xa3\x93\xee\ +\x55\xc7\xe3\xef\x74\x3e\x9b\x9f\x4a\x1f\x05\x3a\x96\x42\x1e\x16\ +\x50\xd4\xeb\x92\xfd\x69\x35\x2e\x64\x23\xfd\x70\x21\x3a\x4c\x8e\ +\x14\x79\x52\x18\x42\x1a\xb3\x59\x43\x15\x32\xa8\xa4\xc9\x93\x46\ +\x25\x83\x4a\x06\x8d\x2c\xc3\x51\x9d\xc6\x73\x12\x91\x56\x83\x4c\ +\x8f\x3e\x1d\x7f\xb7\xeb\x85\xdc\x44\xf2\x28\x70\x0e\xd0\x97\x42\ +\x1e\x16\x50\xd4\xcf\xb6\x47\x32\x85\x75\x65\xf5\x82\x61\x6a\xd0\ +\xbd\x79\x2a\x82\x60\x31\x1b\xe8\x7c\xf6\x59\xff\xdf\x50\x18\x89\ +\xea\x1c\x6f\x33\x13\x39\x2b\xa2\x5c\xd0\x67\xa3\xc7\xcf\xbf\xa8\ +\x5c\x9e\x6a\x04\xce\x00\xda\x52\xc9\xc3\x02\xdb\x2a\x82\x6c\x7b\ +\x52\x1d\x95\x8c\xc8\x80\x44\x5f\x2c\x4e\xfe\xd3\x5d\x98\x1b\x57\ +\xee\xfe\xdc\x18\x89\xab\xfc\xbb\xcd\x42\xf8\xac\x89\x4c\x97\x94\ +\x89\x9f\xea\x7a\x29\x33\x3a\xd1\x08\x34\x71\x55\x35\xb5\x14\x2c\ +\xa8\xad\x32\xdd\x71\x69\xc2\x53\x5b\xbd\x45\x10\xe5\x4a\xbd\x30\ +\x4f\x59\x71\x1e\xd9\x94\x9f\xb7\x0b\x73\x63\x6c\x5c\xe7\x44\xab\ +\x83\x70\xab\x05\xa5\x4b\xcc\xc6\x3e\x3a\xff\xd2\x6c\xff\xd8\x95\ +\x6a\x2a\xbf\xd4\xf2\xb0\x88\xc6\x96\xa0\x0a\x4f\x69\x03\x26\x06\ +\x86\x4d\xf4\x47\x53\x9f\xd9\x05\x95\x34\x23\xe3\x79\x4e\xb5\x16\ +\x10\x3e\x67\x25\xd7\x61\xca\xc5\x9a\xbb\x5e\x4e\x44\x86\xdf\x66\ +\xae\x8e\xbd\xa6\x14\x5c\x2a\x16\xdc\xd8\x9a\xbc\x78\x69\xc0\x57\ +\x55\xb7\x03\x59\x0a\x19\x85\x39\xca\x4a\x52\x88\x72\x16\x8d\x1c\ +\xd1\x49\xf8\xb0\xc5\xc3\xa5\x36\x27\xf9\x76\x8b\x1a\x3d\xd7\xb9\ +\x77\xba\x37\xfc\x0f\xe0\x04\x57\xb5\x41\x96\x9a\x45\xb5\x16\x05\ +\x95\x67\xb4\x88\x95\xa1\x21\x1b\x03\x51\x8d\x3c\x29\xa2\x53\x2a\ +\x1f\x9e\x75\xd1\xd7\xee\x24\xdf\x6a\xd7\xc7\x3b\x3e\x79\x63\xf2\ +\x93\xde\x2b\xf2\x37\x2c\x05\x97\x8a\x45\x05\xb8\xb8\x79\xd3\x7e\ +\x63\x96\xc1\x74\xd8\x4e\x4f\xd8\x4a\x74\x4a\xa3\xe9\xac\x8f\x70\ +\x9b\x17\xad\xa5\xc0\x98\xbc\xd0\x73\x30\xd6\xdd\x79\x90\x39\xf9\ +\x6b\x1a\xb1\x5f\x06\x8b\xeb\x8d\x9e\x38\x61\x04\xca\xd7\xca\x62\ +\xd6\xfa\x40\xce\xaf\x33\x99\x30\x13\x69\x0b\xa1\x35\x3b\x99\xe8\ +\x0d\xbf\x3d\xda\xd1\xf2\x06\x73\xd5\xd4\xf4\x97\x62\x7b\x1d\x16\ +\xdd\x9d\x0e\xe6\x1c\xcf\x19\x53\xf2\x54\xb2\xcf\xc5\x40\x47\x08\ +\xbd\xd9\xcd\x4c\xdf\xd0\xd1\x91\xf6\x8f\xf7\xb3\x88\x52\x70\xa9\ +\x58\x74\x77\xba\xbf\xbf\x4d\xf5\x97\x54\xe7\xa4\x89\xc2\xad\x44\ +\xec\x24\x86\x86\x4f\x46\xce\x1d\xdf\xcb\x9c\x7c\x74\xe9\x15\x3f\ +\x9f\x5b\xfe\x83\xc3\x13\x28\xbb\x37\x97\xcf\xde\x95\x9a\x8e\x0e\ +\x30\x77\x54\x8e\x2d\x9d\xd6\x0a\x2b\xac\xb0\xc2\x0a\xff\x27\xfe\ +\x03\x72\x48\xe3\xb0\x1d\x11\x42\x9d\x00\x00\x00\x00\x49\x45\x4e\ +\x44\xae\x42\x60\x82\ +\x00\x00\x04\x4e\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ -\x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ -\xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ -\x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ -\x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ -\x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ -\x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ -\x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ -\xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ -\x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ -\x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ -\x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ -\xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ -\xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ -\x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ -\x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ -\x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ -\xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ -\xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ -\xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ -\xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ -\x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ -\x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ -\xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ -\xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ -\xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ -\xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ -\x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ -\xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ -\x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ -\x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ -\x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ -\x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ -\x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ -\x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ -\x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ -\x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ -\x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ -\xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ -\x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ -\x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ -\xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ -\x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ -\x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ -\xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ -\x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ -\x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ -\x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ -\x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ -\x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ -\x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ -\x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ -\x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ -\x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ -\x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ -\x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ -\xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ -\x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ -\x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ -\x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ -\xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ -\x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ -\x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ -\x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ -\x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ -\xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ -\xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ -\x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ -\x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ -\xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ -\x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ -\x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ -\xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ -\xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ -\x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ -\x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ -\x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ -\xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ -\x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ -\x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ -\x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ -\x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ -\xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ -\x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ -\x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ -\x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ -\x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ -\xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ -\xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ -\x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ -\x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ -\x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ -\xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ -\x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ -\xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ -\x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ -\xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ -\x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ -\xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ -\xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ -\xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ -\x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ -\xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ -\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ -\x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ -\xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ -\x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ -\x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ -\x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ -\x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ -\x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ -\x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ -\x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ -\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ -\x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ -\x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ -\xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ -\x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ -\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ -\xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ -\xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ -\x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ -\xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ -\x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ -\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\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\x12\x00\x00\ +\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd2\x01\x07\x0b\x01\x15\x4b\x06\x3c\xc6\x00\x00\x03\xcb\x49\x44\ +\x41\x54\x78\xda\xb5\x96\xcf\x4b\x1c\x49\x14\xc7\x3f\x5d\xd3\x3d\ +\x62\xa2\xf8\x63\x8c\x60\x12\x33\x92\xbb\xae\x88\x17\x5b\x50\xc1\ +\x40\x18\x08\xe3\x06\x57\x84\xe0\x68\xbc\xcd\x25\x07\x73\x8a\xf9\ +\x07\x3c\xe9\x7f\x21\xa8\x43\x2e\xc1\x04\x8c\x27\x41\x4d\x34\xd9\ +\x55\x83\x10\x44\x44\x57\x34\x1e\x46\x3c\x98\x66\x7a\xba\xbb\xaa\ +\x7b\x0f\x71\x1a\x25\x8e\x2e\x8b\x5b\xf0\xa0\xba\xaa\x78\x9f\xf7\ +\xbe\xf5\xba\xaa\xe0\x7f\x6e\x5a\xb1\x89\x44\x22\x91\xcc\x66\xb3\ +\x7d\x8e\xe3\x98\x52\xca\x07\x4a\x29\x80\x7d\x60\xb9\xa2\xa2\x22\ +\xf3\xf9\xf3\xe7\xb7\xff\x09\x90\x4a\xa5\x5a\x36\x36\x36\x26\x84\ +\x10\x9d\xdd\xdd\xdd\x34\x35\x35\x11\x8b\xc5\xf0\x7d\x9f\x6c\x36\ +\xcb\xea\xea\x2a\x73\x73\x73\x48\x29\x17\xee\xdd\xbb\xf7\x72\x65\ +\x65\xe5\xaf\x7f\x0d\xe8\xea\xea\x4a\x1e\x1d\x1d\xbd\x31\x4d\x53\ +\xef\xed\xed\xa5\xb6\xb6\x16\xc3\x30\xd0\x34\x0d\xdf\xf7\xf1\x3c\ +\x8f\x7c\x3e\xcf\xf7\xef\xdf\x99\x9c\x9c\xe4\xe3\xc7\x8f\xb2\xb2\ +\xb2\xb2\x77\x67\x67\xa7\x68\x36\x91\x42\xa7\xa7\xa7\xa7\x65\x7b\ +\x7b\x7b\xfe\xe9\xd3\xa7\xfa\xd0\xd0\x10\x35\x35\x35\x94\x97\x97\ +\x53\x5d\x5d\x4d\x4d\x4d\x0d\x77\xee\xdc\x21\x16\x8b\x51\x56\x56\ +\x46\x59\x59\x19\x8d\x8d\x8d\xd8\xb6\x2d\xd6\xd7\xd7\xfb\xee\xdf\ +\xbf\xff\xee\xe4\xe4\xe4\xe8\x32\x80\x5e\xe8\x7c\xfd\xfa\x75\xc2\ +\x34\x4d\xbd\xbf\xbf\x9f\xd7\xaf\x5f\x63\x18\x06\x86\x61\x20\x84\ +\x60\x7a\x7a\x9a\x20\x08\xe8\xef\xef\x27\x08\x02\x82\x20\xc0\xf3\ +\x3c\x5e\xbd\x7a\xc5\xe1\xe1\xa1\xfe\xe5\xcb\x97\x09\xa0\xeb\x32\ +\x80\x00\x68\x6e\x6e\x4e\xfa\xbe\xdf\x39\x38\x38\xc8\xad\x5b\xb7\ +\x88\x46\xa3\x94\x94\x94\x20\x84\x40\xd3\x34\x84\x10\x61\x5f\xd3\ +\x7e\xaa\x1a\x89\x44\x78\xf8\xf0\x21\xe9\x74\x9a\x20\x08\x3a\xab\ +\xab\xab\x93\x45\x01\xd9\x6c\xb6\x2f\x99\x4c\x52\x57\x57\xc7\xed\ +\xdb\xb7\xd1\xf5\x9f\x89\x65\x32\x19\x32\x99\x4c\xe8\x78\x66\x66\ +\x86\xa9\xa9\xa9\xf0\x5b\x08\x41\x73\x73\x33\x89\x44\x02\xdb\xb6\ +\xfb\x8a\x02\x1c\xc7\x31\xdb\xdb\xdb\x89\x46\xa3\x94\x97\x97\x87\ +\x51\x06\x41\x70\x61\x71\x41\x9e\x0b\x55\xa2\x69\x3c\x7a\xf4\x08\ +\xa5\x94\x59\xb4\x8a\xaa\xaa\xaa\xbc\xd9\xd9\x59\xfd\xee\xdd\xbb\ +\x54\x56\x56\x12\x8d\x46\x89\x44\x22\x44\x22\x11\x84\x10\xa1\x73\ +\xdf\xf7\x51\x4a\xe1\x79\x5e\x58\x51\xb9\x5c\x8e\x83\x83\x03\x1e\ +\x3f\x7e\x2c\x5d\xd7\x35\x2e\xdd\x64\xa5\x14\x9a\xa6\xa1\xeb\x3a\ +\x4a\x29\xce\x7e\xaa\x5f\xb2\x28\xcc\x9d\x07\x49\x29\xf1\x3c\xef\ +\x97\xcc\x2e\x48\xa4\x94\xda\xdf\xdd\xdd\x0d\x6b\x7d\x60\x60\x80\ +\x67\xcf\x9e\x21\xa5\x0c\xed\xbc\xb3\x54\x2a\xc5\xf0\xf0\x30\x9e\ +\xe7\xe1\xba\x2e\x5b\x5b\x5b\x28\xa5\xf6\x8b\x02\x82\x20\x58\xfe\ +\xf0\xe1\x03\xf9\x7c\x1e\xd7\x75\xc3\x28\x5d\xd7\xc5\x71\x9c\xd0\ +\x5c\xd7\xc5\x75\xdd\x30\x83\xc2\xf8\xdc\xdc\x1c\xbe\xef\x2f\x17\ +\x05\x08\x21\x32\x99\x4c\x86\xed\xed\x6d\x6c\xdb\x0e\xa5\x48\xa5\ +\x52\x0c\x0c\x0c\x60\xdb\x36\x8e\xe3\x90\x4a\xa5\x78\xfe\xfc\x39\ +\x52\x4a\x94\x52\xd8\xb6\xcd\xb7\x6f\xdf\x78\xff\xfe\x3d\x40\xa6\ +\x28\xc0\xb2\xac\x0d\x29\xe5\xc2\xd8\xd8\x18\x96\x65\x5d\xd0\x57\ +\x29\x85\x65\x59\xe1\x78\xc1\xa4\x94\x9c\x9e\x9e\x32\x3e\x3e\x8e\ +\xef\xfb\x0b\xc0\xdb\x2b\xcf\x22\xc3\x30\x5a\x80\x95\x27\x4f\x9e\ +\xe8\x23\x23\x23\x18\x86\x81\xae\xeb\x61\xcd\xfb\xbe\x1f\x6e\xb4\ +\xeb\xba\xe4\x72\x39\xc6\xc7\xc7\x99\x9f\x9f\x97\xc0\xef\xc0\xbb\ +\x2b\xcf\x22\xdf\xf7\xa3\x9a\xa6\x2d\x6c\x6d\x6d\xf5\xad\xad\xad\ +\x89\xfa\xfa\x7a\x4a\x4b\x4b\x71\x5d\x37\x94\xc8\x71\x1c\x2c\xcb\ +\x62\x73\x73\x93\xb1\xb1\x31\x3e\x7d\xfa\x24\x81\x1c\xf0\x07\x70\ +\x02\xfc\x79\xdd\x71\x1d\x07\x62\x9a\xa6\x4d\x08\x21\x3a\x3b\x3a\ +\x3a\x68\x6b\x6b\xa3\xa1\xa1\x01\x80\x9d\x9d\x1d\x96\x96\x96\x58\ +\x5c\x5c\x04\x58\x00\x5e\x02\x6f\x80\xaa\xb3\x60\x8f\x81\x17\xc0\ +\xec\x75\x17\x4e\x1c\xf8\x0d\xe8\x03\x4c\xe0\xc1\xd9\xf8\x3e\xb0\ +\x7c\xb6\xa1\xc7\xc0\x21\x40\x43\x43\xc3\x26\xa0\xed\xed\xed\x09\ +\xc0\x03\x12\x67\xeb\xae\x6d\xf1\x2b\xec\xfc\x9a\xe3\x74\x3a\xed\ +\xb5\xb6\xb6\xda\xc0\xe9\x99\x6c\xf1\x9b\xbc\x7a\xe3\xc0\x8f\xd1\ +\xd1\x51\x65\x9a\xa6\x04\x7e\x00\xd6\x4d\x42\x0a\x59\xe5\xd3\xe9\ +\xb4\x17\x8f\xc7\xbd\x9b\x06\x9c\x87\x1c\x01\x0a\xe8\x04\xe2\xda\ +\x0d\xbf\x52\xce\x47\xfc\x37\xc0\x3f\x72\x9e\x0b\x66\xc1\xc5\x97\ +\x96\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x76\x50\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -8730,6 +8306,1448 @@ qt_resource_data = b"\ \x61\x6c\x6c\x2e\x63\x7a\x69\x66\xe3\x5e\x00\x00\x00\x0d\x74\x45\ \x58\x74\x54\x69\x74\x6c\x65\x00\x47\x6f\x20\x44\x6f\x77\x6e\xf3\ \xfd\x14\x79\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x05\xb5\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\ +\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\ +\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\ +\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\ +\x46\x00\x00\x05\x2b\x49\x44\x41\x54\x78\xda\x62\xf8\xff\xff\x3f\ +\x03\x2d\x30\x40\x00\x96\xc4\x20\x05\x80\x18\x84\x81\x01\xad\x2c\ +\x78\x2e\xd5\x47\x2c\x1e\xbc\x95\xfe\xc2\xff\xff\x65\xdb\xb2\x03\ +\x09\x64\x72\xcb\xdd\x61\x66\xe8\xbd\x23\x33\x31\xe7\xc4\xa1\xaa\ +\xf0\x23\xcc\xfc\xaa\xea\x22\xa2\xd8\xfb\x39\x32\x22\xee\x39\xc6\ +\xc0\xf6\x68\xad\x41\x44\x6e\x3e\x01\x84\x62\xb0\x88\x88\x08\x83\ +\x81\x81\x01\x83\x91\x91\x11\x48\x3d\x9f\xb5\xb5\x75\x47\x67\x67\ +\xe7\xcb\x0d\x1b\x36\xfc\x3f\x70\xe0\xc0\xff\x43\x87\x0e\xfd\x5f\ +\xb3\x66\xcd\x7f\xa0\xd8\xff\x98\x98\x98\x67\xf2\xf2\xf2\x25\x20\ +\x85\xc2\xc2\xc2\x0c\x4c\x4c\x4c\x28\x06\x03\x04\x10\xdc\x60\x90\ +\xad\x42\x42\x42\x0c\x1a\x1a\x1a\x0c\x40\x0d\xd1\xdb\xb6\x6d\xfb\ +\xff\xfb\xf7\xef\xff\xd8\xc0\xfb\xf7\xef\xff\xef\xde\xbd\xfb\x7f\ +\x73\x73\xf3\xff\xc8\xc8\xc8\xff\x9c\x9c\x9c\x66\x20\x0b\x80\xbe\ +\x82\x1b\x0c\x10\x40\x60\x83\xc1\xc1\x20\x26\xc6\x00\xf4\x2a\x88\ +\x1d\x7c\xea\xd4\xa9\xff\xb8\xc0\xaf\x5f\xbf\xfe\x7f\xfb\xf6\xed\ +\xff\x9b\x37\x6f\xfe\xaf\x5c\xb9\xf2\x7f\x4d\x4d\xcd\xff\xb0\xb0\ +\xb0\xff\x40\x73\x79\x41\xae\x86\x19\x0c\x10\x40\x70\x83\x05\x05\ +\x05\x41\x96\x2a\xce\x99\x33\xe7\xff\x9f\x3f\x7f\x70\x1a\x0c\x33\ +\xf4\xd5\xab\x57\xff\x2f\x5c\xb8\xf0\xbf\xad\xad\xed\x7f\x49\x49\ +\xc9\x7f\x19\x19\x99\x4e\x58\x84\x30\x32\x32\x32\x00\x04\x10\xd8\ +\x60\x11\x60\x10\x70\x00\x6d\x89\x8d\x8b\x3b\x7a\xfb\xce\x9d\xff\ +\xf8\xc0\xe7\x2f\x5f\xfe\xbf\x78\xf1\xe2\xff\xd3\xa7\x4f\xff\x1f\ +\x3f\x7e\xfc\xff\xa4\x49\x93\xc0\x61\xee\xe3\xe3\xf3\x0d\x68\xa6\ +\x00\xcc\x60\x80\x00\x02\x1b\x2c\x0c\x72\x2d\x23\xa3\xec\xcc\x25\ +\x4b\xfe\xff\x05\x0a\xfc\xc1\x63\xf0\xc7\x9f\x3f\xff\x3f\x7b\xfe\ +\xfc\xff\xdd\xbb\x77\xff\xcf\x9a\x35\xeb\xff\xbc\x79\xf3\xfe\x4f\ +\x9f\x3e\xfd\x7f\x5e\x5e\xde\x7f\x31\x31\xb1\x6a\x98\xab\x01\x02\ +\x08\x92\xe6\x80\x40\xcd\xca\xaa\xfc\xc4\xb5\x6b\xff\x3f\x00\x23\ +\xe5\x4c\x61\xe1\xff\xf3\xd9\xd9\xff\xaf\xe6\xe6\xfe\xbf\x03\xd4\ +\x70\x0f\x88\xef\x26\x25\xfd\x3f\xe6\xef\xff\xff\xdc\x9e\x3d\xff\ +\x5f\x00\x23\x6f\xe9\xd2\xa5\xff\x67\xcc\x98\xf1\x7f\xc1\x82\x05\ +\xff\x67\xcf\x9e\xfd\xbf\xae\xae\xee\xbf\xa5\xa5\xe5\x35\x98\xb9\ +\x00\x01\x04\x37\x38\x3b\x21\xe1\xe6\x2b\x1b\x9b\xff\x1f\x95\x94\ +\xfe\xbf\x96\x93\xfb\xff\x16\x88\x5f\x88\x89\xfd\xbf\xc2\xc0\xf0\ +\x7f\x13\x10\xf7\x03\x71\x85\xac\xec\xff\xc5\xcb\x97\xff\x5f\xb6\ +\x7a\x35\xd8\xa5\x0b\x81\x86\x82\xe2\x04\xe4\xf2\xd6\xd6\xd6\xff\ +\xe1\xe1\xe1\x20\xc3\x64\x40\x91\x08\x10\x40\x10\x83\xb9\xb9\x59\ +\x4f\x02\x0d\x3a\xc3\xc4\xf4\xff\x84\xa0\xe0\xff\xeb\xca\xca\xff\ +\x8f\x00\x0d\x59\xa6\xa0\xf0\xbf\xc7\xd8\xf8\x7f\x63\x5c\xdc\xff\ +\xce\x89\x13\xff\xcf\x06\xa6\xe7\xc5\xab\x56\xfd\x5f\x01\x4c\x0d\ +\xcb\x81\x16\xcc\x9f\x3f\x1f\xec\xea\xa9\x53\xa7\xfe\xef\xea\xea\ +\xfa\x9f\x0b\xf4\x21\x2f\x2f\x6f\x06\x28\xf9\x02\x04\x10\xd8\x60\ +\x71\x06\x06\x8d\x7b\xbc\xbc\xff\x73\x81\x36\xe6\x66\x64\xfc\xcf\ +\x0c\x09\xf9\x9f\x01\x0c\x8a\xd2\xf6\xf6\xff\x5d\xc0\x70\x9f\xb7\ +\x75\xeb\xff\x95\x5b\xb6\xfc\x5f\xbf\x69\xd3\xff\xf5\x40\xc3\x57\ +\xac\x58\xf1\x7f\xf1\xe2\xc5\xe0\x20\x98\x32\x65\xca\xff\x09\x13\ +\x26\x80\x23\xb0\xb2\xb2\xf2\xbf\x8a\x8a\xca\x4a\x50\x08\x00\x04\ +\x10\xd8\x60\x59\x06\x06\xed\xf3\xdc\xdc\xff\x73\x81\x12\xb3\x81\ +\x19\x63\xf9\xce\x9d\xff\x37\x00\xc3\x7a\x1d\x90\xbd\x6e\xe3\xc6\ +\xff\x1b\x81\x06\xae\x5b\xbf\x1e\x9c\xeb\x40\x2e\x5d\x02\xb4\x0c\ +\xe4\x5a\x50\xa4\x81\x0c\xed\xee\xee\xfe\xdf\x0e\x74\x44\x6d\x6d\ +\xed\x7f\x60\x71\x70\x15\x64\x2e\x40\x00\x81\x0d\x66\x03\x66\x9a\ +\xbd\xc0\x30\x14\xe3\xe3\x9b\x27\xac\xa4\xd4\xea\xed\xeb\xfb\xb0\ +\xa7\xa7\xe7\xff\xda\xb5\x6b\xff\x83\xb2\x33\x28\x23\x2c\x5b\xb6\ +\x0c\x6c\xe0\xc2\x85\x0b\xc1\xe1\x0a\x32\x74\x22\x30\x78\x40\x86\ +\x82\xc2\xb7\xa1\xa1\x01\x6c\xb0\xaf\xaf\xef\x2f\x50\x71\x00\x10\ +\x40\x60\x83\xb9\x81\xac\x76\x06\x86\x63\xf6\x0c\x0c\x1d\xca\x90\ +\x72\x02\x04\x02\xec\xec\xec\xae\x80\x32\x00\x28\x05\x2c\x5a\xb4\ +\xe8\xff\xdc\xb9\x73\xc1\x11\x05\x0a\x53\x98\x4b\x41\xf2\xf5\xf5\ +\xf5\xff\xab\xab\xab\xff\x57\x55\x55\xfd\x0f\x08\x08\x00\x45\xa0\ +\x24\x40\x00\x81\x0d\x36\x07\xb2\x8c\x81\x06\x05\x30\x30\x6c\x86\ +\x99\xca\x0b\xc9\x89\x0c\xc2\x22\x22\x4d\xb9\xc0\xe4\x36\x79\xf2\ +\x64\xb0\x2b\x61\x86\x82\x22\x0b\xe6\x52\x98\xa1\x15\x15\x15\xff\ +\x6d\x6c\x6c\x1e\x00\xb5\x71\x02\x04\x10\x3c\xb9\x21\x03\x61\x20\ +\x36\x80\xb2\x15\x95\x95\x41\x45\xa2\x7b\x54\x54\x14\x38\x82\xfa\ +\xfb\xfb\xe1\xde\x07\xb9\x14\x54\x56\x80\x0c\x2d\x2b\x2b\xfb\x9f\ +\x04\x4c\xeb\xc0\xf2\xa6\x16\xa4\x0f\x20\x80\xc0\x06\xfb\x00\x19\ +\x7e\x0c\x0c\xbe\xbd\x40\x17\x27\x32\x30\x4c\x04\x72\x45\x34\xa0\ +\x06\x6b\x6a\x6b\x33\x08\x08\x80\x73\xaa\xaa\xb7\xb7\xf7\x27\x90\ +\xeb\x1a\x1b\x1b\xe1\x86\x82\x5c\x59\x54\x54\xf4\x3f\x28\x28\xe8\ +\x3f\x3f\x3f\x7f\x1f\x50\x1d\x3b\x48\x31\x40\x00\x81\x0d\xb6\x64\ +\x60\x70\xff\x9f\x93\xf3\x1f\xa8\xf2\xff\x7f\x5d\xdd\xff\xa7\x80\ +\x11\x09\x4c\x29\xbe\x30\x1f\x88\x03\x0b\x29\x0e\x0e\x70\xd9\xce\ +\x20\x2b\x2b\x3b\x21\x30\x30\xf0\x7f\x5a\x5a\xda\xff\xac\xac\xac\ +\xff\xa9\xa9\xa9\xff\x4d\x4d\x4d\x9f\x00\xa5\xfc\x91\x7d\x0d\x10\ +\x40\x60\x83\xe7\x30\x30\xf4\x01\xa3\xf4\x3f\x30\xba\xff\x03\x53\ +\xfc\x7f\x60\x0c\xfc\xcf\x67\x60\x78\x88\xac\x8e\x8f\x8f\x0f\x25\ +\xb4\x80\x65\x70\x34\xb0\xfc\x6e\x66\x67\x67\xcf\x06\xf2\xe5\xd1\ +\x83\x13\x20\x80\xc0\x06\xcb\x31\x30\xd8\xce\x05\xba\xf2\x88\xb0\ +\xf0\xff\x43\xc0\x5c\xd7\x28\x24\xf4\x93\x87\x81\x21\x1d\x59\x1d\ +\x28\x38\xc0\xa5\x16\x14\x80\x2a\x05\x69\x69\x69\x58\x30\x61\x00\ +\x80\x00\x02\x1b\x6c\x80\xe0\x6a\x03\xb1\x1e\x3c\x9c\xd0\x0c\x06\ +\x97\x01\x50\x00\xaa\xc6\x80\xc1\x02\xb6\x00\x1b\x00\x08\x30\x00\ +\x69\x36\x5f\x67\xcd\x5c\xcb\xcb\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x0e\x35\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\ +\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\ +\x00\x00\x3a\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\x00\x00\x00\x06\ +\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\ +\x00\x07\x74\x49\x4d\x45\x07\xe1\x0a\x0d\x0f\x2b\x18\xc7\x56\x80\ +\xf9\x00\x00\x0d\x39\x49\x44\x41\x54\x68\xde\xc5\x5a\x7b\x78\x54\ +\xd5\xb5\xff\xad\xbd\xcf\xcc\x99\xcc\xe4\x01\x12\x20\x0f\x0a\x21\ +\x10\x5a\x79\xa3\x20\x05\x4b\x79\x84\x14\x10\x3e\xe4\xa5\x55\xf4\ +\x16\xea\x15\x42\x91\x54\x7c\xf5\xbb\xe5\xbb\xdc\xeb\x47\x51\x1e\ +\x1f\xca\x45\x81\xe2\xb5\x80\x82\xa0\x48\xa1\x48\x23\x85\x0b\x0a\ +\x52\xaa\x28\x04\x81\x12\x08\x31\x10\x9e\x81\xbc\x33\x79\xcd\x9c\ +\x39\xe7\xec\x75\xff\x98\x09\x86\x90\x4c\x48\xe4\xfb\xba\xfe\x59\ +\xf3\x9d\xb3\x67\xad\xdf\x7a\xec\xbd\xd7\xda\xfb\xd0\xe8\xd1\x23\ +\x04\x6e\x27\x02\xc0\x21\xae\x00\x88\x46\x38\x03\xa0\x03\x07\x0e\ +\xd9\x42\x88\x87\x99\xf9\x1d\x66\xee\x45\x44\x60\x66\x84\xe1\xd5\ +\x00\xde\x88\x8f\x8f\x5b\x32\x74\xe8\x43\x66\x45\x85\xb7\x55\x7a\ +\x43\x1c\x00\x58\xd4\xfb\xb3\x08\xf1\xfa\xbf\x65\xe8\xfd\x1d\xdc\ +\xe1\x70\xa0\x57\xaf\xfb\x75\x66\x9e\x0d\xa0\x17\x11\x05\x05\x85\ +\xe7\x91\x00\xd2\x8b\x8a\x8a\x7f\x32\x7d\xfa\x63\xad\xd2\x1b\xe2\ +\x75\xe3\x44\x7d\x03\xea\xf3\xa6\x3c\xc3\x75\x1e\x89\x8c\xf4\xd0\ +\x95\x2b\x57\x3d\x44\xb8\x1f\x2d\xa3\x58\x80\xbb\x4f\x99\xf2\xb4\ +\x6a\x8d\xde\x86\xcf\xeb\x0c\xe0\x30\x0a\x1b\x15\xf2\xe4\x93\xd3\ +\x6c\xd3\xb4\xee\x63\x46\x87\x16\x1a\xa0\x29\xc5\x9d\x99\xb9\xb9\ +\x71\xcd\x82\x07\x40\xf5\xc3\xd7\x22\x21\x93\x27\x4f\x83\x65\x59\ +\xb1\x00\xda\xb6\xd0\x00\x00\xe8\xb2\x6a\xd5\x32\x11\xe6\x7d\x73\ +\xe0\x6f\x45\xa8\x6e\x62\xdc\x46\x9d\x3b\x77\xe2\xf4\xf4\x7f\xb7\ +\x9e\x7f\xfe\x37\x2a\x25\xa5\x9b\x6a\x4c\x08\x91\x8b\x99\xb9\x13\ +\x00\x77\x4b\xd1\x33\x73\x97\x35\x6b\xde\x75\x3a\x1c\xda\x1d\xef\ +\x22\x22\x5c\x9c\x9a\x3a\x82\xd7\xaf\x7f\xc7\x4a\x4b\x1b\xc5\xba\ +\xee\x6c\x38\x81\xeb\x13\xd1\xe8\xd1\x23\x64\xdd\x0b\x66\x46\xd7\ +\xae\x5d\xf8\x83\x0f\x3e\x8e\xb3\x2c\xf3\x61\x66\x54\x46\x46\x7a\ +\xb2\x7e\xf9\xcb\xa9\x25\x1d\x3b\xb6\xa7\xac\xac\x93\x64\x18\x06\ +\x0d\x1a\xf4\x80\x5a\xba\x74\xa5\x12\x42\xfc\x8e\x99\x97\xb5\x22\ +\x02\x59\x1e\x8f\x67\x5c\x55\x55\x55\xf1\x98\x31\xa9\x9a\x52\x8a\ +\x3b\x76\xec\x80\x19\x33\x9e\x52\xb3\x66\xcd\x73\x15\x14\xdc\xe8\ +\xa1\x14\xf7\x21\xa2\x8b\xbd\x7b\xdf\x7f\x3c\x31\x31\xde\x36\x8c\ +\x40\x63\x59\xa2\x68\xf4\xe8\x11\xb7\x66\x7d\x4a\x4a\x37\xde\xb0\ +\xe1\x83\x0e\xa6\x69\x6e\x64\xe6\x5f\x00\xf0\x03\x38\x29\x04\xed\ +\x12\x42\x66\x26\x25\x75\xbe\x90\x9b\x9b\x67\x78\x3c\x9e\x04\xbf\ +\xdf\x3f\x9d\x99\x9f\x03\x90\xd4\x0a\x03\x0c\x22\xfc\x45\x4a\x6d\ +\x75\xa7\x4e\x89\x5f\x4f\x98\x30\x46\x6d\xd8\xb0\xb9\x9d\x61\x18\ +\x3f\xb7\x6d\x35\x15\xc0\x48\x00\x1d\x01\x94\x08\x41\xcf\x9d\x39\ +\xf3\xf5\x9f\x33\x32\x5e\x91\x8d\xc8\xe1\xba\x08\x40\x08\x41\xb1\ +\xb1\xed\xd4\x47\x1f\xed\xf8\x3d\x33\xff\xa1\x41\xb8\x18\x40\x01\ +\x11\xf6\x11\xd1\x09\xa5\xf8\x09\x00\x43\x43\xa1\xfd\x21\x54\x48\ +\x44\x1b\x00\xd4\x00\x3c\x91\x19\xfd\x00\xe8\xb7\xe7\x08\x8e\x3b\ +\x1c\xce\xc9\x19\x19\xb3\x0b\x4e\x9e\xfc\x67\x7d\x7d\x5c\x67\x00\ +\x01\x90\xfb\xf7\x1f\xb4\x75\xdd\xd9\xcf\x34\xad\x4f\x00\x74\x0e\ +\xa3\xb4\x2e\x27\xef\x15\xd5\xcd\xc1\x26\x17\x12\x22\xfa\xaf\x89\ +\x13\xc7\x2d\xf1\xf9\x7c\x64\xdb\xea\x36\x2c\x02\x80\xf0\x78\xdc\ +\x9c\x92\xd2\x4d\x37\x4d\xeb\xb9\x66\xc0\xe3\x1e\x83\xaf\x03\x4e\ +\xe1\xde\x33\xf3\xb3\x9f\x7e\xba\xaf\xcf\x6f\x7f\x3b\xc7\x6e\x60\ +\x38\x09\x66\xe6\x5d\xbb\x3e\x52\xf9\xf9\x97\x86\x03\x98\x76\x8f\ +\xc1\xdd\x2b\xea\x62\xdb\x6a\xde\xac\x59\xcf\x3b\x5d\x2e\xfd\x16\ +\x78\x00\x2c\xfa\xf5\xeb\x03\x8f\x27\x2e\x86\x19\xf3\x01\xb4\xf9\ +\x57\x23\x6d\x8a\x98\x79\x5a\x51\x51\xf1\xa8\xcc\xcc\x7d\x16\xea\ +\x2d\xab\xf2\xab\xaf\xbe\x61\xa5\xd4\xaf\x98\x79\x1e\xbe\xaf\x35\ +\x7e\x08\x59\x00\xbc\x00\xca\x01\xf8\x42\x9e\x72\xdc\x03\xb9\x2e\ +\x66\x8e\x6d\xdb\xb6\xcd\x9e\x61\xc3\x86\xf8\xca\xcb\x2b\x24\x00\ +\xa5\x69\x9a\x96\x62\xdb\xf6\xdc\x7b\xa0\xe4\x26\x11\x7d\x4a\x44\ +\x9f\x09\x21\xbe\x13\x82\xaa\x98\xa1\x29\xa5\x12\x94\x52\x83\x00\ +\x7e\x94\x19\x03\x7e\xa0\x9e\x51\x5e\x6f\xe5\xb4\x3e\x7d\x7a\xfd\ +\xe9\xe2\xc5\x4b\x8a\x99\x89\x88\x68\x39\x80\x97\xd0\xfa\xc9\x69\ +\x02\xf8\xc4\xe1\xd0\x96\xf7\xed\xdb\xfb\xe4\xb1\x63\x27\xcc\x25\ +\x4b\x5e\x25\x22\xa2\xc8\x48\x0f\x12\x12\xe2\x39\x27\x27\x97\x5e\ +\x7b\x6d\x45\xac\x61\x18\x4f\x29\xa5\x5e\x02\x90\xd8\x5a\x0b\x88\ +\x70\x42\xd7\xf5\xf1\x4f\x3e\x39\xad\xf8\xca\x95\x6b\x4c\x44\xb4\ +\x07\xc0\xb8\x56\xca\x0b\x10\xd1\xaa\xa8\xa8\xc8\xd7\xd7\xac\x79\ +\xc3\xbb\x65\xcb\x36\x69\x9a\x56\x63\xe3\xb8\x63\xc7\x0e\xa8\xac\ +\xac\xe2\xbf\xfd\x6d\x7f\xaa\x6d\xdb\x6b\x00\xa4\xb4\x52\x67\xa1\ +\xd3\xe9\x1c\xed\xf7\xfb\xb3\xd3\xd2\x46\x0a\x41\x84\x9d\x00\x2a\ +\x5a\x29\x6c\x53\x4c\x4c\xf4\x1f\x1e\x7f\x7c\x72\xe5\x7b\xef\x6d\ +\x69\x12\x3c\x00\x2a\x2c\x2c\x82\x61\x18\xc2\x34\xcd\xfd\x52\xca\ +\x97\x00\x94\xb4\x2e\x02\xf4\x45\x44\x84\xeb\xca\xd4\xa9\x13\x25\ +\x00\x16\x51\x51\xd1\x9b\x84\xa0\x0c\x00\x97\x5b\x28\x2b\xdb\xe9\ +\x74\x2c\xdb\xbd\xfb\xa3\xea\xfc\xfc\xcb\x4d\xa5\xdf\x6d\x55\xa5\ +\x52\x8a\x1f\x79\x24\x4d\xeb\xd9\xf3\xc7\x7b\x88\xe8\x4f\x2d\xd4\ +\x67\x10\xd1\xbb\x4e\xa7\xe3\xc5\x69\xd3\x1e\xad\xa9\xac\xac\x0a\ +\xee\x03\x63\xc7\xa6\x5a\xf3\xe6\xa5\x6f\x95\x52\x4e\x07\x70\xa4\ +\x05\x9e\x78\xdf\xef\x37\x2e\x2c\x5a\xb4\xac\xa9\x95\xab\xd1\x92\ +\xd8\x34\x2d\x4e\x4f\xff\x35\x4b\x29\x37\xb5\xc0\x69\x25\x42\x88\ +\x05\x51\x51\x91\x2f\x64\x64\xa4\xdf\xc8\xcf\xbf\x5c\xb7\xf9\xb1\ +\x28\x2d\x2d\xc3\xb9\x73\xe7\xc5\xda\xb5\x6f\x7c\xa5\xeb\xfa\xd3\ +\x44\xd8\x08\x20\xd0\x8c\xc0\x22\x21\xc4\xfe\x9c\x9c\xe3\x68\xa2\ +\x31\x09\x5b\xcf\x67\x66\xee\xa3\xe4\xe4\xa4\x0b\x44\x77\xe5\xb0\ +\x6c\x29\xe5\x33\xbd\x7a\xfd\x64\x55\x6a\xea\x70\xff\x89\x13\xa7\ +\x45\x5d\x9b\x0a\x80\x64\x72\x72\x92\x60\x66\xca\xce\xce\x11\x93\ +\x26\x8d\xf7\x9e\x3a\x75\xe6\x70\x20\x60\x0e\x45\xf8\x2a\xf3\x6c\ +\x54\x54\xe4\x9a\x82\x82\x9b\x81\xda\xda\xda\x86\x65\x40\xb3\xcd\ +\x88\x52\x8a\x8e\x1d\x3b\x61\x12\x89\x2e\x00\xc6\x84\xd1\xe3\x93\ +\x52\xce\xb1\x2c\xeb\xaf\x03\x06\xf4\x93\x3e\x9f\xbf\x1e\xf6\xa0\ +\xae\x3a\x05\x41\x53\xb3\x73\x44\x44\x84\xcb\x4f\x44\x66\x38\x97\ +\x10\xa1\x30\x3a\x3a\xda\xe7\xf5\x56\xb6\xc8\xf3\x77\xca\xa1\xeb\ +\x00\xec\x30\xaa\x98\x99\xab\x99\x99\x2c\xab\xd1\x05\x82\x34\xd4\ +\xdf\x96\xa5\x60\x87\xc3\x41\xcc\x1c\xae\xb8\x02\x33\x20\xa5\xe0\ +\x06\xe3\x5a\x04\x3e\x44\x06\xbe\xaf\x6e\x6b\x01\x54\x85\x9e\x69\ +\x00\xa2\x00\x94\x4a\x29\xcb\x9a\x68\xd9\xb9\x7e\x04\x08\x00\xf7\ +\xe9\xd3\x8b\xcb\xcb\x2b\x1c\x44\xa4\x21\x3c\xb5\xab\xa8\xf0\x46\ +\xc4\xc4\x44\x73\x3d\x61\x2d\x02\x3f\x77\xee\xb3\xc2\xe5\x72\x1d\ +\x23\xa2\x45\x42\x88\xf9\x52\x8a\x47\x74\xdd\x39\xca\xe9\x74\x0e\ +\xd7\x75\x7d\xa4\x94\xf2\x17\x0e\x87\x63\x6a\xb7\x6e\x49\xe7\xc6\ +\x8e\x4d\x6b\x6c\xa1\x20\x84\x94\x09\x21\x04\xaf\x5a\xb5\x5c\xad\ +\x58\xf1\x76\xa2\xdf\x6f\xbc\xc9\xcc\x43\x9b\x31\xa0\x6b\x4d\x4d\ +\x6d\xc2\x84\x09\x63\xb9\x95\x9e\x47\x6e\x6e\x9e\xf8\xd9\xcf\x7e\ +\x7a\x53\x29\xb5\x78\xc1\x82\x97\xdf\x4a\x4c\x4c\x38\x2e\x84\x28\ +\x15\x42\x10\x11\x6a\xdb\xb6\x8d\x39\x37\x73\xe6\xd3\x27\xcf\x9e\ +\x3d\x6f\x4a\x29\x1b\x0b\x41\xb0\x37\x7f\xf1\xc5\xe7\xa8\x7d\xfb\ +\xf6\xb4\x70\xe1\xe2\xc1\x4a\xa9\x65\xcc\x3c\x0c\xcd\x13\x0b\x21\ +\xe6\xdb\xb6\xfd\xd6\xe8\xd1\x23\xb4\x96\x82\x17\x42\xa0\x77\xef\ +\x9e\xf6\x96\x2d\x1f\x7b\x4a\x4b\x4b\x07\x28\xc5\x8f\x30\xf3\x20\ +\x22\x74\x62\x46\x04\x82\x05\x61\x11\x11\x9d\x24\xa2\x3d\x1e\x8f\ +\xfb\xef\x19\x19\xe9\x95\x59\x59\xdf\x92\x65\xd9\x24\x84\xe0\xf8\ +\xf8\x38\xd8\xb6\xcd\x14\x1b\xdb\x4e\x2f\x2b\x2b\x7f\x2c\xd4\x46\ +\x26\xdd\x05\xf8\x3a\xca\x72\xbb\x23\x26\x67\x66\x7e\x7c\xed\xb5\ +\xd7\x56\x68\x77\x0b\xde\xe9\x74\xc2\xe7\xf3\xa9\x23\x47\x8e\x0e\ +\xb2\x2c\xeb\x05\x04\xcb\x98\x68\x04\x27\x73\x25\x82\x73\xc1\x01\ +\x20\x06\xc1\xf6\xd2\x4f\x84\xcf\x85\x90\x4b\x1f\x7d\x74\xc2\x97\ +\x4a\x59\xb8\x76\xad\x40\x9e\x39\x73\xae\xad\xae\x3b\xab\xa5\xcf\ +\xe7\xff\x35\x80\x95\x00\xe2\x5a\x00\x1e\x00\xe2\x2d\xcb\xc2\x91\ +\x23\x47\x0f\x0f\x1e\x3c\xd0\x2c\x2d\x2d\x93\xcd\x81\x77\xb9\x74\ +\x9c\x3b\x97\x4b\xa7\x4f\x67\xff\x9b\x6d\xdb\xeb\x10\xec\xab\x8b\ +\x89\x68\xb3\x10\x62\xb9\xa6\x69\x2b\x35\x4d\xfe\xaf\x94\x72\x33\ +\x80\x3d\x00\xae\x02\xe8\x04\xe0\xa7\xcc\x3c\x26\x27\x27\xb7\x78\ +\xc6\x8c\xe9\xa7\xb6\x6e\xdd\x3e\xc0\xb2\xcc\x0f\xfd\x7e\x23\x5e\ +\x12\xd1\x22\x00\x7d\x5b\x08\x1e\x21\xa0\xfd\x2b\x2a\xbc\x81\xcb\ +\x97\xaf\x9e\x78\xec\xb1\x49\xc6\xd5\xab\xd7\x45\x53\x27\x6e\x52\ +\x4a\x94\x97\x57\xf0\xd9\xb3\xe7\x9f\x51\x4a\xbd\x19\xf2\xf0\x16\ +\xa7\xd3\x91\xf1\xe0\x83\x03\x36\x5d\xb9\x72\xf5\xac\x65\xd5\x14\ +\x0d\x1e\x3c\xb0\xe2\xf1\xc7\xa7\x94\xcc\x99\xf3\xec\x45\xaf\xd7\ +\x7b\xe8\xd2\xa5\x2b\x7b\x99\xd9\x03\x60\x08\x80\x51\x9f\x7f\xfe\ +\x45\x3e\x80\xfb\x98\x39\x03\x80\x4d\x44\xb4\x0c\xc0\xcb\x68\x7d\ +\x39\xed\x27\xc2\x26\x87\xc3\xb9\x72\xfc\xf8\xb1\xb9\x3b\x76\xec\ +\xe2\xf9\xf3\xe7\x12\x33\xa3\xb4\xb4\x8c\x8a\x8b\x4b\xa0\x94\xa2\ +\xfd\xfb\x0f\x5a\x0e\x87\x63\x8c\x6d\xdb\x9b\x01\x44\x13\xd1\x92\ +\xb6\x6d\xdb\xbc\xf9\xfa\xeb\xff\x5d\xbd\x73\xe7\x6e\x69\xdb\x77\ +\x6e\x07\x44\xc4\x4f\x3c\x31\x95\xe7\xcf\xff\x0f\x77\x4d\x4d\xed\ +\x7f\x32\xf3\xcb\x00\x2e\x11\x61\x17\x33\x5e\x00\xf0\x77\xd2\x34\ +\xd9\xdd\xb6\xd5\x76\x00\xfd\x5b\x69\x00\x42\xa9\x73\x81\x88\x76\ +\x09\x41\x07\xa4\x94\xf9\x52\x4a\x1f\x80\x40\xdf\xbe\xbd\xcb\x86\ +\x0c\x19\x64\xaf\x5f\xbf\x39\xb6\xaa\xaa\x7a\x3b\x80\x9f\x13\xe1\ +\xad\xb8\xb8\xb8\xdf\x4f\x9a\x34\xde\x9f\x9b\x9b\xd7\x9c\xe3\xb8\ +\x53\xa7\x04\x6c\xdf\xfe\x89\xc7\xe7\xf3\xad\x65\xe6\xa7\x00\x94\ +\x01\xb8\x0f\xc0\x17\x14\x0a\xef\x2c\xa5\xd4\x6a\x00\xce\x1f\x60\ +\x44\x1d\xf9\x42\x0a\xfc\x44\x28\x91\x52\x9b\x6d\x9a\xe6\x69\x21\ +\xc4\x4c\x66\x5e\x0f\xe0\x94\xcb\xa5\x4f\xda\xbd\x7b\xdb\xd5\x65\ +\xcb\x56\x86\x6d\x61\x85\x10\xfc\xa3\x1f\x25\x22\x39\x39\x59\x2d\ +\x58\xf0\x2a\x3b\x1c\x5a\x2f\xdb\x56\x7f\x05\xd0\x35\x34\xe4\x0b\ +\xb1\x7d\xfb\xfb\xe4\x72\xe9\x7f\x26\xc2\xc1\x7b\x00\x1e\x00\x22\ +\x10\xec\xb8\xba\x31\xa3\x27\x80\x98\xae\x5d\xbb\x38\x01\x4c\x09\ +\x62\xa2\x8d\x3e\x9f\xff\xca\xdd\x80\xaf\xa8\xf0\xca\xad\x5b\xb7\ +\x77\x58\xbc\x78\x59\x37\x97\x4b\xef\xea\x70\x38\xfc\x00\x0e\xdf\ +\x36\xee\x9d\x77\x36\x8a\xea\xea\x9a\x0a\x22\xf1\x3f\x08\x36\xe3\ +\xf7\x92\xae\x69\x9a\xfc\xee\xc6\x8d\xc2\x24\x66\x7e\x00\xc0\x0d\ +\x21\xc4\x67\xeb\xd7\xaf\x6e\x36\x6d\xe6\xcf\x9f\xcb\x27\x4e\x9c\ +\xea\x6f\x18\xc6\x5e\xbf\xdf\x38\x14\x08\x98\x87\xfd\x7e\xe3\x20\ +\x80\x89\xf5\xc7\x09\x00\x3c\x71\xe2\x38\x11\x1f\xdf\xf1\x10\x11\ +\x7d\x7c\x8f\x0d\x28\x88\x8f\x8f\xf3\x9a\xa6\xd9\x09\x40\x7b\x00\ +\xf9\xd1\xd1\xd1\x05\x7b\xf7\x1e\x08\x57\x6b\x31\x00\x1a\x37\x6e\ +\xaa\x12\x82\x88\xf9\xb6\x2b\x25\x00\xa8\x06\x70\x05\xc1\xc9\x7c\ +\x44\x00\x20\x9f\xcf\x4f\x3b\x76\x7c\x60\x08\x21\xd6\xa0\xf9\x26\ +\x43\xe1\x2e\x89\x88\xbc\x73\xe6\x3c\x63\x10\x21\x16\x80\x93\x88\ +\x0a\xdb\xb4\x89\xf1\x55\x55\x55\x37\x7b\x1f\x31\x66\xcc\x28\xad\ +\x47\x8f\x94\x2c\xb7\xdb\x3d\xd6\xe9\x74\x0c\x77\xb9\xf4\xe1\x4e\ +\xa7\x73\x84\xae\xeb\x23\x74\xdd\x39\x52\xd7\xf5\x11\x11\x11\xee\ +\x25\x75\x3b\xa8\x5c\xb8\x70\xb1\x48\x4f\x9f\x79\xe6\x8f\x7f\xdc\ +\xf0\x6e\xd3\x87\xbb\xb4\x17\xc0\x09\x66\x9e\x8e\xe0\xba\x1c\x36\ +\x15\x98\x19\xdf\x7d\x77\x81\x98\x83\x46\x33\x33\x49\xd9\x64\xea\ +\x37\x68\x3f\x59\xc5\xc7\x77\xa4\xd4\xd4\xe1\x37\x1d\x0e\x0d\xba\ +\xee\x42\x20\x10\x80\x10\x02\x42\x10\xaa\xab\x6b\x70\xf3\x66\x21\ +\x6e\x95\xd3\x4a\x29\x4a\x48\x88\x57\x6e\x77\xc4\xc6\x9a\x9a\xda\ +\xe1\x00\x46\x03\xf0\x13\xd1\xb7\x00\x76\x39\x1c\xda\x9e\x1e\x3d\ +\xba\xe7\x9e\x3e\x9d\x6d\xba\xdd\x11\xbb\x0c\x23\xf0\x34\x33\xff\ +\x06\x61\xca\x0f\x22\x8a\xd9\xb7\xef\x33\x8d\x88\x2a\x10\xec\xf2\ +\xda\x17\x15\x15\xbb\xfa\xf6\xed\x55\x5d\x51\xe1\x6d\xb6\x14\x67\ +\x66\xce\xce\x3e\x17\xae\xdf\xe6\xfa\xf7\x03\x0c\x40\xa4\xa4\x74\ +\xb7\xdf\x7f\x7f\x4b\x27\xc3\x30\x86\x10\x09\xaf\xcb\xa5\x1f\x9b\ +\x3d\xfb\x99\xf2\xb2\xb2\x52\x14\x16\x16\x0b\xd3\x34\x11\x19\xe9\ +\xe1\x5d\xbb\x3e\xb5\xef\xe2\x82\xe3\x9c\xc7\xe3\x1e\x65\x9a\x66\ +\x64\x20\x60\x1e\x02\x20\x35\x4d\x4b\xfd\xf0\xc3\xf5\x39\xeb\xd6\ +\x6d\x10\xe1\xc0\xa3\x99\xb2\x24\x44\x4a\x26\x27\x27\xd5\xc5\x94\ +\x00\x70\x59\x59\x99\x4c\x4b\x4b\xf5\x1e\x3d\x7a\x2c\xdb\xb6\x6b\ +\x2f\xb4\x6b\x77\x9f\x91\x9f\x7f\x89\x2a\x2b\xab\x84\x52\xc1\xf4\ +\x0f\x04\x4c\xba\x78\xf1\x92\x92\x52\xc4\x31\xf3\x94\x30\xa9\xe4\ +\xb2\x6d\x7b\x5f\x97\x2e\x9d\xcf\x96\x97\x57\x0c\x03\xf0\x20\xc0\ +\xb9\xdb\xb6\xed\x3c\x9a\x9c\x9c\xd4\xf0\xde\xb7\xa5\xe0\x6f\x5d\ +\xf2\xa9\x86\x42\x72\x72\xce\x8b\xb4\xb4\x91\xe2\xcb\x2f\xbf\x96\ +\x25\x25\xa5\x8d\x1e\x7f\x33\x2b\x02\xe8\x3a\x80\x9a\x30\x4a\xa2\ +\x98\x79\x54\x5e\xde\x45\x43\x08\xb1\x13\x80\x52\x8a\x67\xb8\xdd\ +\x11\x9d\x17\x2e\xfc\x9d\x8d\xef\xbb\xc1\x56\x81\x47\x68\x19\x6d\ +\x95\x90\x6d\xdb\xde\x83\xc3\xa1\x15\xa3\x99\x43\x31\x66\x9e\xe4\ +\x72\xe9\x89\x6e\xb7\x3b\x13\xc1\x4d\xe8\x01\xbf\xdf\xff\xd2\x8c\ +\x19\x73\x22\xfa\xf7\xef\x63\x33\x73\xab\xc1\x23\x74\x2a\x51\x37\ +\x07\x5a\x24\x24\x3f\xff\xb2\xb8\x70\xe1\x92\xb2\x2c\x73\x0a\xc2\ +\x9f\x75\x76\x50\x4a\x15\x19\x86\xb1\x5f\xd3\xb4\x02\x66\x1e\x03\ +\xe0\xe1\xca\xca\x2a\x75\xfe\x7c\x5e\xd6\xd2\xa5\xaf\xfa\x8f\x1f\ +\xff\x56\x70\xb0\x8c\x6d\x09\x78\x81\xd0\x1c\x68\x98\x8b\x77\x25\ +\xc4\xb6\x2d\x96\x52\xda\x45\x45\xc5\x43\x01\xf4\x0b\x33\x9e\x00\ +\x74\xd7\x75\xfd\xff\xd6\xad\x5b\xf9\x4d\x66\xe6\x3e\x2f\x33\x8f\ +\x04\x90\xea\xf3\xf9\x3a\xef\xd8\xf1\xc9\x05\xb7\xdb\x53\xf4\x8f\ +\x7f\x1c\x55\x97\x2f\xe7\x71\x5c\x5c\x1c\x4a\x4a\x4a\x60\xdb\xf6\ +\x5d\x1d\xd7\xd4\x6f\x07\x5b\xe4\x01\xd3\xb4\xc4\xea\xd5\xcb\x03\ +\x69\x69\x93\xde\x36\x4d\x2b\x1e\xc1\xc3\xda\x3b\x6e\xd2\x11\xfc\ +\x4c\xe2\x06\x33\xdb\x9a\xa6\x51\x62\x62\xc2\xc6\xeb\xd7\x0b\x0c\ +\xa5\xd4\x22\x00\xbf\x0a\x04\xcc\x91\xa7\x4e\xfd\x33\x53\xd3\xb4\ +\x03\x52\x8a\x8b\x42\x08\x6f\x54\x54\x54\xd1\x43\x0f\x3d\x68\x18\ +\x86\x11\x0e\xbc\x00\x60\x53\xe8\x6b\x15\x42\xd3\x11\xe0\x46\x80\ +\xdd\x12\x12\x1b\xdb\xce\xde\xb7\xef\xb3\xe8\xda\x5a\x5f\x5b\x22\ +\xa2\xe0\x57\x29\xa1\x3f\x32\x98\x88\x84\x10\x54\x35\x70\xe0\x80\ +\x72\x5d\xd7\x95\x94\x92\xbc\xde\x4a\x95\x95\xf5\xed\x40\xd3\xb4\ +\xe6\x23\xd8\x52\xb6\xc1\xf7\x17\x23\x3e\x22\x7a\x3b\x3d\x7d\xe6\ +\x8a\xbc\xbc\xfc\xfa\xa9\xd5\x10\xbc\x02\x82\xe7\x2f\xf5\x3f\x71\ +\xa9\xcf\xeb\xff\xb1\xe1\x18\xbb\x8e\x97\x94\x94\xd2\xa4\x49\x13\ +\xbc\x7d\xfa\xf4\xf4\xba\xdd\x6e\xd4\xd6\xd6\xc2\xe9\x74\xc2\x34\ +\x2d\x08\x21\xe0\x70\x68\x38\x78\xf0\x30\x55\x56\x56\xc1\xb6\x6d\ +\xb2\x2c\x4b\x45\x46\x7a\x68\xed\xda\x37\xbf\x79\xe5\x95\x85\xb3\ +\xbc\xde\xca\x21\xcc\x3c\x15\xc0\x30\x00\x49\x00\xb7\x63\x46\x4c\ +\xff\xfe\x7d\x39\x2f\x2f\x5f\x35\xa5\xb7\xee\xf9\xff\x03\x78\x8c\ +\x5f\x99\x77\x2f\x9e\x77\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\ +\x74\x65\x3a\x63\x72\x65\x61\x74\x65\x00\x32\x30\x31\x37\x2d\x31\ +\x30\x2d\x31\x33\x54\x32\x33\x3a\x34\x33\x3a\x30\x33\x2b\x30\x38\ +\x3a\x30\x30\x27\xbf\x77\xe8\x00\x00\x00\x25\x74\x45\x58\x74\x64\ +\x61\x74\x65\x3a\x6d\x6f\x64\x69\x66\x79\x00\x32\x30\x31\x37\x2d\ +\x31\x30\x2d\x31\x33\x54\x32\x33\x3a\x34\x32\x3a\x35\x30\x2b\x30\ +\x38\x3a\x30\x30\xc0\x28\xb0\x93\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x06\x33\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\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\x10\x00\x00\ +\x0b\x10\x01\xad\x23\xbd\x75\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ +\xd3\x09\x09\x14\x30\x03\x75\x06\x85\x3f\x00\x00\x05\xc0\x49\x44\ +\x41\x54\x78\xda\xc5\x97\x4d\x6c\x1b\xd7\x11\xc7\x7f\xbb\x5c\x7e\ +\x73\xad\x95\xe4\xc8\x72\x9c\x2a\x52\x80\x26\x46\x9a\xda\x54\x84\ +\xd4\x69\x9b\x16\x16\x20\x07\x69\x51\x24\x05\x9a\x22\x40\x0e\x59\ +\x03\x86\x7b\xe8\xc5\xe8\xb9\x28\x24\xf4\xd2\xab\xdd\x1e\x7b\xf1\ +\xa2\x97\xa2\x48\x51\xb4\x75\x5a\xc4\x68\x2b\xa1\x89\x03\x3b\x85\ +\x62\x26\x76\x52\x35\x82\x2d\xda\xaa\xf5\x41\x52\x21\x25\x92\xbb\ +\xfc\x58\xbe\xd7\xc3\x92\x14\x29\x92\x26\x9b\x4b\x1e\x30\xc4\xf2\ +\xbd\x99\xf7\xff\xef\xbc\xd9\x99\x79\x8a\x94\x92\x2f\x72\x68\x00\ +\xa6\x69\x0e\x6c\xb0\xfa\x98\x35\x09\x4c\x4a\xc9\xe9\xc6\x9c\x90\ +\x20\x04\x4b\x02\x92\xcf\x6c\x99\xc9\x41\xf7\xb2\x2c\xcb\x23\xd0\ +\x6f\xdc\x99\xb0\x0c\xe0\x2c\x60\x22\x88\xb7\x3a\xad\x0e\x8e\x80\ +\x79\x80\xdb\xe3\x56\x42\x48\x2c\x29\xb8\x7c\x32\x6d\xe6\x06\xf2\ +\x40\x1f\xf0\x05\xe0\x02\x60\xa8\x0a\x44\xc3\x10\xf4\xc3\x89\x47\ +\xf3\x44\xc3\x41\x00\xa4\x28\xf3\xde\x5d\x1d\xbb\x04\xc5\x32\xf1\ +\x72\x95\x38\x30\x7f\xf3\xb0\x75\x69\x3a\x63\x2e\x7c\x2e\x02\x6b\ +\x8f\x5b\x86\x90\x2c\x02\x71\x4d\x85\x58\x18\xbe\x7b\xb2\x4a\x7c\ +\x4a\x65\xfa\x09\x1f\xa0\xb7\x68\x07\xf8\x09\xb0\x9e\x11\x7c\xb8\ +\x26\x78\xe7\xd6\x2e\xd7\xd6\x46\x0d\xe1\x32\xbf\x3c\x6a\xbd\x02\ +\xcc\xce\xec\x74\xf7\x86\xd6\x03\x3c\x5e\x07\x37\xf4\x10\xcc\x3e\ +\x5d\xe1\xfb\xa7\x34\x46\x74\x3f\x00\x99\x3d\xc1\xda\x86\x4d\xc5\ +\x15\x08\xa9\x34\xed\x9e\x7d\x52\x67\xf6\x84\xca\xec\x89\x51\xde\ +\xfe\xc0\xe5\x8f\x37\x4a\x7c\xb2\x15\x8b\x0b\xc1\xda\x0d\xc3\x9a\ +\x3d\x95\x33\x13\x7d\x09\xb4\xbc\xb9\xf1\xc4\x61\x87\x1f\x7c\xdd\ +\x4f\x7c\x2a\x00\xc0\xc6\x8e\xcb\xd6\x8e\x03\xc0\x8b\x33\x7a\x07\ +\xf1\xab\xcb\x79\x00\x9e\x9a\xd0\x79\xe1\x69\x8d\x2f\x3f\x1a\xe1\ +\xcd\xa5\x6d\xfe\x74\xfb\x88\x01\x2c\x5e\x1f\xb2\xa6\x9e\xdf\x6d\ +\xf7\x44\x07\x81\x06\xb8\x11\x85\x73\x73\x41\x8e\x0c\xab\x38\x55\ +\x48\x65\x2b\x14\x8b\x0e\xdf\xf9\xda\x50\xcf\xf3\x6c\x90\xba\xba\ +\x9c\x67\xe2\xa8\xce\xa1\xa8\xca\xeb\x67\xc6\xa8\xc9\x14\x57\x6e\ +\x8f\x19\xc0\x22\x30\xdd\x6a\xa3\x76\x09\xb8\xb8\x1e\x82\xd7\x9e\ +\x77\x89\x86\x54\x0a\x0e\x64\xf3\xa2\x2f\xf8\x41\x22\xf7\x37\xf3\ +\x14\x1c\x70\x6b\x0a\x67\x9e\x3b\xcc\xf1\x71\x1b\x21\x89\xbf\x77\ +\xc8\x5a\xe8\x4a\xa0\xfe\xa9\x5d\x50\x15\x78\x6e\xaa\xc2\xe4\xb8\ +\x86\x53\x05\xa7\x0a\x77\x1e\x14\x3b\xc0\x37\xb3\x70\x6d\x05\xde\ +\x59\x81\xeb\xab\x90\x2f\xb5\x93\xf8\xd6\x57\xf5\xa6\x7d\x34\xac\ +\xf2\xf2\xa9\x00\x7e\x1f\x08\xc9\x85\x77\x75\xcb\xe8\xe6\x81\xb3\ +\x80\x71\x28\x02\x27\xa6\x34\xf2\x0e\x4d\x19\x1f\x6e\x73\x14\x4e\ +\x05\x6e\x26\x61\xb7\xbe\xfe\x59\x01\xfe\x9e\xa8\x50\x2c\xb9\x4d\ +\x9d\x70\x00\xca\x95\xfd\x3d\x8e\x8e\x68\x3c\xfb\xa5\x3c\x80\x21\ +\x24\x67\xbb\x11\x30\x55\x05\xa6\x27\xaa\x80\x8a\x5d\xa2\x29\x41\ +\x7f\x3b\x81\x8f\xd7\x69\x5b\xb7\x4b\x9e\x07\xd6\xb7\x9d\x36\x3d\ +\xbf\xe6\xad\xad\x6d\xd5\xf8\xd7\xaa\x8b\x1e\x0b\xa0\xa9\x20\x04\ +\x66\x5b\x10\xae\x3e\x66\x4d\x22\x88\x87\x43\x30\x14\x53\x29\x96\ +\xdb\xdd\x69\x87\x02\xcd\xe7\xb2\x0b\x9f\x6e\x42\xd5\x6d\xd7\xd9\ +\xdd\x49\x73\xfc\xf4\xb1\xb6\xb9\x7f\x7c\x58\x25\x99\x56\xb0\x5d\ +\xad\x09\x37\x12\x83\x8d\x2c\xf1\xa5\x88\x35\x09\x24\x1b\x2b\x93\ +\x52\x7a\x6e\x0b\xf8\x3a\x09\xdc\x49\xf9\xf8\xcb\x4d\x18\x89\xc1\ +\xea\x46\xe7\x79\xbb\xf6\x36\xaf\x7c\xd3\x68\x9b\xfb\xf7\x7f\x05\ +\x9f\x6c\xfa\x3b\x02\x34\x16\x06\xb2\x20\x25\xfb\x04\x1a\x85\x25\ +\xa4\xd5\x28\xd7\x7c\x94\x6b\x9d\x91\xfd\xf1\x7a\x8f\x54\x5a\xd9\ +\xe6\x47\xdf\x1b\x25\x1a\xda\xff\xa2\xed\xb2\xe4\xd7\x57\xab\x40\ +\xb0\x43\x3f\xe8\x07\x29\x41\x78\x98\x4b\x5a\x6b\x51\x31\x22\x35\ +\x8a\x65\xdf\xc0\x95\x31\x50\xbe\xc7\x8f\x5f\x3d\xd6\x01\xfe\x8b\ +\xdf\x57\x58\xcf\x05\xbb\xda\x84\x03\x1e\x96\xd7\x06\x28\x5e\x0c\ +\x88\x7a\x75\x13\x42\xa1\xe0\x0c\x06\x2e\x4b\x29\x7e\xfe\x46\x77\ +\xf0\x95\xad\xe0\xc3\x6d\x5b\xca\xa9\x47\x40\x78\x7f\xb2\xb6\x86\ +\xcf\xdf\x1f\x5c\x41\xf2\xd2\x71\xd1\x06\x9e\xde\x93\xfc\xea\x4a\ +\x95\x4f\xb7\x83\xa8\x4a\x6f\xdb\x83\xf1\xd5\xd8\x61\x49\xc0\x7c\ +\x55\x28\x94\xab\x0f\x67\xee\xd5\x7e\x85\xa7\x26\x22\x6d\x6b\xbf\ +\x7c\xab\xc6\xdd\x4c\x00\xad\xcf\x09\x96\xab\x80\x14\x00\x4b\xe0\ +\xab\x7b\x00\x92\x8d\x04\xe3\xd6\xc0\xa7\xca\x16\x50\xa5\x79\x44\ +\xa0\x34\x7f\x15\xf6\x75\xee\x67\x24\x6b\x69\x0d\x65\x80\xa3\xcb\ +\x15\x00\xcf\x36\xd9\x4c\x44\xcf\x6c\x99\x49\x21\x49\xec\xd9\xa0\ +\x2a\x1e\x68\x43\xc0\x9b\x3b\x28\x99\xc2\xfe\xab\x2e\xdf\x55\xba\ +\xea\x74\x93\xd4\x1e\x00\x89\xb9\xca\xb9\x64\x5b\x35\x94\x02\xab\ +\x2c\x88\xdb\x25\x17\x23\xd6\xbf\x53\xfb\xdd\xfb\x31\x36\xf2\x50\ +\x2c\x79\x35\x21\x30\x40\x73\xb7\x99\x75\x71\xbd\x04\x66\x75\x2b\ +\xc7\x97\x81\xf9\xf5\x1d\xd5\x38\x32\xdc\x7f\x33\xbb\xf0\x19\x46\ +\xc0\x4f\x48\xba\x8c\x0f\xe9\x64\xed\xfe\x0c\xfe\xb3\xa1\x00\x32\ +\x57\xc7\x6a\xaf\x05\x27\xd3\x66\x4e\x48\x2e\x15\x2b\x2a\xd9\xdd\ +\x02\xe1\x00\x3d\xc5\x27\xf2\xfc\xec\x87\x7e\x5e\x9c\xd1\x79\xf9\ +\x1b\xc3\xfc\xf4\x55\x0d\x23\xca\x43\x6d\xb6\x32\x79\x9c\xb2\x04\ +\xc4\xa5\xb9\xca\xb9\x5c\xd7\x7e\xa0\xde\x40\x26\x3e\x7a\x10\xa3\ +\x54\xcc\xe2\xd7\xe8\x2e\x8a\xcb\xe3\x47\xf5\xb6\xe4\x32\x39\x46\ +\x4f\xfd\xbd\xdc\x0e\xd7\xef\x84\x01\x91\x98\xab\x9c\x5f\xe8\xd9\ +\x90\xd4\xc7\xac\x10\xe4\xfe\xb6\x32\x4c\xa5\x90\x26\xe8\xa7\x43\ +\xc2\x91\x30\x4e\xe5\xc0\x91\x94\xe8\xaa\x6b\xef\xa5\x78\xeb\xd6\ +\x10\x20\x72\xc0\xec\x41\xb0\x0e\x02\x33\x3b\x66\x4e\x48\x66\xa5\ +\x24\x77\xe5\xf6\x23\x64\x52\xa9\x0e\x77\xea\xb1\x10\xbf\xbd\xe6\ +\x55\xc5\x7b\x69\xf8\xc3\xfb\x50\x72\x3b\xdd\xbe\xb9\xb9\xc9\x9b\ +\xcb\x23\x4d\xf0\xb9\xca\xf9\xdc\x40\x5d\xf1\xa9\x9c\x99\xb8\x3e\ +\x64\x4d\x09\xc9\xe2\xdb\x2b\x63\xf1\xc3\xf7\x6d\xce\x7c\xa5\xc0\ +\xe8\xe8\x58\x53\x67\xcf\x86\xbf\x7e\xb0\x6f\xd3\x92\x14\xc9\xa4\ +\x1e\xf0\xe7\x8f\x86\x48\x17\x1e\x01\x44\xa2\x17\xf8\x43\xef\x05\ +\xf5\xee\x75\xfa\x5d\xdd\x5a\x48\x15\x23\x17\x7e\x73\x23\x62\x1c\ +\xd3\xf3\xcc\x4c\xec\x32\x36\x1c\x24\x14\x0c\x11\x8d\x79\x71\x50\ +\x2c\xe6\x71\x1c\x87\xad\x4c\x89\x1b\xf7\x0c\x36\xf6\x8e\x00\xe4\ +\xbc\x80\x3b\xff\xf9\x2e\x26\x8d\xf1\x42\xde\x5c\xf8\x67\xcc\xba\ +\x08\x9c\x5d\xdf\xd5\xcd\xf5\x5b\x7a\xbc\x5e\x4e\x5b\x0a\x4b\x0c\ +\x64\xa4\x91\xe1\x12\xde\x77\x2e\x2e\xf7\x7a\xeb\xff\x8b\x00\xc0\ +\xb7\x0b\x66\x0e\xb8\x08\x5c\x5c\x0c\x7b\x97\x53\xe0\x74\xb3\xaa\ +\x35\x73\x3b\xc9\x46\x86\x1b\x74\x28\x5f\xf4\xf5\xfc\x7f\x92\x93\ +\xb2\xba\x6d\x79\x43\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x0b\xe1\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ +\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\ +\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\ +\x00\x00\x3a\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\x00\x00\x00\x06\ +\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\ +\x00\x07\x74\x49\x4d\x45\x07\xe1\x0a\x1f\x04\x05\x06\xc0\x1b\xc4\ +\x43\x00\x00\x0a\xe5\x49\x44\x41\x54\x68\xde\xcd\x5a\x6b\x90\x54\ +\xc5\x15\xfe\x4e\xdf\x3b\x77\x66\x76\x96\x9d\x65\x67\x71\x51\x79\ +\x49\x10\xe5\x21\x28\x02\x0a\x18\x5c\x65\x92\xd2\x98\x94\x86\x94\ +\x92\x68\x48\x7e\x04\x1f\x10\x30\xbb\x1b\x2b\x65\xa5\x7c\x96\x29\ +\xab\xcc\x43\x17\xe5\x51\x25\x8f\xca\x8f\x18\x63\x02\x3e\x10\x9f\ +\x59\x17\x6a\x85\x22\x20\x2a\x06\x70\x05\x04\x91\xa7\x60\xf6\x31\ +\x3b\xbb\x3b\x33\xf7\xde\xee\x93\x1f\x73\x67\xf6\xce\x9d\x3b\x0b\ +\x05\x04\x73\xfe\xf4\xd6\xdc\x73\xba\x4f\x9f\xaf\xcf\xe9\xaf\xbb\ +\x97\xe2\xf1\x5a\x81\x42\x21\x00\xec\xb4\x0a\x80\xf0\x69\xd9\xa5\ +\xf7\x4d\xda\xb2\x70\x19\x0b\xa7\x75\xff\xad\x39\xdf\x4b\xb5\xe2\ +\x9b\xb6\x75\x4f\xc0\xdd\x96\x8a\x0c\xbb\x22\xe2\xfe\xfd\x9b\xb2\ +\x65\x3d\x07\x45\x89\x4e\x70\x1a\x9d\xf4\x27\x67\x6c\x9b\x4a\xa5\ +\x78\xf3\xe6\xad\x2a\xa7\x3b\x71\xe2\x38\x15\x8b\xc5\x34\x21\x84\ +\xbb\x4f\xd2\x5d\xf0\xfd\x5f\x38\xcf\xcc\xf8\xe2\x8b\xfd\x32\x1e\ +\xbf\x79\xc0\xd4\xa9\xd3\x26\x03\x18\x0a\xd0\x7f\x6c\xdb\xda\xd3\ +\xd9\xd9\x79\x70\xc7\x8e\xed\x5c\x53\x33\x38\xe7\xb3\x22\x27\x89\ +\xc5\xb9\x72\xe0\x6c\x6c\x2d\xcb\x42\x4f\x4f\xb7\x9a\x31\xe3\xfa\ +\x09\x9a\xa6\x3f\x08\xe0\x16\x00\x11\x00\x16\x80\xa3\xcc\xfc\x9a\ +\x94\xf2\xd9\x0d\x1b\xde\x39\x54\x53\x73\x21\x01\x60\x8a\xc7\x6b\ +\x35\x9f\x4e\xf3\x0e\x30\x33\x1d\x3b\x76\x4c\xb6\xb6\xee\xf3\x3a\ +\xe6\x75\xa8\xd4\xb7\xfe\x5a\xcc\x9c\x39\x5d\x33\x0c\x83\x3a\x3b\ +\x3b\x78\xe2\xc4\xab\xf5\x8a\x8a\xe8\x1c\x22\x7a\x14\xc0\xc8\x12\ +\xf3\x7c\xb5\xbb\x3b\xf9\xf3\x5d\xbb\x76\xf4\x94\x95\x45\x58\x77\ +\xa2\xa3\xf9\x39\x9f\x48\x74\x62\xd4\xa8\xcb\x30\x76\xec\x15\x97\ +\xdc\x74\xd3\xf7\xc7\x02\x18\x0e\x40\x47\x71\x89\x23\x00\x20\x02\ +\x98\x01\x22\x02\x33\x83\x88\x98\x99\x05\x11\x14\xb3\x6f\x59\x24\ +\x66\xfe\xf0\xbd\xf7\xde\xde\x34\x73\xe6\xac\x01\x86\x61\xfc\x86\ +\x88\xee\x77\xa2\xee\x27\x12\x40\x92\x59\x29\x91\xad\x3f\x94\x73\ +\xc6\x13\x1d\xe6\xcf\x3e\x6b\xe5\xd9\xb3\x7f\x7c\xb1\xa6\x69\xbf\ +\x24\xa2\x1f\x01\x18\x06\xc0\x38\xc5\xd2\x01\x51\xae\x25\x4f\xeb\ +\xab\xbe\x49\x29\xf9\x4e\x6d\xed\x77\x06\xe9\xba\xfe\x14\x11\xdd\ +\xe5\x09\xa6\x5b\x0e\x33\xf3\xe2\x4c\x26\xfd\xe7\x9d\x3b\x77\xa4\ +\xca\xcb\x07\x10\x00\xe5\x46\x20\x3f\x89\x4f\x3f\xdd\xc5\x77\xdc\ +\x31\x77\x82\x10\x62\x09\x80\x19\xa7\x72\xfa\x0c\x65\xab\x94\xf2\ +\x1e\x80\x12\x81\x80\xbe\x0c\xc0\x6d\xf0\xcf\x0f\x06\xf0\x9e\x52\ +\xf2\x91\x3d\x7b\x5a\xb7\xf5\xf4\x24\xe1\x38\x0f\x38\xd1\x2f\x40\ +\xe0\xc8\x91\x2f\x71\xfb\xed\x77\x0d\x15\x42\x2c\xfd\x1f\x3a\xdf\ +\xaa\x94\x5c\x08\xa0\x4d\xd3\xb4\x25\x00\x7e\x58\xc2\xf9\x0c\x80\ +\xe5\xa6\x69\xfe\xac\xb1\x71\xf1\xbf\x4c\x33\x43\x86\x11\x2c\xc8\ +\xb9\x02\x04\x94\x52\x34\x7a\xf4\x58\x08\xa1\x2d\x02\x30\xdd\x27\ +\x12\x49\xa7\x53\xaf\x9c\x6e\xd2\x0a\x00\x1d\x4a\xa9\x07\x6c\x5b\ +\xee\x35\x0c\xe3\x39\xc7\x79\x3f\x49\x32\xf3\x93\xdd\xdd\xc9\xe7\ +\x5e\x7f\xfd\xe5\x94\x53\x6c\xdc\xbe\xe4\x97\x50\x0e\x01\xd1\xdc\ +\xdc\x62\xdf\x7f\xff\xa2\x4b\x89\x68\xb6\xa7\xb3\x2e\x00\xcb\x95\ +\x92\xaf\x33\xa3\x2b\x9b\x98\xa4\x7c\x5a\x72\x12\x97\xb2\x6b\xbf\ +\xaf\x98\x65\xff\x20\x30\xab\x94\x69\x5a\x47\xc3\xe1\xf0\x23\x00\ +\xee\x2a\xe1\x7c\x82\x99\x7f\xdb\xdd\xdd\xbd\xaa\xab\x2b\xa1\xc6\ +\x8e\x1d\x2f\x7c\x9c\xcf\x23\xc0\x0e\x02\x0a\x00\x6b\x9a\x3e\x01\ +\xc0\x50\x4f\x87\xcf\x1d\x3a\xf4\xe5\xe3\x6b\xd6\xac\xb5\x2e\xb8\ +\xa0\x52\x58\x96\xc5\x81\x80\x4e\xa6\x69\xb1\x61\x04\xc8\x34\x6d\ +\x36\x0c\x9d\x6c\x5b\xb2\xa6\x69\xa4\x94\xca\xcf\x80\x99\x21\x84\ +\x20\x29\x25\x4b\x69\x53\x22\x91\x56\xf5\xf5\xf5\xf3\x88\x68\x11\ +\xfc\x13\xb6\x8b\x99\x1f\x4c\x24\x3a\x57\x47\xa3\x95\x73\x22\x91\ +\x48\xc7\x4b\x2f\xfd\x63\x7d\x3c\x5e\xab\xa3\x18\x4d\x99\xdb\x89\ +\x15\xb2\x25\x0d\x0d\x0d\x0d\x97\x20\x5b\x2a\x73\xd2\xae\x94\x7c\ +\x75\xcd\x9a\xb5\x96\xab\x13\xe1\x99\xb8\x70\xfd\x5e\x52\x9a\x9a\ +\x36\xda\x75\x75\x75\xd3\x88\xe8\x61\x00\x65\x3e\x2a\x69\x66\x7e\ +\xa2\xab\x2b\xb1\x3a\x1a\xad\xbc\x93\x88\x9e\x21\xa2\x46\x00\x6f\ +\xa0\xc4\xe6\x58\x90\xc0\x4e\xd4\x02\x9e\x4e\x53\xcc\x9c\x88\xc5\ +\x22\x02\x67\xb1\x3b\x1f\x3c\xb8\x5f\x2d\x58\x30\x7f\x90\x10\xe2\ +\x51\x64\x4b\xb2\x57\x14\x33\x2f\x4d\xa5\x7a\x97\x54\x54\x44\x6f\ +\x25\xa2\xdf\x03\xa8\x64\xe6\xb2\x12\xe3\x0a\xb8\xe8\x34\x3b\x08\ +\xf8\x46\x91\x99\x45\x5b\x5b\xcf\x19\x3b\xaf\x94\xe2\x9a\x9a\x0b\ +\x45\x28\x14\x9e\x07\x20\x5e\x42\x6d\x5d\x26\x93\x79\x32\x14\x0a\ +\x5f\x43\x44\x7f\x00\x30\x08\x00\x88\xc8\x8b\x70\x6e\xdc\x3c\x02\ +\x40\x7e\x27\x25\x38\x1f\x0a\x84\x88\xb8\xa6\x26\x7a\xc6\xbc\xa8\ +\xb9\xb9\x85\xa7\x4c\x99\x7e\x15\x80\x05\xf0\x5f\xf7\xbb\xa5\x94\ +\x0f\x29\xa5\x58\x08\xf1\x38\xb2\x3b\x7e\x3e\x78\x28\xde\xf5\xf3\ +\xc1\x74\x23\x80\x2c\x00\xbe\x08\xd0\x89\x13\x09\x06\x20\x52\xa9\ +\x5e\xb5\x77\xef\x67\xdc\xd4\xb4\xd1\x6e\x6a\xda\xa8\x7a\x7a\xba\ +\x15\xb3\x42\x09\xe1\x4c\x26\x4d\xf7\xde\x7b\x4f\x58\x08\x51\x0f\ +\x60\x88\x8f\x4e\x92\x99\x7f\xd7\xd8\xd8\xb8\x5b\xd7\xf5\x0a\x78\ +\x0a\x08\x11\x95\x3c\x0b\xe4\x10\xc8\xd3\xe9\xd2\x08\x08\x35\x78\ +\x70\x25\x25\x93\x49\x79\xe9\xa5\x63\x82\xb3\x67\xcf\x99\x50\x57\ +\x57\x77\x5b\x5d\x5d\xdd\x77\x27\x4f\x9e\x36\x3c\x14\x2a\x63\xdb\ +\xb6\xbc\x47\x44\x06\x20\x5a\x5a\xb6\xd8\x65\x65\x65\x37\x03\xb8\ +\xb5\xc4\x24\xff\xd2\xd9\xd9\xf1\x4a\x24\x22\x84\xe3\x6c\x41\x3f\ +\x4e\x50\x4b\x1d\x82\x58\x78\x0d\x88\x8a\x97\x84\x52\x4a\x7c\xf5\ +\x55\xa7\x1a\x33\x66\x7c\xb8\xaa\x2a\xf6\x98\x10\x5a\x93\x10\xe2\ +\xef\x42\x88\xd7\x02\x81\xc0\x9b\xa3\x47\x8f\xb9\x73\xe0\xc0\x18\ +\x99\xa6\x99\x3f\xab\x02\xa0\xe3\xc7\x8f\xc8\xf9\xf3\xe7\x57\x13\ +\x89\x05\xf0\xaf\x3a\xbb\xa4\x94\x4f\xaf\x5f\xbf\xd6\x1a\x30\x20\ +\x0a\x66\x2e\x3a\x9b\x38\x41\x75\x17\x90\x82\xcf\xc2\xfd\x23\x33\ +\x67\xb7\x1c\x8f\xe4\x4e\x41\x91\x48\x79\x19\x80\x1b\x01\xc4\x90\ +\xad\x56\x41\x00\x97\x13\xd1\x33\x23\x46\x7c\xeb\x8e\x4c\x26\x03\ +\x29\x65\x1e\xe2\xdd\xbb\x3f\xe7\x70\x38\xfc\x3d\xf8\x53\x12\x93\ +\x99\x9f\x5e\xbc\x78\xf1\xfe\x09\x13\x26\x51\x45\x45\x05\x09\x71\ +\x4a\x04\xbc\x92\x4f\x90\xdc\x6c\x89\x8a\x69\x23\x29\xa5\x08\x00\ +\x3e\xfa\x68\x6b\x07\x33\x2f\x06\xd0\xe1\xd1\x89\x11\xd1\x1f\xa6\ +\x4f\x9f\x19\x6f\x69\x79\x9f\x99\x99\x13\x89\x0e\x2c\x5c\xb8\x30\ +\x46\x44\x77\xc3\x9f\xc5\x36\xa5\xd3\xa9\x57\x26\x4d\x1a\x2f\x88\ +\x88\xbe\xfe\xfa\x24\x3b\xe3\xf8\x21\xe0\x77\x8b\x91\x47\x20\xbf\ +\x8c\x38\x2b\xc5\xb3\x14\xc4\x55\x55\x65\x14\x08\x18\x7c\xe8\xd0\ +\xc1\xbf\x31\xf3\xc3\x00\xba\x3d\x7a\x17\x11\xd1\x1f\x17\x2d\xaa\ +\x1b\xbb\x7d\xfb\x16\xde\xb6\x6d\x87\x0c\x04\x02\xb7\x00\xb8\xc6\ +\x67\xe0\xa4\x52\x6a\xf9\xb2\x65\xcb\x3b\xab\xaa\xaa\x09\x00\xd7\ +\xd4\x5c\x48\x0e\xd2\x7e\x08\xe4\x26\x51\xf0\xc9\x8d\x40\x7e\x23\ +\xf3\x43\x80\x99\xa9\xbd\xbd\x97\x0d\xc3\xa0\xe3\xc7\x8f\xa8\xf6\ +\xf6\xb6\x95\xcc\xfc\x0c\x00\xdb\xa3\x3b\x5e\x08\xf1\xc4\xdc\xb9\ +\x77\x47\xef\xbb\xef\xde\x4a\x22\xfa\x29\x8a\x37\x46\x00\x78\xa7\ +\xb7\xb7\xa7\x79\xe6\xcc\x69\x79\x7a\x70\xf4\xe8\x21\xd5\x0f\x02\ +\x7e\x92\x4f\x8e\x7c\x82\x94\x42\x80\x88\x38\x12\x11\x04\x00\x65\ +\x65\x11\xfa\xe4\x93\xed\xb6\x69\x66\xfe\x04\x60\xad\x4f\xc7\x3f\ +\x08\x04\x8c\x79\x65\x65\x91\xeb\x50\xcc\x68\x81\x2c\xd7\x79\xfe\ +\xf9\xe7\x57\xa4\x82\xc1\x50\x3e\x5f\x86\x0c\x19\x26\x4a\x20\xe0\ +\xb7\x74\x72\x08\x90\x1f\x02\x45\x37\x66\xcc\x40\x2a\xd5\x57\x5d\ +\xab\xab\x2f\xa0\xa5\x4b\x97\x25\x95\x52\x8f\x01\xd8\xed\xd1\xd7\ +\x88\xe8\x57\x44\xf4\x18\xfc\x2b\x4f\x73\x32\xd9\xb5\x65\xda\xb4\ +\xc9\xb9\x02\xc2\x00\xc4\xe1\xc3\x25\x11\xe8\xf7\xc2\xc1\x8d\x80\ +\x70\x10\x10\x7e\xca\xca\xb3\x3b\xc4\xe3\xb5\xd4\xd8\xd8\xb8\x87\ +\x99\x9f\x02\x90\xf2\xd8\x5c\x0c\xe0\x6a\x9f\x81\x33\xcc\xea\xaf\ +\x2b\x56\xac\xec\x8e\x44\xca\x0b\xe8\xc1\x90\x21\xc3\x04\x91\xf0\ +\x8b\x76\x6e\xe4\x82\x12\xed\x46\x20\xdf\x89\x83\x80\x77\x23\x23\ +\x00\x5c\x5e\x5e\xc0\x00\x18\x00\x4d\x99\x72\x25\x75\x75\x25\x5e\ +\x45\x96\x2d\x9e\x8e\x7c\x68\x59\x76\xf3\xd4\xa9\x57\xb9\x59\xac\ +\x02\x40\x27\x4e\x1c\x63\x67\x1f\xf0\x4c\xa2\xe0\xfa\xd3\xcb\xc7\ +\x38\x07\x63\x8e\x4e\x97\x44\xa0\xbb\x5b\x16\x45\x20\x1a\xad\xd4\ +\x56\xae\x5c\x95\x54\x4a\x2d\x03\xd0\x7e\x1a\x13\x58\xb3\x64\xc9\ +\x92\xf6\x68\xb4\x12\xf0\xd0\x83\x41\x83\x06\xe7\x96\xaf\x27\x6b\ +\x49\x79\xc7\xc5\x29\xe8\xb4\x1f\xb1\xe1\x58\x2c\xe2\x7b\x57\x59\ +\x5b\x7b\x9d\x9e\x4c\x76\x6d\x01\xf0\xf6\x29\x9c\x3f\x6c\xdb\xf6\ +\xbb\xce\xdf\x45\xdc\x26\x91\xe8\x60\xa0\x18\x01\x27\xa0\x67\x47\ +\xa7\x01\xa6\x52\x74\x3a\x10\x08\xf0\xaa\x55\xab\x33\xcc\xfc\x02\ +\x80\xde\x7e\x26\xb0\xb1\xad\xed\xeb\x7d\x37\xdc\xf0\xed\xdc\xf2\ +\x29\xe0\x36\xe5\xe5\x03\xdc\x51\xee\x8b\xff\xf9\xa0\xd3\x93\x26\ +\x8d\x17\x99\x4c\x7a\x2b\x80\x8f\x4b\x38\x6f\x32\xf3\xba\x17\x5e\ +\x78\xd1\xd2\x34\xcd\xef\x56\x0f\xa6\x69\x02\x3e\x3b\xee\x39\xa7\ +\xd3\x7e\xd1\xab\xaa\xaa\xa6\x65\xcb\x96\xb7\x33\xf3\xbb\xf0\x97\ +\xfd\x96\x65\x6e\x1b\x38\x30\x4c\x80\xff\x39\x22\x7b\x9b\xd7\x17\ +\x4c\x77\xf0\x70\xae\xe8\x34\x4e\x71\x90\x51\x4a\xad\x03\x70\xa0\ +\xd8\x7f\xde\xf0\xf9\xe7\x7b\x8f\x4e\x9a\x34\xa5\x14\xab\x84\xae\ +\xeb\x38\x57\x74\xba\x08\x01\x87\x4e\xfb\x42\x9f\x93\x59\xb3\xae\ +\xd7\x5a\x5b\x77\xee\x54\x4a\xdd\x03\xe0\x4d\x00\xc7\x01\xb4\x01\ +\xf8\xa7\x52\xbc\x7c\xf7\xee\x1d\xec\xd4\x79\x5f\x6e\x90\x4a\xf5\ +\x9e\x33\x3a\x6d\x7a\x94\x0c\x4d\xd3\x82\xfd\x39\x9f\x1b\x48\x4a\ +\x49\xef\xbf\xdf\xbc\x21\x99\x4c\xfc\x44\x4a\x79\xa3\x6d\xdb\xf1\ +\x74\x3a\x3d\xa7\xa5\xa5\xb9\xf5\xb2\xcb\xc6\xf5\xf7\x0e\x81\xde\ +\xde\x1e\xe8\xba\x66\xc0\xc3\x5c\x99\xd9\xe2\xec\x91\xcf\x97\x4e\ +\x17\xdc\x4e\x13\x11\xea\xeb\xeb\x8f\xa2\x2f\x69\x80\x2c\x55\x8e\ +\x03\xd8\xb9\x6f\xdf\x1e\x94\x97\x0f\xe0\x40\x40\x27\x29\x15\x13\ +\x01\x44\x82\xa4\xb4\x39\x10\x08\x50\x3a\x9d\xe1\x70\x38\x44\xcd\ +\xcd\x4d\xc9\xfd\xfb\xbf\xdc\x53\x51\x11\xe6\xea\xea\x98\x08\x06\ +\x83\x68\x6b\x53\x64\x9a\xa6\xf2\xb3\xed\xed\xed\x45\x22\x61\xaa\ +\x86\x86\x86\x1b\x01\x0c\xf6\x38\x79\x94\x88\x10\x8f\xd7\xfa\xc6\ +\xcd\x7b\x3b\x4d\x52\xca\x7f\xeb\xba\xfe\x15\x80\x8b\x1c\x25\x41\ +\x44\x0f\xd4\xd7\xd7\xa7\xa5\xb4\xdf\x92\x52\xa5\x89\x72\x65\x17\ +\xce\x15\xba\x22\x22\xc1\xcc\x8a\x84\x10\x2c\xa5\x22\x4d\x13\xac\ +\x54\xdf\xef\x59\xbd\x6c\xae\x7a\x6d\x35\x4d\x37\x1a\x1a\x1a\xe2\ +\x44\xf4\x10\x0a\xef\xa4\xda\x94\x52\x1f\x95\x8a\x3e\x9c\x07\x8e\ +\xdc\xab\x20\xdb\xb6\x4d\xc3\x87\x5f\xa2\xc5\x62\x83\x96\x02\xf8\ +\x85\xc7\xc0\x74\xd6\x75\x0f\x7c\xaa\x01\xfc\x0f\x1c\xbe\x51\xf3\ +\xb1\x09\x21\xcb\x9f\x82\x1e\xdd\x17\x13\x89\xce\x79\xfb\xf6\xb5\ +\x9a\x86\x11\xf4\xeb\xab\xe0\x6e\x94\x74\x5d\xe7\xf5\xeb\x5f\xb6\ +\xe6\xce\xbd\xfb\x59\x21\xc4\x0c\x00\x97\xbb\x94\x0d\xb8\xae\x3b\ +\xce\x83\x1c\x50\x4a\x35\xae\x5a\xb5\xda\x7b\xb1\xeb\x46\x80\xb4\ +\x91\x23\x47\xc0\x35\x09\x31\x78\xf0\x45\xf8\xe0\x83\x2d\x27\x47\ +\x8f\x1e\xb3\x97\x88\xae\x45\xf6\xfc\x7b\xbe\xe5\x20\x33\xd7\xbf\ +\xf5\xd6\xba\x8d\x57\x5e\x39\x41\xf3\x39\xd4\xe4\x11\xd4\x46\x8e\ +\x1c\xe1\x7e\x3c\x56\x44\x44\x15\x15\x51\xb4\xb6\xee\x3c\x30\x7c\ +\xf8\xc8\x4d\x44\x14\x45\x16\xde\xf0\x79\x70\x3c\x01\xe0\x0d\xa5\ +\xd4\xaf\x37\x6f\x6e\xd9\x50\x5d\x1d\x13\x42\x14\xef\xab\x70\x2d\ +\xc3\xdc\x2b\x65\x11\x3f\x61\x66\x3e\x79\xf2\x04\x5f\x7b\xed\x75\ +\xe1\x48\x24\x72\x05\x91\xb8\x86\x88\x86\x02\x1c\x02\xf2\x57\xea\ +\x9c\xcf\xcc\xc2\x96\x00\x56\x7d\x07\x26\x16\x2e\x1b\x3f\x5b\x93\ +\x08\x47\x94\x52\x1f\xf4\xf4\xf4\x7c\xbc\x62\xc5\xca\xde\x59\xb3\ +\xae\xef\x37\xf2\x4e\xc0\x25\xb9\xd6\x97\x6f\x9d\xb7\x6d\x9b\x37\ +\x6e\xdc\xa4\x00\xf0\xa8\x51\xc3\x84\x65\x59\x1c\x0e\x87\x45\x3a\ +\x9d\x56\xa1\x50\x48\xa4\xd3\x69\x15\x0c\x06\x85\x65\x59\x2a\x10\ +\x08\x90\x94\x12\x44\x04\x22\x82\x52\x0a\x9a\xa6\xc1\xb2\x2c\x18\ +\x86\x81\x74\x3a\xc3\xa1\x50\xb0\xc0\x36\x14\x0a\x89\x03\x07\x0e\ +\x2b\xd3\xb4\x30\x6e\xdc\x68\x0c\x1c\x38\x50\x84\x42\xe1\x52\x55\ +\xc7\xcb\xc7\xe0\x7e\x27\x3e\x17\xef\xbf\x7e\x7d\x94\x7a\xa9\x39\ +\xdb\x77\x67\x01\x40\x0a\x1f\x05\x3f\xe3\xfe\x3a\x39\x53\xe7\xc5\ +\x59\x8e\x5b\x70\xa0\x01\xfa\x48\x5c\xee\xff\x13\x72\x2d\x7b\xbe\ +\x01\xd9\xf7\x5a\x77\xfb\x8d\xd9\xfe\x17\x5a\x62\x2e\xda\x22\x1b\ +\xb0\x80\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x63\ +\x72\x65\x61\x74\x65\x00\x32\x30\x31\x37\x2d\x31\x30\x2d\x33\x31\ +\x54\x31\x32\x3a\x30\x35\x3a\x30\x31\x2b\x30\x38\x3a\x30\x30\xff\ +\x8c\x2c\xfe\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\ +\x6d\x6f\x64\x69\x66\x79\x00\x32\x30\x31\x37\x2d\x31\x30\x2d\x33\ +\x31\x54\x31\x32\x3a\x30\x35\x3a\x30\x31\x2b\x30\x38\x3a\x30\x30\ +\x8e\xd1\x94\x42\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\ +\x00\x00\x07\x7b\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\x70\x65\x2e\x6f\x72\ +\x67\x9b\xee\x3c\x1a\x00\x00\x07\x0d\x49\x44\x41\x54\x58\x85\xc5\ +\x97\x49\x6c\x1c\x65\x16\xc7\x7f\xef\xab\xea\xcd\x6e\xdb\xe9\xb6\ +\xe3\x71\x1c\xdb\x31\x31\x6d\x07\x05\xc5\x09\x4b\x34\xc9\x44\x80\ +\x66\xc4\xa2\x44\x42\x39\x70\xe4\x80\x10\x20\x84\x10\x52\x0e\x13\ +\x0e\x20\x61\x09\x44\x16\x89\x1c\xb8\xc0\x81\x2b\x42\x82\x03\x17\ +\x92\x81\x64\x32\x08\x65\x63\x11\x0e\x26\x13\x5b\x4a\x3c\xce\x82\ +\xdb\x59\xec\x76\xa7\xbb\xdd\x5d\xd5\xdd\xb5\xcc\xa1\xaa\xab\x17\ +\x5b\x73\x8b\xe6\x93\x4a\x5f\x2d\xaf\xde\xff\x5f\xff\xf7\xbe\xf7\ +\xbd\x12\xd7\x75\x39\x28\xb2\x17\x98\x00\xc6\x81\x30\xf7\x77\x54\ +\x80\x29\x60\xe2\xa8\xeb\x9e\x90\xbf\xc3\xde\xae\x58\xec\xf8\xdf\ +\x1e\x7a\x88\x1d\x43\x43\x44\x74\xfd\xbe\xa2\x97\x2d\x8b\x8b\x37\ +\x6f\x72\x7a\x66\x86\x9c\x61\xec\xd3\x81\x89\xbf\x6e\xd9\xc2\xf8\ +\xc6\x8d\x5c\x99\x9f\x67\x3e\x93\xa1\x6a\x59\x6b\xbe\x2c\x22\x68\ +\x22\x28\xa5\xd0\xfc\x43\x29\x85\x26\x12\x9c\x2b\xa5\x50\xbe\x4d\ +\xeb\xac\x2b\x45\x22\x1e\xe7\xd1\xa1\x21\x5c\xd7\xe5\xeb\x8b\x17\ +\x27\x74\x60\x7c\x7c\x70\x90\xab\xe9\x34\xf9\xe1\x61\x52\xaf\xbe\ +\x8a\x16\x89\xac\x85\x8e\x00\x4a\x04\x44\x50\xfe\x3d\x25\x82\xf8\ +\xcf\xa4\xe5\x9c\xc6\xfb\x00\xd5\x2a\xa5\x33\x67\xc8\xcd\xce\x32\ +\x3e\x38\xc8\xd7\x17\x2f\x8e\xeb\x40\x38\xac\x69\xa4\x33\x19\x52\ +\xaf\xbd\x86\x1e\x8f\xaf\xc6\x6e\x70\x12\xea\xea\x22\xdc\xdd\x4d\ +\x28\x91\x40\xeb\xea\xc2\xb2\x6d\xcc\x4c\x06\x29\x14\xd0\x56\x56\ +\x70\x56\x56\x02\xb5\xa4\x75\x0e\x85\x88\x3f\xf1\x04\xf9\xcb\x97\ +\x59\xe7\xe1\x84\x75\x00\xd7\x75\xa9\xda\x36\xae\x6d\x63\xf9\x0e\ +\x5a\xc1\xe3\x23\x23\x24\x77\xed\x42\x8f\xc5\x56\x11\xec\xec\xef\ +\xaf\xc7\xb8\x58\xe4\xc6\xe9\xd3\x24\x0b\x05\x10\x09\xd4\x0b\x66\ +\xc7\x01\x11\x5c\xd7\x05\x20\x20\x00\x60\x15\x8b\x88\xa6\x35\xc7\ +\x3c\x16\xa3\xf7\xa9\xa7\xe8\x18\x1d\x5d\x33\x2f\x5a\x47\xa4\xbd\ +\x9d\xd1\xe7\x9f\xe7\xc6\xe4\x24\x32\x39\x49\xbb\x52\x75\x70\x11\ +\xc4\x71\x50\xad\x04\x1c\xff\xc2\x2e\x16\xc1\x27\x20\x40\x7c\x78\ +\x98\xfe\xfd\xfb\x09\x35\x84\xc5\xb1\x6d\x96\xe6\xe7\xb9\x33\x37\ +\xc7\xdd\xb9\x39\xda\x22\x11\x12\x43\x43\x74\x0f\x0f\xd3\x3d\x30\ +\x80\xf2\x01\x37\x3d\xf2\x08\xc5\xcd\x9b\xb9\xf6\xd5\x57\xf4\x57\ +\x2a\x01\x01\xd7\x71\x50\x4a\x05\x98\x1e\x01\xc7\x01\xa0\x9a\xcf\ +\x23\xa1\x10\x4a\x04\x3d\x1e\x5f\x05\x7e\xed\xb7\xdf\xf8\xd7\xa7\ +\x9f\xb2\x29\x14\x62\x7d\x3c\xce\x48\x2c\x86\x52\x0a\xb9\x71\x83\ +\xdc\xf7\xdf\x73\x2b\x12\xa1\x6f\xff\x7e\x7a\xb7\x6c\x01\xa0\x7d\ +\xdd\x3a\x1e\x78\xe1\x05\xa6\x3e\xfa\x88\x2d\x89\x84\xa7\x80\xeb\ +\xa2\x44\x02\x4c\x05\x60\xfb\x17\xb7\x4e\x9e\xa4\xba\xbc\x8c\x5d\ +\x2a\xd1\xbf\x6f\x5f\x00\x5e\x35\x4d\xfe\xf1\xf1\xc7\x9c\x3b\x72\ +\x84\x3f\xb7\xb7\xf3\x40\x7b\x3b\x1d\x80\x6b\x9a\xb8\x86\x81\x6b\ +\x18\x44\x2c\x8b\x64\xa9\x84\xf5\xc5\x17\x5c\xff\xf2\x4b\xaa\xe5\ +\xb2\x47\x22\x91\x60\xfd\x73\xcf\x91\xcb\x66\xc1\x34\x11\xd3\x44\ +\x44\x02\x4c\xd5\x14\x82\x5c\x8e\xa5\x1f\x7e\xa0\x63\x64\x84\x75\ +\xdb\xb7\x07\x5f\x7e\xea\x93\x4f\xa8\x5e\xb8\xc0\x63\x3d\x3d\x84\ +\x2c\xcb\x03\x35\x4d\x22\x03\x03\x44\x06\x07\x71\x0d\xc3\x73\xee\ +\xcf\x91\xc9\x49\xf2\xdf\x7c\x13\xbc\x9f\xda\xb3\x87\x74\x77\x37\ +\xf8\x64\x95\x48\x80\x19\x28\xa0\xc0\x93\xb3\x5a\x65\xe8\xc5\x17\ +\xeb\xb2\xff\xfa\x2b\x37\x4f\x9c\x60\x24\x16\xf3\x80\x4b\x25\x1c\ +\xc3\x20\xf9\xec\xb3\xf4\xbf\xf1\x06\x7d\xaf\xbf\x4e\x61\xd7\x2e\ +\x8c\x5c\x0e\xd7\x34\xa1\x54\x02\xc3\xc0\x3a\x73\x86\xc2\xcc\x4c\ +\xe0\xe7\xd1\x97\x5f\xe6\xf2\xfc\xbc\xa7\x40\x83\xea\xaa\x96\x03\ +\xb5\x8a\xd6\x91\x4a\x11\x4e\x26\x83\x84\x3b\xfe\xc1\x07\xec\xe8\ +\xec\xf4\xd8\x97\x4a\x01\x89\xf8\xce\x9d\x81\xf3\x4d\x4f\x3e\xc9\ +\xd5\x3b\x77\xa0\x54\xf2\x48\x18\x06\x18\x06\xe5\xcf\x3f\xc7\xb5\ +\x6d\x00\x62\x5d\x5d\x64\xc3\x61\x9c\x4c\x06\x59\x95\x03\xae\x1b\ +\x94\xd3\x75\xdb\xb6\x05\x8e\xef\x5e\xb9\x42\x78\x66\x86\x68\x0b\ +\x38\xa6\x89\x34\x54\xcb\x70\x2c\x46\xae\x50\x80\x1a\xb8\x69\x82\ +\x69\xe2\xcc\xcf\x53\x4d\xa7\x03\xbb\xe8\x86\x0d\x54\xd3\x69\x94\ +\x08\x76\x63\x08\x1c\xc7\x09\x6a\x79\x57\x03\x81\xf4\xd4\x14\x5d\ +\x8e\x43\x35\x9d\xc6\x5a\x5a\xf2\xe4\xad\x81\x34\x0e\xd7\x85\x4a\ +\x05\xca\x65\xa4\x5c\x0e\x08\x88\x69\xe2\xcc\xcd\x05\x66\xbd\xa9\ +\x14\xf7\x2c\x6b\x0d\x05\x6a\x21\x50\x8a\x8e\x87\x1f\x0e\x5e\x58\ +\xf8\xfd\x77\x92\xa1\x90\xb7\xb6\x0d\x03\x7b\x79\x19\xf7\xde\x3d\ +\xdc\x62\xd1\x03\x6d\x1c\x95\x4a\xf0\xf5\x52\x2a\x41\x3e\x8f\x9b\ +\xcd\x62\x5d\xba\x14\x98\xfc\x69\xeb\x56\x32\xd5\x2a\x4a\xa9\x20\ +\x07\x74\x00\xdb\xb6\xd1\x94\x42\x6a\x55\xcb\x1f\x22\x42\x5c\xd7\ +\x83\xdd\x4c\x03\xc4\xb6\xbd\xaf\x6c\x19\x52\x2e\x23\x86\x51\xdf\ +\x90\xfc\x8d\xaa\xc5\x21\x2b\xb6\xed\x2d\x43\x3f\x37\x14\x80\xe5\ +\x87\x40\x53\x0a\x63\x7a\x3a\xb0\xdf\x38\x3e\x4e\xb1\x41\x9d\xc6\ +\xed\xb6\x75\x28\x1f\x50\x35\x80\x8b\x08\xa1\xb1\xb1\xc0\x66\xf1\ +\xf2\x65\x12\xe1\x30\x4a\x04\xab\x29\x04\xb6\x8d\xf8\xab\xa0\xd8\ +\x40\xa0\x7f\xdb\x36\x0a\xb5\xfc\x68\xd9\xdb\x57\x29\xb0\x06\xb8\ +\x12\x41\x4f\xa5\xea\x04\xa6\xa7\x59\x1f\x89\xac\x56\xc0\x76\x9c\ +\xa0\xd1\x30\x1a\xd6\xee\xfa\x54\x0a\xab\xaf\x6f\xcd\x06\xa3\x55\ +\x83\x46\xd0\xda\xa1\xf5\xf5\xa1\x86\x86\x02\x9b\xcc\xcc\x4c\x9d\ +\x40\x6b\x12\x8a\x2f\x6f\xe5\xfa\x75\x2a\xd9\xac\xf7\x50\xd3\x78\ +\xfc\xfd\xf7\x29\xf8\x3b\x58\x23\x89\x46\xa2\x77\x2e\x5d\x22\xa2\ +\x69\xcd\x21\x50\x8a\xb6\x03\x07\x82\xdd\xd5\xc8\x66\x51\xe9\x34\ +\xba\x52\xab\x0b\x91\x65\xdb\x75\xe7\x22\xa4\x8f\x1e\x0d\x9c\x0f\ +\xef\xde\x8d\xb1\x6f\x5f\xd0\xfd\xd4\xec\x4a\x9f\x7d\xc6\xad\x1f\ +\x7f\xe4\xe6\xf9\xf3\x9c\x3f\x76\x8c\x91\xb6\xb6\x26\xf0\xf0\xde\ +\xbd\xe8\xe3\xe3\x81\x9f\x73\x87\x0e\x31\x16\x8f\x7b\xca\x89\x60\ +\xf9\x21\xd0\x6b\x0a\xa8\x5a\x5f\x27\x42\xe9\xf4\x69\x16\x4f\x9d\ +\x62\xfd\xd3\x4f\x03\xb0\xfb\xed\xb7\xf9\xb7\xae\x93\x38\x79\x32\ +\x20\x61\xcf\xce\x22\xef\xbc\x43\xbe\x5a\x65\x4f\x28\x44\x5b\x34\ +\xda\x04\x1e\x79\xe5\x95\x00\x7c\xf6\xdb\x6f\x29\x9f\x3d\xcb\x58\ +\x6f\x6f\xd0\xa6\xad\x0a\x41\x6b\xa2\xe5\x8e\x1d\xc3\xcc\x64\x00\ +\x08\xc5\x62\xec\x78\xf7\x5d\xc2\x87\x0f\x53\xee\xe9\xa9\xc7\x59\ +\x29\xfa\xa2\x51\xda\x74\xdd\x6b\x5e\x36\x6c\xa0\xfd\xc3\x0f\x89\ +\xbd\xf9\x26\x2a\x1a\x05\xa0\xb4\xb8\xc8\xcf\x47\x8e\xf0\x97\x64\ +\xd2\x03\x6f\x21\xa0\xd7\x42\x10\x0d\x87\x9b\x62\xec\xe6\x72\xdc\ +\x7d\xef\x3d\x7a\x26\x26\x68\xeb\xe9\x01\xa0\x7f\xf7\x6e\x9c\x9d\ +\x3b\x29\x5e\xbb\x46\xe5\xca\x15\xe4\xea\x55\x22\x9a\x86\x36\x3a\ +\x8a\x4a\xa5\x08\x6d\xda\xd4\xd4\x51\x95\x16\x17\xf9\xe7\xc1\x83\ +\x6c\xd7\x34\xda\x43\xa1\x00\xdc\x6d\x0d\x41\x53\x0e\x34\xcc\xf6\ +\xd4\x14\x0b\x2f\xbd\x44\xe4\xad\xb7\x18\x7c\xe6\x19\x4f\x32\x5d\ +\xa7\x23\x95\x82\x86\xe5\xb5\xd6\xf8\xcf\x77\xdf\x31\x79\xf4\x28\ +\x8f\xe9\x3a\x03\x1d\x1d\xf5\xce\xd8\x6f\x4a\x56\x13\x80\xb5\x7b\ +\xf9\x95\x15\xd4\xe1\xc3\xcc\x9e\x3d\xcb\xc6\x03\x07\x88\x25\x12\ +\xff\x13\xd8\xc8\x66\x39\x77\xe8\x10\xea\xc2\x05\xf6\x26\x12\x84\ +\x35\xad\x19\xdc\xb7\x6b\x26\xe0\x38\xb8\xb0\xe6\x7a\xd7\x94\x42\ +\x44\xe8\x38\x7f\x9e\xc5\x73\xe7\xb8\xdd\xdb\x8b\x1a\x1d\x25\x36\ +\x36\x46\xf7\xd6\xad\x80\x57\xe1\x32\xd3\xd3\x54\x66\x67\x89\x2e\ +\x2c\x30\x12\x8b\x31\xd0\xdd\xdd\x14\xf3\xc6\x7f\x84\xaa\x6d\x07\ +\x95\x50\x07\x2a\xa6\x65\x85\x8b\xa6\x49\xb4\xb3\x73\x4d\xf0\x5a\ +\xd2\xb5\x29\xc5\x83\xcb\xcb\xc8\x4f\x3f\xa1\x7e\xf9\x05\xd3\x71\ +\xc8\x59\x16\x09\x4d\x63\x73\x38\xec\xad\xf1\x64\xb2\x0e\xb8\x06\ +\xb8\x88\x90\x5e\x5a\xc2\xf4\xfe\xbe\x2a\x3a\x30\x75\xbb\x50\x78\ +\x5c\xc3\xeb\x84\x93\x9d\x9d\x28\xd7\x45\xfc\xd6\xb9\x26\x59\x6d\ +\xef\x73\xfc\xbf\x22\xc7\x75\x89\x2a\x45\x9b\x5f\xd9\xc4\xbf\x27\ +\xae\x5b\x07\xac\x9d\xfb\xfe\x6c\xdb\x66\x7e\x71\x91\xab\x0b\x0b\ +\xdc\x2e\x14\x00\xa6\x74\x60\xe2\x66\x3e\x7f\xdc\x05\xca\xb6\xcd\ +\x82\x5f\x05\xef\xd7\xb0\x5d\x97\xc5\x52\x89\x3f\xf2\x79\x80\x09\ +\xf9\x7f\xff\x9e\xff\x17\xc5\xd6\x3d\x9a\xb0\xf3\x6b\xe8\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x0b\xc1\ +\x6f\ +\x70\x65\x6e\x46\x69\x6c\x65\x3d\x4f\x70\x65\x6e\x0d\x0a\x6f\x70\ +\x65\x6e\x46\x69\x6c\x65\x44\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\ +\x6e\x20\x69\x6d\x61\x67\x65\x20\x6f\x72\x20\x6c\x61\x62\x65\x6c\ +\x20\x66\x69\x6c\x65\x0d\x0a\x71\x75\x69\x74\x3d\x51\x75\x69\x74\ +\x0d\x0a\x71\x75\x69\x74\x41\x70\x70\x3d\x51\x75\x69\x74\x20\x61\ +\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0d\x0a\x6f\x70\x65\x6e\ +\x44\x69\x72\x3d\x4f\x70\x65\x6e\x20\x44\x69\x72\x0d\x0a\x63\x6f\ +\x70\x79\x50\x72\x65\x76\x42\x6f\x75\x6e\x64\x69\x6e\x67\x3d\x43\ +\x6f\x70\x79\x20\x70\x72\x65\x76\x69\x6f\x75\x73\x20\x42\x6f\x75\ +\x6e\x64\x69\x6e\x67\x20\x42\x6f\x78\x65\x73\x20\x69\x6e\x20\x74\ +\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\x6d\x61\x67\x65\ +\x20\x0d\x0a\x63\x68\x61\x6e\x67\x65\x53\x61\x76\x65\x64\x41\x6e\ +\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x44\x69\x72\x3d\x43\x68\x61\x6e\ +\x67\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x61\x76\x65\x64\ +\x20\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x20\x64\x69\x72\x0d\ +\x0a\x6f\x70\x65\x6e\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x3d\ +\x4f\x70\x65\x6e\x20\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x0d\ +\x0a\x6f\x70\x65\x6e\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x44\ +\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\x6e\x20\x61\x6e\x20\x61\x6e\ +\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x0d\x0a\x63\ +\x68\x61\x6e\x67\x65\x53\x61\x76\x65\x44\x69\x72\x3d\x43\x68\x61\ +\x6e\x67\x65\x20\x53\x61\x76\x65\x20\x44\x69\x72\x0d\x0a\x6e\x65\ +\x78\x74\x49\x6d\x67\x3d\x4e\x65\x78\x74\x20\x49\x6d\x61\x67\x65\ +\x0d\x0a\x6e\x65\x78\x74\x49\x6d\x67\x44\x65\x74\x61\x69\x6c\x3d\ +\x4f\x70\x65\x6e\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x49\x6d\ +\x61\x67\x65\x0d\x0a\x70\x72\x65\x76\x49\x6d\x67\x3d\x50\x72\x65\ +\x76\x20\x49\x6d\x61\x67\x65\x0d\x0a\x70\x72\x65\x76\x49\x6d\x67\ +\x44\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\x6e\x20\x74\x68\x65\x20\ +\x70\x72\x65\x76\x69\x6f\x75\x73\x20\x49\x6d\x61\x67\x65\x0d\x0a\ +\x76\x65\x72\x69\x66\x79\x49\x6d\x67\x3d\x56\x65\x72\x69\x66\x79\ +\x20\x49\x6d\x61\x67\x65\x0d\x0a\x76\x65\x72\x69\x66\x79\x49\x6d\ +\x67\x44\x65\x74\x61\x69\x6c\x3d\x56\x65\x72\x69\x66\x79\x20\x49\ +\x6d\x61\x67\x65\x0d\x0a\x73\x61\x76\x65\x3d\x43\x68\x65\x63\x6b\ +\x0d\x0a\x73\x61\x76\x65\x44\x65\x74\x61\x69\x6c\x3d\x53\x61\x76\ +\x65\x20\x74\x68\x65\x20\x6c\x61\x62\x65\x6c\x73\x20\x74\x6f\x20\ +\x61\x20\x66\x69\x6c\x65\x0d\x0a\x63\x68\x61\x6e\x67\x65\x53\x61\ +\x76\x65\x46\x6f\x72\x6d\x61\x74\x3d\x43\x68\x61\x6e\x67\x65\x20\ +\x73\x61\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x0d\x0a\x73\x61\x76\ +\x65\x41\x73\x3d\x53\x61\x76\x65\x20\x41\x73\x0d\x0a\x73\x61\x76\ +\x65\x41\x73\x44\x65\x74\x61\x69\x6c\x3d\x53\x61\x76\x65\x20\x74\ +\x68\x65\x20\x6c\x61\x62\x65\x6c\x73\x20\x74\x6f\x20\x61\x20\x64\ +\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x0d\x0a\x63\ +\x6c\x6f\x73\x65\x43\x75\x72\x3d\x43\x6c\x6f\x73\x65\x0d\x0a\x63\ +\x6c\x6f\x73\x65\x43\x75\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\x6c\ +\x6f\x73\x65\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\ +\x66\x69\x6c\x65\x0d\x0a\x64\x65\x6c\x65\x74\x65\x49\x6d\x67\x3d\ +\x44\x65\x6c\x65\x74\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\ +\x6d\x61\x67\x65\x0d\x0a\x64\x65\x6c\x65\x74\x65\x49\x6d\x67\x44\ +\x65\x74\x61\x69\x6c\x3d\x44\x65\x6c\x65\x74\x65\x20\x74\x68\x65\ +\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\x6d\x61\x67\x65\x0d\x0a\ +\x72\x65\x73\x65\x74\x41\x6c\x6c\x3d\x52\x65\x73\x65\x74\x20\x49\ +\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x61\x6e\x64\x20\x53\x61\x76\ +\x65\x20\x44\x69\x72\x0d\x0a\x72\x65\x73\x65\x74\x41\x6c\x6c\x44\ +\x65\x74\x61\x69\x6c\x3d\x52\x65\x73\x65\x74\x20\x41\x6c\x6c\x0d\ +\x0a\x62\x6f\x78\x4c\x69\x6e\x65\x43\x6f\x6c\x6f\x72\x3d\x42\x6f\ +\x78\x20\x4c\x69\x6e\x65\x20\x43\x6f\x6c\x6f\x72\x0d\x0a\x62\x6f\ +\x78\x4c\x69\x6e\x65\x43\x6f\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\ +\x3d\x43\x68\x6f\x6f\x73\x65\x20\x42\x6f\x78\x20\x6c\x69\x6e\x65\ +\x20\x63\x6f\x6c\x6f\x72\x0d\x0a\x63\x72\x74\x42\x6f\x78\x3d\x43\ +\x72\x65\x61\x74\x65\x20\x52\x65\x63\x74\x42\x6f\x78\x0d\x0a\x63\ +\x72\x74\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\x44\x72\x61\x77\ +\x20\x61\x20\x6e\x65\x77\x20\x62\x6f\x78\x0d\x0a\x64\x65\x6c\x42\ +\x6f\x78\x3d\x44\x65\x6c\x65\x74\x65\x20\x52\x65\x63\x74\x42\x6f\ +\x78\x0d\x0a\x64\x65\x6c\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\ +\x52\x65\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x62\x6f\x78\x0d\x0a\ +\x64\x75\x70\x42\x6f\x78\x3d\x44\x75\x70\x6c\x69\x63\x61\x74\x65\ +\x20\x52\x65\x63\x74\x42\x6f\x78\x0d\x0a\x64\x75\x70\x42\x6f\x78\ +\x44\x65\x74\x61\x69\x6c\x3d\x43\x72\x65\x61\x74\x65\x20\x61\x20\ +\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\ +\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x6f\x78\x0d\x0a\x74\ +\x75\x74\x6f\x72\x69\x61\x6c\x3d\x50\x61\x64\x64\x6c\x65\x4f\x43\ +\x52\x20\x75\x72\x6c\x0d\x0a\x74\x75\x74\x6f\x72\x69\x61\x6c\x44\ +\x65\x74\x61\x69\x6c\x3d\x53\x68\x6f\x77\x20\x64\x65\x6d\x6f\x0d\ +\x0a\x69\x6e\x66\x6f\x3d\x49\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\ +\x6e\x0d\x0a\x7a\x6f\x6f\x6d\x69\x6e\x3d\x5a\x6f\x6f\x6d\x20\x49\ +\x6e\x0d\x0a\x7a\x6f\x6f\x6d\x69\x6e\x44\x65\x74\x61\x69\x6c\x3d\ +\x49\x6e\x63\x72\x65\x61\x73\x65\x20\x7a\x6f\x6f\x6d\x20\x6c\x65\ +\x76\x65\x6c\x0d\x0a\x7a\x6f\x6f\x6d\x6f\x75\x74\x3d\x5a\x6f\x6f\ +\x6d\x20\x4f\x75\x74\x0d\x0a\x7a\x6f\x6f\x6d\x6f\x75\x74\x44\x65\ +\x74\x61\x69\x6c\x3d\x44\x65\x63\x72\x65\x61\x73\x65\x20\x7a\x6f\ +\x6f\x6d\x20\x6c\x65\x76\x65\x6c\x0d\x0a\x6f\x72\x69\x67\x69\x6e\ +\x61\x6c\x73\x69\x7a\x65\x3d\x4f\x72\x69\x67\x69\x6e\x61\x6c\x20\ +\x73\x69\x7a\x65\x0d\x0a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x73\x69\ +\x7a\x65\x44\x65\x74\x61\x69\x6c\x3d\x5a\x6f\x6f\x6d\x20\x74\x6f\ +\x20\x6f\x72\x69\x67\x69\x6e\x61\x6c\x20\x73\x69\x7a\x65\x0d\x0a\ +\x66\x69\x74\x57\x69\x6e\x3d\x46\x69\x74\x20\x57\x69\x6e\x64\x6f\ +\x77\x0d\x0a\x66\x69\x74\x57\x69\x6e\x44\x65\x74\x61\x69\x6c\x3d\ +\x5a\x6f\x6f\x6d\x20\x66\x6f\x6c\x6c\x6f\x77\x73\x20\x77\x69\x6e\ +\x64\x6f\x77\x20\x73\x69\x7a\x65\x0d\x0a\x66\x69\x74\x57\x69\x64\ +\x74\x68\x3d\x46\x69\x74\x20\x57\x69\x64\x74\x68\x0d\x0a\x66\x69\ +\x74\x57\x69\x64\x74\x68\x44\x65\x74\x61\x69\x6c\x3d\x5a\x6f\x6f\ +\x6d\x20\x66\x6f\x6c\x6c\x6f\x77\x73\x20\x77\x69\x6e\x64\x6f\x77\ +\x20\x77\x69\x64\x74\x68\x0d\x0a\x65\x64\x69\x74\x4c\x61\x62\x65\ +\x6c\x3d\x45\x64\x69\x74\x20\x4c\x61\x62\x65\x6c\x0d\x0a\x65\x64\ +\x69\x74\x4c\x61\x62\x65\x6c\x44\x65\x74\x61\x69\x6c\x3d\x4d\x6f\ +\x64\x69\x66\x79\x20\x74\x68\x65\x20\x6c\x61\x62\x65\x6c\x20\x6f\ +\x66\x20\x74\x68\x65\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x42\ +\x6f\x78\x0d\x0a\x73\x68\x61\x70\x65\x4c\x69\x6e\x65\x43\x6f\x6c\ +\x6f\x72\x3d\x53\x68\x61\x70\x65\x20\x4c\x69\x6e\x65\x20\x43\x6f\ +\x6c\x6f\x72\x0d\x0a\x73\x68\x61\x70\x65\x4c\x69\x6e\x65\x43\x6f\ +\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\x68\x61\x6e\x67\x65\ +\x20\x74\x68\x65\x20\x6c\x69\x6e\x65\x20\x63\x6f\x6c\x6f\x72\x20\ +\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x73\x70\x65\x63\x69\x66\x69\ +\x63\x20\x73\x68\x61\x70\x65\x0d\x0a\x73\x68\x61\x70\x65\x46\x69\ +\x6c\x6c\x43\x6f\x6c\x6f\x72\x3d\x53\x68\x61\x70\x65\x20\x46\x69\ +\x6c\x6c\x20\x43\x6f\x6c\x6f\x72\x0d\x0a\x73\x68\x61\x70\x65\x46\ +\x69\x6c\x6c\x43\x6f\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\ +\x68\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x66\x69\x6c\x6c\x20\x63\ +\x6f\x6c\x6f\x72\x20\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x73\x70\ +\x65\x63\x69\x66\x69\x63\x20\x73\x68\x61\x70\x65\x0d\x0a\x73\x68\ +\x6f\x77\x48\x69\x64\x65\x3d\x53\x68\x6f\x77\x2f\x48\x69\x64\x65\ +\x20\x4c\x61\x62\x65\x6c\x20\x50\x61\x6e\x65\x6c\x0d\x0a\x75\x73\ +\x65\x44\x65\x66\x61\x75\x6c\x74\x4c\x61\x62\x65\x6c\x3d\x55\x73\ +\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x61\x62\x65\x6c\x0d\ +\x0a\x75\x73\x65\x44\x69\x66\x66\x69\x63\x75\x6c\x74\x3d\x44\x69\ +\x66\x66\x69\x63\x75\x6c\x74\x0d\x0a\x62\x6f\x78\x4c\x61\x62\x65\ +\x6c\x54\x65\x78\x74\x3d\x42\x6f\x78\x20\x4c\x61\x62\x65\x6c\x73\ +\x0d\x0a\x6c\x61\x62\x65\x6c\x73\x3d\x4c\x61\x62\x65\x6c\x73\x0d\ +\x0a\x61\x75\x74\x6f\x53\x61\x76\x65\x4d\x6f\x64\x65\x3d\x41\x75\ +\x74\x6f\x20\x53\x61\x76\x65\x20\x6d\x6f\x64\x65\x0d\x0a\x73\x69\ +\x6e\x67\x6c\x65\x43\x6c\x73\x4d\x6f\x64\x65\x3d\x53\x69\x6e\x67\ +\x6c\x65\x20\x43\x6c\x61\x73\x73\x20\x4d\x6f\x64\x65\x0d\x0a\x64\ +\x69\x73\x70\x6c\x61\x79\x4c\x61\x62\x65\x6c\x3d\x44\x69\x73\x70\ +\x6c\x61\x79\x20\x4c\x61\x62\x65\x6c\x73\x0d\x0a\x66\x69\x6c\x65\ +\x4c\x69\x73\x74\x3d\x46\x69\x6c\x65\x20\x4c\x69\x73\x74\x0d\x0a\ +\x66\x69\x6c\x65\x73\x3d\x46\x69\x6c\x65\x73\x0d\x0a\x61\x64\x76\ +\x61\x6e\x63\x65\x64\x4d\x6f\x64\x65\x3d\x41\x64\x76\x61\x6e\x63\ +\x65\x64\x20\x4d\x6f\x64\x65\x0d\x0a\x61\x64\x76\x61\x6e\x63\x65\ +\x64\x4d\x6f\x64\x65\x44\x65\x74\x61\x69\x6c\x3d\x53\x77\x74\x69\ +\x63\x68\x20\x74\x6f\x20\x61\x64\x76\x61\x6e\x63\x65\x64\x20\x6d\ +\x6f\x64\x65\x0d\x0a\x73\x68\x6f\x77\x41\x6c\x6c\x42\x6f\x78\x44\ +\x65\x74\x61\x69\x6c\x3d\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x62\ +\x6f\x75\x6e\x64\x69\x6e\x67\x20\x62\x6f\x78\x65\x73\x0d\x0a\x68\ +\x69\x64\x65\x41\x6c\x6c\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\ +\x48\x69\x64\x65\x20\x61\x6c\x6c\x20\x62\x6f\x75\x6e\x64\x69\x6e\ +\x67\x20\x62\x6f\x78\x65\x73\x0d\x0a\x61\x6e\x6e\x6f\x50\x61\x6e\ +\x65\x6c\x3d\x61\x6e\x6e\x6f\x20\x50\x61\x6e\x65\x6c\x0d\x0a\x61\ +\x6e\x6e\x6f\x3d\x61\x6e\x6e\x6f\x0d\x0a\x61\x64\x64\x4e\x65\x77\ +\x42\x62\x6f\x78\x3d\x6e\x65\x77\x20\x62\x62\x6f\x78\x0d\x0a\x72\ +\x65\x4c\x61\x62\x65\x6c\x3d\x72\x65\x4c\x61\x62\x65\x6c\x0d\x0a\ +\x63\x68\x6f\x6f\x73\x65\x6d\x6f\x64\x65\x6c\x3d\x43\x68\x6f\x6f\ +\x73\x65\x20\x4f\x43\x52\x20\x6d\x6f\x64\x65\x6c\x0d\x0a\x74\x69\ +\x70\x63\x68\x6f\x6f\x73\x65\x6d\x6f\x64\x65\x6c\x3d\x43\x68\x6f\ +\x6f\x73\x65\x20\x4f\x43\x52\x20\x6d\x6f\x64\x65\x6c\x20\x66\x72\ +\x6f\x6d\x20\x64\x69\x72\x0d\x0a\x49\x6d\x61\x67\x65\x52\x65\x73\ +\x69\x7a\x65\x3d\x49\x6d\x61\x67\x65\x20\x52\x65\x73\x69\x7a\x65\ +\x0d\x0a\x49\x52\x3d\x49\x6d\x61\x67\x65\x20\x52\x65\x73\x69\x7a\ +\x65\x0d\x0a\x61\x75\x74\x6f\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\ +\x6f\x6e\x3d\x41\x75\x74\x6f\x20\x52\x65\x63\x6f\x67\x6e\x69\x74\ +\x69\x6f\x6e\x0d\x0a\x72\x65\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\ +\x6f\x6e\x3d\x52\x65\x2d\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\ +\x6e\x0d\x0a\x6d\x66\x69\x6c\x65\x3d\x46\x69\x6c\x65\x0d\x0a\x6d\ +\x65\x64\x69\x74\x3d\x45\x69\x64\x74\x0d\x0a\x6d\x76\x69\x65\x77\ +\x3d\x56\x69\x65\x77\x0d\x0a\x6d\x68\x65\x6c\x70\x3d\x48\x65\x6c\ +\x70\x0d\x0a\x69\x63\x6f\x6e\x4c\x69\x73\x74\x3d\x49\x63\x6f\x6e\ +\x20\x4c\x69\x73\x74\x0d\x0a\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\ +\x42\x6f\x78\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3d\x44\x65\x74\x65\ +\x63\x74\x69\x6f\x6e\x20\x62\x6f\x78\x20\x70\x6f\x73\x69\x74\x69\ +\x6f\x6e\x0d\x0a\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x52\ +\x65\x73\x75\x6c\x74\x3d\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\ +\x6e\x20\x72\x65\x73\x75\x6c\x74\x0d\x0a\x63\x72\x65\x61\x74\x50\ +\x6f\x6c\x79\x67\x6f\x6e\x3d\x43\x72\x65\x61\x74\x65\x20\x51\x75\ +\x61\x64\x72\x69\x6c\x61\x74\x65\x72\x61\x6c\x0d\x0a\x64\x72\x61\ +\x77\x53\x71\x75\x61\x72\x65\x73\x3d\x44\x72\x61\x77\x20\x53\x71\ +\x75\x61\x72\x65\x73\x0d\x0a\x73\x61\x76\x65\x52\x65\x63\x3d\x53\ +\x61\x76\x65\x20\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x20\ +\x52\x65\x73\x75\x6c\x74\x0d\x0a\x74\x65\x6d\x70\x4c\x61\x62\x65\ +\x6c\x3d\x54\x45\x4d\x50\x4f\x52\x41\x52\x59\x0d\x0a\x73\x74\x65\ +\x70\x73\x3d\x53\x74\x65\x70\x73\x0d\x0a\x63\x68\x6f\x73\x65\x4d\ +\x6f\x64\x65\x6c\x4c\x67\x3d\x43\x68\x6f\x6f\x73\x65\x20\x4d\x6f\ +\x64\x65\x6c\x20\x4c\x61\x6e\x67\x75\x61\x67\x65\x0d\x0a\x63\x61\ +\x6e\x63\x65\x6c\x3d\x43\x61\x6e\x63\x65\x6c\x0d\x0a\x6f\x6b\x3d\ +\x4f\x4b\x0d\x0a\x61\x75\x74\x6f\x6c\x61\x62\x65\x6c\x69\x6e\x67\ +\x3d\x41\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x4c\x61\x62\x65\x6c\ +\x69\x6e\x67\x0d\x0a\x68\x69\x64\x65\x42\x6f\x78\x3d\x48\x69\x64\ +\x65\x20\x41\x6c\x6c\x20\x42\x6f\x78\x0d\x0a\x73\x68\x6f\x77\x42\ +\x6f\x78\x3d\x53\x68\x6f\x77\x20\x41\x6c\x6c\x20\x42\x6f\x78\x0d\ +\x0a\x73\x61\x76\x65\x4c\x61\x62\x65\x6c\x3d\x53\x61\x76\x65\x20\ +\x4c\x61\x62\x65\x6c\x0d\x0a\x73\x69\x6e\x67\x6c\x65\x52\x65\x3d\ +\x52\x65\x2d\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x20\x52\ +\x65\x63\x74\x42\x6f\x78\x0d\x0a\x6c\x61\x62\x65\x6c\x44\x69\x61\ +\x6c\x6f\x67\x4f\x70\x74\x69\x6f\x6e\x3d\x50\x6f\x70\x2d\x75\x70\ +\x20\x4c\x61\x62\x65\x6c\x20\x49\x6e\x70\x75\x74\x20\x44\x69\x61\ +\x6c\x6f\x67\x0d\x0a\x75\x6e\x64\x6f\x3d\x55\x6e\x64\x6f\x0d\x0a\ +\x75\x6e\x64\x6f\x4c\x61\x73\x74\x50\x6f\x69\x6e\x74\x3d\x55\x6e\ +\x64\x6f\x20\x4c\x61\x73\x74\x20\x50\x6f\x69\x6e\x74\x0d\x0a\x61\ +\x75\x74\x6f\x53\x61\x76\x65\x4d\x6f\x64\x65\x3d\x41\x75\x74\x6f\ +\x20\x53\x61\x76\x65\x20\x4c\x61\x62\x65\x6c\x20\x4d\x6f\x64\x65\ +\ +\x00\x00\x04\xb5\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x1c\x00\x00\x00\x1e\x08\x06\x00\x00\x00\x3f\xc5\x7e\x9f\ +\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x04\ +\x6f\x49\x44\x41\x54\x48\x0d\xbd\x96\x6b\x68\x93\x57\x18\xc7\x9b\ +\x34\xa9\xa8\xd4\x2b\xce\xb6\x54\xa7\x78\x2b\x65\xe8\xa4\x2d\xf3\ +\xcb\x86\xf5\x0e\x32\xfd\xe0\x0c\x82\x8a\x0a\x92\xde\x28\xa5\xc3\ +\xa2\x43\x1d\x65\x4a\xfd\xd2\x0f\x42\x95\x5e\xac\x28\x38\x05\x2b\ +\x38\x10\x65\xb0\xba\x8a\xe0\xb5\x69\x55\xbc\x0b\x32\x6b\xd5\xd8\ +\x74\x3a\x87\xb4\xc9\xd2\xa4\xc9\x7e\x4f\x78\x4f\x7c\xdf\xf2\xe6\ +\x4d\xf4\x83\x07\x4e\x9e\xfb\xf3\x3f\xcf\xf3\x9e\x73\x72\xd2\xd2\ +\x3e\xf3\x48\x4f\x05\x2f\x1a\x8d\xda\x7c\x3e\xdf\xe2\xae\xae\xae\ +\x9e\x54\xfc\xad\x7c\x52\x02\xec\xeb\xeb\xab\x03\xb4\xb5\xa8\xa8\ +\x28\x00\xe8\x55\xab\x84\xc9\x6c\xf6\x64\x0e\xa5\xa5\xa5\x5b\x01\ +\xfb\x09\xbf\x50\x24\x12\xf1\x24\xf3\x4f\x66\xb7\x04\x04\x6c\x31\ +\x20\x2d\x92\xc4\x6e\xb7\x97\xb6\xb4\xb4\x5c\x4a\x96\x30\x99\xdd\ +\x96\xc8\xa1\xa2\xa2\x62\x6e\x38\x1c\xbe\x41\x75\x13\x6d\x36\xdb\ +\x79\xfc\xa4\xba\xa5\xcc\x59\xe8\xb2\xa0\x41\xf4\xef\xa0\xb7\x99\ +\x57\x32\x32\x32\x4e\x36\x34\x34\xbc\x84\xb7\x1c\xa6\x80\xd5\xd5\ +\xd5\x93\x06\x07\x07\x6f\x12\x39\xdb\x32\x5a\x67\x04\x3c\x82\x78\ +\x16\x5a\xd3\xd4\xd4\xd4\xa3\x33\x19\x58\xd3\x96\xfa\xfd\xfe\x56\ +\xbc\xe2\x60\x5a\xb2\x56\xda\xba\x8a\x99\xdb\xdc\xdc\x6c\xcf\xc9\ +\xc9\x71\xc2\xcf\xc4\xb6\x0e\xdf\x53\xcc\x20\x95\xff\xc0\x27\x78\ +\x54\x52\x52\x52\x6e\x40\xd1\x09\x0e\x1d\x1f\x67\x33\x33\x33\x37\ +\x0f\x0c\x0c\xb8\x09\xfe\x11\x65\x2e\x89\x64\x61\x4b\xa1\xb7\xb3\ +\xb3\xb3\x2f\x03\x12\x45\x0e\x33\x7b\xb4\x79\xb6\xaa\xaa\x6a\x6a\ +\x20\x10\xa8\x43\xde\x86\xdf\x61\xb7\xdb\x3d\x8f\x6f\x5e\x85\x6c\ +\x18\xa6\x2d\x55\x1e\x04\x49\x15\x1b\x01\xde\x89\x2e\x4f\xd3\xdf\ +\x24\xd1\x22\xe5\x33\x92\xb2\xd1\x5c\x00\x1e\x67\x8e\x66\x61\x7b\ +\xe9\xc6\x7e\xbd\x8f\x25\xa0\x72\x24\xd8\x46\x9b\xd6\x22\xef\x62\ +\x01\xbf\xf2\x8d\x0e\x29\x9b\x19\x05\x74\x25\x8b\xbc\x80\xcd\x0e\ +\xe8\x4a\x40\xdb\xcd\xfc\x52\xd2\xd5\xd6\xd6\x9a\x7e\xf7\x91\xc1\ +\x74\xa7\x86\x19\x65\xa1\x0f\xda\xda\xda\xe2\x17\x4c\x4a\x15\x56\ +\x56\x56\x8e\xa2\xca\xc9\xfa\xa4\x1c\x99\x70\x56\x56\xd6\x7b\x16\ +\xf0\x9f\x5e\xaf\x78\xf4\x0e\xaf\xd7\x7b\x0f\x39\x8f\x2a\xb7\x53\ +\xe5\x51\xb1\xa5\xb4\xda\x60\x30\xb8\x6c\x68\x68\xe8\x95\x7e\xd2\ +\x32\x1f\x09\xfd\x54\x70\x87\x16\x7e\xa5\x80\x14\x05\x30\x0c\xd0\ +\x2f\x9a\xbc\x49\xe9\x53\x02\x54\xce\xd0\x7f\x48\x72\x54\x9b\xc7\ +\x91\xff\xa2\xf2\x05\xcc\x3f\xcd\x5a\xcd\x6e\x3f\x87\x6f\x00\xfb\ +\xb7\x74\x69\x8a\xe4\x31\x3d\x16\x62\x48\x30\x7a\x69\xcd\x76\x65\ +\xe3\x1b\x8d\x27\xe1\x1b\x12\x7e\x41\xb5\x5f\xa3\xbf\xa5\x6c\x42\ +\xeb\xeb\xeb\x07\xe9\xc0\x15\xd8\xe5\x74\x69\x21\xf4\x8f\x8f\xad\ +\x50\xf2\xc4\x47\x7a\x7a\xfa\x6c\xc0\x64\xd1\x72\x2e\xdf\xc4\x0d\ +\x46\xe6\x99\x26\x4e\x17\x1a\xab\x90\x55\xc8\x1d\xb9\x91\xe0\x8b\ +\x9c\x31\xb9\x35\x12\x8d\x7c\xaa\x7a\xaa\x19\x47\x0d\x0f\x0f\x67\ +\x0b\xcf\x51\x39\xc0\x51\xe9\x35\x0b\xd2\x3a\x90\x06\x8d\x6d\x3a\ +\x55\xe1\x0c\xc0\xb6\xa1\x5c\x6e\x16\xa4\xd3\xf9\xe1\x7b\xf1\x9b\ +\x00\xcd\x85\xbe\xa0\xca\x42\xc0\x76\xeb\x7c\x0c\x2c\x79\xc5\x57\ +\x00\xff\x15\x1a\x03\x64\x85\xb1\xff\x39\x8c\xdf\x88\x32\xd1\x20\ +\xe8\x31\x1d\x58\x82\xff\x1c\x7c\xee\xe2\x3f\x83\x2a\xeb\xa8\xda\ +\x99\x28\x06\xfd\x34\xcd\xd6\x2f\x34\x06\x58\x5c\x5c\xfc\x80\x64\ +\x03\xc8\x79\xb2\x11\x34\x87\x84\xa4\xb1\xb1\xf1\x1d\x95\xb9\x70\ +\x90\x8a\x57\x10\xfb\xb3\x99\xb3\x1c\x78\x16\xf5\x9d\xd8\x38\x46\ +\x37\x84\xc6\x00\x5d\x2e\xd7\x30\xfc\x75\xa6\x8d\xd5\x6f\x16\x43\ +\xb2\x01\xe8\x13\x7c\x76\x68\x7e\xbb\xca\xcb\xcb\x65\x97\x1a\x46\ +\x47\x47\xc7\x32\x14\xb2\x93\xef\xd3\x99\xd7\x62\x54\xdf\x30\x8d\ +\x95\xd4\x8b\x02\xba\x9b\x2a\xc7\x08\xaf\x06\x01\x72\x9b\x78\x99\ +\x7f\x2b\x9d\x50\x92\x34\x42\xce\x10\xd3\xcf\xc5\x73\x90\xb8\x59\ +\x7a\xbb\xe4\xd2\xe4\x63\x4a\x6f\xb8\xda\xd8\xad\x97\x71\x92\x16\ +\xec\x23\x99\x69\x9b\x54\x60\x32\x4a\xae\x4d\xe4\x3a\xc1\x62\xfb\ +\xa1\x33\xc9\x27\xed\xff\x50\xa1\x08\x7c\x17\x79\x2c\x49\x7b\xf7\ +\xb0\xda\xf5\xa2\xfb\x94\x51\x56\x56\x36\x1f\x90\x66\x2d\xb6\x46\ +\x81\x89\x1c\xbf\xc5\x45\xf0\x78\x3c\x2f\x0a\x0a\x0a\xde\xc2\xae\ +\x66\x65\x6b\x0a\x0b\x0b\x5f\x77\x77\x77\xcb\x9b\x25\xe5\x21\x0f\ +\x2f\xc0\x7e\x27\x60\x1c\x39\x8e\x8c\xfc\x3f\x34\x00\x4a\x56\x00\ +\x3c\xbc\x3f\x33\x08\x2a\x46\x14\xd0\x39\xc8\xb7\x78\x8f\xc6\xce\ +\x91\xf8\x98\x0d\xd9\xdd\xf8\xee\x23\xee\x30\xf6\xb1\x80\x9d\xe6\ +\x61\xe5\xee\xec\xec\x94\x8e\xc5\x87\xe1\x1b\xc6\xb5\x30\xac\x74\ +\x03\x5b\x59\xde\x36\x63\x99\x21\x12\xc8\x03\xe9\x02\xba\x6b\x0e\ +\x87\xc3\xc7\x26\x09\x3a\x9d\xce\x1c\xe4\x7c\xce\xa2\xfc\x39\xcb\ +\x27\x98\x84\x4f\x04\xd0\x03\x54\xb6\x17\x5e\xae\x3c\xc3\x48\x08\ +\x28\x5e\x3c\x15\xbf\x0c\x85\x42\x7b\x60\xb7\x30\xad\x0e\xb7\xb8\ +\xcb\x6d\xd2\xce\xb1\xda\xc1\x91\xb9\x1b\x53\x98\xfc\x58\x02\x2a\ +\x7f\xfe\x5a\x72\xb9\xed\xbf\x47\x5e\xc5\xcc\x67\xca\x5f\x8d\xbc\ +\x59\xbc\x54\xf3\x1c\x90\x76\xe8\x6f\x54\xf5\x10\xbd\xe5\xf8\x1f\ +\x26\x14\xf6\x13\xa6\x79\x97\x77\x00\x00\x00\x00\x49\x45\x4e\x44\ +\xae\x42\x60\x82\ +\x00\x00\x09\x4d\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ +\xa7\x93\x00\x00\x09\x02\x49\x44\x41\x54\x68\x81\xed\x9a\x7b\x54\ +\x93\xf7\x19\xc7\x3f\x6f\x02\x04\x84\x70\xf1\x08\x82\x17\x44\x10\ +\xc1\x8a\xab\xb4\x38\xb1\xd5\xf5\x88\x99\x52\x56\x95\x7a\xc6\x2c\ +\x9d\xb5\x30\xd6\x33\xa7\xa7\xdd\xe9\x6d\x2d\x3b\x6e\x6d\x57\xb7\ +\xb5\xb5\xad\xae\xb6\xdb\xa9\xb6\xd4\x56\x5d\xab\x5d\x77\x4a\x71\ +\x30\x10\x5b\x6a\x5b\xea\x44\x04\x05\xa3\xf5\x16\xa1\x48\x02\x28\ +\x97\x24\xe4\x9e\xbc\xfb\x83\x06\xd3\x98\x40\x02\xa8\xff\xec\x39\ +\x27\xe7\x79\x79\xf3\xfb\x3d\xf9\x7c\x7f\xcf\xf3\xbb\xbc\x09\xf0\ +\x7f\xbb\xb9\x26\x78\xba\xa9\x50\x28\x12\x81\x6d\x52\xa9\xf4\x4e\ +\x41\x10\x22\x6e\x30\x93\xbb\xd9\xec\x76\xfb\x29\x51\x14\x37\x55\ +\x57\x57\xef\x1b\xb6\xb5\x42\xa1\x88\xc8\xcb\xcb\xeb\xac\xab\xab\ +\x13\x4d\x26\x93\x38\x52\x73\x38\x1c\x63\xf2\x32\x1a\x8d\x62\x5d\ +\x5d\x9d\x98\x97\x97\x27\x2e\x5c\xb8\xf0\x01\x77\xde\x00\xf7\x1b\ +\xfd\xfd\xfd\x6b\x36\x6c\xd8\x10\x9d\x91\x91\x81\x28\x8a\x38\x1c\ +\x0e\x00\x44\x51\xfc\x9e\xf7\x74\x6f\x24\xde\x97\x78\xb3\x67\xcf\ +\x26\x3f\x3f\x9f\x2d\x5b\xb6\x3c\x01\xfc\x03\xb0\x3b\xfb\x48\xdc\ +\x05\x88\xa2\x78\x4b\x42\x42\xc2\xf7\x82\x7b\x83\x77\x58\xad\xf4\ +\x2a\x95\x58\xf5\xfa\xeb\x06\x2f\x8a\x22\x16\x8b\x85\xe9\xd3\xa7\ +\x23\x08\xc2\x14\x20\xdc\x95\xd7\x93\x00\xe9\x50\x01\x9d\xd7\xa7\ +\xb7\x6f\xe7\xc3\x19\x33\xa8\x5c\xba\x98\x0a\x85\x82\x2b\x97\x2e\ +\x5d\x17\x78\x37\x36\x80\x60\xd7\x7b\xd7\x94\xd0\x50\x81\x01\x1c\ +\x76\x3b\x5f\xad\x5b\x87\x55\xd5\xc8\xfd\x7f\x9e\x87\xc4\x78\x86\ +\xb6\xb4\x55\x1c\x2e\x28\x20\x63\xe7\x4e\xa2\xe3\xe2\xc6\x14\xde\ +\x53\x5b\x57\xbb\x26\x03\xce\x9a\xf7\x26\xa8\xae\xb8\x98\x10\x73\ +\x2b\x4b\x57\x9a\x90\x98\xcf\x72\x79\xee\x1a\xda\x02\x57\xb0\xf8\ +\xd5\x1f\xd1\xf8\xd8\x63\xf4\xf6\xf4\x8c\x39\xbc\xd3\xbb\xb3\x79\ +\x15\xe0\x4d\x7d\xf7\x89\x13\xa8\x76\x95\x90\xb9\x48\x0f\x61\x12\ +\xfa\xa6\xcc\x42\x1f\xbb\x86\x84\xf8\xf1\x84\x4b\x0e\x90\xf5\xdb\ +\x78\xea\x37\x6e\x44\xef\x65\x4e\x8c\x76\x01\xf0\x49\x80\xfb\x07\ +\xb8\x5e\xb7\x56\x56\x92\x56\xa0\xa0\x3f\xc4\x41\x73\xf4\x22\xbe\ +\x74\x6c\xa0\x5d\x7d\x85\x28\xe1\x6b\xa4\x53\x1e\x22\x2c\xa4\x9a\ +\xdb\x73\x64\x1c\xdb\xbc\x19\xa3\xd1\x38\xa6\xf0\xde\xcc\xd3\x24\ +\xf6\xfa\x61\x53\x72\x73\xf9\x66\x7f\x23\xff\x11\x57\x52\xdf\x97\ +\x4b\x88\xb4\x83\x59\x92\x42\x64\xda\xd7\x41\x10\x61\xf2\x23\xc4\ +\x25\x1f\x62\xf2\xf8\x16\x1a\x76\xec\xc0\x62\xb1\x8c\x19\xbc\xcf\ +\x19\x70\x6d\xe4\x1e\x64\x7c\x52\x12\xb7\xfe\x6d\x07\x92\xb7\x3f\ +\x64\x55\xda\x46\xb2\x26\xdd\x4f\x94\xec\x04\xf4\x1f\x82\xde\x8f\ +\x40\x12\x0c\xb1\x45\xcc\x59\x7e\x86\x30\xf5\x67\x34\xec\xd9\x83\ +\xd5\x6a\x1d\x13\x78\x77\xb6\x61\x05\x78\x0b\x92\xb0\x60\x01\xd3\ +\x1f\x7f\x96\x23\x2f\x06\x22\x4a\x62\x41\xca\xc0\xab\xbf\x0a\xb4\ +\xa5\x10\x18\x0d\x13\x56\xb3\x60\xbd\x16\x73\xd5\x4e\x4e\x94\x96\ +\x62\xb7\xdb\x47\x0d\xef\x7e\xed\x55\xc0\x50\x1b\x98\xd3\xa7\x64\ +\x67\x33\x4e\x51\xc8\xb1\x0f\xe7\xe3\x10\xc6\x0f\x08\x90\x88\xd0\ +\x5f\x06\xba\x2a\x08\x8a\x87\xf0\x65\xe4\xbc\x22\xa7\x6b\xc7\xcb\ +\x28\x6b\x6a\x7c\x8a\x3b\xdc\xea\x65\xb7\x0f\x6e\xc0\xde\x05\x0c\ +\x97\x01\xa7\xbf\x75\xcd\x1a\x74\xf2\x3b\xb8\xd8\x90\x8b\x28\x91\ +\x0f\x88\x10\xec\xa0\xdb\x0b\x86\x1a\x18\x37\x0b\x42\x6f\x27\x6f\ +\xd7\x74\x2e\x3c\x53\xcc\xd9\xfa\xfa\x11\xc3\xbb\x0e\xee\xb0\x02\ +\xfc\x09\x9a\xb1\x7e\x3d\xe7\x1a\x23\x38\x7f\x64\x05\xa2\x24\xe2\ +\xbb\x4c\x58\x41\xbb\x1b\x8c\x5f\x42\xd8\x7c\x08\x9e\xca\x9a\x4f\ +\x32\x38\xf1\xf0\xc3\xb4\x7e\xf3\xcd\xa8\xe0\xfd\xda\xc8\x7c\x09\ +\x2e\x08\x02\x99\xcf\x3e\xcb\xa9\xcf\x03\xd1\xb4\xfc\x1c\xd1\x18\ +\x04\x36\x40\x30\x41\xdf\x7b\x60\xaa\x87\xb0\xc5\x08\x52\x28\xd8\ +\x7f\x17\x8d\x8f\x3e\x8a\xa6\xad\x6d\xc4\x22\x7c\x9a\xc4\xfe\xd6\ +\xaa\x44\x22\x61\xc1\x4b\x2f\x51\xfb\x7a\x0b\x5a\xd3\x3a\xd0\x49\ +\x41\x07\x98\x74\xd0\xf3\x16\x58\x9a\x20\x62\x05\xd2\x40\x35\xab\ +\xdf\xce\xa0\xa1\xb8\x98\xcb\x5d\x5d\x7e\x8b\x18\xd1\x32\xea\x6b\ +\xf0\x20\x99\x8c\x3b\xdf\x7c\x93\xf2\xe2\x46\x8c\x21\xeb\x07\x04\ +\x68\x81\xde\x6e\x50\x97\x80\xf1\x0c\x44\xe4\x23\x1b\xa7\xe4\xee\ +\xdf\x25\xd3\xf0\xdc\x73\x68\xb5\x5a\xbf\x44\xb8\x5f\xfb\x24\xc0\ +\xd7\x91\x01\x18\x27\x97\x73\xc7\xf6\xed\xec\x2b\xa8\xc1\x1a\xfe\ +\xcb\xab\x22\xba\xdb\xa1\xad\x04\xfa\x5b\x21\xbc\x88\xa8\xb8\x7a\ +\xee\xfc\x59\x14\x0d\xaf\xbd\x86\xc1\x60\xf0\x4b\x84\x5f\xcb\xa8\ +\x3f\xf0\xce\xbf\x23\x63\x63\x59\x50\x52\xc2\xae\xb5\x87\xb0\x44\ +\xe4\x5f\x15\xd1\xa9\x82\x96\x12\x30\x74\x80\xfc\x21\xa6\xa4\xd6\ +\x33\x73\x5a\x0f\x8d\x25\x25\x98\xcd\x66\x9f\xe1\xfd\x3a\x0b\xf9\ +\x0b\xef\xf4\x31\x33\x66\x90\xbe\xe5\xaf\x7c\xb0\xa1\x0e\x7b\x48\ +\xd6\x80\x08\x1d\xa0\x39\x0d\xaa\x3d\x60\xd4\x43\xc4\x43\xa4\x2d\ +\xb9\x80\xd0\xfc\x29\xcd\x07\x0f\x62\xb1\x58\x7c\x16\x31\xac\x00\ +\xe7\x69\x74\x24\xf0\x4e\x9f\x30\x7f\x3e\x33\x7f\xff\x17\xca\xb6\ +\x6a\xb1\xc9\x32\xaf\x66\xa2\xed\x28\xa8\xf6\x82\x55\x80\x88\x7c\ +\x32\x73\x17\xd2\x59\x56\x46\x5b\x5b\x9b\x4f\xf0\x7e\x6d\x64\x23\ +\x85\x77\xfa\x99\x59\x59\x44\xe6\x16\xf2\xd9\x47\x21\x38\x82\x52\ +\xae\x8a\x38\x7f\x08\x2e\x7c\x0c\xd6\x60\x82\xa6\xdf\x4e\x47\x4d\ +\x0d\xad\x2a\x95\x5f\xc7\x8d\x21\x05\x8c\x66\xe4\xdd\xfd\x9c\xd5\ +\xab\xb1\xcf\x5d\xc6\xd1\xa6\x74\xec\x21\xf1\x60\x06\xf4\x22\xf4\ +\x3b\xb0\x7d\xeb\x20\x78\xce\x5c\xa2\x6f\x49\xc6\x72\xfa\x34\x7d\ +\x7d\x7d\xc3\x42\xfb\x55\x42\xa3\x85\x77\xfa\x8c\xa2\x22\xd4\x8e\ +\xc9\x5c\xd0\xe5\xc0\xd4\x1c\xc4\x99\x4f\xa3\x0f\xcd\xc1\x38\x73\ +\x16\x0e\xbb\x85\x5b\xf2\x96\x63\x6d\x6a\x42\xa3\xd1\x8c\xed\x3e\ +\x30\x16\xf0\x4e\x9f\xf9\xe4\x93\x34\x36\xdb\x78\xf1\xfe\x83\xec\ +\xd9\x5c\x41\xbb\x4e\x8b\xcd\x70\x19\x9b\xb1\x9b\xbe\x94\x44\xba\ +\x8e\xd5\xa3\x51\xab\xbd\x0e\x9e\x3b\x9b\xab\x5d\xf3\x50\x3f\xd6\ +\xf0\x00\x82\x20\xb0\xe8\xf9\xe7\x09\x5b\xb6\x8c\xcb\xe5\xe5\x7c\ +\x5c\xb8\x99\x98\xb4\x78\xc8\xfd\x31\x8f\xfc\xab\x96\x5f\xa4\x26\ +\x31\xf1\xdc\x39\x74\xb7\xdd\x46\x78\x78\xb8\xd7\xf2\xf1\x54\x42\ +\xd7\x08\x70\xcd\xc0\x58\xc0\xbb\x8a\xb8\x6d\xd1\x22\xf4\xe9\xe9\ +\x9c\xbb\xf7\x5e\x3a\x2b\x2b\x51\x6f\xd9\x4b\x7e\xca\x54\x34\x61\ +\x21\xd8\x95\x4a\x3a\x3a\x3a\x90\xcb\xe5\x1e\xfb\xbb\x5f\x7b\x15\ +\xe0\x49\xe9\x68\xe1\x5d\x7d\x68\x68\x28\x3f\xc8\xc8\xc0\x94\x96\ +\xc6\xc5\x95\x2b\x99\x54\x51\x41\x47\x69\x29\x97\xcd\x66\x64\x2b\ +\x56\x90\x98\x98\x88\x20\x08\xd7\xf4\xf3\x36\x07\x9c\x02\x96\x00\ +\x49\x00\x3a\x9d\x6e\x56\x69\x69\x29\xf5\xf5\xf5\x1e\xf7\x03\x6f\ +\xa3\xe1\x6f\xbb\x79\xf3\xe6\x91\x32\x7b\x36\xf1\x89\x89\xa8\x72\ +\x72\xb8\x74\xe4\x08\x66\xbd\x1e\xbd\x5e\x8f\x5c\x2e\xf7\x2f\x03\ +\xf1\xf1\xf1\xc5\x45\x45\x45\x77\xc5\xc4\xc4\x88\x0e\x87\x43\x2a\ +\x95\x4a\x07\x47\xc1\x5b\xc7\xd1\x58\x6d\x6d\x2d\x36\x9b\x8d\xe4\ +\xe4\x64\x82\x83\x83\x49\x4d\x4d\x25\x29\x29\x89\xde\xde\x5e\x82\ +\x83\x83\xbd\x66\xd0\xd3\x46\x16\x00\x20\x08\x82\x90\x9f\x9f\x1f\ +\x90\x9c\x9c\x3c\xf8\x46\xc7\xc9\x46\x9a\x5b\xd5\x04\x8d\x8f\x25\ +\x29\xfd\x56\x26\x05\x0d\x79\xea\xf0\xcb\x02\x03\x03\xd1\x68\x34\ +\xdf\x83\x0b\x08\x08\x60\xc2\x84\x09\x43\x96\x9f\x5f\x67\x21\x73\ +\xe7\xbf\x51\xe4\xe4\x50\x7a\xbe\x13\xb9\xf4\xbb\x9a\xb4\xf7\x71\ +\xf8\x9c\x76\xb0\xcd\xc5\xa3\x27\xe9\xeb\xfd\x96\x4f\x2b\x3f\xe5\ +\x4c\xef\xc0\x79\xc6\x66\xd0\xf0\x79\x79\x19\x15\x07\x6a\x38\xda\ +\xd8\x44\xf3\x89\xa3\x54\x57\x7e\x81\x5a\x6f\x1b\x88\xdb\xd3\xca\ +\xa9\xe3\x8d\x28\x95\x4a\xaa\x3f\x3f\xeb\x15\xd6\x93\xf7\x64\x5e\ +\x05\xc8\x42\x1b\x91\x04\x44\xf2\xc7\xfb\x96\x0e\x0a\xd8\xff\xf0\ +\x3d\xfc\x64\xf9\x07\x83\x6d\xfa\x9a\x7e\xcd\xf8\xe8\x39\x68\x8e\ +\x3c\xc1\xdc\xe4\xd5\x00\x34\xec\xfe\x29\x59\x2b\xee\xe3\x6c\xc3\ +\xd7\x3c\x7d\x77\x36\xbd\xb5\xbf\x61\xd9\xf2\x5c\x8e\x2b\x3b\xd1\ +\xb5\x6c\x67\x72\x6c\x2a\x5a\x6c\x5c\xfc\xba\x8c\x5f\xad\xff\x83\ +\x5f\x0b\x80\x5f\x19\x50\xbd\xab\x24\x74\x62\x21\xe3\x24\x03\xf0\ +\xbd\xa7\xdf\xa0\xe8\x58\x02\x01\x5d\xef\x0f\xb6\x31\x1f\xef\x41\ +\x1a\x18\xc3\x3f\xf7\x99\x79\x6a\xdb\x0b\x00\xd8\x9b\x7a\x70\xd8\ +\x0d\x6c\xdc\x76\x85\x2a\xd5\x45\x02\x9a\x7b\x09\x9d\x58\x48\xf6\ +\x0f\x27\x61\xed\x57\xa3\xb7\x99\xf8\xef\x29\x2d\x77\x3d\xb0\x8e\ +\xea\x8a\xad\x3e\xc3\x83\x8f\x8f\x94\x4e\xab\xa9\xb8\x44\x74\xe6\ +\xf2\x81\x8e\xb6\x4e\xa2\x67\x9d\xa5\xf3\xf0\x2e\x9e\x8a\x38\x4e\ +\x8b\x79\x60\x32\x7d\xb9\xbf\x8d\xa9\x39\x6f\x32\xb9\xbb\x95\xd2\ +\xd3\x03\x0f\x27\x5f\x94\xb7\x33\x6e\xc2\x2a\x9e\x2a\x2e\xa4\xba\ +\xa2\x8c\x67\xde\x50\x12\xb3\xe0\x1e\x40\x64\xfb\xbe\xf9\xa8\xbe\ +\xda\x4d\x5b\xcd\xfb\xbc\x57\x67\x62\xda\x94\x68\xbf\xca\xc7\xa7\ +\x7d\x00\xe0\xe8\x2b\x8f\xf2\x6a\x9b\x1e\x71\xc2\x56\x0a\x0a\x76\ +\xf2\xee\xbb\xef\x41\xd2\x3b\x98\xba\x3f\xa1\xbc\xdb\xc8\xe1\xb7\ +\xce\xb0\x25\xa9\x9c\x17\x5a\x75\x48\xa7\xbe\xc6\x91\x99\x4b\xf8\ +\xd3\xba\x14\x2e\x55\xbe\xcc\x4b\xdf\xea\x08\x9b\x67\xe5\xb3\x9d\ +\xcb\xd8\x58\x77\x09\x80\xb8\x2b\x6f\xb1\x76\xf9\xe3\xec\xda\x7f\ +\x0c\x75\xdf\x23\x84\x4f\x4d\x25\x33\x2d\xd2\x6f\x78\x4f\x19\x10\ +\x00\xa6\x4d\x9b\x76\xf0\xc0\x81\x03\x59\xae\xab\xd0\xf5\xb4\x92\ +\x92\x12\xda\xdb\xdb\x59\xbb\x76\xad\x4f\x22\x64\x32\x19\x2a\x95\ +\x8a\xec\xec\xec\x6e\x83\xc1\x90\x06\xa8\x9d\xb1\x06\x33\x50\x5b\ +\x5b\x4b\x4b\x4b\xcb\x0d\x11\xa0\x54\x2a\x89\x8c\xf4\x3d\x03\xce\ +\x0d\xd5\x6b\x09\x19\x0c\x86\xdd\x9b\x36\x6d\x6a\x01\x30\x99\x4c\ +\x77\x28\x14\x8a\x94\xa8\xa8\xa8\x21\xeb\xcf\xdb\xd2\xe6\x6b\xbb\ +\xb4\xb4\x34\x9f\xe1\x9d\xe6\x75\x23\xeb\xea\xea\x7a\xa7\xab\xab\ +\xeb\x1d\x00\xa9\x54\xfa\xf7\x07\x1f\x7c\x30\x25\x3d\x3d\x7d\xf0\ +\x9b\xe5\xb1\x3c\x0b\x8d\xd4\x3b\x1c\x0e\x9f\xbf\xd8\x3a\x7f\xf2\ +\xe4\x49\x02\x03\x03\x6f\x3a\xb4\xd3\x87\x85\x85\xd1\xd4\xd4\x04\ +\xd0\x81\xcb\x4f\xac\xde\x6c\x62\x5c\x5c\x5c\x67\x55\x55\x95\x68\ +\xb5\x5a\xc5\x9b\x6d\x56\xab\x55\xac\xac\xac\x14\x63\x62\x62\x1c\ +\x12\x89\xe4\x79\x20\xcc\x15\xd6\xe3\xbf\x1a\x00\x39\xc0\x8b\xc0\ +\x34\xbc\x2c\xb5\x37\xd8\xae\x00\xfb\x81\x6d\x80\xd2\xf5\x0d\x6f\ +\x02\x00\x22\x81\x14\x40\x76\xfd\xb8\x7c\x36\x3d\xd0\xce\x40\x09\ +\x8d\xed\xd1\xf8\x66\xdb\xff\x00\x0b\x62\x0d\xcf\xef\xd6\x72\x27\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x04\xf0\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xba\x57\xed\x3f\ +\x00\x00\x03\x00\x50\x4c\x54\x45\x09\x16\x28\x09\x16\x28\x09\x14\ +\x25\x09\x15\x27\x09\x14\x25\x08\x13\x23\x07\x11\x20\x07\x0f\x1c\ +\x06\x0d\x18\x04\x0a\x13\x03\x07\x0d\x02\x04\x07\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x01\x01\x01\x02\x02\x02\x03\x03\x03\x06\x06\x06\x0a\x0a\x0a\ +\x10\x10\x10\x17\x17\x17\x21\x21\x21\x28\x28\x28\x2c\x2c\x2c\x2d\ +\x2d\x2d\x2e\x2e\x2e\x2f\x2f\x2f\x30\x30\x30\x31\x31\x31\x32\x32\ +\x32\x33\x33\x33\x34\x34\x34\x35\x35\x35\x36\x36\x36\x37\x37\x37\ +\x38\x38\x38\x39\x39\x39\x3a\x3a\x3a\x3b\x3b\x3b\x3c\x3c\x3c\x3d\ +\x3d\x3d\x3e\x3e\x3e\x3f\x3f\x3f\x40\x40\x40\x41\x41\x41\x42\x42\ +\x42\x43\x43\x43\x44\x44\x44\x45\x45\x45\x46\x46\x46\x47\x47\x47\ +\x48\x48\x48\x49\x49\x49\x4a\x4a\x4a\x4b\x4b\x4b\x4c\x4c\x4c\x4d\ +\x4d\x4d\x4e\x4e\x4e\x4f\x4f\x4f\x50\x50\x50\x51\x51\x51\x52\x52\ +\x52\x53\x53\x53\x54\x54\x54\x55\x55\x55\x56\x56\x56\x57\x57\x57\ +\x58\x58\x58\x59\x59\x59\x5a\x5a\x5a\x5b\x5b\x5b\x5c\x5c\x5c\x5d\ +\x5d\x5d\x5e\x5e\x5e\x5f\x5f\x5f\x60\x60\x60\x61\x61\x61\x62\x62\ +\x62\x63\x63\x63\x64\x64\x64\x65\x65\x65\x66\x66\x66\x67\x67\x67\ +\x68\x68\x68\x69\x69\x69\x6a\x6a\x6a\x6b\x6b\x6b\x6c\x6c\x6c\x6d\ +\x6d\x6d\x6e\x6e\x6e\x6f\x6f\x6f\x70\x70\x70\x71\x71\x71\x72\x72\ +\x72\x73\x73\x73\x75\x75\x75\x77\x77\x77\x79\x79\x78\x7a\x7b\x7a\ +\x7c\x7d\x7c\x7f\x7f\x7e\x81\x82\x7f\x84\x85\x81\x84\x85\x82\x85\ +\x86\x83\x86\x87\x83\x86\x88\x84\x87\x88\x84\x87\x89\x84\x87\x89\ +\x85\x87\x89\x85\x88\x89\x85\x83\x86\x85\x7f\x84\x85\x7c\x82\x85\ +\x7a\x81\x85\x76\x81\x8b\x76\x82\x8e\x77\x84\x90\x79\x85\x90\x7d\ +\x87\x8e\x83\x89\x8c\x85\x8b\x8c\x89\x8c\x8c\x8a\x8d\x8b\x8c\x8d\ +\x8a\x8e\x8f\x8d\x90\x91\x8f\x92\x92\x91\x94\x94\x93\x95\x95\x95\ +\x97\x97\x97\x99\x99\x99\x9a\x9a\x9a\x9b\x9b\x9b\x9c\x9c\x9c\x9d\ +\x9d\x9d\x9e\x9e\x9e\x9f\x9f\x9f\xa0\xa0\xa0\xa1\xa1\xa1\xa2\xa2\ +\xa2\xa3\xa3\xa3\xa4\xa4\xa4\xa5\xa5\xa5\xa7\xa7\xa6\xa8\xa8\xa8\ +\xa9\xaa\xa9\xaa\xab\xaa\xab\xac\xab\xac\xad\xac\xad\xad\xad\xae\ +\xae\xad\xae\xaf\xae\xaf\xb0\xaf\xb0\xb0\xaf\xb1\xb1\xb0\xb1\xb2\ +\xb1\xb2\xb3\xb2\xb3\xb4\xb3\xb4\xb5\xb4\xb6\xb6\xb6\xb7\xb7\xb7\ +\xb8\xb8\xb8\xb9\xb9\xb9\xba\xba\xba\xbb\xbb\xbb\xbc\xbc\xbc\xbd\ +\xbe\xbd\xbe\xbf\xbe\xbf\xc0\xbf\xc0\xc0\xc0\xc1\xc1\xc1\xc2\xc2\ +\xc1\xc3\xc3\xc2\xc4\xc4\xc3\xc6\xc6\xc6\xc9\xc9\xc9\xcd\xcd\xcd\ +\xcf\xcf\xcf\xd1\xd1\xd1\xd3\xd3\xd3\xd5\xd5\xd4\xd6\xd6\xd5\xd8\ +\xd8\xd8\xda\xda\xda\xdc\xdc\xdc\xde\xde\xdd\xdf\xdf\xdf\xe0\xe0\ +\xe0\xe2\xe2\xe2\xe3\xe3\xe3\xe5\xe5\xe4\xe6\xe6\xe6\xe8\xe8\xe7\ +\xe9\xe9\xe9\xeb\xeb\xea\xeb\xeb\xeb\xec\xec\xec\xec\xec\xec\xee\ +\xee\xed\xef\xef\xef\xf1\xf1\xf1\xef\xef\xef\xef\xef\xee\xef\xef\ +\xee\xef\xef\xef\xf0\xf0\xf0\xf0\xf0\xf0\xf1\xf1\xf1\xf2\xf2\xf2\ +\xf3\xf3\xf3\xf4\xf4\xf4\xf5\xf5\xf5\xf6\xf6\xf6\xf7\xf7\xf6\xf7\ +\xf7\xf7\xf8\xf8\xf8\xf9\xf9\xf9\xfa\xfa\xfa\xfb\xfb\xfb\xfc\xfc\ +\xfb\xfc\xfc\xfc\xfd\xfd\xfd\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\ +\xfe\xfe\xfe\xfe\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ +\xff\xff\xff\xff\xff\xff\xff\xff\x7e\xee\x29\x02\x00\x00\x01\x00\ +\x74\x52\x4e\x53\xd1\xd2\xd3\xc8\xb9\xa9\x93\x78\x5d\x43\x2c\x17\ +\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x06\x0a\x10\x17\x21\x28\ +\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\ +\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\ +\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\ +\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\ +\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x71\x6f\x6e\x6d\x6d\x68\x68\x62\ +\x6f\x7c\x8a\x95\x9e\xa6\xae\xb6\xbf\xcd\xd2\xd7\xdb\xe1\xe7\xea\ +\xeb\xeb\xe8\xe6\xdc\xd1\xbe\xac\xa1\x9c\x96\x97\x98\x99\x9a\x9b\ +\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa2\xa2\xa1\xa1\xa1\xa3\xa2\xa2\ +\xa2\xa3\xa3\xa4\xa5\xa6\xa8\xaa\xad\xb0\xb3\xb7\xb8\xb9\xba\xbb\ +\xc0\xc5\xc8\xcb\xcd\xce\xcf\xce\xce\xcf\xd3\xd6\xdc\xe0\xe4\xe8\ +\xea\xee\xf1\xf3\xf5\xf6\xf7\xf8\xf9\xfa\xfa\xfb\xfb\xfb\xfc\xfc\ +\xfc\xfd\xfd\xfd\xfd\xfa\xf6\xf3\xef\xeb\xe7\xe0\xd8\xd0\xc8\xbf\ +\xb6\xae\xa5\x9c\x92\x88\x7d\x72\x68\x66\x64\x63\x62\x5b\x55\x51\ +\x4d\x4a\x46\x48\xa6\xfd\x00\x6d\x00\x00\x00\x9f\x49\x44\x41\x54\ +\x18\xd3\xb5\xd0\x31\x0e\x82\x40\x10\x85\x61\xe0\x12\x1e\x76\x54\ +\x54\xa0\xd9\x1d\xf3\xe2\x11\xd4\xc4\xd6\x58\xd3\x10\x0b\x3b\x02\ +\xd1\x42\xa9\xc6\x53\x50\x8e\xee\x02\x31\x9a\xd8\xf2\x17\x53\x7c\ +\xc9\x6e\x26\x13\x4c\xfe\x14\x8c\x87\x34\xf4\x85\x44\xb3\x0c\x40\ +\x1a\x0f\xea\x91\xa6\x40\xc1\xc6\xf0\x1e\x2b\xea\xd1\x3d\xc2\xae\ +\x62\x91\xd0\xf2\x15\xa9\xd7\x80\x28\xc6\xf6\x26\x46\x24\xb2\xa6\ +\xa9\xb1\xa4\x0e\x53\x3c\x45\x4c\x18\x39\x7c\x48\x83\x39\xf9\x3f\ +\x4f\x09\x44\xd8\xba\x58\x4a\xe0\xa0\x1e\x35\xcf\x50\x56\x58\x73\ +\x71\x3f\x63\x91\xab\xf6\x2b\xe9\x71\x83\xae\xe4\xe2\xe8\xb3\xbc\ +\xaa\xb6\xed\xcb\x4d\x1d\xf9\x4a\xbf\xbd\x01\x0c\x0e\x70\x72\x00\ +\x75\x19\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x02\xfd\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ +\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\ +\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0d\xd7\x00\x00\x0d\xd7\ +\x01\x42\x28\x9b\x78\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\ +\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\ +\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x02\x7a\x49\x44\ +\x41\x54\x38\x8d\xd5\x95\x4b\x48\x55\x41\x1c\xc6\x7f\x73\x3c\x5e\ +\x6e\x47\xc3\x67\x56\x54\x84\x49\x50\x9b\x5a\x48\xad\xdc\x44\x48\ +\x19\x29\x2d\xad\x36\xb9\x68\x55\xd1\x26\x6a\x11\x81\x1b\x17\x9a\ +\xe8\xa2\x27\x44\xed\x6a\x13\x14\x14\x24\x5a\xbb\x5c\xb9\x90\x6a\ +\x51\x1a\x59\x54\xa2\x5d\xef\xfb\xde\x73\xee\xe3\xdc\x73\xe6\xdf\ +\x42\xf2\x51\x72\xcd\x2e\x2e\xfa\x60\x60\x1e\xdf\x7c\xf3\xcd\x7f\ +\x66\xfe\xa3\x44\x84\xf5\x80\xb1\x2e\xaa\x80\xf9\xab\xd2\xd4\xd6\ +\xdb\x82\xa9\x86\xb5\xd6\xd6\xb2\x95\x0d\x23\x83\x27\x47\xa6\x86\ +\xae\x8c\xae\x45\x58\x89\x08\x4d\x6d\xbd\x2d\xc1\x8a\xf2\xa1\xcb\ +\x67\x8f\x55\x6e\xdf\x5a\xb3\x8c\x30\x3d\x1b\xa7\xef\xde\x0b\x3b\ +\xe7\x14\xda\xd6\x22\x3e\x2f\xdc\xde\xe7\x5c\x3b\xdf\x6e\x05\x2d\ +\x8b\xd9\x58\x76\x19\x61\x6b\xed\x06\x72\x99\x0c\x83\xf7\x87\xdd\ +\x94\x93\x0b\x14\x13\x33\x94\xf2\xcc\xf2\xb2\x9e\xc9\xa7\x97\xba\ +\x4d\x00\xad\xb5\x55\x51\x61\xf1\xfe\x5b\xe2\x0f\x72\xca\xc9\xd3\ +\x50\x1d\xe4\xea\x85\x13\x01\xa5\x54\x51\x97\xb9\xbc\x6b\x76\x0f\ +\x3e\xb9\x0a\x74\x2f\xc4\x38\x96\xca\xa0\x67\x46\xf1\x92\xdf\xd1\ +\x5a\x10\xd1\x68\x3d\x5f\x92\x5a\x33\xa9\x35\xbe\xbf\xd8\xa7\xb5\ +\xbf\xac\x6d\xd5\xed\x64\xff\xa1\x53\x68\x11\x13\x96\x1c\x5e\x38\ +\x9e\xc5\x0e\x7d\xa2\xbf\x6f\x80\xd5\x9c\xfd\x0e\xad\x7d\x4e\x9e\ +\xee\x24\x1c\x5f\x0c\xe3\x82\xf0\x5c\xcc\x26\x67\x67\x50\x4a\xe1\ +\xba\x2e\x22\xc2\xfc\x1d\x17\xbe\xfd\x48\x70\xe5\xc6\x4b\xde\x4c\ +\xcc\x14\x91\x6f\x66\xec\xd1\x08\x86\x61\xd0\xd4\xde\xd7\xb5\x20\ +\x3c\x1b\xb5\x09\x38\x36\x00\xbf\x0c\x8b\xc0\xc3\xa1\xb7\xdc\x7a\ +\x3c\x46\x47\x6b\x33\x5d\x9d\x87\x59\x6d\x2f\xe1\x58\x9a\x9e\x9b\ +\xcf\xee\xa8\x5d\xc7\x7b\xbb\x80\x07\x5a\xeb\x15\x89\xfb\xf6\xee\ +\xa0\xa3\xf5\x00\x62\x98\x84\x53\x79\x74\x91\x97\x1a\x30\x0d\xaa\ +\x83\x8a\xeb\x77\x9f\x87\x4c\xe0\xf6\xb9\xae\xa3\x6c\xae\xaf\x5a\ +\x91\xec\x7a\x9a\x70\x2a\x4f\xd6\xcd\xae\x38\xbe\x14\xe5\x40\x24\ +\xe1\x60\x18\xc6\xb4\x69\x9a\x65\xb3\x6e\xc1\x6f\xfc\x32\x67\x93\ +\x2f\xac\xec\xfa\x6f\x21\x62\x10\x89\xdb\x88\xc8\x67\x13\x98\x08\ +\x45\xd2\x8d\xb5\x0d\x75\x78\x7e\x69\x09\x49\x6b\x88\xc6\xd3\x14\ +\x0a\xde\x84\x59\x28\x78\xe3\xa1\x48\xa2\xad\x66\x53\x2d\x9e\x5f\ +\x9a\x63\x5f\x6b\x22\xd1\x14\x22\xf2\xd5\x10\x91\x0f\xa1\x70\xd2\ +\xd5\xa2\xd0\x42\x49\xc5\x17\x88\x27\xec\x3c\xf0\xdd\x00\x26\xa3\ +\xd1\x44\x01\x4a\xcf\xcb\x22\x42\x32\x9d\x26\xfe\x71\x64\xa3\x09\ +\x4c\xda\x76\x36\xe8\x38\x59\xaa\x2a\xad\x55\x27\x17\x43\xda\xce\ +\x90\xcd\xba\xe5\xce\xf4\x78\x40\x89\x08\x5b\x0e\x9e\xe9\xb7\x1a\ +\xf6\x5c\x14\x59\x7c\x89\xff\x02\xa5\xc4\x4b\x4e\xbd\x7e\x15\x9b\ +\x18\x1a\x50\x22\x82\x52\xaa\x1e\xd8\x0d\x44\x4b\xb2\x0c\xdb\x00\ +\x05\xbc\x53\xff\xdd\x9f\xf7\x13\x77\x5b\x6b\x82\x49\x2e\xb3\xc2\ +\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x09\x40\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x08\xd2\x49\x44\x41\x54\x78\xda\xed\ +\x99\x79\x70\x95\xd5\x19\x87\x9f\xf3\x6d\x77\xc9\xbe\x6f\x04\xb3\ +\x10\x43\x88\x44\xc4\x20\x8a\x20\xc5\x36\x18\x0a\x62\x15\xaa\x23\ +\xa8\x6d\xc5\x76\xb4\x5a\xa7\xa3\x4e\x3b\xb6\xce\xb4\x9d\xb1\x8e\ +\xfd\xc3\xa9\x8e\xb5\x55\x2b\x6e\x80\x20\x19\xb1\x08\x26\xb2\x88\ +\xa0\x20\xa2\x48\x58\x22\xa1\x2c\x22\x89\x82\x59\x09\x49\xee\xfe\ +\x7d\xdf\xe9\x31\x89\x93\xb1\xf8\x67\xb9\x89\x53\xde\x99\xdf\xdc\ +\x33\x73\xef\x9d\x79\x7e\xef\xf7\x9e\xf9\xde\xf3\x1e\x43\x4a\xc9\ +\x77\x39\x0c\xe0\xbc\x81\xf3\x06\xfe\x57\x06\xc4\xcd\x29\x7c\x6b\ +\x48\x94\x84\x92\x0e\xae\x18\x5c\xbb\xda\x80\x86\xd7\x02\xa4\x36\ +\x28\x47\xfc\xd7\xef\x07\xbf\x1f\x5a\x9f\xfd\xdf\xe1\xc8\x43\xf2\ +\x07\xe0\x72\x04\xcb\x60\x40\xed\x67\xe1\xec\xde\x3d\x2a\x9f\xc0\ +\x58\x5c\xb1\x1c\x87\x19\xe8\x12\x6c\xed\x62\x0c\xf7\x0e\x04\x3f\ +\x07\xb6\x8f\xf6\x12\xaa\xc4\x16\xaf\x5b\x1e\xb7\x6c\xec\xf5\xdd\ +\xb4\xf9\x63\x84\xf7\xfb\x88\x1d\x48\x1d\x8f\x64\x23\x9a\xbc\x17\ +\x78\x6e\xb4\x1a\x98\x4a\x4c\x5b\xa5\x99\x6e\xd1\xec\x25\x9f\xa3\ +\x55\x47\x38\xdd\xe6\xc5\x28\xe9\x20\x58\x14\x20\xd2\x90\xa7\x9c\ +\x68\x7f\x43\x97\x67\x80\xba\xd1\x66\x60\x0e\x51\xf1\x8c\x37\x25\ +\x56\x38\xfb\x17\xad\x8c\x9f\xd2\xcb\xc9\x3e\x3f\x09\xc2\x43\x58\ +\x97\xf8\x2e\xe9\x07\xb3\x95\x48\x7d\x81\x87\x90\xf1\x0c\xba\x6c\ +\x06\x9a\x46\x89\x01\x39\x9f\x88\xbe\x32\x31\x3b\xe2\x9f\x73\x57\ +\x2b\x45\x13\xfb\x09\x07\x0d\xd2\x4d\x9b\x7c\xbf\xe4\x84\xeb\xc3\ +\x13\x05\xaa\x02\xc8\x40\x1b\xd1\xfa\x31\x69\xe8\xf2\x69\xe0\x1a\ +\x20\x30\xd2\x06\x16\x13\xd5\x96\x26\xe7\x85\x3d\x73\xee\x6a\x61\ +\x6c\x45\x88\x88\x82\x97\x52\x43\x13\x50\x99\xd0\x47\x77\x2c\x91\ +\x5e\x69\x62\xc5\xfc\xb8\xea\x49\x38\xc7\x7b\x70\x9a\x53\xaf\xc4\ +\x74\x6f\x04\x5e\x18\x21\x03\x02\xe0\x37\x84\xb5\x87\xb3\x4a\x02\ +\xe6\xbc\x7b\x5a\x49\xcf\x8b\x0e\xc1\x0b\x40\xe0\x48\x48\xd4\xa3\ +\xcc\xcf\x29\xa1\xbe\xa3\x93\xce\x40\x17\x96\x6e\xe1\x4c\xeb\x21\ +\x70\x2c\x09\x5c\x6d\xf1\x08\x1a\xe0\x41\x82\xfa\x23\xf9\x13\xfa\ +\x98\x7b\x67\x2b\xc9\x99\x36\xb1\xb0\xf1\xb5\x31\x24\x2e\xae\x94\ +\x94\x25\x5e\x4d\x55\x4a\x0d\x53\xd2\x74\x1e\x3f\xb6\x82\x23\x7d\ +\x2d\x58\xf9\x31\x42\xc9\x36\x6e\xb7\x35\x69\x24\xf6\x80\x8e\xe4\ +\x51\xa2\xe2\x81\xe2\xcb\x7a\xa8\xb9\xf5\x24\x49\xe9\x0a\x3e\x32\ +\x0c\xaf\xd0\xd1\x30\xa9\x48\xbe\x9a\xf2\xa4\xef\x91\xee\x29\xe3\ +\x82\x84\x14\xee\x2e\x6e\xa3\xae\x73\x05\xcd\x07\x34\xce\x84\x74\ +\x10\xf4\xc5\xdb\x80\x89\x94\x4b\x89\xea\xb7\x96\x28\xf8\x79\x4b\ +\xbe\xc0\xb4\x24\xb1\xa8\x01\x00\x08\x5c\xe9\x20\x30\xa8\x4c\xa9\ +\x65\x5c\xe2\x55\xe4\x7a\xcb\xd1\x30\xf8\xa4\x77\x1b\x27\xec\xf5\ +\xf8\x5a\x22\x74\x2c\xcb\xc1\x0d\xea\x41\x0c\xf9\x60\x1c\x0d\xc8\ +\x64\xa4\x78\x8a\xa8\x76\xcb\xb8\xe9\x5d\xd4\x2c\xfe\x12\xc3\x00\ +\x3b\xa6\x33\x0c\x6f\x23\xb0\xa8\x4a\x9d\x4f\x49\xe2\x15\x64\x7b\ +\xc6\x21\xd0\x39\x12\xd8\xce\xde\x40\x1d\x7b\x1a\xdb\x79\xfb\xe9\ +\x7c\xfa\xdb\x8d\x5e\x3c\xf2\x36\x60\x6d\x9c\x0c\x88\x4c\x5c\x56\ +\x61\x8b\xef\x57\xd6\xb6\x33\xf5\x87\x5d\x58\x06\x38\x8e\x40\x22\ +\x00\x0d\x47\x3a\x58\x22\x91\x8b\x53\xaf\x67\x6c\xc2\x64\x72\x3d\ +\x15\x38\xd2\xa6\xb9\x7f\x33\xfb\x82\x75\xec\xda\xde\xcf\xd6\x67\ +\xc7\x10\x0d\x68\x2d\x0a\x7e\x11\xb0\x23\x3e\x2f\x32\x41\x2e\x0e\ +\x6b\x71\xc5\x65\xe5\xb3\x3b\x98\x54\xdb\x8d\xa9\x03\x2e\x80\x18\ +\xca\x7c\x0c\x4b\x4b\x64\xd2\x57\xf0\xfe\x29\xaa\x6c\x2a\xb0\xdd\ +\x10\xff\xee\xdf\xc6\xde\xd0\x4a\xde\xdf\x12\xe3\xdd\xa5\x05\xd8\ +\x11\xed\x04\x96\x5c\x08\xec\x8e\x53\x2b\x21\x27\xe2\x68\xcf\x0b\ +\x5d\x56\x97\x5f\xd3\xce\x45\x33\xce\xa0\x4b\x94\x86\xe1\x1d\x05\ +\xef\xd7\x33\x54\xe6\x6f\xa0\xd0\x7f\xe9\x40\xd9\x44\x9c\x3e\x95\ +\xf9\x4d\xec\xeb\xff\x17\xef\xd5\x3b\xec\xaa\xcb\xc5\xb6\x69\x54\ +\xf0\x8b\x91\x34\xc7\xab\x99\xab\xc6\x16\xab\x84\xe1\x96\x8e\x9f\ +\xdb\x41\xe9\xe4\x00\xba\x0b\xa6\x01\x86\x0e\x20\x88\x49\x87\x24\ +\x23\x9b\xc9\xa9\x37\x92\xef\x9b\xa8\xe0\x2f\x24\xe0\x9c\xe6\x60\ +\x5f\x03\x7b\x7b\xd7\xf2\xee\x3a\x9d\x0f\x57\x67\x83\xc6\x76\x0c\ +\x95\x79\x57\xb4\xc5\xe7\x40\x23\x98\x8a\xea\x28\x75\xaf\x93\x57\ +\x5c\xd3\x45\xfe\xc4\x20\x9a\x0d\xba\x05\xa6\x0e\x02\xb0\xa5\x4b\ +\xb2\x99\xc3\xe4\x94\x85\x83\xf0\xde\x72\x7a\x63\x1d\x34\x07\x36\ +\xd0\x78\x66\x0d\xef\xbc\xe6\xa5\xf1\x8d\x2c\x30\xe5\x66\x04\xb7\ +\x7c\x0d\x1f\x0f\x03\x0b\x14\xfc\x73\x7a\x82\x9d\x7a\x41\x6d\x27\ +\x39\x25\x11\x74\x07\xcc\x21\x78\x53\x80\x23\x21\xdd\x1a\xc3\x25\ +\xa9\x37\x91\xe7\xad\x24\x53\x95\x4d\x77\xb4\x85\xa6\xc0\x3a\xf6\ +\x76\x35\xf0\xd6\x4b\x29\x1c\xd9\x91\x0a\x96\xb3\x12\x21\x96\x28\ +\xf8\x50\xbc\x8e\x94\x8b\x15\xfc\x3f\xf4\x64\x3b\x29\xbf\xa6\x93\ +\xd4\xc2\x18\x9a\x03\x86\x05\xa6\x06\x96\x92\x03\xaa\x54\x8a\x54\ +\xcd\xff\x98\x3c\xcf\x04\x32\x3c\xc5\x74\x45\x4f\x28\xf8\xd7\x69\ +\x6c\xdf\xc4\x86\x97\x53\x38\xba\x33\x19\x2c\xf7\x59\xa4\xb8\x07\ +\x49\x2c\x5e\x67\xe2\xbb\x88\x89\x27\x8c\xac\x88\x99\x31\xfd\x34\ +\x49\xb9\x36\x86\x03\x96\xa5\xa4\x83\xa1\xa4\x09\x28\xf0\x8d\xa7\ +\x32\x65\xbe\xca\xfc\x45\xa4\x99\x85\xb4\x47\x8e\x29\xf8\x35\x7c\ +\xd4\xba\x8d\x4d\xcb\x53\x39\xf1\x71\x32\x78\xdd\x47\x90\xe2\x8f\ +\x4a\xb1\x38\x1c\xea\x05\x4a\xbf\xc7\xe6\x61\x2d\x27\x42\xd2\x95\ +\x3d\xf8\x33\x9c\x01\x78\xd3\x1c\x2a\x1b\x0d\x34\xa5\xc2\x84\xf1\ +\x4c\x4a\x5d\x48\xb6\xa7\x82\x54\xab\x90\xb6\x70\x33\xfb\x02\xaf\ +\xb2\xbb\x65\x07\x6f\xfe\x33\x87\xf6\xc3\x7e\x07\xbf\xf3\x10\x52\ +\x3c\xaa\x14\xaf\xa9\x84\xfc\x33\x8e\xfc\x1d\x39\x51\xbc\x57\x9c\ +\xc1\x93\xec\x62\xb8\xc3\x65\x63\x28\x21\xa0\x34\xb1\x8a\x4b\xd3\ +\xae\x57\xf5\x5e\x46\x8a\x91\xcf\xa9\x70\x13\xfb\x83\xab\xd8\x75\ +\xec\x43\xde\x7a\x31\x9b\x8e\x63\x5e\x1b\x9f\x7b\x1f\x52\x3c\x19\ +\xaf\xb1\x8a\x07\xf8\x3b\xb6\xb8\x9d\xc2\x10\xfa\xc5\xfd\x58\x3e\ +\x89\x29\x87\xb2\xae\x0f\xc2\x6b\x02\x26\xa6\x4d\xa3\x3a\x7d\xf6\ +\xc0\x0b\xca\xaf\x67\xf2\x79\x68\x0f\xfb\x82\xaf\xb0\xa3\xa9\x89\ +\x8d\x2f\x67\xd3\x7b\xca\x13\xc4\xeb\x2e\x42\x6a\x6b\x91\x10\x0f\ +\x03\xd6\x40\x53\xe6\x68\x8b\x29\x0a\xc1\x84\x00\xa6\x22\xb7\x00\ +\x4b\x53\x1a\x82\xd7\x05\x54\x29\xf8\xc9\x69\xb5\xe4\xf9\x2a\x48\ +\x30\x32\x68\x0d\xee\x61\x7f\x68\x39\xdb\x0f\x34\xd1\xf0\x7c\x1e\ +\xc1\xd3\x66\x97\x82\xbf\x15\x57\x34\xc4\x67\xb0\x25\xc8\xc2\xe5\ +\x79\x60\x1e\xa5\x41\x28\x0f\x22\x04\x98\x62\x38\xf3\xba\x18\x2c\ +\x9f\xea\xac\x59\x4c\xc9\xac\xa1\xc0\x3f\x1e\x9f\x9e\xc0\x67\xc1\ +\x9d\x2a\xf3\xcb\x78\x67\xe7\x71\xde\x59\x9d\x4b\xa8\x57\x3f\x8e\ +\x47\xde\x8e\x23\xb6\xc6\x6b\x32\x67\x02\x2f\x83\xa8\xa5\x2c\x08\ +\xe3\x22\xe0\x80\xc1\x37\x37\xab\xa9\x0b\x66\xe4\xcc\xe1\xd2\x8c\ +\x99\x14\xfa\xcb\xf1\xea\x7e\x8e\x07\xb7\xd3\xd8\xbf\x9c\x2d\x3b\ +\x5a\xd9\xba\x3a\x07\x3b\xac\x1f\xc5\x94\xf3\x91\xa2\xf9\xdc\x8c\ +\x16\x85\xcb\x59\x21\xc4\x4c\x6c\x6a\xc9\x0d\x43\xc9\x20\x3c\xf2\ +\x9b\xf0\x3e\xc3\x54\xf0\x3f\x60\x92\x82\x1f\xa3\x32\xef\xd1\x7d\ +\x0a\x7e\x1b\x8d\xbd\x2b\xd8\xfc\xde\xe7\x6c\x7d\x2d\x07\x69\x8b\ +\xbd\x58\xf2\x26\x5c\x71\xf8\xdc\xcd\x46\x35\xc9\x59\x21\xb9\x03\ +\x03\xac\x62\x97\xa8\x00\xdc\xc1\x72\xb1\xf4\x41\x78\xbf\x61\x31\ +\xbb\xe0\x3a\x95\xf9\xcb\x29\x4e\xac\x44\x10\xe5\x70\xa0\x81\x7d\ +\x7d\xcb\x78\xb3\xbe\x8f\x8f\x36\x64\x83\x60\x23\x86\xfc\xa9\x82\ +\x3f\x75\x6e\x87\xbb\xe2\x2c\x03\x13\x88\x45\xe7\xce\x2a\xbd\x88\ +\x84\x42\xc9\xfa\xce\xbd\xa0\x0d\x35\x66\x02\x12\x15\xfc\xbc\xb1\ +\x0b\x54\xe6\x2f\xa3\x28\xa9\x62\xa0\x45\xfe\x34\xb4\x99\x03\x7d\ +\xcb\x59\xbf\x2e\x40\xe3\xd6\x74\xd0\xe5\x06\x04\x5f\x65\xfe\x0c\ +\x40\x7c\x0d\x48\xf9\x80\x61\xea\x89\xbf\xbe\x7c\x36\x49\xf9\x89\ +\xbc\x7d\xfa\x20\x21\x37\x0a\x40\xa6\x37\x85\x1f\x15\x5d\xcb\xa4\ +\x74\x05\x9f\x58\x46\xcc\x0d\x71\x28\x50\xcf\xfe\xae\xd7\xd8\xf4\ +\x56\x3f\x4d\xef\x0f\xc0\xbf\x08\xe2\x57\x48\xfa\x61\x38\xe2\x55\ +\x42\x05\x44\x22\x0b\x66\x5e\x38\x99\x59\x65\x55\xf8\xbd\xe9\xdc\ +\x3e\x76\x1e\x4f\x1d\x5d\xc3\x98\xb4\x2c\x16\x14\x5f\xc7\xa4\xcc\ +\x4b\x28\x4d\x1e\x4f\xc8\xe9\xe6\x60\x7f\x3d\xbb\x3b\x57\xb2\xe5\ +\x0d\xf8\x74\x4f\x2a\x58\xee\x13\x20\xee\xc3\xfd\xb6\x8d\x05\xe7\ +\x7e\x13\x4b\x16\xa1\x91\xbc\xa8\x6a\x3a\x1e\x6f\x32\x61\xcd\xe0\ +\xa1\x8a\x3b\x39\x10\x38\x81\xe1\xf5\x52\x9d\xa5\x6a\x3e\xa9\x94\ +\xde\x58\x3b\xfb\xfb\xd6\xb3\xeb\xcb\x3a\xd5\xcb\x0b\xbe\x68\x4e\ +\x00\x9f\xfb\x18\x52\x3c\xa0\xe0\xf9\x46\xc4\xb1\x84\xf2\xb0\xed\ +\xfb\xa7\x97\x4d\xe4\xda\xca\x69\x84\x85\x01\x86\x45\x96\x37\x83\ +\x35\x33\x97\x72\xdb\xce\xfb\x79\xe5\xe8\x5a\x6e\x2e\x9b\xcb\x91\ +\xd0\x46\x76\x1c\x5f\xcf\x07\x0d\x3a\xdd\x2d\x7e\xf0\xca\x7b\x71\ +\x87\x5b\x83\x91\x32\x70\x03\x8e\xcc\xb9\x2a\x77\x0a\x59\x69\xb9\ +\xf4\xc5\x24\x9a\x95\x40\x4c\x37\xc8\xf0\xa4\xf3\x66\xcd\x4b\x3c\ +\x79\x68\x29\x7f\xd9\xf5\x24\x9d\x27\x0f\xd3\x79\xc8\x20\xd0\xe6\ +\x75\xb1\xdc\x25\x48\xed\x45\x80\x91\x34\x60\xa8\xcf\x9f\xe0\xf8\ +\x79\xfa\x95\x83\xcc\x28\x3e\x46\xed\xf4\xa9\x80\x1f\x2c\x1f\x5d\ +\x3d\xed\xbc\x7f\x74\x0f\x2d\xcd\x1d\x9c\xfa\x38\xc0\xc9\x2f\x0d\ +\x94\xbb\x56\x3c\xee\x6f\x91\x62\x25\x12\x46\xda\xc0\x42\x34\x77\ +\x0a\x3d\x39\x74\x77\x84\xf9\xe5\x5f\xeb\x78\x35\xb3\x00\x33\x05\ +\xd6\x36\x6e\x62\xc5\x07\xeb\x38\x72\xf2\x18\xc4\x6c\x1b\xd3\xf7\ +\x31\x1e\xbd\x1e\x29\x5f\x40\x8a\x56\x00\x18\x59\x03\x3a\x9a\xbc\ +\x9b\xde\x24\xe8\xcc\x80\x94\x18\xc7\xc3\x9f\x30\xeb\xf1\x9f\xe1\ +\xf8\x7b\x09\xf7\xf6\xc7\x10\xda\x61\x0c\x6b\xb3\xd2\x6a\xa4\xf8\ +\x50\xc9\x1e\xce\xfa\xc8\x1b\xa8\x06\xa6\xe1\xe8\x50\xf4\x19\x24\ +\xf7\x82\x61\x3b\x01\xc7\x3d\x40\x58\x5b\x85\xc7\xb3\x19\x29\x9a\ +\x94\x22\x48\x40\x8e\xbe\x6b\xd6\xb9\x48\x34\xd2\x7a\x24\x82\x43\ +\x38\xda\x4a\x5c\xb1\x19\x61\xee\x41\x43\x41\x8f\xfe\x7b\xe2\x04\ +\xe0\x4f\x48\xb6\x28\xf0\xdd\x48\x82\xdf\xa9\x7b\x62\xf9\x8c\xbc\ +\xff\xfc\x4d\xfd\x79\x03\xff\x67\x06\xfe\x03\x1b\x85\x94\x1a\x1f\ +\xbe\x73\xb2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x0c\x27\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -8927,87 +9945,312 @@ qt_resource_data = b"\ \xaf\x07\xec\xdb\x12\xb8\xf3\x5f\x0d\xee\x10\xb8\x43\xe0\x07\xfe\ \xf9\x0f\x4e\x33\x44\x96\xd0\x41\x78\x46\x00\x00\x00\x00\x49\x45\ \x4e\x44\xae\x42\x60\x82\ -\x00\x00\x04\xf0\ +\x00\x00\x02\xa3\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x14\x00\x00\x00\x14\x08\x03\x00\x00\x00\xba\x57\xed\x3f\ -\x00\x00\x03\x00\x50\x4c\x54\x45\x09\x16\x28\x09\x16\x28\x09\x14\ -\x25\x09\x15\x27\x09\x14\x25\x08\x13\x23\x07\x11\x20\x07\x0f\x1c\ -\x06\x0d\x18\x04\x0a\x13\x03\x07\x0d\x02\x04\x07\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x01\x01\x01\x02\x02\x02\x03\x03\x03\x06\x06\x06\x0a\x0a\x0a\ -\x10\x10\x10\x17\x17\x17\x21\x21\x21\x28\x28\x28\x2c\x2c\x2c\x2d\ -\x2d\x2d\x2e\x2e\x2e\x2f\x2f\x2f\x30\x30\x30\x31\x31\x31\x32\x32\ -\x32\x33\x33\x33\x34\x34\x34\x35\x35\x35\x36\x36\x36\x37\x37\x37\ -\x38\x38\x38\x39\x39\x39\x3a\x3a\x3a\x3b\x3b\x3b\x3c\x3c\x3c\x3d\ -\x3d\x3d\x3e\x3e\x3e\x3f\x3f\x3f\x40\x40\x40\x41\x41\x41\x42\x42\ -\x42\x43\x43\x43\x44\x44\x44\x45\x45\x45\x46\x46\x46\x47\x47\x47\ -\x48\x48\x48\x49\x49\x49\x4a\x4a\x4a\x4b\x4b\x4b\x4c\x4c\x4c\x4d\ -\x4d\x4d\x4e\x4e\x4e\x4f\x4f\x4f\x50\x50\x50\x51\x51\x51\x52\x52\ -\x52\x53\x53\x53\x54\x54\x54\x55\x55\x55\x56\x56\x56\x57\x57\x57\ -\x58\x58\x58\x59\x59\x59\x5a\x5a\x5a\x5b\x5b\x5b\x5c\x5c\x5c\x5d\ -\x5d\x5d\x5e\x5e\x5e\x5f\x5f\x5f\x60\x60\x60\x61\x61\x61\x62\x62\ -\x62\x63\x63\x63\x64\x64\x64\x65\x65\x65\x66\x66\x66\x67\x67\x67\ -\x68\x68\x68\x69\x69\x69\x6a\x6a\x6a\x6b\x6b\x6b\x6c\x6c\x6c\x6d\ -\x6d\x6d\x6e\x6e\x6e\x6f\x6f\x6f\x70\x70\x70\x71\x71\x71\x72\x72\ -\x72\x73\x73\x73\x75\x75\x75\x77\x77\x77\x79\x79\x78\x7a\x7b\x7a\ -\x7c\x7d\x7c\x7f\x7f\x7e\x81\x82\x7f\x84\x85\x81\x84\x85\x82\x85\ -\x86\x83\x86\x87\x83\x86\x88\x84\x87\x88\x84\x87\x89\x84\x87\x89\ -\x85\x87\x89\x85\x88\x89\x85\x83\x86\x85\x7f\x84\x85\x7c\x82\x85\ -\x7a\x81\x85\x76\x81\x8b\x76\x82\x8e\x77\x84\x90\x79\x85\x90\x7d\ -\x87\x8e\x83\x89\x8c\x85\x8b\x8c\x89\x8c\x8c\x8a\x8d\x8b\x8c\x8d\ -\x8a\x8e\x8f\x8d\x90\x91\x8f\x92\x92\x91\x94\x94\x93\x95\x95\x95\ -\x97\x97\x97\x99\x99\x99\x9a\x9a\x9a\x9b\x9b\x9b\x9c\x9c\x9c\x9d\ -\x9d\x9d\x9e\x9e\x9e\x9f\x9f\x9f\xa0\xa0\xa0\xa1\xa1\xa1\xa2\xa2\ -\xa2\xa3\xa3\xa3\xa4\xa4\xa4\xa5\xa5\xa5\xa7\xa7\xa6\xa8\xa8\xa8\ -\xa9\xaa\xa9\xaa\xab\xaa\xab\xac\xab\xac\xad\xac\xad\xad\xad\xae\ -\xae\xad\xae\xaf\xae\xaf\xb0\xaf\xb0\xb0\xaf\xb1\xb1\xb0\xb1\xb2\ -\xb1\xb2\xb3\xb2\xb3\xb4\xb3\xb4\xb5\xb4\xb6\xb6\xb6\xb7\xb7\xb7\ -\xb8\xb8\xb8\xb9\xb9\xb9\xba\xba\xba\xbb\xbb\xbb\xbc\xbc\xbc\xbd\ -\xbe\xbd\xbe\xbf\xbe\xbf\xc0\xbf\xc0\xc0\xc0\xc1\xc1\xc1\xc2\xc2\ -\xc1\xc3\xc3\xc2\xc4\xc4\xc3\xc6\xc6\xc6\xc9\xc9\xc9\xcd\xcd\xcd\ -\xcf\xcf\xcf\xd1\xd1\xd1\xd3\xd3\xd3\xd5\xd5\xd4\xd6\xd6\xd5\xd8\ -\xd8\xd8\xda\xda\xda\xdc\xdc\xdc\xde\xde\xdd\xdf\xdf\xdf\xe0\xe0\ -\xe0\xe2\xe2\xe2\xe3\xe3\xe3\xe5\xe5\xe4\xe6\xe6\xe6\xe8\xe8\xe7\ -\xe9\xe9\xe9\xeb\xeb\xea\xeb\xeb\xeb\xec\xec\xec\xec\xec\xec\xee\ -\xee\xed\xef\xef\xef\xf1\xf1\xf1\xef\xef\xef\xef\xef\xee\xef\xef\ -\xee\xef\xef\xef\xf0\xf0\xf0\xf0\xf0\xf0\xf1\xf1\xf1\xf2\xf2\xf2\ -\xf3\xf3\xf3\xf4\xf4\xf4\xf5\xf5\xf5\xf6\xf6\xf6\xf7\xf7\xf6\xf7\ -\xf7\xf7\xf8\xf8\xf8\xf9\xf9\xf9\xfa\xfa\xfa\xfb\xfb\xfb\xfc\xfc\ -\xfb\xfc\xfc\xfc\xfd\xfd\xfd\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\xfe\ -\xfe\xfe\xfe\xfe\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\ -\xff\xff\xff\xff\xff\xff\xff\xff\x7e\xee\x29\x02\x00\x00\x01\x00\ -\x74\x52\x4e\x53\xd1\xd2\xd3\xc8\xb9\xa9\x93\x78\x5d\x43\x2c\x17\ -\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\x00\x00\x00\x00\x01\x02\x03\x06\x0a\x10\x17\x21\x28\ -\x2c\x2d\x2e\x2f\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\ -\x3c\x3d\x3e\x3f\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\ -\x4c\x4d\x4e\x4f\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\ -\x5c\x5d\x5e\x5f\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\ -\x6c\x6d\x6e\x6f\x70\x71\x72\x73\x71\x6f\x6e\x6d\x6d\x68\x68\x62\ -\x6f\x7c\x8a\x95\x9e\xa6\xae\xb6\xbf\xcd\xd2\xd7\xdb\xe1\xe7\xea\ -\xeb\xeb\xe8\xe6\xdc\xd1\xbe\xac\xa1\x9c\x96\x97\x98\x99\x9a\x9b\ -\x9c\x9d\x9e\x9f\xa0\xa1\xa2\xa3\xa2\xa2\xa1\xa1\xa1\xa3\xa2\xa2\ -\xa2\xa3\xa3\xa4\xa5\xa6\xa8\xaa\xad\xb0\xb3\xb7\xb8\xb9\xba\xbb\ -\xc0\xc5\xc8\xcb\xcd\xce\xcf\xce\xce\xcf\xd3\xd6\xdc\xe0\xe4\xe8\ -\xea\xee\xf1\xf3\xf5\xf6\xf7\xf8\xf9\xfa\xfa\xfb\xfb\xfb\xfc\xfc\ -\xfc\xfd\xfd\xfd\xfd\xfa\xf6\xf3\xef\xeb\xe7\xe0\xd8\xd0\xc8\xbf\ -\xb6\xae\xa5\x9c\x92\x88\x7d\x72\x68\x66\x64\x63\x62\x5b\x55\x51\ -\x4d\x4a\x46\x48\xa6\xfd\x00\x6d\x00\x00\x00\x9f\x49\x44\x41\x54\ -\x18\xd3\xb5\xd0\x31\x0e\x82\x40\x10\x85\x61\xe0\x12\x1e\x76\x54\ -\x54\xa0\xd9\x1d\xf3\xe2\x11\xd4\xc4\xd6\x58\xd3\x10\x0b\x3b\x02\ -\xd1\x42\xa9\xc6\x53\x50\x8e\xee\x02\x31\x9a\xd8\xf2\x17\x53\x7c\ -\xc9\x6e\x26\x13\x4c\xfe\x14\x8c\x87\x34\xf4\x85\x44\xb3\x0c\x40\ -\x1a\x0f\xea\x91\xa6\x40\xc1\xc6\xf0\x1e\x2b\xea\xd1\x3d\xc2\xae\ -\x62\x91\xd0\xf2\x15\xa9\xd7\x80\x28\xc6\xf6\x26\x46\x24\xb2\xa6\ -\xa9\xb1\xa4\x0e\x53\x3c\x45\x4c\x18\x39\x7c\x48\x83\x39\xf9\x3f\ -\x4f\x09\x44\xd8\xba\x58\x4a\xe0\xa0\x1e\x35\xcf\x50\x56\x58\x73\ -\x71\x3f\x63\x91\xab\xf6\x2b\xe9\x71\x83\xae\xe4\xe2\xe8\xb3\xbc\ -\xaa\xb6\xed\xcb\x4d\x1d\xf9\x4a\xbf\xbd\x01\x0c\x0e\x70\x72\x00\ -\x75\x19\xc2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\ +\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\ +\xe2\x03\x02\x04\x34\x31\x97\x0c\xf9\x63\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\x02\x0b\x49\x44\x41\x54\x68\xde\xed\x98\xcd\x4b\x94\x51\x14\ +\xc6\x7f\x16\x96\x7d\x2c\xa2\x55\x1b\x3f\x90\xc0\x45\x60\x21\x6e\ +\x5b\x04\x15\x45\x14\x06\x23\xae\x5a\xbb\x90\x72\x21\x6d\x4a\xa5\ +\x76\x41\x7f\x41\xae\xda\x88\x91\xd2\x22\x17\x66\x10\xa2\x92\x50\ +\x18\x45\x05\x81\x04\xd9\x2a\x22\xa5\x60\x48\xc4\x84\x69\x73\x16\ +\x0f\x2f\x33\x13\xfa\x5e\x21\xc6\xe7\x07\x97\xfb\xce\x73\xce\x7d\ +\xee\xdc\x97\x73\xef\x65\x06\x8c\x31\xc6\x18\x63\x8c\x31\xc6\x18\ +\x63\x8c\x49\x4e\x0f\x50\x8a\x76\x26\xb5\xf9\x9e\xff\x70\xc1\xed\ +\xf2\xfc\x61\x37\x2d\xf8\x1b\xb0\xb2\x9b\x16\xfc\x7e\x27\xcc\xb7\ +\xb2\xe0\x59\xd9\x5b\xa7\x32\xb1\xe3\xc0\x9f\x88\x7d\x02\xf6\x49\ +\xac\x1e\xb8\x01\xbc\x04\x7e\x46\x9b\x03\x7a\xcb\xcc\x7f\x04\x68\ +\xaa\x50\xce\x5b\xf1\x49\xc2\x7d\x59\x70\x4f\x26\xf6\x48\x62\x67\ +\x45\xef\x00\xde\x4a\x2c\xdb\x9e\x03\x7b\x25\xff\xb4\xc4\xae\xe5\ +\xf0\x49\x42\xb7\x4c\x30\x2c\x7a\xa7\xe8\xe3\xa2\x9f\x00\xd6\x24\ +\x36\x0d\xdc\x01\x1e\x02\x9b\xa2\xdf\x94\x31\x7d\xa2\x9f\xcc\xe1\ +\x93\x84\x66\x31\x1f\x0d\xad\x0e\x78\x11\xda\x9a\x94\xe3\x81\x28\ +\xc9\x12\xb0\x01\x5c\xce\x78\x15\xc4\xeb\xb5\xe8\x0f\x42\xdb\x04\ +\xf6\xe7\xf0\x49\x42\x1d\xf0\x3d\xcc\x17\x43\xbb\x20\x13\xde\x92\ +\xdc\xeb\xa2\xdf\xae\xe0\xb5\x1a\xf1\xdf\xa2\x2f\x84\xf6\x31\xa7\ +\x4f\x32\x26\xc3\xbc\x18\x7b\xe6\x5d\x7c\xfe\x0c\x34\x48\xde\x94\ +\x7c\xd1\xd6\x32\x3e\xf5\x52\xa6\x5f\xe5\x00\x2d\x86\x36\x96\xc3\ +\x27\xe9\xb5\xf4\x2a\xfa\xc3\xc0\x80\xec\xb3\x7e\x60\x5d\xf2\x8e\ +\xc9\x73\xb1\x8c\xcf\x95\x28\x57\x80\x67\xd1\xb7\x84\xaf\x5e\x49\ +\xdb\xf1\x49\xca\x79\x79\xe3\x1b\xd1\x3f\x2d\x93\x37\x56\xa5\x14\ +\x3b\x81\x1f\x11\x5b\x05\x1a\x43\xef\x92\x31\x97\x72\xf8\x24\xe5\ +\x68\xe6\x3a\x58\xaf\x50\x6a\x85\x4c\xde\x13\x60\x08\x78\x2c\xf7\ +\x75\x09\xb8\x28\x63\x86\x45\x6f\xca\xe1\x93\x9c\x25\x99\xe8\x6e\ +\x95\xbc\x91\x2a\xf7\xe6\x97\x38\xf0\x94\x89\x88\xfd\x8a\xc3\x68\ +\xbb\x3e\x49\x69\x00\x96\x63\xb2\x65\xe0\xe0\x3f\x4e\xf5\x02\x30\ +\x13\x25\x57\x04\xde\x00\x83\xc0\xa1\x2a\x2f\x72\x3e\xa7\x4f\x52\ +\x06\xe5\xed\x5e\xad\xf5\xdf\xa9\xcd\x72\x05\x4c\x67\xca\xae\x26\ +\x99\x90\xd3\xb9\xad\xd6\x17\x7b\x4e\x4a\xf9\x9e\xff\x94\x31\xc6\ +\x18\x63\x8c\x31\xc6\x18\x63\x8c\x31\xc6\x98\x54\xfc\x05\x94\x34\ +\xe4\xeb\x87\xd7\x3b\x14\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x07\xe2\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x07\x74\x49\x44\x41\x54\x78\xda\xd5\ +\x59\x69\x4c\x54\x57\x18\x35\x21\xe2\x8a\xfc\x20\x10\x11\xca\xa8\ +\xd8\x61\x70\x60\x06\x4a\x91\xaa\x58\x94\x68\x54\xa4\x2e\x35\x26\ +\x60\x63\xa8\x68\x30\x06\xe2\xb8\x47\x62\x0d\xee\x8a\x8e\xe2\x86\ +\xbb\x8e\xbb\xb8\xa2\xe3\x2e\x28\x6e\xe3\x8a\x8e\xbb\xb8\x27\x28\ +\x7f\xc4\xa4\x09\x86\x5f\xfe\x38\xbd\xe7\xbe\xe2\x65\x22\x10\x41\ +\x68\x99\x97\x7c\x2c\x61\xde\x7b\xe7\x7c\xdf\xf9\xce\xfd\xee\xa5\ +\x05\x80\x16\x8d\x75\xf5\x8a\x8a\xf2\x16\x61\x13\x51\x24\x22\xa5\ +\x45\x13\x5f\x00\xe4\x97\xc6\x02\x6f\xee\x63\x36\xbf\x1d\xd3\xa6\ +\x0d\x2c\x9e\x9e\x18\xa0\xd7\xe3\x07\x7f\x7f\x9d\x3b\x10\x20\x78\ +\x0b\x01\x67\xb4\x6d\x0b\xc7\xd0\xa1\xb0\xf7\xe8\x81\xe1\xfe\xfe\ +\xe8\xa6\xd3\xa5\x35\x5f\x02\x4a\x32\xf9\x04\x9b\xd9\xa1\x03\x4a\ +\x4f\x9e\x04\x4e\x9f\x76\x03\x02\x4a\x32\xce\x3f\xda\xb7\x47\x6e\ +\x74\x34\x2a\x5f\xbf\x06\x00\xf7\x20\xc0\x06\x8d\x37\x18\xfe\xfe\ +\x53\x68\xbd\x30\x3d\x1d\xa8\xa8\x00\x3e\x7f\xd6\x42\x54\xa1\x99\ +\x12\x50\x2e\xf3\x5b\x60\x20\x2c\xad\x5a\xa1\x74\xff\x7e\xe0\xd3\ +\x27\xd7\x38\x76\xac\x59\x12\x20\x78\x1d\x25\x93\xe4\xed\x0d\xab\ +\x68\xd8\xca\x9b\x37\x81\x8f\x1f\x81\xf2\x72\x15\x1f\x3e\x00\x87\ +\x0f\x7f\x21\x10\xd1\xbd\xfb\x26\xde\xf7\x7f\x13\x20\xf8\x61\x94\ +\x0c\x2d\xd2\x9e\x9c\x0c\xbc\x79\x03\x94\x95\x01\xef\xdf\x6b\xf1\ +\xee\x9d\x16\xa5\xa5\x40\x5e\x9e\x24\x40\x79\xfd\xee\xe7\x87\x04\ +\x9d\x0e\x24\x2e\x9e\x91\x45\x32\xff\x35\x01\x82\xcf\x21\x88\x8c\ +\x76\xed\x50\xb2\x6a\x95\x06\x9e\x0d\xcb\x78\xf5\x4a\x8b\x97\x2f\ +\x81\x17\x2f\xb4\x78\xfe\x1c\x28\x29\x41\x69\x7e\x3e\x1c\x8b\x16\ +\xc1\x36\x68\x10\x2c\x5e\x5e\x60\xe5\x06\x06\x07\x83\xae\x25\x22\ +\xae\x89\x09\x28\xc9\x8c\xf2\xf1\xc1\xfc\xa0\x20\x94\x9f\x38\x21\ +\x81\xe1\xd9\x33\xe0\xe9\x53\x2d\x9e\x3c\x01\x1e\x3f\x06\x1e\x3d\ +\x02\x1e\x3e\xd4\xe2\xc1\x03\xe0\xfe\x7d\xc0\xe9\x04\xee\xdd\xd3\ +\xe2\xee\x5d\x38\x17\x2e\x84\xd5\x68\x64\x65\x64\x55\xd8\x4b\x7c\ +\x47\x93\x10\x60\x86\xe2\xc2\xc2\xa4\x64\xf2\x12\x12\x80\x5b\xb7\ +\x6a\x04\x47\x60\x28\x2e\x06\xee\xdc\x01\x6e\xdf\xd6\x3e\xc7\xde\ +\xb8\x71\x03\xb8\x7e\x5d\x0b\x87\x03\xb8\x76\x0d\xb8\x7a\x15\xb8\ +\x72\x45\x56\xd1\xda\xb5\x2b\x68\xbf\x94\x25\x1d\xad\x51\x09\x50\ +\xab\x2c\x75\x86\x78\x81\x73\xce\x9c\xda\x40\xd6\x08\x0e\x97\x2f\ +\x03\x97\x2e\x01\x45\x45\xc0\xc5\x8b\xc0\x85\x0b\x40\x61\x21\x70\ +\xfe\xbc\x16\x67\xcf\x02\x67\xce\xc8\xb5\xc2\x39\x71\x22\x2c\x2d\ +\x5b\x82\x8e\xc6\x6a\x7c\x1f\x01\x65\x91\x45\x6c\x3c\x4a\xa6\x74\ +\xeb\xd6\x9a\x80\xd6\x0c\xb2\xa0\x40\x03\x78\xee\x9c\x02\x79\xea\ +\x94\x5c\x13\x40\xe9\xd9\xed\xd2\x5e\x21\xfa\x02\x47\x8f\x02\x47\ +\x8e\x00\x87\x0e\xa1\x72\xdd\x3a\x58\x85\x5b\x51\xa6\x94\x2b\x31\ +\x34\x88\x00\xb5\x18\x6b\x36\x4b\xc9\xd8\xfa\xf4\x41\xe5\xf1\xe3\ +\x35\x81\x65\x36\x6b\x07\x4a\x90\xbc\x8f\x40\x35\x90\xd2\x52\x71\ +\xf0\x20\x70\xe0\x80\x74\x27\xec\xdb\x07\xec\xdd\x0b\xec\xde\x0d\ +\xec\xda\x05\xec\xdc\x09\x6c\xde\x0c\x9b\xe8\x0d\xbe\x5b\x91\xa8\ +\x3f\x01\x0b\x5d\xa2\xd0\x62\xd1\x40\xec\xd9\x43\x70\x5a\x66\x5d\ +\xc1\x32\xa3\x0a\xac\x96\x51\x02\x65\x46\xab\x03\xe5\x33\x14\xd0\ +\x1d\x3b\x80\xed\xdb\x81\x6d\xdb\x80\x2d\x5b\x24\x68\x6c\xdc\x08\ +\x6c\xd8\x00\xac\x5f\x0f\xe4\xe4\xc0\x11\x1b\xeb\x42\xa2\xbe\x04\ +\xe2\xe8\x0c\x16\xa1\xfb\x92\x4d\x9b\x98\x79\xbe\x80\x2f\xd4\xc0\ +\xa9\xcc\xba\x66\x95\x2b\xb1\x06\x56\x65\xd4\x66\xd3\xee\xa3\x04\ +\xab\x03\xcd\xcd\x05\xd6\xae\x05\xd6\xac\x01\x68\xc7\x2b\x57\x02\ +\x2b\x56\x00\xcb\x97\x03\xd9\xd9\x80\x70\xa9\x3c\xa3\x51\x36\x77\ +\x4c\x64\xe4\x29\x81\xcf\xa3\xbe\x3d\x90\xd2\xcf\x60\xa8\x90\xf3\ +\xcd\xd4\xa9\xd4\xbf\x06\xc8\x6a\xd5\x5e\x46\x62\xfc\x5d\x49\x40\ +\x65\x56\x03\xcb\xcf\xb8\x82\x5d\xbd\x5a\x81\xe5\x73\x96\x2d\x03\ +\x96\x2e\x05\x16\x2f\x06\xc4\x1a\x81\x05\x0b\x80\x79\xf3\x80\xac\ +\x2c\x80\x86\x21\xde\x6b\xeb\xd4\x09\xec\xc3\x68\xb3\x39\xbb\xde\ +\x2e\x24\x96\xfe\x9e\xbd\xc3\xc3\x9f\xc8\x09\x33\x2e\x0e\x95\xd4\ +\x3e\x25\x43\x00\x4b\x96\xf0\xa5\xcc\x14\x7f\x66\xf6\x08\x4e\x03\ +\x29\x9a\x51\x65\x56\x81\x65\x66\xf9\x59\xde\xf3\x15\xd8\xd9\xb3\ +\x81\x19\x33\x80\x49\x93\x80\x71\xe3\x00\xae\xf0\x62\x2f\x51\x19\ +\x1f\x8f\xf9\xe2\xfd\x74\x42\x81\x27\xb1\xde\x36\x1a\xda\xad\x9b\ +\x1f\x4b\x28\x67\x7c\x11\xa5\xcc\x38\x1b\x9a\x20\x49\x60\xfe\x7c\ +\x60\xee\x5c\x05\x62\xd6\x2c\x60\xe6\x4c\x60\xda\x34\xfe\xac\x81\ +\x62\x05\x27\x4f\xd6\xc0\x65\x64\x00\xc2\x32\x31\x61\x02\x30\x7e\ +\x3c\x90\x9a\xaa\x81\x1d\x35\x0a\x18\x39\x12\x18\x3e\x5c\x02\xc7\ +\x90\x21\xc0\xe0\xc1\xc0\xc0\x81\x28\x8d\x89\xc1\x38\x0f\x0f\xf4\ +\x36\x99\xca\x04\xa4\x36\x0d\x59\x89\x3d\xa2\x4d\xa6\x4c\xee\xb2\ +\xf8\x20\x07\xb3\x56\x5c\xcc\x06\xad\x9b\xc0\x94\x29\xb5\x83\x4e\ +\x49\x01\xc6\x8c\x01\x46\x8f\x06\x92\x92\xea\x24\x80\xfe\xfd\x61\ +\xef\xd2\x45\xda\x6b\x54\x78\x78\x4e\x83\x67\xa1\x70\x83\x21\x96\ +\x59\xa0\xa4\x6c\x89\x89\x94\x14\x5d\x89\xd2\xa8\x8b\x00\x6d\x95\ +\x84\x55\xd0\x04\xd8\x27\xd4\xfe\xd8\xb1\xdf\x44\xa0\x52\xd8\x79\ +\x66\xeb\xd6\x60\x5f\x76\xf4\xf5\xd5\x37\x80\x80\x92\xd4\x2f\x91\ +\x91\x0e\xb9\xc0\xe9\xf5\x94\x14\x47\x05\xda\x5f\xad\x04\x4a\x84\ +\x8c\xec\x69\x69\x55\x41\x67\x23\x79\x45\x88\xee\xc5\xcf\xd7\x41\ +\x00\xfd\xfa\xc1\x11\x12\x22\x5d\x29\xd2\x68\xcc\xa5\x2a\xbe\x67\ +\x3f\xe0\x41\x57\x90\x23\x86\xb7\xb7\xab\xa4\x58\x09\x57\x02\x1c\ +\xa7\x59\x7e\x39\x26\xb0\x97\xb8\xc6\x08\x77\x63\x02\xe8\x70\x8a\ +\x0c\x17\x3b\xca\xac\x16\x02\x10\x46\x92\xd9\xaa\x95\xaa\xc2\xf7\ +\xee\xc8\x7e\x0a\x0b\x1b\x1c\x67\x34\x56\xc8\x21\x8f\x8d\x48\x10\ +\x85\x85\x94\xc6\x57\x04\x08\xdc\x64\x30\x58\xb9\x2b\xe3\x77\xd1\ +\x53\x45\x04\x22\x2a\xc9\xbe\xa2\x24\x15\x11\x1a\x44\x2d\x04\x1c\ +\x82\x34\x93\x61\x0e\x0d\xcd\x66\x22\xbf\x7b\x4f\x2c\x00\xf9\xc7\ +\x44\x44\xdc\xe4\x43\x99\xd1\x72\xbb\x9d\x20\xb8\x0e\x28\x02\x5f\ +\x6f\x29\xdb\x8b\xf0\x11\xa1\x0b\x0b\x09\xf9\xab\xa7\xd1\x58\xcc\ +\xbf\xb3\x9a\xac\x08\xef\x97\x76\x3d\x62\xc4\x57\x04\x2a\x7b\xf6\ +\x84\x45\x39\x92\x4f\x63\x9d\x4a\x78\xf4\x30\x9b\x37\x71\xf5\x26\ +\x08\x27\x7d\x9f\x20\x38\x6a\x4c\x9f\xfe\x2d\x7b\x62\xef\xf0\x90\ +\x90\xb4\x5f\xbb\x77\x2f\x73\x59\x73\x0a\x0a\xe8\x56\x2e\x04\x20\ +\x9a\xd9\xa6\xed\xec\xd0\x35\x28\x68\x58\xa3\x9e\x0b\x09\x8b\x4b\ +\xa6\x2c\x28\x29\x36\x2b\x49\x70\x7a\xb5\x8b\x5d\x98\x22\x50\x77\ +\x35\x45\x6f\x1d\x66\xaf\xb0\x9a\x24\x21\xd7\x9c\xc4\x44\x17\x02\ +\x4e\x83\x41\xf6\x91\x90\xf0\x5e\x71\x9b\x67\xa3\x9e\xcc\x09\x49\ +\x84\x72\xf5\xa6\xa4\xac\x51\x51\x04\x41\x32\xb5\x11\xa8\x75\xcd\ +\x11\x19\x56\x24\x28\xcb\x84\x84\x2f\x04\xd0\xab\x57\x75\x19\xf9\ +\x35\xc5\xd9\xa8\x67\x8f\x88\x88\x3c\x66\x92\x03\x21\x89\x10\x90\ +\x2e\x20\x20\xf9\x5b\x1f\x20\xac\x3a\xd5\x85\x04\x67\x2a\x45\x00\ +\x36\x5f\x5f\xf9\xcc\x80\x8e\x1d\xe3\x1b\x99\x80\xba\x7e\x36\x99\ +\x26\x52\x52\x72\x97\x15\x1e\x5e\x42\x95\xd5\xf7\x8c\x95\x95\x63\ +\x4f\x48\x39\xa6\xa7\x7f\x21\xe0\x10\x16\xce\x2a\x1b\xf5\xfa\x2c\ +\x56\xad\x49\x08\xf0\xe2\x89\xf4\x8f\x9d\x3b\xa7\xfe\x0b\x5e\xd7\ +\x80\x53\x3f\x5b\x52\x95\x3b\xb1\x1f\x06\x0c\x90\x04\xca\x23\x22\ +\xb8\x5f\xe0\x68\x61\xa7\x09\x34\x11\x01\xa5\x6b\x0e\x61\x0d\x3d\ +\x30\xe6\x31\x3d\xdd\x8d\x16\xcd\xa9\x97\x04\x10\x13\xc3\x3e\xa8\ +\xaa\x6c\xa0\x0b\x81\x66\x76\x55\x6d\xb0\x94\x94\x84\x2b\x91\x80\ +\xd5\xcb\x8b\xff\x77\x20\x60\x7d\xf3\x25\xa0\x48\xe4\x53\x32\x9c\ +\xa3\xb8\x41\x22\x01\x7b\x40\x00\xd8\x5f\x34\x07\x77\x20\xa0\x63\ +\xb6\xe9\x68\xf2\xc8\xa6\x6f\x5f\x38\xc4\x88\xcd\x26\x37\x04\x07\ +\x4f\xa5\xf3\x35\x63\x02\xaa\xa1\x59\x05\x4e\xc0\x9c\x7a\x4b\x0c\ +\x06\x4e\xa7\xf2\xd0\x98\xe3\x89\x3b\x10\x30\xb3\x17\x38\xf8\xf1\ +\x50\xa1\xdc\x64\xaa\x4e\xc0\xaf\x79\x13\x50\x24\x9c\x9c\x5e\xe5\ +\xe2\x26\x46\x94\x34\x01\x59\xcc\x61\xc5\xe2\x4f\xfe\xee\x42\x20\ +\x85\x0b\x18\xf7\x20\xdc\x77\x54\x23\x10\xe8\x2e\x04\xbc\xb9\x91\ +\xa2\xa5\xf2\x0c\x2a\xd3\xd3\xb3\x8a\x80\xde\x0d\x08\x28\x4b\xad\ +\x92\x11\xd7\x02\x8e\xe1\xee\x46\xc0\x42\x19\x71\xdf\x41\x5b\xa5\ +\xbd\xba\x1b\x01\x1d\xdd\x88\xdb\x58\xb7\x24\xc0\xab\xaf\xd1\xf8\ +\x96\xa3\x76\x35\x02\x61\x6e\x45\x80\x7d\xc0\x93\x0d\xee\x37\x38\ +\xb2\x73\xda\x75\x37\x02\x66\xfe\xdb\x2b\x3e\x34\x54\xee\x09\xdc\ +\xab\x02\xea\x6a\x43\xe0\x22\xcc\x22\x7c\x88\xfd\x1f\xf9\x92\x41\ +\x48\x3f\x71\x1a\xd8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ +\x82\ +\x00\x00\x08\x19\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x07\xab\x49\x44\x41\x54\x58\xc3\xad\ +\x57\x5b\x50\x93\x67\x1a\xf6\xca\xce\xec\xcc\xf6\x62\x2f\xbc\xd9\ +\xe9\xce\xec\x6e\xbd\xda\xd9\x9b\xb5\xce\xba\x3b\x7b\xb0\xad\xcc\ +\x7a\xb1\xce\xce\x3a\xb3\x76\x54\x70\x75\xdb\xe2\x81\xd6\xb6\x54\ +\x04\xbb\xa5\x20\x6d\xc1\x82\x06\x08\x07\x51\x42\x80\x80\x80\x02\ +\x21\x81\x10\x92\x40\x48\x10\x73\x24\x21\x67\x72\x80\x04\x42\x20\ +\x9c\x09\x47\xb5\x54\x78\xf6\xfb\x7e\x13\x16\x30\x58\x8b\x7d\x67\ +\x9e\xf9\x2f\x92\xfc\xcf\xfb\x3e\xcf\xfb\xbe\xdf\x97\x5d\x00\x76\ +\xfd\x98\x20\xf1\x0b\x82\x14\x02\x03\xc1\x75\x82\x03\xcf\xfd\xfe\ +\x8f\x48\xbc\x9b\x20\xe1\x57\xaf\xef\xb5\x2a\x8c\xd6\x65\xdb\x02\ +\x60\x19\x1e\x5b\x09\x27\xf1\x33\xfa\x19\x81\x22\xfc\xdc\x3e\x76\ +\x48\x7e\x8a\xa0\xb9\xb6\x59\x1c\x32\xcf\xad\x42\x39\xfe\x1d\x44\ +\xf6\x51\xd8\xc7\xe6\xe8\x87\x86\x3d\x7b\xf6\x58\x53\x52\xae\x2c\ +\xca\x3a\x3a\x10\x4e\xe2\xe5\x49\xc3\xc4\x31\x04\xb7\x3e\x49\xf9\ +\x2c\x60\x9b\x5d\x59\x53\x4d\x03\x4d\xb6\x11\x34\xeb\xfb\x20\x31\ +\x79\x60\x19\x9d\xc5\xbb\xef\xbe\x3f\xc5\xab\xbe\x83\xf1\x89\x29\ +\x4c\x4f\xcf\xae\x92\xef\xd7\xbc\x74\x02\x11\x9f\x0f\xbe\x1d\xe3\ +\xb2\x04\x43\x4f\xb4\x33\x40\x8b\x7b\x06\xcd\x3d\x2e\x34\xeb\xec\ +\xa8\x57\xf6\x20\x87\x53\x85\x32\x5e\x35\x43\xbc\xb0\xf4\x90\x81\ +\xc1\x60\x5c\x26\xbf\x4b\x7c\xe1\x04\x48\x1c\x24\x38\x41\xfd\xdd\ +\xea\x73\x27\xf1\xb9\x27\x04\x48\x87\x97\xc1\xd7\xbb\x20\x22\x55\ +\x37\xdc\x37\xa2\xb8\x4e\x88\x2c\x56\x3e\xcc\x56\xdb\x3a\x71\x04\ +\x2c\x16\x6b\x2c\xfc\xce\xe7\x27\x10\x91\x36\x93\x95\x3f\x46\x7d\ +\xa5\xfe\x12\xc4\x6f\xf4\x59\x31\xb6\x02\x7e\xef\x20\x5a\x7b\x9c\ +\xe0\x3f\x30\xa1\x4c\x28\x43\x46\x0e\x1b\xb2\x0e\xf9\x26\xd2\xf9\ +\xc5\x65\xcc\x2d\x2c\x21\x34\xbf\x88\xbd\x7b\xf7\x5a\xc9\x3b\x7e\ +\xba\x6d\x02\x24\x7e\x43\x90\x46\x3d\x35\x13\x69\x75\xb3\x80\xd2\ +\x3f\x0f\xcb\xc4\xe2\x9a\x50\xa1\x5a\xb4\x6c\xf1\x59\xa0\xb6\xa0\ +\xa6\x5d\x8d\x2f\xb2\x73\x71\xb7\x9e\xff\x0c\x31\x25\x9d\x09\xcd\ +\x63\x62\x6a\x06\x83\x43\x81\x27\xe4\xdd\xbc\x2d\xd3\xb0\x3b\x92\ +\x03\x33\x26\xd4\x53\xb5\xd3\xfb\x58\x4f\x88\xc5\x03\x21\x88\x2c\ +\x43\x50\xba\x46\xd0\xed\x09\x42\xe5\x9b\x42\x9b\x73\xfc\xa9\xcf\ +\x5a\x1b\xee\x2a\x74\xc8\xbc\xc9\x45\x09\xa7\x6c\x93\xcf\x9b\x88\ +\x27\xa7\x11\x18\x1d\xc3\x80\x6f\x08\xa2\xd6\xd6\x25\xc2\x51\xdb\ +\x28\x12\x87\xc6\x1f\xaf\x82\x2f\x62\x94\x4d\x89\x24\x90\x22\xea\ +\x52\x2d\x9a\x42\xab\xe8\x18\x79\x04\xa1\xc5\xcf\x10\x53\x74\xf6\ +\x0d\xa3\xd3\xe1\x87\xd4\x3c\x80\x16\xbd\x03\x0d\x5d\x06\x14\xd5\ +\x0a\x90\x91\x95\x0d\x2f\x79\xf1\xc6\xaa\xa9\xd4\xb3\x73\x0b\x4c\ +\xc5\x94\xd8\xdd\xef\x85\xc9\x62\x05\xb7\xbc\x12\xa5\xe5\x95\x4b\ +\x13\xf3\xcb\xab\x23\x0f\x01\x37\xd9\x11\xe6\xd9\x15\x84\x97\x15\ +\x13\x06\xcb\x3c\xd0\x68\xf2\xa3\xdd\xee\x5f\x27\x96\x3b\x86\x20\ +\xb3\x78\xd7\x7d\xe6\x08\xa4\xf8\x3c\x33\x1b\x2a\x8d\x36\xaa\xdc\ +\x53\x33\x21\x8c\x8e\x8d\x33\x15\xd3\x26\xe4\x37\x09\xf1\xc1\xc5\ +\x8f\x51\x73\xaf\x01\xbe\x65\x60\xfc\x11\xa0\x23\x13\x23\xf2\xce\ +\xa1\xbe\x5d\xb9\xb8\x51\x01\x83\x81\x74\x74\x4d\xa7\x1e\x0a\x67\ +\x80\xa9\xb8\xdd\xea\x83\xd8\xe8\x42\x93\xca\xcc\xf8\x7c\xe5\xcb\ +\x2c\x88\xda\x24\x51\x89\xa7\x67\xe7\x18\x1b\x86\x86\x47\x60\x77\ +\x38\x49\x82\x3a\x24\x7c\xf8\x21\xae\xb3\x0b\xe1\x99\x5c\x80\x6f\ +\x09\xd0\x90\xde\xe1\x0f\x2c\x81\xab\x1f\xc4\x7d\xef\x04\xdd\x07\ +\x1d\x61\xeb\xff\x9f\xc0\x1d\xb9\x16\x1d\xf6\x21\x48\xcc\xfd\x4f\ +\x7d\xee\xd4\x22\x9d\x55\x84\xaa\x9a\xba\x4d\x3e\x47\xe4\x8e\xf8\ +\x3c\x3c\x12\x84\xd3\xdd\x0f\xbd\xc1\x88\xc2\xe2\x62\x9c\x7e\x2f\ +\x1e\x3d\x03\x01\xf4\x2f\x02\x83\x84\xbc\xc5\xff\x2d\xee\x3a\x43\ +\x28\x51\x91\xf7\xf6\x05\xf1\x4e\xdc\xbf\x7d\x84\x33\x69\xe3\x20\ +\x18\xf4\x33\xab\xe0\xc9\x54\x68\x35\x38\xd1\xd8\xdd\x0b\x9e\x58\ +\x89\xac\x5c\xf6\x33\x3e\x47\xaa\x9e\x9c\x9e\x65\xe4\xee\xf7\x0e\ +\xa2\xd7\x6c\x41\x43\x03\x1f\x27\x62\xe3\x20\xe9\xd6\xc0\x45\xcf\ +\x01\x52\x90\x24\xb8\x86\xb2\x9e\x00\x6e\xb4\xdb\x50\xd1\x1b\x44\ +\x85\xce\x8b\x4a\x7e\x0b\x6d\xbe\x9b\x5b\x27\xd1\xa0\x99\xf8\x16\ +\x65\x22\x05\xee\x29\xf4\x28\x13\xc8\x90\x78\x35\x0b\x1a\xad\x3e\ +\xaa\xdc\x63\x13\x93\xf0\x0d\x0d\xc3\x66\xef\x83\xb4\x5d\x8e\xc4\ +\x4b\x97\x90\xc3\xca\xc3\xd4\x63\xc0\x4e\x7a\x49\x31\x4e\xfa\x89\ +\x94\x7f\x5b\x3b\x84\x7c\x85\x13\x25\x6a\x1f\x4a\xd5\x03\xe8\xf2\ +\x30\xa3\x28\x22\xf8\xf9\x33\x09\x74\x8f\x2e\xa1\xa8\xbe\x15\xa5\ +\x7c\x09\xb2\x4a\x2a\xf0\xcf\xe3\x71\x51\xe5\xf6\x07\x46\xd1\xe7\ +\xf2\x40\xab\x37\x20\xfd\x6a\x06\x92\xbf\x48\x83\xcd\x37\x02\x27\ +\xa9\xda\x40\x1a\x4c\xe0\x7b\x88\x52\x9d\x1f\x45\xdd\xfd\x0c\x71\ +\x41\x97\x1b\xc5\xdd\x1e\x88\x9c\x41\xfc\xf9\xcd\xb7\x5d\x84\xeb\ +\x6c\xb4\x43\xd0\x28\xf7\x4e\x23\xa7\xfc\x1e\xb2\x4b\xab\xf1\x51\ +\xea\x57\x48\xfe\x6f\xea\xfa\x58\x51\xb9\x47\x82\xe3\xf0\x0c\xf8\ +\x60\x34\x99\x51\xc9\xab\xc2\xfb\x67\xcf\x41\xfe\x40\x03\x3f\xe9\ +\x6e\xb2\x8d\x19\xb9\x6f\x69\x06\x19\xd2\x9b\x2a\x2f\x72\xe5\x0e\ +\xe4\x75\xf6\xa1\xf0\xbe\x1b\x1c\x95\x1b\xf9\x9c\xca\x29\xc2\x53\ +\xb8\xdd\x29\xdc\x2b\x76\x04\x90\x51\xc8\xc5\x95\x6b\x79\x38\x11\ +\x9f\x80\x9b\xb7\x6e\x33\x63\x15\x91\xdb\x6a\x73\x40\x22\x6d\xc7\ +\x85\x84\x0f\x50\x74\xbb\x0c\xf3\x2b\x80\x9f\x34\x58\xf7\x24\x20\ +\x1c\x7c\x84\x4a\xd3\x18\x38\xfa\x61\x86\x9c\x56\xfd\x55\xb3\x1e\ +\xac\x0e\x3b\xb8\x3a\x1f\xd9\x21\x1e\x7a\x2f\xe0\x13\xbc\xba\x5d\ +\x02\x26\xbe\xc1\x83\x94\x6f\xd8\x38\x9f\x9c\x8a\x03\x7f\x3d\x04\ +\x63\xaf\x99\xe9\x6e\x2a\xb7\x46\xd7\x83\xa4\xcb\xc9\x48\xff\x3a\ +\x8b\x8c\xd5\x3c\x53\xb5\x71\xf6\xa9\xdc\x35\xf6\x69\x5c\x97\x59\ +\x19\xd9\xbf\x6e\x21\xa7\xa0\xd4\x82\x74\xbe\x1a\x57\x9b\x34\x60\ +\xc9\xcc\x10\xbb\x82\xf8\xe5\xaf\x5f\xa7\x67\xc0\x3b\xe1\x75\x1f\ +\x35\xcc\x35\xdd\x66\x7c\x94\x96\x85\xb8\x73\x17\xf1\x97\x43\x31\ +\x4c\xd5\x74\x99\xf0\xaa\xaa\x71\xfa\xf4\x19\x68\xcc\x0e\x8c\x92\ +\x2d\x36\x14\x1e\xab\x5a\xc7\x0c\x78\xe6\x71\x70\x0d\x23\x4c\xa3\ +\x65\x8a\x0c\x8c\xec\xb4\xfa\x9c\xb6\x5e\x94\x74\x39\xd0\x66\xf7\ +\xaf\x1e\x3d\x11\x4b\x47\x2e\x6f\xc3\x79\x13\x35\x2c\x5c\x99\x1a\ +\xf1\x97\x3e\xc7\xd1\xd8\x33\xf8\x38\x31\x09\x86\x5e\x13\x1a\x9b\ +\x04\xf8\xdd\x1b\xfb\x51\x4f\xd4\xf1\x90\x99\xee\x9a\x00\xaa\xad\ +\x93\x60\x2b\x5d\x0c\x39\xf5\xbc\xf0\xbe\x67\xbd\xea\xcc\x16\x3d\ +\x4a\x55\x1e\x08\x6d\x01\x94\xd4\xf1\x43\xe1\x65\x53\x40\xf0\xca\ +\xf7\x25\x60\x2b\x6e\x6a\xc7\xa9\x84\x44\xc4\x1c\x39\x8a\xdc\x7c\ +\x36\x5a\x5a\xc5\x38\x14\x13\x83\x2f\x39\x35\xc8\x14\x6a\x98\xe6\ +\xa2\xd5\xd2\x27\xf5\x9a\x7a\x4c\x13\xa1\x49\x64\xb7\x99\x90\xdb\ +\x6e\x46\xb9\xda\x8d\x06\xa5\x76\x39\x2c\x39\x3d\xf9\x4e\x13\xec\ +\xd9\x72\xd4\x47\x0d\x3b\xab\x46\x88\x63\xff\x39\x8f\xdf\xee\xfb\ +\x3d\x1a\xf9\x02\x9c\xbf\x90\x80\x93\xf1\x17\x70\xa3\xad\x07\x19\ +\xc4\x4f\x4a\x14\xe9\x6e\xba\x58\xa8\xef\x2c\xfa\x94\x98\x50\x28\ +\xb7\x40\xe9\x0e\x3c\xf9\x57\xec\x29\x2a\x77\x2d\xc1\x67\x04\xfb\ +\xb6\xb9\xe4\x44\x8d\xbe\xcc\xb2\x5a\xfc\xe3\xe4\x19\x1c\x3c\xf4\ +\x37\xb0\x72\xf3\xb0\xef\xc0\x1f\x50\x20\xd1\x21\x89\x27\x65\x2a\ +\xa6\x4b\x85\x3e\xbf\x21\xd5\x46\xe4\x2e\x90\x5b\x21\xb0\x0c\xae\ +\xe5\xdc\xe2\xd2\x11\x13\x13\xe4\x87\x6f\x3c\xaf\x3c\xe7\x96\x15\ +\x35\x9c\x69\x45\xe5\xf8\xfb\xb1\x58\x1c\x3f\x19\x87\x37\xf6\xef\ +\xc7\x8d\x3a\x11\x92\xab\xa4\x0c\x21\xed\x70\xea\x35\x55\x21\x8b\ +\x34\x5b\xc9\x03\x37\x2a\x34\x6e\xd4\x49\x3a\x17\xc3\x72\x73\x08\ +\x8e\x6d\x95\xfb\x87\x24\xe0\x4a\x65\x73\x70\xe4\xf8\x29\x1c\x3e\ +\x7c\x98\x8c\x63\x2e\x32\x05\x2a\x5c\x22\xd5\xd3\x5d\x7e\x4d\xdc\ +\x0b\x36\xe9\x74\x76\xa7\x1d\x77\x8c\xe4\x88\xb6\xf9\x9e\x84\xb7\ +\x1a\x95\xfb\x22\xbd\x49\xfd\x80\x0b\x6d\xf4\x04\x32\x4a\x78\x4c\ +\x0f\x9c\x4b\x49\xc3\xb5\xa6\x2e\x7c\xc2\x6d\x65\x36\x59\xf1\x83\ +\x01\x5c\x97\x9a\xc1\x51\x7b\x20\xf3\x04\xd7\xce\x25\x26\x05\x36\ +\xc8\xfd\xc7\x9d\xc8\x1d\xd5\x82\xdc\x1a\x01\xce\x5e\x4e\x45\x81\ +\x58\x85\x78\xf6\x5d\x5c\xa9\x55\x90\xaa\xfb\xc0\x96\xdb\x50\xad\ +\x75\xe3\xae\x54\x41\x2f\x10\xca\x0d\x72\xbf\xba\xd3\x6a\xa3\x05\ +\xb7\xa2\x51\xf8\x1d\xaf\x43\x8d\x4f\xb9\x2d\x88\xcb\xe6\xe1\x9a\ +\x48\x8f\xaa\x1e\x2f\x9a\x35\xe6\xc7\x7f\x7a\xf3\x2d\x57\x78\xac\ +\xa8\xdc\xaf\xbd\xac\xdc\xd1\xe2\x08\xdd\x05\x5c\x75\x1f\xde\xcb\ +\xaf\x45\xb9\x76\x00\x32\x67\x60\xf5\xc2\xa7\x97\xa9\xdc\xf7\x08\ +\xd2\xa9\xdc\x3b\xf8\x03\xf3\xc2\xf1\x13\x82\xca\x1c\xee\x9d\x50\ +\x0b\x39\x94\xb8\x0d\xc2\xc8\x16\xa3\x17\x87\xc3\x2f\x22\xf7\x0e\ +\xff\xda\x6d\x8a\xdd\x61\x99\xd5\x1b\xb6\xd8\x6b\xbb\x5e\x32\xbe\ +\x2f\x89\xff\x01\x66\xb9\x5f\xfc\x11\x80\x3d\xcf\x00\x00\x00\x00\ +\x49\x45\x4e\x44\xae\x42\x60\x82\ \x00\x00\x04\x32\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ @@ -9078,7 +10321,107 @@ qt_resource_data = b"\ \x00\x90\x14\x0f\xfc\x97\x72\xf3\xc6\x7f\x00\xfc\x0d\x91\xe4\x07\ \x58\x63\x81\xe3\x00\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ \x82\ -\x00\x00\x0b\x20\ +\x00\x00\x01\x4f\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x30\x00\x00\x00\x30\x08\x04\x00\x00\x00\xfd\x0b\x31\x0c\ +\x00\x00\x01\x16\x49\x44\x41\x54\x78\x01\xed\x96\x4b\x4a\x03\x41\ +\x14\x45\xcf\x20\x66\x1a\x14\x5d\x81\x26\xad\x7b\x08\x82\x38\xd0\ +\x6d\x88\xe0\x46\x14\x07\xe2\x36\x32\x51\x83\x9a\x55\x28\x22\xb8\ +\x03\x23\x22\x0e\x84\x56\xb4\x03\x7e\xba\x53\x4a\xf3\x28\x32\x10\ +\x2c\x0b\xee\x24\xd4\x39\xe3\xcb\x85\xa2\xea\xbd\x22\x31\x85\x24\ +\x12\x1d\x4e\xc8\x29\xa9\xbc\xe3\x09\xdd\x2f\x8e\x18\xb0\x4c\x20\ +\x19\xcf\xb8\x08\x5f\x58\x21\x88\x33\x5c\xa4\x37\x34\x09\xe0\x15\ +\x17\xed\x21\x01\x38\xf3\x3f\xf4\x2c\x33\x66\x5d\x53\xd0\x62\x68\ +\xa9\x07\xe6\x14\x05\xb0\x4a\x65\xb9\xbe\xa6\x00\xf6\x7d\x72\x5b\ +\x53\x30\xc3\x95\x25\x0b\x96\x14\x05\xd0\xa1\xb0\xec\x25\x0d\x45\ +\x01\xec\xf8\xf4\x9e\xa6\x00\xff\x4c\x2b\xba\x9a\x82\x79\x1e\x2d\ +\x3f\xa4\xa5\x28\x80\x0d\x3f\x10\x7b\x9a\x82\x4d\x6d\xc1\x82\x3f\ +\xa2\x5b\xcd\x11\x9d\x5b\xba\xa4\xab\xbd\xa6\xbb\x9a\x87\x36\xb2\ +\xec\x05\x0d\xe5\xa8\x78\x63\x51\x3b\xec\xb6\xb4\xe3\xfa\x58\xb3\ +\x70\xee\x2c\x75\xcf\xac\x72\x65\x56\xac\xf1\x27\x05\x2e\xda\x03\ +\x02\x18\xe0\x22\xbd\xa6\x49\x00\x19\x39\x2e\xc2\x9c\x8c\x40\xda\ +\x1c\xf1\xc4\x7b\xed\x47\xed\x67\xed\xd7\x8f\x65\xed\xc4\x87\xd2\ +\x6e\xfe\x29\x6d\x12\x89\xc4\x54\xf3\x0d\x0a\x7f\x93\xd6\xf9\xe7\ +\x0c\x36\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x04\xa3\ +\x89\ +\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ +\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ +\x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ +\xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ +\x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ +\xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ +\x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ +\x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ +\xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ +\x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ +\x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ +\x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ +\x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ +\x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ +\x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ +\x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ +\x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ +\x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ +\x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ +\x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ +\xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ +\x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ +\x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ +\xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ +\x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ +\x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ +\x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ +\xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ +\xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ +\x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ +\x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ +\x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ +\x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ +\x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ +\xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ +\x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ +\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ +\x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ +\x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ +\xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ +\x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ +\x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ +\x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ +\x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ +\x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ +\xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ +\xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ +\xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ +\xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ +\xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ +\x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ +\x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ +\x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ +\xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ +\x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ +\xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ +\x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ +\x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ +\xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ +\xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ +\x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ +\x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ +\x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ +\x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ +\x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ +\x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ +\xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ +\x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ +\x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ +\x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ +\x60\x82\ +\x00\x00\x0b\x73\ \x73\ \x61\x76\x65\x41\x73\x44\x65\x74\x61\x69\x6c\x3d\xe5\xb0\x87\xe6\ \xa0\x87\xe7\xad\xbe\xe4\xbf\x9d\xe5\xad\x98\xe5\x88\xb0\xe5\x85\ @@ -9257,1843 +10600,511 @@ qt_resource_data = b"\ \x65\x52\x65\x3d\xe9\x87\x8d\xe8\xaf\x86\xe5\x88\xab\xe6\xad\xa4\ \xe5\x8c\xba\xe5\x9d\x97\x0d\x0a\x6c\x61\x62\x65\x6c\x44\x69\x61\ \x6c\x6f\x67\x4f\x70\x74\x69\x6f\x6e\x3d\xe5\xbc\xb9\xe5\x87\xba\ -\xe6\xa0\x87\xe8\xae\xb0\xe8\xbe\x93\xe5\x85\xa5\xe6\xa1\x86\ -\x00\x00\x03\x12\ +\xe6\xa0\x87\xe8\xae\xb0\xe8\xbe\x93\xe5\x85\xa5\xe6\xa1\x86\x0d\ +\x0a\x75\x6e\x64\x6f\x3d\xe6\x92\xa4\xe9\x94\x80\x0d\x0a\x75\x6e\ +\x64\x6f\x4c\x61\x73\x74\x50\x6f\x69\x6e\x74\x3d\xe6\x92\xa4\xe9\ +\x94\x80\xe4\xb8\x8a\xe4\xb8\xaa\xe7\x82\xb9\x0d\x0a\x61\x75\x74\ +\x6f\x53\x61\x76\x65\x4d\x6f\x64\x65\x3d\xe8\x87\xaa\xe5\x8a\xa8\ +\xe4\xbf\x9d\xe5\xad\x98\xe6\xa0\x87\xe8\xae\xb0\xe7\xbb\x93\xe6\ +\x9e\x9c\ +\x00\x00\x0a\xfb\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\ -\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\ -\xe2\x03\x02\x04\x32\x2f\x3b\x59\x63\x86\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\x02\x7a\x49\x44\x41\x54\x68\xde\xed\xd8\x4b\xa8\x8d\x6b\x1c\ -\xc7\xf1\xcf\xc6\xce\xe6\xd8\x25\xb9\x0d\x44\x88\x72\xa2\x30\xc1\ -\x84\x5c\x42\x71\x9c\x11\x29\x45\x06\x88\x94\x5c\x06\xe4\x32\x31\ -\x33\x32\xa0\x64\xe2\x96\x08\x21\x85\x93\xd2\x49\x92\x94\x5b\x29\ -\xb9\x76\x8a\x48\x31\x71\x89\xe3\xb2\x2d\x93\x47\xbd\xad\xde\x77\ -\xaf\xb5\x77\x6b\x6f\x7b\x6f\xff\x6f\xad\xc9\xfb\xfe\xff\xbf\xe7\ -\xf9\x3d\x97\xff\xf3\xac\x97\x20\x08\x82\x20\x08\x82\x20\x08\x82\ -\x20\x08\x82\xa0\x6d\x18\x8b\x26\x94\xb0\xfc\x77\x30\xfc\x4f\x32\ -\x7b\x17\xdd\xbb\xba\xd9\x39\xc9\x6c\x09\xb3\xba\xba\xd9\xee\xb8\ -\x97\xcc\x9e\xef\xcc\x46\x86\x60\x0b\xea\x2a\xc4\xad\x48\x66\x9b\ -\xf0\x67\xe6\xf9\x06\x8c\xec\xe8\x26\xbb\x61\x36\x4e\xe3\x1b\xee\ -\x54\x88\x6f\xc4\xab\x64\x78\x5f\x99\xce\x87\xa4\x71\x18\x63\x3a\ -\x9a\xd1\xfe\xd8\x84\x27\x99\xbd\x58\xc2\xa1\x0a\x79\x3b\x53\xdc\ -\x7b\x0c\xca\x3c\x1f\x55\xa6\xf3\x1d\x27\x30\xfe\x57\x9a\xac\xc3\ -\x94\x34\x03\xff\x97\x75\xb0\x84\xd7\xf8\xbb\xc2\x92\xff\x98\x62\ -\xb7\x96\xbd\x1b\x8a\x2b\x39\x9a\x25\x9c\xc3\xa4\xf6\x34\xda\x88\ -\x55\xe9\xf8\xc8\xeb\xd0\x4d\x2c\x43\x43\x05\x9d\x43\x29\xfe\x39\ -\x7a\x17\x0c\xe8\x4c\x5c\x2b\x68\xe7\x12\xa6\xb6\xa5\xd1\x71\xd8\ -\x8b\x77\x39\x8d\x7f\xc1\x51\x4c\xae\xa2\x48\xc1\xc4\xb4\x4c\x4b\ -\x58\x5a\xc5\x4a\x9a\x83\x1b\x05\xc6\xaf\xa6\xba\x51\x57\x4b\xb3\ -\x97\x0a\x1a\x7b\x89\x1d\x18\xdc\xc2\xad\xf0\x6f\xca\xbf\x9d\x0a\ -\x54\xb5\x79\xf3\x70\xab\xa0\x2f\x67\x6a\x65\x76\x40\x8e\xf8\x63\ -\x2c\x46\x7d\x2b\xf4\x16\x64\x74\xa6\xb7\xb2\x76\xac\xcb\xe9\xd3\ -\xa9\x5a\x19\x9e\x95\x23\xfe\x1d\xc7\x5a\x71\x5c\xd4\xe3\x41\xa6\ -\xf8\xb4\xd4\xe8\x4c\x9c\xcd\xdc\xb9\xb3\xbf\xed\xb5\x32\xfc\x07\ -\x36\xa6\xe5\x5b\xde\x48\x13\x8e\xa4\x63\xa4\x1a\xd6\xa6\xbc\x6f\ -\x2d\x18\xac\x46\xac\xc1\xfd\x82\xa5\x7c\x1b\x2b\xd1\xa7\xd6\x45\ -\xab\x01\xab\xf1\x5f\x81\xf1\x03\x18\xd1\x4c\x7e\x5f\xbc\x49\xf1\ -\x7b\xab\x68\x6f\x34\x76\xe3\x6d\x4e\x7b\x9f\x70\x30\x1d\x4f\x75\ -\xda\x98\xfa\x74\xec\x3c\xc8\xe9\xc8\x57\xec\xc7\xb0\x9c\xbc\x5d\ -\x29\xe6\x1d\x06\x36\xa3\x3f\x17\x17\x0b\x66\xf3\x21\xd6\xa3\xdf\ -\xaf\xba\xf4\x2f\x2a\x38\x8f\xaf\x96\xc5\x0e\xc7\xe7\xf4\x6e\x73\ -\x33\x9a\x3d\xd3\xa0\x95\x0f\xe2\x49\xcc\x68\x8f\xd9\xac\xb6\x98\ -\xcc\xc7\xf5\x4c\x27\xf7\x94\xc5\x1c\x4f\xcf\x9f\xa1\x57\x33\x5a\ -\x13\x32\x1a\xcf\xb0\xad\x85\x47\x5e\xbb\x1b\x9f\x81\xcb\xe9\x1f\ -\xd0\x4f\x26\x67\x4c\x2c\xa9\xa0\xb1\x14\x17\xf0\x57\x67\xfb\x08\ -\xd0\x23\x33\x08\xd7\x32\x57\xce\x6e\x55\xe6\x75\x5a\x16\x66\x66\ -\x77\x5a\x57\xff\x92\xd1\x13\x4f\x6b\x7d\xed\xeb\xc8\x6c\xcc\x54\ -\xd9\xd1\x1d\x71\xbf\xd5\x9a\x17\xe9\xa2\xf2\x02\x8f\x04\x41\x10\ -\x04\x41\x10\x04\x41\x10\x04\x41\x10\x04\x6d\xc8\x0f\xf0\x6b\xdf\ -\x7c\xd8\x29\x0f\xa9\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ -\x82\ -\x00\x00\x05\xb5\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x16\x00\x00\x00\x16\x08\x06\x00\x00\x00\xc4\xb4\x6c\x3b\ -\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x13\x00\x00\x0b\x13\ -\x01\x00\x9a\x9c\x18\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\ -\x8e\x7c\xfb\x51\x93\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\ -\x25\x00\x00\x80\x83\x00\x00\xf9\xff\x00\x00\x80\xe9\x00\x00\x75\ -\x30\x00\x00\xea\x60\x00\x00\x3a\x98\x00\x00\x17\x6f\x92\x5f\xc5\ -\x46\x00\x00\x05\x2b\x49\x44\x41\x54\x78\xda\x62\xf8\xff\xff\x3f\ -\x03\x2d\x30\x40\x00\x96\xc4\x20\x05\x80\x18\x84\x81\x01\xad\x2c\ -\x78\x2e\xd5\x47\x2c\x1e\xbc\x95\xfe\xc2\xff\xff\x65\xdb\xb2\x03\ -\x09\x64\x72\xcb\xdd\x61\x66\xe8\xbd\x23\x33\x31\xe7\xc4\xa1\xaa\ -\xf0\x23\xcc\xfc\xaa\xea\x22\xa2\xd8\xfb\x39\x32\x22\xee\x39\xc6\ -\xc0\xf6\x68\xad\x41\x44\x6e\x3e\x01\x84\x62\xb0\x88\x88\x08\x83\ -\x81\x81\x01\x83\x91\x91\x11\x48\x3d\x9f\xb5\xb5\x75\x47\x67\x67\ -\xe7\xcb\x0d\x1b\x36\xfc\x3f\x70\xe0\xc0\xff\x43\x87\x0e\xfd\x5f\ -\xb3\x66\xcd\x7f\xa0\xd8\xff\x98\x98\x98\x67\xf2\xf2\xf2\x25\x20\ -\x85\xc2\xc2\xc2\x0c\x4c\x4c\x4c\x28\x06\x03\x04\x10\xdc\x60\x90\ -\xad\x42\x42\x42\x0c\x1a\x1a\x1a\x0c\x40\x0d\xd1\xdb\xb6\x6d\xfb\ -\xff\xfb\xf7\xef\xff\xd8\xc0\xfb\xf7\xef\xff\xef\xde\xbd\xfb\x7f\ -\x73\x73\xf3\xff\xc8\xc8\xc8\xff\x9c\x9c\x9c\x66\x20\x0b\x80\xbe\ -\x82\x1b\x0c\x10\x40\x60\x83\xc1\xc1\x20\x26\xc6\x00\xf4\x2a\x88\ -\x1d\x7c\xea\xd4\xa9\xff\xb8\xc0\xaf\x5f\xbf\xfe\x7f\xfb\xf6\xed\ -\xff\x9b\x37\x6f\xfe\xaf\x5c\xb9\xf2\x7f\x4d\x4d\xcd\xff\xb0\xb0\ -\xb0\xff\x40\x73\x79\x41\xae\x86\x19\x0c\x10\x40\x70\x83\x05\x05\ -\x05\x41\x96\x2a\xce\x99\x33\xe7\xff\x9f\x3f\x7f\x70\x1a\x0c\x33\ -\xf4\xd5\xab\x57\xff\x2f\x5c\xb8\xf0\xbf\xad\xad\xed\x7f\x49\x49\ -\xc9\x7f\x19\x19\x99\x4e\x58\x84\x30\x32\x32\x32\x00\x04\x10\xd8\ -\x60\x11\x60\x10\x70\x00\x6d\x89\x8d\x8b\x3b\x7a\xfb\xce\x9d\xff\ -\xf8\xc0\xe7\x2f\x5f\xfe\xbf\x78\xf1\xe2\xff\xd3\xa7\x4f\xff\x1f\ -\x3f\x7e\xfc\xff\xa4\x49\x93\xc0\x61\xee\xe3\xe3\xf3\x0d\x68\xa6\ -\x00\xcc\x60\x80\x00\x02\x1b\x2c\x0c\x72\x2d\x23\xa3\xec\xcc\x25\ -\x4b\xfe\xff\x05\x0a\xfc\xc1\x63\xf0\xc7\x9f\x3f\xff\x3f\x7b\xfe\ -\xfc\xff\xdd\xbb\x77\xff\xcf\x9a\x35\xeb\xff\xbc\x79\xf3\xfe\x4f\ -\x9f\x3e\xfd\x7f\x5e\x5e\xde\x7f\x31\x31\xb1\x6a\x98\xab\x01\x02\ -\x08\x92\xe6\x80\x40\xcd\xca\xaa\xfc\xc4\xb5\x6b\xff\x3f\x00\x23\ -\xe5\x4c\x61\xe1\xff\xf3\xd9\xd9\xff\xaf\xe6\xe6\xfe\xbf\x03\xd4\ -\x70\x0f\x88\xef\x26\x25\xfd\x3f\xe6\xef\xff\xff\xdc\x9e\x3d\xff\ -\x5f\x00\x23\x6f\xe9\xd2\xa5\xff\x67\xcc\x98\xf1\x7f\xc1\x82\x05\ -\xff\x67\xcf\x9e\xfd\xbf\xae\xae\xee\xbf\xa5\xa5\xe5\x35\x98\xb9\ -\x00\x01\x04\x37\x38\x3b\x21\xe1\xe6\x2b\x1b\x9b\xff\x1f\x95\x94\ -\xfe\xbf\x96\x93\xfb\xff\x16\x88\x5f\x88\x89\xfd\xbf\xc2\xc0\xf0\ -\x7f\x13\x10\xf7\x03\x71\x85\xac\xec\xff\xc5\xcb\x97\xff\x5f\xb6\ -\x7a\x35\xd8\xa5\x0b\x81\x86\x82\xe2\x04\xe4\xf2\xd6\xd6\xd6\xff\ -\xe1\xe1\xe1\x20\xc3\x64\x40\x91\x08\x10\x40\x10\x83\xb9\xb9\x59\ -\x4f\x02\x0d\x3a\xc3\xc4\xf4\xff\x84\xa0\xe0\xff\xeb\xca\xca\xff\ -\x8f\x00\x0d\x59\xa6\xa0\xf0\xbf\xc7\xd8\xf8\x7f\x63\x5c\xdc\xff\ -\xce\x89\x13\xff\xcf\x06\xa6\xe7\xc5\xab\x56\xfd\x5f\x01\x4c\x0d\ -\xcb\x81\x16\xcc\x9f\x3f\x1f\xec\xea\xa9\x53\xa7\xfe\xef\xea\xea\ -\xfa\x9f\x0b\xf4\x21\x2f\x2f\x6f\x06\x28\xf9\x02\x04\x10\xd8\x60\ -\x71\x06\x06\x8d\x7b\xbc\xbc\xff\x73\x81\x36\xe6\x66\x64\xfc\xcf\ -\x0c\x09\xf9\x9f\x01\x0c\x8a\xd2\xf6\xf6\xff\x5d\xc0\x70\x9f\xb7\ -\x75\xeb\xff\x95\x5b\xb6\xfc\x5f\xbf\x69\xd3\xff\xf5\x40\xc3\x57\ -\xac\x58\xf1\x7f\xf1\xe2\xc5\xe0\x20\x98\x32\x65\xca\xff\x09\x13\ -\x26\x80\x23\xb0\xb2\xb2\xf2\xbf\x8a\x8a\xca\x4a\x50\x08\x00\x04\ -\x10\xd8\x60\x59\x06\x06\xed\xf3\xdc\xdc\xff\x73\x81\x12\xb3\x81\ -\x19\x63\xf9\xce\x9d\xff\x37\x00\xc3\x7a\x1d\x90\xbd\x6e\xe3\xc6\ -\xff\x1b\x81\x06\xae\x5b\xbf\x1e\x9c\xeb\x40\x2e\x5d\x02\xb4\x0c\ -\xe4\x5a\x50\xa4\x81\x0c\xed\xee\xee\xfe\xdf\x0e\x74\x44\x6d\x6d\ -\xed\x7f\x60\x71\x70\x15\x64\x2e\x40\x00\x81\x0d\x66\x03\x66\x9a\ -\xbd\xc0\x30\x14\xe3\xe3\x9b\x27\xac\xa4\xd4\xea\xed\xeb\xfb\xb0\ -\xa7\xa7\xe7\xff\xda\xb5\x6b\xff\x83\xb2\x33\x28\x23\x2c\x5b\xb6\ -\x0c\x6c\xe0\xc2\x85\x0b\xc1\xe1\x0a\x32\x74\x22\x30\x78\x40\x86\ -\x82\xc2\xb7\xa1\xa1\x01\x6c\xb0\xaf\xaf\xef\x2f\x50\x71\x00\x10\ -\x40\x60\x83\xb9\x81\xac\x76\x06\x86\x63\xf6\x0c\x0c\x1d\xca\x90\ -\x72\x02\x04\x02\xec\xec\xec\xae\x80\x32\x00\x28\x05\x2c\x5a\xb4\ -\xe8\xff\xdc\xb9\x73\xc1\x11\x05\x0a\x53\x98\x4b\x41\xf2\xf5\xf5\ -\xf5\xff\xab\xab\xab\xff\x57\x55\x55\xfd\x0f\x08\x08\x00\x45\xa0\ -\x24\x40\x00\x81\x0d\x36\x07\xb2\x8c\x81\x06\x05\x30\x30\x6c\x86\ -\x99\xca\x0b\xc9\x89\x0c\xc2\x22\x22\x4d\xb9\xc0\xe4\x36\x79\xf2\ -\x64\xb0\x2b\x61\x86\x82\x22\x0b\xe6\x52\x98\xa1\x15\x15\x15\xff\ -\x6d\x6c\x6c\x1e\x00\xb5\x71\x02\x04\x10\x3c\xb9\x21\x03\x61\x20\ -\x36\x80\xb2\x15\x95\x95\x41\x45\xa2\x7b\x54\x54\x14\x38\x82\xfa\ -\xfb\xfb\xe1\xde\x07\xb9\x14\x54\x56\x80\x0c\x2d\x2b\x2b\xfb\x9f\ -\x04\x4c\xeb\xc0\xf2\xa6\x16\xa4\x0f\x20\x80\xc0\x06\xfb\x00\x19\ -\x7e\x0c\x0c\xbe\xbd\x40\x17\x27\x32\x30\x4c\x04\x72\x45\x34\xa0\ -\x06\x6b\x6a\x6b\x33\x08\x08\x80\x73\xaa\xaa\xb7\xb7\xf7\x27\x90\ -\xeb\x1a\x1b\x1b\xe1\x86\x82\x5c\x59\x54\x54\xf4\x3f\x28\x28\xe8\ -\x3f\x3f\x3f\x7f\x1f\x50\x1d\x3b\x48\x31\x40\x00\x81\x0d\xb6\x64\ -\x60\x70\xff\x9f\x93\xf3\x1f\xa8\xf2\xff\x7f\x5d\xdd\xff\xa7\x80\ -\x11\x09\x4c\x29\xbe\x30\x1f\x88\x03\x0b\x29\x0e\x0e\x70\xd9\xce\ -\x20\x2b\x2b\x3b\x21\x30\x30\xf0\x7f\x5a\x5a\xda\xff\xac\xac\xac\ -\xff\xa9\xa9\xa9\xff\x4d\x4d\x4d\x9f\x00\xa5\xfc\x91\x7d\x0d\x10\ -\x40\x60\x83\xe7\x30\x30\xf4\x01\xa3\xf4\x3f\x30\xba\xff\x03\x53\ -\xfc\x7f\x60\x0c\xfc\xcf\x67\x60\x78\x88\xac\x8e\x8f\x8f\x0f\x25\ -\xb4\x80\x65\x70\x34\xb0\xfc\x6e\x66\x67\x67\xcf\x06\xf2\xe5\xd1\ -\x83\x13\x20\x80\xc0\x06\xcb\x31\x30\xd8\xce\x05\xba\xf2\x88\xb0\ -\xf0\xff\x43\xc0\x5c\xd7\x28\x24\xf4\x93\x87\x81\x21\x1d\x59\x1d\ -\x28\x38\xc0\xa5\x16\x14\x80\x2a\x05\x69\x69\x69\x58\x30\x61\x00\ -\x80\x00\x02\x1b\x6c\x80\xe0\x6a\x03\xb1\x1e\x3c\x9c\xd0\x0c\x06\ -\x97\x01\x50\x00\xaa\xc6\x80\xc1\x02\xb6\x00\x1b\x00\x08\x30\x00\ -\x69\x36\x5f\x67\xcd\x5c\xcb\xcb\x00\x00\x00\x00\x49\x45\x4e\x44\ -\xae\x42\x60\x82\ -\x00\x00\x02\x86\ +\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ +\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ +\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ +\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ +\x79\x71\xc9\x65\x3c\x00\x00\x0a\x8d\x49\x44\x41\x54\x78\xda\xed\ +\x9a\x5d\x88\x5d\x57\x15\xc7\x7f\x6b\xef\x73\xee\xbd\x93\x3b\x33\ +\x99\xc9\x57\x9b\x8f\x36\x4d\x93\xd2\x54\x6d\x5a\x8a\x6d\xb5\x05\ +\x5b\x29\x05\x5f\x0c\x54\x2a\x88\x2f\x16\x41\x6c\xc5\x22\x14\xd1\ +\x17\x1f\x7d\xb1\x42\xc5\x52\xf0\x31\x42\x5f\xaa\xd0\xaa\xd5\x46\ +\xb0\x54\x90\x52\xa5\x82\x6d\xac\xd4\xa4\x24\x4d\xd3\x4c\xcd\xe4\ +\xab\x99\x4e\x3a\xf7\xfb\x9c\xbd\xbc\x73\xcf\x3e\xb3\xe6\xce\x4c\ +\x26\x93\x20\x82\xe0\x86\x35\x7b\xdf\x7d\xf6\x39\x67\xfd\xd7\xfa\ +\xff\xd7\xde\x07\x26\x51\x55\xfe\x97\x5b\x02\xfc\xef\x03\x10\x79\ +\x8a\xb5\xb5\xfc\xa1\xc4\xcb\x63\xd5\x6a\xba\x03\xc8\x89\x2d\x68\ +\x61\x00\x22\x50\x49\x33\xfe\x33\x99\x4d\xc9\x73\x59\xfc\x2c\xdf\ +\x69\x77\x8f\x06\xe5\x19\xf0\x2f\xab\x3e\x71\x25\x19\xc8\x1f\xdf\ +\x7d\xcb\xe6\xa7\x1f\xf8\xfa\xbd\x8c\x6c\xdb\x04\x79\x00\x20\x00\ +\x93\x23\x30\x5e\x53\xb2\xe0\x09\xb3\x67\xd8\x5b\x3f\xc7\xf8\xfa\ +\x3a\x21\x5c\x1d\x08\x11\x41\xb3\x2e\x7f\x39\x1a\x98\x9d\xd8\xcb\ +\xba\x11\x45\x15\xbc\x17\x4e\xbf\x33\x7d\xcb\x6f\x7f\xf6\xda\xfe\ +\xe9\xa9\xd9\x87\x81\xe7\xd7\x08\x20\x4c\x8e\x8f\xd5\xbe\xbf\xff\ +\x07\x5f\xe4\xaf\xcd\x8d\xcc\x4e\x83\x77\x20\x02\x59\x80\xfb\x6f\ +\x84\x5d\x9b\x61\xb6\x05\xa2\x4d\x76\xef\xf2\x6c\xd9\xb2\x91\x3c\ +\x0f\x57\x0d\xc0\xd3\xe6\xc5\xd7\xcf\xf1\xf7\xc6\x04\xbb\x6e\x76\ +\x68\x0e\x12\x60\xd3\x67\x36\xf0\x8d\x1b\x37\xf0\xe4\x23\xbf\xfc\ +\xce\x95\x00\xd8\xba\xf3\xe6\x8d\x1b\x3f\x4c\x27\xf9\x60\x1a\xd6\ +\xa5\x10\x04\x5c\x04\xd0\x6a\x06\x2e\xce\xf6\xad\xe5\x48\xfb\xe3\ +\xe3\xc7\xa7\x39\x75\x6a\x06\xd5\xb5\x3b\xbc\xb8\xa9\x2a\xd5\xa4\ +\x47\xb3\x51\xa1\xa7\x4a\xde\xa5\x00\x20\x30\x7d\x1a\xee\xb8\x61\ +\x33\xdb\x77\xad\xdf\x7d\x25\x22\x76\xce\x3b\x51\x15\xd2\x04\x12\ +\x0f\x02\x88\x14\x96\xe7\xd0\x6a\x43\xb3\x6f\xa3\x99\x50\xab\xa5\ +\x7d\xab\xac\x49\x07\xaa\x90\xb8\x1c\xe7\x14\x80\x4e\xcf\x01\x8e\ +\x4a\x02\x3e\xf5\x88\x53\x9c\x03\x55\x7b\x67\xde\x13\x5c\xbf\x5d\ +\x02\x80\xae\xf8\x1a\x45\x0b\x87\x89\x4d\xcc\xba\x19\xcc\x35\xa1\ +\xd1\xb7\x8a\x08\xa3\xa3\x23\xd4\xeb\x97\xd7\x80\x77\x42\xb3\xd9\ +\xe2\xd5\x37\xdb\x9c\x9d\xad\xe2\x7d\xe0\xbe\xdb\x33\xb6\x5d\x33\ +\x89\xa7\x4b\x92\xe4\x08\x45\xa6\x03\x0c\x80\x10\x83\xa6\xfd\xb6\ +\x04\x40\xb8\x1e\xc2\x23\x95\x24\xdd\x87\x10\xcc\xf5\x3e\xe0\x2c\ +\x9d\x9c\x3a\xfe\x51\xda\x78\xfa\x20\x1f\xce\x05\x44\x73\x44\x0c\ +\xee\xc5\x54\x79\xd3\x05\x7a\xb9\x50\x91\x36\x7f\x5e\xdf\x23\x49\ +\xfc\xaa\x14\xf2\x3e\xe9\x9b\xa3\xd7\x47\x7f\xe8\x58\xc2\xe9\x8f\ +\x2a\x90\x2b\x9d\xaf\x55\x78\xf4\x9b\x5b\x48\x05\xbc\xef\x40\xa4\ +\x2a\xae\xe8\x15\x08\x5a\xf4\x18\x80\xb0\xaf\x3e\x9a\xbe\xf4\xa5\ +\x6f\xdd\xb3\x63\xfd\x9e\x6d\xe4\x99\xc2\x00\x25\xd4\x52\xd8\x54\ +\x87\x2c\x53\x5a\xb3\x0d\x76\x57\xa6\xd8\xbb\x7b\x23\xbd\xdc\xbc\ +\x53\x04\x0b\xb6\x90\x05\x59\x95\x3e\x89\x87\x43\x6f\x9f\xe7\xad\ +\xb9\xeb\x19\xdf\x38\xc2\xcd\x5e\x49\x12\x08\x9d\x0e\xbf\x3f\xf0\ +\x37\xce\x9d\x3e\xc4\x8f\x7f\x74\x7b\x7f\xae\x87\x8b\xdc\x77\x62\ +\x94\x55\x2d\x0c\x03\xa0\xdf\xdb\xff\xd8\xbd\x3b\xf2\x7b\x3e\xcd\ +\xab\xef\x81\x8f\x68\x73\x85\x1b\x46\xe1\xd6\x3d\xd0\xed\xc1\xdc\ +\xc5\x16\x7b\xea\x19\xfb\x6e\xbd\x9e\x5e\x16\xb8\xda\x56\x4d\x85\ +\x33\x33\xf0\xdc\xeb\x5b\xb9\xed\xb6\x71\x5a\xf1\x51\xa3\x75\xf8\ +\xea\x0f\xb7\xf2\xec\x77\x5f\xe0\xf0\xe1\x8f\x18\xa9\xd5\x91\x66\ +\x41\x9d\x10\x0c\xc0\xfc\x38\x2c\x06\x30\x3e\x56\xbd\x77\xc7\xdd\ +\x37\xf1\xe2\x3b\x40\x66\x25\x52\x81\x46\xaa\xcc\x5c\xc8\xe9\x76\ +\x85\x4e\x2b\x70\x6a\x76\x86\x6e\xa3\x49\x50\xae\xba\xa5\x89\x72\ +\xe6\x4c\x9b\x76\x03\xda\x2d\x90\xe8\xdc\xb9\x26\x4c\xec\x1c\x63\ +\xef\x5d\x3b\x78\xf7\xe8\x2c\xd5\xea\xfa\x02\x00\x0c\x51\x29\x2c\ +\xcd\x80\x38\xf1\x01\x47\xea\x20\xf8\x32\x03\x86\xb2\xdd\x86\x4e\ +\x57\xe9\x76\x20\xa9\x27\x54\xab\x09\x6b\x29\xf1\x0a\x78\x09\xa4\ +\x3e\x80\x40\x2f\x73\x04\x75\x03\x00\xe9\xa0\xc2\x14\xef\x02\x70\ +\xa5\x83\x01\x10\x8f\x13\x87\x4f\x04\x11\x5d\x46\xa1\x65\x00\x50\ +\x14\x8d\x0f\xb0\x85\xb8\xe8\x45\xb3\xad\x74\x3a\xd0\x6b\x07\xaa\ +\x1b\x52\xc6\xc6\x46\xc9\x83\x5e\x7e\x37\x0d\x3d\x0e\x1d\x99\xe1\ +\xd8\xe9\x75\x84\x1c\xf6\x6c\x6d\x72\xc7\x27\x26\xa9\x54\x52\xaa\ +\xb5\x1c\x89\x95\xad\x34\xca\x4a\xa3\x90\x24\x0e\xef\xbd\x55\x21\ +\x03\xb1\x1c\x80\x52\x4c\x98\xe3\x51\xf1\xf3\x16\x94\x76\x7b\xde\ +\xa0\xd7\x81\x4a\x9a\x32\x32\x92\x92\xe5\x97\x07\x90\x48\xce\x3f\ +\x4e\x8c\xf2\xcc\xef\x76\x41\x57\x79\x74\xff\x09\xee\xbf\xcb\x23\ +\x2e\x25\x4d\x93\x62\xc7\xb5\xa0\x45\x3f\x0a\x07\x7d\xe2\x48\xbc\ +\x8b\xd1\x37\x0a\x89\xb3\x35\x43\x65\x34\xa8\x21\x74\x0e\x9c\x3d\ +\x90\x56\x4b\x69\x77\x20\xeb\xea\xfc\x83\x63\xfa\x2f\x0f\x20\x75\ +\x09\xe2\x7a\xd0\x53\x00\x92\xf2\x5e\xef\x49\x13\xb7\xe0\x38\x62\ +\xef\x93\xe8\x4b\xe2\xdc\xe0\x5d\xc2\x30\x33\x5c\x14\xb1\x95\xd1\ +\xe8\x64\x1e\x86\x1f\x26\x18\xda\x66\x04\x90\x77\x75\x50\xdf\x2b\ +\x15\x8f\x64\x6b\x01\xe0\x71\x25\x27\xa4\x88\xea\xfc\xbd\x38\x4f\ +\x92\xfa\x21\xe7\x1c\x31\xe3\x14\xbe\x78\x97\x91\x38\xf3\x43\x82\ +\xe9\x64\x45\x0a\xe5\xc1\x68\x23\x25\x17\xc5\x32\xd0\x6a\x43\x18\ +\x54\x28\x5f\x6c\x52\xac\x01\x80\xf7\xf8\x52\xa5\x30\x18\x27\x49\ +\x01\x20\xf2\xdb\xa2\x8b\x05\x50\x81\x67\x9e\x0f\xf4\xb6\xd4\xd8\ +\x70\x8b\xd1\xcc\x00\xac\x40\x21\x8d\x4e\x6b\x18\xf4\xc6\xb7\x8c\ +\xbe\xf3\x05\x00\x72\xe6\x1d\x18\xd0\x00\x59\x1b\x00\xa7\x0e\xda\ +\x02\x30\x18\xa7\x15\x0f\x32\x4f\x21\x8f\x08\x98\xd9\x79\x47\x83\ +\x32\x53\xdf\xc0\xbe\xfb\x36\x30\x31\xaa\xe4\x19\xb8\xa5\x14\xd2\ +\xa5\x14\xca\x41\x18\x46\x2a\x51\xc4\x65\x06\xc8\x75\xc0\xe3\x6a\ +\x65\x6d\x1a\x70\x24\x6c\xbf\x36\xe7\xee\x3b\x2f\x02\x0c\xc6\xce\ +\x25\x83\x00\xf4\x6d\x58\xa0\x50\xfc\x89\x74\xde\xbc\x05\xb6\x6e\ +\x87\x6e\x53\x08\x6a\x41\x9d\xef\x43\x0e\xba\x5c\xc4\x31\x12\x6e\ +\x58\xcc\xaa\x45\x06\x9a\x2d\x10\x55\x7c\x92\x0c\xa2\xa8\xb2\x96\ +\x93\x66\x95\x87\x1f\x9c\xe0\xcb\x0f\x6a\xcc\xf2\x04\xe2\xab\x24\ +\xa9\x2b\x34\x20\x82\x49\x04\xc4\xce\x3a\x5c\x3b\x02\xbb\xc6\xa0\ +\x9b\x2a\x4e\x84\x56\x06\x17\xda\xf1\x08\xaf\x10\x96\x6b\xc0\x28\ +\x24\x60\x7c\x0b\x46\x21\xa7\x8a\x73\xd2\x37\xd7\x37\x65\x2d\x6d\ +\x62\x62\xdc\x0e\x7e\x0a\x21\x68\xf1\x6c\xef\x10\x86\xb3\x4e\xe4\ +\x77\x96\xc3\x67\xb7\x35\xf8\xca\xde\x39\x5a\xad\x0c\x27\x8e\x57\ +\xde\xaf\x73\xa1\xe5\x57\x16\x31\x6a\x22\x66\xa1\x8c\xda\x79\xa8\ +\xd9\x54\x1a\x7d\x4b\x45\x19\xa9\x40\xad\x92\x91\x88\x72\xb5\x2d\ +\xa9\xc0\x68\x75\x21\xea\x66\xa5\x2f\x0a\x1b\xc7\xab\x6c\x1a\x5f\ +\x47\x3e\xd2\xa5\xd1\x68\x01\x0a\x97\xd4\x40\x34\x27\xa0\x4b\x28\ +\x04\xd0\xcd\x21\x0b\xd0\x0b\x9e\x9f\xfe\x2a\xe1\x9a\xc9\x16\x59\ +\x86\xf1\x1d\xac\xc9\x2a\xba\xc0\x4e\xa3\xc7\xa7\x52\xf0\xbe\x3f\ +\x1e\xde\x44\x89\x0e\xce\x53\x15\x5c\xbf\xaf\x92\x85\x26\x79\x50\ +\x9c\xc3\xaa\x10\x4b\x34\x60\xa7\x3d\x33\x02\xd4\xd6\x7b\x6e\xfc\ +\xdc\xd8\x42\xb4\x0e\x77\x26\xf8\x67\x0b\xa3\x99\x23\x8a\x31\xce\ +\x11\xc7\x8b\x37\x45\xb0\x35\xb1\xb6\x27\x37\xc1\x9d\x63\x10\xb2\ +\xe1\xe3\x32\x91\xdf\xd6\x74\x40\x3b\x0d\xf6\x3e\x5d\xb6\x0f\x0c\ +\x53\xc8\x8e\x16\xe5\x8b\x53\x59\x40\x3f\x5e\x03\x6f\xce\x61\xe5\ +\x6d\xc9\x98\xe5\xd7\xc5\x0d\x5f\x93\xf8\x1e\x5b\x63\x7a\x04\xb0\ +\xe0\x86\xb8\xd1\x1a\xad\x55\x57\xc8\x80\xf3\xd0\x53\xd8\x35\x09\ +\x37\x6c\xb0\x07\x89\x58\x2f\x0c\x8f\x05\xe3\x86\xb3\x75\x36\x1f\ +\x3b\x9b\xb3\xdf\x10\x41\x00\xe7\xdb\x16\xf9\x10\xec\x3d\x1a\x01\ +\xa8\xea\x50\x06\xc2\xb2\x0c\xa8\x3d\x74\x53\x5d\x79\x60\xf3\x71\ +\x5c\x68\xa3\x08\x22\xf3\xe6\x70\xae\x18\x23\x71\x0e\x87\xb8\x72\ +\x2c\x88\x2b\x7b\x17\x29\xe4\x90\xb8\xd6\x95\xf7\x39\x37\x18\x4b\ +\xb4\x4a\x22\x1c\x39\x5f\xe3\x95\xa9\x0a\x4e\xac\xa4\x23\xc3\x5f\ +\xe4\x41\x2f\x71\x9c\x36\x94\x46\x83\x2c\x57\x7c\xf6\x31\x9b\x27\ +\xc6\x49\x6b\x63\x20\x1a\x69\x23\x0b\x20\xc4\x81\x17\x89\x7b\x87\ +\xe0\x88\x34\x2b\x1d\xf6\xa5\x0f\xe6\x2c\x10\x03\x00\x12\xe7\x43\ +\xaf\xc5\xbb\x17\x72\x3b\x4a\x5b\x74\x97\x01\x70\x52\xd0\x57\xc3\ +\xca\x1b\x59\x04\x60\x9a\xa8\x8d\x4e\x52\xed\x9b\x86\xf8\x95\xe6\ +\x30\xfe\x4a\x61\x5e\x2e\x39\xbf\xa6\xd6\xee\x76\xe8\xe5\x8a\x60\ +\x1a\x08\xcb\x34\xa0\xf3\x66\x7b\xd3\x6a\x14\x32\x00\x3a\x40\x8e\ +\xda\x37\xa8\x0f\xa0\xb2\x04\xec\x7c\xaf\xe5\xbc\x39\xaf\x26\xf2\ +\x55\x9b\x6a\x18\x38\x07\x31\xfb\x40\xae\xcb\x44\x5c\xe8\xc2\x19\ +\x00\x65\xb9\x88\x63\x14\x4d\x38\xe5\xe7\x9c\x94\xa0\x88\x62\x0d\ +\x10\x5c\x1c\x97\x11\x73\x10\xa7\x08\xd8\xbc\xc4\xac\x5c\xa2\x59\ +\xd5\x11\x03\x6b\x1c\x8f\xbf\x8d\x42\xab\x1c\xa7\x15\x2a\x2e\x02\ +\x08\x45\x06\x04\x4c\xf5\x21\xf6\xab\x80\x10\x57\x02\xb0\xf9\xbc\ +\xa4\x9f\xac\x9e\x81\x32\x78\x30\xbc\xd3\x6a\x28\x35\xa0\x45\x76\ +\xdd\x0a\x3b\x31\x6a\x1b\x99\xf1\x50\xb1\xf2\x17\x91\x63\x99\x50\ +\xc0\x1b\x88\x62\x6d\x19\x71\xac\xd9\x7c\x19\xe1\xe5\xfc\xce\x83\ +\x5a\x06\x22\x5d\x75\x71\xf4\x43\xb0\x2f\xc6\x15\x35\x80\xf1\xd7\ +\x89\xdd\x04\x5a\x7e\x29\x19\x2d\xb0\x4c\x88\x65\xa2\x88\xf6\xe0\ +\xb7\x1d\x49\x82\x1a\x20\x29\x69\xe2\x96\x55\x98\xb8\xdf\x58\xb6\ +\x8d\x22\x71\x1c\xd4\x02\xec\x20\xac\xbc\x91\x99\xf8\x54\x25\x46\ +\x45\x71\xce\xf4\x11\xb0\xc3\xd4\x72\x4d\xd8\x1a\x00\x62\xc4\x88\ +\xeb\x3c\x10\xb0\x79\x6b\x45\x06\x9c\x60\xeb\x43\xd1\xdb\x29\x21\ +\xd2\xcc\x18\x82\x22\x2b\x7f\x13\x7b\x57\x44\xc5\x28\x54\x18\x98\ +\x80\x9c\x5b\x19\x84\x2e\xd6\x80\x09\x9b\x82\x19\x96\x09\x35\x4d\ +\xc4\xe8\x2a\x56\x7a\x87\x0f\x6b\x8a\xed\x03\x89\x40\xea\xb1\x33\ +\xc8\x4a\x1b\x19\x02\xaa\xa6\x01\x43\x6d\xe5\x33\xb0\x32\x08\x82\ +\xed\x09\x6a\xc2\x2e\x9d\x37\x0a\x9a\xb0\x23\x85\x14\x00\x11\x63\ +\x43\x45\x7a\x40\xe8\xf7\x6d\xea\xd5\xc0\xba\xaa\x52\x19\x81\x86\ +\xc2\xb1\x23\x17\x60\xf6\xe2\xc9\x21\x0a\xe5\x5a\x02\xb0\xb4\x21\ +\x3a\x9c\x81\xc5\x20\x74\x15\x61\x0b\x50\x8a\x39\x98\xf8\x70\xa0\ +\x45\x07\xa1\xe4\xb3\x92\xc7\x8d\xcc\x3b\xdb\xbd\x9f\xfd\xd3\x0c\ +\x6f\x25\xa7\xe8\x75\x32\x54\x2b\x9c\x68\xf5\x68\x4b\x8b\xf7\x8e\ +\xcd\x72\xf8\xb9\x57\x20\x6f\x1d\xc0\x28\x64\xd1\x22\x8a\x68\x25\ +\x0a\xc1\x62\x2d\x2c\xd7\x84\x62\xd1\x46\x6d\xed\xe2\x52\xeb\x2c\ +\x23\xb1\x44\x86\x72\x1f\x30\x90\x22\x1c\x3c\xf0\xc6\xf9\x83\x07\ +\x8e\x34\x58\xc0\xa4\x80\x7a\xb4\xf7\x1e\x64\x3f\x81\xe4\x05\x2c\ +\x03\x42\xae\xca\xfb\x53\x27\x98\x6b\x34\xd8\xb7\x73\x37\x20\xe5\ +\x3e\x60\x14\x92\xe8\x98\x46\xd1\xea\xca\x9a\xf0\x80\x9a\x26\x50\ +\x93\x04\xaa\x20\xc5\xfd\xa6\x01\xb5\x0c\xb0\x50\x61\x3a\x8f\x03\ +\xcf\x01\x75\x30\x51\x83\x74\xc0\x67\x30\x5c\x85\x24\x04\xe8\x4c\ +\xbf\x4d\x6b\xe6\x2c\xf9\xd6\xed\x28\x0e\x19\x3a\xfa\x46\x87\x17\ +\x8f\x31\x70\x5c\x42\x13\x16\x71\x0c\x8d\xd8\xfd\x01\x25\x37\xed\ +\x40\x3c\xef\x83\xeb\xc4\x99\x06\xab\xb4\x84\xc8\x21\x15\xf8\xd4\ +\x9d\x5f\x20\x64\x39\x89\x3a\xf2\x3c\x47\x5c\xac\x4a\x56\x9f\x11\ +\xb5\x7d\x01\x35\xea\x40\x14\xac\x62\x6b\x25\xf6\x98\xb0\x8b\xdf\ +\x96\x11\x82\x12\x72\x8d\xef\xb2\x7d\x68\x2d\xcd\x00\x64\xdd\xa3\ +\x1f\xbe\x7b\xf6\xba\x7c\xdf\x1e\xd6\xe1\x09\xad\x9c\x5a\x1a\xa8\ +\x4a\x17\x2f\x19\xce\xe5\x84\xc8\x03\x2d\xab\x94\x13\x94\x62\x8c\ +\x9a\x73\xaa\x71\xde\x36\x2e\x3b\x76\x0f\x7e\x47\x93\xc2\xba\x69\ +\x4e\x25\x55\xaa\x15\x48\xab\x70\xf2\x78\x60\xee\xe4\xd9\x1c\xdc\ +\xf4\xda\x01\x10\x9e\xfa\xe0\xd7\x7f\xfc\xfc\xab\x49\x2a\xd7\x7e\ +\xf2\x3a\x5c\x1e\x68\x9e\xdd\xc9\xc1\x13\x6d\x90\x93\x58\x93\x28\ +\x36\xc1\xbe\xae\x5c\xbc\x24\x46\x37\x71\x71\x2c\xf1\x52\x79\x5d\ +\x6c\xce\x95\xeb\x6b\xfc\xab\x51\xe5\x22\x4a\x73\xae\xcd\x1b\xbf\ +\x78\x8d\xec\xe4\xfb\x2f\x43\xfa\xfa\x15\x00\xf0\x2f\x85\x8b\xb3\ +\x0f\x4d\xfd\xfc\x85\x6f\x4f\xd5\xc7\x77\x23\xe8\xeb\x9a\x98\x6a\ +\x57\x6d\x0a\x5c\xcd\x12\xc5\x82\xa2\xe0\xd4\xd1\xe9\x34\xe8\x7e\ +\xfc\x07\x48\x9e\x04\x74\xcd\x00\x54\x9f\x00\xf8\xcd\xbc\xfd\xff\ +\xbf\x55\xfe\xcb\xed\xdf\x99\xd5\xe1\x33\x6b\x2f\x52\xdc\x00\x00\ +\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ +\x00\x00\x04\x44\ \x89\ \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ \x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ \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\x12\x00\x00\ \x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xd2\x02\x01\x0b\x00\x03\xc4\x02\x9d\xda\x00\x00\x02\x03\x49\x44\ -\x41\x54\x78\xda\xbd\x95\xbf\xab\xda\x50\x14\xc7\x3f\x79\x7d\x2d\ -\x0a\xa5\x94\x82\x98\x74\x2b\x05\x41\xfa\x63\x08\x8a\xbc\xff\xc1\ -\xff\xc1\x31\x05\x41\xb2\xb9\x14\xb4\x0e\xdd\x8a\x6e\x25\x20\xd4\ -\xd1\xcd\x41\xe7\x2e\x19\x44\x04\x47\xfd\x0b\x1e\xa8\x9b\xa0\x49\ -\x90\x36\xb7\x4b\xae\xcd\x8b\xfa\x12\x2d\xf4\xc0\x81\x5c\xc8\x3d\ -\x9f\x73\xee\xf7\xdc\x73\xe1\x3f\xd9\x17\x40\x5c\xe8\x9f\x81\xa7\ -\x80\x92\x04\x20\x46\xa3\x91\xf0\x3c\x2f\xd6\x1d\xc7\x11\xb6\x6d\ -\x4b\xc8\xab\x00\x72\xd6\x24\x5d\x78\x9e\xc7\x66\xb3\x49\x5c\x72\ -\x36\x9b\x05\x78\x0b\xac\x81\x5d\x00\x3c\xb2\xdb\xf0\x62\x30\x18\ -\xb0\x5e\xaf\x01\x48\xa5\x52\x54\x2a\x15\xa6\xd3\x29\xb3\xd9\x0c\ -\xc3\x30\xb0\x2c\x0b\x5d\xd7\x29\x16\x8b\x72\x4b\x2a\x88\xa1\x9c\ -\x03\x5c\x54\x81\x10\x7f\x63\xa8\xaa\x0a\xf0\x11\xb8\x07\x36\x80\ -\x7f\x6a\xcb\x03\x40\xb5\x5a\xc5\x75\x5d\xda\xed\x36\xad\x56\x8b\ -\x6c\x36\x8b\xae\xeb\x14\x0a\x05\x19\xf0\x12\x33\x80\x1f\x84\x00\ -\x62\xb5\x5a\x9d\x74\x40\x0c\x87\x43\x91\xd4\xe6\xf3\xf9\xa1\x09\ -\xce\x6a\x20\xcf\x5c\x1e\x4b\xb9\x5c\x4e\x9c\x7a\x3e\x9f\x97\x9f\ -\x2f\x63\x35\x10\x42\xa0\xaa\x2a\x42\x08\xfa\xfd\x3e\xcb\xe5\x12\ -\x80\x74\x3a\x8d\x61\x18\x8c\xc7\x63\x26\x93\x09\xa6\x69\xd2\xe9\ -\x74\x28\x95\x4a\xdc\xdd\xdd\xa1\x28\x0a\xc0\xbb\x93\x1a\x00\x07\ -\x1d\x32\x99\x0c\xcd\x66\xf3\x81\xc0\x49\x2c\x00\x7c\x88\xad\xc0\ -\xf7\x7d\x34\x4d\x43\x08\x41\xad\x56\xc3\x71\x1c\xba\xdd\x2e\xf5\ -\x7a\x1d\x4d\xd3\x0e\x19\x87\x2b\x39\x0b\xe8\xf5\x7a\x27\x35\x68\ -\x34\x1a\xd7\x56\xf0\xfe\x00\xd8\xed\x76\x6c\xb7\xdb\xc4\x1a\xc8\ -\x33\x07\x0e\x55\x58\x96\x85\xeb\xba\x98\xa6\x79\x0c\xb0\x6d\x9b\ -\x5c\x2e\xf7\x28\xe0\x5f\x2a\xf8\x04\x7c\x8f\xbb\xc5\x52\x03\x20\ -\x56\x87\x28\xe0\x16\x78\x0e\xbc\x00\x9e\x05\x23\x44\xfa\x6b\xe0\ -\xe7\xb5\x5d\x24\x2f\xda\x6f\x60\x0b\xec\x81\x9b\xd0\x8c\x52\x80\ -\x95\xdc\x74\x89\x06\xd1\x59\x14\x1d\x7e\xe1\xb5\x02\xfc\xba\x56\ -\x83\x9b\xe8\x51\x47\xdc\x97\x53\x72\xb1\x58\x24\x0e\x1e\xfa\xd7\ -\x4f\x94\x0c\xf0\xf5\x8a\x27\xf5\x1b\xf0\x46\x49\x98\xd4\x63\x4d\ -\xa0\x44\xdf\x96\xc0\xf7\xc0\x26\x29\x40\x01\x9e\x04\xc1\xa3\x4d\ -\x70\x2a\x86\x08\x1a\x67\xaf\x5c\xf8\x88\xc4\x35\xc5\x91\x9e\x7f\ -\x00\xb7\xae\x9e\x43\x7d\xb2\x82\x67\x00\x00\x00\x00\x49\x45\x4e\ -\x44\xae\x42\x60\x82\ -\x00\x00\x0b\x74\ -\x6f\ -\x70\x65\x6e\x46\x69\x6c\x65\x3d\x4f\x70\x65\x6e\x0d\x0a\x6f\x70\ -\x65\x6e\x46\x69\x6c\x65\x44\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\ -\x6e\x20\x69\x6d\x61\x67\x65\x20\x6f\x72\x20\x6c\x61\x62\x65\x6c\ -\x20\x66\x69\x6c\x65\x0d\x0a\x71\x75\x69\x74\x3d\x51\x75\x69\x74\ -\x0d\x0a\x71\x75\x69\x74\x41\x70\x70\x3d\x51\x75\x69\x74\x20\x61\ -\x70\x70\x6c\x69\x63\x61\x74\x69\x6f\x6e\x0d\x0a\x6f\x70\x65\x6e\ -\x44\x69\x72\x3d\x4f\x70\x65\x6e\x20\x44\x69\x72\x0d\x0a\x63\x6f\ -\x70\x79\x50\x72\x65\x76\x42\x6f\x75\x6e\x64\x69\x6e\x67\x3d\x43\ -\x6f\x70\x79\x20\x70\x72\x65\x76\x69\x6f\x75\x73\x20\x42\x6f\x75\ -\x6e\x64\x69\x6e\x67\x20\x42\x6f\x78\x65\x73\x20\x69\x6e\x20\x74\ -\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\x6d\x61\x67\x65\ -\x20\x0d\x0a\x63\x68\x61\x6e\x67\x65\x53\x61\x76\x65\x64\x41\x6e\ -\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x44\x69\x72\x3d\x43\x68\x61\x6e\ -\x67\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x73\x61\x76\x65\x64\ -\x20\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x20\x64\x69\x72\x0d\ -\x0a\x6f\x70\x65\x6e\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x3d\ -\x4f\x70\x65\x6e\x20\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x0d\ -\x0a\x6f\x70\x65\x6e\x41\x6e\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x44\ -\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\x6e\x20\x61\x6e\x20\x61\x6e\ -\x6e\x6f\x74\x61\x74\x69\x6f\x6e\x20\x66\x69\x6c\x65\x0d\x0a\x63\ -\x68\x61\x6e\x67\x65\x53\x61\x76\x65\x44\x69\x72\x3d\x43\x68\x61\ -\x6e\x67\x65\x20\x53\x61\x76\x65\x20\x44\x69\x72\x0d\x0a\x6e\x65\ -\x78\x74\x49\x6d\x67\x3d\x4e\x65\x78\x74\x20\x49\x6d\x61\x67\x65\ -\x0d\x0a\x6e\x65\x78\x74\x49\x6d\x67\x44\x65\x74\x61\x69\x6c\x3d\ -\x4f\x70\x65\x6e\x20\x74\x68\x65\x20\x6e\x65\x78\x74\x20\x49\x6d\ -\x61\x67\x65\x0d\x0a\x70\x72\x65\x76\x49\x6d\x67\x3d\x50\x72\x65\ -\x76\x20\x49\x6d\x61\x67\x65\x0d\x0a\x70\x72\x65\x76\x49\x6d\x67\ -\x44\x65\x74\x61\x69\x6c\x3d\x4f\x70\x65\x6e\x20\x74\x68\x65\x20\ -\x70\x72\x65\x76\x69\x6f\x75\x73\x20\x49\x6d\x61\x67\x65\x0d\x0a\ -\x76\x65\x72\x69\x66\x79\x49\x6d\x67\x3d\x56\x65\x72\x69\x66\x79\ -\x20\x49\x6d\x61\x67\x65\x0d\x0a\x76\x65\x72\x69\x66\x79\x49\x6d\ -\x67\x44\x65\x74\x61\x69\x6c\x3d\x56\x65\x72\x69\x66\x79\x20\x49\ -\x6d\x61\x67\x65\x0d\x0a\x73\x61\x76\x65\x3d\x43\x68\x65\x63\x6b\ -\x0d\x0a\x73\x61\x76\x65\x44\x65\x74\x61\x69\x6c\x3d\x53\x61\x76\ -\x65\x20\x74\x68\x65\x20\x6c\x61\x62\x65\x6c\x73\x20\x74\x6f\x20\ -\x61\x20\x66\x69\x6c\x65\x0d\x0a\x63\x68\x61\x6e\x67\x65\x53\x61\ -\x76\x65\x46\x6f\x72\x6d\x61\x74\x3d\x43\x68\x61\x6e\x67\x65\x20\ -\x73\x61\x76\x65\x20\x66\x6f\x72\x6d\x61\x74\x0d\x0a\x73\x61\x76\ -\x65\x41\x73\x3d\x53\x61\x76\x65\x20\x41\x73\x0d\x0a\x73\x61\x76\ -\x65\x41\x73\x44\x65\x74\x61\x69\x6c\x3d\x53\x61\x76\x65\x20\x74\ -\x68\x65\x20\x6c\x61\x62\x65\x6c\x73\x20\x74\x6f\x20\x61\x20\x64\ -\x69\x66\x66\x65\x72\x65\x6e\x74\x20\x66\x69\x6c\x65\x0d\x0a\x63\ -\x6c\x6f\x73\x65\x43\x75\x72\x3d\x43\x6c\x6f\x73\x65\x0d\x0a\x63\ -\x6c\x6f\x73\x65\x43\x75\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\x6c\ -\x6f\x73\x65\x20\x74\x68\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\ -\x66\x69\x6c\x65\x0d\x0a\x64\x65\x6c\x65\x74\x65\x49\x6d\x67\x3d\ -\x44\x65\x6c\x65\x74\x65\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\ -\x6d\x61\x67\x65\x0d\x0a\x64\x65\x6c\x65\x74\x65\x49\x6d\x67\x44\ -\x65\x74\x61\x69\x6c\x3d\x44\x65\x6c\x65\x74\x65\x20\x74\x68\x65\ -\x20\x63\x75\x72\x72\x65\x6e\x74\x20\x69\x6d\x61\x67\x65\x0d\x0a\ -\x72\x65\x73\x65\x74\x41\x6c\x6c\x3d\x52\x65\x73\x65\x74\x20\x49\ -\x6e\x74\x65\x72\x66\x61\x63\x65\x20\x61\x6e\x64\x20\x53\x61\x76\ -\x65\x20\x44\x69\x72\x0d\x0a\x72\x65\x73\x65\x74\x41\x6c\x6c\x44\ -\x65\x74\x61\x69\x6c\x3d\x52\x65\x73\x65\x74\x20\x41\x6c\x6c\x0d\ -\x0a\x62\x6f\x78\x4c\x69\x6e\x65\x43\x6f\x6c\x6f\x72\x3d\x42\x6f\ -\x78\x20\x4c\x69\x6e\x65\x20\x43\x6f\x6c\x6f\x72\x0d\x0a\x62\x6f\ -\x78\x4c\x69\x6e\x65\x43\x6f\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\ -\x3d\x43\x68\x6f\x6f\x73\x65\x20\x42\x6f\x78\x20\x6c\x69\x6e\x65\ -\x20\x63\x6f\x6c\x6f\x72\x0d\x0a\x63\x72\x74\x42\x6f\x78\x3d\x43\ -\x72\x65\x61\x74\x65\x20\x52\x65\x63\x74\x42\x6f\x78\x0d\x0a\x63\ -\x72\x74\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\x44\x72\x61\x77\ -\x20\x61\x20\x6e\x65\x77\x20\x62\x6f\x78\x0d\x0a\x64\x65\x6c\x42\ -\x6f\x78\x3d\x44\x65\x6c\x65\x74\x65\x20\x52\x65\x63\x74\x42\x6f\ -\x78\x0d\x0a\x64\x65\x6c\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\ -\x52\x65\x6d\x6f\x76\x65\x20\x74\x68\x65\x20\x62\x6f\x78\x0d\x0a\ -\x64\x75\x70\x42\x6f\x78\x3d\x44\x75\x70\x6c\x69\x63\x61\x74\x65\ -\x20\x52\x65\x63\x74\x42\x6f\x78\x0d\x0a\x64\x75\x70\x42\x6f\x78\ -\x44\x65\x74\x61\x69\x6c\x3d\x43\x72\x65\x61\x74\x65\x20\x61\x20\ -\x64\x75\x70\x6c\x69\x63\x61\x74\x65\x20\x6f\x66\x20\x74\x68\x65\ -\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x62\x6f\x78\x0d\x0a\x74\ -\x75\x74\x6f\x72\x69\x61\x6c\x3d\x50\x61\x64\x64\x6c\x65\x4f\x43\ -\x52\x20\x75\x72\x6c\x0d\x0a\x74\x75\x74\x6f\x72\x69\x61\x6c\x44\ -\x65\x74\x61\x69\x6c\x3d\x53\x68\x6f\x77\x20\x64\x65\x6d\x6f\x0d\ -\x0a\x69\x6e\x66\x6f\x3d\x49\x6e\x66\x6f\x72\x6d\x61\x74\x69\x6f\ -\x6e\x0d\x0a\x7a\x6f\x6f\x6d\x69\x6e\x3d\x5a\x6f\x6f\x6d\x20\x49\ -\x6e\x0d\x0a\x7a\x6f\x6f\x6d\x69\x6e\x44\x65\x74\x61\x69\x6c\x3d\ -\x49\x6e\x63\x72\x65\x61\x73\x65\x20\x7a\x6f\x6f\x6d\x20\x6c\x65\ -\x76\x65\x6c\x0d\x0a\x7a\x6f\x6f\x6d\x6f\x75\x74\x3d\x5a\x6f\x6f\ -\x6d\x20\x4f\x75\x74\x0d\x0a\x7a\x6f\x6f\x6d\x6f\x75\x74\x44\x65\ -\x74\x61\x69\x6c\x3d\x44\x65\x63\x72\x65\x61\x73\x65\x20\x7a\x6f\ -\x6f\x6d\x20\x6c\x65\x76\x65\x6c\x0d\x0a\x6f\x72\x69\x67\x69\x6e\ -\x61\x6c\x73\x69\x7a\x65\x3d\x4f\x72\x69\x67\x69\x6e\x61\x6c\x20\ -\x73\x69\x7a\x65\x0d\x0a\x6f\x72\x69\x67\x69\x6e\x61\x6c\x73\x69\ -\x7a\x65\x44\x65\x74\x61\x69\x6c\x3d\x5a\x6f\x6f\x6d\x20\x74\x6f\ -\x20\x6f\x72\x69\x67\x69\x6e\x61\x6c\x20\x73\x69\x7a\x65\x0d\x0a\ -\x66\x69\x74\x57\x69\x6e\x3d\x46\x69\x74\x20\x57\x69\x6e\x64\x6f\ -\x77\x0d\x0a\x66\x69\x74\x57\x69\x6e\x44\x65\x74\x61\x69\x6c\x3d\ -\x5a\x6f\x6f\x6d\x20\x66\x6f\x6c\x6c\x6f\x77\x73\x20\x77\x69\x6e\ -\x64\x6f\x77\x20\x73\x69\x7a\x65\x0d\x0a\x66\x69\x74\x57\x69\x64\ -\x74\x68\x3d\x46\x69\x74\x20\x57\x69\x64\x74\x68\x0d\x0a\x66\x69\ -\x74\x57\x69\x64\x74\x68\x44\x65\x74\x61\x69\x6c\x3d\x5a\x6f\x6f\ -\x6d\x20\x66\x6f\x6c\x6c\x6f\x77\x73\x20\x77\x69\x6e\x64\x6f\x77\ -\x20\x77\x69\x64\x74\x68\x0d\x0a\x65\x64\x69\x74\x4c\x61\x62\x65\ -\x6c\x3d\x45\x64\x69\x74\x20\x4c\x61\x62\x65\x6c\x0d\x0a\x65\x64\ -\x69\x74\x4c\x61\x62\x65\x6c\x44\x65\x74\x61\x69\x6c\x3d\x4d\x6f\ -\x64\x69\x66\x79\x20\x74\x68\x65\x20\x6c\x61\x62\x65\x6c\x20\x6f\ -\x66\x20\x74\x68\x65\x20\x73\x65\x6c\x65\x63\x74\x65\x64\x20\x42\ -\x6f\x78\x0d\x0a\x73\x68\x61\x70\x65\x4c\x69\x6e\x65\x43\x6f\x6c\ -\x6f\x72\x3d\x53\x68\x61\x70\x65\x20\x4c\x69\x6e\x65\x20\x43\x6f\ -\x6c\x6f\x72\x0d\x0a\x73\x68\x61\x70\x65\x4c\x69\x6e\x65\x43\x6f\ -\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\x68\x61\x6e\x67\x65\ -\x20\x74\x68\x65\x20\x6c\x69\x6e\x65\x20\x63\x6f\x6c\x6f\x72\x20\ -\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x73\x70\x65\x63\x69\x66\x69\ -\x63\x20\x73\x68\x61\x70\x65\x0d\x0a\x73\x68\x61\x70\x65\x46\x69\ -\x6c\x6c\x43\x6f\x6c\x6f\x72\x3d\x53\x68\x61\x70\x65\x20\x46\x69\ -\x6c\x6c\x20\x43\x6f\x6c\x6f\x72\x0d\x0a\x73\x68\x61\x70\x65\x46\ -\x69\x6c\x6c\x43\x6f\x6c\x6f\x72\x44\x65\x74\x61\x69\x6c\x3d\x43\ -\x68\x61\x6e\x67\x65\x20\x74\x68\x65\x20\x66\x69\x6c\x6c\x20\x63\ -\x6f\x6c\x6f\x72\x20\x66\x6f\x72\x20\x74\x68\x69\x73\x20\x73\x70\ -\x65\x63\x69\x66\x69\x63\x20\x73\x68\x61\x70\x65\x0d\x0a\x73\x68\ -\x6f\x77\x48\x69\x64\x65\x3d\x53\x68\x6f\x77\x2f\x48\x69\x64\x65\ -\x20\x4c\x61\x62\x65\x6c\x20\x50\x61\x6e\x65\x6c\x0d\x0a\x75\x73\ -\x65\x44\x65\x66\x61\x75\x6c\x74\x4c\x61\x62\x65\x6c\x3d\x55\x73\ -\x65\x20\x64\x65\x66\x61\x75\x6c\x74\x20\x6c\x61\x62\x65\x6c\x0d\ -\x0a\x75\x73\x65\x44\x69\x66\x66\x69\x63\x75\x6c\x74\x3d\x44\x69\ -\x66\x66\x69\x63\x75\x6c\x74\x0d\x0a\x62\x6f\x78\x4c\x61\x62\x65\ -\x6c\x54\x65\x78\x74\x3d\x42\x6f\x78\x20\x4c\x61\x62\x65\x6c\x73\ -\x0d\x0a\x6c\x61\x62\x65\x6c\x73\x3d\x4c\x61\x62\x65\x6c\x73\x0d\ -\x0a\x61\x75\x74\x6f\x53\x61\x76\x65\x4d\x6f\x64\x65\x3d\x41\x75\ -\x74\x6f\x20\x53\x61\x76\x65\x20\x6d\x6f\x64\x65\x0d\x0a\x73\x69\ -\x6e\x67\x6c\x65\x43\x6c\x73\x4d\x6f\x64\x65\x3d\x53\x69\x6e\x67\ -\x6c\x65\x20\x43\x6c\x61\x73\x73\x20\x4d\x6f\x64\x65\x0d\x0a\x64\ -\x69\x73\x70\x6c\x61\x79\x4c\x61\x62\x65\x6c\x3d\x44\x69\x73\x70\ -\x6c\x61\x79\x20\x4c\x61\x62\x65\x6c\x73\x0d\x0a\x66\x69\x6c\x65\ -\x4c\x69\x73\x74\x3d\x46\x69\x6c\x65\x20\x4c\x69\x73\x74\x0d\x0a\ -\x66\x69\x6c\x65\x73\x3d\x46\x69\x6c\x65\x73\x0d\x0a\x61\x64\x76\ -\x61\x6e\x63\x65\x64\x4d\x6f\x64\x65\x3d\x41\x64\x76\x61\x6e\x63\ -\x65\x64\x20\x4d\x6f\x64\x65\x0d\x0a\x61\x64\x76\x61\x6e\x63\x65\ -\x64\x4d\x6f\x64\x65\x44\x65\x74\x61\x69\x6c\x3d\x53\x77\x74\x69\ -\x63\x68\x20\x74\x6f\x20\x61\x64\x76\x61\x6e\x63\x65\x64\x20\x6d\ -\x6f\x64\x65\x0d\x0a\x73\x68\x6f\x77\x41\x6c\x6c\x42\x6f\x78\x44\ -\x65\x74\x61\x69\x6c\x3d\x53\x68\x6f\x77\x20\x61\x6c\x6c\x20\x62\ -\x6f\x75\x6e\x64\x69\x6e\x67\x20\x62\x6f\x78\x65\x73\x0d\x0a\x68\ -\x69\x64\x65\x41\x6c\x6c\x42\x6f\x78\x44\x65\x74\x61\x69\x6c\x3d\ -\x48\x69\x64\x65\x20\x61\x6c\x6c\x20\x62\x6f\x75\x6e\x64\x69\x6e\ -\x67\x20\x62\x6f\x78\x65\x73\x0d\x0a\x61\x6e\x6e\x6f\x50\x61\x6e\ -\x65\x6c\x3d\x61\x6e\x6e\x6f\x20\x50\x61\x6e\x65\x6c\x0d\x0a\x61\ -\x6e\x6e\x6f\x3d\x61\x6e\x6e\x6f\x0d\x0a\x61\x64\x64\x4e\x65\x77\ -\x42\x62\x6f\x78\x3d\x6e\x65\x77\x20\x62\x62\x6f\x78\x0d\x0a\x72\ -\x65\x4c\x61\x62\x65\x6c\x3d\x72\x65\x4c\x61\x62\x65\x6c\x0d\x0a\ -\x63\x68\x6f\x6f\x73\x65\x6d\x6f\x64\x65\x6c\x3d\x43\x68\x6f\x6f\ -\x73\x65\x20\x4f\x43\x52\x20\x6d\x6f\x64\x65\x6c\x0d\x0a\x74\x69\ -\x70\x63\x68\x6f\x6f\x73\x65\x6d\x6f\x64\x65\x6c\x3d\x43\x68\x6f\ -\x6f\x73\x65\x20\x4f\x43\x52\x20\x6d\x6f\x64\x65\x6c\x20\x66\x72\ -\x6f\x6d\x20\x64\x69\x72\x0d\x0a\x49\x6d\x61\x67\x65\x52\x65\x73\ -\x69\x7a\x65\x3d\x49\x6d\x61\x67\x65\x20\x52\x65\x73\x69\x7a\x65\ -\x0d\x0a\x49\x52\x3d\x49\x6d\x61\x67\x65\x20\x52\x65\x73\x69\x7a\ -\x65\x0d\x0a\x61\x75\x74\x6f\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\ -\x6f\x6e\x3d\x41\x75\x74\x6f\x20\x52\x65\x63\x6f\x67\x6e\x69\x74\ -\x69\x6f\x6e\x0d\x0a\x72\x65\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\ -\x6f\x6e\x3d\x52\x65\x2d\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\ -\x6e\x0d\x0a\x6d\x66\x69\x6c\x65\x3d\x46\x69\x6c\x65\x0d\x0a\x6d\ -\x65\x64\x69\x74\x3d\x45\x69\x64\x74\x0d\x0a\x6d\x76\x69\x65\x77\ -\x3d\x56\x69\x65\x77\x0d\x0a\x6d\x68\x65\x6c\x70\x3d\x48\x65\x6c\ -\x70\x0d\x0a\x69\x63\x6f\x6e\x4c\x69\x73\x74\x3d\x49\x63\x6f\x6e\ -\x20\x4c\x69\x73\x74\x0d\x0a\x64\x65\x74\x65\x63\x74\x69\x6f\x6e\ -\x42\x6f\x78\x70\x6f\x73\x69\x74\x69\x6f\x6e\x3d\x44\x65\x74\x65\ -\x63\x74\x69\x6f\x6e\x20\x62\x6f\x78\x20\x70\x6f\x73\x69\x74\x69\ -\x6f\x6e\x0d\x0a\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x52\ -\x65\x73\x75\x6c\x74\x3d\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\ -\x6e\x20\x72\x65\x73\x75\x6c\x74\x0d\x0a\x63\x72\x65\x61\x74\x50\ -\x6f\x6c\x79\x67\x6f\x6e\x3d\x43\x72\x65\x61\x74\x65\x20\x51\x75\ -\x61\x64\x72\x69\x6c\x61\x74\x65\x72\x61\x6c\x0d\x0a\x64\x72\x61\ -\x77\x53\x71\x75\x61\x72\x65\x73\x3d\x44\x72\x61\x77\x20\x53\x71\ -\x75\x61\x72\x65\x73\x0d\x0a\x73\x61\x76\x65\x52\x65\x63\x3d\x53\ -\x61\x76\x65\x20\x52\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x20\ -\x52\x65\x73\x75\x6c\x74\x0d\x0a\x74\x65\x6d\x70\x4c\x61\x62\x65\ -\x6c\x3d\x54\x45\x4d\x50\x4f\x52\x41\x52\x59\x0d\x0a\x73\x74\x65\ -\x70\x73\x3d\x53\x74\x65\x70\x73\x0d\x0a\x63\x68\x6f\x73\x65\x4d\ -\x6f\x64\x65\x6c\x4c\x67\x3d\x43\x68\x6f\x6f\x73\x65\x20\x4d\x6f\ -\x64\x65\x6c\x20\x4c\x61\x6e\x67\x75\x61\x67\x65\x0d\x0a\x63\x61\ -\x6e\x63\x65\x6c\x3d\x43\x61\x6e\x63\x65\x6c\x0d\x0a\x6f\x6b\x3d\ -\x4f\x4b\x0d\x0a\x61\x75\x74\x6f\x6c\x61\x62\x65\x6c\x69\x6e\x67\ -\x3d\x41\x75\x74\x6f\x6d\x61\x74\x69\x63\x20\x4c\x61\x62\x65\x6c\ -\x69\x6e\x67\x0d\x0a\x68\x69\x64\x65\x42\x6f\x78\x3d\x48\x69\x64\ -\x65\x20\x41\x6c\x6c\x20\x42\x6f\x78\x0d\x0a\x73\x68\x6f\x77\x42\ -\x6f\x78\x3d\x53\x68\x6f\x77\x20\x41\x6c\x6c\x20\x42\x6f\x78\x0d\ -\x0a\x73\x61\x76\x65\x4c\x61\x62\x65\x6c\x3d\x53\x61\x76\x65\x20\ -\x4c\x61\x62\x65\x6c\x0d\x0a\x73\x69\x6e\x67\x6c\x65\x52\x65\x3d\ -\x52\x65\x2d\x72\x65\x63\x6f\x67\x6e\x69\x74\x69\x6f\x6e\x20\x52\ -\x65\x63\x74\x42\x6f\x78\x0d\x0a\x6c\x61\x62\x65\x6c\x44\x69\x61\ -\x6c\x6f\x67\x4f\x70\x74\x69\x6f\x6e\x3d\x50\x6f\x70\x2d\x75\x70\ -\x20\x4c\x61\x62\x65\x6c\x20\x49\x6e\x70\x75\x74\x20\x44\x69\x61\ -\x6c\x6f\x67\ -\x00\x00\x04\xa3\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xd6\xd8\xd4\x4f\x58\x32\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x04\x35\x49\x44\x41\x54\x58\xc3\xe5\ -\x97\xcd\x8f\x54\x45\x14\xc5\x7f\xb7\xea\xd6\x7b\xaf\xdb\x6e\xc7\ -\xf9\x40\x9d\x89\x46\x4d\x34\x99\x44\x8d\x1a\x48\x98\xc4\x8c\x1f\ -\x1b\xfe\x02\x4c\x5c\xf1\x07\x18\x16\x2e\x4d\x5c\x6b\x58\xc3\x8e\ -\xc4\x8d\x1b\x17\xce\x82\x68\x74\x41\x5c\x18\x0d\xe2\xc4\xc6\x00\ -\x3d\x60\x50\x51\x19\x60\x02\xa2\x0e\x0c\x83\xd3\xfd\x5e\xf7\x94\ -\x8b\xaa\xee\xf9\x60\xe6\x0d\x84\x51\x16\x56\x52\xa9\xce\x7b\xb7\ -\xeb\x9e\x3a\xf7\xd4\xa9\x7a\xea\xbd\xe7\x7e\x36\xe5\x3e\xb7\x3e\ -\x80\x5d\xbb\x76\xbd\x03\xec\xfd\x8f\xf2\x4e\x35\x1a\x8d\x03\xeb\ -\x19\xd8\xbb\xef\xbd\xa3\x3b\x1f\x1f\x76\x00\x9c\x3c\x3a\xcf\xcc\ -\x97\x37\x58\x9c\xef\xdc\x53\xa6\xda\xa0\xf2\xdc\x6b\x03\xbc\xb8\ -\x67\x10\x80\x8b\x7f\x16\x7c\xf8\xee\x1e\x80\xdb\x00\x70\xfc\xec\ -\x1c\xdf\x3f\x30\x04\x78\x2e\xfd\xb8\xc0\xfe\xb7\xce\x6f\xcb\x72\ -\x0f\x1d\x79\x9a\x0b\x23\x96\xd3\x9f\x1f\x64\xfc\xd5\x7d\x9b\x6b\ -\x40\x45\xb0\x16\x40\x78\x70\x2c\x23\xcb\xb2\x6d\x01\x30\x30\x96\ -\x61\x8d\x50\x1b\x7c\x14\x23\x25\x22\x14\x2b\xd8\x18\x91\xd5\x95\ -\x73\xe7\xce\x83\x2a\xb8\x04\xd2\x14\xb2\x0c\xd2\x2c\x8c\x49\x0a\ -\x49\x12\xde\x77\x3a\x90\xe7\x90\xb7\xa1\xd5\x82\x76\x2b\x8e\x6d\ -\x28\x72\xb2\xfa\x38\xd6\x0a\xe3\xaf\xbc\x49\x6b\xf1\xfa\xe6\x00\ -\xac\x15\xac\x15\x04\xb0\x46\xd8\xbd\x7b\xe7\x16\x6b\xeb\x86\xae\ -\x80\x5a\xa8\x56\x81\xea\x6d\x51\x8d\xaf\x04\xb5\x82\xf7\xa0\xa6\ -\x84\x01\x67\x05\x35\x82\x08\xa8\x0a\x95\x2c\xc3\x23\x20\x1e\x08\ -\xc0\xf0\x1e\x2f\x02\xde\x23\x12\x26\x15\x7c\x88\x23\xc4\x21\x1e\ -\x3c\x21\x5e\x40\x4d\x58\x18\x40\xd7\x4a\x89\x06\xac\xa0\xda\x63\ -\x00\x9a\x33\xbf\x05\x8a\x53\x07\x69\x02\x95\x04\xb2\x34\xf6\x04\ -\x12\x07\x4e\xa1\xe8\x40\x5e\x40\x2b\x8f\xbd\x05\x4b\x39\xb4\x73\ -\xc8\x0b\x54\x87\x71\x3d\x00\x2a\xe5\x25\x70\x31\x40\xd5\x30\x39\ -\xf9\xd2\xd6\x0a\xf3\x3e\xd0\xaf\x16\xaa\x1b\x8b\xf6\xd8\x27\x61\ -\x61\xbd\x1c\x25\x25\x20\x00\xf0\x81\x8d\x34\x4d\xa3\x3a\xc3\xb3\ -\x98\x11\x89\x6c\x07\xda\x63\x09\x56\x98\x5f\x29\x46\xfc\x61\xcd\ -\x72\x7f\x61\x1d\x2d\xd1\x80\x3a\x09\x54\x49\x18\x4f\x34\x2f\xe0\ -\x9d\x85\xc4\x21\x89\xc3\x67\x09\x92\x69\xd8\x11\x89\xe2\x13\x87\ -\x58\x8b\xef\x76\x91\xbc\x80\xbc\x03\xed\x02\xdf\x6a\x23\xed\x02\ -\xf2\x02\x9f\x77\x50\x1d\x45\xd5\x20\x78\x3a\xeb\x54\x78\x9b\x06\ -\x9c\x33\x78\x0f\x03\x8f\x24\xbc\xfe\xf2\xf3\x77\x68\xe8\x36\x68\ -\xa4\xbe\xf1\xeb\xc6\xfc\xdf\xb1\x04\x52\x5e\x82\x44\x4d\x5f\x84\ -\x8f\x0d\xa5\x38\xe7\xb6\xc5\x88\x9e\x18\x4b\xb9\x76\xb3\x03\x08\ -\x9d\x52\x11\xaa\x90\xb8\x50\xef\x5a\xc5\x30\x7d\xb1\xcb\x40\xc5\ -\xb0\x0e\xf4\x26\xad\x57\xf9\x55\x2e\xe1\xe1\xc6\xd2\x32\xf5\xcc\ -\x70\x7d\xc9\x84\x2d\xe9\x4a\x19\x10\x9c\x1a\xc0\x73\xe5\x66\x97\ -\x2b\x37\xbb\xac\x51\x57\x3f\xd7\xaa\x64\x7e\xc5\x27\xa2\x29\xac\ -\x05\x15\xc3\x9c\x0b\xb5\x77\xa6\x6c\x17\xa8\xc1\xa9\x20\xc8\x1a\ -\x35\xaf\x9b\x35\x1a\x8f\x59\x31\x9e\xfe\x7b\xe9\xef\x14\x00\xf1\ -\x82\xef\x9b\x58\x30\x2b\x57\x56\x02\x55\x21\xd1\x90\xfc\xe7\x53\ -\xdf\xf2\xeb\x99\x13\x2c\x2d\xde\xb8\xa7\xfa\x57\x6a\x03\x3c\xf5\ -\xec\x4e\x9e\x79\x61\x02\x0f\xa8\x33\x5b\x31\x10\x03\x7c\x87\xf7\ -\xf7\xbf\xc1\xc2\xc2\x02\xb7\x6e\xdd\xa2\x28\x0a\x44\x04\x6b\x2d\ -\xd6\x5a\x54\x15\x55\xc5\x39\x87\xaa\x62\xad\xc5\x98\xf0\xdf\xe5\ -\xe5\x65\xf2\x3c\xef\xf7\x23\xcd\xf9\xb8\xf2\x2d\x18\x70\x56\x50\ -\x17\x18\xdc\x31\x3a\xb6\x72\x4f\x38\x7e\x9c\xe9\xe9\x69\x8c\x31\ -\x78\xef\x99\x98\x98\x60\x72\x72\xf2\x8e\x59\xd8\x31\x3a\xd6\xdf\ -\x86\xae\xd4\x09\x55\x70\x36\xac\xa2\x56\xaf\xf7\x6b\x39\x33\x33\ -\xc3\xd0\xd0\x10\xd6\x5a\xbc\xf7\x34\x9b\xcd\xbb\x02\x50\xab\xd7\ -\x70\xd1\x88\xb4\xd4\x88\x14\x9c\x0b\x27\x5c\xa0\x2a\x00\xa8\x56\ -\xab\x64\x59\xd6\xa7\xb8\x37\xde\x69\x73\x1a\xa9\x17\x41\x4b\xad\ -\x38\x1e\xc7\xbd\x23\xb4\xd7\x8c\x31\x88\x44\xdf\x8f\x3a\xb8\xab\ -\x9b\xaf\x35\xa8\x0d\xf3\xf6\x18\x2e\x3d\x8e\x83\x29\x6d\xe3\xd5\ -\xdb\x12\xa9\xf7\xe5\x56\x6c\xad\xf4\x91\x0e\x8e\x0c\xc3\xf2\xef\ -\xdb\x02\xe0\xa1\x91\x61\xd4\xc2\xb5\x2b\x97\x59\x9c\xbf\xbe\x05\ -\x03\x36\xf8\xc0\x60\xad\x02\x0b\xdb\xc3\xc0\x50\xad\xc2\xec\xc5\ -\x4b\x9c\xfd\xee\x1b\xce\x9f\x9c\x9e\x03\xa6\x36\x04\x60\x24\x5e\ -\x4a\x05\x12\x0b\xed\x91\x27\xa9\x3d\x0c\x6f\x1f\x38\xc8\x66\xc7\ -\x81\x27\x3a\xf1\x2a\xe7\x35\x1e\x32\x81\x14\x28\xba\x70\xf9\xea\ -\x55\xce\x34\x8e\xd1\xfc\xfa\x8b\xb9\xd9\x1f\x4e\x1d\x02\x0e\x6f\ -\x08\xe0\xb3\x8f\x3e\xe0\xa7\xd3\x27\x57\x99\xe9\xda\xa3\x86\x55\ -\xe6\xbb\x1e\x04\x1b\x3c\x5f\x1d\x6f\x7c\x77\xee\x8f\xd9\x5f\x0e\ -\x01\x87\x1b\x8d\xc6\x5f\x1b\x01\x98\x9a\xfe\xf4\xe3\x7f\xf5\x73\ -\x6c\x7d\xf2\x35\x00\xe2\xb7\xda\x81\xff\xdd\xd7\xf1\x3f\x4d\xf0\ -\x4b\xb9\xe8\x46\x89\xaf\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ -\x60\x82\ -\x00\x00\x09\x4d\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ -\xa7\x93\x00\x00\x09\x02\x49\x44\x41\x54\x68\x81\xed\x9a\x7b\x54\ -\x93\xf7\x19\xc7\x3f\x6f\x02\x04\x84\x70\xf1\x08\x82\x17\x44\x10\ -\xc1\x8a\xab\xb4\x38\xb1\xd5\xf5\x88\x99\x52\x56\x95\x7a\xc6\x2c\ -\x9d\xb5\x30\xd6\x33\xa7\xa7\xdd\xe9\x6d\x2d\x3b\x6e\x6d\x57\xb7\ -\xb5\xb5\xad\xae\xb6\xdb\xa9\xb6\xd4\x56\x5d\xab\x5d\x77\x4a\x71\ -\x30\x10\x5b\x6a\x5b\xea\x44\x04\x05\xa3\xf5\x16\xa1\x48\x02\x28\ -\x97\x24\xe4\x9e\xbc\xfb\x83\x06\xd3\x98\x40\x02\xa8\xff\xec\x39\ -\x27\xe7\x79\x79\xf3\xfb\x3d\xf9\x7c\x7f\xcf\xf3\xbb\xbc\x09\xf0\ -\x7f\xbb\xb9\x26\x78\xba\xa9\x50\x28\x12\x81\x6d\x52\xa9\xf4\x4e\ -\x41\x10\x22\x6e\x30\x93\xbb\xd9\xec\x76\xfb\x29\x51\x14\x37\x55\ -\x57\x57\xef\x1b\xb6\xb5\x42\xa1\x88\xc8\xcb\xcb\xeb\xac\xab\xab\ -\x13\x4d\x26\x93\x38\x52\x73\x38\x1c\x63\xf2\x32\x1a\x8d\x62\x5d\ -\x5d\x9d\x98\x97\x97\x27\x2e\x5c\xb8\xf0\x01\x77\xde\x00\xf7\x1b\ -\xfd\xfd\xfd\x6b\x36\x6c\xd8\x10\x9d\x91\x91\x81\x28\x8a\x38\x1c\ -\x0e\x00\x44\x51\xfc\x9e\xf7\x74\x6f\x24\xde\x97\x78\xb3\x67\xcf\ -\x26\x3f\x3f\x9f\x2d\x5b\xb6\x3c\x01\xfc\x03\xb0\x3b\xfb\x48\xdc\ -\x05\x88\xa2\x78\x4b\x42\x42\xc2\xf7\x82\x7b\x83\x77\x58\xad\xf4\ -\x2a\x95\x58\xf5\xfa\xeb\x06\x2f\x8a\x22\x16\x8b\x85\xe9\xd3\xa7\ -\x23\x08\xc2\x14\x20\xdc\x95\xd7\x93\x00\xe9\x50\x01\x9d\xd7\xa7\ -\xb7\x6f\xe7\xc3\x19\x33\xa8\x5c\xba\x98\x0a\x85\x82\x2b\x97\x2e\ -\x5d\x17\x78\x37\x36\x80\x60\xd7\x7b\xd7\x94\xd0\x50\x81\x01\x1c\ -\x76\x3b\x5f\xad\x5b\x87\x55\xd5\xc8\xfd\x7f\x9e\x87\xc4\x78\x86\ -\xb6\xb4\x55\x1c\x2e\x28\x20\x63\xe7\x4e\xa2\xe3\xe2\xc6\x14\xde\ -\x53\x5b\x57\xbb\x26\x03\xce\x9a\xf7\x26\xa8\xae\xb8\x98\x10\x73\ -\x2b\x4b\x57\x9a\x90\x98\xcf\x72\x79\xee\x1a\xda\x02\x57\xb0\xf8\ -\xd5\x1f\xd1\xf8\xd8\x63\xf4\xf6\xf4\x8c\x39\xbc\xd3\xbb\xb3\x79\ -\x15\xe0\x4d\x7d\xf7\x89\x13\xa8\x76\x95\x90\xb9\x48\x0f\x61\x12\ -\xfa\xa6\xcc\x42\x1f\xbb\x86\x84\xf8\xf1\x84\x4b\x0e\x90\xf5\xdb\ -\x78\xea\x37\x6e\x44\xef\x65\x4e\x8c\x76\x01\xf0\x49\x80\xfb\x07\ -\xb8\x5e\xb7\x56\x56\x92\x56\xa0\xa0\x3f\xc4\x41\x73\xf4\x22\xbe\ -\x74\x6c\xa0\x5d\x7d\x85\x28\xe1\x6b\xa4\x53\x1e\x22\x2c\xa4\x9a\ -\xdb\x73\x64\x1c\xdb\xbc\x19\xa3\xd1\x38\xa6\xf0\xde\xcc\xd3\x24\ -\xf6\xfa\x61\x53\x72\x73\xf9\x66\x7f\x23\xff\x11\x57\x52\xdf\x97\ -\x4b\x88\xb4\x83\x59\x92\x42\x64\xda\xd7\x41\x10\x61\xf2\x23\xc4\ -\x25\x1f\x62\xf2\xf8\x16\x1a\x76\xec\xc0\x62\xb1\x8c\x19\xbc\xcf\ -\x19\x70\x6d\xe4\x1e\x64\x7c\x52\x12\xb7\xfe\x6d\x07\x92\xb7\x3f\ -\x64\x55\xda\x46\xb2\x26\xdd\x4f\x94\xec\x04\xf4\x1f\x82\xde\x8f\ -\x40\x12\x0c\xb1\x45\xcc\x59\x7e\x86\x30\xf5\x67\x34\xec\xd9\x83\ -\xd5\x6a\x1d\x13\x78\x77\xb6\x61\x05\x78\x0b\x92\xb0\x60\x01\xd3\ -\x1f\x7f\x96\x23\x2f\x06\x22\x4a\x62\x41\xca\xc0\xab\xbf\x0a\xb4\ -\xa5\x10\x18\x0d\x13\x56\xb3\x60\xbd\x16\x73\xd5\x4e\x4e\x94\x96\ -\x62\xb7\xdb\x47\x0d\xef\x7e\xed\x55\xc0\x50\x1b\x98\xd3\xa7\x64\ -\x67\x33\x4e\x51\xc8\xb1\x0f\xe7\xe3\x10\xc6\x0f\x08\x90\x88\xd0\ -\x5f\x06\xba\x2a\x08\x8a\x87\xf0\x65\xe4\xbc\x22\xa7\x6b\xc7\xcb\ -\x28\x6b\x6a\x7c\x8a\x3b\xdc\xea\x65\xb7\x0f\x6e\xc0\xde\x05\x0c\ -\x97\x01\xa7\xbf\x75\xcd\x1a\x74\xf2\x3b\xb8\xd8\x90\x8b\x28\x91\ -\x0f\x88\x10\xec\xa0\xdb\x0b\x86\x1a\x18\x37\x0b\x42\x6f\x27\x6f\ -\xd7\x74\x2e\x3c\x53\xcc\xd9\xfa\xfa\x11\xc3\xbb\x0e\xee\xb0\x02\ -\xfc\x09\x9a\xb1\x7e\x3d\xe7\x1a\x23\x38\x7f\x64\x05\xa2\x24\xe2\ -\xbb\x4c\x58\x41\xbb\x1b\x8c\x5f\x42\xd8\x7c\x08\x9e\xca\x9a\x4f\ -\x32\x38\xf1\xf0\xc3\xb4\x7e\xf3\xcd\xa8\xe0\xfd\xda\xc8\x7c\x09\ -\x2e\x08\x02\x99\xcf\x3e\xcb\xa9\xcf\x03\xd1\xb4\xfc\x1c\xd1\x18\ -\x04\x36\x40\x30\x41\xdf\x7b\x60\xaa\x87\xb0\xc5\x08\x52\x28\xd8\ -\x7f\x17\x8d\x8f\x3e\x8a\xa6\xad\x6d\xc4\x22\x7c\x9a\xc4\xfe\xd6\ -\xaa\x44\x22\x61\xc1\x4b\x2f\x51\xfb\x7a\x0b\x5a\xd3\x3a\xd0\x49\ -\x41\x07\x98\x74\xd0\xf3\x16\x58\x9a\x20\x62\x05\xd2\x40\x35\xab\ -\xdf\xce\xa0\xa1\xb8\x98\xcb\x5d\x5d\x7e\x8b\x18\xd1\x32\xea\x6b\ -\xf0\x20\x99\x8c\x3b\xdf\x7c\x93\xf2\xe2\x46\x8c\x21\xeb\x07\x04\ -\x68\x81\xde\x6e\x50\x97\x80\xf1\x0c\x44\xe4\x23\x1b\xa7\xe4\xee\ -\xdf\x25\xd3\xf0\xdc\x73\x68\xb5\x5a\xbf\x44\xb8\x5f\xfb\x24\xc0\ -\xd7\x91\x01\x18\x27\x97\x73\xc7\xf6\xed\xec\x2b\xa8\xc1\x1a\xfe\ -\xcb\xab\x22\xba\xdb\xa1\xad\x04\xfa\x5b\x21\xbc\x88\xa8\xb8\x7a\ -\xee\xfc\x59\x14\x0d\xaf\xbd\x86\xc1\x60\xf0\x4b\x84\x5f\xcb\xa8\ -\x3f\xf0\xce\xbf\x23\x63\x63\x59\x50\x52\xc2\xae\xb5\x87\xb0\x44\ -\xe4\x5f\x15\xd1\xa9\x82\x96\x12\x30\x74\x80\xfc\x21\xa6\xa4\xd6\ -\x33\x73\x5a\x0f\x8d\x25\x25\x98\xcd\x66\x9f\xe1\xfd\x3a\x0b\xf9\ -\x0b\xef\xf4\x31\x33\x66\x90\xbe\xe5\xaf\x7c\xb0\xa1\x0e\x7b\x48\ -\xd6\x80\x08\x1d\xa0\x39\x0d\xaa\x3d\x60\xd4\x43\xc4\x43\xa4\x2d\ -\xb9\x80\xd0\xfc\x29\xcd\x07\x0f\x62\xb1\x58\x7c\x16\x31\xac\x00\ -\xe7\x69\x74\x24\xf0\x4e\x9f\x30\x7f\x3e\x33\x7f\xff\x17\xca\xb6\ -\x6a\xb1\xc9\x32\xaf\x66\xa2\xed\x28\xa8\xf6\x82\x55\x80\x88\x7c\ -\x32\x73\x17\xd2\x59\x56\x46\x5b\x5b\x9b\x4f\xf0\x7e\x6d\x64\x23\ -\x85\x77\xfa\x99\x59\x59\x44\xe6\x16\xf2\xd9\x47\x21\x38\x82\x52\ -\xae\x8a\x38\x7f\x08\x2e\x7c\x0c\xd6\x60\x82\xa6\xdf\x4e\x47\x4d\ -\x0d\xad\x2a\x95\x5f\xc7\x8d\x21\x05\x8c\x66\xe4\xdd\xfd\x9c\xd5\ -\xab\xb1\xcf\x5d\xc6\xd1\xa6\x74\xec\x21\xf1\x60\x06\xf4\x22\xf4\ -\x3b\xb0\x7d\xeb\x20\x78\xce\x5c\xa2\x6f\x49\xc6\x72\xfa\x34\x7d\ -\x7d\x7d\xc3\x42\xfb\x55\x42\xa3\x85\x77\xfa\x8c\xa2\x22\xd4\x8e\ -\xc9\x5c\xd0\xe5\xc0\xd4\x1c\xc4\x99\x4f\xa3\x0f\xcd\xc1\x38\x73\ -\x16\x0e\xbb\x85\x5b\xf2\x96\x63\x6d\x6a\x42\xa3\xd1\x8c\xed\x3e\ -\x30\x16\xf0\x4e\x9f\xf9\xe4\x93\x34\x36\xdb\x78\xf1\xfe\x83\xec\ -\xd9\x5c\x41\xbb\x4e\x8b\xcd\x70\x19\x9b\xb1\x9b\xbe\x94\x44\xba\ -\x8e\xd5\xa3\x51\xab\xbd\x0e\x9e\x3b\x9b\xab\x5d\xf3\x50\x3f\xd6\ -\xf0\x00\x82\x20\xb0\xe8\xf9\xe7\x09\x5b\xb6\x8c\xcb\xe5\xe5\x7c\ -\x5c\xb8\x99\x98\xb4\x78\xc8\xfd\x31\x8f\xfc\xab\x96\x5f\xa4\x26\ -\x31\xf1\xdc\x39\x74\xb7\xdd\x46\x78\x78\xb8\xd7\xf2\xf1\x54\x42\ -\xd7\x08\x70\xcd\xc0\x58\xc0\xbb\x8a\xb8\x6d\xd1\x22\xf4\xe9\xe9\ -\x9c\xbb\xf7\x5e\x3a\x2b\x2b\x51\x6f\xd9\x4b\x7e\xca\x54\x34\x61\ -\x21\xd8\x95\x4a\x3a\x3a\x3a\x90\xcb\xe5\x1e\xfb\xbb\x5f\x7b\x15\ -\xe0\x49\xe9\x68\xe1\x5d\x7d\x68\x68\x28\x3f\xc8\xc8\xc0\x94\x96\ -\xc6\xc5\x95\x2b\x99\x54\x51\x41\x47\x69\x29\x97\xcd\x66\x64\x2b\ -\x56\x90\x98\x98\x88\x20\x08\xd7\xf4\xf3\x36\x07\x9c\x02\x96\x00\ -\x49\x00\x3a\x9d\x6e\x56\x69\x69\x29\xf5\xf5\xf5\x1e\xf7\x03\x6f\ -\xa3\xe1\x6f\xbb\x79\xf3\xe6\x91\x32\x7b\x36\xf1\x89\x89\xa8\x72\ -\x72\xb8\x74\xe4\x08\x66\xbd\x1e\xbd\x5e\x8f\x5c\x2e\xf7\x2f\x03\ -\xf1\xf1\xf1\xc5\x45\x45\x45\x77\xc5\xc4\xc4\x88\x0e\x87\x43\x2a\ -\x95\x4a\x07\x47\xc1\x5b\xc7\xd1\x58\x6d\x6d\x2d\x36\x9b\x8d\xe4\ -\xe4\x64\x82\x83\x83\x49\x4d\x4d\x25\x29\x29\x89\xde\xde\x5e\x82\ -\x83\x83\xbd\x66\xd0\xd3\x46\x16\x00\x20\x08\x82\x90\x9f\x9f\x1f\ -\x90\x9c\x9c\x3c\xf8\x46\xc7\xc9\x46\x9a\x5b\xd5\x04\x8d\x8f\x25\ -\x29\xfd\x56\x26\x05\x0d\x79\xea\xf0\xcb\x02\x03\x03\xd1\x68\x34\ -\xdf\x83\x0b\x08\x08\x60\xc2\x84\x09\x43\x96\x9f\x5f\x67\x21\x73\ -\xe7\xbf\x51\xe4\xe4\x50\x7a\xbe\x13\xb9\xf4\xbb\x9a\xb4\xf7\x71\ -\xf8\x9c\x76\xb0\xcd\xc5\xa3\x27\xe9\xeb\xfd\x96\x4f\x2b\x3f\xe5\ -\x4c\xef\xc0\x79\xc6\x66\xd0\xf0\x79\x79\x19\x15\x07\x6a\x38\xda\ -\xd8\x44\xf3\x89\xa3\x54\x57\x7e\x81\x5a\x6f\x1b\x88\xdb\xd3\xca\ -\xa9\xe3\x8d\x28\x95\x4a\xaa\x3f\x3f\xeb\x15\xd6\x93\xf7\x64\x5e\ -\x05\xc8\x42\x1b\x91\x04\x44\xf2\xc7\xfb\x96\x0e\x0a\xd8\xff\xf0\ -\x3d\xfc\x64\xf9\x07\x83\x6d\xfa\x9a\x7e\xcd\xf8\xe8\x39\x68\x8e\ -\x3c\xc1\xdc\xe4\xd5\x00\x34\xec\xfe\x29\x59\x2b\xee\xe3\x6c\xc3\ -\xd7\x3c\x7d\x77\x36\xbd\xb5\xbf\x61\xd9\xf2\x5c\x8e\x2b\x3b\xd1\ -\xb5\x6c\x67\x72\x6c\x2a\x5a\x6c\x5c\xfc\xba\x8c\x5f\xad\xff\x83\ -\x5f\x0b\x80\x5f\x19\x50\xbd\xab\x24\x74\x62\x21\xe3\x24\x03\xf0\ -\xbd\xa7\xdf\xa0\xe8\x58\x02\x01\x5d\xef\x0f\xb6\x31\x1f\xef\x41\ -\x1a\x18\xc3\x3f\xf7\x99\x79\x6a\xdb\x0b\x00\xd8\x9b\x7a\x70\xd8\ -\x0d\x6c\xdc\x76\x85\x2a\xd5\x45\x02\x9a\x7b\x09\x9d\x58\x48\xf6\ -\x0f\x27\x61\xed\x57\xa3\xb7\x99\xf8\xef\x29\x2d\x77\x3d\xb0\x8e\ -\xea\x8a\xad\x3e\xc3\x83\x8f\x8f\x94\x4e\xab\xa9\xb8\x44\x74\xe6\ -\xf2\x81\x8e\xb6\x4e\xa2\x67\x9d\xa5\xf3\xf0\x2e\x9e\x8a\x38\x4e\ -\x8b\x79\x60\x32\x7d\xb9\xbf\x8d\xa9\x39\x6f\x32\xb9\xbb\x95\xd2\ -\xd3\x03\x0f\x27\x5f\x94\xb7\x33\x6e\xc2\x2a\x9e\x2a\x2e\xa4\xba\ -\xa2\x8c\x67\xde\x50\x12\xb3\xe0\x1e\x40\x64\xfb\xbe\xf9\xa8\xbe\ -\xda\x4d\x5b\xcd\xfb\xbc\x57\x67\x62\xda\x94\x68\xbf\xca\xc7\xa7\ -\x7d\x00\xe0\xe8\x2b\x8f\xf2\x6a\x9b\x1e\x71\xc2\x56\x0a\x0a\x76\ -\xf2\xee\xbb\xef\x41\xd2\x3b\x98\xba\x3f\xa1\xbc\xdb\xc8\xe1\xb7\ -\xce\xb0\x25\xa9\x9c\x17\x5a\x75\x48\xa7\xbe\xc6\x91\x99\x4b\xf8\ -\xd3\xba\x14\x2e\x55\xbe\xcc\x4b\xdf\xea\x08\x9b\x67\xe5\xb3\x9d\ -\xcb\xd8\x58\x77\x09\x80\xb8\x2b\x6f\xb1\x76\xf9\xe3\xec\xda\x7f\ -\x0c\x75\xdf\x23\x84\x4f\x4d\x25\x33\x2d\xd2\x6f\x78\x4f\x19\x10\ -\x00\xa6\x4d\x9b\x76\xf0\xc0\x81\x03\x59\xae\xab\xd0\xf5\xb4\x92\ -\x92\x12\xda\xdb\xdb\x59\xbb\x76\xad\x4f\x22\x64\x32\x19\x2a\x95\ -\x8a\xec\xec\xec\x6e\x83\xc1\x90\x06\xa8\x9d\xb1\x06\x33\x50\x5b\ -\x5b\x4b\x4b\x4b\xcb\x0d\x11\xa0\x54\x2a\x89\x8c\xf4\x3d\x03\xce\ -\x0d\xd5\x6b\x09\x19\x0c\x86\xdd\x9b\x36\x6d\x6a\x01\x30\x99\x4c\ -\x77\x28\x14\x8a\x94\xa8\xa8\xa8\x21\xeb\xcf\xdb\xd2\xe6\x6b\xbb\ -\xb4\xb4\x34\x9f\xe1\x9d\xe6\x75\x23\xeb\xea\xea\x7a\xa7\xab\xab\ -\xeb\x1d\x00\xa9\x54\xfa\xf7\x07\x1f\x7c\x30\x25\x3d\x3d\x7d\xf0\ -\x9b\xe5\xb1\x3c\x0b\x8d\xd4\x3b\x1c\x0e\x9f\xbf\xd8\x3a\x7f\xf2\ -\xe4\x49\x02\x03\x03\x6f\x3a\xb4\xd3\x87\x85\x85\xd1\xd4\xd4\x04\ -\xd0\x81\xcb\x4f\xac\xde\x6c\x62\x5c\x5c\x5c\x67\x55\x55\x95\x68\ -\xb5\x5a\xc5\x9b\x6d\x56\xab\x55\xac\xac\xac\x14\x63\x62\x62\x1c\ -\x12\x89\xe4\x79\x20\xcc\x15\xd6\xe3\xbf\x1a\x00\x39\xc0\x8b\xc0\ -\x34\xbc\x2c\xb5\x37\xd8\xae\x00\xfb\x81\x6d\x80\xd2\xf5\x0d\x6f\ -\x02\x00\x22\x81\x14\x40\x76\xfd\xb8\x7c\x36\x3d\xd0\xce\x40\x09\ -\x8d\xed\xd1\xf8\x66\xdb\xff\x00\x0b\x62\x0d\xcf\xef\xd6\x72\x27\ -\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x08\x58\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x07\xea\x49\x44\x41\x54\x78\xda\xed\ -\x57\x6b\x6c\x14\xd7\x15\x3e\xf7\xce\xec\x7a\xd7\x76\x36\x7e\xcb\ -\x4e\x00\x97\x85\x04\x27\x04\x28\xe0\xda\x78\xcd\x8a\x26\x31\x76\ -\x6c\x13\x27\x8e\xb0\x1b\xa2\x18\xc5\xb4\x34\x22\x52\x15\x4a\xca\ -\x8f\xa8\xf4\x47\x9b\x56\xaa\xd2\x87\xaa\x3a\xa1\x52\x10\xa2\x55\ -\xdd\x28\x8a\xa5\x22\x12\x22\xa7\x34\xb1\x1d\xdb\x3c\x6d\x8c\xa1\ -\xf1\x0f\xc0\x8f\xf8\x0d\xc6\x6b\xf0\xae\x3d\xbb\x3b\x3b\x8f\x7e\ -\x33\xf6\x76\x65\x66\x41\xfc\xcb\x9f\x5e\xe9\x6a\x76\x66\xee\x9c\ -\xef\x3b\xdf\x39\xe7\x9e\xbb\x4c\xd7\x75\xfa\x36\x07\xa7\x6f\x79\ -\x88\xd1\x1f\xbf\xcc\xcd\x25\x55\x51\x88\x18\x23\xa8\x92\xc8\x38\ -\x3f\xe4\x4a\x49\x79\x31\x18\x08\x9c\x51\x65\xf9\x67\x58\x78\x87\ -\x43\x2d\xae\x69\x26\x6b\x86\xdf\xc2\xe2\x6f\xba\x5b\x45\xdc\xc3\ -\x46\x12\x63\xec\x37\xc9\xc9\xc9\x2f\x48\x81\x40\x1b\xbe\x3b\x20\ -\x32\x76\xdb\xfc\x1e\xf3\x47\x73\x73\x51\x02\x4b\x87\xa6\x69\x5c\ -\x13\x84\xdf\x7d\x7f\xed\xda\x37\xf2\x67\x67\xe9\x9a\xcb\xf5\xc4\ -\xbf\xc6\xc6\xb2\x35\x59\xde\x0d\xb0\x19\x7a\x80\xa1\xe9\x7a\x02\ -\x28\x35\x14\xaf\x5b\x57\x9f\xb7\x6c\x19\x0d\x4a\xd2\x6b\xa7\x5b\ -\x5b\x5d\x6a\x24\xb2\x9b\x0b\xc2\xfc\x3d\x43\xa0\xa9\x2a\x8f\x30\ -\xf6\x7b\xef\x86\x0d\x6f\x94\x80\xa1\x0b\xaa\xe4\x87\x42\x54\x9a\ -\x99\x59\xc9\x44\xf1\x98\xaa\xeb\xae\x07\x00\xb7\xa9\x9a\xd6\x50\ -\xe8\x76\xd7\x6f\xca\xc9\xa1\xa4\xf5\xeb\x69\xa3\xdb\x4d\x9e\xed\ -\xdb\x5f\xc2\xf3\x0f\x40\xc2\x01\x95\x2d\x04\x4c\xc9\x34\x51\x7c\ -\x6f\x5b\x51\xd1\x4f\xb7\xdf\xbe\x4d\x7a\x59\x19\x89\x1f\x7d\x44\ -\xda\x81\x03\xf4\x5d\x9f\x8f\x9e\x4b\x4d\xad\x12\x6d\xb6\x26\x8d\ -\x28\xe7\x3e\xe0\x2e\x78\x7e\xd4\x93\x9b\xbb\x77\x63\x7a\x3a\xe9\ -\xd5\xd5\x64\x3b\x78\x90\xb4\x92\x12\xda\xb8\x72\x25\x6d\xdd\xb9\ -\xf3\x15\xe2\xfc\x43\x4d\x51\xb2\x2c\x04\x60\xf8\xe7\xdb\xbc\xde\ -\x7d\x15\xf0\x5c\x7c\xfa\x69\x12\xf6\xef\x27\x1a\x1b\x23\x7b\x55\ -\x15\xb1\x43\x87\x68\xed\xcc\x0c\x95\x3b\x1c\xa5\x82\x28\x1e\x85\ -\x12\x29\x77\x83\xc3\x01\x51\x67\xac\x61\x6b\x56\x56\xdd\x06\xa7\ -\x93\x58\x6d\x2d\x25\x94\x96\x12\x8d\x8f\x93\x50\x58\x48\xac\xb8\ -\x98\x36\xe5\xe5\x51\x71\x5d\x5d\x35\x13\x84\xdf\x5a\x08\x3c\x94\ -\x99\x59\xe3\x31\xa4\xe1\x78\xf4\xe6\x9b\x44\x13\x13\x44\x7e\xbf\ -\x69\xc0\x51\x51\x41\xec\xed\xb7\x69\x15\xee\x9f\x15\x84\x72\xc4\ -\xb1\x11\xde\xa6\x51\x8c\xbc\x43\x65\xec\xf0\x16\x97\x6b\xf7\x13\ -\xa2\x48\x6c\xd7\x2e\x4a\x34\xc0\x6f\xde\x24\x0a\x04\xcc\x2b\xcb\ -\xcf\x27\x4a\x4b\xa3\x75\x20\x91\x91\x97\x57\x66\x21\x10\x9a\x99\ -\x69\xef\x33\xc0\x51\x09\xfa\xb1\x63\x64\xc6\x29\x18\x5c\x30\x00\ -\x25\x9c\x30\xc8\x41\xc2\x1d\x0e\xd3\x33\x8a\x52\x29\x72\xde\xa8\ -\xc1\x24\xa6\x91\x70\x87\x0b\x45\x71\x6f\x1e\xc0\xa9\xae\x8e\x92\ -\x10\x3e\xba\x75\x6b\xe1\x5b\x49\x22\x52\x55\xd2\xbb\xba\x4c\x87\ -\x86\xe0\x90\x7f\x68\xa8\xdb\x52\x86\x5a\x28\x74\xf0\xf3\x8e\x8e\ -\x2c\xf2\x78\x76\x14\x7e\xfc\x31\x29\x00\x17\x77\xec\x20\x9a\x5f\ -\x4c\x5a\x18\x4a\x42\x68\x28\x12\x21\xf7\x3b\xef\x90\x9d\xa8\xbc\ -\x35\x21\xe1\x84\xa2\xeb\x92\x57\xd3\x4a\x57\xa3\xb4\x6c\x00\x77\ -\x81\xa8\x09\x8e\x7b\x73\x38\x1c\xa4\x5e\xbe\x4c\xbc\xb7\x97\xfa\ -\x61\xa3\xbd\xb1\xf1\x82\x2a\x49\xfb\xa3\xb8\xff\xdb\x09\x7f\xf5\ -\xe8\xa3\xa4\x45\x22\xe9\xdc\x6e\xff\x5b\x45\x41\x41\x65\x7e\x7f\ -\x3f\x29\x95\x95\x24\x96\x97\x9b\x24\x60\x70\x41\x95\xe4\x64\xf2\ -\xb7\xb6\x52\xf0\xdd\x77\x69\x14\x9e\xc9\x82\x40\x6e\x82\x0c\xfb\ -\xf6\x51\xea\xf3\xcf\x2f\xac\x85\x4d\x73\x6d\x42\x02\x29\x43\x43\ -\xc4\x2f\x5d\xa2\x61\x54\x53\x6b\x53\xd3\x05\x45\x92\x6a\xc4\x84\ -\x84\x91\x3d\x58\x67\x29\x43\xce\xb9\x8f\x42\xa1\x57\xff\xdd\xdd\ -\xdd\x7c\x65\xc5\x0a\x62\x27\x4e\x90\xfc\xe9\xa7\xa6\x31\x53\x4a\ -\x24\xa8\x11\x4f\x57\x51\x11\x39\x90\xa4\xd9\x00\x5a\x01\xa5\x6c\ -\xf5\xf5\x94\x8a\x4c\xa7\xe9\x69\x73\x4d\x54\xf6\x48\x5f\x1f\xe9\ -\x9d\x9d\x34\x8a\x50\x7c\x75\xfc\x78\x8f\x32\x3f\x5f\x2b\xda\xed\ -\x23\x06\xc1\xb8\x0a\xe0\xa3\x05\x46\x8a\x92\x63\x73\x3a\xff\x5a\ -\xf2\xf8\xe3\xa5\x4f\x21\x19\x19\x64\xb5\x7b\x3c\x04\x72\x31\xef\ -\x12\x13\xe9\x4e\x7b\x3b\xc1\x28\x65\x20\xe6\xd1\x77\x98\xa6\xe7\ -\xf2\xe8\x28\xa9\xdd\xdd\x34\x81\x9c\xea\x68\x6b\xbb\x24\x07\x02\ -\x3f\x80\xe7\xd7\xa3\xe0\x7b\x24\xe9\xde\x04\x04\x3c\xd3\x15\xc5\ -\xc5\x6d\xb6\xbf\x97\xb8\xdd\x55\x4f\x4d\x4e\x92\x0e\x0f\x9d\x20\ -\x01\xef\x62\x24\xec\x76\x43\xb6\x18\xf8\x62\xcc\xc3\x23\x23\xa4\ -\xf4\xf4\xd0\xa4\x2c\x53\xfb\xd9\xb3\xe7\x91\x4f\xb5\x00\x5f\xe2\ -\x39\x08\x2c\x4d\x42\x3d\x76\x35\xa7\xc0\xb9\x1f\xdb\x6f\x7d\xdb\ -\xe0\xe0\x3f\xec\xcb\x97\x3f\xe7\x6e\x6e\x26\x09\x06\x13\x37\x6f\ -\x36\x01\xa3\x89\x89\x11\x03\x07\xa1\xd0\xd5\xab\x24\x23\xe3\xa7\ -\x91\x33\x1d\xbd\xbd\x5d\x6a\x38\xbc\x2b\x2a\xfb\x7d\x9b\x51\x32\ -\xa4\x8a\x2e\x62\xb8\x32\xc2\x10\x84\x19\x34\xa2\x5d\x5f\x0e\x0f\ -\x7f\xa2\x64\x66\x7a\xbf\x73\xea\x14\x31\xa8\xe4\xc4\xf6\x4a\xb2\ -\x1c\x03\x66\xcc\x58\x4b\xe1\xc1\x41\x92\xce\x9d\xa3\x69\xd8\x3a\ -\xd3\xdf\x7f\x45\x09\x85\x5e\xc0\xc6\x35\xf9\x40\xdd\x50\x84\x41\ -\xdd\x00\x66\x6c\xc1\x29\x5c\x99\x71\x45\x99\x29\x91\x88\x24\xdb\ -\x6c\xa4\xa3\x04\x6f\xb7\xb4\x98\x57\x8e\x1c\x40\x7f\x30\xc0\xcd\ -\x7b\x10\xa5\x59\x78\x6f\x83\x2a\x6a\x52\x12\x45\x64\x39\xcc\x34\ -\xcd\xcf\xf1\xdc\xec\x80\xb0\x6d\x76\x51\x4c\x81\xc8\x9a\x84\x7f\ -\x4a\x4d\x5d\x42\x00\x3f\x16\xba\x1a\xe7\x7f\xf1\xae\x5a\x55\xff\ -\xe4\xd4\x14\xf9\x86\x87\x29\x62\xe4\x28\xa6\x8e\x44\x43\xef\x30\ -\x89\x72\x63\x72\x4e\x22\xb6\x60\x01\x33\xed\x91\x47\xc8\x70\xfb\ -\x74\x57\xd7\x67\x0c\x1d\x10\x34\x67\xee\x26\x50\x8b\xfb\xa5\x65\ -\x68\x6d\xcb\x36\x6c\x32\x0d\x85\x6b\xd6\xd4\xaf\x43\x5b\xf6\x03\ -\x5c\x37\x0c\x44\xdf\x63\x47\x94\x51\x01\x11\x94\x9d\x06\x05\x18\ -\x08\x80\x85\x79\xf5\xa3\x79\x2d\xc3\x7e\x51\x54\x5c\x5c\x89\xfb\ -\x63\xda\x7d\xba\x28\xbf\x07\xb8\x0b\x9e\x1f\x2d\xde\xb4\x69\xef\ -\x66\xd4\xb0\xff\xda\xb5\x25\xe0\x2c\x36\xcd\xd8\x33\x4c\x28\x16\ -\x7b\x07\x12\x81\x1b\x37\x68\x25\x54\x2d\x2a\x2b\xab\x12\xec\x76\ -\xb3\x8b\x3e\x10\x01\x5d\xd3\x44\x8d\xf3\x06\x6f\x51\x51\x5d\x21\ -\xf6\x6e\xe9\xeb\xaf\x01\x1e\x1b\x51\x10\x15\x33\x05\x33\x1d\x53\ -\xb3\xda\x35\x49\xcc\xa1\x87\xb8\xd1\x96\x3d\xd5\xd5\xa5\x28\xe9\ -\xa3\x1a\x3e\xb9\x2f\x01\x80\x3b\x20\xfb\x61\x8f\xd7\xbb\x3b\x1f\ -\xed\x57\xba\x78\x31\xea\x79\x6c\x44\xc1\x11\xff\x08\x6a\x7e\x1e\ -\xa5\x97\x0e\x05\x20\xf3\x92\x75\xa6\x22\x58\x33\x8f\xd0\xe5\x42\ -\x89\x82\x9a\x9a\x72\x24\x6d\x23\xec\xa5\xc5\x25\x80\x04\x4c\xc6\ -\x51\xec\xfd\x2d\xa5\xa5\x7b\xb7\x20\xe6\x41\x94\x93\x1a\x2f\x3c\ -\x06\x38\x80\x65\xc4\xf8\x0c\xe7\xff\x39\x4d\x74\x61\x16\xde\xa6\ -\xe3\x59\x3c\x25\x08\xe4\xa4\x81\x01\x5a\x9d\x9d\x4d\xf9\x75\x75\ -\x95\xe8\x35\x06\x89\x6c\x0b\x01\x48\xf6\xeb\xe2\xb2\xb2\x3d\x5e\ -\x80\x2b\xed\xed\xa6\x31\x16\x07\xfc\x61\x00\xcf\xc1\xa3\x8e\x48\ -\xa4\x2b\xac\xeb\x15\x78\xb6\xfd\x6c\x30\x78\xf2\x16\x14\x48\x45\ -\x69\xaa\x66\x17\xb4\x2a\x11\xbe\x7e\x9d\xd6\xe0\x88\xf7\xbd\xd7\ -\x5f\x2f\xe7\x4e\xe7\x1f\x2d\x04\x92\xb2\xb2\x76\xac\x77\x21\x59\ -\xbf\xf8\x22\xae\xe7\xba\x01\x8e\xf7\x81\xcc\x4c\xea\xf4\xfb\x2f\ -\xc8\xaa\xba\x53\x24\x1a\x83\x01\x3f\xd4\x7b\xad\xcb\xe7\xfb\xec\ -\x96\xaa\x52\x2a\xd6\x20\x94\x96\xbc\xd1\xa1\x84\x8a\xe6\xb4\x0a\ -\x07\x92\x94\xd5\xab\xb7\x59\x08\x04\xa7\xa6\xbe\xbc\x66\xb4\x48\ -\xaf\x37\xae\xe7\x0f\x21\x99\x02\x38\xe1\x76\xfa\x7c\x3d\xb2\xa2\ -\xd4\x8a\x8c\x8d\xc4\x9c\x64\x3e\x54\xce\xab\x17\xc7\xc6\x9a\x7d\ -\x8a\x42\x0f\xe3\xe4\xa3\xdf\xad\x04\x9e\x0b\x8f\x3d\x46\x23\xd8\ -\x2d\x67\x87\x86\xba\x2c\x04\xb8\xaa\xfe\xa2\xb3\xb9\xf9\x78\x0f\ -\x36\x11\x7b\x41\x41\xec\x85\x01\x8e\xf8\xf9\x96\x2f\xa7\xb6\xf1\ -\xf1\x4b\xe1\x70\xf8\x65\x1b\xe7\xc3\x96\x6c\xe6\xfc\x8e\xaa\x28\ -\x3f\x3c\x7f\xf5\xea\xa9\x1b\x92\x44\x2e\x10\x26\x90\x40\x72\x99\ -\x87\x98\x04\x9c\x8c\xbf\x41\x78\xcf\x1f\x39\x72\x46\x99\x9b\x7b\ -\xcb\x42\x00\xb5\x3c\xc5\x64\xf9\x95\xce\x93\x27\x3f\xbc\x0c\x12\ -\x4e\x34\x1d\xe3\x65\x32\xbc\xbe\x81\x8f\xbf\x1a\x18\x38\x1f\x0e\ -\x06\x5f\x14\x39\xbf\x1e\x83\xb5\x90\x98\x04\x89\x9a\xee\x2b\x57\ -\x3e\x19\x87\x9a\x06\x71\x06\x12\x49\x38\x11\x8f\xa0\xa4\xcf\x1d\ -\x39\xd2\xa2\xfa\xfd\x2f\x09\x44\x03\x71\xcb\x50\xb0\xd9\x42\xa2\ -\xae\xff\xf8\x5c\x4b\xcb\x3f\xfb\x32\x32\xc8\xb1\x75\x2b\x4d\x20\ -\x71\xda\xfb\xfa\xba\x14\xa3\xab\x09\xc2\x88\x25\x37\x18\x33\xe3\ -\x1d\x9d\x9c\x31\x3f\xc2\x51\xdf\xdb\xdd\xfd\xf9\x04\x40\x9d\x90\ -\x7d\x1c\xbb\xe5\xc5\xa6\xa6\xd3\x68\x60\x75\x00\xbf\x49\xf1\x7a\ -\xc1\xfb\x88\x5b\xb4\x69\x20\x5e\xa9\x30\xf4\x87\x8c\x9c\x9c\x67\ -\x66\xa7\xa7\x7b\x71\x8c\xfa\x09\x17\x84\x51\x8a\x33\x9c\x0b\x5d\ -\x31\xd6\x41\x17\xaf\xb0\x92\xc1\x45\xf1\xcf\x29\x39\x39\xc5\xfe\ -\xa9\xa9\x6e\x38\xf0\x16\xbc\xfd\x26\xfa\x5d\xcd\x22\xee\xff\xff\ -\x1d\xff\x17\xef\xd2\xfe\x9f\xb7\x3d\x84\x48\x00\x00\x00\x00\x49\ -\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x01\xd7\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x20\x00\x00\x00\x20\x08\x06\x00\x00\x00\x73\x7a\x7a\xf4\ -\x00\x00\x00\x01\x73\x52\x47\x42\x00\xae\xce\x1c\xe9\x00\x00\x01\ -\x91\x49\x44\x41\x54\x58\x09\xed\x57\xdd\x6d\x84\x30\x0c\x3e\xa0\ -\x0b\x54\x55\x75\xdd\x06\xba\x40\x17\xe8\x3b\x62\x0c\x6e\x0a\x7e\ -\x76\xa9\x7a\xbc\x76\x92\x4a\x9d\x01\x38\x3b\xcd\x87\x4c\x5a\xd3\ -\x43\x84\xe3\xa1\x44\xba\x8b\x63\x27\xb6\xbf\x2f\x36\x52\x0e\x87\ -\xff\x3e\x02\x10\x90\xa6\x69\x0f\xf9\x16\x73\x5d\xd7\x26\xf6\x9d\ -\x0c\x16\x04\x41\xd7\xf7\xfd\x97\xd4\xf9\x96\x29\xc6\x23\xc5\x08\ -\xe1\x77\x94\x00\x07\xa7\xcc\x9e\x60\x5c\x63\x26\xa6\x3f\xc9\xef\ -\x11\xbe\x87\x4c\xa0\xb8\xf5\xbc\x27\x30\xaa\x01\x49\xbf\xef\xae\ -\x40\xd5\xcb\x18\x2c\x6f\x7e\x05\x2a\x03\x5a\xc6\x2e\x82\xa5\xeb\ -\xcd\x19\xd8\x13\x50\x6b\x60\x69\x17\x5c\x5b\x43\x9b\x5f\x81\xca\ -\xc0\xb5\x08\xf6\x2e\x58\xca\x80\x7a\x05\x4b\x1d\x4f\x9c\x7f\x23\ -\xdb\x3d\xec\xab\x26\x90\x65\x59\xd2\x75\xdd\x3b\x07\x0b\xc3\xf0\ -\xb9\x2c\xcb\x33\xd5\xd6\x2b\x82\x1b\xbd\x5c\xf8\x96\x29\x78\x0e\ -\x9f\x52\x86\x8e\x67\x95\x81\xb9\xdf\x01\xb7\x6b\x2c\xfa\x98\x62\ -\x34\x36\x60\xcc\x3a\x66\xc1\xae\xcd\xb4\xda\x77\x00\x88\x89\xfa\ -\x9c\x7f\x1c\x0d\x3a\x13\xd9\xfe\xa9\x0c\xb8\x88\xe4\xa1\xbf\x64\ -\x89\x1e\x88\x89\x51\x66\xe2\x07\x0b\xab\x30\x00\xa4\x40\xce\x09\ -\x43\x86\x0d\x20\xbc\x27\xc0\xe8\xc9\xb9\xb9\x7b\xa0\xe7\x60\x56\ -\x1e\x58\x60\x1d\x0f\xf5\x0a\xbe\xcd\xf3\xff\x05\xc2\x58\x2b\x64\ -\xbb\x27\x61\xef\xe6\x75\xc2\x02\x6f\x9e\xf3\x30\xa1\xbd\x1f\x55\ -\x55\xbd\xf0\x59\x0c\x7b\xf7\xa6\xef\xa1\xd3\xe6\x28\x8a\x92\xa2\ -\x28\x9a\x11\x03\xf6\xc5\x32\x3c\x1a\xb4\xc3\xac\xa7\xbd\x0f\xae\ -\x1d\xe8\xe9\xbe\xcd\x47\xc7\xb5\xf3\x1a\x49\xb6\x6d\x7b\xa2\x65\ -\x32\x30\xf0\xdb\xe6\x39\x3a\x38\xa6\x33\x0d\x75\x50\x32\x75\x96\ -\xd8\x3e\x93\x3d\xe6\x44\xbd\x15\xa1\x40\x9f\x93\xf3\xc9\x21\x3b\ -\xe2\x02\x11\x97\xac\xfa\x31\x31\x38\xd5\x00\x00\x00\x00\x49\x45\ -\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x0b\xe1\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ -\x00\x00\x00\x20\x63\x48\x52\x4d\x00\x00\x7a\x26\x00\x00\x80\x84\ -\x00\x00\xfa\x00\x00\x00\x80\xe8\x00\x00\x75\x30\x00\x00\xea\x60\ -\x00\x00\x3a\x98\x00\x00\x17\x70\x9c\xba\x51\x3c\x00\x00\x00\x06\ -\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\xa7\x93\x00\x00\ -\x00\x07\x74\x49\x4d\x45\x07\xe1\x0a\x1f\x04\x05\x06\xc0\x1b\xc4\ -\x43\x00\x00\x0a\xe5\x49\x44\x41\x54\x68\xde\xcd\x5a\x6b\x90\x54\ -\xc5\x15\xfe\x4e\xdf\x3b\x77\x66\x76\x96\x9d\x65\x67\x71\x51\x79\ -\x49\x10\xe5\x21\x28\x02\x0a\x18\x5c\x65\x92\xd2\x98\x94\x86\x94\ -\x92\x68\x48\x7e\x04\x1f\x10\x30\xbb\x1b\x2b\x65\xa5\x7c\x96\x29\ -\xab\xcc\x43\x17\xe5\x51\x25\x8f\xca\x8f\x18\x63\x02\x3e\x10\x9f\ -\x59\x17\x6a\x85\x22\x20\x2a\x06\x70\x05\x04\x91\xa7\x60\xf6\x31\ -\x3b\xbb\x3b\x33\xf7\xde\xee\x93\x1f\x73\x67\xf6\xce\x9d\x3b\x0b\ -\x05\x04\x73\xfe\xf4\xd6\xdc\x73\xba\x4f\x9f\xaf\xcf\xe9\xaf\xbb\ -\x97\xe2\xf1\x5a\x81\x42\x21\x00\xec\xb4\x0a\x80\xf0\x69\xd9\xa5\ -\xf7\x4d\xda\xb2\x70\x19\x0b\xa7\x75\xff\xad\x39\xdf\x4b\xb5\xe2\ -\x9b\xb6\x75\x4f\xc0\xdd\x96\x8a\x0c\xbb\x22\xe2\xfe\xfd\x9b\xb2\ -\x65\x3d\x07\x45\x89\x4e\x70\x1a\x9d\xf4\x27\x67\x6c\x9b\x4a\xa5\ -\x78\xf3\xe6\xad\x2a\xa7\x3b\x71\xe2\x38\x15\x8b\xc5\x34\x21\x84\ -\xbb\x4f\xd2\x5d\xf0\xfd\x5f\x38\xcf\xcc\xf8\xe2\x8b\xfd\x32\x1e\ -\xbf\x79\xc0\xd4\xa9\xd3\x26\x03\x18\x0a\xd0\x7f\x6c\xdb\xda\xd3\ -\xd9\xd9\x79\x70\xc7\x8e\xed\x5c\x53\x33\x38\xe7\xb3\x22\x27\x89\ -\xc5\xb9\x72\xe0\x6c\x6c\x2d\xcb\x42\x4f\x4f\xb7\x9a\x31\xe3\xfa\ -\x09\x9a\xa6\x3f\x08\xe0\x16\x00\x11\x00\x16\x80\xa3\xcc\xfc\x9a\ -\x94\xf2\xd9\x0d\x1b\xde\x39\x54\x53\x73\x21\x01\x60\x8a\xc7\x6b\ -\x35\x9f\x4e\xf3\x0e\x30\x33\x1d\x3b\x76\x4c\xb6\xb6\xee\xf3\x3a\ -\xe6\x75\xa8\xd4\xb7\xfe\x5a\xcc\x9c\x39\x5d\x33\x0c\x83\x3a\x3b\ -\x3b\x78\xe2\xc4\xab\xf5\x8a\x8a\xe8\x1c\x22\x7a\x14\xc0\xc8\x12\ -\xf3\x7c\xb5\xbb\x3b\xf9\xf3\x5d\xbb\x76\xf4\x94\x95\x45\x58\x77\ -\xa2\xa3\xf9\x39\x9f\x48\x74\x62\xd4\xa8\xcb\x30\x76\xec\x15\x97\ -\xdc\x74\xd3\xf7\xc7\x02\x18\x0e\x40\x47\x71\x89\x23\x00\x20\x02\ -\x98\x01\x22\x02\x33\x83\x88\x98\x99\x05\x11\x14\xb3\x6f\x59\x24\ -\x66\xfe\xf0\xbd\xf7\xde\xde\x34\x73\xe6\xac\x01\x86\x61\xfc\x86\ -\x88\xee\x77\xa2\xee\x27\x12\x40\x92\x59\x29\x91\xad\x3f\x94\x73\ -\xc6\x13\x1d\xe6\xcf\x3e\x6b\xe5\xd9\xb3\x7f\x7c\xb1\xa6\x69\xbf\ -\x24\xa2\x1f\x01\x18\x06\xc0\x38\xc5\xd2\x01\x51\xae\x25\x4f\xeb\ -\xab\xbe\x49\x29\xf9\x4e\x6d\xed\x77\x06\xe9\xba\xfe\x14\x11\xdd\ -\xe5\x09\xa6\x5b\x0e\x33\xf3\xe2\x4c\x26\xfd\xe7\x9d\x3b\x77\xa4\ -\xca\xcb\x07\x10\x00\xe5\x46\x20\x3f\x89\x4f\x3f\xdd\xc5\x77\xdc\ -\x31\x77\x82\x10\x62\x09\x80\x19\xa7\x72\xfa\x0c\x65\xab\x94\xf2\ -\x1e\x80\x12\x81\x80\xbe\x0c\xc0\x6d\xf0\xcf\x0f\x06\xf0\x9e\x52\ -\xf2\x91\x3d\x7b\x5a\xb7\xf5\xf4\x24\xe1\x38\x0f\x38\xd1\x2f\x40\ -\xe0\xc8\x91\x2f\x71\xfb\xed\x77\x0d\x15\x42\x2c\xfd\x1f\x3a\xdf\ -\xaa\x94\x5c\x08\xa0\x4d\xd3\xb4\x25\x00\x7e\x58\xc2\xf9\x0c\x80\ -\xe5\xa6\x69\xfe\xac\xb1\x71\xf1\xbf\x4c\x33\x43\x86\x11\x2c\xc8\ -\xb9\x02\x04\x94\x52\x34\x7a\xf4\x58\x08\xa1\x2d\x02\x30\xdd\x27\ -\x12\x49\xa7\x53\xaf\x9c\x6e\xd2\x0a\x00\x1d\x4a\xa9\x07\x6c\x5b\ -\xee\x35\x0c\xe3\x39\xc7\x79\x3f\x49\x32\xf3\x93\xdd\xdd\xc9\xe7\ -\x5e\x7f\xfd\xe5\x94\x53\x6c\xdc\xbe\xe4\x97\x50\x0e\x01\xd1\xdc\ -\xdc\x62\xdf\x7f\xff\xa2\x4b\x89\x68\xb6\xa7\xb3\x2e\x00\xcb\x95\ -\x92\xaf\x33\xa3\x2b\x9b\x98\xa4\x7c\x5a\x72\x12\x97\xb2\x6b\xbf\ -\xaf\x98\x65\xff\x20\x30\xab\x94\x69\x5a\x47\xc3\xe1\xf0\x23\x00\ -\xee\x2a\xe1\x7c\x82\x99\x7f\xdb\xdd\xdd\xbd\xaa\xab\x2b\xa1\xc6\ -\x8e\x1d\x2f\x7c\x9c\xcf\x23\xc0\x0e\x02\x0a\x00\x6b\x9a\x3e\x01\ -\xc0\x50\x4f\x87\xcf\x1d\x3a\xf4\xe5\xe3\x6b\xd6\xac\xb5\x2e\xb8\ -\xa0\x52\x58\x96\xc5\x81\x80\x4e\xa6\x69\xb1\x61\x04\xc8\x34\x6d\ -\x36\x0c\x9d\x6c\x5b\xb2\xa6\x69\xa4\x94\xca\xcf\x80\x99\x21\x84\ -\x20\x29\x25\x4b\x69\x53\x22\x91\x56\xf5\xf5\xf5\xf3\x88\x68\x11\ -\xfc\x13\xb6\x8b\x99\x1f\x4c\x24\x3a\x57\x47\xa3\x95\x73\x22\x91\ -\x48\xc7\x4b\x2f\xfd\x63\x7d\x3c\x5e\xab\xa3\x18\x4d\x99\xdb\x89\ -\x15\xb2\x25\x0d\x0d\x0d\x0d\x97\x20\x5b\x2a\x73\xd2\xae\x94\x7c\ -\x75\xcd\x9a\xb5\x96\xab\x13\xe1\x99\xb8\x70\xfd\x5e\x52\x9a\x9a\ -\x36\xda\x75\x75\x75\xd3\x88\xe8\x61\x00\x65\x3e\x2a\x69\x66\x7e\ -\xa2\xab\x2b\xb1\x3a\x1a\xad\xbc\x93\x88\x9e\x21\xa2\x46\x00\x6f\ -\xa0\xc4\xe6\x58\x90\xc0\x4e\xd4\x02\x9e\x4e\x53\xcc\x9c\x88\xc5\ -\x22\x02\x67\xb1\x3b\x1f\x3c\xb8\x5f\x2d\x58\x30\x7f\x90\x10\xe2\ -\x51\x64\x4b\xb2\x57\x14\x33\x2f\x4d\xa5\x7a\x97\x54\x54\x44\x6f\ -\x25\xa2\xdf\x03\xa8\x64\xe6\xb2\x12\xe3\x0a\xb8\xe8\x34\x3b\x08\ -\xf8\x46\x91\x99\x45\x5b\x5b\xcf\x19\x3b\xaf\x94\xe2\x9a\x9a\x0b\ -\x45\x28\x14\x9e\x07\x20\x5e\x42\x6d\x5d\x26\x93\x79\x32\x14\x0a\ -\x5f\x43\x44\x7f\x00\x30\x08\x00\x88\xc8\x8b\x70\x6e\xdc\x3c\x02\ -\x40\x7e\x27\x25\x38\x1f\x0a\x84\x88\xb8\xa6\x26\x7a\xc6\xbc\xa8\ -\xb9\xb9\x85\xa7\x4c\x99\x7e\x15\x80\x05\xf0\x5f\xf7\xbb\xa5\x94\ -\x0f\x29\xa5\x58\x08\xf1\x38\xb2\x3b\x7e\x3e\x78\x28\xde\xf5\xf3\ -\xc1\x74\x23\x80\x2c\x00\xbe\x08\xd0\x89\x13\x09\x06\x20\x52\xa9\ -\x5e\xb5\x77\xef\x67\xdc\xd4\xb4\xd1\x6e\x6a\xda\xa8\x7a\x7a\xba\ -\x15\xb3\x42\x09\xe1\x4c\x26\x4d\xf7\xde\x7b\x4f\x58\x08\x51\x0f\ -\x60\x88\x8f\x4e\x92\x99\x7f\xd7\xd8\xd8\xb8\x5b\xd7\xf5\x0a\x78\ -\x0a\x08\x11\x95\x3c\x0b\xe4\x10\xc8\xd3\xe9\xd2\x08\x08\x35\x78\ -\x70\x25\x25\x93\x49\x79\xe9\xa5\x63\x82\xb3\x67\xcf\x99\x50\x57\ -\x57\x77\x5b\x5d\x5d\xdd\x77\x27\x4f\x9e\x36\x3c\x14\x2a\x63\xdb\ -\xb6\xbc\x47\x44\x06\x20\x5a\x5a\xb6\xd8\x65\x65\x65\x37\x03\xb8\ -\xb5\xc4\x24\xff\xd2\xd9\xd9\xf1\x4a\x24\x22\x84\xe3\x6c\x41\x3f\ -\x4e\x50\x4b\x1d\x82\x58\x78\x0d\x88\x8a\x97\x84\x52\x4a\x7c\xf5\ -\x55\xa7\x1a\x33\x66\x7c\xb8\xaa\x2a\xf6\x98\x10\x5a\x93\x10\xe2\ -\xef\x42\x88\xd7\x02\x81\xc0\x9b\xa3\x47\x8f\xb9\x73\xe0\xc0\x18\ -\x99\xa6\x99\x3f\xab\x02\xa0\xe3\xc7\x8f\xc8\xf9\xf3\xe7\x57\x13\ -\x89\x05\xf0\xaf\x3a\xbb\xa4\x94\x4f\xaf\x5f\xbf\xd6\x1a\x30\x20\ -\x0a\x66\x2e\x3a\x9b\x38\x41\x75\x17\x90\x82\xcf\xc2\xfd\x23\x33\ -\x67\xb7\x1c\x8f\xe4\x4e\x41\x91\x48\x79\x19\x80\x1b\x01\xc4\x90\ -\xad\x56\x41\x00\x97\x13\xd1\x33\x23\x46\x7c\xeb\x8e\x4c\x26\x03\ -\x29\x65\x1e\xe2\xdd\xbb\x3f\xe7\x70\x38\xfc\x3d\xf8\x53\x12\x93\ -\x99\x9f\x5e\xbc\x78\xf1\xfe\x09\x13\x26\x51\x45\x45\x05\x09\x71\ -\x4a\x04\xbc\x92\x4f\x90\xdc\x6c\x89\x8a\x69\x23\x29\xa5\x08\x00\ -\x3e\xfa\x68\x6b\x07\x33\x2f\x06\xd0\xe1\xd1\x89\x11\xd1\x1f\xa6\ -\x4f\x9f\x19\x6f\x69\x79\x9f\x99\x99\x13\x89\x0e\x2c\x5c\xb8\x30\ -\x46\x44\x77\xc3\x9f\xc5\x36\xa5\xd3\xa9\x57\x26\x4d\x1a\x2f\x88\ -\x88\xbe\xfe\xfa\x24\x3b\xe3\xf8\x21\xe0\x77\x8b\x91\x47\x20\xbf\ -\x8c\x38\x2b\xc5\xb3\x14\xc4\x55\x55\x65\x14\x08\x18\x7c\xe8\xd0\ -\xc1\xbf\x31\xf3\xc3\x00\xba\x3d\x7a\x17\x11\xd1\x1f\x17\x2d\xaa\ -\x1b\xbb\x7d\xfb\x16\xde\xb6\x6d\x87\x0c\x04\x02\xb7\x00\xb8\xc6\ -\x67\xe0\xa4\x52\x6a\xf9\xb2\x65\xcb\x3b\xab\xaa\xaa\x09\x00\xd7\ -\xd4\x5c\x48\x0e\xd2\x7e\x08\xe4\x26\x51\xf0\xc9\x8d\x40\x7e\x23\ -\xf3\x43\x80\x99\xa9\xbd\xbd\x97\x0d\xc3\xa0\xe3\xc7\x8f\xa8\xf6\ -\xf6\xb6\x95\xcc\xfc\x0c\x00\xdb\xa3\x3b\x5e\x08\xf1\xc4\xdc\xb9\ -\x77\x47\xef\xbb\xef\xde\x4a\x22\xfa\x29\x8a\x37\x46\x00\x78\xa7\ -\xb7\xb7\xa7\x79\xe6\xcc\x69\x79\x7a\x70\xf4\xe8\x21\xd5\x0f\x02\ -\x7e\x92\x4f\x8e\x7c\x82\x94\x42\x80\x88\x38\x12\x11\x04\x00\x65\ -\x65\x11\xfa\xe4\x93\xed\xb6\x69\x66\xfe\x04\x60\xad\x4f\xc7\x3f\ -\x08\x04\x8c\x79\x65\x65\x91\xeb\x50\xcc\x68\x81\x2c\xd7\x79\xfe\ -\xf9\xe7\x57\xa4\x82\xc1\x50\x3e\x5f\x86\x0c\x19\x26\x4a\x20\xe0\ -\xb7\x74\x72\x08\x90\x1f\x02\x45\x37\x66\xcc\x40\x2a\xd5\x57\x5d\ -\xab\xab\x2f\xa0\xa5\x4b\x97\x25\x95\x52\x8f\x01\xd8\xed\xd1\xd7\ -\x88\xe8\x57\x44\xf4\x18\xfc\x2b\x4f\x73\x32\xd9\xb5\x65\xda\xb4\ -\xc9\xb9\x02\xc2\x00\xc4\xe1\xc3\x25\x11\xe8\xf7\xc2\xc1\x8d\x80\ -\x70\x10\x10\x7e\xca\xca\xb3\x3b\xc4\xe3\xb5\xd4\xd8\xd8\xb8\x87\ -\x99\x9f\x02\x90\xf2\xd8\x5c\x0c\xe0\x6a\x9f\x81\x33\xcc\xea\xaf\ -\x2b\x56\xac\xec\x8e\x44\xca\x0b\xe8\xc1\x90\x21\xc3\x04\x91\xf0\ -\x8b\x76\x6e\xe4\x82\x12\xed\x46\x20\xdf\x89\x83\x80\x77\x23\x23\ -\x00\x5c\x5e\x5e\xc0\x00\x18\x00\x4d\x99\x72\x25\x75\x75\x25\x5e\ -\x45\x96\x2d\x9e\x8e\x7c\x68\x59\x76\xf3\xd4\xa9\x57\xb9\x59\xac\ -\x02\x40\x27\x4e\x1c\x63\x67\x1f\xf0\x4c\xa2\xe0\xfa\xd3\xcb\xc7\ -\x38\x07\x63\x8e\x4e\x97\x44\xa0\xbb\x5b\x16\x45\x20\x1a\xad\xd4\ -\x56\xae\x5c\x95\x54\x4a\x2d\x03\xd0\x7e\x1a\x13\x58\xb3\x64\xc9\ -\x92\xf6\x68\xb4\x12\xf0\xd0\x83\x41\x83\x06\xe7\x96\xaf\x27\x6b\ -\x49\x79\xc7\xc5\x29\xe8\xb4\x1f\xb1\xe1\x58\x2c\xe2\x7b\x57\x59\ -\x5b\x7b\x9d\x9e\x4c\x76\x6d\x01\xf0\xf6\x29\x9c\x3f\x6c\xdb\xf6\ -\xbb\xce\xdf\x45\xdc\x26\x91\xe8\x60\xa0\x18\x01\x27\xa0\x67\x47\ -\xa7\x01\xa6\x52\x74\x3a\x10\x08\xf0\xaa\x55\xab\x33\xcc\xfc\x02\ -\x80\xde\x7e\x26\xb0\xb1\xad\xed\xeb\x7d\x37\xdc\xf0\xed\xdc\xf2\ -\x29\xe0\x36\xe5\xe5\x03\xdc\x51\xee\x8b\xff\xf9\xa0\xd3\x93\x26\ -\x8d\x17\x99\x4c\x7a\x2b\x80\x8f\x4b\x38\x6f\x32\xf3\xba\x17\x5e\ -\x78\xd1\xd2\x34\xcd\xef\x56\x0f\xa6\x69\x02\x3e\x3b\xee\x39\xa7\ -\xd3\x7e\xd1\xab\xaa\xaa\xa6\x65\xcb\x96\xb7\x33\xf3\xbb\xf0\x97\ -\xfd\x96\x65\x6e\x1b\x38\x30\x4c\x80\xff\x39\x22\x7b\x9b\xd7\x17\ -\x4c\x77\xf0\x70\xae\xe8\x34\x4e\x71\x90\x51\x4a\xad\x03\x70\xa0\ -\xd8\x7f\xde\xf0\xf9\xe7\x7b\x8f\x4e\x9a\x34\xa5\x14\xab\x84\xae\ -\xeb\x38\x57\x74\xba\x08\x01\x87\x4e\xfb\x42\x9f\x93\x59\xb3\xae\ -\xd7\x5a\x5b\x77\xee\x54\x4a\xdd\x03\xe0\x4d\x00\xc7\x01\xb4\x01\ -\xf8\xa7\x52\xbc\x7c\xf7\xee\x1d\xec\xd4\x79\x5f\x6e\x90\x4a\xf5\ -\x9e\x33\x3a\x6d\x7a\x94\x0c\x4d\xd3\x82\xfd\x39\x9f\x1b\x48\x4a\ -\x49\xef\xbf\xdf\xbc\x21\x99\x4c\xfc\x44\x4a\x79\xa3\x6d\xdb\xf1\ -\x74\x3a\x3d\xa7\xa5\xa5\xb9\xf5\xb2\xcb\xc6\xf5\xf7\x0e\x81\xde\ -\xde\x1e\xe8\xba\x66\xc0\xc3\x5c\x99\xd9\xe2\xec\x91\xcf\x97\x4e\ -\x17\xdc\x4e\x13\x11\xea\xeb\xeb\x8f\xa2\x2f\x69\x80\x2c\x55\x8e\ -\x03\xd8\xb9\x6f\xdf\x1e\x94\x97\x0f\xe0\x40\x40\x27\x29\x15\x13\ -\x01\x44\x82\xa4\xb4\x39\x10\x08\x50\x3a\x9d\xe1\x70\x38\x44\xcd\ -\xcd\x4d\xc9\xfd\xfb\xbf\xdc\x53\x51\x11\xe6\xea\xea\x98\x08\x06\ -\x83\x68\x6b\x53\x64\x9a\xa6\xf2\xb3\xed\xed\xed\x45\x22\x61\xaa\ -\x86\x86\x86\x1b\x01\x0c\xf6\x38\x79\x94\x88\x10\x8f\xd7\xfa\xc6\ -\xcd\x7b\x3b\x4d\x52\xca\x7f\xeb\xba\xfe\x15\x80\x8b\x1c\x25\x41\ -\x44\x0f\xd4\xd7\xd7\xa7\xa5\xb4\xdf\x92\x52\xa5\x89\x72\x65\x17\ -\xce\x15\xba\x22\x22\xc1\xcc\x8a\x84\x10\x2c\xa5\x22\x4d\x13\xac\ -\x54\xdf\xef\x59\xbd\x6c\xae\x7a\x6d\x35\x4d\x37\x1a\x1a\x1a\xe2\ -\x44\xf4\x10\x0a\xef\xa4\xda\x94\x52\x1f\x95\x8a\x3e\x9c\x07\x8e\ -\xdc\xab\x20\xdb\xb6\x4d\xc3\x87\x5f\xa2\xc5\x62\x83\x96\x02\xf8\ -\x85\xc7\xc0\x74\xd6\x75\x0f\x7c\xaa\x01\xfc\x0f\x1c\xbe\x51\xf3\ -\xb1\x09\x21\xcb\x9f\x82\x1e\xdd\x17\x13\x89\xce\x79\xfb\xf6\xb5\ -\x9a\x86\x11\xf4\xeb\xab\xe0\x6e\x94\x74\x5d\xe7\xf5\xeb\x5f\xb6\ -\xe6\xce\xbd\xfb\x59\x21\xc4\x0c\x00\x97\xbb\x94\x0d\xb8\xae\x3b\ -\xce\x83\x1c\x50\x4a\x35\xae\x5a\xb5\xda\x7b\xb1\xeb\x46\x80\xb4\ -\x91\x23\x47\xc0\x35\x09\x31\x78\xf0\x45\xf8\xe0\x83\x2d\x27\x47\ -\x8f\x1e\xb3\x97\x88\xae\x45\xf6\xfc\x7b\xbe\xe5\x20\x33\xd7\xbf\ -\xf5\xd6\xba\x8d\x57\x5e\x39\x41\xf3\x39\xd4\xe4\x11\xd4\x46\x8e\ -\x1c\xe1\x7e\x3c\x56\x44\x44\x15\x15\x51\xb4\xb6\xee\x3c\x30\x7c\ -\xf8\xc8\x4d\x44\x14\x45\x16\xde\xf0\x79\x70\x3c\x01\xe0\x0d\xa5\ -\xd4\xaf\x37\x6f\x6e\xd9\x50\x5d\x1d\x13\x42\x14\xef\xab\x70\x2d\ -\xc3\xdc\x2b\x65\x11\x3f\x61\x66\x3e\x79\xf2\x04\x5f\x7b\xed\x75\ -\xe1\x48\x24\x72\x05\x91\xb8\x86\x88\x86\x02\x1c\x02\xf2\x57\xea\ -\x9c\xcf\xcc\xc2\x96\x00\x56\x7d\x07\x26\x16\x2e\x1b\x3f\x5b\x93\ -\x08\x47\x94\x52\x1f\xf4\xf4\xf4\x7c\xbc\x62\xc5\xca\xde\x59\xb3\ -\xae\xef\x37\xf2\x4e\xc0\x25\xb9\xd6\x97\x6f\x9d\xb7\x6d\x9b\x37\ -\x6e\xdc\xa4\x00\xf0\xa8\x51\xc3\x84\x65\x59\x1c\x0e\x87\x45\x3a\ -\x9d\x56\xa1\x50\x48\xa4\xd3\x69\x15\x0c\x06\x85\x65\x59\x2a\x10\ -\x08\x90\x94\x12\x44\x04\x22\x82\x52\x0a\x9a\xa6\xc1\xb2\x2c\x18\ -\x86\x81\x74\x3a\xc3\xa1\x50\xb0\xc0\x36\x14\x0a\x89\x03\x07\x0e\ -\x2b\xd3\xb4\x30\x6e\xdc\x68\x0c\x1c\x38\x50\x84\x42\xe1\x52\x55\ -\xc7\xcb\xc7\xe0\x7e\x27\x3e\x17\xef\xbf\x7e\x7d\x94\x7a\xa9\x39\ -\xdb\x77\x67\x01\x40\x0a\x1f\x05\x3f\xe3\xfe\x3a\x39\x53\xe7\xc5\ -\x59\x8e\x5b\x70\xa0\x01\xfa\x48\x5c\xee\xff\x13\x72\x2d\x7b\xbe\ -\x01\xd9\xf7\x5a\x77\xfb\x8d\xd9\xfe\x17\x5a\x62\x2e\xda\x22\x1b\ -\xb0\x80\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\x63\ -\x72\x65\x61\x74\x65\x00\x32\x30\x31\x37\x2d\x31\x30\x2d\x33\x31\ -\x54\x31\x32\x3a\x30\x35\x3a\x30\x31\x2b\x30\x38\x3a\x30\x30\xff\ -\x8c\x2c\xfe\x00\x00\x00\x25\x74\x45\x58\x74\x64\x61\x74\x65\x3a\ -\x6d\x6f\x64\x69\x66\x79\x00\x32\x30\x31\x37\x2d\x31\x30\x2d\x33\ -\x31\x54\x31\x32\x3a\x30\x35\x3a\x30\x31\x2b\x30\x38\x3a\x30\x30\ -\x8e\xd1\x94\x42\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\ -\x00\x00\x02\xa3\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x3c\x00\x00\x00\x3c\x08\x06\x00\x00\x00\x3a\xfc\xd9\x72\ -\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\ -\xe2\x03\x02\x04\x34\x31\x97\x0c\xf9\x63\x00\x00\x00\x19\x74\x45\ +\xd3\x0a\x17\x0a\x12\x16\x5e\xb7\xf3\xf2\x00\x00\x00\x1d\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\x02\x0b\x49\x44\x41\x54\x68\xde\xed\x98\xcd\x4b\x94\x51\x14\ -\xc6\x7f\x16\x96\x7d\x2c\xa2\x55\x1b\x3f\x90\xc0\x45\x60\x21\x6e\ -\x5b\x04\x15\x45\x14\x06\x23\xae\x5a\xbb\x90\x72\x21\x6d\x4a\xa5\ -\x76\x41\x7f\x41\xae\xda\x88\x91\xd2\x22\x17\x66\x10\xa2\x92\x50\ -\x18\x45\x05\x81\x04\xd9\x2a\x22\xa5\x60\x48\xc4\x84\x69\x73\x16\ -\x0f\x2f\x33\x13\xfa\x5e\x21\xc6\xe7\x07\x97\xfb\xce\x73\xce\x7d\ -\xee\xdc\x97\x73\xef\x65\x06\x8c\x31\xc6\x18\x63\x8c\x31\xc6\x18\ -\x63\x8c\x49\x4e\x0f\x50\x8a\x76\x26\xb5\xf9\x9e\xff\x70\xc1\xed\ -\xf2\xfc\x61\x37\x2d\xf8\x1b\xb0\xb2\x9b\x16\xfc\x7e\x27\xcc\xb7\ -\xb2\xe0\x59\xd9\x5b\xa7\x32\xb1\xe3\xc0\x9f\x88\x7d\x02\xf6\x49\ -\xac\x1e\xb8\x01\xbc\x04\x7e\x46\x9b\x03\x7a\xcb\xcc\x7f\x04\x68\ -\xaa\x50\xce\x5b\xf1\x49\xc2\x7d\x59\x70\x4f\x26\xf6\x48\x62\x67\ -\x45\xef\x00\xde\x4a\x2c\xdb\x9e\x03\x7b\x25\xff\xb4\xc4\xae\xe5\ -\xf0\x49\x42\xb7\x4c\x30\x2c\x7a\xa7\xe8\xe3\xa2\x9f\x00\xd6\x24\ -\x36\x0d\xdc\x01\x1e\x02\x9b\xa2\xdf\x94\x31\x7d\xa2\x9f\xcc\xe1\ -\x93\x84\x66\x31\x1f\x0d\xad\x0e\x78\x11\xda\x9a\x94\xe3\x81\x28\ -\xc9\x12\xb0\x01\x5c\xce\x78\x15\xc4\xeb\xb5\xe8\x0f\x42\xdb\x04\ -\xf6\xe7\xf0\x49\x42\x1d\xf0\x3d\xcc\x17\x43\xbb\x20\x13\xde\x92\ -\xdc\xeb\xa2\xdf\xae\xe0\xb5\x1a\xf1\xdf\xa2\x2f\x84\xf6\x31\xa7\ -\x4f\x32\x26\xc3\xbc\x18\x7b\xe6\x5d\x7c\xfe\x0c\x34\x48\xde\x94\ -\x7c\xd1\xd6\x32\x3e\xf5\x52\xa6\x5f\xe5\x00\x2d\x86\x36\x96\xc3\ -\x27\xe9\xb5\xf4\x2a\xfa\xc3\xc0\x80\xec\xb3\x7e\x60\x5d\xf2\x8e\ -\xc9\x73\xb1\x8c\xcf\x95\x28\x57\x80\x67\xd1\xb7\x84\xaf\x5e\x49\ -\xdb\xf1\x49\xca\x79\x79\xe3\x1b\xd1\x3f\x2d\x93\x37\x56\xa5\x14\ -\x3b\x81\x1f\x11\x5b\x05\x1a\x43\xef\x92\x31\x97\x72\xf8\x24\xe5\ -\x68\xe6\x3a\x58\xaf\x50\x6a\x85\x4c\xde\x13\x60\x08\x78\x2c\xf7\ -\x75\x09\xb8\x28\x63\x86\x45\x6f\xca\xe1\x93\x9c\x25\x99\xe8\x6e\ -\x95\xbc\x91\x2a\xf7\xe6\x97\x38\xf0\x94\x89\x88\xfd\x8a\xc3\x68\ -\xbb\x3e\x49\x69\x00\x96\x63\xb2\x65\xe0\xe0\x3f\x4e\xf5\x02\x30\ -\x13\x25\x57\x04\xde\x00\x83\xc0\xa1\x2a\x2f\x72\x3e\xa7\x4f\x52\ -\x06\xe5\xed\x5e\xad\xf5\xdf\xa9\xcd\x72\x05\x4c\x67\xca\xae\x26\ -\x99\x90\xd3\xb9\xad\xd6\x17\x7b\x4e\x4a\xf9\x9e\xff\x94\x31\xc6\ -\x18\x63\x8c\x31\xc6\x18\x63\x8c\x31\xc6\x98\x54\xfc\x05\x94\x34\ -\xe4\xeb\x87\xd7\x3b\x14\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\ -\x60\x82\ -\x00\x00\x09\x40\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x08\xd2\x49\x44\x41\x54\x78\xda\xed\ -\x99\x79\x70\x95\xd5\x19\x87\x9f\xf3\x6d\x77\xc9\xbe\x6f\x04\xb3\ -\x10\x43\x88\x44\xc4\x20\x8a\x20\xc5\x36\x18\x0a\x62\x15\xaa\x23\ -\xa8\x6d\xc5\x76\xb4\x5a\xa7\xa3\x4e\x3b\xb6\xce\xb4\x9d\xb1\x8e\ -\xfd\xc3\xa9\x8e\xb5\x55\x2b\x6e\x80\x20\x19\xb1\x08\x26\xb2\x88\ -\xa0\x20\xa2\x48\x58\x22\xa1\x2c\x22\x89\x82\x59\x09\x49\xee\xfe\ -\x7d\xdf\xe9\x31\x89\x93\xb1\xf8\x67\xb9\x89\x53\xde\x99\xdf\xdc\ -\x33\x73\xef\x9d\x79\x7e\xef\xf7\x9e\xf9\xde\xf3\x1e\x43\x4a\xc9\ -\x77\x39\x0c\xe0\xbc\x81\xf3\x06\xfe\x57\x06\xc4\xcd\x29\x7c\x6b\ -\x48\x94\x84\x92\x0e\xae\x18\x5c\xbb\xda\x80\x86\xd7\x02\xa4\x36\ -\x28\x47\xfc\xd7\xef\x07\xbf\x1f\x5a\x9f\xfd\xdf\xe1\xc8\x43\xf2\ -\x07\xe0\x72\x04\xcb\x60\x40\xed\x67\xe1\xec\xde\x3d\x2a\x9f\xc0\ -\x58\x5c\xb1\x1c\x87\x19\xe8\x12\x6c\xed\x62\x0c\xf7\x0e\x04\x3f\ -\x07\xb6\x8f\xf6\x12\xaa\xc4\x16\xaf\x5b\x1e\xb7\x6c\xec\xf5\xdd\ -\xb4\xf9\x63\x84\xf7\xfb\x88\x1d\x48\x1d\x8f\x64\x23\x9a\xbc\x17\ -\x78\x6e\xb4\x1a\x98\x4a\x4c\x5b\xa5\x99\x6e\xd1\xec\x25\x9f\xa3\ -\x55\x47\x38\xdd\xe6\xc5\x28\xe9\x20\x58\x14\x20\xd2\x90\xa7\x9c\ -\x68\x7f\x43\x97\x67\x80\xba\xd1\x66\x60\x0e\x51\xf1\x8c\x37\x25\ -\x56\x38\xfb\x17\xad\x8c\x9f\xd2\xcb\xc9\x3e\x3f\x09\xc2\x43\x58\ -\x97\xf8\x2e\xe9\x07\xb3\x95\x48\x7d\x81\x87\x90\xf1\x0c\xba\x6c\ -\x06\x9a\x46\x89\x01\x39\x9f\x88\xbe\x32\x31\x3b\xe2\x9f\x73\x57\ -\x2b\x45\x13\xfb\x09\x07\x0d\xd2\x4d\x9b\x7c\xbf\xe4\x84\xeb\xc3\ -\x13\x05\xaa\x02\xc8\x40\x1b\xd1\xfa\x31\x69\xe8\xf2\x69\xe0\x1a\ -\x20\x30\xd2\x06\x16\x13\xd5\x96\x26\xe7\x85\x3d\x73\xee\x6a\x61\ -\x6c\x45\x88\x88\x82\x97\x52\x43\x13\x50\x99\xd0\x47\x77\x2c\x91\ -\x5e\x69\x62\xc5\xfc\xb8\xea\x49\x38\xc7\x7b\x70\x9a\x53\xaf\xc4\ -\x74\x6f\x04\x5e\x18\x21\x03\x02\xe0\x37\x84\xb5\x87\xb3\x4a\x02\ -\xe6\xbc\x7b\x5a\x49\xcf\x8b\x0e\xc1\x0b\x40\xe0\x48\x48\xd4\xa3\ -\xcc\xcf\x29\xa1\xbe\xa3\x93\xce\x40\x17\x96\x6e\xe1\x4c\xeb\x21\ -\x70\x2c\x09\x5c\x6d\xf1\x08\x1a\xe0\x41\x82\xfa\x23\xf9\x13\xfa\ -\x98\x7b\x67\x2b\xc9\x99\x36\xb1\xb0\xf1\xb5\x31\x24\x2e\xae\x94\ -\x94\x25\x5e\x4d\x55\x4a\x0d\x53\xd2\x74\x1e\x3f\xb6\x82\x23\x7d\ -\x2d\x58\xf9\x31\x42\xc9\x36\x6e\xb7\x35\x69\x24\xf6\x80\x8e\xe4\ -\x51\xa2\xe2\x81\xe2\xcb\x7a\xa8\xb9\xf5\x24\x49\xe9\x0a\x3e\x32\ -\x0c\xaf\xd0\xd1\x30\xa9\x48\xbe\x9a\xf2\xa4\xef\x91\xee\x29\xe3\ -\x82\x84\x14\xee\x2e\x6e\xa3\xae\x73\x05\xcd\x07\x34\xce\x84\x74\ -\x10\xf4\xc5\xdb\x80\x89\x94\x4b\x89\xea\xb7\x96\x28\xf8\x79\x4b\ -\xbe\xc0\xb4\x24\xb1\xa8\x01\x00\x08\x5c\xe9\x20\x30\xa8\x4c\xa9\ -\x65\x5c\xe2\x55\xe4\x7a\xcb\xd1\x30\xf8\xa4\x77\x1b\x27\xec\xf5\ -\xf8\x5a\x22\x74\x2c\xcb\xc1\x0d\xea\x41\x0c\xf9\x60\x1c\x0d\xc8\ -\x64\xa4\x78\x8a\xa8\x76\xcb\xb8\xe9\x5d\xd4\x2c\xfe\x12\xc3\x00\ -\x3b\xa6\x33\x0c\x6f\x23\xb0\xa8\x4a\x9d\x4f\x49\xe2\x15\x64\x7b\ -\xc6\x21\xd0\x39\x12\xd8\xce\xde\x40\x1d\x7b\x1a\xdb\x79\xfb\xe9\ -\x7c\xfa\xdb\x8d\x5e\x3c\xf2\x36\x60\x6d\x9c\x0c\x88\x4c\x5c\x56\ -\x61\x8b\xef\x57\xd6\xb6\x33\xf5\x87\x5d\x58\x06\x38\x8e\x40\x22\ -\x00\x0d\x47\x3a\x58\x22\x91\x8b\x53\xaf\x67\x6c\xc2\x64\x72\x3d\ -\x15\x38\xd2\xa6\xb9\x7f\x33\xfb\x82\x75\xec\xda\xde\xcf\xd6\x67\ -\xc7\x10\x0d\x68\x2d\x0a\x7e\x11\xb0\x23\x3e\x2f\x32\x41\x2e\x0e\ -\x6b\x71\xc5\x65\xe5\xb3\x3b\x98\x54\xdb\x8d\xa9\x03\x2e\x80\x18\ -\xca\x7c\x0c\x4b\x4b\x64\xd2\x57\xf0\xfe\x29\xaa\x6c\x2a\xb0\xdd\ -\x10\xff\xee\xdf\xc6\xde\xd0\x4a\xde\xdf\x12\xe3\xdd\xa5\x05\xd8\ -\x11\xed\x04\x96\x5c\x08\xec\x8e\x53\x2b\x21\x27\xe2\x68\xcf\x0b\ -\x5d\x56\x97\x5f\xd3\xce\x45\x33\xce\xa0\x4b\x94\x86\xe1\x1d\x05\ -\xef\xd7\x33\x54\xe6\x6f\xa0\xd0\x7f\xe9\x40\xd9\x44\x9c\x3e\x95\ -\xf9\x4d\xec\xeb\xff\x17\xef\xd5\x3b\xec\xaa\xcb\xc5\xb6\x69\x54\ -\xf0\x8b\x91\x34\xc7\xab\x99\xab\xc6\x16\xab\x84\xe1\x96\x8e\x9f\ -\xdb\x41\xe9\xe4\x00\xba\x0b\xa6\x01\x86\x0e\x20\x88\x49\x87\x24\ -\x23\x9b\xc9\xa9\x37\x92\xef\x9b\xa8\xe0\x2f\x24\xe0\x9c\xe6\x60\ -\x5f\x03\x7b\x7b\xd7\xf2\xee\x3a\x9d\x0f\x57\x67\x83\xc6\x76\x0c\ -\x95\x79\x57\xb4\xc5\xe7\x40\x23\x98\x8a\xea\x28\x75\xaf\x93\x57\ -\x5c\xd3\x45\xfe\xc4\x20\x9a\x0d\xba\x05\xa6\x0e\x02\xb0\xa5\x4b\ -\xb2\x99\xc3\xe4\x94\x85\x83\xf0\xde\x72\x7a\x63\x1d\x34\x07\x36\ -\xd0\x78\x66\x0d\xef\xbc\xe6\xa5\xf1\x8d\x2c\x30\xe5\x66\x04\xb7\ -\x7c\x0d\x1f\x0f\x03\x0b\x14\xfc\x73\x7a\x82\x9d\x7a\x41\x6d\x27\ -\x39\x25\x11\x74\x07\xcc\x21\x78\x53\x80\x23\x21\xdd\x1a\xc3\x25\ -\xa9\x37\x91\xe7\xad\x24\x53\x95\x4d\x77\xb4\x85\xa6\xc0\x3a\xf6\ -\x76\x35\xf0\xd6\x4b\x29\x1c\xd9\x91\x0a\x96\xb3\x12\x21\x96\x28\ -\xf8\x50\xbc\x8e\x94\x8b\x15\xfc\x3f\xf4\x64\x3b\x29\xbf\xa6\x93\ -\xd4\xc2\x18\x9a\x03\x86\x05\xa6\x06\x96\x92\x03\xaa\x54\x8a\x54\ -\xcd\xff\x98\x3c\xcf\x04\x32\x3c\xc5\x74\x45\x4f\x28\xf8\xd7\x69\ -\x6c\xdf\xc4\x86\x97\x53\x38\xba\x33\x19\x2c\xf7\x59\xa4\xb8\x07\ -\x49\x2c\x5e\x67\xe2\xbb\x88\x89\x27\x8c\xac\x88\x99\x31\xfd\x34\ -\x49\xb9\x36\x86\x03\x96\xa5\xa4\x83\xa1\xa4\x09\x28\xf0\x8d\xa7\ -\x32\x65\xbe\xca\xfc\x45\xa4\x99\x85\xb4\x47\x8e\x29\xf8\x35\x7c\ -\xd4\xba\x8d\x4d\xcb\x53\x39\xf1\x71\x32\x78\xdd\x47\x90\xe2\x8f\ -\x4a\xb1\x38\x1c\xea\x05\x4a\xbf\xc7\xe6\x61\x2d\x27\x42\xd2\x95\ -\x3d\xf8\x33\x9c\x01\x78\xd3\x1c\x2a\x1b\x0d\x34\xa5\xc2\x84\xf1\ -\x4c\x4a\x5d\x48\xb6\xa7\x82\x54\xab\x90\xb6\x70\x33\xfb\x02\xaf\ -\xb2\xbb\x65\x07\x6f\xfe\x33\x87\xf6\xc3\x7e\x07\xbf\xf3\x10\x52\ -\x3c\xaa\x14\xaf\xa9\x84\xfc\x33\x8e\xfc\x1d\x39\x51\xbc\x57\x9c\ -\xc1\x93\xec\x62\xb8\xc3\x65\x63\x28\x21\xa0\x34\xb1\x8a\x4b\xd3\ -\xae\x57\xf5\x5e\x46\x8a\x91\xcf\xa9\x70\x13\xfb\x83\xab\xd8\x75\ -\xec\x43\xde\x7a\x31\x9b\x8e\x63\x5e\x1b\x9f\x7b\x1f\x52\x3c\x19\ -\xaf\xb1\x8a\x07\xf8\x3b\xb6\xb8\x9d\xc2\x10\xfa\xc5\xfd\x58\x3e\ -\x89\x29\x87\xb2\xae\x0f\xc2\x6b\x02\x26\xa6\x4d\xa3\x3a\x7d\xf6\ -\xc0\x0b\xca\xaf\x67\xf2\x79\x68\x0f\xfb\x82\xaf\xb0\xa3\xa9\x89\ -\x8d\x2f\x67\xd3\x7b\xca\x13\xc4\xeb\x2e\x42\x6a\x6b\x91\x10\x0f\ -\x03\xd6\x40\x53\xe6\x68\x8b\x29\x0a\xc1\x84\x00\xa6\x22\xb7\x00\ -\x4b\x53\x1a\x82\xd7\x05\x54\x29\xf8\xc9\x69\xb5\xe4\xf9\x2a\x48\ -\x30\x32\x68\x0d\xee\x61\x7f\x68\x39\xdb\x0f\x34\xd1\xf0\x7c\x1e\ -\xc1\xd3\x66\x97\x82\xbf\x15\x57\x34\xc4\x67\xb0\x25\xc8\xc2\xe5\ -\x79\x60\x1e\xa5\x41\x28\x0f\x22\x04\x98\x62\x38\xf3\xba\x18\x2c\ -\x9f\xea\xac\x59\x4c\xc9\xac\xa1\xc0\x3f\x1e\x9f\x9e\xc0\x67\xc1\ -\x9d\x2a\xf3\xcb\x78\x67\xe7\x71\xde\x59\x9d\x4b\xa8\x57\x3f\x8e\ -\x47\xde\x8e\x23\xb6\xc6\x6b\x32\x67\x02\x2f\x83\xa8\xa5\x2c\x08\ -\xe3\x22\xe0\x80\xc1\x37\x37\xab\xa9\x0b\x66\xe4\xcc\xe1\xd2\x8c\ -\x99\x14\xfa\xcb\xf1\xea\x7e\x8e\x07\xb7\xd3\xd8\xbf\x9c\x2d\x3b\ -\x5a\xd9\xba\x3a\x07\x3b\xac\x1f\xc5\x94\xf3\x91\xa2\xf9\xdc\x8c\ -\x16\x85\xcb\x59\x21\xc4\x4c\x6c\x6a\xc9\x0d\x43\xc9\x20\x3c\xf2\ -\x9b\xf0\x3e\xc3\x54\xf0\x3f\x60\x92\x82\x1f\xa3\x32\xef\xd1\x7d\ -\x0a\x7e\x1b\x8d\xbd\x2b\xd8\xfc\xde\xe7\x6c\x7d\x2d\x07\x69\x8b\ -\xbd\x58\xf2\x26\x5c\x71\xf8\xdc\xcd\x46\x35\xc9\x59\x21\xb9\x03\ -\x03\xac\x62\x97\xa8\x00\xdc\xc1\x72\xb1\xf4\x41\x78\xbf\x61\x31\ -\xbb\xe0\x3a\x95\xf9\xcb\x29\x4e\xac\x44\x10\xe5\x70\xa0\x81\x7d\ -\x7d\xcb\x78\xb3\xbe\x8f\x8f\x36\x64\x83\x60\x23\x86\xfc\xa9\x82\ -\x3f\x75\x6e\x87\xbb\xe2\x2c\x03\x13\x88\x45\xe7\xce\x2a\xbd\x88\ -\x84\x42\xc9\xfa\xce\xbd\xa0\x0d\x35\x66\x02\x12\x15\xfc\xbc\xb1\ -\x0b\x54\xe6\x2f\xa3\x28\xa9\x62\xa0\x45\xfe\x34\xb4\x99\x03\x7d\ -\xcb\x59\xbf\x2e\x40\xe3\xd6\x74\xd0\xe5\x06\x04\x5f\x65\xfe\x0c\ -\x40\x7c\x0d\x48\xf9\x80\x61\xea\x89\xbf\xbe\x7c\x36\x49\xf9\x89\ -\xbc\x7d\xfa\x20\x21\x37\x0a\x40\xa6\x37\x85\x1f\x15\x5d\xcb\xa4\ -\x74\x05\x9f\x58\x46\xcc\x0d\x71\x28\x50\xcf\xfe\xae\xd7\xd8\xf4\ -\x56\x3f\x4d\xef\x0f\xc0\xbf\x08\xe2\x57\x48\xfa\x61\x38\xe2\x55\ -\x42\x05\x44\x22\x0b\x66\x5e\x38\x99\x59\x65\x55\xf8\xbd\xe9\xdc\ -\x3e\x76\x1e\x4f\x1d\x5d\xc3\x98\xb4\x2c\x16\x14\x5f\xc7\xa4\xcc\ -\x4b\x28\x4d\x1e\x4f\xc8\xe9\xe6\x60\x7f\x3d\xbb\x3b\x57\xb2\xe5\ -\x0d\xf8\x74\x4f\x2a\x58\xee\x13\x20\xee\xc3\xfd\xb6\x8d\x05\xe7\ -\x7e\x13\x4b\x16\xa1\x91\xbc\xa8\x6a\x3a\x1e\x6f\x32\x61\xcd\xe0\ -\xa1\x8a\x3b\x39\x10\x38\x81\xe1\xf5\x52\x9d\xa5\x6a\x3e\xa9\x94\ -\xde\x58\x3b\xfb\xfb\xd6\xb3\xeb\xcb\x3a\xd5\xcb\x0b\xbe\x68\x4e\ -\x00\x9f\xfb\x18\x52\x3c\xa0\xe0\xf9\x46\xc4\xb1\x84\xf2\xb0\xed\ -\xfb\xa7\x97\x4d\xe4\xda\xca\x69\x84\x85\x01\x86\x45\x96\x37\x83\ -\x35\x33\x97\x72\xdb\xce\xfb\x79\xe5\xe8\x5a\x6e\x2e\x9b\xcb\x91\ -\xd0\x46\x76\x1c\x5f\xcf\x07\x0d\x3a\xdd\x2d\x7e\xf0\xca\x7b\x71\ -\x87\x5b\x83\x91\x32\x70\x03\x8e\xcc\xb9\x2a\x77\x0a\x59\x69\xb9\ -\xf4\xc5\x24\x9a\x95\x40\x4c\x37\xc8\xf0\xa4\xf3\x66\xcd\x4b\x3c\ -\x79\x68\x29\x7f\xd9\xf5\x24\x9d\x27\x0f\xd3\x79\xc8\x20\xd0\xe6\ -\x75\xb1\xdc\x25\x48\xed\x45\x80\x91\x34\x60\xa8\xcf\x9f\xe0\xf8\ -\x79\xfa\x95\x83\xcc\x28\x3e\x46\xed\xf4\xa9\x80\x1f\x2c\x1f\x5d\ -\x3d\xed\xbc\x7f\x74\x0f\x2d\xcd\x1d\x9c\xfa\x38\xc0\xc9\x2f\x0d\ -\x94\xbb\x56\x3c\xee\x6f\x91\x62\x25\x12\x46\xda\xc0\x42\x34\x77\ -\x0a\x3d\x39\x74\x77\x84\xf9\xe5\x5f\xeb\x78\x35\xb3\x00\x33\x05\ -\xd6\x36\x6e\x62\xc5\x07\xeb\x38\x72\xf2\x18\xc4\x6c\x1b\xd3\xf7\ -\x31\x1e\xbd\x1e\x29\x5f\x40\x8a\x56\x00\x18\x59\x03\x3a\x9a\xbc\ -\x9b\xde\x24\xe8\xcc\x80\x94\x18\xc7\xc3\x9f\x30\xeb\xf1\x9f\xe1\ -\xf8\x7b\x09\xf7\xf6\xc7\x10\xda\x61\x0c\x6b\xb3\xd2\x6a\xa4\xf8\ -\x50\xc9\x1e\xce\xfa\xc8\x1b\xa8\x06\xa6\xe1\xe8\x50\xf4\x19\x24\ -\xf7\x82\x61\x3b\x01\xc7\x3d\x40\x58\x5b\x85\xc7\xb3\x19\x29\x9a\ -\x94\x22\x48\x40\x8e\xbe\x6b\xd6\xb9\x48\x34\xd2\x7a\x24\x82\x43\ -\x38\xda\x4a\x5c\xb1\x19\x61\xee\x41\x43\x41\x8f\xfe\x7b\xe2\x04\ -\xe0\x4f\x48\xb6\x28\xf0\xdd\x48\x82\xdf\xa9\x7b\x62\xf9\x8c\xbc\ -\xff\xfc\x4d\xfd\x79\x03\xff\x67\x06\xfe\x03\x1b\x85\x94\x1a\x1f\ -\xbe\x73\xb2\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x04\x4e\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ -\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\x12\x00\x00\ -\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xd2\x01\x07\x0b\x01\x15\x4b\x06\x3c\xc6\x00\x00\x03\xcb\x49\x44\ -\x41\x54\x78\xda\xb5\x96\xcf\x4b\x1c\x49\x14\xc7\x3f\x5d\xd3\x3d\ -\x62\xa2\xf8\x63\x8c\x60\x12\x33\x92\xbb\xae\x88\x17\x5b\x50\xc1\ -\x40\x18\x08\xe3\x06\x57\x84\xe0\x68\xbc\xcd\x25\x07\x73\x8a\xf9\ -\x07\x3c\xe9\x7f\x21\xa8\x43\x2e\xc1\x04\x8c\x27\x41\x4d\x34\xd9\ -\x55\x83\x10\x44\x44\x57\x34\x1e\x46\x3c\x98\x66\x7a\xba\xbb\xaa\ -\x7b\x0f\x71\x1a\x25\x8e\x2e\x8b\x5b\xf0\xa0\xba\xaa\x78\x9f\xf7\ -\xbe\xf5\xba\xaa\xe0\x7f\x6e\x5a\xb1\x89\x44\x22\x91\xcc\x66\xb3\ -\x7d\x8e\xe3\x98\x52\xca\x07\x4a\x29\x80\x7d\x60\xb9\xa2\xa2\x22\ -\xf3\xf9\xf3\xe7\xb7\xff\x09\x90\x4a\xa5\x5a\x36\x36\x36\x26\x84\ -\x10\x9d\xdd\xdd\xdd\x34\x35\x35\x11\x8b\xc5\xf0\x7d\x9f\x6c\x36\ -\xcb\xea\xea\x2a\x73\x73\x73\x48\x29\x17\xee\xdd\xbb\xf7\x72\x65\ -\x65\xe5\xaf\x7f\x0d\xe8\xea\xea\x4a\x1e\x1d\x1d\xbd\x31\x4d\x53\ -\xef\xed\xed\xa5\xb6\xb6\x16\xc3\x30\xd0\x34\x0d\xdf\xf7\xf1\x3c\ -\x8f\x7c\x3e\xcf\xf7\xef\xdf\x99\x9c\x9c\xe4\xe3\xc7\x8f\xb2\xb2\ -\xb2\xb2\x77\x67\x67\xa7\x68\x36\x91\x42\xa7\xa7\xa7\xa7\x65\x7b\ -\x7b\x7b\xfe\xe9\xd3\xa7\xfa\xd0\xd0\x10\x35\x35\x35\x94\x97\x97\ -\x53\x5d\x5d\x4d\x4d\x4d\x0d\x77\xee\xdc\x21\x16\x8b\x51\x56\x56\ -\x46\x59\x59\x19\x8d\x8d\x8d\xd8\xb6\x2d\xd6\xd7\xd7\xfb\xee\xdf\ -\xbf\xff\xee\xe4\xe4\xe4\xe8\x32\x80\x5e\xe8\x7c\xfd\xfa\x75\xc2\ -\x34\x4d\xbd\xbf\xbf\x9f\xd7\xaf\x5f\x63\x18\x06\x86\x61\x20\x84\ -\x60\x7a\x7a\x9a\x20\x08\xe8\xef\xef\x27\x08\x02\x82\x20\xc0\xf3\ -\x3c\x5e\xbd\x7a\xc5\xe1\xe1\xa1\xfe\xe5\xcb\x97\x09\xa0\xeb\x32\ -\x80\x00\x68\x6e\x6e\x4e\xfa\xbe\xdf\x39\x38\x38\xc8\xad\x5b\xb7\ -\x88\x46\xa3\x94\x94\x94\x20\x84\x40\xd3\x34\x84\x10\x61\x5f\xd3\ -\x7e\xaa\x1a\x89\x44\x78\xf8\xf0\x21\xe9\x74\x9a\x20\x08\x3a\xab\ -\xab\xab\x93\x45\x01\xd9\x6c\xb6\x2f\x99\x4c\x52\x57\x57\xc7\xed\ -\xdb\xb7\xd1\xf5\x9f\x89\x65\x32\x19\x32\x99\x4c\xe8\x78\x66\x66\ -\x86\xa9\xa9\xa9\xf0\x5b\x08\x41\x73\x73\x33\x89\x44\x02\xdb\xb6\ -\xfb\x8a\x02\x1c\xc7\x31\xdb\xdb\xdb\x89\x46\xa3\x94\x97\x97\x87\ -\x51\x06\x41\x70\x61\x71\x41\x9e\x0b\x55\xa2\x69\x3c\x7a\xf4\x08\ -\xa5\x94\x59\xb4\x8a\xaa\xaa\xaa\xbc\xd9\xd9\x59\xfd\xee\xdd\xbb\ -\x54\x56\x56\x12\x8d\x46\x89\x44\x22\x44\x22\x11\x84\x10\xa1\x73\ -\xdf\xf7\x51\x4a\xe1\x79\x5e\x58\x51\xb9\x5c\x8e\x83\x83\x03\x1e\ -\x3f\x7e\x2c\x5d\xd7\x35\x2e\xdd\x64\xa5\x14\x9a\xa6\xa1\xeb\x3a\ -\x4a\x29\xce\x7e\xaa\x5f\xb2\x28\xcc\x9d\x07\x49\x29\xf1\x3c\xef\ -\x97\xcc\x2e\x48\xa4\x94\xda\xdf\xdd\xdd\x0d\x6b\x7d\x60\x60\x80\ -\x67\xcf\x9e\x21\xa5\x0c\xed\xbc\xb3\x54\x2a\xc5\xf0\xf0\x30\x9e\ -\xe7\xe1\xba\x2e\x5b\x5b\x5b\x28\xa5\xf6\x8b\x02\x82\x20\x58\xfe\ -\xf0\xe1\x03\xf9\x7c\x1e\xd7\x75\xc3\x28\x5d\xd7\xc5\x71\x9c\xd0\ -\x5c\xd7\xc5\x75\xdd\x30\x83\xc2\xf8\xdc\xdc\x1c\xbe\xef\x2f\x17\ -\x05\x08\x21\x32\x99\x4c\x86\xed\xed\x6d\x6c\xdb\x0e\xa5\x48\xa5\ -\x52\x0c\x0c\x0c\x60\xdb\x36\x8e\xe3\x90\x4a\xa5\x78\xfe\xfc\x39\ -\x52\x4a\x94\x52\xd8\xb6\xcd\xb7\x6f\xdf\x78\xff\xfe\x3d\x40\xa6\ -\x28\xc0\xb2\xac\x0d\x29\xe5\xc2\xd8\xd8\x18\x96\x65\x5d\xd0\x57\ -\x29\x85\x65\x59\xe1\x78\xc1\xa4\x94\x9c\x9e\x9e\x32\x3e\x3e\x8e\ -\xef\xfb\x0b\xc0\xdb\x2b\xcf\x22\xc3\x30\x5a\x80\x95\x27\x4f\x9e\ -\xe8\x23\x23\x23\x18\x86\x81\xae\xeb\x61\xcd\xfb\xbe\x1f\x6e\xb4\ -\xeb\xba\xe4\x72\x39\xc6\xc7\xc7\x99\x9f\x9f\x97\xc0\xef\xc0\xbb\ -\x2b\xcf\x22\xdf\xf7\xa3\x9a\xa6\x2d\x6c\x6d\x6d\xf5\xad\xad\xad\ -\x89\xfa\xfa\x7a\x4a\x4b\x4b\x71\x5d\x37\x94\xc8\x71\x1c\x2c\xcb\ -\x62\x73\x73\x93\xb1\xb1\x31\x3e\x7d\xfa\x24\x81\x1c\xf0\x07\x70\ -\x02\xfc\x79\xdd\x71\x1d\x07\x62\x9a\xa6\x4d\x08\x21\x3a\x3b\x3a\ -\x3a\x68\x6b\x6b\xa3\xa1\xa1\x01\x80\x9d\x9d\x1d\x96\x96\x96\x58\ -\x5c\x5c\x04\x58\x00\x5e\x02\x6f\x80\xaa\xb3\x60\x8f\x81\x17\xc0\ -\xec\x75\x17\x4e\x1c\xf8\x0d\xe8\x03\x4c\xe0\xc1\xd9\xf8\x3e\xb0\ -\x7c\xb6\xa1\xc7\xc0\x21\x40\x43\x43\xc3\x26\xa0\xed\xed\xed\x09\ -\xc0\x03\x12\x67\xeb\xae\x6d\xf1\x2b\xec\xfc\x9a\xe3\x74\x3a\xed\ -\xb5\xb6\xb6\xda\xc0\xe9\x99\x6c\xf1\x9b\xbc\x7a\xe3\xc0\x8f\xd1\ -\xd1\x51\x65\x9a\xa6\x04\x7e\x00\xd6\x4d\x42\x0a\x59\xe5\xd3\xe9\ -\xb4\x17\x8f\xc7\xbd\x9b\x06\x9c\x87\x1c\x01\x0a\xe8\x04\xe2\xda\ -\x0d\xbf\x52\xce\x47\xfc\x37\xc0\x3f\x72\x9e\x0b\x66\xc1\xc5\x97\ -\x96\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\ -\x00\x00\x05\x55\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x18\x00\x00\x00\x18\x08\x06\x00\x00\x00\xe0\x77\x3d\xf8\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xb1\x8f\x0b\xfc\x61\x05\ -\x00\x00\x00\x06\x62\x4b\x47\x44\x00\x00\x00\x00\x00\x00\xf9\x43\ -\xbb\x7f\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x0b\x12\x00\x00\ -\x0b\x12\x01\xd2\xdd\x7e\xfc\x00\x00\x00\x07\x74\x49\x4d\x45\x07\ -\xd3\x01\x09\x0a\x09\x03\x5d\x4a\xcd\x3e\x00\x00\x04\xd2\x49\x44\ -\x41\x54\x78\xda\xbd\x94\x6f\x48\x95\x57\x1c\xc7\x3f\xcf\xf3\xdc\ -\xeb\x9d\xde\xeb\xbc\x7a\xef\x75\xa0\xd9\x35\xbd\xb0\x69\xea\xa2\ -\x49\x84\x5b\x28\x1a\x43\x73\x68\x21\xad\x26\xfd\x31\x26\x24\x1b\ -\xad\x16\xc4\x10\xc6\x20\x88\xb9\x37\x0e\xdf\xd5\x5e\x8c\xc5\x20\ -\x46\x6b\x25\x73\xf6\x42\x25\xb6\x4c\x2c\xff\x34\x72\x7a\x85\xea\ -\x8a\x9a\x7f\xe1\xfa\x87\xf2\xa6\xf7\xde\xe7\x79\xce\xb3\x17\x99\ -\x69\xf3\x4a\xbd\xd9\x0f\x0e\xe7\x70\x7e\xf0\xfb\x9c\xef\x39\xbf\ -\xf3\x95\x88\x10\x25\x25\x25\x65\x7e\xbf\x7f\x7f\x28\x14\xca\xd3\ -\x34\x6d\xb3\xae\xeb\x00\x8f\x80\xce\xb8\xb8\xb8\x2b\x3d\x3d\x3d\ -\x4d\xbc\x42\x48\x2f\x6f\x1c\x3e\x7c\x78\x7b\x5f\x5f\xdf\xf7\xb2\ -\x2c\xe7\x17\x15\x15\x91\x93\x93\x83\xc3\xe1\x40\x08\x81\xdf\xef\ -\xa7\xbb\xbb\x9b\x96\x96\x16\x34\x4d\xbb\x99\x9c\x9c\x7c\xba\xab\ -\xab\xeb\xef\x57\x06\x14\x14\x14\x94\x4d\x4d\x4d\x5d\xcd\xcb\xcb\ -\x33\x55\x54\x54\x90\x98\x98\x88\xd9\x6c\x46\x92\x24\x84\x10\xa8\ -\xaa\x4a\x30\x18\x64\x72\x72\x92\x4b\x97\x2e\x71\xfb\xf6\x6d\xcd\ -\x6e\xb7\x57\x0c\x0d\x0d\x45\x54\xa3\x3c\x5f\x94\x97\x97\x6f\x7f\ -\xf8\xf0\x61\xdb\xbe\x7d\xfb\x4c\x47\x8f\x1e\xc5\xe9\x74\x12\x1b\ -\x1b\x4b\x42\x42\x02\x4e\xa7\x13\x97\xcb\x85\xc3\xe1\xc0\x66\xb3\ -\x61\xb3\xd9\xc8\xce\xce\x66\x69\x69\x49\xbe\x77\xef\xde\xfe\x4d\ -\x9b\x36\x5d\x9f\x9b\x9b\x9b\xda\x10\x10\x0e\x87\x7f\xc9\xcb\xcb\ -\x4b\xab\xae\xae\xc6\x66\xb3\x61\xb7\xdb\x71\xb9\x5c\xd8\x6c\x36\ -\x2c\x16\x0b\x8a\xa2\xa0\x28\x0a\x16\x8b\x85\xd8\xd8\x58\xac\x56\ -\x2b\xe9\xe9\xe9\x3c\x78\xf0\x40\xf6\xf9\x7c\xef\x84\x42\xa1\x8b\ -\xeb\x01\x64\x80\x6d\xdb\xb6\x95\x09\x21\xf2\x8f\x1c\x39\x42\x4c\ -\x4c\x0c\x76\xbb\x1d\xa7\xd3\x49\x54\x54\x14\x8a\xa2\x20\xcb\x32\ -\xb2\x2c\xaf\x40\x64\x59\xc6\x6a\xb5\x92\x96\x96\x46\x4d\x4d\x0d\ -\x86\x61\xe4\x27\x24\x24\x94\x45\x54\x60\x18\xc6\xd7\x85\x85\x85\ -\x39\x19\x19\x19\x68\x9a\x86\x10\x82\xc7\x8f\x1f\xa3\x28\x0a\x31\ -\x31\x31\x48\xd2\x8b\xa7\x32\x0c\x03\x00\x21\x04\xba\xae\xe3\x70\ -\x38\x18\x1b\x1b\xc3\xeb\xf5\xea\x9a\xa6\x35\xae\xa7\xa0\x22\x1c\ -\x0e\x1f\x2a\x2d\x2d\xc5\xe3\xf1\x90\x9d\x9d\x4d\x7a\x7a\x3a\x6d\ -\xdd\xf7\x39\x74\xa6\x81\x89\x89\x89\x95\xa2\x86\x61\xb0\xf7\xb3\ -\x73\xfc\x78\xa5\xf5\x45\x97\x48\x12\xbb\x77\xef\x46\xd7\xf5\xbc\ -\x48\x57\xf4\x9b\xa2\x28\xa4\xa4\xa4\x60\xb1\x58\xb8\x3f\x3c\xc1\ -\x07\x9f\x7c\xc5\xc5\x6b\x37\x78\x3b\x2d\x19\xa7\xd3\x89\xcf\xe7\ -\x43\x08\x81\x61\x18\xec\xc9\xcf\xe5\xa7\x6b\x37\x28\xaa\xfa\x86\ -\xfb\xc3\xcf\xe0\x1e\x8f\x07\x60\x73\xa4\x36\x35\xe2\xe3\xe3\x69\ -\x6e\x6e\xe6\xfc\xd5\x0e\xbc\xbe\x31\x5e\x27\x72\x33\xb7\xb0\xbf\ -\x30\x9b\xd2\xd2\x52\x4d\x55\x55\xf3\xcb\x79\x13\x40\x52\x52\x12\ -\xc3\xc3\xc3\x9c\xfb\xe2\x00\x23\x93\x33\x7c\xf9\xdd\xb3\x86\xf8\ -\xa8\x20\x97\xda\x9a\x8f\x51\x55\x95\x40\x20\x80\xdf\xef\xe7\xcf\ -\xbb\x3e\x7e\xfe\xfd\x2f\x00\xbe\x3d\x79\x80\x24\xe7\x9b\xb4\xb7\ -\xb7\xa3\xeb\xfa\xa3\x88\x5d\xb4\x63\xc7\x0e\x5a\x5b\x5b\x09\x06\ -\x83\xa4\x26\x39\x69\x3e\x5f\xcb\x89\xca\x62\x7a\xfa\x7d\x84\x42\ -\x21\x34\x4d\x43\x96\x65\xec\x76\x3b\xbf\xdf\xe8\xe6\xc3\xf7\xdf\ -\xe5\xd7\xfa\x93\xa4\xbc\x15\x4f\x28\x14\xa2\xa5\xa5\x05\x21\x44\ -\x67\xc4\x2b\x6a\x6a\x6a\xe2\xe0\xc1\x83\x5c\xbe\x7c\x19\x8f\xc7\ -\x83\xc9\xa4\x10\x0e\xab\xcc\xcf\xcf\xaf\x74\x90\x24\x49\x68\x9a\ -\x86\xae\xeb\x58\xad\x56\xa2\xa3\xa3\x09\x06\x83\x0c\x0e\x0e\x72\ -\xec\xd8\x31\x84\x10\xe5\x40\xd3\xba\x0a\xb2\xb2\xb6\x92\x9b\x9b\ -\x4b\x5d\x5d\x1d\x81\xc0\x02\x8b\x8b\x8b\xe8\xba\x4e\x42\x7c\x3c\ -\x76\xbb\x1d\x9b\xcd\x46\x74\x74\x34\x26\x93\x09\x45\x91\x99\x9e\ -\x9e\x66\x61\x61\x81\x27\x4f\x9e\x50\x5f\x5f\x8f\x10\xe2\xe6\x7a\ -\xc5\x57\x14\xa8\xaa\xca\xad\x5b\xb7\xd8\xb3\x67\x0f\xc5\xc5\xc5\ -\x9c\x3a\x75\x0a\xb3\xd9\x8c\xa2\xc8\x18\xc6\xb3\xd3\xeb\xba\x8e\ -\xa6\x69\x84\x42\x41\x66\x66\x66\x89\x8b\x8b\xa3\xa1\xa1\x81\xb6\ -\xb6\x36\x0d\xd8\x0b\x5c\xdf\x10\xd0\xdf\xdf\x8f\x77\x60\x80\x4f\ -\xab\xab\xc9\xcc\xcc\xe4\xf8\xf1\xe3\xa4\xa5\x6d\x41\x96\x65\x84\ -\x30\x10\x42\x20\x84\xe0\xe9\xd3\x00\x7d\x7d\xff\xd0\xd8\xd8\xc8\ -\xe0\xe0\xa0\x06\x2c\x2e\xd7\x39\x03\xfc\x10\x01\x10\x66\x6e\x6e\ -\x8e\x91\x91\x51\xe6\xe7\xe7\x39\x7b\xf6\x2c\xdd\xdd\xdd\xec\xda\ -\xb5\x8b\x9d\x3b\x77\xe2\x76\xbb\x01\x18\x1a\xf2\xd1\xd1\xd1\xc1\ -\x9d\x3b\x5d\x00\x37\x81\xd3\xc0\x55\x20\x7e\xd9\x15\x66\x80\x13\ -\x40\xf3\x5a\x40\x38\xcc\xec\xec\x2c\x48\x60\x08\x83\xb1\xf1\x31\ -\xbc\xde\x41\xfe\x68\x6a\xa2\xa7\xb7\x97\xc9\xc9\x49\x00\x5c\x2e\ -\x17\xd3\xd3\xd3\x00\xe5\xcb\xc5\x26\x00\x52\x53\x53\x07\x00\x69\ -\x64\x64\x44\x06\x54\xa0\x04\xe8\x5c\x01\xe8\xba\x8e\xdf\xef\x47\ -\x08\xb1\x46\xde\xf8\xf8\xf8\x1a\x0f\x1a\x1a\x1a\xa2\xb2\xb2\x12\ -\x20\x15\x18\x5d\x4e\xb9\x81\xbb\x35\x35\x35\x71\xbd\xbd\xbd\x5a\ -\x6f\x6f\xaf\xba\xfc\xbf\x32\x80\x51\xd3\xea\x02\x92\x24\xad\xf8\ -\x0e\x40\x72\x72\xf2\x1a\x83\x0b\x04\x02\xcf\x53\xa3\xab\xce\x31\ -\x0a\xbc\x77\xe1\xc2\x85\x81\xda\xda\xda\x98\xa8\xa8\x28\x73\x67\ -\x67\xe7\x12\xe0\x05\xb6\xca\xab\x01\xcf\xfd\x66\xf5\xfa\xe5\xbd\ -\x0d\x22\xab\xae\xae\x4e\xcd\xc9\xc9\x31\xdc\x6e\xf7\x1b\x6b\xde\ -\xa0\xbd\xbd\x1d\x55\x55\xff\x63\xc9\xab\xd5\x00\x4c\x4c\x4c\x50\ -\x55\x55\xe5\x05\xb2\xd6\x01\xb8\x97\xe7\x3b\x40\x22\x50\x08\x8c\ -\x00\x7c\x0e\x18\xaf\x31\xaa\x37\x50\xe1\x5e\x35\xfe\x9f\xf8\x17\ -\xc1\x08\x40\x3b\x9d\x7d\xa8\x8b\x00\x00\x00\x00\x49\x45\x4e\x44\ -\xae\x42\x60\x82\ -\x00\x00\x08\x96\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x06\x62\x4b\x47\x44\x00\xff\x00\xff\x00\xff\xa0\xbd\ -\xa7\x93\x00\x00\x08\x4b\x49\x44\x41\x54\x68\x81\xed\x99\x59\x6c\ -\x5c\xd5\x1d\x87\xbf\xbb\xcc\xea\x59\x3c\xbb\x97\xc4\x4b\xbc\x11\ -\x27\x26\x09\x01\x15\x2a\x14\xd4\x96\x50\xa9\x0b\x11\x09\xa8\x55\ -\x91\x20\x2f\x54\x95\xda\xbe\x54\x7d\xaa\x5a\x35\x20\x2a\xf1\x90\ -\x87\x2a\x40\xa1\x2a\x05\x4a\x68\x1a\x22\x91\x92\x86\xe0\x42\xd2\ -\x34\x24\x61\xb1\xe3\x38\xb6\x63\x3b\xc1\x8e\x67\xbc\x3b\x33\xe3\ -\x75\x3c\xcb\x9d\x99\xbb\xf4\xc1\xa4\x35\x59\x88\x1d\x4c\xcd\x83\ -\x3f\xe9\x3c\xcd\x3d\x67\xbe\xdf\x3d\x77\xce\xcc\xff\x3f\xb0\xc2\ -\x0a\x2b\xac\xb0\xc2\x17\x40\x58\x6e\x81\x9b\xb2\x0b\x91\x20\x15\ -\x38\x88\xf2\x18\xa9\xab\x5f\x16\x97\xc3\x69\xc1\xbc\x48\x0d\x21\ -\x3e\x10\x4c\x42\x1f\x09\x22\x3c\xce\xba\xab\x2f\x91\x96\xc3\xeb\ -\xa6\x18\x08\x04\xf9\x19\x08\x07\x03\x45\xc1\xca\xfa\xda\x3a\xd2\ -\x8a\x52\xa0\x8c\x2a\xe5\xb4\x70\x04\xc8\x5e\xb9\x54\x5e\x46\xcd\ -\xeb\xf3\xbc\x6d\xb5\xf0\xac\xfa\x8a\xc5\x6a\xfa\x56\x79\xd5\x2a\ -\xbe\x53\xbd\x86\x98\xa2\x70\x49\x17\x11\xf2\x92\xd5\x40\x0b\x01\ -\x33\x57\x2e\xff\x4a\x05\x90\xf6\x58\x1f\x13\x54\xfd\x59\x7f\x49\ -\xd0\xb5\xb1\xae\x8c\x9d\x95\x95\x1c\x8b\x46\x79\xbf\x3b\xcc\xec\ -\xe5\x64\xc6\x38\x66\x9c\x02\x94\xf9\x73\xbe\x12\x01\x6c\x7b\x6c\ -\xab\x54\x55\x7c\xc5\x24\x99\xee\x5f\x5d\x5b\xc4\xb6\xba\x4a\xb6\ -\x95\x96\xb2\x6f\x70\x90\xf7\x3a\xc3\x44\x7b\xc7\x33\xfa\x5f\xb5\ -\x17\xe9\xd7\x4f\x00\xa3\xf3\xe7\x2e\x7b\x00\xeb\x6e\xf7\x8f\xf5\ -\x1c\xbb\x7d\xa5\x2e\xe7\xda\xba\x12\x76\x56\x95\x53\xe3\x32\x73\ -\x70\x70\x84\x77\x3a\xc3\x44\x7b\x26\xb2\xfa\x81\xfc\xcb\x7a\xbb\ -\x7a\x18\xf8\x08\x50\xe7\xcf\x5f\xb6\x00\xce\xdd\x4e\xbf\xaa\x99\ -\xfe\x28\x49\xd2\xf6\xe2\x3a\x1f\x5b\xd7\xae\xe6\xc1\x32\x1b\x79\ -\x71\x98\xc6\x51\x0f\x6f\x75\x86\xb9\xdc\x3d\xa1\xaa\x87\x73\xaf\ -\x69\x2d\xf9\x43\xc0\x87\x40\xee\xea\x75\x96\x25\x80\xfd\x99\xd0\ -\x36\x2d\xaf\xbf\xe4\x0a\xd8\xfc\x55\xeb\x82\x3c\x5a\x53\x46\xd0\ -\xdb\xc7\x34\x59\x7a\x46\x6b\x38\xd0\xd6\xc7\x58\xc7\xa4\xaa\x1e\ -\xc9\xbe\xa6\x9d\x56\xfe\x0e\x9c\x66\xde\xc9\x33\x9f\xeb\x07\xd8\ -\x55\x61\xb5\xca\xd9\x90\xf2\xeb\xb1\x81\x25\x35\xdf\x55\x62\x77\ -\x48\xfa\x6e\x51\x10\x7f\x52\xb4\xd6\x2f\xdc\x53\x5b\xc4\xf6\x4a\ -\x3b\x31\xf3\x09\x14\xdc\x0c\x8c\xae\x67\x5f\x7b\x3f\xa3\x1d\x93\ -\x46\xfe\xb4\xf2\x56\xfe\x74\xfa\x2d\xe0\x24\x90\xb9\xd1\x92\xd7\ -\x7c\x13\x17\x3e\x5d\x5c\xae\x6b\xe2\x49\x41\x14\xca\xf4\xa4\xfe\ -\xb1\x31\xaa\x6d\x4b\xee\x8d\xc6\xbe\xa8\xbb\xf3\xa9\xd2\x7b\x04\ -\x43\xd8\x6b\x2d\x34\x57\x95\x37\x78\xf9\xc1\x6d\xa5\x54\x06\xe2\ -\x8c\xc9\x2d\x14\xe8\x41\x62\x97\x37\xf1\xfa\xf9\x61\x86\x5a\xc7\ -\xc9\x36\x25\x0f\x67\x0e\x4d\xfd\x05\x38\xc6\xbc\x23\xf3\x7a\x5c\ -\xb3\x03\x86\x6a\x7e\xc2\x19\xb4\x96\x15\xd7\xbb\x18\x39\x3f\x73\ -\x77\x4a\x4d\x35\x59\xb7\xb8\xbf\xa9\x9c\x9c\x89\xdc\x92\xf9\x9e\ -\x6a\x8b\x7b\x32\xf7\xa4\x80\xf0\x4b\xef\x1a\xa7\xd4\x50\xef\xe5\ -\xe1\x2a\x0f\x82\xf3\x13\xe2\xe2\x28\x36\xdd\x47\x32\xbe\x99\xbf\ -\x75\x8e\x30\x72\x76\x9a\x5c\xab\xf2\x5e\xe6\xd0\xd4\x3e\xe0\xf8\ -\xcd\xe4\xaf\x1b\x40\xcc\x4a\x26\x51\x17\x59\xef\x75\xe1\xdd\x6c\ -\xa5\x4b\x8b\x57\x24\x75\xf9\x38\xb0\xe8\x10\x85\xbf\xa9\xdc\x20\ -\x44\xf5\xd7\xcd\x2e\xeb\xfa\xe2\xf5\x6e\xb6\xd6\xf8\xb9\xbb\x4c\ -\x27\x65\xb9\x40\x96\x04\x66\xdd\x4d\x26\xb6\x91\x57\xce\x8f\x31\ -\x7c\x66\x86\x5c\x47\xe6\xfd\xf4\x9b\xf1\xd7\x80\x7f\x01\x53\x0b\ -\x79\x8f\x6b\x7e\x4a\x38\xbe\x5e\x38\x94\x4f\xf3\x53\xd5\x2b\x0b\ -\x8f\xd7\x17\x33\x61\x17\x99\x49\xa9\x85\x86\xcd\xb4\xc3\x70\xcb\ -\x87\xb5\xbe\xf4\xe4\x4d\x57\xdd\xb5\xce\xec\xbb\xd7\xf3\x3b\x11\ -\xf1\x55\x4f\x95\xa3\xe8\xf6\x3b\x03\xec\x6c\x08\xb1\xa6\x78\x96\ -\xac\x39\x8a\x86\x82\xa0\x59\x98\x8d\x35\xf0\x6a\x7b\x9c\xa1\xe6\ -\x69\xb2\x9d\xc9\x53\xc9\x03\x63\x7f\x66\xee\xb1\x59\xf0\x23\x7b\ -\x4d\x80\xf4\x07\xd3\x13\xf6\x3b\xfc\x5b\x74\x49\xaa\xf4\x15\x59\ -\xf8\xf6\x6a\x3f\x63\x26\x83\x44\x52\x77\x21\xcb\x3b\x64\x93\xf0\ -\x76\x6e\x30\x3d\x71\xa3\x05\x03\xbf\x5a\xb7\xd1\x96\xd3\xdf\xb5\ -\x14\x98\x1e\x2a\xd9\xe4\x11\xbf\xbb\x21\xc8\x83\x35\x2e\xac\xee\ -\x69\x54\x29\x85\x4e\x0e\x43\x17\x48\xc6\x6b\x78\xbd\x7d\x9a\xe1\ -\x33\x09\xb2\x17\x53\xcd\x89\xfd\xc3\x7f\x02\xde\x03\x2e\x2f\x54\ -\xfe\xba\x01\x00\x0a\xee\x0a\x0c\x6a\x0a\x3b\x33\x1e\x91\xfb\xcb\ -\xaa\xd9\xe8\xf7\x32\x20\x27\x99\x4d\xea\x2e\xdd\x6e\x79\x44\x74\ -\xca\x8d\xb9\x48\x32\xfe\x99\x49\x8f\x3c\x22\x05\xbf\x27\xfe\x56\ -\x34\x84\xbd\xee\x32\x5b\x51\xcd\xe6\x42\x7e\xb8\xce\x47\xc3\x6a\ -\x13\xa2\x2d\x8d\x26\x28\xe8\x64\xd1\x75\x9d\xd9\x68\x25\xfb\xce\ -\x27\x19\x6a\x4e\x90\xb9\x98\x6e\x9d\xd9\xd7\xff\x02\x73\x77\x7e\ -\x64\x31\xf2\x37\x0c\x90\x6e\x1e\xef\xb7\x6f\x0c\xee\xd0\x4c\x52\ -\xc8\xe1\xcb\x70\x5f\xc9\x03\xac\x72\xa6\x19\x92\x52\x24\x53\x38\ -\x0c\x93\x69\x87\xe8\x92\xfe\x1b\xc2\xff\x8b\x0d\xb5\x4e\xf7\xc4\ -\x11\x93\x55\x7e\x34\xb0\xc1\x29\x6e\xd9\x58\xc8\xf6\xb5\x5e\x8a\ -\xfd\x32\x82\x9c\x43\x63\x4e\x5e\xd3\x35\x66\x62\x25\xbc\xd1\x91\ -\x66\xe0\xa3\x24\xe9\x4b\xe9\xce\xa9\xfd\xfd\x7f\xc0\x30\x8e\x02\ -\x83\x8b\x95\xbf\x61\x00\x80\x82\x0d\xa1\x84\x96\x93\xb6\xe7\xfc\ -\x02\xf5\x01\x99\x3a\xcf\xd7\x08\x16\x4c\x31\x24\x65\x48\xa5\x05\ -\x07\xa2\xf5\x61\xc1\x69\x69\xf4\x3d\x54\xfd\x23\x49\x10\xdf\x74\ -\xac\xb2\x94\x97\xdf\xe1\x60\x5b\x83\x9b\x7b\xd7\xf8\x71\x3a\x44\ -\x34\x21\x8b\x86\x82\x46\x16\x55\xcf\x33\x19\xf5\x71\xa0\x5d\xa1\ -\xbf\x49\x41\x89\x64\x7a\xa6\x0e\xf4\x3e\x67\xe4\xf5\x63\xc0\xad\ -\x9d\x70\x9f\x17\x20\x55\x75\x5f\xb7\x53\x9a\x7a\x22\x6f\x11\x9d\ -\x85\x81\x24\xb5\xde\x0a\x8a\xec\xab\xf0\x17\x4c\x33\x2c\x2a\x64\ -\x52\x82\x43\xb4\xda\x76\x9a\xac\xf2\xf7\x3d\xeb\xac\xf2\x9d\x9b\ -\xec\x6c\xaf\xf7\x71\x5b\x89\x0f\xd9\xac\xa3\x31\x4f\xde\xc8\x31\ -\x11\x73\x71\xb0\x3d\xcf\x60\x53\x0e\x65\x40\x19\x1e\x3f\xd8\xfb\ -\xbc\x9e\x56\x8f\x01\x3d\xb7\x2a\xff\xb9\x01\xe8\xee\x36\x9c\xeb\ -\x8b\x44\x43\x95\xb6\xaa\x7e\x81\xea\x80\x80\xcb\xea\xc2\x6f\xf7\ -\xe3\xb3\x27\x18\x11\x73\x64\x55\xd1\x14\x6c\xb0\xf0\xc0\xed\x76\ -\xb6\xd6\x95\x12\xf2\x38\xd0\xc5\xdc\x55\xf2\x59\x62\x51\x3b\x87\ -\xda\x35\x06\x5a\x54\xd2\x61\x65\x64\xfc\xcd\x0b\xbf\xd7\x66\xb3\ -\x8d\xc0\x05\xc0\xf8\x72\x02\x00\xee\x6f\x54\x9c\x23\x21\xfc\x5c\ -\xb1\x89\x96\x50\x28\x45\xb9\x27\x00\xa2\x86\xb7\xc0\x85\xcb\x96\ -\x44\x76\xeb\xdc\x5f\xe7\x60\x73\x45\x09\x76\xab\x34\x4f\xfc\x53\ -\x79\x14\xe2\x71\x99\x77\x3a\x04\x22\x4d\x2a\xa9\x4b\xd9\xcb\xf1\ -\x43\x5d\x7b\xd4\x84\xf2\x4f\xa0\xfb\x8b\xca\xdf\x34\x40\xe2\xe3\ -\x61\xd5\x75\xdb\xaa\x10\xba\xe9\x6e\xd5\xab\xb3\x26\x20\x61\xb3\ -\xc8\x20\x68\xf8\x9d\x4e\x6a\x43\x05\x94\x7a\x5c\x88\x92\x3a\xf7\ -\x21\x9d\x27\xae\x91\x25\x1a\x13\x38\xd2\x2a\x13\x3e\xa3\x93\xee\ -\x55\xc7\xe3\xef\x74\x3e\x9b\x9f\x4a\x1f\x05\x3a\x96\x42\x1e\x16\ -\x50\xd4\xeb\x92\xfd\x69\x35\x2e\x64\x23\xfd\x70\x21\x3a\x4c\x8e\ -\x14\x79\x52\x18\x42\x1a\xb3\x59\x43\x15\x32\xa8\xa4\xc9\x93\x46\ -\x25\x83\x4a\x06\x8d\x2c\xc3\x51\x9d\xc6\x73\x12\x91\x56\x83\x4c\ -\x8f\x3e\x1d\x7f\xb7\xeb\x85\xdc\x44\xf2\x28\x70\x0e\xd0\x97\x42\ -\x1e\x16\x50\xd4\xcf\xb6\x47\x32\x85\x75\x65\xf5\x82\x61\x6a\xd0\ -\xbd\x79\x2a\x82\x60\x31\x1b\xe8\x7c\xf6\x59\xff\xdf\x50\x18\x89\ -\xea\x1c\x6f\x33\x13\x39\x2b\xa2\x5c\xd0\x67\xa3\xc7\xcf\xbf\xa8\ -\x5c\x9e\x6a\x04\xce\x00\xda\x52\xc9\xc3\x02\xdb\x2a\x82\x6c\x7b\ -\x52\x1d\x95\x8c\xc8\x80\x44\x5f\x2c\x4e\xfe\xd3\x5d\x98\x1b\x57\ -\xee\xfe\xdc\x18\x89\xab\xfc\xbb\xcd\x42\xf8\xac\x89\x4c\x97\x94\ -\x89\x9f\xea\x7a\x29\x33\x3a\xd1\x08\x34\x71\x55\x35\xb5\x14\x2c\ -\xa8\xad\x32\xdd\x71\x69\xc2\x53\x5b\xbd\x45\x10\xe5\x4a\xbd\x30\ -\x4f\x59\x71\x1e\xd9\x94\x9f\xb7\x0b\x73\x63\x6c\x5c\xe7\x44\xab\ -\x83\x70\xab\x05\xa5\x4b\xcc\xc6\x3e\x3a\xff\xd2\x6c\xff\xd8\x95\ -\x6a\x2a\xbf\xd4\xf2\xb0\x88\xc6\x96\xa0\x0a\x4f\x69\x03\x26\x06\ -\x86\x4d\xf4\x47\x53\x9f\xd9\x05\x95\x34\x23\xe3\x79\x4e\xb5\x16\ -\x10\x3e\x67\x25\xd7\x61\xca\xc5\x9a\xbb\x5e\x4e\x44\x86\xdf\x66\ -\xae\x8e\xbd\xa6\x14\x5c\x2a\x16\xdc\xd8\x9a\xbc\x78\x69\xc0\x57\ -\x55\xb7\x03\x59\x0a\x19\x85\x39\xca\x4a\x52\x88\x72\x16\x8d\x1c\ -\xd1\x49\xf8\xb0\xc5\xc3\xa5\x36\x27\xf9\x76\x8b\x1a\x3d\xd7\xb9\ -\x77\xba\x37\xfc\x0f\xe0\x04\x57\xb5\x41\x96\x9a\x45\xb5\x16\x05\ -\x95\x67\xb4\x88\x95\xa1\x21\x1b\x03\x51\x8d\x3c\x29\xa2\x53\x2a\ -\x1f\x9e\x75\xd1\xd7\xee\x24\xdf\x6a\xd7\xc7\x3b\x3e\x79\x63\xf2\ -\x93\xde\x2b\xf2\x37\x2c\x05\x97\x8a\x45\x05\xb8\xb8\x79\xd3\x7e\ -\x63\x96\xc1\x74\xd8\x4e\x4f\xd8\x4a\x74\x4a\xa3\xe9\xac\x8f\x70\ -\x9b\x17\xad\xa5\xc0\x98\xbc\xd0\x73\x30\xd6\xdd\x79\x90\x39\xf9\ -\x6b\x1a\xb1\x5f\x06\x8b\xeb\x8d\x9e\x38\x61\x04\xca\xd7\xca\x62\ -\xd6\xfa\x40\xce\xaf\x33\x99\x30\x13\x69\x0b\xa1\x35\x3b\x99\xe8\ -\x0d\xbf\x3d\xda\xd1\xf2\x06\x73\xd5\xd4\xf4\x97\x62\x7b\x1d\x16\ -\xdd\x9d\x0e\xe6\x1c\xcf\x19\x53\xf2\x54\xb2\xcf\xc5\x40\x47\x08\ -\xbd\xd9\xcd\x4c\xdf\xd0\xd1\x91\xf6\x8f\xf7\xb3\x88\x52\x70\xa9\ -\x58\x74\x77\xba\xbf\xbf\x4d\xf5\x97\x54\xe7\xa4\x89\xc2\xad\x44\ -\xec\x24\x86\x86\x4f\x46\xce\x1d\xdf\xcb\x9c\x7c\x74\xe9\x15\x3f\ -\x9f\x5b\xfe\x83\xc3\x13\x28\xbb\x37\x97\xcf\xde\x95\x9a\x8e\x0e\ -\x30\x77\x54\x8e\x2d\x9d\xd6\x0a\x2b\xac\xb0\xc2\x0a\xff\x27\xfe\ -\x03\x72\x48\xe3\xb0\x1d\x11\x42\x9d\x00\x00\x00\x00\x49\x45\x4e\ -\x44\xae\x42\x60\x82\ -\x00\x00\x07\xe2\ -\x89\ -\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\ -\x00\x00\x30\x00\x00\x00\x30\x08\x06\x00\x00\x00\x57\x02\xf9\x87\ -\x00\x00\x00\x04\x67\x41\x4d\x41\x00\x00\xaf\xc8\x37\x05\x8a\xe9\ -\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\x74\x77\x61\x72\x65\ -\x00\x41\x64\x6f\x62\x65\x20\x49\x6d\x61\x67\x65\x52\x65\x61\x64\ -\x79\x71\xc9\x65\x3c\x00\x00\x07\x74\x49\x44\x41\x54\x78\xda\xd5\ -\x59\x69\x4c\x54\x57\x18\x35\x21\xe2\x8a\xfc\x20\x10\x11\xca\xa8\ -\xd8\x61\x70\x60\x06\x4a\x91\xaa\x58\x94\x68\x54\xa4\x2e\x35\x26\ -\x60\x63\xa8\x68\x30\x06\xe2\xb8\x47\x62\x0d\xee\x8a\x8e\xe2\x86\ -\xbb\x8e\xbb\xb8\xa2\xe3\x2e\x28\x6e\xe3\x8a\x8e\xbb\xb8\x27\x28\ -\x7f\xc4\xa4\x09\x86\x5f\xfe\x38\xbd\xe7\xbe\xe2\x65\x22\x10\x41\ -\x68\x99\x97\x7c\x2c\x61\xde\x7b\xe7\x7c\xdf\xf9\xce\xfd\xee\xa5\ -\x05\x80\x16\x8d\x75\xf5\x8a\x8a\xf2\x16\x61\x13\x51\x24\x22\xa5\ -\x45\x13\x5f\x00\xe4\x97\xc6\x02\x6f\xee\x63\x36\xbf\x1d\xd3\xa6\ -\x0d\x2c\x9e\x9e\x18\xa0\xd7\xe3\x07\x7f\x7f\x9d\x3b\x10\x20\x78\ -\x0b\x01\x67\xb4\x6d\x0b\xc7\xd0\xa1\xb0\xf7\xe8\x81\xe1\xfe\xfe\ -\xe8\xa6\xd3\xa5\x35\x5f\x02\x4a\x32\xf9\x04\x9b\xd9\xa1\x03\x4a\ -\x4f\x9e\x04\x4e\x9f\x76\x03\x02\x4a\x32\xce\x3f\xda\xb7\x47\x6e\ -\x74\x34\x2a\x5f\xbf\x06\x00\xf7\x20\xc0\x06\x8d\x37\x18\xfe\xfe\ -\x53\x68\xbd\x30\x3d\x1d\xa8\xa8\x00\x3e\x7f\xd6\x42\x54\xa1\x99\ -\x12\x50\x2e\xf3\x5b\x60\x20\x2c\xad\x5a\xa1\x74\xff\x7e\xe0\xd3\ -\x27\xd7\x38\x76\xac\x59\x12\x20\x78\x1d\x25\x93\xe4\xed\x0d\xab\ -\x68\xd8\xca\x9b\x37\x81\x8f\x1f\x81\xf2\x72\x15\x1f\x3e\x00\x87\ -\x0f\x7f\x21\x10\xd1\xbd\xfb\x26\xde\xf7\x7f\x13\x20\xf8\x61\x94\ -\x0c\x2d\xd2\x9e\x9c\x0c\xbc\x79\x03\x94\x95\x01\xef\xdf\x6b\xf1\ -\xee\x9d\x16\xa5\xa5\x40\x5e\x9e\x24\x40\x79\xfd\xee\xe7\x87\x04\ -\x9d\x0e\x24\x2e\x9e\x91\x45\x32\xff\x35\x01\x82\xcf\x21\x88\x8c\ -\x76\xed\x50\xb2\x6a\x95\x06\x9e\x0d\xcb\x78\xf5\x4a\x8b\x97\x2f\ -\x81\x17\x2f\xb4\x78\xfe\x1c\x28\x29\x41\x69\x7e\x3e\x1c\x8b\x16\ -\xc1\x36\x68\x10\x2c\x5e\x5e\x60\xe5\x06\x06\x07\x83\xae\x25\x22\ -\xae\x89\x09\x28\xc9\x8c\xf2\xf1\xc1\xfc\xa0\x20\x94\x9f\x38\x21\ -\x81\xe1\xd9\x33\xe0\xe9\x53\x2d\x9e\x3c\x01\x1e\x3f\x06\x1e\x3d\ -\x02\x1e\x3e\xd4\xe2\xc1\x03\xe0\xfe\x7d\xc0\xe9\x04\xee\xdd\xd3\ -\xe2\xee\x5d\x38\x17\x2e\x84\xd5\x68\x64\x65\x64\x55\xd8\x4b\x7c\ -\x47\x93\x10\x60\x86\xe2\xc2\xc2\xa4\x64\xf2\x12\x12\x80\x5b\xb7\ -\x6a\x04\x47\x60\x28\x2e\x06\xee\xdc\x01\x6e\xdf\xd6\x3e\xc7\xde\ -\xb8\x71\x03\xb8\x7e\x5d\x0b\x87\x03\xb8\x76\x0d\xb8\x7a\x15\xb8\ -\x72\x45\x56\xd1\xda\xb5\x2b\x68\xbf\x94\x25\x1d\xad\x51\x09\x50\ -\xab\x2c\x75\x86\x78\x81\x73\xce\x9c\xda\x40\xd6\x08\x0e\x97\x2f\ -\x03\x97\x2e\x01\x45\x45\xc0\xc5\x8b\xc0\x85\x0b\x40\x61\x21\x70\ -\xfe\xbc\x16\x67\xcf\x02\x67\xce\xc8\xb5\xc2\x39\x71\x22\x2c\x2d\ -\x5b\x82\x8e\xc6\x6a\x7c\x1f\x01\x65\x91\x45\x6c\x3c\x4a\xa6\x74\ -\xeb\xd6\x9a\x80\xd6\x0c\xb2\xa0\x40\x03\x78\xee\x9c\x02\x79\xea\ -\x94\x5c\x13\x40\xe9\xd9\xed\xd2\x5e\x21\xfa\x02\x47\x8f\x02\x47\ -\x8e\x00\x87\x0e\xa1\x72\xdd\x3a\x58\x85\x5b\x51\xa6\x94\x2b\x31\ -\x34\x88\x00\xb5\x18\x6b\x36\x4b\xc9\xd8\xfa\xf4\x41\xe5\xf1\xe3\ -\x35\x81\x65\x36\x6b\x07\x4a\x90\xbc\x8f\x40\x35\x90\xd2\x52\x71\ -\xf0\x20\x70\xe0\x80\x74\x27\xec\xdb\x07\xec\xdd\x0b\xec\xde\x0d\ -\xec\xda\x05\xec\xdc\x09\x6c\xde\x0c\x9b\xe8\x0d\xbe\x5b\x91\xa8\ -\x3f\x01\x0b\x5d\xa2\xd0\x62\xd1\x40\xec\xd9\x43\x70\x5a\x66\x5d\ -\xc1\x32\xa3\x0a\xac\x96\x51\x02\x65\x46\xab\x03\xe5\x33\x14\xd0\ -\x1d\x3b\x80\xed\xdb\x81\x6d\xdb\x80\x2d\x5b\x24\x68\x6c\xdc\x08\ -\x6c\xd8\x00\xac\x5f\x0f\xe4\xe4\xc0\x11\x1b\xeb\x42\xa2\xbe\x04\ -\xe2\xe8\x0c\x16\xa1\xfb\x92\x4d\x9b\x98\x79\xbe\x80\x2f\xd4\xc0\ -\xa9\xcc\xba\x66\x95\x2b\xb1\x06\x56\x65\xd4\x66\xd3\xee\xa3\x04\ -\xab\x03\xcd\xcd\x05\xd6\xae\x05\xd6\xac\x01\x68\xc7\x2b\x57\x02\ -\x2b\x56\x00\xcb\x97\x03\xd9\xd9\x80\x70\xa9\x3c\xa3\x51\x36\x77\ -\x4c\x64\xe4\x29\x81\xcf\xa3\xbe\x3d\x90\xd2\xcf\x60\xa8\x90\xf3\ -\xcd\xd4\xa9\xd4\xbf\x06\xc8\x6a\xd5\x5e\x46\x62\xfc\x5d\x49\x40\ -\x65\x56\x03\xcb\xcf\xb8\x82\x5d\xbd\x5a\x81\xe5\x73\x96\x2d\x03\ -\x96\x2e\x05\x16\x2f\x06\xc4\x1a\x81\x05\x0b\x80\x79\xf3\x80\xac\ -\x2c\x80\x86\x21\xde\x6b\xeb\xd4\x09\xec\xc3\x68\xb3\x39\xbb\xde\ -\x2e\x24\x96\xfe\x9e\xbd\xc3\xc3\x9f\xc8\x09\x33\x2e\x0e\x95\xd4\ -\x3e\x25\x43\x00\x4b\x96\xf0\xa5\xcc\x14\x7f\x66\xf6\x08\x4e\x03\ -\x29\x9a\x51\x65\x56\x81\x65\x66\xf9\x59\xde\xf3\x15\xd8\xd9\xb3\ -\x81\x19\x33\x80\x49\x93\x80\x71\xe3\x00\xae\xf0\x62\x2f\x51\x19\ -\x1f\x8f\xf9\xe2\xfd\x74\x42\x81\x27\xb1\xde\x36\x1a\xda\xad\x9b\ -\x1f\x4b\x28\x67\x7c\x11\xa5\xcc\x38\x1b\x9a\x20\x49\x60\xfe\x7c\ -\x60\xee\x5c\x05\x62\xd6\x2c\x60\xe6\x4c\x60\xda\x34\xfe\xac\x81\ -\x62\x05\x27\x4f\xd6\xc0\x65\x64\x00\xc2\x32\x31\x61\x02\x30\x7e\ -\x3c\x90\x9a\xaa\x81\x1d\x35\x0a\x18\x39\x12\x18\x3e\x5c\x02\xc7\ -\x90\x21\xc0\xe0\xc1\xc0\xc0\x81\x28\x8d\x89\xc1\x38\x0f\x0f\xf4\ -\x36\x99\xca\x04\xa4\x36\x0d\x59\x89\x3d\xa2\x4d\xa6\x4c\xee\xb2\ -\xf8\x20\x07\xb3\x56\x5c\xcc\x06\xad\x9b\xc0\x94\x29\xb5\x83\x4e\ -\x49\x01\xc6\x8c\x01\x46\x8f\x06\x92\x92\xea\x24\x80\xfe\xfd\x61\ -\xef\xd2\x45\xda\x6b\x54\x78\x78\x4e\x83\x67\xa1\x70\x83\x21\x96\ -\x59\xa0\xa4\x6c\x89\x89\x94\x14\x5d\x89\xd2\xa8\x8b\x00\x6d\x95\ -\x84\x55\xd0\x04\xd8\x27\xd4\xfe\xd8\xb1\xdf\x44\xa0\x52\xd8\x79\ -\x66\xeb\xd6\x60\x5f\x76\xf4\xf5\xd5\x37\x80\x80\x92\xd4\x2f\x91\ -\x91\x0e\xb9\xc0\xe9\xf5\x94\x14\x47\x05\xda\x5f\xad\x04\x4a\x84\ -\x8c\xec\x69\x69\x55\x41\x67\x23\x79\x45\x88\xee\xc5\xcf\xd7\x41\ -\x00\xfd\xfa\xc1\x11\x12\x22\x5d\x29\xd2\x68\xcc\xa5\x2a\xbe\x67\ -\x3f\xe0\x41\x57\x90\x23\x86\xb7\xb7\xab\xa4\x58\x09\x57\x02\x1c\ -\xa7\x59\x7e\x39\x26\xb0\x97\xb8\xc6\x08\x77\x63\x02\xe8\x70\x8a\ -\x0c\x17\x3b\xca\xac\x16\x02\x10\x46\x92\xd9\xaa\x95\xaa\xc2\xf7\ -\xee\xc8\x7e\x0a\x0b\x1b\x1c\x67\x34\x56\xc8\x21\x8f\x8d\x48\x10\ -\x85\x85\x94\xc6\x57\x04\x08\xdc\x64\x30\x58\xb9\x2b\xe3\x77\xd1\ -\x53\x45\x04\x22\x2a\xc9\xbe\xa2\x24\x15\x11\x1a\x44\x2d\x04\x1c\ -\x82\x34\x93\x61\x0e\x0d\xcd\x66\x22\xbf\x7b\x4f\x2c\x00\xf9\xc7\ -\x44\x44\xdc\xe4\x43\x99\xd1\x72\xbb\x9d\x20\xb8\x0e\x28\x02\x5f\ -\x6f\x29\xdb\x8b\xf0\x11\xa1\x0b\x0b\x09\xf9\xab\xa7\xd1\x58\xcc\ -\xbf\xb3\x9a\xac\x08\xef\x97\x76\x3d\x62\xc4\x57\x04\x2a\x7b\xf6\ -\x84\x45\x39\x92\x4f\x63\x9d\x4a\x78\xf4\x30\x9b\x37\x71\xf5\x26\ -\x08\x27\x7d\x9f\x20\x38\x6a\x4c\x9f\xfe\x2d\x7b\x62\xef\xf0\x90\ -\x90\xb4\x5f\xbb\x77\x2f\x73\x59\x73\x0a\x0a\xe8\x56\x2e\x04\x20\ -\x9a\xd9\xa6\xed\xec\xd0\x35\x28\x68\x58\xa3\x9e\x0b\x09\x8b\x4b\ -\xa6\x2c\x28\x29\x36\x2b\x49\x70\x7a\xb5\x8b\x5d\x98\x22\x50\x77\ -\x35\x45\x6f\x1d\x66\xaf\xb0\x9a\x24\x21\xd7\x9c\xc4\x44\x17\x02\ -\x4e\x83\x41\xf6\x91\x90\xf0\x5e\x71\x9b\x67\xa3\x9e\xcc\x09\x49\ -\x84\x72\xf5\xa6\xa4\xac\x51\x51\x04\x41\x32\xb5\x11\xa8\x75\xcd\ -\x11\x19\x56\x24\x28\xcb\x84\x84\x2f\x04\xd0\xab\x57\x75\x19\xf9\ -\x35\xc5\xd9\xa8\x67\x8f\x88\x88\x3c\x66\x92\x03\x21\x89\x10\x90\ -\x2e\x20\x20\xf9\x5b\x1f\x20\xac\x3a\xd5\x85\x04\x67\x2a\x45\x00\ -\x36\x5f\x5f\xf9\xcc\x80\x8e\x1d\xe3\x1b\x99\x80\xba\x7e\x36\x99\ -\x26\x52\x52\x72\x97\x15\x1e\x5e\x42\x95\xd5\xf7\x8c\x95\x95\x63\ -\x4f\x48\x39\xa6\xa7\x7f\x21\xe0\x10\x16\xce\x2a\x1b\xf5\xfa\x2c\ -\x56\xad\x49\x08\xf0\xe2\x89\xf4\x8f\x9d\x3b\xa7\xfe\x0b\x5e\xd7\ -\x80\x53\x3f\x5b\x52\x95\x3b\xb1\x1f\x06\x0c\x90\x04\xca\x23\x22\ -\xb8\x5f\xe0\x68\x61\xa7\x09\x34\x11\x01\xa5\x6b\x0e\x61\x0d\x3d\ -\x30\xe6\x31\x3d\xdd\x8d\x16\xcd\xa9\x97\x04\x10\x13\xc3\x3e\xa8\ -\xaa\x6c\xa0\x0b\x81\x66\x76\x55\x6d\xb0\x94\x94\x84\x2b\x91\x80\ -\xd5\xcb\x8b\xff\x77\x20\x60\x7d\xf3\x25\xa0\x48\xe4\x53\x32\x9c\ -\xa3\xb8\x41\x22\x01\x7b\x40\x00\xd8\x5f\x34\x07\x77\x20\xa0\x63\ -\xb6\xe9\x68\xf2\xc8\xa6\x6f\x5f\x38\xc4\x88\xcd\x26\x37\x04\x07\ -\x4f\xa5\xf3\x35\x63\x02\xaa\xa1\x59\x05\x4e\xc0\x9c\x7a\x4b\x0c\ -\x06\x4e\xa7\xf2\xd0\x98\xe3\x89\x3b\x10\x30\xb3\x17\x38\xf8\xf1\ -\x50\xa1\xdc\x64\xaa\x4e\xc0\xaf\x79\x13\x50\x24\x9c\x9c\x5e\xe5\ -\xe2\x26\x46\x94\x34\x01\x59\xcc\x61\xc5\xe2\x4f\xfe\xee\x42\x20\ -\x85\x0b\x18\xf7\x20\xdc\x77\x54\x23\x10\xe8\x2e\x04\xbc\xb9\x91\ -\xa2\xa5\xf2\x0c\x2a\xd3\xd3\xb3\x8a\x80\xde\x0d\x08\x28\x4b\xad\ -\x92\x11\xd7\x02\x8e\xe1\xee\x46\xc0\x42\x19\x71\xdf\x41\x5b\xa5\ -\xbd\xba\x1b\x01\x1d\xdd\x88\xdb\x58\xb7\x24\xc0\xab\xaf\xd1\xf8\ -\x96\xa3\x76\x35\x02\x61\x6e\x45\x80\x7d\xc0\x93\x0d\xee\x37\x38\ -\xb2\x73\xda\x75\x37\x02\x66\xfe\xdb\x2b\x3e\x34\x54\xee\x09\xdc\ -\xab\x02\xea\x6a\x43\xe0\x22\xcc\x22\x7c\x88\xfd\x1f\xf9\x92\x41\ -\x48\x3f\x71\x1a\xd8\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\ -\x82\ +\x64\x20\x77\x69\x74\x68\x20\x54\x68\x65\x20\x47\x49\x4d\x50\xef\ +\x64\x25\x6e\x00\x00\x03\xa8\x49\x44\x41\x54\x78\xda\xad\x96\x5f\ +\x68\x1c\x55\x18\xc5\x7f\x77\x76\x36\x9b\x34\xe9\xda\x6e\xda\xb2\ +\x2a\x98\x27\x31\x55\xfa\x66\xdb\x6d\x82\x42\x5e\x35\x45\xf0\x29\ +\x46\x10\x82\xe0\x83\xa2\x82\xb5\x11\x04\x8b\xcf\xea\x8b\x0f\xe2\ +\x9f\x60\x7c\x08\x41\x6a\x71\x5b\xcd\xa3\x88\x6d\xd3\xc4\x9a\x36\ +\x69\x35\x14\x2a\xad\x94\xe2\x96\x4d\x28\x49\x48\xc8\xee\xce\xec\ +\xcc\xbd\x9f\x0f\x33\x3b\xfb\x67\x92\xda\xa2\x1f\x5c\x66\x19\x66\ +\xce\x39\xdf\xf9\xee\x3d\xb3\xf0\x3f\xd4\xd0\xd0\x90\x75\x3f\xcf\ +\xbd\x04\xc8\x03\xac\x32\xb0\x91\x4e\xa7\xa5\xb7\xb7\x57\x46\x46\ +\x46\x6e\x00\xed\x80\xda\x8e\x40\x16\x17\x17\xa5\x5c\x2e\xcb\xbf\ +\x95\xeb\xba\xe2\xba\x8e\xb8\xae\x23\xc5\x62\x51\x0a\x85\x82\xcc\ +\xcf\xcf\x4b\x4f\x4f\x4f\x01\xd8\x03\x6c\xd9\xd1\x7d\x81\xd7\x49\ +\x1c\x59\x5b\x5b\x95\xd3\xa7\xf3\xb2\xbc\xbc\x2c\x22\x22\x53\x53\ +\x53\x92\xcb\xe5\x34\x90\xae\x91\xd8\x8d\x0c\x1d\x1d\x1d\x00\x4c\ +\x4f\x4f\xc7\xd9\x45\x50\x4a\x21\x22\x88\x08\x5a\xfb\x38\x8e\x4b\ +\xa9\x54\x22\x95\x4a\x01\x30\x30\x30\x80\xe3\x38\xd6\xf0\xf0\xf0\ +\xc7\x9e\xe7\xbd\x13\xda\xd8\x88\x11\x2f\x63\x8c\x68\xad\xc5\xf7\ +\xbd\xe8\xea\x79\x9e\xb8\xae\x23\x1b\x1b\x1b\x32\x3e\x3e\xbe\xdd\ +\x8c\x46\x80\xa4\x6a\x21\x88\x3a\xa8\x29\x15\x31\x04\xb7\x25\x9c\ +\x5f\x70\x1f\xc0\xf7\x35\x4b\x4b\x45\xb2\xfb\xf6\xf1\xdb\xa5\x39\ +\x4e\x9c\xf8\x10\xaf\xd8\x4f\xe5\x4a\x86\xf4\x73\x53\x00\x9d\x31\ +\x82\x56\xe0\xe0\x2a\x4d\x16\x21\x82\xb2\x2c\xaa\xae\xcb\xca\xea\ +\x2a\x9e\xeb\xf0\xf8\x13\xfb\xf1\xef\x3e\x83\x37\x97\xe2\xb5\xb1\ +\xa2\x4c\x9c\xb9\xa6\x80\xbd\x76\xab\xd7\xc6\x68\xce\x9f\x9f\x8e\ +\x94\x06\x80\x20\x08\x0a\x85\x84\x0e\x18\x2d\x18\xa3\x31\xc6\xf0\ +\xfc\xe0\x51\xfc\xe5\x7e\xbc\xb9\x76\x8e\x7f\xb7\x46\x08\xfe\x3e\ +\xd0\x1e\xeb\xc0\xf3\xaa\x0d\xc0\x21\x09\x82\x18\x41\x59\x0a\x31\ +\x75\x8b\x44\x84\x9d\xe9\x87\xa8\x16\xfa\xa8\x2e\xec\xe0\xcd\xc9\ +\x4d\xbe\x39\x79\xb1\x86\xf7\x32\x70\x6e\x8b\x0e\x0c\x17\xa6\x2f\ +\x44\x4a\x03\xc0\x78\x07\xbe\xaf\x19\x1c\x3c\x8a\x7b\xeb\x08\xee\ +\xa5\x76\x5e\x9f\x58\x65\x22\xbf\xc0\xdb\x6f\xbc\xca\xa7\x9f\x7d\ +\x0d\xb0\x0e\x38\x71\x02\xad\x39\xd2\x97\x43\x4c\xa8\xb2\xc1\xaa\ +\x68\x9b\x1a\xc3\xae\xdd\xdd\xb8\x37\x73\x94\xaf\xed\xe1\xbd\x53\ +\x77\x98\xc8\x2f\x30\xf6\xe5\xe7\xdc\xbe\x75\xbd\x06\xb5\x06\xb8\ +\x5b\x77\x30\x33\x13\xf8\x1c\xda\x61\x85\xc0\x4a\xa9\xc8\x73\xe7\ +\xfa\x61\x2a\xf3\x29\x46\xcf\xfc\xcd\xd8\xb7\x57\x19\x1d\x3d\x46\ +\xa6\x3b\x43\x69\x3d\x53\x83\xaa\x00\xda\xde\xea\x48\xf7\xf7\xf5\ +\x21\x08\xc6\x98\x26\x02\x80\x5d\xbb\xbb\x29\xff\x71\x88\xd2\xe5\ +\x14\x6f\xe5\xd7\x99\xcc\x5f\x65\xec\xab\x2f\xc8\x64\x32\x3c\x9c\ +\xcd\xb2\xbe\x72\x27\xd2\x1a\x3b\xc9\x00\xbe\xf6\x99\x99\x99\xad\ +\xcd\x3d\x1c\x74\x30\x50\xcf\xf3\x00\xb8\x7d\xf3\x59\x3e\xfa\xf1\ +\x27\x26\xf3\xbf\x73\xfc\xdd\x63\x14\x97\x96\x10\x84\x03\x07\x9e\ +\x42\xb5\x44\x5d\x8c\x40\x6b\x4d\xee\xf0\xa1\x48\x71\x6d\xb7\x78\ +\x5e\x95\x47\x1e\x7d\x8c\x17\x06\xf6\xb2\xff\xc5\x4f\x00\xf8\xfe\ +\xd4\x49\xba\x76\x76\x91\xcd\x66\x49\xa5\xda\x50\x4a\x61\x29\xeb\ +\xde\x04\x46\x6b\x66\x67\x67\x43\x60\xa2\xf3\xe0\xba\x2e\x00\x3f\ +\xfc\x72\x97\x73\x67\x7f\x46\x59\x8a\xae\xce\x4e\x6c\x3b\x49\x5b\ +\x5b\x92\x44\x22\x81\x52\xf1\xa4\x8e\x5b\xe4\x7b\x1c\x3c\xf8\x74\ +\x93\x7a\x31\x06\x5f\xfb\xfc\x75\xe3\x4f\x94\x05\x95\x8a\x43\x32\ +\x69\x07\xf3\xb1\xac\xe8\xcc\x68\xad\x31\x46\x6f\x4f\x50\xad\x56\ +\xd1\x5a\x87\xf6\x04\xfb\x1e\x15\xcc\xc5\x18\x83\x36\x3e\xc6\x37\ +\x24\x93\x36\x89\x44\xa2\x1e\x1b\x4a\x45\xef\x35\x38\x1b\x27\xd8\ +\xdc\xdc\x44\x6b\x1d\x78\xa3\x68\x52\xa8\x94\x42\x29\x85\x6d\xdb\ +\xc1\xef\xb0\xbb\xda\xdc\x1a\xb3\xab\xb1\x9a\x26\x52\x28\x14\x40\ +\x0c\x22\x06\x63\xea\xab\x51\xa9\xa5\x14\xad\x32\x83\x38\x21\xcc\ +\x26\xd9\xbe\x83\x8b\xbf\x9e\x65\x47\x9b\x0a\x22\x41\x24\x8a\x68\ +\x23\x26\x0c\x6a\x1a\x94\xab\xc8\xef\x1a\xa8\x11\xc3\xe5\x85\x2b\ +\xd4\xf7\x78\x73\xbd\xf2\x80\x1f\xfd\x7b\xad\x0f\x80\x27\x5b\xd3\ +\xd4\x06\xba\xc3\x95\xfc\x8f\xff\x64\x3c\x60\x05\x58\xf9\x07\xbb\ +\x78\x04\xf0\x58\x0d\x4c\x09\x00\x00\x00\x00\x49\x45\x4e\x44\xae\ +\x42\x60\x82\ " qt_resource_name = b"\ \x00\x04\ -\x00\x06\xd0\x25\ -\x00\x66\ -\x00\x69\x00\x6c\x00\x65\ -\x00\x04\ -\x00\x06\xbb\x04\ -\x00\x65\ -\x00\x64\x00\x69\x00\x74\ -\x00\x04\ -\x00\x07\x78\xc6\ -\x00\x70\ -\x00\x72\x00\x65\x00\x76\ -\x00\x04\ -\x00\x06\xec\x30\ -\x00\x68\ -\x00\x65\x00\x6c\x00\x70\ -\x00\x04\ -\x00\x07\x8c\x04\ -\x00\x71\ -\x00\x75\x00\x69\x00\x74\ -\x00\x05\ -\x00\x78\xa8\xb3\ -\x00\x72\ -\x00\x65\x00\x52\x00\x65\x00\x63\ -\x00\x06\ -\x06\xcf\x6c\x94\ -\x00\x65\ -\x00\x78\x00\x70\x00\x65\x00\x72\x00\x74\ -\x00\x04\ \x00\x08\x16\x5d\ \x00\x7a\ \x00\x6f\x00\x6f\x00\x6d\ -\x00\x07\ -\x01\x66\x02\xfe\ -\x00\x7a\ -\x00\x6f\x00\x6f\x00\x6d\x00\x2d\x00\x69\x00\x6e\ -\x00\x08\ -\x0c\x9c\xab\x2c\ -\x00\x72\ -\x00\x65\x00\x73\x00\x65\x00\x74\x00\x61\x00\x6c\x00\x6c\ -\x00\x03\ -\x00\x00\x68\x70\ -\x00\x61\ -\x00\x70\x00\x70\ -\x00\x03\ -\x00\x00\x74\xc7\ -\x00\x6e\ -\x00\x65\x00\x77\ -\x00\x07\ -\x09\x8c\x83\x63\ -\x00\x73\ -\x00\x61\x00\x76\x00\x65\x00\x2d\x00\x61\x00\x73\ -\x00\x04\ -\x00\x07\x66\xbe\ -\x00\x6f\ -\x00\x70\x00\x65\x00\x6e\ -\x00\x04\ -\x00\x07\x4c\xf4\ -\x00\x6e\ -\x00\x65\x00\x78\x00\x74\ -\x00\x05\ -\x00\x6a\x36\x95\ -\x00\x63\ -\x00\x6c\x00\x6f\x00\x73\x00\x65\ -\x00\x04\ -\x00\x06\xef\xa5\ -\x00\x68\ -\x00\x69\x00\x64\x00\x65\ -\x00\x08\ -\x06\x60\x56\xe4\ -\x00\x7a\ -\x00\x6f\x00\x6f\x00\x6d\x00\x2d\x00\x6f\x00\x75\x00\x74\ -\x00\x0d\ -\x03\x22\xb9\x5e\ -\x00\x73\ -\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\x00\x2d\x00\x7a\x00\x68\x00\x2d\x00\x43\x00\x4e\ -\x00\x0a\ -\x03\x87\xc0\x73\ -\x00\x66\ -\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x74\x00\x5f\x00\x76\x00\x6f\x00\x63\ -\x00\x05\ -\x00\x6a\x63\x62\ -\x00\x63\ -\x00\x6f\x00\x6c\x00\x6f\x00\x72\ -\x00\x04\ -\x00\x06\xa6\x79\ -\x00\x63\ -\x00\x6f\x00\x70\x00\x79\ -\x00\x07\ -\x0a\xb9\x04\x03\ -\x00\x73\ -\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\ -\x00\x04\ -\x00\x07\x98\xc5\ -\x00\x73\ -\x00\x61\x00\x76\x00\x65\ -\x00\x06\ -\x07\x27\x8c\x33\ -\x00\x6c\ -\x00\x61\x00\x62\x00\x65\x00\x6c\x00\x73\ \x00\x06\ \x06\xac\x2c\xa5\ \x00\x64\ \x00\x65\x00\x6c\x00\x65\x00\x74\x00\x65\ -\x00\x04\ -\x00\x04\x8c\xaf\ -\x00\x41\ -\x00\x75\x00\x74\x00\x6f\ -\x00\x06\ -\x07\xcc\x8f\xd9\ -\x00\x76\ -\x00\x65\x00\x72\x00\x69\x00\x66\x00\x79\ -\x00\x0b\ -\x08\x7c\x58\x4f\ -\x00\x66\ -\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x74\x00\x5f\x00\x79\x00\x6f\x00\x6c\x00\x6f\ \x00\x0a\ -\x06\x8b\x64\x25\ -\x00\x63\ -\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x5f\x00\x6c\x00\x69\x00\x6e\x00\x65\ -\x00\x0a\ -\x04\xd5\xeb\x87\ +\x03\x87\xc0\x73\ \x00\x66\ -\x00\x69\x00\x74\x00\x2d\x00\x77\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\ +\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x74\x00\x5f\x00\x76\x00\x6f\x00\x63\ +\x00\x07\ +\x01\x66\x02\xfe\ +\x00\x7a\ +\x00\x6f\x00\x6f\x00\x6d\x00\x2d\x00\x69\x00\x6e\ +\x00\x03\ +\x00\x00\x68\x70\ +\x00\x61\ +\x00\x70\x00\x70\ \x00\x09\ \x07\x4d\x21\xa8\ \x00\x66\ \x00\x69\x00\x74\x00\x2d\x00\x77\x00\x69\x00\x64\x00\x74\x00\x68\ \x00\x04\ +\x00\x07\x78\xc6\ +\x00\x70\ +\x00\x72\x00\x65\x00\x76\ +\x00\x04\ +\x00\x04\x8c\xaf\ +\x00\x41\ +\x00\x75\x00\x74\x00\x6f\ +\x00\x04\ +\x00\x06\xa6\x79\ +\x00\x63\ +\x00\x6f\x00\x70\x00\x79\ +\x00\x03\ +\x00\x00\x74\xc7\ +\x00\x6e\ +\x00\x65\x00\x77\ +\x00\x04\ \x00\x06\xb6\x45\ \x00\x64\ \x00\x6f\x00\x6e\x00\x65\ +\x00\x0a\ +\x04\xd5\xeb\x87\ +\x00\x66\ +\x00\x69\x00\x74\x00\x2d\x00\x77\x00\x69\x00\x6e\x00\x64\x00\x6f\x00\x77\ +\x00\x04\ +\x00\x07\x4c\xf4\ +\x00\x6e\ +\x00\x65\x00\x78\x00\x74\ +\x00\x05\ +\x00\x6a\x63\x62\ +\x00\x63\ +\x00\x6f\x00\x6c\x00\x6f\x00\x72\ +\x00\x08\ +\x0c\x9c\xab\x2c\ +\x00\x72\ +\x00\x65\x00\x73\x00\x65\x00\x74\x00\x61\x00\x6c\x00\x6c\ +\x00\x04\ +\x00\x06\xec\x30\ +\x00\x68\ +\x00\x65\x00\x6c\x00\x70\ +\x00\x06\ +\x07\xcc\x8f\xd9\ +\x00\x76\ +\x00\x65\x00\x72\x00\x69\x00\x66\x00\x79\ +\x00\x04\ +\x00\x07\x8c\x04\ +\x00\x71\ +\x00\x75\x00\x69\x00\x74\ +\x00\x07\ +\x0a\xb9\x04\x03\ +\x00\x73\ +\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\ +\x00\x05\ +\x00\x78\xa8\xb3\ +\x00\x72\ +\x00\x65\x00\x52\x00\x65\x00\x63\ +\x00\x06\ +\x07\x27\x8c\x33\ +\x00\x6c\ +\x00\x61\x00\x62\x00\x65\x00\x6c\x00\x73\ +\x00\x04\ +\x00\x06\xef\xa5\ +\x00\x68\ +\x00\x69\x00\x64\x00\x65\ +\x00\x04\ +\x00\x06\xd0\x25\ +\x00\x66\ +\x00\x69\x00\x6c\x00\x65\ +\x00\x0a\ +\x06\x8b\x64\x25\ +\x00\x63\ +\x00\x6f\x00\x6c\x00\x6f\x00\x72\x00\x5f\x00\x6c\x00\x69\x00\x6e\x00\x65\ +\x00\x05\ +\x00\x6a\x36\x95\ +\x00\x63\ +\x00\x6c\x00\x6f\x00\x73\x00\x65\ +\x00\x0b\ +\x08\x7c\x58\x4f\ +\x00\x66\ +\x00\x6f\x00\x72\x00\x6d\x00\x61\x00\x74\x00\x5f\x00\x79\x00\x6f\x00\x6c\x00\x6f\ \x00\x04\ \x00\x07\xc4\xaf\ \x00\x75\ \x00\x6e\x00\x64\x00\x6f\ +\x00\x04\ +\x00\x07\x66\xbe\ +\x00\x6f\ +\x00\x70\x00\x65\x00\x6e\ +\x00\x08\ +\x06\x60\x56\xe4\ +\x00\x7a\ +\x00\x6f\x00\x6f\x00\x6d\x00\x2d\x00\x6f\x00\x75\x00\x74\ +\x00\x06\ +\x06\xcf\x6c\x94\ +\x00\x65\ +\x00\x78\x00\x70\x00\x65\x00\x72\x00\x74\ +\x00\x04\ +\x00\x07\x98\xc5\ +\x00\x73\ +\x00\x61\x00\x76\x00\x65\ +\x00\x0d\ +\x03\x22\xb9\x5e\ +\x00\x73\ +\x00\x74\x00\x72\x00\x69\x00\x6e\x00\x67\x00\x73\x00\x2d\x00\x7a\x00\x68\x00\x2d\x00\x43\x00\x4e\ +\x00\x07\ +\x09\x8c\x83\x63\ +\x00\x73\ +\x00\x61\x00\x76\x00\x65\x00\x2d\x00\x61\x00\x73\ +\x00\x04\ +\x00\x06\xbb\x04\ +\x00\x65\ +\x00\x64\x00\x69\x00\x74\ " qt_resource_struct_v1 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x01\ -\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xa9\xd7\ -\x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x01\x91\x3f\ -\x00\x00\x01\xba\x00\x00\x00\x00\x00\x01\x00\x02\x6c\xa0\ -\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x02\x48\x4a\ -\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x02\x8f\xf6\ -\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x03\x01\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x14\x38\ +\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x01\x00\x01\x7d\x2b\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x01\x78\xc6\ +\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x01\x7a\xa1\ +\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x01\x81\x7e\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x02\x9c\xce\ +\x00\x00\x01\x76\x00\x00\x00\x00\x00\x01\x00\x02\x51\x0e\ +\x00\x00\x01\x04\x00\x00\x00\x00\x00\x01\x00\x02\x18\xb0\ +\x00\x00\x01\x68\x00\x00\x00\x00\x00\x01\x00\x02\x4c\x1a\ +\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x01\x8e\x6a\ +\x00\x00\x01\xd8\x00\x00\x00\x00\x00\x01\x00\x02\x74\x0b\ +\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x01\x00\xf9\ +\x00\x00\x01\x24\x00\x00\x00\x00\x00\x01\x00\x02\x2a\xcc\ +\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00\x02\x81\xb1\ +\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x02\x6c\x25\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x16\ -\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x02\x2b\x2d\ -\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x01\xa8\xae\ -\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x01\xa0\x91\ -\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x07\x49\ -\x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x85\x4d\ -\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x02\x56\x4c\ -\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x02\x98\x90\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x92\xd8\ -\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x02\x1f\x02\ -\x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x02\x42\x91\ -\x00\x00\x00\x46\x00\x00\x00\x00\x00\x01\x00\x00\x8c\xcc\ -\x00\x00\x00\x76\x00\x00\x00\x00\x00\x01\x00\x00\x97\x4f\ -\x00\x00\x01\x1c\x00\x00\x00\x00\x00\x01\x00\x02\x34\x57\ -\x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x3f\x7b\ -\x00\x00\x02\x10\x00\x00\x00\x00\x00\x01\x00\x02\x86\x4b\ -\x00\x00\x01\x06\x00\x00\x00\x00\x00\x01\x00\x02\x30\x21\ -\x00\x00\x01\xf6\x00\x00\x00\x00\x00\x01\x00\x02\x7d\x07\ -\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x02\x64\x44\ -\x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x91\x85\ -\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x02\x5a\xf3\ -\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x02\x8a\x9d\ -\x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x02\x6e\x7b\ -\x00\x00\x01\xda\x00\x00\x00\x00\x00\x01\x00\x02\x7a\x60\ -\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x01\x95\x92\ -\x00\x00\x01\x74\x00\x00\x00\x00\x00\x01\x00\x02\x4a\xd4\ -\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x9b\x9e\ +\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x02\x5d\x53\ +\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00\x02\x04\xbe\ +\x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x02\x3e\x10\ +\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xe9\ +\x00\x00\x02\x1c\x00\x00\x00\x00\x00\x01\x00\x02\x86\x58\ +\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xd3\ +\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x01\x00\x01\x8a\x18\ +\x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x02\x7c\x28\ +\x00\x00\x01\x84\x00\x00\x00\x00\x00\x01\x00\x02\x54\x0f\ +\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x77\ +\x00\x00\x01\xfc\x00\x00\x00\x00\x00\x01\x00\x02\x80\x5e\ +\x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x02\x42\xc9\ +\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\xfb\xa0\ +\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x02\x1e\xe7\ +\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x02\x69\x7e\ +\x00\x00\x02\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x91\xcf\ +\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x02\x32\x4b\ +\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x02\x0a\x77\ " qt_resource_struct_v2 = b"\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x22\x00\x00\x00\x01\ \x00\x00\x00\x00\x00\x00\x00\x00\ -\x00\x00\x00\xa0\x00\x00\x00\x00\x00\x01\x00\x00\xa9\xd7\ +\x00\x00\x00\x4e\x00\x00\x00\x00\x00\x01\x00\x00\x14\x38\ \x00\x00\x01\x76\x60\x64\xa4\xf6\ -\x00\x00\x00\xac\x00\x00\x00\x00\x00\x01\x00\x01\x91\x3f\ +\x00\x00\x00\x9c\x00\x00\x00\x00\x00\x01\x00\x01\x7d\x2b\ \x00\x00\x01\x76\x60\x64\xa4\xfd\ -\x00\x00\x01\xba\x00\x00\x00\x00\x00\x01\x00\x02\x6c\xa0\ +\x00\x00\x00\x80\x00\x00\x00\x00\x00\x01\x00\x01\x78\xc6\ \x00\x00\x01\x76\x60\x64\xa4\xf6\ -\x00\x00\x01\x66\x00\x00\x00\x00\x00\x01\x00\x02\x48\x4a\ +\x00\x00\x00\x8e\x00\x00\x00\x00\x00\x01\x00\x01\x7a\xa1\ \x00\x00\x01\x76\x60\x64\xa4\xf8\ -\x00\x00\x02\x42\x00\x00\x00\x00\x00\x01\x00\x02\x8f\xf6\ +\x00\x00\x00\xa8\x00\x00\x00\x00\x00\x01\x00\x01\x81\x7e\ \x00\x00\x01\x76\x60\x64\xa4\xf7\ -\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x03\x01\ +\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x02\x9c\xce\ \x00\x00\x01\x76\x60\x64\xa4\xf8\ +\x00\x00\x01\x76\x00\x00\x00\x00\x00\x01\x00\x02\x51\x0e\ +\x00\x00\x01\x76\x60\x64\xa4\xfa\ +\x00\x00\x01\x04\x00\x00\x00\x00\x00\x01\x00\x02\x18\xb0\ +\x00\x00\x01\x76\x60\x64\xa4\xfc\ +\x00\x00\x01\x68\x00\x00\x00\x00\x00\x01\x00\x02\x4c\x1a\ +\x00\x00\x01\x76\x60\x64\xa4\xf9\ +\x00\x00\x00\xd0\x00\x00\x00\x00\x00\x01\x00\x01\x8e\x6a\ +\x00\x00\x01\x76\x60\x64\xa4\xfd\ +\x00\x00\x01\xd8\x00\x00\x00\x00\x00\x01\x00\x02\x74\x0b\ +\x00\x00\x01\x76\x60\x64\xa4\xfd\ +\x00\x00\x00\x72\x00\x00\x00\x00\x00\x01\x00\x01\x00\xf9\ +\x00\x00\x01\x76\x60\x64\xa4\xfe\ +\x00\x00\x01\x24\x00\x00\x00\x00\x00\x01\x00\x02\x2a\xcc\ +\x00\x00\x01\x76\x60\x64\xa4\xfe\ +\x00\x00\x02\x0e\x00\x00\x00\x00\x00\x01\x00\x02\x81\xb1\ +\x00\x00\x01\x76\x60\x64\xa4\xff\ +\x00\x00\x01\xca\x00\x00\x00\x00\x00\x01\x00\x02\x6c\x25\ +\x00\x00\x01\x76\x60\x64\xa5\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ -\x00\x00\x01\x76\x60\x64\xa4\xfa\ -\x00\x00\x00\x2a\x00\x00\x00\x00\x00\x01\x00\x00\x7f\x16\ -\x00\x00\x01\x76\x60\x64\xa4\xfc\ -\x00\x00\x00\xf8\x00\x00\x00\x00\x00\x01\x00\x02\x2b\x2d\ -\x00\x00\x01\x76\x60\x64\xa4\xf9\ -\x00\x00\x00\xda\x00\x00\x00\x00\x00\x01\x00\x01\xa8\xae\ -\x00\x00\x01\x76\x60\x64\xa4\xfd\ -\x00\x00\x00\xcc\x00\x00\x00\x00\x00\x01\x00\x01\xa0\x91\ -\x00\x00\x01\x76\x60\x64\xa4\xfd\ -\x00\x00\x00\x1c\x00\x00\x00\x00\x00\x01\x00\x00\x07\x49\ -\x00\x00\x01\x76\x60\x64\xa4\xfe\ -\x00\x00\x00\x38\x00\x00\x00\x00\x00\x01\x00\x00\x85\x4d\ -\x00\x00\x01\x76\x60\x64\xa4\xfe\ -\x00\x00\x01\x88\x00\x00\x00\x00\x00\x01\x00\x02\x56\x4c\ -\x00\x00\x01\x76\x60\x64\xa4\xff\ -\x00\x00\x02\x50\x00\x00\x00\x00\x00\x01\x00\x02\x98\x90\ \x00\x00\x01\x76\x60\x64\xa5\x00\ -\x00\x00\x00\x68\x00\x00\x00\x00\x00\x01\x00\x00\x92\xd8\ -\x00\x00\x01\x76\x60\x64\xa5\x00\ -\x00\x00\x00\xe8\x00\x00\x00\x00\x00\x01\x00\x02\x1f\x02\ +\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x02\x5d\x53\ \x00\x00\x01\x76\x60\x64\xa4\xf7\ -\x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x02\x42\x91\ +\x00\x00\x00\xde\x00\x00\x00\x00\x00\x01\x00\x02\x04\xbe\ \x00\x00\x01\x76\x60\x64\xa4\xf8\ -\x00\x00\x00\x46\x00\x00\x00\x00\x00\x01\x00\x00\x8c\xcc\ +\x00\x00\x01\x46\x00\x00\x00\x00\x00\x01\x00\x02\x3e\x10\ \x00\x00\x01\x76\x60\x64\xa4\xfe\ -\x00\x00\x00\x76\x00\x00\x00\x00\x00\x01\x00\x00\x97\x4f\ +\x00\x00\x00\x3a\x00\x00\x00\x00\x00\x01\x00\x00\x0f\xe9\ \x00\x00\x01\x76\x60\x64\xa5\x01\ -\x00\x00\x01\x1c\x00\x00\x00\x00\x00\x01\x00\x02\x34\x57\ -\x00\x00\x01\x76\xf1\x42\x04\xac\ -\x00\x00\x01\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x3f\x7b\ +\x00\x00\x02\x1c\x00\x00\x00\x00\x00\x01\x00\x02\x86\x58\ +\x00\x00\x01\x77\x70\x51\x4d\x6a\ +\x00\x00\x00\x20\x00\x00\x00\x00\x00\x01\x00\x00\x0c\xd3\ \x00\x00\x01\x76\x60\x64\xa4\xfb\ -\x00\x00\x02\x10\x00\x00\x00\x00\x00\x01\x00\x02\x86\x4b\ +\x00\x00\x00\xb6\x00\x00\x00\x00\x00\x01\x00\x01\x8a\x18\ \x00\x00\x01\x76\x60\x64\xa4\xf9\ -\x00\x00\x01\x06\x00\x00\x00\x00\x00\x01\x00\x02\x30\x21\ +\x00\x00\x01\xe6\x00\x00\x00\x00\x00\x01\x00\x02\x7c\x28\ \x00\x00\x01\x76\x60\x64\xa5\x00\ -\x00\x00\x01\xf6\x00\x00\x00\x00\x00\x01\x00\x02\x7d\x07\ +\x00\x00\x01\x84\x00\x00\x00\x00\x00\x01\x00\x02\x54\x0f\ \x00\x00\x01\x76\x60\x64\xa4\xf7\ -\x00\x00\x01\xa8\x00\x00\x00\x00\x00\x01\x00\x02\x64\x44\ +\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x04\x77\ \x00\x00\x01\x76\x60\x64\xa4\xf6\ -\x00\x00\x00\x56\x00\x00\x00\x00\x00\x01\x00\x00\x91\x85\ +\x00\x00\x01\xfc\x00\x00\x00\x00\x00\x01\x00\x02\x80\x5e\ \x00\x00\x01\x76\x60\x64\xa4\xf9\ -\x00\x00\x01\x96\x00\x00\x00\x00\x00\x01\x00\x02\x5a\xf3\ +\x00\x00\x01\x56\x00\x00\x00\x00\x00\x01\x00\x02\x42\xc9\ \x00\x00\x01\x76\x60\x64\xa4\xfc\ -\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x01\x00\x02\x8a\x9d\ +\x00\x00\x00\x5a\x00\x00\x00\x00\x00\x01\x00\x00\xfb\xa0\ \x00\x00\x01\x76\x60\x64\xa4\xfa\ -\x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x02\x6e\x7b\ +\x00\x00\x01\x12\x00\x00\x00\x00\x00\x01\x00\x02\x1e\xe7\ \x00\x00\x01\x76\x60\x64\xa5\x00\ -\x00\x00\x01\xda\x00\x00\x00\x00\x00\x01\x00\x02\x7a\x60\ +\x00\x00\x01\xae\x00\x00\x00\x00\x00\x01\x00\x02\x69\x7e\ \x00\x00\x01\x76\x60\x64\xa4\xfb\ -\x00\x00\x00\xb8\x00\x00\x00\x00\x00\x01\x00\x01\x95\x92\ +\x00\x00\x02\x3c\x00\x00\x00\x00\x00\x01\x00\x02\x91\xcf\ \x00\x00\x01\x76\x60\x64\xa4\xff\ -\x00\x00\x01\x74\x00\x00\x00\x00\x00\x01\x00\x02\x4a\xd4\ -\x00\x00\x01\x76\xf1\x48\xe2\x34\ -\x00\x00\x00\x8a\x00\x00\x00\x00\x00\x01\x00\x00\x9b\x9e\ +\x00\x00\x01\x32\x00\x00\x00\x00\x00\x01\x00\x02\x32\x4b\ +\x00\x00\x01\x77\x70\x51\xed\x0c\ +\x00\x00\x00\xee\x00\x00\x00\x00\x00\x01\x00\x02\x0a\x77\ \x00\x00\x01\x76\x60\x64\xa4\xfe\ " diff --git a/PPOCRLabel/libs/shape.py b/PPOCRLabel/libs/shape.py index 2770bac1..ef8e09be 100644 --- a/PPOCRLabel/libs/shape.py +++ b/PPOCRLabel/libs/shape.py @@ -82,7 +82,7 @@ class Shape(object): return False def addPoint(self, point): - if not self.reachMaxPoints(): + if not self.reachMaxPoints(): # 4个点时发出close信号 self.points.append(point) def popPoint(self): diff --git a/PPOCRLabel/resources/strings/strings-zh-CN.properties b/PPOCRLabel/resources/strings/strings-zh-CN.properties index 7a15acd6..6af16edf 100644 --- a/PPOCRLabel/resources/strings/strings-zh-CN.properties +++ b/PPOCRLabel/resources/strings/strings-zh-CN.properties @@ -96,4 +96,7 @@ hideBox=隐藏所有标注 showBox=显示所有标注 saveLabel=保存标记结果 singleRe=重识别此区块 -labelDialogOption=弹出标记输入框 \ No newline at end of file +labelDialogOption=弹出标记输入框 +undo=撤销 +undoLastPoint=撤销上个点 +autoSaveMode=自动保存标记结果 \ No newline at end of file diff --git a/PPOCRLabel/resources/strings/strings.properties b/PPOCRLabel/resources/strings/strings.properties index 11aab435..168c8b88 100644 --- a/PPOCRLabel/resources/strings/strings.properties +++ b/PPOCRLabel/resources/strings/strings.properties @@ -96,4 +96,7 @@ hideBox=Hide All Box showBox=Show All Box saveLabel=Save Label singleRe=Re-recognition RectBox -labelDialogOption=Pop-up Label Input Dialog \ No newline at end of file +labelDialogOption=Pop-up Label Input Dialog +undo=Undo +undoLastPoint=Undo Last Point +autoSaveMode=Auto Save Label Mode \ No newline at end of file diff --git a/README.md b/README.md index 67d65e98..a5c52bdb 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ The above pictures are the visualizations of the general ppocr_server model. For - Scan the QR code below with your Wechat, you can access to official technical exchange group. Look forward to your participation.
- +
@@ -93,7 +93,7 @@ For a new language request, please refer to [Guideline for new language_requests - [Quick Inference Based on PIP](./doc/doc_en/whl_en.md) - [Python Inference](./doc/doc_en/inference_en.md) - [C++ Inference](./deploy/cpp_infer/readme_en.md) - - [Serving](./deploy/hubserving/readme_en.md) + - [Serving](./deploy/pdserving/README.md) - [Mobile](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/lite/readme_en.md) - [Benchmark](./doc/doc_en/benchmark_en.md) - Data Annotation and Synthesis diff --git a/README_ch.md b/README_ch.md index d4870710..a6d456a5 100755 --- a/README_ch.md +++ b/README_ch.md @@ -46,7 +46,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式 - 微信扫描二维码加入官方交流群,获得更高效的问题答疑,与各行各业开发者充分交流,期待您的加入。
- +
## 快速体验 @@ -88,7 +88,7 @@ PaddleOCR同时支持动态图与静态图两种编程范式 - [基于pip安装whl包快速推理](./doc/doc_ch/whl.md) - [基于Python脚本预测引擎推理](./doc/doc_ch/inference.md) - [基于C++预测引擎推理](./deploy/cpp_infer/readme.md) - - [服务化部署](./deploy/hubserving/readme.md) + - [服务化部署](./deploy/pdserving/README_CN.md) - [端侧部署](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/deploy/lite/readme.md) - [Benchmark](./doc/doc_ch/benchmark.md) - 数据集 diff --git a/StyleText/engine/predictors.py b/StyleText/engine/predictors.py index a1ba21f1..ca9ab9ce 100644 --- a/StyleText/engine/predictors.py +++ b/StyleText/engine/predictors.py @@ -38,7 +38,15 @@ class StyleTextRecPredictor(object): self.std = config["Predictor"]["std"] self.expand_result = config["Predictor"]["expand_result"] - def predict(self, style_input, text_input): + def reshape_to_same_height(self, img_list): + h = img_list[0].shape[0] + for idx in range(1, len(img_list)): + new_w = round(1.0 * img_list[idx].shape[1] / + img_list[idx].shape[0] * h) + img_list[idx] = cv2.resize(img_list[idx], (new_w, h)) + return img_list + + def predict_single_image(self, style_input, text_input): style_input = self.rep_style_input(style_input, text_input) tensor_style_input = self.preprocess(style_input) tensor_text_input = self.preprocess(text_input) @@ -64,6 +72,21 @@ class StyleTextRecPredictor(object): "fake_bg": fake_bg, } + def predict(self, style_input, text_input_list): + if not isinstance(text_input_list, (tuple, list)): + return self.predict_single_image(style_input, text_input_list) + + synth_result_list = [] + for text_input in text_input_list: + synth_result = self.predict_single_image(style_input, text_input) + synth_result_list.append(synth_result) + + for key in synth_result: + res = [r[key] for r in synth_result_list] + res = self.reshape_to_same_height(res) + synth_result[key] = np.concatenate(res, axis=1) + return synth_result + def preprocess(self, img): img = (img.astype('float32') * self.scale - self.mean) / self.std img_height, img_width, channel = img.shape diff --git a/StyleText/engine/synthesisers.py b/StyleText/engine/synthesisers.py index 177e3e04..6461d9e3 100644 --- a/StyleText/engine/synthesisers.py +++ b/StyleText/engine/synthesisers.py @@ -12,6 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. import os +import numpy as np +import cv2 from utils.config import ArgsParser, load_config, override_config from utils.logging import get_logger @@ -36,8 +38,9 @@ class ImageSynthesiser(object): self.predictor = getattr(predictors, predictor_method)(self.config) def synth_image(self, corpus, style_input, language="en"): - corpus, text_input = self.text_drawer.draw_text(corpus, language) - synth_result = self.predictor.predict(style_input, text_input) + corpus_list, text_input_list = self.text_drawer.draw_text( + corpus, language, style_input_width=style_input.shape[1]) + synth_result = self.predictor.predict(style_input, text_input_list) return synth_result @@ -59,12 +62,15 @@ class DatasetSynthesiser(ImageSynthesiser): for i in range(self.output_num): style_data = self.style_sampler.sample() style_input = style_data["image"] - corpus_language, text_input_label = self.corpus_generator.generate( - ) - text_input_label, text_input = self.text_drawer.draw_text( - text_input_label, corpus_language) + corpus_language, text_input_label = self.corpus_generator.generate() + text_input_label_list, text_input_list = self.text_drawer.draw_text( + text_input_label, + corpus_language, + style_input_width=style_input.shape[1]) - synth_result = self.predictor.predict(style_input, text_input) + text_input_label = "".join(text_input_label_list) + + synth_result = self.predictor.predict(style_input, text_input_list) fake_fusion = synth_result["fake_fusion"] self.writer.save_image(fake_fusion, text_input_label) self.writer.save_label() diff --git a/StyleText/engine/text_drawers.py b/StyleText/engine/text_drawers.py index 8aaac06e..aeec75c3 100644 --- a/StyleText/engine/text_drawers.py +++ b/StyleText/engine/text_drawers.py @@ -1,5 +1,6 @@ from PIL import Image, ImageDraw, ImageFont import numpy as np +import cv2 from utils.logging import get_logger @@ -28,7 +29,11 @@ class StdTextDrawer(object): else: return int((self.height - 4)**2 / font_height) - def draw_text(self, corpus, language="en", crop=True): + def draw_text(self, + corpus, + language="en", + crop=True, + style_input_width=None): if language not in self.support_languages: self.logger.warning( "language {} not supported, use en instead.".format(language)) @@ -37,21 +42,43 @@ class StdTextDrawer(object): width = min(self.max_width, len(corpus) * self.height) + 4 else: width = len(corpus) * self.height + 4 - bg = Image.new("RGB", (width, self.height), color=(127, 127, 127)) - draw = ImageDraw.Draw(bg) - char_x = 2 - font = self.font_dict[language] - for i, char_i in enumerate(corpus): - char_size = font.getsize(char_i)[0] - draw.text((char_x, 2), char_i, fill=(0, 0, 0), font=font) - char_x += char_size - if char_x >= width: - corpus = corpus[0:i + 1] - self.logger.warning("corpus length exceed limit: {}".format( - corpus)) + if style_input_width is not None: + width = min(width, style_input_width) + + corpus_list = [] + text_input_list = [] + + while len(corpus) != 0: + bg = Image.new("RGB", (width, self.height), color=(127, 127, 127)) + draw = ImageDraw.Draw(bg) + char_x = 2 + font = self.font_dict[language] + i = 0 + while i < len(corpus): + char_i = corpus[i] + char_size = font.getsize(char_i)[0] + # split when char_x exceeds char size and index is not 0 (at least 1 char should be wroten on the image) + if char_x + char_size >= width and i != 0: + text_input = np.array(bg).astype(np.uint8) + text_input = text_input[:, 0:char_x, :] + + corpus_list.append(corpus[0:i]) + text_input_list.append(text_input) + corpus = corpus[i:] + break + draw.text((char_x, 2), char_i, fill=(0, 0, 0), font=font) + char_x += char_size + + i += 1 + # the whole text is shorter than style input + if i == len(corpus): + text_input = np.array(bg).astype(np.uint8) + text_input = text_input[:, 0:char_x, :] + + corpus_list.append(corpus[0:i]) + text_input_list.append(text_input) + corpus = corpus[i:] break - text_input = np.array(bg).astype(np.uint8) - text_input = text_input[:, 0:char_x, :] - return corpus, text_input + return corpus_list, text_input_list diff --git a/configs/det/det_r50_vd_sast_icdar15.yml b/configs/det/det_r50_vd_sast_icdar15.yml index c24cae90..c90327b2 100755 --- a/configs/det/det_r50_vd_sast_icdar15.yml +++ b/configs/det/det_r50_vd_sast_icdar15.yml @@ -14,12 +14,13 @@ Global: load_static_weights: True cal_metric_during_train: False pretrained_model: ./pretrain_models/ResNet50_vd_ssld_pretrained/ - checkpoints: + checkpoints: save_inference_dir: use_visualdl: False - infer_img: + infer_img: save_res_path: ./output/sast_r50_vd_ic15/predicts_sast.txt + Architecture: model_type: det algorithm: SAST diff --git a/configs/e2e/e2e_r50_vd_pg.yml b/configs/e2e/e2e_r50_vd_pg.yml new file mode 100644 index 00000000..0a232f7a --- /dev/null +++ b/configs/e2e/e2e_r50_vd_pg.yml @@ -0,0 +1,114 @@ +Global: + use_gpu: True + epoch_num: 600 + log_smooth_window: 20 + print_batch_step: 10 + save_model_dir: ./output/pgnet_r50_vd_totaltext/ + save_epoch_step: 10 + # evaluation is run every 0 iterationss after the 1000th iteration + eval_batch_step: [ 0, 1000 ] + # 1. If pretrained_model is saved in static mode, such as classification pretrained model + # from static branch, load_static_weights must be set as True. + # 2. If you want to finetune the pretrained models we provide in the docs, + # you should set load_static_weights as False. + load_static_weights: False + cal_metric_during_train: False + pretrained_model: + checkpoints: + save_inference_dir: + use_visualdl: False + infer_img: + valid_set: totaltext # two mode: totaltext valid curved words, partvgg valid non-curved words + save_res_path: ./output/pgnet_r50_vd_totaltext/predicts_pgnet.txt + character_dict_path: ppocr/utils/ic15_dict.txt + character_type: EN + max_text_length: 50 # the max length in seq + max_text_nums: 30 # the max seq nums in a pic + tcl_len: 64 + +Architecture: + model_type: e2e + algorithm: PGNet + Transform: + Backbone: + name: ResNet + layers: 50 + Neck: + name: PGFPN + Head: + name: PGHead + +Loss: + name: PGLoss + tcl_bs: 64 + max_text_length: 50 # the same as Global: max_text_length + max_text_nums: 30 # the same as Global:max_text_nums + pad_num: 36 # the length of dict for pad + +Optimizer: + name: Adam + beta1: 0.9 + beta2: 0.999 + lr: + learning_rate: 0.001 + regularizer: + name: 'L2' + factor: 0 + + +PostProcess: + name: PGPostProcess + score_thresh: 0.5 +Metric: + name: E2EMetric + character_dict_path: ppocr/utils/ic15_dict.txt + main_indicator: f_score_e2e + +Train: + dataset: + name: PGDataSet + label_file_list: [.././train_data/total_text/train/] + ratio_list: [1.0] + data_format: icdar #two data format: icdar/textnet + transforms: + - DecodeImage: # load image + img_mode: BGR + channel_first: False + - PGProcessTrain: + batch_size: 14 # same as loader: batch_size_per_card + min_crop_size: 24 + min_text_size: 4 + max_text_size: 512 + - KeepKeys: + keep_keys: [ 'images', 'tcl_maps', 'tcl_label_maps', 'border_maps','direction_maps', 'training_masks', 'label_list', 'pos_list', 'pos_mask' ] # dataloader will return list in this order + loader: + shuffle: True + drop_last: True + batch_size_per_card: 14 + num_workers: 16 + +Eval: + dataset: + name: PGDataSet + data_dir: ./train_data/ + label_file_list: [./train_data/total_text/test/] + transforms: + - DecodeImage: # load image + img_mode: RGB + channel_first: False + - E2ELabelEncode: + - E2EResizeForTest: + max_side_len: 768 + - NormalizeImage: + scale: 1./255. + mean: [ 0.485, 0.456, 0.406 ] + std: [ 0.229, 0.224, 0.225 ] + order: 'hwc' + - ToCHWImage: + - KeepKeys: + keep_keys: [ 'image', 'shape', 'polys', 'strs', 'tags' ] + loader: + shuffle: False + drop_last: False + batch_size_per_card: 1 # must be 1 + num_workers: 2 \ No newline at end of file diff --git a/configs/rec/multi_language/generate_multi_language_configs.py b/configs/rec/multi_language/generate_multi_language_configs.py index 4319482b..027a65c0 100644 --- a/configs/rec/multi_language/generate_multi_language_configs.py +++ b/configs/rec/multi_language/generate_multi_language_configs.py @@ -131,7 +131,7 @@ if __name__ == '__main__': if FLAGS.val: global_config['Eval']['dataset']['label_file_list'] = [FLAGS.val] eval_label_path = os.path.join(project_path,FLAGS.val) - loss_file(Eval_label_path) + loss_file(eval_label_path) if FLAGS.dict: global_config['Global']['character_dict_path'] = FLAGS.dict dict_path = os.path.join(project_path,FLAGS.dict) diff --git a/configs/rec/rec_mv3_tps_bilstm_att.yml b/configs/rec/rec_mv3_tps_bilstm_att.yml index 1b10410a..33aed74d 100644 --- a/configs/rec/rec_mv3_tps_bilstm_att.yml +++ b/configs/rec/rec_mv3_tps_bilstm_att.yml @@ -65,7 +65,7 @@ Metric: Train: dataset: name: LMDBDataSet - data_dir: ../training/ + data_dir: ./train_data/data_lmdb_release/training/ transforms: - DecodeImage: # load image img_mode: BGR @@ -84,7 +84,7 @@ Train: Eval: dataset: name: LMDBDataSet - data_dir: ../validation/ + data_dir: ./train_data/data_lmdb_release/validation/ transforms: - DecodeImage: # load image img_mode: BGR diff --git a/configs/rec/rec_r34_vd_tps_bilstm_att.yml b/configs/rec/rec_r34_vd_tps_bilstm_att.yml index e25eca95..87a14559 100644 --- a/configs/rec/rec_r34_vd_tps_bilstm_att.yml +++ b/configs/rec/rec_r34_vd_tps_bilstm_att.yml @@ -64,7 +64,7 @@ Metric: Train: dataset: name: LMDBDataSet - data_dir: ../training/ + data_dir: ./train_data/data_lmdb_release/training/ transforms: - DecodeImage: # load image img_mode: BGR @@ -83,7 +83,7 @@ Train: Eval: dataset: name: LMDBDataSet - data_dir: ../validation/ + data_dir: ./train_data/data_lmdb_release/validation/ transforms: - DecodeImage: # load image img_mode: BGR diff --git a/configs/rec/rec_r50_fpn_srn.yml b/configs/rec/rec_r50_fpn_srn.yml index 6285c95d..34a997f3 100644 --- a/configs/rec/rec_r50_fpn_srn.yml +++ b/configs/rec/rec_r50_fpn_srn.yml @@ -58,7 +58,7 @@ Metric: Train: dataset: name: LMDBDataSet - data_dir: ./train_data/srn_train_data_duiqi + data_dir: ./train_data/data_lmdb_release/training/ transforms: - DecodeImage: # load image img_mode: BGR @@ -83,7 +83,7 @@ Train: Eval: dataset: name: LMDBDataSet - data_dir: ./train_data/data_lmdb_release/evaluation + data_dir: ./train_data/data_lmdb_release/validation/ transforms: - DecodeImage: # load image img_mode: BGR diff --git a/deploy/cpp_infer/CMakeLists.txt b/deploy/cpp_infer/CMakeLists.txt index 11883367..120cf06a 100644 --- a/deploy/cpp_infer/CMakeLists.txt +++ b/deploy/cpp_infer/CMakeLists.txt @@ -133,7 +133,11 @@ if(WITH_MKL) endif () endif() else() - set(MATH_LIB ${PADDLE_LIB}/third_party/install/openblas/lib/libopenblas${CMAKE_STATIC_LIBRARY_SUFFIX}) + if (WIN32) + set(MATH_LIB ${PADDLE_LIB}/third_party/install/openblas/lib/openblas${CMAKE_STATIC_LIBRARY_SUFFIX}) + else () + set(MATH_LIB ${PADDLE_LIB}/third_party/install/openblas/lib/libopenblas${CMAKE_STATIC_LIBRARY_SUFFIX}) + endif () endif() # Note: libpaddle_inference_api.so/a must put before libpaddle_fluid.so/a @@ -157,7 +161,7 @@ endif(WITH_STATIC_LIB) if (NOT WIN32) set(DEPS ${DEPS} - ${MATH_LIB} ${MKLDNN_LIB} + ${MATH_LIB} ${MKLDNN_LIB} glog gflags protobuf z xxhash ) if(EXISTS "${PADDLE_LIB}/third_party/install/snappystream/lib") diff --git a/deploy/cpp_infer/readme.md b/deploy/cpp_infer/readme.md index 41836915..63355308 100644 --- a/deploy/cpp_infer/readme.md +++ b/deploy/cpp_infer/readme.md @@ -1,6 +1,8 @@ # 服务器端C++预测 -本教程将介绍在服务器端部署PaddleOCR超轻量中文检测、识别模型的详细步骤。 +本章节介绍PaddleOCR 模型的的C++部署方法,与之对应的python预测部署方式参考[文档](../../doc/doc_ch/inference.md)。 +C++在性能计算上优于python,因此,在大多数CPU、GPU部署场景,多采用C++的部署方式,本节将介绍如何在Linux\Windows (CPU\GPU)环境下配置C++环境并完成 +PaddleOCR模型部署。 ## 1. 准备环境 diff --git a/deploy/cpp_infer/readme_en.md b/deploy/cpp_infer/readme_en.md index 6bc49e94..cfe18a28 100644 --- a/deploy/cpp_infer/readme_en.md +++ b/deploy/cpp_infer/readme_en.md @@ -1,7 +1,9 @@ # Server-side C++ inference - -In this tutorial, we will introduce the detailed steps of deploying PaddleOCR ultra-lightweight Chinese detection and recognition models on the server side. +This chapter introduces the C++ deployment method of the PaddleOCR model, and the corresponding python predictive deployment method refers to [document](../../doc/doc_ch/inference.md). +C++ is better than python in terms of performance calculation. Therefore, in most CPU and GPU deployment scenarios, C++ deployment is mostly used. +This section will introduce how to configure the C++ environment and complete it in the Linux\Windows (CPU\GPU) environment +PaddleOCR model deployment. ## 1. Prepare the environment diff --git a/deploy/cpp_infer/src/main.cpp b/deploy/cpp_infer/src/main.cpp index 49c68f55..5c9042d4 100644 --- a/deploy/cpp_infer/src/main.cpp +++ b/deploy/cpp_infer/src/main.cpp @@ -50,6 +50,11 @@ int main(int argc, char **argv) { cv::Mat srcimg = cv::imread(img_path, cv::IMREAD_COLOR); + if (!srcimg.data) { + std::cerr << "[ERROR] image read failed! image path: " << img_path << "\n"; + exit(1); + } + DBDetector det(config.det_model_dir, config.use_gpu, config.gpu_id, config.gpu_mem, config.cpu_math_library_num_threads, config.use_mkldnn, config.max_side_len, config.det_db_thresh, diff --git a/deploy/cpp_infer/src/ocr_rec.cpp b/deploy/cpp_infer/src/ocr_rec.cpp index fa1e44ff..76873dad 100644 --- a/deploy/cpp_infer/src/ocr_rec.cpp +++ b/deploy/cpp_infer/src/ocr_rec.cpp @@ -76,7 +76,7 @@ void CRNNRecognizer::Run(std::vector>> boxes, float(*std::max_element(&predict_batch[n * predict_shape[2]], &predict_batch[(n + 1) * predict_shape[2]])); - if (argmax_idx > 0 && (!(i > 0 && argmax_idx == last_index))) { + if (argmax_idx > 0 && (!(n > 0 && argmax_idx == last_index))) { score += max_value; count += 1; str_res.push_back(label_list_[argmax_idx]); diff --git a/deploy/cpp_infer/tools/config.txt b/deploy/cpp_infer/tools/config.txt index e185377e..24e4ef0d 100644 --- a/deploy/cpp_infer/tools/config.txt +++ b/deploy/cpp_infer/tools/config.txt @@ -9,7 +9,7 @@ use_mkldnn 0 max_side_len 960 det_db_thresh 0.3 det_db_box_thresh 0.5 -det_db_unclip_ratio 2.0 +det_db_unclip_ratio 1.6 det_model_dir ./inference/ch_ppocr_mobile_v2.0_det_infer/ # cls config diff --git a/deploy/hubserving/ocr_det/params.py b/deploy/hubserving/ocr_det/params.py index 13215890..7be88e9b 100755 --- a/deploy/hubserving/ocr_det/params.py +++ b/deploy/hubserving/ocr_det/params.py @@ -20,7 +20,8 @@ def read_params(): #DB parmas cfg.det_db_thresh = 0.3 cfg.det_db_box_thresh = 0.5 - cfg.det_db_unclip_ratio = 2.0 + cfg.det_db_unclip_ratio = 1.6 + cfg.use_dilation = False # #EAST parmas # cfg.det_east_score_thresh = 0.8 diff --git a/deploy/hubserving/ocr_system/params.py b/deploy/hubserving/ocr_system/params.py index add46666..bd56dc2e 100755 --- a/deploy/hubserving/ocr_system/params.py +++ b/deploy/hubserving/ocr_system/params.py @@ -20,7 +20,8 @@ def read_params(): #DB parmas cfg.det_db_thresh = 0.3 cfg.det_db_box_thresh = 0.5 - cfg.det_db_unclip_ratio = 2.0 + cfg.det_db_unclip_ratio = 1.6 + cfg.use_dilation = False #EAST parmas cfg.det_east_score_thresh = 0.8 diff --git a/deploy/hubserving/readme.md b/deploy/hubserving/readme.md index ce55b0f0..88f33581 100755 --- a/deploy/hubserving/readme.md +++ b/deploy/hubserving/readme.md @@ -2,7 +2,7 @@ PaddleOCR提供2种服务部署方式: - 基于PaddleHub Serving的部署:代码路径为"`./deploy/hubserving`",按照本教程使用; -- (coming soon)基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",使用方法参考[文档](../../deploy/pdserving/readme.md)。 +- 基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",使用方法参考[文档](../../deploy/pdserving/README_CN.md)。 # 基于PaddleHub Serving的服务部署 diff --git a/deploy/hubserving/readme_en.md b/deploy/hubserving/readme_en.md index 95223ffd..c948fed1 100755 --- a/deploy/hubserving/readme_en.md +++ b/deploy/hubserving/readme_en.md @@ -2,7 +2,7 @@ English | [简体中文](readme.md) PaddleOCR provides 2 service deployment methods: - Based on **PaddleHub Serving**: Code path is "`./deploy/hubserving`". Please follow this tutorial. -- (coming soon)Based on **PaddleServing**: Code path is "`./deploy/pdserving`". Please refer to the [tutorial](../../deploy/pdserving/readme.md) for usage. +- Based on **PaddleServing**: Code path is "`./deploy/pdserving`". Please refer to the [tutorial](../../deploy/pdserving/README.md) for usage. # Service deployment based on PaddleHub Serving diff --git a/deploy/pdserving/README.md b/deploy/pdserving/README.md new file mode 100644 index 00000000..88426ba9 --- /dev/null +++ b/deploy/pdserving/README.md @@ -0,0 +1,158 @@ +# OCR Pipeline WebService + +(English|[简体中文](./README_CN.md)) + +PaddleOCR provides two service deployment methods: +- Based on **PaddleHub Serving**: Code path is "`./deploy/hubserving`". Please refer to the [tutorial](../../deploy/hubserving/readme_en.md) +- Based on **PaddleServing**: Code path is "`./deploy/pdserving`". Please follow this tutorial. + +# Service deployment based on PaddleServing + +This document will introduce how to use the [PaddleServing](https://github.com/PaddlePaddle/Serving/blob/develop/README.md) to deploy the PPOCR dynamic graph model as a pipeline online service. + +Some Key Features of Paddle Serving: +- Integrate with Paddle training pipeline seamlessly, most paddle models can be deployed with one line command. +- Industrial serving features supported, such as models management, online loading, online A/B testing etc. +- Highly concurrent and efficient communication between clients and servers supported. + +The introduction and tutorial of Paddle Serving service deployment framework reference [document](https://github.com/PaddlePaddle/Serving/blob/develop/README.md). + + +## Contents +- [Environmental preparation](#environmental-preparation) +- [Model conversion](#model-conversion) +- [Paddle Serving pipeline deployment](#paddle-serving-pipeline-deployment) +- [FAQ](#faq) + + +## Environmental preparation + +PaddleOCR operating environment and Paddle Serving operating environment are needed. + +1. Please prepare PaddleOCR operating environment reference [link](../../doc/doc_ch/installation.md). + +2. The steps of PaddleServing operating environment prepare are as follows: + + Install serving which used to start the service + ``` + pip3 install paddle-serving-server==0.5.0 # for CPU + pip3 install paddle-serving-server-gpu==0.5.0 # for GPU + # Other GPU environments need to confirm the environment and then choose to execute the following commands + pip3 install paddle-serving-server-gpu==0.5.0.post9 # GPU with CUDA9.0 + pip3 install paddle-serving-server-gpu==0.5.0.post10 # GPU with CUDA10.0 + pip3 install paddle-serving-server-gpu==0.5.0.post101 # GPU with CUDA10.1 + TensorRT6 + pip3 install paddle-serving-server-gpu==0.5.0.post11 # GPU with CUDA10.1 + TensorRT7 + ``` + +3. Install the client to send requests to the service + ``` + pip3 install paddle-serving-client==0.5.0 # for CPU + + pip3 install paddle-serving-client-gpu==0.5.0 # for GPU + ``` + +4. Install serving-app + ``` + pip3 install paddle-serving-app==0.3.0 + # fix local_predict to support load dynamic model + # find the install directoory of paddle_serving_app + vim /usr/local/lib/python3.7/site-packages/paddle_serving_app/local_predict.py + # replace line 85 of local_predict.py config = AnalysisConfig(model_path) with: + if os.path.exists(os.path.join(model_path, "__params__")): + config = AnalysisConfig(os.path.join(model_path, "__model__"), os.path.join(model_path, "__params__")) + else: + config = AnalysisConfig(model_path) + ``` + + **note:** If you want to install the latest version of PaddleServing, refer to [link](https://github.com/PaddlePaddle/Serving/blob/develop/doc/LATEST_PACKAGES.md). + + + +## Model conversion +When using PaddleServing for service deployment, you need to convert the saved inference model into a serving model that is easy to deploy. + +Firstly, download the [inference model](https://github.com/PaddlePaddle/PaddleOCR#pp-ocr-20-series-model-listupdate-on-dec-15) of PPOCR +``` +# Download and unzip the OCR text detection model +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar && tar xf ch_ppocr_server_v2.0_det_infer.tar +# Download and unzip the OCR text recognition model +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar && tar xf ch_ppocr_server_v2.0_rec_infer.tar + +``` +Then, you can use installed paddle_serving_client tool to convert inference model to server model. +``` +# Detection model conversion +python3 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_det_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./ppocr_det_server_2.0_serving/ \ + --serving_client ./ppocr_det_server_2.0_client/ + +# Recognition model conversion +python3 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_rec_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./ppocr_rec_server_2.0_serving/ \ + --serving_client ./ppocr_rec_server_2.0_client/ + +``` + +After the detection model is converted, there will be additional folders of `ppocr_det_server_2.0_serving` and `ppocr_det_server_2.0_client` in the current folder, with the following format: +``` +|- ppocr_det_server_2.0_serving/ + |- __model__ + |- __params__ + |- serving_server_conf.prototxt + |- serving_server_conf.stream.prototxt + +|- ppocr_det_server_2.0_client + |- serving_client_conf.prototxt + |- serving_client_conf.stream.prototxt + +``` +The recognition model is the same. + + +## Paddle Serving pipeline deployment + +1. Download the PaddleOCR code, if you have already downloaded it, you can skip this step. + ``` + git clone https://github.com/PaddlePaddle/PaddleOCR + + # Enter the working directory + cd PaddleOCR/deploy/pdserver/ + ``` + + The pdserver directory contains the code to start the pipeline service and send prediction requests, including: + ``` + __init__.py + config.yml # Start the service configuration file + ocr_reader.py # OCR model pre-processing and post-processing code implementation + pipeline_http_client.py # Script to send pipeline prediction request + web_service.py # Start the script of the pipeline server + ``` + +2. Run the following command to start the service. + ``` + # Start the service and save the running log in log.txt + python3 web_service.py &>log.txt & + ``` + After the service is successfully started, a log similar to the following will be printed in log.txt + ![](./imgs/start_server.png) + +3. Send service request + ``` + python3 pipeline_http_client.py + ``` + After successfully running, the predicted result of the model will be printed in the cmd window. An example of the result is: + ![](./imgs/results.png) + + +## FAQ +**Q1**: No result return after sending the request. + +**A1**: Do not set the proxy when starting the service and sending the request. You can close the proxy before starting the service and before sending the request. The command to close the proxy is: +``` +unset https_proxy +unset http_proxy +``` diff --git a/deploy/pdserving/README_CN.md b/deploy/pdserving/README_CN.md new file mode 100644 index 00000000..3e3f1bde --- /dev/null +++ b/deploy/pdserving/README_CN.md @@ -0,0 +1,160 @@ +# PPOCR 服务化部署 + +([English](./README.md)|简体中文) + +PaddleOCR提供2种服务部署方式: +- 基于PaddleHub Serving的部署:代码路径为"`./deploy/hubserving`",使用方法参考[文档](../../deploy/hubserving/readme.md); +- 基于PaddleServing的部署:代码路径为"`./deploy/pdserving`",按照本教程使用。 + +# 基于PaddleServing的服务部署 + +本文档将介绍如何使用[PaddleServing](https://github.com/PaddlePaddle/Serving/blob/develop/README_CN.md)工具部署PPOCR +动态图模型的pipeline在线服务。 + +相比较于hubserving部署,PaddleServing具备以下优点: +- 支持客户端和服务端之间高并发和高效通信 +- 支持 工业级的服务能力 例如模型管理,在线加载,在线A/B测试等 +- 支持 多种编程语言 开发客户端,例如C++, Python和Java + +更多有关PaddleServing服务化部署框架介绍和使用教程参考[文档](https://github.com/PaddlePaddle/Serving/blob/develop/README_CN.md)。 + +## 目录 +- [环境准备](#环境准备) +- [模型转换](#模型转换) +- [Paddle Serving pipeline部署](#部署) +- [FAQ](#FAQ) + + +## 环境准备 + +需要准备PaddleOCR的运行环境和Paddle Serving的运行环境。 + +- 准备PaddleOCR的运行环境参考[链接](../../doc/doc_ch/installation.md) + +- 准备PaddleServing的运行环境,步骤如下 + +1. 安装serving,用于启动服务 + ``` + pip3 install paddle-serving-server==0.5.0 # for CPU + pip3 install paddle-serving-server-gpu==0.5.0 # for GPU + # 其他GPU环境需要确认环境再选择执行如下命令 + pip3 install paddle-serving-server-gpu==0.5.0.post9 # GPU with CUDA9.0 + pip3 install paddle-serving-server-gpu==0.5.0.post10 # GPU with CUDA10.0 + pip3 install paddle-serving-server-gpu==0.5.0.post101 # GPU with CUDA10.1 + TensorRT6 + pip3 install paddle-serving-server-gpu==0.5.0.post11 # GPU with CUDA10.1 + TensorRT7 + ``` + +2. 安装client,用于向服务发送请求 + ``` + pip3 install paddle-serving-client==0.5.0 # for CPU + + pip3 install paddle-serving-client-gpu==0.5.0 # for GPU + ``` + +3. 安装serving-app + ``` + pip3 install paddle-serving-app==0.3.0 + ``` + **note:** 安装0.3.0版本的serving-app后,为了能加载动态图模型,需要修改serving_app的源码,具体为: + ``` + # 找到paddle_serving_app的安装目录,找到并编辑local_predict.py文件 + vim /usr/local/lib/python3.7/site-packages/paddle_serving_app/local_predict.py + # 将local_predict.py 的第85行 config = AnalysisConfig(model_path) 替换为: + if os.path.exists(os.path.join(model_path, "__params__")): + config = AnalysisConfig(os.path.join(model_path, "__model__"), os.path.join(model_path, "__params__")) + else: + config = AnalysisConfig(model_path) + ``` + + **Note:** 如果要安装最新版本的PaddleServing参考[链接](https://github.com/PaddlePaddle/Serving/blob/develop/doc/LATEST_PACKAGES.md)。 + + +## 模型转换 + +使用PaddleServing做服务化部署时,需要将保存的inference模型转换为serving易于部署的模型。 + +首先,下载PPOCR的[inference模型](https://github.com/PaddlePaddle/PaddleOCR#pp-ocr-20-series-model-listupdate-on-dec-15) +``` +# 下载并解压 OCR 文本检测模型 +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_det_infer.tar && tar xf ch_ppocr_server_v2.0_det_infer.tar +# 下载并解压 OCR 文本识别模型 +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar && tar xf ch_ppocr_server_v2.0_rec_infer.tar +``` + +接下来,用安装的paddle_serving_client把下载的inference模型转换成易于server部署的模型格式。 + +``` +# 转换检测模型 +python3 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_det_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./ppocr_det_server_2.0_serving/ \ + --serving_client ./ppocr_det_server_2.0_client/ + +# 转换识别模型 +python3 -m paddle_serving_client.convert --dirname ./ch_ppocr_server_v2.0_rec_infer/ \ + --model_filename inference.pdmodel \ + --params_filename inference.pdiparams \ + --serving_server ./ppocr_rec_server_2.0_serving/ \ + --serving_client ./ppocr_rec_server_2.0_client/ +``` + +检测模型转换完成后,会在当前文件夹多出`ppocr_det_server_2.0_serving` 和`ppocr_det_server_2.0_client`的文件夹,具备如下格式: +``` +|- ppocr_det_server_2.0_serving/ + |- __model__ + |- __params__ + |- serving_server_conf.prototxt + |- serving_server_conf.stream.prototxt + +|- ppocr_det_server_2.0_client + |- serving_client_conf.prototxt + |- serving_client_conf.stream.prototxt + +``` +识别模型同理。 + + +## Paddle Serving pipeline部署 + +1. 下载PaddleOCR代码,若已下载可跳过此步骤 + ``` + git clone https://github.com/PaddlePaddle/PaddleOCR + + # 进入到工作目录 + cd PaddleOCR/deploy/pdserver/ + ``` + pdserver目录包含启动pipeline服务和发送预测请求的代码,包括: + ``` + __init__.py + config.yml # 启动服务的配置文件 + ocr_reader.py # OCR模型预处理和后处理的代码实现 + pipeline_http_client.py # 发送pipeline预测请求的脚本 + web_service.py # 启动pipeline服务端的脚本 + ``` + +2. 启动服务可运行如下命令: + ``` + # 启动服务,运行日志保存在log.txt + python3 web_service.py &>log.txt & + ``` + 成功启动服务后,log.txt中会打印类似如下日志 + ![](./imgs/start_server.png) + +3. 发送服务请求: + ``` + python3 pipeline_http_client.py + ``` + 成功运行后,模型预测的结果会打印在cmd窗口中,结果示例为: + ![](./imgs/results.png) + + + +## FAQ +**Q1**: 发送请求后没有结果返回或者提示输出解码报错 + +**A1**: 启动服务和发送请求时不要设置代理,可以在启动服务前和发送请求前关闭代理,关闭代理的命令是: +``` +unset https_proxy +unset http_proxy +``` diff --git a/deploy/pdserving/__init__.py b/deploy/pdserving/__init__.py new file mode 100644 index 00000000..185a92b8 --- /dev/null +++ b/deploy/pdserving/__init__.py @@ -0,0 +1,13 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. diff --git a/deploy/pdserving/config.yml b/deploy/pdserving/config.yml new file mode 100644 index 00000000..aef735db --- /dev/null +++ b/deploy/pdserving/config.yml @@ -0,0 +1,71 @@ +#rpc端口, rpc_port和http_port不允许同时为空。当rpc_port为空且http_port不为空时,会自动将rpc_port设置为http_port+1 +rpc_port: 18090 + +#http端口, rpc_port和http_port不允许同时为空。当rpc_port可用且http_port为空时,不自动生成http_port +http_port: 9999 + +#worker_num, 最大并发数。当build_dag_each_worker=True时, 框架会创建worker_num个进程,每个进程内构建grpcSever和DAG +##当build_dag_each_worker=False时,框架会设置主线程grpc线程池的max_workers=worker_num +worker_num: 20 + +#build_dag_each_worker, False,框架在进程内创建一条DAG;True,框架会每个进程内创建多个独立的DAG +build_dag_each_worker: false + +dag: + #op资源类型, True, 为线程模型;False,为进程模型 + is_thread_op: False + + #重试次数 + retry: 1 + + #使用性能分析, True,生成Timeline性能数据,对性能有一定影响;False为不使用 + use_profile: False + + tracer: + interval_s: 10 +op: + det: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 4 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + #client类型,包括brpc, grpc和local_predictor.local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #det模型路径 + model_config: /paddle/serving/models/det_serving_server/ #ocr_det_model + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["save_infer_model/scale_0.tmp_1"] + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "2" + + ir_optim: True + rec: + #并发数,is_thread_op=True时,为线程并发;否则为进程并发 + concurrency: 1 + + #超时时间, 单位ms + timeout: -1 + + #Serving交互重试次数,默认不重试 + retry: 1 + + #当op配置没有server_endpoints时,从local_service_conf读取本地服务配置 + local_service_conf: + + #client类型,包括brpc, grpc和local_predictor。local_predictor不启动Serving服务,进程内预测 + client_type: local_predictor + + #rec模型路径 + model_config: /paddle/serving/models/rec_serving_server/ #ocr_rec_model + + #Fetch结果列表,以client_config中fetch_var的alias_name为准 + fetch_list: ["save_infer_model/scale_0.tmp_1"] #["ctc_greedy_decoder_0.tmp_0", "softmax_0.tmp_0"] + + #计算硬件ID,当devices为""或不写时为CPU预测;当devices为"0", "0,1,2"时为GPU预测,表示使用的GPU卡 + devices: "2" + + ir_optim: True diff --git a/deploy/imgs/cpp_infer_pred_12.png b/deploy/pdserving/imgs/cpp_infer_pred_12.png similarity index 100% rename from deploy/imgs/cpp_infer_pred_12.png rename to deploy/pdserving/imgs/cpp_infer_pred_12.png diff --git a/deploy/imgs/demo.png b/deploy/pdserving/imgs/demo.png similarity index 100% rename from deploy/imgs/demo.png rename to deploy/pdserving/imgs/demo.png diff --git a/deploy/pdserving/imgs/results.png b/deploy/pdserving/imgs/results.png new file mode 100644 index 00000000..35322bf9 Binary files /dev/null and b/deploy/pdserving/imgs/results.png differ diff --git a/deploy/pdserving/imgs/start_server.png b/deploy/pdserving/imgs/start_server.png new file mode 100644 index 00000000..60e19cca Binary files /dev/null and b/deploy/pdserving/imgs/start_server.png differ diff --git a/deploy/pdserving/ocr_reader.py b/deploy/pdserving/ocr_reader.py new file mode 100644 index 00000000..95110706 --- /dev/null +++ b/deploy/pdserving/ocr_reader.py @@ -0,0 +1,438 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import cv2 +import copy +import numpy as np +import math +import re +import sys +import argparse +import string +from copy import deepcopy +import paddle + + +class DetResizeForTest(object): + def __init__(self, **kwargs): + super(DetResizeForTest, self).__init__() + self.resize_type = 0 + if 'image_shape' in kwargs: + self.image_shape = kwargs['image_shape'] + self.resize_type = 1 + elif 'limit_side_len' in kwargs: + self.limit_side_len = kwargs['limit_side_len'] + self.limit_type = kwargs.get('limit_type', 'min') + elif 'resize_long' in kwargs: + self.resize_type = 2 + self.resize_long = kwargs.get('resize_long', 960) + else: + self.limit_side_len = 736 + self.limit_type = 'min' + + def __call__(self, data): + img = deepcopy(data) + src_h, src_w, _ = img.shape + + if self.resize_type == 0: + img, [ratio_h, ratio_w] = self.resize_image_type0(img) + elif self.resize_type == 2: + img, [ratio_h, ratio_w] = self.resize_image_type2(img) + else: + img, [ratio_h, ratio_w] = self.resize_image_type1(img) + + return img + + def resize_image_type1(self, img): + resize_h, resize_w = self.image_shape + ori_h, ori_w = img.shape[:2] # (h, w, c) + ratio_h = float(resize_h) / ori_h + ratio_w = float(resize_w) / ori_w + img = cv2.resize(img, (int(resize_w), int(resize_h))) + return img, [ratio_h, ratio_w] + + def resize_image_type0(self, img): + """ + resize image to a size multiple of 32 which is required by the network + args: + img(array): array with shape [h, w, c] + return(tuple): + img, (ratio_h, ratio_w) + """ + limit_side_len = self.limit_side_len + h, w, _ = img.shape + + # limit the max side + if self.limit_type == 'max': + if max(h, w) > limit_side_len: + if h > w: + ratio = float(limit_side_len) / h + else: + ratio = float(limit_side_len) / w + else: + ratio = 1. + else: + if min(h, w) < limit_side_len: + if h < w: + ratio = float(limit_side_len) / h + else: + ratio = float(limit_side_len) / w + else: + ratio = 1. + resize_h = int(h * ratio) + resize_w = int(w * ratio) + + resize_h = int(round(resize_h / 32) * 32) + resize_w = int(round(resize_w / 32) * 32) + + try: + if int(resize_w) <= 0 or int(resize_h) <= 0: + return None, (None, None) + img = cv2.resize(img, (int(resize_w), int(resize_h))) + except: + print(img.shape, resize_w, resize_h) + sys.exit(0) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + # return img, np.array([h, w]) + return img, [ratio_h, ratio_w] + + def resize_image_type2(self, img): + h, w, _ = img.shape + + resize_w = w + resize_h = h + + # Fix the longer side + if resize_h > resize_w: + ratio = float(self.resize_long) / resize_h + else: + ratio = float(self.resize_long) / resize_w + + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + img = cv2.resize(img, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + + return img, [ratio_h, ratio_w] + + +class BaseRecLabelDecode(object): + """ Convert between text-label and text-index """ + + def __init__(self, config): + support_character_type = [ + 'ch', 'en', 'EN_symbol', 'french', 'german', 'japan', 'korean', + 'it', 'xi', 'pu', 'ru', 'ar', 'ta', 'ug', 'fa', 'ur', 'rs', 'oc', + 'rsc', 'bg', 'uk', 'be', 'te', 'ka', 'chinese_cht', 'hi', 'mr', + 'ne', 'EN' + ] + character_type = config['character_type'] + character_dict_path = config['character_dict_path'] + use_space_char = True + assert character_type in support_character_type, "Only {} are supported now but get {}".format( + support_character_type, character_type) + + self.beg_str = "sos" + self.end_str = "eos" + + if character_type == "en": + self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz" + dict_character = list(self.character_str) + elif character_type == "EN_symbol": + # same with ASTER setting (use 94 char). + self.character_str = string.printable[:-6] + dict_character = list(self.character_str) + elif character_type in support_character_type: + self.character_str = "" + assert character_dict_path is not None, "character_dict_path should not be None when character_type is {}".format( + character_type) + with open(character_dict_path, "rb") as fin: + lines = fin.readlines() + for line in lines: + line = line.decode('utf-8').strip("\n").strip("\r\n") + self.character_str += line + if use_space_char: + self.character_str += " " + dict_character = list(self.character_str) + + else: + raise NotImplementedError + self.character_type = character_type + dict_character = self.add_special_char(dict_character) + self.dict = {} + for i, char in enumerate(dict_character): + self.dict[char] = i + self.character = dict_character + + def add_special_char(self, dict_character): + return dict_character + + def decode(self, text_index, text_prob=None, is_remove_duplicate=False): + """ convert text-index into text-label. """ + result_list = [] + ignored_tokens = self.get_ignored_tokens() + batch_size = len(text_index) + for batch_idx in range(batch_size): + char_list = [] + conf_list = [] + for idx in range(len(text_index[batch_idx])): + if text_index[batch_idx][idx] in ignored_tokens: + continue + if is_remove_duplicate: + # only for predict + if idx > 0 and text_index[batch_idx][idx - 1] == text_index[ + batch_idx][idx]: + continue + char_list.append(self.character[int(text_index[batch_idx][ + idx])]) + if text_prob is not None: + conf_list.append(text_prob[batch_idx][idx]) + else: + conf_list.append(1) + text = ''.join(char_list) + result_list.append((text, np.mean(conf_list))) + return result_list + + def get_ignored_tokens(self): + return [0] # for ctc blank + + +class CTCLabelDecode(BaseRecLabelDecode): + """ Convert between text-label and text-index """ + + def __init__( + self, + config, + #character_dict_path=None, + #character_type='ch', + #use_space_char=False, + **kwargs): + super(CTCLabelDecode, self).__init__(config) + + def __call__(self, preds, label=None, *args, **kwargs): + if isinstance(preds, paddle.Tensor): + preds = preds.numpy() + preds_idx = preds.argmax(axis=2) + preds_prob = preds.max(axis=2) + text = self.decode(preds_idx, preds_prob, is_remove_duplicate=True) + if label is None: + return text + label = self.decode(label) + return text, label + + def add_special_char(self, dict_character): + dict_character = ['blank'] + dict_character + return dict_character + + +class CharacterOps(object): + """ Convert between text-label and text-index """ + + def __init__(self, config): + self.character_type = config['character_type'] + self.loss_type = config['loss_type'] + if self.character_type == "en": + self.character_str = "0123456789abcdefghijklmnopqrstuvwxyz" + dict_character = list(self.character_str) + elif self.character_type == "ch": + character_dict_path = config['character_dict_path'] + self.character_str = "" + with open(character_dict_path, "rb") as fin: + lines = fin.readlines() + for line in lines: + line = line.decode('utf-8').strip("\n").strip("\r\n") + self.character_str += line + dict_character = list(self.character_str) + elif self.character_type == "en_sensitive": + # same with ASTER setting (use 94 char). + self.character_str = string.printable[:-6] + dict_character = list(self.character_str) + else: + self.character_str = None + assert self.character_str is not None, \ + "Nonsupport type of the character: {}".format(self.character_str) + self.beg_str = "sos" + self.end_str = "eos" + if self.loss_type == "attention": + dict_character = [self.beg_str, self.end_str] + dict_character + self.dict = {} + for i, char in enumerate(dict_character): + self.dict[char] = i + self.character = dict_character + + def encode(self, text): + """convert text-label into text-index. + input: + text: text labels of each image. [batch_size] + + output: + text: concatenated text index for CTCLoss. + [sum(text_lengths)] = [text_index_0 + text_index_1 + ... + text_index_(n - 1)] + length: length of each text. [batch_size] + """ + if self.character_type == "en": + text = text.lower() + + text_list = [] + for char in text: + if char not in self.dict: + continue + text_list.append(self.dict[char]) + text = np.array(text_list) + return text + + def decode(self, text_index, is_remove_duplicate=False): + """ convert text-index into text-label. """ + char_list = [] + char_num = self.get_char_num() + + if self.loss_type == "attention": + beg_idx = self.get_beg_end_flag_idx("beg") + end_idx = self.get_beg_end_flag_idx("end") + ignored_tokens = [beg_idx, end_idx] + else: + ignored_tokens = [char_num] + + for idx in range(len(text_index)): + if text_index[idx] in ignored_tokens: + continue + if is_remove_duplicate: + if idx > 0 and text_index[idx - 1] == text_index[idx]: + continue + char_list.append(self.character[text_index[idx]]) + text = ''.join(char_list) + return text + + def get_char_num(self): + return len(self.character) + + def get_beg_end_flag_idx(self, beg_or_end): + if self.loss_type == "attention": + if beg_or_end == "beg": + idx = np.array(self.dict[self.beg_str]) + elif beg_or_end == "end": + idx = np.array(self.dict[self.end_str]) + else: + assert False, "Unsupport type %s in get_beg_end_flag_idx"\ + % beg_or_end + return idx + else: + err = "error in get_beg_end_flag_idx when using the loss %s"\ + % (self.loss_type) + assert False, err + + +class OCRReader(object): + def __init__(self, + algorithm="CRNN", + image_shape=[3, 32, 320], + char_type="ch", + batch_num=1, + char_dict_path="./ppocr_keys_v1.txt"): + self.rec_image_shape = image_shape + self.character_type = char_type + self.rec_batch_num = batch_num + char_ops_params = {} + char_ops_params["character_type"] = char_type + char_ops_params["character_dict_path"] = char_dict_path + char_ops_params['loss_type'] = 'ctc' + self.char_ops = CharacterOps(char_ops_params) + self.label_ops = CTCLabelDecode(char_ops_params) + + def resize_norm_img(self, img, max_wh_ratio): + imgC, imgH, imgW = self.rec_image_shape + if self.character_type == "ch": + imgW = int(32 * max_wh_ratio) + h = img.shape[0] + w = img.shape[1] + ratio = w / float(h) + if math.ceil(imgH * ratio) > imgW: + resized_w = imgW + else: + resized_w = int(math.ceil(imgH * ratio)) + resized_image = cv2.resize(img, (resized_w, imgH)) + resized_image = resized_image.astype('float32') + resized_image = resized_image.transpose((2, 0, 1)) / 255 + resized_image -= 0.5 + resized_image /= 0.5 + padding_im = np.zeros((imgC, imgH, imgW), dtype=np.float32) + + padding_im[:, :, 0:resized_w] = resized_image + return padding_im + + def preprocess(self, img_list): + img_num = len(img_list) + norm_img_batch = [] + max_wh_ratio = 0 + for ino in range(img_num): + h, w = img_list[ino].shape[0:2] + wh_ratio = w * 1.0 / h + max_wh_ratio = max(max_wh_ratio, wh_ratio) + + for ino in range(img_num): + norm_img = self.resize_norm_img(img_list[ino], max_wh_ratio) + norm_img = norm_img[np.newaxis, :] + norm_img_batch.append(norm_img) + norm_img_batch = np.concatenate(norm_img_batch) + norm_img_batch = norm_img_batch.copy() + + return norm_img_batch[0] + + def postprocess_old(self, outputs, with_score=False): + rec_res = [] + rec_idx_lod = outputs["ctc_greedy_decoder_0.tmp_0.lod"] + rec_idx_batch = outputs["ctc_greedy_decoder_0.tmp_0"] + if with_score: + predict_lod = outputs["softmax_0.tmp_0.lod"] + for rno in range(len(rec_idx_lod) - 1): + beg = rec_idx_lod[rno] + end = rec_idx_lod[rno + 1] + if isinstance(rec_idx_batch, list): + rec_idx_tmp = [x[0] for x in rec_idx_batch[beg:end]] + else: #nd array + rec_idx_tmp = rec_idx_batch[beg:end, 0] + preds_text = self.char_ops.decode(rec_idx_tmp) + if with_score: + beg = predict_lod[rno] + end = predict_lod[rno + 1] + if isinstance(outputs["softmax_0.tmp_0"], list): + outputs["softmax_0.tmp_0"] = np.array(outputs[ + "softmax_0.tmp_0"]).astype(np.float32) + probs = outputs["softmax_0.tmp_0"][beg:end, :] + ind = np.argmax(probs, axis=1) + blank = probs.shape[1] + valid_ind = np.where(ind != (blank - 1))[0] + score = np.mean(probs[valid_ind, ind[valid_ind]]) + rec_res.append([preds_text, score]) + else: + rec_res.append([preds_text]) + return rec_res + + def postprocess(self, outputs, with_score=False): + preds = outputs["save_infer_model/scale_0.tmp_1"] + try: + preds = preds.numpy() + except: + pass + preds_idx = preds.argmax(axis=2) + preds_prob = preds.max(axis=2) + text = self.label_ops.decode( + preds_idx, preds_prob, is_remove_duplicate=True) + return text diff --git a/deploy/pdserving/pipeline_http_client.py b/deploy/pdserving/pipeline_http_client.py new file mode 100644 index 00000000..88c4a81e --- /dev/null +++ b/deploy/pdserving/pipeline_http_client.py @@ -0,0 +1,40 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +import requests +import json +import base64 +import os + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +url = "http://127.0.0.1:9999/ocr/prediction" +test_img_dir = "../doc/imgs/" +for idx, img_file in enumerate(os.listdir(test_img_dir)): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data1 = file.read() + + image = cv2_to_base64(image_data1) + + for i in range(1): + data = {"key": ["image"], "value": [image]} + r = requests.post(url=url, data=json.dumps(data)) + print(r.json()) + +test_img_dir = "../doc/imgs/" +print("==> total number of test imgs: ", len(os.listdir(test_img_dir))) diff --git a/deploy/pdserving/pipeline_rpc_client.py b/deploy/pdserving/pipeline_rpc_client.py new file mode 100644 index 00000000..7471f7ed --- /dev/null +++ b/deploy/pdserving/pipeline_rpc_client.py @@ -0,0 +1,42 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +try: + from paddle_serving_server_gpu.pipeline import PipelineClient +except ImportError: + from paddle_serving_server.pipeline import PipelineClient +import numpy as np +import requests +import json +import cv2 +import base64 +import os + +client = PipelineClient() +client.connect(['127.0.0.1:18090']) + + +def cv2_to_base64(image): + return base64.b64encode(image).decode('utf8') + + +test_img_dir = "imgs/" +for img_file in os.listdir(test_img_dir): + with open(os.path.join(test_img_dir, img_file), 'rb') as file: + image_data = file.read() + image = cv2_to_base64(image_data) + +for i in range(1): + ret = client.predict(feed_dict={"image": image}, fetch=["res"]) + print(ret) + #print(ret) diff --git a/deploy/pdserving/web_service.py b/deploy/pdserving/web_service.py new file mode 100644 index 00000000..b47ef65d --- /dev/null +++ b/deploy/pdserving/web_service.py @@ -0,0 +1,127 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +try: + from paddle_serving_server_gpu.web_service import WebService, Op +except ImportError: + from paddle_serving_server.web_service import WebService, Op + +import logging +import numpy as np +import cv2 +import base64 +# from paddle_serving_app.reader import OCRReader +from ocr_reader import OCRReader, DetResizeForTest +from paddle_serving_app.reader import Sequential, ResizeByFactor +from paddle_serving_app.reader import Div, Normalize, Transpose +from paddle_serving_app.reader import DBPostProcess, FilterBoxes, GetRotateCropImage, SortedBoxes + +_LOGGER = logging.getLogger() + + +class DetOp(Op): + def init_op(self): + self.det_preprocess = Sequential([ + DetResizeForTest(), Div(255), + Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]), Transpose( + (2, 0, 1)) + ]) + self.filter_func = FilterBoxes(10, 10) + self.post_func = DBPostProcess({ + "thresh": 0.3, + "box_thresh": 0.5, + "max_candidates": 1000, + "unclip_ratio": 1.5, + "min_size": 3 + }) + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + data = base64.b64decode(input_dict["image"].encode('utf8')) + data = np.fromstring(data, np.uint8) + # Note: class variables(self.var) can only be used in process op mode + im = cv2.imdecode(data, cv2.IMREAD_COLOR) + self.im = im + self.ori_h, self.ori_w, _ = im.shape + + det_img = self.det_preprocess(self.im) + _, self.new_h, self.new_w = det_img.shape + print("det image shape", det_img.shape) + return {"x": det_img[np.newaxis, :].copy()}, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, log_id): + print("input_dicts: ", input_dicts) + det_out = fetch_dict["save_infer_model/scale_0.tmp_1"] + ratio_list = [ + float(self.new_h) / self.ori_h, float(self.new_w) / self.ori_w + ] + dt_boxes_list = self.post_func(det_out, [ratio_list]) + dt_boxes = self.filter_func(dt_boxes_list[0], [self.ori_h, self.ori_w]) + out_dict = {"dt_boxes": dt_boxes, "image": self.im} + + print("out dict", out_dict["dt_boxes"]) + return out_dict, None, "" + + +class RecOp(Op): + def init_op(self): + self.ocr_reader = OCRReader( + char_dict_path="../../ppocr/utils/ppocr_keys_v1.txt") + + self.get_rotate_crop_image = GetRotateCropImage() + self.sorted_boxes = SortedBoxes() + + def preprocess(self, input_dicts, data_id, log_id): + (_, input_dict), = input_dicts.items() + im = input_dict["image"] + dt_boxes = input_dict["dt_boxes"] + dt_boxes = self.sorted_boxes(dt_boxes) + feed_list = [] + img_list = [] + max_wh_ratio = 0 + for i, dtbox in enumerate(dt_boxes): + boximg = self.get_rotate_crop_image(im, dt_boxes[i]) + img_list.append(boximg) + h, w = boximg.shape[0:2] + wh_ratio = w * 1.0 / h + max_wh_ratio = max(max_wh_ratio, wh_ratio) + _, w, h = self.ocr_reader.resize_norm_img(img_list[0], + max_wh_ratio).shape + + imgs = np.zeros((len(img_list), 3, w, h)).astype('float32') + for id, img in enumerate(img_list): + norm_img = self.ocr_reader.resize_norm_img(img, max_wh_ratio) + imgs[id] = norm_img + print("rec image shape", imgs.shape) + feed = {"x": imgs.copy()} + return feed, False, None, "" + + def postprocess(self, input_dicts, fetch_dict, log_id): + rec_res = self.ocr_reader.postprocess(fetch_dict, with_score=True) + res_lst = [] + for res in rec_res: + res_lst.append(res[0]) + res = {"res": str(res_lst)} + return res, None, "" + + +class OcrService(WebService): + def get_pipeline_response(self, read_op): + det_op = DetOp(name="det", input_ops=[read_op]) + rec_op = RecOp(name="rec", input_ops=[det_op]) + return rec_op + + +uci_service = OcrService(name="ocr") +uci_service.prepare_pipeline_config("config.yml") +uci_service.run_service() diff --git a/deploy/slim/prune/README.md b/deploy/slim/prune/README.md new file mode 100644 index 00000000..d9675c5a --- /dev/null +++ b/deploy/slim/prune/README.md @@ -0,0 +1,64 @@ + +## 介绍 + +复杂的模型有利于提高模型的性能,但也导致模型中存在一定冗余,模型裁剪通过移出网络模型中的子模型来减少这种冗余,达到减少模型计算复杂度,提高模型推理性能的目的。 +本教程将介绍如何使用飞桨模型压缩库PaddleSlim做PaddleOCR模型的压缩。 +[PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim)集成了模型剪枝、量化(包括量化训练和离线量化)、蒸馏和神经网络搜索等多种业界常用且领先的模型压缩功能,如果您感兴趣,可以关注并了解。 + + +在开始本教程之前,建议先了解: +1. [PaddleOCR模型的训练方法](../../../doc/doc_ch/quickstart.md) +2. [模型裁剪教程](https://github.com/PaddlePaddle/PaddleSlim/blob/release%2F2.0.0/docs/zh_cn/tutorials/pruning/dygraph/filter_pruning.md) + + +## 快速开始 + +模型裁剪主要包括四个步骤: +1. 安装 PaddleSlim +2. 准备训练好的模型 +3. 敏感度分析、裁剪训练 +4. 导出模型、预测部署 + +### 1. 安装PaddleSlim + +```bash +git clone https://github.com/PaddlePaddle/PaddleSlim.git +git checkout develop +cd Paddleslim +python3 setup.py install +``` + +### 2. 获取预训练模型 +模型裁剪需要加载事先训练好的模型,PaddleOCR也提供了一系列(模型)[../../../doc/doc_ch/models_list.md],开发者可根据需要自行选择模型或使用自己的模型。 + +### 3. 敏感度分析训练 + +加载预训练模型后,通过对现有模型的每个网络层进行敏感度分析,得到敏感度文件:sen.pickle,可以通过PaddleSlim提供的[接口](https://github.com/PaddlePaddle/PaddleSlim/blob/9b01b195f0c4bc34a1ab434751cb260e13d64d9e/paddleslim/dygraph/prune/filter_pruner.py#L75)加载文件,获得各网络层在不同裁剪比例下的精度损失。从而了解各网络层冗余度,决定每个网络层的裁剪比例。 +敏感度文件内容格式: + sen.pickle(Dict){ + 'layer_weight_name_0': sens_of_each_ratio(Dict){'pruning_ratio_0': acc_loss, 'pruning_ratio_1': acc_loss} + 'layer_weight_name_1': sens_of_each_ratio(Dict){'pruning_ratio_0': acc_loss, 'pruning_ratio_1': acc_loss} + } + + 例子: + { + 'conv10_expand_weights': {0.1: 0.006509952684312718, 0.2: 0.01827734339798862, 0.3: 0.014528405644659832, 0.6: 0.06536008804270439, 0.8: 0.11798612250664964, 0.7: 0.12391408417493704, 0.4: 0.030615754498018757, 0.5: 0.047105205602406594} + 'conv10_linear_weights': {0.1: 0.05113190831455035, 0.2: 0.07705573833558801, 0.3: 0.12096721757739311, 0.6: 0.5135061352930738, 0.8: 0.7908166677143281, 0.7: 0.7272187676899062, 0.4: 0.1819252083008504, 0.5: 0.3728054727792405} + } +加载敏感度文件后会返回一个字典,字典中的keys为网络模型参数模型的名字,values为一个字典,里面保存了相应网络层的裁剪敏感度信息。例如在例子中,conv10_expand_weights所对应的网络层在裁掉10%的卷积核后模型性能相较原模型会下降0.65%,详细信息可见[PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/algo/algo.md#2-%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%89%AA%E8%A3%81%E5%8E%9F%E7%90%86) + +进入PaddleOCR根目录,通过以下命令对模型进行敏感度分析训练: +```bash +python3.7 deploy/slim/prune/sensitivity_anal.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrain_weights="your trained model" +``` + +### 4. 导出模型、预测部署 + +在得到裁剪训练保存的模型后,我们可以将其导出为inference_model: +```bash +pytho3.7 deploy/slim/prune/export_prune_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrain_weights=./output/det_db/best_accuracy Global.save_inference_dir=inference_model +``` + +inference model的预测和部署参考: +1. [inference model python端预测](../../../doc/doc_ch/inference.md) +2. [inference model C++预测](../../cpp_infer/readme.md) diff --git a/deploy/slim/prune/README_en.md b/deploy/slim/prune/README_en.md new file mode 100644 index 00000000..70cfd580 --- /dev/null +++ b/deploy/slim/prune/README_en.md @@ -0,0 +1,71 @@ + +## Introduction + +Generally, a more complex model would achive better performance in the task, but it also leads to some redundancy in the model. Model Pruning is a technique that reduces this redundancy by removing the sub-models in the neural network model, so as to reduce model calculation complexity and improve model inference performance. + +This example uses PaddleSlim provided[APIs of Pruning](https://paddlepaddle.github.io/PaddleSlim/api/prune_api/) to compress the OCR model. +[PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim), an open source library which integrates model pruning, quantization (including quantization training and offline quantization), distillation, neural network architecture search, and many other commonly used and leading model compression technique in the industry. + +It is recommended that you could understand following pages before reading this example: +1. [PaddleOCR training methods](../../../doc/doc_ch/quickstart.md) +2. [The demo of prune](https://github.com/PaddlePaddle/PaddleSlim/blob/release%2F2.0.0/docs/zh_cn/tutorials/pruning/dygraph/filter_pruning.md) + +## Quick start + +Five steps for OCR model prune: +1. Install PaddleSlim +2. Prepare the trained model +3. Sensitivity analysis and tailoring training +4. Export model, predict deployment + +### 1. Install PaddleSlim + +```bash +git clone https://github.com/PaddlePaddle/PaddleSlim.git +git checkout develop +cd Paddleslim +python3 setup.py install +``` + + +### 2. Download Pretrain Model +Model prune needs to load pre-trained models. +PaddleOCR also provides a series of (models)[../../../doc/doc_en/models_list_en.md]. Developers can choose their own models or use their own models according to their needs. + + +### 3. Pruning sensitivity analysis + + After the pre-training model is loaded, sensitivity analysis is performed on each network layer of the model to understand the redundancy of each network layer, and save a sensitivity file which named: sen.pickle. After that, user could load the sensitivity file via the [methods provided by PaddleSlim](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/paddleslim/prune/sensitive.py#L221) and determining the pruning ratio of each network layer automatically. For specific details of sensitivity analysis, see:[Sensitivity analysis](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/tutorials/image_classification_sensitivity_analysis_tutorial.md) + The data format of sensitivity file: + sen.pickle(Dict){ + 'layer_weight_name_0': sens_of_each_ratio(Dict){'pruning_ratio_0': acc_loss, 'pruning_ratio_1': acc_loss} + 'layer_weight_name_1': sens_of_each_ratio(Dict){'pruning_ratio_0': acc_loss, 'pruning_ratio_1': acc_loss} + } + + example: + { + 'conv10_expand_weights': {0.1: 0.006509952684312718, 0.2: 0.01827734339798862, 0.3: 0.014528405644659832, 0.6: 0.06536008804270439, 0.8: 0.11798612250664964, 0.7: 0.12391408417493704, 0.4: 0.030615754498018757, 0.5: 0.047105205602406594} + 'conv10_linear_weights': {0.1: 0.05113190831455035, 0.2: 0.07705573833558801, 0.3: 0.12096721757739311, 0.6: 0.5135061352930738, 0.8: 0.7908166677143281, 0.7: 0.7272187676899062, 0.4: 0.1819252083008504, 0.5: 0.3728054727792405} + } + The function would return a dict after loading the sensitivity file. The keys of the dict are name of parameters in each layer. And the value of key is the information about pruning sensitivity of correspoding layer. In example, pruning 10% filter of the layer corresponding to conv10_expand_weights would lead to 0.65% degradation of model performance. The details could be seen at: [Sensitivity analysis](https://github.com/PaddlePaddle/PaddleSlim/blob/develop/docs/zh_cn/algo/algo.md#2-%E5%8D%B7%E7%A7%AF%E6%A0%B8%E5%89%AA%E8%A3%81%E5%8E%9F%E7%90%86) + + +Enter the PaddleOCR root directory,perform sensitivity analysis on the model with the following command: + +```bash + +python3.7 deploy/slim/prune/sensitivity_anal.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrain_weights="your trained model" + +``` + + +### 5. Export inference model and deploy it + +We can export the pruned model as inference_model for deployment: +```bash +python deploy/slim/prune/export_prune_model.py -c configs/det/ch_ppocr_v2.0/ch_det_mv3_db_v2.0.yml -o Global.pretrain_weights=./output/det_db/best_accuracy Global.test_batch_size_per_card=1 Global.save_inference_dir=inference_model +``` + +Reference for prediction and deployment of inference model: +1. [inference model python prediction](../../../doc/doc_en/inference_en.md) +2. [inference model C++ prediction](../../cpp_infer/readme_en.md) diff --git a/deploy/slim/prune/export_prune_model.py b/deploy/slim/prune/export_prune_model.py new file mode 100644 index 00000000..29f7d211 --- /dev/null +++ b/deploy/slim/prune/export_prune_model.py @@ -0,0 +1,125 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import sys + +__dir__ = os.path.dirname(__file__) +sys.path.append(__dir__) +sys.path.append(os.path.join(__dir__, '..', '..', '..')) +sys.path.append(os.path.join(__dir__, '..', '..', '..', 'tools')) + +import paddle +from ppocr.data import build_dataloader +from ppocr.modeling.architectures import build_model + +from ppocr.postprocess import build_post_process +from ppocr.metrics import build_metric +from ppocr.utils.save_load import init_model +import tools.program as program + + +def main(config, device, logger, vdl_writer): + + global_config = config['Global'] + + # build dataloader + valid_dataloader = build_dataloader(config, 'Eval', device, logger) + + # build post process + post_process_class = build_post_process(config['PostProcess'], + global_config) + + # build model + # for rec algorithm + if hasattr(post_process_class, 'character'): + char_num = len(getattr(post_process_class, 'character')) + config['Architecture']["Head"]['out_channels'] = char_num + model = build_model(config['Architecture']) + + flops = paddle.flops(model, [1, 3, 640, 640]) + logger.info(f"FLOPs before pruning: {flops}") + + from paddleslim.dygraph import FPGMFilterPruner + model.train() + pruner = FPGMFilterPruner(model, [1, 3, 640, 640]) + + # build metric + eval_class = build_metric(config['Metric']) + + def eval_fn(): + metric = program.eval(model, valid_dataloader, post_process_class, + eval_class) + logger.info(f"metric['hmean']: {metric['hmean']}") + return metric['hmean'] + + params_sensitive = pruner.sensitive( + eval_func=eval_fn, + sen_file="./sen.pickle", + skip_vars=[ + "conv2d_57.w_0", "conv2d_transpose_2.w_0", "conv2d_transpose_3.w_0" + ]) + + logger.info( + "The sensitivity analysis results of model parameters saved in sen.pickle" + ) + # calculate pruned params's ratio + params_sensitive = pruner._get_ratios_by_loss(params_sensitive, loss=0.02) + for key in params_sensitive.keys(): + logger.info(f"{key}, {params_sensitive[key]}") + + plan = pruner.prune_vars(params_sensitive, [0]) + + flops = paddle.flops(model, [1, 3, 640, 640]) + logger.info(f"FLOPs after pruning: {flops}") + + # load pretrain model + pre_best_model_dict = init_model(config, model, logger, None) + metric = program.eval(model, valid_dataloader, post_process_class, + eval_class) + logger.info(f"metric['hmean']: {metric['hmean']}") + + # start export model + from paddle.jit import to_static + + infer_shape = [3, -1, -1] + if config['Architecture']['model_type'] == "rec": + infer_shape = [3, 32, -1] # for rec model, H must be 32 + + if 'Transform' in config['Architecture'] and config['Architecture'][ + 'Transform'] is not None and config['Architecture'][ + 'Transform']['name'] == 'TPS': + logger.info( + 'When there is tps in the network, variable length input is not supported, and the input size needs to be the same as during training' + ) + infer_shape[-1] = 100 + model = to_static( + model, + input_spec=[ + paddle.static.InputSpec( + shape=[None] + infer_shape, dtype='float32') + ]) + + save_path = '{}/inference'.format(config['Global']['save_inference_dir']) + paddle.jit.save(model, save_path) + logger.info('inference model is saved to {}'.format(save_path)) + + +if __name__ == '__main__': + config, device, logger, vdl_writer = program.preprocess(is_train=True) + main(config, device, logger, vdl_writer) diff --git a/deploy/slim/prune/sensitivity_anal.py b/deploy/slim/prune/sensitivity_anal.py new file mode 100644 index 00000000..bd2b9649 --- /dev/null +++ b/deploy/slim/prune/sensitivity_anal.py @@ -0,0 +1,146 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import sys + +__dir__ = os.path.dirname(__file__) +sys.path.append(__dir__) +sys.path.append(os.path.join(__dir__, '..', '..', '..')) +sys.path.append(os.path.join(__dir__, '..', '..', '..', 'tools')) + +import paddle +import paddle.distributed as dist +from ppocr.data import build_dataloader +from ppocr.modeling.architectures import build_model +from ppocr.losses import build_loss +from ppocr.optimizer import build_optimizer +from ppocr.postprocess import build_post_process +from ppocr.metrics import build_metric +from ppocr.utils.save_load import init_model +import tools.program as program + +dist.get_world_size() + + +def get_pruned_params(parameters): + params = [] + + for param in parameters: + if len( + param.shape + ) == 4 and 'depthwise' not in param.name and 'transpose' not in param.name and "conv2d_57" not in param.name and "conv2d_56" not in param.name: + params.append(param.name) + return params + + +def main(config, device, logger, vdl_writer): + # init dist environment + if config['Global']['distributed']: + dist.init_parallel_env() + + global_config = config['Global'] + + # build dataloader + train_dataloader = build_dataloader(config, 'Train', device, logger) + if config['Eval']: + valid_dataloader = build_dataloader(config, 'Eval', device, logger) + else: + valid_dataloader = None + + # build post process + post_process_class = build_post_process(config['PostProcess'], + global_config) + + # build model + # for rec algorithm + if hasattr(post_process_class, 'character'): + char_num = len(getattr(post_process_class, 'character')) + config['Architecture']["Head"]['out_channels'] = char_num + model = build_model(config['Architecture']) + + flops = paddle.flops(model, [1, 3, 640, 640]) + logger.info(f"FLOPs before pruning: {flops}") + + from paddleslim.dygraph import FPGMFilterPruner + model.train() + pruner = FPGMFilterPruner(model, [1, 3, 640, 640]) + + # build loss + loss_class = build_loss(config['Loss']) + + # build optim + optimizer, lr_scheduler = build_optimizer( + config['Optimizer'], + epochs=config['Global']['epoch_num'], + step_each_epoch=len(train_dataloader), + parameters=model.parameters()) + + # build metric + eval_class = build_metric(config['Metric']) + # load pretrain model + pre_best_model_dict = init_model(config, model, logger, optimizer) + + logger.info('train dataloader has {} iters, valid dataloader has {} iters'. + format(len(train_dataloader), len(valid_dataloader))) + # build metric + eval_class = build_metric(config['Metric']) + + logger.info('train dataloader has {} iters, valid dataloader has {} iters'. + format(len(train_dataloader), len(valid_dataloader))) + + def eval_fn(): + metric = program.eval(model, valid_dataloader, post_process_class, + eval_class) + logger.info(f"metric['hmean']: {metric['hmean']}") + return metric['hmean'] + + params_sensitive = pruner.sensitive( + eval_func=eval_fn, + sen_file="./sen.pickle", + skip_vars=[ + "conv2d_57.w_0", "conv2d_transpose_2.w_0", "conv2d_transpose_3.w_0" + ]) + + logger.info( + "The sensitivity analysis results of model parameters saved in sen.pickle" + ) + # calculate pruned params's ratio + params_sensitive = pruner._get_ratios_by_loss(params_sensitive, loss=0.02) + for key in params_sensitive.keys(): + logger.info(f"{key}, {params_sensitive[key]}") + + plan = pruner.prune_vars(params_sensitive, [0]) + for param in model.parameters(): + if ("weights" in param.name and "conv" in param.name) or ( + "w_0" in param.name and "conv2d" in param.name): + logger.info(f"{param.name}: {param.shape}") + + flops = paddle.flops(model, [1, 3, 640, 640]) + logger.info(f"FLOPs after pruning: {flops}") + + # start train + + program.train(config, train_dataloader, valid_dataloader, device, model, + loss_class, optimizer, lr_scheduler, post_process_class, + eval_class, pre_best_model_dict, logger, vdl_writer) + + +if __name__ == '__main__': + config, device, logger, vdl_writer = program.preprocess(is_train=True) + main(config, device, logger, vdl_writer) diff --git a/doc/doc_ch/algorithm_overview.md b/doc/doc_ch/algorithm_overview.md index c8fc280d..19d7a69c 100755 --- a/doc/doc_ch/algorithm_overview.md +++ b/doc/doc_ch/algorithm_overview.md @@ -28,7 +28,9 @@ PaddleOCR开源的文本检测算法列表: | --- | --- | --- | --- | --- | --- | |SAST|ResNet50_vd|89.63%|78.44%|83.66%|[下载链接](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_sast_totaltext_v2.0_train.tar)| -**说明:** SAST模型训练额外加入了icdar2013、icdar2017、COCO-Text、ArT等公开数据集进行调优。PaddleOCR用到的经过整理格式的英文公开数据集下载:[百度云地址](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (提取码: 2bpi) +**说明:** SAST模型训练额外加入了icdar2013、icdar2017、COCO-Text、ArT等公开数据集进行调优。PaddleOCR用到的经过整理格式的英文公开数据集下载: +* [百度云地址](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (提取码: 2bpi) +* [Google Drive下载地址](https://drive.google.com/drive/folders/1ll2-XEVyCQLpJjawLDiRlvo_i4BqHCJe?usp=sharing) PaddleOCR文本检测算法的训练和使用请参考文档教程中[模型训练/评估中的文本检测部分](./detection.md)。 diff --git a/doc/doc_ch/angle_class.md b/doc/doc_ch/angle_class.md index 6e68134a..ad25a666 100644 --- a/doc/doc_ch/angle_class.md +++ b/doc/doc_ch/angle_class.md @@ -1,4 +1,12 @@ ## 文字角度分类 +### 方法介绍 +文字角度分类主要用于图片非0度的场景下,在这种场景下需要对图片里检测到的文本行进行一个转正的操作。在PaddleOCR系统内, +文字检测之后得到的文本行图片经过仿射变换之后送入识别模型,此时只需要对文字进行一个0和180度的角度分类,因此PaddleOCR内置的 +文字角度分类器**只支持了0和180度的分类**。如果想支持更多角度,可以自己修改算法进行支持。 + +0和180度数据样本例子: + +![](../imgs_results/angle_class_example.jpg) ### 数据准备 @@ -13,7 +21,7 @@ ln -sf /train_data/cls/dataset 请参考下文组织您的数据。 - 训练集 -首先请将训练图片放入同一个文件夹(train_images),并用一个txt文件(cls_gt_train.txt)记录图片路径和标签。 +首先建议将训练图片放入同一个文件夹,并用一个txt文件(cls_gt_train.txt)记录图片路径和标签。 **注意:** 默认请将图片路径和图片标签用 `\t` 分割,如用其他方式分割将造成训练报错 @@ -21,8 +29,8 @@ ln -sf /train_data/cls/dataset ``` " 图像文件名 图像标注信息 " -train/word_001.jpg 0 -train/word_002.jpg 180 +train/cls/train/word_001.jpg 0 +train/cls/train/word_002.jpg 180 ``` 最终训练集应有如下文件结构: diff --git a/doc/doc_ch/inference.md b/doc/doc_ch/inference.md index 0daddd9b..1288d906 100755 --- a/doc/doc_ch/inference.md +++ b/doc/doc_ch/inference.md @@ -2,16 +2,18 @@ # 基于Python预测引擎推理 inference 模型(`paddle.jit.save`保存的模型) -一般是模型训练完成后保存的固化模型,多用于预测部署。训练过程中保存的模型是checkpoints模型,保存的是模型的参数,多用于恢复训练等。 -与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合与实际系统集成。 +一般是模型训练,把模型结构和模型参数保存在文件中的固化模型,多用于预测部署场景。 +训练过程中保存的模型是checkpoints模型,保存的只有模型的参数,多用于恢复训练等。 +与checkpoints模型相比,inference 模型会额外保存模型的结构信息,在预测部署、加速推理上性能优越,灵活方便,适合于实际系统集成。 -接下来首先介绍如何将训练的模型转换成inference模型,然后将依次介绍文本检测、文本角度分类器、文本识别以及三者串联基于预测引擎推理。 +接下来首先介绍如何将训练的模型转换成inference模型,然后将依次介绍文本检测、文本角度分类器、文本识别以及三者串联在CPU、GPU上的预测方法。 - [一、训练模型转inference模型](#训练模型转inference模型) - [检测模型转inference模型](#检测模型转inference模型) - [识别模型转inference模型](#识别模型转inference模型) - - [方向分类模型转inference模型](#方向分类模型转inference模型) + - [方向分类模型转inference模型](#方向分类模型转inference模型) + - [端到端模型转inference模型](#端到端模型转inference模型) - [二、文本检测模型推理](#文本检测模型推理) - [1. 超轻量中文检测模型推理](#超轻量中文检测模型推理) @@ -26,10 +28,13 @@ inference 模型(`paddle.jit.save`保存的模型) - [4. 自定义文本识别字典的推理](#自定义文本识别字典的推理) - [5. 多语言模型的推理](#多语言模型的推理) -- [四、方向分类模型推理](#方向识别模型推理) +- [四、端到端模型推理](#端到端模型推理) + - [1. PGNet端到端模型推理](#PGNet端到端模型推理) + +- [五、方向分类模型推理](#方向识别模型推理) - [1. 方向分类模型推理](#方向分类模型推理) -- [五、文本检测、方向分类和文字识别串联推理](#文本检测、方向分类和文字识别串联推理) +- [六、文本检测、方向分类和文字识别串联推理](#文本检测、方向分类和文字识别串联推理) - [1. 超轻量中文OCR模型推理](#超轻量中文OCR模型推理) - [2. 其他模型推理](#其他模型推理) @@ -117,6 +122,32 @@ python3 tools/export_model.py -c configs/cls/cls_mv3.yml -o Global.pretrained_mo ├── inference.pdiparams.info # 分类inference模型的参数信息,可忽略 └── inference.pdmodel # 分类inference模型的program文件 ``` + +### 端到端模型转inference模型 + +下载端到端模型: +``` +wget -P ./ch_lite/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_mobile_v2.0_cls_train.tar && tar xf ./ch_lite/ch_ppocr_mobile_v2.0_cls_train.tar -C ./ch_lite/ +``` + +端到端模型转inference模型与检测的方式相同,如下: +``` +# -c 后面设置训练算法的yml配置文件 +# -o 配置可选参数 +# Global.pretrained_model 参数设置待转换的训练模型地址,不用添加文件后缀 .pdmodel,.pdopt或.pdparams。 +# Global.load_static_weights 参数需要设置为 False。 +# Global.save_inference_dir参数设置转换的模型将保存的地址。 + +python3 tools/export_model.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.pretrained_model=./ch_lite/ch_ppocr_mobile_v2.0_cls_train/best_accuracy Global.load_static_weights=False Global.save_inference_dir=./inference/e2e/ +``` + +转换成功后,在目录下有三个文件: +``` +/inference/e2e/ + ├── inference.pdiparams # 分类inference模型的参数文件 + ├── inference.pdiparams.info # 分类inference模型的参数信息,可忽略 + └── inference.pdmodel # 分类inference模型的program文件 +``` ## 二、文本检测模型推理 @@ -140,7 +171,7 @@ python3 tools/infer/predict_det.py --image_dir="./doc/imgs/00018069.jpg" --det_m ![](../imgs_results/det_res_00018069.jpg) 通过参数`limit_type`和`det_limit_side_len`来对图片的尺寸进行限制, -`litmit_type`可选参数为[`max`, `min`], +`limit_type`可选参数为[`max`, `min`], `det_limit_size_len` 为正整数,一般设置为32 的倍数,比如960。 参数默认设置为`limit_type='max', det_limit_side_len=960`。表示网络输入图像的最长边不能超过960, @@ -331,8 +362,38 @@ python3 tools/infer/predict_rec.py --image_dir="./doc/imgs_words/korean/1.jpg" - Predicts of ./doc/imgs_words/korean/1.jpg:('바탕으로', 0.9948904) ``` + +## 四、端到端模型推理 + +端到端模型推理,默认使用PGNet模型的配置参数。当不使用PGNet模型时,在推理时,需要通过传入相应的参数进行算法适配,细节参考下文。 + +### 1. PGNet端到端模型推理 +#### (1). 四边形文本检测模型(ICDAR2015) +首先将PGNet端到端训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,在ICDAR2015英文数据集训练的模型为例([模型下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar)),可以使用如下命令进行转换: +``` +python3 tools/export_model.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.pretrained_model=./en_server_pgnetA/iter_epoch_450 Global.load_static_weights=False Global.save_inference_dir=./inference/e2e +``` +**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`**,可以执行如下命令: +``` +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img_10.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=False +``` +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下: + +![](../imgs_results/e2e_res_img_10_pgnet.jpg) + +#### (2). 弯曲文本检测模型(Total-Text) +和四边形文本检测模型共用一个推理模型 +**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`,同时,还需要增加参数`--e2e_pgnet_polygon=True`,**可以执行如下命令: +``` +python3.7 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=True +``` +可视化文本端到端结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下: + +![](../imgs_results/e2e_res_img623_pgnet.jpg) + + -## 四、方向分类模型推理 +## 五、方向分类模型推理 下面将介绍方向分类模型推理。 @@ -357,7 +418,7 @@ Predicts of ./doc/imgs_words/ch/word_4.jpg:['0', 0.9999982] ``` -## 五、文本检测、方向分类和文字识别串联推理 +## 六、文本检测、方向分类和文字识别串联推理 ### 1. 超轻量中文OCR模型推理 diff --git a/doc/doc_ch/installation.md b/doc/doc_ch/installation.md index fce151eb..7e7523b9 100644 --- a/doc/doc_ch/installation.md +++ b/doc/doc_ch/installation.md @@ -30,7 +30,7 @@ sudo nvidia-docker run --name ppocr -v $PWD:/paddle --shm-size=64G --network=hos sudo docker container exec -it ppocr /bin/bash ``` -**2. 安装PaddlePaddle Fluid v2.0** +**2. 安装PaddlePaddle 2.0** ``` pip3 install --upgrade pip diff --git a/doc/doc_ch/pgnet.md b/doc/doc_ch/pgnet.md new file mode 100644 index 00000000..ff998327 --- /dev/null +++ b/doc/doc_ch/pgnet.md @@ -0,0 +1,176 @@ +# 端对端OCR算法-PGNet +- [一、简介](#简介) +- [二、环境配置](#环境配置) +- [三、快速使用](#快速使用) +- [四、快速训练](#开始训练) +- [五、预测推理](#预测推理) + + + +##简介 +OCR算法可以分为两阶段算法和端对端的算法。二阶段OCR算法一般分为两个部分,文本检测和文本识别算法,文件检测算法从图像中得到文本行的检测框,然后识别算法去识别文本框中的内容。而端对端OCR算法可以在一个算法中完成文字检测和文字识别,其基本思想是设计一个同时具有检测单元和识别模块的模型,共享其中两者的CNN特征,并联合训练。由于一个算法即可完成文字识别,端对端模型更小,速度更快。 + +### PGNet算法介绍 +近些年来,端对端OCR算法得到了良好的发展,包括MaskTextSpotter系列、TextSnake、TextDragon、PGNet系列等算法。在这些算法中,PGNet算法具备其他算法不具备的优势,包括: +- 设计PGNet loss指导训练,不需要字符级别的标注 +- 不需要NMS和ROI相关操作,加速预测 +- 提出预测文本行内的阅读顺序模块; +- 提出基于图的修正模块(GRM)来进一步提高模型识别性能 +- 精度更高,预测速度更快 + +PGNet算法细节详见[论文](https://www.aaai.org/AAAI21Papers/AAAI-2885.WangP.pdf), 算法原理图如下所示: +![](../pgnet_framework.png) +输入图像经过特征提取送入四个分支,分别是:文本边缘偏移量预测TBO模块,文本中心线预测TCL模块,文本方向偏移量预测TDO模块,以及文本字符分类图预测TCC模块。 +其中TBO以及TCL的输出经过后处理后可以得到文本的检测结果,TCL、TDO、TCC负责文本识别。 +其检测识别效果图如下: +![](../imgs_results/e2e_res_img293_pgnet.png) +![](../imgs_results/e2e_res_img295_pgnet.png) + + +##环境配置 +请先参考[快速安装](./installation.md)配置PaddleOCR运行环境。 + +*注意:也可以通过 whl 包安装使用PaddleOCR,具体参考[Paddleocr Package使用说明](./whl.md)。* + + +##快速使用 +### inference模型下载 +本节以训练好的端到端模型为例,快速使用模型预测,首先下载训练好的端到端inference模型[下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/e2e_server_pgnetA_infer.tar) +``` +mkdir inference && cd inference +# 下载英文端到端模型并解压 +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/e2e_server_pgnetA_infer.tar && tar xf e2e_server_pgnetA_infer.tar +``` +* windows 环境下如果没有安装wget,下载模型时可将链接复制到浏览器中下载,并解压放置在相应目录下 + +解压完毕后应有如下文件结构: +``` +├── e2e_server_pgnetA_infer +│ ├── inference.pdiparams +│ ├── inference.pdiparams.info +│ └── inference.pdmodel +``` +### 单张图像或者图像集合预测 +```bash +# 预测image_dir指定的单张图像 +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=True + +# 预测image_dir指定的图像集合 +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=True + +# 如果想使用CPU进行预测,需设置use_gpu参数为False +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=True --use_gpu=False +``` + +##开始训练 +本节以totaltext数据集为例,介绍PaddleOCR中端到端模型的训练、评估与测试。 +###数据形式为icdar, 十六点标注数据 +解压数据集和下载标注文件后,PaddleOCR/train_data/total_text/train/ 有两个文件夹,分别是: +``` +/PaddleOCR/train_data/total_text/train/ + |- rgb/ total_text数据集的训练数据 + |- gt_0.png + | ... + |- total_text.txt total_text数据集的训练标注 +``` + +提供的标注文件格式如下,中间用"\t"分隔: +``` +" 图像文件名 json.dumps编码的图像标注信息" +rgb/gt_0.png [{"transcription": "EST", "points": [[1004.0,689.0],[1019.0,698.0],[1034.0,708.0],[1049.0,718.0],[1064.0,728.0],[1079.0,738.0],[1095.0,748.0],[1094.0,774.0],[1079.0,765.0],[1065.0,756.0],[1050.0,747.0],[1036.0,738.0],[1021.0,729.0],[1007.0,721.0]]}, {...}] +``` +json.dumps编码前的图像标注信息是包含多个字典的list,字典中的 `points` 表示文本框的四个点的坐标(x, y),从左上角的点开始顺时针排列。 +`transcription` 表示当前文本框的文字,**当其内容为“###”时,表示该文本框无效,在训练时会跳过。** +如果您想在其他数据集上训练,可以按照上述形式构建标注文件。 + +### 快速启动训练 + +模型训练一般分两步骤进行,第一步可以选择用合成数据训练,第二步加载第一步训练好的模型训练,这边我们提供了第一步训练好的模型,可以直接加载,从第二步开始训练 +[下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/train_step1.tar) +```shell +cd PaddleOCR/ +下载ResNet50_vd的动态图预训练模型 +wget -P ./pretrain_models/ https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/train_step1.tar +可以得到以下的文件格式 +./pretrain_models/train_step1/ + └─ best_accuracy.pdopt + └─ best_accuracy.states + └─ best_accuracy.pdparams + +``` + +*如果您安装的是cpu版本,请将配置文件中的 `use_gpu` 字段修改为false* + +```shell +# 单机单卡训练 e2e 模型 +python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.pretrained_model=./pretrain_models/train_step1/best_accuracy Global.load_static_weights=False +# 单机多卡训练,通过 --gpus 参数设置使用的GPU ID +python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.pretrained_model=./pretrain_models/train_step1/best_accuracy Global.load_static_weights=False +``` + +上述指令中,通过-c 选择训练使用configs/e2e/e2e_r50_vd_pg.yml配置文件。 +有关配置文件的详细解释,请参考[链接](./config.md)。 + +您也可以通过-o参数在不需要修改yml文件的情况下,改变训练的参数,比如,调整训练的学习率为0.0001 +```shell +python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Optimizer.base_lr=0.0001 +``` + +#### 断点训练 + +如果训练程序中断,如果希望加载训练中断的模型从而恢复训练,可以通过指定Global.checkpoints指定要加载的模型路径: +```shell +python3 tools/train.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.checkpoints=./your/trained/model +``` + +**注意**:`Global.checkpoints`的优先级高于`Global.pretrain_weights`的优先级,即同时指定两个参数时,优先加载`Global.checkpoints`指定的模型,如果`Global.checkpoints`指定的模型路径有误,会加载`Global.pretrain_weights`指定的模型。 + + +## 预测推理 + +PaddleOCR计算三个OCR端到端相关的指标,分别是:Precision、Recall、Hmean。 + +运行如下代码,根据配置文件`e2e_r50_vd_pg.yml`中`save_res_path`指定的测试集检测结果文件,计算评估指标。 + +评估时设置后处理参数`max_side_len=768`,使用不同数据集、不同模型训练,可调整参数进行优化 +训练中模型参数默认保存在`Global.save_model_dir`目录下。在评估指标时,需要设置`Global.checkpoints`指向保存的参数文件。 +```shell +python3 tools/eval.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.checkpoints="{path/to/weights}/best_accuracy" +``` + +### 测试端到端效果 +测试单张图像的端到端识别效果 +```shell +python3 tools/infer_e2e.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.infer_img="./doc/imgs_en/img_10.jpg" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false +``` + +测试文件夹下所有图像的端到端识别效果 +```shell +python3 tools/infer_e2e.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.infer_img="./doc/imgs_en/" Global.pretrained_model="./output/det_db/best_accuracy" Global.load_static_weights=false +``` + +###转为推理模型 +### (1). 四边形文本检测模型(ICDAR2015) +首先将PGNet端到端训练过程中保存的模型,转换成inference model。以基于Resnet50_vd骨干网络,以英文数据集训练的模型为例[模型下载地址](https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar) ,可以使用如下命令进行转换: +``` +wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/pgnet/en_server_pgnetA.tar && tar xf en_server_pgnetA.tar +python3 tools/export_model.py -c configs/e2e/e2e_r50_vd_pg.yml -o Global.pretrained_model=./en_server_pgnetA/iter_epoch_450 Global.load_static_weights=False Global.save_inference_dir=./inference/e2e +``` +**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`**,可以执行如下命令: +``` +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img_10.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=False +``` +可视化文本检测结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下: + +![](../imgs_results/e2e_res_img_10_pgnet.jpg) + +### (2). 弯曲文本检测模型(Total-Text) +对于弯曲文本样例 + +**PGNet端到端模型推理,需要设置参数`--e2e_algorithm="PGNet"`,同时,还需要增加参数`--e2e_pgnet_polygon=True`,**可以执行如下命令: +``` +python3 tools/infer/predict_e2e.py --e2e_algorithm="PGNet" --image_dir="./doc/imgs_en/img623.jpg" --e2e_model_dir="./inference/e2e/" --e2e_pgnet_polygon=True +``` +可视化文本端到端结果默认保存到`./inference_results`文件夹里面,结果文件的名称前缀为'e2e_res'。结果示例如下: + +![](../imgs_results/e2e_res_img623_pgnet.jpg) diff --git a/doc/doc_ch/recognition.md b/doc/doc_ch/recognition.md index 91d64907..907cf24e 100644 --- a/doc/doc_ch/recognition.md +++ b/doc/doc_ch/recognition.md @@ -1,61 +1,94 @@ ## 文字识别 -- [一、数据准备](#数据准备) - - [数据下载](#数据下载) - - [自定义数据集](#自定义数据集) - - [字典](#字典) - - [支持空格](#支持空格) +- [1 数据准备](#数据准备) + - [1.1 自定义数据集](#自定义数据集) + - [1.2 数据下载](#数据下载) + - [1.3 字典](#字典) + - [1.4 支持空格](#支持空格) -- [二、启动训练](#启动训练) - - [1. 数据增强](#数据增强) - - [2. 训练](#训练) - - [3. 小语种](#小语种) +- [2 启动训练](#启动训练) + - [2.1 数据增强](#数据增强) + - [2.2 训练](#训练) + - [2.3 小语种](#小语种) -- [三、评估](#评估) +- [3 评估](#评估) -- [四、预测](#预测) - - [1. 训练引擎预测](#训练引擎预测) +- [4 预测](#预测) + - [4.1 训练引擎预测](#训练引擎预测) -### 数据准备 +### 1. 数据准备 -PaddleOCR 支持两种数据格式: `lmdb` 用于训练公开数据,调试算法; `通用数据` 训练自己的数据: - -请按如下步骤设置数据集: +PaddleOCR 支持两种数据格式: + - `lmdb` 用于训练以lmdb格式存储的数据集; + - `通用数据` 用于训练以文本文件存储的数据集: 训练数据的默认存储路径是 `PaddleOCR/train_data`,如果您的磁盘上已有数据集,只需创建软链接至数据集目录: ``` +# linux and mac os ln -sf /train_data/dataset +# windows +mklink /d /train_data/dataset ``` - -* 数据下载 + +#### 1.1 自定义数据集 +下面以通用数据集为例, 介绍如何准备数据集: -若您本地没有数据集,可以在官网下载 [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads) 数据,用于快速验证。也可以参考[DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here),下载 benchmark 所需的lmdb格式数据集。 -如果希望复现SRN的论文指标,需要下载离线[增广数据](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA),提取码: y3ry。增广数据是由MJSynth和SynthText做旋转和扰动得到的。数据下载完成后请解压到 {your_path}/PaddleOCR/train_data/data_lmdb_release/training/ 路径下。 +* 训练集 - -* 使用自己数据集 +建议将训练图片放入同一个文件夹,并用一个txt文件(rec_gt_train.txt)记录图片路径和标签,txt文件里的内容如下: -若您希望使用自己的数据进行训练,请参考下文组织您的数据。 - -- 训练集 - -首先请将训练图片放入同一个文件夹(train_images),并用一个txt文件(rec_gt_train.txt)记录图片路径和标签。 - -**注意:** 默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错 +**注意:** txt文件中默认请将图片路径和图片标签用 \t 分割,如用其他方式分割将造成训练报错。 ``` " 图像文件名 图像标注信息 " -train_data/train_0001.jpg 简单可依赖 -train_data/train_0002.jpg 用科技让复杂的世界更简单 +train_data/rec/train/word_001.jpg 简单可依赖 +train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 +... ``` -PaddleOCR 提供了一份用于训练 icdar2015 数据集的标签文件,通过以下方式下载: + +最终训练集应有如下文件结构: +``` +|-train_data + |-rec + |- rec_gt_train.txt + |- train + |- word_001.png + |- word_002.jpg + |- word_003.jpg + | ... +``` + +- 测试集 + +同训练集类似,测试集也需要提供一个包含所有图片的文件夹(test)和一个rec_gt_test.txt,测试集的结构如下所示: + +``` +|-train_data + |-rec + |- rec_gt_test.txt + |- test + |- word_001.jpg + |- word_002.jpg + |- word_003.jpg + | ... +``` + + + +1.2 数据下载 + +若您本地没有数据集,可以在官网下载 [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads) 数据,用于快速验证。也可以参考[DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) ,下载 benchmark 所需的lmdb格式数据集。 + +如果你使用的是icdar2015的公开数据集,PaddleOCR 提供了一份用于训练 icdar2015 数据集的标签文件,通过以下方式下载: + +如果希望复现SRN的论文指标,需要下载离线[增广数据](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA),提取码: y3ry。增广数据是由MJSynth和SynthText做旋转和扰动得到的。数据下载完成后请解压到 {your_path}/PaddleOCR/train_data/data_lmdb_release/training/ 路径下。 ``` # 训练集标签 @@ -71,34 +104,8 @@ PaddleOCR 也提供了数据格式转换脚本,可以将官网 label 转换支 python gen_label.py --mode="rec" --input_path="{path/of/origin/label}" --output_label="rec_gt_label.txt" ``` -最终训练集应有如下文件结构: -``` -|-train_data - |-ic15_data - |- rec_gt_train.txt - |- train - |- word_001.png - |- word_002.jpg - |- word_003.jpg - | ... -``` - -- 测试集 - -同训练集类似,测试集也需要提供一个包含所有图片的文件夹(test)和一个rec_gt_test.txt,测试集的结构如下所示: - -``` -|-train_data - |-ic15_data - |- rec_gt_test.txt - |- test - |- word_001.jpg - |- word_002.jpg - |- word_003.jpg - | ... -``` -- 字典 +1.3 字典 最后需要提供一个字典({word_dict_name}.txt),使模型在训练时,可以将所有出现的字符映射为字典的索引。 @@ -115,6 +122,10 @@ n word_dict.txt 每行有一个单字,将字符与数字索引映射在一起,“and” 将被映射成 [2 5 1] +* 内置字典 + +PaddleOCR内置了一部分字典,可以按需使用。 + `ppocr/utils/ppocr_keys_v1.txt` 是一个包含6623个字符的中文字典 `ppocr/utils/ic15_dict.txt` 是一个包含36个字符的英文字典 @@ -130,7 +141,7 @@ word_dict.txt 每行有一个单字,将字符与数字索引映射在一起, `ppocr/utils/dict/en_dict.txt` 是一个包含63个字符的英文字典 -您可以按需使用。 + 目前的多语言模型仍处在demo阶段,会持续优化模型并补充语种,**非常欢迎您为我们提供其他语言的字典和字体**, 如您愿意可将字典文件提交至 [dict](../../ppocr/utils/dict),我们会在Repo中感谢您。 @@ -141,13 +152,13 @@ word_dict.txt 每行有一个单字,将字符与数字索引映射在一起, 并将 `character_type` 设置为 `ch`。 -- 添加空格类别 +1.4 添加空格类别 如果希望支持识别"空格"类别, 请将yml文件中的 `use_space_char` 字段设置为 `True`。 -### 启动训练 +### 2. 启动训练 PaddleOCR提供了训练脚本、评估脚本和预测脚本,本节将以 CRNN 识别模型为例: @@ -172,7 +183,7 @@ tar -xf rec_mv3_none_bilstm_ctc_v2.0_train.tar && rm -rf rec_mv3_none_bilstm_ctc python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_icdar15_train.yml ``` -- 数据增强 +#### 2.1 数据增强 PaddleOCR提供了多种数据增强方式,如果您希望在训练时加入扰动,请在配置文件中设置 `distort: true`。 @@ -183,7 +194,7 @@ PaddleOCR提供了多种数据增强方式,如果您希望在训练时加入 *由于OpenCV的兼容性问题,扰动操作暂时只支持Linux* -- 训练 +#### 2.2 训练 PaddleOCR支持训练和评估交替进行, 可以在 `configs/rec/rec_icdar15_train.yml` 中修改 `eval_batch_step` 设置评估频率,默认每500个iter评估一次。评估过程中默认将最佳acc模型,保存为 `output/rec_CRNN/best_accuracy` 。 @@ -272,7 +283,7 @@ Eval: **注意,预测/评估时的配置文件请务必与训练一致。** -- 小语种 +#### 2.3 小语种 PaddleOCR目前已支持26种(除中文外)语种识别,`configs/rec/multi_languages` 路径下提供了一个多语言的配置文件模版: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。 @@ -415,7 +426,7 @@ Eval: ... ``` -### 评估 +### 3 评估 评估数据集可以通过 `configs/rec/rec_icdar15_train.yml` 修改Eval中的 `label_file_path` 设置。 @@ -425,10 +436,10 @@ python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec ``` -### 预测 +### 4 预测 -* 训练引擎的预测 +#### 4.1 训练引擎的预测 使用 PaddleOCR 训练好的模型,可以通过以下脚本进行快速预测。 diff --git a/doc/doc_ch/whl.md b/doc/doc_ch/whl.md index 6b218e31..2e93c487 100644 --- a/doc/doc_ch/whl.md +++ b/doc/doc_ch/whl.md @@ -1,8 +1,8 @@ # paddleocr package使用说明 -## 快速上手 +## 1 快速上手 -### 安装whl包 +### 1.1 安装whl包 pip安装 ```bash @@ -14,9 +14,12 @@ pip install "paddleocr>=2.0.1" # 推荐使用2.0.1+版本 python3 setup.py bdist_wheel pip3 install dist/paddleocr-x.x.x-py3-none-any.whl # x.x.x是paddleocr的版本号 ``` -### 1. 代码使用 -* 检测+分类+识别全流程 +## 2 使用 +### 2.1 代码使用 +paddleocr whl包会自动下载ppocr轻量级模型作为默认模型,可以根据第3节**自定义模型**进行自定义更换。 + +* 检测+方向分类器+识别全流程 ```python from paddleocr import PaddleOCR, draw_ocr # Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换 @@ -33,7 +36,7 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -66,7 +69,7 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -84,7 +87,7 @@ im_show.save('result.jpg') -* 分类+识别 +* 方向分类器+识别 ```python from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True) # need to run only once to download and load model into memory @@ -111,7 +114,7 @@ for line in result: from PIL import Image image = Image.open(img_path).convert('RGB') -im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -143,7 +146,7 @@ for line in result: ['韩国小馆', 0.9907421] ``` -* 单独执行分类 +* 单独执行方向分类器 ```python from paddleocr import PaddleOCR ocr = PaddleOCR(use_angle_cls=True) # need to run only once to download and load model into memory @@ -157,14 +160,14 @@ for line in result: ['0', 0.9999924] ``` -### 通过命令行使用 +### 2.2 通过命令行使用 查看帮助信息 ```bash paddleocr -h ``` -* 检测+分类+识别全流程 +* 检测+方向分类器+识别全流程 ```bash paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --use_angle_cls true ``` @@ -188,7 +191,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg ...... ``` -* 分类+识别 +* 方向分类器+识别 ```bash paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --use_angle_cls true --det false ``` @@ -220,7 +223,7 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --det false ['韩国小馆', 0.9907421] ``` -* 单独执行分类 +* 单独执行方向分类器 ```bash paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --use_angle_cls true --det false --rec false ``` @@ -230,11 +233,11 @@ paddleocr --image_dir PaddleOCR/doc/imgs_words/ch/word_1.jpg --use_angle_cls tru ['0', 0.9999924] ``` -## 自定义模型 +## 3 自定义模型 当内置模型无法满足需求时,需要使用到自己训练的模型。 首先,参照[inference.md](./inference.md) 第一节转换将检测、分类和识别模型转换为inference模型,然后按照如下方式使用 -### 代码使用 +### 3.1 代码使用 ```python from paddleocr import PaddleOCR, draw_ocr # 模型路径下必须含有model和params文件 @@ -250,22 +253,22 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -### 通过命令行使用 +### 3.2 通过命令行使用 ```bash paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir {your_det_model_dir} --rec_model_dir {your_rec_model_dir} --rec_char_dict_path {your_rec_char_dict_path} --cls_model_dir {your_cls_model_dir} --use_angle_cls true ``` -### 使用网络图片或者numpy数组作为输入 +## 4 使用网络图片或者numpy数组作为输入 -1. 网络图片 +### 4.1 网络图片 -代码使用 +- 代码使用 ```python from paddleocr import PaddleOCR, draw_ocr # Paddleocr目前支持中英文、英文、法语、德语、韩语、日语,可以通过修改lang参数进行切换 @@ -282,16 +285,16 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -命令行模式 +- 命令行模式 ```bash paddleocr --image_dir http://n.sinaimg.cn/ent/transform/w630h933/20171222/o111-fypvuqf1838418.jpg --use_angle_cls=true ``` -2. numpy数组 +### 4.2 numpy数组 仅通过代码使用时支持numpy数组作为输入 ```python from paddleocr import PaddleOCR, draw_ocr @@ -301,7 +304,7 @@ ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to downlo img_path = 'PaddleOCR/doc/imgs/11.jpg' img = cv2.imread(img_path) # img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY), 如果你自己训练的模型支持灰度图,可以将这句话的注释取消 -result = ocr.ocr(img_path, cls=True) +result = ocr.ocr(img, cls=True) for line in result: print(line) @@ -311,12 +314,12 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -## 参数说明 +## 5 参数说明 | 字段 | 说明 | 默认值 | |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| diff --git a/doc/doc_en/algorithm_overview_en.md b/doc/doc_en/algorithm_overview_en.md index 77b9642e..d70f99bb 100755 --- a/doc/doc_en/algorithm_overview_en.md +++ b/doc/doc_en/algorithm_overview_en.md @@ -31,7 +31,9 @@ On Total-Text dataset, the text detection result is as follows: | --- | --- | --- | --- | --- | --- | |SAST|ResNet50_vd|89.63%|78.44%|83.66%|[Download link](https://paddleocr.bj.bcebos.com/dygraph_v2.0/en/det_r50_vd_sast_totaltext_v2.0_train.tar)| -**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi). +**Note:** Additional data, like icdar2013, icdar2017, COCO-Text, ArT, was added to the model training of SAST. Download English public dataset in organized format used by PaddleOCR from: +* [Baidu Drive](https://pan.baidu.com/s/12cPnZcVuV1zn5DOd4mqjVw) (download code: 2bpi). +* [Google Drive](https://drive.google.com/drive/folders/1ll2-XEVyCQLpJjawLDiRlvo_i4BqHCJe?usp=sharing) For the training guide and use of PaddleOCR text detection algorithms, please refer to the document [Text detection model training/evaluation/prediction](./detection_en.md) diff --git a/doc/doc_en/angle_class_en.md b/doc/doc_en/angle_class_en.md index d1cc712f..0044d85a 100644 --- a/doc/doc_en/angle_class_en.md +++ b/doc/doc_en/angle_class_en.md @@ -1,5 +1,12 @@ ## TEXT ANGLE CLASSIFICATION +### Method introduction +The angle classification is used in the scene where the image is not 0 degrees. In this scene, it is necessary to perform a correction operation on the text line detected in the picture. In the PaddleOCR system, +The text line image obtained after text detection is sent to the recognition model after affine transformation. At this time, only a 0 and 180 degree angle classification of the text is required, so the built-in PaddleOCR text angle classifier **only supports 0 and 180 degree classification**. If you want to support more angles, you can modify the algorithm yourself to support. + +Example of 0 and 180 degree data samples: + +![](../imgs_results/angle_class_example.jpg) ### DATA PREPARATION Please organize the dataset as follows: diff --git a/doc/doc_en/inference_en.md b/doc/doc_en/inference_en.md index c8ce1424..aa3e0536 100755 --- a/doc/doc_en/inference_en.md +++ b/doc/doc_en/inference_en.md @@ -5,7 +5,8 @@ The inference model (the model saved by `paddle.jit.save`) is generally a solidi The model saved during the training process is the checkpoints model, which saves the parameters of the model and is mostly used to resume training. -Compared with the checkpoints model, the inference model will additionally save the structural information of the model. It has superior performance in predicting in deployment and accelerating inferencing, is flexible and convenient, and is suitable for integration with actual systems. For more details, please refer to the document [Classification Framework](https://github.com/PaddlePaddle/PaddleClas/blob/master/docs/zh_CN/extension/paddle_inference.md). +Compared with the checkpoints model, the inference model will additionally save the structural information of the model. Therefore, it is easier to deploy because the model structure and model parameters are already solidified in the inference model file, and is suitable for integration with actual systems. +For more details, please refer to the document [Classification Framework](https://github.com/PaddlePaddle/PaddleClas/blob/release%2F2.0/docs/zh_CN/extension/paddle_mobile_inference.md). Next, we first introduce how to convert a trained model into an inference model, and then we will introduce text detection, text recognition, angle class, and the concatenation of them based on inference model. @@ -147,7 +148,7 @@ The visual text detection results are saved to the ./inference_results folder by ![](../imgs_results/det_res_00018069.jpg) You can use the parameters `limit_type` and `det_limit_side_len` to limit the size of the input image, -The optional parameters of `litmit_type` are [`max`, `min`], and +The optional parameters of `limit_type` are [`max`, `min`], and `det_limit_size_len` is a positive integer, generally set to a multiple of 32, such as 960. The default setting of the parameters is `limit_type='max', det_limit_side_len=960`. Indicates that the longest side of the network input image cannot exceed 960, diff --git a/doc/doc_en/installation_en.md b/doc/doc_en/installation_en.md index 35c1881d..dec384b2 100644 --- a/doc/doc_en/installation_en.md +++ b/doc/doc_en/installation_en.md @@ -33,7 +33,7 @@ You can also visit [DockerHub](https://hub.docker.com/r/paddlepaddle/paddle/tags sudo docker container exec -it ppocr /bin/bash ``` -**2. Install PaddlePaddle Fluid v2.0** +**2. Install PaddlePaddle 2.0** ``` pip3 install --upgrade pip diff --git a/doc/doc_en/recognition_en.md b/doc/doc_en/recognition_en.md index 14ddcc75..aeb9aa0d 100644 --- a/doc/doc_en/recognition_en.md +++ b/doc/doc_en/recognition_en.md @@ -1,59 +1,95 @@ ## TEXT RECOGNITION -- [DATA PREPARATION](#DATA_PREPARATION) - - [Dataset Download](#Dataset_download) - - [Costom Dataset](#Costom_Dataset) - - [Dictionary](#Dictionary) - - [Add Space Category](#Add_space_category) +- [1 DATA PREPARATION](#DATA_PREPARATION) + - [1.1 Costom Dataset](#Costom_Dataset) + - [1.2 Dataset Download](#Dataset_download) + - [1.3 Dictionary](#Dictionary) + - [1.4 Add Space Category](#Add_space_category) -- [TRAINING](#TRAINING) - - [Data Augmentation](#Data_Augmentation) - - [Training](#Training) - - [Multi-language](#Multi_language) +- [2 TRAINING](#TRAINING) + - [2.1 Data Augmentation](#Data_Augmentation) + - [2.2 Training](#Training) + - [2.3 Multi-language](#Multi_language) -- [EVALUATION](#EVALUATION) +- [3 EVALUATION](#EVALUATION) -- [PREDICTION](#PREDICTION) - - [Training engine prediction](#Training_engine_prediction) +- [4 PREDICTION](#PREDICTION) + - [4.1 Training engine prediction](#Training_engine_prediction) ### DATA PREPARATION -PaddleOCR supports two data formats: `LMDB` is used to train public data and evaluation algorithms; `general data` is used to train your own data: +PaddleOCR supports two data formats: +- `LMDB` is used to train data sets stored in lmdb format; +- `general data` is used to train data sets stored in text files: Please organize the dataset as follows: The default storage path for training data is `PaddleOCR/train_data`, if you already have a dataset on your disk, just create a soft link to the dataset directory: ``` +# linux and mac os ln -sf /train_data/dataset +# windows +mklink /d /train_data/dataset ``` - -* Dataset download - -If you do not have a dataset locally, you can download it on the official website [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads). Also refer to [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here),download the lmdb format dataset required for benchmark - -If you want to reproduce the paper indicators of SRN, you need to download offline [augmented data](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA), extraction code: y3ry. The augmented data is obtained by rotation and perturbation of mjsynth and synthtext. Please unzip the data to {your_path}/PaddleOCR/train_data/data_lmdb_Release/training/path. - -* Use your own dataset: +#### 1.1 Costom dataset If you want to use your own data for training, please refer to the following to organize your data. - Training set -First put the training images in the same folder (train_images), and use a txt file (rec_gt_train.txt) to store the image path and label. +It is recommended to put the training images in the same folder, and use a txt file (rec_gt_train.txt) to store the image path and label. The contents of the txt file are as follows: * Note: by default, the image path and image label are split with \t, if you use other methods to split, it will cause training error ``` " Image file name Image annotation " -train_data/train_0001.jpg 简单可依赖 -train_data/train_0002.jpg 用科技让复杂的世界更简单 +train_data/rec/train/word_001.jpg 简单可依赖 +train_data/rec/train/word_002.jpg 用科技让复杂的世界更简单 +... ``` + +The final training set should have the following file structure: + +``` +|-train_data + |-rec + |- rec_gt_train.txt + |- train + |- word_001.png + |- word_002.jpg + |- word_003.jpg + | ... +``` + +- Test set + +Similar to the training set, the test set also needs to be provided a folder containing all images (test) and a rec_gt_test.txt. The structure of the test set is as follows: + +``` +|-train_data + |-rec + |-ic15_data + |- rec_gt_test.txt + |- test + |- word_001.jpg + |- word_002.jpg + |- word_003.jpg + | ... +``` + + +#### 1.2 Dataset download + +If you do not have a dataset locally, you can download it on the official website [icdar2015](http://rrc.cvc.uab.es/?ch=4&com=downloads). Also refer to [DTRB](https://github.com/clovaai/deep-text-recognition-benchmark#download-lmdb-dataset-for-traininig-and-evaluation-from-here) ,download the lmdb format dataset required for benchmark + +If you want to reproduce the paper indicators of SRN, you need to download offline [augmented data](https://pan.baidu.com/s/1-HSZ-ZVdqBF2HaBZ5pRAKA), extraction code: y3ry. The augmented data is obtained by rotation and perturbation of mjsynth and synthtext. Please unzip the data to {your_path}/PaddleOCR/train_data/data_lmdb_Release/training/path. + PaddleOCR provides label files for training the icdar2015 dataset, which can be downloaded in the following ways: ``` @@ -63,35 +99,8 @@ wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_t wget -P ./train_data/ic15_data https://paddleocr.bj.bcebos.com/dataset/rec_gt_test.txt ``` -The final training set should have the following file structure: - -``` -|-train_data - |-ic15_data - |- rec_gt_train.txt - |- train - |- word_001.png - |- word_002.jpg - |- word_003.jpg - | ... -``` - -- Test set - -Similar to the training set, the test set also needs to be provided a folder containing all images (test) and a rec_gt_test.txt. The structure of the test set is as follows: - -``` -|-train_data - |-ic15_data - |- rec_gt_test.txt - |- test - |- word_001.jpg - |- word_002.jpg - |- word_003.jpg - | ... -``` -- Dictionary +#### 1.3 Dictionary Finally, a dictionary ({word_dict_name}.txt) needs to be provided so that when the model is trained, all the characters that appear can be mapped to the dictionary index. @@ -108,6 +117,8 @@ n In `word_dict.txt`, there is a single word in each line, which maps characters and numeric indexes together, e.g "and" will be mapped to [2 5 1] +PaddleOCR has built-in dictionaries, which can be used on demand. + `ppocr/utils/ppocr_keys_v1.txt` is a Chinese dictionary with 6623 characters. `ppocr/utils/ic15_dict.txt` is an English dictionary with 63 characters @@ -123,8 +134,6 @@ In `word_dict.txt`, there is a single word in each line, which maps characters a `ppocr/utils/dict/en_dict.txt` is a English dictionary with 63 characters -You can use it on demand. - The current multi-language model is still in the demo stage and will continue to optimize the model and add languages. **You are very welcome to provide us with dictionaries and fonts in other languages**, If you like, you can submit the dictionary file to [dict](../../ppocr/utils/dict) and we will thank you in the Repo. @@ -136,14 +145,14 @@ To customize the dict file, please modify the `character_dict_path` field in `co If you need to customize dic file, please add character_dict_path field in configs/rec/rec_icdar15_train.yml to point to your dictionary path. And set character_type to ch. -- Add space category +#### 1.4 Add space category If you want to support the recognition of the `space` category, please set the `use_space_char` field in the yml file to `True`. **Note: use_space_char only takes effect when character_type=ch** -### TRAINING +### 2 TRAINING PaddleOCR provides training scripts, evaluation scripts, and prediction scripts. In this section, the CRNN recognition model will be used as an example: @@ -166,7 +175,7 @@ Start training: python3 -m paddle.distributed.launch --gpus '0,1,2,3' tools/train.py -c configs/rec/rec_icdar15_train.yml ``` -- Data Augmentation +#### 2.1 Data Augmentation PaddleOCR provides a variety of data augmentation methods. If you want to add disturbance during training, please set `distort: true` in the configuration file. @@ -175,7 +184,7 @@ The default perturbation methods are: cvtColor, blur, jitter, Gasuss noise, rand Each disturbance method is selected with a 50% probability during the training process. For specific code implementation, please refer to: [img_tools.py](https://github.com/PaddlePaddle/PaddleOCR/blob/develop/ppocr/data/rec/img_tools.py) -- Training +#### 2.2 Training PaddleOCR supports alternating training and evaluation. You can modify `eval_batch_step` in `configs/rec/rec_icdar15_train.yml` to set the evaluation frequency. By default, it is evaluated every 500 iter and the best acc model is saved under `output/rec_CRNN/best_accuracy` during the evaluation process. @@ -268,7 +277,7 @@ Eval: **Note that the configuration file for prediction/evaluation must be consistent with the training.** -- Multi-language +#### 2.3 Multi-language PaddleOCR currently supports 26 (except Chinese) language recognition. A multi-language configuration file template is provided under the path `configs/rec/multi_languages`: [rec_multi_language_lite_train.yml](../../configs/rec/multi_language/rec_multi_language_lite_train.yml)。 @@ -420,7 +429,7 @@ Eval: ``` -### EVALUATION +### 3 EVALUATION The evaluation dataset can be set by modifying the `Eval.dataset.label_file_list` field in the `configs/rec/rec_icdar15_train.yml` file. @@ -430,10 +439,10 @@ python3 -m paddle.distributed.launch --gpus '0' tools/eval.py -c configs/rec/rec ``` -### PREDICTION +### 4 PREDICTION -* Training engine prediction +#### 4.1 Training engine prediction Using the model trained by paddleocr, you can quickly get prediction through the following script. diff --git a/doc/doc_en/whl_en.md b/doc/doc_en/whl_en.md index 1ef14f14..69abf085 100644 --- a/doc/doc_en/whl_en.md +++ b/doc/doc_en/whl_en.md @@ -1,7 +1,7 @@ # paddleocr package -## Get started quickly -### install package +## 1 Get started quickly +### 1.1 install package install by pypi ```bash pip install "paddleocr>=2.0.1" # Recommend to use version 2.0.1+ @@ -12,9 +12,11 @@ build own whl package and install python3 setup.py bdist_wheel pip3 install dist/paddleocr-x.x.x-py3-none-any.whl # x.x.x is the version of paddleocr ``` -### 1. Use by code +## 2 Use +### 2.1 Use by code +The paddleocr whl package will automatically download the ppocr lightweight model as the default model, which can be customized and replaced according to the section 3 **Custom Model**. -* detection classification and recognition +* detection angle classification and recognition ```python from paddleocr import PaddleOCR,draw_ocr # Paddleocr supports Chinese, English, French, German, Korean and Japanese. @@ -33,7 +35,7 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -67,7 +69,7 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -114,7 +116,7 @@ for line in result: from PIL import Image image = Image.open(img_path).convert('RGB') -im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, result, txts=None, scores=None, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` @@ -163,7 +165,7 @@ Output will be a list, each item contains classification result and confidence ['0', 0.99999964] ``` -### Use by command line +### 2.2 Use by command line show help information ```bash @@ -239,11 +241,11 @@ Output will be a list, each item contains classification result and confidence ['0', 0.99999964] ``` -## Use custom model +## 3 Use custom model When the built-in model cannot meet the needs, you need to use your own trained model. First, refer to the first section of [inference_en.md](./inference_en.md) to convert your det and rec model to inference model, and then use it as follows -### 1. Use by code +### 3.1 Use by code ```python from paddleocr import PaddleOCR,draw_ocr @@ -260,22 +262,22 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -### Use by command line +### 3.2 Use by command line ```bash paddleocr --image_dir PaddleOCR/doc/imgs/11.jpg --det_model_dir {your_det_model_dir} --rec_model_dir {your_rec_model_dir} --rec_char_dict_path {your_rec_char_dict_path} --cls_model_dir {your_cls_model_dir} --use_angle_cls true ``` -### Use web images or numpy array as input +## 4 Use web images or numpy array as input -1. Web image +### 4.1 Web image -Use by code +- Use by code ```python from paddleocr import PaddleOCR, draw_ocr ocr = PaddleOCR(use_angle_cls=True, lang="ch") # need to run only once to download and load model into memory @@ -290,16 +292,16 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -Use by command line +- Use by command line ```bash paddleocr --image_dir http://n.sinaimg.cn/ent/transform/w630h933/20171222/o111-fypvuqf1838418.jpg --use_angle_cls=true ``` -2. Numpy array +### 4.2 Numpy array Support numpy array as input only when used by code ```python @@ -318,13 +320,13 @@ image = Image.open(img_path).convert('RGB') boxes = [line[0] for line in result] txts = [line[1][0] for line in result] scores = [line[1][1] for line in result] -im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/simfang.ttf') +im_show = draw_ocr(image, boxes, txts, scores, font_path='/path/to/PaddleOCR/doc/fonts/simfang.ttf') im_show = Image.fromarray(im_show) im_show.save('result.jpg') ``` -## Parameter Description +## 5 Parameter Description | Parameter | Description | Default value | |-------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------| diff --git a/doc/imgs_results/angle_class_example.jpg b/doc/imgs_results/angle_class_example.jpg new file mode 100644 index 00000000..8e683be3 Binary files /dev/null and b/doc/imgs_results/angle_class_example.jpg differ diff --git a/doc/imgs_results/e2e_res_img293_pgnet.png b/doc/imgs_results/e2e_res_img293_pgnet.png new file mode 100644 index 00000000..232f8293 Binary files /dev/null and b/doc/imgs_results/e2e_res_img293_pgnet.png differ diff --git a/doc/imgs_results/e2e_res_img295_pgnet.png b/doc/imgs_results/e2e_res_img295_pgnet.png new file mode 100644 index 00000000..69337e3a Binary files /dev/null and b/doc/imgs_results/e2e_res_img295_pgnet.png differ diff --git a/doc/imgs_results/e2e_res_img623_pgnet.jpg b/doc/imgs_results/e2e_res_img623_pgnet.jpg new file mode 100644 index 00000000..b45dc05f Binary files /dev/null and b/doc/imgs_results/e2e_res_img623_pgnet.jpg differ diff --git a/doc/imgs_results/e2e_res_img_10_pgnet.jpg b/doc/imgs_results/e2e_res_img_10_pgnet.jpg new file mode 100644 index 00000000..a0962993 Binary files /dev/null and b/doc/imgs_results/e2e_res_img_10_pgnet.jpg differ diff --git a/doc/joinus.PNG b/doc/joinus.PNG index 9029762e..064159c9 100644 Binary files a/doc/joinus.PNG and b/doc/joinus.PNG differ diff --git a/doc/pgnet_framework.png b/doc/pgnet_framework.png new file mode 100644 index 00000000..88fbca39 Binary files /dev/null and b/doc/pgnet_framework.png differ diff --git a/paddleocr.py b/paddleocr.py index db24aa59..c3741b26 100644 --- a/paddleocr.py +++ b/paddleocr.py @@ -146,7 +146,8 @@ def parse_args(mMain=True, add_help=True): # DB parmas parser.add_argument("--det_db_thresh", type=float, default=0.3) parser.add_argument("--det_db_box_thresh", type=float, default=0.5) - parser.add_argument("--det_db_unclip_ratio", type=float, default=2.0) + parser.add_argument("--det_db_unclip_ratio", type=float, default=1.6) + parser.add_argument("--use_dilation", type=bool, default=False) # EAST parmas parser.add_argument("--det_east_score_thresh", type=float, default=0.8) @@ -193,7 +194,8 @@ def parse_args(mMain=True, add_help=True): det_limit_type='max', det_db_thresh=0.3, det_db_box_thresh=0.5, - det_db_unclip_ratio=2.0, + det_db_unclip_ratio=1.6, + use_dilation=False, det_east_score_thresh=0.8, det_east_cover_thresh=0.1, det_east_nms_thresh=0.2, @@ -234,7 +236,9 @@ class PaddleOCR(predict_system.TextSystem): assert lang in model_urls[ 'rec'], 'param lang must in {}, but got {}'.format( model_urls['rec'].keys(), lang) + use_inner_dict = False if postprocess_params.rec_char_dict_path is None: + use_inner_dict = True postprocess_params.rec_char_dict_path = model_urls['rec'][lang][ 'dict_path'] @@ -261,9 +265,9 @@ class PaddleOCR(predict_system.TextSystem): if postprocess_params.rec_algorithm not in SUPPORT_REC_MODEL: logger.error('rec_algorithm must in {}'.format(SUPPORT_REC_MODEL)) sys.exit(0) - - postprocess_params.rec_char_dict_path = str( - Path(__file__).parent / postprocess_params.rec_char_dict_path) + if use_inner_dict: + postprocess_params.rec_char_dict_path = str( + Path(__file__).parent / postprocess_params.rec_char_dict_path) # init det_model and rec_model super().__init__(postprocess_params) @@ -280,8 +284,13 @@ class PaddleOCR(predict_system.TextSystem): if isinstance(img, list) and det == True: logger.error('When input a list of images, det must be false') exit(0) + if cls == False: + self.use_angle_cls = False + elif cls == True and self.use_angle_cls == False: + logger.warning( + 'Since the angle classifier is not initialized, the angle classifier will not be uesd during the forward process' + ) - self.use_angle_cls = cls if isinstance(img, str): # download net image if img.startswith('http'): diff --git a/ppocr/data/__init__.py b/ppocr/data/__init__.py index 7cb50d7a..728b8317 100644 --- a/ppocr/data/__init__.py +++ b/ppocr/data/__init__.py @@ -34,6 +34,7 @@ import paddle.distributed as dist from ppocr.data.imaug import transform, create_operators from ppocr.data.simple_dataset import SimpleDataSet from ppocr.data.lmdb_dataset import LMDBDataSet +from ppocr.data.pgnet_dataset import PGDataSet __all__ = ['build_dataloader', 'transform', 'create_operators'] @@ -54,7 +55,7 @@ signal.signal(signal.SIGTERM, term_mp) def build_dataloader(config, mode, device, logger, seed=None): config = copy.deepcopy(config) - support_dict = ['SimpleDataSet', 'LMDBDataSet'] + support_dict = ['SimpleDataSet', 'LMDBDataSet', 'PGDataSet'] module_name = config[mode]['dataset']['name'] assert module_name in support_dict, Exception( 'DataSet only support {}'.format(support_dict)) @@ -72,14 +73,14 @@ def build_dataloader(config, mode, device, logger, seed=None): else: use_shared_memory = True if mode == "Train": - #Distribute data to multiple cards + # Distribute data to multiple cards batch_sampler = DistributedBatchSampler( dataset=dataset, batch_size=batch_size, shuffle=shuffle, drop_last=drop_last) else: - #Distribute data to single card + # Distribute data to single card batch_sampler = BatchSampler( dataset=dataset, batch_size=batch_size, diff --git a/ppocr/data/imaug/__init__.py b/ppocr/data/imaug/__init__.py index 250ac75e..a808fd58 100644 --- a/ppocr/data/imaug/__init__.py +++ b/ppocr/data/imaug/__init__.py @@ -28,6 +28,7 @@ from .label_ops import * from .east_process import * from .sast_process import * +from .pg_process import * def transform(data, ops=None): diff --git a/ppocr/data/imaug/label_ops.py b/ppocr/data/imaug/label_ops.py index 55870a50..47e0cbf0 100644 --- a/ppocr/data/imaug/label_ops.py +++ b/ppocr/data/imaug/label_ops.py @@ -187,6 +187,34 @@ class CTCLabelEncode(BaseRecLabelEncode): return dict_character +class E2ELabelEncode(BaseRecLabelEncode): + def __init__(self, + max_text_length, + character_dict_path=None, + character_type='EN', + use_space_char=False, + **kwargs): + super(E2ELabelEncode, + self).__init__(max_text_length, character_dict_path, + character_type, use_space_char) + self.pad_num = len(self.dict) # the length to pad + + def __call__(self, data): + text_label_index_list, temp_text = [], [] + texts = data['strs'] + for text in texts: + text = text.lower() + temp_text = [] + for c_ in text: + if c_ in self.dict: + temp_text.append(self.dict[c_]) + temp_text = temp_text + [self.pad_num] * (self.max_text_len - + len(temp_text)) + text_label_index_list.append(temp_text) + data['strs'] = np.array(text_label_index_list) + return data + + class AttnLabelEncode(BaseRecLabelEncode): """ Convert between text-label and text-index """ @@ -215,7 +243,7 @@ class AttnLabelEncode(BaseRecLabelEncode): return None data['length'] = np.array(len(text)) text = [0] + text + [len(self.character) - 1] + [0] * (self.max_text_len - - len(text) - 1) + - len(text) - 2) data['label'] = np.array(text) return data @@ -261,7 +289,7 @@ class SRNLabelEncode(BaseRecLabelEncode): if len(text) > self.max_text_len: return None data['length'] = np.array(len(text)) - text = text + [char_num] * (self.max_text_len - len(text)) + text = text + [char_num - 1] * (self.max_text_len - len(text)) data['label'] = np.array(text) return data diff --git a/ppocr/data/imaug/make_shrink_map.py b/ppocr/data/imaug/make_shrink_map.py index a66706f2..15e8afa0 100644 --- a/ppocr/data/imaug/make_shrink_map.py +++ b/ppocr/data/imaug/make_shrink_map.py @@ -32,7 +32,6 @@ class MakeShrinkMap(object): text_polys, ignore_tags = self.validate_polygons(text_polys, ignore_tags, h, w) gt = np.zeros((h, w), dtype=np.float32) - # gt = np.zeros((1, h, w), dtype=np.float32) mask = np.ones((h, w), dtype=np.float32) for i in range(len(text_polys)): polygon = text_polys[i] @@ -44,21 +43,34 @@ class MakeShrinkMap(object): ignore_tags[i] = True else: polygon_shape = Polygon(polygon) - distance = polygon_shape.area * ( - 1 - np.power(self.shrink_ratio, 2)) / polygon_shape.length - subject = [tuple(l) for l in text_polys[i]] + subject = [tuple(l) for l in polygon] padding = pyclipper.PyclipperOffset() padding.AddPath(subject, pyclipper.JT_ROUND, pyclipper.ET_CLOSEDPOLYGON) - shrinked = padding.Execute(-distance) + shrinked = [] + + # Increase the shrink ratio every time we get multiple polygon returned back + possible_ratios = np.arange(self.shrink_ratio, 1, + self.shrink_ratio) + np.append(possible_ratios, 1) + # print(possible_ratios) + for ratio in possible_ratios: + # print(f"Change shrink ratio to {ratio}") + distance = polygon_shape.area * ( + 1 - np.power(ratio, 2)) / polygon_shape.length + shrinked = padding.Execute(-distance) + if len(shrinked) == 1: + break + if shrinked == []: cv2.fillPoly(mask, polygon.astype(np.int32)[np.newaxis, :, :], 0) ignore_tags[i] = True continue - shrinked = np.array(shrinked[0]).reshape(-1, 2) - cv2.fillPoly(gt, [shrinked.astype(np.int32)], 1) - # cv2.fillPoly(gt[0], [shrinked.astype(np.int32)], 1) + + for each_shirnk in shrinked: + shirnk = np.array(each_shirnk).reshape(-1, 2) + cv2.fillPoly(gt, [shirnk.astype(np.int32)], 1) data['shrink_map'] = gt data['shrink_mask'] = mask @@ -84,11 +96,12 @@ class MakeShrinkMap(object): return polygons, ignore_tags def polygon_area(self, polygon): - # return cv2.contourArea(polygon.astype(np.float32)) - edge = 0 - for i in range(polygon.shape[0]): - next_index = (i + 1) % polygon.shape[0] - edge += (polygon[next_index, 0] - polygon[i, 0]) * ( - polygon[next_index, 1] - polygon[i, 1]) - - return edge / 2. + """ + compute polygon area + """ + area = 0 + q = polygon[-1] + for p in polygon: + area += p[0] * q[1] - p[1] * q[0] + q = p + return area / 2.0 diff --git a/ppocr/data/imaug/operators.py b/ppocr/data/imaug/operators.py index 8b9175cf..9c48b096 100644 --- a/ppocr/data/imaug/operators.py +++ b/ppocr/data/imaug/operators.py @@ -185,8 +185,8 @@ class DetResizeForTest(object): resize_h = int(h * ratio) resize_w = int(w * ratio) - resize_h = int(round(resize_h / 32) * 32) - resize_w = int(round(resize_w / 32) * 32) + resize_h = max(int(round(resize_h / 32) * 32), 32) + resize_w = max(int(round(resize_w / 32) * 32), 32) try: if int(resize_w) <= 0 or int(resize_h) <= 0: @@ -197,7 +197,6 @@ class DetResizeForTest(object): sys.exit(0) ratio_h = resize_h / float(h) ratio_w = resize_w / float(w) - # return img, np.array([h, w]) return img, [ratio_h, ratio_w] def resize_image_type2(self, img): @@ -206,7 +205,6 @@ class DetResizeForTest(object): resize_w = w resize_h = h - # Fix the longer side if resize_h > resize_w: ratio = float(self.resize_long) / resize_h else: @@ -223,3 +221,72 @@ class DetResizeForTest(object): ratio_w = resize_w / float(w) return img, [ratio_h, ratio_w] + + +class E2EResizeForTest(object): + def __init__(self, **kwargs): + super(E2EResizeForTest, self).__init__() + self.max_side_len = kwargs['max_side_len'] + self.valid_set = kwargs['valid_set'] + + def __call__(self, data): + img = data['image'] + src_h, src_w, _ = img.shape + if self.valid_set == 'totaltext': + im_resized, [ratio_h, ratio_w] = self.resize_image_for_totaltext( + img, max_side_len=self.max_side_len) + else: + im_resized, (ratio_h, ratio_w) = self.resize_image( + img, max_side_len=self.max_side_len) + data['image'] = im_resized + data['shape'] = np.array([src_h, src_w, ratio_h, ratio_w]) + return data + + def resize_image_for_totaltext(self, im, max_side_len=512): + + h, w, _ = im.shape + resize_w = w + resize_h = h + ratio = 1.25 + if h * ratio > max_side_len: + ratio = float(max_side_len) / resize_h + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + im = cv2.resize(im, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + return im, (ratio_h, ratio_w) + + def resize_image(self, im, max_side_len=512): + """ + resize image to a size multiple of max_stride which is required by the network + :param im: the resized image + :param max_side_len: limit of max image size to avoid out of memory in gpu + :return: the resized image and the resize ratio + """ + h, w, _ = im.shape + + resize_w = w + resize_h = h + + # Fix the longer side + if resize_h > resize_w: + ratio = float(max_side_len) / resize_h + else: + ratio = float(max_side_len) / resize_w + + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + im = cv2.resize(im, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + + return im, (ratio_h, ratio_w) diff --git a/ppocr/data/imaug/pg_process.py b/ppocr/data/imaug/pg_process.py new file mode 100644 index 00000000..0c9439d7 --- /dev/null +++ b/ppocr/data/imaug/pg_process.py @@ -0,0 +1,906 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import math +import cv2 +import numpy as np + +__all__ = ['PGProcessTrain'] + + +class PGProcessTrain(object): + def __init__(self, + character_dict_path, + max_text_length, + max_text_nums, + tcl_len, + batch_size=14, + min_crop_size=24, + min_text_size=4, + max_text_size=512, + **kwargs): + self.tcl_len = tcl_len + self.max_text_length = max_text_length + self.max_text_nums = max_text_nums + self.batch_size = batch_size + self.min_crop_size = min_crop_size + self.min_text_size = min_text_size + self.max_text_size = max_text_size + self.Lexicon_Table = self.get_dict(character_dict_path) + self.pad_num = len(self.Lexicon_Table) + self.img_id = 0 + + def get_dict(self, character_dict_path): + character_str = "" + with open(character_dict_path, "rb") as fin: + lines = fin.readlines() + for line in lines: + line = line.decode('utf-8').strip("\n").strip("\r\n") + character_str += line + dict_character = list(character_str) + return dict_character + + def quad_area(self, poly): + """ + compute area of a polygon + :param poly: + :return: + """ + edge = [(poly[1][0] - poly[0][0]) * (poly[1][1] + poly[0][1]), + (poly[2][0] - poly[1][0]) * (poly[2][1] + poly[1][1]), + (poly[3][0] - poly[2][0]) * (poly[3][1] + poly[2][1]), + (poly[0][0] - poly[3][0]) * (poly[0][1] + poly[3][1])] + return np.sum(edge) / 2. + + def gen_quad_from_poly(self, poly): + """ + Generate min area quad from poly. + """ + point_num = poly.shape[0] + min_area_quad = np.zeros((4, 2), dtype=np.float32) + rect = cv2.minAreaRect(poly.astype( + np.int32)) # (center (x,y), (width, height), angle of rotation) + box = np.array(cv2.boxPoints(rect)) + + first_point_idx = 0 + min_dist = 1e4 + for i in range(4): + dist = np.linalg.norm(box[(i + 0) % 4] - poly[0]) + \ + np.linalg.norm(box[(i + 1) % 4] - poly[point_num // 2 - 1]) + \ + np.linalg.norm(box[(i + 2) % 4] - poly[point_num // 2]) + \ + np.linalg.norm(box[(i + 3) % 4] - poly[-1]) + if dist < min_dist: + min_dist = dist + first_point_idx = i + for i in range(4): + min_area_quad[i] = box[(first_point_idx + i) % 4] + + return min_area_quad + + def check_and_validate_polys(self, polys, tags, xxx_todo_changeme): + """ + check so that the text poly is in the same direction, + and also filter some invalid polygons + :param polys: + :param tags: + :return: + """ + (h, w) = xxx_todo_changeme + if polys.shape[0] == 0: + return polys, np.array([]), np.array([]) + polys[:, :, 0] = np.clip(polys[:, :, 0], 0, w - 1) + polys[:, :, 1] = np.clip(polys[:, :, 1], 0, h - 1) + + validated_polys = [] + validated_tags = [] + hv_tags = [] + for poly, tag in zip(polys, tags): + quad = self.gen_quad_from_poly(poly) + p_area = self.quad_area(quad) + if abs(p_area) < 1: + print('invalid poly') + continue + if p_area > 0: + if tag == False: + print('poly in wrong direction') + tag = True # reversed cases should be ignore + poly = poly[(0, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, + 1), :] + quad = quad[(0, 3, 2, 1), :] + + len_w = np.linalg.norm(quad[0] - quad[1]) + np.linalg.norm(quad[3] - + quad[2]) + len_h = np.linalg.norm(quad[0] - quad[3]) + np.linalg.norm(quad[1] - + quad[2]) + hv_tag = 1 + + if len_w * 2.0 < len_h: + hv_tag = 0 + + validated_polys.append(poly) + validated_tags.append(tag) + hv_tags.append(hv_tag) + return np.array(validated_polys), np.array(validated_tags), np.array( + hv_tags) + + def crop_area(self, + im, + polys, + tags, + hv_tags, + txts, + crop_background=False, + max_tries=25): + """ + make random crop from the input image + :param im: + :param polys: [b,4,2] + :param tags: + :param crop_background: + :param max_tries: 50 -> 25 + :return: + """ + h, w, _ = im.shape + pad_h = h // 10 + pad_w = w // 10 + h_array = np.zeros((h + pad_h * 2), dtype=np.int32) + w_array = np.zeros((w + pad_w * 2), dtype=np.int32) + for poly in polys: + poly = np.round(poly, decimals=0).astype(np.int32) + minx = np.min(poly[:, 0]) + maxx = np.max(poly[:, 0]) + w_array[minx + pad_w:maxx + pad_w] = 1 + miny = np.min(poly[:, 1]) + maxy = np.max(poly[:, 1]) + h_array[miny + pad_h:maxy + pad_h] = 1 + # ensure the cropped area not across a text + h_axis = np.where(h_array == 0)[0] + w_axis = np.where(w_array == 0)[0] + if len(h_axis) == 0 or len(w_axis) == 0: + return im, polys, tags, hv_tags, txts + for i in range(max_tries): + xx = np.random.choice(w_axis, size=2) + xmin = np.min(xx) - pad_w + xmax = np.max(xx) - pad_w + xmin = np.clip(xmin, 0, w - 1) + xmax = np.clip(xmax, 0, w - 1) + yy = np.random.choice(h_axis, size=2) + ymin = np.min(yy) - pad_h + ymax = np.max(yy) - pad_h + ymin = np.clip(ymin, 0, h - 1) + ymax = np.clip(ymax, 0, h - 1) + if xmax - xmin < self.min_crop_size or \ + ymax - ymin < self.min_crop_size: + continue + if polys.shape[0] != 0: + poly_axis_in_area = (polys[:, :, 0] >= xmin) & (polys[:, :, 0] <= xmax) \ + & (polys[:, :, 1] >= ymin) & (polys[:, :, 1] <= ymax) + selected_polys = np.where( + np.sum(poly_axis_in_area, axis=1) == 4)[0] + else: + selected_polys = [] + if len(selected_polys) == 0: + # no text in this area + if crop_background: + txts_tmp = [] + for selected_poly in selected_polys: + txts_tmp.append(txts[selected_poly]) + txts = txts_tmp + return im[ymin: ymax + 1, xmin: xmax + 1, :], \ + polys[selected_polys], tags[selected_polys], hv_tags[selected_polys], txts + else: + continue + im = im[ymin:ymax + 1, xmin:xmax + 1, :] + polys = polys[selected_polys] + tags = tags[selected_polys] + hv_tags = hv_tags[selected_polys] + txts_tmp = [] + for selected_poly in selected_polys: + txts_tmp.append(txts[selected_poly]) + txts = txts_tmp + polys[:, :, 0] -= xmin + polys[:, :, 1] -= ymin + return im, polys, tags, hv_tags, txts + + return im, polys, tags, hv_tags, txts + + def fit_and_gather_tcl_points_v2(self, + min_area_quad, + poly, + max_h, + max_w, + fixed_point_num=64, + img_id=0, + reference_height=3): + """ + Find the center point of poly as key_points, then fit and gather. + """ + key_point_xys = [] + point_num = poly.shape[0] + for idx in range(point_num // 2): + center_point = (poly[idx] + poly[point_num - 1 - idx]) / 2.0 + key_point_xys.append(center_point) + + tmp_image = np.zeros( + shape=( + max_h, + max_w, ), dtype='float32') + cv2.polylines(tmp_image, [np.array(key_point_xys).astype('int32')], + False, 1.0) + ys, xs = np.where(tmp_image > 0) + xy_text = np.array(list(zip(xs, ys)), dtype='float32') + + left_center_pt = ( + (min_area_quad[0] - min_area_quad[1]) / 2.0).reshape(1, 2) + right_center_pt = ( + (min_area_quad[1] - min_area_quad[2]) / 2.0).reshape(1, 2) + proj_unit_vec = (right_center_pt - left_center_pt) / ( + np.linalg.norm(right_center_pt - left_center_pt) + 1e-6) + proj_unit_vec_tile = np.tile(proj_unit_vec, + (xy_text.shape[0], 1)) # (n, 2) + left_center_pt_tile = np.tile(left_center_pt, + (xy_text.shape[0], 1)) # (n, 2) + xy_text_to_left_center = xy_text - left_center_pt_tile + proj_value = np.sum(xy_text_to_left_center * proj_unit_vec_tile, axis=1) + xy_text = xy_text[np.argsort(proj_value)] + + # convert to np and keep the num of point not greater then fixed_point_num + pos_info = np.array(xy_text).reshape(-1, 2)[:, ::-1] # xy-> yx + point_num = len(pos_info) + if point_num > fixed_point_num: + keep_ids = [ + int((point_num * 1.0 / fixed_point_num) * x) + for x in range(fixed_point_num) + ] + pos_info = pos_info[keep_ids, :] + + keep = int(min(len(pos_info), fixed_point_num)) + if np.random.rand() < 0.2 and reference_height >= 3: + dl = (np.random.rand(keep) - 0.5) * reference_height * 0.3 + random_float = np.array([1, 0]).reshape([1, 2]) * dl.reshape( + [keep, 1]) + pos_info += random_float + pos_info[:, 0] = np.clip(pos_info[:, 0], 0, max_h - 1) + pos_info[:, 1] = np.clip(pos_info[:, 1], 0, max_w - 1) + + # padding to fixed length + pos_l = np.zeros((self.tcl_len, 3), dtype=np.int32) + pos_l[:, 0] = np.ones((self.tcl_len, )) * img_id + pos_m = np.zeros((self.tcl_len, 1), dtype=np.float32) + pos_l[:keep, 1:] = np.round(pos_info).astype(np.int32) + pos_m[:keep] = 1.0 + return pos_l, pos_m + + def generate_direction_map(self, poly_quads, n_char, direction_map): + """ + """ + width_list = [] + height_list = [] + for quad in poly_quads: + quad_w = (np.linalg.norm(quad[0] - quad[1]) + + np.linalg.norm(quad[2] - quad[3])) / 2.0 + quad_h = (np.linalg.norm(quad[0] - quad[3]) + + np.linalg.norm(quad[2] - quad[1])) / 2.0 + width_list.append(quad_w) + height_list.append(quad_h) + norm_width = max(sum(width_list) / n_char, 1.0) + average_height = max(sum(height_list) / len(height_list), 1.0) + k = 1 + for quad in poly_quads: + direct_vector_full = ( + (quad[1] + quad[2]) - (quad[0] + quad[3])) / 2.0 + direct_vector = direct_vector_full / ( + np.linalg.norm(direct_vector_full) + 1e-6) * norm_width + direction_label = tuple( + map(float, + [direct_vector[0], direct_vector[1], 1.0 / average_height])) + cv2.fillPoly(direction_map, + quad.round().astype(np.int32)[np.newaxis, :, :], + direction_label) + k += 1 + return direction_map + + def calculate_average_height(self, poly_quads): + """ + """ + height_list = [] + for quad in poly_quads: + quad_h = (np.linalg.norm(quad[0] - quad[3]) + + np.linalg.norm(quad[2] - quad[1])) / 2.0 + height_list.append(quad_h) + average_height = max(sum(height_list) / len(height_list), 1.0) + return average_height + + def generate_tcl_ctc_label(self, + h, + w, + polys, + tags, + text_strs, + ds_ratio, + tcl_ratio=0.3, + shrink_ratio_of_width=0.15): + """ + Generate polygon. + """ + score_map_big = np.zeros( + ( + h, + w, ), dtype=np.float32) + h, w = int(h * ds_ratio), int(w * ds_ratio) + polys = polys * ds_ratio + + score_map = np.zeros( + ( + h, + w, ), dtype=np.float32) + score_label_map = np.zeros( + ( + h, + w, ), dtype=np.float32) + tbo_map = np.zeros((h, w, 5), dtype=np.float32) + training_mask = np.ones( + ( + h, + w, ), dtype=np.float32) + direction_map = np.ones((h, w, 3)) * np.array([0, 0, 1]).reshape( + [1, 1, 3]).astype(np.float32) + + label_idx = 0 + score_label_map_text_label_list = [] + pos_list, pos_mask, label_list = [], [], [] + for poly_idx, poly_tag in enumerate(zip(polys, tags)): + poly = poly_tag[0] + tag = poly_tag[1] + + # generate min_area_quad + min_area_quad, center_point = self.gen_min_area_quad_from_poly(poly) + min_area_quad_h = 0.5 * ( + np.linalg.norm(min_area_quad[0] - min_area_quad[3]) + + np.linalg.norm(min_area_quad[1] - min_area_quad[2])) + min_area_quad_w = 0.5 * ( + np.linalg.norm(min_area_quad[0] - min_area_quad[1]) + + np.linalg.norm(min_area_quad[2] - min_area_quad[3])) + + if min(min_area_quad_h, min_area_quad_w) < self.min_text_size * ds_ratio \ + or min(min_area_quad_h, min_area_quad_w) > self.max_text_size * ds_ratio: + continue + + if tag: + cv2.fillPoly(training_mask, + poly.astype(np.int32)[np.newaxis, :, :], 0.15) + else: + text_label = text_strs[poly_idx] + text_label = self.prepare_text_label(text_label, + self.Lexicon_Table) + + text_label_index_list = [[self.Lexicon_Table.index(c_)] + for c_ in text_label + if c_ in self.Lexicon_Table] + if len(text_label_index_list) < 1: + continue + + tcl_poly = self.poly2tcl(poly, tcl_ratio) + tcl_quads = self.poly2quads(tcl_poly) + poly_quads = self.poly2quads(poly) + + stcl_quads, quad_index = self.shrink_poly_along_width( + tcl_quads, + shrink_ratio_of_width=shrink_ratio_of_width, + expand_height_ratio=1.0 / tcl_ratio) + + cv2.fillPoly(score_map, + np.round(stcl_quads).astype(np.int32), 1.0) + cv2.fillPoly(score_map_big, + np.round(stcl_quads / ds_ratio).astype(np.int32), + 1.0) + + for idx, quad in enumerate(stcl_quads): + quad_mask = np.zeros((h, w), dtype=np.float32) + quad_mask = cv2.fillPoly( + quad_mask, + np.round(quad[np.newaxis, :, :]).astype(np.int32), 1.0) + tbo_map = self.gen_quad_tbo(poly_quads[quad_index[idx]], + quad_mask, tbo_map) + + # score label map and score_label_map_text_label_list for refine + if label_idx == 0: + text_pos_list_ = [[len(self.Lexicon_Table)], ] + score_label_map_text_label_list.append(text_pos_list_) + + label_idx += 1 + cv2.fillPoly(score_label_map, + np.round(poly_quads).astype(np.int32), label_idx) + score_label_map_text_label_list.append(text_label_index_list) + + # direction info, fix-me + n_char = len(text_label_index_list) + direction_map = self.generate_direction_map(poly_quads, n_char, + direction_map) + + # pos info + average_shrink_height = self.calculate_average_height( + stcl_quads) + pos_l, pos_m = self.fit_and_gather_tcl_points_v2( + min_area_quad, + poly, + max_h=h, + max_w=w, + fixed_point_num=64, + img_id=self.img_id, + reference_height=average_shrink_height) + + label_l = text_label_index_list + if len(text_label_index_list) < 2: + continue + + pos_list.append(pos_l) + pos_mask.append(pos_m) + label_list.append(label_l) + + # use big score_map for smooth tcl lines + score_map_big_resized = cv2.resize( + score_map_big, dsize=None, fx=ds_ratio, fy=ds_ratio) + score_map = np.array(score_map_big_resized > 1e-3, dtype='float32') + + return score_map, score_label_map, tbo_map, direction_map, training_mask, \ + pos_list, pos_mask, label_list, score_label_map_text_label_list + + def adjust_point(self, poly): + """ + adjust point order. + """ + point_num = poly.shape[0] + if point_num == 4: + len_1 = np.linalg.norm(poly[0] - poly[1]) + len_2 = np.linalg.norm(poly[1] - poly[2]) + len_3 = np.linalg.norm(poly[2] - poly[3]) + len_4 = np.linalg.norm(poly[3] - poly[0]) + + if (len_1 + len_3) * 1.5 < (len_2 + len_4): + poly = poly[[1, 2, 3, 0], :] + + elif point_num > 4: + vector_1 = poly[0] - poly[1] + vector_2 = poly[1] - poly[2] + cos_theta = np.dot(vector_1, vector_2) / ( + np.linalg.norm(vector_1) * np.linalg.norm(vector_2) + 1e-6) + theta = np.arccos(np.round(cos_theta, decimals=4)) + + if abs(theta) > (70 / 180 * math.pi): + index = list(range(1, point_num)) + [0] + poly = poly[np.array(index), :] + return poly + + def gen_min_area_quad_from_poly(self, poly): + """ + Generate min area quad from poly. + """ + point_num = poly.shape[0] + min_area_quad = np.zeros((4, 2), dtype=np.float32) + if point_num == 4: + min_area_quad = poly + center_point = np.sum(poly, axis=0) / 4 + else: + rect = cv2.minAreaRect(poly.astype( + np.int32)) # (center (x,y), (width, height), angle of rotation) + center_point = rect[0] + box = np.array(cv2.boxPoints(rect)) + + first_point_idx = 0 + min_dist = 1e4 + for i in range(4): + dist = np.linalg.norm(box[(i + 0) % 4] - poly[0]) + \ + np.linalg.norm(box[(i + 1) % 4] - poly[point_num // 2 - 1]) + \ + np.linalg.norm(box[(i + 2) % 4] - poly[point_num // 2]) + \ + np.linalg.norm(box[(i + 3) % 4] - poly[-1]) + if dist < min_dist: + min_dist = dist + first_point_idx = i + + for i in range(4): + min_area_quad[i] = box[(first_point_idx + i) % 4] + + return min_area_quad, center_point + + def shrink_quad_along_width(self, + quad, + begin_width_ratio=0., + end_width_ratio=1.): + """ + Generate shrink_quad_along_width. + """ + ratio_pair = np.array( + [[begin_width_ratio], [end_width_ratio]], dtype=np.float32) + p0_1 = quad[0] + (quad[1] - quad[0]) * ratio_pair + p3_2 = quad[3] + (quad[2] - quad[3]) * ratio_pair + return np.array([p0_1[0], p0_1[1], p3_2[1], p3_2[0]]) + + def shrink_poly_along_width(self, + quads, + shrink_ratio_of_width, + expand_height_ratio=1.0): + """ + shrink poly with given length. + """ + upper_edge_list = [] + + def get_cut_info(edge_len_list, cut_len): + for idx, edge_len in enumerate(edge_len_list): + cut_len -= edge_len + if cut_len <= 0.000001: + ratio = (cut_len + edge_len_list[idx]) / edge_len_list[idx] + return idx, ratio + + for quad in quads: + upper_edge_len = np.linalg.norm(quad[0] - quad[1]) + upper_edge_list.append(upper_edge_len) + + # length of left edge and right edge. + left_length = np.linalg.norm(quads[0][0] - quads[0][ + 3]) * expand_height_ratio + right_length = np.linalg.norm(quads[-1][1] - quads[-1][ + 2]) * expand_height_ratio + + shrink_length = min(left_length, right_length, + sum(upper_edge_list)) * shrink_ratio_of_width + # shrinking length + upper_len_left = shrink_length + upper_len_right = sum(upper_edge_list) - shrink_length + + left_idx, left_ratio = get_cut_info(upper_edge_list, upper_len_left) + left_quad = self.shrink_quad_along_width( + quads[left_idx], begin_width_ratio=left_ratio, end_width_ratio=1) + right_idx, right_ratio = get_cut_info(upper_edge_list, upper_len_right) + right_quad = self.shrink_quad_along_width( + quads[right_idx], begin_width_ratio=0, end_width_ratio=right_ratio) + + out_quad_list = [] + if left_idx == right_idx: + out_quad_list.append( + [left_quad[0], right_quad[1], right_quad[2], left_quad[3]]) + else: + out_quad_list.append(left_quad) + for idx in range(left_idx + 1, right_idx): + out_quad_list.append(quads[idx]) + out_quad_list.append(right_quad) + + return np.array(out_quad_list), list(range(left_idx, right_idx + 1)) + + def prepare_text_label(self, label_str, Lexicon_Table): + """ + Prepare text lablel by given Lexicon_Table. + """ + if len(Lexicon_Table) == 36: + return label_str.lower() + else: + return label_str + + def vector_angle(self, A, B): + """ + Calculate the angle between vector AB and x-axis positive direction. + """ + AB = np.array([B[1] - A[1], B[0] - A[0]]) + return np.arctan2(*AB) + + def theta_line_cross_point(self, theta, point): + """ + Calculate the line through given point and angle in ax + by + c =0 form. + """ + x, y = point + cos = np.cos(theta) + sin = np.sin(theta) + return [sin, -cos, cos * y - sin * x] + + def line_cross_two_point(self, A, B): + """ + Calculate the line through given point A and B in ax + by + c =0 form. + """ + angle = self.vector_angle(A, B) + return self.theta_line_cross_point(angle, A) + + def average_angle(self, poly): + """ + Calculate the average angle between left and right edge in given poly. + """ + p0, p1, p2, p3 = poly + angle30 = self.vector_angle(p3, p0) + angle21 = self.vector_angle(p2, p1) + return (angle30 + angle21) / 2 + + def line_cross_point(self, line1, line2): + """ + line1 and line2 in 0=ax+by+c form, compute the cross point of line1 and line2 + """ + a1, b1, c1 = line1 + a2, b2, c2 = line2 + d = a1 * b2 - a2 * b1 + + if d == 0: + print('Cross point does not exist') + return np.array([0, 0], dtype=np.float32) + else: + x = (b1 * c2 - b2 * c1) / d + y = (a2 * c1 - a1 * c2) / d + + return np.array([x, y], dtype=np.float32) + + def quad2tcl(self, poly, ratio): + """ + Generate center line by poly clock-wise point. (4, 2) + """ + ratio_pair = np.array( + [[0.5 - ratio / 2], [0.5 + ratio / 2]], dtype=np.float32) + p0_3 = poly[0] + (poly[3] - poly[0]) * ratio_pair + p1_2 = poly[1] + (poly[2] - poly[1]) * ratio_pair + return np.array([p0_3[0], p1_2[0], p1_2[1], p0_3[1]]) + + def poly2tcl(self, poly, ratio): + """ + Generate center line by poly clock-wise point. + """ + ratio_pair = np.array( + [[0.5 - ratio / 2], [0.5 + ratio / 2]], dtype=np.float32) + tcl_poly = np.zeros_like(poly) + point_num = poly.shape[0] + + for idx in range(point_num // 2): + point_pair = poly[idx] + (poly[point_num - 1 - idx] - poly[idx] + ) * ratio_pair + tcl_poly[idx] = point_pair[0] + tcl_poly[point_num - 1 - idx] = point_pair[1] + return tcl_poly + + def gen_quad_tbo(self, quad, tcl_mask, tbo_map): + """ + Generate tbo_map for give quad. + """ + # upper and lower line function: ax + by + c = 0; + up_line = self.line_cross_two_point(quad[0], quad[1]) + lower_line = self.line_cross_two_point(quad[3], quad[2]) + + quad_h = 0.5 * (np.linalg.norm(quad[0] - quad[3]) + + np.linalg.norm(quad[1] - quad[2])) + quad_w = 0.5 * (np.linalg.norm(quad[0] - quad[1]) + + np.linalg.norm(quad[2] - quad[3])) + + # average angle of left and right line. + angle = self.average_angle(quad) + + xy_in_poly = np.argwhere(tcl_mask == 1) + for y, x in xy_in_poly: + point = (x, y) + line = self.theta_line_cross_point(angle, point) + cross_point_upper = self.line_cross_point(up_line, line) + cross_point_lower = self.line_cross_point(lower_line, line) + ##FIX, offset reverse + upper_offset_x, upper_offset_y = cross_point_upper - point + lower_offset_x, lower_offset_y = cross_point_lower - point + tbo_map[y, x, 0] = upper_offset_y + tbo_map[y, x, 1] = upper_offset_x + tbo_map[y, x, 2] = lower_offset_y + tbo_map[y, x, 3] = lower_offset_x + tbo_map[y, x, 4] = 1.0 / max(min(quad_h, quad_w), 1.0) * 2 + return tbo_map + + def poly2quads(self, poly): + """ + Split poly into quads. + """ + quad_list = [] + point_num = poly.shape[0] + + # point pair + point_pair_list = [] + for idx in range(point_num // 2): + point_pair = [poly[idx], poly[point_num - 1 - idx]] + point_pair_list.append(point_pair) + + quad_num = point_num // 2 - 1 + for idx in range(quad_num): + # reshape and adjust to clock-wise + quad_list.append((np.array(point_pair_list)[[idx, idx + 1]] + ).reshape(4, 2)[[0, 2, 3, 1]]) + + return np.array(quad_list) + + def rotate_im_poly(self, im, text_polys): + """ + rotate image with 90 / 180 / 270 degre + """ + im_w, im_h = im.shape[1], im.shape[0] + dst_im = im.copy() + dst_polys = [] + rand_degree_ratio = np.random.rand() + rand_degree_cnt = 1 + if rand_degree_ratio > 0.5: + rand_degree_cnt = 3 + for i in range(rand_degree_cnt): + dst_im = np.rot90(dst_im) + rot_degree = -90 * rand_degree_cnt + rot_angle = rot_degree * math.pi / 180.0 + n_poly = text_polys.shape[0] + cx, cy = 0.5 * im_w, 0.5 * im_h + ncx, ncy = 0.5 * dst_im.shape[1], 0.5 * dst_im.shape[0] + for i in range(n_poly): + wordBB = text_polys[i] + poly = [] + for j in range(4): # 16->4 + sx, sy = wordBB[j][0], wordBB[j][1] + dx = math.cos(rot_angle) * (sx - cx) - math.sin(rot_angle) * ( + sy - cy) + ncx + dy = math.sin(rot_angle) * (sx - cx) + math.cos(rot_angle) * ( + sy - cy) + ncy + poly.append([dx, dy]) + dst_polys.append(poly) + return dst_im, np.array(dst_polys, dtype=np.float32) + + def __call__(self, data): + input_size = 512 + im = data['image'] + text_polys = data['polys'] + text_tags = data['tags'] + text_strs = data['strs'] + h, w, _ = im.shape + text_polys, text_tags, hv_tags = self.check_and_validate_polys( + text_polys, text_tags, (h, w)) + if text_polys.shape[0] <= 0: + return None + # set aspect ratio and keep area fix + asp_scales = np.arange(1.0, 1.55, 0.1) + asp_scale = np.random.choice(asp_scales) + if np.random.rand() < 0.5: + asp_scale = 1.0 / asp_scale + asp_scale = math.sqrt(asp_scale) + + asp_wx = asp_scale + asp_hy = 1.0 / asp_scale + im = cv2.resize(im, dsize=None, fx=asp_wx, fy=asp_hy) + text_polys[:, :, 0] *= asp_wx + text_polys[:, :, 1] *= asp_hy + + h, w, _ = im.shape + if max(h, w) > 2048: + rd_scale = 2048.0 / max(h, w) + im = cv2.resize(im, dsize=None, fx=rd_scale, fy=rd_scale) + text_polys *= rd_scale + h, w, _ = im.shape + if min(h, w) < 16: + return None + + # no background + im, text_polys, text_tags, hv_tags, text_strs = self.crop_area( + im, + text_polys, + text_tags, + hv_tags, + text_strs, + crop_background=False) + + if text_polys.shape[0] == 0: + return None + # # continue for all ignore case + if np.sum((text_tags * 1.0)) >= text_tags.size: + return None + new_h, new_w, _ = im.shape + if (new_h is None) or (new_w is None): + return None + # resize image + std_ratio = float(input_size) / max(new_w, new_h) + rand_scales = np.array( + [0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0, 1.0, 1.0, 1.0, 1.0]) + rz_scale = std_ratio * np.random.choice(rand_scales) + im = cv2.resize(im, dsize=None, fx=rz_scale, fy=rz_scale) + text_polys[:, :, 0] *= rz_scale + text_polys[:, :, 1] *= rz_scale + + # add gaussian blur + if np.random.rand() < 0.1 * 0.5: + ks = np.random.permutation(5)[0] + 1 + ks = int(ks / 2) * 2 + 1 + im = cv2.GaussianBlur(im, ksize=(ks, ks), sigmaX=0, sigmaY=0) + # add brighter + if np.random.rand() < 0.1 * 0.5: + im = im * (1.0 + np.random.rand() * 0.5) + im = np.clip(im, 0.0, 255.0) + # add darker + if np.random.rand() < 0.1 * 0.5: + im = im * (1.0 - np.random.rand() * 0.5) + im = np.clip(im, 0.0, 255.0) + + # Padding the im to [input_size, input_size] + new_h, new_w, _ = im.shape + if min(new_w, new_h) < input_size * 0.5: + return None + im_padded = np.ones((input_size, input_size, 3), dtype=np.float32) + im_padded[:, :, 2] = 0.485 * 255 + im_padded[:, :, 1] = 0.456 * 255 + im_padded[:, :, 0] = 0.406 * 255 + + # Random the start position + del_h = input_size - new_h + del_w = input_size - new_w + sh, sw = 0, 0 + if del_h > 1: + sh = int(np.random.rand() * del_h) + if del_w > 1: + sw = int(np.random.rand() * del_w) + + # Padding + im_padded[sh:sh + new_h, sw:sw + new_w, :] = im.copy() + text_polys[:, :, 0] += sw + text_polys[:, :, 1] += sh + + score_map, score_label_map, border_map, direction_map, training_mask, \ + pos_list, pos_mask, label_list, score_label_map_text_label = self.generate_tcl_ctc_label(input_size, + input_size, + text_polys, + text_tags, + text_strs, 0.25) + if len(label_list) <= 0: # eliminate negative samples + return None + pos_list_temp = np.zeros([64, 3]) + pos_mask_temp = np.zeros([64, 1]) + label_list_temp = np.zeros([self.max_text_length, 1]) + self.pad_num + + for i, label in enumerate(label_list): + n = len(label) + if n > self.max_text_length: + label_list[i] = label[:self.max_text_length] + continue + while n < self.max_text_length: + label.append([self.pad_num]) + n += 1 + + for i in range(len(label_list)): + label_list[i] = np.array(label_list[i]) + + if len(pos_list) <= 0 or len(pos_list) > self.max_text_nums: + return None + for __ in range(self.max_text_nums - len(pos_list), 0, -1): + pos_list.append(pos_list_temp) + pos_mask.append(pos_mask_temp) + label_list.append(label_list_temp) + + if self.img_id == self.batch_size - 1: + self.img_id = 0 + else: + self.img_id += 1 + + im_padded[:, :, 2] -= 0.485 * 255 + im_padded[:, :, 1] -= 0.456 * 255 + im_padded[:, :, 0] -= 0.406 * 255 + im_padded[:, :, 2] /= (255.0 * 0.229) + im_padded[:, :, 1] /= (255.0 * 0.224) + im_padded[:, :, 0] /= (255.0 * 0.225) + im_padded = im_padded.transpose((2, 0, 1)) + images = im_padded[::-1, :, :] + tcl_maps = score_map[np.newaxis, :, :] + tcl_label_maps = score_label_map[np.newaxis, :, :] + border_maps = border_map.transpose((2, 0, 1)) + direction_maps = direction_map.transpose((2, 0, 1)) + training_masks = training_mask[np.newaxis, :, :] + pos_list = np.array(pos_list) + pos_mask = np.array(pos_mask) + label_list = np.array(label_list) + data['images'] = images + data['tcl_maps'] = tcl_maps + data['tcl_label_maps'] = tcl_label_maps + data['border_maps'] = border_maps + data['direction_maps'] = direction_maps + data['training_masks'] = training_masks + data['label_list'] = label_list + data['pos_list'] = pos_list + data['pos_mask'] = pos_mask + return data diff --git a/ppocr/data/imaug/randaugment.py b/ppocr/data/imaug/randaugment.py index 0bfac353..56f114d2 100644 --- a/ppocr/data/imaug/randaugment.py +++ b/ppocr/data/imaug/randaugment.py @@ -117,13 +117,16 @@ class RawRandAugment(object): class RandAugment(RawRandAugment): """ RandAugment wrapper to auto fit different img types """ - def __init__(self, *args, **kwargs): + def __init__(self, prob=0.5, *args, **kwargs): + self.prob = prob if six.PY2: super(RandAugment, self).__init__(*args, **kwargs) else: super().__init__(*args, **kwargs) def __call__(self, data): + if np.random.rand() > self.prob: + return data img = data['image'] if not isinstance(img, Image.Image): img = np.ascontiguousarray(img) diff --git a/ppocr/data/pgnet_dataset.py b/ppocr/data/pgnet_dataset.py new file mode 100644 index 00000000..ae063835 --- /dev/null +++ b/ppocr/data/pgnet_dataset.py @@ -0,0 +1,175 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import numpy as np +import os +from paddle.io import Dataset +from .imaug import transform, create_operators +import random + + +class PGDataSet(Dataset): + def __init__(self, config, mode, logger, seed=None): + super(PGDataSet, self).__init__() + + self.logger = logger + self.seed = seed + self.mode = mode + global_config = config['Global'] + dataset_config = config[mode]['dataset'] + loader_config = config[mode]['loader'] + + label_file_list = dataset_config.pop('label_file_list') + data_source_num = len(label_file_list) + ratio_list = dataset_config.get("ratio_list", [1.0]) + if isinstance(ratio_list, (float, int)): + ratio_list = [float(ratio_list)] * int(data_source_num) + self.data_format = dataset_config.get('data_format', 'icdar') + assert len( + ratio_list + ) == data_source_num, "The length of ratio_list should be the same as the file_list." + self.do_shuffle = loader_config['shuffle'] + + logger.info("Initialize indexs of datasets:%s" % label_file_list) + self.data_lines = self.get_image_info_list(label_file_list, ratio_list, + self.data_format) + self.data_idx_order_list = list(range(len(self.data_lines))) + if mode.lower() == "train": + self.shuffle_data_random() + + self.ops = create_operators(dataset_config['transforms'], global_config) + + def shuffle_data_random(self): + if self.do_shuffle: + random.seed(self.seed) + random.shuffle(self.data_lines) + return + + def extract_polys(self, poly_txt_path): + """ + Read text_polys, txt_tags, txts from give txt file. + """ + text_polys, txt_tags, txts = [], [], [] + with open(poly_txt_path) as f: + for line in f.readlines(): + poly_str, txt = line.strip().split('\t') + poly = list(map(float, poly_str.split(','))) + if self.mode.lower() == "eval": + while len(poly) < 100: + poly.append(-1) + text_polys.append( + np.array( + poly, dtype=np.float32).reshape(-1, 2)) + txts.append(txt) + txt_tags.append(txt == '###') + + return np.array(list(map(np.array, text_polys))), \ + np.array(txt_tags, dtype=np.bool), txts + + def extract_info_textnet(self, im_fn, img_dir=''): + """ + Extract information from line in textnet format. + """ + info_list = im_fn.split('\t') + img_path = '' + for ext in [ + 'jpg', 'bmp', 'png', 'jpeg', 'rgb', 'tif', 'tiff', 'gif', 'JPG' + ]: + if os.path.exists(os.path.join(img_dir, info_list[0] + "." + ext)): + img_path = os.path.join(img_dir, info_list[0] + "." + ext) + break + + if img_path == '': + print('Image {0} NOT found in {1}, and it will be ignored.'.format( + info_list[0], img_dir)) + + nBox = (len(info_list) - 1) // 9 + wordBBs, txts, txt_tags = [], [], [] + for n in range(0, nBox): + wordBB = list(map(float, info_list[n * 9 + 1:(n + 1) * 9])) + txt = info_list[(n + 1) * 9] + wordBBs.append([[wordBB[0], wordBB[1]], [wordBB[2], wordBB[3]], + [wordBB[4], wordBB[5]], [wordBB[6], wordBB[7]]]) + txts.append(txt) + if txt == '###': + txt_tags.append(True) + else: + txt_tags.append(False) + return img_path, np.array(wordBBs, dtype=np.float32), txt_tags, txts + + def get_image_info_list(self, file_list, ratio_list, data_format='textnet'): + if isinstance(file_list, str): + file_list = [file_list] + data_lines = [] + for idx, data_source in enumerate(file_list): + image_files = [] + if data_format == 'icdar': + image_files = [(data_source, x) for x in + os.listdir(os.path.join(data_source, 'rgb')) + if x.split('.')[-1] in [ + 'jpg', 'bmp', 'png', 'jpeg', 'rgb', 'tif', + 'tiff', 'gif', 'JPG' + ]] + elif data_format == 'textnet': + with open(data_source) as f: + image_files = [(data_source, x.strip()) + for x in f.readlines()] + else: + print("Unrecognized data format...") + exit(-1) + random.seed(self.seed) + image_files = random.sample( + image_files, round(len(image_files) * ratio_list[idx])) + data_lines.extend(image_files) + return data_lines + + def __getitem__(self, idx): + file_idx = self.data_idx_order_list[idx] + data_path, data_line = self.data_lines[file_idx] + try: + if self.data_format == 'icdar': + im_path = os.path.join(data_path, 'rgb', data_line) + if self.mode.lower() == "eval": + poly_path = os.path.join(data_path, 'poly_gt', + data_line.split('.')[0] + '.txt') + else: + poly_path = os.path.join(data_path, 'poly', + data_line.split('.')[0] + '.txt') + text_polys, text_tags, text_strs = self.extract_polys(poly_path) + else: + image_dir = os.path.join(os.path.dirname(data_path), 'image') + im_path, text_polys, text_tags, text_strs = self.extract_info_textnet( + data_line, image_dir) + + data = { + 'img_path': im_path, + 'polys': text_polys, + 'tags': text_tags, + 'strs': text_strs + } + with open(data['img_path'], 'rb') as f: + img = f.read() + data['image'] = img + outs = transform(data, self.ops) + + except Exception as e: + self.logger.error( + "When parsing line {}, error happened with msg: {}".format( + self.data_idx_order_list[idx], e)) + outs = None + if outs is None: + return self.__getitem__(np.random.randint(self.__len__())) + return outs + + def __len__(self): + return len(self.data_idx_order_list) diff --git a/ppocr/data/simple_dataset.py b/ppocr/data/simple_dataset.py index d2a86b0f..ea57b785 100644 --- a/ppocr/data/simple_dataset.py +++ b/ppocr/data/simple_dataset.py @@ -23,6 +23,7 @@ class SimpleDataSet(Dataset): def __init__(self, config, mode, logger, seed=None): super(SimpleDataSet, self).__init__() self.logger = logger + self.mode = mode.lower() global_config = config['Global'] dataset_config = config[mode]['dataset'] @@ -45,7 +46,7 @@ class SimpleDataSet(Dataset): logger.info("Initialize indexs of datasets:%s" % label_file_list) self.data_lines = self.get_image_info_list(label_file_list, ratio_list) self.data_idx_order_list = list(range(len(self.data_lines))) - if mode.lower() == "train": + if self.mode == "train" and self.do_shuffle: self.shuffle_data_random() self.ops = create_operators(dataset_config['transforms'], global_config) @@ -56,16 +57,16 @@ class SimpleDataSet(Dataset): for idx, file in enumerate(file_list): with open(file, "rb") as f: lines = f.readlines() - random.seed(self.seed) - lines = random.sample(lines, - round(len(lines) * ratio_list[idx])) + if self.mode == "train" or ratio_list[idx] < 1.0: + random.seed(self.seed) + lines = random.sample(lines, + round(len(lines) * ratio_list[idx])) data_lines.extend(lines) return data_lines def shuffle_data_random(self): - if self.do_shuffle: - random.seed(self.seed) - random.shuffle(self.data_lines) + random.seed(self.seed) + random.shuffle(self.data_lines) return def __getitem__(self, idx): @@ -90,7 +91,10 @@ class SimpleDataSet(Dataset): data_line, e)) outs = None if outs is None: - return self.__getitem__(np.random.randint(self.__len__())) + # during evaluation, we should fix the idx to get same results for many times of evaluation. + rnd_idx = np.random.randint(self.__len__( + )) if self.mode == "train" else (idx + 1) % self.__len__() + return self.__getitem__(rnd_idx) return outs def __len__(self): diff --git a/ppocr/losses/__init__.py b/ppocr/losses/__init__.py index 3881abf7..223ae6b1 100755 --- a/ppocr/losses/__init__.py +++ b/ppocr/losses/__init__.py @@ -29,10 +29,11 @@ def build_loss(config): # cls loss from .cls_loss import ClsLoss + # e2e loss + from .e2e_pg_loss import PGLoss support_dict = [ 'DBLoss', 'EASTLoss', 'SASTLoss', 'CTCLoss', 'ClsLoss', 'AttentionLoss', - 'SRNLoss' - ] + 'SRNLoss', 'PGLoss'] config = copy.deepcopy(config) module_name = config.pop('name') diff --git a/ppocr/losses/det_basic_loss.py b/ppocr/losses/det_basic_loss.py index 57b3667d..eba5526d 100644 --- a/ppocr/losses/det_basic_loss.py +++ b/ppocr/losses/det_basic_loss.py @@ -200,6 +200,6 @@ def ohem_batch(scores, gt_texts, training_masks, ohem_ratio): i, :, :], ohem_ratio)) selected_masks = np.concatenate(selected_masks, 0) - selected_masks = paddle.to_variable(selected_masks) + selected_masks = paddle.to_tensor(selected_masks) return selected_masks diff --git a/ppocr/losses/e2e_pg_loss.py b/ppocr/losses/e2e_pg_loss.py new file mode 100644 index 00000000..10a8ed0a --- /dev/null +++ b/ppocr/losses/e2e_pg_loss.py @@ -0,0 +1,140 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +from paddle import nn +import paddle + +from .det_basic_loss import DiceLoss +from ppocr.utils.e2e_utils.extract_batchsize import pre_process + + +class PGLoss(nn.Layer): + def __init__(self, + tcl_bs, + max_text_length, + max_text_nums, + pad_num, + eps=1e-6, + **kwargs): + super(PGLoss, self).__init__() + self.tcl_bs = tcl_bs + self.max_text_nums = max_text_nums + self.max_text_length = max_text_length + self.pad_num = pad_num + self.dice_loss = DiceLoss(eps=eps) + + def border_loss(self, f_border, l_border, l_score, l_mask): + l_border_split, l_border_norm = paddle.tensor.split( + l_border, num_or_sections=[4, 1], axis=1) + f_border_split = f_border + b, c, h, w = l_border_norm.shape + l_border_norm_split = paddle.expand( + x=l_border_norm, shape=[b, 4 * c, h, w]) + b, c, h, w = l_score.shape + l_border_score = paddle.expand(x=l_score, shape=[b, 4 * c, h, w]) + b, c, h, w = l_mask.shape + l_border_mask = paddle.expand(x=l_mask, shape=[b, 4 * c, h, w]) + border_diff = l_border_split - f_border_split + abs_border_diff = paddle.abs(border_diff) + border_sign = abs_border_diff < 1.0 + border_sign = paddle.cast(border_sign, dtype='float32') + border_sign.stop_gradient = True + border_in_loss = 0.5 * abs_border_diff * abs_border_diff * border_sign + \ + (abs_border_diff - 0.5) * (1.0 - border_sign) + border_out_loss = l_border_norm_split * border_in_loss + border_loss = paddle.sum(border_out_loss * l_border_score * l_border_mask) / \ + (paddle.sum(l_border_score * l_border_mask) + 1e-5) + return border_loss + + def direction_loss(self, f_direction, l_direction, l_score, l_mask): + l_direction_split, l_direction_norm = paddle.tensor.split( + l_direction, num_or_sections=[2, 1], axis=1) + f_direction_split = f_direction + b, c, h, w = l_direction_norm.shape + l_direction_norm_split = paddle.expand( + x=l_direction_norm, shape=[b, 2 * c, h, w]) + b, c, h, w = l_score.shape + l_direction_score = paddle.expand(x=l_score, shape=[b, 2 * c, h, w]) + b, c, h, w = l_mask.shape + l_direction_mask = paddle.expand(x=l_mask, shape=[b, 2 * c, h, w]) + direction_diff = l_direction_split - f_direction_split + abs_direction_diff = paddle.abs(direction_diff) + direction_sign = abs_direction_diff < 1.0 + direction_sign = paddle.cast(direction_sign, dtype='float32') + direction_sign.stop_gradient = True + direction_in_loss = 0.5 * abs_direction_diff * abs_direction_diff * direction_sign + \ + (abs_direction_diff - 0.5) * (1.0 - direction_sign) + direction_out_loss = l_direction_norm_split * direction_in_loss + direction_loss = paddle.sum(direction_out_loss * l_direction_score * l_direction_mask) / \ + (paddle.sum(l_direction_score * l_direction_mask) + 1e-5) + return direction_loss + + def ctcloss(self, f_char, tcl_pos, tcl_mask, tcl_label, label_t): + f_char = paddle.transpose(f_char, [0, 2, 3, 1]) + tcl_pos = paddle.reshape(tcl_pos, [-1, 3]) + tcl_pos = paddle.cast(tcl_pos, dtype=int) + f_tcl_char = paddle.gather_nd(f_char, tcl_pos) + f_tcl_char = paddle.reshape(f_tcl_char, + [-1, 64, 37]) # len(Lexicon_Table)+1 + f_tcl_char_fg, f_tcl_char_bg = paddle.split(f_tcl_char, [36, 1], axis=2) + f_tcl_char_bg = f_tcl_char_bg * tcl_mask + (1.0 - tcl_mask) * 20.0 + b, c, l = tcl_mask.shape + tcl_mask_fg = paddle.expand(x=tcl_mask, shape=[b, c, 36 * l]) + tcl_mask_fg.stop_gradient = True + f_tcl_char_fg = f_tcl_char_fg * tcl_mask_fg + (1.0 - tcl_mask_fg) * ( + -20.0) + f_tcl_char_mask = paddle.concat([f_tcl_char_fg, f_tcl_char_bg], axis=2) + f_tcl_char_ld = paddle.transpose(f_tcl_char_mask, (1, 0, 2)) + N, B, _ = f_tcl_char_ld.shape + input_lengths = paddle.to_tensor([N] * B, dtype='int64') + cost = paddle.nn.functional.ctc_loss( + log_probs=f_tcl_char_ld, + labels=tcl_label, + input_lengths=input_lengths, + label_lengths=label_t, + blank=self.pad_num, + reduction='none') + cost = cost.mean() + return cost + + def forward(self, predicts, labels): + images, tcl_maps, tcl_label_maps, border_maps \ + , direction_maps, training_masks, label_list, pos_list, pos_mask = labels + # for all the batch_size + pos_list, pos_mask, label_list, label_t = pre_process( + label_list, pos_list, pos_mask, self.max_text_length, + self.max_text_nums, self.pad_num, self.tcl_bs) + + f_score, f_border, f_direction, f_char = predicts['f_score'], predicts['f_border'], predicts['f_direction'], \ + predicts['f_char'] + score_loss = self.dice_loss(f_score, tcl_maps, training_masks) + border_loss = self.border_loss(f_border, border_maps, tcl_maps, + training_masks) + direction_loss = self.direction_loss(f_direction, direction_maps, + tcl_maps, training_masks) + ctc_loss = self.ctcloss(f_char, pos_list, pos_mask, label_list, label_t) + loss_all = score_loss + border_loss + direction_loss + 5 * ctc_loss + + losses = { + 'loss': loss_all, + "score_loss": score_loss, + "border_loss": border_loss, + "direction_loss": direction_loss, + "ctc_loss": ctc_loss + } + return losses diff --git a/ppocr/metrics/__init__.py b/ppocr/metrics/__init__.py index a0e7d912..f913010d 100644 --- a/ppocr/metrics/__init__.py +++ b/ppocr/metrics/__init__.py @@ -26,8 +26,9 @@ def build_metric(config): from .det_metric import DetMetric from .rec_metric import RecMetric from .cls_metric import ClsMetric + from .e2e_metric import E2EMetric - support_dict = ['DetMetric', 'RecMetric', 'ClsMetric'] + support_dict = ['DetMetric', 'RecMetric', 'ClsMetric', 'E2EMetric'] config = copy.deepcopy(config) module_name = config.pop('name') diff --git a/ppocr/metrics/e2e_metric.py b/ppocr/metrics/e2e_metric.py new file mode 100644 index 00000000..684d7742 --- /dev/null +++ b/ppocr/metrics/e2e_metric.py @@ -0,0 +1,81 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +__all__ = ['E2EMetric'] + +from ppocr.utils.e2e_metric.Deteval import get_socre, combine_results +from ppocr.utils.e2e_utils.extract_textpoint import get_dict + + +class E2EMetric(object): + def __init__(self, + character_dict_path, + main_indicator='f_score_e2e', + **kwargs): + self.label_list = get_dict(character_dict_path) + self.max_index = len(self.label_list) + self.main_indicator = main_indicator + self.reset() + + def __call__(self, preds, batch, **kwargs): + temp_gt_polyons_batch = batch[2] + temp_gt_strs_batch = batch[3] + ignore_tags_batch = batch[4] + gt_polyons_batch = [] + gt_strs_batch = [] + + temp_gt_polyons_batch = temp_gt_polyons_batch[0].tolist() + for temp_list in temp_gt_polyons_batch: + t = [] + for index in temp_list: + if index[0] != -1 and index[1] != -1: + t.append(index) + gt_polyons_batch.append(t) + + temp_gt_strs_batch = temp_gt_strs_batch[0].tolist() + for temp_list in temp_gt_strs_batch: + t = "" + for index in temp_list: + if index < self.max_index: + t += self.label_list[index] + gt_strs_batch.append(t) + + for pred, gt_polyons, gt_strs, ignore_tags in zip( + [preds], [gt_polyons_batch], [gt_strs_batch], ignore_tags_batch): + # prepare gt + gt_info_list = [{ + 'points': gt_polyon, + 'text': gt_str, + 'ignore': ignore_tag + } for gt_polyon, gt_str, ignore_tag in + zip(gt_polyons, gt_strs, ignore_tags)] + # prepare det + e2e_info_list = [{ + 'points': det_polyon, + 'text': pred_str + } for det_polyon, pred_str in zip(pred['points'], pred['strs'])] + result = get_socre(gt_info_list, e2e_info_list) + self.results.append(result) + + def get_metric(self): + metircs = combine_results(self.results) + self.reset() + return metircs + + def reset(self): + self.results = [] # clear results diff --git a/ppocr/metrics/eval_det_iou.py b/ppocr/metrics/eval_det_iou.py index a2a3f418..0e32b2d1 100644 --- a/ppocr/metrics/eval_det_iou.py +++ b/ppocr/metrics/eval_det_iou.py @@ -150,7 +150,7 @@ class DetectionIoUEvaluator(object): pairs.append({'gt': gtNum, 'det': detNum}) detMatchedNums.append(detNum) evaluationLog += "Match GT #" + \ - str(gtNum) + " with Det #" + str(detNum) + "\n" + str(gtNum) + " with Det #" + str(detNum) + "\n" numGtCare = (len(gtPols) - len(gtDontCarePolsNum)) numDetCare = (len(detPols) - len(detDontCarePolsNum)) @@ -162,7 +162,7 @@ class DetectionIoUEvaluator(object): precision = 0 if numDetCare == 0 else float(detMatched) / numDetCare hmean = 0 if (precision + recall) == 0 else 2.0 * \ - precision * recall / (precision + recall) + precision * recall / (precision + recall) matchedSum += detMatched numGlobalCareGt += numGtCare @@ -200,7 +200,8 @@ class DetectionIoUEvaluator(object): methodPrecision = 0 if numGlobalCareDet == 0 else float( matchedSum) / numGlobalCareDet methodHmean = 0 if methodRecall + methodPrecision == 0 else 2 * \ - methodRecall * methodPrecision / (methodRecall + methodPrecision) + methodRecall * methodPrecision / ( + methodRecall + methodPrecision) # print(methodRecall, methodPrecision, methodHmean) # sys.exit(-1) methodMetrics = { diff --git a/ppocr/modeling/backbones/__init__.py b/ppocr/modeling/backbones/__init__.py index 03c15508..fe2c9bc3 100755 --- a/ppocr/modeling/backbones/__init__.py +++ b/ppocr/modeling/backbones/__init__.py @@ -26,6 +26,9 @@ def build_backbone(config, model_type): from .rec_resnet_vd import ResNet from .rec_resnet_fpn import ResNetFPN support_dict = ['MobileNetV3', 'ResNet', 'ResNetFPN'] + elif model_type == 'e2e': + from .e2e_resnet_vd_pg import ResNet + support_dict = ['ResNet'] else: raise NotImplementedError diff --git a/ppocr/modeling/backbones/e2e_resnet_vd_pg.py b/ppocr/modeling/backbones/e2e_resnet_vd_pg.py new file mode 100644 index 00000000..97afd346 --- /dev/null +++ b/ppocr/modeling/backbones/e2e_resnet_vd_pg.py @@ -0,0 +1,265 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import paddle +from paddle import ParamAttr +import paddle.nn as nn +import paddle.nn.functional as F + +__all__ = ["ResNet"] + + +class ConvBNLayer(nn.Layer): + def __init__( + self, + in_channels, + out_channels, + kernel_size, + stride=1, + groups=1, + is_vd_mode=False, + act=None, + name=None, ): + super(ConvBNLayer, self).__init__() + + self.is_vd_mode = is_vd_mode + self._pool2d_avg = nn.AvgPool2D( + kernel_size=2, stride=2, padding=0, ceil_mode=True) + self._conv = nn.Conv2D( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=(kernel_size - 1) // 2, + groups=groups, + weight_attr=ParamAttr(name=name + "_weights"), + bias_attr=False) + if name == "conv1": + bn_name = "bn_" + name + else: + bn_name = "bn" + name[3:] + self._batch_norm = nn.BatchNorm( + out_channels, + act=act, + param_attr=ParamAttr(name=bn_name + '_scale'), + bias_attr=ParamAttr(bn_name + '_offset'), + moving_mean_name=bn_name + '_mean', + moving_variance_name=bn_name + '_variance') + + def forward(self, inputs): + y = self._conv(inputs) + y = self._batch_norm(y) + return y + + +class BottleneckBlock(nn.Layer): + def __init__(self, + in_channels, + out_channels, + stride, + shortcut=True, + if_first=False, + name=None): + super(BottleneckBlock, self).__init__() + + self.conv0 = ConvBNLayer( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=1, + act='relu', + name=name + "_branch2a") + self.conv1 = ConvBNLayer( + in_channels=out_channels, + out_channels=out_channels, + kernel_size=3, + stride=stride, + act='relu', + name=name + "_branch2b") + self.conv2 = ConvBNLayer( + in_channels=out_channels, + out_channels=out_channels * 4, + kernel_size=1, + act=None, + name=name + "_branch2c") + + if not shortcut: + self.short = ConvBNLayer( + in_channels=in_channels, + out_channels=out_channels * 4, + kernel_size=1, + stride=stride, + is_vd_mode=False if if_first else True, + name=name + "_branch1") + + self.shortcut = shortcut + + def forward(self, inputs): + y = self.conv0(inputs) + conv1 = self.conv1(y) + conv2 = self.conv2(conv1) + + if self.shortcut: + short = inputs + else: + short = self.short(inputs) + y = paddle.add(x=short, y=conv2) + y = F.relu(y) + return y + + +class BasicBlock(nn.Layer): + def __init__(self, + in_channels, + out_channels, + stride, + shortcut=True, + if_first=False, + name=None): + super(BasicBlock, self).__init__() + self.stride = stride + self.conv0 = ConvBNLayer( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=3, + stride=stride, + act='relu', + name=name + "_branch2a") + self.conv1 = ConvBNLayer( + in_channels=out_channels, + out_channels=out_channels, + kernel_size=3, + act=None, + name=name + "_branch2b") + + if not shortcut: + self.short = ConvBNLayer( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=1, + stride=1, + is_vd_mode=False if if_first else True, + name=name + "_branch1") + + self.shortcut = shortcut + + def forward(self, inputs): + y = self.conv0(inputs) + conv1 = self.conv1(y) + + if self.shortcut: + short = inputs + else: + short = self.short(inputs) + y = paddle.add(x=short, y=conv1) + y = F.relu(y) + return y + + +class ResNet(nn.Layer): + def __init__(self, in_channels=3, layers=50, **kwargs): + super(ResNet, self).__init__() + + self.layers = layers + supported_layers = [18, 34, 50, 101, 152, 200] + assert layers in supported_layers, \ + "supported layers are {} but input layer is {}".format( + supported_layers, layers) + + if layers == 18: + depth = [2, 2, 2, 2] + elif layers == 34 or layers == 50: + # depth = [3, 4, 6, 3] + depth = [3, 4, 6, 3, 3] + elif layers == 101: + depth = [3, 4, 23, 3] + elif layers == 152: + depth = [3, 8, 36, 3] + elif layers == 200: + depth = [3, 12, 48, 3] + num_channels = [64, 256, 512, 1024, + 2048] if layers >= 50 else [64, 64, 128, 256] + num_filters = [64, 128, 256, 512, 512] + + self.conv1_1 = ConvBNLayer( + in_channels=in_channels, + out_channels=64, + kernel_size=7, + stride=2, + act='relu', + name="conv1_1") + self.pool2d_max = nn.MaxPool2D(kernel_size=3, stride=2, padding=1) + + self.stages = [] + self.out_channels = [3, 64] + # num_filters = [64, 128, 256, 512, 512] + if layers >= 50: + for block in range(len(depth)): + block_list = [] + shortcut = False + for i in range(depth[block]): + if layers in [101, 152] and block == 2: + if i == 0: + conv_name = "res" + str(block + 2) + "a" + else: + conv_name = "res" + str(block + 2) + "b" + str(i) + else: + conv_name = "res" + str(block + 2) + chr(97 + i) + bottleneck_block = self.add_sublayer( + 'bb_%d_%d' % (block, i), + BottleneckBlock( + in_channels=num_channels[block] + if i == 0 else num_filters[block] * 4, + out_channels=num_filters[block], + stride=2 if i == 0 and block != 0 else 1, + shortcut=shortcut, + if_first=block == i == 0, + name=conv_name)) + shortcut = True + block_list.append(bottleneck_block) + self.out_channels.append(num_filters[block] * 4) + self.stages.append(nn.Sequential(*block_list)) + else: + for block in range(len(depth)): + block_list = [] + shortcut = False + for i in range(depth[block]): + conv_name = "res" + str(block + 2) + chr(97 + i) + basic_block = self.add_sublayer( + 'bb_%d_%d' % (block, i), + BasicBlock( + in_channels=num_channels[block] + if i == 0 else num_filters[block], + out_channels=num_filters[block], + stride=2 if i == 0 and block != 0 else 1, + shortcut=shortcut, + if_first=block == i == 0, + name=conv_name)) + shortcut = True + block_list.append(basic_block) + self.out_channels.append(num_filters[block]) + self.stages.append(nn.Sequential(*block_list)) + + def forward(self, inputs): + out = [inputs] + y = self.conv1_1(inputs) + out.append(y) + y = self.pool2d_max(y) + for block in self.stages: + y = block(y) + out.append(y) + return out diff --git a/ppocr/modeling/heads/__init__.py b/ppocr/modeling/heads/__init__.py index efe05718..4852c7f2 100755 --- a/ppocr/modeling/heads/__init__.py +++ b/ppocr/modeling/heads/__init__.py @@ -20,6 +20,7 @@ def build_head(config): from .det_db_head import DBHead from .det_east_head import EASTHead from .det_sast_head import SASTHead + from .e2e_pg_head import PGHead # rec head from .rec_ctc_head import CTCHead @@ -30,8 +31,8 @@ def build_head(config): from .cls_head import ClsHead support_dict = [ 'DBHead', 'EASTHead', 'SASTHead', 'CTCHead', 'ClsHead', 'AttentionHead', - 'SRNHead' - ] + 'SRNHead', 'PGHead'] + module_name = config.pop('name') assert module_name in support_dict, Exception('head only support {}'.format( diff --git a/ppocr/modeling/heads/e2e_pg_head.py b/ppocr/modeling/heads/e2e_pg_head.py new file mode 100644 index 00000000..0da9de75 --- /dev/null +++ b/ppocr/modeling/heads/e2e_pg_head.py @@ -0,0 +1,253 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import math +import paddle +from paddle import nn +import paddle.nn.functional as F +from paddle import ParamAttr + + +class ConvBNLayer(nn.Layer): + def __init__(self, + in_channels, + out_channels, + kernel_size, + stride, + padding, + groups=1, + if_act=True, + act=None, + name=None): + super(ConvBNLayer, self).__init__() + self.if_act = if_act + self.act = act + self.conv = nn.Conv2D( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=padding, + groups=groups, + weight_attr=ParamAttr(name=name + '_weights'), + bias_attr=False) + + self.bn = nn.BatchNorm( + num_channels=out_channels, + act=act, + param_attr=ParamAttr(name="bn_" + name + "_scale"), + bias_attr=ParamAttr(name="bn_" + name + "_offset"), + moving_mean_name="bn_" + name + "_mean", + moving_variance_name="bn_" + name + "_variance", + use_global_stats=False) + + def forward(self, x): + x = self.conv(x) + x = self.bn(x) + return x + + +class PGHead(nn.Layer): + """ + """ + + def __init__(self, in_channels, **kwargs): + super(PGHead, self).__init__() + self.conv_f_score1 = ConvBNLayer( + in_channels=in_channels, + out_channels=64, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_score{}".format(1)) + self.conv_f_score2 = ConvBNLayer( + in_channels=64, + out_channels=64, + kernel_size=3, + stride=1, + padding=1, + act='relu', + name="conv_f_score{}".format(2)) + self.conv_f_score3 = ConvBNLayer( + in_channels=64, + out_channels=128, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_score{}".format(3)) + + self.conv1 = nn.Conv2D( + in_channels=128, + out_channels=1, + kernel_size=3, + stride=1, + padding=1, + groups=1, + weight_attr=ParamAttr(name="conv_f_score{}".format(4)), + bias_attr=False) + + self.conv_f_boder1 = ConvBNLayer( + in_channels=in_channels, + out_channels=64, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_boder{}".format(1)) + self.conv_f_boder2 = ConvBNLayer( + in_channels=64, + out_channels=64, + kernel_size=3, + stride=1, + padding=1, + act='relu', + name="conv_f_boder{}".format(2)) + self.conv_f_boder3 = ConvBNLayer( + in_channels=64, + out_channels=128, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_boder{}".format(3)) + self.conv2 = nn.Conv2D( + in_channels=128, + out_channels=4, + kernel_size=3, + stride=1, + padding=1, + groups=1, + weight_attr=ParamAttr(name="conv_f_boder{}".format(4)), + bias_attr=False) + self.conv_f_char1 = ConvBNLayer( + in_channels=in_channels, + out_channels=128, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_char{}".format(1)) + self.conv_f_char2 = ConvBNLayer( + in_channels=128, + out_channels=128, + kernel_size=3, + stride=1, + padding=1, + act='relu', + name="conv_f_char{}".format(2)) + self.conv_f_char3 = ConvBNLayer( + in_channels=128, + out_channels=256, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_char{}".format(3)) + self.conv_f_char4 = ConvBNLayer( + in_channels=256, + out_channels=256, + kernel_size=3, + stride=1, + padding=1, + act='relu', + name="conv_f_char{}".format(4)) + self.conv_f_char5 = ConvBNLayer( + in_channels=256, + out_channels=256, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_char{}".format(5)) + self.conv3 = nn.Conv2D( + in_channels=256, + out_channels=37, + kernel_size=3, + stride=1, + padding=1, + groups=1, + weight_attr=ParamAttr(name="conv_f_char{}".format(6)), + bias_attr=False) + + self.conv_f_direc1 = ConvBNLayer( + in_channels=in_channels, + out_channels=64, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_direc{}".format(1)) + self.conv_f_direc2 = ConvBNLayer( + in_channels=64, + out_channels=64, + kernel_size=3, + stride=1, + padding=1, + act='relu', + name="conv_f_direc{}".format(2)) + self.conv_f_direc3 = ConvBNLayer( + in_channels=64, + out_channels=128, + kernel_size=1, + stride=1, + padding=0, + act='relu', + name="conv_f_direc{}".format(3)) + self.conv4 = nn.Conv2D( + in_channels=128, + out_channels=2, + kernel_size=3, + stride=1, + padding=1, + groups=1, + weight_attr=ParamAttr(name="conv_f_direc{}".format(4)), + bias_attr=False) + + def forward(self, x): + f_score = self.conv_f_score1(x) + f_score = self.conv_f_score2(f_score) + f_score = self.conv_f_score3(f_score) + f_score = self.conv1(f_score) + f_score = F.sigmoid(f_score) + + # f_border + f_border = self.conv_f_boder1(x) + f_border = self.conv_f_boder2(f_border) + f_border = self.conv_f_boder3(f_border) + f_border = self.conv2(f_border) + + f_char = self.conv_f_char1(x) + f_char = self.conv_f_char2(f_char) + f_char = self.conv_f_char3(f_char) + f_char = self.conv_f_char4(f_char) + f_char = self.conv_f_char5(f_char) + f_char = self.conv3(f_char) + + f_direction = self.conv_f_direc1(x) + f_direction = self.conv_f_direc2(f_direction) + f_direction = self.conv_f_direc3(f_direction) + f_direction = self.conv4(f_direction) + + predicts = {} + predicts['f_score'] = f_score + predicts['f_border'] = f_border + predicts['f_char'] = f_char + predicts['f_direction'] = f_direction + return predicts diff --git a/ppocr/modeling/heads/rec_att_head.py b/ppocr/modeling/heads/rec_att_head.py index a7cfe128..4286d769 100644 --- a/ppocr/modeling/heads/rec_att_head.py +++ b/ppocr/modeling/heads/rec_att_head.py @@ -38,7 +38,7 @@ class AttentionHead(nn.Layer): return input_ont_hot def forward(self, inputs, targets=None, batch_max_length=25): - batch_size = inputs.shape[0] + batch_size = paddle.shape(inputs)[0] num_steps = batch_max_length hidden = paddle.zeros((batch_size, self.hidden_size)) @@ -57,6 +57,9 @@ class AttentionHead(nn.Layer): else: targets = paddle.zeros(shape=[batch_size], dtype="int32") probs = None + char_onehots = None + outputs = None + alpha = None for i in range(num_steps): char_onehots = self._char_to_onehot( diff --git a/ppocr/modeling/necks/__init__.py b/ppocr/modeling/necks/__init__.py index 405e062b..37a5cf78 100644 --- a/ppocr/modeling/necks/__init__.py +++ b/ppocr/modeling/necks/__init__.py @@ -14,12 +14,14 @@ __all__ = ['build_neck'] + def build_neck(config): from .db_fpn import DBFPN from .east_fpn import EASTFPN from .sast_fpn import SASTFPN from .rnn import SequenceEncoder - support_dict = ['DBFPN', 'EASTFPN', 'SASTFPN', 'SequenceEncoder'] + from .pg_fpn import PGFPN + support_dict = ['DBFPN', 'EASTFPN', 'SASTFPN', 'SequenceEncoder', 'PGFPN'] module_name = config.pop('name') assert module_name in support_dict, Exception('neck only support {}'.format( diff --git a/ppocr/modeling/necks/pg_fpn.py b/ppocr/modeling/necks/pg_fpn.py new file mode 100644 index 00000000..3f64539f --- /dev/null +++ b/ppocr/modeling/necks/pg_fpn.py @@ -0,0 +1,314 @@ +# copyright (c) 2021 PaddlePaddle Authors. All Rights Reserve. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import paddle +from paddle import nn +import paddle.nn.functional as F +from paddle import ParamAttr + + +class ConvBNLayer(nn.Layer): + def __init__(self, + in_channels, + out_channels, + kernel_size, + stride=1, + groups=1, + is_vd_mode=False, + act=None, + name=None): + super(ConvBNLayer, self).__init__() + + self.is_vd_mode = is_vd_mode + self._pool2d_avg = nn.AvgPool2D( + kernel_size=2, stride=2, padding=0, ceil_mode=True) + self._conv = nn.Conv2D( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=(kernel_size - 1) // 2, + groups=groups, + weight_attr=ParamAttr(name=name + "_weights"), + bias_attr=False) + if name == "conv1": + bn_name = "bn_" + name + else: + bn_name = "bn" + name[3:] + self._batch_norm = nn.BatchNorm( + out_channels, + act=act, + param_attr=ParamAttr(name=bn_name + '_scale'), + bias_attr=ParamAttr(bn_name + '_offset'), + moving_mean_name=bn_name + '_mean', + moving_variance_name=bn_name + '_variance', + use_global_stats=False) + + def forward(self, inputs): + y = self._conv(inputs) + y = self._batch_norm(y) + return y + + +class DeConvBNLayer(nn.Layer): + def __init__(self, + in_channels, + out_channels, + kernel_size=4, + stride=2, + padding=1, + groups=1, + if_act=True, + act=None, + name=None): + super(DeConvBNLayer, self).__init__() + + self.if_act = if_act + self.act = act + self.deconv = nn.Conv2DTranspose( + in_channels=in_channels, + out_channels=out_channels, + kernel_size=kernel_size, + stride=stride, + padding=padding, + groups=groups, + weight_attr=ParamAttr(name=name + '_weights'), + bias_attr=False) + self.bn = nn.BatchNorm( + num_channels=out_channels, + act=act, + param_attr=ParamAttr(name="bn_" + name + "_scale"), + bias_attr=ParamAttr(name="bn_" + name + "_offset"), + moving_mean_name="bn_" + name + "_mean", + moving_variance_name="bn_" + name + "_variance", + use_global_stats=False) + + def forward(self, x): + x = self.deconv(x) + x = self.bn(x) + return x + + +class PGFPN(nn.Layer): + def __init__(self, in_channels, **kwargs): + super(PGFPN, self).__init__() + num_inputs = [2048, 2048, 1024, 512, 256] + num_outputs = [256, 256, 192, 192, 128] + self.out_channels = 128 + self.conv_bn_layer_1 = ConvBNLayer( + in_channels=3, + out_channels=32, + kernel_size=3, + stride=1, + act=None, + name='FPN_d1') + self.conv_bn_layer_2 = ConvBNLayer( + in_channels=64, + out_channels=64, + kernel_size=3, + stride=1, + act=None, + name='FPN_d2') + self.conv_bn_layer_3 = ConvBNLayer( + in_channels=256, + out_channels=128, + kernel_size=3, + stride=1, + act=None, + name='FPN_d3') + self.conv_bn_layer_4 = ConvBNLayer( + in_channels=32, + out_channels=64, + kernel_size=3, + stride=2, + act=None, + name='FPN_d4') + self.conv_bn_layer_5 = ConvBNLayer( + in_channels=64, + out_channels=64, + kernel_size=3, + stride=1, + act='relu', + name='FPN_d5') + self.conv_bn_layer_6 = ConvBNLayer( + in_channels=64, + out_channels=128, + kernel_size=3, + stride=2, + act=None, + name='FPN_d6') + self.conv_bn_layer_7 = ConvBNLayer( + in_channels=128, + out_channels=128, + kernel_size=3, + stride=1, + act='relu', + name='FPN_d7') + self.conv_bn_layer_8 = ConvBNLayer( + in_channels=128, + out_channels=128, + kernel_size=1, + stride=1, + act=None, + name='FPN_d8') + + self.conv_h0 = ConvBNLayer( + in_channels=num_inputs[0], + out_channels=num_outputs[0], + kernel_size=1, + stride=1, + act=None, + name="conv_h{}".format(0)) + self.conv_h1 = ConvBNLayer( + in_channels=num_inputs[1], + out_channels=num_outputs[1], + kernel_size=1, + stride=1, + act=None, + name="conv_h{}".format(1)) + self.conv_h2 = ConvBNLayer( + in_channels=num_inputs[2], + out_channels=num_outputs[2], + kernel_size=1, + stride=1, + act=None, + name="conv_h{}".format(2)) + self.conv_h3 = ConvBNLayer( + in_channels=num_inputs[3], + out_channels=num_outputs[3], + kernel_size=1, + stride=1, + act=None, + name="conv_h{}".format(3)) + self.conv_h4 = ConvBNLayer( + in_channels=num_inputs[4], + out_channels=num_outputs[4], + kernel_size=1, + stride=1, + act=None, + name="conv_h{}".format(4)) + + self.dconv0 = DeConvBNLayer( + in_channels=num_outputs[0], + out_channels=num_outputs[0 + 1], + name="dconv_{}".format(0)) + self.dconv1 = DeConvBNLayer( + in_channels=num_outputs[1], + out_channels=num_outputs[1 + 1], + act=None, + name="dconv_{}".format(1)) + self.dconv2 = DeConvBNLayer( + in_channels=num_outputs[2], + out_channels=num_outputs[2 + 1], + act=None, + name="dconv_{}".format(2)) + self.dconv3 = DeConvBNLayer( + in_channels=num_outputs[3], + out_channels=num_outputs[3 + 1], + act=None, + name="dconv_{}".format(3)) + self.conv_g1 = ConvBNLayer( + in_channels=num_outputs[1], + out_channels=num_outputs[1], + kernel_size=3, + stride=1, + act='relu', + name="conv_g{}".format(1)) + self.conv_g2 = ConvBNLayer( + in_channels=num_outputs[2], + out_channels=num_outputs[2], + kernel_size=3, + stride=1, + act='relu', + name="conv_g{}".format(2)) + self.conv_g3 = ConvBNLayer( + in_channels=num_outputs[3], + out_channels=num_outputs[3], + kernel_size=3, + stride=1, + act='relu', + name="conv_g{}".format(3)) + self.conv_g4 = ConvBNLayer( + in_channels=num_outputs[4], + out_channels=num_outputs[4], + kernel_size=3, + stride=1, + act='relu', + name="conv_g{}".format(4)) + self.convf = ConvBNLayer( + in_channels=num_outputs[4], + out_channels=num_outputs[4], + kernel_size=1, + stride=1, + act=None, + name="conv_f{}".format(4)) + + def forward(self, x): + c0, c1, c2, c3, c4, c5, c6 = x + # FPN_Down_Fusion + f = [c0, c1, c2] + g = [None, None, None] + h = [None, None, None] + h[0] = self.conv_bn_layer_1(f[0]) + h[1] = self.conv_bn_layer_2(f[1]) + h[2] = self.conv_bn_layer_3(f[2]) + + g[0] = self.conv_bn_layer_4(h[0]) + g[1] = paddle.add(g[0], h[1]) + g[1] = F.relu(g[1]) + g[1] = self.conv_bn_layer_5(g[1]) + g[1] = self.conv_bn_layer_6(g[1]) + + g[2] = paddle.add(g[1], h[2]) + g[2] = F.relu(g[2]) + g[2] = self.conv_bn_layer_7(g[2]) + f_down = self.conv_bn_layer_8(g[2]) + + # FPN UP Fusion + f1 = [c6, c5, c4, c3, c2] + g = [None, None, None, None, None] + h = [None, None, None, None, None] + h[0] = self.conv_h0(f1[0]) + h[1] = self.conv_h1(f1[1]) + h[2] = self.conv_h2(f1[2]) + h[3] = self.conv_h3(f1[3]) + h[4] = self.conv_h4(f1[4]) + + g[0] = self.dconv0(h[0]) + g[1] = paddle.add(g[0], h[1]) + g[1] = F.relu(g[1]) + g[1] = self.conv_g1(g[1]) + g[1] = self.dconv1(g[1]) + + g[2] = paddle.add(g[1], h[2]) + g[2] = F.relu(g[2]) + g[2] = self.conv_g2(g[2]) + g[2] = self.dconv2(g[2]) + + g[3] = paddle.add(g[2], h[3]) + g[3] = F.relu(g[3]) + g[3] = self.conv_g3(g[3]) + g[3] = self.dconv3(g[3]) + + g[4] = paddle.add(x=g[3], y=h[4]) + g[4] = F.relu(g[4]) + g[4] = self.conv_g4(g[4]) + f_up = self.convf(g[4]) + f_common = paddle.add(f_down, f_up) + f_common = F.relu(f_common) + return f_common diff --git a/ppocr/postprocess/__init__.py b/ppocr/postprocess/__init__.py index 0156e438..042654a1 100644 --- a/ppocr/postprocess/__init__.py +++ b/ppocr/postprocess/__init__.py @@ -28,10 +28,11 @@ def build_post_process(config, global_config=None): from .sast_postprocess import SASTPostProcess from .rec_postprocess import CTCLabelDecode, AttnLabelDecode, SRNLabelDecode from .cls_postprocess import ClsPostProcess + from .pg_postprocess import PGPostProcess support_dict = [ 'DBPostProcess', 'EASTPostProcess', 'SASTPostProcess', 'CTCLabelDecode', - 'AttnLabelDecode', 'ClsPostProcess', 'SRNLabelDecode' + 'AttnLabelDecode', 'ClsPostProcess', 'SRNLabelDecode', 'PGPostProcess' ] config = copy.deepcopy(config) diff --git a/ppocr/postprocess/pg_postprocess.py b/ppocr/postprocess/pg_postprocess.py new file mode 100644 index 00000000..d9c0048f --- /dev/null +++ b/ppocr/postprocess/pg_postprocess.py @@ -0,0 +1,155 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import os +import sys + +__dir__ = os.path.dirname(__file__) +sys.path.append(__dir__) +sys.path.append(os.path.join(__dir__, '..')) + +from ppocr.utils.e2e_utils.extract_textpoint import * +from ppocr.utils.e2e_utils.visual import * +import paddle + + +class PGPostProcess(object): + """ + The post process for PGNet. + """ + + def __init__(self, character_dict_path, valid_set, score_thresh, **kwargs): + self.Lexicon_Table = get_dict(character_dict_path) + self.valid_set = valid_set + self.score_thresh = score_thresh + + # c++ la-nms is faster, but only support python 3.5 + self.is_python35 = False + if sys.version_info.major == 3 and sys.version_info.minor == 5: + self.is_python35 = True + + def __call__(self, outs_dict, shape_list): + p_score = outs_dict['f_score'] + p_border = outs_dict['f_border'] + p_char = outs_dict['f_char'] + p_direction = outs_dict['f_direction'] + if isinstance(p_score, paddle.Tensor): + p_score = p_score[0].numpy() + p_border = p_border[0].numpy() + p_direction = p_direction[0].numpy() + p_char = p_char[0].numpy() + else: + p_score = p_score[0] + p_border = p_border[0] + p_direction = p_direction[0] + p_char = p_char[0] + src_h, src_w, ratio_h, ratio_w = shape_list[0] + is_curved = self.valid_set == "totaltext" + instance_yxs_list = generate_pivot_list( + p_score, + p_char, + p_direction, + score_thresh=self.score_thresh, + is_backbone=True, + is_curved=is_curved) + p_char = paddle.to_tensor(np.expand_dims(p_char, axis=0)) + char_seq_idx_set = [] + for i in range(len(instance_yxs_list)): + gather_info_lod = paddle.to_tensor(instance_yxs_list[i]) + f_char_map = paddle.transpose(p_char, [0, 2, 3, 1]) + feature_seq = paddle.gather_nd(f_char_map, gather_info_lod) + feature_seq = np.expand_dims(feature_seq.numpy(), axis=0) + feature_len = [len(feature_seq[0])] + featyre_seq = paddle.to_tensor(feature_seq) + feature_len = np.array([feature_len]).astype(np.int64) + length = paddle.to_tensor(feature_len) + seq_pred = paddle.fluid.layers.ctc_greedy_decoder( + input=featyre_seq, blank=36, input_length=length) + seq_pred_str = seq_pred[0].numpy().tolist()[0] + seq_len = seq_pred[1].numpy()[0][0] + temp_t = [] + for c in seq_pred_str[:seq_len]: + temp_t.append(c) + char_seq_idx_set.append(temp_t) + seq_strs = [] + for char_idx_set in char_seq_idx_set: + pr_str = ''.join([self.Lexicon_Table[pos] for pos in char_idx_set]) + seq_strs.append(pr_str) + poly_list = [] + keep_str_list = [] + all_point_list = [] + all_point_pair_list = [] + for yx_center_line, keep_str in zip(instance_yxs_list, seq_strs): + if len(yx_center_line) == 1: + yx_center_line.append(yx_center_line[-1]) + + offset_expand = 1.0 + if self.valid_set == 'totaltext': + offset_expand = 1.2 + + point_pair_list = [] + for batch_id, y, x in yx_center_line: + offset = p_border[:, y, x].reshape(2, 2) + if offset_expand != 1.0: + offset_length = np.linalg.norm( + offset, axis=1, keepdims=True) + expand_length = np.clip( + offset_length * (offset_expand - 1), + a_min=0.5, + a_max=3.0) + offset_detal = offset / offset_length * expand_length + offset = offset + offset_detal + ori_yx = np.array([y, x], dtype=np.float32) + point_pair = (ori_yx + offset)[:, ::-1] * 4.0 / np.array( + [ratio_w, ratio_h]).reshape(-1, 2) + point_pair_list.append(point_pair) + + all_point_list.append([ + int(round(x * 4.0 / ratio_w)), + int(round(y * 4.0 / ratio_h)) + ]) + all_point_pair_list.append(point_pair.round().astype(np.int32) + .tolist()) + + detected_poly, pair_length_info = point_pair2poly(point_pair_list) + detected_poly = expand_poly_along_width( + detected_poly, shrink_ratio_of_width=0.2) + detected_poly[:, 0] = np.clip( + detected_poly[:, 0], a_min=0, a_max=src_w) + detected_poly[:, 1] = np.clip( + detected_poly[:, 1], a_min=0, a_max=src_h) + + if len(keep_str) < 2: + continue + + keep_str_list.append(keep_str) + if self.valid_set == 'partvgg': + middle_point = len(detected_poly) // 2 + detected_poly = detected_poly[ + [0, middle_point - 1, middle_point, -1], :] + poly_list.append(detected_poly) + elif self.valid_set == 'totaltext': + poly_list.append(detected_poly) + else: + print('--> Not supported format.') + exit(-1) + data = { + 'points': poly_list, + 'strs': keep_str_list, + } + return data diff --git a/ppocr/postprocess/sast_postprocess.py b/ppocr/postprocess/sast_postprocess.py index f011e7e5..bee75c05 100755 --- a/ppocr/postprocess/sast_postprocess.py +++ b/ppocr/postprocess/sast_postprocess.py @@ -18,6 +18,7 @@ from __future__ import print_function import os import sys + __dir__ = os.path.dirname(__file__) sys.path.append(__dir__) sys.path.append(os.path.join(__dir__, '..')) @@ -49,12 +50,12 @@ class SASTPostProcess(object): self.shrink_ratio_of_width = shrink_ratio_of_width self.expand_scale = expand_scale self.tcl_map_thresh = tcl_map_thresh - + # c++ la-nms is faster, but only support python 3.5 self.is_python35 = False if sys.version_info.major == 3 and sys.version_info.minor == 5: self.is_python35 = True - + def point_pair2poly(self, point_pair_list): """ Transfer vertical point_pairs into poly point in clockwise. @@ -66,31 +67,42 @@ class SASTPostProcess(object): point_list[idx] = point_pair[0] point_list[point_num - 1 - idx] = point_pair[1] return np.array(point_list).reshape(-1, 2) - - def shrink_quad_along_width(self, quad, begin_width_ratio=0., end_width_ratio=1.): + + def shrink_quad_along_width(self, + quad, + begin_width_ratio=0., + end_width_ratio=1.): """ Generate shrink_quad_along_width. """ - ratio_pair = np.array([[begin_width_ratio], [end_width_ratio]], dtype=np.float32) + ratio_pair = np.array( + [[begin_width_ratio], [end_width_ratio]], dtype=np.float32) p0_1 = quad[0] + (quad[1] - quad[0]) * ratio_pair p3_2 = quad[3] + (quad[2] - quad[3]) * ratio_pair return np.array([p0_1[0], p0_1[1], p3_2[1], p3_2[0]]) - + def expand_poly_along_width(self, poly, shrink_ratio_of_width=0.3): """ expand poly along width. """ point_num = poly.shape[0] - left_quad = np.array([poly[0], poly[1], poly[-2], poly[-1]], dtype=np.float32) + left_quad = np.array( + [poly[0], poly[1], poly[-2], poly[-1]], dtype=np.float32) left_ratio = -shrink_ratio_of_width * np.linalg.norm(left_quad[0] - left_quad[3]) / \ - (np.linalg.norm(left_quad[0] - left_quad[1]) + 1e-6) - left_quad_expand = self.shrink_quad_along_width(left_quad, left_ratio, 1.0) - right_quad = np.array([poly[point_num // 2 - 2], poly[point_num // 2 - 1], - poly[point_num // 2], poly[point_num // 2 + 1]], dtype=np.float32) + (np.linalg.norm(left_quad[0] - left_quad[1]) + 1e-6) + left_quad_expand = self.shrink_quad_along_width(left_quad, left_ratio, + 1.0) + right_quad = np.array( + [ + poly[point_num // 2 - 2], poly[point_num // 2 - 1], + poly[point_num // 2], poly[point_num // 2 + 1] + ], + dtype=np.float32) right_ratio = 1.0 + \ - shrink_ratio_of_width * np.linalg.norm(right_quad[0] - right_quad[3]) / \ - (np.linalg.norm(right_quad[0] - right_quad[1]) + 1e-6) - right_quad_expand = self.shrink_quad_along_width(right_quad, 0.0, right_ratio) + shrink_ratio_of_width * np.linalg.norm(right_quad[0] - right_quad[3]) / \ + (np.linalg.norm(right_quad[0] - right_quad[1]) + 1e-6) + right_quad_expand = self.shrink_quad_along_width(right_quad, 0.0, + right_ratio) poly[0] = left_quad_expand[0] poly[-1] = left_quad_expand[-1] poly[point_num // 2 - 1] = right_quad_expand[1] @@ -100,7 +112,7 @@ class SASTPostProcess(object): def restore_quad(self, tcl_map, tcl_map_thresh, tvo_map): """Restore quad.""" xy_text = np.argwhere(tcl_map[:, :, 0] > tcl_map_thresh) - xy_text = xy_text[:, ::-1] # (n, 2) + xy_text = xy_text[:, ::-1] # (n, 2) # Sort the text boxes via the y axis xy_text = xy_text[np.argsort(xy_text[:, 1])] @@ -112,7 +124,7 @@ class SASTPostProcess(object): point_num = int(tvo_map.shape[-1] / 2) assert point_num == 4 tvo_map = tvo_map[xy_text[:, 1], xy_text[:, 0], :] - xy_text_tile = np.tile(xy_text, (1, point_num)) # (n, point_num * 2) + xy_text_tile = np.tile(xy_text, (1, point_num)) # (n, point_num * 2) quads = xy_text_tile - tvo_map return scores, quads, xy_text @@ -121,14 +133,12 @@ class SASTPostProcess(object): """ compute area of a quad. """ - edge = [ - (quad[1][0] - quad[0][0]) * (quad[1][1] + quad[0][1]), - (quad[2][0] - quad[1][0]) * (quad[2][1] + quad[1][1]), - (quad[3][0] - quad[2][0]) * (quad[3][1] + quad[2][1]), - (quad[0][0] - quad[3][0]) * (quad[0][1] + quad[3][1]) - ] + edge = [(quad[1][0] - quad[0][0]) * (quad[1][1] + quad[0][1]), + (quad[2][0] - quad[1][0]) * (quad[2][1] + quad[1][1]), + (quad[3][0] - quad[2][0]) * (quad[3][1] + quad[2][1]), + (quad[0][0] - quad[3][0]) * (quad[0][1] + quad[3][1])] return np.sum(edge) / 2. - + def nms(self, dets): if self.is_python35: import lanms @@ -141,7 +151,7 @@ class SASTPostProcess(object): """ Cluster pixels in tcl_map based on quads. """ - instance_count = quads.shape[0] + 1 # contain background + instance_count = quads.shape[0] + 1 # contain background instance_label_map = np.zeros(tcl_map.shape[:2], dtype=np.int32) if instance_count == 1: return instance_count, instance_label_map @@ -149,18 +159,19 @@ class SASTPostProcess(object): # predict text center xy_text = np.argwhere(tcl_map[:, :, 0] > tcl_map_thresh) n = xy_text.shape[0] - xy_text = xy_text[:, ::-1] # (n, 2) - tco = tco_map[xy_text[:, 1], xy_text[:, 0], :] # (n, 2) + xy_text = xy_text[:, ::-1] # (n, 2) + tco = tco_map[xy_text[:, 1], xy_text[:, 0], :] # (n, 2) pred_tc = xy_text - tco - + # get gt text center m = quads.shape[0] - gt_tc = np.mean(quads, axis=1) # (m, 2) + gt_tc = np.mean(quads, axis=1) # (m, 2) - pred_tc_tile = np.tile(pred_tc[:, np.newaxis, :], (1, m, 1)) # (n, m, 2) - gt_tc_tile = np.tile(gt_tc[np.newaxis, :, :], (n, 1, 1)) # (n, m, 2) - dist_mat = np.linalg.norm(pred_tc_tile - gt_tc_tile, axis=2) # (n, m) - xy_text_assign = np.argmin(dist_mat, axis=1) + 1 # (n,) + pred_tc_tile = np.tile(pred_tc[:, np.newaxis, :], + (1, m, 1)) # (n, m, 2) + gt_tc_tile = np.tile(gt_tc[np.newaxis, :, :], (n, 1, 1)) # (n, m, 2) + dist_mat = np.linalg.norm(pred_tc_tile - gt_tc_tile, axis=2) # (n, m) + xy_text_assign = np.argmin(dist_mat, axis=1) + 1 # (n,) instance_label_map[xy_text[:, 1], xy_text[:, 0]] = xy_text_assign return instance_count, instance_label_map @@ -169,26 +180,47 @@ class SASTPostProcess(object): """ Estimate sample points number. """ - eh = (np.linalg.norm(quad[0] - quad[3]) + np.linalg.norm(quad[1] - quad[2])) / 2.0 - ew = (np.linalg.norm(quad[0] - quad[1]) + np.linalg.norm(quad[2] - quad[3])) / 2.0 + eh = (np.linalg.norm(quad[0] - quad[3]) + + np.linalg.norm(quad[1] - quad[2])) / 2.0 + ew = (np.linalg.norm(quad[0] - quad[1]) + + np.linalg.norm(quad[2] - quad[3])) / 2.0 dense_sample_pts_num = max(2, int(ew)) - dense_xy_center_line = xy_text[np.linspace(0, xy_text.shape[0] - 1, dense_sample_pts_num, - endpoint=True, dtype=np.float32).astype(np.int32)] + dense_xy_center_line = xy_text[np.linspace( + 0, + xy_text.shape[0] - 1, + dense_sample_pts_num, + endpoint=True, + dtype=np.float32).astype(np.int32)] - dense_xy_center_line_diff = dense_xy_center_line[1:] - dense_xy_center_line[:-1] - estimate_arc_len = np.sum(np.linalg.norm(dense_xy_center_line_diff, axis=1)) + dense_xy_center_line_diff = dense_xy_center_line[ + 1:] - dense_xy_center_line[:-1] + estimate_arc_len = np.sum( + np.linalg.norm( + dense_xy_center_line_diff, axis=1)) sample_pts_num = max(2, int(estimate_arc_len / eh)) return sample_pts_num - def detect_sast(self, tcl_map, tvo_map, tbo_map, tco_map, ratio_w, ratio_h, src_w, src_h, - shrink_ratio_of_width=0.3, tcl_map_thresh=0.5, offset_expand=1.0, out_strid=4.0): + def detect_sast(self, + tcl_map, + tvo_map, + tbo_map, + tco_map, + ratio_w, + ratio_h, + src_w, + src_h, + shrink_ratio_of_width=0.3, + tcl_map_thresh=0.5, + offset_expand=1.0, + out_strid=4.0): """ first resize the tcl_map, tvo_map and tbo_map to the input_size, then restore the polys """ # restore quad - scores, quads, xy_text = self.restore_quad(tcl_map, tcl_map_thresh, tvo_map) + scores, quads, xy_text = self.restore_quad(tcl_map, tcl_map_thresh, + tvo_map) dets = np.hstack((quads, scores)).astype(np.float32, copy=False) dets = self.nms(dets) if dets.shape[0] == 0: @@ -202,7 +234,8 @@ class SASTPostProcess(object): # instance segmentation # instance_count, instance_label_map = cv2.connectedComponents(tcl_map.astype(np.uint8), connectivity=8) - instance_count, instance_label_map = self.cluster_by_quads_tco(tcl_map, tcl_map_thresh, quads, tco_map) + instance_count, instance_label_map = self.cluster_by_quads_tco( + tcl_map, tcl_map_thresh, quads, tco_map) # restore single poly with tcl instance. poly_list = [] @@ -212,10 +245,10 @@ class SASTPostProcess(object): q_area = quad_areas[instance_idx - 1] if q_area < 5: continue - + # - len1 = float(np.linalg.norm(quad[0] -quad[1])) - len2 = float(np.linalg.norm(quad[1] -quad[2])) + len1 = float(np.linalg.norm(quad[0] - quad[1])) + len2 = float(np.linalg.norm(quad[1] - quad[2])) min_len = min(len1, len2) if min_len < 3: continue @@ -225,16 +258,18 @@ class SASTPostProcess(object): continue # filter low confidence instance - xy_text_scores = tcl_map[xy_text[:, 1], xy_text[:, 0], 0] + xy_text_scores = tcl_map[xy_text[:, 1], xy_text[:, 0], 0] if np.sum(xy_text_scores) / quad_areas[instance_idx - 1] < 0.1: - # if np.sum(xy_text_scores) / quad_areas[instance_idx - 1] < 0.05: + # if np.sum(xy_text_scores) / quad_areas[instance_idx - 1] < 0.05: continue # sort xy_text - left_center_pt = np.array([[(quad[0, 0] + quad[-1, 0]) / 2.0, - (quad[0, 1] + quad[-1, 1]) / 2.0]]) # (1, 2) - right_center_pt = np.array([[(quad[1, 0] + quad[2, 0]) / 2.0, - (quad[1, 1] + quad[2, 1]) / 2.0]]) # (1, 2) + left_center_pt = np.array( + [[(quad[0, 0] + quad[-1, 0]) / 2.0, + (quad[0, 1] + quad[-1, 1]) / 2.0]]) # (1, 2) + right_center_pt = np.array( + [[(quad[1, 0] + quad[2, 0]) / 2.0, + (quad[1, 1] + quad[2, 1]) / 2.0]]) # (1, 2) proj_unit_vec = (right_center_pt - left_center_pt) / \ (np.linalg.norm(right_center_pt - left_center_pt) + 1e-6) proj_value = np.sum(xy_text * proj_unit_vec, axis=1) @@ -245,33 +280,45 @@ class SASTPostProcess(object): sample_pts_num = self.estimate_sample_pts_num(quad, xy_text) else: sample_pts_num = self.sample_pts_num - xy_center_line = xy_text[np.linspace(0, xy_text.shape[0] - 1, sample_pts_num, - endpoint=True, dtype=np.float32).astype(np.int32)] + xy_center_line = xy_text[np.linspace( + 0, + xy_text.shape[0] - 1, + sample_pts_num, + endpoint=True, + dtype=np.float32).astype(np.int32)] point_pair_list = [] for x, y in xy_center_line: # get corresponding offset offset = tbo_map[y, x, :].reshape(2, 2) if offset_expand != 1.0: - offset_length = np.linalg.norm(offset, axis=1, keepdims=True) - expand_length = np.clip(offset_length * (offset_expand - 1), a_min=0.5, a_max=3.0) + offset_length = np.linalg.norm( + offset, axis=1, keepdims=True) + expand_length = np.clip( + offset_length * (offset_expand - 1), + a_min=0.5, + a_max=3.0) offset_detal = offset / offset_length * expand_length - offset = offset + offset_detal - # original point + offset = offset + offset_detal + # original point ori_yx = np.array([y, x], dtype=np.float32) - point_pair = (ori_yx + offset)[:, ::-1]* out_strid / np.array([ratio_w, ratio_h]).reshape(-1, 2) + point_pair = (ori_yx + offset)[:, ::-1] * out_strid / np.array( + [ratio_w, ratio_h]).reshape(-1, 2) point_pair_list.append(point_pair) # ndarry: (x, 2), expand poly along width detected_poly = self.point_pair2poly(point_pair_list) - detected_poly = self.expand_poly_along_width(detected_poly, shrink_ratio_of_width) - detected_poly[:, 0] = np.clip(detected_poly[:, 0], a_min=0, a_max=src_w) - detected_poly[:, 1] = np.clip(detected_poly[:, 1], a_min=0, a_max=src_h) + detected_poly = self.expand_poly_along_width(detected_poly, + shrink_ratio_of_width) + detected_poly[:, 0] = np.clip( + detected_poly[:, 0], a_min=0, a_max=src_w) + detected_poly[:, 1] = np.clip( + detected_poly[:, 1], a_min=0, a_max=src_h) poly_list.append(detected_poly) return poly_list - def __call__(self, outs_dict, shape_list): + def __call__(self, outs_dict, shape_list): score_list = outs_dict['f_score'] border_list = outs_dict['f_border'] tvo_list = outs_dict['f_tvo'] @@ -281,20 +328,28 @@ class SASTPostProcess(object): border_list = border_list.numpy() tvo_list = tvo_list.numpy() tco_list = tco_list.numpy() - + img_num = len(shape_list) poly_lists = [] for ino in range(img_num): - p_score = score_list[ino].transpose((1,2,0)) - p_border = border_list[ino].transpose((1,2,0)) - p_tvo = tvo_list[ino].transpose((1,2,0)) - p_tco = tco_list[ino].transpose((1,2,0)) + p_score = score_list[ino].transpose((1, 2, 0)) + p_border = border_list[ino].transpose((1, 2, 0)) + p_tvo = tvo_list[ino].transpose((1, 2, 0)) + p_tco = tco_list[ino].transpose((1, 2, 0)) src_h, src_w, ratio_h, ratio_w = shape_list[ino] - poly_list = self.detect_sast(p_score, p_tvo, p_border, p_tco, ratio_w, ratio_h, src_w, src_h, - shrink_ratio_of_width=self.shrink_ratio_of_width, - tcl_map_thresh=self.tcl_map_thresh, offset_expand=self.expand_scale) + poly_list = self.detect_sast( + p_score, + p_tvo, + p_border, + p_tco, + ratio_w, + ratio_h, + src_w, + src_h, + shrink_ratio_of_width=self.shrink_ratio_of_width, + tcl_map_thresh=self.tcl_map_thresh, + offset_expand=self.expand_scale) poly_lists.append({'points': np.array(poly_list)}) return poly_lists - diff --git a/ppocr/utils/e2e_metric/Deteval.py b/ppocr/utils/e2e_metric/Deteval.py new file mode 100755 index 00000000..8033a9ff --- /dev/null +++ b/ppocr/utils/e2e_metric/Deteval.py @@ -0,0 +1,458 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import numpy as np +from ppocr.utils.e2e_metric.polygon_fast import iod, area_of_intersection, area + + +def get_socre(gt_dict, pred_dict): + allInputs = 1 + + def input_reading_mod(pred_dict): + """This helper reads input from txt files""" + det = [] + n = len(pred_dict) + for i in range(n): + points = pred_dict[i]['points'] + text = pred_dict[i]['text'] + point = ",".join(map(str, points.reshape(-1, ))) + det.append([point, text]) + return det + + def gt_reading_mod(gt_dict): + """This helper reads groundtruths from mat files""" + gt = [] + n = len(gt_dict) + for i in range(n): + points = gt_dict[i]['points'] + h = len(points) + text = gt_dict[i]['text'] + xx = [ + np.array( + ['x:'], dtype=' 1): + gt_x = list(map(int, np.squeeze(gt[1]))) + gt_y = list(map(int, np.squeeze(gt[3]))) + for det_id, detection in enumerate(detections): + detection_orig = detection + detection = [float(x) for x in detection[0].split(',')] + detection = list(map(int, detection)) + det_x = detection[0::2] + det_y = detection[1::2] + det_gt_iou = iod(det_x, det_y, gt_x, gt_y) + if det_gt_iou > threshold: + detections[det_id] = [] + + detections[:] = [item for item in detections if item != []] + return detections + + def sigma_calculation(det_x, det_y, gt_x, gt_y): + """ + sigma = inter_area / gt_area + """ + return np.round((area_of_intersection(det_x, det_y, gt_x, gt_y) / + area(gt_x, gt_y)), 2) + + def tau_calculation(det_x, det_y, gt_x, gt_y): + if area(det_x, det_y) == 0.0: + return 0 + return np.round((area_of_intersection(det_x, det_y, gt_x, gt_y) / + area(det_x, det_y)), 2) + + ##############################Initialization################################### + # global_sigma = [] + # global_tau = [] + # global_pred_str = [] + # global_gt_str = [] + ############################################################################### + + for input_id in range(allInputs): + if (input_id != '.DS_Store') and (input_id != 'Pascal_result.txt') and ( + input_id != 'Pascal_result_curved.txt') and (input_id != 'Pascal_result_non_curved.txt') and ( + input_id != 'Deteval_result.txt') and (input_id != 'Deteval_result_curved.txt') \ + and (input_id != 'Deteval_result_non_curved.txt'): + detections = input_reading_mod(pred_dict) + groundtruths = gt_reading_mod(gt_dict) + detections = detection_filtering( + detections, + groundtruths) # filters detections overlapping with DC area + dc_id = [] + for i in range(len(groundtruths)): + if groundtruths[i][5] == '#': + dc_id.append(i) + cnt = 0 + for a in dc_id: + num = a - cnt + del groundtruths[num] + cnt += 1 + + local_sigma_table = np.zeros((len(groundtruths), len(detections))) + local_tau_table = np.zeros((len(groundtruths), len(detections))) + local_pred_str = {} + local_gt_str = {} + + for gt_id, gt in enumerate(groundtruths): + if len(detections) > 0: + for det_id, detection in enumerate(detections): + detection_orig = detection + detection = [float(x) for x in detection[0].split(',')] + detection = list(map(int, detection)) + pred_seq_str = detection_orig[1].strip() + det_x = detection[0::2] + det_y = detection[1::2] + gt_x = list(map(int, np.squeeze(gt[1]))) + gt_y = list(map(int, np.squeeze(gt[3]))) + gt_seq_str = str(gt[4].tolist()[0]) + + local_sigma_table[gt_id, det_id] = sigma_calculation( + det_x, det_y, gt_x, gt_y) + local_tau_table[gt_id, det_id] = tau_calculation( + det_x, det_y, gt_x, gt_y) + local_pred_str[det_id] = pred_seq_str + local_gt_str[gt_id] = gt_seq_str + + global_sigma = local_sigma_table + global_tau = local_tau_table + global_pred_str = local_pred_str + global_gt_str = local_gt_str + + single_data = {} + single_data['sigma'] = global_sigma + single_data['global_tau'] = global_tau + single_data['global_pred_str'] = global_pred_str + single_data['global_gt_str'] = global_gt_str + return single_data + + +def combine_results(all_data): + tr = 0.7 + tp = 0.6 + fsc_k = 0.8 + k = 2 + global_sigma = [] + global_tau = [] + global_pred_str = [] + global_gt_str = [] + for data in all_data: + global_sigma.append(data['sigma']) + global_tau.append(data['global_tau']) + global_pred_str.append(data['global_pred_str']) + global_gt_str.append(data['global_gt_str']) + + global_accumulative_recall = 0 + global_accumulative_precision = 0 + total_num_gt = 0 + total_num_det = 0 + hit_str_count = 0 + hit_count = 0 + + def one_to_one(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idy): + hit_str_num = 0 + for gt_id in range(num_gt): + gt_matching_qualified_sigma_candidates = np.where( + local_sigma_table[gt_id, :] > tr) + gt_matching_num_qualified_sigma_candidates = gt_matching_qualified_sigma_candidates[ + 0].shape[0] + gt_matching_qualified_tau_candidates = np.where( + local_tau_table[gt_id, :] > tp) + gt_matching_num_qualified_tau_candidates = gt_matching_qualified_tau_candidates[ + 0].shape[0] + + det_matching_qualified_sigma_candidates = np.where( + local_sigma_table[:, gt_matching_qualified_sigma_candidates[0]] + > tr) + det_matching_num_qualified_sigma_candidates = det_matching_qualified_sigma_candidates[ + 0].shape[0] + det_matching_qualified_tau_candidates = np.where( + local_tau_table[:, gt_matching_qualified_tau_candidates[0]] > + tp) + det_matching_num_qualified_tau_candidates = det_matching_qualified_tau_candidates[ + 0].shape[0] + + if (gt_matching_num_qualified_sigma_candidates == 1) and (gt_matching_num_qualified_tau_candidates == 1) and \ + (det_matching_num_qualified_sigma_candidates == 1) and ( + det_matching_num_qualified_tau_candidates == 1): + global_accumulative_recall = global_accumulative_recall + 1.0 + global_accumulative_precision = global_accumulative_precision + 1.0 + local_accumulative_recall = local_accumulative_recall + 1.0 + local_accumulative_precision = local_accumulative_precision + 1.0 + + gt_flag[0, gt_id] = 1 + matched_det_id = np.where(local_sigma_table[gt_id, :] > tr) + # recg start + gt_str_cur = global_gt_str[idy][gt_id] + pred_str_cur = global_pred_str[idy][matched_det_id[0].tolist()[ + 0]] + if pred_str_cur == gt_str_cur: + hit_str_num += 1 + else: + if pred_str_cur.lower() == gt_str_cur.lower(): + hit_str_num += 1 + # recg end + det_flag[0, matched_det_id] = 1 + return local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, gt_flag, det_flag, hit_str_num + + def one_to_many(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idy): + hit_str_num = 0 + for gt_id in range(num_gt): + # skip the following if the groundtruth was matched + if gt_flag[0, gt_id] > 0: + continue + + non_zero_in_sigma = np.where(local_sigma_table[gt_id, :] > 0) + num_non_zero_in_sigma = non_zero_in_sigma[0].shape[0] + + if num_non_zero_in_sigma >= k: + ####search for all detections that overlaps with this groundtruth + qualified_tau_candidates = np.where((local_tau_table[ + gt_id, :] >= tp) & (det_flag[0, :] == 0)) + num_qualified_tau_candidates = qualified_tau_candidates[ + 0].shape[0] + + if num_qualified_tau_candidates == 1: + if ((local_tau_table[gt_id, qualified_tau_candidates] >= tp) + and + (local_sigma_table[gt_id, qualified_tau_candidates] >= + tr)): + # became an one-to-one case + global_accumulative_recall = global_accumulative_recall + 1.0 + global_accumulative_precision = global_accumulative_precision + 1.0 + local_accumulative_recall = local_accumulative_recall + 1.0 + local_accumulative_precision = local_accumulative_precision + 1.0 + + gt_flag[0, gt_id] = 1 + det_flag[0, qualified_tau_candidates] = 1 + # recg start + gt_str_cur = global_gt_str[idy][gt_id] + pred_str_cur = global_pred_str[idy][ + qualified_tau_candidates[0].tolist()[0]] + if pred_str_cur == gt_str_cur: + hit_str_num += 1 + else: + if pred_str_cur.lower() == gt_str_cur.lower(): + hit_str_num += 1 + # recg end + elif (np.sum(local_sigma_table[gt_id, qualified_tau_candidates]) + >= tr): + gt_flag[0, gt_id] = 1 + det_flag[0, qualified_tau_candidates] = 1 + # recg start + gt_str_cur = global_gt_str[idy][gt_id] + pred_str_cur = global_pred_str[idy][ + qualified_tau_candidates[0].tolist()[0]] + if pred_str_cur == gt_str_cur: + hit_str_num += 1 + else: + if pred_str_cur.lower() == gt_str_cur.lower(): + hit_str_num += 1 + # recg end + + global_accumulative_recall = global_accumulative_recall + fsc_k + global_accumulative_precision = global_accumulative_precision + num_qualified_tau_candidates * fsc_k + + local_accumulative_recall = local_accumulative_recall + fsc_k + local_accumulative_precision = local_accumulative_precision + num_qualified_tau_candidates * fsc_k + + return local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, gt_flag, det_flag, hit_str_num + + def many_to_one(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idy): + hit_str_num = 0 + for det_id in range(num_det): + # skip the following if the detection was matched + if det_flag[0, det_id] > 0: + continue + + non_zero_in_tau = np.where(local_tau_table[:, det_id] > 0) + num_non_zero_in_tau = non_zero_in_tau[0].shape[0] + + if num_non_zero_in_tau >= k: + ####search for all detections that overlaps with this groundtruth + qualified_sigma_candidates = np.where(( + local_sigma_table[:, det_id] >= tp) & (gt_flag[0, :] == 0)) + num_qualified_sigma_candidates = qualified_sigma_candidates[ + 0].shape[0] + + if num_qualified_sigma_candidates == 1: + if ((local_tau_table[qualified_sigma_candidates, det_id] >= + tp) and + (local_sigma_table[qualified_sigma_candidates, det_id] + >= tr)): + # became an one-to-one case + global_accumulative_recall = global_accumulative_recall + 1.0 + global_accumulative_precision = global_accumulative_precision + 1.0 + local_accumulative_recall = local_accumulative_recall + 1.0 + local_accumulative_precision = local_accumulative_precision + 1.0 + + gt_flag[0, qualified_sigma_candidates] = 1 + det_flag[0, det_id] = 1 + # recg start + pred_str_cur = global_pred_str[idy][det_id] + gt_len = len(qualified_sigma_candidates[0]) + for idx in range(gt_len): + ele_gt_id = qualified_sigma_candidates[0].tolist()[ + idx] + if ele_gt_id not in global_gt_str[idy]: + continue + gt_str_cur = global_gt_str[idy][ele_gt_id] + if pred_str_cur == gt_str_cur: + hit_str_num += 1 + break + else: + if pred_str_cur.lower() == gt_str_cur.lower(): + hit_str_num += 1 + break + # recg end + elif (np.sum(local_tau_table[qualified_sigma_candidates, + det_id]) >= tp): + det_flag[0, det_id] = 1 + gt_flag[0, qualified_sigma_candidates] = 1 + # recg start + pred_str_cur = global_pred_str[idy][det_id] + gt_len = len(qualified_sigma_candidates[0]) + for idx in range(gt_len): + ele_gt_id = qualified_sigma_candidates[0].tolist()[idx] + if ele_gt_id not in global_gt_str[idy]: + continue + gt_str_cur = global_gt_str[idy][ele_gt_id] + if pred_str_cur == gt_str_cur: + hit_str_num += 1 + break + else: + if pred_str_cur.lower() == gt_str_cur.lower(): + hit_str_num += 1 + break + # recg end + + global_accumulative_recall = global_accumulative_recall + num_qualified_sigma_candidates * fsc_k + global_accumulative_precision = global_accumulative_precision + fsc_k + + local_accumulative_recall = local_accumulative_recall + num_qualified_sigma_candidates * fsc_k + local_accumulative_precision = local_accumulative_precision + fsc_k + return local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, gt_flag, det_flag, hit_str_num + + for idx in range(len(global_sigma)): + local_sigma_table = np.array(global_sigma[idx]) + local_tau_table = global_tau[idx] + + num_gt = local_sigma_table.shape[0] + num_det = local_sigma_table.shape[1] + + total_num_gt = total_num_gt + num_gt + total_num_det = total_num_det + num_det + + local_accumulative_recall = 0 + local_accumulative_precision = 0 + gt_flag = np.zeros((1, num_gt)) + det_flag = np.zeros((1, num_det)) + + #######first check for one-to-one case########## + local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, \ + gt_flag, det_flag, hit_str_num = one_to_one(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idx) + + hit_str_count += hit_str_num + #######then check for one-to-many case########## + local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, \ + gt_flag, det_flag, hit_str_num = one_to_many(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idx) + hit_str_count += hit_str_num + #######then check for many-to-one case########## + local_accumulative_recall, local_accumulative_precision, global_accumulative_recall, global_accumulative_precision, \ + gt_flag, det_flag, hit_str_num = many_to_one(local_sigma_table, local_tau_table, + local_accumulative_recall, local_accumulative_precision, + global_accumulative_recall, global_accumulative_precision, + gt_flag, det_flag, idx) + hit_str_count += hit_str_num + + try: + recall = global_accumulative_recall / total_num_gt + except ZeroDivisionError: + recall = 0 + + try: + precision = global_accumulative_precision / total_num_det + except ZeroDivisionError: + precision = 0 + + try: + f_score = 2 * precision * recall / (precision + recall) + except ZeroDivisionError: + f_score = 0 + + try: + seqerr = 1 - float(hit_str_count) / global_accumulative_recall + except ZeroDivisionError: + seqerr = 1 + + try: + recall_e2e = float(hit_str_count) / total_num_gt + except ZeroDivisionError: + recall_e2e = 0 + + try: + precision_e2e = float(hit_str_count) / total_num_det + except ZeroDivisionError: + precision_e2e = 0 + + try: + f_score_e2e = 2 * precision_e2e * recall_e2e / ( + precision_e2e + recall_e2e) + except ZeroDivisionError: + f_score_e2e = 0 + + final = { + 'total_num_gt': total_num_gt, + 'total_num_det': total_num_det, + 'global_accumulative_recall': global_accumulative_recall, + 'hit_str_count': hit_str_count, + 'recall': recall, + 'precision': precision, + 'f_score': f_score, + 'seqerr': seqerr, + 'recall_e2e': recall_e2e, + 'precision_e2e': precision_e2e, + 'f_score_e2e': f_score_e2e + } + return final diff --git a/ppocr/utils/e2e_metric/polygon_fast.py b/ppocr/utils/e2e_metric/polygon_fast.py new file mode 100755 index 00000000..81c9ad70 --- /dev/null +++ b/ppocr/utils/e2e_metric/polygon_fast.py @@ -0,0 +1,83 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import numpy as np +from shapely.geometry import Polygon +""" +:param det_x: [1, N] Xs of detection's vertices +:param det_y: [1, N] Ys of detection's vertices +:param gt_x: [1, N] Xs of groundtruth's vertices +:param gt_y: [1, N] Ys of groundtruth's vertices + +############## +All the calculation of 'AREA' in this script is handled by: +1) First generating a binary mask with the polygon area filled up with 1's +2) Summing up all the 1's +""" + + +def area(x, y): + polygon = Polygon(np.stack([x, y], axis=1)) + return float(polygon.area) + + +def approx_area_of_intersection(det_x, det_y, gt_x, gt_y): + """ + This helper determine if both polygons are intersecting with each others with an approximation method. + Area of intersection represented by the minimum bounding rectangular [xmin, ymin, xmax, ymax] + """ + det_ymax = np.max(det_y) + det_xmax = np.max(det_x) + det_ymin = np.min(det_y) + det_xmin = np.min(det_x) + + gt_ymax = np.max(gt_y) + gt_xmax = np.max(gt_x) + gt_ymin = np.min(gt_y) + gt_xmin = np.min(gt_x) + + all_min_ymax = np.minimum(det_ymax, gt_ymax) + all_max_ymin = np.maximum(det_ymin, gt_ymin) + + intersect_heights = np.maximum(0.0, (all_min_ymax - all_max_ymin)) + + all_min_xmax = np.minimum(det_xmax, gt_xmax) + all_max_xmin = np.maximum(det_xmin, gt_xmin) + intersect_widths = np.maximum(0.0, (all_min_xmax - all_max_xmin)) + + return intersect_heights * intersect_widths + + +def area_of_intersection(det_x, det_y, gt_x, gt_y): + p1 = Polygon(np.stack([det_x, det_y], axis=1)).buffer(0) + p2 = Polygon(np.stack([gt_x, gt_y], axis=1)).buffer(0) + return float(p1.intersection(p2).area) + + +def area_of_union(det_x, det_y, gt_x, gt_y): + p1 = Polygon(np.stack([det_x, det_y], axis=1)).buffer(0) + p2 = Polygon(np.stack([gt_x, gt_y], axis=1)).buffer(0) + return float(p1.union(p2).area) + + +def iou(det_x, det_y, gt_x, gt_y): + return area_of_intersection(det_x, det_y, gt_x, gt_y) / ( + area_of_union(det_x, det_y, gt_x, gt_y) + 1.0) + + +def iod(det_x, det_y, gt_x, gt_y): + """ + This helper determine the fraction of intersection area over detection area + """ + return area_of_intersection(det_x, det_y, gt_x, gt_y) / ( + area(det_x, det_y) + 1.0) diff --git a/ppocr/utils/e2e_utils/extract_batchsize.py b/ppocr/utils/e2e_utils/extract_batchsize.py new file mode 100644 index 00000000..e99a833e --- /dev/null +++ b/ppocr/utils/e2e_utils/extract_batchsize.py @@ -0,0 +1,87 @@ +import paddle +import numpy as np +import copy + + +def org_tcl_rois(batch_size, pos_lists, pos_masks, label_lists, tcl_bs): + """ + """ + pos_lists_, pos_masks_, label_lists_ = [], [], [] + img_bs = batch_size + ngpu = int(batch_size / img_bs) + img_ids = np.array(pos_lists, dtype=np.int32)[:, 0, 0].copy() + pos_lists_split, pos_masks_split, label_lists_split = [], [], [] + for i in range(ngpu): + pos_lists_split.append([]) + pos_masks_split.append([]) + label_lists_split.append([]) + + for i in range(img_ids.shape[0]): + img_id = img_ids[i] + gpu_id = int(img_id / img_bs) + img_id = img_id % img_bs + pos_list = pos_lists[i].copy() + pos_list[:, 0] = img_id + pos_lists_split[gpu_id].append(pos_list) + pos_masks_split[gpu_id].append(pos_masks[i].copy()) + label_lists_split[gpu_id].append(copy.deepcopy(label_lists[i])) + # repeat or delete + for i in range(ngpu): + vp_len = len(pos_lists_split[i]) + if vp_len <= tcl_bs: + for j in range(0, tcl_bs - vp_len): + pos_list = pos_lists_split[i][j].copy() + pos_lists_split[i].append(pos_list) + pos_mask = pos_masks_split[i][j].copy() + pos_masks_split[i].append(pos_mask) + label_list = copy.deepcopy(label_lists_split[i][j]) + label_lists_split[i].append(label_list) + else: + for j in range(0, vp_len - tcl_bs): + c_len = len(pos_lists_split[i]) + pop_id = np.random.permutation(c_len)[0] + pos_lists_split[i].pop(pop_id) + pos_masks_split[i].pop(pop_id) + label_lists_split[i].pop(pop_id) + # merge + for i in range(ngpu): + pos_lists_.extend(pos_lists_split[i]) + pos_masks_.extend(pos_masks_split[i]) + label_lists_.extend(label_lists_split[i]) + return pos_lists_, pos_masks_, label_lists_ + + +def pre_process(label_list, pos_list, pos_mask, max_text_length, max_text_nums, + pad_num, tcl_bs): + label_list = label_list.numpy() + batch, _, _, _ = label_list.shape + pos_list = pos_list.numpy() + pos_mask = pos_mask.numpy() + pos_list_t = [] + pos_mask_t = [] + label_list_t = [] + for i in range(batch): + for j in range(max_text_nums): + if pos_mask[i, j].any(): + pos_list_t.append(pos_list[i][j]) + pos_mask_t.append(pos_mask[i][j]) + label_list_t.append(label_list[i][j]) + pos_list, pos_mask, label_list = org_tcl_rois(batch, pos_list_t, pos_mask_t, + label_list_t, tcl_bs) + label = [] + tt = [l.tolist() for l in label_list] + for i in range(tcl_bs): + k = 0 + for j in range(max_text_length): + if tt[i][j][0] != pad_num: + k += 1 + else: + break + label.append(k) + label = paddle.to_tensor(label) + label = paddle.cast(label, dtype='int64') + pos_list = paddle.to_tensor(pos_list) + pos_mask = paddle.to_tensor(pos_mask) + label_list = paddle.squeeze(paddle.to_tensor(label_list), axis=2) + label_list = paddle.cast(label_list, dtype='int32') + return pos_list, pos_mask, label_list, label diff --git a/ppocr/utils/e2e_utils/extract_textpoint.py b/ppocr/utils/e2e_utils/extract_textpoint.py new file mode 100644 index 00000000..975ca161 --- /dev/null +++ b/ppocr/utils/e2e_utils/extract_textpoint.py @@ -0,0 +1,532 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +"""Contains various CTC decoders.""" +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import cv2 +import math + +import numpy as np +from itertools import groupby +from skimage.morphology._skeletonize import thin + + +def get_dict(character_dict_path): + character_str = "" + with open(character_dict_path, "rb") as fin: + lines = fin.readlines() + for line in lines: + line = line.decode('utf-8').strip("\n").strip("\r\n") + character_str += line + dict_character = list(character_str) + return dict_character + + +def softmax(logits): + """ + logits: N x d + """ + max_value = np.max(logits, axis=1, keepdims=True) + exp = np.exp(logits - max_value) + exp_sum = np.sum(exp, axis=1, keepdims=True) + dist = exp / exp_sum + return dist + + +def get_keep_pos_idxs(labels, remove_blank=None): + """ + Remove duplicate and get pos idxs of keep items. + The value of keep_blank should be [None, 95]. + """ + duplicate_len_list = [] + keep_pos_idx_list = [] + keep_char_idx_list = [] + for k, v_ in groupby(labels): + current_len = len(list(v_)) + if k != remove_blank: + current_idx = int(sum(duplicate_len_list) + current_len // 2) + keep_pos_idx_list.append(current_idx) + keep_char_idx_list.append(k) + duplicate_len_list.append(current_len) + return keep_char_idx_list, keep_pos_idx_list + + +def remove_blank(labels, blank=0): + new_labels = [x for x in labels if x != blank] + return new_labels + + +def insert_blank(labels, blank=0): + new_labels = [blank] + for l in labels: + new_labels += [l, blank] + return new_labels + + +def ctc_greedy_decoder(probs_seq, blank=95, keep_blank_in_idxs=True): + """ + CTC greedy (best path) decoder. + """ + raw_str = np.argmax(np.array(probs_seq), axis=1) + remove_blank_in_pos = None if keep_blank_in_idxs else blank + dedup_str, keep_idx_list = get_keep_pos_idxs( + raw_str, remove_blank=remove_blank_in_pos) + dst_str = remove_blank(dedup_str, blank=blank) + return dst_str, keep_idx_list + + +def instance_ctc_greedy_decoder(gather_info, + logits_map, + keep_blank_in_idxs=True): + """ + gather_info: [[x, y], [x, y] ...] + logits_map: H x W X (n_chars + 1) + """ + _, _, C = logits_map.shape + ys, xs = zip(*gather_info) + logits_seq = logits_map[list(ys), list(xs)] # n x 96 + probs_seq = softmax(logits_seq) + dst_str, keep_idx_list = ctc_greedy_decoder( + probs_seq, blank=C - 1, keep_blank_in_idxs=keep_blank_in_idxs) + keep_gather_list = [gather_info[idx] for idx in keep_idx_list] + return dst_str, keep_gather_list + + +def ctc_decoder_for_image(gather_info_list, logits_map, + keep_blank_in_idxs=True): + """ + CTC decoder using multiple processes. + """ + decoder_results = [] + for gather_info in gather_info_list: + res = instance_ctc_greedy_decoder( + gather_info, logits_map, keep_blank_in_idxs=keep_blank_in_idxs) + decoder_results.append(res) + return decoder_results + + +def sort_with_direction(pos_list, f_direction): + """ + f_direction: h x w x 2 + pos_list: [[y, x], [y, x], [y, x] ...] + """ + + def sort_part_with_direction(pos_list, point_direction): + pos_list = np.array(pos_list).reshape(-1, 2) + point_direction = np.array(point_direction).reshape(-1, 2) + average_direction = np.mean(point_direction, axis=0, keepdims=True) + pos_proj_leng = np.sum(pos_list * average_direction, axis=1) + sorted_list = pos_list[np.argsort(pos_proj_leng)].tolist() + sorted_direction = point_direction[np.argsort(pos_proj_leng)].tolist() + return sorted_list, sorted_direction + + pos_list = np.array(pos_list).reshape(-1, 2) + point_direction = f_direction[pos_list[:, 0], pos_list[:, 1]] # x, y + point_direction = point_direction[:, ::-1] # x, y -> y, x + sorted_point, sorted_direction = sort_part_with_direction(pos_list, + point_direction) + + point_num = len(sorted_point) + if point_num >= 16: + middle_num = point_num // 2 + first_part_point = sorted_point[:middle_num] + first_point_direction = sorted_direction[:middle_num] + sorted_fist_part_point, sorted_fist_part_direction = sort_part_with_direction( + first_part_point, first_point_direction) + + last_part_point = sorted_point[middle_num:] + last_point_direction = sorted_direction[middle_num:] + sorted_last_part_point, sorted_last_part_direction = sort_part_with_direction( + last_part_point, last_point_direction) + sorted_point = sorted_fist_part_point + sorted_last_part_point + sorted_direction = sorted_fist_part_direction + sorted_last_part_direction + + return sorted_point, np.array(sorted_direction) + + +def add_id(pos_list, image_id=0): + """ + Add id for gather feature, for inference. + """ + new_list = [] + for item in pos_list: + new_list.append((image_id, item[0], item[1])) + return new_list + + +def sort_and_expand_with_direction(pos_list, f_direction): + """ + f_direction: h x w x 2 + pos_list: [[y, x], [y, x], [y, x] ...] + """ + h, w, _ = f_direction.shape + sorted_list, point_direction = sort_with_direction(pos_list, f_direction) + + # expand along + point_num = len(sorted_list) + sub_direction_len = max(point_num // 3, 2) + left_direction = point_direction[:sub_direction_len, :] + right_dirction = point_direction[point_num - sub_direction_len:, :] + + left_average_direction = -np.mean(left_direction, axis=0, keepdims=True) + left_average_len = np.linalg.norm(left_average_direction) + left_start = np.array(sorted_list[0]) + left_step = left_average_direction / (left_average_len + 1e-6) + + right_average_direction = np.mean(right_dirction, axis=0, keepdims=True) + right_average_len = np.linalg.norm(right_average_direction) + right_step = right_average_direction / (right_average_len + 1e-6) + right_start = np.array(sorted_list[-1]) + + append_num = max( + int((left_average_len + right_average_len) / 2.0 * 0.15), 1) + left_list = [] + right_list = [] + for i in range(append_num): + ly, lx = np.round(left_start + left_step * (i + 1)).flatten().astype( + 'int32').tolist() + if ly < h and lx < w and (ly, lx) not in left_list: + left_list.append((ly, lx)) + ry, rx = np.round(right_start + right_step * (i + 1)).flatten().astype( + 'int32').tolist() + if ry < h and rx < w and (ry, rx) not in right_list: + right_list.append((ry, rx)) + + all_list = left_list[::-1] + sorted_list + right_list + return all_list + + +def sort_and_expand_with_direction_v2(pos_list, f_direction, binary_tcl_map): + """ + f_direction: h x w x 2 + pos_list: [[y, x], [y, x], [y, x] ...] + binary_tcl_map: h x w + """ + h, w, _ = f_direction.shape + sorted_list, point_direction = sort_with_direction(pos_list, f_direction) + + # expand along + point_num = len(sorted_list) + sub_direction_len = max(point_num // 3, 2) + left_direction = point_direction[:sub_direction_len, :] + right_dirction = point_direction[point_num - sub_direction_len:, :] + + left_average_direction = -np.mean(left_direction, axis=0, keepdims=True) + left_average_len = np.linalg.norm(left_average_direction) + left_start = np.array(sorted_list[0]) + left_step = left_average_direction / (left_average_len + 1e-6) + + right_average_direction = np.mean(right_dirction, axis=0, keepdims=True) + right_average_len = np.linalg.norm(right_average_direction) + right_step = right_average_direction / (right_average_len + 1e-6) + right_start = np.array(sorted_list[-1]) + + append_num = max( + int((left_average_len + right_average_len) / 2.0 * 0.15), 1) + max_append_num = 2 * append_num + + left_list = [] + right_list = [] + for i in range(max_append_num): + ly, lx = np.round(left_start + left_step * (i + 1)).flatten().astype( + 'int32').tolist() + if ly < h and lx < w and (ly, lx) not in left_list: + if binary_tcl_map[ly, lx] > 0.5: + left_list.append((ly, lx)) + else: + break + + for i in range(max_append_num): + ry, rx = np.round(right_start + right_step * (i + 1)).flatten().astype( + 'int32').tolist() + if ry < h and rx < w and (ry, rx) not in right_list: + if binary_tcl_map[ry, rx] > 0.5: + right_list.append((ry, rx)) + else: + break + + all_list = left_list[::-1] + sorted_list + right_list + return all_list + + +def generate_pivot_list_curved(p_score, + p_char_maps, + f_direction, + score_thresh=0.5, + is_expand=True, + is_backbone=False, + image_id=0): + """ + return center point and end point of TCL instance; filter with the char maps; + """ + p_score = p_score[0] + f_direction = f_direction.transpose(1, 2, 0) + p_tcl_map = (p_score > score_thresh) * 1.0 + skeleton_map = thin(p_tcl_map) + instance_count, instance_label_map = cv2.connectedComponents( + skeleton_map.astype(np.uint8), connectivity=8) + + # get TCL Instance + all_pos_yxs = [] + center_pos_yxs = [] + end_points_yxs = [] + instance_center_pos_yxs = [] + if instance_count > 0: + for instance_id in range(1, instance_count): + pos_list = [] + ys, xs = np.where(instance_label_map == instance_id) + pos_list = list(zip(ys, xs)) + + ### FIX-ME, eliminate outlier + if len(pos_list) < 3: + continue + + if is_expand: + pos_list_sorted = sort_and_expand_with_direction_v2( + pos_list, f_direction, p_tcl_map) + else: + pos_list_sorted, _ = sort_with_direction(pos_list, f_direction) + all_pos_yxs.append(pos_list_sorted) + + # use decoder to filter backgroud points. + p_char_maps = p_char_maps.transpose([1, 2, 0]) + decode_res = ctc_decoder_for_image( + all_pos_yxs, logits_map=p_char_maps, keep_blank_in_idxs=True) + for decoded_str, keep_yxs_list in decode_res: + if is_backbone: + keep_yxs_list_with_id = add_id(keep_yxs_list, image_id=image_id) + instance_center_pos_yxs.append(keep_yxs_list_with_id) + else: + end_points_yxs.extend((keep_yxs_list[0], keep_yxs_list[-1])) + center_pos_yxs.extend(keep_yxs_list) + + if is_backbone: + return instance_center_pos_yxs + else: + return center_pos_yxs, end_points_yxs + + +def generate_pivot_list_horizontal(p_score, + p_char_maps, + f_direction, + score_thresh=0.5, + is_backbone=False, + image_id=0): + """ + return center point and end point of TCL instance; filter with the char maps; + """ + p_score = p_score[0] + f_direction = f_direction.transpose(1, 2, 0) + p_tcl_map_bi = (p_score > score_thresh) * 1.0 + instance_count, instance_label_map = cv2.connectedComponents( + p_tcl_map_bi.astype(np.uint8), connectivity=8) + + # get TCL Instance + all_pos_yxs = [] + center_pos_yxs = [] + end_points_yxs = [] + instance_center_pos_yxs = [] + + if instance_count > 0: + for instance_id in range(1, instance_count): + pos_list = [] + ys, xs = np.where(instance_label_map == instance_id) + pos_list = list(zip(ys, xs)) + + ### FIX-ME, eliminate outlier + if len(pos_list) < 5: + continue + + # add rule here + main_direction = extract_main_direction(pos_list, + f_direction) # y x + reference_directin = np.array([0, 1]).reshape([-1, 2]) # y x + is_h_angle = abs(np.sum( + main_direction * reference_directin)) < math.cos(math.pi / 180 * + 70) + + point_yxs = np.array(pos_list) + max_y, max_x = np.max(point_yxs, axis=0) + min_y, min_x = np.min(point_yxs, axis=0) + is_h_len = (max_y - min_y) < 1.5 * (max_x - min_x) + + pos_list_final = [] + if is_h_len: + xs = np.unique(xs) + for x in xs: + ys = instance_label_map[:, x].copy().reshape((-1, )) + y = int(np.where(ys == instance_id)[0].mean()) + pos_list_final.append((y, x)) + else: + ys = np.unique(ys) + for y in ys: + xs = instance_label_map[y, :].copy().reshape((-1, )) + x = int(np.where(xs == instance_id)[0].mean()) + pos_list_final.append((y, x)) + + pos_list_sorted, _ = sort_with_direction(pos_list_final, + f_direction) + all_pos_yxs.append(pos_list_sorted) + + # use decoder to filter backgroud points. + p_char_maps = p_char_maps.transpose([1, 2, 0]) + decode_res = ctc_decoder_for_image( + all_pos_yxs, logits_map=p_char_maps, keep_blank_in_idxs=True) + for decoded_str, keep_yxs_list in decode_res: + if is_backbone: + keep_yxs_list_with_id = add_id(keep_yxs_list, image_id=image_id) + instance_center_pos_yxs.append(keep_yxs_list_with_id) + else: + end_points_yxs.extend((keep_yxs_list[0], keep_yxs_list[-1])) + center_pos_yxs.extend(keep_yxs_list) + + if is_backbone: + return instance_center_pos_yxs + else: + return center_pos_yxs, end_points_yxs + + +def generate_pivot_list(p_score, + p_char_maps, + f_direction, + score_thresh=0.5, + is_backbone=False, + is_curved=True, + image_id=0): + """ + Warp all the function together. + """ + if is_curved: + return generate_pivot_list_curved( + p_score, + p_char_maps, + f_direction, + score_thresh=score_thresh, + is_expand=True, + is_backbone=is_backbone, + image_id=image_id) + else: + return generate_pivot_list_horizontal( + p_score, + p_char_maps, + f_direction, + score_thresh=score_thresh, + is_backbone=is_backbone, + image_id=image_id) + + +# for refine module +def extract_main_direction(pos_list, f_direction): + """ + f_direction: h x w x 2 + pos_list: [[y, x], [y, x], [y, x] ...] + """ + pos_list = np.array(pos_list) + point_direction = f_direction[pos_list[:, 0], pos_list[:, 1]] + point_direction = point_direction[:, ::-1] # x, y -> y, x + average_direction = np.mean(point_direction, axis=0, keepdims=True) + average_direction = average_direction / ( + np.linalg.norm(average_direction) + 1e-6) + return average_direction + + +def sort_by_direction_with_image_id_deprecated(pos_list, f_direction): + """ + f_direction: h x w x 2 + pos_list: [[id, y, x], [id, y, x], [id, y, x] ...] + """ + pos_list_full = np.array(pos_list).reshape(-1, 3) + pos_list = pos_list_full[:, 1:] + point_direction = f_direction[pos_list[:, 0], pos_list[:, 1]] # x, y + point_direction = point_direction[:, ::-1] # x, y -> y, x + average_direction = np.mean(point_direction, axis=0, keepdims=True) + pos_proj_leng = np.sum(pos_list * average_direction, axis=1) + sorted_list = pos_list_full[np.argsort(pos_proj_leng)].tolist() + return sorted_list + + +def sort_by_direction_with_image_id(pos_list, f_direction): + """ + f_direction: h x w x 2 + pos_list: [[y, x], [y, x], [y, x] ...] + """ + + def sort_part_with_direction(pos_list_full, point_direction): + pos_list_full = np.array(pos_list_full).reshape(-1, 3) + pos_list = pos_list_full[:, 1:] + point_direction = np.array(point_direction).reshape(-1, 2) + average_direction = np.mean(point_direction, axis=0, keepdims=True) + pos_proj_leng = np.sum(pos_list * average_direction, axis=1) + sorted_list = pos_list_full[np.argsort(pos_proj_leng)].tolist() + sorted_direction = point_direction[np.argsort(pos_proj_leng)].tolist() + return sorted_list, sorted_direction + + pos_list = np.array(pos_list).reshape(-1, 3) + point_direction = f_direction[pos_list[:, 1], pos_list[:, 2]] # x, y + point_direction = point_direction[:, ::-1] # x, y -> y, x + sorted_point, sorted_direction = sort_part_with_direction(pos_list, + point_direction) + + point_num = len(sorted_point) + if point_num >= 16: + middle_num = point_num // 2 + first_part_point = sorted_point[:middle_num] + first_point_direction = sorted_direction[:middle_num] + sorted_fist_part_point, sorted_fist_part_direction = sort_part_with_direction( + first_part_point, first_point_direction) + + last_part_point = sorted_point[middle_num:] + last_point_direction = sorted_direction[middle_num:] + sorted_last_part_point, sorted_last_part_direction = sort_part_with_direction( + last_part_point, last_point_direction) + sorted_point = sorted_fist_part_point + sorted_last_part_point + sorted_direction = sorted_fist_part_direction + sorted_last_part_direction + + return sorted_point + + +def generate_pivot_list_tt_inference(p_score, + p_char_maps, + f_direction, + score_thresh=0.5, + is_backbone=False, + is_curved=True, + image_id=0): + """ + return center point and end point of TCL instance; filter with the char maps; + """ + p_score = p_score[0] + f_direction = f_direction.transpose(1, 2, 0) + p_tcl_map = (p_score > score_thresh) * 1.0 + skeleton_map = thin(p_tcl_map) + instance_count, instance_label_map = cv2.connectedComponents( + skeleton_map.astype(np.uint8), connectivity=8) + + # get TCL Instance + all_pos_yxs = [] + if instance_count > 0: + for instance_id in range(1, instance_count): + pos_list = [] + ys, xs = np.where(instance_label_map == instance_id) + pos_list = list(zip(ys, xs)) + ### FIX-ME, eliminate outlier + if len(pos_list) < 3: + continue + pos_list_sorted = sort_and_expand_with_direction_v2( + pos_list, f_direction, p_tcl_map) + pos_list_sorted_with_id = add_id(pos_list_sorted, image_id=image_id) + all_pos_yxs.append(pos_list_sorted_with_id) + return all_pos_yxs diff --git a/ppocr/utils/e2e_utils/visual.py b/ppocr/utils/e2e_utils/visual.py new file mode 100644 index 00000000..e6e4fd06 --- /dev/null +++ b/ppocr/utils/e2e_utils/visual.py @@ -0,0 +1,162 @@ +# Copyright (c) 2021 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import numpy as np +import cv2 +import time + + +def resize_image(im, max_side_len=512): + """ + resize image to a size multiple of max_stride which is required by the network + :param im: the resized image + :param max_side_len: limit of max image size to avoid out of memory in gpu + :return: the resized image and the resize ratio + """ + h, w, _ = im.shape + + resize_w = w + resize_h = h + + if resize_h > resize_w: + ratio = float(max_side_len) / resize_h + else: + ratio = float(max_side_len) / resize_w + + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + im = cv2.resize(im, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + + return im, (ratio_h, ratio_w) + + +def resize_image_min(im, max_side_len=512): + """ + """ + h, w, _ = im.shape + + resize_w = w + resize_h = h + + if resize_h < resize_w: + ratio = float(max_side_len) / resize_h + else: + ratio = float(max_side_len) / resize_w + + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + im = cv2.resize(im, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + return im, (ratio_h, ratio_w) + + +def resize_image_for_totaltext(im, max_side_len=512): + """ + """ + h, w, _ = im.shape + + resize_w = w + resize_h = h + ratio = 1.25 + if h * ratio > max_side_len: + ratio = float(max_side_len) / resize_h + + resize_h = int(resize_h * ratio) + resize_w = int(resize_w * ratio) + + max_stride = 128 + resize_h = (resize_h + max_stride - 1) // max_stride * max_stride + resize_w = (resize_w + max_stride - 1) // max_stride * max_stride + im = cv2.resize(im, (int(resize_w), int(resize_h))) + ratio_h = resize_h / float(h) + ratio_w = resize_w / float(w) + return im, (ratio_h, ratio_w) + + +def point_pair2poly(point_pair_list): + """ + Transfer vertical point_pairs into poly point in clockwise. + """ + pair_length_list = [] + for point_pair in point_pair_list: + pair_length = np.linalg.norm(point_pair[0] - point_pair[1]) + pair_length_list.append(pair_length) + pair_length_list = np.array(pair_length_list) + pair_info = (pair_length_list.max(), pair_length_list.min(), + pair_length_list.mean()) + + point_num = len(point_pair_list) * 2 + point_list = [0] * point_num + for idx, point_pair in enumerate(point_pair_list): + point_list[idx] = point_pair[0] + point_list[point_num - 1 - idx] = point_pair[1] + return np.array(point_list).reshape(-1, 2), pair_info + + +def shrink_quad_along_width(quad, begin_width_ratio=0., end_width_ratio=1.): + """ + Generate shrink_quad_along_width. + """ + ratio_pair = np.array( + [[begin_width_ratio], [end_width_ratio]], dtype=np.float32) + p0_1 = quad[0] + (quad[1] - quad[0]) * ratio_pair + p3_2 = quad[3] + (quad[2] - quad[3]) * ratio_pair + return np.array([p0_1[0], p0_1[1], p3_2[1], p3_2[0]]) + + +def expand_poly_along_width(poly, shrink_ratio_of_width=0.3): + """ + expand poly along width. + """ + point_num = poly.shape[0] + left_quad = np.array( + [poly[0], poly[1], poly[-2], poly[-1]], dtype=np.float32) + left_ratio = -shrink_ratio_of_width * np.linalg.norm(left_quad[0] - left_quad[3]) / \ + (np.linalg.norm(left_quad[0] - left_quad[1]) + 1e-6) + left_quad_expand = shrink_quad_along_width(left_quad, left_ratio, 1.0) + right_quad = np.array( + [ + poly[point_num // 2 - 2], poly[point_num // 2 - 1], + poly[point_num // 2], poly[point_num // 2 + 1] + ], + dtype=np.float32) + right_ratio = 1.0 + \ + shrink_ratio_of_width * np.linalg.norm(right_quad[0] - right_quad[3]) / \ + (np.linalg.norm(right_quad[0] - right_quad[1]) + 1e-6) + right_quad_expand = shrink_quad_along_width(right_quad, 0.0, right_ratio) + poly[0] = left_quad_expand[0] + poly[-1] = left_quad_expand[-1] + poly[point_num // 2 - 1] = right_quad_expand[1] + poly[point_num // 2] = right_quad_expand[2] + return poly + + +def norm2(x, axis=None): + if axis: + return np.sqrt(np.sum(x**2, axis=axis)) + return np.sqrt(np.sum(x**2)) + + +def cos(p1, p2): + return (p1 * p2).sum() / (norm2(p1) * norm2(p2)) diff --git a/requirements.txt b/requirements.txt index 13218963..1b01e690 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,9 +1,11 @@ shapely -imgaug +scikit-image==0.17.2 +imgaug==0.4.0 pyclipper lmdb opencv-python==4.2.0.32 tqdm numpy visualdl -python-Levenshtein \ No newline at end of file +python-Levenshtein +opencv-contrib-python \ No newline at end of file diff --git a/setup.py b/setup.py index 58f6de48..70400df4 100644 --- a/setup.py +++ b/setup.py @@ -32,7 +32,7 @@ setup( package_dir={'paddleocr': ''}, include_package_data=True, entry_points={"console_scripts": ["paddleocr= paddleocr.paddleocr:main"]}, - version='2.0.2', + version='2.0.3', install_requires=requirements, license='Apache License 2.0', description='Awesome OCR toolkits based on PaddlePaddle (8.6M ultra-lightweight pre-trained model, support training and deployment among server, mobile, embeded and IoT devices', diff --git a/tools/eval.py b/tools/eval.py index 16cfe532..4afed469 100755 --- a/tools/eval.py +++ b/tools/eval.py @@ -47,6 +47,7 @@ def main(): config['Architecture']["Head"]['out_channels'] = len( getattr(post_process_class, 'character')) model = build_model(config['Architecture']) + use_srn = config['Architecture']['algorithm'] == "SRN" best_model_dict = init_model(config, model, logger) if len(best_model_dict): @@ -59,7 +60,7 @@ def main(): # start eval metirc = program.eval(model, valid_dataloader, post_process_class, - eval_class) + eval_class, use_srn) logger.info('metric eval ***************') for k, v in metirc.items(): logger.info('{}:{}'.format(k, v)) diff --git a/tools/infer/predict_cls.py b/tools/infer/predict_cls.py index 074172cc..d2592c6c 100755 --- a/tools/infer/predict_cls.py +++ b/tools/infer/predict_cls.py @@ -98,10 +98,10 @@ class TextClassifier(object): norm_img_batch = np.concatenate(norm_img_batch) norm_img_batch = norm_img_batch.copy() starttime = time.time() - self.input_tensor.copy_from_cpu(norm_img_batch) self.predictor.run() prob_out = self.output_tensors[0].copy_to_cpu() + self.predictor.try_shrink_memory() cls_result = self.postprocess_op(prob_out) elapse += time.time() - starttime for rno in range(len(cls_result)): diff --git a/tools/infer/predict_det.py b/tools/infer/predict_det.py index 077692af..f5ea0504 100755 --- a/tools/infer/predict_det.py +++ b/tools/infer/predict_det.py @@ -39,10 +39,7 @@ class TextDetector(object): self.args = args self.det_algorithm = args.det_algorithm pre_process_list = [{ - 'DetResizeForTest': { - 'limit_side_len': args.det_limit_side_len, - 'limit_type': args.det_limit_type - } + 'DetResizeForTest': None }, { 'NormalizeImage': { 'std': [0.229, 0.224, 0.225], @@ -64,7 +61,7 @@ class TextDetector(object): postprocess_params["box_thresh"] = args.det_db_box_thresh postprocess_params["max_candidates"] = 1000 postprocess_params["unclip_ratio"] = args.det_db_unclip_ratio - postprocess_params["use_dilation"] = True + postprocess_params["use_dilation"] = args.use_dilation elif self.det_algorithm == "EAST": postprocess_params['name'] = 'EASTPostProcess' postprocess_params["score_thresh"] = args.det_east_score_thresh @@ -183,7 +180,7 @@ class TextDetector(object): preds['maps'] = outputs[0] else: raise NotImplementedError - + self.predictor.try_shrink_memory() post_result = self.postprocess_op(preds, shape_list) dt_boxes = post_result[0]['points'] if self.det_algorithm == "SAST" and self.det_sast_polygon: diff --git a/tools/infer/predict_e2e.py b/tools/infer/predict_e2e.py new file mode 100755 index 00000000..a5c57914 --- /dev/null +++ b/tools/infer/predict_e2e.py @@ -0,0 +1,158 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import os +import sys + +__dir__ = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(__dir__) +sys.path.append(os.path.abspath(os.path.join(__dir__, '../..'))) + +os.environ["FLAGS_allocator_strategy"] = 'auto_growth' + +import cv2 +import numpy as np +import time +import sys + +import tools.infer.utility as utility +from ppocr.utils.logging import get_logger +from ppocr.utils.utility import get_image_file_list, check_and_read_gif +from ppocr.data import create_operators, transform +from ppocr.postprocess import build_post_process + +logger = get_logger() + + +class TextE2E(object): + def __init__(self, args): + self.args = args + self.e2e_algorithm = args.e2e_algorithm + pre_process_list = [{ + 'E2EResizeForTest': {} + }, { + 'NormalizeImage': { + 'std': [0.229, 0.224, 0.225], + 'mean': [0.485, 0.456, 0.406], + 'scale': '1./255.', + 'order': 'hwc' + } + }, { + 'ToCHWImage': None + }, { + 'KeepKeys': { + 'keep_keys': ['image', 'shape'] + } + }] + postprocess_params = {} + if self.e2e_algorithm == "PGNet": + pre_process_list[0] = { + 'E2EResizeForTest': { + 'max_side_len': args.e2e_limit_side_len, + 'valid_set': 'totaltext' + } + } + postprocess_params['name'] = 'PGPostProcess' + postprocess_params["score_thresh"] = args.e2e_pgnet_score_thresh + postprocess_params["character_dict_path"] = args.e2e_char_dict_path + postprocess_params["valid_set"] = args.e2e_pgnet_valid_set + self.e2e_pgnet_polygon = args.e2e_pgnet_polygon + else: + logger.info("unknown e2e_algorithm:{}".format(self.e2e_algorithm)) + sys.exit(0) + + self.preprocess_op = create_operators(pre_process_list) + self.postprocess_op = build_post_process(postprocess_params) + self.predictor, self.input_tensor, self.output_tensors = utility.create_predictor( + args, 'e2e', logger) # paddle.jit.load(args.det_model_dir) + # self.predictor.eval() + + def clip_det_res(self, points, img_height, img_width): + for pno in range(points.shape[0]): + points[pno, 0] = int(min(max(points[pno, 0], 0), img_width - 1)) + points[pno, 1] = int(min(max(points[pno, 1], 0), img_height - 1)) + return points + + def filter_tag_det_res_only_clip(self, dt_boxes, image_shape): + img_height, img_width = image_shape[0:2] + dt_boxes_new = [] + for box in dt_boxes: + box = self.clip_det_res(box, img_height, img_width) + dt_boxes_new.append(box) + dt_boxes = np.array(dt_boxes_new) + return dt_boxes + + def __call__(self, img): + + ori_im = img.copy() + data = {'image': img} + data = transform(data, self.preprocess_op) + img, shape_list = data + if img is None: + return None, 0 + img = np.expand_dims(img, axis=0) + shape_list = np.expand_dims(shape_list, axis=0) + img = img.copy() + starttime = time.time() + + self.input_tensor.copy_from_cpu(img) + self.predictor.run() + outputs = [] + for output_tensor in self.output_tensors: + output = output_tensor.copy_to_cpu() + outputs.append(output) + + preds = {} + if self.e2e_algorithm == 'PGNet': + preds['f_border'] = outputs[0] + preds['f_char'] = outputs[1] + preds['f_direction'] = outputs[2] + preds['f_score'] = outputs[3] + else: + raise NotImplementedError + post_result = self.postprocess_op(preds, shape_list) + points, strs = post_result['points'], post_result['strs'] + dt_boxes = self.filter_tag_det_res_only_clip(points, ori_im.shape) + elapse = time.time() - starttime + return dt_boxes, strs, elapse + + +if __name__ == "__main__": + args = utility.parse_args() + image_file_list = get_image_file_list(args.image_dir) + text_detector = TextE2E(args) + count = 0 + total_time = 0 + draw_img_save = "./inference_results" + if not os.path.exists(draw_img_save): + os.makedirs(draw_img_save) + for image_file in image_file_list: + img, flag = check_and_read_gif(image_file) + if not flag: + img = cv2.imread(image_file) + if img is None: + logger.info("error in loading image:{}".format(image_file)) + continue + points, strs, elapse = text_detector(img) + if count > 0: + total_time += elapse + count += 1 + logger.info("Predict time of {}: {}".format(image_file, elapse)) + src_im = utility.draw_e2e_res(points, strs, image_file) + img_name_pure = os.path.split(image_file)[-1] + img_path = os.path.join(draw_img_save, + "e2e_res_{}".format(img_name_pure)) + cv2.imwrite(img_path, src_im) + logger.info("The visualized image saved in {}".format(img_path)) + if count > 1: + logger.info("Avg Time: {}".format(total_time / (count - 1))) diff --git a/tools/infer/predict_rec.py b/tools/infer/predict_rec.py index fd895e50..1cb6e01b 100755 --- a/tools/infer/predict_rec.py +++ b/tools/infer/predict_rec.py @@ -54,6 +54,13 @@ class TextRecognizer(object): "character_dict_path": args.rec_char_dict_path, "use_space_char": args.use_space_char } + elif self.rec_algorithm == "RARE": + postprocess_params = { + 'name': 'AttnLabelDecode', + "character_type": args.rec_char_type, + "character_dict_path": args.rec_char_dict_path, + "use_space_char": args.use_space_char + } self.postprocess_op = build_post_process(postprocess_params) self.predictor, self.input_tensor, self.output_tensors = \ utility.create_predictor(args, 'rec', logger) @@ -230,7 +237,7 @@ class TextRecognizer(object): output = output_tensor.copy_to_cpu() outputs.append(output) preds = outputs[0] - + self.predictor.try_shrink_memory() rec_result = self.postprocess_op(preds) for rno in range(len(rec_result)): rec_res[indices[beg_img_no + rno]] = rec_result[rno] @@ -241,9 +248,11 @@ class TextRecognizer(object): def main(args): image_file_list = get_image_file_list(args.image_dir) text_recognizer = TextRecognizer(args) + total_run_time = 0.0 + total_images_num = 0 valid_image_file_list = [] img_list = [] - for image_file in image_file_list: + for idx, image_file in enumerate(image_file_list): img, flag = check_and_read_gif(image_file) if not flag: img = cv2.imread(image_file) @@ -252,22 +261,29 @@ def main(args): continue valid_image_file_list.append(image_file) img_list.append(img) - try: - rec_res, predict_time = text_recognizer(img_list) - except: - logger.info(traceback.format_exc()) - logger.info( - "ERROR!!!! \n" - "Please read the FAQ:https://github.com/PaddlePaddle/PaddleOCR#faq \n" - "If your model has tps module: " - "TPS does not support variable shape.\n" - "Please set --rec_image_shape='3,32,100' and --rec_char_type='en' ") - exit() - for ino in range(len(img_list)): - logger.info("Predicts of {}:{}".format(valid_image_file_list[ino], - rec_res[ino])) + if len(img_list) >= args.rec_batch_num or idx == len( + image_file_list) - 1: + try: + rec_res, predict_time = text_recognizer(img_list) + total_run_time += predict_time + except: + logger.info(traceback.format_exc()) + logger.info( + "ERROR!!!! \n" + "Please read the FAQ:https://github.com/PaddlePaddle/PaddleOCR#faq \n" + "If your model has tps module: " + "TPS does not support variable shape.\n" + "Please set --rec_image_shape='3,32,100' and --rec_char_type='en' " + ) + exit() + for ino in range(len(img_list)): + logger.info("Predicts of {}:{}".format(valid_image_file_list[ + ino], rec_res[ino])) + total_images_num += len(valid_image_file_list) + valid_image_file_list = [] + img_list = [] logger.info("Total predict time for {} images, cost: {:.3f}".format( - len(img_list), predict_time)) + total_images_num, total_run_time)) if __name__ == "__main__": diff --git a/tools/infer/utility.py b/tools/infer/utility.py index 4171a29b..9019f003 100755 --- a/tools/infer/utility.py +++ b/tools/infer/utility.py @@ -47,6 +47,7 @@ def parse_args(): parser.add_argument("--det_db_box_thresh", type=float, default=0.5) parser.add_argument("--det_db_unclip_ratio", type=float, default=1.6) parser.add_argument("--max_batch_size", type=int, default=10) + parser.add_argument("--use_dilation", type=bool, default=False) # EAST parmas parser.add_argument("--det_east_score_thresh", type=float, default=0.8) parser.add_argument("--det_east_cover_thresh", type=float, default=0.1) @@ -73,6 +74,19 @@ def parse_args(): "--vis_font_path", type=str, default="./doc/fonts/simfang.ttf") parser.add_argument("--drop_score", type=float, default=0.5) + # params for e2e + parser.add_argument("--e2e_algorithm", type=str, default='PGNet') + parser.add_argument("--e2e_model_dir", type=str) + parser.add_argument("--e2e_limit_side_len", type=float, default=768) + parser.add_argument("--e2e_limit_type", type=str, default='max') + + # PGNet parmas + parser.add_argument("--e2e_pgnet_score_thresh", type=float, default=0.5) + parser.add_argument( + "--e2e_char_dict_path", type=str, default="./ppocr/utils/ic15_dict.txt") + parser.add_argument("--e2e_pgnet_valid_set", type=str, default='totaltext') + parser.add_argument("--e2e_pgnet_polygon", type=bool, default=True) + # params for text classifier parser.add_argument("--use_angle_cls", type=str2bool, default=False) parser.add_argument("--cls_model_dir", type=str) @@ -92,8 +106,10 @@ def create_predictor(args, mode, logger): model_dir = args.det_model_dir elif mode == 'cls': model_dir = args.cls_model_dir - else: + elif mode == 'rec': model_dir = args.rec_model_dir + else: + model_dir = args.e2e_model_dir if model_dir is None: logger.info("not find {} model file path {}".format(mode, model_dir)) @@ -123,9 +139,12 @@ def create_predictor(args, mode, logger): # cache 10 different shapes for mkldnn to avoid memory leak config.set_mkldnn_cache_capacity(10) config.enable_mkldnn() + # TODO LDOUBLEV: fix mkldnn bug when bach_size > 1 + #config.set_mkldnn_op({'conv2d', 'depthwise_conv2d', 'pool2d', 'batch_norm'}) args.rec_batch_num = 1 - # config.enable_memory_optim() + # enable memory optim + config.enable_memory_optim() config.disable_glog_info() config.delete_pass("conv_transpose_eltwiseadd_bn_fuse_pass") @@ -144,6 +163,22 @@ def create_predictor(args, mode, logger): return predictor, input_tensor, output_tensors +def draw_e2e_res(dt_boxes, strs, img_path): + src_im = cv2.imread(img_path) + for box, str in zip(dt_boxes, strs): + box = box.astype(np.int32).reshape((-1, 1, 2)) + cv2.polylines(src_im, [box], True, color=(255, 255, 0), thickness=2) + cv2.putText( + src_im, + str, + org=(int(box[0, 0, 0]), int(box[0, 0, 1])), + fontFace=cv2.FONT_HERSHEY_COMPLEX, + fontScale=0.7, + color=(0, 255, 0), + thickness=1) + return src_im + + def draw_text_det_res(dt_boxes, img_path): src_im = cv2.imread(img_path) for box in dt_boxes: diff --git a/tools/infer_det.py b/tools/infer_det.py index d890970e..913d617d 100755 --- a/tools/infer_det.py +++ b/tools/infer_det.py @@ -97,7 +97,7 @@ def main(): preds = model(images) post_result = post_process_class(preds, shape_list) boxes = post_result[0]['points'] - # write resule + # write result dt_boxes_json = [] for box in boxes: tmp_json = {"transcription": ""} diff --git a/tools/infer_e2e.py b/tools/infer_e2e.py new file mode 100755 index 00000000..b7503adb --- /dev/null +++ b/tools/infer_e2e.py @@ -0,0 +1,122 @@ +# Copyright (c) 2020 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function + +import numpy as np + +import os +import sys + +__dir__ = os.path.dirname(os.path.abspath(__file__)) +sys.path.append(__dir__) +sys.path.append(os.path.abspath(os.path.join(__dir__, '..'))) + +os.environ["FLAGS_allocator_strategy"] = 'auto_growth' + +import cv2 +import json +import paddle + +from ppocr.data import create_operators, transform +from ppocr.modeling.architectures import build_model +from ppocr.postprocess import build_post_process +from ppocr.utils.save_load import init_model +from ppocr.utils.utility import get_image_file_list +import tools.program as program + + +def draw_e2e_res(dt_boxes, strs, config, img, img_name): + if len(dt_boxes) > 0: + src_im = img + for box, str in zip(dt_boxes, strs): + box = box.astype(np.int32).reshape((-1, 1, 2)) + cv2.polylines(src_im, [box], True, color=(255, 255, 0), thickness=2) + cv2.putText( + src_im, + str, + org=(int(box[0, 0, 0]), int(box[0, 0, 1])), + fontFace=cv2.FONT_HERSHEY_COMPLEX, + fontScale=0.7, + color=(0, 255, 0), + thickness=1) + save_det_path = os.path.dirname(config['Global'][ + 'save_res_path']) + "/e2e_results/" + if not os.path.exists(save_det_path): + os.makedirs(save_det_path) + save_path = os.path.join(save_det_path, os.path.basename(img_name)) + cv2.imwrite(save_path, src_im) + logger.info("The e2e Image saved in {}".format(save_path)) + + +def main(): + global_config = config['Global'] + + # build model + model = build_model(config['Architecture']) + + init_model(config, model, logger) + + # build post process + post_process_class = build_post_process(config['PostProcess'], + global_config) + + # create data ops + transforms = [] + for op in config['Eval']['dataset']['transforms']: + op_name = list(op)[0] + if 'Label' in op_name: + continue + elif op_name == 'KeepKeys': + op[op_name]['keep_keys'] = ['image', 'shape'] + transforms.append(op) + + ops = create_operators(transforms, global_config) + + save_res_path = config['Global']['save_res_path'] + if not os.path.exists(os.path.dirname(save_res_path)): + os.makedirs(os.path.dirname(save_res_path)) + + model.eval() + with open(save_res_path, "wb") as fout: + for file in get_image_file_list(config['Global']['infer_img']): + logger.info("infer_img: {}".format(file)) + with open(file, 'rb') as f: + img = f.read() + data = {'image': img} + batch = transform(data, ops) + images = np.expand_dims(batch[0], axis=0) + shape_list = np.expand_dims(batch[1], axis=0) + images = paddle.to_tensor(images) + preds = model(images) + post_result = post_process_class(preds, shape_list) + points, strs = post_result['points'], post_result['strs'] + # write resule + dt_boxes_json = [] + for poly, str in zip(points, strs): + tmp_json = {"transcription": str} + tmp_json['points'] = poly.tolist() + dt_boxes_json.append(tmp_json) + otstr = file + "\t" + json.dumps(dt_boxes_json) + "\n" + fout.write(otstr.encode()) + src_img = cv2.imread(file) + draw_e2e_res(points, strs, config, src_img, file) + logger.info("success!") + + +if __name__ == '__main__': + config, device, logger, vdl_writer = program.preprocess() + main() diff --git a/tools/program.py b/tools/program.py index 34d484d8..c22bf18b 100755 --- a/tools/program.py +++ b/tools/program.py @@ -182,6 +182,8 @@ def train(config, model_average = False model.train() + use_srn = config['Architecture']['algorithm'] == "SRN" + if 'start_epoch' in best_model_dict: start_epoch = best_model_dict['start_epoch'] else: @@ -200,7 +202,7 @@ def train(config, break lr = optimizer.get_lr() images = batch[0] - if config['Architecture']['algorithm'] == "SRN": + if use_srn: others = batch[-4:] preds = model(images, others) model_average = True @@ -235,8 +237,9 @@ def train(config, vdl_writer.add_scalar('TRAIN/{}'.format(k), v, global_step) vdl_writer.add_scalar('TRAIN/lr', lr, global_step) - if dist.get_rank( - ) == 0 and global_step > 0 and global_step % print_batch_step == 0: + if dist.get_rank() == 0 and ( + (global_step > 0 and global_step % print_batch_step == 0) or + (idx >= len(train_dataloader) - 1)): logs = train_stats.log() strs = 'epoch: [{}/{}], iter: {}, {}, reader_cost: {:.5f} s, batch_cost: {:.5f} s, samples: {}, ips: {:.5f}'.format( epoch, epoch_num, global_step, logs, train_reader_cost / @@ -256,8 +259,12 @@ def train(config, min_average_window=10000, max_average_window=15625) Model_Average.apply() - cur_metric = eval(model, valid_dataloader, post_process_class, - eval_class) + cur_metric = eval( + model, + valid_dataloader, + post_process_class, + eval_class, + use_srn=use_srn) cur_metric_str = 'cur metric, {}'.format(', '.join( ['{}: {}'.format(k, v) for k, v in cur_metric.items()])) logger.info(cur_metric_str) @@ -321,7 +328,8 @@ def train(config, return -def eval(model, valid_dataloader, post_process_class, eval_class): +def eval(model, valid_dataloader, post_process_class, eval_class, + use_srn=False): model.eval() with paddle.no_grad(): total_frame = 0.0 @@ -332,7 +340,8 @@ def eval(model, valid_dataloader, post_process_class, eval_class): break images = batch[0] start = time.time() - if "SRN" in str(model.head): + + if use_srn: others = batch[-4:] preds = model(images, others) else: @@ -366,7 +375,8 @@ def preprocess(is_train=False): alg = config['Architecture']['algorithm'] assert alg in [ - 'EAST', 'DB', 'SAST', 'Rosetta', 'CRNN', 'STARNet', 'RARE', 'SRN', 'CLS' + 'EAST', 'DB', 'SAST', 'Rosetta', 'CRNN', 'STARNet', 'RARE', 'SRN', + 'CLS', 'PGNet' ] device = 'gpu:{}'.format(dist.ParallelEnv().dev_id) if use_gpu else 'cpu' @@ -386,6 +396,7 @@ def preprocess(is_train=False): logger = get_logger(name='root', log_file=log_file) if config['Global']['use_visualdl']: from visualdl import LogWriter + save_model_dir = config['Global']['save_model_dir'] vdl_writer_path = '{}/vdl/'.format(save_model_dir) os.makedirs(vdl_writer_path, exist_ok=True) vdl_writer = LogWriter(logdir=vdl_writer_path) diff --git a/tools/train.py b/tools/train.py index fab10b64..47358ca4 100755 --- a/tools/train.py +++ b/tools/train.py @@ -52,7 +52,10 @@ def main(config, device, logger, vdl_writer): train_dataloader = build_dataloader(config, 'Train', device, logger) if len(train_dataloader) == 0: logger.error( - 'No Images in train dataset, please check annotation file and path in the configuration file' + "No Images in train dataset, please ensure\n" + + "\t1. The images num in the train label_file_list should be larger than or equal with batch size.\n" + + + "\t2. The annotation file and path in the configuration file are provided normally." ) return @@ -89,8 +92,10 @@ def main(config, device, logger, vdl_writer): # load pretrain model pre_best_model_dict = init_model(config, model, logger, optimizer) - logger.info('train dataloader has {} iters, valid dataloader has {} iters'. - format(len(train_dataloader), len(valid_dataloader))) + logger.info('train dataloader has {} iters'.format(len(train_dataloader))) + if valid_dataloader is not None: + logger.info('valid dataloader has {} iters'.format( + len(valid_dataloader))) # start train program.train(config, train_dataloader, valid_dataloader, device, model, loss_class, optimizer, lr_scheduler, post_process_class, diff --git a/train.sh b/train.sh index 8fe861a3..4225470c 100644 --- a/train.sh +++ b/train.sh @@ -1,2 +1,2 @@ # recommended paddle.__version__ == 2.0.0 -python3 -m paddle.distributed.launch --gpus '0,1,2,3,4,5,6,7' tools/train.py -c configs/rec/rec_mv3_none_bilstm_ctc.yml +python3 -m paddle.distributed.launch --log_dir=./debug/ --gpus '0,1,2,3,4,5,6,7' tools/train.py -c configs/rec/rec_mv3_none_bilstm_ctc.yml