From marijnh@gmail.com Sun Nov 26 09:21:57 2006 From: Marijn Haverbeke To: html-template-devel@common-lisp.net Subject: [html-template-devel] Proposed new feature for HTML-TEMPLATE Date: Sun, 26 Nov 2006 14:56:15 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6991278296543885176==" --===============6991278296543885176== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit [I sent this to Edi earlier, but it seems to have been ignored. I just saw that there is actually a mailing list for this project, so I'm hoping that sending it to the correct place will generate a bit more response.] > For a personal project I extended your HTML-TEMPLATE library with an > extra TMPL tag. If you think my extension is useful enough to be > included in the library proper, I'll be happy to properly document it > and submit a patch. Here is how it works: > > Support for the TMPL_CALL tag is added. This is related to > TMPL_INCLUDE, but allows the values passed to a template to > 'dynamically' determine which sub-templates should be used. It was > inspired by the way XSLT's apply-templates works. The tag takes a > single symbol as argument, and treats it the way TMPL_LOOP does, > iterating over a list or a vector of values. Each of these values > specifies a template to use and a set of values to apply that template > to. These are extracted by applying the functions > *call-template-access-function* and *call-values-access-function* to > the given values - these default to #'car and #'cdr respectively. > > If *default-template-pathname* is set properly, and there are > templates named "fancy-paragraph" and "standard-footer", something > like this... > > '(:title "Title" > :body > ((#P"fancy-paragraph" :content "This is a fancy paragraph") > (#P"standard-footer"))) > > ... can be fed to a template that applies TMPL_CALL to :body to render > its body in whatever way the code that generated the values thought > suitable. > > Basically, this extension allows the use of outer templates that do > not know precisely what kind of content will be inserted into them. A > very basic example is a template that contains the , , & > tags + maybe some basic formatting, and which can be used by > all pages that generate pages with a similar outer structure. > > Let me know what you think, > Marijn Haverbeke [Also, reading a few older message on this list suggests that adding fancy new features isn't a priority for this library -- but I still think adding a dynamic way to include subtemplates would be useful enough to warrant the extra complexity.] --===============6991278296543885176== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 W0kgc2VudCB0aGlzIHRvIEVkaSBlYXJsaWVyLCBidXQgaXQgc2VlbXMgdG8gaGF2ZSBiZWVuIGln bm9yZWQuIEkganVzdCBzYXcgdGhhdCB0aGVyZSBpcyBhY3R1YWxseSBhIG1haWxpbmcgbGlzdCBm b3IgdGhpcyBwcm9qZWN0LCBzbyBJJ20gaG9waW5nIHRoYXQgc2VuZGluZyBpdCB0byB0aGUgY29y cmVjdCBwbGFjZSB3aWxsIGdlbmVyYXRlIGEgYml0IG1vcmUgcmVzcG9uc2UuXTxicj48YnI+CiZn dDsgRm9yIGEgcGVyc29uYWwgcHJvamVjdCBJIGV4dGVuZGVkIHlvdXIgSFRNTC1URU1QTEFURSBs aWJyYXJ5IHdpdGggYW48YnI+Jmd0OyBleHRyYSBUTVBMIHRhZy4gSWYgeW91IHRoaW5rIG15IGV4 dGVuc2lvbiBpcyB1c2VmdWwgZW5vdWdoIHRvIGJlPGJyPiZndDsgaW5jbHVkZWQgaW4gdGhlIGxp YnJhcnkgcHJvcGVyLCBJJ2xsIGJlIGhhcHB5IHRvIHByb3Blcmx5IGRvY3VtZW50IGl0Cjxicj4m Z3Q7IGFuZCBzdWJtaXQgYSBwYXRjaC4gSGVyZSBpcyBob3cgaXQgd29ya3M6PGJyPiZndDsgPGJy PiZndDsgU3VwcG9ydCBmb3IgdGhlIFRNUExfQ0FMTCB0YWcgaXMgYWRkZWQuIFRoaXMgaXMgcmVs YXRlZCB0bzxicj4mZ3Q7IFRNUExfSU5DTFVERSwgYnV0IGFsbG93cyB0aGUgdmFsdWVzIHBhc3Nl ZCB0byBhIHRlbXBsYXRlIHRvPGJyPiZndDsgJ2R5bmFtaWNhbGx5JyBkZXRlcm1pbmUgd2hpY2gg c3ViLXRlbXBsYXRlcyBzaG91bGQgYmUgdXNlZC4gSXQgd2FzCjxicj4mZ3Q7IGluc3BpcmVkIGJ5 IHRoZSB3YXkgWFNMVCdzIGFwcGx5LXRlbXBsYXRlcyB3b3Jrcy4gVGhlIHRhZyB0YWtlcyBhPGJy PiZndDsgc2luZ2xlIHN5bWJvbCBhcyBhcmd1bWVudCwgYW5kIHRyZWF0cyBpdCB0aGUgd2F5IFRN UExfTE9PUCBkb2VzLDxicj4mZ3Q7IGl0ZXJhdGluZyBvdmVyIGEgbGlzdCBvciBhIHZlY3RvciBv ZiB2YWx1ZXMuIEVhY2ggb2YgdGhlc2UgdmFsdWVzCjxicj4mZ3Q7IHNwZWNpZmllcyBhIHRlbXBs YXRlIHRvIHVzZSBhbmQgYSBzZXQgb2YgdmFsdWVzIHRvIGFwcGx5IHRoYXQgdGVtcGxhdGU8YnI+ Jmd0OyB0by4gVGhlc2UgYXJlIGV4dHJhY3RlZCBieSBhcHBseWluZyB0aGUgZnVuY3Rpb25zPGJy PiZndDsgKmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKiBhbmQgKmNhbGwtdmFsdWVzLWFj Y2Vzcy1mdW5jdGlvbiogdG88YnI+Jmd0OyB0aGUgZ2l2ZW4gdmFsdWVzIC0gdGhlc2UgZGVmYXVs dCB0byAjJ2NhciBhbmQgIydjZHIgcmVzcGVjdGl2ZWx5Lgo8YnI+Jmd0OyA8YnI+Jmd0OyBJZiAq ZGVmYXVsdC10ZW1wbGF0ZS1wYXRobmFtZSogaXMgc2V0IHByb3Blcmx5LCBhbmQgdGhlcmUgYXJl PGJyPiZndDsgdGVtcGxhdGVzIG5hbWVkICZxdW90O2ZhbmN5LXBhcmFncmFwaCZxdW90OyBhbmQg JnF1b3Q7c3RhbmRhcmQtZm9vdGVyJnF1b3Q7LCBzb21ldGhpbmc8YnI+Jmd0OyBsaWtlIHRoaXMu Li48YnI+Jmd0OyA8YnI+Jmd0OyAnKDp0aXRsZSAmcXVvdDtUaXRsZSZxdW90Owo8YnI+Jmd0OyZu YnNwOyZuYnNwOyA6Ym9keTxicj4mZ3Q7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICgoI1AmcXVv dDtmYW5jeS1wYXJhZ3JhcGgmcXVvdDsgOmNvbnRlbnQgJnF1b3Q7VGhpcyBpcyBhIGZhbmN5IHBh cmFncmFwaCZxdW90Oyk8YnI+Jmd0OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OygjUCZxdW90O3N0YW5kYXJkLWZvb3RlciZxdW90OykpKTxicj4mZ3Q7IDxicj4mZ3Q7IC4uLiBj YW4gYmUgZmVkIHRvIGEgdGVtcGxhdGUgdGhhdCBhcHBsaWVzIFRNUExfQ0FMTCB0byA6Ym9keSB0 byByZW5kZXIKPGJyPiZndDsgaXRzIGJvZHkgaW4gd2hhdGV2ZXIgd2F5IHRoZSBjb2RlIHRoYXQg Z2VuZXJhdGVkIHRoZSB2YWx1ZXMgdGhvdWdodDxicj4mZ3Q7IHN1aXRhYmxlLjxicj4mZ3Q7IDxi cj4mZ3Q7IEJhc2ljYWxseSwgdGhpcyBleHRlbnNpb24gYWxsb3dzIHRoZSB1c2Ugb2Ygb3V0ZXIg dGVtcGxhdGVzIHRoYXQgZG88YnI+Jmd0OyBub3Qga25vdyBwcmVjaXNlbHkgd2hhdCBraW5kIG9m IGNvbnRlbnQgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZW0uIEEKPGJyPiZndDsgdmVyeSBiYXNp YyBleGFtcGxlIGlzIGEgdGVtcGxhdGUgdGhhdCBjb250YWlucyB0aGUgJmx0O2h0bWwmZ3Q7LCAm bHQ7aGVhZCZndDssICZhbXA7PGJyPiZndDsgJmx0O2JvZHkmZ3Q7IHRhZ3MgKyBtYXliZSBzb21l IGJhc2ljIGZvcm1hdHRpbmcsIGFuZCB3aGljaCBjYW4gYmUgdXNlZCBieTxicj4mZ3Q7IGFsbCBw YWdlcyB0aGF0IGdlbmVyYXRlIHBhZ2VzIHdpdGggYSBzaW1pbGFyIG91dGVyIHN0cnVjdHVyZS4K PGJyPiZndDsgPGJyPiZndDsgTGV0IG1lIGtub3cgd2hhdCB5b3UgdGhpbmssPGJyPiZndDsgTWFy aWpuIEhhdmVyYmVrZTxicj48YnI+W0Fsc28sIHJlYWRpbmcgYSBmZXcgb2xkZXIgbWVzc2FnZSBv biB0aGlzIGxpc3Qgc3VnZ2VzdHMgdGhhdCBhZGRpbmcKZmFuY3kgbmV3IGZlYXR1cmVzIGlzbid0 IGEgcHJpb3JpdHkgZm9yIHRoaXMgbGlicmFyeSAtLSBidXQgSSBzdGlsbCB0aGluawphZGRpbmcg YSBkeW5hbWljIHdheSB0byBpbmNsdWRlIHN1YnRlbXBsYXRlcyB3b3VsZCBiZSB1c2VmdWwgZW5v dWdoIHRvCndhcnJhbnQgdGhlIGV4dHJhIGNvbXBsZXhpdHkuXTxicj48YnI+Cg== --===============6991278296543885176==-- From edi@agharta.de Sun Nov 26 17:56:20 2006 From: Edi Weitz To: html-template-devel@common-lisp.net Subject: Re: [html-template-devel] Proposed new feature for HTML-TEMPLATE Date: Sun, 26 Nov 2006 23:57:03 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0485340150579450414==" --===============0485340150579450414== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Sun, 26 Nov 2006 14:56:15 +0100, "Marijn Haverbeke" = wrote: > I sent this to Edi earlier, but it seems to have been ignored. I didn't really ignore it. I just put it into my "do later" folder, because I'm too busy with other things right now. Sorry. > Also, reading a few older message on this list suggests that adding > fancy new features isn't a priority for this library That's the general policy, right. But I am open for new stuff /sometimes/ - see TMPL_UNLESS... :) > but I still think adding a dynamic way to include subtemplates would > be useful enough to warrant the extra complexity. I haven't thought about it enough to say whether I like it or not, but maybe other people on this list have an opinion. Cheers, Edi. --===============0485340150579450414==-- From edi@agharta.de Mon Dec 11 02:57:58 2006 From: Edi Weitz To: html-template-devel@common-lisp.net Subject: Re: [html-template-devel] Proposed new feature for HTML-TEMPLATE Date: Mon, 11 Dec 2006 08:58:39 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2938615536424857148==" --===============2938615536424857148== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Sun, 26 Nov 2006 14:56:15 +0100, "Marijn Haverbeke" = wrote: > Support for the TMPL_CALL tag is added. OK, sorry for the /long/ delay, but as I said I'm pretty busy at the moment. Your proposal sounds fine to me and I think we should include it. If you want this to be released quickly, please send a clean patch that not only includes the code with doc string but also updates the test file and the HTML documentation accordingly. Thanks in advance, Edi. --===============2938615536424857148==-- From marijnh@gmail.com Mon Dec 11 14:14:33 2006 From: Marijn Haverbeke To: html-template-devel@common-lisp.net Subject: Re: [html-template-devel] Proposed new feature for HTML-TEMPLATE Date: Mon, 11 Dec 2006 20:15:26 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6207343077153583020==" --===============6207343077153583020== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit > > Your proposal sounds fine to me and I think we should include it. If > you want this to be released quickly, please send a clean patch that > not only includes the code with doc string but also updates the test > file and the HTML documentation accordingly. Attached is the path which should do all that. I also included a small refactoring which splits up create-simple-printer, but that should be easy to remove if you don't like it. Regards, Marijn --===============6207343077153583020== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGRpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJib3JkZXItbGVmdDog MXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgbWFyZ2luOiAwcHQgMHB0IDBwdCAwLjhleDsg cGFkZGluZy1sZWZ0OiAxZXg7Ij5Zb3VyIHByb3Bvc2FsIHNvdW5kcyBmaW5lIHRvIG1lIGFuZCBJ IHRoaW5rIHdlIHNob3VsZCBpbmNsdWRlIGl0LiZuYnNwOyZuYnNwO0lmPGJyPnlvdSB3YW50IHRo aXMgdG8gYmUgcmVsZWFzZWQgcXVpY2tseSwgcGxlYXNlIHNlbmQgYSBjbGVhbiBwYXRjaCB0aGF0 Cjxicj5ub3Qgb25seSBpbmNsdWRlcyB0aGUgY29kZSB3aXRoIGRvYyBzdHJpbmcgYnV0IGFsc28g dXBkYXRlcyB0aGUgdGVzdDxicj5maWxlIGFuZCB0aGUgSFRNTCBkb2N1bWVudGF0aW9uIGFjY29y ZGluZ2x5LjwvYmxvY2txdW90ZT48ZGl2Pjxicj5BdHRhY2hlZCBpcyB0aGUgcGF0aCB3aGljaCBz aG91bGQgZG8gYWxsIHRoYXQuIEkgYWxzbyBpbmNsdWRlZCBhIHNtYWxsIHJlZmFjdG9yaW5nIHdo aWNoIHNwbGl0cyB1cCBjcmVhdGUtc2ltcGxlLXByaW50ZXIsIGJ1dCB0aGF0IHNob3VsZCBiZSBl YXN5IHRvIHJlbW92ZSBpZiB5b3UgZG9uJ3QgbGlrZSBpdC4KPGJyPjwvZGl2PjwvZGl2Pjxicj5S ZWdhcmRzLDxicj5NYXJpam48YnI+PGJyPgo= --===============6207343077153583020== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tmpl_call.diff" MIME-Version: 1.0 T25seSBpbiBodG1sLXRlbXBsYXRlLm1pbmUvOiBhcGkuZmFzbApkaWZmIC11ciBodG1sLXRlbXBs YXRlLTAuNy4wL2RvYy9pbmRleC5odG1sIGh0bWwtdGVtcGxhdGUubWluZS9kb2MvaW5kZXguaHRt bAotLS0gaHRtbC10ZW1wbGF0ZS0wLjcuMC9kb2MvaW5kZXguaHRtbAkyMDA2LTA5LTMwIDAwOjM2 OjI4LjAwMDAwMDAwMCArMDIwMAorKysgaHRtbC10ZW1wbGF0ZS5taW5lL2RvYy9pbmRleC5odG1s CTIwMDYtMTItMTEgMDQ6MTY6NTMuMDAwMDAwMDAwICswMTAwCkBAIC0zMSwxMCArMzEsOSBAQAog Zm9yLikKIDxwPgogSXQgaXMgbG9vc2VseSBtb2RlbGVkIGFmdGVyIHRoZSBQZXJsIG1vZHVsZSA8 YQotaHJlZj0iaHR0cDovL2h0bWwtdGVtcGxhdGUuc2YubmV0LyI+SFRNTDo6VGVtcGxhdGU8L2E+ IGFuZCBjb21wYXRpYmxlCi13aXRoIGEgc3Vic2V0IG9mIGl0cyBzeW50YXgsIGkuZS4gaXQgc2hv dWxkIGJlIHBvc3NpYmxlIHRvIHVzZSB5b3VyCi1IVE1MLVRFTVBMQVRFIHRlbXBsYXRlcyB3aXRo IEhUTUw6OlRlbXBsYXRlIGFzIHdlbGwgKGJ1dCB1c3VhbGx5IG5vdAotdGhlIG90aGVyIHdheSBh cm91bmQpLgoraHJlZj0iaHR0cDovL2h0bWwtdGVtcGxhdGUuc2YubmV0LyI+SFRNTDo6VGVtcGxh dGU8L2E+IGFuZCBwYXJ0aWFsbHkKK2NvbXBhdGlibGUgd2l0aCBhIGl0cyBzeW50YXgsIHRob3Vn aCBib3RoIGxpYnJhcmllcyBjb250YWluIHNvbWUKK2V4dGVuc2lvbnMgdGhhdCB0aGUgb3RoZXIg ZG9lcyBub3Qgc3VwcG9ydC4KIDxwPgogSFRNTC1URU1QTEFURSB0cmFuc2xhdGVzIHRlbXBsYXRl cyBpbnRvIDxhIGhyZWY9IiNtYWluIj5lZmZpY2llbnQgY2xvc3VyZXM8L2E+IHdoaWNoCiBjYW4g YmUgcmUtdXNlZCBhcyBvZnRlbiBhcyBuZWVkZWQuIEl0IHVzZXMgYW4gaW50ZWxsaWdlbnQgPGEg aHJlZj0iI2NhY2hlIj5jYWNoZQpAQCAtNTcsOSArNTYsOSBAQAogaHJlZj0iaHR0cDovL3d3dy5j bGlraS5uZXQvTGlzcCUyME1hcmt1cCUyMExhbmd1YWdlcyI+TGlzcCBtYXJrdXAKIGxhbmd1YWdl czwvYT4gYnV0IGZvdW5kIHRoYXQgSFRNTDo6VGVtcGxhdGUncyBhcHByb2FjaCB1c3VhbGx5IHdv cmtzCiBiZXN0IGZvciBtZTogVGhlIGdyYXBoaWNhbCBkZXNpZ25lcnMgb25seSBuZWVkIHRvIGxl YXJuIGEgbWluaW1hbCBzZXQKLW9mIG5ldyB0YWdzICh0aHJlZSBvZiB0aGVtKSBhbmQgY2FuIHVw ZGF0ZSB0aGVpciB0ZW1wbGF0ZXMKLWluZGVwZW5kZW50bHkgZnJvbSB0aGUgd29yayBkb25lIG9u IHRoZSBiYWNrZW5kLiBJdCBpcyBzaW1wbGUgYW5kIGl0Ci1qdXN0IHdvcmtzLiBZTU1WLCBvZiBj b3Vyc2UuLi4KK29mIG5ldyB0YWdzIGFuZCBjYW4gdXBkYXRlIHRoZWlyIHRlbXBsYXRlcyBpbmRl cGVuZGVudGx5IGZyb20gdGhlIHdvcmsKK2RvbmUgb24gdGhlIGJhY2tlbmQuIEl0IGlzIHNpbXBs ZSBhbmQgaXQganVzdCB3b3Jrcy4gWU1NViwgb2YKK2NvdXJzZS4uLgogPHA+CiBIVE1MLVRFTVBM QVRFIGlzIGludGVuZGVkIHRvIGJlIHBvcnRhYmxlIGFuZCBzaG91bGQgd29yayB3aXRoIGFsbAog Y29uZm9ybWluZyBDb21tb24gTGlzcCBpbXBsZW1lbnRhdGlvbnMgYnV0IGlzIG1haW5seSB0ZXN0 ZWQgYW5kCkBAIC0xMTEsNiArMTEwLDggQEAKICAgICAgIDxsaT48YSBocmVmPSIjKnRlbXBsYXRl LXN5bWJvbC1wYWNrYWdlKiI+PGNvZGU+KnRlbXBsYXRlLXN5bWJvbC1wYWNrYWdlKjwvY29kZT48 L2E+CiAgICAgICA8bGk+PGEgaHJlZj0iIypmb3JjZS1kZWZhdWx0KiI+PGNvZGU+KmZvcmNlLWRl ZmF1bHQqPC9jb2RlPjwvYT4KICAgICAgIDxsaT48YSBocmVmPSIjKnZhbHVlLWFjY2Vzcy1mdW5j dGlvbioiPjxjb2RlPip2YWx1ZS1hY2Nlc3MtZnVuY3Rpb24qPC9jb2RlPjwvYT4KKyAgICAgIDxs aT48YSBocmVmPSIjKmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKiI+PGNvZGU+KmNhbGwt dGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKjwvY29kZT48L2E+CisgICAgICA8bGk+PGEgaHJlZj0i IypjYWxsLXZhbHVlLWFjY2Vzcy1mdW5jdGlvbioiPjxjb2RlPipjYWxsLXZhbHVlLWFjY2Vzcy1m dW5jdGlvbio8L2NvZGU+PC9hPgogICAgICAgPGxpPjxhIGhyZWY9IiMqaWdub3JlLWVtcHR5LWxp bmVzKiI+PGNvZGU+Kmlnbm9yZS1lbXB0eS1saW5lcyo8L2NvZGU+PC9hPgogICAgICAgPGxpPjxh IGhyZWY9IiMqd2Fybi1vbi1jcmVhdGlvbioiPjxjb2RlPip3YXJuLW9uLWNyZWF0aW9uKjwvY29k ZT48L2E+CiAgICAgPC9vbD4KQEAgLTM5OCwxMyArMzk5LDEzIEBACiA8L3ByZT4KIAogd2hlcmUg PGVtPm5hbWU8L2VtPiBpcyBvbmUgb2YgPGNvZGU+VE1QTF9WQVI8L2NvZGU+LAotPGNvZGU+VE1Q TF9MT09QPC9jb2RlPiwgPGNvZGU+VE1QTF9SRVBFQVQ8L2NvZGU+LCA8Y29kZT5UTVBMX0lGPC9j b2RlPiwgPGNvZGU+VE1QTF9VTkxFU1M8L2NvZGU+LAorPGNvZGU+VE1QTF9MT09QPC9jb2RlPiwg PGNvZGU+VE1QTF9SRVBFQVQ8L2NvZGU+LCA8Y29kZT5UTVBMX0NBTEw8L2NvZGU+LCA8Y29kZT5U TVBMX0lGPC9jb2RlPiwgPGNvZGU+VE1QTF9VTkxFU1M8L2NvZGU+LAogPGNvZGU+VE1QTF9JTkNM VURFPC9jb2RlPiwgPGNvZGU+L1RNUExfTE9PUDwvY29kZT4sIDxjb2RlPi9UTVBMX1JFUEVBVDwv Y29kZT4sCiA8Y29kZT4vVE1QTF9JRjwvY29kZT4sIDxjb2RlPi9UTVBMX1VOTEVTUzwvY29kZT4s IG9yIDxjb2RlPlRNUExfRUxTRTwvY29kZT4uIENhc2UgZG9lc24ndCBtYXR0ZXIsCiBpLmUuIDxj b2RlPnRtcGxfdmFyPC9jb2RlPiBvciA8Y29kZT5UbXBsX1ZhcjwvY29kZT4gd291bGQgYWxzbyBi ZQogbGVnYWwgbmFtZXMuCiA8cD4KLUlmIDxlbT5uYW1lPC9lbT4gaXMgb25lIG9mIHRoZSBmaXJz dCBmb3VyIGxpc3RlZCBhYm92ZSB0aGVuCitJZiA8ZW0+bmFtZTwvZW0+IGlzIG9uZSBvZiB0aGUg Zmlyc3Qgc2V2ZW4gbGlzdGVkIGFib3ZlIHRoZW4KIDxlbT5hdHRyaWJ1dGU8L2VtPiBtdXN0IGZv bGxvdywgb3RoZXJ3aXNlIGl0IG11c3Qgbm90IGZvbGxvdyB3aGVyZQogPGVtPmF0dHJpYnV0ZTwv ZW0+IGlzIGFueSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIGRlbGltaXRlZCBieQogPGNvZGU+JnF1 b3Q7PC9jb2RlPiwgPGNvZGU+JzwvY29kZT4sIG9yIGJ5IHdoaXRlc3BhY2UuIFRoZXJlJ3MKQEAg LTQ2NSwxMCArNDY2LDEwIEBACiAmcXVvdDs8Y29kZT5OQU1FPTwvY29kZT4mcXVvdDsgbm90YXRp b24gd2hpY2ggaXMgbm90IHN1cHBvcnRlZCBieQogSFRNTC1URU1QTEFURS4KIDxwPgotVGhlIDxj b2RlPlRNUExfVkFSPC9jb2RlPiBhbmQgPGNvZGU+VE1QTF9JTkNMVURFPC9jb2RlPiB0YWdzIGNh bgotYXBwZWFyIGFueXdoZXJlIGFuZCBhcyBvZnRlbiBhcyB5b3UgbGlrZSBpbiB5b3VyIHRlbXBs YXRlcyB3aGlsZSB0aGUKLW90aGVyIHRhZ3MgbXVzdCBvYmV5IGNlcnRhaW4gcnVsZXMgLSB0aGV5 IG11c3QgZm9sbG93IG9uZSBvZiB0aGVzZQotcGF0dGVybnMKK1RoZSA8Y29kZT5UTVBMX1ZBUjwv Y29kZT4sIDxjb2RlPlRNUExfSU5DTFVERTwvY29kZT4sIGFuZAorPGNvZGU+VE1QTF9DQUxMPC9j b2RlPiB0YWdzIGNhbiBhcHBlYXIgYW55d2hlcmUgYW5kIGFzIG9mdGVuIGFzIHlvdQorbGlrZSBp biB5b3VyIHRlbXBsYXRlcyB3aGlsZSB0aGUgb3RoZXIgdGFncyBtdXN0IG9iZXkgY2VydGFpbiBy dWxlcyAtCit0aGV5IG11c3QgZm9sbG93IG9uZSBvZiB0aGVzZSBwYXR0ZXJucwogCiA8cHJlPgog ICAmbHQ7IS0tIFRNUExfSUYgPGVtPmF0dHJpYnV0ZTwvZW0+IC0tJmd0OyA8ZW0+dGV4dDwvZW0+ ICZsdDshLS0gL1RNUExfSUYgLS0mZ3Q7CkBAIC01MjAsNyArNTIxLDcgQEAKIHRvIGZpbGwgYW5k IHByaW50IGEgdGVtcGxhdGUuCiA8cD4KIEVhY2ggb2YgdGhlIHRlbXBsYXRlIHRhZ3MgPGNvZGU+ VE1QTF9WQVI8L2NvZGU+LCA8Y29kZT5UTVBMX0lGPC9jb2RlPiwgPGNvZGU+VE1QTF9VTkxFU1M8 L2NvZGU+LAotPGNvZGU+VE1QTF9MT09QPC9jb2RlPiwgYW5kIDxjb2RlPlRNUExfUkVQRUFUPC9j b2RlPiBpcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHN5bWJvbCBhdAorPGNvZGU+VE1Q TF9MT09QPC9jb2RlPiwgPGNvZGU+VE1QTF9DQUxMPC9jb2RlPiwgYW5kIDxjb2RlPlRNUExfUkVQ RUFUPC9jb2RlPiBpcyBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHN5bWJvbCBhdAogZ2Vu ZXJhdGlvbiB0aW1lLiBUaGlzIHN5bWJvbCBpcyB0aGUgcmVzdWx0IG9mIDxhIGhyZWY9Imh0dHA6 Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5L2ZfaW50ZXJu Lmh0bSI+PGNvZGU+SU5URVJOPC9jb2RlPjwvYT5pbmcKIHRoZSB0YWcncyBhdHRyaWJ1dGUgc3Ry aW5nIGludG8gdGhlIHBhY2thZ2UgPGEKIGhyZWY9IiMqdGVtcGxhdGUtc3ltYm9sLXBhY2thZ2Uq Ij48Y29kZT4qVEVNUExBVEUtU1lNQk9MLVBBQ0tBR0UqPC9jb2RlPjwvYT4uIFRoZQpAQCAtNjg3 LDYgKzY4OCw1MCBAQAogaW5jbHVkaW5nIHByaW50ZXIuCiA8L2Jsb2NrcXVvdGU+CiAKKzxwPjxi Pjxjb2RlPiZsdDshLS0gVE1QTF9DQUxMIDxlbT5zeW1ib2w8L2VtPiAtLSZndDs8L2NvZGU+PC9i PgorCis8YmxvY2txdW90ZT4KK1RoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggPGVtPnN5bWJvbDwv ZW0+IHNob3VsZCBiZSBhIHNlcXVlbmNlIChhcworc3BlY2lmaWVkIGJ5IDxhCitocmVmPSIjKnNl cXVlbmNlcy1hcmUtbGlzdHMqIj48Y29kZT4qU0VRVUVOQ0VTLUFSRS1MSVNUUyo8L2NvZGU+PC9h PikKK29mIHRlbXBsYXRlIGNhbGxzLCBlYWNoIG9mIHdoaWNoIHNwZWNpZmllcyBhIHN1YnN0cnVj dHVyZSBhbmQgYQordGVtcGxhdGUgdG8gYXBwbHkgdG8gdGhhdC4gQnkgZGVmYXVsdCwgY2FsbHMg YXJlIGp1c3QgbGlzdHMsIHdpdGggdGhlCitDQVIgc3BlY2lmeWluZyB0aGUgdGVtcGxhdGUgbmFt ZSBhbmQgdGhlIENEUiBjb250YWluaW5nIHRoZQorc3Vic3RydWN0dXJlLiAoU2VlIDxhCitocmVm PSIjKmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKiI+PGNvZGU+KkNBTEwtVEVNUExBVEUt QUNDRVNTLUZVTkNUSU9OKjwvY29kZT48L2E+CithbmQgPGEKK2hyZWY9IiMqY2FsbC12YWx1ZS1h Y2Nlc3MtZnVuY3Rpb24qIj48Y29kZT4qQ0FMTC1WQUxVRS1BQ0NFU1MtRlVOQ1RJT04qPC9jb2Rl PjwvYT4KK2ZvciB3YXlzIHRvIGN1c3RvbWl6ZSB3aGF0IGNhbGxzIGxvb2sgbGlrZS4pCis8cD4K Kzxjb2RlPlRNUExfQ0FMTDwvY29kZT4gY29tYmluZXMgYXNwZWN0cyBvZiA8Y29kZT5UTVBMX0xP T1A8L2NvZGU+IGFuZAorPGNvZGU+VE1QTF9JTkNMVURFPC9jb2RlPiwgaXQgaXRlcmF0ZXMgb3Zl ciBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGUKK3dheSBsb29wcyBkbywgYnV0IGluc3RlYWQgb2Yg dXNpbmcgcGFydCBvZiB0aGUgY3VycmVudCB0ZW1wbGF0ZSB0bworcHJpbnQgdGhlIHZhbHVlcyBl YWNoIHZhbHVlIGNvbnRhaW5zIGl0cyBvd24gaW5mb3JtYXRpb24gYWJvdXQgd2hpY2gKK3N1YnRl bXBsYXRlIHNob3VsZCBiZSBhcHBsaWVkIHRvIGl0LgorCis8cHJlPgorKiAod2l0aC1vcGVuLWZp bGUgKHMgJnF1b3Q7L3RtcC9wYXJhZ3JhcGgmcXVvdDsgOmRpcmVjdGlvbiA6b3V0cHV0IDppZi1l eGlzdHMgOnN1cGVyc2VkZSkKKyAgICAod3JpdGUtc3RyaW5nICZxdW90OyZsdDtwIGNsYXNzPSdm YW5jeScmZ3Q7Jmx0OyEtLSBUTVBMX1ZBUiB0ZXh0IC0tJmd0OyZsdDsvcCZndDsmcXVvdDsgcykp CismcXVvdDsmbHQ7cCBjbGFzcz0nZmFuY3knJmd0OyZsdDshLS0gVE1QTF9WQVIgdGV4dCAtLSZn dDsmbHQ7L3AmZ3Q7JnF1b3Q7CisqICh3aXRoLW9wZW4tZmlsZSAocyAmcXVvdDsvdG1wL2hlYWRl ciZxdW90OyA6ZGlyZWN0aW9uIDpvdXRwdXQgOmlmLWV4aXN0cyA6c3VwZXJzZWRlKQorICAgICh3 cml0ZS1zdHJpbmcgJnF1b3Q7Jmx0O2gxJmd0OyZsdDshLS0gVE1QTF9WQVIgdGV4dCAtLSZndDsm bHQ7L2gxJmd0OyZxdW90OyBzKSkKKyZxdW90OyZsdDtoMSZndDsmbHQ7IS0tIFRNUExfVkFSIHRl eHQgLS0mZ3Q7Jmx0Oy9oMSZndDsmcXVvdDsKKyogKGZpbGwtYW5kLXByaW50LXRlbXBsYXRlICZx dW90OyZsdDtib2R5Jmd0OyZsdDshLS0gVE1QTF9DQUxMIHBhcnRzIC0tJmd0OyZsdDsvYm9keSZn dDsmcXVvdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICcoOnBhcnRzICgoI1AmcXVvdDsv dG1wL2hlYWRlciZxdW90OyA6dGV4dCAmcXVvdDtDaGFwdGVyIDEmcXVvdDspCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCNQJnF1b3Q7L3RtcC9wYXJhZ3JhcGgmcXVvdDsg OnRleHQgJnF1b3Q7VGhlcmUgb25jZSB3YXMgYSBwbGF0eXB1cy4uLiZxdW90OykKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoI1AmcXVvdDsvdG1wL2hlYWRlciZxdW90OyA6 dGV4dCAmcXVvdDtDaGFwdGVyIDUmcXVvdDspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCNQJnF1b3Q7L3RtcC9wYXJhZ3JhcGgmcXVvdDsgOnRleHQgJnF1b3Q7QW5kIGxp dmVkIGhhcHBpbHkgZXZlciBhZnRlci4mcXVvdDspKSkpCismbHQ7aDEmZ3Q7Q2hhcHRlciAxJmx0 Oy9oMSZndDsmbHQ7cCBjbGFzcz0nZmFuY3knJmd0O1RoZXJlIG9uY2Ugd2FzIGEgcGxhdHlwdXMu Li4mbHQ7L3AmZ3Q7Jmx0O2gxJmd0O0NoYXB0ZXIgNSZsdDsvaDEmZ3Q7Jmx0O3AgY2xhc3M9J2Zh bmN5JyZndDtBbmQgbGl2ZWQgaGFwcGlseSBldmVyIGFmdGVyLiZsdDsvcCZndDsmbHQ7L2JvZHkm Z3Q7Cis8L3ByZT4KKzxwPgorTm90ZSB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBpbmNsdWRlIGZ1 bGwgcGF0aG5hbWVzIGluIHRoZSBjYWxsCitzdHJ1Y3R1cmVzLiBZb3UgY2FuIHVzZSA8YQoraHJl Zj0iIypkZWZhdWx0LXRlbXBsYXRlLXBhdGhuYW1lKiI+PGNvZGU+KkRFRkFVTFQtVEVNUExBVEUt UEFUSE5BTUUqPC9jb2RlPjwvYT4KK3RvIHNwZWNpZnkgbW9zdCBvZiBpdCwgb3Igc2V0IDxhCito cmVmPSIjKmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKiI+PGNvZGU+KkNBTEwtVEVNUExB VEUtQUNDRVNTLUZVTkNUSU9OKjwvY29kZT48L2E+Cit0byBhIGZ1bmN0aW9uIHRoYXQgY3JlYXRl cyBwYXRobmFtZXMgYW55IHdheSB5b3UgbGlrZS4KKzwvYmxvY2txdW90ZT4KKwogPGJyPiZuYnNw Ozxicj48aDM+PGEgY2xhc3M9bm9uZSBuYW1lPSJkaWN0aW9uYXJ5Ij5UaGUgSFRNTC1URU1QTEFU RSBkaWN0aW9uYXJ5PC9hPjwvaDM+CiAKIEhUTUwtVEVNUExBVEUgZXhwb3J0cyB0aGUgZm9sbG93 aW5nIHN5bWJvbHMgKHNvbWUgb2Ygd2hpY2ggYXJlIGFsc28KQEAgLTEwMzcsNyArMTA4Miw3IEBA CiBsaXN0PC9hPiA8Y29kZT48aT4oc3ltYm9sJm5ic3A7dmFsdWVzJm5ic3A7PHR0PiZhbXA7b3B0 aW9uYWw8L3R0PiZuYnNwO2luLWxvb3AtcCk8L2k+PC9jb2RlPiB3aGljaCBpcwogdXNlZCB0byBh c3NvY2lhdGUgc3ltYm9scyB3aXRoIHRoZWlyIHZhbHVlcyB3aGVuIGEgdGVtcGxhdGUgcHJpbnRl ciBpcwogaW52b2tlZC4gIDxjb2RlPjxpPmluLWxvb3AtcDwvaT48L2NvZGU+IGlzIHRydWUgd2hl bmV2ZXIgdGhpcwotZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gd2l0aGluIGEgPGNvZGU+VE1QTF9M T09QPC9jb2RlPiB0YWcuCitmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB3aXRoaW4gYSA8Y29kZT5U TVBMX0xPT1A8L2NvZGU+IG9yIDxjb2RlPlRNUExfQ0FMTDwvY29kZT4gdGFnLgogPHA+CiBUaGUg ZGVmYXVsdAogdmFsdWUgaXMKQEAgLTEwNjgsNiArMTExMywzNSBAQAogPC9ibG9ja3F1b3RlPgog CiA8cD48YnI+W1NwZWNpYWwgdmFyaWFibGVdCis8YnI+PGEgY2xhc3M9bm9uZSBuYW1lPSIqY2Fs bC10ZW1wbGF0ZS1hY2Nlc3MtZnVuY3Rpb24qIj48Yj4qY2FsbC10ZW1wbGF0ZS1hY2Nlc3MtZnVu Y3Rpb24qPC9iPjwvYT4KKworPGJsb2NrcXVvdGU+PGJyPiBUaGUgdmFsdWUgb2YgdGhpcyB2YXJp YWJsZSBzaG91bGQgYmUgYSA8YQoraHJlZj0iaHR0cDovL3d3dy5saXNwd29ya3MuY29tL2RvY3Vt ZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvMDFfZGFlLmh0bSI+ZGVzaWduYXRvcjwvYT4KK2ZvciBh IGZ1bmN0aW9uIHdoaWNoIHRha2VzIG9uZSBhcmd1bWVudCAodGhlIGNhbGwgc3RydWN0dXJlKSBh bmQKK3JldHVybnMgZWl0aGVyIGEgdGVtcGxhdGUgcHJpbnRlciBvciBhIHZhbHVlIHRoYXQgY2Fu IGJlIHVzZWQgYXMgdGhlCitmaXJzdCBhcmd1bWVudCB0byA8YQoraHJlZj0iI2NyZWF0ZS10ZW1w bGF0ZS1wcmludGVyIj48Y29kZT5jcmVhdGUtdGVtcGxhdGUtcHJpbnRlcjwvY29kZT48L2E+Lgor VGhpcyBmdW5jdGlvbiB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB0ZW1wbGF0ZSB0aGF0 IHNob3VsZCBiZQordXNlZCBmb3IgYSBjYWxsIGluIGEgPGNvZGU+VE1QTF9DQUxMPC9jb2RlPiB0 YWcuCis8cD5UaGUgZGVmYXVsdCB2YWx1ZQoraXMgIyc8YQoraHJlZj0iaHR0cDovL3d3dy5saXNw d29ya3MuY29tL2RvY3VtZW50YXRpb24vSHlwZXJTcGVjL0JvZHkvZl9jYXJfYy5odG0jY2FyIj48 Y29kZT5DQVI8L2NvZGU+PC9hPi4KK1RoaXMgdmFyaWFibGUgdGFrZXMgZWZmZWN0IGF0IDxhIGhy ZWY9IiNzZW1hbnRpY3MiPmludm9jYXRpb24KK3RpbWU8L2E+LiA8L2Jsb2NrcXVvdGU+CisKKzxw Pjxicj5bU3BlY2lhbCB2YXJpYWJsZV0KKzxicj48YSBjbGFzcz1ub25lIG5hbWU9IipjYWxsLXZh bHVlLWFjY2Vzcy1mdW5jdGlvbioiPjxiPipjYWxsLXZhbHVlLWFjY2Vzcy1mdW5jdGlvbio8L2I+ PC9hPgorCis8YmxvY2txdW90ZT48YnI+IFRoZSB2YWx1ZSBvZiB0aGlzIHZhcmlhYmxlIHNob3Vs ZCBiZSBhIDxhCitocmVmPSJodHRwOi8vd3d3Lmxpc3B3b3Jrcy5jb20vZG9jdW1lbnRhdGlvbi9I eXBlclNwZWMvQm9keS8wMV9kYWUuaHRtIj5kZXNpZ25hdG9yPC9hPgorZm9yIGEgZnVuY3Rpb24g d2hpY2ggdGFrZXMgb25lIGFyZ3VtZW50ICh0aGUgY2FsbCBzdHJ1Y3R1cmUpIGFuZAorcmV0dXJu cyBhIHN0cnVjdHVyZSB0byB1c2UgYXMgdGhlIHZhbHVlIGZvciBhIGNhbGwgaW4gYQorPGNvZGU+ VE1QTF9DQUxMPC9jb2RlPiB0YWcuIDxwPlRoZSBkZWZhdWx0IHZhbHVlIGlzICMnPGEKK2hyZWY9 Imh0dHA6Ly93d3cubGlzcHdvcmtzLmNvbS9kb2N1bWVudGF0aW9uL0h5cGVyU3BlYy9Cb2R5L2Zf Y2FyX2MuaHRtI2NkciI+PGNvZGU+Q0RSPC9jb2RlPjwvYT4uCitUaGlzIHZhcmlhYmxlIHRha2Vz IGVmZmVjdCBhdCA8YSBocmVmPSIjc2VtYW50aWNzIj5pbnZvY2F0aW9uCit0aW1lPC9hPi4gPC9i bG9ja3F1b3RlPgorCis8cD48YnI+W1NwZWNpYWwgdmFyaWFibGVdCiA8YnI+PGEgY2xhc3M9bm9u ZSBuYW1lPSIqaWdub3JlLWVtcHR5LWxpbmVzKiI+PGI+Kmlnbm9yZS1lbXB0eS1saW5lcyo8L2I+ PC9hPgogCiA8YmxvY2txdW90ZT48YnI+Ck9ubHkgaW4gaHRtbC10ZW1wbGF0ZS5taW5lLzogZXJy b3JzLmZhc2wKT25seSBpbiBodG1sLXRlbXBsYXRlLm1pbmUvOiBwYWNrYWdlcy5mYXNsCmRpZmYg LXVyIGh0bWwtdGVtcGxhdGUtMC43LjAvcGFja2FnZXMubGlzcCBodG1sLXRlbXBsYXRlLm1pbmUv cGFja2FnZXMubGlzcAotLS0gaHRtbC10ZW1wbGF0ZS0wLjcuMC9wYWNrYWdlcy5saXNwCTIwMDYt MDktMTQgMTM6NDQ6MzEuMDAwMDAwMDAwICswMjAwCisrKyBodG1sLXRlbXBsYXRlLm1pbmUvcGFj a2FnZXMubGlzcAkyMDA2LTExLTE5IDA1OjUwOjE0LjAwMDAwMDAwMCArMDEwMApAQCAtMzIsNyAr MzIsOSBAQAogKGRlZnBhY2thZ2UgOmh0bWwtdGVtcGxhdGUKICAgKDpuaWNrbmFtZXMgOnRlbXBs YXRlKQogICAoOnVzZSA6Y2wpCi0gICg6ZXhwb3J0IDoqY29udmVydC1uaWwtdG8tZW1wdHktc3Ry aW5nKgorICAoOmV4cG9ydCA6KmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0aW9uKgorCSAgIDoq Y2FsbC12YWx1ZXMtYWNjZXNzLWZ1bmN0aW9uKgorCSAgIDoqY29udmVydC1uaWwtdG8tZW1wdHkt c3RyaW5nKgogICAgICAgICAgICA6KmRlZmF1bHQtdGVtcGxhdGUtb3V0cHV0KgogICAgICAgICAg ICA6KmRlZmF1bHQtdGVtcGxhdGUtcGF0aG5hbWUqCiAgICAgICAgICAgIDoqZXNjYXBlLWNoYXIt cCoKT25seSBpbiBodG1sLXRlbXBsYXRlLm1pbmUvOiBzcGVjaWFscy5mYXNsCmRpZmYgLXVyIGh0 bWwtdGVtcGxhdGUtMC43LjAvc3BlY2lhbHMubGlzcCBodG1sLXRlbXBsYXRlLm1pbmUvc3BlY2lh bHMubGlzcAotLS0gaHRtbC10ZW1wbGF0ZS0wLjcuMC9zcGVjaWFscy5saXNwCTIwMDYtMDktMTQg MTY6MDI6MDAuMDAwMDAwMDAwICswMjAwCisrKyBodG1sLXRlbXBsYXRlLm1pbmUvc3BlY2lhbHMu bGlzcAkyMDA2LTEyLTExIDAzOjU5OjI2LjAwMDAwMDAwMCArMDEwMApAQCAtMTA1LDYgKzEwNSwx NCBAQAogICAiVGhlIGZ1bmN0aW9uIHdoaWNoIGFzc29jaWF0ZXMgXChhdHRyaWJ1dGUpIHN5bWJv bHMgd2l0aCB0aGVpcgogdmFsdWVzLiIpCiAKKyhkZWZ2YXIgKmNhbGwtdGVtcGxhdGUtYWNjZXNz LWZ1bmN0aW9uKiAjJ2NhcgorICAiQWNjZXNzb3IgZnVuY3Rpb24gZm9yIGV4dHJhY3RpbmcgdGhl IGNhbGxlZCB0ZW1wbGF0ZSBmcm9tIGEKK1RNUExfQ0FMTCBmb3JtLiIpCisKKyhkZWZ2YXIgKmNh bGwtdmFsdWUtYWNjZXNzLWZ1bmN0aW9uKiAjJ2NkcgorICAiQWNjZXNzb3IgZnVuY3Rpb24gZm9y IGV4dHJhY3RpbmcgdGhlIHZhbHVlcyBmcm9tIGEgVE1QTF9DQUxMCitmb3JtLiIpCisKIChkZWZ2 YXIgKmZvcmNlLWRlZmF1bHQqIG5pbAogICAiVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBGT1JD RSBrZXl3b3JkIGFyZ3VtZW50IHRvCiBDUkVBVEUtVEVNUExBVEUtUFJJTlRFUi4iKQpPbmx5IGlu IGh0bWwtdGVtcGxhdGUubWluZS86IHRlbXBsYXRlLmZhc2wKZGlmZiAtdXIgaHRtbC10ZW1wbGF0 ZS0wLjcuMC90ZW1wbGF0ZS5saXNwIGh0bWwtdGVtcGxhdGUubWluZS90ZW1wbGF0ZS5saXNwCi0t LSBodG1sLXRlbXBsYXRlLTAuNy4wL3RlbXBsYXRlLmxpc3AJMjAwNi0wOS0zMCAwMDozNjoyNi4w MDAwMDAwMDAgKzAyMDAKKysrIGh0bWwtdGVtcGxhdGUubWluZS90ZW1wbGF0ZS5saXNwCTIwMDYt MTItMTEgMDM6NTk6MjYuMDAwMDAwMDAwICswMTAwCkBAIC01MCw0OSArNTAsNTQgQEAKICMrOmxp c3B3b3JrcwogKGVkaXRvcjpzZXR1cC1pbmRlbnQgIndpdGgtdXNlLXZhbHVlLXJlc3RhcnQiIDEg MiA0KQogCi0oZGVmdW4gY3JlYXRlLXNpbXBsZS1wcmludGVyIChzdHJpbmctbGlzdCAmb3B0aW9u YWwgc3ltYm9sL3BhdGhuYW1lIChuZXh0LWZuICMnbm8tdmFsdWVzKSkKLSAgIlVzZWQgaW50ZXJu YWxseSB0byBjcmVhdGUgdGVtcGxhdGUgcHJpbnRlcnMgZm9yIFRNUExfVkFSLAotVE1QTF9JTkNM VURFLCBhbmQgZm9yIHN0cmluZ3Mgd2hpY2ggZG9uJ3QgaW5jbHVkZSB0ZW1wbGF0ZQotdGFncy4g U1lNQk9ML1BBVEhOQU1FIGlzIHRoZSBzeW1ib2wgb3IgcGF0aG5hbWUgYXNzb2NpYXRlZCB3aXRo IHRoZQotdGFnLiBORVhULUZOIGlzIHRoZSBuZXh0IGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBpbiB0 aGUgY2hhaW4gb2YKLWNsb3N1cmVzLiBTVFJJTkctTElTVCBpcyBhIGxpc3Qgb2Ygc3RyaW5ncyBp biByZXZlcnNlIG9yZGVyIHRvIGJlCi1wcmludGVkIGZpcnN0LiIKKyhkZWZ1biBjcmVhdGUtc2lt cGxlLXByaW50ZXIgKHN0cmluZy1saXN0ICZvcHRpb25hbCAobmV4dC1mbiAjJ25vLXZhbHVlcykp CisgICJVc2VkIGludGVybmFsbHkgdG8gY3JlYXRlIHRlbXBsYXRlIHByaW50ZXJzIGZvciBzdHJp bmdzIHdoaWNoIGRvbid0CitpbmNsdWRlIHRlbXBsYXRlIHRhZ3MuIE5FWFQtRk4gaXMgdGhlIG5l eHQgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGluCit0aGUgY2hhaW4gb2YgY2xvc3VyZXMuIFNUUklO Ry1MSVNUIGlzIGEgbGlzdCBvZiBzdHJpbmdzIGluIHJldmVyc2UKK29yZGVyIHRvIGJlIHByaW50 ZWQgZmlyc3QuIgogICAobGV0ICgoc3RyaW5nIChsaXN0LXRvLXN0cmluZyBzdHJpbmctbGlzdCkp KQotICAgIChldHlwZWNhc2Ugc3ltYm9sL3BhdGhuYW1lCi0gICAgICAobnVsbAotICAgICAgICA7 OyBubyB0YWcsIGp1c3QgcHJpbnQgU1RSSU5HCi0gICAgICAgIChsYW1iZGEgKHZhbHVlcykKLSAg ICAgICAgICAod3JpdGUtc3RyaW5nIHN0cmluZyAqdGVtcGxhdGUtb3V0cHV0KikKLSAgICAgICAg ICAoZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKQotICAgICAgKHN5bWJvbAotICAgICAgICA7OyBU TVBMX1ZBUiB0YWcKLSAgICAgICAgKGxhbWJkYSAodmFsdWVzKQotICAgICAgICAgICh3cml0ZS1z dHJpbmcgc3RyaW5nICp0ZW1wbGF0ZS1vdXRwdXQqKQotICAgICAgICAgIChsZXQqICgodmFsdWUg KGZ1bmNhbGwgKnZhbHVlLWFjY2Vzcy1mdW5jdGlvbiogc3ltYm9sL3BhdGhuYW1lIHZhbHVlcykp Ci0gICAgICAgICAgICAgICAgIChzdHJpbmcgKHR5cGVjYXNlIHZhbHVlCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAobnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAqY29u dmVydC1uaWwtdG8tZW1wdHktc3RyaW5nKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aXRoLXVzZS12YWx1ZS1yZXN0YXJ0 IChzeW1ib2wvcGF0aG5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWdu YWwtdGVtcGxhdGUtbWlzc2luZy12YWx1ZS1lcnJvciAKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJWYWx1ZSBmb3Igc3ltYm9sIH5TIGlzIE5JTCIKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN5bWJvbC9wYXRobmFtZSkpKSkKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgIChzdHJpbmcgdmFsdWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgKG90aGVyd2lzZQotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIChjb25kICgqZm9ybWF0LW5vbi1zdHJpbmdzKiAoZm9ybWF0IG5pbCAifkEiIHZhbHVlKSkK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodCAod2l0aC11c2UtdmFsdWUtcmVz dGFydCAoc3ltYm9sL3BhdGhuYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGVycm9yICd0ZW1wbGF0ZS1ub3QtYS1zdHJpbmctZXJyb3IKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6dmFsdWUgdmFsdWUKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Zm9ybWF0LWNvbnRyb2wgIlZhbHVl IH5TIGZvciBzeW1ib2wgflMgaXMgbm90IGEgc3RyaW5nIgotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDpmb3JtYXQtYXJndW1lbnRzIChsaXN0IHZhbHVlIHN5 bWJvbC9wYXRobmFtZSkpKSkpKSkpKQotICAgICAgICAgICAgKHdyaXRlLXN0cmluZyAoZnVuY2Fs bCAqc3RyaW5nLW1vZGlmaWVyKiBzdHJpbmcpICp0ZW1wbGF0ZS1vdXRwdXQqKSkKLSAgICAgICAg ICAoZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKQotICAgICAgKHBhdGhuYW1lCi0gICAgICAgIDs7 IFRNUExfSU5DTFVERSB0YWcKLSAgICAgICAgKGxhbWJkYSAodmFsdWVzKQotICAgICAgICAgICh3 cml0ZS1zdHJpbmcgc3RyaW5nICp0ZW1wbGF0ZS1vdXRwdXQqKQotICAgICAgICAgIChmdW5jYWxs IChjYXIgKGdldGhhc2ggc3ltYm9sL3BhdGhuYW1lICpwcmludGVyLWhhc2gqKSkgdmFsdWVzKQot ICAgICAgICAgIChmdW5jYWxsIG5leHQtZm4gdmFsdWVzKSkpKSkpCisgICAgKGxhbWJkYSAodmFs dWVzKQorICAgICAgKHdyaXRlLXN0cmluZyBzdHJpbmcgKnRlbXBsYXRlLW91dHB1dCopCisgICAg ICAoZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKSkKKworKGRlZnVuIGNyZWF0ZS12YXItcHJpbnRl ciAoc3RyaW5nLWxpc3Qgc3ltYm9sIG5leHQtZm4pCisgICJVc2VkIGludGVybmFsbHkgdG8gY3Jl YXRlIHRlbXBsYXRlIHByaW50ZXJzIGZvciBUTVBMX1ZBUi4gU1lNQk9MIGlzCit0aGUgc3ltYm9s IGFzc29jaWF0ZWQgd2l0aCB0aGUgdGFnLiBORVhULUZOIGlzIHRoZSBuZXh0IGZ1bmN0aW9uIHRv IGJlCitjYWxsZWQgaW4gdGhlIGNoYWluIG9mIGNsb3N1cmVzLiBTVFJJTkctTElTVCBpcyBhIGxp c3Qgb2Ygc3RyaW5ncyBpbgorcmV2ZXJzZSBvcmRlciB0byBiZSBwcmludGVkIGZpcnN0LiIKKyAg KGxldCAoKHN0cmluZyAobGlzdC10by1zdHJpbmcgc3RyaW5nLWxpc3QpKSkKKyAgICAobGFtYmRh ICh2YWx1ZXMpCisgICAgICAod3JpdGUtc3RyaW5nIHN0cmluZyAqdGVtcGxhdGUtb3V0cHV0KikK KyAgICAgIChsZXQqICgodmFsdWUgKGZ1bmNhbGwgKnZhbHVlLWFjY2Vzcy1mdW5jdGlvbiogc3lt Ym9sIHZhbHVlcykpCisgICAgICAgICAgICAgKHN0cmluZyAodHlwZWNhc2UgdmFsdWUKKyAgICAg ICAgICAgICAgICAgICAgICAgKG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgIChpZiAqY29u dmVydC1uaWwtdG8tZW1wdHktc3RyaW5nKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIi CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdpdGgtdXNlLXZhbHVlLXJlc3RhcnQgKHN5 bWJvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzaWduYWwtdGVtcGxhdGUtbWlz c2luZy12YWx1ZS1lcnJvciAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWUg Zm9yIHN5bWJvbCB+UyBpcyBOSUwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lt Ym9sKSkpKQorICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nIHZhbHVlKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgKG90aGVyd2lzZQorICAg ICAgICAgICAgICAgICAgICAgICAgKGNvbmQgKCpmb3JtYXQtbm9uLXN0cmluZ3MqIChmb3JtYXQg bmlsICJ+QSIgdmFsdWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHQgKHdpdGgt dXNlLXZhbHVlLXJlc3RhcnQgKHN5bWJvbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKGVycm9yICd0ZW1wbGF0ZS1ub3QtYS1zdHJpbmctZXJyb3IKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDp2YWx1ZSB2YWx1ZQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgOmZvcm1hdC1jb250cm9sICJWYWx1ZSB+UyBmb3Ig c3ltYm9sIH5TIGlzIG5vdCBhIHN0cmluZyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDpmb3JtYXQtYXJndW1lbnRzIChsaXN0IHZhbHVlIHN5bWJvbCkpKSkpKSkp KQorICAgICAgICAod3JpdGUtc3RyaW5nIChmdW5jYWxsICpzdHJpbmctbW9kaWZpZXIqIHN0cmlu ZykgKnRlbXBsYXRlLW91dHB1dCopKQorICAgICAgKGZ1bmNhbGwgbmV4dC1mbiB2YWx1ZXMpKSkp CisKKyhkZWZ1biBjcmVhdGUtaW5jbHVkZS1wcmludGVyIChzdHJpbmctbGlzdCBwYXRobmFtZSBu ZXh0LWZuKQorICAiVXNlZCBpbnRlcm5hbGx5IHRvIGNyZWF0ZSB0ZW1wbGF0ZSBwcmludGVycyBm b3IgVE1QTF9JTkNMVURFLgorUEFUSE5BTUUgaXMgdGhlIHBhdGhuYW1lIGFzc29jaWF0ZWQgd2l0 aCB0aGUgdGFnLiBORVhULUZOIGlzIHRoZSBuZXh0CitmdW5jdGlvbiB0byBiZSBjYWxsZWQgaW4g dGhlIGNoYWluIG9mIGNsb3N1cmVzLiBTVFJJTkctTElTVCBpcyBhIGxpc3QKK29mIHN0cmluZ3Mg aW4gcmV2ZXJzZSBvcmRlciB0byBiZSBwcmludGVkIGZpcnN0LiIKKyAgKGxldCAoKHN0cmluZyAo bGlzdC10by1zdHJpbmcgc3RyaW5nLWxpc3QpKSkKKyAgICAobGFtYmRhICh2YWx1ZXMpCisgICAg ICAod3JpdGUtc3RyaW5nIHN0cmluZyAqdGVtcGxhdGUtb3V0cHV0KikKKyAgICAgIChmdW5jYWxs IChjYXIgKGdldGhhc2ggcGF0aG5hbWUgKnByaW50ZXItaGFzaCopKSB2YWx1ZXMpCisgICAgICAo ZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKSkKICAgCiAoZGVmdW4gY3JlYXRlLWlmLXByaW50ZXIg KHN0cmluZy1saXN0IHN5bWJvbCBpZi1mbiBlbHNlLWZuIG5leHQtZm4gdW5sZXNzcCkKICAgIlVz ZWQgaW50ZXJuYWxseSB0byBjcmVhdGUgdGVtcGxhdGUgcHJpbnRlcnMgZm9yIFRNUExfSUYgYW5k CkBAIC0xNDgsNiArMTUzLDM0IEBACiAgICAgICAgICAgICAgICAgZG8gKGZ1bmNhbGwgYm9keS1m biB2YWx1ZXMpKSkpCiAgICAgICAoZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKSkKIAorKGRlZnVu IGNyZWF0ZS1jYWxsLXByaW50ZXIgKHN0cmluZy1saXN0IHN5bWJvbCBuZXh0LWZuKQorICAiVXNl ZCBpbnRlcm5hbGx5IHRvIGNyZWF0ZSB0ZW1wbGF0ZSBwcmludGVycyBmb3IgVE1QTF9DQUxMIHRh Z3MuCitTWU1CT0wgaXMgdGhlIHN5bWJvbCBhc3NvY2lhdGVkIHdpdGggdGhlIHRhZy4gQk9EWS1G TiBpcyB0aGUgdGVtcGxhdGUKK3ByaW50ZXIgZm9yIHRoZSBib2R5IG9mIHRoZSBsb29wLiBORVhU LUZOIGlzIHRoZSBuZXh0IGZ1bmN0aW9uIHRvIGJlCitjYWxsZWQgaW4gdGhlIGNoYWluIG9mIGNs b3N1cmVzLiBTVFJJTkctTElTVCBpcyBhIGxpc3Qgb2Ygc3RyaW5ncyBpbgorcmV2ZXJzZSBvcmRl ciB0byBiZSBwcmludGVkIGZpcnN0LiIKKyAgKGxldCAoKHN0cmluZyAobGlzdC10by1zdHJpbmcg c3RyaW5nLWxpc3QpKSkKKyAgICAoY29uZCAoKnNlcXVlbmNlcy1hcmUtbGlzdHMqCisgICAgICAg ICAgIChsYW1iZGEgKHZhbHVlcykKKyAgICAgICAgICAgICAod3JpdGUtc3RyaW5nIHN0cmluZyAq dGVtcGxhdGUtb3V0cHV0KikKKyAgICAgICAgICAgICAoZG9saXN0IChjYWxsIChmdW5jYWxsICp2 YWx1ZS1hY2Nlc3MtZnVuY3Rpb24qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzeW1ib2wgdmFsdWVzIHQpKQorICAgICAgICAgICAgICAgKGZpbGwtYW5kLXByaW50LXRlbXBs YXRlCisgICAgICAgICAgICAgICAgKGZ1bmNhbGwgKmNhbGwtdGVtcGxhdGUtYWNjZXNzLWZ1bmN0 aW9uKiBjYWxsKQorICAgICAgICAgICAgICAgIChmdW5jYWxsICpjYWxsLXZhbHVlLWFjY2Vzcy1m dW5jdGlvbiogY2FsbCkKKyAgICAgICAgICAgICAgICA6c3RyZWFtICp0ZW1wbGF0ZS1vdXRwdXQq KSkKKyAgICAgICAgICAgICAoZnVuY2FsbCBuZXh0LWZuIHZhbHVlcykpKQorICAgICAgICAgICh0 CisgICAgICAgICAgIChsYW1iZGEgKHZhbHVlcykKKyAgICAgICAgICAgICAod3JpdGUtc3RyaW5n IHN0cmluZyAqdGVtcGxhdGUtb3V0cHV0KikKKyAgICAgICAgICAgICAobG9vcCBmb3IgY2FsbCBh Y3Jvc3MgKGZ1bmNhbGwgKnZhbHVlLWFjY2Vzcy1mdW5jdGlvbioKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ltYm9sIHZhbHVlcyB0KQorICAgICAgICAgICAg ICAgICAgIGRvIChmaWxsLWFuZC1wcmludC10ZW1wbGF0ZQorICAgICAgICAgICAgICAgICAgICAg ICAoZnVuY2FsbCAqY2FsbC10ZW1wbGF0ZS1hY2Nlc3MtZnVuY3Rpb24qIGNhbGwpCisgICAgICAg ICAgICAgICAgICAgICAgIChmdW5jYWxsICpjYWxsLXZhbHVlLWFjY2Vzcy1mdW5jdGlvbiogY2Fs bCkKKyAgICAgICAgICAgICAgICAgICAgICAgOnN0cmVhbSAqdGVtcGxhdGUtb3V0cHV0KikpCisg ICAgICAgICAgICAgKGZ1bmNhbGwgbmV4dC1mbiB2YWx1ZXMpKSkpKSkKKwogKGRlZnVuIGNyZWF0 ZS10ZW1wbGF0ZS1wcmludGVyLWF1eCAoc3RyaW5nLXN0YWNrIGVuZC10b2tlbikKICAgIlJlYWRz IGZyb20gKlNUQU5EQVJELUlOUFVUKiBhbmQgcmV0dXJucyBhIHRlbXBsYXRlIHByaW50ZXIgZnJv bQogd2hhdCBpdCByZWFkcy4gIFdoZW4gdGhpcyBmdW5jdGlvbiBpcyBlbnRlcmVkIHRoZSBzdHJl YW0gcG9pbnRlciBtdXN0CkBAIC0yMjcsMTAgKzI2MCwxMCBAQAogICAgICAgICAgICAgICAgIDs7 IHRoZW4gd2UgY29tYmluZSBpdCB3aXRoIHRoZSBzdHJpbmdzIGJlZm9yZSB0aGUgdGFnCiAgICAg ICAgICAgICAgICAgOzsgdG8gY3JlYXRlIGEgdGVtcGxhdGUgcHJpbnRlciBmb3IgVE1QTF9JTkNM VURFCiAgICAgICAgICAgICAgICAgKHZhbHVlcwotICAgICAgICAgICAgICAgICAoY3JlYXRlLXNp bXBsZS1wcmludGVyIChjb25zIChza2lwLWxlYWRpbmctd2hpdGVzcGFjZSBzdHJpbmcpCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLXN0YWNrKQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZC1wYXRobmFtZQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtZm4pCisgICAgICAg ICAgICAgICAgIChjcmVhdGUtaW5jbHVkZS1wcmludGVyIChjb25zIChza2lwLWxlYWRpbmctd2hp dGVzcGFjZSBzdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0cmluZy1zdGFjaykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbWVyZ2VkLXBhdGhuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG5leHQtZm4pCiAgICAgICAgICAgICAgICAgIGVsc2UtZm9sbG93cykpKSkKICAgICAg ICAgICAoKHN0cmluZy1lcXVhbCB0b2tlbiAiVE1QTF9WQVIiKQogICAgICAgICAgICAgOzsgVE1Q TF9WQVIgdGFnIC0gZmlyc3QgcmVhZCB0aGUgc3ltYm9sIHdoaWNoIGhhcyB0bwpAQCAtMjQ1LDcg KzI3OCw3IEBACiAgICAgICAgICAgICAgICAgIDs7IHRvIGNyZWF0ZSBhIHRlbXBsYXRlIHByaW50 ZXIgZm9yIFRNUExfVkFSIC0gbm90ZQogICAgICAgICAgICAgICAgICA7OyB0aGF0IHdlIGRvbid0 IHNraXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZQogICAgICAgICAgICAgICAgICA7 OyBoZXJlCi0gICAgICAgICAgICAgICAgIChjcmVhdGUtc2ltcGxlLXByaW50ZXIgKGNvbnMgc3Ry aW5nIHN0cmluZy1zdGFjaykKKyAgICAgICAgICAgICAgICAgKGNyZWF0ZS12YXItcHJpbnRlciAo Y29ucyBzdHJpbmcgc3RyaW5nLXN0YWNrKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN5bWJvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IG5leHQtZm4pCiAgICAgICAgICAgICAgICAgIGVsc2UtZm9sbG93cykpKSkKQEAgLTI4Myw2ICsz MTYsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keS1mbgogICAgICAgICAgICAg ICAgICAgICAgICAgICBuZXh0LWZuKQogICAgICAgICAgICAgICAgICBlbHNlLWZvbGxvd3MpKSkp CisJICAoKHN0cmluZy1lcXVhbCB0b2tlbiAiVE1QTF9DQUxMIikKKyAgICAgICAgICAgIDs7IFRN UExfQ0FMTCB0YWcgLSBmaXJzdCByZWFkIHRoZSBzeW1ib2wgd2hpY2ggaGFzIHRvCisgICAgICAg ICAgICA7OyBmb2xsb3cgYW5kIGludGVybiBpdAorICAgICAgICAgICAobGV0ICgoc3ltYm9sIChy ZWFkLXRhZy1yZXN0IDpyZWFkLWF0dHJpYnV0ZSB0KSkpCisgICAgICAgICAgICAgKG11bHRpcGxl LXZhbHVlLWJpbmQgKG5leHQtZm4gZWxzZS1mb2xsb3dzKQorICAgICAgICAgICAgICAgICAgOzsg cmVjdXJzaXZlbHkgY3JlYXRlIHRoZSB0ZW1wbGF0ZSBwcmludGVyIGZvciB0aGUKKyAgICAgICAg ICAgICAgICAgIDs7IHJlc3Qgb2YgdGhlIHN0cmVhbQorICAgICAgICAgICAgICAgICAoY3JlYXRl LXRlbXBsYXRlLXByaW50ZXItYXV4IChza2lwLXRyYWlsaW5nLXdoaXRlc3BhY2UpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC10b2tlbikKKyAgICAg ICAgICAgICAgIDs7IGNyZWF0ZSB0aGUgcHJpbnRlciB0aGF0IHdpbGwgb3V0cHV0IHRoZSBzdHJp bmdzCisgICAgICAgICAgICAgICA7OyBiZWZvcmUgdGhpcyB0YWcgYW5kIGNhbGwgdGhlIHRlbXBs YXRlcyBzdG9yZWQgdW5kZXIKKyAgICAgICAgICAgICAgIDs7IFNZTUJPTAorICAgICAgICAgICAg ICAgKHZhbHVlcyAoZnVuY2FsbCAjJ2NyZWF0ZS1jYWxsLXByaW50ZXIKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKGNvbnMgKHNraXAtbGVhZGluZy13aGl0ZXNwYWNlIHN0cmluZykK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nLXN0YWNrKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2wKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC1mbikKKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZS1mb2xsb3dz KSkpKQogICAgICAgICAgICgoc3RyaW5nLWVxdWFsIHRva2VuICIvVE1QTF9MT09QIikKICAgICAg ICAgICAgICh1bmxlc3MgKGVxIGVuZC10b2tlbiA6bG9vcCkKICAgICAgICAgICAgICAgOzsgY2hl Y2sgaWYgd2UgZXhwZWN0ZWQgL1RNUExfTE9PUCBoZXJlLCBpLmUuIGlmIGFuIG9wZW4KT25seSBp biBodG1sLXRlbXBsYXRlLm1pbmUvOiB0ZXN0LmZhc2wKZGlmZiAtdXIgaHRtbC10ZW1wbGF0ZS0w LjcuMC90ZXN0Lmxpc3AgaHRtbC10ZW1wbGF0ZS5taW5lL3Rlc3QubGlzcAotLS0gaHRtbC10ZW1w bGF0ZS0wLjcuMC90ZXN0Lmxpc3AJMjAwNi0wOS0zMCAwMDozNjoyNi4wMDAwMDAwMDAgKzAyMDAK KysrIGh0bWwtdGVtcGxhdGUubWluZS90ZXN0Lmxpc3AJMjAwNi0xMi0xMSAwNDozMDowNi4wMDAw MDAwMDAgKzAxMDAKQEAgLTEyMSw2ICsxMjEsMTIgQEAKICh0ZXN0ICIyIiAiPCEtLSBUTVBMX0lG IGZvbyAtLT48IS0tIFRNUExfSUYgYmFyIC0tPjE8IS0tIFRNUExfRUxTRSAtLT4yPCEtLSAvVE1Q TF9JRiAtLT48IS0tIFRNUExfRUxTRSAtLT48IS0tIFRNUExfSUYgYmF6IC0tPjM8IS0tIFRNUExf RUxTRSAtLT40PCEtLSAvVE1QTF9JRiAtLT48IS0tIC9UTVBMX0lGIC0tPiIgJyg6Zm9vIHQgOmJh ciBuaWwpKQogKHRlc3QgIjMiICI8IS0tIFRNUExfSUYgZm9vIC0tPjwhLS0gVE1QTF9JRiBiYXIg LS0+MTwhLS0gVE1QTF9FTFNFIC0tPjI8IS0tIC9UTVBMX0lGIC0tPjwhLS0gVE1QTF9FTFNFIC0t PjwhLS0gVE1QTF9JRiBiYXogLS0+MzwhLS0gVE1QTF9FTFNFIC0tPjQ8IS0tIC9UTVBMX0lGIC0t PjwhLS0gL1RNUExfSUYgLS0+IiAnKDpmb28gbmlsIDpiYXogdCkpCiAodGVzdCAiNCIgIjwhLS0g VE1QTF9JRiBmb28gLS0+PCEtLSBUTVBMX0lGIGJhciAtLT4xPCEtLSBUTVBMX0VMU0UgLS0+Mjwh LS0gL1RNUExfSUYgLS0+PCEtLSBUTVBMX0VMU0UgLS0+PCEtLSBUTVBMX0lGIGJheiAtLT4zPCEt LSBUTVBMX0VMU0UgLS0+NDwhLS0gL1RNUExfSUYgLS0+PCEtLSAvVE1QTF9JRiAtLT4iICcoOmZv byBuaWwgOmJheiBuaWwpKQorKHRlc3QgIlgiICI8IS0tIFRNUExfQ0FMTCBmb28gLS0+IiAnKDpm b28gKCgiWCIpKSkpCisodGVzdCAiUVVVWCIgIjwhLS0gVE1QTF9WQVIgYmF6IC0tPjwhLS0gVE1Q TF9DQUxMIGZvbyAtLT4iICcoOmJheiAiUSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6Zm9vICgoIjwhLS0gVE1QTF9WQVIgYmFy IC0tPiIgOmJhciAiVSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCI8IS0tIFRNUExfVkFSIGJhciAtLT5YIiA6YmFy ICJVIikpKSkKKyh0ZXN0ICIiICI8IS0tIFRNUExfSUYgZm9vIC0tPjwhLS0gVE1QTF9DQUxMIGJh ciAtLT48IS0tIC9UTVBMX0lGIC0tPiIgJyg6Zm9vICgoIi0tLSIpKSkpCisodGVzdCBuaWwgIjwh LS0gVE1QTF9DQUxMIGZvbyAtLT4iICcoOmZvbyA1NykpCiAKIChsZXQgKCh0ZW1wLW5hbWUgKG1h a2UtcGF0aG5hbWUgOm5hbWUgKGZvcm1hdCBuaWwgInRlbXBsYXRlLXRlc3QtfkEiIChyYW5kb20g MTAwMDAwMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpkZWZhdWx0cyB0bXAt ZGlyKSkpCkBAIC0yMTMsNyArMjE5LDExIEBACiAgICAgICAgICI8IS0tIFRNUExfTE9PUCB2ZWN0 b3IgLS0+WzwhLS0gVE1QTF9WQVIgaXRlbSAtLT5dPCEtLSAvVE1QTF9MT09QIC0tPiIKICAgICAg ICAgJyg6dmVjdG9yICMoKDppdGVtICIxIikKICAgICAgICAgICAgICAgICAgICAgKDppdGVtICIy IikKLSAgICAgICAgICAgICAgICAgICAgKDppdGVtICIzIikpKSkpCisgICAgICAgICAgICAgICAg ICAgICg6aXRlbSAiMyIpKSkpCisgICh0ZXN0ICJRVVVYIiAiPCEtLSBUTVBMX1ZBUiBiYXogLS0+ PCEtLSBUTVBMX0NBTEwgZm9vIC0tPiIKKyAgICAgICAgJyg6YmF6ICJRIgorICAgICAgICAgIDpm b28gIygoIjwhLS0gVE1QTF9WQVIgYmFyIC0tPiIgOmJhciAiVSIpCisgICAgICAgICAgICAgICAg ICgiPCEtLSBUTVBMX1ZBUiBiYXIgLS0+WCIgOmJhciAiVSIpKSkpKQogCiAobGV0ICgoKnVwY2Fz ZS1hdHRyaWJ1dGUtc3RyaW5ncyogbmlsKSkKICAgKHRlc3QgIlRoZSBzbG93IGJyb3duIGZveCIK T25seSBpbiBodG1sLXRlbXBsYXRlLm1pbmUvOiB1dGlsLmZhc2wK --===============6207343077153583020==-- From edi@agharta.de Tue Dec 12 14:33:54 2006 From: Edi Weitz To: html-template-devel@common-lisp.net Subject: [html-template-devel] New version 0.8.0 (Was: Proposed new feature for HTML-TEMPLATE) Date: Tue, 12 Dec 2006 20:33:45 +0100 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============2880235135955629565==" --===============2880235135955629565== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable On Mon, 11 Dec 2006 20:15:26 +0100, "Marijn Haverbeke" = wrote: > Attached is the path which should do all that. I also included a > small refactoring which splits up create-simple-printer, but that > should be easy to remove if you don't like it. Very nice, thanks a lot. I've released a new version with your modifications. Cheers, Edi. --===============2880235135955629565==--