From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kaushal Modi Subject: Re: Allow #+SETUPFILE to point to an URL for the org file Date: Fri, 09 Jun 2017 16:59:43 +0000 Message-ID: References: <87h96eh4qb.fsf@nicolasgoaziou.fr> <871sxigkhk.fsf@nicolasgoaziou.fr> <87twaef3iq.fsf@nicolasgoaziou.fr> <874lybp5ua.fsf@nicolasgoaziou.fr> <87shjtb5wd.fsf@nicolasgoaziou.fr> <87o9ug83fb.fsf@nicolasgoaziou.fr> <87o9ud77s2.fsf@nicolasgoaziou.fr> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="f403045f74b81843d9055189e6dc" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:58135) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dJNGR-0004iV-PZ for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 13:00:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dJNGQ-0004QZ-CC for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 12:59:59 -0400 Received: from mail-lf0-x22b.google.com ([2a00:1450:4010:c07::22b]:36580) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dJNGP-0004Pv-R3 for emacs-orgmode@gnu.org; Fri, 09 Jun 2017 12:59:58 -0400 Received: by mail-lf0-x22b.google.com with SMTP id o83so32104532lff.3 for ; Fri, 09 Jun 2017 09:59:57 -0700 (PDT) In-Reply-To: <87o9ud77s2.fsf@nicolasgoaziou.fr> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Nicolas Goaziou Cc: emacs-org list --f403045f74b81843d9055189e6dc Content-Type: multipart/alternative; boundary="f403045f74b81843d2055189e6da" --f403045f74b81843d2055189e6da Content-Type: text/plain; charset="UTF-8" I have attached the updated patch, rebased to master. On Sun, May 28, 2017 at 3:36 AM Nicolas Goaziou wrote: > This is a good idea. We could even display a read-only buffer with the > contents of the document, using new `org-file-contents'. > > Anyway, this can be done in a different patch. > Thanks. I was on the fence about whether I should open the cached file in a read-only buffer.. but then the function was named `org-edit-special'.. the "edit" part. But if you are fine, I can work on that in a different commit. > > +indirectly through a file included using @samp{#+SETUPFILE: > filename/URL} > > filename/URL > file name or URL > > > +@item #+SETUPFILE: file/URL > > file/URL > file name or URL > > > +reset the temporary file cache. Org also parses and loads the file/URL > > file/URL > document > > > +during normal exporting process. Org parses the contents of this > > file/URL as > > file/URL document > > > +buffer for these lines and update the information. Also reset the org > file > > org > Org > Done. > > +(defvar ffap-url-regexp) ;Silence byte-compiler > > I think this can go at the beginning of the "org.el". > Done. > > + ;; Reset the cache of files downloaded by `org-file-contents'. > > + (clrhash org--file-cache)) > > Note that we can still implement a non-interactive > `org-reset-setupfile-cache' function and call it here instead. (clrhash > org--file-cache) may be a bit low level at this point. > Done, except that I named the function org-reset-file-cache as the file cache can be updated by org-file-contents function in general for any file. > Otherwise, LGTM. Would you want to throw in some tests? You can use > cl-letf to bind `url-retrieve-synchronously' to a function returning > a buffer containing some dumb (valid or invalid) output. > Done! I, though used invalid URLs in the test. (If they become valid at some point in distant future (I doubt), then we can update the test :)) -- Kaushal Modi --f403045f74b81843d2055189e6da Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
I have attached the update= d patch, rebased to master.


On Sun, May 28, 2017 at 3:36 AM Nicolas Goaziou <mail@nicolasgoaziou.fr> wr= ote:
This is a good idea. We could = even display a read-only buffer with the
contents of the document, using new `org-file-contents'.

Anyway, this can be done in a different patch.

Thanks. I was on = the fence about whether I should open the cached file in a read-only buffer= .. but then the function was named `org-edit-special'.. the "edit&= quot; part. But if you are fine, I can work on that in a different commit.<= /div>
=C2=A0
> +indirectly through a file included using @samp{#+SETUPFILE: filena= me/URL}

filename/URL > file name or URL

> +@item #+SETUPFILE: file/URL

file/URL > file name or URL

> +reset the temporary file cache.=C2=A0 Org also parses and loads t= he file/URL

file/URL > document

> +during normal exporting process.=C2=A0 Org parses the contents of thi= s
> file/URL as

file/URL document

> +buffer for these lines and update the information.=C2=A0 Also res= et the org file

org > Org

D= one.
=C2= =A0
> +(defvar ffap-url-regexp)=C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0;Silence byte-compiler

I think this can go at the beginning of the "org.el".

Done.
=C2=A0
> +=C2=A0 =C2=A0 ;; Reset = the cache of files downloaded by `org-file-contents'.
> +=C2=A0 =C2=A0 (clrhash org--file-cache))

Note that we can still implement a non-interactive
`org-reset-setupfile-cache' function and call it here instead. (clrhash=
org--file-cache) may be a bit low level at this point.

