<?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>159087</bug_id>
          
          <creation_ts>2016-06-24 04:51:38 -0700</creation_ts>
          <short_desc>Binding generator should generate safe accessors for constructors used in JS builtin code</short_desc>
          <delta_ts>2016-06-28 00:05:22 -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>WebCore Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>adam.bergkvist</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1205056</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-24 04:51:38 -0700</bug_when>
    <thetext>ReadableStrem as well as RTC codes is using JS built-in.
It is often useful to have a safe access to constructors (@ReadableStream for instance).
Binding generator should be able to handle that using PrivateIdentifier/PublicIdentifier keywords.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205057</commentid>
    <comment_count>1</comment_count>
      <attachid>281969</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-24 05:08:05 -0700</bug_when>
    <thetext>Created attachment 281969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205058</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-24 05:10:01 -0700</bug_when>
    <thetext>With this patch, it also becomes a bit easier to do type checks in JS-builtins like:
if(arg1 instanceof @MyClass)
   @throw...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205301</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-24 18:10:47 -0700</bug_when>
    <thetext>Could you add a bindings test that shows the new behavior of the bindings generator?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205354</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-25 02:33:10 -0700</bug_when>
    <thetext>This feature would be very useful. Thanks Youenn.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205355</commentid>
    <comment_count>5</comment_count>
      <attachid>281969</attachid>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-25 02:37:01 -0700</bug_when>
    <thetext>Comment on attachment 281969
Patch

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

&gt; Source/WebCore/Modules/mediastream/MediaStream.idl:32
&gt; +    PublicIdentifier

Is it obvious that these extended attributes are referring to the constructor? Would it be more descriptive to use &apos;PrivateConstructorIdentifier&apos; and &apos;PublicConstructorIdentifier&apos;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205361</commentid>
    <comment_count>6</comment_count>
      <attachid>282072</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-25 06:54:40 -0700</bug_when>
    <thetext>Created attachment 282072
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205362</commentid>
    <comment_count>7</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-25 07:00:59 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Could you add a bindings test that shows the new behavior of the bindings
&gt; generator?

I added a binding test for global object attribute.
This does not fully test these attributes on constructors though.
Maybe run-binding-tests should be beefed up and support that as well.

&gt; &gt; Source/WebCore/Modules/mediastream/MediaStream.idl:32
&gt; &gt; +    PublicIdentifier
&gt; 
&gt; Is it obvious that these extended attributes are referring to the
&gt; constructor? Would it be more descriptive to use
&gt; &apos;PrivateConstructorIdentifier&apos; and &apos;PublicConstructorIdentifier&apos;?

I am not opposed to that although I did not do it in the uploaded patch.
Doing so would require to convert PrivateConstructorIdentifier into PrivateIdentifier when adding attributes to the global object for each defined constructor in Source/WebCore/bindings/scripts/preprocess-idls.pl script.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205602</commentid>
    <comment_count>8</comment_count>
    <who name="Adam Bergkvist">adam.bergkvist</who>
    <bug_when>2016-06-27 10:46:26 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Is it obvious that these extended attributes are referring to the
&gt; &gt; constructor? Would it be more descriptive to use
&gt; &gt; &apos;PrivateConstructorIdentifier&apos; and &apos;PublicConstructorIdentifier&apos;?
&gt; 
&gt; I am not opposed to that although I did not do it in the uploaded patch.
&gt; Doing so would require to convert PrivateConstructorIdentifier into
&gt; PrivateIdentifier when adding attributes to the global object for each
&gt; defined constructor in Source/WebCore/bindings/scripts/preprocess-idls.pl
&gt; script.

I think it works as is as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205894</commentid>
    <comment_count>9</comment_count>
      <attachid>282072</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-27 23:33:13 -0700</bug_when>
    <thetext>Comment on attachment 282072
Patch

Sure.  We can change the names later if we&apos;re unhappy with them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205917</commentid>
    <comment_count>10</comment_count>
      <attachid>282072</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 00:05:15 -0700</bug_when>
    <thetext>Comment on attachment 282072
Patch

Clearing flags on attachment: 282072

Committed r202551: &lt;http://trac.webkit.org/changeset/202551&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1205918</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-28 00:05:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>281969</attachid>
            <date>2016-06-24 05:08:05 -0700</date>
            <delta_ts>2016-06-25 06:54:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159087-20160624140753.patch</filename>
            <type>text/plain</type>
            <size>10308</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFiMmFhMjFmZjdiM2Jm
