<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>188695</bug_id>
          
          <creation_ts>2018-08-17 03:34:54 -0700</creation_ts>
          <short_desc>[GLIB] Complete the JSCException API</short_desc>
          <delta_ts>2018-08-20 16:53:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188698</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1451068</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-17 03:34:54 -0700</bug_when>
    <thetext>Add more API to JSCException:

 * New function to get the column number
 * New function get exception as string (toString())
 * Add the possibility to create exceptions with a custom error name.
 * New function to get the exception error name
 * Convenience function to report a exception by returning a formatted string with all the exception details, to be shown as a user error message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451069</commentid>
    <comment_count>1</comment_count>
      <attachid>347356</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-17 03:38:13 -0700</bug_when>
    <thetext>Created attachment 347356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451078</commentid>
    <comment_count>2</comment_count>
      <attachid>347356</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-08-17 04:48:08 -0700</bug_when>
    <thetext>Comment on attachment 347356
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=347356&amp;action=review

Looks good to me overall, but please check the comment about using
“backtrace” instead of “back trace” before landing.

&gt; Source/JavaScriptCore/API/glib/JSCException.cpp:262
&gt; + * jsc_exception_get_back_trace_string:

Somehow this function name feels a bit clunky when reading it, because
usually “backtrace” is how the term is written. For the sake of double
checking, I did the following:

    % rg -i backtrace /usr/include/|wc -l
    408
    % rg -i back_trace /usr/include/ | wc -l
    0

I am *very* sure that we want this to be “jsc_exception_get_backtrace_string”.

&gt; Source/JavaScriptCore/API/glib/JSCException.cpp:265
&gt; + * Get a string with the exception back trace.

Let&apos;s also use “backtrace” in documentation comments, please.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451079</commentid>
    <comment_count>3</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-08-17 04:52:59 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #2)
 
&gt; &gt; Source/JavaScriptCore/API/glib/JSCException.cpp:262
&gt; &gt; + * jsc_exception_get_back_trace_string:
&gt; 
&gt; Somehow this function name feels a bit clunky when reading it, because
&gt; usually “backtrace” is how the term is written. For the sake of double
&gt; checking, I did the following:
&gt; 
&gt;     % rg -i backtrace /usr/include/|wc -l
&gt;     408
&gt;     % rg -i back_trace /usr/include/ | wc -l
&gt;     0

Also, “backtrace” is written as a single word in many online resources,
and used as such in other programming languages and library functions:

  - https://secure.php.net/manual/en/function.debug-backtrace.php
  - https://linux.die.net/man/3/backtrace
  - https://sourceware.org/gdb/onlinedocs/gdb/Backtrace.html
  - https://wiki.ubuntu.com/Backtrace
  - https://en.wikipedia.org/wiki/Stack_trace

