MainWindow::MainWindow(QWidget *parent):QMainWindow(parent) { QDockWidget *dw = new QDockWidget("pp", this); QPushButton *btn = new QPushButton(dw); dw->setWidget(btn); addDockWidget(Qt::LeftDockWidgetArea, dw); }
dock->adjustSize();
#pragma once#include <QObject>class QMainWindow;class DockPlacer : public QObject{ Q_OBJECTpublic: DockPlacer( QMainWindow * mainWindow ); ~DockPlacer();protected: void timerEvent( QTimerEvent * e ); bool eventFilter( QObject * o, QEvent * e );private: class Private; Private * d;};
#include "DockPlacer.h"#include <QMainWindow>#include <QDockWidget>#include <QApplication>#include <QStyle>#include <QMouseEvent>#include <QStylePainter>#include <QRubberBand>#include <QStyleOption>#include <QPointer>#include <QBasicTimer>#include "indicator.xpm"static const int Radius = 18;class DockPlacer::Private{public: void create_band(); void collect_areas(); void update_area( const QPoint & pos, QDockWidget * dock ); void place_dock( QDockWidget * dock );public: QMainWindow * w; QWidget * band; QBasicTimer added_timer; QList< QPointer<QObject> > added_objects; QImage image_center; QImage image_dock; bool pressed; bool dragging; QPoint grabbed_pos; struct Area { QDockWidget * dock; QRect rect; Qt::DockWidgetArea area; }; QList<Area> areas; int current_area; int current_direction;};void DockPlacer::Private::create_band(){ if ( band ) return; band = new QWidget( w, Qt::Widget ); if ( image_center.isNull() ) image_center = QImage( IndicatorImage ); band->setAttribute( Qt::WA_TransparentForMouseEvents );#ifndef Q_WS_WIN band->setAttribute( Qt::WA_NoSystemBackground );#endif //Q_WS_WIN band->setAttribute( Qt::WA_WState_ExplicitShowHide ); band->setVisible( false );}void DockPlacer::Private::collect_areas(){ areas.clear(); Area central_area; central_area.dock = 0; central_area.rect = w->centralWidget()->geometry(); central_area.area = Qt::AllDockWidgetAreas; areas << central_area; QObjectList ch = w->children(); for ( QListIterator<QObject *> it( ch ); it.hasNext(); ) { QObject * o = it.next(); QDockWidget * dock = qobject_cast<QDockWidget *>( o ); if ( !dock ) continue; if ( dock->isFloating() ) continue; if ( !dock->isVisible() ) continue; bool found = false; for ( QListIterator<Area> ait( areas ); ait.hasNext(); ) { if ( ait.next().rect == dock->geometry() ) { found = true; break; } } if ( found ) continue; Area area; area.dock = dock; area.rect = dock->geometry(); area.area = w->dockWidgetArea( dock ); areas << area; }}void DockPlacer::Private::update_area( const QPoint & pos, QDockWidget * dock ){ int cur_area = -1; int cur_direction = Qt::NoDockWidgetArea; for ( int i = 0; i < areas.count(); i++ ) { const Area & area = areas.at( i ); if ( !area.rect.contains( pos ) ) continue; cur_area = i; // block docking to already created areas if ( !(area.area & dock->allowedAreas()) ) continue; QPoint center = area.rect.center(); QPoint offset = pos - center; if ( QRect( -Radius, -Radius, Radius*2, Radius*2 ).contains( offset ) ) cur_direction = Qt::AllDockWidgetAreas; else if ( QRect( -Radius, -Radius*3, Radius*2, Radius*2 ).contains( offset ) ) cur_direction = Qt::TopDockWidgetArea; else if ( QRect( -Radius, Radius, Radius*2, Radius*2 ).contains( offset ) ) cur_direction = Qt::BottomDockWidgetArea; else if ( QRect( -Radius*3, -Radius, Radius*2, Radius*2 ).contains( offset ) ) cur_direction = Qt::LeftDockWidgetArea; else if ( QRect( Radius, -Radius, Radius*2, Radius*2 ).contains( offset ) ) cur_direction = Qt::RightDockWidgetArea; // block docking to the central widget if ( area.area == Qt::AllDockWidgetAreas && cur_direction == Qt::AllDockWidgetAreas ) cur_direction = Qt::NoDockWidgetArea; // block docking to not allowed direction of the central widget if ( area.area == Qt::AllDockWidgetAreas && !(cur_direction & dock->allowedAreas()) ) cur_direction = Qt::NoDockWidgetArea; break; } if ( cur_area != current_area || cur_direction != current_direction ) { current_area = cur_area; current_direction = cur_direction; band->update(); } band->update();}void DockPlacer::Private::place_dock( QDockWidget * dock ){ if ( current_area == -1 || current_direction == Qt::NoDockWidgetArea ) return; const Area & area = areas.at( current_area ); if ( area.dock == dock ) return; if ( !area.dock ) { // this is a central widget if ( current_direction == Qt::AllDockWidgetAreas ) { // place dock contents to central widget } else { dock->setFloating( false ); w->addDockWidget( (Qt::DockWidgetArea)current_direction, dock, current_direction == Qt::TopDockWidgetArea || current_direction == Qt::BottomDockWidgetArea ? Qt::Vertical : Qt::Horizontal ); } } else { dock->setFloating( false ); switch ( current_direction ) { case Qt::TopDockWidgetArea: w->splitDockWidget( area.dock, dock, Qt::Vertical ); w->splitDockWidget( dock, area.dock, Qt::Vertical ); break; case Qt::BottomDockWidgetArea: w->splitDockWidget( area.dock, dock, Qt::Vertical ); break; case Qt::LeftDockWidgetArea: w->splitDockWidget( area.dock, dock, Qt::Horizontal ); w->splitDockWidget( dock, area.dock, Qt::Horizontal ); break; case Qt::RightDockWidgetArea: w->splitDockWidget( area.dock, dock, Qt::Horizontal ); break; case Qt::AllDockWidgetAreas: w->tabifyDockWidget( area.dock, dock ); } }}DockPlacer::DockPlacer( QMainWindow * main_window ) : d( new Private ){ d->w = main_window; d->w->installEventFilter( this ); d->pressed = false; d->dragging = false; d->band = 0;}DockPlacer::~DockPlacer(){ if ( d->band ) delete d->band; delete d;}void DockPlacer::timerEvent( QTimerEvent * e ){ if ( e->timerId() == d->added_timer.timerId() ) { d->added_timer.stop(); while ( !d->added_objects.isEmpty() ) { QDockWidget * dock = qobject_cast<QDockWidget *>( d->added_objects.takeFirst() ); if ( dock ) dock->installEventFilter( this ); } return; }}bool DockPlacer::eventFilter( QObject * o, QEvent * e ){ if ( o == d->w && e->type() == QEvent::ChildAdded ) { QChildEvent * ce = static_cast<QChildEvent *>( e ); d->added_objects << ce->child(); d->added_timer.start( 0, this ); return false; } if ( o == d->band ) { if ( e->type() == QEvent::Show ) { d->band->raise(); e->accept(); return true; } if ( e->type() == QEvent::Paint ) { QStylePainter p( d->band ); if ( d->current_area != -1 ) { const Private::Area & area = d->areas.at( d->current_area ); p.drawImage( area.rect.center() - QPoint( d->image_center.width()/2, d->image_center.height()/2 ), d->image_center ); QRect rc; switch ( d->current_direction ) { case Qt::AllDockWidgetAreas: rc = area.rect; break; case Qt::TopDockWidgetArea: rc = QRect( area.rect.left(), area.rect.top(), area.rect.width(), area.rect.height()/2 ); break; case Qt::BottomDockWidgetArea: rc = QRect( area.rect.left(), area.rect.bottom() - area.rect.height()/2, area.rect.width(), area.rect.height()/2 ); break; case Qt::LeftDockWidgetArea: rc = QRect( area.rect.left(), area.rect.top(), area.rect.width()/2, area.rect.height() ); break; case Qt::RightDockWidgetArea: rc = QRect( area.rect.right() - area.rect.width()/2, area.rect.top(), area.rect.width()/2, area.rect.height() ); break; } if ( !rc.isEmpty() ) { #if 0 QStyleOptionRubberBand opt; opt.shape = QRubberBand::Rectangle; opt.rect = rc; #ifndef Q_WS_MAC opt.opaque = true; #else opt.opaque = d->band->windowFlags() & Qt::ToolTip; #endif p.drawControl( QStyle::CE_RubberBand, opt ); #endif p.save(); QColor highlight = Qt::magenta; QPen pen( highlight.dark( 120 ) ); #ifdef Q_WS_MAC pen.setWidth( pen.width() + 2 ); p.setBrush( Qt::NoBrush ); #else QColor dimHighlight( qMin( highlight.red()/2 + 110, 255 ), qMin( highlight.green()/2 + 110, 255 ), qMin( highlight.blue()/2 + 110, 255 ), 127 ); p.setBrush( dimHighlight ); #endif p.setPen( pen ); p.drawRect( rc.adjusted( 0, 0, -1, -1 ) ); p.restore(); } } p.drawImage( d->band->mapFromGlobal( QCursor::pos() ) - d->grabbed_pos, d->image_dock ); e->accept(); return true; } return false; } QDockWidget * dock = qobject_cast<QDockWidget *>( o ); if ( dock ) { switch ( e->type() ) { case QEvent::MouseButtonPress: { QMouseEvent * me = (QMouseEvent *)e; if ( me->button() != Qt::LeftButton ) return false; if ( !(dock->features() & QDockWidget::DockWidgetMovable) ) return false; int fw = dock->isFloating() ? dock->style()->pixelMetric( QStyle::PM_DockWidgetFrameWidth, 0, dock ) : 0; QRect title = QRect( QPoint( fw, fw ), QSize( dock->width() - fw*2, dock->height() - fw*2 ) ); if ( dock->isFloating() ) { d->grabbed_pos = me->pos(); } else { d->grabbed_pos = QPoint( dock->width()/2, 5 ); } if ( me->button() == Qt::LeftButton && title.contains( me->pos() ) ) { d->pressed = true; dock->grabMouse(); return true; } } return false; case QEvent::MouseMove: { QMouseEvent * me = (QMouseEvent *)e; if ( !(me->buttons() & Qt::LeftButton) ) return false; if ( !d->dragging ) { if ( !d->pressed ) return false; if ( dock->isFloating() ) { dock->hide(); } else { dock->hide(); dock->setFloating( true ); dock->adjustSize(); d->grabbed_pos = QPoint( dock->width()/2, 5 ); } QImage im = QPixmap::grabWidget( dock ).toImage(); d->image_dock = QImage( im.size(), QImage::Format_ARGB32_Premultiplied ); QPainter p( &d->image_dock ); p.drawImage( QPoint(), im ); p.setBrush( QColor( 0, 0, 0, 100 ) ); p.setCompositionMode( QPainter::CompositionMode_DestinationOut ); p.drawRect( im.rect() ); p.end(); d->w->setUpdatesEnabled( false ); // processing events will update dock layout QApplication::instance()->processEvents(); // fill d->areas with available areas to dock d->collect_areas(); // move dock to cursor dock->move( me->globalPos() - d->grabbed_pos ); if ( !d->band ) { d->create_band(); d->band->installEventFilter( this ); } d->current_area = -2; d->update_area( d->w->mapFromGlobal( me->globalPos() ), dock ); d->band->setGeometry( d->w->rect() ); d->band->show(); d->dragging = true; d->w->setUpdatesEnabled( true ); e->accept(); } else { d->update_area( d->w->mapFromGlobal( me->globalPos() ), dock ); dock->move( me->globalPos() - d->grabbed_pos ); e->accept(); } } return true; case QEvent::MouseButtonRelease: { QMouseEvent * me = (QMouseEvent *)e; d->pressed = false; dock->releaseMouse(); if ( !d->dragging ) return false; d->band->hide(); d->dragging = false; dock->show(); d->place_dock( dock ); if ( dock->isFloating() ) dock->move( me->globalPos() - d->grabbed_pos ); e->accept(); } return true; } } return false;}
/* XPM */static char * IndicatorImage[]={"88 88 164 2","Qt c None",".A c #3b4963","ai c #3c4a65",".z c #3e4c66","ak c #3e4c67","ah c #3f4d68",".y c #414f6a","#c c #4170ca","ag c #42506c","#b c #4372cb",".x c #45536c","#a c #4574cd","af c #46546e","#S c #4662bc","#Q c #4662bd","#R c #4663bd",".w c #495671","## c #4976ce","ae c #4a5773","#O c #4c4faa",".U c #4c77ce","#P c #4d4fa9","#N c #4d4faa",".v c #4d5b75","#. c #4d7ad1","ad c #4e5c77","aj c #4f3f97",".T c #4f7ad0",".9 c #507dd2",".B c #51409a",".u c #515e79","#0 c #52419b",".V c #52419c","ac c #52607b",".S c #547ed3",".8 c #5580d5",".t c #56637e","ab c #576580",".R c #5882d5",".7 c #5a84d7",".s c #5b6883","aa c #5c6a85",".6 c #5d88d9",".Q c #5e87d8",".r c #5f6c88","a# c #616e8a",".5 c #628bdb",".q c #63718c","ao c #656b96","ap c #656b97","a. c #65738e",".P c #658cdc",".4 c #668fde","at c #676d95",".p c #677591","#9 c #697793",".o c #6b7a95",".3 c #6b93e0",".O c #6c93df","#8 c #6d7c97",".2 c #6e96e2",".n c #6f7d9a","#7 c #717f9c",".1 c #7299e4",".m c #73819d",".N c #7398e3","am c #74819d","#6 c #75839f",".0 c #759ce5",".l c #7684a0",".j c #7685a0","aB c #777ba3",".Z c #779de7","al c #7885a2","#5 c #7886a3",".k c #7887a2",".M c #799ee7","aA c #7a7ea5","#4 c #7a89a5",".Y c #7a9fe8","ar c #7b7fa6",".L c #80a5eb","ax c #8186a5","aw c #868ba9","ay c #878ca9",".K c #87aaef","aF c #888ca9","aE c #888daa",".J c #8db0f2",".I c #93b5f5",".H c #99b9f7",".G c #9dbdfb","aC c #a0a3ba",".F c #a0c0fc","az c #a3a6bd","au c #a7aac1","aD c #a8a8a8","av c #b1b3ca","aq c #b4c8e1","an c #b4c9e1",".# c #b5b5b5","#f c #b6cbe2","#g c #b7cbe2","#e c #b7cbe3","#h c #b7cce3","#k c #bbcee4","#i c #bbcee5","#m c #bbcfe4","#l c #bbcfe5","#j c #bccee5","aG c #bdbdbd",".W c #c0c0c0","#o c #c0d2e7","#p c #c0d2e8","#r c #c0d3e7","#q c #c1d2e7","#n c #c1d2e8",".a c #c3c3c3","#V c #c4c4c4",".b c #c5c5c5","#t c #c5d6ea","#u c #c5d7ea",".c c #c6c6c6","#s c #c6d6ea","#v c #c6d7ea","#Z c #c8c8c8",".d c #c9c9c9","#z c #cbdaec","#x c #cbdaed","#y c #cbdbec","#w c #cbdbed",".e c #cccccc",".f c #cecece","#T c #cfcfcf","#F c #cfdeef","#D c #cfdfef","aH c #d0d0d0","#B c #d0deef","#E c #d0def0","#A c #d0dfef","#C c #d0dff0",".g c #d1d1d1","#W c #d2d2d2","#d c #d4d4d4","#I c #d4e1f1","#H c #d4e1f2","#G c #d4e2f1","#K c #d4e2f2",".C c #d5d5d5","#J c #d5e2f1",".h c #d7d7d7","#L c #d7e4f3",".i c #d8d8d8","#U c #d9d9d9",".D c #dcdcdc","#3 c #dedede","#Y c #dfdfdf",".E c #e0e0e0","#X c #e1e1e1","#2 c #e2e2e2","#1 c #e3e3e3",".X c #e4e4e4","as c #e5e6ee","#M c #ffffff","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.a.b.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.c.d.e.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.b.d.g.h.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.e.h.j.k.l.m.n.o.p.q.r.s.t.u.v.w.v.w.x.y.z.A.B.C.D.E.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B.F.F.G.H.I.J.K.L.M.N.O.P.Q.P.Q.R.S.T.U.V.W.i.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B.Y.Z.0.1.2.3.4.5.6.7.8.9#..9#.###a#b#c.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#e#e#f#g#g#g#e#e#g#e#h#e#g#g#g#e#g#g#e.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#i#i#j#i#k#l#i#k#l#l#k#i#k#k#m#l#j#i#k.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#n#o#p#o#o#o#o#q#o#o#r#o#o#p#o#r#o#q#o.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#s#t#u#t#t#v#u#s#s#u#t#t#t#t#t#u#u#u#s.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#w#w#x#x#w#w#x#w#y#z#z#w#w#w#x#w#w#w#x.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#A#B#B#C#B#B#B#B#D#C#B#E#A#A#A#F#F#A#A.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#G#H#I#H#J#H#K#G#G#K#G#K#K#G#H#I#G#K#G.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M.V#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M.V.V.V#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#N#N#N#O#P#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#Q#R#S#S#S#S#Q#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.a.c#T#U.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.E.D.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a#V#V.d#W.D.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X#X#Y.h.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a#V#Z#Z#T.h#Y#0#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X#1#2#3.h.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a#V#Z#T#T.h#3#2.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.##d.X.X.X#2#3.h.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a#V#Z#T.h.h#3#2.X.i.W.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.W.i.X.X.X.X#2#3.h.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.a#V#Z#T.h#3#2.X.X.E.i#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d.i.E.X.X.X.X.X#2#3.h.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#",".#.a.a.b.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.d#T.h#3#2.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X#2#3.h#T.d.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.c.#",".#.a.c.d.e.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f#T#W.h#3#2.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X#2#3.h#W#T.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.#",".#.b.d.g.h.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i#U.D#Y#2.X.X.X.X.V#4#4#5#5#6#7#8#9a.a#aaabacadaeadaeafagahai.V.i.E.X.X.X.X.X.X.X#2#Y.D#U.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.i.#",".#.c.e.haj.k.k.l.k.l.m.n.o.p.q.r.s.t.u.v.w.v.w.x.yakai.V.i.E.X.X.V.G.H.F.F.G.H.I.J.K.L.M.N.O.P.Q.P.Q.R.S.T.U.V.W.i.X.X.X.V#4#4#5#4alam.n.o.p.q.r.s.t.u.v.w.v.w.x.y.z.A.B.C.D.E.#",".#.c.f.i.B.G.H.F.H.F.G.H.I.J.K.L.M.N.O.P.Q.P.Q.R.S.T.U.V.W.i.X.X.V.0.1.Z.Z.0.1.2.3.4.5.6.7.8.9#..9#.###a#b#c.V.##d.X.X.X.V.G.H.F.H.F.G.H.I.J.K.L.M.N.O.P.Q.P.Q.R.S.T.U.V.W.i.X.#",".#.c.f.i.B.0.1.Z.1.Z.0.1.2.3.4.5.6.7.8.9#..9#.###a#b#c.V.##d.X.X.V#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.X.V.0.1.Z.1.Z.0.1.2.3.4.5.6.7.8.9#..9#.###a#b#c.V.##d.X.#",".#.c.f.i.Banan#g#j#o#u#w#F#G#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M#Lao#Lap#L.V#L.V#L.V#L.V#L.V#Lap#Lao#L#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#I#B#x#u#p#j#fanan.V.##d.X.#",".#.c.f.i.Banan#e#l#r#u#w#F#I#L.V#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#Mao#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lao#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M.V#L#H#C#x#t#o#i#ganan.V.##d.X.#",".#.c.f.i.Banan#g#m#o#t#x#A#H#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#J#B#w#t#o#k#gaqan.V.##d.X.#",".#.c.f.i.Banan#g#k#p#t#w#A#G#L.V#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M.V#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L.V#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M.V#L#H#B#w#v#o#l#ganan.V.##d.X.#",".#.c.f.i.Banan#g#k#o#t#w#A#K#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#K#B#x#u#o#i#eanaq.V.##d.X.#",".#.c.f.i.Baqan#e#i#o#t#w#E#K#L.V#M#M#M#M#M#M#Q#M#M#M#M.V.##d.X.X.V#M.V#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L.V#M.V.##d.X.X.X.V#M#M#M#M#Q#M#M#M#M#M#M.V#L#G#B#w#s#q#k#eanan.V.##d.X.#",".#.c.f.i.Banaq#h#k#r#t#z#B#G#L#L#M#M#M#M#M#P#S#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#M.V.##d.X.X.X.V#M#M#M#M#R#N#M#M#M#M#M#L#L#G#D#y#s#o#l#ganan.V.##d.X.#",".#.c.f.i.Banan#e#l#o#u#z#C#K#L.V#M#M#M#M.V#O#S#M#M#M#M.V.##d.X.X.V#Map#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lap#M.V.##d.X.X.X.V#M#M#M#M#S#N.V#M#M#M#M.V#L#K#C#z#u#o#l#eanan.V.##d.X.#",".#.c.f.i.Banan#g#l#o#s#y#D#G#L#L#M#M#M.V.V#N#S#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#M.V.##d.X.X.X.V#M#M#M#M#S#N.V.V#M#M#M#L#L#G#B#z#t#r#k#haqan.V.##d.X.#",".#.c.f.i.Banan#e#k#q#s#w#B#G#L.V#M#M#M#M.V#N#S#M#M#M#M.V.##d.X.X.V#M.V#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L.V#M.V.##d.X.X.X.V#M#M#M#M#S#O.V#M#M#M#M.V#L#K#E#w#t#o#i#eanaq.V.##d.X.#",".#.c.f.i.Baqan#e#i#o#u#x#B#K#L#L#M#M#M#M#M#N#R#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#M.V.##d.X.X.X.V#M#M#M#M#S#P#M#M#M#M#M#L#L#K#A#w#t#o#k#ganan.V.##d.X.#",".#.c.f.i.Banan#g#l#o#v#w#B#H#L.V#M#M#M#M#M#M#Q#M#M#M#M.V.##d.X.X.V#M.V#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#L#Lao#M.V.##d.X.X.X.V#M#M#M#M#Q#M#M#M#M#M#M.V#L#G#A#w#t#p#k#ganan.V.##d.X.#",".#.c.f.i.Banaq#g#k#o#t#w#B#J#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L.V#L.V#L.V#L.V#Lap#Lao#M#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#H#A#x#t#o#m#ganan.V.##d.X.#",".#.c.f.i.Banan#g#i#o#t#x#C#H#L.V#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#Map#L#L#L#L#Lap#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M.V#L#I#F#w#u#r#l#eanan.V.##d.X.#",".#.c.f.i.Banan#f#j#p#u#x#B#I#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#M#L#L#L#L#L#L#L#M.V.V.V.V.V.V.V.V.V.V.V.V.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#G#F#w#u#o#j#ganan.V.##d.X.#",".#.c.f.i.Banan#e#i#o#t#w#B#H#L.V#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.V#Mao#L#L#L#L#Lao#M.V#M#M#M#M#M.V#M#M#M#M#M.V.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M.V#L#K#A#w#u#q#i#ganan.V.##d.X.#",".#.c.f.i.Banan#e#i#n#s#w#A#G#L#L#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.Xaras#Mao#Lao#Lao#Masatas.b.#.basatas.b.#.basat.##d.X.X.X.V#M#M#M#M#M#M#M#M#M#M#M#L#L#G#A#x#s#o#k#eanan.V.##d.X.#",".#.c.f.i.B.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.##d.X.Xauavas#M#M#M#M#Masavawavas#Masavaxavas#Masavay.##d.X.X.X.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.##d.X.#",".#.c.f.i.C.W.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.W.i.X.X.iazaA.V.V.V.V.VaBaCaDaEat.VataFaDaFat.VatayaDaG.i.X.X.X.i.W.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.W.i.X.#",".#.c.f.i.D.i#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d.i.E.X.X.EaHaG.#.#.#.#.#.#.#aG.baG.#.#.#aG.baG.#.#.#aGaH.E.X.X.X.E.i#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d.i.E.X.#",".#.c.f.i.E.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.E.i#d#d#d#d#d#d#d.i.D.i#d#d#d.i.D.i#d#d#d.i.E.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#",".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.E#X#1.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.D#Y#2.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.X.X.X.X#4#4#5#6#7#8#9a.a#aaabacadaeadaeafagahai.V.i.E.X.X.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.X.X.X.V.F.F.G.H.I.J.K.L.M.N.O.P.Q.P.Q.R.S.T.U.V.W.i.X.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.X.X.V.Y.Z.0.1.2.3.4.5.6.7.8.9#..9#.###a#b#c.V.##d.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.X.V#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.h#3#2.V#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.##T.h#Y#0#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.d#W.D.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c#T#U.B#M#M#M#M#M#M#Q#S#S#S#S#R#Q#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#P#O#N#N#N#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M.V.V.V#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M.V#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M#M.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V#L.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#A#A#F#F#A#A#A#E#B#C#D#B#B#B#B#C#B#B#A.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#A#A#F#F#A#A#A#E#B#C#D#B#B#B#B#C#B#B#A.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#x#w#w#w#x#w#w#w#z#z#y#w#x#w#w#x#x#w#w.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#s#u#u#u#t#t#t#t#t#u#s#s#u#v#t#t#u#t#s.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#o#q#o#r#o#p#o#o#r#o#o#q#o#o#o#o#p#o#n.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#k#i#j#l#m#k#k#i#k#l#l#k#i#l#k#i#j#i#i.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B#e#g#g#e#g#g#g#e#h#e#g#e#e#g#g#g#f#e#e.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.Bananananananananaqanananananaqanananan.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.Banananananananaqananananaqanananananan.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.B.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.V.##d.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.C.W.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.W.i.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.D.i#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d#d.i.E.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.i.E.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt","QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
new DockPlacer( this );
......................connect(dock, SIGNAL (topLevelChanged (bool)), this, SLOT (restoreSize(bool)));
void MainWindow::restoreSize(bool flot){ if(flot) { dock->adjustSize(); } else { return; }}
QSizePolicy::Maximum