<?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>93308</bug_id>
          
          <creation_ts>2012-08-06 16:31:55 -0700</creation_ts>
          <short_desc>[chromium] Convert WebScrollbarThemeGeometry from a concrete class to an interface</short_desc>
          <delta_ts>2012-08-06 20:00:31 -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="Adrienne Walker">enne</reporter>
          <assigned_to name="Adrienne Walker">enne</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enne</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>688546</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:31:55 -0700</bug_when>
    <thetext>[chromium] Convert WebScrollbarThemeGeometry from a concrete class to an interface</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688551</commentid>
    <comment_count>1</comment_count>
      <attachid>156790</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 16:39:19 -0700</bug_when>
    <thetext>Created attachment 156790
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688555</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 16:42:03 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688585</commentid>
    <comment_count>3</comment_count>
      <attachid>156790</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-06 17:07:09 -0700</bug_when>
    <thetext>Comment on attachment 156790
Patch

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

&gt; Source/WebCore/platform/chromium/support/WebScrollbarThemeGeometryNative.h:29
&gt; +#include &quot;ScrollbarThemeComposite.h&quot;

mind moving this#include to the .cpp? You don&apos;t deref this type in any inline functions, so a forward decl would work here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688598</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 17:22:04 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 156790 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=156790&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/chromium/support/WebScrollbarThemeGeometryNative.h:29
&gt; &gt; +#include &quot;ScrollbarThemeComposite.h&quot;
&gt; 
&gt; mind moving this#include to the .cpp? You don&apos;t deref this type in any inline functions, so a forward decl would work here

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688599</commentid>
    <comment_count>5</comment_count>
      <attachid>156807</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-08-06 17:22:12 -0700</bug_when>
    <thetext>Created attachment 156807
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688727</commentid>
    <comment_count>6</comment_count>
      <attachid>156807</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 20:00:26 -0700</bug_when>
    <thetext>Comment on attachment 156807
Patch for landing

Clearing flags on attachment: 156807

Committed r124839: &lt;http://trac.webkit.org/changeset/124839&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688728</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 20:00:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156790</attachid>
            <date>2012-08-06 16:39:19 -0700</date>
            <delta_ts>2012-08-06 17:22:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93308-20120806163855.patch</filename>
            <type>text/plain</type>
            <size>56751</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3MTNlYTIzNTQ1ZGRi