Y2U1NWYzOTkxNTE5OGM5NjRlOTg4YjQxNS4uZmUzYzIxZjQ0NjBmM2EzZjA4ZDE5MzkxYzJmMTM0
MzU0MDBiZjQ0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE2LTA2LTI0ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCaW5kaW5nIGdlbmVyYXRv
ciBzaG91bGQgZ2VuZXJhdGUgYWNjZXNzb3JzIGZvciBjb25zdHJ1Y3RvcnMgc2FmZWx5IGFjY2Vz
c2VkIGZyb20gSlMgYnVpbHRpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlZCBjb25zdHJ1Y3RvciBwcml2YXRlIHNsb3RzIGRpcmVjdCBhZGRp
dGlvbnMgaW4gSlNET01HbG9iYWxPYmplY3QuCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGdl
bmVyYXRpbmcgdGhlIGNvZGUgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgICAgIEFkdmFudGFnZSBv
ZiB0aGUgaW1wbGVtZW50YXRpb246CisgICAgICAgIC0gUHJpdmF0ZSBzbG90cyB3aWxsIGV4cG9z
ZSBjb25zdHJ1Y3RvcnMgdGhhdCBhcmUgYWxzbyBwdWJsaWNhbGx5IHZpc2libGUgKHByZXZpb3Vz
bHkgd29ya2VycyBoYWQgc29tZSBwcml2YXRlIHNsb3RzIGZpbGxlZCB3aXRoIFdlYlJUQyBjb25z
dHJ1Y3RvcnMpLgorICAgICAgICAtIFByaXZhdGUgc2xvdHMgbm8gbG9uZ2VyIHJlcXVpcmUgdGhl
IGNyZWF0aW9uIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYXQgd2luZG93IGNyZWF0aW9uIHRpbWUuCisK
KyAgICAgICAgQWx0aG91Z2ggUHVibGljSWRlbnRpZmllciBhbmQgUHJpdmF0ZUlkZW50aWZpZXIg
YXJlIGJvdGggYWRkZWQgd2hlcmUgbmVlZGVkLCB0aGUgYmluZGluZyBnZW5lcmF0b3IgZG9lcyBu
b3QKKyAgICAgICAgc3VwcG9ydCB0aGUgY2FzZSBvZiBhIGNvbnN0cnVjdG9yIGFjY2Vzc2libGUg
b25seSBwcml2YXRlbHkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0IHNldC4K
KworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsOiBNYXJrZWQg
YXMgUHVibGljSWRlbnRpZmllci9Qcml2YXRlSWRlbnRpZmllci4KKyAgICAgICAgKiBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsOiBEaXR0by4KKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5pZGw6IERpdHRvLgorICAgICAgICAqIE1v
ZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbDogRGl0dG8uCisgICAg
ICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFtLmlkbDogRGl0dG8uCisgICAgICAg
ICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9iYWxzKTogUmVtb3ZlZCB1bm5lZWRlZCBh
ZGRpdGlvbnMuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06
CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKTogQWRkZWQgc3VwcG9ydCBmb3IgcHJp
dmF0ZSBzbG90cyBmb3IgaW50ZXJmYWNlIGNvbnN0cnVjdG9ycyBtYXJrZWQgYXMKKyAgICAgICAg
UHJpdmF0ZUlkZW50aWZpZXIuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNz
LWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9yQXR0cmlidXRlKTogTWFrZSBQ
dWJsaWNJZGVudGlmaWVyL1ByaXZhdGVJZGVudGlmaWVyIGNvcGllZCBpbnRlcmZhY2UgYXR0cmli
dXRlcy4KKwogMjAxNi0wNi0yNCAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBFRkwgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCBiNTY5MGZi
NzM1MmJkZTc0NTE0YjZhNGI4MmQ2OTYxZjA5Y2M3MzBmLi4yODAwY2FiYjE4ZGMzMWNiMGQyZmQz
NTU3OWQ3ZTZmNjFmNDQyNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbApAQCAtMjgsNiArMjgsOCBAQAogICAgIENvbnN0cnVj
dG9yKE1lZGlhU3RyZWFtIHN0cmVhbSksCiAgICAgQ29uc3RydWN0b3IoTWVkaWFTdHJlYW1UcmFj
a1tdIHRyYWNrcyksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRpb25Db250
ZXh0LAorICAgIFByaXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIKIF0gaW50
ZXJmYWNlIE1lZGlhU3RyZWFtIDogRXZlbnRUYXJnZXQgewogCiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCmluZGV4IGZmM2FmYzBkYjMxMDY4ODhkNjAy
Y2RiODYwNjhmYmM2YjdhMTg3NmYuLjExNjNlYWMzYjE4ZjIwOGY3OTJmZDg3NGMwOWY1OTNlZmU4
YWY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmlkbApAQCAtMjksNiArMjksOCBAQCBlbnVtIE1lZGlhU3RyZWFt
VHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKICAgICBDb25kaXRpb25hbD1N
RURJQV9TVFJFQU0sCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIFNraXBWVGFibGVWYWxpZGF0
aW9uLAorICAgIFByaXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIKIF0gaW50
ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2sgOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBraW5kOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcg
aWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0lj
ZUNhbmRpZGF0ZS5pZGwKaW5kZXggOTFiYTg0MTUzY2YwZjM0YWQxZmQyOGMxNjI3MjEyZWY5NGUw
YTNmYS4uMDQwNzgzZjdmYTBkNjdjNTZiYjcyMGQxNWViMjBiZjI0MzI1Yjg4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRhdGUuaWRs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2FuZGlkYXRl
LmlkbApAQCAtMzIsNyArMzIsOSBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMsCiAgICAg
Q29uc3RydWN0b3IoRGljdGlvbmFyeSBkaWN0aW9uYXJ5KSwKLSAgICBDb25zdHJ1Y3RvclJhaXNl
c0V4Y2VwdGlvbgorICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIFByaXZhdGVJ
ZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIKIF0gaW50ZXJmYWNlIFJUQ0ljZUNhbmRp
ZGF0ZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYW5kaWRhdGU7CiAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gc2RwTWlkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24uaWRsIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24u
aWRsCmluZGV4IDk4MDc3NTdmOGNmZGFhM2FkNTQ5OGEzMjgwODczZmE5YWI3NmY1NGQuLjQ3NTVh
ZGEyNTMwZThmNjVhMmE2ZWVjZDliN2I3MGEzOWVlYTVhMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNjcmlwdGlv
bi5pZGwKQEAgLTMyLDcgKzMyLDkgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfUlRDLAogICAg
IENvbnN0cnVjdG9yKERpY3Rpb25hcnkgZGljdGlvbmFyeSksCi0gICAgQ29uc3RydWN0b3JSYWlz
ZXNFeGNlcHRpb24KKyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKKyAgICBQcml2YXRl
SWRlbnRpZmllciwKKyAgICBQdWJsaWNJZGVudGlmaWVyCiBdIGludGVyZmFjZSBSVENTZXNzaW9u
RGVzY3JpcHRpb24gewogICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5IGF0dHJp
YnV0ZSBSVENTZHBUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBz
ZHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVT
dHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3RyZWFt
LmlkbAppbmRleCAyNDhiMjE4OGQ1YTk3YmQ1NjhlMTg0ZjJmNjZkMTgxNWRkODY3NjJmLi5hM2Vk
NDkxNzYxYTI2OTM3MzkzNGRmMGYxYTI3NzUyN2VkMGJmZjIzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTMxLDcgKzMxLDkg
QEAKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBDb25zdHJ1Y3RvciwKICAgICBF
eHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBKU0J1aWx0aW4KKyAgICBKU0J1aWx0aW4sCisg
ICAgUHJpdmF0ZUlkZW50aWZpZXIsCisgICAgUHVibGljSWRlbnRpZmllcgogXSBpbnRlcmZhY2Ug
UmVhZGFibGVTdHJlYW0gewogICAgIFByb21pc2UgY2FuY2VsKG9wdGlvbmFsIGFueSByZWFzb24p
OwogICAgIE9iamVjdCBnZXRSZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1ZjA4NThlMDI5Y2M1ODIzNDUyYzViMGVj
MDQ5OTliZDYwZTZiZGU5Li44ZGE4MzI0ZTY2ZWZjZWY3NzNlZGU4ZmUzNzdiYTY2ZjBmNmY3MGVh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwCkBAIC04MywxOSArODMsOCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjphZGRCdWlsdGlu
R2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0
eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5zdHJlYW1SZWFkYWJsZVByaXZhdGVOYW1l
KCksIGpzTnVtYmVyKDQpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBKU0RPTUds
b2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCku
c3RyZWFtV2FpdGluZ1ByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDUpLCBEb250RGVsZXRlIHwgUmVh
ZE9ubHkpLAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNs
aWVudERhdGEuYnVpbHRpbk5hbWVzKCkuc3RyZWFtV3JpdGFibGVQcml2YXRlTmFtZSgpLCBqc051
bWJlcig2KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFN
KQotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERh
dGEuYnVpbHRpbk5hbWVzKCkuTWVkaWFTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU01lZGlhU3RyZWFt
OjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnREZWxldGUgfCBSZWFkT25seSksCi0gICAg
ICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWls
dGluTmFtZXMoKS5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZU5hbWUoKSwgSlNNZWRpYVN0cmVhbVRy
YWNrOjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnREZWxldGUgfCBSZWFkT25seSksCi0j
ZW5kaWYKLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0
OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5SZWFkYWJsZVN0
cmVhbVByaXZhdGVOYW1lKCksIEpTUmVhZGFibGVTdHJlYW06OmdldENvbnN0cnVjdG9yKHZtLCB0
aGlzKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNlbmRpZgogICAgICAgICBKU0RPTUdsb2Jh
bE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuUmVh
ZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZVJlYWRhYmxlU3RyZWFt
Q29udHJvbGxlckNvbnN0cnVjdG9yLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBwcml2YXRlUmVhZGFibGVT
dHJlYW1SZWFkZXJDb25zdHJ1Y3RvciwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNpZiBFTkFC
TEUoV0VCX1JUQykKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3BlcnR5SW5m
byhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLlJUQ0ljZUNhbmRpZGF0ZVByaXZhdGVOYW1lKCks
IEpTUlRDSWNlQ2FuZGlkYXRlOjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnREZWxldGUg
fCBSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUlu
Zm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5SVENTZXNzaW9uRGVzY3JpcHRpb25Qcml2YXRl
TmFtZSgpLCBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Z2V0Q29uc3RydWN0b3Iodm0sIHRoaXMp
LCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotI2VuZGlmCiAgICAgfTsKICAgICBhZGRTdGF0aWNH
bG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFscykpOwog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IDJlMmI1OWZjZTkxZmY4OTVhNDhmYzZlZjUyMzhmMjIzY2M3MDZiOGUu
LjFkNGM0MzliMmY2NGE4Mjc5OTVlMjBhZDlhNGI1ODcyNzA4YTJkYmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yMzkz
LDYgKzIzOTMsMjEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQorCisgICAg
ICAgICMgU3VwcG9ydCBQcml2YXRlSWRlbnRpZmllciBhdHRyaWJ1dGVzIG9uIGdsb2JhbCBvYmpl
Y3RzCisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfSkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiUHJpdmF0ZUlkZW50aWZpZXIifTsKKworICAgICAgICAgICAg
QWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOworICAgICAgICAgICAg
bXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9u
YWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRhdHRyaWJ1
dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAgbXkgJGdl
dHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFtZSwgJGF0
dHJpYnV0ZSk7CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7Y29uZGl0
aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGljX2Nh
c3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuIiAuICRh
dHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6Y3JlYXRl
KHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShEb250RGVsZXRl
IHwgUmVhZE9ubHkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5k
aWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgfQorCiAgICAgICAgICMgU3Vw
cG9ydCBmb3IgUnVudGltZUVuYWJsZWQgb3BlcmF0aW9ucyBvbiBnbG9iYWwgb2JqZWN0cy4KICAg
ICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25zfSkgewog
ICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IGM0MmFhNWQ4NGFlMGIzYzU4
ZDMxN2ZlZjA4NjgxZDdkOGMwMWU2MGEuLmE3Mzg4OTAwZTNmM2FmOTk0NjEzOTdhYTUxMGMzN2Fi
MzhlZTYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJl
cHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJl
cHJvY2Vzcy1pZGxzLnBsCkBAIC0yMzgsNyArMjM4LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0
b3JBdHRyaWJ1dGUKICAgICBteSAkY29kZSA9ICIgICAgIjsKICAgICBteSBAZXh0ZW5kZWRBdHRy
aWJ1dGVzTGlzdDsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGVOYW1lIChzb3J0IGtleXMgJXsk
ZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgbmV4dCB1bmxlc3MgKCRhdHRyaWJ1dGVOYW1l
IGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRBdFJ1bnRpbWUi
IHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICBuZXh0IHVu
bGVzcyAoJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbmRpdGlvbmFsIiB8fCAkYXR0cmlidXRlTmFtZSBl
cSAiRW5hYmxlZEF0UnVudGltZSIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRCeVNldHRp
bmciIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQcml2YXRlSWRlbnRpZmllciIgfHwgJGF0dHJpYnV0
ZU5hbWUgZXEgIlB1YmxpY0lkZW50aWZpZXIiKTsKICAgICAgIG15ICRleHRlbmRlZEF0dHJpYnV0
ZSA9ICRhdHRyaWJ1dGVOYW1lOwogICAgICAgJGV4dGVuZGVkQXR0cmlidXRlIC49ICI9IiAuICRl
eHRlbmRlZEF0dHJpYnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gdW5sZXNzICRleHRlbmRlZEF0dHJp
YnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogICAgICAgcHVz
aChAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCwgJGV4dGVuZGVkQXR0cmlidXRlKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282072</attachid>
            <date>2016-06-25 06:54:40 -0700</date>
            <delta_ts>2016-06-28 00:05:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159087-20160625155426.patch</filename>
            <type>text/plain</type>
            <size>30303</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyNDY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODc1ZTZiZWJlNTFlZjBh
