From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lennart Borgman Newsgroups: gmane.emacs.devel Subject: Re: moving window handling into lisp Date: Thu, 13 Aug 2009 13:32:14 +0200 Message-ID: References: <4A82C49A.4000209@gmx.at> <4A82F64B.2030606@gmx.at> <4A83E300.5000104@gmx.at> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e646522c946bec047104497e X-Trace: ger.gmane.org 1250163173 7910 80.91.229.12 (13 Aug 2009 11:32:53 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 13 Aug 2009 11:32:53 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: martin rudalics Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Aug 13 13:32:48 2009 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1MbYXz-0007LP-7L for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 13:32:47 +0200 Original-Received: from localhost ([127.0.0.1]:35327 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbYXw-0008An-8x for ged-emacs-devel@m.gmane.org; Thu, 13 Aug 2009 07:32:40 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MbYXg-0007zJ-4k for emacs-devel@gnu.org; Thu, 13 Aug 2009 07:32:24 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MbYXa-0007vH-QM for emacs-devel@gnu.org; Thu, 13 Aug 2009 07:32:22 -0400 Original-Received: from [199.232.76.173] (port=42273 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MbYXa-0007v6-CR for emacs-devel@gnu.org; Thu, 13 Aug 2009 07:32:18 -0400 Original-Received: from mail-yx0-f172.google.com ([209.85.210.172]:49705) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MbYXZ-0000sL-Qc for emacs-devel@gnu.org; Thu, 13 Aug 2009 07:32:18 -0400 Original-Received: by yxe2 with SMTP id 2so919218yxe.14 for ; Thu, 13 Aug 2009 04:32:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=bR3+56/DMngM8xIPhhb/zWo+JJhPtoTyyd0sL69uKEo=; b=KX6/VeUrkRoBEu/bjUl8ejtDtwY70njx2NSnGhXMDZtsvCOPHGs/w8golGqvTUjChV 1Uru5p8dRWOoMz8H530353eVGHbAJXukmfuvy5ugnsxqaltUxi8EYYKEKOyk5umCXmcT t4ml97zMGwKhldWKTbXukLKgpAC59aAu+WkOM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=q0KTK9ZGiSaE7bKvqeOP6oCh+EzUWDm9w/IS9HgFcpekAuMKxTV3eW3TV9UOGeZN3M hQD7ZtHh/pLc++h1B+yk8RMFfhjZrms8aBvXOrnXRJVRMTv3j5Da/yyrvrtMzSUSi5uw qxPdwcI82bP/85zt1FOClMAo45ZC01iSVnGbU= Original-Received: by 10.100.40.17 with SMTP id n17mr852129ann.187.1250163135113; Thu, 13 Aug 2009 04:32:15 -0700 (PDT) In-Reply-To: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 2) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:114173 Archived-At: --0016e646522c946bec047104497e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable New, version. This one does walk down too... ;-) On Thu, Aug 13, 2009 at 12:25 PM, Lennart Borgman wrote: > On Thu, Aug 13, 2009 at 11:57 AM, Lennart > Borgman wrote: >> On Thu, Aug 13, 2009 at 11:55 AM, martin rudalics wrote= : >>>> Ehum, as always..., here is a better, somewhat more working version...= ;-) >>> >>> IIUC you're going down in some window tree and try to distribute the >>> available space among the children of each internal window. =C2=A0But t= he >>> interesting part is when you have to backtrack because some window >>> didn't fit into its parent and you have to shrink (or enlarge) some >>> (grand-)parent's sibling. =C2=A0I couldn't find that part :-( >> >> >> And that is the whole point of going up the tree and collecting sizes fi= rst... > > > Here is the walking down part too. You have to tell me what you are missi= ng. > --0016e646522c946bec047104497e Content-Type: text/plain; charset=US-ASCII; name="win-alg.el" Content-Disposition: attachment; filename="win-alg.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fybeu6g41 Ozs7IHdpbi1hbGcuZWwgLS0tIFdpbmRvdyBzaXplIGNvbXB1dGF0aW9uDQo7Ow0KOzsgQXV0aG9y OiBMZW5uYXJ0IEJvcmdtYW4gKGxlbm5hcnQgTyBib3JnbWFuIEEgZ21haWwgTyBjb20pDQo7OyBD cmVhdGVkOiAyMDA5LTA4LTEyIFdlZA0KOzsgVmVyc2lvbjogMC4yDQo7OyBMYXN0LVVwZGF0ZWQ6 IDIwMDktMDgtMTMgVGh1DQo7Ow0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzsNCjs7OyBDb2RlOg0KDQoNCjs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ow0KOzs7IFdp bmRvdyBjcmVhdGlvbiBldGMNCg0KOzsoZGVmdW4gd2EtbWFrZS13aW5kb3cgKHdpZHRoIHd1bWlu IHd1bWF4IGhlaWdodCBobWluIGhtYXgpDQooZGVmdW4gd2EtbWFrZS13aW5kb3cgKG5hbWUgd2lk dGggd3VtaW4gd3VtYXgpDQogIChsaXN0IChsaXN0ICduYW1lIG5hbWUpICAgICAgICAgICAgOzsg RWFzaWVyIGNvbW11bmljYXRpb24gLi4uDQogICAgICAgIChsaXN0ICdjaGlsZCBuaWwpICAgICAg ICAgICAgOzsgQ2hpbGQgd2luZG93cw0KICAgICAgICAobGlzdCAndXNyLXNpemUgd3VtaW4gd3Vt YXgpIDs7IFJlc3RyaWN0aW9ucw0KICAgICAgICAobGlzdCAncmVxLXNpemUgbmlsIG5pbCkgICAg IDs7IFNsb3QgZm9yIGNvbXB1dGF0ZWQgcmVxdWlyZW1lbnRzLCB3dW1pbiB3dW1heA0KICAgICAg ICAobGlzdCAnc2V0LXNpemUgd2lkdGgpICAgICAgIDs7IFNsb3QgZm9yIHNldHRpbmcgbmV3IHNp emUNCiAgICAgICAgKSkNCg0KOzsgRml4LW1lOiBNYWtlIGRlZm1hY3JvIHRvIG1ha2UgdGhvc2Ug Z2V0dGVycyBzZXR0ZXJzLi4uIC0gaW5jbHVkaW5nDQo7OyBjaGVja3MuLi4NCg0KKGRlZnVuIHdh LW5hbWUgICh3aW5kb3cpIChudGggMSAobnRoIDAgd2luZG93KSkpIDs7ICduYW1lDQooZGVmdW4g d2EtY2hpbGQgKHdpbmRvdykgKG50aCAxIChudGggMSB3aW5kb3cpKSkgOzsgJ2NoaWxkDQooZGVm dW4gd2Etd3VtaW4gKHdpbmRvdykgKG50aCAxIChudGggMiB3aW5kb3cpKSkgOzsgJ3Vzci1zaXpl DQooZGVmdW4gd2Etd3VtYXggKHdpbmRvdykgKG50aCAyIChudGggMiB3aW5kb3cpKSkgOzsgJ3Vz ci1zaXplDQooZGVmdW4gd2Etd3JtaW4gKHdpbmRvdykgKG50aCAxIChudGggMyB3aW5kb3cpKSkg OzsgJ3JlcS1zaXplDQooZGVmdW4gd2Etd3JtYXggKHdpbmRvdykgKG50aCAyIChudGggMyB3aW5k b3cpKSkgOzsgJ3JlcS1zaXplDQooZGVmdW4gd2Etd3NldCAgKHdpbmRvdykgKG50aCAxIChudGgg NCB3aW5kb3cpKSkgOzsgJ3NldC1zaXplDQoNCihkZWZ1biB3YS1zZXQtbmFtZSAgICh3aW5kb3cg bmFtZSkgIChzZXRjYXIgKG50aGNkciAxIChudGggMCB3aW5kb3cpKSBuYW1lKSkgIDs7ICduYW1l DQooZGVmdW4gd2Etc2V0LWNoaWxkICAod2luZG93IGNoaWxkKSAoc2V0Y2FyIChudGhjZHIgMSAo bnRoIDEgd2luZG93KSkgY2hpbGQpKSA7OyAnbmFtZQ0KKGRlZnVuIHdhLXNldC13dW1pbiAgKHdp bmRvdyB3dW1pbikgKHNldGNhciAobnRoY2RyIDEgKG50aCAyIHdpbmRvdykpIHd1bWluKSkgOzsg J3Vzci1zaXplDQooZGVmdW4gd2Etc2V0LXd1bWF4ICAod2luZG93IHd1bWF4KSAoc2V0Y2FyIChu dGhjZHIgMiAobnRoIDIgd2luZG93KSkgd3VtYXgpKSA7OyAndXNyLXNpemUNCihkZWZ1biB3YS1z ZXQtd3JtaW4gICh3aW5kb3cgd3VtaW4pIChzZXRjYXIgKG50aGNkciAxIChudGggMyB3aW5kb3cp KSB3dW1pbikpIDs7ICdyZXEtc2l6ZQ0KKGRlZnVuIHdhLXNldC13cm1heCAgKHdpbmRvdyB3dW1h eCkgKHNldGNhciAobnRoY2RyIDIgKG50aCAzIHdpbmRvdykpIHd1bWF4KSkgOzsgJ3JlcS1zaXpl DQooZGVmdW4gd2Etc2V0LXdzZXQgICAod2luZG93IHNpemUpICAoc2V0Y2FyIChudGhjZHIgMSAo bnRoIDQgd2luZG93KSkgc2l6ZSkpICA7OyAnc2V0LXNpemUNCg0KKGRlZnVuIHdhLXNldC1jaGls ZC13aW5kb3dzIChwYXJlbnQgdmVydGljYWwgJnJlc3Qgc2l6ZXMpDQogIChsZXQgKGNoaWxkcmVu DQogICAgICAgIChudW0gMCkpDQogICAgKHNldHEgY2hpbGRyZW4gKG1hcGNhciAobGFtYmRhIChz aXplKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBudW0gKDErIG51bSkpDQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiB2ZXJ0aWNhbA0KICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHdhLW1ha2Utd2luZG93IChmb3JtYXQgIiVzLSVkIiAod2EtbmFt ZSBwYXJlbnQpIG51bSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAobnRoIDAgc2l6ZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAobnRoIDEgc2l6ZSkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzKSkNCiAgICAod2Etc2V0LWNoaWxk IHBhcmVudCBjaGlsZHJlbikpKQ0KDQooZGVmdW4gd2EtY2hlY2stZml0ICh3aW4pDQogIChsZXQg KCh3dW1pbiAod2Etd3VtaW4gd2luKSkNCiAgICAgICAgKHd1bWF4ICh3YS13dW1heCB3aW4pKQ0K ICAgICAgICAod3JtaW4gKHdhLXdybWluIHdpbikpDQogICAgICAgICh3cm1heCAod2Etd3JtYXgg d2luKSkNCiAgICAgICAgKHdzZXQgICh3YS13c2V0IHdpbikpKQ0KICAgIDs7IFRvcCB3aW5kb3cN CiAgICAod2hlbiAoYW5kIHdzZXQgd3JtaW4pDQogICAgICAodW5sZXNzICg8PSB3cm1pbiB3c2V0 KQ0KICAgICAgICAoZXJyb3IgIldpbmRvdyAlcyBzZXQgc2l6ZSB0b28gc21hbGw9JWQsIG1pbj0l ZCIgKHdhLW5hbWUgd2luKSB3c2V0IHdybWluKSkpDQogICAgKHdoZW4gKGFuZCB3c2V0IHdybWF4 KQ0KICAgICAgKHVubGVzcyAoPj0gd3JtYXggd3NldCkNCiAgICAgICAgKGVycm9yICJXaW5kb3cg JXMgc2V0IHNpemUgdG9vIGxhcmdlPSVkLCBtYXg9JXMiICh3YS1uYW1lIHdpbikgd3NldCB3cm1h eCkpKQ0KICAgIDs7IEFsbA0KICAgICh3aGVuIChhbmQgd3VtYXggd3JtaW4pDQogICAgICAodW5s ZXNzICg8PSB3cm1pbiB3dW1heCkNCiAgICAgICAgKGVycm9yICJXaW5kb3cgJXMgaXMgdG9vIHNt YWxsLCBtaW49JWQsIGJ1dCBjYW4gYmUgbWF4PSVkIiAod2EtbmFtZSB3aW4pIHdybWluIHd1bWF4 KSkpDQogICAgKHdoZW4gKGFuZCB3cm1heCB3dW1pbikNCiAgICAgICh1bmxlc3MgKDw9IHdybWF4 IHd1bWluKQ0KICAgICAgICAoZXJyb3IgIldpbmRvdyAlcydzIGNoaWxkcyBhcmUgdG9vIHNtYWxs LCBtYXg9JWQsIGJ1dCBjYW4gYmUgbWluPSVkIiAod2EtbmFtZSB3aW4pIHdybWF4IHd1bWluKSkp KSkNCg0KDQo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 OzsNCjs7OyBDb21wdXRhdGlvbiBvZiBzaXplcw0KDQooZGVmdW4gd2EtY2xlYXItY29tcHV0ZWQg KHdpbikNCiAgKHdhLXNldC13cm1pbiB3aW4gbmlsKQ0KICAod2Etc2V0LXdybWF4IHdpbiBuaWwp DQogICh3YS1zZXQtd3NldCAgd2luIG5pbCkNCiAgKGRvbGlzdCAoYyAod2EtY2hpbGQgd2luKSkN CiAgICAod2EtY2xlYXItY29tcHV0ZWQgYykpKQ0KDQooZGVmdW4gd2EtY29tcHV0ZS1yZXF1aXJl ZCAod2luKQ0KICAiV2FsayB1cCBjb2xsZWN0aW5nIG5lZWRlZCBzaXplcy4iDQogIChsZXQgKChj aGlsZHMgKHdhLWNoaWxkIHdpbikpDQogICAgICAgICh3dW1pbiAod2Etd3VtaW4gd2luKSkNCiAg ICAgICAgKHd1bWF4ICh3YS13dW1heCB3aW4pKQ0KICAgICAgICAoY21pbiAwKQ0KICAgICAgICAo Y21heCBuaWwpKQ0KICAgICh3aGVuIGNoaWxkcw0KICAgICAgOzsgQ2xlYXIgY2hpbGRzIHNldCBz aXplcywgd2UgZG8gbm90IGtub3cgdGhlbSBoZXJlDQogICAgICAoZG9saXN0IChjIGNoaWxkcykg KHdhLXNldC13c2V0IGMgbmlsKSkNCiAgICAgIChkb2xpc3QgKGMgY2hpbGRzKQ0KICAgICAgICAo bGV0KiAoKHJlcyAod2EtY29tcHV0ZS1yZXF1aXJlZCBjKSkNCiAgICAgICAgICAgICAgIChyZXMt bWluIChudGggMCByZXMpKQ0KICAgICAgICAgICAgICAgKHJlcy1tYXggKG50aCAxIHJlcykpKQ0K ICAgICAgICAgIDs7IEp1c3Qgc3VtIHRoZSBNSU4NCiAgICAgICAgICAoc2V0cSBjbWluICgrIGNt aW4gcmVzLW1pbikpDQogICAgICAgICAgKGlmIHJlcy1tYXgNCiAgICAgICAgICAgICAgOzsgLi4u IG9rLCBsZXQgdXMgc3VtIE1BWCB0byBzZWUgaG93IGJpZyB3ZSBjYW4gYmUgLi4uDQogICAgICAg ICAgICAgIChpZiAobnVtYmVycCBjbWF4KQ0KICAgICAgICAgICAgICAgICAgKHNldHEgY21heCAo KyBjbWF4IHJlcy1tYXgpKQ0KICAgICAgICAgICAgICAgIChzZXRxIGNtYXggcmVzLW1heCkpDQog ICAgICAgICAgICA7OyBIdXJyYXksIGF0IGxlYXN0IG9uZSBjaGlsZCBjYW4gZ3JvdyENCiAgICAg ICAgICAgIChzZXRxIGNtYXggbmlsKSkpKSkNCiAgICAod2hlbiB3dW1pbiAoc2V0cSBjbWluICht YXggd3VtaW4gKG9yIGNtaW4gd3VtaW4pKSkpDQogICAgKHdoZW4gd3VtYXggKHNldHEgY21heCAo bWluIHd1bWF4IChvciBjbWF4IHd1bWF4KSkpKQ0KICAgIDs7IFNhbml0eQ0KICAgICh3aGVuICg9 IGNtaW4gMCkgKHNldHEgY21pbiAxKSkNCiAgICAoYXNzZXJ0IChvciAobm90IGNtaW4pICg8PSAx IGNtaW4pKSB0KQ0KICAgIChhc3NlcnQgKG9yIChub3QgY21heCkgKDw9IDEgY21heCkpIHQpDQog ICAgKHdhLXNldC13cm1pbiB3aW4gY21pbikNCiAgICAod2Etc2V0LXdybWF4IHdpbiBjbWF4KQ0K ICAgICh3YS1jaGVjay1maXQgd2luKQ0KICAgIChsaXN0ICh3YS13cm1pbiB3aW4pDQogICAgICAg ICAgKHdhLXdybWF4IHdpbikpKSkNCg0KKGRlZnVuIHdhLWNvbXB1dGUtd2FudGVkICh3aW4gc3Ry YXRlZ3kpDQogICJXYWxrIGRvd24gY29tcHV0ZSBzaXplcy4iDQogICh3aGVuICh3YS1jaGlsZCB3 aW4pDQogICAgKGxldCAoKGNtaW4gICAod2Etd3JtaW4gIHdpbikpDQogICAgICAgICAgKGNtYXgg ICAod2Etd3JtYXggIHdpbikpDQogICAgICAgICAgKHdpZHRoICAod2Etd3NldCB3aW4pKQ0KICAg ICAgICAgIChjaGlsZHMgKHdhLWNoaWxkIHdpbikpDQogICAgICAgICAgKQ0KICAgICAgKGNhc2Ug c3RyYXRlZ3kNCiAgICAgICAgKCdlcS1zaXplcw0KICAgICAgICAgKGxldCAoDQogICAgICAgICAg ICAgICAocmVzdC13aWR0aCB3aWR0aCkNCiAgICAgICAgICAgICAgIChnb2FsICgvIHdpZHRoIChs ZW5ndGggY2hpbGRzKSkpDQogICAgICAgICAgICAgICAocmVzdC1jaGlsZHMgKGNvcHktc2VxdWVu Y2UgY2hpbGRzKSkpDQogICAgICAgICAgIDs7IENsZWFyIGNoaWxkcw0KICAgICAgICAgICAoZG9s aXN0IChjIGNoaWxkcykgKHdhLXNldC13c2V0IGMgbmlsKSkNCiAgICAgICAgICAgOzsgQ2hlY2sg Y2hpbGQgbWluIHJlcXVpcmVtZW50cw0KICAgICAgICAgICAoZG9saXN0IChjIChjb3B5LXNlcXVl bmNlIHJlc3QtY2hpbGRzKSkNCiAgICAgICAgICAgICAobGV0ICgod3JtaW4gKHdhLXdybWluIGMp KSkNCiAgICAgICAgICAgICAgICh3aGVuIChhbmQgd3JtaW4gKDw9IGdvYWwgd3JtaW4pKQ0KICAg ICAgICAgICAgICAgICAod2Etc2V0LXdzZXQgYyAod2Etd3JtaW4gYykpDQogICAgICAgICAgICAg ICAgIChzZXRxIHJlc3QtY2hpbGRzIChkZWxldGUgYyByZXN0LWNoaWxkcykpDQogICAgICAgICAg ICAgICAgIChzZXRxIHJlc3Qtd2lkdGggKC0gcmVzdC13aWR0aCAod2Etd3JtaW4gYykpKSkpKQ0K ICAgICAgICAgICAoc2V0cSBnb2FsICgvIHJlc3Qtd2lkdGggKGxlbmd0aCBjaGlsZHMpKSkNCiAg ICAgICAgICAgOzsgQ2hlY2sgY2hpbGQgbWF4IHJlcXVpcmVtZW50cw0KICAgICAgICAgICAoZG9s aXN0IChjIChjb3B5LXNlcXVlbmNlIHJlc3QtY2hpbGRzKSkNCiAgICAgICAgICAgICAobGV0ICgo d3JtYXggKHdhLXdybWF4IGMpKSkNCiAgICAgICAgICAgICAgICh3aGVuIChhbmQgd3JtYXggKD49 IGdvYWwgd3JtYXgpKQ0KICAgICAgICAgICAgICAgICAod2Etc2V0LXdzZXQgYyAod2Etd3JtYXgg YykpDQogICAgICAgICAgICAgICAgIChzZXRxIHJlc3QtY2hpbGRzIChkZWxldGUgYyByZXN0LWNo aWxkcykpDQogICAgICAgICAgICAgICAgIChzZXRxIHJlc3Qtd2lkdGggKC0gcmVzdC13aWR0aCAo d2Etd3JtYXggYykpKSkpKQ0KICAgICAgICAgICAoc2V0cSBnb2FsICgvIHJlc3Qtd2lkdGggKGxl bmd0aCBjaGlsZHMpKSkNCiAgICAgICAgICAgOzsgRGlzdHJpYnV0ZSB0aGUgcmVzdCwgdGFraW5n IGNhcmUgb2Ygcm91bmRpbmdzDQogICAgICAgICAgICh3YS1zZXQtd3NldCAoY2FyIHJlc3QtY2hp bGRzKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKC0gcmVzdC13aWR0aCAoKiBnb2FsICgxLSAo bGVuZ3RoIHJlc3QtY2hpbGRzKSkpKSkNCiAgICAgICAgICAgKGRvbGlzdCAoYyAoY2RyIHJlc3Qt Y2hpbGRzKSkNCiAgICAgICAgICAgICAod2Etc2V0LXdzZXQgYyBnb2FsKSkpKQ0KICAgICAgICAo dCAoZXJyb3IgIlVua25vd24gcnVsZTogJXMiIHJ1bGUpKSkNCiAgICAgIDs7IENoZWNrDQogICAg ICAobGV0ICgodyAwKSkNCiAgICAgICAgKGRvbGlzdCAoYyBjaGlsZHMpDQogICAgICAgICAgKGxl dCAoKHdzZXQgKHdhLXdzZXQgYykpKQ0KICAgICAgICAgICAgKGFzc2VydCAoPD0gMCB3c2V0KSB0 KQ0KICAgICAgICAgICAgKHNldHEgdyAoKyB3IHdzZXQpKSkpDQogICAgICAgICh1bmxlc3MgKD0g dyAod2Etd3NldCB3aW4pKQ0KICAgICAgICAgIChlcnJvciAiQmFkIHNldCBzaXplcyBjaGlsZCBz dW0gdz0lZCwgd2luIHdpZHRoPSVkIiB3ICh3YS13c2V0IHdpbikpKSkNCiAgICAgIDs7IFdhbGsg ZG93bg0KICAgICAgKGRvbGlzdCAoYyBjaGlsZHMpDQogICAgICAgICh3YS1jb21wdXRlLXdhbnRl ZCBjIHN0cmF0ZWd5KSkpKSkNCg0KOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7DQo7OzsgVGVzdGluZyBwYXJ0DQoNCihkZWZ2YXIgd2Etcm9vdC13aW5kb3cg bmlsKQ0KDQooZGVmdW4gd2EtYWRkLXRlc3QtY2hpbGRzICgpDQogICh3YS1zZXQtY2hpbGQtd2lu ZG93cyB3YS1yb290LXdpbmRvdyB0DQogICAgICAgICAgICAgICAgICAgICAgICAgJyhuaWwgbmls KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICcoMTQgbmlsKQ0KICAgICAgICAgICAgICAgICAg ICAgICAgICcobmlsIG5pbCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAnKDMgbmlsKQ0KICAg ICAgICAgICAgICAgICAgICAgICAgICkpDQoNCihzZXRxIHdhLXJvb3Qtd2luZG93ICh3YS1tYWtl LXdpbmRvdyAiUm9vdCIgODAgbmlsIG5pbCkpDQooc2V0cSB3YS1yb290LXdpbmRvdyAod2EtbWFr ZS13aW5kb3cgIlJvb3QiIDgwIG5pbCA4KSkNCihzZXRxIHdhLXJvb3Qtd2luZG93ICh3YS1tYWtl LXdpbmRvdyAiUm9vdCIgODAgbmlsIDYpKQ0KKHNldHEgd2Etcm9vdC13aW5kb3cgKHdhLW1ha2Ut d2luZG93ICJSb290IiA4MCA1IG5pbCkpDQooc2V0cSB3YS1yb290LXdpbmRvdyAod2EtbWFrZS13 aW5kb3cgIlJvb3QiIDE1IDE1IG5pbCkpDQooc2V0cSB3YS1yb290LXdpbmRvdyAod2EtbWFrZS13 aW5kb3cgIlJvb3QiIDE4IDE1IG5pbCkpDQoNCjs7ICh3YS1jaGlsZCB3YS1yb290LXdpbmRvdykN Cjs7ICh3YS13c2V0IHdhLXJvb3Qtd2luZG93KQ0KOzsgKHdhLXd1bWluIHdhLXJvb3Qtd2luZG93 KQ0KOzsgKHdhLXd1bWF4IHdhLXJvb3Qtd2luZG93KQ0KOzsgKHdhLWNsZWFyLWNvbXB1dGVkIHdh LXJvb3Qtd2luZG93KQ0KDQood2EtYWRkLXRlc3QtY2hpbGRzKQ0KKHdhLWNvbXB1dGUtcmVxdWly ZWQgd2Etcm9vdC13aW5kb3cpDQood2EtY29tcHV0ZS13YW50ZWQgICB3YS1yb290LXdpbmRvdyAn ZXEtc2l6ZXMpDQooZGVzY3JpYmUtdmFyaWFibGUgJ3dhLXJvb3Qtd2luZG93KQ0KDQoNCg0KOzs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ow0KOzs7IHdpbi1hbGcuZWwgZW5kcyBoZXJlDQo= --0016e646522c946bec047104497e--