MzNlYjllMDkyN2RkODM2ZWQzMmQzYWY1NTk5Li44NWYzMjkyZDJlNTE2MGY0N2M1YzgyNGRkNDUz
MWE3MzFkYTUxMjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0wNiAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q29udmVydCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGZyb20gYSBjb25jcmV0ZSBjbGFzcyB0
byBhbiBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkzMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQ29udmVydCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IHRvIGJlIGFuIGludGVyZmFj
ZS4gVXBkYXRlCisgICAgICAgIFdlYlNjcm9sbGJhckxheWVyIHRvIHRha2UgYSBwb2ludGVyIHRv
IHRoaXMgaW50ZXJmYWNlLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJh
ckxheWVyLmg6CisgICAgICAgIChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnkpOgorCiAyMDEyLTA4LTAzICBOaWNvIFdlYmVyICA8dGhha2lzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBBUEkgdG8gbWFrZSBpdCBwb3Nz
aWJsZSB0byByZXF1ZXN0IGFsbCB2YXJpYW50cyBvZiBhIFdlYkltYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDczYjAyODEyYzlhNDk0NDhjMjQ1NDgwMGMwYjVmN2Q1MjQwMzFlMS4uOTM5OWJiNzIxYWMyMTM1
M2QxY2IxM2ZlNTYzM2I1YzVjMTYzMDZlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisy
MDEyLTA4LTA2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAg
W2Nocm9taXVtXSBDb252ZXJ0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgZnJvbSBhIGNvbmNy
ZXRlIGNsYXNzIHRvIGFuIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgdG8gYmUg
YW4gaW50ZXJmYWNlLiBDcmVhdGUgYSBuZXcKKyAgICAgICAgV2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeU5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB0byB3cmFwIGEgbmF0aXZlIHRoZW1lCisgICAgICAg
IHBvaW50ZXIuCisKKyAgICAgICAgVXBkYXRlIFNjcm9sbGJhckxheWVyQ2hyb21pdW0vQ0NTY3Jv
bGxiYXJMYXllckltcGwgdG8gdXNlIGEgcG9pbnRlciB0bworICAgICAgICB0aGlzIGludGVyZmFj
ZSByYXRoZXIgdGhhbiBhIGNvbmNyZXRlIG1lbWJlciB2YXJpYWJsZS4gQmVjYXVzZSBib3RoCisg
ICAgICAgIGxheWVyIHR5cGVzIG5lZWQgdG8gYWNjZXNzIHRoZSB0aGVtZSBkdXJpbmcgcGFpbnRp
bmcgb3IgY29tcG9zaXRpbmcKKyAgICAgICAgYW5kIGVpdGhlciBsYXllciBjb3VsZCBnbyBhd2F5
IGF0IGFueSB0aW1lLCB0aGUgdGhlbWUgaXMgY2xvbmVkIGR1cmluZworICAgICAgICBjb21taXQg
cmF0aGVyIHRoYW4gZGVhbGluZyB3aXRoIHJlZmNvdW50aW5nIGFjcm9zcyB0aHJlYWRzIG9yIGhh
dmluZworICAgICAgICBvbmUgbGF5ZXIgdHlwZSBiZSB0aGUgc29sZSBvd25lci4KKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNj
cm9sbGJhckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5jcHAuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0
aXZlOjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Y2xvbmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6dGh1bWJMZW5ndGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFj
a1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5h
dGl2ZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeU5hdGl2ZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjptaW5pbXVtVGh1bWJMZW5ndGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpzY3Jv
bGxiYXJUaGlja25lc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5TmF0aXZlOjpiYWNrQnV0dG9uU3RhcnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6YmFja0J1dHRvbkVuZFJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpmb3J3YXJkQnV0dG9uU3Rh
cnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2
ZTo6Zm9yd2FyZEJ1dHRvbkVuZFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJU
aGVtZUdlb21ldHJ5TmF0aXZlOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6c3BsaXRUcmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhckxheWVyQ2hyb21pdW06OlNjcm9sbGJhckxheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpTY3JvbGxiYXJCYWNrZ3Jv
dW5kUGFpbnRlcik6CisgICAgICAgIChTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OlNjcm9sbGJhclRodW1iUGFpbnRlcik6Cisg
ICAgICAgIChTY3JvbGxiYXJUaHVtYlBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFNjcm9sbGJhckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRTY3JvbGxiYXJHZW9tZXRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsYmFyRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2Nyb2xsYmFy
R2VvbWV0cnkpOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorCiAyMDEyLTA4LTA2
ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNZWRpYVNv
dXJjZSBzaG91bGQgdXNlIGl0J3Mgb3duIGxpc3Qgb2Ygc291cmNlIFVSTHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNiNzRiYjdjMDFlNzVkNzViOWQxNzc5OWQ0MTk4
OC4uMGI3MTg4ZDlkYjYzZjFlZjgxNmM0MjU3ZWFlMmYyYzQwYWMxZWUzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOCBAQAogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fs
a2VyICA8ZW5uZUBnb29nbGUuY29tPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5IGZyb20gYSBjb25jcmV0ZSBjbGFzcyB0byBhbiBpbnRlcmZh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm93IHRo
YXQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBjYW4gaGF2ZSBkaWZmZXJlbnQgaW1wbGVtZW50
YXRpb25zLAorICAgICAgICBjcmVhdGUgYSBGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBm
b3IgdGVzdGluZyBwdXJwb3NlcyByYXRoZXIKKyAgICAgICAgdGhhbiBqdXN0IG92ZXJyaWRpbmcg
YSBnZW9tZXRyeS1yZWxhdGVkIHZpcnR1YWwuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAg
ICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJMYXllci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUpOgorICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9GYWtl
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJLaXQ6
OkZha2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OjpjcmVhdGUpOgorICAgICAgICAqIHRlc3Rz
L1Njcm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorCisyMDEyLTA4LTA2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKICAg
ICAgICAgW2Nocm9taXVtXSBSRUdSRVNTSU9OKHIxMjQ3MTQpOiB3ZWJraXRfdW5pdF90ZXN0cyBh
c3NlcnRzIGluIERlYnVnCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzI5NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNjcm9sbGJhckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNjcm9sbGJhckxheWVyLmgKaW5kZXggOWQ3N2FhNzYzNjMxYjZkYWI2ZTJkZWIwMzYxNGI1
NTg5YWIzMjE1Ni4uMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5
ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFNjcm9sbExheWVyKGNvbnN0IFdlYkxheWVyKTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFy
KiwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KTsK
KyAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhcios
IFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5Pik7CiAgICAgZXhwbGljaXQgV2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+Jik7CiAgICAgV2ViU2Nyb2xs
YmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4mKTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgK
aW5kZXggMjc3OGQ1Y2ZiMzZkZTdhZTVmMWMxMGRjOTI0YTE1OTc5YjMwZDUxOC4uMGE4NTYyZTc4
N2YyY2I2ZmE5ZDg2ZWU2ZjU4Y2E3NDkxMWViNTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgK
QEAgLTI4LDU1ICsyOCwzMSBAQAogCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTsKLX07Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTY3JvbGxiYXI7CiAKIGNsYXNzIFdlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnkgewogcHVibGljOgotICAgIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkoKSA6
IG1fdGhlbWUoMCkgeyB9Ci0KLSAgICBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KGNvbnN0IFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnkmIGdlb21ldHJ5KSB7IGFzc2lnbihnZW9tZXRyeSk7IH0K
ICAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KCkgeyB9Ci0gICAgV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnkmIGdlb21ldHJ5KQotICAgIHsKLSAgICAgICAgYXNzaWduKGdlb21ldHJ5KTsKLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gbV90aGVtZTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgdGh1bWJQb3Np
dGlvbihXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQT1JUIGludCB0aHVtYkxlbmd0aChX
ZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQT1JUIGludCB0cmFja1Bvc2l0aW9uKFdlYlNj
cm9sbGJhciopOwotICAgIFdFQktJVF9FWFBPUlQgaW50IHRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJh
ciopOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciopOwot
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNUaHVtYihXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciopOwotICAgIFdFQktJVF9F
WFBPUlQgV2ViUmVjdCB0aHVtYlJlY3QoV2ViU2Nyb2xsYmFyKik7Ci0gICAgV0VCS0lUX0VYUE9S
VCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFdlYlNjcm9sbGJhciopOwotICAgIFdFQktJVF9FWFBP
UlQgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlJlY3QgYmFja0J1dHRvblN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJlY3QgYmFja0J1dHRvbkVuZFJlY3QoV2ViU2Nyb2xsYmFyKik7Ci0gICAg
V0VCS0lUX0VYUE9SVCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFy
Kik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNj
cm9sbGJhciopOwotICAgIFdFQktJVF9FWFBPUlQgV2ViUmVjdCBjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJlY3QmKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFj
aywgV2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNr
KTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqKTsKLSNlbmRp
ZgogCi1wcml2YXRlOgotICAgIC8vIFRoZSB0aGVtZSBpcyBub3Qgb3duZWQgYnkgdGhpcyBjbGFz
cy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB0aGVtZSBpcyBhCi0gICAgLy8gc3RhdGljIHBvaW50
ZXIgYW5kIGl0cyBsaWZldGltZSBpcyBlc3NlbnRpYWxseSBpbmZpbml0ZS4gT25seSB0aHJlYWQt
c2FmZQotICAgIC8vIGZ1bmN0aW9ucyBvbiB0aGUgdGhlbWUgY2FuIGJlIGNhbGxlZCBieSB0aGlz
IHRoZW1lLgotICAgIFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiBtX3RoZW1lOwor
ICAgIHZpcnR1YWwgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogY2xvbmUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihXZWJTY3JvbGxiYXIqKSA9IDA7CisgICAg
dmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwg
aW50IHRyYWNrUG9zaXRpb24oV2ViU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwgaW50IHRy
YWNrTGVuZ3RoKFdlYlNjcm9sbGJhciopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9u
cyhXZWJTY3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFdlYlNjcm9s
bGJhciopID0gMDsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciop
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJSZWN0KFdlYlNjcm9sbGJhciopID0gMDsK
KyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKSA9IDA7Cisg
ICAgdmlydHVhbCBXZWJSZWN0IGJhY2tCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikgPSAw
OworICAgIHZpcnR1YWwgV2ViUmVjdCBiYWNrQnV0dG9uRW5kUmVjdChXZWJTY3JvbGxiYXIqKSA9
IDA7CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xs
YmFyKikgPSAwOworICAgIHZpcnR1YWwgV2ViUmVjdCBmb3J3YXJkQnV0dG9uRW5kUmVjdChXZWJT
Y3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBXZWJSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRv
VHJhY2tQaWVjZXMoV2ViU2Nyb2xsYmFyKiwgY29uc3QgV2ViUmVjdCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFjaywg
V2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNrKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNDZl
NTcxYjYyM2Q3ZjY0OTJhZTAyMzBhYzY2NjVjYjIzZGRhNzZmLi40ZDQ4OWY2ZDRkYjA1ZWEwOTU1
ZTI0YTI3N2QzYmI5OWI0OTcyZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MjI5LDYgKzgyMjks
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViUHJlcmVuZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJSVENDb25maWd1cmF0aW9uLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2No
cm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IGUxODBjZWZjNzc5
NmUwNjhkYzk5NTU0MGJiMmVjYTQwOTdmN2M4YTEuLmUyZmM3NjE4N2U0ZjlkMGMzNzUwY2I2ZGQ3
ODgzZmY0NTA0ZTNkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhci5oPgpAQCAtMTQzLDkgKzE0NCw5
IEBAIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxi
YXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9sbGJh
ciB0aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCiAgICAgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lQ29tcG9zaXRlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUqPihzY3JvbGxiYXItPnRoZW1lKCkpOwogICAgIFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUpOwotICAgIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBnZW9tZXRyeSh0aGVtZUNvbXBvc2l0ZSk7CisgICAg
T3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3NpdGUp
KTsKIAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xsYmFy
TGF5ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5KTsKKyAgICBXZWJTY3Jv
bGxiYXJMYXllciBzY3JvbGxiYXJMYXllciA9IFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoc2Ny
b2xsYmFyLCBwYWludGVyLCBnZW9tZXRyeS5yZWxlYXNlKCkpOwogICAgIHNjcm9sbGJhckxheWVy
LnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAogICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9NZWRpYShzY3JvbGxiYXJMYXllci51bndyYXA8TGF5ZXJDaHJvbWl1
bT4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5jNjFiZDZmMjI4OWVjMTFmMzdkY2I5MTZjMGQwMDcyZTQ4YzQ4MGU1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmNwcApAQCAtMCwwICsxLDE1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlOYXRpdmUuaCIKKworI2luY2x1ZGUgIldlYlNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJTY3JvbGxiYXIuaD4KKwordXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitQYXNzT3duUHRyPFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZT4gV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eU5hdGl2ZTo6Y3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiB0aGVtZSkK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRp
dmUodGhlbWUpKTsKK30KKworV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6V2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZShXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZSogdGhlbWUpCisgICAgOiBtX3RoZW1lKHRoZW1lKQoreworfQorCitXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlKiBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjbG9uZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG5ldyBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZl
KG1fdGhlbWUpOworfQorCitpbnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6dGh1
bWJQb3NpdGlvbihXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJU
aGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhlbWUtPnRo
dW1iUG9zaXRpb24oJmNsaWVudCk7Cit9CisKK2ludCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5
TmF0aXZlOjp0aHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJT
Y3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1f
dGhlbWUtPnRodW1iTGVuZ3RoKCZjbGllbnQpOworfQorCitpbnQgV2ViU2Nyb2xsYmFyVGhlbWVH
ZW9tZXRyeU5hdGl2ZTo6dHJhY2tQb3NpdGlvbihXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sK
KyAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAg
cmV0dXJuIG1fdGhlbWUtPnRyYWNrUG9zaXRpb24oJmNsaWVudCk7Cit9CisKK2ludCBXZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFja0xlbmd0aChXZWJTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJh
cik7CisgICAgcmV0dXJuIG1fdGhlbWUtPnRyYWNrTGVuZ3RoKCZjbGllbnQpOworfQorCitib29s
IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6Omhhc0J1dHRvbnMoV2ViU2Nyb2xsYmFy
KiBzY3JvbGxiYXIpCit7CisgICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsIGNsaWVudChz
Y3JvbGxiYXIpOworICAgIHJldHVybiBtX3RoZW1lLT5oYXNCdXR0b25zKCZjbGllbnQpOworfQor
Citib29sIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6Omhhc1RodW1iKFdlYlNjcm9s
bGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGll
bnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+aGFzVGh1bWIoJmNsaWVudCk7Cit9
CisKK1dlYlJlY3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6dHJhY2tSZWN0KFdl
YlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+dHJhY2tSZWN0KCZjbGll
bnQpOworfQorCitXZWJSZWN0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6OnRodW1i
UmVjdChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNs
aWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhlbWUtPnRodW1iUmVj
dCgmY2xpZW50KTsKK30KKworaW50IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6Om1p
bmltdW1UaHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3Jv
bGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhl
bWUtPm1pbmltdW1UaHVtYkxlbmd0aCgmY2xpZW50KTsKK30KKworaW50IFdlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlOYXRpdmU6OnNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJh
cik7CisgICAgcmV0dXJuIG1fdGhlbWUtPnNjcm9sbGJhclRoaWNrbmVzcyhjbGllbnQuY29udHJv
bFNpemUoKSk7Cit9CisKK1dlYlJlY3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6
YmFja0J1dHRvblN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJT
Y3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1f
dGhlbWUtPmJhY2tCdXR0b25SZWN0KCZjbGllbnQsIEJhY2tCdXR0b25TdGFydFBhcnQsIGZhbHNl
KTsKK30KKworV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpiYWNrQnV0
dG9uRW5kUmVjdChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJU
aGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhlbWUtPmJh
Y2tCdXR0b25SZWN0KCZjbGllbnQsIEJhY2tCdXR0b25FbmRQYXJ0LCBmYWxzZSk7Cit9CisKK1dl
YlJlY3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Zm9yd2FyZEJ1dHRvblN0YXJ0
UmVjdChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNs
aWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhlbWUtPmZvcndhcmRC
dXR0b25SZWN0KCZjbGllbnQsIEZvcndhcmRCdXR0b25TdGFydFBhcnQsIGZhbHNlKTsKK30KKwor
V2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpmb3J3YXJkQnV0dG9uRW5k
UmVjdChXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNs
aWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0dXJuIG1fdGhlbWUtPmZvcndhcmRC
dXR0b25SZWN0KCZjbGllbnQsIEZvcndhcmRCdXR0b25FbmRQYXJ0LCBmYWxzZSk7Cit9CisKK1dl
YlJlY3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Y29uc3RyYWluVHJhY2tSZWN0
VG9UcmFja1BpZWNlcyhXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgV2ViUmVjdCYgcmVj
dCkKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7
CisgICAgcmV0dXJuIG1fdGhlbWUtPmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoJmNs
aWVudCwgSW50UmVjdChyZWN0KSk7Cit9CisKK3ZvaWQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eU5hdGl2ZTo6c3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgV2ViUmVj
dCYgd2ViVHJhY2ssIFdlYlJlY3QmIHdlYlN0YXJ0VHJhY2ssIFdlYlJlY3QmIHdlYlRodW1iLCBX
ZWJSZWN0JiB3ZWJFbmRUcmFjaykKK3sKKyAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwg
Y2xpZW50KHNjcm9sbGJhcik7CisgICAgSW50UmVjdCB0cmFjayh3ZWJUcmFjayk7CisgICAgSW50
UmVjdCBzdGFydFRyYWNrOworICAgIEludFJlY3QgdGh1bWI7CisgICAgSW50UmVjdCBlbmRUcmFj
azsKKyAgICBtX3RoZW1lLT5zcGxpdFRyYWNrKCZjbGllbnQsIHRyYWNrLCBzdGFydFRyYWNrLCB0
aHVtYiwgZW5kVHJhY2spOworCisgICAgd2ViU3RhcnRUcmFjayA9IHN0YXJ0VHJhY2s7CisgICAg
d2ViVGh1bWIgPSB0aHVtYjsKKyAgICB3ZWJFbmRUcmFjayA9IGVuZFRyYWNrOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5TmF0aXZlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjRkNTljNTRkZmU3YzA5NDU5N2YwMWQ4ZGZiZjc2ODJi
NTYwNTNiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL3N1cHBvcnQvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oCkBAIC0wLDAgKzEs
NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmVfaAor
I2RlZmluZSBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlX2gKKworI2luY2x1ZGUgIlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oPgorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViU2Nyb2xsYmFyOworCitjbGFzcyBXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlIDogcHVibGljIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRp
dmU+IGNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSopOworCisgICAgLy8g
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBvdmVycmlkZXMKKyAgICB2aXJ0dWFsIFdlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnlOYXRpdmUqIGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBpbnQgdGh1bWJQb3NpdGlvbihXZWJTY3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGludCB0aHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGludCB0cmFja1Bvc2l0aW9uKFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwg
aW50IHRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBo
YXNUaHVtYihXZWJTY3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdHJh
Y2tSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViUmVjdCB0aHVt
YlJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRo
dW1iTGVuZ3RoKFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9s
bGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlJl
Y3QgYmFja0J1dHRvblN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIFdlYlJlY3QgYmFja0J1dHRvbkVuZFJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNj
cm9sbGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViUmVjdCBjb25zdHJhaW5UcmFja1Jl
Y3RUb1RyYWNrUGllY2VzKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0
JiB0cmFjaywgV2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVu
ZFRyYWNrKSBPVkVSUklERTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBXZWJTY3JvbGxiYXJU
aGVtZUdlb21ldHJ5TmF0aXZlKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKik7CisK
KyAgICAvLyBUaGUgdGhlbWUgaXMgbm90IG93bmVkIGJ5IHRoaXMgY2xhc3MuIEl0IGlzIGFzc3Vt
ZWQgdGhhdCB0aGUgdGhlbWUgaXMgYQorICAgIC8vIHN0YXRpYyBwb2ludGVyIGFuZCBpdHMgbGlm
ZXRpbWUgaXMgZXNzZW50aWFsbHkgaW5maW5pdGUuIE9ubHkgdGhyZWFkLXNhZmUKKyAgICAvLyBm
dW5jdGlvbnMgb24gdGhlIHRoZW1lIGNhbiBiZSBjYWxsZWQgYnkgdGhpcyB0aGVtZS4KKyAgICBX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZSogbV90aGVtZTsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bS5jcHAKaW5kZXggNWE5ZmJmNWVhYWIyYjNhNDVjN2EyZjcyYzk5ZWVmZTNmMWY4ODVkNC4uNTdh
ODE1NThhMGQxOWFiMzJlOTIxMTEzMTMxN2ExMzg4N2VjMjJjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCBQYXNzT3duUHRyPEND
TGF5ZXJJbXBsPiBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiAg
ICAgcmV0dXJuIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpjcmVhdGUoaWQoKSk7CiB9CiAKLVBhc3NS
ZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+IHNjcm9sbGJhciwgV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5IGdlb21ldHJ5LCBpbnQgc2Nyb2xsTGF5ZXJJZCkKK1Bhc3NSZWZQdHI8U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+IHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJU
aGVtZVBhaW50ZXIgcGFpbnRlciwgUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnk+IGdlb21ldHJ5LCBpbnQgc2Nyb2xsTGF5ZXJJZCkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFNjcm9sbGJhckxheWVyQ2hyb21pdW0oc2Nyb2xsYmFyLCBwYWludGVyLCBnZW9t
ZXRyeSwgc2Nyb2xsTGF5ZXJJZCkpOwogfQogCi1TY3JvbGxiYXJMYXllckNocm9taXVtOjpTY3Jv
bGxiYXJMYXllckNocm9taXVtKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+IHNjcm9s
bGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5LCBpbnQgc2Nyb2xsTGF5ZXJJZCkKK1Nj
cm9sbGJhckxheWVyQ2hyb21pdW06OlNjcm9sbGJhckxheWVyQ2hyb21pdW0oUGFzc093blB0cjxX
ZWJLaXQ6OldlYlNjcm9sbGJhcj4gc2Nyb2xsYmFyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1l
UGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeT4gZ2VvbWV0cnksIGludCBzY3JvbGxMYXllcklkKQogICAgIDogbV9zY3JvbGxiYXIoc2Ny
b2xsYmFyKQogICAgICwgbV9wYWludGVyKHBhaW50ZXIpCiAgICAgLCBtX2dlb21ldHJ5KGdlb21l
dHJ5KQpAQCAtNjQsNyArNjQsMTAgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNo
UHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBsYXllcikKIAogICAgIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsKiBzY3JvbGxiYXJMYXllciA9IHN0YXRpY19jYXN0PENDU2Nyb2xsYmFyTGF5ZXJJbXBsKj4o
bGF5ZXIpOwogCi0gICAgc2Nyb2xsYmFyTGF5ZXItPnNldFNjcm9sbGJhckRhdGEobV9zY3JvbGxi
YXIuZ2V0KCksIG1fZ2VvbWV0cnkpOworICAgIGlmICghc2Nyb2xsYmFyTGF5ZXItPnNjcm9sbGJh
ckdlb21ldHJ5KCkpCisgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRTY3JvbGxiYXJHZW9tZXRy
eShhZG9wdFB0cihtX2dlb21ldHJ5LT5jbG9uZSgpKSk7CisKKyAgICBzY3JvbGxiYXJMYXllci0+
c2V0U2Nyb2xsYmFyRGF0YShtX3Njcm9sbGJhci5nZXQoKSk7CiAKICAgICBpZiAobV9iYWNrVHJh
Y2sgJiYgbV9iYWNrVHJhY2stPnRleHR1cmUoKS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCiAgICAg
ICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNrVHJhY2tSZXNvdXJjZUlkKG1fYmFja1RyYWNrLT50
ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CkBAIC04NSw3ICs4OCw3IEBAIHZvaWQgU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiBjbGFz
cyBTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlciA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1
bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXIp
OwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPFNjcm9sbGJhckJhY2tncm91bmRQYWlu
dGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJT
Y3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5IGdlb21ldHJ5LCBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCB0cmFj
a1BhcnQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI+
IGNyZWF0ZShXZWJLaXQ6OldlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJLaXQ6OldlYlNjcm9s
bGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkqIGdlb21ldHJ5LCBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCB0cmFja1Bh
cnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNjcm9sbGJhckJhY2tncm91
bmRQYWludGVyKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnksIHRyYWNrUGFydCkpOwogICAg
IH0KQEAgLTk3LDI0ICsxMDAsMjQgQEAgcHVibGljOgogICAgICAgICBXZWJLaXQ6OldlYlJlY3Qg
Y29udGVudFdlYlJlY3QoY29udGVudFJlY3QueCgpLCBjb250ZW50UmVjdC55KCksIGNvbnRlbnRS
ZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0LmhlaWdodCgpKTsKICAgICAgICAgbV9wYWludGVyLnBh
aW50U2Nyb2xsYmFyQmFja2dyb3VuZChjYW52YXMsIG1fc2Nyb2xsYmFyLCBjb250ZW50V2ViUmVj
dCk7CiAKLSAgICAgICAgaWYgKG1fZ2VvbWV0cnkuaGFzQnV0dG9ucyhtX3Njcm9sbGJhcikpIHsK
LSAgICAgICAgICAgIFdlYlJlY3QgYmFja0J1dHRvblN0YXJ0UGFpbnRSZWN0ID0gbV9nZW9tZXRy
eS5iYWNrQnV0dG9uU3RhcnRSZWN0KG1fc2Nyb2xsYmFyKTsKKyAgICAgICAgaWYgKG1fZ2VvbWV0
cnktPmhhc0J1dHRvbnMobV9zY3JvbGxiYXIpKSB7CisgICAgICAgICAgICBXZWJSZWN0IGJhY2tC
dXR0b25TdGFydFBhaW50UmVjdCA9IG1fZ2VvbWV0cnktPmJhY2tCdXR0b25TdGFydFJlY3QobV9z
Y3JvbGxiYXIpOwogICAgICAgICAgICAgbV9wYWludGVyLnBhaW50QmFja0J1dHRvblN0YXJ0KGNh
bnZhcywgbV9zY3JvbGxiYXIsIGJhY2tCdXR0b25TdGFydFBhaW50UmVjdCk7CiAKLSAgICAgICAg
ICAgIFdlYlJlY3QgYmFja0J1dHRvbkVuZFBhaW50UmVjdCA9IG1fZ2VvbWV0cnkuYmFja0J1dHRv
bkVuZFJlY3QobV9zY3JvbGxiYXIpOworICAgICAgICAgICAgV2ViUmVjdCBiYWNrQnV0dG9uRW5k
UGFpbnRSZWN0ID0gbV9nZW9tZXRyeS0+YmFja0J1dHRvbkVuZFJlY3QobV9zY3JvbGxiYXIpOwog
ICAgICAgICAgICAgbV9wYWludGVyLnBhaW50QmFja0J1dHRvbkVuZChjYW52YXMsIG1fc2Nyb2xs
YmFyLCBiYWNrQnV0dG9uRW5kUGFpbnRSZWN0KTsKIAotICAgICAgICAgICAgV2ViUmVjdCBmb3J3
YXJkQnV0dG9uU3RhcnRQYWludFJlY3QgPSBtX2dlb21ldHJ5LmZvcndhcmRCdXR0b25TdGFydFJl
Y3QobV9zY3JvbGxiYXIpOworICAgICAgICAgICAgV2ViUmVjdCBmb3J3YXJkQnV0dG9uU3RhcnRQ
YWludFJlY3QgPSBtX2dlb21ldHJ5LT5mb3J3YXJkQnV0dG9uU3RhcnRSZWN0KG1fc2Nyb2xsYmFy
KTsKICAgICAgICAgICAgIG1fcGFpbnRlci5wYWludEZvcndhcmRCdXR0b25TdGFydChjYW52YXMs
IG1fc2Nyb2xsYmFyLCBmb3J3YXJkQnV0dG9uU3RhcnRQYWludFJlY3QpOwogCi0gICAgICAgICAg
ICBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRQYWludFJlY3QgPSBtX2dlb21ldHJ5LmZvcndhcmRC
dXR0b25FbmRSZWN0KG1fc2Nyb2xsYmFyKTsKKyAgICAgICAgICAgIFdlYlJlY3QgZm9yd2FyZEJ1
dHRvbkVuZFBhaW50UmVjdCA9IG1fZ2VvbWV0cnktPmZvcndhcmRCdXR0b25FbmRSZWN0KG1fc2Ny
b2xsYmFyKTsKICAgICAgICAgICAgIG1fcGFpbnRlci5wYWludEZvcndhcmRCdXR0b25FbmQoY2Fu
dmFzLCBtX3Njcm9sbGJhciwgZm9yd2FyZEJ1dHRvbkVuZFBhaW50UmVjdCk7CiAgICAgICAgIH0K
IAotICAgICAgICBXZWJSZWN0IHRyYWNrUGFpbnRSZWN0ID0gbV9nZW9tZXRyeS50cmFja1JlY3Qo
bV9zY3JvbGxiYXIpOworICAgICAgICBXZWJSZWN0IHRyYWNrUGFpbnRSZWN0ID0gbV9nZW9tZXRy
eS0+dHJhY2tSZWN0KG1fc2Nyb2xsYmFyKTsKICAgICAgICAgbV9wYWludGVyLnBhaW50VHJhY2tC
YWNrZ3JvdW5kKGNhbnZhcywgbV9zY3JvbGxiYXIsIHRyYWNrUGFpbnRSZWN0KTsKIAotICAgICAg
ICBib29sIHRodW1iUHJlc2VudCA9IG1fZ2VvbWV0cnkuaGFzVGh1bWIobV9zY3JvbGxiYXIpOwor
ICAgICAgICBib29sIHRodW1iUHJlc2VudCA9IG1fZ2VvbWV0cnktPmhhc1RodW1iKG1fc2Nyb2xs
YmFyKTsKICAgICAgICAgaWYgKHRodW1iUHJlc2VudCkgewogICAgICAgICAgICAgaWYgKG1fdHJh
Y2tQYXJ0ID09IFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpGb3J3YXJkVHJhY2tQYXJ0KQogICAgICAg
ICAgICAgICAgIG1fcGFpbnRlci5wYWludEZvcndhcmRUcmFja1BhcnQoY2FudmFzLCBtX3Njcm9s
bGJhciwgdHJhY2tQYWludFJlY3QpOwpAQCAtMTI1LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgbV9wYWludGVyLnBhaW50VGlja21hcmtzKGNhbnZhcywgbV9zY3JvbGxiYXIsIHRyYWNrUGFp
bnRSZWN0KTsKICAgICB9CiBwcml2YXRlOgotICAgIFNjcm9sbGJhckJhY2tncm91bmRQYWludGVy
KFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhl
bWVQYWludGVyIHBhaW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBnZW9t
ZXRyeSwgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OlNjcm9sbGJhclBhcnQgdHJhY2tQYXJ0KQorICAg
IFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyKFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBzY3JvbGxi
YXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFdlYktpdDo6V2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogZ2VvbWV0cnksIFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpT
Y3JvbGxiYXJQYXJ0IHRyYWNrUGFydCkKICAgICAgICAgOiBtX3Njcm9sbGJhcihzY3JvbGxiYXIp
CiAgICAgICAgICwgbV9wYWludGVyKHBhaW50ZXIpCiAgICAgICAgICwgbV9nZW9tZXRyeShnZW9t
ZXRyeSkKQEAgLTEzNSwxNCArMTM4LDE0IEBAIHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNj
cm9sbGJhciogbV9zY3JvbGxiYXI7CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50
ZXIgbV9wYWludGVyOwotICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBtX2dl
b21ldHJ5OworICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogbV9nZW9tZXRy
eTsKICAgICBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCBtX3RyYWNrUGFydDsK
IH07CiAKIGNsYXNzIFNjcm9sbGJhclRodW1iUGFpbnRlciA6IHB1YmxpYyBMYXllclBhaW50ZXJD
aHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2Nyb2xsYmFyVGh1bWJQYWludGVy
KTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxTY3JvbGxiYXJUaHVtYlBhaW50ZXI+
IGNyZWF0ZShXZWJLaXQ6OldlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBXZWJLaXQ6OldlYlNjcm9s
bGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkgZ2VvbWV0cnkpCisgICAgc3RhdGljIFBhc3NPd25QdHI8U2Nyb2xsYmFyVGh1bWJQYWludGVy
PiBjcmVhdGUoV2ViS2l0OjpXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3Jv
bGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5KiBnZW9tZXRyeSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xs
YmFyVGh1bWJQYWludGVyKHNjcm9sbGJhciwgcGFpbnRlciwgZ2VvbWV0cnkpKTsKICAgICB9CkBA
IC0xNTIsMTQgKzE1NSwxNCBAQCBwdWJsaWM6CiAgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiBj
YW52YXMgPSBza0NhbnZhczsKIAogICAgICAgICAvLyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUg
YXQgdGhlIG9yaWdpbiB3aGVuIHBhaW50aW5nLgotICAgICAgICBXZWJSZWN0IHRodW1iUmVjdCA9
IG1fZ2VvbWV0cnkudGh1bWJSZWN0KG1fc2Nyb2xsYmFyKTsKKyAgICAgICAgV2ViUmVjdCB0aHVt
YlJlY3QgPSBtX2dlb21ldHJ5LT50aHVtYlJlY3QobV9zY3JvbGxiYXIpOwogICAgICAgICB0aHVt
YlJlY3QueCA9IDA7CiAgICAgICAgIHRodW1iUmVjdC55ID0gMDsKICAgICAgICAgbV9wYWludGVy
LnBhaW50VGh1bWIoY2FudmFzLCBtX3Njcm9sbGJhciwgdGh1bWJSZWN0KTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgU2Nyb2xsYmFyVGh1bWJQYWludGVyKFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFdlYktp
dDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBnZW9tZXRyeSkKKyAgICBTY3JvbGxiYXJUaHVt
YlBhaW50ZXIoV2ViS2l0OjpXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3Jv
bGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5KiBnZW9tZXRyeSkKICAgICAgICAgOiBtX3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgICAg
ICwgbV9wYWludGVyKHBhaW50ZXIpCiAgICAgICAgICwgbV9nZW9tZXRyeShnZW9tZXRyeSkKQEAg
LTE2OCw3ICsxNzEsNyBAQCBwcml2YXRlOgogCiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXIqIG1f
c2Nyb2xsYmFyOwogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIG1fcGFpbnRl
cjsKLSAgICBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgbV9nZW9tZXRyeTsKKyAg
ICBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkqIG1fZ2VvbWV0cnk7CiB9OwogCiB2
b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVI
b3N0KiBob3N0KQpAQCAtMTg4LDIwICsxOTEsMjAgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9t
aXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklmTmVlZGVkKCkKICAgICBtX3RleHR1cmVGb3JtYXQg
PSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVy
ZUZvcm1hdDsKIAogICAgIGlmICghbV9iYWNrVHJhY2tVcGRhdGVyKQotICAgICAgICBtX2JhY2tU
cmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Ny
b2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgbV9wYWlu
dGVyLCBtX2dlb21ldHJ5LCBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6QmFja1RyYWNrUGFydCkpOwor
ICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJh
ci5nZXQoKSwgbV9wYWludGVyLCBtX2dlb21ldHJ5LmdldCgpLCBXZWJLaXQ6OldlYlNjcm9sbGJh
cjo6QmFja1RyYWNrUGFydCkpOwogICAgIGlmICghbV9iYWNrVHJhY2spCiAgICAgICAgIG1fYmFj
a1RyYWNrID0gbV9iYWNrVHJhY2tVcGRhdGVyLT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3Qo
KS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigpKTsKIAogICAgIC8vIE9ubHkgY3JlYXRlIHR3by1w
YXJ0IHRyYWNrIGlmIHdlIHRoaW5rIHRoZSB0d28gcGFydHMgY291bGQgYmUgZGlmZmVyZW50IGlu
IGFwcGVhcmFuY2UuCiAgICAgaWYgKG1fc2Nyb2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKSB7
CiAgICAgICAgIGlmICghbV9mb3JlVHJhY2tVcGRhdGVyKQotICAgICAgICAgICAgbV9mb3JlVHJh
Y2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9s
bGJhckJhY2tncm91bmRQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIuZ2V0KCksIG1fcGFpbnRl
ciwgbV9nZW9tZXRyeSwgV2ViS2l0OjpXZWJTY3JvbGxiYXI6OkZvcndhcmRUcmFja1BhcnQpKTsK
KyAgICAgICAgICAgIG1fZm9yZVRyYWNrVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Ny
b2xsYmFyLmdldCgpLCBtX3BhaW50ZXIsIG1fZ2VvbWV0cnkuZ2V0KCksIFdlYktpdDo6V2ViU2Ny
b2xsYmFyOjpGb3J3YXJkVHJhY2tQYXJ0KSk7CiAgICAgICAgIGlmICghbV9mb3JlVHJhY2spCiAg
ICAgICAgICAgICBtX2ZvcmVUcmFjayA9IG1fZm9yZVRyYWNrVXBkYXRlci0+Y3JlYXRlVGV4dHVy
ZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRzVGV4dHVyZU1hbmFnZXIoKSk7CiAgICAgfQogCiAg
ICAgaWYgKCFtX3RodW1iVXBkYXRlcikKLSAgICAgICAgbV90aHVtYlVwZGF0ZXIgPSBCaXRtYXBD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyVGh1bWJQYWludGVyOjpj
cmVhdGUobV9zY3JvbGxiYXIuZ2V0KCksIG1fcGFpbnRlciwgbV9nZW9tZXRyeSkpOworICAgICAg
ICBtX3RodW1iVXBkYXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0
ZShTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgbV9wYWlu
dGVyLCBtX2dlb21ldHJ5LmdldCgpKSk7CiAgICAgaWYgKCFtX3RodW1iKQogICAgICAgICBtX3Ro
dW1iID0gbV90aHVtYlVwZGF0ZXItPmNyZWF0ZVRleHR1cmUobGF5ZXJUcmVlSG9zdCgpLT5jb250
ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwogfQpAQCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNh
bGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVUcmFjay0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJp
b3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAg
ICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKLSAgICAgICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVj
dCA9IG1fZ2VvbWV0cnkudGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAgV2Vi
S2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9sbGJh
ci5nZXQoKSk7CiAgICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0RGltZW5zaW9ucyhJbnRT
aXplKHRodW1iUmVjdC53aWR0aCwgdGh1bWJSZWN0LmhlaWdodCksIG1fdGV4dHVyZUZvcm1hdCk7
CiAgICAgICAgIG1fdGh1bWItPnRleHR1cmUoKS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3Jp
dHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KGRyYXdzVG9Sb290KSk7CiAgICAgfQpAQCAtMjY4LDcg
KzI3MSw3IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVw
ZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2NjbHVzaW9uCiAgICAgICAgIHVwZGF0ZVBhcnQobV9m
b3JlVHJhY2tVcGRhdGVyLmdldCgpLCBtX2ZvcmVUcmFjay5nZXQoKSwgY29udGVudFJlY3QsIHVw
ZGF0ZXIsIHN0YXRzKTsKIAogICAgIC8vIENvbnNpZGVyIHRoZSB0aHVtYiB0byBiZSBhdCB0aGUg
b3JpZ2luIHdoZW4gcGFpbnRpbmcuCi0gICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1f
Z2VvbWV0cnkudGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsKKyAgICBXZWJLaXQ6OldlYlJl
Y3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsK
ICAgICBJbnRSZWN0IG9yaWdpblRodW1iUmVjdCA9IEludFJlY3QoMCwgMCwgdGh1bWJSZWN0Lndp
ZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KTsKICAgICBpZiAoIW9yaWdpblRodW1iUmVjdC5pc0VtcHR5
KCkpCiAgICAgICAgIHVwZGF0ZVBhcnQobV90aHVtYlVwZGF0ZXIuZ2V0KCksIG1fdGh1bWIuZ2V0
KCksIG9yaWdpblRodW1iUmVjdCwgdXBkYXRlciwgc3RhdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQyNTJlMjY4ZWRjYzFkODliNDM1M2U0NTU1ZTQ3NzFmOTMx
MWMwNDIuLmUzZTMwYWUxMDE3NjAxMmQ2NDAxMzhiMzZlZWM1NmQzZTM4YTc4YTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxh
eWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVtLmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgQ0NU
ZXh0dXJlVXBkYXRlcjsKIGNsYXNzIFNjcm9sbGJhckxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5
ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBs
PiBjcmVhdGVDQ0xheWVySW1wbCgpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckxh
eWVyQ2hyb21pdW0+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVH
ZW9tZXRyeSwgaW50IHNjcm9sbExheWVySWQpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9s
bGJhckxheWVyQ2hyb21pdW0+IGNyZWF0ZShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFy
PiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiwgaW50IHNjcm9sbExheWVySWQpOwogCiAgICAgLy8g
TGF5ZXJDaHJvbWl1bSBpbnRlcmZhY2UKICAgICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9y
aXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKSBPVkVSUklERTsKQEAgLTU3LDcgKzU3
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bSogdG9TY3Jv
bGxiYXJMYXllckNocm9taXVtKCkgeyByZXR1cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAg
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bShQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwg
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhl
bWVHZW9tZXRyeSwgaW50IHNjcm9sbExheWVySWQpOworICAgIFNjcm9sbGJhckxheWVyQ2hyb21p
dW0oUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4sIFdlYktpdDo6V2ViU2Nyb2xsYmFy
VGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eT4sIGludCBzY3JvbGxMYXllcklkKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBhcnQo
TGF5ZXJUZXh0dXJlVXBkYXRlciosIExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25z
dCBJbnRSZWN0JiwgQ0NUZXh0dXJlVXBkYXRlciYsIENDUmVuZGVyaW5nU3RhdHMmKTsKQEAgLTY1
LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4g
bV9zY3JvbGxiYXI7CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgbV9wYWlu
dGVyOwotICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBtX2dlb21ldHJ5Owor
ICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IG1fZ2VvbWV0cnk7
CiAgICAgaW50IG1fc2Nyb2xsTGF5ZXJJZDsKIAogICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcAppbmRleCA1ODAxOGFh
ZDI2NDQzNGNjYTU1MTRmNGIzNzYzODg5ZDc1ZWZjOTU5Li5lYzA1ODk1MjU5ZTU3YmZkOTk0Y2Vm
MGRmMTBkNmE4NTQ4ODE5NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllcklt
cGwuY3BwCkBAIC02MiwxMCArNjIsMTMgQEAgQ0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xs
YmFyTGF5ZXJJbXBsKGludCBpZCkKIHsKIH0KIAotdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6
c2V0U2Nyb2xsYmFyRGF0YShjb25zdCBXZWJTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5KQordm9pZCBDQ1Njcm9sbGJhckxheWVy
SW1wbDo6c2V0U2Nyb2xsYmFyR2VvbWV0cnkoUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQogewogICAgIG1fZ2VvbWV0cnkgPSBnZW9tZXRyeTsK
K30KIAordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsYmFyRGF0YShjb25zdCBX
ZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9
IHNjcm9sbGJhci0+c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCk7CiAgICAgbV9vcmllbnRhdGlvbiA9
IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKTsKICAgICBtX2NvbnRyb2xTaXplID0gc2Nyb2xsYmFy
LT5jb250cm9sU2l6ZSgpOwpAQCAtODYsMTMgKzg5LDYgQEAgc3RhdGljIEZsb2F0UmVjdCB0b1VW
UmVjdChjb25zdCBXZWJSZWN0JiByLCBjb25zdCBJbnRSZWN0JiBib3VuZHMpCiAgICAgICAgICAg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4oci53aWR0aCkgLyBib3VuZHMud2lkdGgoKSwg
c3RhdGljX2Nhc3Q8ZmxvYXQ+KHIuaGVpZ2h0KSAvIGJvdW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZv
aWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OnNjcm9sbGJhckdlb21ldHJ5KFdlYlJlY3QmIHRodW1i
UmVjdCwgV2ViUmVjdCYgYmFja1RyYWNrUmVjdCwgV2ViUmVjdCYgZm9yZVRyYWNrUmVjdCkKLXsK
LSAgICBtX2dlb21ldHJ5LnNwbGl0VHJhY2soJm1fc2Nyb2xsYmFyLCBtX2dlb21ldHJ5LnRyYWNr
UmVjdCgmbV9zY3JvbGxiYXIpLCBiYWNrVHJhY2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1Jl
Y3QpOwotICAgIGlmICghbV9nZW9tZXRyeS5oYXNUaHVtYigmbV9zY3JvbGxiYXIpKQotICAgICAg
ICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7Ci19Ci0KIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6
OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0
ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikKIHsKICAgICBib29sIHByZW11bHRpcGxlZEFscGhh
ID0gZmFsc2U7CkBAIC0xMDEsNyArOTcsOSBAQCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjph
cHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFkTGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkUwogICAg
IEludFJlY3QgYm91bmRzUmVjdChJbnRQb2ludCgpLCBjb250ZW50Qm91bmRzKCkpOwogCiAgICAg
V2ViUmVjdCB0aHVtYlJlY3QsIGJhY2tUcmFja1JlY3QsIGZvcmVUcmFja1JlY3Q7Ci0gICAgc2Ny
b2xsYmFyR2VvbWV0cnkodGh1bWJSZWN0LCBiYWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0KTsK
KyAgICBtX2dlb21ldHJ5LT5zcGxpdFRyYWNrKCZtX3Njcm9sbGJhciwgbV9nZW9tZXRyeS0+dHJh
Y2tSZWN0KCZtX3Njcm9sbGJhciksIGJhY2tUcmFja1JlY3QsIHRodW1iUmVjdCwgZm9yZVRyYWNr
UmVjdCk7CisgICAgaWYgKCFtX2dlb21ldHJ5LT5oYXNUaHVtYigmbV9zY3JvbGxiYXIpKQorICAg
ICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7CiAKICAgICBpZiAobV90aHVtYlJlc291cmNlSWQg
JiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsKICAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdR
dWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIElu
dFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVjdC55LCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVj
dC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwg
ZmxpcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuaAppbmRleCA1MzM0
MTlhNWJjMjExZDRlMjQwNTIzMjdjOGQ3ZDdlMjdiNDM1ZTQyLi4yNGNiMGQxYjhhN2ExODIzYzcw
MWE2YjVlMzg0YTliNzlmZDQ0OWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmgKQEAgLTQyLDcgKzQyLDkgQEAgY2xhc3MgQ0NTY3JvbGxiYXJMYXllckltcGwgOiBwdWJs
aWMgQ0NMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2Nyb2xs
YmFyTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlkKTsKIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyRGF0
YShjb25zdCBXZWJLaXQ6OldlYlNjcm9sbGJhciosIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVH
ZW9tZXRyeSk7CisgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KiBzY3JvbGxi
YXJHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbWV0cnkuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldFNjcm9sbGJhckdlb21ldHJ5KFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5Pik7CisgICAgdm9pZCBzZXRTY3JvbGxiYXJEYXRhKGNvbnN0IFdlYktpdDo6V2Vi
U2Nyb2xsYmFyKik7CiAKICAgICB2b2lkIHNldEJhY2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJj
ZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7IG1fYmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9
CiAgICAgdm9pZCBzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVz
b3VyY2VJZCBpZCkgeyBtX2ZvcmVUcmFja1Jlc291cmNlSWQgPSBpZDsgfQpAQCAtNjYsOCArNjgs
NiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ0NTY3JvbGxiYXJMYXllcklt
cGwoaW50IGlkKTsKIAotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJHZW9tZXRyeShXZWJLaXQ6
OldlYlJlY3QmIHRodW1iUmVjdCwgV2ViS2l0OjpXZWJSZWN0JiBiYWNrVHJhY2tSZWN0LCBXZWJL
aXQ6OldlYlJlY3QmIGZvcmVUcmFja1JlY3QpOwotCiBwcml2YXRlOgogICAgIC8vIG5lc3RlZCBj
bGFzcyBvbmx5IHRvIGF2b2lkIG5hbWVzcGFjZSBwcm9ibGVtCiAgICAgY2xhc3MgQ0NTY3JvbGxi
YXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3JvbGxiYXIgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHBy
aXZhdGU6CiAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIG1fZm9yZVRyYWNrUmVz
b3VyY2VJZDsKICAgICBDQ1Jlc291cmNlUHJvdmlkZXI6OlJlc291cmNlSWQgbV90aHVtYlJlc291
cmNlSWQ7CiAKLSAgICBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgbV9nZW9tZXRy
eTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiBtX2dlb21l
dHJ5OwogCiAgICAgLy8gRGF0YSB0byBpbXBsZW1lbnQgQ0NTY3JvbGxiYXIKICAgICBXZWJLaXQ6
OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0
eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDNiNmY4NmNkMjI4MjczMDcwODdh
NmY4YWQ2M2I5NDU0YmNmNDQ5OWQuLjRkMzUwYzNlNWNiZjk5NzFiOTg1NzAyNGE3MzkzMDg4NDVj
YjRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTYzMyw3ICs2MzMsNiBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFySW1wbC5oJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdz
cmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMv
V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
ZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNlY3VyaXR5
T3JpZ2luLmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCAyYTgzOGQ0NzUx
MWUxMGI1ZmE1NThiNTZmYTQwNjU3NzI1OWQwYjM1Li44YjQ1M2JkN2MzZWI1ZDY1OWZlZDU5MTlm
OWUzNzk2ZDJiMzFhNWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNSw2
ICsxMDUsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQu
aCcsCiAgICAgICAgICAgICAndGVzdHMvRmFrZUdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAnLAog
ICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJHcmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAg
ICAgICd0ZXN0cy9GYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oJywKICAgICAgICAgICAg
ICd0ZXN0cy9GaWx0ZXJPcGVyYXRpb25zVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zs
b2F0UXVhZFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GcmFtZUxvYWRlckNsaWVudElt
cGxUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
Y3JvbGxiYXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxi
YXJMYXllci5jcHAKaW5kZXggNTYxYmY3OGM3MjIyMTlhNDU3M2ZmMzk2MGQ4YjQ0OGEyMjllOTAw
NC4uMmJkMWIyMGZiNDBmN2M2NGQ3ZTE3NjNhYTY4NjZiMTRlMTVmOWJhZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyTGF5ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNjcm9sbGJhckxheWVyLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCB2b2lkIFdlYlNjcm9sbGJhckxheWVyOjpzZXRTY3JvbGxMYXllcihjb25zdCBXZWJM
YXllciBsYXllcikKICAgICB1bndyYXA8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKS0+c2V0U2Ny
b2xsTGF5ZXJJZChpZCk7CiB9CiAKLVdlYlNjcm9sbGJhckxheWVyIFdlYlNjcm9sbGJhckxheWVy
OjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1l
UGFpbnRlciBwYWludGVyLCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5KQorV2Vi
U2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFyTGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpTY3JvbGxi
YXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFBhc3NPd25Q
dHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkpCiB7CiAgICAgcmV0dXJuIFdl
YlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxi
YXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWludGVyLCBnZW9tZXRyeSwgMCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2UwOTA5ZWYwY2RiMjJiYTFl
ODdjMTkwZmRiNmE0MGU5YTJkMzBlZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1NCArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnkuaD4KLQotI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlLmgiCi0jaW5jbHVk
ZSAiV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlJl
Y3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyLmg+Ci0KLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLQotdm9pZCBXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5Ojphc3NpZ24oY29uc3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSYgZ2VvbWV0
cnkpCi17Ci0gICAgLy8gVGhpcyBpcyBhIHBvaW50ZXIgdG8gYSBzdGF0aWMgb2JqZWN0LCBzbyBu
byBvd25lcnNoaXAgdHJhbnNmZXJyYWwuCi0gICAgbV90aGVtZSA9IGdlb21ldHJ5Lm1fdGhlbWU7
Ci19Ci0KLWludCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojp0aHVtYlBvc2l0aW9uKFdlYlNj
cm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBj
bGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJQb3NpdGlvbigmY2xp
ZW50KTsKLX0KLQotaW50IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OnRodW1iTGVuZ3RoKFdl
YlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJMZW5ndGgoJmNs
aWVudCk7Ci19Ci0KLWludCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojp0cmFja1Bvc2l0aW9u
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+dHJhY2tQb3NpdGlv
bigmY2xpZW50KTsKLX0KLQotaW50IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OnRyYWNrTGVu
Z3RoKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+dHJhY2tMZW5n
dGgoJmNsaWVudCk7Ci19Ci0KLWJvb2wgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6aGFzQnV0
dG9ucyhXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKLXsKLSAgICBXZWJTY3JvbGxiYXJUaGVtZUNs
aWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7Ci0gICAgcmV0dXJuIG1fdGhlbWUtPmhhc0J1dHRv
bnMoJmNsaWVudCk7Ci19Ci0KLWJvb2wgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6aGFzVGh1
bWIoV2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCi17Ci0gICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsIGNsaWVudChzY3JvbGxiYXIpOwotICAgIHJldHVybiBtX3RoZW1lLT5oYXNUaHVtYigm
Y2xpZW50KTsKLX0KLQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojp0cmFja1Jl
Y3QoV2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCi17Ci0gICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsIGNsaWVudChzY3JvbGxiYXIpOwotICAgIHJldHVybiBtX3RoZW1lLT50cmFja1JlY3Qo
JmNsaWVudCk7Ci19Ci0KLVdlYlJlY3QgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6dGh1bWJS
ZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJSZWN0
KCZjbGllbnQpOwotfQotCi1pbnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6bWluaW11bVRo
dW1iTGVuZ3RoKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRo
ZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+bWlu
aW11bVRodW1iTGVuZ3RoKCZjbGllbnQpOwotfQotCi1pbnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAg
IFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1
cm4gbV90aGVtZS0+c2Nyb2xsYmFyVGhpY2tuZXNzKGNsaWVudC5jb250cm9sU2l6ZSgpKTsKLX0K
LQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OjpiYWNrQnV0dG9uU3RhcnRSZWN0
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+YmFja0J1dHRvblJl
Y3QoJmNsaWVudCwgQmFja0J1dHRvblN0YXJ0UGFydCwgZmFsc2UpOwotfQotCi1XZWJSZWN0IFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OmJhY2tCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciog
c2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Ny
b2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+YmFja0J1dHRvblJlY3QoJmNsaWVudCwgQmFj
a0J1dHRvbkVuZFBhcnQsIGZhbHNlKTsKLX0KLQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5Ojpmb3J3YXJkQnV0dG9uU3RhcnRSZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQot
ewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAg
ICByZXR1cm4gbV90aGVtZS0+Zm9yd2FyZEJ1dHRvblJlY3QoJmNsaWVudCwgRm9yd2FyZEJ1dHRv
blN0YXJ0UGFydCwgZmFsc2UpOwotfQotCi1XZWJSZWN0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnk6OmZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAg
IFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1
cm4gbV90aGVtZS0+Zm9yd2FyZEJ1dHRvblJlY3QoJmNsaWVudCwgRm9yd2FyZEJ1dHRvbkVuZFBh
cnQsIGZhbHNlKTsKLX0KLQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojpjb25z
dHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBXZWJSZWN0JiByZWN0KQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGll
bnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+Y29uc3RyYWluVHJhY2tSZWN0VG9U
cmFja1BpZWNlcygmY2xpZW50LCBJbnRSZWN0KHJlY3QpKTsKLX0KLQotdm9pZCBXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5OjpzcGxpdFRyYWNrKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBXZWJSZWN0JiB3ZWJUcmFjaywgV2ViUmVjdCYgd2ViU3RhcnRUcmFjaywgV2ViUmVjdCYgd2Vi
VGh1bWIsIFdlYlJlY3QmIHdlYkVuZFRyYWNrKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICBJbnRSZWN0IHRyYWNrKHdlYlRyYWNrKTsK
LSAgICBJbnRSZWN0IHN0YXJ0VHJhY2s7Ci0gICAgSW50UmVjdCB0aHVtYjsKLSAgICBJbnRSZWN0
IGVuZFRyYWNrOwotICAgIG1fdGhlbWUtPnNwbGl0VHJhY2soJmNsaWVudCwgdHJhY2ssIHN0YXJ0
VHJhY2ssIHRodW1iLCBlbmRUcmFjayk7Ci0KLSAgICB3ZWJTdGFydFRyYWNrID0gc3RhcnRUcmFj
azsKLSAgICB3ZWJUaHVtYiA9IHRodW1iOwotICAgIHdlYkVuZFRyYWNrID0gZW5kVHJhY2s7Ci19
Ci0KLVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnko
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lKQotICAgIDogbV90aGVtZSh0
aGVtZSkKLXsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4
IDY4MDlkNDcxOGJmNGMzZjQzNjVmZjg2YTUwMWYwOGQ2MGUwMTJkMzEuLjdjMmQwZDZlZmJlODM0
YjNiMTAzM2MwNjQzN2UwYzc3YjE4YmVjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zMSw2ICsz
MSw3IEBACiAjaW5jbHVkZSAiQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NU
ZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5j
bHVkZSAiRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXllclJl
bmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJjYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBs
LmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZhY2VMYXllckltcGwuaCIKQEAgLTIyODcsNiArMjI4
OCwxNyBAQCBwdWJsaWM6CiAgICAgfQogfTsKIAorY2xhc3MgRmFrZVdlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnlOb25FbXB0eSA6IHB1YmxpYyBGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSB7
CisgICAgdmlydHVhbCBXZWJSZWN0IHRyYWNrUmVjdChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7
IHJldHVybiBXZWJSZWN0KDAsIDAsIDEwLCAxMCk7IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1
bWJSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIFdlYlJlY3QoMCwgNSwgNSwg
Mik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBX
ZWJSZWN0JiB0cmFjaywgV2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJl
Y3QmIGVuZFRyYWNrKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgdGh1bWIgPSBXZWJSZWN0KDAs
IDUsIDUsIDIpOworICAgICAgICBzdGFydFRyYWNrID0gV2ViUmVjdCgwLCA1LCAwLCA1KTsKKyAg
ICAgICAgZW5kVHJhY2sgPSBXZWJSZWN0KDAsIDAsIDAsIDUpOworICAgIH0KK307CisKIGNsYXNz
IEZha2VTY3JvbGxiYXJMYXllckltcGwgOiBwdWJsaWMgQ0NTY3JvbGxiYXJMYXllckltcGwgewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPEZha2VTY3JvbGxiYXJMYXllckltcGw+IGNy
ZWF0ZShpbnQgaWQpCkBAIC0yMzAxLDYgKzIzMTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEludFNp
emUgc2l6ZSgxMCwgMTApOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRl
eHQzRDo6UkdCQTsKICAgICAgICAgQ0NSZXNvdXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50
IGhpbnQgPSBDQ1Jlc291cmNlUHJvdmlkZXI6OlRleHR1cmVVc2FnZUFueTsKKyAgICAgICAgc2V0
U2Nyb2xsYmFyR2VvbWV0cnkoRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOb25FbXB0eTo6
Y3JlYXRlKCkpOwogCiAgICAgICAgIHNldEJhY2tUcmFja1Jlc291cmNlSWQocHJvdmlkZXItPmNy
ZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZvcm1hdCwgaGludCkpOwogICAgICAgICBzZXRGb3Jl
VHJhY2tSZXNvdXJjZUlkKHByb3ZpZGVyLT5jcmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3Jt
YXQsIGhpbnQpKTsKQEAgLTIzMTIsMTMgKzIzMjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIDog
Q0NTY3JvbGxiYXJMYXllckltcGwoaWQpCiAgICAgewogICAgIH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBzY3JvbGxiYXJHZW9tZXRyeShXZWJSZWN0JiB0aHVtYlJlY3QsIFdlYlJlY3QmIGJhY2tUcmFj
a1JlY3QsIFdlYlJlY3QmIGZvcmVUcmFja1JlY3QpIE9WRVJSSURFCi0gICAgewotICAgICAgICB0
aHVtYlJlY3QgPSBXZWJSZWN0KDAsIDUsIDUsIDIpOwotICAgICAgICBiYWNrVHJhY2tSZWN0ID0g
V2ViUmVjdCgwLCA1LCAwLCA1KTsKLSAgICAgICAgZm9yZVRyYWNrUmVjdCA9IFdlYlJlY3QoMCwg
MCwgMCwgNSk7Ci0gICAgfQogfTsKIAogVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBk
b250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnku
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4zZGMyOWRkMmVhNDg0NjIwNDI0M2ZmYmU0NmY5MmYyODA2NWE4YjU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZh
a2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5X2gKKyNkZWZpbmUgRmFrZVdlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIEZha2VXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5IDogcHVibGljIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgV2ViS2l0OjpGYWtlV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSgpKTsgfQorCisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnkqIGNsb25lKCkgY29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAg
IHJldHVybiBuZXcgRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkoKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0
dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqKSBPVkVS
UklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihXZWJTY3Jv
bGxiYXIqKSBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5n
dGgoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREUgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJSZWN0IHRyYWNrUmVjdChXZWJTY3JvbGxiYXIqKSBP
VkVSUklERSB7IHJldHVybiBXZWJSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJS
ZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIFdlYlJlY3QoKTsgfQorICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJl
dHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFdlYlNjcm9sbGJh
ciopIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1dHRv
blN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiBXZWJSZWN0KCk7IH0K
KyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1dHRvbkVuZFJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZF
UlJJREUgeyByZXR1cm4gV2ViUmVjdCgpOyB9CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRC
dXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREUgeyByZXR1cm4gV2ViUmVjdCgp
OyB9CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJh
ciopIE9WRVJSSURFIHsgcmV0dXJuIFdlYlJlY3QoKTsgfQorICAgIHZpcnR1YWwgV2ViUmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJl
Y3QmKSBPVkVSUklERSB7IHJldHVybiBXZWJSZWN0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBz
cGxpdFRyYWNrKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJlY3QmIHRyYWNrLCBXZWJSZWN0JiBz
dGFydFRyYWNrLCBXZWJSZWN0JiB0aHVtYiwgV2ViUmVjdCYgZW5kVHJhY2spIE9WRVJSSURFCisg
ICAgeworICAgICAgICBzdGFydFRyYWNrID0gV2ViUmVjdCgpOworICAgICAgICB0aHVtYiA9IFdl
YlJlY3QoKTsKKyAgICAgICAgZW5kVHJhY2sgPSBXZWJSZWN0KCk7CisgICAgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGJh
ckxheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4IGE5YTY1NDAxOTk2YmM5MmE0ZDZjYzkz
MDlhYjc4MmY4OTI5NjQ3MzUuLjFmZjI3MGZlNWRlOGQyMTUzOTFmYTI5OGI0ZDdmMzgyYmM2NTgw
NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRl
ICJTY3JvbGxiYXJMYXllckNocm9taXVtLmgiCiAKKyNpbmNsdWRlICJGYWtlV2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNocm9uaXplci5oIgpAQCAtOTgsNyArOTksNiBAQCBU
RVNUKFNjcm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LCByZXNvbHZlU2Nyb2xsTGF5ZXJQb2ludGVy
KQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRocmVhZCBpbXBsOwogCiAgICAgUmVmUHRyPE1vY2tT
Y3JvbGxiYXI+IG1vY2tTY3JvbGxiYXIgPSBhZG9wdFJlZihuZXcgTW9ja1Njcm9sbGJhcik7Ci0g
ICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5KDApOwogICAgIFdl
YktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIoMCk7CiAKICAgICBTZXR0aW5n
czo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVkKHRydWUpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIFRF
U1QoU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QsIHJlc29sdmVTY3JvbGxMYXllclBvaW50ZXIp
CiAgICAgICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4gc2Nyb2xsYmFyID0gV2ViS2l0
OjpXZWJTY3JvbGxiYXI6OmNyZWF0ZShtb2NrU2Nyb2xsYmFyLmdldCgpKTsKICAgICAgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJlZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKICAgICAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwotICAgICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gU2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHNjcm9sbGJhci5yZWxlYXNlKCksIHBhaW50ZXIsIGdl
b21ldHJ5LCBjaGlsZDEtPmlkKCkpOworICAgICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hp
bGQyID0gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHNjcm9sbGJhci5yZWxlYXNlKCks
IHBhaW50ZXIsIFdlYktpdDo6RmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OmNyZWF0ZSgp
LCBjaGlsZDEtPmlkKCkpOwogICAgICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChjaGlsZDEp
OwogICAgICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChjaGlsZDIpOwogCkBAIC0xMjMsNyAr
MTIzLDcgQEAgVEVTVChTY3JvbGxiYXJMYXllckNocm9taXVtVGVzdCwgcmVzb2x2ZVNjcm9sbExh
eWVyUG9pbnRlcikKICAgICAgICAgT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiBzY3JvbGxi
YXIgPSBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6Y3JlYXRlKG1vY2tTY3JvbGxiYXIuZ2V0KCkpOwog
ICAgICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwogICAgICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAgICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGls
ZDEgPSBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUoc2Nyb2xsYmFyLnJlbGVhc2UoKSwg
cGFpbnRlciwgZ2VvbWV0cnksIGNoaWxkMi0+aWQoKSk7CisgICAgICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZDEgPSBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUoc2Nyb2xsYmFy
LnJlbGVhc2UoKSwgcGFpbnRlciwgV2ViS2l0OjpGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eTo6Y3JlYXRlKCksIGNoaWxkMi0+aWQoKSk7CiAgICAgICAgIGxheWVyVHJlZVJvb3QtPmFkZENo
aWxkKGNoaWxkMSk7CiAgICAgICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMik7CiAK
QEAgLTE0Miw3ICsxNDIsNiBAQCBURVNUKFNjcm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LCBzY3Jv
bGxPZmZzZXRTeW5jaHJvbml6YXRpb24pCiAgICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGlt
cGw7CiAKICAgICBSZWZQdHI8TW9ja1Njcm9sbGJhcj4gbW9ja1Njcm9sbGJhciA9IGFkb3B0UmVm
KG5ldyBNb2NrU2Nyb2xsYmFyKTsKLSAgICBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnkgZ2VvbWV0cnkoMCk7CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFp
bnRlcigwKTsKIAogICAgIFNldHRpbmdzOjpzZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQodHJ1ZSk7
CkBAIC0xNTAsNyArMTQ5LDcgQEAgVEVTVChTY3JvbGxiYXJMYXllckNocm9taXVtVGVzdCwgc2Ny
b2xsT2Zmc2V0U3luY2hyb25pemF0aW9uKQogICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJh
cj4gc2Nyb2xsYmFyID0gV2ViS2l0OjpXZWJTY3JvbGxiYXI6OmNyZWF0ZShtb2NrU2Nyb2xsYmFy
LmdldCgpKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjb250ZW50TGF5
ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
c2Nyb2xsYmFyTGF5ZXIgPSBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGUoc2Nyb2xsYmFy
LnJlbGVhc2UoKSwgcGFpbnRlciwgZ2VvbWV0cnksIGxheWVyVHJlZVJvb3QtPmlkKCkpOworICAg
IFJlZlB0cjxMYXllckNocm9taXVtPiBzY3JvbGxiYXJMYXllciA9IFNjcm9sbGJhckxheWVyQ2hy
b21pdW06OmNyZWF0ZShzY3JvbGxiYXIucmVsZWFzZSgpLCBwYWludGVyLCBXZWJLaXQ6OkZha2VX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OjpjcmVhdGUoKSwgbGF5ZXJUcmVlUm9vdC0+aWQoKSk7
CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hpbGQoY29udGVudExheWVyKTsKICAgICBsYXllclRy
ZWVSb290LT5hZGRDaGlsZChzY3JvbGxiYXJMYXllcik7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156807</attachid>
            <date>2012-08-06 17:22:12 -0700</date>
            <delta_ts>2012-08-06 20:00:26 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-93308-20120806172148.patch</filename>
            <type>text/plain</type>
            <size>56838</size>
            <attacher name="Adrienne Walker">enne</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0ODA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCA3MTNlYTIzNTQ1ZGRi