NWI0NTA4ZGM2NjA1ZmI2MzU4NGRjN2EzMS4uMWYyNGYzMmU3YmE3M2JiYzAwM2VjN2UxYjMxZWRh
MjIyMmQyY2VkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE2LTA2LTI1ICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBCaW5kaW5nIGdlbmVyYXRv
ciBzaG91bGQgZ2VuZXJhdGUgYWNjZXNzb3JzIGZvciBjb25zdHJ1Y3RvcnMgc2FmZWx5IGFjY2Vz
c2VkIGZyb20gSlMgYnVpbHRpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTU5MDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUmVtb3ZlZCBjb25zdHJ1Y3RvciBwcml2YXRlIHNsb3RzIGRpcmVjdCBhZGRp
dGlvbnMgaW4gSlNET01HbG9iYWxPYmplY3QuCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIGdl
bmVyYXRpbmcgdGhlIGNvZGUgdGhhdCB3aWxsIGRvIHRoYXQuCisgICAgICAgIEFkdmFudGFnZSBv
ZiB0aGUgaW1wbGVtZW50YXRpb246CisgICAgICAgIC0gUHJpdmF0ZSBzbG90cyB3aWxsIGV4cG9z
ZSBjb25zdHJ1Y3RvcnMgdGhhdCBhcmUgYWxzbyBwdWJsaWNhbGx5IHZpc2libGUgKHByZXZpb3Vz
bHkgd29ya2VycyBoYWQgc29tZSBwcml2YXRlIHNsb3RzIGZpbGxlZCB3aXRoIFdlYlJUQyBjb25z
dHJ1Y3RvcnMpLgorICAgICAgICAtIFByaXZhdGUgc2xvdHMgbm8gbG9uZ2VyIHJlcXVpcmUgdGhl
IGNyZWF0aW9uIG9mIHRoZSBjb25zdHJ1Y3RvcnMgYXQgd2luZG93IGNyZWF0aW9uIHRpbWUuCisK
KyAgICAgICAgQWx0aG91Z2ggUHVibGljSWRlbnRpZmllciBhbmQgUHJpdmF0ZUlkZW50aWZpZXIg
YXJlIGJvdGggYWRkZWQgd2hlcmUgbmVlZGVkLCB0aGUgYmluZGluZyBnZW5lcmF0b3IgZG9lcyBu
b3QKKyAgICAgICAgc3VwcG9ydCB0aGUgY2FzZSBvZiBhIGNvbnN0cnVjdG9yIGFjY2Vzc2libGUg
b25seSBwcml2YXRlbHkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0IHNldCBh
bmQgYWRkaW5nIGJpbmRpbmcgdGVzdC4KKworICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uaWRsOiBNYXJrZWQgYXMgUHVibGljSWRlbnRpZmllci9Qcml2YXRlSWRlbnRp
Zmllci4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRs
OiBEaXR0by4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0ljZUNhbmRpZGF0ZS5p
ZGw6IERpdHRvLgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2Ny
aXB0aW9uLmlkbDogRGl0dG8uCisgICAgICAgICogTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxlU3Ry
ZWFtLmlkbDogRGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNET01HbG9iYWxPYmplY3Q6OmFkZEJ1aWx0aW5HbG9i
YWxzKTogUmVtb3ZlZCB1bm5lZWRlZCBhZGRpdGlvbnMuCisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9u
KTogQWRkZWQgc3VwcG9ydCBmb3IgcHJpdmF0ZSBzbG90cyBmb3IgaW50ZXJmYWNlIGNvbnN0cnVj
dG9ycyBtYXJrZWQgYXMKKyAgICAgICAgUHJpdmF0ZUlkZW50aWZpZXIuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy9wcmVwcm9jZXNzLWlkbHMucGw6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0
cnVjdG9yQXR0cmlidXRlKTogTWFrZSBQdWJsaWNJZGVudGlmaWVyL1ByaXZhdGVJZGVudGlmaWVy
IGNvcGllZCBpbnRlcmZhY2UgYXR0cmlidXRlcy4KKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0R2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKHdl
YmtpdF9kb21fdGVzdF9nbG9iYWxfb2JqZWN0X3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJr
aXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0
X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfZG9t
X3Rlc3RfZ2xvYmFsX29iamVjdF9nZXRfcHVibGljX2FuZF9wcml2YXRlX2F0dHJpYnV0ZSk6Cisg
ICAgICAgICh3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9zZXRfcHVibGljX2FuZF9wcml2
YXRlX2F0dHJpYnV0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdC5oOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6
OnNldEpTVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3QuaDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2xvYmFsT2JqZWN0Lm1t
OgorICAgICAgICAoLVtET01UZXN0R2xvYmFsT2JqZWN0IHB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1
dGVdKToKKyAgICAgICAgKC1bRE9NVGVzdEdsb2JhbE9iamVjdCBzZXRQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlOl0pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFs
T2JqZWN0LmlkbDoKKworCiAyMDE2LTA2LTI0ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgogCiAgICAgICAgIENvbnNpZGVyIGV4cG9zaW5nIG9yIGhpZGluZyBrbm93bGVkZ2Ugb2Yg
YSByZWRpcmVjdCBmcm9tIGNsaWVudHMgb2YgV2ViQ29yZU5TVVJMU2Vzc2lvbgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCBi
NTY5MGZiNzM1MmJkZTc0NTE0YjZhNGI4MmQ2OTYxZjA5Y2M3MzBmLi4yODAwY2FiYjE4ZGMzMWNi
MGQyZmQzNTU3OWQ3ZTZmNjFmNDQyNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbApAQCAtMjgsNiArMjgsOCBAQAogICAgIENv
bnN0cnVjdG9yKE1lZGlhU3RyZWFtIHN0cmVhbSksCiAgICAgQ29uc3RydWN0b3IoTWVkaWFTdHJl
YW1UcmFja1tdIHRyYWNrcyksCiAgICAgQ29uc3RydWN0b3JDYWxsV2l0aD1TY3JpcHRFeGVjdXRp
b25Db250ZXh0LAorICAgIFByaXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIK
IF0gaW50ZXJmYWNlIE1lZGlhU3RyZWFtIDogRXZlbnRUYXJnZXQgewogCiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVN0cmluZyBpZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsCmluZGV4IGZmM2FmYzBkYjMxMDY4
ODhkNjAyY2RiODYwNjhmYmM2YjdhMTg3NmYuLjExNjNlYWMzYjE4ZjIwOGY3OTJmZDg3NGMwOWY1
OTNlZmU4YWY1NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbApAQCAtMjksNiArMjksOCBAQCBlbnVtIE1lZGlh
U3RyZWFtVHJhY2tTdGF0ZSB7ICJuZXciLCAibGl2ZSIsICJlbmRlZCIgfTsKICAgICBDb25kaXRp
b25hbD1NRURJQV9TVFJFQU0sCiAgICAgQWN0aXZlRE9NT2JqZWN0LAogICAgIFNraXBWVGFibGVW
YWxpZGF0aW9uLAorICAgIFByaXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIK
IF0gaW50ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2sgOiBFdmVudFRhcmdldCB7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L1JUQ0ljZUNhbmRpZGF0ZS5pZGwKaW5kZXggOTFiYTg0MTUzY2YwZjM0YWQxZmQyOGMxNjI3MjEy
ZWY5NGUwYTNmYS4uMDQwNzgzZjdmYTBkNjdjNTZiYjcyMGQxNWViMjBiZjI0MzI1Yjg4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENJY2VDYW5kaWRh
dGUuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDSWNlQ2Fu
ZGlkYXRlLmlkbApAQCAtMzIsNyArMzIsOSBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQl9SVEMs
CiAgICAgQ29uc3RydWN0b3IoRGljdGlvbmFyeSBkaWN0aW9uYXJ5KSwKLSAgICBDb25zdHJ1Y3Rv
clJhaXNlc0V4Y2VwdGlvbgorICAgIENvbnN0cnVjdG9yUmFpc2VzRXhjZXB0aW9uLAorICAgIFBy
aXZhdGVJZGVudGlmaWVyLAorICAgIFB1YmxpY0lkZW50aWZpZXIKIF0gaW50ZXJmYWNlIFJUQ0lj
ZUNhbmRpZGF0ZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBjYW5kaWRhdGU7
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZz8gc2RwTWlkOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3JpcHRpb24u
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTZXNzaW9uRGVzY3Jp
cHRpb24uaWRsCmluZGV4IDk4MDc3NTdmOGNmZGFhM2FkNTQ5OGEzMjgwODczZmE5YWI3NmY1NGQu
LjQ3NTVhZGEyNTMwZThmNjVhMmE2ZWVjZDliN2I3MGEzOWVlYTVhMWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU2Vzc2lvbkRlc2NyaXB0aW9uLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1Nlc3Npb25EZXNj
cmlwdGlvbi5pZGwKQEAgLTMyLDcgKzMyLDkgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJfUlRD
LAogICAgIENvbnN0cnVjdG9yKERpY3Rpb25hcnkgZGljdGlvbmFyeSksCi0gICAgQ29uc3RydWN0
b3JSYWlzZXNFeGNlcHRpb24KKyAgICBDb25zdHJ1Y3RvclJhaXNlc0V4Y2VwdGlvbiwKKyAgICBQ
cml2YXRlSWRlbnRpZmllciwKKyAgICBQdWJsaWNJZGVudGlmaWVyCiBdIGludGVyZmFjZSBSVENT
ZXNzaW9uRGVzY3JpcHRpb24gewogICAgIFtTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIHJlYWRvbmx5
IGF0dHJpYnV0ZSBSVENTZHBUeXBlIHR5cGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0
cmluZyBzZHA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVh
ZGFibGVTdHJlYW0uaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zdHJlYW1zL1JlYWRhYmxl
U3RyZWFtLmlkbAppbmRleCAyNDhiMjE4OGQ1YTk3YmQ1NjhlMTg0ZjJmNjZkMTgxNWRkODY3NjJm
Li5hM2VkNDkxNzYxYTI2OTM3MzkzNGRmMGYxYTI3NzUyN2VkMGJmZjIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3N0cmVhbXMvUmVhZGFibGVTdHJlYW0uaWRsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvc3RyZWFtcy9SZWFkYWJsZVN0cmVhbS5pZGwKQEAgLTMxLDcg
KzMxLDkgQEAKICAgICBDb25kaXRpb25hbD1TVFJFQU1TX0FQSSwKICAgICBDb25zdHJ1Y3RvciwK
ICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBKU0J1aWx0aW4KKyAgICBKU0J1aWx0
aW4sCisgICAgUHJpdmF0ZUlkZW50aWZpZXIsCisgICAgUHVibGljSWRlbnRpZmllcgogXSBpbnRl
cmZhY2UgUmVhZGFibGVTdHJlYW0gewogICAgIFByb21pc2UgY2FuY2VsKG9wdGlvbmFsIGFueSBy
ZWFzb24pOwogICAgIE9iamVjdCBnZXRSZWFkZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0LmNwcAppbmRleCA1ZjA4NThlMDI5Y2M1ODIzNDUy
YzViMGVjMDQ5OTliZDYwZTZiZGU5Li44ZGE4MzI0ZTY2ZWZjZWY3NzNlZGU4ZmUzNzdiYTY2ZjBm
NmY3MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2Jh
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxP
YmplY3QuY3BwCkBAIC04MywxOSArODMsOCBAQCB2b2lkIEpTRE9NR2xvYmFsT2JqZWN0OjphZGRC
dWlsdGluR2xvYmFscyhWTSYgdm0pCiAgICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQ
cm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5zdHJlYW1SZWFkYWJsZVByaXZh
dGVOYW1lKCksIGpzTnVtYmVyKDQpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAgICAgICBK
U0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5h
bWVzKCkuc3RyZWFtV2FpdGluZ1ByaXZhdGVOYW1lKCksIGpzTnVtYmVyKDUpLCBEb250RGVsZXRl
IHwgUmVhZE9ubHkpLAogICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJ
bmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVzKCkuc3RyZWFtV3JpdGFibGVQcml2YXRlTmFtZSgp
LCBqc051bWJlcig2KSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQotICAgICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNs
aWVudERhdGEuYnVpbHRpbk5hbWVzKCkuTWVkaWFTdHJlYW1Qcml2YXRlTmFtZSgpLCBKU01lZGlh
U3RyZWFtOjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnREZWxldGUgfCBSZWFkT25seSks
Ci0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0
YS5idWlsdGluTmFtZXMoKS5NZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZU5hbWUoKSwgSlNNZWRpYVN0
cmVhbVRyYWNrOjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnREZWxldGUgfCBSZWFkT25s
eSksCi0jZW5kaWYKLSNpZiBFTkFCTEUoU1RSRUFNU19BUEkpCi0gICAgICAgIEpTRE9NR2xvYmFs
T2JqZWN0OjpHbG9iYWxQcm9wZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5SZWFk
YWJsZVN0cmVhbVByaXZhdGVOYW1lKCksIEpTUmVhZGFibGVTdHJlYW06OmdldENvbnN0cnVjdG9y
KHZtLCB0aGlzKSwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNlbmRpZgogICAgICAgICBKU0RP
TUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVpbHRpbk5hbWVz
KCkuUmVhZGFibGVTdHJlYW1Db250cm9sbGVyUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZVJlYWRhYmxl
U3RyZWFtQ29udHJvbGxlckNvbnN0cnVjdG9yLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAogICAg
ICAgICBKU0RPTUdsb2JhbE9iamVjdDo6R2xvYmFsUHJvcGVydHlJbmZvKGNsaWVudERhdGEuYnVp
bHRpbk5hbWVzKCkuUmVhZGFibGVTdHJlYW1SZWFkZXJQcml2YXRlTmFtZSgpLCBwcml2YXRlUmVh
ZGFibGVTdHJlYW1SZWFkZXJDb25zdHJ1Y3RvciwgRG9udERlbGV0ZSB8IFJlYWRPbmx5KSwKLSNp
ZiBFTkFCTEUoV0VCX1JUQykKLSAgICAgICAgSlNET01HbG9iYWxPYmplY3Q6Okdsb2JhbFByb3Bl
cnR5SW5mbyhjbGllbnREYXRhLmJ1aWx0aW5OYW1lcygpLlJUQ0ljZUNhbmRpZGF0ZVByaXZhdGVO
YW1lKCksIEpTUlRDSWNlQ2FuZGlkYXRlOjpnZXRDb25zdHJ1Y3Rvcih2bSwgdGhpcyksIERvbnRE
ZWxldGUgfCBSZWFkT25seSksCi0gICAgICAgIEpTRE9NR2xvYmFsT2JqZWN0OjpHbG9iYWxQcm9w
ZXJ0eUluZm8oY2xpZW50RGF0YS5idWlsdGluTmFtZXMoKS5SVENTZXNzaW9uRGVzY3JpcHRpb25Q
cml2YXRlTmFtZSgpLCBKU1JUQ1Nlc3Npb25EZXNjcmlwdGlvbjo6Z2V0Q29uc3RydWN0b3Iodm0s
IHRoaXMpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpLAotI2VuZGlmCiAgICAgfTsKICAgICBhZGRT
dGF0aWNHbG9iYWxzKHN0YXRpY0dsb2JhbHMsIFdURl9BUlJBWV9MRU5HVEgoc3RhdGljR2xvYmFs
cykpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29k
ZUdlbmVyYXRvckpTLnBtCmluZGV4IDJlMmI1OWZjZTkxZmY4OTVhNDhmYzZlZjUyMzhmMjIzY2M3
MDZiOGUuLjFkNGM0MzliMmY2NGE4Mjc5OTVlMjBhZDlhNGI1ODcyNzA4YTJkYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBA
IC0yMzkzLDYgKzIzOTMsMjEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQor
CisgICAgICAgICMgU3VwcG9ydCBQcml2YXRlSWRlbnRpZmllciBhdHRyaWJ1dGVzIG9uIGdsb2Jh
bCBvYmplY3RzCisgICAgICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAoQHskaW50ZXJmYWNlLT5h
dHRyaWJ1dGVzfSkgeworICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUHJpdmF0ZUlkZW50aWZpZXIifTsKKworICAgICAg
ICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIldlYkNvcmVKU0NsaWVudERhdGEuaCIpOworICAgICAg
ICAgICAgbXkgJGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29u
ZGl0aW9uYWxTdHJpbmcoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlKTsKKyAgICAgICAgICAgIG15ICRh
dHRyaWJ1dGVOYW1lID0gJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT5uYW1lOworICAgICAgICAgICAg
bXkgJGdldHRlciA9IEdldEF0dHJpYnV0ZUdldHRlck5hbWUoJGludGVyZmFjZSwgJGNsYXNzTmFt
ZSwgJGF0dHJpYnV0ZSk7CisKKyAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2lmICR7
Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3Rh
dGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCku
IiAuICRhdHRyaWJ1dGVOYW1lIC4gIlByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCAkZ2V0dGVyLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShEb250
RGVsZXRlIHwgUmVhZE9ubHkpKTtcbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICAgICAgfQorCiAgICAgICAg
ICMgU3VwcG9ydCBmb3IgUnVudGltZUVuYWJsZWQgb3BlcmF0aW9ucyBvbiBnbG9iYWwgb2JqZWN0
cy4KICAgICAgICAgZm9yZWFjaCBteSAkZnVuY3Rpb24gKEB7JGludGVyZmFjZS0+ZnVuY3Rpb25z
fSkgewogICAgICAgICAgICAgbmV4dCB1bmxlc3MgJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJFbmFibGVkQXRSdW50aW1lIn07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3ByZXByb2Nlc3MtaWRscy5wbCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvcHJlcHJvY2Vzcy1pZGxzLnBsCmluZGV4IGM0MmFhNWQ4NGFl
MGIzYzU4ZDMxN2ZlZjA4NjgxZDdkOGMwMWU2MGEuLmE3Mzg4OTAwZTNmM2FmOTk0NjEzOTdhYTUx
MGMzN2FiMzhlZTYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvcHJlcHJvY2Vzcy1pZGxzLnBsCkBAIC0yMzgsNyArMjM4LDcgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JBdHRyaWJ1dGUKICAgICBteSAkY29kZSA9ICIgICAgIjsKICAgICBteSBAZXh0ZW5k
ZWRBdHRyaWJ1dGVzTGlzdDsKICAgICBmb3JlYWNoIG15ICRhdHRyaWJ1dGVOYW1lIChzb3J0IGtl
eXMgJXskZXh0ZW5kZWRBdHRyaWJ1dGVzfSkgewotICAgICAgbmV4dCB1bmxlc3MgKCRhdHRyaWJ1
dGVOYW1lIGVxICJDb25kaXRpb25hbCIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRBdFJ1
bnRpbWUiIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJFbmFibGVkQnlTZXR0aW5nIik7CisgICAgICBu
ZXh0IHVubGVzcyAoJGF0dHJpYnV0ZU5hbWUgZXEgIkNvbmRpdGlvbmFsIiB8fCAkYXR0cmlidXRl
TmFtZSBlcSAiRW5hYmxlZEF0UnVudGltZSIgfHwgJGF0dHJpYnV0ZU5hbWUgZXEgIkVuYWJsZWRC
eVNldHRpbmciIHx8ICRhdHRyaWJ1dGVOYW1lIGVxICJQcml2YXRlSWRlbnRpZmllciIgfHwgJGF0
dHJpYnV0ZU5hbWUgZXEgIlB1YmxpY0lkZW50aWZpZXIiKTsKICAgICAgIG15ICRleHRlbmRlZEF0
dHJpYnV0ZSA9ICRhdHRyaWJ1dGVOYW1lOwogICAgICAgJGV4dGVuZGVkQXR0cmlidXRlIC49ICI9
IiAuICRleHRlbmRlZEF0dHJpYnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gdW5sZXNzICRleHRlbmRl
ZEF0dHJpYnV0ZXMtPnskYXR0cmlidXRlTmFtZX0gZXEgIlZBTFVFX0lTX01JU1NJTkciOwogICAg
ICAgcHVzaChAZXh0ZW5kZWRBdHRyaWJ1dGVzTGlzdCwgJGV4dGVuZGVkQXR0cmlidXRlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dl
YktpdERPTVRlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXggNThk
NDYzMmY3ZGZjYWUzNjI4YTlkMjM5MGJjZWE1M2I0Njk1OTg3Yi4uNTExYzQwODAwYzUzMjkwNTVh
MTFjY2RmMzg5NjZmZDc0MjA5MGNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdEdsb2JhbE9iamVjdC5jcHAKQEAgLTcwLDYgKzcwLDggQEAgR19ERUZJTkVfVFlQRShXZWJL
aXRET01UZXN0R2xvYmFsT2JqZWN0LCB3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdCwgV0VC
S0lUX0QKIGVudW0gewogICAgIFBST1BfMCwKICAgICBQUk9QX1JFR1VMQVJfQVRUUklCVVRFLAor
ICAgIFBST1BfUFVCTElDX0FORF9QUklWQVRFX0FUVFJJQlVURSwKKyAgICBQUk9QX1BVQkxJQ19B
TkRfUFJJVkFURV9DT05ESVRJT05BTF9BVFRSSUJVVEUsCiAgICAgUFJPUF9FTkFCTEVEX0FUX1JV
TlRJTUVfQVRUUklCVVRFLAogfTsKIApAQCAtOTEsNiArOTMsMTIgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3Rfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHIKICAgICBjYXNlIFBST1BfUkVHVUxBUl9BVFRSSUJVVEU6CiAgICAgICAgIHdlYmtp
dF9kb21fdGVzdF9nbG9iYWxfb2JqZWN0X3NldF9yZWd1bGFyX2F0dHJpYnV0ZShzZWxmLCBnX3Zh
bHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BV
QkxJQ19BTkRfUFJJVkFURV9BVFRSSUJVVEU6CisgICAgICAgIHdlYmtpdF9kb21fdGVzdF9nbG9i
YWxfb2JqZWN0X3NldF9wdWJsaWNfYW5kX3ByaXZhdGVfYXR0cmlidXRlKHNlbGYsIGdfdmFsdWVf
Z2V0X3N0cmluZyh2YWx1ZSkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUFVCTElD
X0FORF9QUklWQVRFX0NPTkRJVElPTkFMX0FUVFJJQlVURToKKyAgICAgICAgd2Via2l0X2RvbV90
ZXN0X2dsb2JhbF9vYmplY3Rfc2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9jb25kaXRpb25hbF9hdHRy
aWJ1dGUoc2VsZiwgZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVlKSk7CisgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgUFJPUF9FTkFCTEVEX0FUX1JVTlRJTUVfQVRUUklCVVRFOgogICAgICAgICB3ZWJr
aXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9zZXRfZW5hYmxlZF9hdF9ydW50aW1lX2F0dHJpYnV0
ZShzZWxmLCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJlYWs7CkBAIC0x
MDgsNiArMTE2LDEyIEBAIHN0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9nbG9iYWxfb2JqZWN0
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByCiAgICAgY2FzZSBQUk9QX1JF
R1VMQVJfQVRUUklCVVRFOgogICAgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nKHZhbHVlLCB3ZWJr
aXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9nZXRfcmVndWxhcl9hdHRyaWJ1dGUoc2VsZikpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUFVCTElDX0FORF9QUklWQVRFX0FUVFJJQlVU
RToKKyAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2RvbV90ZXN0X2ds
b2JhbF9vYmplY3RfZ2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9hdHRyaWJ1dGUoc2VsZikpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUFVCTElDX0FORF9QUklWQVRFX0NPTkRJVElPTkFM
X0FUVFJJQlVURToKKyAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwgd2Via2l0X2Rv
bV90ZXN0X2dsb2JhbF9vYmplY3RfZ2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9jb25kaXRpb25hbF9h
dHRyaWJ1dGUoc2VsZikpOworICAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfRU5BQkxFRF9B
VF9SVU5USU1FX0FUVFJJQlVURToKICAgICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyh2YWx1ZSwg
d2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfZ2V0X2VuYWJsZWRfYXRfcnVudGltZV9hdHRy
aWJ1dGUoc2VsZikpOwogICAgICAgICBicmVhazsKQEAgLTE0OSw2ICsxNjMsMjYgQEAgc3RhdGlj
IHZvaWQgd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfY2xhc3NfaW5pdChXZWJLaXRET01U
ZXN0R2xvYmFsT2JqZWN0Q2wKIAogICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHko
CiAgICAgICAgIGdvYmplY3RDbGFzcywKKyAgICAgICAgUFJPUF9QVUJMSUNfQU5EX1BSSVZBVEVf
QVRUUklCVVRFLAorICAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nKAorICAgICAgICAgICAgInB1
YmxpYy1hbmQtcHJpdmF0ZS1hdHRyaWJ1dGUiLAorICAgICAgICAgICAgIlRlc3RHbG9iYWxPYmpl
Y3Q6cHVibGljLWFuZC1wcml2YXRlLWF0dHJpYnV0ZSIsCisgICAgICAgICAgICAicmVhZC13cml0
ZSBnY2hhciogVGVzdEdsb2JhbE9iamVjdDpwdWJsaWMtYW5kLXByaXZhdGUtYXR0cmlidXRlIiwK
KyAgICAgICAgICAgICIiLAorICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOwor
CisgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSgKKyAgICAgICAgZ29iamVjdENs
YXNzLAorICAgICAgICBQUk9QX1BVQkxJQ19BTkRfUFJJVkFURV9DT05ESVRJT05BTF9BVFRSSUJV
VEUsCisgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoCisgICAgICAgICAgICAicHVibGljLWFu
ZC1wcml2YXRlLWNvbmRpdGlvbmFsLWF0dHJpYnV0ZSIsCisgICAgICAgICAgICAiVGVzdEdsb2Jh
bE9iamVjdDpwdWJsaWMtYW5kLXByaXZhdGUtY29uZGl0aW9uYWwtYXR0cmlidXRlIiwKKyAgICAg
ICAgICAgICJyZWFkLXdyaXRlIGdjaGFyKiBUZXN0R2xvYmFsT2JqZWN0OnB1YmxpYy1hbmQtcHJp
dmF0ZS1jb25kaXRpb25hbC1hdHRyaWJ1dGUiLAorICAgICAgICAgICAgIiIsCisgICAgICAgICAg
ICBXRUJLSVRfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxs
X3Byb3BlcnR5KAorICAgICAgICBnb2JqZWN0Q2xhc3MsCiAgICAgICAgIFBST1BfRU5BQkxFRF9B
VF9SVU5USU1FX0FUVFJJQlVURSwKICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygKICAgICAg
ICAgICAgICJlbmFibGVkLWF0LXJ1bnRpbWUtYXR0cmlidXRlIiwKQEAgLTIyNCw2ICsyNTgsNTYg
QEAgdm9pZCB3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9zZXRfcmVndWxhcl9hdHRyaWJ1
dGUoV2ViS2l0RE9NVGVzdEdsb2JhbE9iamUKICAgICBpdGVtLT5zZXRSZWd1bGFyQXR0cmlidXRl
KGNvbnZlcnRlZFZhbHVlKTsKIH0KIAorZ2NoYXIqIHdlYmtpdF9kb21fdGVzdF9nbG9iYWxfb2Jq
ZWN0X2dldF9wdWJsaWNfYW5kX3ByaXZhdGVfYXR0cmlidXRlKFdlYktpdERPTVRlc3RHbG9iYWxP
YmplY3QqIHNlbGYpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9ET01fSVNfVEVTVF9HTE9CQUxfT0JK
RUNUKHNlbGYpLCAwKTsKKyAgICBXZWJDb3JlOjpUZXN0R2xvYmFsT2JqZWN0KiBpdGVtID0gV2Vi
S2l0Ojpjb3JlKHNlbGYpOworICAgIGdjaGFyKiByZXN1bHQgPSBjb252ZXJ0VG9VVEY4U3RyaW5n
KGl0ZW0tPnB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKwordm9pZCB3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9zZXRfcHVibGljX2FuZF9w
cml2YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0R2xvYmFsT2JqZWN0KiBzZWxmLCBjb25zdCBn
Y2hhciogdmFsdWUpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OworICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0RPTV9JU19URVNUX0dMT0JBTF9PQkpFQ1Qo
c2VsZikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwodmFsdWUpOworICAgIFdlYkNvcmU6OlRlc3RH
bG9iYWxPYmplY3QqIGl0ZW0gPSBXZWJLaXQ6OmNvcmUoc2VsZik7CisgICAgV1RGOjpTdHJpbmcg
Y29udmVydGVkVmFsdWUgPSBXVEY6OlN0cmluZzo6ZnJvbVVURjgodmFsdWUpOworICAgIGl0ZW0t
PnNldFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoY29udmVydGVkVmFsdWUpOworfQorCitnY2hh
ciogd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfZ2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9j
b25kaXRpb25hbF9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdCogc2VsZikKK3sK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxT
dGF0ZSBzdGF0ZTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfRE9NX0lTX1RFU1Rf
R0xPQkFMX09CSkVDVChzZWxmKSwgMCk7CisgICAgV2ViQ29yZTo6VGVzdEdsb2JhbE9iamVjdCog
aXRlbSA9IFdlYktpdDo6Y29yZShzZWxmKTsKKyAgICBnY2hhciogcmVzdWx0ID0gY29udmVydFRv
VVRGOFN0cmluZyhpdGVtLT5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUoKSk7
CisgICAgcmV0dXJuIHJlc3VsdDsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOworICAg
IFdFQktJVF9XQVJOX0ZFQVRVUkVfTk9UX1BSRVNFTlQoIlRlc3QgRmVhdHVyZSIpCisgICAgcmV0
dXJuIDA7CisjZW5kaWYgLyogRU5BQkxFKFRFU1RfRkVBVFVSRSkgKi8KK30KKwordm9pZCB3ZWJr
aXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9zZXRfcHVibGljX2FuZF9wcml2YXRlX2NvbmRpdGlv
bmFsX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0R2xvYmFsT2JqZWN0KiBzZWxmLCBjb25zdCBnY2hh
ciogdmFsdWUpCit7CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRfRE9N
X0lTX1RFU1RfR0xPQkFMX09CSkVDVChzZWxmKSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCh2YWx1
ZSk7CisgICAgV2ViQ29yZTo6VGVzdEdsb2JhbE9iamVjdCogaXRlbSA9IFdlYktpdDo6Y29yZShz
ZWxmKTsKKyAgICBXVEY6OlN0cmluZyBjb252ZXJ0ZWRWYWx1ZSA9IFdURjo6U3RyaW5nOjpmcm9t
VVRGOCh2YWx1ZSk7CisgICAgaXRlbS0+c2V0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0
cmlidXRlKGNvbnZlcnRlZFZhbHVlKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKHNlbGYpOwor
ICAgIFVOVVNFRF9QQVJBTSh2YWx1ZSk7CisgICAgV0VCS0lUX1dBUk5fRkVBVFVSRV9OT1RfUFJF
U0VOVCgiVGVzdCBGZWF0dXJlIikKKyNlbmRpZiAvKiBFTkFCTEUoVEVTVF9GRUFUVVJFKSAqLwor
fQorCiBnY2hhciogd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfZ2V0X2VuYWJsZWRfYXRf
cnVudGltZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdCogc2VsZikKIHsKICNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEdsb2JhbE9iamVjdC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdEds
b2JhbE9iamVjdC5oCmluZGV4IDIxNmI5YWY1M2Q4MGU2NDExNWY1Y2Q5MmQxZjhjYzRiYmFlZTI1
YTQuLmMwYjZjNzUyMWQyZDk5ZDUyM2Y3MmRkMzQ3MDZkYWQ5YTI4MjVmM2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRl
c3RHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvR09iamVjdC9XZWJLaXRET01UZXN0R2xvYmFsT2JqZWN0LmgKQEAgLTk5LDYgKzk5LDQ4IEBA
IFdFQktJVF9BUEkgdm9pZAogd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3Rfc2V0X3JlZ3Vs
YXJfYXR0cmlidXRlKFdlYktpdERPTVRlc3RHbG9iYWxPYmplY3QqIHNlbGYsIGNvbnN0IGdjaGFy
KiB2YWx1ZSk7CiAKIC8qKgorICogd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3RfZ2V0X3B1
YmxpY19hbmRfcHJpdmF0ZV9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9NVGVzdEds
b2JhbE9iamVjdAorICoKKyAqIFJldHVybnM6IEEgI2djaGFyCisgKgorICogU3RhYmlsaXR5OiBV
bnN0YWJsZQorKiovCitXRUJLSVRfQVBJIGdjaGFyKgord2Via2l0X2RvbV90ZXN0X2dsb2JhbF9v
YmplY3RfZ2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9hdHRyaWJ1dGUoV2ViS2l0RE9NVGVzdEdsb2Jh
bE9iamVjdCogc2VsZik7CisKKy8qKgorICogd2Via2l0X2RvbV90ZXN0X2dsb2JhbF9vYmplY3Rf
c2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9hdHRyaWJ1dGU6CisgKiBAc2VsZjogQSAjV2ViS2l0RE9N
VGVzdEdsb2JhbE9iamVjdAorICogQHZhbHVlOiBBICNnY2hhcgorICoKKyAqIFN0YWJpbGl0eTog
VW5zdGFibGUKKyoqLworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29i
amVjdF9zZXRfcHVibGljX2FuZF9wcml2YXRlX2F0dHJpYnV0ZShXZWJLaXRET01UZXN0R2xvYmFs
T2JqZWN0KiBzZWxmLCBjb25zdCBnY2hhciogdmFsdWUpOworCisvKioKKyAqIHdlYmtpdF9kb21f
dGVzdF9nbG9iYWxfb2JqZWN0X2dldF9wdWJsaWNfYW5kX3ByaXZhdGVfY29uZGl0aW9uYWxfYXR0
cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktpdERPTVRlc3RHbG9iYWxPYmplY3QKKyAqCisgKiBS
ZXR1cm5zOiBBICNnY2hhcgorICoKKyAqIFN0YWJpbGl0eTogVW5zdGFibGUKKyoqLworV0VCS0lU
X0FQSSBnY2hhcioKK3dlYmtpdF9kb21fdGVzdF9nbG9iYWxfb2JqZWN0X2dldF9wdWJsaWNfYW5k
X3ByaXZhdGVfY29uZGl0aW9uYWxfYXR0cmlidXRlKFdlYktpdERPTVRlc3RHbG9iYWxPYmplY3Qq
IHNlbGYpOworCisvKioKKyAqIHdlYmtpdF9kb21fdGVzdF9nbG9iYWxfb2JqZWN0X3NldF9wdWJs
aWNfYW5kX3ByaXZhdGVfY29uZGl0aW9uYWxfYXR0cmlidXRlOgorICogQHNlbGY6IEEgI1dlYktp
dERPTVRlc3RHbG9iYWxPYmplY3QKKyAqIEB2YWx1ZTogQSAjZ2NoYXIKKyAqCisgKiBTdGFiaWxp
dHk6IFVuc3RhYmxlCisqKi8KK1dFQktJVF9BUEkgdm9pZAord2Via2l0X2RvbV90ZXN0X2dsb2Jh
bF9vYmplY3Rfc2V0X3B1YmxpY19hbmRfcHJpdmF0ZV9jb25kaXRpb25hbF9hdHRyaWJ1dGUoV2Vi
S2l0RE9NVGVzdEdsb2JhbE9iamVjdCogc2VsZiwgY29uc3QgZ2NoYXIqIHZhbHVlKTsKKworLyoq
CiAgKiB3ZWJraXRfZG9tX3Rlc3RfZ2xvYmFsX29iamVjdF9nZXRfZW5hYmxlZF9hdF9ydW50aW1l
X2F0dHJpYnV0ZToKICAqIEBzZWxmOiBBICNXZWJLaXRET01UZXN0R2xvYmFsT2JqZWN0CiAgKgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCA2MWYyMTgzYmU1MGM3YzFhZTQxOTI3M2Jl
ODBmYmMxOGI0MDY0MWRiLi4yNzdhMmJkMzM0Yjk2ZTQzNmMzYTEwNjg0N2Q4ZTcyNmE4NGM2YjI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIK
ICNpbmNsdWRlICJVUkwuaCIKKyNpbmNsdWRlICJXZWJDb3JlSlNDbGllbnREYXRhLmgiCiAjaW5j
bHVkZSA8cnVudGltZS9FcnJvci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvRnVuY3Rpb25Qcm90b3R5
cGUuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTU3RyaW5nLmg+CkBAIC00Nyw2ICs0OCwxMiBAQCBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRBdFJ1bgogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdEdsb2JhbE9iamVjdFJlZ3Vs
YXJBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlKTsKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVi
bGljQW5kUHJpdmF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGlj
QW5kUHJpdmF0ZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25h
bEF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJv
cGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0
eU5hbWUpOwogYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RFbmFibGVkQXRSdW50aW1lQXR0cmli
dXRlKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNW
YWx1ZSk7CkBAIC01OCwyNSArNjUsMzkgQEAgdHlwZWRlZiBKU0RPTUNvbnN0cnVjdG9yTm90Q29u
c3RydWN0YWJsZTxKU1Rlc3RHbG9iYWxPYmplY3Q+IEpTVGVzdEdsb2JhbE9iamVjdEMKIAogLyog
SGFzaCB0YWJsZSAqLwogCi1zdGF0aWMgY29uc3Qgc3RydWN0IENvbXBhY3RIYXNoSW5kZXggSlNU
ZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleFs4XSA9IHsKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgQ29t
cGFjdEhhc2hJbmRleCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4WzE2XSA9IHsKICAgICB7
IC0xLCAtMSB9LAotICAgIHsgMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAorICAgIHsgMiwgLTEg
fSwKICAgICB7IDAsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKICAgICB7IC0xLCAtMSB9LAogICAg
IHsgLTEsIC0xIH0sCiAgICAgeyAtMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgMywg
LTEgfSwKKyAgICB7IC0xLCAtMSB9LAorICAgIHsgLTEsIC0xIH0sCisgICAgeyAtMSwgLTEgfSwK
KyAgICB7IC0xLCAtMSB9LAorICAgIHsgMSwgLTEgfSwKKyAgICB7IC0xLCAtMSB9LAogfTsKIAog
CiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1
ZXNbXSA9CiB7CiAgICAgeyAicmVndWxhckF0dHJpYnV0ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1
bmM+KGpzVGVzdEdsb2JhbE9iamVjdFJlZ3VsYXJBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmpl
Y3RSZWd1bGFyQXR0cmlidXRlKSB9IH0sCisgICAgeyAicHVibGljQW5kUHJpdmF0ZUF0dHJpYnV0
ZSIsIEN1c3RvbUFjY2Vzc29yLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8
UHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFBy
aXZhdGVBdHRyaWJ1dGUpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6
UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmli
dXRlKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJwdWJsaWNBbmRQcml2
YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUiLCBDdXN0b21BY2Nlc3NvciwgTm9JbnRyaW5zaWMsIHsg
KGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RH
bG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUpIH0gfSwKKyNl
bHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgogICAgIHsg
InJlZ3VsYXJPcGVyYXRpb24iLCBKU0M6OkZ1bmN0aW9uLCBOb0ludHJpbnNpYywgeyAoaW50cHRy
X3Qpc3RhdGljX2Nhc3Q8TmF0aXZlRnVuY3Rpb24+KGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNl
RnVuY3Rpb25SZWd1bGFyT3BlcmF0aW9uKSwgKGludHB0cl90KSAoMSkgfSB9LAogfTsKIAotc3Rh
dGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZSA9IHsgMiwgNywgdHJ1
ZSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxl
SW5kZXggfTsKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUg
PSB7IDQsIDE1LCB0cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlcywgSlNUZXN0R2xv
YmFsT2JqZWN0VGFibGVJbmRleCB9OwogdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHZt
KTsKQEAgLTEyNSw2ICsxNDYsMTAgQEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgSlNQcm94eSogcHJveHkpCiAgICAgICAgIHB1dERpcmVjdEN1c3RvbUFj
Y2Vzc29yKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkQXRSdW50aW1lQXR0cmlidXRlLCBj
dXN0b21HZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoQ3VzdG9tQWNjZXNzb3Ip
KTsKICAgICB9CiAjZW5kaWYKKyAgICBwdXREaXJlY3RDdXN0b21BY2Nlc3Nvcih2bSwgc3RhdGlj
X2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkucHVi
bGljQW5kUHJpdmF0ZUF0dHJpYnV0ZVByaXZhdGVOYW1lKCksIEN1c3RvbUdldHRlclNldHRlcjo6
Y3JlYXRlKHZtLCBqc1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlLCBu
dWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVjdHVyZShEb250RGVsZXRlIHwgUmVhZE9ubHkpKTsK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIHB1dERpcmVjdEN1c3RvbUFjY2Vzc29yKHZt
LCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFt
ZXMoKS5wdWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGVQcml2YXRlTmFtZSgpLCBD
dXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZSh2bSwganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5k
UHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlLCBudWxscHRyKSwgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZShEb250RGVsZXRlIHwgUmVhZE9ubHkpKTsKKyNlbmRpZgogI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCku
dGVzdEZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZt
LCB0aGlzLCB2bS5wcm9wZXJ0eU5hbWVzLT5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCAxLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoSlNDOjpGdW5jdGlvbikpOwpA
QCAtMTUyLDYgKzE3NywzOCBAQCBFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RSZWd1
bGFyQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbAogfQogCiAKK0VuY29k
ZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdFB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoRXhl
Y1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsK
KyAgICBKU1ZhbHVlIGRlY29kZWRUaGlzVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KTsKKyAgICBhdXRvKiBjYXN0ZWRUaGlzID0ganNEeW5hbWljQ2FzdDxKU1Rlc3RHbG9iYWxPYmpl
Y3QqPihkZWNvZGVkVGhpc1ZhbHVlKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRoaXMpKSB7
CisgICAgICAgIHJldHVybiB0aHJvd0dldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0R2xvYmFs
T2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsKKyAgICB9CisgICAgYXV0byYg
aW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3Ry
aW5nV2l0aENhY2hlKHN0YXRlLCBpbXBsLnB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworfQorCisKKyNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQorRW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJp
dmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7Cisg
ICAgVU5VU0VEX1BBUkFNKHRoaXNWYWx1ZSk7CisgICAgSlNWYWx1ZSBkZWNvZGVkVGhpc1ZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSk7CisgICAgYXV0byogY2FzdGVkVGhpcyA9IGpz
RHluYW1pY0Nhc3Q8SlNUZXN0R2xvYmFsT2JqZWN0Kj4oZGVjb2RlZFRoaXNWYWx1ZSk7CisgICAg
aWYgKFVOTElLRUxZKCFjYXN0ZWRUaGlzKSkgeworICAgICAgICByZXR1cm4gdGhyb3dHZXR0ZXJU
eXBlRXJyb3IoKnN0YXRlLCAiVGVzdEdsb2JhbE9iamVjdCIsICJwdWJsaWNBbmRQcml2YXRlQ29u
ZGl0aW9uYWxBdHRyaWJ1dGUiKTsKKyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMt
PndyYXBwZWQoKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nV2l0aENhY2hlKHN0YXRl
LCBpbXBsLnB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSgpKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRF
U1RfRkVBVFVSRSkKIEVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9iamVjdEVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVl
LCBQcm9wZXJ0eU5hbWUpCiB7CkBAIC0yMDYsNiArMjYzLDQyIEBAIGJvb2wgc2V0SlNUZXN0R2xv
YmFsT2JqZWN0UmVndWxhckF0dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1
ZSB0aGlzCiB9CiAKIAorYm9vbCBzZXRKU1Rlc3RHbG9iYWxPYmplY3RQdWJsaWNBbmRQcml2YXRl
QXR0cmlidXRlKEV4ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5j
b2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAg
ICBKU1Rlc3RHbG9iYWxPYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEds
b2JhbE9iamVjdCo+KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWNhc3RlZFRoaXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigq
c3RhdGUsICJUZXN0R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUiKTsK
KyAgICB9CisgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndyYXBwZWQoKTsKKyAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gdmFsdWUudG9XVEZTdHJpbmcoc3RhdGUpOworICAgIGlmIChVTkxJS0VM
WShzdGF0ZS0+aGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaW1w
bC5zZXRQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK2Jvb2wgc2V0
SlNUZXN0R2xvYmFsT2JqZWN0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlKEV4
ZWNTdGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUg
ZW5jb2RlZFZhbHVlKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZFZhbHVlKTsKKyAgICBVTlVTRURfUEFSQU0odGhpc1ZhbHVlKTsKKyAgICBKU1Rlc3RHbG9i
YWxPYmplY3QqIGNhc3RlZFRoaXMgPSBqc0R5bmFtaWNDYXN0PEpTVGVzdEdsb2JhbE9iamVjdCo+
KEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWNhc3RlZFRo
aXMpKSB7CisgICAgICAgIHJldHVybiB0aHJvd1NldHRlclR5cGVFcnJvcigqc3RhdGUsICJUZXN0
R2xvYmFsT2JqZWN0IiwgInB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZSIpOwor
ICAgIH0KKyAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOworICAgIGF1dG8g
bmF0aXZlVmFsdWUgPSB2YWx1ZS50b1dURlN0cmluZyhzdGF0ZSk7CisgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpbXBs
LnNldFB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZShXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFU1Rf
RkVBVFVSRSkKIGJvb2wgc2V0SlNUZXN0R2xvYmFsT2JqZWN0RW5hYmxlZEF0UnVudGltZUF0dHJp
YnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIEVuY29kZWRK
U1ZhbHVlIGVuY29kZWRWYWx1ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9iYWxPYmplY3QuaAppbmRl
eCAzOGI1YzBhMzY4YjQ1ZTQzZmNiZmI4NWZiZDNmZTBiZjVjYjdjZWNkLi41YzE3NzliYTQ2NDg2
MTc1ZmFlZjk2ZjgzYWRjYjcwY2Y5ZDk1OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0R2xvYmFsT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdEdsb2JhbE9iamVj
dC5oCkBAIC0zMSw2ICszMSw4IEBACiBXRUJLSVRfQ0xBU1NfQVZBSUxBQkxFX01BQyg5ODc2XzUp
CiBXRUJDT1JFX0VYUE9SVCBAaW50ZXJmYWNlIERPTVRlc3RHbG9iYWxPYmplY3QgOiBET01PYmpl
Y3QKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKnJlZ3VsYXJBdHRyaWJ1dGU7CitAcHJvcGVy
dHkgKGNvcHkpIE5TU3RyaW5nICpwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlOworQHByb3BlcnR5
IChjb3B5KSBOU1N0cmluZyAqcHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRlOwog
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZTsKIAog
LSAodm9pZClyZWd1bGFyT3BlcmF0aW9uOihOU1N0cmluZyAqKXRlc3RQYXJhbTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3RHbG9i
YWxPYmplY3QubW0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9E
T01UZXN0R2xvYmFsT2JqZWN0Lm1tCmluZGV4IDllYzRiZTFlOTcyMzA4ZmIyMzAwNjk4ODE1MGJi
NmI2ZTkwNDIzNzcuLjM0N2QwM2YxN2RkMzg0N2EyMzJmOTdmZjE1Y2RlNzYzMTE2NzNmMzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRl
c3RHbG9iYWxPYmplY3QubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L09iakMvRE9NVGVzdEdsb2JhbE9iamVjdC5tbQpAQCAtNjYsNiArNjYsMzIgQEAKICAgICBJ
TVBMLT5zZXRSZWd1bGFyQXR0cmlidXRlKG5ld1JlZ3VsYXJBdHRyaWJ1dGUpOwogfQogCistIChO
U1N0cmluZyAqKXB1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3JlOjpKU01h
aW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgcmV0dXJuIElNUEwtPnB1YmxpY0FuZFByaXZh
dGVBdHRyaWJ1dGUoKTsKK30KKworLSAodm9pZClzZXRQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRl
OihOU1N0cmluZyAqKW5ld1B1YmxpY0FuZFByaXZhdGVBdHRyaWJ1dGUKK3sKKyAgICBXZWJDb3Jl
OjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7CisgICAgSU1QTC0+c2V0UHVibGljQW5kUHJp
dmF0ZUF0dHJpYnV0ZShuZXdQdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlKTsKK30KKworI2lmIEVO
QUJMRShURVNUX0ZFQVRVUkUpCistIChOU1N0cmluZyAqKXB1YmxpY0FuZFByaXZhdGVDb25kaXRp
b25hbEF0dHJpYnV0ZQoreworICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKKyAgICByZXR1cm4gSU1QTC0+cHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRl
KCk7Cit9CisKKy0gKHZvaWQpc2V0UHVibGljQW5kUHJpdmF0ZUNvbmRpdGlvbmFsQXR0cmlidXRl
OihOU1N0cmluZyAqKW5ld1B1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZQorewor
ICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBJTVBMLT5zZXRQ
dWJsaWNBbmRQcml2YXRlQ29uZGl0aW9uYWxBdHRyaWJ1dGUobmV3UHVibGljQW5kUHJpdmF0ZUNv
bmRpdGlvbmFsQXR0cmlidXRlKTsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKIC0gKE5TU3RyaW5nICopZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmplY3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9iYWxPYmpl
Y3QuaWRsCmluZGV4IDA3MjBhNWNhZDBjYzRmYWM4NzhjYzUyZTA4Yzc1YWQwNDRmODRjNGQuLjVk
YzJjNmI1NThiMGI2Y2NhZGU2YTllZTM0YmZhODMwNWUwYzU3YzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5p
ZGwKQEAgLTI2LDYgKzI2LDggQEAKIC8vIFRoaXMgaW50ZXJmYWNlIGlzIHJlY29nbml6ZWQgYXMg
YSBnbG9iYWwgb2JqZWN0IGJ5IHRoZSBiaW5kaW5ncyBnZW5lcmF0b3IuCiBpbnRlcmZhY2UgVGVz
dEdsb2JhbE9iamVjdCB7CiAgICAgYXR0cmlidXRlIERPTVN0cmluZyByZWd1bGFyQXR0cmlidXRl
OworICAgIFtQcml2YXRlSWRlbnRpZmllciwgUHVibGljSWRlbnRpZmllcl0gYXR0cmlidXRlIERP
TVN0cmluZyBwdWJsaWNBbmRQcml2YXRlQXR0cmlidXRlOworICAgIFtDb25kaXRpb25hbD1URVNU
X0ZFQVRVUkUsIFByaXZhdGVJZGVudGlmaWVyLCBQdWJsaWNJZGVudGlmaWVyXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIHB1YmxpY0FuZFByaXZhdGVDb25kaXRpb25hbEF0dHJpYnV0ZTsKICAgICBbQ29u
ZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGU7CiAgICAgdm9pZCByZWd1
bGFyT3BlcmF0aW9uKERPTVN0cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNU
X0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>