Example from the Wikipedia page:

  “In computing, a stack trace (also called stack backtrace[1] or
   stack traceback[2]) is […]”</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451081</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-17 05:02:42 -0700</bug_when>
    <thetext>Ok, I&apos;ll update the patch to use backtrace instead. Thanks Adrian!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451085</commentid>
    <comment_count>5</comment_count>
      <attachid>347358</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-17 05:32:31 -0700</bug_when>
    <thetext>Created attachment 347358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451099</commentid>
    <comment_count>6</comment_count>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2018-08-17 06:32:39 -0700</bug_when>
    <thetext>(In reply to Carlos Garcia Campos from comment #4)
&gt; Ok, I&apos;ll update the patch to use backtrace instead. Thanks Adrian!

The patch looks perfect now, thanks! r+ all the things! :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451109</commentid>
    <comment_count>7</comment_count>
      <attachid>347358</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-08-17 07:26:53 -0700</bug_when>
    <thetext>Comment on attachment 347358
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=347358&amp;action=review

&gt; Source/JavaScriptCore/API/glib/JSCException.cpp:269
&gt; +const char* jsc_exception_get_backtrace_string(JSCException* exception)

Hm, shouldn&apos;t it use const gchar*, for consistency with our other public APIs? I know gchar/gint/etc. are dumb types, but consistency is good. Maybe you should audit the entire JSC API for this. We definitely use the g types in the WebKit2 API, for example.

&gt; Source/JavaScriptCore/API/glib/JSCException.cpp:286
&gt; + * Get the string representation of @exception error.
&gt; + *
&gt; + * Returns: (transfer full): the string representation of @exception error.

It reads better without the word &quot;error&quot; at the end.

&quot;Get the string representation of @exception.

Returns: (transfer full): the string representation of @exception.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451539</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-08-19 23:57:23 -0700</bug_when>
    <thetext>Committed r235023: &lt;https://trac.webkit.org/changeset/235023&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1451832</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-20 16:53:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/43534489&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347356</attachid>
            <date>2018-08-17 03:38:13 -0700</date>
            <delta_ts>2018-08-17 05:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-exception-api.diff</filename>
            <type>text/plain</type>
            <size>26602</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA1
NTRiZjBjZGM1Ni4uZjlkZWY2NmE1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTY0Myw2ICs2NDMsMjMgQEAgdm9pZCBqc2NfY29udGV4
dF90aHJvdyhKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiAg
ICAgY29udGV4dC0+cHJpdi0+ZXhjZXB0aW9uID0gYWRvcHRHUmVmKGpzY19leGNlcHRpb25fbmV3
KGNvbnRleHQsIGVycm9yTWVzc2FnZSkpOwogfQogCisvKioKKyAqIGpzY19jb250ZXh0X3Rocm93
X3dpdGhfbmFtZToKKyAqIEBjb250ZXh0OiBhICNKU0NDb250ZXh0CisgKiBAZXJyb3JfbmFtZTog
dGhlIGVycm9yIG5hbWUKKyAqIEBlcnJvcl9tZXNzYWdlOiBhbiBlcnJvciBtZXNzYWdlCisgKgor
ICogVGhyb3cgYW4gZXhjZXB0aW9uIHRvIEBjb250ZXh0IHVzaW5nIHRoZSBnaXZlbiBlcnJvciBu
YW1lIGFuZCBtZXNzYWdlLiBUaGUgY3JlYXRlZCAjSlNDRXhjZXB0aW9uCisgKiBjYW4gYmUgcmV0
cmlldmVkIHdpdGgganNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbigpLgorICovCit2b2lkIGpzY19j
b250ZXh0X3Rocm93X3dpdGhfbmFtZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBl
cnJvck5hbWUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKEpTQ19JU19DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGVycm9y
TmFtZSk7CisKKyAgICBjb250ZXh0LT5wcml2LT5leGNlcHRpb24gPSBhZG9wdEdSZWYoanNjX2V4
Y2VwdGlvbl9uZXdfd2l0aF9uYW1lKGNvbnRleHQsIGVycm9yTmFtZSwgZXJyb3JNZXNzYWdlKSk7
Cit9CisKIC8qKgogICoganNjX2NvbnRleHRfdGhyb3dfZXhjZXB0aW9uOgogICogQGNvbnRleHQ6
IGEgI0pTQ0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5oCmluZGV4IGYzMGQ0ZTYzNDYxLi44OTlhYzI2YTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oCkBAIC05Nyw2ICs5NywxMSBAQCBKU0NfQVBJIHZv
aWQKIGpzY19jb250ZXh0X3Rocm93ICAgICAgICAgICAgICAgICAgICAoSlNDQ29udGV4dCAgICAg
ICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICAgICAgICAgKmVycm9yX21lc3NhZ2UpOwogCitKU0NfQVBJIHZvaWQKK2pzY19jb250
ZXh0X3Rocm93X3dpdGhfbmFtZSAgICAgICAgICAoSlNDQ29udGV4dCAgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAg
ICAgKmVycm9yX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgICAgICAgICAqZXJyb3JfbWVzc2FnZSk7CisKIEpTQ19BUEkgdm9pZAoganNjX2Nv
bnRleHRfdGhyb3dfZXhjZXB0aW9uICAgICAgICAgIChKU0NDb250ZXh0ICAgICAgICAgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ0V4Y2VwdGlvbiAg
ICAgICAqZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NFeGNlcHRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0V4Y2VwdGlvbi5jcHAKaW5kZXggZGQ2N2Q1NzIwZTkuLjA5MjIyNzljMDkzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmNwcApAQCAtNDIsOSAr
NDIsMTIgQEAgc3RydWN0IF9KU0NFeGNlcHRpb25Qcml2YXRlIHsKICAgICBKU0NDb250ZXh0KiBj
b250ZXh0OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IGpzRXhjZXB0aW9uOwogICAg
IGJvb2wgY2FjaGVkOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXJyb3JOYW1lOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gbWVzc2FnZTsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOworICAgIHVuc2ln
bmVkIGNvbHVtbk51bWJlcjsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVVSSTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGJhY2tUcmFjZTsKIH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShKU0NF
eGNlcHRpb24sIGpzY19leGNlcHRpb24sIEdfVFlQRV9PQkpFQ1QpCkBAIC05NSwxNSArOTgsMjQg
QEAgdm9pZCBqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKEpTQ0V4Y2VwdGlvbiogZXhjZXB0
aW9uKQogICAgIHByaXYtPmNhY2hlZCA9IHRydWU7CiAKICAgICBhdXRvIHZhbHVlID0ganNjQ29u
dGV4dEdldE9yQ3JlYXRlVmFsdWUocHJpdi0+Y29udGV4dCwgdG9SZWYocHJpdi0+anNFeGNlcHRp
b24uZ2V0KCkpKTsKLSAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVl
X29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0KCksICJtZXNzYWdlIikpOworICAgIGF1dG8g
cHJvcGVydHlWYWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2
YWx1ZS5nZXQoKSwgIm5hbWUiKSk7CisgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHBy
b3BlcnR5VmFsdWUuZ2V0KCkpKQorICAgICAgICBwcml2LT5lcnJvck5hbWUucmVzZXQoanNjX3Zh
bHVlX3RvX3N0cmluZyhwcm9wZXJ0eVZhbHVlLmdldCgpKSk7CisgICAgcHJvcGVydHlWYWx1ZSA9
IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2YWx1ZS5nZXQoKSwgIm1l
c3NhZ2UiKSk7CiAgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHByb3BlcnR5VmFsdWUu
Z2V0KCkpKQogICAgICAgICBwcml2LT5tZXNzYWdlLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmco
cHJvcGVydHlWYWx1ZS5nZXQoKSkpOwogICAgIHByb3BlcnR5VmFsdWUgPSBhZG9wdEdSZWYoanNj
X3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0KCksICJsaW5lIikpOwogICAgIGlm
ICghanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgpKSkKICAgICAgICAg
cHJpdi0+bGluZU51bWJlciA9IGpzY192YWx1ZV90b19pbnQzMihwcm9wZXJ0eVZhbHVlLmdldCgp
KTsKKyAgICBwcm9wZXJ0eVZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3By
b3BlcnR5KHZhbHVlLmdldCgpLCAiY29sdW1uIikpOworICAgIGlmICghanNjX3ZhbHVlX2lzX3Vu
ZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgpKSkKKyAgICAgICAgcHJpdi0+Y29sdW1uTnVtYmVy
ID0ganNjX3ZhbHVlX3RvX2ludDMyKHByb3BlcnR5VmFsdWUuZ2V0KCkpOwogICAgIHByb3BlcnR5
VmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0
KCksICJzb3VyY2VVUkwiKSk7CiAgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHByb3Bl
cnR5VmFsdWUuZ2V0KCkpKQogICAgICAgICBwcml2LT5zb3VyY2VVUkkucmVzZXQoanNjX3ZhbHVl
X3RvX3N0cmluZyhwcm9wZXJ0eVZhbHVlLmdldCgpKSk7CisgICAgcHJvcGVydHlWYWx1ZSA9IGFk
b3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2YWx1ZS5nZXQoKSwgInN0YWNr
IikpOworICAgIGlmICghanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgp
KSkKKyAgICAgICAgcHJpdi0+YmFja1RyYWNlLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmcocHJv
cGVydHlWYWx1ZS5nZXQoKSkpOwogfQogCiAvKioKQEAgLTExMyw5ICsxMjUsMjQgQEAgdm9pZCBq
c2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKEpTQ0V4Y2VwdGlvbiogZXhjZXB0aW9uKQogICoK
ICAqIENyZWF0ZSBhIG5ldyAjSlNDRXhjZXB0aW9uIGluIEBjb250ZXh0IHdpdGggQG1lc3NhZ2Uu
CiAgKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBKU0NFeGNlcHRpb24uCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNKU0NFeGNlcHRpb24uCiAgKi8KIEpT
Q0V4Y2VwdGlvbioganNjX2V4Y2VwdGlvbl9uZXcoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogbWVzc2FnZSkKK3sKKyAgICByZXR1cm4ganNjX2V4Y2VwdGlvbl9uZXdfd2l0aF9uYW1l
KGNvbnRleHQsIG51bGxwdHIsIG1lc3NhZ2UpOworfQorCisvKioKKyAqIGpzY19leGNlcHRpb25f
bmV3X3dpdGhfbmFtZToKKyAqIEBjb250ZXh0OiBhICNKU0NDb250ZXh0CisgKiBAbmFtZTogdGhl
IGVycm9yIG5hbWUKKyAqIEBtZXNzYWdlOiB0aGUgZXJyb3IgbWVzc2FnZQorICoKKyAqIENyZWF0
ZSBhIG5ldyAjSlNDRXhjZXB0aW9uIGluIEBjb250ZXh0IHdpdGggQG5hbWUgYW5kIEBtZXNzYWdl
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0pTQ0V4Y2VwdGlvbi4K
KyAqLworSlNDRXhjZXB0aW9uKiBqc2NfZXhjZXB0aW9uX25ld193aXRoX25hbWUoSlNDQ29udGV4
dCogY29udGV4dCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfQ09OVEVYVChjb250ZXh0KSwgbnVsbHB0cik7
CiAKQEAgLTEyNSw3ICsxNTIsMzQgQEAgSlNDRXhjZXB0aW9uKiBqc2NfZXhjZXB0aW9uX25ldyhK
U0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ganNNZXNzYWdlU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CiAgICAgICAgIGpzTWVzc2FnZSA9IEpTVmFsdWVNYWtl
U3RyaW5nKGpzQ29udGV4dCwganNNZXNzYWdlU3RyaW5nLmdldCgpKTsKICAgICB9Ci0gICAgcmV0
dXJuIGpzY0V4Y2VwdGlvbkNyZWF0ZShjb250ZXh0LCBKU09iamVjdE1ha2VFcnJvcihqc0NvbnRl
eHQsIGpzTWVzc2FnZSA/IDEgOiAwLCAmanNNZXNzYWdlLCBudWxscHRyKSkubGVha1JlZigpOwor
CisgICAgYXV0byBleGNlcHRpb24gPSBqc2NFeGNlcHRpb25DcmVhdGUoY29udGV4dCwgSlNPYmpl
Y3RNYWtlRXJyb3IoanNDb250ZXh0LCBqc01lc3NhZ2UgPyAxIDogMCwgJmpzTWVzc2FnZSwgbnVs
bHB0cikpOworICAgIGlmIChuYW1lKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSBqc2NDb250ZXh0
R2V0T3JDcmVhdGVWYWx1ZShjb250ZXh0LCB0b1JlZihleGNlcHRpb24tPnByaXYtPmpzRXhjZXB0
aW9uLmdldCgpKSk7CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IG5hbWVWYWx1ZSA9IGFkb3B0
R1JlZihqc2NfdmFsdWVfbmV3X3N0cmluZyhjb250ZXh0LCBuYW1lKSk7CisgICAgICAgIGpzY192
YWx1ZV9vYmplY3Rfc2V0X3Byb3BlcnR5KHZhbHVlLmdldCgpLCAibmFtZSIsIG5hbWVWYWx1ZS5n
ZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGV4Y2VwdGlvbi5sZWFrUmVmKCk7Cit9CisKKy8q
KgorICoganNjX2V4Y2VwdGlvbl9nZXRfbmFtZToKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2Vw
dGlvbgorICoKKyAqIEdldCB0aGUgZXJyb3IgbmFtZSBvZiBAZXhjZXB0aW9uCisgKgorICogUmV0
dXJuczogdGhlIEBleGNlcHRpb24gZXJyb3IgbmFtZS4KKyAqLworY29uc3QgY2hhcioganNjX2V4
Y2VwdGlvbl9nZXRfbmFtZShKU0NFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChKU0NfSVNfRVhDRVBUSU9OKGV4Y2VwdGlvbiksIG51bGxwdHIpOworCisg
ICAgSlNDRXhjZXB0aW9uUHJpdmF0ZSogcHJpdiA9IGV4Y2VwdGlvbi0+cHJpdjsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChwcml2LT5jb250ZXh0LCBudWxscHRyKTsKKworICAgIGpzY0V4Y2Vw
dGlvbkVuc3VyZVByb3BlcnRpZXMoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcHJpdi0+ZXJyb3JO
YW1lLmdldCgpOwogfQogCiAvKioKQEAgLTE2Niw2ICsyMjAsMjUgQEAgZ3VpbnQganNjX2V4Y2Vw
dGlvbl9nZXRfbGluZV9udW1iZXIoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCiAgICAgcmV0dXJu
IHByaXYtPmxpbmVOdW1iZXI7CiB9CiAKKy8qKgorICoganNjX2V4Y2VwdGlvbl9nZXRfY29sdW1u
X251bWJlcjoKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2VwdGlvbgorICoKKyAqIEdldCB0aGUg
Y29sdW1uIG51bWJlciBhdCB3aGljaCBAZXhjZXB0aW9uIGhhcHBlbmVkLgorICoKKyAqIFJldHVy
bnM6IHRoZSBjb2x1bW4gbnVtYmVyIG9mIEBleGNlcHRpb24uCisgKi8KK2d1aW50IGpzY19leGNl
cHRpb25fZ2V0X2NvbHVtbl9udW1iZXIoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoSlNDX0lTX0VYQ0VQVElPTihleGNlcHRpb24pLCAwKTsKKwor
ICAgIEpTQ0V4Y2VwdGlvblByaXZhdGUqIHByaXYgPSBleGNlcHRpb24tPnByaXY7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwocHJpdi0+Y29udGV4dCwgMCk7CisKKyAgICBqc2NFeGNlcHRpb25F
bnN1cmVQcm9wZXJ0aWVzKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHByaXYtPmNvbHVtbk51bWJl
cjsKK30KKwogLyoqCiAgKiBqc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJpOgogICogQGV4Y2Vw
dGlvbjogYSAjSlNDRXhjZXB0aW9uCkBAIC0xODQsMyArMjU3LDgwIEBAIGNvbnN0IGNoYXIqIGpz
Y19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCiAgICAg
anNjRXhjZXB0aW9uRW5zdXJlUHJvcGVydGllcyhleGNlcHRpb24pOwogICAgIHJldHVybiBwcml2
LT5zb3VyY2VVUkkuZ2V0KCk7CiB9CisKKy8qKgorICoganNjX2V4Y2VwdGlvbl9nZXRfYmFja190
cmFjZV9zdHJpbmc6CisgKiBAZXhjZXB0aW9uOiBhICNKU0NFeGNlcHRpb24KKyAqCisgKiBHZXQg
YSBzdHJpbmcgd2l0aCB0aGUgZXhjZXB0aW9uIGJhY2sgdHJhY2UuCisgKgorICogUmV0dXJuczog
KG51bGxhYmxlKTogdGhlIGV4Y2VwdGlvbiBiYWNrIHRyYWNlIHN0cmluZyBvciAlTlVMTC4KKyAq
LworY29uc3QgY2hhcioganNjX2V4Y2VwdGlvbl9nZXRfYmFja190cmFjZV9zdHJpbmcoSlNDRXhj
ZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoSlNDX0lTX0VY
Q0VQVElPTihleGNlcHRpb24pLCBudWxscHRyKTsKKworICAgIEpTQ0V4Y2VwdGlvblByaXZhdGUq
IHByaXYgPSBleGNlcHRpb24tPnByaXY7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocHJpdi0+
Y29udGV4dCwgbnVsbHB0cik7CisKKyAgICBqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKGV4
Y2VwdGlvbik7CisgICAgcmV0dXJuIHByaXYtPmJhY2tUcmFjZS5nZXQoKTsKK30KKworLyoqCisg
KiBqc2NfZXhjZXB0aW9uX3RvX3N0cmluZzoKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2VwdGlv
bgorICoKKyAqIEdldCB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIEBleGNlcHRpb24gZXJy
b3IuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgc3RyaW5nIHJlcHJlc2Vu
dGF0aW9uIG9mIEBleGNlcHRpb24gZXJyb3IuCisgKi8KK2NoYXIqIGpzY19leGNlcHRpb25fdG9f
c3RyaW5nKEpTQ0V4Y2VwdGlvbiogZXhjZXB0aW9uKQoreworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uKSwgbnVsbHB0cik7CisKKyAgICBKU0NFeGNl
cHRpb25Qcml2YXRlKiBwcml2ID0gZXhjZXB0aW9uLT5wcml2OworICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKHByaXYtPmNvbnRleHQsIG51bGxwdHIpOworCisgICAgYXV0byB2YWx1ZSA9IGpzY0Nv
bnRleHRHZXRPckNyZWF0ZVZhbHVlKHByaXYtPmNvbnRleHQsIHRvUmVmKHByaXYtPmpzRXhjZXB0
aW9uLmdldCgpKSk7CisgICAgcmV0dXJuIGpzY192YWx1ZV90b19zdHJpbmcodmFsdWUuZ2V0KCkp
OworfQorCisvKioKKyAqIGpzY19leGNlcHRpb25fcmVwb3J0OgorICogQGV4Y2VwdGlvbjogYSAj
SlNDRXhjZXB0aW9uCisgKgorICogUmV0dXJuIGEgcmVwb3J0IG1lc3NhZ2Ugb2YgQGV4Y2VwdGlv
biwgY29udGFpbmluZyBhbGwgdGhlIHBvc3NpYmxlIGRldGFpbHMgc3VjaCB1cworICogc291cmNl
IFVSSSwgbGluZSwgY29sdW1uIGFuZCBiYWNrIHRyYWNlLCBhbmQgZm9ybWF0dGVkIHRvIGJlIHBy
aW50ZWQuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBzdHJpbmcgd2l0
aCB0aGUgZXhjZXB0aW9uIHJlcG9ydAorICovCitjaGFyKiBqc2NfZXhjZXB0aW9uX3JlcG9ydChK
U0NFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChKU0Nf
SVNfRVhDRVBUSU9OKGV4Y2VwdGlvbiksIG51bGxwdHIpOworCisgICAgSlNDRXhjZXB0aW9uUHJp
dmF0ZSogcHJpdiA9IGV4Y2VwdGlvbi0+cHJpdjsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChw
cml2LT5jb250ZXh0LCBudWxscHRyKTsKKworICAgIGpzY0V4Y2VwdGlvbkVuc3VyZVByb3BlcnRp
ZXMoZXhjZXB0aW9uKTsKKyAgICBHU3RyaW5nKiByZXBvcnQgPSBnX3N0cmluZ19uZXcobnVsbHB0
cik7CisgICAgaWYgKHByaXYtPnNvdXJjZVVSSSkKKyAgICAgICAgcmVwb3J0ID0gZ19zdHJpbmdf
YXBwZW5kKHJlcG9ydCwgcHJpdi0+c291cmNlVVJJLmdldCgpKTsKKyAgICBpZiAocHJpdi0+bGlu
ZU51bWJlcikKKyAgICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZihyZXBvcnQsICI6JWQiLCBw
cml2LT5saW5lTnVtYmVyKTsKKyAgICBpZiAocHJpdi0+Y29sdW1uTnVtYmVyKQorICAgICAgICBn
X3N0cmluZ19hcHBlbmRfcHJpbnRmKHJlcG9ydCwgIjolZCIsIHByaXYtPmNvbHVtbk51bWJlcik7
CisgICAgcmVwb3J0ID0gZ19zdHJpbmdfYXBwZW5kX2MocmVwb3J0LCAnICcpOworICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZXJyb3JNZXNzYWdlKGpzY19leGNlcHRpb25fdG9fc3RyaW5nKGV4Y2VwdGlv
bikpOworICAgIGlmIChlcnJvck1lc3NhZ2UpCisgICAgICAgIHJlcG9ydCA9IGdfc3RyaW5nX2Fw
cGVuZChyZXBvcnQsIGVycm9yTWVzc2FnZS5nZXQoKSk7CisgICAgcmVwb3J0ID0gZ19zdHJpbmdf
YXBwZW5kX2MocmVwb3J0LCAnXG4nKTsKKworICAgIGlmIChwcml2LT5iYWNrVHJhY2UpIHsKKyAg
ICAgICAgR1VuaXF1ZVB0cjxjaGFyKj4gbGluZXMoZ19zdHJzcGxpdChwcml2LT5iYWNrVHJhY2Uu
Z2V0KCksICJcbiIsIDApKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgbGluZXMuZ2V0
KClbaV07ICsraSkKKyAgICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYocmVwb3J0LCAi
ICAlc1xuIiwgbGluZXMuZ2V0KClbaV0pOworICAgIH0KKworICAgIHJldHVybiBnX3N0cmluZ19m
cmVlKHJlcG9ydCwgRkFMU0UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9nbGliL0pTQ0V4Y2VwdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGli
L0pTQ0V4Y2VwdGlvbi5oCmluZGV4IDJiZWU2MDY0NThiLi40YzA1N2VlNzNlNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0V4Y2VwdGlvbi5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NFeGNlcHRpb24uaApAQCAtNTksMjAgKzU5
LDQwIEBAIHN0cnVjdCBfSlNDRXhjZXB0aW9uQ2xhc3MgewogfTsKIAogSlNDX0FQSSBHVHlwZQot
anNjX2V4Y2VwdGlvbl9nZXRfdHlwZSAgICAgICAgKHZvaWQpOworanNjX2V4Y2VwdGlvbl9nZXRf
dHlwZSAgICAgICAgICAgICAgKHZvaWQpOwogCiBKU0NfQVBJIEpTQ0V4Y2VwdGlvbiAqCi1qc2Nf
ZXhjZXB0aW9uX25ldyAgICAgICAgICAgICAoSlNDQ29udGV4dCAgICpjb250ZXh0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAqbWVzc2FnZSk7Citqc2NfZXhj
ZXB0aW9uX25ldyAgICAgICAgICAgICAgICAgICAoSlNDQ29udGV4dCAgICpjb250ZXh0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAqbWVzc2FnZSk7
CisKK0pTQ19BUEkgSlNDRXhjZXB0aW9uICoKK2pzY19leGNlcHRpb25fbmV3X3dpdGhfbmFtZSAg
ICAgICAgIChKU0NDb250ZXh0ICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgY2hhciAgICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IGNoYXIgICAqbWVzc2FnZSk7CiAKIEpTQ19BUEkgY29uc3QgY2hh
ciAqCi1qc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlICAgICAoSlNDRXhjZXB0aW9uICpleGNlcHRp
b24pOworanNjX2V4Y2VwdGlvbl9nZXRfbmFtZSAgICAgICAgICAgICAgKEpTQ0V4Y2VwdGlvbiAq
ZXhjZXB0aW9uKTsKKworSlNDX0FQSSBjb25zdCBjaGFyICoKK2pzY19leGNlcHRpb25fZ2V0X21l
c3NhZ2UgICAgICAgICAgIChKU0NFeGNlcHRpb24gKmV4Y2VwdGlvbik7CisKK0pTQ19BUEkgZ3Vp
bnQKK2pzY19leGNlcHRpb25fZ2V0X2xpbmVfbnVtYmVyICAgICAgIChKU0NFeGNlcHRpb24gKmV4
Y2VwdGlvbik7CiAKIEpTQ19BUEkgZ3VpbnQKLWpzY19leGNlcHRpb25fZ2V0X2xpbmVfbnVtYmVy
IChKU0NFeGNlcHRpb24gKmV4Y2VwdGlvbik7Citqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVt
YmVyICAgICAoSlNDRXhjZXB0aW9uICpleGNlcHRpb24pOworCitKU0NfQVBJIGNvbnN0IGNoYXIg
KgoranNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaSAgICAgICAgKEpTQ0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKTsKIAogSlNDX0FQSSBjb25zdCBjaGFyICoKLWpzY19leGNlcHRpb25fZ2V0X3NvdXJj
ZV91cmkgIChKU0NFeGNlcHRpb24gKmV4Y2VwdGlvbik7Citqc2NfZXhjZXB0aW9uX2dldF9iYWNr
X3RyYWNlX3N0cmluZyAoSlNDRXhjZXB0aW9uICpleGNlcHRpb24pOworCitKU0NfQVBJIGNoYXIg
KgoranNjX2V4Y2VwdGlvbl90b19zdHJpbmcgICAgICAgICAgICAgKEpTQ0V4Y2VwdGlvbiAqZXhj
ZXB0aW9uKTsKKworSlNDX0FQSSBjaGFyICoKK2pzY19leGNlcHRpb25fcmVwb3J0ICAgICAgICAg
ICAgICAgIChKU0NFeGNlcHRpb24gKmV4Y2VwdGlvbik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9kb2NzL2pzYy1nbGliLTQuMC1z
ZWN0aW9ucy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvZG9jcy9qc2MtZ2xp
Yi00LjAtc2VjdGlvbnMudHh0CmluZGV4IDNjNjE3ZDEyYjYyLi5mOGM1YThhYWVhNCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL2RvY3MvanNjLWdsaWItNC4wLXNl
Y3Rpb25zLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvZG9jcy9qc2Mt
Z2xpYi00LjAtc2VjdGlvbnMudHh0CkBAIC0zMyw2ICszMyw3IEBAIGpzY19jb250ZXh0X25ld193
aXRoX3ZpcnR1YWxfbWFjaGluZQoganNjX2NvbnRleHRfZ2V0X3ZpcnR1YWxfbWFjaGluZQoganNj
X2NvbnRleHRfZ2V0X2V4Y2VwdGlvbgoganNjX2NvbnRleHRfdGhyb3cKK2pzY19jb250ZXh0X3Ro
cm93X3dpdGhfbmFtZQoganNjX2NvbnRleHRfdGhyb3dfZXhjZXB0aW9uCiBqc2NfY29udGV4dF9j
bGVhcl9leGNlcHRpb24KIGpzY19jb250ZXh0X3B1c2hfZXhjZXB0aW9uX2hhbmRsZXIKQEAgLTE1
MSw5ICsxNTIsMTUgQEAganNjX3dlYWtfdmFsdWVfZ2V0X3R5cGUKIDxUSVRMRT5KU0NFeGNlcHRp
b248L1RJVExFPgogSlNDRXhjZXB0aW9uCiBqc2NfZXhjZXB0aW9uX25ldworanNjX2V4Y2VwdGlv
bl9uZXdfd2l0aF9uYW1lCitqc2NfZXhjZXB0aW9uX2dldF9uYW1lCiBqc2NfZXhjZXB0aW9uX2dl
dF9tZXNzYWdlCiBqc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlcgoranNjX2V4Y2VwdGlvbl9n
ZXRfY29sdW1uX251bWJlcgoganNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaQoranNjX2V4Y2Vw
dGlvbl9nZXRfYmFja190cmFjZV9zdHJpbmcKK2pzY19leGNlcHRpb25fdG9fc3RyaW5nCitqc2Nf
ZXhjZXB0aW9uX3JlcG9ydAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEpTQ0V4Y2VwdGlvbkNs
YXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiM2MzYjAxMTYyYS4uYzRmYjQ3MjMyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTA4LTE3ICBD
YXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJ
Ql0gQ29tcGxldGUgdGhlIEpTQ0V4Y2VwdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4ODY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIEFQSSB0byBKU0NFeGNlcHRpb246Cisg
ICAgICAgICAtIE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIGNvbHVtbiBudW1iZXIKKyAgICAgICAg
IC0gTmV3IGZ1bmN0aW9uIGdldCBleGNlcHRpb24gYXMgc3RyaW5nICh0b1N0cmluZygpKQorICAg
ICAgICAgLSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIGNyZWF0ZSBleGNlcHRpb25zIHdpdGggYSBj
dXN0b20gZXJyb3IgbmFtZS4KKyAgICAgICAgIC0gTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgZXhj
ZXB0aW9uIGVycm9yIG5hbWUKKyAgICAgICAgIC0gTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRv
IHJlcG9ydCBhIGV4Y2VwdGlvbiBieSByZXR1cm5pbmcgYSBmb3JtYXR0ZWQgc3RyaW5nIHdpdGgg
YWxsIHRoZSBleGNlcHRpb24KKyAgICAgICAgICAgZGV0YWlscywgdG8gYmUgc2hvd24gYXMgYSB1
c2VyIGVycm9yIG1lc3NhZ2UuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0LmNwcDoK
KyAgICAgICAgKGpzY19jb250ZXh0X3Rocm93X3dpdGhfbmFtZSk6CisgICAgICAgICogQVBJL2ds
aWIvSlNDQ29udGV4dC5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0V4Y2VwdGlvbi5jcHA6Cisg
ICAgICAgIChqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKGpzY19leGNl
cHRpb25fbmV3KToKKyAgICAgICAgKGpzY19leGNlcHRpb25fbmV3X3dpdGhfbmFtZSk6CisgICAg
ICAgIChqc2NfZXhjZXB0aW9uX2dldF9uYW1lKToKKyAgICAgICAgKGpzY19leGNlcHRpb25fZ2V0
X2NvbHVtbl9udW1iZXIpOgorICAgICAgICAoanNjX2V4Y2VwdGlvbl9nZXRfYmFja190cmFjZV9z
dHJpbmcpOgorICAgICAgICAoanNjX2V4Y2VwdGlvbl90b19zdHJpbmcpOgorICAgICAgICAoanNj
X2V4Y2VwdGlvbl9yZXBvcnQpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0V4Y2VwdGlvbi5oOgor
ICAgICAgICAqIEFQSS9nbGliL2RvY3MvanNjLWdsaWItNC4wLXNlY3Rpb25zLnR4dDoKKwogMjAx
OC0wOC0xNCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAg
ICAgICAgIFtZQVJSXSBBbGlnbiBhbGxvY2F0aW9uIHNpemUgaW4gQnVtcFBvaW50ZXJBbGxvY2F0
b3Igd2l0aCBzaXplb2Yodm9pZCopCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNWFjZTMzNDdiMGEuLjljMDJkMjI3MzEyIDEwMDY0NAotLS0gYS9U
b29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTgtMDgtMTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHTElCXSBDb21wbGV0ZSB0aGUgSlNDRXhjZXB0aW9uIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4Njk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNhc2VzIHRvIHRlc3QgdGhl
IG5ldyBBUEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3Jl
L2dsaWIvVGVzdEpTQy5jcHA6CisgICAgICAgICh0ZXN0SlNDQ2hlY2tTeW50YXgpOgorICAgICAg
ICAoY3JlYXRlQ3VzdG9tRXJyb3IpOgorICAgICAgICAodGVzdEpTQ0V4Y2VwdGlvbnMpOgorCiAy
MDE4LTA4LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBNaW5pQnJvd3Nlcjogd2ViIHZpZXcgZG9lc24ndCBnZXQgdGhlIGZvY3Vz
IHdoZW4gbmV3IHdpbmRvdyBpcyBjcmVhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKaW5kZXggNGFjYThl
MjNlNzguLjgyNWNiMzc5ZWZjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC03NzcsOSArNzc3LDEx
IEBAIHN0YXRpYyB2b2lkIHRlc3RKU0NDaGVja1N5bnRheCgpCiAgICAgZ19hc3NlcnRfY21wdWlu
dChqc2NfY29udGV4dF9jaGVja19zeW50YXgoY29udGV4dC5nZXQoKSwgImYgPSA0MjsgYiA9Iiwg
LTEsIEpTQ19DSEVDS19TWU5UQVhfTU9ERV9TQ1JJUFQsIG51bGxwdHIsIDAsICZleGNlcHRpb24u
b3V0UHRyKCkpLCA9PSwgSlNDX0NIRUNLX1NZTlRBWF9SRVNVTFRfUkVDT1ZFUkFCTEVfRVJST1Ip
OwogICAgIGNoZWNrZXIud2F0Y2goZXhjZXB0aW9uLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVl
KEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KGpzY19leGNlcHRpb25fZ2V0X25hbWUoZXhjZXB0aW9uLmdldCgpKSwgPT0sICJTeW50YXhFcnJv
ciIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlKGV4Y2Vw
dGlvbi5nZXQoKSksID09LCAiVW5leHBlY3RlZCBlbmQgb2Ygc2NyaXB0Iik7CiAgICAgZ19hc3Nl
cnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlcihleGNlcHRpb24uZ2V0KCkp
LCA9PSwgMSk7Ci0gICAgZ19hc3NlcnRfZmFsc2UoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3Vy
aShleGNlcHRpb24uZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKGpzY19leGNlcHRpb25fZ2V0
X3NvdXJjZV91cmkoZXhjZXB0aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbChqc2NfZXhj
ZXB0aW9uX2dldF9iYWNrX3RyYWNlX3N0cmluZyhleGNlcHRpb24uZ2V0KCkpKTsKICAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiBnbG9iYWxPYmplY3QgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZ2V0X2ds
b2JhbF9vYmplY3QoY29udGV4dC5nZXQoKSkpOwogICAgIGNoZWNrZXIud2F0Y2goZ2xvYmFsT2Jq
ZWN0LmdldCgpKTsKICAgICBnX2Fzc2VydF9mYWxzZShqc2NfdmFsdWVfb2JqZWN0X2hhc19wcm9w
ZXJ0eShnbG9iYWxPYmplY3QuZ2V0KCksICJmIikpOwpAQCAtNzk4LDggKzgwMCw4IEBAIHN0YXRp
YyB2b2lkIHRlc3RKU0NDaGVja1N5bnRheCgpCiAgICAgZ19hc3NlcnRfY21wdWludChqc2NfY29u
dGV4dF9jaGVja19zeW50YXgoY29udGV4dC5nZXQoKSwgImYgPT09PSA0MiIsIC0xLCBKU0NfQ0hF
Q0tfU1lOVEFYX01PREVfU0NSSVBULCAiZmlsZTovLy9mb28vc2NyaXB0LmpzIiwgMiwgJmV4Y2Vw
dGlvbi5vdXRQdHIoKSksID09LCBKU0NfQ0hFQ0tfU1lOVEFYX1JFU1VMVF9JUlJFQ09WRVJBQkxF
X0VSUk9SKTsKICAgICBjaGVja2VyLndhdGNoKGV4Y2VwdGlvbi5nZXQoKSk7CiAgICAgZ19hc3Nl
cnRfdHJ1ZShKU0NfSVNfRVhDRVBUSU9OKGV4Y2VwdGlvbi5nZXQoKSkpOworICAgIGdfYXNzZXJ0
X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9uYW1lKGV4Y2VwdGlvbi5nZXQoKSksID09LCAiU3lu
dGF4RXJyb3IiKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfbWVzc2Fn
ZShleGNlcHRpb24uZ2V0KCkpLCA9PSwgIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIik7Ci0gICAgZ19h
c3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlcihleGNlcHRpb24uZ2V0
KCkpLCA9PSwgMik7CiAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X3NvdXJj
ZV91cmkoZXhjZXB0aW9uLmdldCgpKSwgPT0sICJmaWxlOi8vL2Zvby9zY3JpcHQuanMiKTsKIAog
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX2NvbnRleHRfY2hlY2tfc3ludGF4KGNvbnRleHQuZ2V0
KCksICJmIDo9IDQyIiwgLTEsIEpTQ19DSEVDS19TWU5UQVhfTU9ERV9TQ1JJUFQsIG51bGxwdHIs
IDAsIG51bGxwdHIpLCA9PSwgSlNDX0NIRUNLX1NZTlRBWF9SRVNVTFRfSVJSRUNPVkVSQUJMRV9F
UlJPUik7CkBAIC0yNDg4LDYgKzI0OTAsMTEgQEAgc3RhdGljIHZvaWQgY3JlYXRlRXJyb3IoKQog
ICAgIGpzY19jb250ZXh0X3Rocm93KGpzY19jb250ZXh0X2dldF9jdXJyZW50KCksICJBUEkgZXhj
ZXB0aW9uIik7CiB9CiAKK3N0YXRpYyB2b2lkIGNyZWF0ZUN1c3RvbUVycm9yKCkKK3sKKyAgICBq
c2NfY29udGV4dF90aHJvd193aXRoX25hbWUoanNjX2NvbnRleHRfZ2V0X2N1cnJlbnQoKSwgIkN1
c3RvbUFQSUVycm9yIiwgIkFQSSBjdXN0b20gZXhjZXB0aW9uIik7Cit9CisKIHN0YXRpYyB2b2lk
IHRlc3RKU0NFeGNlcHRpb25zKCkKIHsKICAgICB7CkBAIC0yNTAzLDkgKzI1MTAsMTYgQEAgc3Rh
dGljIHZvaWQgdGVzdEpTQ0V4Y2VwdGlvbnMoKQogICAgICAgICBhdXRvKiBleGNlcHRpb24gPSBq
c2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fzc2Vy
dF90cnVlKEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uKSk7CiAgICAgICAgIGNoZWNrZXIud2F0
Y2goZXhjZXB0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0
X25hbWUoZXhjZXB0aW9uKSwgPT0sICJSZWZlcmVuY2VFcnJvciIpOwogICAgICAgICBnX2Fzc2Vy
dF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZShleGNlcHRpb24pLCA9PSwgIkNhbid0
IGZpbmQgdmFyaWFibGU6IGZvbyIpOwogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19leGNl
cHRpb25fZ2V0X2xpbmVfbnVtYmVyKGV4Y2VwdGlvbiksID09LCAxKTsKLSAgICAgICAgZ19hc3Nl
cnRfZmFsc2UoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaShleGNlcHRpb24pKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVyKGV4Y2Vw
dGlvbiksID09LCA0KTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChqc2NfZXhjZXB0aW9uX2dldF9z
b3VyY2VfdXJpKGV4Y2VwdGlvbikpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2Vw
dGlvbl9nZXRfYmFja190cmFjZV9zdHJpbmcoZXhjZXB0aW9uKSwgPT0sICJnbG9iYWwgY29kZSIp
OworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGVycm9yU3RyaW5nKGpzY19leGNlcHRpb25fdG9f
c3RyaW5nKGV4Y2VwdGlvbikpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZXJyb3JTdHJpbmcu
Z2V0KCksID09LCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGZvbyIpOwor
ICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2NfZXhjZXB0aW9uX3JlcG9y
dChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJlcG9ydFN0cmluZy5nZXQo
KSwgPT0sICI6MTo0IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb29cbiAg
Z2xvYmFsIGNvZGVcbiIpOwogCiAgICAgICAgIGpzY19jb250ZXh0X2NsZWFyX2V4Y2VwdGlvbihj
b250ZXh0LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfbnVsbChqc2NfY29udGV4dF9nZXRfZXhj
ZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsKQEAgLTI1MjUsNiArMjUzOSw3IEBAIHN0YXRpYyB2b2lk
IHRlc3RKU0NFeGNlcHRpb25zKCkKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0NfSVNfRVhDRVBU
SU9OKGV4Y2VwdGlvbikpOwogICAgICAgICBjaGVja2VyLndhdGNoKGV4Y2VwdGlvbik7CiAgICAg
ICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9nZXRfbGluZV9udW1iZXIoZXhjZXB0
aW9uKSwgPT0sIDIpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19leGNlcHRpb25fZ2V0
X2NvbHVtbl9udW1iZXIoZXhjZXB0aW9uKSwgPT0sIDQpOwogCiAgICAgICAgIGpzY19jb250ZXh0
X2NsZWFyX2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfbnVsbChq
c2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsKQEAgLTI1MzYsMTUgKzI1
NTEsMzQgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0V4Y2VwdGlvbnMoKQogICAgICAgICBjaGVja2Vy
LndhdGNoKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfY29udGV4
dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsKIAotICAgICAgICBHUmVmUHRyPEpTQ1Zh
bHVlPiByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGVfd2l0aF9zb3VyY2Vf
dXJpKGNvbnRleHQuZ2V0KCksICJmb28iLCAtMSwgImZpbGU6Ly8vZm9vL3NjcmlwdC5qcyIsIDMp
KTsKKyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250
ZXh0X2V2YWx1YXRlX3dpdGhfc291cmNlX3VyaShjb250ZXh0LmdldCgpLAorICAgICAgICAgICAg
ImxldCBhID0gMjU7XG4iCisgICAgICAgICAgICAiZnVuY3Rpb24gZm9vKCkge1xuIgorICAgICAg
ICAgICAgIiAgICBsZXQgYiA9IGJheigpO1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4gYjtc
biIKKyAgICAgICAgICAgICJ9XG4iCisgICAgICAgICAgICAiZnVuY3Rpb24gYmFyKCkge1xuIgor
ICAgICAgICAgICAgIiAgICBsZXQgYyA9IDc1O1xuIgorICAgICAgICAgICAgIiAgICByZXR1cm4g
Zm9vKCk7XG4iCisgICAgICAgICAgICAifVxuIgorICAgICAgICAgICAgImxldCBkID0gYmFyKCk7
XG4iLAorICAgICAgICAgICAgLTEsICJmaWxlOi8vL2Zvby9zY3JpcHQuanMiLCAxKSk7CiAgICAg
ICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgpKTsKIAogICAgICAgICBnX2Fzc2VydF90cnVl
KGpzY192YWx1ZV9pc191bmRlZmluZWQocmVzdWx0LmdldCgpKSk7CiAgICAgICAgIGF1dG8qIGV4
Y2VwdGlvbiA9IGpzY19jb250ZXh0X2dldF9leGNlcHRpb24oY29udGV4dC5nZXQoKSk7CiAgICAg
ICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0VYQ0VQVElPTihleGNlcHRpb24pKTsKICAgICAgICAg
Y2hlY2tlci53YXRjaChleGNlcHRpb24pOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4
Y2VwdGlvbl9nZXRfbmFtZShleGNlcHRpb24pLCA9PSwgIlJlZmVyZW5jZUVycm9yIik7CisgICAg
ICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlKGV4Y2VwdGlvbiks
ID09LCAiQ2FuJ3QgZmluZCB2YXJpYWJsZTogYmF6Iik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cihqc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJpKGV4Y2VwdGlvbiksID09LCAiZmlsZTovLy9m
b28vc2NyaXB0LmpzIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9n
ZXRfbGluZV9udW1iZXIoZXhjZXB0aW9uKSwgPT0sIDMpOworICAgICAgICBnX2Fzc2VydF9jbXB1
aW50KGpzY19leGNlcHRpb25fZ2V0X2NvbHVtbl9udW1iZXIoZXhjZXB0aW9uKSwgPT0sIDE2KTsK
KyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X2JhY2tfdHJhY2Vfc3Ry
aW5nKGV4Y2VwdGlvbiksID09LCAiZm9vQGZpbGU6Ly8vZm9vL3NjcmlwdC5qczozOjE2XG5iYXJA
ZmlsZTovLy9mb28vc2NyaXB0LmpzOjg6MTVcbmdsb2JhbCBjb2RlQGZpbGU6Ly8vZm9vL3Njcmlw
dC5qczoxMDoxMiIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGVycm9yU3RyaW5nKGpzY19l
eGNlcHRpb25fdG9fc3RyaW5nKGV4Y2VwdGlvbikpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
ZXJyb3JTdHJpbmcuZ2V0KCksID09LCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFi
bGU6IGJheiIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2NfZXhj
ZXB0aW9uX3JlcG9ydChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJlcG9y
dFN0cmluZy5nZXQoKSwgPT0sICJmaWxlOi8vL2Zvby9zY3JpcHQuanM6MzoxNiBSZWZlcmVuY2VF
cnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogYmF6XG4gIGZvb0BmaWxlOi8vL2Zvby9zY3JpcHQu
anM6MzoxNlxuICBiYXJAZmlsZTovLy9mb28vc2NyaXB0LmpzOjg6MTVcbiAgZ2xvYmFsIGNvZGVA
ZmlsZTovLy9mb28vc2NyaXB0LmpzOjEwOjEyXG4iKTsKIAogICAgICAgICBqc2NfY29udGV4dF9j
bGVhcl9leGNlcHRpb24oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X251bGwoanNj
X2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CkBAIC0yNTczLDkgKzI2MDcs
NzEgQEAgc3RhdGljIHZvaWQgdGVzdEpTQ0V4Y2VwdGlvbnMoKQogICAgICAgICBhdXRvKiBleGNl
cHRpb24gPSBqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAg
ICBnX2Fzc2VydF90cnVlKEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uKSk7CiAgICAgICAgIGNo
ZWNrZXIud2F0Y2goZXhjZXB0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNl
cHRpb25fZ2V0X25hbWUoZXhjZXB0aW9uKSwgPT0sICJFcnJvciIpOwogICAgICAgICBnX2Fzc2Vy
dF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZShleGNlcHRpb24pLCA9PSwgIkFQSSBl
eGNlcHRpb24iKTsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9s
aW5lX251bWJlcihleGNlcHRpb24pLCA9PSwgMSk7Ci0gICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGpz
Y19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkoZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0
X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9nZXRfY29sdW1uX251bWJlcihleGNlcHRpb24pLCA9PSwg
MjQpOworICAgICAgICBnX2Fzc2VydF9udWxsKGpzY19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmko
ZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9i
YWNrX3RyYWNlX3N0cmluZyhleGNlcHRpb24pLCA9PSwgImNyZWF0ZUVycm9yQFtuYXRpdmUgY29k
ZV1cbmdsb2JhbCBjb2RlIik7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXJyb3JTdHJpbmco
anNjX2V4Y2VwdGlvbl90b19zdHJpbmcoZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2Nt
cHN0cihlcnJvclN0cmluZy5nZXQoKSwgPT0sICJFcnJvcjogQVBJIGV4Y2VwdGlvbiIpOworICAg
ICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2NfZXhjZXB0aW9uX3JlcG9ydChl
eGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJlcG9ydFN0cmluZy5nZXQoKSwg
PT0sICI6MToyNCBFcnJvcjogQVBJIGV4Y2VwdGlvblxuICBjcmVhdGVFcnJvckBbbmF0aXZlIGNv
ZGVdXG4gIGdsb2JhbCBjb2RlXG4iKTsKKworICAgICAgICBqc2NfY29udGV4dF9jbGVhcl9leGNl
cHRpb24oY29udGV4dC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X251bGwoanNjX2NvbnRleHRf
Z2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CisgICAgfQorCisgICAgeworICAgICAgICBM
ZWFrQ2hlY2tlciBjaGVja2VyOworICAgICAgICBHUmVmUHRyPEpTQ0NvbnRleHQ+IGNvbnRleHQg
PSBhZG9wdEdSZWYoanNjX2NvbnRleHRfbmV3KCkpOworICAgICAgICBjaGVja2VyLndhdGNoKGNv
bnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfY29udGV4dF9nZXRfZXhj
ZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsKKworICAgICAgICBHUmVmUHRyPEpTQ1ZhbHVlPiBmdW5j
dGlvbiA9IGFkb3B0R1JlZihqc2NfdmFsdWVfbmV3X2Z1bmN0aW9uKGNvbnRleHQuZ2V0KCksICJj
cmVhdGVDdXN0b21FcnJvciIsIEdfQ0FMTEJBQ0soY3JlYXRlQ3VzdG9tRXJyb3IpLCBudWxscHRy
LCBudWxscHRyLCBHX1RZUEVfTk9ORSwgMCwgR19UWVBFX05PTkUpKTsKKyAgICAgICAgY2hlY2tl
ci53YXRjaChmdW5jdGlvbi5nZXQoKSk7CisgICAgICAgIGpzY19jb250ZXh0X3NldF92YWx1ZShj
b250ZXh0LmdldCgpLCAiY3JlYXRlQ3VzdG9tRXJyb3IiLCBmdW5jdGlvbi5nZXQoKSk7CisKKyAg
ICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2
YWx1YXRlKGNvbnRleHQuZ2V0KCksICJ2YXIgcmVzdWx0OyBjcmVhdGVDdXN0b21FcnJvcigpOyBy
ZXN1bHQgPSAnTm8gZXhjZXB0aW9uJzsiLCAtMSkpOworICAgICAgICBjaGVja2VyLndhdGNoKHJl
c3VsdC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoanNjX3ZhbHVlX2lzX3VuZGVmaW5l
ZChyZXN1bHQuZ2V0KCkpKTsKKyAgICAgICAgYXV0byogZXhjZXB0aW9uID0ganNjX2NvbnRleHRf
Z2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShKU0Nf
SVNfRVhDRVBUSU9OKGV4Y2VwdGlvbikpOworICAgICAgICBjaGVja2VyLndhdGNoKGV4Y2VwdGlv
bik7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9uYW1lKGV4Y2Vw
dGlvbiksID09LCAiQ3VzdG9tQVBJRXJyb3IiKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpz
Y19leGNlcHRpb25fZ2V0X21lc3NhZ2UoZXhjZXB0aW9uKSwgPT0sICJBUEkgY3VzdG9tIGV4Y2Vw
dGlvbiIpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2xpbmVf
bnVtYmVyKGV4Y2VwdGlvbiksID09LCAxKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2Nf
ZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVyKGV4Y2VwdGlvbiksID09LCAzMCk7CisgICAgICAg
IGdfYXNzZXJ0X251bGwoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaShleGNlcHRpb24pKTsK
KyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X2JhY2tfdHJhY2Vfc3Ry
aW5nKGV4Y2VwdGlvbiksID09LCAiY3JlYXRlQ3VzdG9tRXJyb3JAW25hdGl2ZSBjb2RlXVxuZ2xv
YmFsIGNvZGUiKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBlcnJvclN0cmluZyhqc2NfZXhj
ZXB0aW9uX3RvX3N0cmluZyhleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGVy
cm9yU3RyaW5nLmdldCgpLCA9PSwgIkN1c3RvbUFQSUVycm9yOiBBUEkgY3VzdG9tIGV4Y2VwdGlv
biIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2NfZXhjZXB0aW9u
X3JlcG9ydChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJlcG9ydFN0cmlu
Zy5nZXQoKSwgPT0sICI6MTozMCBDdXN0b21BUElFcnJvcjogQVBJIGN1c3RvbSBleGNlcHRpb25c
biAgY3JlYXRlQ3VzdG9tRXJyb3JAW25hdGl2ZSBjb2RlXVxuICBnbG9iYWwgY29kZVxuIik7CisK
KyAgICAgICAganNjX2NvbnRleHRfY2xlYXJfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOworICAg
ICAgICBnX2Fzc2VydF9udWxsKGpzY19jb250ZXh0X2dldF9leGNlcHRpb24oY29udGV4dC5nZXQo
KSkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgTGVha0NoZWNrZXIgY2hlY2tlcjsKKyAgICAg
ICAgR1JlZlB0cjxKU0NDb250ZXh0PiBjb250ZXh0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X25l
dygpKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChjb250ZXh0LmdldCgpKTsKKyAgICAgICAgZ19h
c3NlcnRfZmFsc2UoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CisK
KyAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVzdWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0
X2V2YWx1YXRlX3dpdGhfc291cmNlX3VyaShjb250ZXh0LmdldCgpLCAiZm9vIiwgLTEsICJmaWxl
Oi8vL2Zvby9zY3JpcHQuanMiLCAzKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0Lmdl
dCgpKTsKKworICAgICAgICBnX2Fzc2VydF90cnVlKGpzY192YWx1ZV9pc191bmRlZmluZWQocmVz
dWx0LmdldCgpKSk7CisgICAgICAgIGF1dG8qIGV4Y2VwdGlvbiA9IGpzY19jb250ZXh0X2dldF9l
eGNlcHRpb24oY29udGV4dC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0VY
Q0VQVElPTihleGNlcHRpb24pKTsKKyAgICAgICAgY2hlY2tlci53YXRjaChleGNlcHRpb24pOwor
ICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaShleGNl
cHRpb24pLCA9PSwgImZpbGU6Ly8vZm9vL3NjcmlwdC5qcyIpOworICAgICAgICBnX2Fzc2VydF9j
bXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2xpbmVfbnVtYmVyKGV4Y2VwdGlvbiksID09LCAzKTsK
KyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVy
KGV4Y2VwdGlvbiksID09LCA0KTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRp
b25fZ2V0X2JhY2tfdHJhY2Vfc3RyaW5nKGV4Y2VwdGlvbiksID09LCAiZ2xvYmFsIGNvZGVAZmls
ZTovLy9mb28vc2NyaXB0LmpzOjM6NCIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9y
dFN0cmluZyhqc2NfZXhjZXB0aW9uX3JlcG9ydChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3Nl
cnRfY21wc3RyKHJlcG9ydFN0cmluZy5nZXQoKSwgPT0sICJmaWxlOi8vL2Zvby9zY3JpcHQuanM6
Mzo0IFJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb29cbiAgZ2xvYmFsIGNv
ZGVAZmlsZTovLy9mb28vc2NyaXB0LmpzOjM6NFxuIik7CiAKICAgICAgICAganNjX2NvbnRleHRf
Y2xlYXJfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fzc2VydF9udWxsKGpz
Y19jb250ZXh0X2dldF9leGNlcHRpb24oY29udGV4dC5nZXQoKSkpOwpAQCAtMjYxMCw5ICsyNzA2
LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RKU0NFeGNlcHRpb25zKCkKICAgICAgICAgZ19hc3NlcnRf
ZmFsc2UoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CiAgICAgICAg
IGdfYXNzZXJ0X3RydWUoSlNDX0lTX0VYQ0VQVElPTih0ZXN0LmV4Y2VwdGlvbi5nZXQoKSkpOwog
ICAgICAgICBjaGVja2VyLndhdGNoKHRlc3QuZXhjZXB0aW9uLmdldCgpKTsKKyAgICAgICAgZ19h
c3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X25hbWUodGVzdC5leGNlcHRpb24uZ2V0KCkp
LCA9PSwgIlJlZmVyZW5jZUVycm9yIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhj
ZXB0aW9uX2dldF9tZXNzYWdlKHRlc3QuZXhjZXB0aW9uLmdldCgpKSwgPT0sICJDYW4ndCBmaW5k
IHZhcmlhYmxlOiBmb28iKTsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9u
X2dldF9saW5lX251bWJlcih0ZXN0LmV4Y2VwdGlvbi5nZXQoKSksID09LCAxKTsKKyAgICAgICAg
Z19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVyKHRlc3QuZXhj
ZXB0aW9uLmdldCgpKSwgPT0sIDQpOwogICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfZXhjZXB0
aW9uX2dldF9zb3VyY2VfdXJpKHRlc3QuZXhjZXB0aW9uLmdldCgpKSk7CisgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gZXJyb3JTdHJpbmcoanNjX2V4Y2VwdGlvbl90b19zdHJpbmcodGVzdC5leGNl
cHRpb24uZ2V0KCkpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGVycm9yU3RyaW5nLmdldCgp
LCA9PSwgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28iKTsKIAogICAg
ICAgICBnX2Fzc2VydF9mYWxzZSh0ZXN0Lndhc0RlbGV0ZWQpOwogICAgICAgICBqc2NfY29udGV4
dF9wb3BfZXhjZXB0aW9uX2hhbmRsZXIoY29udGV4dC5nZXQoKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>347358</attachid>
            <date>2018-08-17 05:32:31 -0700</date>
            <delta_ts>2018-08-17 07:26:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>jsc-exception-api.diff</filename>
            <type>text/plain</type>
            <size>26647</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAppbmRleCA1
NTRiZjBjZGM1Ni4uZjlkZWY2NmE1NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L2dsaWIvSlNDQ29udGV4dC5jcHAKQEAgLTY0Myw2ICs2NDMsMjMgQEAgdm9pZCBqc2NfY29udGV4
dF90aHJvdyhKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBlcnJvck1lc3NhZ2UpCiAg
ICAgY29udGV4dC0+cHJpdi0+ZXhjZXB0aW9uID0gYWRvcHRHUmVmKGpzY19leGNlcHRpb25fbmV3
KGNvbnRleHQsIGVycm9yTWVzc2FnZSkpOwogfQogCisvKioKKyAqIGpzY19jb250ZXh0X3Rocm93
X3dpdGhfbmFtZToKKyAqIEBjb250ZXh0OiBhICNKU0NDb250ZXh0CisgKiBAZXJyb3JfbmFtZTog
dGhlIGVycm9yIG5hbWUKKyAqIEBlcnJvcl9tZXNzYWdlOiBhbiBlcnJvciBtZXNzYWdlCisgKgor
ICogVGhyb3cgYW4gZXhjZXB0aW9uIHRvIEBjb250ZXh0IHVzaW5nIHRoZSBnaXZlbiBlcnJvciBu
YW1lIGFuZCBtZXNzYWdlLiBUaGUgY3JlYXRlZCAjSlNDRXhjZXB0aW9uCisgKiBjYW4gYmUgcmV0
cmlldmVkIHdpdGgganNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbigpLgorICovCit2b2lkIGpzY19j
b250ZXh0X3Rocm93X3dpdGhfbmFtZShKU0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBl
cnJvck5hbWUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkKK3sKKyAgICBnX3JldHVybl9pZl9m
YWlsKEpTQ19JU19DT05URVhUKGNvbnRleHQpKTsKKyAgICBnX3JldHVybl9pZl9mYWlsKGVycm9y
TmFtZSk7CisKKyAgICBjb250ZXh0LT5wcml2LT5leGNlcHRpb24gPSBhZG9wdEdSZWYoanNjX2V4
Y2VwdGlvbl9uZXdfd2l0aF9uYW1lKGNvbnRleHQsIGVycm9yTmFtZSwgZXJyb3JNZXNzYWdlKSk7
Cit9CisKIC8qKgogICoganNjX2NvbnRleHRfdGhyb3dfZXhjZXB0aW9uOgogICogQGNvbnRleHQ6
IGEgI0pTQ0NvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xp
Yi9KU0NDb250ZXh0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4
dC5oCmluZGV4IGYzMGQ0ZTYzNDYxLi44OTlhYzI2YTQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5oCkBAIC05Nyw2ICs5NywxMSBAQCBKU0NfQVBJIHZv
aWQKIGpzY19jb250ZXh0X3Rocm93ICAgICAgICAgICAgICAgICAgICAoSlNDQ29udGV4dCAgICAg
ICAgICpjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBjaGFyICAgICAgICAgKmVycm9yX21lc3NhZ2UpOwogCitKU0NfQVBJIHZvaWQKK2pzY19jb250
ZXh0X3Rocm93X3dpdGhfbmFtZSAgICAgICAgICAoSlNDQ29udGV4dCAgICAgICAgICpjb250ZXh0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgICAg
ICAgKmVycm9yX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIgICAgICAgICAqZXJyb3JfbWVzc2FnZSk7CisKIEpTQ19BUEkgdm9pZAoganNjX2Nv
bnRleHRfdGhyb3dfZXhjZXB0aW9uICAgICAgICAgIChKU0NDb250ZXh0ICAgICAgICAgKmNvbnRl
eHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpTQ0V4Y2VwdGlvbiAg
ICAgICAqZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NFeGNlcHRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pT
Q0V4Y2VwdGlvbi5jcHAKaW5kZXggZGQ2N2Q1NzIwZTkuLjI4MTlmMWFkZGIyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmNwcApAQCAtNDIsOSAr
NDIsMTIgQEAgc3RydWN0IF9KU0NFeGNlcHRpb25Qcml2YXRlIHsKICAgICBKU0NDb250ZXh0KiBj
b250ZXh0OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IGpzRXhjZXB0aW9uOwogICAg
IGJvb2wgY2FjaGVkOworICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXJyb3JOYW1lOwogICAgIEdVbmlx
dWVQdHI8Y2hhcj4gbWVzc2FnZTsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOworICAgIHVuc2ln
bmVkIGNvbHVtbk51bWJlcjsKICAgICBHVW5pcXVlUHRyPGNoYXI+IHNvdXJjZVVSSTsKKyAgICBH
VW5pcXVlUHRyPGNoYXI+IGJhY2t0cmFjZTsKIH07CiAKIFdFQktJVF9ERUZJTkVfVFlQRShKU0NF
eGNlcHRpb24sIGpzY19leGNlcHRpb24sIEdfVFlQRV9PQkpFQ1QpCkBAIC05NSwxNSArOTgsMjQg
QEAgdm9pZCBqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKEpTQ0V4Y2VwdGlvbiogZXhjZXB0
aW9uKQogICAgIHByaXYtPmNhY2hlZCA9IHRydWU7CiAKICAgICBhdXRvIHZhbHVlID0ganNjQ29u
dGV4dEdldE9yQ3JlYXRlVmFsdWUocHJpdi0+Y29udGV4dCwgdG9SZWYocHJpdi0+anNFeGNlcHRp
b24uZ2V0KCkpKTsKLSAgICBhdXRvIHByb3BlcnR5VmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVl
X29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0KCksICJtZXNzYWdlIikpOworICAgIGF1dG8g
cHJvcGVydHlWYWx1ZSA9IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2
YWx1ZS5nZXQoKSwgIm5hbWUiKSk7CisgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHBy
b3BlcnR5VmFsdWUuZ2V0KCkpKQorICAgICAgICBwcml2LT5lcnJvck5hbWUucmVzZXQoanNjX3Zh
bHVlX3RvX3N0cmluZyhwcm9wZXJ0eVZhbHVlLmdldCgpKSk7CisgICAgcHJvcGVydHlWYWx1ZSA9
IGFkb3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2YWx1ZS5nZXQoKSwgIm1l
c3NhZ2UiKSk7CiAgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHByb3BlcnR5VmFsdWUu
Z2V0KCkpKQogICAgICAgICBwcml2LT5tZXNzYWdlLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmco
cHJvcGVydHlWYWx1ZS5nZXQoKSkpOwogICAgIHByb3BlcnR5VmFsdWUgPSBhZG9wdEdSZWYoanNj
X3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0KCksICJsaW5lIikpOwogICAgIGlm
ICghanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgpKSkKICAgICAgICAg
cHJpdi0+bGluZU51bWJlciA9IGpzY192YWx1ZV90b19pbnQzMihwcm9wZXJ0eVZhbHVlLmdldCgp
KTsKKyAgICBwcm9wZXJ0eVZhbHVlID0gYWRvcHRHUmVmKGpzY192YWx1ZV9vYmplY3RfZ2V0X3By
b3BlcnR5KHZhbHVlLmdldCgpLCAiY29sdW1uIikpOworICAgIGlmICghanNjX3ZhbHVlX2lzX3Vu
ZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgpKSkKKyAgICAgICAgcHJpdi0+Y29sdW1uTnVtYmVy
ID0ganNjX3ZhbHVlX3RvX2ludDMyKHByb3BlcnR5VmFsdWUuZ2V0KCkpOwogICAgIHByb3BlcnR5
VmFsdWUgPSBhZG9wdEdSZWYoanNjX3ZhbHVlX29iamVjdF9nZXRfcHJvcGVydHkodmFsdWUuZ2V0
KCksICJzb3VyY2VVUkwiKSk7CiAgICAgaWYgKCFqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHByb3Bl
cnR5VmFsdWUuZ2V0KCkpKQogICAgICAgICBwcml2LT5zb3VyY2VVUkkucmVzZXQoanNjX3ZhbHVl
X3RvX3N0cmluZyhwcm9wZXJ0eVZhbHVlLmdldCgpKSk7CisgICAgcHJvcGVydHlWYWx1ZSA9IGFk
b3B0R1JlZihqc2NfdmFsdWVfb2JqZWN0X2dldF9wcm9wZXJ0eSh2YWx1ZS5nZXQoKSwgInN0YWNr
IikpOworICAgIGlmICghanNjX3ZhbHVlX2lzX3VuZGVmaW5lZChwcm9wZXJ0eVZhbHVlLmdldCgp
KSkKKyAgICAgICAgcHJpdi0+YmFja3RyYWNlLnJlc2V0KGpzY192YWx1ZV90b19zdHJpbmcocHJv
cGVydHlWYWx1ZS5nZXQoKSkpOwogfQogCiAvKioKQEAgLTExMyw5ICsxMjUsMjQgQEAgdm9pZCBq
c2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKEpTQ0V4Y2VwdGlvbiogZXhjZXB0aW9uKQogICoK
ICAqIENyZWF0ZSBhIG5ldyAjSlNDRXhjZXB0aW9uIGluIEBjb250ZXh0IHdpdGggQG1lc3NhZ2Uu
CiAgKgotICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBKU0NFeGNlcHRpb24uCisg
KiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNKU0NFeGNlcHRpb24uCiAgKi8KIEpT
Q0V4Y2VwdGlvbioganNjX2V4Y2VwdGlvbl9uZXcoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3Qg
Y2hhciogbWVzc2FnZSkKK3sKKyAgICByZXR1cm4ganNjX2V4Y2VwdGlvbl9uZXdfd2l0aF9uYW1l
KGNvbnRleHQsIG51bGxwdHIsIG1lc3NhZ2UpOworfQorCisvKioKKyAqIGpzY19leGNlcHRpb25f
bmV3X3dpdGhfbmFtZToKKyAqIEBjb250ZXh0OiBhICNKU0NDb250ZXh0CisgKiBAbmFtZTogdGhl
IGVycm9yIG5hbWUKKyAqIEBtZXNzYWdlOiB0aGUgZXJyb3IgbWVzc2FnZQorICoKKyAqIENyZWF0
ZSBhIG5ldyAjSlNDRXhjZXB0aW9uIGluIEBjb250ZXh0IHdpdGggQG5hbWUgYW5kIEBtZXNzYWdl
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0pTQ0V4Y2VwdGlvbi4K
KyAqLworSlNDRXhjZXB0aW9uKiBqc2NfZXhjZXB0aW9uX25ld193aXRoX25hbWUoSlNDQ29udGV4
dCogY29udGV4dCwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogbWVzc2FnZSkKIHsKICAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfQ09OVEVYVChjb250ZXh0KSwgbnVsbHB0cik7
CiAKQEAgLTEyNSw3ICsxNTIsMzQgQEAgSlNDRXhjZXB0aW9uKiBqc2NfZXhjZXB0aW9uX25ldyhK
U0NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKiBtZXNzYWdlKQogICAgICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ganNNZXNzYWdlU3RyaW5nKEFkb3B0LCBKU1N0cmluZ0NyZWF0ZVdp
dGhVVEY4Q1N0cmluZyhtZXNzYWdlKSk7CiAgICAgICAgIGpzTWVzc2FnZSA9IEpTVmFsdWVNYWtl
U3RyaW5nKGpzQ29udGV4dCwganNNZXNzYWdlU3RyaW5nLmdldCgpKTsKICAgICB9Ci0gICAgcmV0
dXJuIGpzY0V4Y2VwdGlvbkNyZWF0ZShjb250ZXh0LCBKU09iamVjdE1ha2VFcnJvcihqc0NvbnRl
eHQsIGpzTWVzc2FnZSA/IDEgOiAwLCAmanNNZXNzYWdlLCBudWxscHRyKSkubGVha1JlZigpOwor
CisgICAgYXV0byBleGNlcHRpb24gPSBqc2NFeGNlcHRpb25DcmVhdGUoY29udGV4dCwgSlNPYmpl
Y3RNYWtlRXJyb3IoanNDb250ZXh0LCBqc01lc3NhZ2UgPyAxIDogMCwgJmpzTWVzc2FnZSwgbnVs
bHB0cikpOworICAgIGlmIChuYW1lKSB7CisgICAgICAgIGF1dG8gdmFsdWUgPSBqc2NDb250ZXh0
R2V0T3JDcmVhdGVWYWx1ZShjb250ZXh0LCB0b1JlZihleGNlcHRpb24tPnByaXYtPmpzRXhjZXB0
aW9uLmdldCgpKSk7CisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IG5hbWVWYWx1ZSA9IGFkb3B0
R1JlZihqc2NfdmFsdWVfbmV3X3N0cmluZyhjb250ZXh0LCBuYW1lKSk7CisgICAgICAgIGpzY192
YWx1ZV9vYmplY3Rfc2V0X3Byb3BlcnR5KHZhbHVlLmdldCgpLCAibmFtZSIsIG5hbWVWYWx1ZS5n
ZXQoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGV4Y2VwdGlvbi5sZWFrUmVmKCk7Cit9CisKKy8q
KgorICoganNjX2V4Y2VwdGlvbl9nZXRfbmFtZToKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2Vw
dGlvbgorICoKKyAqIEdldCB0aGUgZXJyb3IgbmFtZSBvZiBAZXhjZXB0aW9uCisgKgorICogUmV0
dXJuczogdGhlIEBleGNlcHRpb24gZXJyb3IgbmFtZS4KKyAqLworY29uc3QgY2hhcioganNjX2V4
Y2VwdGlvbl9nZXRfbmFtZShKU0NFeGNlcHRpb24qIGV4Y2VwdGlvbikKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChKU0NfSVNfRVhDRVBUSU9OKGV4Y2VwdGlvbiksIG51bGxwdHIpOworCisg
ICAgSlNDRXhjZXB0aW9uUHJpdmF0ZSogcHJpdiA9IGV4Y2VwdGlvbi0+cHJpdjsKKyAgICBnX3Jl
dHVybl92YWxfaWZfZmFpbChwcml2LT5jb250ZXh0LCBudWxscHRyKTsKKworICAgIGpzY0V4Y2Vw
dGlvbkVuc3VyZVByb3BlcnRpZXMoZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gcHJpdi0+ZXJyb3JO
YW1lLmdldCgpOwogfQogCiAvKioKQEAgLTE2Niw2ICsyMjAsMjUgQEAgZ3VpbnQganNjX2V4Y2Vw
dGlvbl9nZXRfbGluZV9udW1iZXIoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCiAgICAgcmV0dXJu
IHByaXYtPmxpbmVOdW1iZXI7CiB9CiAKKy8qKgorICoganNjX2V4Y2VwdGlvbl9nZXRfY29sdW1u
X251bWJlcjoKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2VwdGlvbgorICoKKyAqIEdldCB0aGUg
Y29sdW1uIG51bWJlciBhdCB3aGljaCBAZXhjZXB0aW9uIGhhcHBlbmVkLgorICoKKyAqIFJldHVy
bnM6IHRoZSBjb2x1bW4gbnVtYmVyIG9mIEBleGNlcHRpb24uCisgKi8KK2d1aW50IGpzY19leGNl
cHRpb25fZ2V0X2NvbHVtbl9udW1iZXIoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAg
Z19yZXR1cm5fdmFsX2lmX2ZhaWwoSlNDX0lTX0VYQ0VQVElPTihleGNlcHRpb24pLCAwKTsKKwor
ICAgIEpTQ0V4Y2VwdGlvblByaXZhdGUqIHByaXYgPSBleGNlcHRpb24tPnByaXY7CisgICAgZ19y
ZXR1cm5fdmFsX2lmX2ZhaWwocHJpdi0+Y29udGV4dCwgMCk7CisKKyAgICBqc2NFeGNlcHRpb25F
bnN1cmVQcm9wZXJ0aWVzKGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIHByaXYtPmNvbHVtbk51bWJl
cjsKK30KKwogLyoqCiAgKiBqc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJpOgogICogQGV4Y2Vw
dGlvbjogYSAjSlNDRXhjZXB0aW9uCkBAIC0xODQsMyArMjU3LDgwIEBAIGNvbnN0IGNoYXIqIGpz
Y19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCiAgICAg
anNjRXhjZXB0aW9uRW5zdXJlUHJvcGVydGllcyhleGNlcHRpb24pOwogICAgIHJldHVybiBwcml2
LT5zb3VyY2VVUkkuZ2V0KCk7CiB9CisKKy8qKgorICoganNjX2V4Y2VwdGlvbl9nZXRfYmFja3Ry
YWNlX3N0cmluZzoKKyAqIEBleGNlcHRpb246IGEgI0pTQ0V4Y2VwdGlvbgorICoKKyAqIEdldCBh
IHN0cmluZyB3aXRoIHRoZSBleGNlcHRpb24gYmFja3RyYWNlLgorICoKKyAqIFJldHVybnM6IChu
dWxsYWJsZSk6IHRoZSBleGNlcHRpb24gYmFja3RyYWNlIHN0cmluZyBvciAlTlVMTC4KKyAqLwor
Y29uc3QgY2hhcioganNjX2V4Y2VwdGlvbl9nZXRfYmFja3RyYWNlX3N0cmluZyhKU0NFeGNlcHRp
b24qIGV4Y2VwdGlvbikKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChKU0NfSVNfRVhDRVBU
SU9OKGV4Y2VwdGlvbiksIG51bGxwdHIpOworCisgICAgSlNDRXhjZXB0aW9uUHJpdmF0ZSogcHJp
diA9IGV4Y2VwdGlvbi0+cHJpdjsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChwcml2LT5jb250
ZXh0LCBudWxscHRyKTsKKworICAgIGpzY0V4Y2VwdGlvbkVuc3VyZVByb3BlcnRpZXMoZXhjZXB0
aW9uKTsKKyAgICByZXR1cm4gcHJpdi0+YmFja3RyYWNlLmdldCgpOworfQorCisvKioKKyAqIGpz
Y19leGNlcHRpb25fdG9fc3RyaW5nOgorICogQGV4Y2VwdGlvbjogYSAjSlNDRXhjZXB0aW9uCisg
KgorICogR2V0IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgQGV4Y2VwdGlvbiBlcnJvci4K
KyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRp
b24gb2YgQGV4Y2VwdGlvbiBlcnJvci4KKyAqLworY2hhcioganNjX2V4Y2VwdGlvbl90b19zdHJp
bmcoSlNDRXhjZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwo
SlNDX0lTX0VYQ0VQVElPTihleGNlcHRpb24pLCBudWxscHRyKTsKKworICAgIEpTQ0V4Y2VwdGlv
blByaXZhdGUqIHByaXYgPSBleGNlcHRpb24tPnByaXY7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwocHJpdi0+Y29udGV4dCwgbnVsbHB0cik7CisKKyAgICBhdXRvIHZhbHVlID0ganNjQ29udGV4
dEdldE9yQ3JlYXRlVmFsdWUocHJpdi0+Y29udGV4dCwgdG9SZWYocHJpdi0+anNFeGNlcHRpb24u
Z2V0KCkpKTsKKyAgICByZXR1cm4ganNjX3ZhbHVlX3RvX3N0cmluZyh2YWx1ZS5nZXQoKSk7Cit9
CisKKy8qKgorICoganNjX2V4Y2VwdGlvbl9yZXBvcnQ6CisgKiBAZXhjZXB0aW9uOiBhICNKU0NF
eGNlcHRpb24KKyAqCisgKiBSZXR1cm4gYSByZXBvcnQgbWVzc2FnZSBvZiBAZXhjZXB0aW9uLCBj
b250YWluaW5nIGFsbCB0aGUgcG9zc2libGUgZGV0YWlscyBzdWNoIHVzCisgKiBzb3VyY2UgVVJJ
LCBsaW5lLCBjb2x1bW4gYW5kIGJhY2t0cmFjZSwgYW5kIGZvcm1hdHRlZCB0byBiZSBwcmludGVk
LgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgc3RyaW5nIHdpdGggdGhl
IGV4Y2VwdGlvbiByZXBvcnQKKyAqLworY2hhcioganNjX2V4Y2VwdGlvbl9yZXBvcnQoSlNDRXhj
ZXB0aW9uKiBleGNlcHRpb24pCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoSlNDX0lTX0VY
Q0VQVElPTihleGNlcHRpb24pLCBudWxscHRyKTsKKworICAgIEpTQ0V4Y2VwdGlvblByaXZhdGUq
IHByaXYgPSBleGNlcHRpb24tPnByaXY7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwocHJpdi0+
Y29udGV4dCwgbnVsbHB0cik7CisKKyAgICBqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKGV4
Y2VwdGlvbik7CisgICAgR1N0cmluZyogcmVwb3J0ID0gZ19zdHJpbmdfbmV3KG51bGxwdHIpOwor
ICAgIGlmIChwcml2LT5zb3VyY2VVUkkpCisgICAgICAgIHJlcG9ydCA9IGdfc3RyaW5nX2FwcGVu
ZChyZXBvcnQsIHByaXYtPnNvdXJjZVVSSS5nZXQoKSk7CisgICAgaWYgKHByaXYtPmxpbmVOdW1i
ZXIpCisgICAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYocmVwb3J0LCAiOiVkIiwgcHJpdi0+
bGluZU51bWJlcik7CisgICAgaWYgKHByaXYtPmNvbHVtbk51bWJlcikKKyAgICAgICAgZ19zdHJp
bmdfYXBwZW5kX3ByaW50ZihyZXBvcnQsICI6JWQiLCBwcml2LT5jb2x1bW5OdW1iZXIpOworICAg
IHJlcG9ydCA9IGdfc3RyaW5nX2FwcGVuZF9jKHJlcG9ydCwgJyAnKTsKKyAgICBHVW5pcXVlUHRy
PGNoYXI+IGVycm9yTWVzc2FnZShqc2NfZXhjZXB0aW9uX3RvX3N0cmluZyhleGNlcHRpb24pKTsK
KyAgICBpZiAoZXJyb3JNZXNzYWdlKQorICAgICAgICByZXBvcnQgPSBnX3N0cmluZ19hcHBlbmQo
cmVwb3J0LCBlcnJvck1lc3NhZ2UuZ2V0KCkpOworICAgIHJlcG9ydCA9IGdfc3RyaW5nX2FwcGVu
ZF9jKHJlcG9ydCwgJ1xuJyk7CisKKyAgICBpZiAocHJpdi0+YmFja3RyYWNlKSB7CisgICAgICAg
IEdVbmlxdWVQdHI8Y2hhcio+IGxpbmVzKGdfc3Ryc3BsaXQocHJpdi0+YmFja3RyYWNlLmdldCgp
LCAiXG4iLCAwKSk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGxpbmVzLmdldCgpW2ld
OyArK2kpCisgICAgICAgICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmKHJlcG9ydCwgIiAgJXNc
biIsIGxpbmVzLmdldCgpW2ldKTsKKyAgICB9CisKKyAgICByZXR1cm4gZ19zdHJpbmdfZnJlZShy
ZXBvcnQsIEZBTFNFKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NFeGNlcHRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NF
eGNlcHRpb24uaAppbmRleCAyYmVlNjA2NDU4Yi4uYjcxYjIwN2E5OTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NFeGNlcHRpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDRXhjZXB0aW9uLmgKQEAgLTU5LDIwICs1OSw0MCBA
QCBzdHJ1Y3QgX0pTQ0V4Y2VwdGlvbkNsYXNzIHsKIH07CiAKIEpTQ19BUEkgR1R5cGUKLWpzY19l
eGNlcHRpb25fZ2V0X3R5cGUgICAgICAgICh2b2lkKTsKK2pzY19leGNlcHRpb25fZ2V0X3R5cGUg
ICAgICAgICAgICAgICh2b2lkKTsKIAogSlNDX0FQSSBKU0NFeGNlcHRpb24gKgotanNjX2V4Y2Vw
dGlvbl9uZXcgICAgICAgICAgICAgKEpTQ0NvbnRleHQgICAqY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgKm1lc3NhZ2UpOworanNjX2V4Y2VwdGlv
bl9uZXcgICAgICAgICAgICAgICAgICAgKEpTQ0NvbnRleHQgICAqY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICAgKm1lc3NhZ2UpOworCitK
U0NfQVBJIEpTQ0V4Y2VwdGlvbiAqCitqc2NfZXhjZXB0aW9uX25ld193aXRoX25hbWUgICAgICAg
ICAoSlNDQ29udGV4dCAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGNoYXIgICAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBjaGFyICAgKm1lc3NhZ2UpOwogCiBKU0NfQVBJIGNvbnN0IGNoYXIgKgot
anNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZSAgICAgKEpTQ0V4Y2VwdGlvbiAqZXhjZXB0aW9uKTsK
K2pzY19leGNlcHRpb25fZ2V0X25hbWUgICAgICAgICAgICAgIChKU0NFeGNlcHRpb24gKmV4Y2Vw
dGlvbik7CisKK0pTQ19BUEkgY29uc3QgY2hhciAqCitqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdl
ICAgICAgICAgICAoSlNDRXhjZXB0aW9uICpleGNlcHRpb24pOworCitKU0NfQVBJIGd1aW50Citq
c2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlciAgICAgICAoSlNDRXhjZXB0aW9uICpleGNlcHRp
b24pOwogCiBKU0NfQVBJIGd1aW50Ci1qc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlciAoSlND
RXhjZXB0aW9uICpleGNlcHRpb24pOworanNjX2V4Y2VwdGlvbl9nZXRfY29sdW1uX251bWJlciAg
ICAgKEpTQ0V4Y2VwdGlvbiAqZXhjZXB0aW9uKTsKKworSlNDX0FQSSBjb25zdCBjaGFyICoKK2pz
Y19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkgICAgICAgIChKU0NFeGNlcHRpb24gKmV4Y2VwdGlv
bik7CiAKIEpTQ19BUEkgY29uc3QgY2hhciAqCi1qc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJp
ICAoSlNDRXhjZXB0aW9uICpleGNlcHRpb24pOworanNjX2V4Y2VwdGlvbl9nZXRfYmFja3RyYWNl
X3N0cmluZyAgKEpTQ0V4Y2VwdGlvbiAqZXhjZXB0aW9uKTsKKworSlNDX0FQSSBjaGFyICoKK2pz
Y19leGNlcHRpb25fdG9fc3RyaW5nICAgICAgICAgICAgIChKU0NFeGNlcHRpb24gKmV4Y2VwdGlv
bik7CisKK0pTQ19BUEkgY2hhciAqCitqc2NfZXhjZXB0aW9uX3JlcG9ydCAgICAgICAgICAgICAg
ICAoSlNDRXhjZXB0aW9uICpleGNlcHRpb24pOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvZG9jcy9qc2MtZ2xpYi00LjAtc2VjdGlv
bnMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL2RvY3MvanNjLWdsaWItNC4w
LXNlY3Rpb25zLnR4dAppbmRleCAzYzYxN2QxMmI2Mi4uZmRmZjFmNmNkYzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9kb2NzL2pzYy1nbGliLTQuMC1zZWN0aW9u
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL2RvY3MvanNjLWdsaWIt
NC4wLXNlY3Rpb25zLnR4dApAQCAtMzMsNiArMzMsNyBAQCBqc2NfY29udGV4dF9uZXdfd2l0aF92
aXJ0dWFsX21hY2hpbmUKIGpzY19jb250ZXh0X2dldF92aXJ0dWFsX21hY2hpbmUKIGpzY19jb250
ZXh0X2dldF9leGNlcHRpb24KIGpzY19jb250ZXh0X3Rocm93Citqc2NfY29udGV4dF90aHJvd193
aXRoX25hbWUKIGpzY19jb250ZXh0X3Rocm93X2V4Y2VwdGlvbgoganNjX2NvbnRleHRfY2xlYXJf
ZXhjZXB0aW9uCiBqc2NfY29udGV4dF9wdXNoX2V4Y2VwdGlvbl9oYW5kbGVyCkBAIC0xNTEsOSAr
MTUyLDE1IEBAIGpzY193ZWFrX3ZhbHVlX2dldF90eXBlCiA8VElUTEU+SlNDRXhjZXB0aW9uPC9U
SVRMRT4KIEpTQ0V4Y2VwdGlvbgoganNjX2V4Y2VwdGlvbl9uZXcKK2pzY19leGNlcHRpb25fbmV3
X3dpdGhfbmFtZQoranNjX2V4Y2VwdGlvbl9nZXRfbmFtZQoganNjX2V4Y2VwdGlvbl9nZXRfbWVz
c2FnZQoganNjX2V4Y2VwdGlvbl9nZXRfbGluZV9udW1iZXIKK2pzY19leGNlcHRpb25fZ2V0X2Nv
bHVtbl9udW1iZXIKIGpzY19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkKK2pzY19leGNlcHRpb25f
Z2V0X2JhY2t0cmFjZV9zdHJpbmcKK2pzY19leGNlcHRpb25fdG9fc3RyaW5nCitqc2NfZXhjZXB0
aW9uX3JlcG9ydAogCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEpTQ0V4Y2VwdGlvbkNsYXNzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiM2MzYjAxMTYyYS4uN2UxMDBmZTA5YzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA4LTE3ICBDYXJsb3Mg
R2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR0xJQl0gQ29t
cGxldGUgdGhlIEpTQ0V4Y2VwdGlvbiBBUEkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE4ODY5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIEFQSSB0byBKU0NFeGNlcHRpb246CisgICAgICAg
ICAtIE5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIGNvbHVtbiBudW1iZXIKKyAgICAgICAgIC0gTmV3
IGZ1bmN0aW9uIGdldCBleGNlcHRpb24gYXMgc3RyaW5nICh0b1N0cmluZygpKQorICAgICAgICAg
LSBBZGQgdGhlIHBvc3NpYmlsaXR5IHRvIGNyZWF0ZSBleGNlcHRpb25zIHdpdGggYSBjdXN0b20g
ZXJyb3IgbmFtZS4KKyAgICAgICAgIC0gTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgZXhjZXB0aW9u
IGVycm9yIG5hbWUKKyAgICAgICAgIC0gTmV3IGZ1bmN0aW9uIHRvIGdldCB0aGUgZXhjZXB0aW9u
IGJhY2t0cmFjZS4KKyAgICAgICAgIC0gTmV3IGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJlcG9y
dCBhIGV4Y2VwdGlvbiBieSByZXR1cm5pbmcgYSBmb3JtYXR0ZWQgc3RyaW5nIHdpdGggYWxsIHRo
ZSBleGNlcHRpb24KKyAgICAgICAgICAgZGV0YWlscywgdG8gYmUgc2hvd24gYXMgYSB1c2VyIGVy
cm9yIG1lc3NhZ2UuCisKKyAgICAgICAgKiBBUEkvZ2xpYi9KU0NDb250ZXh0LmNwcDoKKyAgICAg
ICAgKGpzY19jb250ZXh0X3Rocm93X3dpdGhfbmFtZSk6CisgICAgICAgICogQVBJL2dsaWIvSlND
Q29udGV4dC5oOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0V4Y2VwdGlvbi5jcHA6CisgICAgICAg
IChqc2NFeGNlcHRpb25FbnN1cmVQcm9wZXJ0aWVzKToKKyAgICAgICAgKGpzY19leGNlcHRpb25f
bmV3KToKKyAgICAgICAgKGpzY19leGNlcHRpb25fbmV3X3dpdGhfbmFtZSk6CisgICAgICAgIChq
c2NfZXhjZXB0aW9uX2dldF9uYW1lKToKKyAgICAgICAgKGpzY19leGNlcHRpb25fZ2V0X2NvbHVt
bl9udW1iZXIpOgorICAgICAgICAoanNjX2V4Y2VwdGlvbl9nZXRfYmFja190cmFjZV9zdHJpbmcp
OgorICAgICAgICAoanNjX2V4Y2VwdGlvbl90b19zdHJpbmcpOgorICAgICAgICAoanNjX2V4Y2Vw
dGlvbl9yZXBvcnQpOgorICAgICAgICAqIEFQSS9nbGliL0pTQ0V4Y2VwdGlvbi5oOgorICAgICAg
ICAqIEFQSS9nbGliL2RvY3MvanNjLWdsaWItNC4wLXNlY3Rpb25zLnR4dDoKKwogMjAxOC0wOC0x
NCAgWXVzdWtlIFN1enVraSAgPHl1c3VrZXN1enVraUBzbG93c3RhcnQub3JnPgogCiAgICAgICAg
IFtZQVJSXSBBbGlnbiBhbGxvY2F0aW9uIHNpemUgaW4gQnVtcFBvaW50ZXJBbGxvY2F0b3Igd2l0
aCBzaXplb2Yodm9pZCopCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFu
Z2VMb2cKaW5kZXggNWFjZTMzNDdiMGEuLjljMDJkMjI3MzEyIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTgtMDgt
MTcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHTElCXSBDb21wbGV0ZSB0aGUgSlNDRXhjZXB0aW9uIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg4Njk1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGNhc2VzIHRvIHRlc3QgdGhlIG5ldyBB
UEkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIv
VGVzdEpTQy5jcHA6CisgICAgICAgICh0ZXN0SlNDQ2hlY2tTeW50YXgpOgorICAgICAgICAoY3Jl
YXRlQ3VzdG9tRXJyb3IpOgorICAgICAgICAodGVzdEpTQ0V4Y2VwdGlvbnMpOgorCiAyMDE4LTA4
LTE2ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBbR1RLXSBNaW5pQnJvd3Nlcjogd2ViIHZpZXcgZG9lc24ndCBnZXQgdGhlIGZvY3VzIHdoZW4g
bmV3IHdpbmRvdyBpcyBjcmVhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL0phdmFTY3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKaW5kZXggNGFjYThlMjNlNzgu
Ljg4YWNhYzEzMzIwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL0phdmFT
Y3JpcHRDb3JlL2dsaWIvVGVzdEpTQy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9KYXZhU2NyaXB0Q29yZS9nbGliL1Rlc3RKU0MuY3BwCkBAIC03NzcsOSArNzc3LDExIEBAIHN0
YXRpYyB2b2lkIHRlc3RKU0NDaGVja1N5bnRheCgpCiAgICAgZ19hc3NlcnRfY21wdWludChqc2Nf
Y29udGV4dF9jaGVja19zeW50YXgoY29udGV4dC5nZXQoKSwgImYgPSA0MjsgYiA9IiwgLTEsIEpT
Q19DSEVDS19TWU5UQVhfTU9ERV9TQ1JJUFQsIG51bGxwdHIsIDAsICZleGNlcHRpb24ub3V0UHRy
KCkpLCA9PSwgSlNDX0NIRUNLX1NZTlRBWF9SRVNVTFRfUkVDT1ZFUkFCTEVfRVJST1IpOwogICAg
IGNoZWNrZXIud2F0Y2goZXhjZXB0aW9uLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVlKEpTQ19J
U19FWENFUFRJT04oZXhjZXB0aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21wc3RyKGpzY19l
eGNlcHRpb25fZ2V0X25hbWUoZXhjZXB0aW9uLmdldCgpKSwgPT0sICJTeW50YXhFcnJvciIpOwog
ICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlKGV4Y2VwdGlvbi5n
ZXQoKSksID09LCAiVW5leHBlY3RlZCBlbmQgb2Ygc2NyaXB0Iik7CiAgICAgZ19hc3NlcnRfY21w
dWludChqc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJlcihleGNlcHRpb24uZ2V0KCkpLCA9PSwg
MSk7Ci0gICAgZ19hc3NlcnRfZmFsc2UoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaShleGNl
cHRpb24uZ2V0KCkpKTsKKyAgICBnX2Fzc2VydF9udWxsKGpzY19leGNlcHRpb25fZ2V0X3NvdXJj
ZV91cmkoZXhjZXB0aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfbnVsbChqc2NfZXhjZXB0aW9u
X2dldF9iYWNrdHJhY2Vfc3RyaW5nKGV4Y2VwdGlvbi5nZXQoKSkpOwogICAgIEdSZWZQdHI8SlND
VmFsdWU+IGdsb2JhbE9iamVjdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9nZXRfZ2xvYmFsX29i
amVjdChjb250ZXh0LmdldCgpKSk7CiAgICAgY2hlY2tlci53YXRjaChnbG9iYWxPYmplY3QuZ2V0
KCkpOwogICAgIGdfYXNzZXJ0X2ZhbHNlKGpzY192YWx1ZV9vYmplY3RfaGFzX3Byb3BlcnR5KGds
b2JhbE9iamVjdC5nZXQoKSwgImYiKSk7CkBAIC03OTgsOCArODAwLDggQEAgc3RhdGljIHZvaWQg
dGVzdEpTQ0NoZWNrU3ludGF4KCkKICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19jb250ZXh0X2No
ZWNrX3N5bnRheChjb250ZXh0LmdldCgpLCAiZiA9PT09IDQyIiwgLTEsIEpTQ19DSEVDS19TWU5U
QVhfTU9ERV9TQ1JJUFQsICJmaWxlOi8vL2Zvby9zY3JpcHQuanMiLCAyLCAmZXhjZXB0aW9uLm91
dFB0cigpKSwgPT0sIEpTQ19DSEVDS19TWU5UQVhfUkVTVUxUX0lSUkVDT1ZFUkFCTEVfRVJST1Ip
OwogICAgIGNoZWNrZXIud2F0Y2goZXhjZXB0aW9uLmdldCgpKTsKICAgICBnX2Fzc2VydF90cnVl
KEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uLmdldCgpKSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KGpzY19leGNlcHRpb25fZ2V0X25hbWUoZXhjZXB0aW9uLmdldCgpKSwgPT0sICJTeW50YXhFcnJv
ciIpOwogICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlKGV4Y2Vw
dGlvbi5nZXQoKSksID09LCAiVW5leHBlY3RlZCB0b2tlbiAnPSciKTsKLSAgICBnX2Fzc2VydF9j
bXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2xpbmVfbnVtYmVyKGV4Y2VwdGlvbi5nZXQoKSksID09
LCAyKTsKICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfc291cmNlX3VyaShl
eGNlcHRpb24uZ2V0KCkpLCA9PSwgImZpbGU6Ly8vZm9vL3NjcmlwdC5qcyIpOwogCiAgICAgZ19h
c3NlcnRfY21wdWludChqc2NfY29udGV4dF9jaGVja19zeW50YXgoY29udGV4dC5nZXQoKSwgImYg
Oj0gNDIiLCAtMSwgSlNDX0NIRUNLX1NZTlRBWF9NT0RFX1NDUklQVCwgbnVsbHB0ciwgMCwgbnVs
bHB0ciksID09LCBKU0NfQ0hFQ0tfU1lOVEFYX1JFU1VMVF9JUlJFQ09WRVJBQkxFX0VSUk9SKTsK
QEAgLTI0ODgsNiArMjQ5MCwxMSBAQCBzdGF0aWMgdm9pZCBjcmVhdGVFcnJvcigpCiAgICAganNj
X2NvbnRleHRfdGhyb3coanNjX2NvbnRleHRfZ2V0X2N1cnJlbnQoKSwgIkFQSSBleGNlcHRpb24i
KTsKIH0KIAorc3RhdGljIHZvaWQgY3JlYXRlQ3VzdG9tRXJyb3IoKQoreworICAgIGpzY19jb250
ZXh0X3Rocm93X3dpdGhfbmFtZShqc2NfY29udGV4dF9nZXRfY3VycmVudCgpLCAiQ3VzdG9tQVBJ
RXJyb3IiLCAiQVBJIGN1c3RvbSBleGNlcHRpb24iKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdEpT
Q0V4Y2VwdGlvbnMoKQogewogICAgIHsKQEAgLTI1MDMsOSArMjUxMCwxNiBAQCBzdGF0aWMgdm9p
ZCB0ZXN0SlNDRXhjZXB0aW9ucygpCiAgICAgICAgIGF1dG8qIGV4Y2VwdGlvbiA9IGpzY19jb250
ZXh0X2dldF9leGNlcHRpb24oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X3RydWUo
SlNDX0lTX0VYQ0VQVElPTihleGNlcHRpb24pKTsKICAgICAgICAgY2hlY2tlci53YXRjaChleGNl
cHRpb24pOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfbmFtZShl
eGNlcHRpb24pLCA9PSwgIlJlZmVyZW5jZUVycm9yIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0
cihqc2NfZXhjZXB0aW9uX2dldF9tZXNzYWdlKGV4Y2VwdGlvbiksID09LCAiQ2FuJ3QgZmluZCB2
YXJpYWJsZTogZm9vIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9n
ZXRfbGluZV9udW1iZXIoZXhjZXB0aW9uKSwgPT0sIDEpOwotICAgICAgICBnX2Fzc2VydF9mYWxz
ZShqc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJpKGV4Y2VwdGlvbikpOworICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2NvbHVtbl9udW1iZXIoZXhjZXB0aW9uKSwg
PT0sIDQpOworICAgICAgICBnX2Fzc2VydF9udWxsKGpzY19leGNlcHRpb25fZ2V0X3NvdXJjZV91
cmkoZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dl
dF9iYWNrdHJhY2Vfc3RyaW5nKGV4Y2VwdGlvbiksID09LCAiZ2xvYmFsIGNvZGUiKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiBlcnJvclN0cmluZyhqc2NfZXhjZXB0aW9uX3RvX3N0cmluZyhl
eGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGVycm9yU3RyaW5nLmdldCgpLCA9
PSwgIlJlZmVyZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28iKTsKKyAgICAgICAg
R1VuaXF1ZVB0cjxjaGFyPiByZXBvcnRTdHJpbmcoanNjX2V4Y2VwdGlvbl9yZXBvcnQoZXhjZXB0
aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihyZXBvcnRTdHJpbmcuZ2V0KCksID09LCAi
OjE6NCBSZWZlcmVuY2VFcnJvcjogQ2FuJ3QgZmluZCB2YXJpYWJsZTogZm9vXG4gIGdsb2JhbCBj
b2RlXG4iKTsKIAogICAgICAgICBqc2NfY29udGV4dF9jbGVhcl9leGNlcHRpb24oY29udGV4dC5n
ZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X251bGwoanNjX2NvbnRleHRfZ2V0X2V4Y2VwdGlvbihj
b250ZXh0LmdldCgpKSk7CkBAIC0yNTI1LDYgKzI1MzksNyBAQCBzdGF0aWMgdm9pZCB0ZXN0SlND
RXhjZXB0aW9ucygpCiAgICAgICAgIGdfYXNzZXJ0X3RydWUoSlNDX0lTX0VYQ0VQVElPTihleGNl
cHRpb24pKTsKICAgICAgICAgY2hlY2tlci53YXRjaChleGNlcHRpb24pOwogICAgICAgICBnX2Fz
c2VydF9jbXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2xpbmVfbnVtYmVyKGV4Y2VwdGlvbiksID09
LCAyKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5f
bnVtYmVyKGV4Y2VwdGlvbiksID09LCA0KTsKIAogICAgICAgICBqc2NfY29udGV4dF9jbGVhcl9l
eGNlcHRpb24oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X251bGwoanNjX2NvbnRl
eHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CkBAIC0yNTM2LDE1ICsyNTUxLDM0IEBA
IHN0YXRpYyB2b2lkIHRlc3RKU0NFeGNlcHRpb25zKCkKICAgICAgICAgY2hlY2tlci53YXRjaChj
b250ZXh0LmdldCgpKTsKICAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX2NvbnRleHRfZ2V0X2V4
Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CiAKLSAgICAgICAgR1JlZlB0cjxKU0NWYWx1ZT4gcmVz
dWx0ID0gYWRvcHRHUmVmKGpzY19jb250ZXh0X2V2YWx1YXRlX3dpdGhfc291cmNlX3VyaShjb250
ZXh0LmdldCgpLCAiZm9vIiwgLTEsICJmaWxlOi8vL2Zvby9zY3JpcHQuanMiLCAzKSk7CisgICAg
ICAgIEdSZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFs
dWF0ZV93aXRoX3NvdXJjZV91cmkoY29udGV4dC5nZXQoKSwKKyAgICAgICAgICAgICJsZXQgYSA9
IDI1O1xuIgorICAgICAgICAgICAgImZ1bmN0aW9uIGZvbygpIHtcbiIKKyAgICAgICAgICAgICIg
ICAgbGV0IGIgPSBiYXooKTtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIGI7XG4iCisgICAg
ICAgICAgICAifVxuIgorICAgICAgICAgICAgImZ1bmN0aW9uIGJhcigpIHtcbiIKKyAgICAgICAg
ICAgICIgICAgbGV0IGMgPSA3NTtcbiIKKyAgICAgICAgICAgICIgICAgcmV0dXJuIGZvbygpO1xu
IgorICAgICAgICAgICAgIn1cbiIKKyAgICAgICAgICAgICJsZXQgZCA9IGJhcigpO1xuIiwKKyAg
ICAgICAgICAgIC0xLCAiZmlsZTovLy9mb28vc2NyaXB0LmpzIiwgMSkpOwogICAgICAgICBjaGVj
a2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CiAKICAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFs
dWVfaXNfdW5kZWZpbmVkKHJlc3VsdC5nZXQoKSkpOwogICAgICAgICBhdXRvKiBleGNlcHRpb24g
PSBqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fz
c2VydF90cnVlKEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uKSk7CiAgICAgICAgIGNoZWNrZXIu
d2F0Y2goZXhjZXB0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25f
Z2V0X25hbWUoZXhjZXB0aW9uKSwgPT0sICJSZWZlcmVuY2VFcnJvciIpOworICAgICAgICBnX2Fz
c2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZShleGNlcHRpb24pLCA9PSwgIkNh
bid0IGZpbmQgdmFyaWFibGU6IGJheiIpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4
Y2VwdGlvbl9nZXRfc291cmNlX3VyaShleGNlcHRpb24pLCA9PSwgImZpbGU6Ly8vZm9vL3Njcmlw
dC5qcyIpOwogICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19leGNlcHRpb25fZ2V0X2xpbmVf
bnVtYmVyKGV4Y2VwdGlvbiksID09LCAzKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2Nf
ZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVyKGV4Y2VwdGlvbiksID09LCAxNik7CisgICAgICAg
IGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9iYWNrdHJhY2Vfc3RyaW5nKGV4Y2Vw
dGlvbiksID09LCAiZm9vQGZpbGU6Ly8vZm9vL3NjcmlwdC5qczozOjE2XG5iYXJAZmlsZTovLy9m
b28vc2NyaXB0LmpzOjg6MTVcbmdsb2JhbCBjb2RlQGZpbGU6Ly8vZm9vL3NjcmlwdC5qczoxMDox
MiIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IGVycm9yU3RyaW5nKGpzY19leGNlcHRpb25f
dG9fc3RyaW5nKGV4Y2VwdGlvbikpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoZXJyb3JTdHJp
bmcuZ2V0KCksID09LCAiUmVmZXJlbmNlRXJyb3I6IENhbid0IGZpbmQgdmFyaWFibGU6IGJheiIp
OworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2NfZXhjZXB0aW9uX3Jl
cG9ydChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJlcG9ydFN0cmluZy5n
ZXQoKSwgPT0sICJmaWxlOi8vL2Zvby9zY3JpcHQuanM6MzoxNiBSZWZlcmVuY2VFcnJvcjogQ2Fu
J3QgZmluZCB2YXJpYWJsZTogYmF6XG4gIGZvb0BmaWxlOi8vL2Zvby9zY3JpcHQuanM6MzoxNlxu
ICBiYXJAZmlsZTovLy9mb28vc2NyaXB0LmpzOjg6MTVcbiAgZ2xvYmFsIGNvZGVAZmlsZTovLy9m
b28vc2NyaXB0LmpzOjEwOjEyXG4iKTsKIAogICAgICAgICBqc2NfY29udGV4dF9jbGVhcl9leGNl
cHRpb24oY29udGV4dC5nZXQoKSk7CiAgICAgICAgIGdfYXNzZXJ0X251bGwoanNjX2NvbnRleHRf
Z2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CkBAIC0yNTczLDkgKzI2MDcsNzEgQEAgc3Rh
dGljIHZvaWQgdGVzdEpTQ0V4Y2VwdGlvbnMoKQogICAgICAgICBhdXRvKiBleGNlcHRpb24gPSBq
c2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fzc2Vy
dF90cnVlKEpTQ19JU19FWENFUFRJT04oZXhjZXB0aW9uKSk7CiAgICAgICAgIGNoZWNrZXIud2F0
Y2goZXhjZXB0aW9uKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0
X25hbWUoZXhjZXB0aW9uKSwgPT0sICJFcnJvciIpOwogICAgICAgICBnX2Fzc2VydF9jbXBzdHIo
anNjX2V4Y2VwdGlvbl9nZXRfbWVzc2FnZShleGNlcHRpb24pLCA9PSwgIkFQSSBleGNlcHRpb24i
KTsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9saW5lX251bWJl
cihleGNlcHRpb24pLCA9PSwgMSk7Ci0gICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGpzY19leGNlcHRp
b25fZ2V0X3NvdXJjZV91cmkoZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQo
anNjX2V4Y2VwdGlvbl9nZXRfY29sdW1uX251bWJlcihleGNlcHRpb24pLCA9PSwgMjQpOworICAg
ICAgICBnX2Fzc2VydF9udWxsKGpzY19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkoZXhjZXB0aW9u
KSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9iYWNrdHJhY2Vf
c3RyaW5nKGV4Y2VwdGlvbiksID09LCAiY3JlYXRlRXJyb3JAW25hdGl2ZSBjb2RlXVxuZ2xvYmFs
IGNvZGUiKTsKKyAgICAgICAgR1VuaXF1ZVB0cjxjaGFyPiBlcnJvclN0cmluZyhqc2NfZXhjZXB0
aW9uX3RvX3N0cmluZyhleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGVycm9y
U3RyaW5nLmdldCgpLCA9PSwgIkVycm9yOiBBUEkgZXhjZXB0aW9uIik7CisgICAgICAgIEdVbmlx
dWVQdHI8Y2hhcj4gcmVwb3J0U3RyaW5nKGpzY19leGNlcHRpb25fcmVwb3J0KGV4Y2VwdGlvbikp
OworICAgICAgICBnX2Fzc2VydF9jbXBzdHIocmVwb3J0U3RyaW5nLmdldCgpLCA9PSwgIjoxOjI0
IEVycm9yOiBBUEkgZXhjZXB0aW9uXG4gIGNyZWF0ZUVycm9yQFtuYXRpdmUgY29kZV1cbiAgZ2xv
YmFsIGNvZGVcbiIpOworCisgICAgICAgIGpzY19jb250ZXh0X2NsZWFyX2V4Y2VwdGlvbihjb250
ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfbnVsbChqc2NfY29udGV4dF9nZXRfZXhjZXB0
aW9uKGNvbnRleHQuZ2V0KCkpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIExlYWtDaGVja2Vy
IGNoZWNrZXI7CisgICAgICAgIEdSZWZQdHI8SlNDQ29udGV4dD4gY29udGV4dCA9IGFkb3B0R1Jl
Zihqc2NfY29udGV4dF9uZXcoKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goY29udGV4dC5nZXQo
KSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNlKGpzY19jb250ZXh0X2dldF9leGNlcHRpb24oY29u
dGV4dC5nZXQoKSkpOworCisgICAgICAgIEdSZWZQdHI8SlNDVmFsdWU+IGZ1bmN0aW9uID0gYWRv
cHRHUmVmKGpzY192YWx1ZV9uZXdfZnVuY3Rpb24oY29udGV4dC5nZXQoKSwgImNyZWF0ZUN1c3Rv
bUVycm9yIiwgR19DQUxMQkFDSyhjcmVhdGVDdXN0b21FcnJvciksIG51bGxwdHIsIG51bGxwdHIs
IEdfVFlQRV9OT05FLCAwLCBHX1RZUEVfTk9ORSkpOworICAgICAgICBjaGVja2VyLndhdGNoKGZ1
bmN0aW9uLmdldCgpKTsKKyAgICAgICAganNjX2NvbnRleHRfc2V0X3ZhbHVlKGNvbnRleHQuZ2V0
KCksICJjcmVhdGVDdXN0b21FcnJvciIsIGZ1bmN0aW9uLmdldCgpKTsKKworICAgICAgICBHUmVm
UHRyPEpTQ1ZhbHVlPiByZXN1bHQgPSBhZG9wdEdSZWYoanNjX2NvbnRleHRfZXZhbHVhdGUoY29u
dGV4dC5nZXQoKSwgInZhciByZXN1bHQ7IGNyZWF0ZUN1c3RvbUVycm9yKCk7IHJlc3VsdCA9ICdO
byBleGNlcHRpb24nOyIsIC0xKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2gocmVzdWx0LmdldCgp
KTsKKyAgICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHJlc3VsdC5n
ZXQoKSkpOworICAgICAgICBhdXRvKiBleGNlcHRpb24gPSBqc2NfY29udGV4dF9nZXRfZXhjZXB0
aW9uKGNvbnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19FWENFUFRJ
T04oZXhjZXB0aW9uKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goZXhjZXB0aW9uKTsKKyAgICAg
ICAgZ19hc3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X25hbWUoZXhjZXB0aW9uKSwgPT0s
ICJDdXN0b21BUElFcnJvciIpOworICAgICAgICBnX2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlv
bl9nZXRfbWVzc2FnZShleGNlcHRpb24pLCA9PSwgIkFQSSBjdXN0b20gZXhjZXB0aW9uIik7Cisg
ICAgICAgIGdfYXNzZXJ0X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9nZXRfbGluZV9udW1iZXIoZXhj
ZXB0aW9uKSwgPT0sIDEpOworICAgICAgICBnX2Fzc2VydF9jbXB1aW50KGpzY19leGNlcHRpb25f
Z2V0X2NvbHVtbl9udW1iZXIoZXhjZXB0aW9uKSwgPT0sIDMwKTsKKyAgICAgICAgZ19hc3NlcnRf
bnVsbChqc2NfZXhjZXB0aW9uX2dldF9zb3VyY2VfdXJpKGV4Y2VwdGlvbikpOworICAgICAgICBn
X2Fzc2VydF9jbXBzdHIoanNjX2V4Y2VwdGlvbl9nZXRfYmFja3RyYWNlX3N0cmluZyhleGNlcHRp
b24pLCA9PSwgImNyZWF0ZUN1c3RvbUVycm9yQFtuYXRpdmUgY29kZV1cbmdsb2JhbCBjb2RlIik7
CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4gZXJyb3JTdHJpbmcoanNjX2V4Y2VwdGlvbl90b19z
dHJpbmcoZXhjZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihlcnJvclN0cmluZy5n
ZXQoKSwgPT0sICJDdXN0b21BUElFcnJvcjogQVBJIGN1c3RvbSBleGNlcHRpb24iKTsKKyAgICAg
ICAgR1VuaXF1ZVB0cjxjaGFyPiByZXBvcnRTdHJpbmcoanNjX2V4Y2VwdGlvbl9yZXBvcnQoZXhj
ZXB0aW9uKSk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihyZXBvcnRTdHJpbmcuZ2V0KCksID09
LCAiOjE6MzAgQ3VzdG9tQVBJRXJyb3I6IEFQSSBjdXN0b20gZXhjZXB0aW9uXG4gIGNyZWF0ZUN1
c3RvbUVycm9yQFtuYXRpdmUgY29kZV1cbiAgZ2xvYmFsIGNvZGVcbiIpOworCisgICAgICAgIGpz
Y19jb250ZXh0X2NsZWFyX2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKTsKKyAgICAgICAgZ19hc3Nl
cnRfbnVsbChqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNvbnRleHQuZ2V0KCkpKTsKKyAgICB9
CisKKyAgICB7CisgICAgICAgIExlYWtDaGVja2VyIGNoZWNrZXI7CisgICAgICAgIEdSZWZQdHI8
SlNDQ29udGV4dD4gY29udGV4dCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9uZXcoKSk7CisgICAg
ICAgIGNoZWNrZXIud2F0Y2goY29udGV4dC5nZXQoKSk7CisgICAgICAgIGdfYXNzZXJ0X2ZhbHNl
KGpzY19jb250ZXh0X2dldF9leGNlcHRpb24oY29udGV4dC5nZXQoKSkpOworCisgICAgICAgIEdS
ZWZQdHI8SlNDVmFsdWU+IHJlc3VsdCA9IGFkb3B0R1JlZihqc2NfY29udGV4dF9ldmFsdWF0ZV93
aXRoX3NvdXJjZV91cmkoY29udGV4dC5nZXQoKSwgImZvbyIsIC0xLCAiZmlsZTovLy9mb28vc2Ny
aXB0LmpzIiwgMykpOworICAgICAgICBjaGVja2VyLndhdGNoKHJlc3VsdC5nZXQoKSk7CisKKyAg
ICAgICAgZ19hc3NlcnRfdHJ1ZShqc2NfdmFsdWVfaXNfdW5kZWZpbmVkKHJlc3VsdC5nZXQoKSkp
OworICAgICAgICBhdXRvKiBleGNlcHRpb24gPSBqc2NfY29udGV4dF9nZXRfZXhjZXB0aW9uKGNv
bnRleHQuZ2V0KCkpOworICAgICAgICBnX2Fzc2VydF90cnVlKEpTQ19JU19FWENFUFRJT04oZXhj
ZXB0aW9uKSk7CisgICAgICAgIGNoZWNrZXIud2F0Y2goZXhjZXB0aW9uKTsKKyAgICAgICAgZ19h
c3NlcnRfY21wc3RyKGpzY19leGNlcHRpb25fZ2V0X3NvdXJjZV91cmkoZXhjZXB0aW9uKSwgPT0s
ICJmaWxlOi8vL2Zvby9zY3JpcHQuanMiKTsKKyAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2Nf
ZXhjZXB0aW9uX2dldF9saW5lX251bWJlcihleGNlcHRpb24pLCA9PSwgMyk7CisgICAgICAgIGdf
YXNzZXJ0X2NtcHVpbnQoanNjX2V4Y2VwdGlvbl9nZXRfY29sdW1uX251bWJlcihleGNlcHRpb24p
LCA9PSwgNCk7CisgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9iYWNr
dHJhY2Vfc3RyaW5nKGV4Y2VwdGlvbiksID09LCAiZ2xvYmFsIGNvZGVAZmlsZTovLy9mb28vc2Ny
aXB0LmpzOjM6NCIpOworICAgICAgICBHVW5pcXVlUHRyPGNoYXI+IHJlcG9ydFN0cmluZyhqc2Nf
ZXhjZXB0aW9uX3JlcG9ydChleGNlcHRpb24pKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKHJl
cG9ydFN0cmluZy5nZXQoKSwgPT0sICJmaWxlOi8vL2Zvby9zY3JpcHQuanM6Mzo0IFJlZmVyZW5j
ZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb29cbiAgZ2xvYmFsIGNvZGVAZmlsZTovLy9m
b28vc2NyaXB0LmpzOjM6NFxuIik7CiAKICAgICAgICAganNjX2NvbnRleHRfY2xlYXJfZXhjZXB0
aW9uKGNvbnRleHQuZ2V0KCkpOwogICAgICAgICBnX2Fzc2VydF9udWxsKGpzY19jb250ZXh0X2dl
dF9leGNlcHRpb24oY29udGV4dC5nZXQoKSkpOwpAQCAtMjYxMCw5ICsyNzA2LDEzIEBAIHN0YXRp
YyB2b2lkIHRlc3RKU0NFeGNlcHRpb25zKCkKICAgICAgICAgZ19hc3NlcnRfZmFsc2UoanNjX2Nv
bnRleHRfZ2V0X2V4Y2VwdGlvbihjb250ZXh0LmdldCgpKSk7CiAgICAgICAgIGdfYXNzZXJ0X3Ry
dWUoSlNDX0lTX0VYQ0VQVElPTih0ZXN0LmV4Y2VwdGlvbi5nZXQoKSkpOwogICAgICAgICBjaGVj
a2VyLndhdGNoKHRlc3QuZXhjZXB0aW9uLmdldCgpKTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3Ry
KGpzY19leGNlcHRpb25fZ2V0X25hbWUodGVzdC5leGNlcHRpb24uZ2V0KCkpLCA9PSwgIlJlZmVy
ZW5jZUVycm9yIik7CiAgICAgICAgIGdfYXNzZXJ0X2NtcHN0cihqc2NfZXhjZXB0aW9uX2dldF9t
ZXNzYWdlKHRlc3QuZXhjZXB0aW9uLmdldCgpKSwgPT0sICJDYW4ndCBmaW5kIHZhcmlhYmxlOiBm
b28iKTsKICAgICAgICAgZ19hc3NlcnRfY21wdWludChqc2NfZXhjZXB0aW9uX2dldF9saW5lX251
bWJlcih0ZXN0LmV4Y2VwdGlvbi5nZXQoKSksID09LCAxKTsKKyAgICAgICAgZ19hc3NlcnRfY21w
dWludChqc2NfZXhjZXB0aW9uX2dldF9jb2x1bW5fbnVtYmVyKHRlc3QuZXhjZXB0aW9uLmdldCgp
KSwgPT0sIDQpOwogICAgICAgICBnX2Fzc2VydF9mYWxzZShqc2NfZXhjZXB0aW9uX2dldF9zb3Vy
Y2VfdXJpKHRlc3QuZXhjZXB0aW9uLmdldCgpKSk7CisgICAgICAgIEdVbmlxdWVQdHI8Y2hhcj4g
ZXJyb3JTdHJpbmcoanNjX2V4Y2VwdGlvbl90b19zdHJpbmcodGVzdC5leGNlcHRpb24uZ2V0KCkp
KTsKKyAgICAgICAgZ19hc3NlcnRfY21wc3RyKGVycm9yU3RyaW5nLmdldCgpLCA9PSwgIlJlZmVy
ZW5jZUVycm9yOiBDYW4ndCBmaW5kIHZhcmlhYmxlOiBmb28iKTsKIAogICAgICAgICBnX2Fzc2Vy
dF9mYWxzZSh0ZXN0Lndhc0RlbGV0ZWQpOwogICAgICAgICBqc2NfY29udGV4dF9wb3BfZXhjZXB0
aW9uX2hhbmRsZXIoY29udGV4dC5nZXQoKSk7Cg==
</data>
<flag name="review"
          id="365156"
          type_id="1"
          status="+"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>