<?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>83599</bug_id>
          
          <creation_ts>2012-04-10 11:49:39 -0700</creation_ts>
          <short_desc>Add TestNode.idl to run-binding-tests</short_desc>
          <delta_ts>2012-04-10 12:23:58 -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>New Bugs</component>
          <version>528+ (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="Adam Klein">adamk</reporter>
          <assigned_to name="Adam Klein">adamk</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>599450</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-10 11:49:39 -0700</bug_when>
    <thetext>Add TestNode.idl to run-binding-tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599451</commentid>
    <comment_count>1</comment_count>
      <attachid>136497</attachid>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-10 11:51:33 -0700</bug_when>
    <thetext>Created attachment 136497
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599455</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-10 11:55:16 -0700</bug_when>
    <thetext>Attachment 136497 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/bindings/scripts/test/ObjC/DOMTestNodeInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599456</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-10 11:55:46 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 136497 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
&gt; Source/WebCore/bindings/scripts/test/ObjC/DOMTestNodeInternal.h:32:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
&gt; Total errors found: 1 in 14 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

This lint error is consistent with the rest of the ObjC test files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>599493</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Klein">adamk</who>
    <bug_when>2012-04-10 12:23:58 -0700</bug_when>
    <thetext>Committed r113751: &lt;http://trac.webkit.org/changeset/113751&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>136497</attachid>
            <date>2012-04-10 11:51:33 -0700</date>
            <delta_ts>2012-04-10 12:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83599-20120410115132.patch</filename>
            <type>text/plain</type>
            <size>44777</size>
            <attacher name="Adam Klein">adamk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzNzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODIwNmE5ZjM0ODUzNmZj
ZTA0OWMxNzg1MThlYmIzNzJmYWZlNTAxYS4uNTdiZGVkYmYzMzhmZjlhZTg2NjIzNGM1MzBkYmVi
YmE4NGQxNDVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEyLTA0LTEwICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBUZXN0Tm9kZS5pZGwg
dG8gcnVuLWJpbmRpbmctdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgzNTk5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdE5vZGUuaWRsIGlzIGEgbWluaW1pemVkIHZlcnNpb24gb2YgTm9kZS5p
ZGwgd2l0aCBlbm91Z2ggYXR0cmlidXRlcworICAgICAgICB0byBleGVyY2lzZSBDb2RlR2VuZXJh
dG9yLnBtJ3MgaGFuZGxpbmcgb2YgTm9kZSBzdWJ0eXBlcy4KKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9DUFAvV2ViRE9NVGVzdE5vZGUuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3ROb2RlLmg6IEFkZGVkLgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3ROb2RlLmNwcDog
QWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9N
VGVzdE5vZGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmpl
Y3QvV2ViS2l0RE9NVGVzdE5vZGVQcml2YXRlLmg6IEFkZGVkLgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaDogQWRkZWQuCisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vZGUuaDogQWRkZWQuCisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vZGUubW06IEFkZGVkLgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlSW50ZXJuYWwuaDogQWRkZWQu
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3ROb2RlLmlkbDogQWRkZWQuCisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOiBBZGRlZC4K
KwogMjAxMi0wNC0xMCAgRGF2aWQgRG9yd2luICA8ZGRvcndpbkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgQWRkIEVuY3J5cHRlZCBNZWRpYSBFeHRlbnNpb25zIG1ldGhvZHMgdG8gSFRNTE1lZGlh
RWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0NQUC9XZWJET01UZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvQ1BQL1dlYkRPTVRlc3ROb2RlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jZTE0NDlhMDQ1ZTI5ZmYx
YzNjZTE1MTIzMDBiNWNlNTBlMGIyOTRjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Tm9kZS5jcHAKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3Vy
Y2UgcHJvamVjdC4KKyAqIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJXZWJET01UZXN0Tm9kZS5oIgorCisjaW5jbHVkZSAiVGVzdE5vZGUuaCIKKyNpbmNsdWRlICJX
ZWJFeGNlcHRpb25IYW5kbGVyLmgiCisjaW5jbHVkZSA8d3RmL0dldFB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKworV2ViRE9NVGVzdE5vZGU6OldlYkRPTVRlc3ROb2RlKCkKKyAgICA6
IFdlYkRPTU5vZGUoKQoreworfQorCitXZWJET01UZXN0Tm9kZTo6V2ViRE9NVGVzdE5vZGUoV2Vi
Q29yZTo6VGVzdE5vZGUqIGltcGwpCisgICAgOiBXZWJET01Ob2RlKGltcGwpCit7Cit9CisKK1dl
YkNvcmU6OlRlc3ROb2RlKiBXZWJET01UZXN0Tm9kZTo6aW1wbCgpIGNvbnN0Cit7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV2ViRE9NTm9kZTo6aW1wbCgpKTsK
K30KKworV2ViQ29yZTo6VGVzdE5vZGUqIHRvV2ViQ29yZShjb25zdCBXZWJET01UZXN0Tm9kZSYg
d3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlci5pbXBsKCk7Cit9CisKK1dlYkRPTVRlc3RO
b2RlIHRvV2ViS2l0KFdlYkNvcmU6OlRlc3ROb2RlKiB2YWx1ZSkKK3sKKyAgICByZXR1cm4gV2Vi
RE9NVGVzdE5vZGUodmFsdWUpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0NQUC9XZWJET01UZXN0Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzNjNm
MmRjMmRmMWYyYjg3ZDI3N2M2ZTYwMWI0ODczYWU1MzJkNTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvQ1BQL1dlYkRPTVRlc3ROb2RlLmgK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9u
IExpbWl0ZWQgMjAxMC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgU2FtdWVsIFdlaW5pZyA8c2FtLndlaW5pZ0Bn
bWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIw
MTAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgV2ViRE9NVGVzdE5vZGVfaAorI2RlZmlu
ZSBXZWJET01UZXN0Tm9kZV9oCisKKyNpbmNsdWRlIDxXZWJET01Ob2RlLmg+CisjaW5jbHVkZSA8
V2ViRE9NU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFRlc3ROb2RlOwor
fTsKKworCitjbGFzcyBXZWJET01UZXN0Tm9kZSA6IHB1YmxpYyBXZWJET01Ob2RlIHsKK3B1Ymxp
YzoKKyAgICBXZWJET01UZXN0Tm9kZSgpOworICAgIGV4cGxpY2l0IFdlYkRPTVRlc3ROb2RlKFdl
YkNvcmU6OlRlc3ROb2RlKik7CisgICAgdmlydHVhbCB+V2ViRE9NVGVzdE5vZGUoKSB7IH0KKwor
CisgICAgV2ViQ29yZTo6VGVzdE5vZGUqIGltcGwoKSBjb25zdDsKK307CisKK1dlYkNvcmU6OlRl
c3ROb2RlKiB0b1dlYkNvcmUoY29uc3QgV2ViRE9NVGVzdE5vZGUmKTsKK1dlYkRPTVRlc3ROb2Rl
IHRvV2ViS2l0KFdlYkNvcmU6OlRlc3ROb2RlKik7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5v
ZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2Vi
S2l0RE9NVGVzdE5vZGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ3NDg3NzM4MTczNGQ2NDVkMzNmOTNkOTU4
NzBlMmM1NzZiOWMzMDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01UZXN0Tm9kZS5jcHAKQEAgLTAsMCArMSwx
NzYgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJj
ZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUt
YmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
KyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdERPTVRlc3ROb2RlLmgiCisKKyNpbmNsdWRlICJET01PYmplY3RDYWNoZS5o
IgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHT2JqZWN0RXZlbnRMaXN0
ZW5lci5oIgorI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIlRl
c3ROb2RlLmgiCisjaW5jbHVkZSAiV2ViS2l0RE9NQmluZGluZy5oIgorI2luY2x1ZGUgIldlYktp
dERPTUV2ZW50UHJpdmF0ZS5oIgorI2luY2x1ZGUgIldlYktpdERPTUV2ZW50VGFyZ2V0LmgiCisj
aW5jbHVkZSAiZ29iamVjdC9Db252ZXJ0VG9VVEY4U3RyaW5nLmgiCisjaW5jbHVkZSAid2Via2l0
L1dlYktpdERPTVRlc3ROb2RlUHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdGRlZmluZXMuaCIK
KyNpbmNsdWRlICJ3ZWJraXRnbG9iYWxzcHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdG1hcnNo
YWwuaCIKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitXZWJLaXRE
T01UZXN0Tm9kZSoga2l0KFdlYkNvcmU6OlRlc3ROb2RlKiBvYmopCit7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwob2JqLCAwKTsKKworICAgIGlmIChncG9pbnRlciByZXQgPSBET01PYmplY3RD
YWNoZTo6Z2V0KG9iaikpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXRET01UZXN0
Tm9kZSo+KHJldCk7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0RE9NVGVzdE5vZGUq
PihET01PYmplY3RDYWNoZTo6cHV0KG9iaiwgV2ViS2l0Ojp3cmFwVGVzdE5vZGUob2JqKSkpOwor
fQorCitXZWJDb3JlOjpUZXN0Tm9kZSogY29yZShXZWJLaXRET01UZXN0Tm9kZSogcmVxdWVzdCkK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChyZXF1ZXN0LCAwKTsKKworICAgIFdlYkNvcmU6
OlRlc3ROb2RlKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5vZGUqPihX
RUJLSVRfRE9NX09CSkVDVChyZXF1ZXN0KS0+Y29yZU9iamVjdCk7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoY29yZU9iamVjdCwgMCk7CisKKyAgICByZXR1cm4gY29yZU9iamVjdDsKK30KKwor
V2ViS2l0RE9NVGVzdE5vZGUqIHdyYXBUZXN0Tm9kZShXZWJDb3JlOjpUZXN0Tm9kZSogY29yZU9i
amVjdCkKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChjb3JlT2JqZWN0LCAwKTsKKworICAg
IC8vIFdlIGNhbGwgcmVmKCkgcmF0aGVyIHRoYW4gdXNpbmcgYSBDKysgc21hcnQgcG9pbnRlciBi
ZWNhdXNlIHdlIGNhbid0IHN0b3JlIGEgQysrIG9iamVjdAorICAgIC8vIGluIGEgQy1hbGxvY2F0
ZWQgR09iamVjdCBzdHJ1Y3R1cmUuIFNlZSB0aGUgZmluYWxpemUoKSBjb2RlIGZvciB0aGUgbWF0
Y2hpbmcgZGVyZWYoKS4KKyAgICBjb3JlT2JqZWN0LT5yZWYoKTsKKworICAgIHJldHVybiBXRUJL
SVRfRE9NX1RFU1RfTk9ERShnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfRE9NX1RFU1RfTk9ERSwg
ImNvcmUtb2JqZWN0IiwgY29yZU9iamVjdCwgTlVMTCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfZGlzcGF0Y2hfZXZlbnQo
V2ViS2l0RE9NRXZlbnRUYXJnZXQqIHRhcmdldCwgV2ViS2l0RE9NRXZlbnQqIGV2ZW50LCBHRXJy
b3IqKiBlcnJvcikKK3sKKyAgICBXZWJDb3JlOjpFdmVudCogY29yZUV2ZW50ID0gV2ViS2l0Ojpj
b3JlKGV2ZW50KTsKKyAgICBXZWJDb3JlOjpUZXN0Tm9kZSogY29yZVRhcmdldCA9IHN0YXRpY19j
YXN0PFdlYkNvcmU6OlRlc3ROb2RlKj4oV0VCS0lUX0RPTV9PQkpFQ1QodGFyZ2V0KS0+Y29yZU9i
amVjdCk7CisKKyAgICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBjb3JlVGFy
Z2V0LT5kaXNwYXRjaEV2ZW50KGNvcmVFdmVudCwgZWMpOworICAgIGlmIChlYykgeworICAgICAg
ICBXZWJDb3JlOjpFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24gZGVzY3JpcHRpb24oZWMpOworICAg
ICAgICBnX3NldF9lcnJvcl9saXRlcmFsKGVycm9yLCBnX3F1YXJrX2Zyb21fc3RyaW5nKCJXRUJL
SVRfRE9NIiksIGRlc2NyaXB0aW9uLmNvZGUsIGRlc2NyaXB0aW9uLm5hbWUpOworICAgIH0KK30K
Kworc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9ub2RlX2FkZF9ldmVudF9saXN0ZW5l
cihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFyKiBldmVudE5hbWUsIEdD
YWxsYmFjayBoYW5kbGVyLCBnYm9vbGVhbiBidWJibGUsIGdwb2ludGVyIHVzZXJEYXRhKQorewor
ICAgIFdlYkNvcmU6OlRlc3ROb2RlKiBjb3JlVGFyZ2V0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
VGVzdE5vZGUqPihXRUJLSVRfRE9NX09CSkVDVCh0YXJnZXQpLT5jb3JlT2JqZWN0KTsKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6R09iamVjdEV2ZW50TGlzdGVuZXI6OmFkZEV2ZW50TGlzdGVuZXIoR19P
QkpFQ1QodGFyZ2V0KSwgY29yZVRhcmdldCwgZXZlbnROYW1lLCBoYW5kbGVyLCBidWJibGUsIHVz
ZXJEYXRhKTsKK30KKworc3RhdGljIGdib29sZWFuIHdlYmtpdF9kb21fdGVzdF9ub2RlX3JlbW92
ZV9ldmVudF9saXN0ZW5lcihXZWJLaXRET01FdmVudFRhcmdldCogdGFyZ2V0LCBjb25zdCBjaGFy
KiBldmVudE5hbWUsIEdDYWxsYmFjayBoYW5kbGVyLCBnYm9vbGVhbiBidWJibGUpCit7CisgICAg
V2ViQ29yZTo6VGVzdE5vZGUqIGNvcmVUYXJnZXQgPSBzdGF0aWNfY2FzdDxXZWJDb3JlOjpUZXN0
Tm9kZSo+KFdFQktJVF9ET01fT0JKRUNUKHRhcmdldCktPmNvcmVPYmplY3QpOworICAgIHJldHVy
biBXZWJDb3JlOjpHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihHX09C
SkVDVCh0YXJnZXQpLCBjb3JlVGFyZ2V0LCBldmVudE5hbWUsIGhhbmRsZXIsIGJ1YmJsZSk7Cit9
CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fZXZlbnRfdGFyZ2V0X2luaXQoV2ViS2l0RE9NRXZl
bnRUYXJnZXRJZmFjZSogaWZhY2UpCit7CisgICAgaWZhY2UtPmRpc3BhdGNoX2V2ZW50ID0gd2Vi
a2l0X2RvbV90ZXN0X25vZGVfZGlzcGF0Y2hfZXZlbnQ7CisgICAgaWZhY2UtPmFkZF9ldmVudF9s
aXN0ZW5lciA9IHdlYmtpdF9kb21fdGVzdF9ub2RlX2FkZF9ldmVudF9saXN0ZW5lcjsKKyAgICBp
ZmFjZS0+cmVtb3ZlX2V2ZW50X2xpc3RlbmVyID0gd2Via2l0X2RvbV90ZXN0X25vZGVfcmVtb3Zl
X2V2ZW50X2xpc3RlbmVyOworfQorCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERShXZWJLaXRET01U
ZXN0Tm9kZSwgd2Via2l0X2RvbV90ZXN0X25vZGUsIFdFQktJVF9UWVBFX0RPTV9OT0RFLCBHX0lN
UExFTUVOVF9JTlRFUkZBQ0UoV0VCS0lUX1RZUEVfRE9NX0VWRU5UX1RBUkdFVCwgd2Via2l0X2Rv
bV9ldmVudF90YXJnZXRfaW5pdCkpCisKK2VudW0geworICAgIFBST1BfMCwKK307CisKK3N0YXRp
YyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ub2RlX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKK3sK
KworICAgIFdlYktpdERPTU9iamVjdCogZG9tT2JqZWN0ID0gV0VCS0lUX0RPTV9PQkpFQ1Qob2Jq
ZWN0KTsKKyAgICAKKyAgICBpZiAoZG9tT2JqZWN0LT5jb3JlT2JqZWN0KSB7CisgICAgICAgIFdl
YkNvcmU6OlRlc3ROb2RlKiBjb3JlT2JqZWN0ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5v
ZGUqPihkb21PYmplY3QtPmNvcmVPYmplY3QpOworCisgICAgICAgIFdlYktpdDo6RE9NT2JqZWN0
Q2FjaGU6OmZvcmdldChjb3JlT2JqZWN0KTsKKyAgICAgICAgY29yZU9iamVjdC0+ZGVyZWYoKTsK
KworICAgICAgICBkb21PYmplY3QtPmNvcmVPYmplY3QgPSAwOworICAgIH0KKworCisgICAgR19P
QkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X25vZGVfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUo
b2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X2RvbV90ZXN0X25vZGVfc2V0X3Byb3Bl
cnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJvcGVydHlJZCwgY29uc3QgR1ZhbHVlKiB2YWx1
ZSwgR1BhcmFtU3BlYyogcHNwZWMpCit7CisgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0
YXRlIHN0YXRlOworICAgIHN3aXRjaCAocHJvcGVydHlJZCkgeworICAgIGRlZmF1bHQ6CisgICAg
ICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BlcnR5SWQs
IHBzcGVjKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCisKK3N0YXRpYyB2b2lkIHdlYmtp
dF9kb21fdGVzdF9ub2RlX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3Bl
cnR5SWQsIEdWYWx1ZSogdmFsdWUsIEdQYXJhbVNwZWMqIHBzcGVjKQoreworICAgIFdlYkNvcmU6
OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0ZTsKKyAgICBzd2l0Y2ggKHByb3BlcnR5SWQpIHsK
KyAgICBkZWZhdWx0OgorICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wZXJ0eUlkLCBwc3BlYyk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwor
CitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9jb25zdHJ1Y3RlZChHT2JqZWN0KiBv
YmplY3QpCit7CisKKyAgICBpZiAoR19PQkpFQ1RfQ0xBU1Mod2Via2l0X2RvbV90ZXN0X25vZGVf
cGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQpCisgICAgICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF9kb21fdGVzdF9ub2RlX3BhcmVudF9jbGFzcyktPmNvbnN0cnVjdGVkKG9iamVjdCk7Cit9CisK
K3N0YXRpYyB2b2lkIHdlYmtpdF9kb21fdGVzdF9ub2RlX2NsYXNzX2luaXQoV2ViS2l0RE9NVGVz
dE5vZGVDbGFzcyogcmVxdWVzdENsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENs
YXNzID0gR19PQkpFQ1RfQ0xBU1MocmVxdWVzdENsYXNzKTsKKyAgICBnb2JqZWN0Q2xhc3MtPmZp
bmFsaXplID0gd2Via2l0X2RvbV90ZXN0X25vZGVfZmluYWxpemU7CisgICAgZ29iamVjdENsYXNz
LT5zZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9zZXRfcHJvcGVydHk7CisgICAg
Z29iamVjdENsYXNzLT5nZXRfcHJvcGVydHkgPSB3ZWJraXRfZG9tX3Rlc3Rfbm9kZV9nZXRfcHJv
cGVydHk7CisgICAgZ29iamVjdENsYXNzLT5jb25zdHJ1Y3RlZCA9IHdlYmtpdF9kb21fdGVzdF9u
b2RlX2NvbnN0cnVjdGVkOworCisKKworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfZG9tX3Rlc3Rf
bm9kZV9pbml0KFdlYktpdERPTVRlc3ROb2RlKiByZXF1ZXN0KQoreworfQorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvR09iamVjdC9XZWJLaXRET01U
ZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0dPYmplY3Qv
V2ViS2l0RE9NVGVzdE5vZGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTJmZDhkYzdkNmFlMmY0ZTRhMDcwM2Mz
MWI0NDQzMTNiMjEzYmZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5vZGUuaApAQCAtMCwwICsxLDUw
IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBXZWJLaXQgb3BlbiBzb3VyY2Ug
cHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJp
bmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAgTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
ICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICAgIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICAgWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAgICBCb3N0
b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgV2ViS2l0RE9NVGVzdE5vZGVf
aAorI2RlZmluZSBXZWJLaXRET01UZXN0Tm9kZV9oCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5o
PgorI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01Ob2RlLmg+CisjaW5jbHVkZSA8d2Via2l0L3dl
YmtpdGRlZmluZXMuaD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0ZG9tZGVmaW5lcy5oPgorCitH
X0JFR0lOX0RFQ0xTCisjZGVmaW5lIFdFQktJVF9UWVBFX0RPTV9URVNUX05PREUgICAgICAgICAg
ICAod2Via2l0X2RvbV90ZXN0X25vZGVfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9U
RVNUX05PREUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTk9ERSwgV2ViS2l0RE9NVGVzdE5vZGUpKQorI2RlZmlu
ZSBXRUJLSVRfRE9NX1RFU1RfTk9ERV9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFT
U19DQVNUKChrbGFzcyksICBXRUJLSVRfVFlQRV9ET01fVEVTVF9OT0RFLCBXZWJLaXRET01UZXN0
Tm9kZUNsYXNzKQorI2RlZmluZSBXRUJLSVRfRE9NX0lTX1RFU1RfTk9ERShvYmopICAgICAgICAg
KEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBXRUJLSVRfVFlQRV9ET01fVEVTVF9O
T0RFKSkKKyNkZWZpbmUgV0VCS0lUX0RPTV9JU19URVNUX05PREVfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgV0VCS0lUX1RZUEVfRE9NX1RFU1RfTk9ERSkp
CisjZGVmaW5lIFdFQktJVF9ET01fVEVTVF9OT0RFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lO
U1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIFdFQktJVF9UWVBFX0RPTV9URVNUX05PREUsIFdlYktp
dERPTVRlc3ROb2RlQ2xhc3MpKQorCitzdHJ1Y3QgX1dlYktpdERPTVRlc3ROb2RlIHsKKyAgICBX
ZWJLaXRET01Ob2RlIHBhcmVudF9pbnN0YW5jZTsKK307CisKK3N0cnVjdCBfV2ViS2l0RE9NVGVz
dE5vZGVDbGFzcyB7CisgICAgV2ViS2l0RE9NTm9kZUNsYXNzIHBhcmVudF9jbGFzczsKK307CisK
K1dFQktJVF9BUEkgR1R5cGUKK3dlYmtpdF9kb21fdGVzdF9ub2RlX2dldF90eXBlICh2b2lkKTsK
KworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3ROb2RlX2ggKi8KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktp
dERPTVRlc3ROb2RlUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0dPYmplY3QvV2ViS2l0RE9NVGVzdE5vZGVQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNGI0NmM5
NGY4ODIzMDk5ZjVmYzQ5NWI1Y2EwNTBmMzIyMDY0NGM4NgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9HT2JqZWN0L1dlYktpdERPTVRlc3RO
b2RlUHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQg
b2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVl
biBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKwor
I2lmbmRlZiBXZWJLaXRET01UZXN0Tm9kZVByaXZhdGVfaAorI2RlZmluZSBXZWJLaXRET01UZXN0
Tm9kZVByaXZhdGVfaAorCisjaW5jbHVkZSAiVGVzdE5vZGUuaCIKKyNpbmNsdWRlIDxnbGliLW9i
amVjdC5oPgorI2luY2x1ZGUgPHdlYmtpdC9XZWJLaXRET01Ob2RlLmg+CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworV2ViS2l0RE9NVGVzdE5vZGUqIHdyYXBUZXN0Tm9kZShXZWJDb3JlOjpUZXN0Tm9k
ZSopOworV2ViQ29yZTo6VGVzdE5vZGUqIGNvcmUoV2ViS2l0RE9NVGVzdE5vZGUqIHJlcXVlc3Qp
OworV2ViS2l0RE9NVGVzdE5vZGUqIGtpdChXZWJDb3JlOjpUZXN0Tm9kZSogbm9kZSk7Cit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8qIFdlYktpdERPTVRlc3ROb2RlUHJpdmF0ZV9o
ICovCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0Tm9kZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM5OTY2MWM1NTI5ZDgyNWExZmQ3MmExZjQ2Yjhh
ZTMwZTIxMzM1NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAgICBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgICAg
VGhpcyBmaWxlIGhhcyBiZWVuIGdlbmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8g
Tk9UIE1PRElGWSEKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKwor
ICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAg
SWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNUZXN0Tm9k
ZS5oIgorCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkpTRE9NQmluZGlu
Zy5oIgorI2luY2x1ZGUgIlRlc3ROb2RlLmgiCisjaW5jbHVkZSA8cnVudGltZS9FcnJvci5oPgor
I2luY2x1ZGUgPHd0Zi9HZXRQdHIuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitBU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKEpTVGVzdE5vZGUpOwor
LyogSGFzaCB0YWJsZSAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0Tm9k
ZVRhYmxlVmFsdWVzW10gPQoreworICAgIHsgImNvbnN0cnVjdG9yIiwgRG9udEVudW0gfCBSZWFk
T25seSwgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3ROb2RlQ29uc3RydWN0b3IpLCAoaW50cHRyX3QpMCwgTm9JbnRyaW5zaWMgfSwKKyAgICB7
IDAsIDAsIDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUg
SlNUZXN0Tm9kZVRhYmxlID0geyAyLCAxLCBKU1Rlc3ROb2RlVGFibGVWYWx1ZXMsIDAgfTsKKy8q
IEhhc2ggdGFibGUgZm9yIGNvbnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KK3sKKyAgICB7IDAsIDAs
IDAsIDAsIE5vSW50cmluc2ljIH0KK307CisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yVGFibGUgPSB7IDEsIDAsIEpTVGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxl
VmFsdWVzLCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpzX2lu
Zm8gPSB7ICJUZXN0Tm9kZUNvbnN0cnVjdG9yIiwgJkJhc2U6OnNfaW5mbywgJkpTVGVzdE5vZGVD
b25zdHJ1Y3RvclRhYmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVDb25zdHJ1
Y3RvcikgfTsKKworSlNUZXN0Tm9kZUNvbnN0cnVjdG9yOjpKU1Rlc3ROb2RlQ29uc3RydWN0b3Io
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCisg
ICAgOiBET01Db25zdHJ1Y3Rvck9iamVjdChzdHJ1Y3R1cmUsIGdsb2JhbE9iamVjdCkKK3sKK30K
Kwordm9pZCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIEFTU0VSVChpbmhlcml0cygmc19p
bmZvKSk7CisgICAgcHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlO
YW1lcygpLnByb3RvdHlwZSwgSlNUZXN0Tm9kZVByb3RvdHlwZTo6c2VsZihleGVjLCBnbG9iYWxP
YmplY3QpLCBEb250RGVsZXRlIHwgUmVhZE9ubHkpOworICAgIHB1dERpcmVjdChleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGpzTnVtYmVyKDApLCBSZWFk
T25seSB8IERvbnREZWxldGUgfCBEb250RW51bSk7Cit9CisKK2Jvb2wgSlNUZXN0Tm9kZUNvbnN0
cnVjdG9yOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQorewor
ICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNUZXN0Tm9kZUNvbnN0cnVjdG9yLCBKU0RP
TVdyYXBwZXI+KGV4ZWMsICZKU1Rlc3ROb2RlQ29uc3RydWN0b3JUYWJsZSwganNDYXN0PEpTVGVz
dE5vZGVDb25zdHJ1Y3Rvcio+KGNlbGwpLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOworfQorCitib29s
IEpTVGVzdE5vZGVDb25zdHJ1Y3Rvcjo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3IpCit7CisgICAgcmV0dXJuIGdldFN0YXRp
Y1ZhbHVlRGVzY3JpcHRvcjxKU1Rlc3ROb2RlQ29uc3RydWN0b3IsIEpTRE9NV3JhcHBlcj4oZXhl
YywgJkpTVGVzdE5vZGVDb25zdHJ1Y3RvclRhYmxlLCBqc0Nhc3Q8SlNUZXN0Tm9kZUNvbnN0cnVj
dG9yKj4ob2JqZWN0KSwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yKTsKK30KKworRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBKU1Rlc3ROb2RlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVz
dE5vZGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTVGVzdE5vZGVDb25zdHJ1Y3RvciogY2Fz
dGVkVGhpcyA9IGpzQ2FzdDxKU1Rlc3ROb2RlQ29uc3RydWN0b3IqPihleGVjLT5jYWxsZWUoKSk7
CisgICAgUmVmUHRyPFRlc3ROb2RlPiBvYmplY3QgPSBUZXN0Tm9kZTo6Y3JlYXRlKCk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShhc09iamVjdCh0b0pTKGV4ZWMsIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpLCBvYmplY3QuZ2V0KCkpKSk7Cit9CisKK0NvbnN0cnVjdFR5cGUgSlNUZXN0
Tm9kZUNvbnN0cnVjdG9yOjpnZXRDb25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEm
IGNvbnN0cnVjdERhdGEpCit7CisgICAgY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24gPSBj
b25zdHJ1Y3RKU1Rlc3ROb2RlOworICAgIHJldHVybiBDb25zdHJ1Y3RUeXBlSG9zdDsKK30KKwor
LyogSGFzaCB0YWJsZSBmb3IgcHJvdG90eXBlICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3ROb2RlUHJvdG90eXBlVGFibGVWYWx1ZXNbXSA9Cit7CisgICAgeyAwLCAwLCAw
LCAwLCBOb0ludHJpbnNpYyB9Cit9OworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdE5v
ZGVQcm90b3R5cGVUYWJsZSA9IHsgMSwgMCwgSlNUZXN0Tm9kZVByb3RvdHlwZVRhYmxlVmFsdWVz
LCAwIH07Citjb25zdCBDbGFzc0luZm8gSlNUZXN0Tm9kZVByb3RvdHlwZTo6c19pbmZvID0geyAi
VGVzdE5vZGVQcm90b3R5cGUiLCAmQmFzZTo6c19pbmZvLCAmSlNUZXN0Tm9kZVByb3RvdHlwZVRh
YmxlLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGVQcm90b3R5cGUpIH07CisKK0pT
T2JqZWN0KiBKU1Rlc3ROb2RlUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSogZXhlYywgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpT
VGVzdE5vZGU+KGV4ZWMsIGdsb2JhbE9iamVjdCk7Cit9CisKK2NvbnN0IENsYXNzSW5mbyBKU1Rl
c3ROb2RlOjpzX2luZm8gPSB7ICJUZXN0Tm9kZSIsICZCYXNlOjpzX2luZm8sICZKU1Rlc3ROb2Rl
VGFibGUsIDAgLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE5vZGUpIH07CisKK0pTVGVzdE5v
ZGU6OkpTVGVzdE5vZGUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE5vZGU+IGltcGwpCisgICAgOiBKU05vZGUoc3Ry
dWN0dXJlLCBnbG9iYWxPYmplY3QsIGltcGwpCit7Cit9CisKK3ZvaWQgSlNUZXN0Tm9kZTo6Zmlu
aXNoQ3JlYXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgIEFTU0VSVChpbmhlcml0cygmc19pbmZvKSk7Cit9
CisKK0pTT2JqZWN0KiBKU1Rlc3ROb2RlOjpjcmVhdGVQcm90b3R5cGUoRXhlY1N0YXRlKiBleGVj
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIHJldHVybiBKU1Rlc3ROb2Rl
UHJvdG90eXBlOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QsIEpTVGVz
dE5vZGVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShleGVjLT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdCwgSlNOb2RlUHJvdG90eXBlOjpzZWxmKGV4ZWMsIGdsb2JhbE9iamVjdCkpKTsKK30K
KworYm9vbCBKU1Rlc3ROb2RlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBjZWxsLCBFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90
JiBzbG90KQoreworICAgIEpTVGVzdE5vZGUqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0Tm9k
ZSo+KGNlbGwpOworICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgJnNf
aW5mbyk7CisgICAgcmV0dXJuIGdldFN0YXRpY1ZhbHVlU2xvdDxKU1Rlc3ROb2RlLCBCYXNlPihl
eGVjLCAmSlNUZXN0Tm9kZVRhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwor
fQorCitib29sIEpTVGVzdE5vZGU6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQoreworICAgIEpTVGVzdE5vZGUqIHRoaXNP
YmplY3QgPSBqc0Nhc3Q8SlNUZXN0Tm9kZSo+KG9iamVjdCk7CisgICAgQVNTRVJUX0dDX09CSkVD
VF9JTkhFUklUUyh0aGlzT2JqZWN0LCAmc19pbmZvKTsKKyAgICByZXR1cm4gZ2V0U3RhdGljVmFs
dWVEZXNjcmlwdG9yPEpTVGVzdE5vZGUsIEJhc2U+KGV4ZWMsICZKU1Rlc3ROb2RlVGFibGUsIHRo
aXNPYmplY3QsIHByb3BlcnR5TmFtZSwgZGVzY3JpcHRvcik7Cit9CisKK0pTVmFsdWUganNUZXN0
Tm9kZUNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3Qg
SWRlbnRpZmllciYpCit7CisgICAgSlNUZXN0Tm9kZSogZG9tT2JqZWN0ID0ganNDYXN0PEpTVGVz
dE5vZGUqPihhc09iamVjdChzbG90QmFzZSkpOworICAgIHJldHVybiBKU1Rlc3ROb2RlOjpnZXRD
b25zdHJ1Y3RvcihleGVjLCBkb21PYmplY3QtPmdsb2JhbE9iamVjdCgpKTsKK30KKworSlNWYWx1
ZSBKU1Rlc3ROb2RlOjpnZXRDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGVz
dE5vZGVDb25zdHJ1Y3Rvcj4oZXhlYywganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KSk7Cit9CisKKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWY4NzA2ZmQzN2NlMmZlNWZm
MTNjYTU5MTc5NWYyM2M0MGViMTViMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmgKQEAgLTAsMCArMSwxMTcgQEAK
Ky8qCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9q
ZWN0LgorICAgIFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGlu
Z3MucGwuIERPIE5PVCBNT0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv
dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3Rvbiwg
TUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBKU1Rlc3ROb2RlX2gKKyNkZWZpbmUg
SlNUZXN0Tm9kZV9oCisKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJKU05v
ZGUuaCIKKyNpbmNsdWRlICJUZXN0Tm9kZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvSlNPYmplY3Qu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBKU1Rlc3ROb2RlIDogcHVibGljIEpT
Tm9kZSB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU05vZGUgQmFzZTsKKyAgICBzdGF0aWMgSlNU
ZXN0Tm9kZSogY3JlYXRlKEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTRE9NR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFBhc3NSZWZQdHI8VGVzdE5vZGU+IGltcGwpCisgICAgeworICAg
ICAgICBKU1Rlc3ROb2RlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxsPEpT
VGVzdE5vZGU+KGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmhlYXApKSBKU1Rlc3ROb2RlKHN0
cnVjdHVyZSwgZ2xvYmFsT2JqZWN0LCBpbXBsKTsKKyAgICAgICAgcHRyLT5maW5pc2hDcmVhdGlv
bihnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIHJldHVybiBwdHI7CisgICAg
fQorCisgICAgc3RhdGljIEpTQzo6SlNPYmplY3QqIGNyZWF0ZVByb3RvdHlwZShKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNDOjpKU0NlbGwqLCBKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6SWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDOjpQcm9wZXJ0eURlc2Ny
aXB0b3ImKTsKKyAgICBzdGF0aWMgY29uc3QgSlNDOjpDbGFzc0luZm8gc19pbmZvOworCisgICAg
c3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1Zh
bHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpT
Qzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisKKyAgICBz
dGF0aWMgSlNDOjpKU1ZhbHVlIGdldENvbnN0cnVjdG9yKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpK
U0dsb2JhbE9iamVjdCopOworICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
SlNDOjpTbG90VmlzaXRvciYpOworCitwcm90ZWN0ZWQ6CisgICAgSlNUZXN0Tm9kZShKU0M6OlN0
cnVjdHVyZSosIEpTRE9NR2xvYmFsT2JqZWN0KiwgUGFzc1JlZlB0cjxUZXN0Tm9kZT4pOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpKU0dsb2JhbERhdGEmKTsKKyAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBKU0M6Ok92ZXJyaWRlc0dldE93blByb3BlcnR5
U2xvdCB8IEpTQzo6T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbiB8IEJhc2U6OlN0cnVjdHVyZUZsYWdz
OworfTsKKworCitjbGFzcyBKU1Rlc3ROb2RlUHJvdG90eXBlIDogcHVibGljIEpTQzo6SlNOb25G
aW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBKU0M6OkpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKKyAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6SlNHbG9iYWxPYmplY3QqKTsKKyAgICBzdGF0aWMgSlNUZXN0Tm9kZVByb3RvdHlwZSogY3Jl
YXRlKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgeworICAgICAgICBK
U1Rlc3ROb2RlUHJvdG90eXBlKiBwdHIgPSBuZXcgKE5vdE51bGwsIEpTQzo6YWxsb2NhdGVDZWxs
PEpTVGVzdE5vZGVQcm90b3R5cGU+KGdsb2JhbERhdGEuaGVhcCkpIEpTVGVzdE5vZGVQcm90b3R5
cGUoZ2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUpOworICAgICAgICBwdHItPmZp
bmlzaENyZWF0aW9uKGdsb2JhbERhdGEpOworICAgICAgICByZXR1cm4gcHRyOworICAgIH0KKwor
ICAgIHN0YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6
U3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlw
ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERh
dGEsIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlw
ZSwgU3RydWN0dXJlRmxhZ3MpLCAmc19pbmZvKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgSlNU
ZXN0Tm9kZVByb3RvdHlwZShKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6U3RydWN0dXJlKiBzdHJ1Y3R1cmUpIDogSlNDOjpKU05vbkZpbmFs
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSkgeyB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNWaXNpdENoaWxk
cmVuIHwgQmFzZTo6U3RydWN0dXJlRmxhZ3M7Cit9OworCitjbGFzcyBKU1Rlc3ROb2RlQ29uc3Ry
dWN0b3IgOiBwdWJsaWMgRE9NQ29uc3RydWN0b3JPYmplY3QgeworcHJpdmF0ZToKKyAgICBKU1Rl
c3ROb2RlQ29uc3RydWN0b3IoSlNDOjpTdHJ1Y3R1cmUqLCBKU0RPTUdsb2JhbE9iamVjdCopOwor
ICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVj
dCopOworCitwdWJsaWM6CisgICAgdHlwZWRlZiBET01Db25zdHJ1Y3Rvck9iamVjdCBCYXNlOwor
ICAgIHN0YXRpYyBKU1Rlc3ROb2RlQ29uc3RydWN0b3IqIGNyZWF0ZShKU0M6OkV4ZWNTdGF0ZSog
ZXhlYywgSlNDOjpTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKKyAgICB7CisgICAgICAgIEpTVGVzdE5vZGVDb25zdHJ1Y3RvciogcHRyID0gbmV3
IChOb3ROdWxsLCBKU0M6OmFsbG9jYXRlQ2VsbDxKU1Rlc3ROb2RlQ29uc3RydWN0b3I+KCpleGVj
LT5oZWFwKCkpKSBKU1Rlc3ROb2RlQ29uc3RydWN0b3Ioc3RydWN0dXJlLCBnbG9iYWxPYmplY3Qp
OworICAgICAgICBwdHItPmZpbmlzaENyZWF0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCk7CisgICAg
ICAgIHJldHVybiBwdHI7CisgICAgfQorCisgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlT
bG90KEpTQzo6SlNDZWxsKiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZpZXIm
LCBKU0M6OlByb3BlcnR5U2xvdCYpOworICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU0M6OkpTT2JqZWN0KiwgSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50
aWZpZXImLCBKU0M6OlByb3BlcnR5RGVzY3JpcHRvciYpOworICAgIHN0YXRpYyBjb25zdCBKU0M6
OkNsYXNzSW5mbyBzX2luZm87CisgICAgc3RhdGljIEpTQzo6U3RydWN0dXJlKiBjcmVhdGVTdHJ1
Y3R1cmUoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIHByb3RvdHlwZSkKKyAgICB7CisgICAgICAgIHJl
dHVybiBKU0M6OlN0cnVjdHVyZTo6Y3JlYXRlKGdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBKU0M6OlR5cGVJbmZvKEpTQzo6T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCAm
c19pbmZvKTsKKyAgICB9Citwcm90ZWN0ZWQ6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gSlNDOjpPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3QgfCBKU0M6Oklt
cGxlbWVudHNIYXNJbnN0YW5jZSB8IERPTUNvbnN0cnVjdG9yT2JqZWN0OjpTdHJ1Y3R1cmVGbGFn
czsKKyAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTVGVzdE5vZGUoSlNDOjpFeGVjU3RhdGUqKTsKKyAgICBzdGF0aWMgSlNDOjpDb25zdHJ1Y3RU
eXBlIGdldENvbnN0cnVjdERhdGEoSlNDOjpKU0NlbGwqLCBKU0M6OkNvbnN0cnVjdERhdGEmKTsK
K307CisKKy8vIEF0dHJpYnV0ZXMKKworSlNDOjpKU1ZhbHVlIGpzVGVzdE5vZGVDb25zdHJ1Y3Rv
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNWYWx1ZSwgY29uc3QgSlNDOjpJZGVudGlmaWVyJik7
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVzdE5vZGUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5kMjk4Yzc4YjRmNGZkZGI2Y2QwNzI5NWE4ODRmZmNjZGFiNGE1Y2MyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L09iakMvRE9NVGVz
dE5vZGUuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2VpbmlnQGdtYWlsLmNv
bT4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2ltcG9ydCA8V2ViQ29yZS9ET01Ob2RlLmg+CisKKyNpZiBXRUJLSVRfVkVS
U0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworQGludGVyZmFjZSBE
T01UZXN0Tm9kZSA6IERPTU5vZGUKK0BlbmQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01UZXN0Tm9kZS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlLm1tCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjFhNjU3ZDg1ZTExYWRkYWIxYTlmNWRjMGRmMmI1ODEzMjI0NmQ0MDUKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvT2JqQy9ET01U
ZXN0Tm9kZS5tbQpAQCAtMCwwICsxLDYxIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICogVGhpcyBmaWxlIGhhcyBiZWVuIGdl
bmVyYXRlZCBieSBnZW5lcmF0ZS1iaW5kaW5ncy5wbC4gRE8gTk9UIE1PRElGWSEKKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJET01JbnRlcm5hbC5oIgorCisjaW1wb3J0ICJE
T01UZXN0Tm9kZS5oIgorCisjaW1wb3J0ICJET01CbG9iSW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRP
TUNTU1J1bGVJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NQ1NTVmFsdWVJbnRlcm5hbC5oIgorI2lt
cG9ydCAiRE9NRXZlbnRJbnRlcm5hbC5oIgorI2ltcG9ydCAiRE9NTm9kZUludGVybmFsLmgiCisj
aW1wb3J0ICJET01TdHlsZVNoZWV0SW50ZXJuYWwuaCIKKyNpbXBvcnQgIkRPTVRlc3ROb2RlSW50
ZXJuYWwuaCIKKyNpbXBvcnQgIkV4Y2VwdGlvbkhhbmRsZXJzLmgiCisjaW1wb3J0ICJKU01haW5U
aHJlYWRFeGVjU3RhdGUuaCIKKyNpbXBvcnQgIlRlc3ROb2RlLmgiCisjaW1wb3J0ICJUaHJlYWRD
aGVjay5oIgorI2ltcG9ydCAiV2ViU2NyaXB0T2JqZWN0UHJpdmF0ZS5oIgorI2ltcG9ydCA8d3Rm
L0dldFB0ci5oPgorCisjZGVmaW5lIElNUEwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6VGVzdE5vZGUq
PihyZWludGVycHJldF9jYXN0PFdlYkNvcmU6Ok5vZGUqPihfaW50ZXJuYWwpKQorCitAaW1wbGVt
ZW50YXRpb24gRE9NVGVzdE5vZGUKKworQGVuZAorCitXZWJDb3JlOjpUZXN0Tm9kZSogY29yZShE
T01UZXN0Tm9kZSAqd3JhcHBlcikKK3sKKyAgICByZXR1cm4gd3JhcHBlciA/IHJlaW50ZXJwcmV0
X2Nhc3Q8V2ViQ29yZTo6VGVzdE5vZGUqPih3cmFwcGVyLT5faW50ZXJuYWwpIDogMDsKK30KKwor
RE9NVGVzdE5vZGUgKmtpdChXZWJDb3JlOjpUZXN0Tm9kZSogdmFsdWUpCit7CisgICAgeyBET01f
QVNTRVJUX01BSU5fVEhSRUFEKCk7IFdlYkNvcmVUaHJlYWRWaW9sYXRpb25DaGVja1JvdW5kT25l
KCk7IH07CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERPTVRlc3ROb2RlKj4oa2l0KHN0YXRpY19j
YXN0PFdlYkNvcmU6Ok5vZGUqPih2YWx1ZSkpKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlSW50ZXJuYWwuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9PYmpDL0RPTVRlc3ROb2RlSW50ZXJu
YWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mZWYyNzU3MGU0MTA4ZGVhYmI0M2M2NGNhZjVhZTVjMzQyMmFjNmFk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L09iakMvRE9NVGVzdE5vZGVJbnRlcm5hbC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBUaGlz
IGZpbGUgaXMgcGFydCBvZiB0aGUgV2ViS2l0IG9wZW4gc291cmNlIHByb2plY3QuCisgKiBUaGlz
IGZpbGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1Qg
TU9ESUZZIQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW1wb3J0IDxXZWJDb3JlL0RPTVRlc3ROb2RlLmg+CisKKyNpZiBX
RUJLSVRfVkVSU0lPTl9NQVhfQUxMT1dFRCA+PSBXRUJLSVRfVkVSU0lPTl9MQVRFU1QKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIFRlc3ROb2RlOworfQorCitXZWJDb3JlOjpUZXN0
Tm9kZSogY29yZShET01UZXN0Tm9kZSAqKTsKK0RPTVRlc3ROb2RlICpraXQoV2ViQ29yZTo6VGVz
dE5vZGUqKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdE5vZGUuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3ROb2RlLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zMjE2MjFjZGM2NjQ3Yzk0NGMwOGE0OTg5
OTA5ZTFmNDM5ZDhhNWQ5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3ROb2RlLmlkbApAQCAtMCwwICsxLDMwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiBTYW11ZWwgV2VpbmlnIDxzYW0ud2Vpbmln
QGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworbW9kdWxlIHRlc3QgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgRXZl
bnRUYXJnZXQsCisgICAgICAgIENvbnN0cnVjdG9yLAorICAgICAgICBWOERlcGVuZGVudExpZmV0
aW1lCisgICAgXSBUZXN0Tm9kZSA6IE5vZGUgeworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lZDE1OWQ5ZmYxYjhhZGMwODMwZmI5NzgwNDk4MWQ4ZDAxOTYxMTZiCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5vZGUuY3BwCkBAIC0wLDAgKzEsMTQ2IEBACisvKgorICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBXZWJLaXQgb3BlbiBzb3VyY2UgcHJvamVjdC4KKyAgICBUaGlzIGZpbGUgaGFzIGJlZW4g
Z2VuZXJhdGVkIGJ5IGdlbmVyYXRlLWJpbmRpbmdzLnBsLiBETyBOT1QgTU9ESUZZIQorCisgICAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisg
ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0g
U3VpdGUgMzMwLAorICAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlY4VGVzdE5vZGUuaCIKKworI2luY2x1ZGUgIlJ1bnRp
bWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJWOEJpbmRpbmcuaCIKKyNpbmNsdWRlICJW
OEJpbmRpbmdTdGF0ZS5oIgorI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1ZGUgIlY4
SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhOb2RlLmgiCisjaW5jbHVkZSAiVjhQcm94
eS5oIgorI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK1dyYXBwZXJUeXBlSW5mbyBWOFRlc3ROb2RlOjppbmZvID0geyBWOFRlc3ROb2RlOjpHZXRU
ZW1wbGF0ZSwgVjhUZXN0Tm9kZTo6ZGVyZWZPYmplY3QsIDAsICZWOE5vZGU6OmluZm8gfTsKKwor
bmFtZXNwYWNlIFRlc3ROb2RlSW50ZXJuYWwgeworCit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9p
ZCBWOF9VU0UoVCkgeyB9CisKK30gLy8gbmFtZXNwYWNlIFRlc3ROb2RlSW50ZXJuYWwKKwordjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5vZGU6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBJTkNfU1RBVFMoIkRPTS5UZXN0Tm9kZS5Db25z
dHJ1Y3RvciIpOworCisgICAgaWYgKCFhcmdzLklzQ29uc3RydWN0Q2FsbCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dFcnJvcigiRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVk
IGFzIGEgZnVuY3Rpb24uIiwgVjhQcm94eTo6VHlwZUVycm9yKTsKKworICAgIGlmIChDb25zdHJ1
Y3Rvck1vZGU6OmN1cnJlbnQoKSA9PSBDb25zdHJ1Y3Rvck1vZGU6OldyYXBFeGlzdGluZ09iamVj
dCkKKyAgICAgICAgcmV0dXJuIGFyZ3MuSG9sZGVyKCk7CisKKyAgICBSZWZQdHI8VGVzdE5vZGU+
IGltcGwgPSBUZXN0Tm9kZTo6Y3JlYXRlKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3
cmFwcGVyID0gYXJncy5Ib2xkZXIoKTsKKworICAgIFY4RE9NV3JhcHBlcjo6c2V0RE9NV3JhcHBl
cih3cmFwcGVyLCAmaW5mbywgaW1wbC5nZXQoKSk7CisgICAgVjhET01XcmFwcGVyOjpzZXRKU1dy
YXBwZXJGb3JET01Ob2RlKGltcGwucmVsZWFzZSgpLCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Pjo6TmV3KHdyYXBwZXIpKTsKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKworc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2Rl
VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRlc2MpCit7Cisg
ICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKKworICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0
dXJlPiBkZWZhdWx0U2lnbmF0dXJlOworICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCAiVGVzdE5vZGUiLCBWOE5vZGU6OkdldFRlbXBsYXRlKCksIFY4VGVzdE5v
ZGU6OmludGVybmFsRmllbGRDb3VudCwKKyAgICAgICAgMCwgMCwKKyAgICAgICAgMCwgMCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3
aWxsIG5vdCBiZSB1c2VkLgorICAgIGRlc2MtPlNldENhbGxIYW5kbGVyKFY4VGVzdE5vZGU6OmNv
bnN0cnVjdG9yQ2FsbGJhY2spOworICAgIAorCisgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBs
YXRlCisgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRl
KCkpOworICAgIHJldHVybiBkZXNjOworfQorCit2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUoKQoreworICAgIFY4QmluZGluZ1Bl
cklzb2xhdGVEYXRhKiBkYXRhID0gVjhCaW5kaW5nUGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKTsK
KyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAh
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT5z
ZWNvbmQ7CisKKyAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CisgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoKTsK
KyAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOworICAgIHJldHVy
biB0ZW1wbDsKK30KKwordjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE5vZGU6OkdldFRlbXBsYXRlKCkKK3sKKyAgICBWOEJpbmRpbmdQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4QmluZGluZ1Blcklzb2xhdGVEYXRhOjpjdXJyZW50KCk7CisgICAgVjhCaW5kaW5nUGVy
SXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0
ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
KS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIHJlc3VsdC0+c2Vjb25kOworCisgICAgdjg6OkhhbmRs
ZVNjb3BlIGhhbmRsZVNjb3BlOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiB0ZW1wbCA9CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShHZXRSYXdU
ZW1wbGF0ZSgpKTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwor
ICAgIHJldHVybiB0ZW1wbDsKK30KKworYm9vbCBWOFRlc3ROb2RlOjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCit7CisgICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKCkt
Pkhhc0luc3RhbmNlKHZhbHVlKTsKK30KKworCit2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4VGVz
dE5vZGU6OndyYXBTbG93KFBhc3NSZWZQdHI8VGVzdE5vZGU+IGltcGwpCit7CisgICAgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyOworICAgIFY4UHJveHkqIHByb3h5ID0gVjhQcm94eTo6
cmV0cmlldmUoaW1wbC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSk7CisKKyAgICAvLyBFbnRlciB0aGUg
bm9kZSdzIGNvbnRleHQgYW5kIGNyZWF0ZSB0aGUgd3JhcHBlciBpbiB0aGF0IGNvbnRleHQuCisg
ICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKKyAgICBpZiAocHJveHkgJiYgIXBy
b3h5LT5tYXRjaGVzQ3VycmVudENvbnRleHQoKSkgeworICAgICAgICAvLyBGb3IgcGVyZm9ybWFu
Y2UsIHdlIGVudGVyIHRoZSBjb250ZXh0IG9ubHkgaWYgdGhlIGN1cnJlbnRseSBydW5uaW5nIGNv
bnRleHQKKyAgICAgICAgLy8gaXMgZGlmZmVyZW50IGZyb20gdGhlIGNvbnRleHQgdGhhdCB3ZSBh
cmUgYWJvdXQgdG8gZW50ZXIuCisgICAgICAgIGNvbnRleHQgPSBwcm94eS0+Y29udGV4dCgpOwor
ICAgICAgICBpZiAoIWNvbnRleHQuSXNFbXB0eSgpKQorICAgICAgICAgICAgY29udGV4dC0+RW50
ZXIoKTsKKyAgICB9CisgICAgd3JhcHBlciA9IFY4RE9NV3JhcHBlcjo6aW5zdGFudGlhdGVWOE9i
amVjdChwcm94eSwgJmluZm8sIGltcGwuZ2V0KCkpOworICAgIC8vIEV4aXQgdGhlIG5vZGUncyBj
b250ZXh0IGlmIGl0IHdhcyBlbnRlcmVkLgorICAgIGlmICghY29udGV4dC5Jc0VtcHR5KCkpCisg
ICAgICAgIGNvbnRleHQtPkV4aXQoKTsKKyAgICBpZiAoVU5MSUtFTFkod3JhcHBlci5Jc0VtcHR5
KCkpKQorICAgICAgICByZXR1cm4gd3JhcHBlcjsKKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpP
YmplY3Q+IHdyYXBwZXJIYW5kbGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0Pjo6TmV3KHdy
YXBwZXIpOworCisgICAgaWYgKCFoYXNEZXBlbmRlbnRMaWZldGltZSkKKyAgICAgICAgd3JhcHBl
ckhhbmRsZS5NYXJrSW5kZXBlbmRlbnQoKTsKKyAgICB3cmFwcGVySGFuZGxlLlNldFdyYXBwZXJD
bGFzc0lkKHY4RE9NU3VidHJlZUNsYXNzSWQpOworICAgIGdldERPTU5vZGVNYXAoKS5zZXQoaW1w
bC5sZWFrUmVmKCksIHdyYXBwZXJIYW5kbGUpOworICAgIHJldHVybiB3cmFwcGVyOworfQorCit2
b2lkIFY4VGVzdE5vZGU6OmRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKK3sKKyAgICBzdGF0aWNf
Y2FzdDxUZXN0Tm9kZSo+KG9iamVjdCktPmRlcmVmKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Tm9kZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ4MDJiMDczMjNjZDhlZGNjMThjYTEzODdmMjMwNDU5
NTI5YjFjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgICAgVGhpcyBm
aWxlIGlzIHBhcnQgb2YgdGhlIFdlYktpdCBvcGVuIHNvdXJjZSBwcm9qZWN0LgorICAgIFRoaXMg
ZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgZ2VuZXJhdGUtYmluZGluZ3MucGwuIERPIE5PVCBN
T0RJRlkhCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBU
ZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CisqLworCisjaWZuZGVmIFY4VGVzdE5vZGVfaAorI2RlZmluZSBWOFRlc3ROb2RlX2gKKworI2lu
Y2x1ZGUgIlRlc3ROb2RlLmgiCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSAi
V3JhcHBlclR5cGVJbmZvLmgiCisjaW5jbHVkZSA8djguaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBWOFRlc3ROb2RlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgYm9v
bCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IHRydWU7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+KTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKCk7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSgpOworICAgIHN0YXRpYyBU
ZXN0Tm9kZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCisgICAgewor
ICAgICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0Tm9kZSo+KG9iamVjdC0+R2V0UG9p
bnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CisgICAgfQor
ICAgIGlubGluZSBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROb2RlKik7
CisgICAgc3RhdGljIHZvaWQgZGVyZWZPYmplY3Qodm9pZCopOworICAgIHN0YXRpYyBXcmFwcGVy
VHlwZUluZm8gaW5mbzsKKyAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVj
dG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyBjb25zdCBpbnQg
aW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCAr
IDA7Citwcml2YXRlOgorICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBTbG93
KFBhc3NSZWZQdHI8VGVzdE5vZGU+KTsKK307CisKK3Y4OjpIYW5kbGU8djg6Ok9iamVjdD4gVjhU
ZXN0Tm9kZTo6d3JhcChUZXN0Tm9kZSogaW1wbCkKK3sKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRDYWNoZWRXcmFwcGVyKGltcGwpOwor
ICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHdyYXBw
ZXI7CisgICAgcmV0dXJuIFY4VGVzdE5vZGU6OndyYXBTbG93KGltcGwpOworfQorCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5vZGUqIGltcGwpCit7CisgICAgaWYgKCFp
bXBsKQorICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKKyAgICByZXR1cm4gVjhUZXN0Tm9kZTo6
d3JhcChpbXBsKTsKK30KK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVm
UHRyPCBUZXN0Tm9kZSA+IGltcGwpCit7CisgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSk7Cit9
CisKK30KKworI2VuZGlmIC8vIFY4VGVzdE5vZGVfaAo=
</data>
<flag name="review"
          id="141317"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>