Don= e, except that I named the function org-reset-file-cache as the file cache = can be updated by org-file-contents function in general for any file.
=
=C2=A0
Otherwise, LGTM. Would you want to throw in so= me tests? You can use
cl-letf to bind `url-retrieve-synchronously' to a function returning a buffer containing some dumb (valid or invalid) output.

Done! I, though used invalid URLs in the test. (If they b= ecome valid at some point in distant future (I doubt), then we can update t= he test :))
--

Kaushal Modi

--f403045f74b81843d2055189e6da-- --f403045f74b81843d9055189e6dc Content-Type: application/octet-stream; name="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Disposition: attachment; filename="0001-Allow-org-file-contents-to-fetch-file-contents-from-.patch" Content-Transfer-Encoding: base64 Content-ID: <15c8dcc0be4ce4967311> X-Attachment-Id: 15c8dcc0be4ce4967311 RnJvbSA3MTFkNzE4OTVjYzNmZWMyM2VlNDY2NTI5OWRmNjY1ODQyZmU5MDY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLYXVzaGFsIE1vZGkgPGthdXNoYWwubW9kaUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgOSBKdW4gMjAxNyAxMjo1NjoxMSAtMDQwMApTdWJqZWN0OiBbUEFUQ0hdIEFs bG93IG9yZy1maWxlLWNvbnRlbnRzIHRvIGZldGNoIGZpbGUgY29udGVudHMgZnJvbSBhIFVSTAoK KiBsaXNwL29yZy5lbCAob3JnLS1maWxlLWNhY2hlKTogTmV3IGludGVybmFsIHZhcmlhYmxlIHRv IHN0b3JlCmRvd25sb2FkZWQgZmlsZXMnIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLXJlc2V0 LWZpbGUtY2FjaGUpOiBOZXcgZnVuY3Rpb24gdG8gY2xlYXIgdGhlIGFib3ZlCmZpbGUgY2FjaGUu CgoqIGxpc3Avb3JnLmVsIChvcmctbW9kZS1yZXN0YXJ0KTogVXNlIG9yZy1yZXNldC1maWxlLWNh Y2hlIHRvIGNsZWFyCnRoZSBmaWxlIGNhY2hlLgoKKiBsaXNwL29yZy5lbCAob3JnLWZpbGUtdXJs LXApOiBOZXcgZnVuY3Rpb24gdG8gdGVzdCBpZiB0aGUgaW5wdXQKYXJndW1lbnQgaXMgYSBVUkwu CgoqIGxpc3Avb3JnLmVsIChvcmctZmlsZS1jb250ZW50cyk6IEFsbG93IHRoZSBGSUxFIGFyZ3Vt ZW50IHRvIGJlIGEKVVJMLiAgSWYgdGhlIFVSTCBjb250ZW50cyBhcmUgYWxyZWFkeSBjYWNoZWQs IHJldHVybiB0aGUgY2FjaGUKY29udGVudHMsIGVsc2UgZG93bmxvYWQgdGhlIGZpbGUgYW5kIHJl dHVybiBjb250ZW50cyBvZiB0aGF0LiAgVGhlCmZpbGUgaXMgYXV0b21hdGljYWxseSBjYWNoZWQg ZWFjaCB0aW1lIGl0IGlzIGRvd25sb2FkZWQuICBBZGQgYSBuZXcKb3B0aW9uYWwgYXJndW1lbnQg Tk9DQUNIRS4gIElmIHRoaXMgaXMgbm9uLW5pbCwgdGhlIFVSTCBpcyBhbHdheXMKZG93bmxvYWRl ZCBhZnJlc2guICBVc2UgYG9yZy0tZmlsZS1jYWNoZScgYW5kIGBvcmctZmlsZS11cmwtcCcuCgoq IGxpc3Avb3JnLmVsIChvcmctZWRpdC1zcGVjaWFsKTogRG8gbm90IGFsbG93IGVkaXRpbmcgdGhl ICJmaWxlIiBpZiBhClVSTCBpcyBzcGVjaWZpZWQgZm9yIHRoZSAiIytTRVRVUEZJTEUiLgoKKiBs aXNwL294LmVsIChvcmctZXhwb3J0LS1saXN0LWJvdW5kLXZhcmlhYmxlcykKKG9yZy1leHBvcnQt LXByZXBhcmUtZmlsZS1jb250ZW50cyk6CiogbGlzcC9vcmctbWFjcm8uZWwgKG9yZy1tYWNyby0t Y29sbGVjdC1tYWNyb3MpIDogQWRhcHQgdG8gdGhlCnBvc3NpYmlsaXR5IHRoYXQgdGhlIGlucHV0 IHRvIGBvcmctZmlsZS1jb250ZW50cycgY2FuIGJlIGEgVVJMIHRvby4KCiogZG9jL29yZy50ZXhp IChFeHBvcnQgc2V0dGluZ3MsIEluLWJ1ZmZlciBzZXR0aW5ncykKKFRoZSB2ZXJ5IGJ1c3kgQy1j IEMtYyBrZXkpOiBNZW50aW9uIHRoYXQgIytTRVRVUEZJTEUga2V5d29yZCBjYW4gbm93CnRha2Ug YSBVUkwgYXMgYSB2YWx1ZSwgYW5kIHRoYXQgQy1jIEMtYyBvbiB0aGUgIytTRVRVUEZJTEUgbGlu ZSB3aWxsCmNsZWFyIHRoZSBvcmcgZmlsZSBjYWNoZS4KCiogdGVzdGluZy9saXNwL3Rlc3Qtb3Jn LmVsICh0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy11cmwpCih0ZXN0LW9yZy9vcmctZmlsZS1j b250ZW50cy1maWxlKTogQWRkIHRlc3RzIGZvciBvcmctZmlsZS1jb250ZW50cy4KLS0tCiBkb2Mv b3JnLnRleGkgICAgICAgICAgICAgfCAzNyArKysrKysrKysrKysrLS0tLS0tLS0tLS0KIGV0Yy9P UkctTkVXUyAgICAgICAgICAgICB8IDEyICsrKysrKystCiBsaXNwL29yZy1tYWNyby5lbCAgICAg ICAgfCAyMiArKysrKysrKy0tLS0tLQogbGlzcC9vcmcuZWwgICAgICAgICAgICAgIHwgNzQgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBsaXNwL294LmVs ICAgICAgICAgICAgICAgfCAzOCArKysrKysrKysrKysrKystLS0tLS0tLS0tCiB0ZXN0aW5nL2xp c3AvdGVzdC1vcmcuZWwgfCA0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIDYgZmlsZXMg Y2hhbmdlZCwgMTcyIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RvYy9vcmcudGV4aSBiL2RvYy9vcmcudGV4aQppbmRleCBkZWU0NmQxMDU0Li4xOTVlMzdhZDlm IDEwMDY0NAotLS0gYS9kb2Mvb3JnLnRleGkKKysrIGIvZG9jL29yZy50ZXhpCkBAIC0xMDQwNiwx NCArMTA0MDYsMTQgQEAgb3ZlcnJpZGUgb3B0aW9ucyBzZXQgYXQgYSBtb3JlIGdlbmVyYWwgbGV2 ZWwuCiAKIEBjaW5kZXggIytTRVRVUEZJTEUKIEluLWJ1ZmZlciBzZXR0aW5ncyBtYXkgYXBwZWFy IGFueXdoZXJlIGluIHRoZSBmaWxlLCBlaXRoZXIgZGlyZWN0bHkgb3IKLWluZGlyZWN0bHkgdGhy b3VnaCBhIGZpbGUgaW5jbHVkZWQgdXNpbmcgQHNhbXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lfSBz eW50YXguCi1PcHRpb24ga2V5d29yZCBzZXRzIHRhaWxvcmVkIHRvIGEgcGFydGljdWxhciBiYWNr LWVuZCBjYW4gYmUgaW5zZXJ0ZWQgZnJvbQotdGhlIGV4cG9ydCBkaXNwYXRjaGVyIChAcHhyZWZ7 VGhlIGV4cG9ydCBkaXNwYXRjaGVyfSkgdXNpbmcgdGhlIEBjb2Rle0luc2VydAotdGVtcGxhdGV9 IGNvbW1hbmQgYnkgcHJlc3NpbmcgQGtleXsjfS4gIFRvIGluc2VydCBrZXl3b3JkcyBpbmRpdmlk dWFsbHksCi1hIGdvb2Qgd2F5IHRvIG1ha2Ugc3VyZSB0aGUga2V5d29yZCBpcyBjb3JyZWN0IGlz IHRvIHR5cGUgQGNvZGV7Iyt9IGFuZCB0aGVuCi10byB1c2UgQGtiZHtNLUBrZXl7VEFCfX1AZm9v dG5vdGV7TWFueSBkZXNrdG9wcyBpbnRlcmNlcHQgQGtiZHtNLVRBQn0gdG8KLXN3aXRjaCB3aW5k b3dzLiAgVXNlIEBrYmR7Qy1NLWl9IG9yIEBrYmR7QGtleXtFU0N9IEBrZXl7VEFCfX0gaW5zdGVh ZC59IGZvcgotY29tcGxldGlvbi4KK2luZGlyZWN0bHkgdGhyb3VnaCBhIGZpbGUgaW5jbHVkZWQg dXNpbmcgQHNhbXB7IytTRVRVUEZJTEU6IGZpbGVuYW1lIG9yIFVSTH0KK3N5bnRheC4gIE9wdGlv biBrZXl3b3JkIHNldHMgdGFpbG9yZWQgdG8gYSBwYXJ0aWN1bGFyIGJhY2stZW5kIGNhbiBiZQor aW5zZXJ0ZWQgZnJvbSB0aGUgZXhwb3J0IGRpc3BhdGNoZXIgKEBweHJlZntUaGUgZXhwb3J0IGRp c3BhdGNoZXJ9KSB1c2luZyB0aGUKK0Bjb2Rle0luc2VydCB0ZW1wbGF0ZX0gY29tbWFuZCBieSBw cmVzc2luZyBAa2V5eyN9LiAgVG8gaW5zZXJ0IGtleXdvcmRzCitpbmRpdmlkdWFsbHksIGEgZ29v ZCB3YXkgdG8gbWFrZSBzdXJlIHRoZSBrZXl3b3JkIGlzIGNvcnJlY3QgaXMgdG8gdHlwZQorQGNv ZGV7Iyt9IGFuZCB0aGVuIHRvIHVzZSBAa2Jke00tQGtleXtUQUJ9fUBmb290bm90ZXtNYW55IGRl c2t0b3BzIGludGVyY2VwdAorQGtiZHtNLVRBQn0gdG8gc3dpdGNoIHdpbmRvd3MuICBVc2UgQGti ZHtDLU0taX0gb3IgQGtiZHtAa2V5e0VTQ30gQGtleXtUQUJ9fQoraW5zdGVhZC59IGZvciBjb21w bGV0aW9uLgogCiBUaGUgZXhwb3J0IGtleXdvcmRzIGF2YWlsYWJsZSBmb3IgZXZlcnkgYmFjay1l bmQsIGFuZCB0aGVpciBlcXVpdmFsZW50IGdsb2JhbAogdmFyaWFibGVzLCBpbmNsdWRlOgpAQCAt MTcxNzQsMTMgKzE3MTc0LDE2IEBAIGhhdmUgYSBsb3dlciBBU0NJSSBudW1iZXIgdGhhbiB0aGUg bG93ZXN0IHByaW9yaXR5LgogVGhpcyBsaW5lIHNldHMgYSBkZWZhdWx0IGluaGVyaXRhbmNlIHZh bHVlIGZvciBlbnRyaWVzIGluIHRoZSBjdXJyZW50CiBidWZmZXIsIG1vc3QgdXNlZnVsIGZvciBz cGVjaWZ5aW5nIHRoZSBhbGxvd2VkIHZhbHVlcyBvZiBhIHByb3BlcnR5LgogQGNpbmRleCAjK1NF VFVQRklMRQotQGl0ZW0gIytTRVRVUEZJTEU6IGZpbGUKLVRoZSBzZXR1cCBmaWxlIGlzIGZvciBh ZGRpdGlvbmFsIGluLWJ1ZmZlciBzZXR0aW5ncy4gIE9yZyBsb2FkcyB0aGlzIGZpbGUgYW5kCi1w YXJzZXMgaXQgZm9yIGFueSBzZXR0aW5ncyBpbiBpdCBvbmx5IHdoZW4gT3JnIG9wZW5zIHRoZSBt YWluIGZpbGUuICBAa2Jke0MtYwotQy1jfSBvbiB0aGUgc2V0dGluZ3MgbGluZSB3aWxsIGFsc28g cGFyc2UgYW5kIGxvYWQuICBPcmcgYWxzbyBwYXJzZXMgYW5kCi1sb2FkcyB0aGUgZmlsZSBkdXJp bmcgbm9ybWFsIGV4cG9ydGluZyBwcm9jZXNzLiAgT3JnIHBhcnNlcyB0aGUgY29udGVudHMgb2YK LXRoaXMgZmlsZSBhcyBpZiBpdCB3YXMgaW5jbHVkZWQgaW4gdGhlIGJ1ZmZlci4gIEl0IGNhbiBi ZSBhbm90aGVyIE9yZyBmaWxlLgotVG8gdmlzaXQgdGhlIGZpbGUsIEBrYmR7Qy1jICd9IHdoaWxl IHRoZSBjdXJzb3IgaXMgb24gdGhlIGxpbmUgd2l0aCB0aGUgZmlsZQorQGl0ZW0gIytTRVRVUEZJ TEU6IGZpbGUgb3IgVVJMCitUaGUgc2V0dXAgZmlsZSBvciBhIFVSTCBwb2ludGluZyB0byBzdWNo IGZpbGUgaXMgZm9yIGFkZGl0aW9uYWwgaW4tYnVmZmVyCitzZXR0aW5ncy4gIE9yZyBsb2FkcyB0 aGlzIGZpbGUgYW5kIHBhcnNlcyBpdCBmb3IgYW55IHNldHRpbmdzIGluIGl0IG9ubHkgd2hlbgor T3JnIG9wZW5zIHRoZSBtYWluIGZpbGUuICBJZiBVUkwgaXMgc3BlY2lmaWVkLCB0aGUgY29udGVu dHMgYXJlIGRvd25sb2FkZWQKK2FuZCBzdG9yZWQgaW4gYSB0ZW1wb3JhcnkgY2FjaGUuICBAa2Jk e0MtYyBDLWN9IG9uIHRoZSBzZXR0aW5ncyBsaW5lIHdpbGwKK2Fsc28gcGFyc2UgYW5kIGxvYWQu ICBAa2Jke0MtYyBDLWN9IG9uIHRoZSBAY29kZXsjK1NFVFVQRklMRTp9IGxpbmUgd2lsbCBhbHNv CityZXNldCB0aGUgdGVtcG9yYXJ5IGZpbGUgY2FjaGUuICBPcmcgYWxzbyBwYXJzZXMgYW5kIGxv YWRzIHRoZSBkb2N1bWVudAorZHVyaW5nIG5vcm1hbCBleHBvcnRpbmcgcHJvY2Vzcy4gIE9yZyBw YXJzZXMgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZG9jdW1lbnQgYXMKK2lmIGl0IHdhcyBpbmNsdWRl ZCBpbiB0aGUgYnVmZmVyLiAgSXQgY2FuIGJlIGFub3RoZXIgT3JnIGZpbGUuICBUbyB2aXNpdCB0 aGUKK2ZpbGUgKG5vdCBhIFVSTCksIEBrYmR7Qy1jICd9IHdoaWxlIHRoZSBjdXJzb3IgaXMgb24g dGhlIGxpbmUgd2l0aCB0aGUgZmlsZQogbmFtZS4KIEBpdGVtICMrU1RBUlRVUDoKIEBjaW5kZXgg IytTVEFSVFVQCkBAIC0xNzQyMiw3ICsxNzQyNSw5IEBAIElmIGFueSBoaWdobGlnaHRzIHNob3du IGluIHRoZSBidWZmZXIgZnJvbSB0aGUgY3JlYXRpb24gb2YgYSBzcGFyc2UgdHJlZSwgb3IKIGZy b20gY2xvY2sgZGlzcGxheSwgcmVtb3ZlIHN1Y2ggaGlnaGxpZ2h0cy4KIEBpdGVtCiBJZiB0aGUg Y3Vyc29yIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lhbCBAY29kZXsjK0tFWVdPUkR9IGxpbmVzLCBz Y2FuIHRoZQotYnVmZmVyIGZvciB0aGVzZSBsaW5lcyBhbmQgdXBkYXRlIHRoZSBpbmZvcm1hdGlv bi4KK2J1ZmZlciBmb3IgdGhlc2UgbGluZXMgYW5kIHVwZGF0ZSB0aGUgaW5mb3JtYXRpb24uICBB bHNvIHJlc2V0IHRoZSBPcmcgZmlsZQorY2FjaGUgdXNlZCB0byB0ZW1wb3Jhcnkgc3RvcmUgdGhl IGNvbnRlbnRzIG9mIFVSTHMgdXNlZCBhcyB2YWx1ZXMgZm9yCitrZXl3b3JkcyBsaWtlIEBjb2Rl eyMrU0VUVVBGSUxFfS4KIEBpdGVtCiBJZiB0aGUgY3Vyc29yIGlzIGluc2lkZSBhIHRhYmxlLCBy ZWFsaWduIHRoZSB0YWJsZS4gIFRoZSB0YWJsZSByZWFsaWducyBldmVuCiBpZiBhdXRvbWF0aWMg dGFibGUgZWRpdG9yIGlzIHR1cm5lZCBvZmYuCmRpZmYgLS1naXQgYS9ldGMvT1JHLU5FV1MgYi9l dGMvT1JHLU5FV1MKaW5kZXggYjk4NDEwM2UwNC4uN2ExYzY4Y2EyZSAxMDA2NDQKLS0tIGEvZXRj L09SRy1ORVdTCisrKyBiL2V0Yy9PUkctTkVXUwpAQCAtMjAzLDcgKzIwMyw3IEBAIG1hbnVhbCBm b3IgZGV0YWlscy4KICoqKiogQWRkIGdsb2JhbCBtYWNyb3MgdGhyb3VnaCB+b3JnLWV4cG9ydC1n bG9iYWwtbWFjcm9zfgogV2l0aCB0aGlzIHZhcmlhYmxlLCBvbmUgY2FuIGRlZmluZSBtYWNyb3Mg YXZhaWxhYmxlIGZvciBhbGwgZG9jdW1lbnRzLgogKioqKiBOZXcga2V5d29yZCB+IytFWFBPUlRf RklMRV9OQU1FfgotU2ltaXJhbHJ5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+IHByb3BlcnR5LCB0 aGlzIGtleXdvcmQgYWxsb3dzIHRoZQorU2ltaWxhcmx5IHRvIH46RVhQT1JUX0ZJTEVfTkFNRTp+ IHByb3BlcnR5LCB0aGlzIGtleXdvcmQgYWxsb3dzIHRoZQogdXNlciB0byBzcGVjaWZ5IHRoZSBu YW1lIG9mIHRoZSBvdXRwdXQgZmlsZSB1cG9uIGV4cG9ydGluZyB0aGUKIGRvY3VtZW50LiAgVGhp cyBhbHNvIGhhcyBhbiBlZmZlY3Qgb24gcHVibGlzaGluZy4KICoqKiogSG9yaXpvbnRhbCBydWxl cyBhcmUgbm8gbG9uZ2VyIGlnbm9yZWQgaW4gTGFUZVggdGFibGUgbWF0aCBtb2RlCkBAIC0yNDAs NiArMjQwLDE2IEBAIHdoaWNoIGNhdXNlcyByZWZpbGUgdGFyZ2V0cyB0byBiZSBwcmVmaXhlZCB3 aXRoIHRoZSBidWZmZXLigJlzCiBuYW1lLiBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgd2hl biB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKIH51bmlxdWlmeS5lbH4uCiAKKyoqKiB+b3JnLWZp bGUtY29udGVudHN+IG5vdyBhbGxvd3MgdGhlIEZJTEUgYXJndW1lbnQgdG8gYmUgYSBVUkwuCitU aGlzIGFsbG93cyB+IytTRVRVUEZJTEU6fiB0byBhY2NlcHQgYSBVUkwgaW5zdGVhZCBvZiBhIGxv Y2FsIGZpbGUKK3BhdGguICBUaGUgVVJMIGNvbnRlbnRzIGFyZSBhdXRvLWRvd25sb2FkZWQgYW5k IHNhdmVkIHRvIGEgdGVtcG9yYXJ5CitjYWNoZSB+b3JnLS1maWxlLWNhY2hlfi4gIEEgbmV3IG9w dGlvbmFsIGFyZ3VtZW50IH5OT0NBQ0hFfiBpcyBhZGRlZAordG8gfm9yZy1maWxlLWNvbnRlbnRz fi4KKworKioqIH5vcmctbW9kZS1yZXN0YXJ0fiBub3cgcmVzZXRzIHRoZSBuZXdseSBhZGRlZCB+ b3JnLS1maWxlLWNhY2hlfi4KK1VzaW5nIH5DLWMgQy1jfiBvbiBhbnkga2V5d29yZCAobGlrZSB+ IytTRVRVUEZJTEV+KSB3aWxsIHJlc2V0IHRoZQordGhhdCBmaWxlIGNhY2hlLgorCiAqKiBSZW1v dmVkIGZ1bmN0aW9ucwogCiAqKiogT3JnIFRpbWVsaW5lCmRpZmYgLS1naXQgYS9saXNwL29yZy1t YWNyby5lbCBiL2xpc3Avb3JnLW1hY3JvLmVsCmluZGV4IDk2NDYxZjlhOTUuLmZmYmZhOTFhZGQg MTAwNjQ0Ci0tLSBhL2xpc3Avb3JnLW1hY3JvLmVsCisrKyBiL2xpc3Avb3JnLW1hY3JvLmVsCkBA IC01NSw3ICs1NSw4IEBACiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZWxlbWVudC1tYWNyby1wYXJz ZXIgIm9yZy1lbGVtZW50IiAoKSkKIChkZWNsYXJlLWZ1bmN0aW9uIG9yZy1lbGVtZW50LXByb3Bl cnR5ICJvcmctZWxlbWVudCIgKHByb3BlcnR5IGVsZW1lbnQpKQogKGRlY2xhcmUtZnVuY3Rpb24g b3JnLWVsZW1lbnQtdHlwZSAib3JnLWVsZW1lbnQiIChlbGVtZW50KSkKLShkZWNsYXJlLWZ1bmN0 aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yKSkKKyhk ZWNsYXJlLWZ1bmN0aW9uIG9yZy1maWxlLXVybC1wICJvcmciIChmaWxlKSkKKyhkZWNsYXJlLWZ1 bmN0aW9uIG9yZy1maWxlLWNvbnRlbnRzICJvcmciIChmaWxlICZvcHRpb25hbCBub2Vycm9yIG5v Y2FjaGUpKQogKGRlY2xhcmUtZnVuY3Rpb24gb3JnLW1vZGUgIm9yZyIgKCkpCiAoZGVjbGFyZS1m dW5jdGlvbiB2Yy1iYWNrZW5kICJ2Yy1ob29rcyIgKGYpKQogKGRlY2xhcmUtZnVuY3Rpb24gdmMt Y2FsbCAidmMtaG9va3MiIChmdW4gZmlsZSAmcmVzdCBhcmdzKSB0KQpAQCAtMTAxLDE2ICsxMDIs MjEgQEAgUmV0dXJuIGFuIGFsaXN0IGNvbnRhaW5pbmcgYWxsIG1hY3JvIHRlbXBsYXRlcyBmb3Vu ZC4iCiAJCQkJIChpZiBvbGQtY2VsbCAoc2V0Y2RyIG9sZC1jZWxsIHRlbXBsYXRlKQogCQkJCSAg IChwdXNoIChjb25zIG5hbWUgdGVtcGxhdGUpIHRlbXBsYXRlcykpKSkKIAkJCSAgIDs7IEVudGVy IHNldHVwIGZpbGUuCi0JCQkgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCQko b3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIHZhbCkpKSkKLQkJCSAgICAgKHVubGVzcyAo bWVtYmVyIGZpbGUgZmlsZXMpCisJCQkgICAobGV0KiAoKHVyaSAob3JnLXVuYnJhY2tldC1zdHJp bmcgIlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkKKwkJCQkgICh1cmktaXMtdXJsIChvcmctZmls ZS11cmwtcCB1cmkpKQorCQkJCSAgKHVyaSAoaWYgdXJpLWlzLXVybAorCQkJCQkgICB1cmkKKwkJ CQkJIChleHBhbmQtZmlsZS1uYW1lIHVyaSkpKSkKKwkJCSAgICAgOzsgQXZvaWQgY2lyY3VsYXIg ZGVwZW5kZW5jaWVzLgorCQkJICAgICAodW5sZXNzIChtZW1iZXIgdXJpIGZpbGVzKQogCQkJICAg ICAgICh3aXRoLXRlbXAtYnVmZmVyCi0JCQkJIChzZXRxIGRlZmF1bHQtZGlyZWN0b3J5Ci0JCQkJ ICAgICAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQorCQkJCSAodW5sZXNzIHVyaS1pcy11 cmwKKwkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgKGZpbGUtbmFtZS1kaXJl Y3RvcnkgdXJpKSkpCiAJCQkJIChvcmctbW9kZSkKLQkJCQkgKGluc2VydCAob3JnLWZpbGUtY29u dGVudHMgZmlsZSAnbm9lcnJvcikpCisJCQkJIChpbnNlcnQgKG9yZy1maWxlLWNvbnRlbnRzIHVy aSAnbm9lcnJvcikpCiAJCQkJIChzZXRxIHRlbXBsYXRlcwotCQkJCSAgICAgICAoZnVuY2FsbCBj b2xsZWN0LW1hY3JvcyAoY29ucyBmaWxlIGZpbGVzKQorCQkJCSAgICAgICAoZnVuY2FsbCBjb2xs ZWN0LW1hY3JvcyAoY29ucyB1cmkgZmlsZXMpCiAJCQkJCQl0ZW1wbGF0ZXMpKSkpKSkpKSkpKQog CQl0ZW1wbGF0ZXMpKSkpCiAgICAgKGZ1bmNhbGwgY29sbGVjdC1tYWNyb3MgbmlsIG5pbCkpKQpk aWZmIC0tZ2l0IGEvbGlzcC9vcmcuZWwgYi9saXNwL29yZy5lbAppbmRleCAyMTAxZWM3ZDEzLi4x OTE5OTBkYjc1IDEwMDY0NAotLS0gYS9saXNwL29yZy5lbAorKysgYi9saXNwL29yZy5lbApAQCAt MTgxLDYgKzE4MSw4IEBAIFN0YXJzIGFyZSBwdXQgaW4gZ3JvdXAgMSBhbmQgdGhlIHRyaW1tZWQg Ym9keSBpbiBncm91cCAyLiIpCiAoZGVjbGFyZS1mdW5jdGlvbiBvcmctZXhwb3J0LWdldC1lbnZp cm9ubWVudCAib3giICgmb3B0aW9uYWwgYmFja2VuZCBzdWJ0cmVlcCBleHQtcGxpc3QpKQogKGRl Y2xhcmUtZnVuY3Rpb24gb3JnLWxhdGV4LW1ha2UtcHJlYW1ibGUgIm94LWxhdGV4IiAoaW5mbyAm b3B0aW9uYWwgdGVtcGxhdGUgc25pcHBldD8pKQogCisoZGVmdmFyIGZmYXAtdXJsLXJlZ2V4cCkJ CTtTaWxlbmNlIGJ5dGUtY29tcGlsZXIKKwogKGRlZnN1YnN0IG9yZy11bmlxdWlmeSAobGlzdCkK ICAgIk5vbi1kZXN0cnVjdGl2ZWx5IHJlbW92ZSBkdXBsaWNhdGUgZWxlbWVudHMgZnJvbSBMSVNU LiIKICAgKGxldCAoKHJlcyAoY29weS1zZXF1ZW5jZSBsaXN0KSkpIChkZWxldGUtZHVwcyByZXMp KSkKQEAgLTUyODAsMTcgKzUyODIsNjIgQEAgYSBzdHJpbmcsIHN1bW1hcml6aW5nIFRBR1MsIGFz IGEgbGlzdCBvZiBzdHJpbmdzLiIKIAkgICAoc2V0cSBjdXJyZW50LWdyb3VwIChsaXN0IHRhZykp KSkKIAkoXyBuaWwpKSkpKQogCi0oZGVmdW4gb3JnLWZpbGUtY29udGVudHMgKGZpbGUgJm9wdGlv bmFsIG5vZXJyb3IpCi0gICJSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIEZJTEUsIGFzIGEgc3RyaW5n LiIKLSAgKGlmIChhbmQgZmlsZSAoZmlsZS1yZWFkYWJsZS1wIGZpbGUpKQorKGRlZnZhciBvcmct LWZpbGUtY2FjaGUgKG1ha2UtaGFzaC10YWJsZSA6dGVzdCAjJ2VxdWFsKQorICAiSGFzaCB0YWJs ZSB0byBzdG9yZSBjb250ZW50cyBvZiBmaWxlcyByZWZlcmVuY2VkIHZpYSBhIFVSTC4KK1RoaXMg aXMgdGhlIGNhY2hlIG9mIGZpbGUgVVJMcyByZWFkIHVzaW5nIGBvcmctZmlsZS1jb250ZW50cycu IikKKworKGRlZnVuIG9yZy1yZXNldC1maWxlLWNhY2hlICgpCisgICJSZXNldCB0aGUgY2FjaGUg b2YgZmlsZXMgZG93bmxvYWRlZCBieSBgb3JnLWZpbGUtY29udGVudHMnLiIKKyAgKGNscmhhc2gg b3JnLS1maWxlLWNhY2hlKSkKKworKGRlZnVuIG9yZy1maWxlLXVybC1wIChmaWxlKQorICAiTm9u LW5pbCBpZiBGSUxFIGlzIGEgVVJMLiIKKyAgKHJlcXVpcmUgJ2ZmYXApCisgIChzdHJpbmctbWF0 Y2gtcCBmZmFwLXVybC1yZWdleHAgZmlsZSkpCisKKyhkZWZ1biBvcmctZmlsZS1jb250ZW50cyAo ZmlsZSAmb3B0aW9uYWwgbm9lcnJvciBub2NhY2hlKQorICAiUmV0dXJuIHRoZSBjb250ZW50cyBv ZiBGSUxFLCBhcyBhIHN0cmluZy4KKworRklMRSBjYW4gYmUgYSBmaWxlIG5hbWUgb3IgVVJMLgor CitJZiBGSUxFIGlzIGEgVVJMLCBkb3dubG9hZCB0aGUgY29udGVudHMuICBJZiB0aGUgVVJMIGNv bnRlbnRzIGFyZQorYWxyZWFkeSBjYWNoZWQgaW4gdGhlIGBvcmctLWZpbGUtY2FjaGUnIGhhc2gg dGFibGUsIHRoZSBkb3dubG9hZCBzdGVwCitpcyBza2lwcGVkLgorCitJZiBOT0VSUk9SIGlzIG5v bi1uaWwsIGlnbm9yZSB0aGUgZXJyb3Igd2hlbiB1bmFibGUgdG8gcmVhZCB0aGUgRklMRQorZnJv bSBmaWxlIG9yIFVSTC4KKworSWYgTk9DQUNIRSBpcyBub24tbmlsLCBkbyBhIGZyZXNoIGZldGNo IG9mIEZJTEUgZXZlbiBpZiBjYWNoZWQgdmVyc2lvbgoraXMgYXZhaWxhYmxlLiAgVGhpcyBvcHRp b24gYXBwbGllcyBvbmx5IGlmIEZJTEUgaXMgYSBVUkwuIgorICAobGV0KiAoKGlzLXVybCAob3Jn LWZpbGUtdXJsLXAgZmlsZSkpCisgICAgICAgICAoY2FjaGUgKGFuZCBpcy11cmwKKyAgICAgICAg ICAgICAgICAgICAgIChub3Qgbm9jYWNoZSkKKyAgICAgICAgICAgICAgICAgICAgIChnZXRoYXNo IGZpbGUgb3JnLS1maWxlLWNhY2hlKSkpKQorICAgIChjb25kCisgICAgIChjYWNoZSkKKyAgICAg KGlzLXVybAorICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHVybC1yZXRyaWV2ZS1zeW5jaHJv bm91c2x5IGZpbGUpCisJKGdvdG8tY2hhciAocG9pbnQtbWluKSkKKwk7OyBNb3ZlIHBvaW50IHRv IGFmdGVyIHRoZSB1cmwtcmV0cmlldmUgaGVhZGVyLgorCShzZWFyY2gtZm9yd2FyZCAiXG5cbiIg bmlsIDptb3ZlKQorCTs7IFNlYXJjaCBmb3IgdGhlIHN1Y2Nlc3MgY29kZSBvbmx5IGluIHRoZSB1 cmwtcmV0cmlldmUgaGVhZGVyLgorCShpZiAoc2F2ZS1leGN1cnNpb24gKHJlLXNlYXJjaC1iYWNr d2FyZCAiSFRUUC4qXFxzLSsyMDBcXHMtT0siIG5pbCA6bm9lcnJvcikpCisJICAgIDs7IFVwZGF0 ZSB0aGUgY2FjaGUgYG9yZy0tZmlsZS1jYWNoZScgYW5kIHJldHVybiBjb250ZW50cy4KKwkgICAg KHB1dGhhc2ggZmlsZQorCQkgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMgKHBv aW50KSAocG9pbnQtbWF4KSkKKwkJICAgICBvcmctLWZpbGUtY2FjaGUpCisJICAoZnVuY2FsbCAo aWYgbm9lcnJvciAjJ21lc3NhZ2UgIyd1c2VyLWVycm9yKQorCQkgICAiVW5hYmxlIHRvIGZldGNo IGZpbGUgZnJvbSAlUyIKKwkJICAgZmlsZSkpKSkKKyAgICAgKHQKICAgICAgICh3aXRoLXRlbXAt YnVmZmVyCi0JKGluc2VydC1maWxlLWNvbnRlbnRzIGZpbGUpCi0JKGJ1ZmZlci1zdHJpbmcpKQot ICAgIChmdW5jYWxsIChpZiBub2Vycm9yICdtZXNzYWdlICdlcnJvcikKLQkgICAgICJDYW5ub3Qg cmVhZCBmaWxlIFwiJXNcIiVzIgotCSAgICAgZmlsZQotCSAgICAgKGxldCAoKGZyb20gKGJ1ZmZl ci1maWxlLW5hbWUgKGJ1ZmZlci1iYXNlLWJ1ZmZlcikpKSkKLQkgICAgICAgKGlmIGZyb20gKGNv bmNhdCAiIChyZWZlcmVuY2VkIGluIGZpbGUgXCIiIGZyb20gIlwiKSIpICIiKSkpKSkKKyAgICAg ICAgKGNvbmRpdGlvbi1jYXNlIGVycgorCSAgICAocHJvZ24KKwkgICAgICAoaW5zZXJ0LWZpbGUt Y29udGVudHMgZmlsZSkKKwkgICAgICAoYnVmZmVyLXN0cmluZykpCisJICAoZmlsZS1lcnJvcgor ICAgICAgICAgICAoZnVuY2FsbCAoaWYgbm9lcnJvciAjJ21lc3NhZ2UgIyd1c2VyLWVycm9yKQor CQkgICAgKGVycm9yLW1lc3NhZ2Utc3RyaW5nIGVycikpKSkpKSkpKQogCiAoZGVmdW4gb3JnLWV4 dHJhY3QtbG9nLXN0YXRlLXNldHRpbmdzICh4KQogICAiRXh0cmFjdCB0aGUgbG9nIHN0YXRlIHNl dHRpbmcgZnJvbSBhIFRPRE8ga2V5d29yZCBzdHJpbmcuCkBAIC0yMDY4Nyw3ICsyMDczNCw5IEBA IE90aGVyd2lzZSwgcmV0dXJuIGEgdXNlciBlcnJvci4iCiAJICAgIChmb3JtYXQgIltbJXNdXSIK IAkJICAgIChleHBhbmQtZmlsZS1uYW1lCiAJCSAgICAgKGxldCAoKHZhbHVlIChvcmctZWxlbWVu dC1wcm9wZXJ0eSA6dmFsdWUgZWxlbWVudCkpKQotCQkgICAgICAgKGNvbmQgKChub3QgKG9yZy1z dHJpbmctbnctcCB2YWx1ZSkpCisJCSAgICAgICAoY29uZCAoKG9yZy1maWxlLXVybC1wIHZhbHVl KQorCQkJICAgICAgKHVzZXItZXJyb3IgIlRoZSBmaWxlIGlzIHNwZWNpZmllZCBhcyBhIFVSTCwg Y2Fubm90IGJlIGVkaXRlZCIpKQorCQkJICAgICAoKG5vdCAob3JnLXN0cmluZy1udy1wIHZhbHVl KSkKIAkJCSAgICAgICh1c2VyLWVycm9yICJObyBmaWxlIHRvIGVkaXQiKSkKIAkJCSAgICAgKChz dHJpbmctbWF0Y2ggIlxcYFwiXFwoLio/XFwpXCIiIHZhbHVlKQogCQkJICAgICAgKG1hdGNoLXN0 cmluZyAxIHZhbHVlKSkKQEAgLTIwOTUxLDcgKzIxMDAwLDggQEAgVXNlIGBcXFtvcmctZWRpdC1z cGVjaWFsXScgdG8gZWRpdCB0YWJsZS5lbCB0YWJsZXMiKSkKICAgICAoZnVuY2FsbCBtYWpvci1t b2RlKQogICAgIChoYWNrLWxvY2FsLXZhcmlhYmxlcykKICAgICAod2hlbiAoYW5kIGluZGVudC1z dGF0dXMgKG5vdCAoYm91bmQtYW5kLXRydWUtcCBvcmctaW5kZW50LW1vZGUpKSkKLSAgICAgIChv cmctaW5kZW50LW1vZGUgLTEpKSkKKyAgICAgIChvcmctaW5kZW50LW1vZGUgLTEpKQorICAgIChv cmctcmVzZXQtZmlsZS1jYWNoZSkpCiAgIChtZXNzYWdlICIlcyByZXN0YXJ0ZWQiIG1ham9yLW1v ZGUpKQogCiAoZGVmdW4gb3JnLWtpbGwtbm90ZS1vci1zaG93LWJyYW5jaGVzICgpCmRpZmYgLS1n aXQgYS9saXNwL294LmVsIGIvbGlzcC9veC5lbAppbmRleCA1M2QzNWJiYThmLi4zYjc5M2EwMGYy IDEwMDY0NAotLS0gYS9saXNwL294LmVsCisrKyBiL2xpc3Avb3guZWwKQEAgLTE0OTksMTcgKzE0 OTksMjAgQEAgQXNzdW1lIGJ1ZmZlciBpcyBpbiBPcmcgbW9kZS4gIE5hcnJvd2luZywgaWYgYW55 LCBpcyBpZ25vcmVkLiIKIAkJCSAoY29uZAogCQkJICA7OyBPcHRpb25zIGluIGBvcmctZXhwb3J0 LXNwZWNpYWwta2V5d29yZHMnLgogCQkJICAoKGVxdWFsIGtleSAiU0VUVVBGSUxFIikKLQkJCSAg IChsZXQgKChmaWxlCi0JCQkJICAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCSAgIChvcmctdW5icmFj a2V0LXN0cmluZyAiXCIiICJcIiIgKG9yZy10cmltIHZhbCkpKSkpCisJCQkgICAobGV0KiAoKHVy aSAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAiXCIiIChvcmctdHJpbSB2YWwpKSkKKwkJCQkg ICh1cmktaXMtdXJsIChvcmctZmlsZS11cmwtcCB1cmkpKQorCQkJCSAgKHVyaSAoaWYgdXJpLWlz LXVybAorCQkJCQkgICB1cmkKKwkJCQkJIChleHBhbmQtZmlsZS1uYW1lIHVyaSkpKSkKIAkJCSAg ICAgOzsgQXZvaWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzLgotCQkJICAgICAodW5sZXNzIChtZW1i ZXIgZmlsZSBmaWxlcykKKwkJCSAgICAgKHVubGVzcyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCSAg ICAgICAod2l0aC10ZW1wLWJ1ZmZlcgotCQkJCSAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJ CSAgIChmaWxlLW5hbWUtZGlyZWN0b3J5IGZpbGUpKQotCQkJCSAoaW5zZXJ0IChvcmctZmlsZS1j b250ZW50cyBmaWxlICdub2Vycm9yKSkKKwkJCQkgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAg KHNldHEgZGVmYXVsdC1kaXJlY3RvcnkKKwkJCQkJIChmaWxlLW5hbWUtZGlyZWN0b3J5IHVyaSkp KQorCQkJCSAoaW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAo bGV0ICgob3JnLWluaGliaXQtc3RhcnR1cCB0KSkgKG9yZy1tb2RlKSkKLQkJCQkgKGZ1bmNhbGwg Z2V0LW9wdGlvbnMgKGNvbnMgZmlsZSBmaWxlcykpKSkpKQorCQkJCSAoZnVuY2FsbCBnZXQtb3B0 aW9ucyAoY29ucyB1cmkgZmlsZXMpKSkpKSkKIAkJCSAgKChlcXVhbCBrZXkgIk9QVElPTlMiKQog CQkJICAgKHNldHEgcGxpc3QKIAkJCQkgKG9yZy1jb21iaW5lLXBsaXN0cwpAQCAtMTY0NywxNyAr MTY1MCwyMiBAQCBhbiBhbGlzdCB3aGVyZSBhc3NvY2lhdGlvbnMgYXJlIChWQVJJQUJMRS1OQU1F IFZBTFVFKS4iCiAJCQkJICAgICAgIkJJTkQiKQogCQkJICAgICAgIChwdXNoIChyZWFkIChmb3Jt YXQgIiglcykiIHZhbCkpIGFsaXN0KQogCQkJICAgICA7OyBFbnRlciBzZXR1cCBmaWxlLgotCQkJ ICAgICAobGV0ICgoZmlsZSAoZXhwYW5kLWZpbGUtbmFtZQotCQkJCQkgIChvcmctdW5icmFja2V0 LXN0cmluZyAiXCIiICJcIiIgdmFsKSkpKQotCQkJICAgICAgICh1bmxlc3MgKG1lbWJlciBmaWxl IGZpbGVzKQorCQkJICAgICAobGV0KiAoKHVyaSAob3JnLXVuYnJhY2tldC1zdHJpbmcgIlwiIiAi XCIiIHZhbCkpCisJCQkJICAgICh1cmktaXMtdXJsIChvcmctZmlsZS11cmwtcCB1cmkpKQorCQkJ CSAgICAodXJpIChpZiB1cmktaXMtdXJsCisJCQkJCSAgICAgdXJpCisJCQkJCSAgIChleHBhbmQt ZmlsZS1uYW1lIHVyaSkpKSkKKwkJCSAgICAgICA7OyBBdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNp ZXMuCisJCQkgICAgICAgKHVubGVzcyAobWVtYmVyIHVyaSBmaWxlcykKIAkJCQkgKHdpdGgtdGVt cC1idWZmZXIKLQkJCQkgICAoc2V0cSBkZWZhdWx0LWRpcmVjdG9yeQotCQkJCQkgKGZpbGUtbmFt ZS1kaXJlY3RvcnkgZmlsZSkpCisJCQkJICAgKHVubGVzcyB1cmktaXMtdXJsCisJCQkJICAgICAo c2V0cSBkZWZhdWx0LWRpcmVjdG9yeQorCQkJCQkgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSB1cmkp KSkKIAkJCQkgICAobGV0ICgob3JnLWluaGliaXQtc3RhcnR1cCB0KSkgKG9yZy1tb2RlKSkKLQkJ CQkgICAoaW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyBmaWxlICdub2Vycm9yKSkKKwkJCQkgICAo aW5zZXJ0IChvcmctZmlsZS1jb250ZW50cyB1cmkgJ25vZXJyb3IpKQogCQkJCSAgIChzZXRxIGFs aXN0CiAJCQkJCSAoZnVuY2FsbCBjb2xsZWN0LWJpbmQKLQkJCQkJCSAgKGNvbnMgZmlsZSBmaWxl cykKKwkJCQkJCSAgKGNvbnMgdXJpIGZpbGVzKQogCQkJCQkJICBhbGlzdCkpKSkpKSkpKSkKIAkJ ICAgYWxpc3QpKSkpKQogICAgICAgOzsgUmV0dXJuIHZhbHVlIGluIGFwcHJvcHJpYXRlIG9yZGVy IG9mIGFwcGVhcmFuY2UuCmRpZmYgLS1naXQgYS90ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwgYi90 ZXN0aW5nL2xpc3AvdGVzdC1vcmcuZWwKaW5kZXggZTU1ZWUwNzdiOC4uMzFiZGE4NjA3MyAxMDA2 NDQKLS0tIGEvdGVzdGluZy9saXNwL3Rlc3Qtb3JnLmVsCisrKyBiL3Rlc3RpbmcvbGlzcC90ZXN0 LW9yZy5lbApAQCAtNjQ5OCw2ICs2NDk4LDQ3IEBAIFBhcmFncmFwaDxwb2ludD4iCiAgICAgIChv cmctc2hvdy1zZXQtdmlzaWJpbGl0eSAnbWluaW1hbCkKICAgICAgKG9yZy1pbnZpc2libGUtcDIp KSkpCiAKKyhlcnQtZGVmdGVzdCB0ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy1maWxlICgpCisg ICJUZXN0IGBvcmctZmlsZS1jb250ZW50cycgd2l0aCBhIGZpbGUgYXMgaW5wdXQuIgorICAoc2hv dWxkCisgICAoc3RyaW5nPSAiIytCSU5EOiB2YXJpYWJsZSB2YWx1ZQorIytERVNDUklQVElPTjog bDIKKyMrTEFOR1VBR0U6IGVuCisjK1NFTEVDVF9UQUdTOiBiCisjK1RJVExFOiBiCisjK1BST1BF UlRZOiBhIDEKKyIgKG9yZy1maWxlLWNvbnRlbnRzIChleHBhbmQtZmlsZS1uYW1lICJzZXR1cGZp bGUzLm9yZyIKKwkJCQkgICAgICAgKGNvbmNhdCBvcmctdGVzdC1kaXIgImV4YW1wbGVzLyIpKSkp KQorICAKKyAgKGxldCAoKGludmFsaWQtZmlsZSAidGhpcy1maWxlLW11c3Qtbm90LWV4aXN0Iikp CisgICAgOzsgVGhyb3cgZXJyb3Igd2hlbiB0cnlpbmcgdG8gYWNjZXNzIGFuIGludmFsaWQgZmls ZS4KKyAgICAoc2hvdWxkLWVycm9yCisgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLWZp bGUpKQorICAgIDs7IFRyeSB0byBhY2Nlc3MgYW4gaW52YWxpZCBmaWxlLCBidXQgZG8gbm90IHRo cm93IGFuIGVycm9yLgorICAgIChzaG91bGQKKyAgICAgKHN0cmluZy1tYXRjaC1wICJcXGBPcGVu aW5nIGlucHV0IGZpbGU6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCisJCSAgICAgKG9yZy1m aWxlLWNvbnRlbnRzIGludmFsaWQtZmlsZSA6bm9lcnJvcikpKSkpCisKKyhlcnQtZGVmdGVzdCB0 ZXN0LW9yZy9vcmctZmlsZS1jb250ZW50cy11cmwgKCkKKyAgIlRlc3QgYG9yZy1maWxlLWNvbnRl bnRzJyB3aXRoIGEgVVJMIGFzIGlucHV0LiIKKyAgKHNob3VsZAorICAgKHN0cmluZz0gIiMrQklO RDogdmFyaWFibGUgdmFsdWUKKyMrREVTQ1JJUFRJT046IGwyCisjK0xBTkdVQUdFOiBlbgorIytT RUxFQ1RfVEFHUzogYgorIytUSVRMRTogYgorIytQUk9QRVJUWTogYSAxCisiIChvcmctZmlsZS1j b250ZW50cyAiaHR0cDovL29yZ21vZGUub3JnL2NnaXQuY2dpL29yZy1tb2RlLmdpdC9wbGFpbi90 ZXN0aW5nL2V4YW1wbGVzL3NldHVwZmlsZTMub3JnIikpKQorCisgIChsZXQgKChpbnZhbGlkLXVy bCAiaHR0cDovL3RoaXMtdXJsLW11c3Qtbm90LWV4aXN0IikpCisgICAgOzsgVGhyb3cgZXJyb3Ig d2hlbiB0cnlpbmcgdG8gYWNjZXNzIGFuIGludmFsaWQgVVJMLgorICAgIChzaG91bGQtZXJyb3IK KyAgICAgKG9yZy1maWxlLWNvbnRlbnRzIGludmFsaWQtdXJsKSkKKyAgICA7OyBUcnkgdG8gYWNj ZXNzIGFuIGludmFsaWQgVVJMLCBidXQgZG8gbm90IHRocm93IGFuIGVycm9yLgorICAgIChzaG91 bGQKKyAgICAgKHN0cmluZz0gKGZvcm1hdCAiVW5hYmxlIHRvIGZldGNoIGZpbGUgZnJvbSBcIiVz XCIiIGludmFsaWQtdXJsKQorCSAgICAgIChvcmctZmlsZS1jb250ZW50cyBpbnZhbGlkLXVybCA6 bm9lcnJvcikpKSkpCisKIAogKHByb3ZpZGUgJ3Rlc3Qtb3JnKQogCi0tIAoyLjEzLjAKCg== --f403045f74b81843d9055189e6dc--