MzNlYjllMDkyN2RkODM2ZWQzMmQzYWY1NTk5Li5iOTJmNjRjZDBjMWNlY2Y3NjRlZGMzOGIxMWI0
NWIwZjE1NTlhMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wOC0wNiAg
QWRyaWVubmUgV2Fsa2VyICA8ZW5uZUBnb29nbGUuY29tPgorCisgICAgICAgIFtjaHJvbWl1bV0g
Q29udmVydCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGZyb20gYSBjb25jcmV0ZSBjbGFzcyB0
byBhbiBpbnRlcmZhY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkzMzA4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAg
ICAgICAgQ29udmVydCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IHRvIGJlIGFuIGludGVyZmFj
ZS4gVXBkYXRlCisgICAgICAgIFdlYlNjcm9sbGJhckxheWVyIHRvIHRha2UgYSBwb2ludGVyIHRv
IHRoaXMgaW50ZXJmYWNlLgorCisgICAgICAgICogY2hyb21pdW0vcHVibGljL1dlYlNjcm9sbGJh
ckxheWVyLmg6CisgICAgICAgIChXZWJTY3JvbGxiYXJMYXllcik6CisgICAgICAgICogY2hyb21p
dW0vcHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaDoKKyAgICAgICAgKFdlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnkpOgorCiAyMDEyLTA4LTAzICBOaWNvIFdlYmVyICA8dGhha2lzQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIEFkZCBBUEkgdG8gbWFrZSBpdCBwb3Nz
aWJsZSB0byByZXF1ZXN0IGFsbCB2YXJpYW50cyBvZiBhIFdlYkltYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDczYjAyODEyYzlhNDk0NDhjMjQ1NDgwMGMwYjVmN2Q1MjQwMzFlMS4uODQxOTgzYmM3YmJmZTJk
YzViOTQ1NTRkMzJjYjJlNjg0NjAxNmZiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisy
MDEyLTA4LTA2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKKyAgICAgICAg
W2Nocm9taXVtXSBDb252ZXJ0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgZnJvbSBhIGNvbmNy
ZXRlIGNsYXNzIHRvIGFuIGludGVyZmFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTMzMDgKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2Jp
bnNvbi4KKworICAgICAgICBDb252ZXJ0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgdG8gYmUg
YW4gaW50ZXJmYWNlLiBDcmVhdGUgYSBuZXcKKyAgICAgICAgV2ViU2Nyb2xsYmFyVGhlbWVHZW9t
ZXRyeU5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB0byB3cmFwIGEgbmF0aXZlIHRoZW1lCisgICAgICAg
IHBvaW50ZXIuCisKKyAgICAgICAgVXBkYXRlIFNjcm9sbGJhckxheWVyQ2hyb21pdW0vQ0NTY3Jv
bGxiYXJMYXllckltcGwgdG8gdXNlIGEgcG9pbnRlciB0bworICAgICAgICB0aGlzIGludGVyZmFj
ZSByYXRoZXIgdGhhbiBhIGNvbmNyZXRlIG1lbWJlciB2YXJpYWJsZS4gQmVjYXVzZSBib3RoCisg
ICAgICAgIGxheWVyIHR5cGVzIG5lZWQgdG8gYWNjZXNzIHRoZSB0aGVtZSBkdXJpbmcgcGFpbnRp
bmcgb3IgY29tcG9zaXRpbmcKKyAgICAgICAgYW5kIGVpdGhlciBsYXllciBjb3VsZCBnbyBhd2F5
IGF0IGFueSB0aW1lLCB0aGUgdGhlbWUgaXMgY2xvbmVkIGR1cmluZworICAgICAgICBjb21taXQg
cmF0aGVyIHRoYW4gZGVhbGluZyB3aXRoIHJlZmNvdW50aW5nIGFjcm9zcyB0aHJlYWRzIG9yIGhh
dmluZworICAgICAgICBvbmUgbGF5ZXIgdHlwZSBiZSB0aGUgc29sZSBvd25lci4KKworICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVNj
cm9sbGJhckxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5jcHAuCisgICAgICAgIChX
ZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0
aXZlOjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6Y2xvbmUpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0aHVtYlBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6dGh1bWJMZW5ndGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFj
a1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5h
dGl2ZTo6dHJhY2tMZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlOjpoYXNCdXR0b25zKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeU5hdGl2ZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0aHVtYlJlY3QpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjptaW5pbXVtVGh1bWJMZW5ndGgp
OgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpzY3Jv
bGxiYXJUaGlja25lc3MpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21l
dHJ5TmF0aXZlOjpiYWNrQnV0dG9uU3RhcnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6YmFja0J1dHRvbkVuZFJlY3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpmb3J3YXJkQnV0dG9uU3Rh
cnRSZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2
ZTo6Zm9yd2FyZEJ1dHRvbkVuZFJlY3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTY3JvbGxiYXJU
aGVtZUdlb21ldHJ5TmF0aXZlOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6c3BsaXRUcmFj
ayk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5TmF0aXZlLmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhckxheWVyQ2hyb21pdW06OlNjcm9sbGJhckxheWVyQ2hyb21pdW0pOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRpZXNUbyk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpTY3JvbGxiYXJCYWNrZ3Jv
dW5kUGFpbnRlcik6CisgICAgICAgIChTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OlNjcm9sbGJhclRodW1iUGFpbnRlcik6Cisg
ICAgICAgIChTY3JvbGxiYXJUaHVtYlBhaW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXJJZk5lZWRlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjpzZXRUZXh0dXJlUHJpb3JpdGllcyk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJMYXllckNocm9taXVtOjp1cGRhdGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0u
aDoKKyAgICAgICAgKFNjcm9sbGJhckxheWVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsOjpzZXRTY3JvbGxiYXJHZW9tZXRyeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsYmFyRGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6YXBwZW5kUXVhZHMpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJ
bXBsLmg6CisgICAgICAgIChXZWJDb3JlOjpDQ1Njcm9sbGJhckxheWVySW1wbDo6c2Nyb2xsYmFy
R2VvbWV0cnkpOgorICAgICAgICAoQ0NTY3JvbGxiYXJMYXllckltcGwpOgorCiAyMDEyLTA4LTA2
ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNZWRpYVNv
dXJjZSBzaG91bGQgdXNlIGl0J3Mgb3duIGxpc3Qgb2Ygc291cmNlIFVSTHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZWVkYzAyMjM4ZDNiNzRiYjdjMDFlNzVkNzViOWQxNzc5OWQ0MTk4
OC4uNDc1YmRkMzA5ZTg5Y2RhZTBmYzliMzVhMGU5NzVlNDcyNWJjNWIyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyOCBAQAogMjAxMi0wOC0wNiAgQWRyaWVubmUgV2Fs
a2VyICA8ZW5uZUBnb29nbGUuY29tPgogCisgICAgICAgIFtjaHJvbWl1bV0gQ29udmVydCBXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5IGZyb20gYSBjb25jcmV0ZSBjbGFzcyB0byBhbiBpbnRlcmZh
Y2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkzMzA4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSmFtZXMgUm9iaW5zb24uCisKKyAgICAgICAgTm93IHRo
YXQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBjYW4gaGF2ZSBkaWZmZXJlbnQgaW1wbGVtZW50
YXRpb25zLAorICAgICAgICBjcmVhdGUgYSBGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBm
b3IgdGVzdGluZyBwdXJwb3NlcyByYXRoZXIKKyAgICAgICAgdGhhbiBqdXN0IG92ZXJyaWRpbmcg
YSBnZW9tZXRyeS1yZWxhdGVkIHZpcnR1YWwuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAg
ICAgICAqIFdlYktpdC5neXBpOgorICAgICAgICAqIHNyYy9XZWJTY3JvbGxiYXJMYXllci5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUpOgorICAgICAgICAq
IHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9GYWtl
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdCk6Cisg
ICAgICAgIChGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSk6CisgICAgICAgIChXZWJLaXQ6
OkZha2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OjpjcmVhdGUpOgorICAgICAgICAqIHRlc3Rz
L1Njcm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRFU1Qp
OgorCisyMDEyLTA4LTA2ICBBZHJpZW5uZSBXYWxrZXIgIDxlbm5lQGdvb2dsZS5jb20+CisKICAg
ICAgICAgW2Nocm9taXVtXSBSRUdSRVNTSU9OKHIxMjQ3MTQpOiB3ZWJraXRfdW5pdF90ZXN0cyBh
c3NlcnRzIGluIERlYnVnCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05MzI5NwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVi
bGljL1dlYlNjcm9sbGJhckxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYlNjcm9sbGJhckxheWVyLmgKaW5kZXggOWQ3N2FhNzYzNjMxYjZkYWI2ZTJkZWIwMzYxNGI1
NTg5YWIzMjE1Ni4uMWJmZTdkNmFiYjNhNTlmM2YzZWEzMzA0NDhjYzY0MDdkMzExYTFhOSAxMDA2
NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJMYXll
ci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyTGF5
ZXIuaApAQCAtNTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgV0VCS0lUX0VYUE9SVCB2b2lkIHNl
dFNjcm9sbExheWVyKGNvbnN0IFdlYkxheWVyKTsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElP
TgotICAgIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFy
KiwgV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KTsK
KyAgICBzdGF0aWMgV2ViU2Nyb2xsYmFyTGF5ZXIgY3JlYXRlKFdlYkNvcmU6OlNjcm9sbGJhcios
IFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciwgUGFzc093blB0cjxXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5Pik7CiAgICAgZXhwbGljaXQgV2ViU2Nyb2xsYmFyTGF5ZXIoY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OlNjcm9sbGJhckxheWVyQ2hyb21pdW0+Jik7CiAgICAgV2ViU2Nyb2xs
YmFyTGF5ZXImIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6U2Nyb2xs
YmFyTGF5ZXJDaHJvbWl1bT4mKTsKICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4oKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgK
aW5kZXggMjc3OGQ1Y2ZiMzZkZTdhZTVmMWMxMGRjOTI0YTE1OTc5YjMwZDUxOC4uMGE4NTYyZTc4
N2YyY2I2ZmE5ZDg2ZWU2ZjU4Y2E3NDkxMWViNTgyZiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgKKysrIGIvU291
cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmgK
QEAgLTI4LDU1ICsyOCwzMSBAQAogCiAjaW5jbHVkZSAiV2ViUmVjdC5oIgogCi1uYW1lc3BhY2Ug
V2ViQ29yZSB7Ci1jbGFzcyBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTsKLX07Ci0KIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTY3JvbGxiYXI7CiAKIGNsYXNzIFdlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnkgewogcHVibGljOgotICAgIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkoKSA6
IG1fdGhlbWUoMCkgeyB9Ci0KLSAgICBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KGNvbnN0IFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnkmIGdlb21ldHJ5KSB7IGFzc2lnbihnZW9tZXRyeSk7IH0K
ICAgICB2aXJ0dWFsIH5XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KCkgeyB9Ci0gICAgV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSYgb3BlcmF0b3I9KGNvbnN0IFdlYlNjcm9sbGJhclRoZW1lR2Vv
bWV0cnkmIGdlb21ldHJ5KQotICAgIHsKLSAgICAgICAgYXNzaWduKGdlb21ldHJ5KTsKLSAgICAg
ICAgcmV0dXJuICp0aGlzOwotICAgIH0KLQotICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1
cm4gbV90aGVtZTsgfQotICAgIFdFQktJVF9FWFBPUlQgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSYpOwotCi0gICAgV0VCS0lUX0VYUE9SVCBpbnQgdGh1bWJQb3Np
dGlvbihXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQT1JUIGludCB0aHVtYkxlbmd0aChX
ZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQT1JUIGludCB0cmFja1Bvc2l0aW9uKFdlYlNj
cm9sbGJhciopOwotICAgIFdFQktJVF9FWFBPUlQgaW50IHRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJh
ciopOwotICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciopOwot
ICAgIFdFQktJVF9FWFBPUlQgYm9vbCBoYXNUaHVtYihXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciopOwotICAgIFdFQktJVF9F
WFBPUlQgV2ViUmVjdCB0aHVtYlJlY3QoV2ViU2Nyb2xsYmFyKik7Ci0gICAgV0VCS0lUX0VYUE9S
VCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFdlYlNjcm9sbGJhciopOwotICAgIFdFQktJVF9FWFBP
UlQgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJLSVRfRVhQ
T1JUIFdlYlJlY3QgYmFja0J1dHRvblN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqKTsKLSAgICBXRUJL
SVRfRVhQT1JUIFdlYlJlY3QgYmFja0J1dHRvbkVuZFJlY3QoV2ViU2Nyb2xsYmFyKik7Ci0gICAg
V0VCS0lUX0VYUE9SVCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFy
Kik7Ci0gICAgV0VCS0lUX0VYUE9SVCBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNj
cm9sbGJhciopOwotICAgIFdFQktJVF9FWFBPUlQgV2ViUmVjdCBjb25zdHJhaW5UcmFja1JlY3RU
b1RyYWNrUGllY2VzKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJlY3QmKTsKLSAgICBXRUJLSVRf
RVhQT1JUIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFj
aywgV2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNr
KTsKLQotI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgotICAgIGV4cGxpY2l0IFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqKTsKLSNlbmRp
ZgogCi1wcml2YXRlOgotICAgIC8vIFRoZSB0aGVtZSBpcyBub3Qgb3duZWQgYnkgdGhpcyBjbGFz
cy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSB0aGVtZSBpcyBhCi0gICAgLy8gc3RhdGljIHBvaW50
ZXIgYW5kIGl0cyBsaWZldGltZSBpcyBlc3NlbnRpYWxseSBpbmZpbml0ZS4gT25seSB0aHJlYWQt
c2FmZQotICAgIC8vIGZ1bmN0aW9ucyBvbiB0aGUgdGhlbWUgY2FuIGJlIGNhbGxlZCBieSB0aGlz
IHRoZW1lLgotICAgIFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiBtX3RoZW1lOwor
ICAgIHZpcnR1YWwgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogY2xvbmUoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihXZWJTY3JvbGxiYXIqKSA9IDA7CisgICAg
dmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwg
aW50IHRyYWNrUG9zaXRpb24oV2ViU2Nyb2xsYmFyKikgPSAwOworICAgIHZpcnR1YWwgaW50IHRy
YWNrTGVuZ3RoKFdlYlNjcm9sbGJhciopID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9u
cyhXZWJTY3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFdlYlNjcm9s
bGJhciopID0gMDsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciop
ID0gMDsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJSZWN0KFdlYlNjcm9sbGJhciopID0gMDsK
KyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoV2ViU2Nyb2xsYmFyKikgPSAwOwor
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIqKSA9IDA7Cisg
ICAgdmlydHVhbCBXZWJSZWN0IGJhY2tCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikgPSAw
OworICAgIHZpcnR1YWwgV2ViUmVjdCBiYWNrQnV0dG9uRW5kUmVjdChXZWJTY3JvbGxiYXIqKSA9
IDA7CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xs
YmFyKikgPSAwOworICAgIHZpcnR1YWwgV2ViUmVjdCBmb3J3YXJkQnV0dG9uRW5kUmVjdChXZWJT
Y3JvbGxiYXIqKSA9IDA7CisgICAgdmlydHVhbCBXZWJSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRv
VHJhY2tQaWVjZXMoV2ViU2Nyb2xsYmFyKiwgY29uc3QgV2ViUmVjdCYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3BsaXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFjaywg
V2ViUmVjdCYgc3RhcnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNrKSA9
IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNDZl
NTcxYjYyM2Q3ZjY0OTJhZTAyMzBhYzY2NjVjYjIzZGRhNzZmLi40ZDQ4OWY2ZDRkYjA1ZWEwOTU1
ZTI0YTI3N2QzYmI5OWI0OTcyZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC04MjI5LDYgKzgyMjks
OCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvV2ViTWVkaWFTdHJl
YW1Tb3VyY2VzUmVxdWVzdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1
cHBvcnQvV2ViUHJlcmVuZGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0v
c3VwcG9ydC9XZWJSVENDb25maWd1cmF0aW9uLmNwcCcsCisgICAgICAgICAgICAncGxhdGZvcm0v
Y2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmNwcCcsCisg
ICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQv
V2ViU2hhcmVkR3JhcGhpY3NDb250ZXh0M0QuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRocmVhZFNhZmVEYXRhLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9jaHJvbWl1bS9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2No
cm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCmluZGV4IGUxODBjZWZjNzc5
NmUwNjhkYzk5NTU0MGJiMmVjYTQwOTdmN2M4YTEuLmUyZmM3NjE4N2U0ZjlkMGMzNzUwY2I2ZGQ3
ODgzZmY0NTA0ZTNkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL2Nocm9taXVtL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW0uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9y
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29t
cG9zaXRlLmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZS5oIgog
I2luY2x1ZGUgImNjL0NDUHJveHkuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYWJsZUxh
eWVyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYlNjcm9sbGJhci5oPgpAQCAtMTQzLDkgKzE0NCw5
IEBAIHN0YXRpYyBXZWJTY3JvbGxiYXJMYXllciBjcmVhdGVTY3JvbGxiYXJMYXllcihTY3JvbGxi
YXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYWJsCiAgICAgLy8gQWxsIENocm9taXVtIHNjcm9sbGJh
ciB0aGVtZXMgZGVyaXZlIGZyb20gU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuCiAgICAgU2Nyb2xs
YmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lQ29tcG9zaXRlID0gc3RhdGljX2Nhc3Q8U2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUqPihzY3JvbGxiYXItPnRoZW1lKCkpOwogICAgIFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIodGhlbWVDb21wb3NpdGUpOwotICAgIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBnZW9tZXRyeSh0aGVtZUNvbXBvc2l0ZSk7CisgICAg
T3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnkoV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUodGhlbWVDb21wb3NpdGUp
KTsKIAotICAgIFdlYlNjcm9sbGJhckxheWVyIHNjcm9sbGJhckxheWVyID0gV2ViU2Nyb2xsYmFy
TGF5ZXI6OmNyZWF0ZShzY3JvbGxiYXIsIHBhaW50ZXIsIGdlb21ldHJ5KTsKKyAgICBXZWJTY3Jv
bGxiYXJMYXllciBzY3JvbGxiYXJMYXllciA9IFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoc2Ny
b2xsYmFyLCBwYWludGVyLCBnZW9tZXRyeS5yZWxlYXNlKCkpOwogICAgIHNjcm9sbGJhckxheWVy
LnNldFNjcm9sbExheWVyKHNjcm9sbExheWVyKTsKIAogICAgIHNjcm9sbGJhckdyYXBoaWNzTGF5
ZXItPnNldENvbnRlbnRzVG9NZWRpYShzY3JvbGxiYXJMYXllci51bndyYXA8TGF5ZXJDaHJvbWl1
bT4oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBw
b3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5lNWVhYjM1OWVkYjZmYzI4YzU1ODZmZjQ0OWIyMzliMTc1NzAwNjM1
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3Vw
cG9ydC9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmNwcApAQCAtMCwwICsxLDE1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIldlYlNjcm9sbGJhclRo
ZW1lR2VvbWV0cnlOYXRpdmUuaCIKKworI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
LmgiCisjaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsLmgiCisjaW5jbHVkZSA8
cHVibGljL1dlYlNjcm9sbGJhci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKK1Bhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdl
b21ldHJ5TmF0aXZlPiBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpjcmVhdGUoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUqIHRoZW1lKQoreworICAgIHJldHVybiBhZG9w
dFB0cihuZXcgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZSh0aGVtZSkpOworfQorCitX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5
TmF0aXZlKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKiB0aGVtZSkKKyAgICA6IG1f
dGhlbWUodGhlbWUpCit7Cit9CisKK1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUqIFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6OmNsb25lKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbmV3IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUobV90aGVtZSk7Cit9CisKK2lu
dCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0aHVtYlBvc2l0aW9uKFdlYlNjcm9s
bGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGll
bnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJQb3NpdGlvbigmY2xpZW50
KTsKK30KKworaW50IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6OnRodW1iTGVuZ3Ro
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJMZW5ndGgo
JmNsaWVudCk7Cit9CisKK2ludCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFj
a1Bvc2l0aW9uKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRo
ZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+dHJh
Y2tQb3NpdGlvbigmY2xpZW50KTsKK30KKworaW50IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlO
YXRpdmU6OnRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNj
cm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90
aGVtZS0+dHJhY2tMZW5ndGgoJmNsaWVudCk7Cit9CisKK2Jvb2wgV2ViU2Nyb2xsYmFyVGhlbWVH
ZW9tZXRyeU5hdGl2ZTo6aGFzQnV0dG9ucyhXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sKKyAg
ICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7CisgICAgcmV0
dXJuIG1fdGhlbWUtPmhhc0J1dHRvbnMoJmNsaWVudCk7Cit9CisKK2Jvb2wgV2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeU5hdGl2ZTo6aGFzVGh1bWIoV2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit7
CisgICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsIGNsaWVudChzY3JvbGxiYXIpOworICAg
IHJldHVybiBtX3RoZW1lLT5oYXNUaHVtYigmY2xpZW50KTsKK30KKworV2ViUmVjdCBXZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjp0cmFja1JlY3QoV2ViU2Nyb2xsYmFyKiBzY3JvbGxi
YXIpCit7CisgICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsIGNsaWVudChzY3JvbGxiYXIp
OworICAgIHJldHVybiBtX3RoZW1lLT50cmFja1JlY3QoJmNsaWVudCk7Cit9CisKK1dlYlJlY3Qg
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6dGh1bWJSZWN0KFdlYlNjcm9sbGJhciog
c2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Ny
b2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJSZWN0KCZjbGllbnQpOworfQorCitp
bnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6bWluaW11bVRodW1iTGVuZ3RoKFdl
YlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+bWluaW11bVRodW1iTGVu
Z3RoKCZjbGllbnQpOworfQorCitpbnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZTo6
c2Nyb2xsYmFyVGhpY2tuZXNzKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNj
cm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90
aGVtZS0+c2Nyb2xsYmFyVGhpY2tuZXNzKGNsaWVudC5jb250cm9sU2l6ZSgpKTsKK30KKworV2Vi
UmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpiYWNrQnV0dG9uU3RhcnRSZWN0
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50
SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+YmFja0J1dHRvblJl
Y3QoJmNsaWVudCwgQmFja0J1dHRvblN0YXJ0UGFydCwgZmFsc2UpOworfQorCitXZWJSZWN0IFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU6OmJhY2tCdXR0b25FbmRSZWN0KFdlYlNjcm9s
bGJhciogc2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGll
bnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+YmFja0J1dHRvblJlY3QoJmNsaWVu
dCwgQmFja0J1dHRvbkVuZFBhcnQsIGZhbHNlKTsKK30KKworV2ViUmVjdCBXZWJTY3JvbGxiYXJU
aGVtZUdlb21ldHJ5TmF0aXZlOjpmb3J3YXJkQnV0dG9uU3RhcnRSZWN0KFdlYlNjcm9sbGJhciog
c2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Ny
b2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+Zm9yd2FyZEJ1dHRvblJlY3QoJmNsaWVudCwg
Rm9yd2FyZEJ1dHRvblN0YXJ0UGFydCwgZmFsc2UpOworfQorCitXZWJSZWN0IFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnlOYXRpdmU6OmZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciog
c2Nyb2xsYmFyKQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Ny
b2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVtZS0+Zm9yd2FyZEJ1dHRvblJlY3QoJmNsaWVudCwg
Rm9yd2FyZEJ1dHRvbkVuZFBhcnQsIGZhbHNlKTsKK30KKworV2ViUmVjdCBXZWJTY3JvbGxiYXJU
aGVtZUdlb21ldHJ5TmF0aXZlOjpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFdlYlNj
cm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBXZWJSZWN0JiByZWN0KQoreworICAgIFdlYlNjcm9s
bGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKKyAgICByZXR1cm4gbV90aGVt
ZS0+Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcygmY2xpZW50LCBJbnRSZWN0KHJlY3Qp
KTsKK30KKwordm9pZCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlOjpzcGxpdFRyYWNr
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBXZWJSZWN0JiB3ZWJUcmFjaywgV2ViUmVj
dCYgd2ViU3RhcnRUcmFjaywgV2ViUmVjdCYgd2ViVGh1bWIsIFdlYlJlY3QmIHdlYkVuZFRyYWNr
KQoreworICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsK
KyAgICBJbnRSZWN0IHRyYWNrKHdlYlRyYWNrKTsKKyAgICBJbnRSZWN0IHN0YXJ0VHJhY2s7Cisg
ICAgSW50UmVjdCB0aHVtYjsKKyAgICBJbnRSZWN0IGVuZFRyYWNrOworICAgIG1fdGhlbWUtPnNw
bGl0VHJhY2soJmNsaWVudCwgdHJhY2ssIHN0YXJ0VHJhY2ssIHRodW1iLCBlbmRUcmFjayk7CisK
KyAgICB3ZWJTdGFydFRyYWNrID0gc3RhcnRUcmFjazsKKyAgICB3ZWJUaHVtYiA9IHRodW1iOwor
ICAgIHdlYkVuZFRyYWNrID0gZW5kVHJhY2s7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi44MDIzMzYwMWQ3MjY2OTU5YjE0ZGJjNTgzZTdlMGRkNDk3NTIxNGMzCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJTY3Jv
bGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElU
UyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeU5hdGl2ZV9oCisjZGVmaW5lIFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnlOYXRpdmVfaAorCisjaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oPgorI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlOworfQorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViU2Nyb2xs
YmFyOworCitjbGFzcyBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlIDogcHVibGljIFdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmU+IGNyZWF0ZShXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZSopOworCisgICAgLy8gV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBv
dmVycmlkZXMKKyAgICB2aXJ0dWFsIFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOYXRpdmUqIGNs
b25lKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihXZWJT
Y3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0aChXZWJTY3Jv
bGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFdlYlNjcm9s
bGJhciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJh
ciopIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciop
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihXZWJTY3JvbGxiYXIqKSBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgdHJhY2tSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJS
SURFOworICAgIHZpcnR1YWwgV2ViUmVjdCB0aHVtYlJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFdlYlNjcm9sbGJhciopIE9W
RVJSSURFOworICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhXZWJTY3JvbGxiYXIq
KSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1dHRvblN0YXJ0UmVjdChXZWJT
Y3JvbGxiYXIqKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1dHRvbkVuZFJl
Y3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRC
dXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJS
ZWN0IGZvcndhcmRCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViUmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFdlYlNjcm9sbGJh
ciosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc3BsaXRUcmFj
ayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFjaywgV2ViUmVjdCYgc3RhcnRUcmFj
aywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNrKSBPVkVSUklERTsKKworcHJpdmF0
ZToKKyAgICBleHBsaWNpdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5TmF0aXZlKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKik7CisKKyAgICAvLyBUaGUgdGhlbWUgaXMgbm90IG93
bmVkIGJ5IHRoaXMgY2xhc3MuIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdGhlbWUgaXMgYQorICAg
IC8vIHN0YXRpYyBwb2ludGVyIGFuZCBpdHMgbGlmZXRpbWUgaXMgZXNzZW50aWFsbHkgaW5maW5p
dGUuIE9ubHkgdGhyZWFkLXNhZmUKKyAgICAvLyBmdW5jdGlvbnMgb24gdGhlIHRoZW1lIGNhbiBi
ZSBjYWxsZWQgYnkgdGhpcyB0aGVtZS4KKyAgICBXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZSogbV90aGVtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Njcm9s
bGJhckxheWVyQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNWE5ZmJmNWVhYWIyYjNh
NDVjN2EyZjcyYzk5ZWVmZTNmMWY4ODVkNC4uNTdhODE1NThhMGQxOWFiMzJlOTIxMTEzMTMxN2Ex
Mzg4N2VjMjJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5jcHAKQEAg
LTQ0LDEyICs0NCwxMiBAQCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBTY3JvbGxiYXJMYXllckNo
cm9taXVtOjpjcmVhdGVDQ0xheWVySW1wbCgpCiAgICAgcmV0dXJuIENDU2Nyb2xsYmFyTGF5ZXJJ
bXBsOjpjcmVhdGUoaWQoKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bT4gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJT
Y3JvbGxiYXI+IHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFp
bnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5LCBpbnQgc2Ny
b2xsTGF5ZXJJZCkKK1Bhc3NSZWZQdHI8U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bT4gU2Nyb2xsYmFy
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+IHNj
cm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwgUGFzc093
blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5LCBpbnQgc2Ny
b2xsTGF5ZXJJZCkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNjcm9sbGJhckxheWVyQ2hy
b21pdW0oc2Nyb2xsYmFyLCBwYWludGVyLCBnZW9tZXRyeSwgc2Nyb2xsTGF5ZXJJZCkpOwogfQog
Ci1TY3JvbGxiYXJMYXllckNocm9taXVtOjpTY3JvbGxiYXJMYXllckNocm9taXVtKFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJTY3JvbGxiYXI+IHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJU
aGVtZVBhaW50ZXIgcGFpbnRlciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdl
b21ldHJ5LCBpbnQgc2Nyb2xsTGF5ZXJJZCkKK1Njcm9sbGJhckxheWVyQ2hyb21pdW06OlNjcm9s
bGJhckxheWVyQ2hyb21pdW0oUGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4gc2Nyb2xs
YmFyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBQYXNzT3duUHRy
PFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4gZ2VvbWV0cnksIGludCBzY3JvbGxM
YXllcklkKQogICAgIDogbV9zY3JvbGxiYXIoc2Nyb2xsYmFyKQogICAgICwgbV9wYWludGVyKHBh
aW50ZXIpCiAgICAgLCBtX2dlb21ldHJ5KGdlb21ldHJ5KQpAQCAtNjQsNyArNjQsMTAgQEAgdm9p
ZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpwdXNoUHJvcGVydGllc1RvKENDTGF5ZXJJbXBsKiBs
YXllcikKIAogICAgIENDU2Nyb2xsYmFyTGF5ZXJJbXBsKiBzY3JvbGxiYXJMYXllciA9IHN0YXRp
Y19jYXN0PENDU2Nyb2xsYmFyTGF5ZXJJbXBsKj4obGF5ZXIpOwogCi0gICAgc2Nyb2xsYmFyTGF5
ZXItPnNldFNjcm9sbGJhckRhdGEobV9zY3JvbGxiYXIuZ2V0KCksIG1fZ2VvbWV0cnkpOworICAg
IGlmICghc2Nyb2xsYmFyTGF5ZXItPnNjcm9sbGJhckdlb21ldHJ5KCkpCisgICAgICAgIHNjcm9s
bGJhckxheWVyLT5zZXRTY3JvbGxiYXJHZW9tZXRyeShhZG9wdFB0cihtX2dlb21ldHJ5LT5jbG9u
ZSgpKSk7CisKKyAgICBzY3JvbGxiYXJMYXllci0+c2V0U2Nyb2xsYmFyRGF0YShtX3Njcm9sbGJh
ci5nZXQoKSk7CiAKICAgICBpZiAobV9iYWNrVHJhY2sgJiYgbV9iYWNrVHJhY2stPnRleHR1cmUo
KS0+aGF2ZUJhY2tpbmdUZXh0dXJlKCkpCiAgICAgICAgIHNjcm9sbGJhckxheWVyLT5zZXRCYWNr
VHJhY2tSZXNvdXJjZUlkKG1fYmFja1RyYWNrLT50ZXh0dXJlKCktPnJlc291cmNlSWQoKSk7CkBA
IC04NSw3ICs4OCw3IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6cHVzaFByb3BlcnRp
ZXNUbyhDQ0xheWVySW1wbCogbGF5ZXIpCiBjbGFzcyBTY3JvbGxiYXJCYWNrZ3JvdW5kUGFpbnRl
ciA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXIpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRl
ciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5LCBXZWJLaXQ6Oldl
YlNjcm9sbGJhcjo6U2Nyb2xsYmFyUGFydCB0cmFja1BhcnQpCisgICAgc3RhdGljIFBhc3NPd25Q
dHI8U2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI+IGNyZWF0ZShXZWJLaXQ6OldlYlNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBX
ZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkqIGdlb21ldHJ5LCBXZWJLaXQ6OldlYlNj
cm9sbGJhcjo6U2Nyb2xsYmFyUGFydCB0cmFja1BhcnQpCiAgICAgewogICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyKHNjcm9sbGJhciwgcGFpbnRl
ciwgZ2VvbWV0cnksIHRyYWNrUGFydCkpOwogICAgIH0KQEAgLTk3LDI0ICsxMDAsMjQgQEAgcHVi
bGljOgogICAgICAgICBXZWJLaXQ6OldlYlJlY3QgY29udGVudFdlYlJlY3QoY29udGVudFJlY3Qu
eCgpLCBjb250ZW50UmVjdC55KCksIGNvbnRlbnRSZWN0LndpZHRoKCksIGNvbnRlbnRSZWN0Lmhl
aWdodCgpKTsKICAgICAgICAgbV9wYWludGVyLnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChjYW52
YXMsIG1fc2Nyb2xsYmFyLCBjb250ZW50V2ViUmVjdCk7CiAKLSAgICAgICAgaWYgKG1fZ2VvbWV0
cnkuaGFzQnV0dG9ucyhtX3Njcm9sbGJhcikpIHsKLSAgICAgICAgICAgIFdlYlJlY3QgYmFja0J1
dHRvblN0YXJ0UGFpbnRSZWN0ID0gbV9nZW9tZXRyeS5iYWNrQnV0dG9uU3RhcnRSZWN0KG1fc2Ny
b2xsYmFyKTsKKyAgICAgICAgaWYgKG1fZ2VvbWV0cnktPmhhc0J1dHRvbnMobV9zY3JvbGxiYXIp
KSB7CisgICAgICAgICAgICBXZWJSZWN0IGJhY2tCdXR0b25TdGFydFBhaW50UmVjdCA9IG1fZ2Vv
bWV0cnktPmJhY2tCdXR0b25TdGFydFJlY3QobV9zY3JvbGxiYXIpOwogICAgICAgICAgICAgbV9w
YWludGVyLnBhaW50QmFja0J1dHRvblN0YXJ0KGNhbnZhcywgbV9zY3JvbGxiYXIsIGJhY2tCdXR0
b25TdGFydFBhaW50UmVjdCk7CiAKLSAgICAgICAgICAgIFdlYlJlY3QgYmFja0J1dHRvbkVuZFBh
aW50UmVjdCA9IG1fZ2VvbWV0cnkuYmFja0J1dHRvbkVuZFJlY3QobV9zY3JvbGxiYXIpOworICAg
ICAgICAgICAgV2ViUmVjdCBiYWNrQnV0dG9uRW5kUGFpbnRSZWN0ID0gbV9nZW9tZXRyeS0+YmFj
a0J1dHRvbkVuZFJlY3QobV9zY3JvbGxiYXIpOwogICAgICAgICAgICAgbV9wYWludGVyLnBhaW50
QmFja0J1dHRvbkVuZChjYW52YXMsIG1fc2Nyb2xsYmFyLCBiYWNrQnV0dG9uRW5kUGFpbnRSZWN0
KTsKIAotICAgICAgICAgICAgV2ViUmVjdCBmb3J3YXJkQnV0dG9uU3RhcnRQYWludFJlY3QgPSBt
X2dlb21ldHJ5LmZvcndhcmRCdXR0b25TdGFydFJlY3QobV9zY3JvbGxiYXIpOworICAgICAgICAg
ICAgV2ViUmVjdCBmb3J3YXJkQnV0dG9uU3RhcnRQYWludFJlY3QgPSBtX2dlb21ldHJ5LT5mb3J3
YXJkQnV0dG9uU3RhcnRSZWN0KG1fc2Nyb2xsYmFyKTsKICAgICAgICAgICAgIG1fcGFpbnRlci5w
YWludEZvcndhcmRCdXR0b25TdGFydChjYW52YXMsIG1fc2Nyb2xsYmFyLCBmb3J3YXJkQnV0dG9u
U3RhcnRQYWludFJlY3QpOwogCi0gICAgICAgICAgICBXZWJSZWN0IGZvcndhcmRCdXR0b25FbmRQ
YWludFJlY3QgPSBtX2dlb21ldHJ5LmZvcndhcmRCdXR0b25FbmRSZWN0KG1fc2Nyb2xsYmFyKTsK
KyAgICAgICAgICAgIFdlYlJlY3QgZm9yd2FyZEJ1dHRvbkVuZFBhaW50UmVjdCA9IG1fZ2VvbWV0
cnktPmZvcndhcmRCdXR0b25FbmRSZWN0KG1fc2Nyb2xsYmFyKTsKICAgICAgICAgICAgIG1fcGFp
bnRlci5wYWludEZvcndhcmRCdXR0b25FbmQoY2FudmFzLCBtX3Njcm9sbGJhciwgZm9yd2FyZEJ1
dHRvbkVuZFBhaW50UmVjdCk7CiAgICAgICAgIH0KIAotICAgICAgICBXZWJSZWN0IHRyYWNrUGFp
bnRSZWN0ID0gbV9nZW9tZXRyeS50cmFja1JlY3QobV9zY3JvbGxiYXIpOworICAgICAgICBXZWJS
ZWN0IHRyYWNrUGFpbnRSZWN0ID0gbV9nZW9tZXRyeS0+dHJhY2tSZWN0KG1fc2Nyb2xsYmFyKTsK
ICAgICAgICAgbV9wYWludGVyLnBhaW50VHJhY2tCYWNrZ3JvdW5kKGNhbnZhcywgbV9zY3JvbGxi
YXIsIHRyYWNrUGFpbnRSZWN0KTsKIAotICAgICAgICBib29sIHRodW1iUHJlc2VudCA9IG1fZ2Vv
bWV0cnkuaGFzVGh1bWIobV9zY3JvbGxiYXIpOworICAgICAgICBib29sIHRodW1iUHJlc2VudCA9
IG1fZ2VvbWV0cnktPmhhc1RodW1iKG1fc2Nyb2xsYmFyKTsKICAgICAgICAgaWYgKHRodW1iUHJl
c2VudCkgewogICAgICAgICAgICAgaWYgKG1fdHJhY2tQYXJ0ID09IFdlYktpdDo6V2ViU2Nyb2xs
YmFyOjpGb3J3YXJkVHJhY2tQYXJ0KQogICAgICAgICAgICAgICAgIG1fcGFpbnRlci5wYWludEZv
cndhcmRUcmFja1BhcnQoY2FudmFzLCBtX3Njcm9sbGJhciwgdHJhY2tQYWludFJlY3QpOwpAQCAt
MTI1LDcgKzEyOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9wYWludGVyLnBhaW50VGlja21hcmtz
KGNhbnZhcywgbV9zY3JvbGxiYXIsIHRyYWNrUGFpbnRSZWN0KTsKICAgICB9CiBwcml2YXRlOgot
ICAgIFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyKFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBnZW9tZXRyeSwgV2ViS2l0OjpXZWJTY3JvbGxiYXI6
OlNjcm9sbGJhclBhcnQgdHJhY2tQYXJ0KQorICAgIFNjcm9sbGJhckJhY2tncm91bmRQYWludGVy
KFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhl
bWVQYWludGVyIHBhaW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSogZ2Vv
bWV0cnksIFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpTY3JvbGxiYXJQYXJ0IHRyYWNrUGFydCkKICAg
ICAgICAgOiBtX3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgICAgICwgbV9wYWludGVyKHBhaW50
ZXIpCiAgICAgICAgICwgbV9nZW9tZXRyeShnZW9tZXRyeSkKQEAgLTEzNSwxNCArMTM4LDE0IEBA
IHByaXZhdGU6CiAKICAgICBXZWJLaXQ6OldlYlNjcm9sbGJhciogbV9zY3JvbGxiYXI7CiAgICAg
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgbV9wYWludGVyOwotICAgIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSBtX2dlb21ldHJ5OworICAgIFdlYktpdDo6V2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeSogbV9nZW9tZXRyeTsKICAgICBXZWJLaXQ6OldlYlNjcm9sbGJh
cjo6U2Nyb2xsYmFyUGFydCBtX3RyYWNrUGFydDsKIH07CiAKIGNsYXNzIFNjcm9sbGJhclRodW1i
UGFpbnRlciA6IHB1YmxpYyBMYXllclBhaW50ZXJDaHJvbWl1bSB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoU2Nyb2xsYmFyVGh1bWJQYWludGVyKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c093blB0cjxTY3JvbGxiYXJUaHVtYlBhaW50ZXI+IGNyZWF0ZShXZWJLaXQ6OldlYlNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBX
ZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgZ2VvbWV0cnkpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8U2Nyb2xsYmFyVGh1bWJQYWludGVyPiBjcmVhdGUoV2ViS2l0OjpXZWJTY3JvbGxi
YXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwg
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KiBnZW9tZXRyeSkKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFB0cihuZXcgU2Nyb2xsYmFyVGh1bWJQYWludGVyKHNjcm9sbGJhciwg
cGFpbnRlciwgZ2VvbWV0cnkpKTsKICAgICB9CkBAIC0xNTIsMTQgKzE1NSwxNCBAQCBwdWJsaWM6
CiAgICAgICAgIFdlYktpdDo6V2ViQ2FudmFzKiBjYW52YXMgPSBza0NhbnZhczsKIAogICAgICAg
ICAvLyBDb25zaWRlciB0aGUgdGh1bWIgdG8gYmUgYXQgdGhlIG9yaWdpbiB3aGVuIHBhaW50aW5n
LgotICAgICAgICBXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnkudGh1bWJSZWN0KG1fc2Ny
b2xsYmFyKTsKKyAgICAgICAgV2ViUmVjdCB0aHVtYlJlY3QgPSBtX2dlb21ldHJ5LT50aHVtYlJl
Y3QobV9zY3JvbGxiYXIpOwogICAgICAgICB0aHVtYlJlY3QueCA9IDA7CiAgICAgICAgIHRodW1i
UmVjdC55ID0gMDsKICAgICAgICAgbV9wYWludGVyLnBhaW50VGh1bWIoY2FudmFzLCBtX3Njcm9s
bGJhciwgdGh1bWJSZWN0KTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgU2Nyb2xsYmFyVGh1bWJQ
YWludGVyKFdlYktpdDo6V2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFdlYktpdDo6V2ViU2Nyb2xs
YmFyVGhlbWVQYWludGVyIHBhaW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eSBnZW9tZXRyeSkKKyAgICBTY3JvbGxiYXJUaHVtYlBhaW50ZXIoV2ViS2l0OjpXZWJTY3JvbGxi
YXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlciwg
V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5KiBnZW9tZXRyeSkKICAgICAgICAgOiBt
X3Njcm9sbGJhcihzY3JvbGxiYXIpCiAgICAgICAgICwgbV9wYWludGVyKHBhaW50ZXIpCiAgICAg
ICAgICwgbV9nZW9tZXRyeShnZW9tZXRyeSkKQEAgLTE2OCw3ICsxNzEsNyBAQCBwcml2YXRlOgog
CiAgICAgV2ViS2l0OjpXZWJTY3JvbGxiYXIqIG1fc2Nyb2xsYmFyOwogICAgIFdlYktpdDo6V2Vi
U2Nyb2xsYmFyVGhlbWVQYWludGVyIG1fcGFpbnRlcjsKLSAgICBXZWJLaXQ6OldlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkgbV9nZW9tZXRyeTsKKyAgICBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnkqIG1fZ2VvbWV0cnk7CiB9OwogCiB2b2lkIFNjcm9sbGJhckxheWVyQ2hyb21pdW06
OnNldExheWVyVHJlZUhvc3QoQ0NMYXllclRyZWVIb3N0KiBob3N0KQpAQCAtMTg4LDIwICsxOTEs
MjAgQEAgdm9pZCBTY3JvbGxiYXJMYXllckNocm9taXVtOjpjcmVhdGVUZXh0dXJlVXBkYXRlcklm
TmVlZGVkKCkKICAgICBtX3RleHR1cmVGb3JtYXQgPSBsYXllclRyZWVIb3N0KCktPmxheWVyUmVu
ZGVyZXJDYXBhYmlsaXRpZXMoKS5iZXN0VGV4dHVyZUZvcm1hdDsKIAogICAgIGlmICghbV9iYWNr
VHJhY2tVcGRhdGVyKQotICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIgPSBCaXRtYXBDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dyb3VuZFBhaW50ZXI6OmNy
ZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgbV9wYWludGVyLCBtX2dlb21ldHJ5LCBXZWJLaXQ6Oldl
YlNjcm9sbGJhcjo6QmFja1RyYWNrUGFydCkpOworICAgICAgICBtX2JhY2tUcmFja1VwZGF0ZXIg
PSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoU2Nyb2xsYmFyQmFja2dy
b3VuZFBhaW50ZXI6OmNyZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgbV9wYWludGVyLCBtX2dlb21l
dHJ5LmdldCgpLCBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6QmFja1RyYWNrUGFydCkpOwogICAgIGlm
ICghbV9iYWNrVHJhY2spCiAgICAgICAgIG1fYmFja1RyYWNrID0gbV9iYWNrVHJhY2tVcGRhdGVy
LT5jcmVhdGVUZXh0dXJlKGxheWVyVHJlZUhvc3QoKS0+Y29udGVudHNUZXh0dXJlTWFuYWdlcigp
KTsKIAogICAgIC8vIE9ubHkgY3JlYXRlIHR3by1wYXJ0IHRyYWNrIGlmIHdlIHRoaW5rIHRoZSB0
d28gcGFydHMgY291bGQgYmUgZGlmZmVyZW50IGluIGFwcGVhcmFuY2UuCiAgICAgaWYgKG1fc2Ny
b2xsYmFyLT5pc0N1c3RvbVNjcm9sbGJhcigpKSB7CiAgICAgICAgIGlmICghbV9mb3JlVHJhY2tV
cGRhdGVyKQotICAgICAgICAgICAgbV9mb3JlVHJhY2tVcGRhdGVyID0gQml0bWFwQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFNjcm9sbGJhckJhY2tncm91bmRQYWludGVyOjpjcmVh
dGUobV9zY3JvbGxiYXIuZ2V0KCksIG1fcGFpbnRlciwgbV9nZW9tZXRyeSwgV2ViS2l0OjpXZWJT
Y3JvbGxiYXI6OkZvcndhcmRUcmFja1BhcnQpKTsKKyAgICAgICAgICAgIG1fZm9yZVRyYWNrVXBk
YXRlciA9IEJpdG1hcENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJC
YWNrZ3JvdW5kUGFpbnRlcjo6Y3JlYXRlKG1fc2Nyb2xsYmFyLmdldCgpLCBtX3BhaW50ZXIsIG1f
Z2VvbWV0cnkuZ2V0KCksIFdlYktpdDo6V2ViU2Nyb2xsYmFyOjpGb3J3YXJkVHJhY2tQYXJ0KSk7
CiAgICAgICAgIGlmICghbV9mb3JlVHJhY2spCiAgICAgICAgICAgICBtX2ZvcmVUcmFjayA9IG1f
Zm9yZVRyYWNrVXBkYXRlci0+Y3JlYXRlVGV4dHVyZShsYXllclRyZWVIb3N0KCktPmNvbnRlbnRz
VGV4dHVyZU1hbmFnZXIoKSk7CiAgICAgfQogCiAgICAgaWYgKCFtX3RodW1iVXBkYXRlcikKLSAg
ICAgICAgbV90aHVtYlVwZGF0ZXIgPSBCaXRtYXBDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoU2Nyb2xsYmFyVGh1bWJQYWludGVyOjpjcmVhdGUobV9zY3JvbGxiYXIuZ2V0KCksIG1f
cGFpbnRlciwgbV9nZW9tZXRyeSkpOworICAgICAgICBtX3RodW1iVXBkYXRlciA9IEJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShTY3JvbGxiYXJUaHVtYlBhaW50ZXI6OmNy
ZWF0ZShtX3Njcm9sbGJhci5nZXQoKSwgbV9wYWludGVyLCBtX2dlb21ldHJ5LmdldCgpKSk7CiAg
ICAgaWYgKCFtX3RodW1iKQogICAgICAgICBtX3RodW1iID0gbV90aHVtYlVwZGF0ZXItPmNyZWF0
ZVRleHR1cmUobGF5ZXJUcmVlSG9zdCgpLT5jb250ZW50c1RleHR1cmVNYW5hZ2VyKCkpOwogfQpA
QCAtMjQ4LDcgKzI1MSw3IEBAIHZvaWQgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6c2V0VGV4dHVy
ZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1bGF0b3ImKQogICAgICAgICBtX2ZvcmVU
cmFjay0+dGV4dHVyZSgpLT5zZXRSZXF1ZXN0UHJpb3JpdHkoQ0NQcmlvcml0eUNhbGN1bGF0b3I6
OnVpUHJpb3JpdHkoZHJhd3NUb1Jvb3QpKTsKICAgICB9CiAgICAgaWYgKG1fdGh1bWIpIHsKLSAg
ICAgICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnkudGh1bWJSZWN0KG1f
c2Nyb2xsYmFyLmdldCgpKTsKKyAgICAgICAgV2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1f
Z2VvbWV0cnktPnRodW1iUmVjdChtX3Njcm9sbGJhci5nZXQoKSk7CiAgICAgICAgIG1fdGh1bWIt
PnRleHR1cmUoKS0+c2V0RGltZW5zaW9ucyhJbnRTaXplKHRodW1iUmVjdC53aWR0aCwgdGh1bWJS
ZWN0LmhlaWdodCksIG1fdGV4dHVyZUZvcm1hdCk7CiAgICAgICAgIG1fdGh1bWItPnRleHR1cmUo
KS0+c2V0UmVxdWVzdFByaW9yaXR5KENDUHJpb3JpdHlDYWxjdWxhdG9yOjp1aVByaW9yaXR5KGRy
YXdzVG9Sb290KSk7CiAgICAgfQpAQCAtMjY4LDcgKzI3MSw3IEBAIHZvaWQgU2Nyb2xsYmFyTGF5
ZXJDaHJvbWl1bTo6dXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImIHVwZGF0ZXIsIGNvbnN0IENDT2Nj
bHVzaW9uCiAgICAgICAgIHVwZGF0ZVBhcnQobV9mb3JlVHJhY2tVcGRhdGVyLmdldCgpLCBtX2Zv
cmVUcmFjay5nZXQoKSwgY29udGVudFJlY3QsIHVwZGF0ZXIsIHN0YXRzKTsKIAogICAgIC8vIENv
bnNpZGVyIHRoZSB0aHVtYiB0byBiZSBhdCB0aGUgb3JpZ2luIHdoZW4gcGFpbnRpbmcuCi0gICAg
V2ViS2l0OjpXZWJSZWN0IHRodW1iUmVjdCA9IG1fZ2VvbWV0cnkudGh1bWJSZWN0KG1fc2Nyb2xs
YmFyLmdldCgpKTsKKyAgICBXZWJLaXQ6OldlYlJlY3QgdGh1bWJSZWN0ID0gbV9nZW9tZXRyeS0+
dGh1bWJSZWN0KG1fc2Nyb2xsYmFyLmdldCgpKTsKICAgICBJbnRSZWN0IG9yaWdpblRodW1iUmVj
dCA9IEludFJlY3QoMCwgMCwgdGh1bWJSZWN0LndpZHRoLCB0aHVtYlJlY3QuaGVpZ2h0KTsKICAg
ICBpZiAoIW9yaWdpblRodW1iUmVjdC5pc0VtcHR5KCkpCiAgICAgICAgIHVwZGF0ZVBhcnQobV90
aHVtYlVwZGF0ZXIuZ2V0KCksIG1fdGh1bWIuZ2V0KCksIG9yaWdpblRodW1iUmVjdCwgdXBkYXRl
ciwgc3RhdHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDQyNTJl
MjY4ZWRjYzFkODliNDM1M2U0NTU1ZTQ3NzFmOTMxMWMwNDIuLmUzZTMwYWUxMDE3NjAxMmQ2NDAx
MzhiMzZlZWM1NmQzZTM4YTc4YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1Njcm9sbGJhckxheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9TY3JvbGxiYXJMYXllckNocm9taXVt
LmgKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgQ0NUZXh0dXJlVXBkYXRlcjsKIGNsYXNzIFNjcm9s
bGJhckxheWVyQ2hyb21pdW0gOiBwdWJsaWMgTGF5ZXJDaHJvbWl1bSB7CiBwdWJsaWM6CiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPENDTGF5ZXJJbXBsPiBjcmVhdGVDQ0xheWVySW1wbCgpOwotICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVyQ2hyb21pdW0+IGNyZWF0ZShQYXNzT3du
UHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50
ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSwgaW50IHNjcm9sbExheWVySWQp
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhckxheWVyQ2hyb21pdW0+IGNyZWF0ZShQ
YXNzT3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZVBhaW50ZXIsIFBhc3NPd25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Piwg
aW50IHNjcm9sbExheWVySWQpOwogCiAgICAgLy8gTGF5ZXJDaHJvbWl1bSBpbnRlcmZhY2UKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0VGV4dHVyZVByaW9yaXRpZXMoY29uc3QgQ0NQcmlvcml0eUNhbGN1
bGF0b3ImKSBPVkVSUklERTsKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bSogdG9TY3JvbGxiYXJMYXllckNocm9taXVtKCkgeyByZXR1
cm4gdGhpczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bShQYXNz
T3duUHRyPFdlYktpdDo6V2ViU2Nyb2xsYmFyPiwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZVBh
aW50ZXIsIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSwgaW50IHNjcm9sbExheWVy
SWQpOworICAgIFNjcm9sbGJhckxheWVyQ2hyb21pdW0oUGFzc093blB0cjxXZWJLaXQ6OldlYlNj
cm9sbGJhcj4sIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLCBQYXNzT3duUHRyPFdl
YktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeT4sIGludCBzY3JvbGxMYXllcklkKTsKIAog
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVBhcnQoTGF5ZXJUZXh0dXJlVXBkYXRlciosIExheWVy
VGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUqLCBjb25zdCBJbnRSZWN0JiwgQ0NUZXh0dXJlVXBkYXRl
ciYsIENDUmVuZGVyaW5nU3RhdHMmKTsKQEAgLTY1LDcgKzY1LDcgQEAgcHJpdmF0ZToKIAogICAg
IE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAgICAgV2ViS2l0OjpX
ZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgbV9wYWludGVyOwotICAgIFdlYktpdDo6V2ViU2Nyb2xs
YmFyVGhlbWVHZW9tZXRyeSBtX2dlb21ldHJ5OworICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9s
bGJhclRoZW1lR2VvbWV0cnk+IG1fZ2VvbWV0cnk7CiAgICAgaW50IG1fc2Nyb2xsTGF5ZXJJZDsK
IAogICAgIEdDM0RlbnVtIG1fdGV4dHVyZUZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2Nyb2xs
YmFyTGF5ZXJJbXBsLmNwcAppbmRleCA1ODAxOGFhZDI2NDQzNGNjYTU1MTRmNGIzNzYzODg5ZDc1
ZWZjOTU5Li5lYzA1ODk1MjU5ZTU3YmZkOTk0Y2VmMGRmMTBkNmE4NTQ4ODE5NzlkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9s
bGJhckxheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NTY3JvbGxiYXJMYXllckltcGwuY3BwCkBAIC02MiwxMCArNjIsMTMgQEAg
Q0NTY3JvbGxiYXJMYXllckltcGw6OkNDU2Nyb2xsYmFyTGF5ZXJJbXBsKGludCBpZCkKIHsKIH0K
IAotdm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsYmFyRGF0YShjb25zdCBXZWJT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IGdl
b21ldHJ5KQordm9pZCBDQ1Njcm9sbGJhckxheWVySW1wbDo6c2V0U2Nyb2xsYmFyR2VvbWV0cnko
UGFzc093blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk+IGdlb21ldHJ5KQog
ewogICAgIG1fZ2VvbWV0cnkgPSBnZW9tZXRyeTsKK30KIAordm9pZCBDQ1Njcm9sbGJhckxheWVy
SW1wbDo6c2V0U2Nyb2xsYmFyRGF0YShjb25zdCBXZWJTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3sK
ICAgICBtX3Njcm9sbGJhck92ZXJsYXlTdHlsZSA9IHNjcm9sbGJhci0+c2Nyb2xsYmFyT3Zlcmxh
eVN0eWxlKCk7CiAgICAgbV9vcmllbnRhdGlvbiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKTsK
ICAgICBtX2NvbnRyb2xTaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpOwpAQCAtODYsMTMg
Kzg5LDYgQEAgc3RhdGljIEZsb2F0UmVjdCB0b1VWUmVjdChjb25zdCBXZWJSZWN0JiByLCBjb25z
dCBJbnRSZWN0JiBib3VuZHMpCiAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxmbG9h
dD4oci53aWR0aCkgLyBib3VuZHMud2lkdGgoKSwgc3RhdGljX2Nhc3Q8ZmxvYXQ+KHIuaGVpZ2h0
KSAvIGJvdW5kcy5oZWlnaHQoKSk7CiB9CiAKLXZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OnNj
cm9sbGJhckdlb21ldHJ5KFdlYlJlY3QmIHRodW1iUmVjdCwgV2ViUmVjdCYgYmFja1RyYWNrUmVj
dCwgV2ViUmVjdCYgZm9yZVRyYWNrUmVjdCkKLXsKLSAgICBtX2dlb21ldHJ5LnNwbGl0VHJhY2so
Jm1fc2Nyb2xsYmFyLCBtX2dlb21ldHJ5LnRyYWNrUmVjdCgmbV9zY3JvbGxiYXIpLCBiYWNrVHJh
Y2tSZWN0LCB0aHVtYlJlY3QsIGZvcmVUcmFja1JlY3QpOwotICAgIGlmICghbV9nZW9tZXRyeS5o
YXNUaHVtYigmbV9zY3JvbGxiYXIpKQotICAgICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7Ci19
Ci0KIHZvaWQgQ0NTY3JvbGxiYXJMYXllckltcGw6OmFwcGVuZFF1YWRzKENDUXVhZFNpbmsmIHF1
YWRMaXN0LCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSogc2hhcmVkUXVhZFN0YXRlLCBib29sJikK
IHsKICAgICBib29sIHByZW11bHRpcGxlZEFscGhhID0gZmFsc2U7CkBAIC0xMDEsNyArOTcsOSBA
QCB2b2lkIENDU2Nyb2xsYmFyTGF5ZXJJbXBsOjphcHBlbmRRdWFkcyhDQ1F1YWRTaW5rJiBxdWFk
TGlzdCwgY29uc3QgQ0NTaGFyZWRRdWFkUwogICAgIEludFJlY3QgYm91bmRzUmVjdChJbnRQb2lu
dCgpLCBjb250ZW50Qm91bmRzKCkpOwogCiAgICAgV2ViUmVjdCB0aHVtYlJlY3QsIGJhY2tUcmFj
a1JlY3QsIGZvcmVUcmFja1JlY3Q7Ci0gICAgc2Nyb2xsYmFyR2VvbWV0cnkodGh1bWJSZWN0LCBi
YWNrVHJhY2tSZWN0LCBmb3JlVHJhY2tSZWN0KTsKKyAgICBtX2dlb21ldHJ5LT5zcGxpdFRyYWNr
KCZtX3Njcm9sbGJhciwgbV9nZW9tZXRyeS0+dHJhY2tSZWN0KCZtX3Njcm9sbGJhciksIGJhY2tU
cmFja1JlY3QsIHRodW1iUmVjdCwgZm9yZVRyYWNrUmVjdCk7CisgICAgaWYgKCFtX2dlb21ldHJ5
LT5oYXNUaHVtYigmbV9zY3JvbGxiYXIpKQorICAgICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KCk7
CiAKICAgICBpZiAobV90aHVtYlJlc291cmNlSWQgJiYgIXRodW1iUmVjdC5pc0VtcHR5KCkpIHsK
ICAgICAgICAgT3duUHRyPENDVGV4dHVyZURyYXdRdWFkPiBxdWFkID0gQ0NUZXh0dXJlRHJhd1F1
YWQ6OmNyZWF0ZShzaGFyZWRRdWFkU3RhdGUsIEludFJlY3QodGh1bWJSZWN0LngsIHRodW1iUmVj
dC55LCB0aHVtYlJlY3Qud2lkdGgsIHRodW1iUmVjdC5oZWlnaHQpLCBtX3RodW1iUmVzb3VyY2VJ
ZCwgcHJlbXVsdGlwbGVkQWxwaGEsIHV2UmVjdCwgZmxpcHBlZCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Njcm9sbGJhckxheWVy
SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NT
Y3JvbGxiYXJMYXllckltcGwuaAppbmRleCA1MzM0MTlhNWJjMjExZDRlMjQwNTIzMjdjOGQ3ZDdl
MjdiNDM1ZTQyLi4yNGNiMGQxYjhhN2ExODIzYzcwMWE2YjVlMzg0YTliNzlmZDQ0OWMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1Nj
cm9sbGJhckxheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDU2Nyb2xsYmFyTGF5ZXJJbXBsLmgKQEAgLTQyLDcgKzQyLDkgQEAgY2xh
c3MgQ0NTY3JvbGxiYXJMYXllckltcGwgOiBwdWJsaWMgQ0NMYXllckltcGwgewogcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzT3duUHRyPENDU2Nyb2xsYmFyTGF5ZXJJbXBsPiBjcmVhdGUoaW50IGlk
KTsKIAotICAgIHZvaWQgc2V0U2Nyb2xsYmFyRGF0YShjb25zdCBXZWJLaXQ6OldlYlNjcm9sbGJh
ciosIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSk7CisgICAgV2ViS2l0OjpXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5KiBzY3JvbGxiYXJHZW9tZXRyeSgpIGNvbnN0IHsgcmV0dXJu
IG1fZ2VvbWV0cnkuZ2V0KCk7IH0KKyAgICB2b2lkIHNldFNjcm9sbGJhckdlb21ldHJ5KFBhc3NP
d25QdHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Pik7CisgICAgdm9pZCBzZXRT
Y3JvbGxiYXJEYXRhKGNvbnN0IFdlYktpdDo6V2ViU2Nyb2xsYmFyKik7CiAKICAgICB2b2lkIHNl
dEJhY2tUcmFja1Jlc291cmNlSWQoQ0NSZXNvdXJjZVByb3ZpZGVyOjpSZXNvdXJjZUlkIGlkKSB7
IG1fYmFja1RyYWNrUmVzb3VyY2VJZCA9IGlkOyB9CiAgICAgdm9pZCBzZXRGb3JlVHJhY2tSZXNv
dXJjZUlkKENDUmVzb3VyY2VQcm92aWRlcjo6UmVzb3VyY2VJZCBpZCkgeyBtX2ZvcmVUcmFja1Jl
c291cmNlSWQgPSBpZDsgfQpAQCAtNjYsOCArNjgsNiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAg
ICAgZXhwbGljaXQgQ0NTY3JvbGxiYXJMYXllckltcGwoaW50IGlkKTsKIAotICAgIHZpcnR1YWwg
dm9pZCBzY3JvbGxiYXJHZW9tZXRyeShXZWJLaXQ6OldlYlJlY3QmIHRodW1iUmVjdCwgV2ViS2l0
OjpXZWJSZWN0JiBiYWNrVHJhY2tSZWN0LCBXZWJLaXQ6OldlYlJlY3QmIGZvcmVUcmFja1JlY3Qp
OwotCiBwcml2YXRlOgogICAgIC8vIG5lc3RlZCBjbGFzcyBvbmx5IHRvIGF2b2lkIG5hbWVzcGFj
ZSBwcm9ibGVtCiAgICAgY2xhc3MgQ0NTY3JvbGxiYXIgOiBwdWJsaWMgV2ViS2l0OjpXZWJTY3Jv
bGxiYXIgewpAQCAtMTAzLDcgKzEwMyw3IEBAIHByaXZhdGU6CiAgICAgQ0NSZXNvdXJjZVByb3Zp
ZGVyOjpSZXNvdXJjZUlkIG1fZm9yZVRyYWNrUmVzb3VyY2VJZDsKICAgICBDQ1Jlc291cmNlUHJv
dmlkZXI6OlJlc291cmNlSWQgbV90aHVtYlJlc291cmNlSWQ7CiAKLSAgICBXZWJLaXQ6OldlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnkgbV9nZW9tZXRyeTsKKyAgICBPd25QdHI8V2ViS2l0OjpXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5PiBtX2dlb21ldHJ5OwogCiAgICAgLy8gRGF0YSB0byBpbXBs
ZW1lbnQgQ0NTY3JvbGxiYXIKICAgICBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6U2Nyb2xsYmFyT3Zl
cmxheVN0eWxlIG1fc2Nyb2xsYmFyT3ZlcmxheVN0eWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCmluZGV4IDNiNmY4NmNkMjI4MjczMDcwODdhNmY4YWQ2M2I5NDU0YmNmNDQ5OWQuLjRkMzUw
YzNlNWNiZjk5NzFiOTg1NzAyNGE3MzkzMDg4NDVjYjRhZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKQEAgLTYzMyw3ICs2MzMsNiBAQAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Ny
b2xsYmFySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyVGhlbWVDbGll
bnRJbXBsLmgnLAotICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2Nyb2xsYmFyVGhlbWVQYWludGVyLmNw
cCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwaQppbmRleCAyYTgzOGQ0NzUxMWUxMGI1ZmE1NThiNTZmYTQwNjU3NzI1OWQw
YjM1Li44YjQ1M2JkN2MzZWI1ZDY1OWZlZDU5MTlmOWUzNzk2ZDJiMzFhNWIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTEwNSw2ICsxMDUsNyBAQAogICAgICAgICAgICAgJ3Rl
c3RzL0Zha2VDQ0xheWVyVHJlZUhvc3RDbGllbnQuaCcsCiAgICAgICAgICAgICAndGVzdHMvRmFr
ZUdyYXBoaWNzQ29udGV4dDNEVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zha2VXZWJH
cmFwaGljc0NvbnRleHQzRC5oJywKKyAgICAgICAgICAgICd0ZXN0cy9GYWtlV2ViU2Nyb2xsYmFy
VGhlbWVHZW9tZXRyeS5oJywKICAgICAgICAgICAgICd0ZXN0cy9GaWx0ZXJPcGVyYXRpb25zVGVz
dC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9GcmFtZUxvYWRlckNsaWVudEltcGxUZXN0LmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJMYXllci5jcHAKaW5kZXggNTYxYmY3OGM3
MjIyMTlhNDU3M2ZmMzk2MGQ4YjQ0OGEyMjllOTAwNC4uMmJkMWIyMGZiNDBmN2M2NGQ3ZTE3NjNh
YTY4NjZiMTRlMTVmOWJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2Nyb2xsYmFyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNjcm9sbGJhckxheWVyLmNwcApAQCAtMzgsNyArMzgsNyBAQCB2b2lkIFdlYlNjcm9sbGJhckxh
eWVyOjpzZXRTY3JvbGxMYXllcihjb25zdCBXZWJMYXllciBsYXllcikKICAgICB1bndyYXA8U2Ny
b2xsYmFyTGF5ZXJDaHJvbWl1bT4oKS0+c2V0U2Nyb2xsTGF5ZXJJZChpZCk7CiB9CiAKLVdlYlNj
cm9sbGJhckxheWVyIFdlYlNjcm9sbGJhckxheWVyOjpjcmVhdGUoV2ViQ29yZTo6U2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIFdlYlNjcm9sbGJhclRoZW1lUGFpbnRlciBwYWludGVyLCBXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5IGdlb21ldHJ5KQorV2ViU2Nyb2xsYmFyTGF5ZXIgV2ViU2Nyb2xsYmFy
TGF5ZXI6OmNyZWF0ZShXZWJDb3JlOjpTY3JvbGxiYXIqIHNjcm9sbGJhciwgV2ViU2Nyb2xsYmFy
VGhlbWVQYWludGVyIHBhaW50ZXIsIFBhc3NPd25QdHI8V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRy
eT4gZ2VvbWV0cnkpCiB7CiAgICAgcmV0dXJuIFdlYlNjcm9sbGJhckxheWVyKFNjcm9sbGJhckxh
eWVyQ2hyb21pdW06OmNyZWF0ZShXZWJTY3JvbGxiYXI6OmNyZWF0ZShzY3JvbGxiYXIpLCBwYWlu
dGVyLCBnZW9tZXRyeSwgMCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmNwcApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2UwOTA5ZWYwY2RiMjJiYTFlODdjMTkwZmRiNmE0MGU5YTJkMzBlZi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaW5jbHVk
ZSA8cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaD4KLQotI2luY2x1ZGUgIlNjcm9s
bGJhclRoZW1lQ29tcG9zaXRlLmgiCi0jaW5jbHVkZSAiV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJ
bXBsLmgiCi0jaW5jbHVkZSA8cHVibGljL1dlYlJlY3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
U2Nyb2xsYmFyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCi1uYW1lc3BhY2UgV2Vi
S2l0IHsKLQotdm9pZCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojphc3NpZ24oY29uc3QgV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSYgZ2VvbWV0cnkpCi17Ci0gICAgLy8gVGhpcyBpcyBhIHBv
aW50ZXIgdG8gYSBzdGF0aWMgb2JqZWN0LCBzbyBubyBvd25lcnNoaXAgdHJhbnNmZXJyYWwuCi0g
ICAgbV90aGVtZSA9IGdlb21ldHJ5Lm1fdGhlbWU7Ci19Ci0KLWludCBXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5Ojp0aHVtYlBvc2l0aW9uKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAg
IFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1
cm4gbV90aGVtZS0+dGh1bWJQb3NpdGlvbigmY2xpZW50KTsKLX0KLQotaW50IFdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnk6OnRodW1iTGVuZ3RoKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewot
ICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICBy
ZXR1cm4gbV90aGVtZS0+dGh1bWJMZW5ndGgoJmNsaWVudCk7Ci19Ci0KLWludCBXZWJTY3JvbGxi
YXJUaGVtZUdlb21ldHJ5Ojp0cmFja1Bvc2l0aW9uKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQot
ewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAg
ICByZXR1cm4gbV90aGVtZS0+dHJhY2tQb3NpdGlvbigmY2xpZW50KTsKLX0KLQotaW50IFdlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnk6OnRyYWNrTGVuZ3RoKFdlYlNjcm9sbGJhciogc2Nyb2xsYmFy
KQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsK
LSAgICByZXR1cm4gbV90aGVtZS0+dHJhY2tMZW5ndGgoJmNsaWVudCk7Ci19Ci0KLWJvb2wgV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6aGFzQnV0dG9ucyhXZWJTY3JvbGxiYXIqIHNjcm9sbGJh
cikKLXsKLSAgICBXZWJTY3JvbGxiYXJUaGVtZUNsaWVudEltcGwgY2xpZW50KHNjcm9sbGJhcik7
Ci0gICAgcmV0dXJuIG1fdGhlbWUtPmhhc0J1dHRvbnMoJmNsaWVudCk7Ci19Ci0KLWJvb2wgV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6aGFzVGh1bWIoV2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Ci17Ci0gICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsIGNsaWVudChzY3JvbGxiYXIpOwot
ICAgIHJldHVybiBtX3RoZW1lLT5oYXNUaHVtYigmY2xpZW50KTsKLX0KLQotV2ViUmVjdCBXZWJT
Y3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojp0cmFja1JlY3QoV2ViU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Ci17Ci0gICAgV2ViU2Nyb2xsYmFyVGhlbWVDbGllbnRJbXBsIGNsaWVudChzY3JvbGxiYXIpOwot
ICAgIHJldHVybiBtX3RoZW1lLT50cmFja1JlY3QoJmNsaWVudCk7Ci19Ci0KLVdlYlJlY3QgV2Vi
U2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6dGh1bWJSZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFy
KQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsK
LSAgICByZXR1cm4gbV90aGVtZS0+dGh1bWJSZWN0KCZjbGllbnQpOwotfQotCi1pbnQgV2ViU2Ny
b2xsYmFyVGhlbWVHZW9tZXRyeTo6bWluaW11bVRodW1iTGVuZ3RoKFdlYlNjcm9sbGJhciogc2Ny
b2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xs
YmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+bWluaW11bVRodW1iTGVuZ3RoKCZjbGllbnQpOwot
fQotCi1pbnQgV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6c2Nyb2xsYmFyVGhpY2tuZXNzKFdl
YlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+c2Nyb2xsYmFyVGhpY2tu
ZXNzKGNsaWVudC5jb250cm9sU2l6ZSgpKTsKLX0KLQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5OjpiYWNrQnV0dG9uU3RhcnRSZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQot
ewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAg
ICByZXR1cm4gbV90aGVtZS0+YmFja0J1dHRvblJlY3QoJmNsaWVudCwgQmFja0J1dHRvblN0YXJ0
UGFydCwgZmFsc2UpOwotfQotCi1XZWJSZWN0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OmJh
Y2tCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9s
bGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVt
ZS0+YmFja0J1dHRvblJlY3QoJmNsaWVudCwgQmFja0J1dHRvbkVuZFBhcnQsIGZhbHNlKTsKLX0K
LQotV2ViUmVjdCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojpmb3J3YXJkQnV0dG9uU3RhcnRS
ZWN0KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xp
ZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+Zm9yd2FyZEJ1
dHRvblJlY3QoJmNsaWVudCwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCwgZmFsc2UpOwotfQotCi1X
ZWJSZWN0IFdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnk6OmZvcndhcmRCdXR0b25FbmRSZWN0KFdl
YlNjcm9sbGJhciogc2Nyb2xsYmFyKQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1w
bCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4gbV90aGVtZS0+Zm9yd2FyZEJ1dHRvblJl
Y3QoJmNsaWVudCwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQsIGZhbHNlKTsKLX0KLQotV2ViUmVjdCBX
ZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojpjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2Vz
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBXZWJSZWN0JiByZWN0KQotewotICAgIFdl
YlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsKLSAgICByZXR1cm4g
bV90aGVtZS0+Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcygmY2xpZW50LCBJbnRSZWN0
KHJlY3QpKTsKLX0KLQotdm9pZCBXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5OjpzcGxpdFRyYWNr
KFdlYlNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBXZWJSZWN0JiB3ZWJUcmFjaywgV2ViUmVj
dCYgd2ViU3RhcnRUcmFjaywgV2ViUmVjdCYgd2ViVGh1bWIsIFdlYlJlY3QmIHdlYkVuZFRyYWNr
KQotewotICAgIFdlYlNjcm9sbGJhclRoZW1lQ2xpZW50SW1wbCBjbGllbnQoc2Nyb2xsYmFyKTsK
LSAgICBJbnRSZWN0IHRyYWNrKHdlYlRyYWNrKTsKLSAgICBJbnRSZWN0IHN0YXJ0VHJhY2s7Ci0g
ICAgSW50UmVjdCB0aHVtYjsKLSAgICBJbnRSZWN0IGVuZFRyYWNrOwotICAgIG1fdGhlbWUtPnNw
bGl0VHJhY2soJmNsaWVudCwgdHJhY2ssIHN0YXJ0VHJhY2ssIHRodW1iLCBlbmRUcmFjayk7Ci0K
LSAgICB3ZWJTdGFydFRyYWNrID0gc3RhcnRUcmFjazsKLSAgICB3ZWJUaHVtYiA9IHRodW1iOwot
ICAgIHdlYkVuZFRyYWNrID0gZW5kVHJhY2s7Ci19Ci0KLVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0
cnk6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGUqIHRoZW1lKQotICAgIDogbV90aGVtZSh0aGVtZSkKLXsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IDY4MDlkNDcxOGJmNGMzZjQzNjVmZjg2YTUw
MWYwOGQ2MGUwMTJkMzEuLjdjMmQwZDZlZmJlODM0YjNiMTAzM2MwNjQzN2UwYzc3YjE4YmVjMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0
SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ0NMYXllclRy
ZWVUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiQ0NUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiRmFr
ZVdlYkdyYXBoaWNzQ29udGV4dDNELmgiCisjaW5jbHVkZSAiRmFrZVdlYlNjcm9sbGJhclRoZW1l
R2VvbWV0cnkuaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJjYy9DQ0hlYWRzVXBEaXNwbGF5TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NJT1N1cmZh
Y2VMYXllckltcGwuaCIKQEAgLTIyODcsNiArMjI4OCwxNyBAQCBwdWJsaWM6CiAgICAgfQogfTsK
IAorY2xhc3MgRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlOb25FbXB0eSA6IHB1YmxpYyBG
YWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSB7CisgICAgdmlydHVhbCBXZWJSZWN0IHRyYWNr
UmVjdChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiBXZWJSZWN0KDAsIDAsIDEwLCAx
MCk7IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJS
SURFIHsgcmV0dXJuIFdlYlJlY3QoMCwgNSwgNSwgMik7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc3Bs
aXRUcmFjayhXZWJTY3JvbGxiYXIqLCBjb25zdCBXZWJSZWN0JiB0cmFjaywgV2ViUmVjdCYgc3Rh
cnRUcmFjaywgV2ViUmVjdCYgdGh1bWIsIFdlYlJlY3QmIGVuZFRyYWNrKSBPVkVSUklERQorICAg
IHsKKyAgICAgICAgdGh1bWIgPSBXZWJSZWN0KDAsIDUsIDUsIDIpOworICAgICAgICBzdGFydFRy
YWNrID0gV2ViUmVjdCgwLCA1LCAwLCA1KTsKKyAgICAgICAgZW5kVHJhY2sgPSBXZWJSZWN0KDAs
IDAsIDAsIDUpOworICAgIH0KK307CisKIGNsYXNzIEZha2VTY3JvbGxiYXJMYXllckltcGwgOiBw
dWJsaWMgQ0NTY3JvbGxiYXJMYXllckltcGwgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3du
UHRyPEZha2VTY3JvbGxiYXJMYXllckltcGw+IGNyZWF0ZShpbnQgaWQpCkBAIC0yMzAxLDYgKzIz
MTMsNyBAQCBwdWJsaWM6CiAgICAgICAgIEludFNpemUgc2l6ZSgxMCwgMTApOwogICAgICAgICBH
QzNEZW51bSBmb3JtYXQgPSBHcmFwaGljc0NvbnRleHQzRDo6UkdCQTsKICAgICAgICAgQ0NSZXNv
dXJjZVByb3ZpZGVyOjpUZXh0dXJlVXNhZ2VIaW50IGhpbnQgPSBDQ1Jlc291cmNlUHJvdmlkZXI6
OlRleHR1cmVVc2FnZUFueTsKKyAgICAgICAgc2V0U2Nyb2xsYmFyR2VvbWV0cnkoRmFrZVdlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnlOb25FbXB0eTo6Y3JlYXRlKCkpOwogCiAgICAgICAgIHNldEJh
Y2tUcmFja1Jlc291cmNlSWQocHJvdmlkZXItPmNyZWF0ZVJlc291cmNlKHBvb2wsIHNpemUsIGZv
cm1hdCwgaGludCkpOwogICAgICAgICBzZXRGb3JlVHJhY2tSZXNvdXJjZUlkKHByb3ZpZGVyLT5j
cmVhdGVSZXNvdXJjZShwb29sLCBzaXplLCBmb3JtYXQsIGhpbnQpKTsKQEAgLTIzMTIsMTMgKzIz
MjUsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIDogQ0NTY3JvbGxiYXJMYXllckltcGwoaWQpCiAg
ICAgewogICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBzY3JvbGxiYXJHZW9tZXRyeShXZWJSZWN0
JiB0aHVtYlJlY3QsIFdlYlJlY3QmIGJhY2tUcmFja1JlY3QsIFdlYlJlY3QmIGZvcmVUcmFja1Jl
Y3QpIE9WRVJSSURFCi0gICAgewotICAgICAgICB0aHVtYlJlY3QgPSBXZWJSZWN0KDAsIDUsIDUs
IDIpOwotICAgICAgICBiYWNrVHJhY2tSZWN0ID0gV2ViUmVjdCgwLCA1LCAwLCA1KTsKLSAgICAg
ICAgZm9yZVRyYWNrUmVjdCA9IFdlYlJlY3QoMCwgMCwgMCwgNSk7Ci0gICAgfQogfTsKIAogVEVT
VF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCBkb250VXNlT2xkUmVzb3VyY2VzQWZ0ZXJMb3N0
Q29udGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmFrZVdl
YlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZGMyOWRkMmVhNDg0
NjIwNDI0M2ZmYmU0NmY5MmYyODA2NWE4YjU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9GYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZha2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5
X2gKKyNkZWZpbmUgRmFrZVdlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnlfaAorCisjaW5jbHVkZSA8
cHVibGljL1dlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7
CisKK2NsYXNzIEZha2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5IDogcHVibGljIFdlYktpdDo6
V2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25Q
dHI8V2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5PiBjcmVhdGUoKSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgV2ViS2l0OjpGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeSgpKTsgfQor
CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkqIGNsb25lKCkg
Y29uc3QgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgRmFrZVdlYlNjcm9sbGJh
clRoZW1lR2VvbWV0cnkoKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9u
KFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIGludCB0
aHVtYkxlbmd0aChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmly
dHVhbCBpbnQgdHJhY2tQb3NpdGlvbihXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiAw
OyB9CisgICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREUg
eyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFdlYlNjcm9sbGJhciop
IE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBib29sIGhhc1RodW1iKFdl
YlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCBXZWJS
ZWN0IHRyYWNrUmVjdChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiBXZWJSZWN0KCk7
IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgdGh1bWJSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURF
IHsgcmV0dXJuIFdlYlJlY3QoKTsgfQorICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChXZWJTY3JvbGxiYXIqKSBPVkVSUklERSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBpbnQg
c2Nyb2xsYmFyVGhpY2tuZXNzKFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIDA7IH0K
KyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1dHRvblN0YXJ0UmVjdChXZWJTY3JvbGxiYXIqKSBP
VkVSUklERSB7IHJldHVybiBXZWJSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIFdlYlJlY3QgYmFja0J1
dHRvbkVuZFJlY3QoV2ViU2Nyb2xsYmFyKikgT1ZFUlJJREUgeyByZXR1cm4gV2ViUmVjdCgpOyB9
CisgICAgdmlydHVhbCBXZWJSZWN0IGZvcndhcmRCdXR0b25TdGFydFJlY3QoV2ViU2Nyb2xsYmFy
KikgT1ZFUlJJREUgeyByZXR1cm4gV2ViUmVjdCgpOyB9CisgICAgdmlydHVhbCBXZWJSZWN0IGZv
cndhcmRCdXR0b25FbmRSZWN0KFdlYlNjcm9sbGJhciopIE9WRVJSSURFIHsgcmV0dXJuIFdlYlJl
Y3QoKTsgfQorICAgIHZpcnR1YWwgV2ViUmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGll
Y2VzKFdlYlNjcm9sbGJhciosIGNvbnN0IFdlYlJlY3QmKSBPVkVSUklERSB7IHJldHVybiBXZWJS
ZWN0KCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBzcGxpdFRyYWNrKFdlYlNjcm9sbGJhciosIGNv
bnN0IFdlYlJlY3QmIHRyYWNrLCBXZWJSZWN0JiBzdGFydFRyYWNrLCBXZWJSZWN0JiB0aHVtYiwg
V2ViUmVjdCYgZW5kVHJhY2spIE9WRVJSSURFCisgICAgeworICAgICAgICBzdGFydFRyYWNrID0g
V2ViUmVjdCgpOworICAgICAgICB0aHVtYiA9IFdlYlJlY3QoKTsKKyAgICAgICAgZW5kVHJhY2sg
PSBXZWJSZWN0KCk7CisgICAgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRp
ZiAvLyBGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeV9oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CmluZGV4IGE5YTY1NDAxOTk2YmM5MmE0ZDZjYzkzMDlhYjc4MmY4OTI5NjQ3MzUuLjFmZjI3MGZl
NWRlOGQyMTUzOTFmYTI5OGI0ZDdmMzgyYmM2NTgwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRlc3QuY3Bw
CkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxiYXJMYXllckNocm9taXVtLmgi
CiAKKyNpbmNsdWRlICJGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeS5oIgogI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVHJlZVN5bmNo
cm9uaXplci5oIgpAQCAtOTgsNyArOTksNiBAQCBURVNUKFNjcm9sbGJhckxheWVyQ2hyb21pdW1U
ZXN0LCByZXNvbHZlU2Nyb2xsTGF5ZXJQb2ludGVyKQogICAgIERlYnVnU2NvcGVkU2V0SW1wbFRo
cmVhZCBpbXBsOwogCiAgICAgUmVmUHRyPE1vY2tTY3JvbGxiYXI+IG1vY2tTY3JvbGxiYXIgPSBh
ZG9wdFJlZihuZXcgTW9ja1Njcm9sbGJhcik7Ci0gICAgV2ViS2l0OjpXZWJTY3JvbGxiYXJUaGVt
ZUdlb21ldHJ5IGdlb21ldHJ5KDApOwogICAgIFdlYktpdDo6V2ViU2Nyb2xsYmFyVGhlbWVQYWlu
dGVyIHBhaW50ZXIoMCk7CiAKICAgICBTZXR0aW5nczo6c2V0TW9ja1Njcm9sbGJhcnNFbmFibGVk
KHRydWUpOwpAQCAtMTA2LDcgKzEwNiw3IEBAIFRFU1QoU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bVRl
c3QsIHJlc29sdmVTY3JvbGxMYXllclBvaW50ZXIpCiAgICAgICAgIE93blB0cjxXZWJLaXQ6Oldl
YlNjcm9sbGJhcj4gc2Nyb2xsYmFyID0gV2ViS2l0OjpXZWJTY3JvbGxiYXI6OmNyZWF0ZShtb2Nr
U2Nyb2xsYmFyLmdldCgpKTsKICAgICAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGxheWVyVHJl
ZVJvb3QgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICAgICAgUmVmUHRyPExheWVyQ2hy
b21pdW0+IGNoaWxkMSA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwotICAgICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKHNj
cm9sbGJhci5yZWxlYXNlKCksIHBhaW50ZXIsIGdlb21ldHJ5LCBjaGlsZDEtPmlkKCkpOworICAg
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gU2Nyb2xsYmFyTGF5ZXJDaHJvbWl1
bTo6Y3JlYXRlKHNjcm9sbGJhci5yZWxlYXNlKCksIHBhaW50ZXIsIFdlYktpdDo6RmFrZVdlYlNj
cm9sbGJhclRoZW1lR2VvbWV0cnk6OmNyZWF0ZSgpLCBjaGlsZDEtPmlkKCkpOwogICAgICAgICBs
YXllclRyZWVSb290LT5hZGRDaGlsZChjaGlsZDEpOwogICAgICAgICBsYXllclRyZWVSb290LT5h
ZGRDaGlsZChjaGlsZDIpOwogCkBAIC0xMjMsNyArMTIzLDcgQEAgVEVTVChTY3JvbGxiYXJMYXll
ckNocm9taXVtVGVzdCwgcmVzb2x2ZVNjcm9sbExheWVyUG9pbnRlcikKICAgICAgICAgT3duUHRy
PFdlYktpdDo6V2ViU2Nyb2xsYmFyPiBzY3JvbGxiYXIgPSBXZWJLaXQ6OldlYlNjcm9sbGJhcjo6
Y3JlYXRlKG1vY2tTY3JvbGxiYXIuZ2V0KCkpOwogICAgICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQyID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7Ci0gICAg
ICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBTY3JvbGxiYXJMYXllckNocm9taXVt
OjpjcmVhdGUoc2Nyb2xsYmFyLnJlbGVhc2UoKSwgcGFpbnRlciwgZ2VvbWV0cnksIGNoaWxkMi0+
aWQoKSk7CisgICAgICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZDEgPSBTY3JvbGxiYXJM
YXllckNocm9taXVtOjpjcmVhdGUoc2Nyb2xsYmFyLnJlbGVhc2UoKSwgcGFpbnRlciwgV2ViS2l0
OjpGYWtlV2ViU2Nyb2xsYmFyVGhlbWVHZW9tZXRyeTo6Y3JlYXRlKCksIGNoaWxkMi0+aWQoKSk7
CiAgICAgICAgIGxheWVyVHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMSk7CiAgICAgICAgIGxheWVy
VHJlZVJvb3QtPmFkZENoaWxkKGNoaWxkMik7CiAKQEAgLTE0Miw3ICsxNDIsNiBAQCBURVNUKFNj
cm9sbGJhckxheWVyQ2hyb21pdW1UZXN0LCBzY3JvbGxPZmZzZXRTeW5jaHJvbml6YXRpb24pCiAg
ICAgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkIGltcGw7CiAKICAgICBSZWZQdHI8TW9ja1Njcm9s
bGJhcj4gbW9ja1Njcm9sbGJhciA9IGFkb3B0UmVmKG5ldyBNb2NrU2Nyb2xsYmFyKTsKLSAgICBX
ZWJLaXQ6OldlYlNjcm9sbGJhclRoZW1lR2VvbWV0cnkgZ2VvbWV0cnkoMCk7CiAgICAgV2ViS2l0
OjpXZWJTY3JvbGxiYXJUaGVtZVBhaW50ZXIgcGFpbnRlcigwKTsKIAogICAgIFNldHRpbmdzOjpz
ZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWQodHJ1ZSk7CkBAIC0xNTAsNyArMTQ5LDcgQEAgVEVTVChT
Y3JvbGxiYXJMYXllckNocm9taXVtVGVzdCwgc2Nyb2xsT2Zmc2V0U3luY2hyb25pemF0aW9uKQog
ICAgIE93blB0cjxXZWJLaXQ6OldlYlNjcm9sbGJhcj4gc2Nyb2xsYmFyID0gV2ViS2l0OjpXZWJT
Y3JvbGxiYXI6OmNyZWF0ZShtb2NrU2Nyb2xsYmFyLmdldCgpKTsKICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gbGF5ZXJUcmVlUm9vdCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBjb250ZW50TGF5ZXIgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKLSAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gc2Nyb2xsYmFyTGF5ZXIgPSBTY3JvbGxiYXJM
YXllckNocm9taXVtOjpjcmVhdGUoc2Nyb2xsYmFyLnJlbGVhc2UoKSwgcGFpbnRlciwgZ2VvbWV0
cnksIGxheWVyVHJlZVJvb3QtPmlkKCkpOworICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBzY3Jv
bGxiYXJMYXllciA9IFNjcm9sbGJhckxheWVyQ2hyb21pdW06OmNyZWF0ZShzY3JvbGxiYXIucmVs
ZWFzZSgpLCBwYWludGVyLCBXZWJLaXQ6OkZha2VXZWJTY3JvbGxiYXJUaGVtZUdlb21ldHJ5Ojpj
cmVhdGUoKSwgbGF5ZXJUcmVlUm9vdC0+aWQoKSk7CiAgICAgbGF5ZXJUcmVlUm9vdC0+YWRkQ2hp
bGQoY29udGVudExheWVyKTsKICAgICBsYXllclRyZWVSb290LT5hZGRDaGlsZChzY3JvbGxiYXJM
YXllcik7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>