<?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>79137</bug_id>
          
          <creation_ts>2012-02-21 11:57:08 -0800</creation_ts>
          <short_desc>[chromium] Add compositor thread painting for scrollbar layers</short_desc>
          <delta_ts>2012-03-05 11:46:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>78872</dup_id>
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78028</dependson>
    
    <dependson>78872</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adrienne Walker">enne</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>pkotwicz</cc>
    
    <cc>trchen</cc>
    
    <cc>vangelis</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561106</commentid>
    <comment_count>0</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-02-21 11:57:08 -0800</bug_when>
    <thetext>Once we have scrollbar layers (from bug 78872) and a way to encapsulate paint logic from scrollbars (bug 78028), we need to add a some logic to scrollbar layers that will let them execute this painting logic on the compositor thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561148</commentid>
    <comment_count>1</comment_count>
      <attachid>128025</attachid>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-21 12:44:57 -0800</bug_when>
    <thetext>Created attachment 128025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561157</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-02-21 12:54:15 -0800</bug_when>
    <thetext>Please ignore patch

(In reply to comment #1)
&gt; Created an attachment (id=128025) [details]
&gt; Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570888</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kotwicz">pkotwicz</who>
    <bug_when>2012-03-05 11:43:29 -0800</bug_when>
    <thetext>Just doing some cleanup. This will be fixed with 78872?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570895</commentid>
    <comment_count>4</comment_count>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-03-05 11:46:43 -0800</bug_when>
    <thetext>Yeah, this is a duplicate of 78872.

*** This bug has been marked as a duplicate of bug 78872 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128025</attachid>
            <date>2012-02-21 12:44:57 -0800</date>
            <delta_ts>2012-02-21 16:06:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79137-20120221154455.patch</filename>
            <type>text/plain</type>
            <size>124532</size>
            <attacher name="Peter Kotwicz">pkotwicz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MzgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY3YTNkZGQwMWU3YjJj
ZDI0ZDVlZWIyNTIxMTc0NjY5NDM0NTlmOC4uYWI3MmRmNjdiZTUwOTNhMzUwNmI2MDI1MTMyNWE5
M2JhYTY0NDI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2NCBAQAorMjAxMi0wMi0yMSAgUGV0
ZXIgS290d2ljeiAgPHBrb3R3aWN6QGdvb2dsZS5jb20+CisKKyAgICAgICAgW2Nocm9taXVtXSBN
YWtlcyBTY3JvbGxiYXJUaGVtZSB0YWtlIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBpbnN0ZWFkIG9m
IFNjcm9sbGJhcioKKyAgICAgICAgVGhpcyBlbmFibGVzIHBhaW50aW5nIFNjcm9sbGJhcnMgb24g
YSBzZXBhcmF0ZSB0aHJlYWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03OTEzNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS5neXBp
OgorICAgICAgICAqIHBsYXRmb3JtL1Njcm9sbGJhci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXI6OnNjcm9sbGJhck92ZXJsYXlTdHlsZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Z2V0VGlja21hcmtzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhcjo6aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSk6CisgICAgICAgICogcGxhdGZv
cm0vU2Nyb2xsYmFyLmg6CisgICAgICAgIChTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyOjpvcmllbnRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Y3VycmVudFBvcyk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXI6OnZpc2libGVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhcjo6dG90YWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6bWF4aW11
bSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmNvbnRyb2xTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhcjo6bGluZVN0ZXApOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyOjpwYWdlU3RlcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnByZXNzZWRQYXJ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6aG92ZXJlZFBhcnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyOjplbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
cjo6eCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnkpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OmhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnNpemUpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyOjpsb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXI6OnJvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyOjpmcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhcjo6Y29udmVydEZyb21D
b250YWluaW5nV2luZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZS5oOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dXBk
YXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpwYWlu
dCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6aGl0VGVzdCk6CisgICAgICAg
IChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6dXBkYXRlU2Nyb2xsYmFyT3ZlcmxheVN0eWxlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjppbnZhbGlkYXRlUGFydHMpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OmludmFsaWRhdGVQYXJ0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZTo6c2hvdWxkRHJhZ0RvY3VtZW50SW5zdGVh
ZE9mVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iUG9zaXRp
b24pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWU6OnRodW1iTGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0cmFja1Bvc2l0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lOjp0cmFja0xlbmd0aCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZTo6cmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWU6OnVucmVnaXN0ZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L1Njcm9sbGJhclRoZW1lQ2xpZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChTY3JvbGxiYXJUaGVtZUNsaWVudCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRl
OjpoaXRUZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpp
bnZhbGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjp1c2VkVG90YWxTaXplKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYlBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0aHVtYkxlbmd0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVu
Z3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja1Bv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFj
a0xlbmd0aCk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuaDoK
KyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50VHJhY2tCYWNrZ3JvdW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWludFRyYWNr
UGllY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnBhaW50
QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWlu
dFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpwYWlu
dFRpY2ttYXJrcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6
Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyk6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUNocm9taXVtOjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxiYXJUaGVtZUNocm9taXVtOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MpOgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW0uaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW06Omhhc0J1dHRvbnMpOgorICAgICAgICAo
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6c2hvdWxkQ2VudGVy
T25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9p
ZDo6YnV0dG9uU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVt
QW5kcm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZC5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1MaW51eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJD
b3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpidXR0b25TaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6bWluaW11
bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtTGludXguaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eCk6
CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5o
OgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYyk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lQ2hyb21pdW1NYWM6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWM6OnBhaW50R2l2ZW5UaWNrbWFya3MpOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1XaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4pOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRU
cmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lQ2hyb21pdW1X
aW46OnBhaW50VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bVdpbjo6Z2V0VGhlbWVTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNo
cm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3NpY1RoZW1lU3RhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYik6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmg6
CisgICAgICAgIChTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVFZmw6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJh
clRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9lZmwv
U2Nyb2xsYmFyVGhlbWVFZmwuaDoKKyAgICAgICAgKFNjcm9sbGJhclRoZW1lRWZsKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6cmVnaXN0ZXJTY3JvbGxi
YXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVucmVnaXN0ZXJTY3Jv
bGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnVwZGF0ZVNjcm9s
bGJhcnNGcmFtZVRoaWNrbmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0
azo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpmb3J3YXJk
QnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZUd0azo6dHJhY2tS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpzaG91bGRDZW50ZXJPblRodW1iKToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcm9sbGJhclRoZW1lR3RrOjptaW5pbXVtVGh1bWJMZW5ndGgpOgorICAgICAgICAqIHBs
YXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVHdGs6Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVHdGspOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Z2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lR3RrOjpwYWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludFRodW1iKToKKyAgICAgICAgKFdlYkNvcmU6
OlNjcm9sbGJhclRoZW1lR3RrOjpwYWludEJ1dHRvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Njcm9sbGJhclRoZW1lR3RrMy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVt
ZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVHdGs6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRCdXR0b24pOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TY3JvbGxi
YXJUaGVtZU1hYy5oOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVNYWMpOgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzZXROZXdQYWludGVyRm9yU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpwYWludGVyRm9y
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVT
Y3JvbGxiYXJPdmVybGF5U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVN
YWM6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6Omhh
c1RodW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9u
UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6Zm9yd2FyZEJ1dHRv
blJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1hYzo6bWluaW11bVRodW1iTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRo
dW1iKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9j
dW1lbnRJbnN0ZWFkT2ZUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1h
Yzo6dXBkYXRlRW5hYmxlZFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
TWFjOjpwYWludCk6CisgICAgICAgICogcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjp0cmFja1JlY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3Vu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6OnBhaW50VGh1bWIpOgor
ICAgICAgICAqIHBsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTY3JvbGxiYXJUaGVtZU1vY2s6Omhhc0J1dHRvbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6U2Nyb2xsYmFyVGhlbWVNb2NrOjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3Jv
bGxiYXJUaGVtZU1vY2s6OmJhY2tCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9s
bGJhclRoZW1lTW9jazo6Zm9yd2FyZEJ1dHRvblJlY3QpOgorICAgICAgICAoU2Nyb2xsYmFyVGhl
bWVNb2NrKToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnN0eWxlT3B0aW9uU2xpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lUXQ6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1l
UXQ6OmhpdFRlc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6c2hvdWxk
Q2VudGVyT25UaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0OjppbnZh
bGlkYXRlUGFydCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBv
c2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRodW1iTGVuZ3Ro
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tMZW5ndGgpOgorICAgICAg
ICAqIHBsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaDoKKyAgICAgICAgKFNjcm9sbGJhclRo
ZW1lUXQpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzQnV0dG9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6aGFzVGh1bWIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OmJhY2tCdXR0b25SZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgpOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnNob3VsZENlbnRlck9uVGh1
bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50VHJhY2tC
YWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWlu
dEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRU
aHVtYik6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmg6Cisg
ICAgICAgIChTY3JvbGxiYXJUaGVtZVNhZmFyaSk6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Nj
cm9sbGJhclRoZW1lV2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2lu
OjpoYXNUaHVtYik6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdpbjo6YmFja0J1
dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OmZvcndhcmRC
dXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjp0cmFja1Jl
Y3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9u
VGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2luOjpw
YWludFRyYWNrQmFja2dyb3VuZCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVdp
bjo6cGFpbnRUcmFja1BpZWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGJhclRoZW1lV2lu
OjpwYWludEJ1dHRvbik6CisgICAgICAgIChXZWJDb3JlOjpwYWludEdyaXBwZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VGh1bWIpOgorICAgICAgICAqIHBs
YXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVdpbi5oOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xs
YmFyVGhlbWVXaW46Omhhc0J1dHRvbnMpOgorICAgICAgICAoU2Nyb2xsYmFyVGhlbWVXaW4pOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsYmFyVGhlbWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNj
cm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFy
VGhlbWVXeDo6c3BsaXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4
OjpiYWNrQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojpm
b3J3YXJkQnV0dG9uUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxiYXJUaGVtZVd4Ojp0
cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQpOgor
ICAgICAgICAqIHBsYXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaDoKKyAgICAgICAgKFNjcm9s
bGJhclRoZW1lV3gpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsYmFyVGhlbWVXeDo6aGFzQnV0
dG9ucyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oOgorICAgICAgICAo
V2ViQ29yZTo6dG9SZW5kZXJTY3JvbGxiYXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJT
Y3JvbGxiYXJUaGVtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVt
ZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6aGFzQnV0dG9ucyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6aGFzVGh1bWIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFy
VGhlbWU6Om1pbmltdW1UaHVtYkxlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3Jv
bGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmZvcndhcmRCdXR0b25SZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0JhY2tn
cm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJh
Y2tQaWVjZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRC
dXR0b24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VGh1
bWIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnNob3VsZENlbnRlck9uVGh1bWIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnJlZ2lzdGVyU2Nyb2xsYmFy
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNjcm9sbGJhclRoZW1lOjp1bnJlZ2lzdGVyU2Ny
b2xsYmFyKToKKyAgICAgICAgKFJlbmRlclNjcm9sbGJhclRoZW1lKToKKwogMjAxMi0wMi0yMSAg
TGluIFdlaSAgPHdlaS5hLmxpbkBpbnRlbC5jb20+CiAKICAgICAgICAgRml4IGJ1ZyBmcm9tIHIx
MDc2NzIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggMzI1NDdjYzY2ZGY2YjZkYmQ4NGJhYjRlOWE3Y2Mw
MWQ1N2JiMmE0Yy4uYzk4Njc3ODE0ZWRhM2JkOWM4OWNkYmMxNzgyMDRlOWYwYWYyOGU5YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMjkyLDYgKzI5Miw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0v
U2Nyb2xsYWJsZUFyZWEuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vU2Nyb2xsYmFyLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lLmgnLAorICAgICAgICAgICAgJ3Bs
YXRmb3JtL1Njcm9sbGJhclRoZW1lQ2xpZW50LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL1Nl
YXJjaFBvcHVwTWVudS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9TaGFyZWRCdWZmZXIuaCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyLmNwcAppbmRleCAzYjljMTk1Y2ZmNTUzOTE2NTU2MjAz
ZTJmMmNjNGZlNWQ4ZjlhNTFlLi5hOTZhNjU2NzVhYjgzZDFmMDkwZDIwNzcxODNiODYzZGM5Yjc4
YjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5jcHAKQEAgLTU1Miw0ICs1NTIs
MjAgQEAgSW50UG9pbnQgU2Nyb2xsYmFyOjpjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0
IEludFBvaW50JiBwYXJlbnRQb2ludCkgY29uc3QKICAgICByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0
RnJvbUNvbnRhaW5pbmdWaWV3KHBhcmVudFBvaW50KTsKIH0KIAorU2Nyb2xsYmFyT3ZlcmxheVN0
eWxlIFNjcm9sbGJhcjo6c2Nyb2xsYmFyT3ZlcmxheVN0eWxlKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zY3JvbGxhYmxlQXJlYSA/IFNjcm9sbGJhck92ZXJsYXlTdHlsZURlZmF1bHQgOiBtX3Nj
cm9sbGFibGVBcmVhLT5zY3JvbGxiYXJPdmVybGF5U3R5bGUoKTsKK30KKwordm9pZCBTY3JvbGxi
YXI6OmdldFRpY2ttYXJrcyhWZWN0b3I8SW50UmVjdD4mIHRpY2ttYXJrcykgY29uc3QKK3sKKyAg
ICBpZiAobV9zY3JvbGxhYmxlQXJlYSkKKyAgICAgICAgbV9zY3JvbGxhYmxlQXJlYS0+Z2V0VGlj
a21hcmtzKHRpY2ttYXJrcyk7Cit9CisKK2Jvb2wgU2Nyb2xsYmFyOjppc1Njcm9sbGFibGVBcmVh
QWN0aXZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zY3JvbGxhYmxlQXJlYSAmJiBtX3Njcm9s
bGFibGVBcmVhLT5pc0FjdGl2ZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCmluZGV4IGU0ZTcyNDY1YmVmN2ZhMGE2ZGU2YjJhZGRh
NDAyOWVjODMyY2IwZTcuLjkxMjZkYzQ2MDg3YjI1ZmM1NDQxYzJhMDZiY2IxYmVhZjIxODBkOWYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhci5oCkBAIC0yNiw2ICsyNiw3IEBACiAjaWZu
ZGVmIFNjcm9sbGJhcl9oCiAjZGVmaW5lIFNjcm9sbGJhcl9oCiAKKyNpbmNsdWRlICJTY3JvbGxi
YXJUaGVtZUNsaWVudC5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKICNpbmNsdWRlICJXaWRnZXQuaCIKQEAgLTQwLDcgKzQxLDkgQEAgY2xhc3MgUGxhdGZv
cm1Nb3VzZUV2ZW50OwogY2xhc3MgU2Nyb2xsYWJsZUFyZWE7CiBjbGFzcyBTY3JvbGxiYXJUaGVt
ZTsKIAotY2xhc3MgU2Nyb2xsYmFyIDogcHVibGljIFdpZGdldCB7CitjbGFzcyBTY3JvbGxiYXIg
OiBwdWJsaWMgV2lkZ2V0LAorICAgICAgICAgICAgICAgICAgcHVibGljIFNjcm9sbGJhclRoZW1l
Q2xpZW50IHsKKwogcHVibGljOgogICAgIC8vIE11c3QgYmUgaW1wbGVtZW50ZWQgYnkgcGxhdGZv
cm1zIHRoYXQgY2FuJ3Qgc2ltcGx5IHVzZSB0aGUgU2Nyb2xsYmFyIGJhc2UgY2xhc3MuICBSaWdo
dCBub3cgdGhlIG9ubHkgcGxhdGZvcm0gdGhhdCBpcyBub3QgdXNpbmcgdGhlIGJhc2UgY2xhc3Mg
aXMgR1RLLgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlTmF0aXZlU2Ny
b2xsYmFyKFNjcm9sbGFibGVBcmVhKiwgU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24s
IFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpOwpAQCAtNTgsMzIgKzYxLDMyIEBAIHB1YmxpYzoK
ICAgICBTY3JvbGxhYmxlQXJlYSogc2Nyb2xsYWJsZUFyZWEoKSBjb25zdCB7IHJldHVybiBtX3Nj
cm9sbGFibGVBcmVhOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIoKSBj
b25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIFNjcm9sbGJhck9yaWVudGF0aW9uIG9yaWVudGF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9vcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2Nyb2xs
YmFyT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSBjb25zdCB7IHJldHVybiBtX29yaWVudGF0aW9u
OyB9CiAKLSAgICBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3VycmVudFBv
cyk7IH0KLSAgICBmbG9hdCBjdXJyZW50UG9zKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50UG9z
OyB9CisgICAgdmlydHVhbCBpbnQgdmFsdWUoKSBjb25zdCB7IHJldHVybiBscm91bmRmKG1fY3Vy
cmVudFBvcyk7IH0KKyAgICB2aXJ0dWFsIGZsb2F0IGN1cnJlbnRQb3MoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRQb3M7IH0KICAgICBpbnQgcHJlc3NlZFBvcygpIGNvbnN0IHsgcmV0dXJuIG1f
cHJlc3NlZFBvczsgfQotICAgIGludCB2aXNpYmxlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdmlz
aWJsZVNpemU7IH0KLSAgICBpbnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNp
emU7IH0KLSAgICBpbnQgbWF4aW11bSgpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxTaXplIC0gbV92
aXNpYmxlU2l6ZTsgfSAgICAgICAgCi0gICAgU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNp
emUoKSBjb25zdCB7IHJldHVybiBtX2NvbnRyb2xTaXplOyB9CisgICAgdmlydHVhbCBpbnQgdmlz
aWJsZVNpemUoKSBjb25zdCB7IHJldHVybiBtX3Zpc2libGVTaXplOyB9CisgICAgdmlydHVhbCBp
bnQgdG90YWxTaXplKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemU7IH0KKyAgICB2aXJ0dWFs
IGludCBtYXhpbXVtKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbFNpemUgLSBtX3Zpc2libGVTaXpl
OyB9CisgICAgdmlydHVhbCBTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fY29udHJvbFNpemU7IH0KIAotICAgIGludCBsaW5lU3RlcCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGluZVN0ZXA7IH0KLSAgICBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X2xpbmVTdGVwOyB9CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAoKSBjb25zdCB7IHJldHVybiBt
X3BhZ2VTdGVwOyB9CiAgICAgZmxvYXQgcGl4ZWxTdGVwKCkgY29uc3QgeyByZXR1cm4gbV9waXhl
bFN0ZXA7IH0KIAotICAgIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBjb25zdCB7IHJldHVy
biBtX3ByZXNzZWRQYXJ0OyB9Ci0gICAgU2Nyb2xsYmFyUGFydCBob3ZlcmVkUGFydCgpIGNvbnN0
IHsgcmV0dXJuIG1faG92ZXJlZFBhcnQ7IH0KKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJl
c3NlZFBhcnQoKSBjb25zdCB7IHJldHVybiBtX3ByZXNzZWRQYXJ0OyB9CisgICAgdmlydHVhbCBT
Y3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3QgeyByZXR1cm4gbV9ob3ZlcmVkUGFydDsg
fQogICAgIHZpcnR1YWwgdm9pZCBzZXRIb3ZlcmVkUGFydChTY3JvbGxiYXJQYXJ0KTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJlc3NlZFBhcnQoU2Nyb2xsYmFyUGFydCk7CiAKICAgICB2b2lkIHNl
dFN0ZXBzKGludCBsaW5lU3RlcCwgaW50IHBhZ2VTdGVwLCBpbnQgcGl4ZWxzUGVyU3RlcCA9IDEp
OwogICAgIHZvaWQgc2V0UHJvcG9ydGlvbihpbnQgdmlzaWJsZVNpemUsIGludCB0b3RhbFNpemUp
OwogICAgIHZvaWQgc2V0UHJlc3NlZFBvcyhpbnQgcCkgeyBtX3ByZXNzZWRQb3MgPSBwOyB9Ci0g
ICAgCisKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICBib29sIGVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuYWJsZWQ7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
ZW5hYmxlZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRFbmFibGVkKGJvb2wgZSk7CiAKICAgICB2
aXJ0dWFsIGJvb2wgaXNPdmVybGF5U2Nyb2xsYmFyKCkgY29uc3Q7CkBAIC05Nyw3ICsxMDAsNyBA
QCBwdWJsaWM6CiAgICAgYm9vbCBtb3VzZU1vdmVkKGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYp
OwogICAgIHZvaWQgbW91c2VFbnRlcmVkKCk7CiAgICAgYm9vbCBtb3VzZUV4aXRlZCgpOwotICAg
IAorCiAgICAgLy8gVXNlZCBieSBzb21lIHBsYXRmb3JtIHNjcm9sbGJhcnMgdG8ga25vdyB3aGVu
IHRoZXkndmUgYmVlbiByZWxlYXNlZCBmcm9tIGNhcHR1cmUuCiAgICAgYm9vbCBtb3VzZVVwKGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCkBAIC0xMTIsMTEgKzExNSwyMyBAQCBwdWJsaWM6
CiAKICAgICBTY3JvbGxiYXJUaGVtZSogdGhlbWUoKSBjb25zdCB7IHJldHVybiBtX3RoZW1lOyB9
CiAKKyAgICB2aXJ0dWFsIGludCB4KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp4KCk7IH0KKyAg
ICB2aXJ0dWFsIGludCB5KCkgY29uc3QgeyByZXR1cm4gV2lkZ2V0Ojp5KCk7IH0KKyAgICB2aXJ0
dWFsIGludCB3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6d2lkdGgoKTsgfQorICAgIHZp
cnR1YWwgaW50IGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6aGVpZ2h0KCk7IH0KKyAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6c2l6ZSgpOyB9
CisgICAgdmlydHVhbCBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIFdpZGdldDo6
bG9jYXRpb24oKTsgfQorCiAgICAgdmlydHVhbCB2b2lkIHNldFBhcmVudChTY3JvbGxWaWV3Kik7
CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQoKSBjb25zdCB7IHJldHVybiBXaWRnZXQ6
OnBhcmVudCgpOyB9CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgeyByZXR1
cm4gV2lkZ2V0Ojpyb290KCk7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29u
c3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCB7IHJl
dHVybiBXaWRnZXQ6OmZyYW1lUmVjdCgpOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZSgpIHsgV2lkZ2V0OjppbnZhbGlkYXRlKCk7IH0KICAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0
ZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIAorCiAgICAgYm9vbCBzdXBwcmVzc0ludmFsaWRh
dGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247IH0KICAgICB2b2lk
IHNldFN1cHByZXNzSW52YWxpZGF0aW9uKGJvb2wgcykgeyBtX3N1cHByZXNzSW52YWxpZGF0aW9u
ID0gczsgfQogCkBAIC0xMjQsMTAgKzEzOSwxNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIElu
dFJlY3QgY29udmVydFRvQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UmVjdCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgSW50UmVjdCBjb252ZXJ0RnJvbUNvbnRhaW5pbmdWaWV3KGNvbnN0IEludFJlY3Qm
KSBjb25zdDsKLSAgICAKKwogICAgIHZpcnR1YWwgSW50UG9pbnQgY29udmVydFRvQ29udGFpbmlu
Z1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNvbnZl
cnRGcm9tQ29udGFpbmluZ1ZpZXcoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKIAorICAgIHZpcnR1
YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNjcm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0Owor
ICAgIHZpcnR1YWwgdm9pZCBnZXRUaWNrbWFya3MoVmVjdG9yPEludFJlY3Q+JikgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGlzU2Nyb2xsYWJsZUFyZWFBY3RpdmUoKSBjb25zdDsKKworICAgIHZp
cnR1YWwgSW50UG9pbnQgY29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50
JiB3aW5kb3dQb2ludCkgeyByZXR1cm4gV2lkZ2V0Ojpjb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5k
b3cod2luZG93UG9pbnQpOyB9CisKIHByb3RlY3RlZDoKICAgICBTY3JvbGxiYXIoU2Nyb2xsYWJs
ZUFyZWEqLCBTY3JvbGxiYXJPcmllbnRhdGlvbiwgU2Nyb2xsYmFyQ29udHJvbFNpemUsIFNjcm9s
bGJhclRoZW1lKiA9IDApOwogCkBAIC0xNDEsNyArMTYyLDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgYXV0b3Njcm9sbFByZXNzZWRQYXJ0KGRvdWJsZSBkZWxheSk7CiAgICAgU2Nyb2xsRGlyZWN0
aW9uIHByZXNzZWRQYXJ0U2Nyb2xsRGlyZWN0aW9uKCk7CiAgICAgU2Nyb2xsR3JhbnVsYXJpdHkg
cHJlc3NlZFBhcnRTY3JvbGxHcmFudWxhcml0eSgpOwotICAgIAorCiAgICAgdm9pZCBtb3ZlVGh1
bWIoaW50IHBvcywgYm9vbCBkcmFnZ2luZ0RvY3VtZW50ID0gZmFsc2UpOwogCiAgICAgU2Nyb2xs
YWJsZUFyZWEqIG1fc2Nyb2xsYWJsZUFyZWE7CkBAIC0xNjcsNyArMTg4LDcgQEAgcHJvdGVjdGVk
OgogCiAgICAgVGltZXI8U2Nyb2xsYmFyPiBtX3Njcm9sbFRpbWVyOwogICAgIGJvb2wgbV9vdmVy
bGFwc1Jlc2l6ZXI7Ci0gICAgCisKICAgICBib29sIG1fc3VwcHJlc3NJbnZhbGlkYXRpb247CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWUuaAppbmRleCAy
YTgzZDUzODVlYWJiY2FjZmY4YmU1NjM0OWI0ZDE5ZTMyYmI2ZmNjLi4xN2VmNjM4ZTYwM2I0MjE2
NTJhNGQwYTliMTFmOTA3NDdkYTc3MDU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TY3JvbGxiYXJUaGVtZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9s
bGJhclRoZW1lLmgKQEAgLTMzLDcgKzMzLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xh
c3MgUGxhdGZvcm1Nb3VzZUV2ZW50OwotY2xhc3MgU2Nyb2xsYmFyOworY2xhc3MgU2Nyb2xsYmFy
VGhlbWVDbGllbnQ7CiBjbGFzcyBTY3JvbGxWaWV3OwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcpCkBAIC00NiwxMCArNDYsMTAgQEAg
cHVibGljOgogICAgIFNjcm9sbGJhclRoZW1lKCkgeyB9CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFy
VGhlbWUoKSB7fTsKIAotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xs
YmFyKikgeyB9OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVFbmFibGVkU3RhdGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqKSB7IH07CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwg
R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyKiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gTm9QYXJ0OyB9CisgICAgdmlydHVh
bCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29u
c3QgSW50UmVjdCYgLypkYW1hZ2VSZWN0Ki8pIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVh
bCBTY3JvbGxiYXJQYXJ0IGhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBOb1BhcnQ7IH0KICAgICAKICAgICB2aXJ0dWFsIGlu
dCBzY3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgPSBSZWd1bGFyU2Nyb2xs
YmFyKSB7IHJldHVybiAwOyB9CiAKQEAgLTU3LDEzICs1NywxMyBAQCBwdWJsaWM6CiAKICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNDb250cm9sVGludHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogICAgIHZpcnR1YWwgYm9vbCB1c2VzT3ZlcmxheVNjcm9sbGJhcnMoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUo
U2Nyb2xsYmFyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVNjcm9sbGJhck92ZXJsYXlT
dHlsZShTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIHRoZW1l
Q2hhbmdlZCgpIHt9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGludmFsaWRhdGVPbk1vdXNlRW50
ZXJFeGl0KCkgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZVBhcnRzKFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKKyAgICB2
b2lkIGludmFsaWRhdGVQYXJ0cyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3Jv
bGxiYXJDb250cm9sUGFydE1hc2sgbWFzaykKICAgICB7CiAgICAgICAgIGlmIChtYXNrICYgQmFj
a0J1dHRvblN0YXJ0UGFydCkKICAgICAgICAgICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwg
QmFja0J1dHRvblN0YXJ0UGFydCk7CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIGludmFsaWRhdGVQYXJ0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvbkVuZFBhcnQpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqLCBTY3JvbGxi
YXJQYXJ0KSB7fQorICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFydChTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIHt9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3Jv
bGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50
UmVjdCYgY29ybmVyUmVjdCkgeyBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoY29udGV4dCwgY29y
bmVyUmVjdCk7IH0KICAgICBzdGF0aWMgdm9pZCBkZWZhdWx0UGFpbnRTY3JvbGxDb3JuZXIoR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KSB7IGNvbnRl
eHQtPmZpbGxSZWN0KGNvcm5lclJlY3QsIENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJH
Qik7IH0KQEAgLTkzLDIxICs5MywyMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldFVw
Q29udGVudFNoYWRvd0xheWVyKEdyYXBoaWNzTGF5ZXIqKSB7IH0KICNlbmRpZgogCi0gICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25h
cEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jikg
eyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHJhZ0RvY3VtZW50SW5z
dGVhZE9mVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1
cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGludCB0aHVtYlBvc2l0aW9uKFNjcm9sbGJhciopIHsg
cmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0aGUg
dHJhY2suCi0gICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4g
MDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0aHVtYiBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Ny
b2xsYmFyLgotICAgIHZpcnR1YWwgaW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKikgeyByZXR1
cm4gMDsgfSAvLyBUaGUgcG9zaXRpb24gb2YgdGhlIHRyYWNrIHJlbGF0aXZlIHRvIHRoZSBzY3Jv
bGxiYXIuCi0gICAgdmlydHVhbCBpbnQgdHJhY2tMZW5ndGgoU2Nyb2xsYmFyKikgeyByZXR1cm4g
MDsgfSAvLyBUaGUgbGVuZ3RoIG9mIHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Ny
b2xsYmFyLgorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JikgeyByZXR1cm4gZmFsc2U7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKSB7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpIHsgcmV0dXJuIGZhbHNl
OyB9CisgICAgdmlydHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVudCop
IHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0aHVtYiByZWxhdGl2ZSB0byB0
aGUgdHJhY2suCisgICAgdmlydHVhbCBpbnQgdGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKSB7IHJldHVybiAwOyB9IC8vIFRoZSBsZW5ndGggb2YgdGhlIHRodW1iIGFsb25nIHRoZSBh
eGlzIG9mIHRoZSBzY3JvbGxiYXIuCisgICAgdmlydHVhbCBpbnQgdHJhY2tQb3NpdGlvbihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIDA7IH0gLy8gVGhlIHBvc2l0aW9uIG9mIHRoZSB0
cmFjayByZWxhdGl2ZSB0byB0aGUgc2Nyb2xsYmFyLgorICAgIHZpcnR1YWwgaW50IHRyYWNrTGVu
Z3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gMDsgfSAvLyBUaGUgbGVuZ3RoIG9m
IHRoZSB0cmFjayBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgc2Nyb2xsYmFyLgogCiAgICAgdmlydHVh
bCBpbnQgbWF4T3ZlcmxhcEJldHdlZW5QYWdlcygpIHsgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50Pjo6bWF4KCk7IH0KIAogICAgIHZpcnR1YWwgZG91YmxlIGluaXRpYWxBdXRvc2Nyb2xs
VGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjU7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBhdXRvc2Ny
b2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDU7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVy
U2Nyb2xsYmFyKFNjcm9sbGJhciopIHt9CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikge30KKyAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopIHt9CiAKICAgICB2aXJ0dWFsIGJvb2wg
aXNNb2NrVGhlbWUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNsaWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lOWViMGNlODEy
ZTEwYmRjN2Q3ZTU4MDc3MWFmOGVjZjJiOWFlNjljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDbGllbnQuaApAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBTY3JvbGxiYXJUaGVtZUNsaWVudF9oCisjZGVmaW5lIFNjcm9sbGJh
clRoZW1lQ2xpZW50X2gKKworI2luY2x1ZGUgIkludFBvaW50LmgiCisjaW5jbHVkZSAiSW50UmVj
dC5oIgorI2luY2x1ZGUgIkludFNpemUuaCIKKyNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgorI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNjcm9sbFZpZXc7CisKK2NsYXNzIFNjcm9sbGJhclRo
ZW1lQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGJvb2wgaXNDdXN0b21TY3JvbGxiYXIo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJPcmllbnRhdGlvbiBvcmllbnRhdGlv
bigpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgaW50IHZhbHVlKCkgY29uc3QgPSAwOworICAg
IHZpcnR1YWwgZmxvYXQgY3VycmVudFBvcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB2
aXNpYmxlU2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludCB0b3RhbFNpemUoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBpbnQgbWF4aW11bSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKCkgY29uc3QgPSAwOworCisgICAgdmly
dHVhbCBpbnQgbGluZVN0ZXAoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQgcGFnZVN0ZXAo
KSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQgcHJlc3NlZFBhcnQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxiYXJQYXJ0IGhvdmVyZWRQYXJ0KCkgY29uc3Qg
PSAwOworCisgICAgdmlydHVhbCBib29sIGVuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHNldEVuYWJsZWQoYm9vbCkgPSAwOworCisgICAgdmlydHVhbCBpbnQgeCgpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIGludCB5KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IHdp
ZHRoKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50IGhlaWdodCgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIEludFBvaW50
IGxvY2F0aW9uKCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiBwYXJlbnQo
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBTY3JvbGxWaWV3KiByb290KCkgY29uc3QgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JikgPSAwOworICAg
IHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZv
aWQgaW52YWxpZGF0ZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgaW52YWxpZGF0ZVJlY3QoY29u
c3QgSW50UmVjdCYpID0gMDsKKworICAgIHZpcnR1YWwgU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIHNj
cm9sbGJhck92ZXJsYXlTdHlsZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VGlj
a21hcmtzKFZlY3RvcjxJbnRSZWN0PiYpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
Y3JvbGxhYmxlQXJlYUFjdGl2ZSgpIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgSW50UG9pbnQg
Y29udmVydEZyb21Db250YWluaW5nV2luZG93KGNvbnN0IEludFBvaW50JiB3aW5kb3dQb2ludCkg
PSAwOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2NvbGxiYXJU
aGVtZUNsaWVudF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZS5jcHAKaW5kZXggZmNiZjQ4NGMwOTUxYjViMGFmYjliYzdiNWZiYzU2Y2Zl
YzlhOTg1ZS4uZTI5NjY5ZjhkNWM5Zjc3M2Q5N2ViZmIzY2ZkNDZhMjQxZjdhYTE5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmNw
cApAQCAtMzMsMTUgKzMzLDE0IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTW91c2VFdmVudC5oIgotI2luY2x1ZGUg
IlNjcm9sbGJhci5oIgotI2luY2x1ZGUgIlNjcm9sbGFibGVBcmVhLmgiCisjaW5jbHVkZSAiU2Ny
b2xsYmFyVGhlbWVDbGllbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiB1c2luZyBuYW1l
c3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGU6OnBhaW50KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGdy
YXBoaWNzQ29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVDb21wb3NpdGU6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIEdy
YXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0
KQogewogICAgIC8vIENyZWF0ZSB0aGUgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIGJhc2VkIG9u
IHRoZSBkYW1hZ2VSZWN0CiAgICAgU2Nyb2xsYmFyQ29udHJvbFBhcnRNYXNrIHNjcm9sbE1hc2sg
PSBOb1BhcnQ7CkBAIC0xMTYsNyArMTE1LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGgKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAotU2Nyb2xsYmFyUGFydCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0
ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldnQpCitTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpoaXRUZXN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYg
ZXZ0KQogewogICAgIFNjcm9sbGJhclBhcnQgcmVzdWx0ID0gTm9QYXJ0OwogICAgIGlmICghc2Ny
b2xsYmFyLT5lbmFibGVkKCkpCkBAIC0xNTUsNyArMTU0LDcgQEAgU2Nyb2xsYmFyUGFydCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6aGl0VGVzdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3Qg
UGxhdGYKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9z
aXRlOjppbnZhbGlkYXRlUGFydChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBw
YXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6aW52YWxpZGF0ZVBhcnQoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGlm
IChwYXJ0ID09IE5vUGFydCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTk1LDcgKzE5NCw3IEBAIHZv
aWQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgc2Nyb2xsYmFyLT5pbnZhbGlkYXRlUmVjdChyZXN1
bHQpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0LCBJ
bnRSZWN0JiBiZWZvcmVUaHVtYlJlY3QsIEludFJlY3QmIHRodW1iUmVjdCwgSW50UmVjdCYgYWZ0
ZXJUaHVtYlJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjpzcGxpdFRyYWNrKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50UmVjdCYgdGh1bWJSZWN0
LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdvbid0
IGV2ZW4gZ2V0IGNhbGxlZCB1bmxlc3Mgd2UncmUgYmlnIGVub3VnaCB0byBoYXZlIHNvbWUgY29t
YmluYXRpb24gb2YgdGhlc2UgdGhyZWUgcmVjdHMgd2hlcmUgYXQgbGVhc3QKICAgICAvLyBvbmUg
b2YgdGhlbSBpcyBub24tZW1wdHkuCkBAIC0yMTUsNyArMjE0LDcgQEAgdm9pZCBTY3JvbGxiYXJU
aGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgdW4KIAogLy8gUmV0dXJucyB0aGUgc2l6ZSByZXByZXNlbnRlZCBieSB0cmFjayB0YWtp
bmcgaW50byBhY2NvdW50IHNjcm9sbGluZyBwYXN0CiAvLyB0aGUgZW5kIG9mIHRoZSBkb2N1bWVu
dC4KLXN0YXRpYyBmbG9hdCB1c2VkVG90YWxTaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorc3Rh
dGljIGZsb2F0IHVzZWRUb3RhbFNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICBmbG9hdCBvdmVyaGFuZ0F0U3RhcnQgPSAtc2Nyb2xsYmFyLT5jdXJyZW50UG9zKCk7
CiAgICAgZmxvYXQgb3ZlcmhhbmdBdEVuZCA9IHNjcm9sbGJhci0+Y3VycmVudFBvcygpICsgc2Ny
b2xsYmFyLT52aXNpYmxlU2l6ZSgpIC0gc2Nyb2xsYmFyLT50b3RhbFNpemUoKTsKQEAgLTIyMyw3
ICsyMjIsNyBAQCBzdGF0aWMgZmxvYXQgdXNlZFRvdGFsU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJh
cikKICAgICByZXR1cm4gc2Nyb2xsYmFyLT50b3RhbFNpemUoKSArIG92ZXJoYW5nOwogfQogCi1p
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVk
KCkpIHsKICAgICAgICAgZmxvYXQgcG9zID0gbWF4KDAuMGYsIHNjcm9sbGJhci0+Y3VycmVudFBv
cygpKSAqICh0cmFja0xlbmd0aChzY3JvbGxiYXIpIC0gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSkg
LyAodXNlZFRvdGFsU2l6ZShzY3JvbGxiYXIpIC0gc2Nyb2xsYmFyLT52aXNpYmxlU2l6ZSgpKTsK
QEAgLTIzMiw3ICsyMzEsNyBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iUG9z
aXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTY3Jv
bGxiYXJUaGVtZUNvbXBvc2l0ZTo6dGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitp
bnQgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAg
ICAgcmV0dXJuIDA7CkBAIC0yNDYsMTggKzI0NSwxOCBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDb21w
b3NpdGU6OnRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiBsZW5n
dGg7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6bWluaW11bVRodW1iTGVuZ3Ro
KFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjptaW5p
bXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBy
ZXR1cm4gc2Nyb2xsYmFyVGhpY2tuZXNzKHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSk7CiB9CiAK
LWludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tQb3NpdGlvbihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgY29uc3RyYWluZWRU
cmFja1JlY3QgPSBjb25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKHNjcm9sbGJhciwgdHJh
Y2tSZWN0KHNjcm9sbGJhcikpOwogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigp
ID09IEhvcml6b250YWxTY3JvbGxiYXIpID8gY29uc3RyYWluZWRUcmFja1JlY3QueCgpIC0gc2Ny
b2xsYmFyLT54KCkgOiBjb25zdHJhaW5lZFRyYWNrUmVjdC55KCkgLSBzY3JvbGxiYXItPnkoKTsK
IH0KIAotaW50IFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlOjp0cmFja0xlbmd0aChTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZTo6dHJhY2tMZW5ndGgoU2Ny
b2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBJbnRSZWN0IGNvbnN0cmFpbmVk
VHJhY2tSZWN0ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHRy
YWNrUmVjdChzY3JvbGxiYXIpKTsKICAgICByZXR1cm4gKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyKSA/IGNvbnN0cmFpbmVkVHJhY2tSZWN0LndpZHRoKCkg
OiBjb25zdHJhaW5lZFRyYWNrUmVjdC5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbGJhclRoZW1lQ29tcG9zaXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oCmluZGV4IDExYjNiZDQ3MDAxODdmZjE4
MmIwNDViNDUyY2RjMjRkYTMzZTc1OTAuLjhlZGQ0YmJhYzk4MDQwZDAzZmM0YjMwZWViMjFhYTk5
NWUzZDJlZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsYmFyVGhl
bWVDb21wb3NpdGUuaApAQCAtMzIsNDAgKzMyLDQwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgOiBwdWJsaWMgU2Nyb2xsYmFyVGhlbWUgewog
cHVibGljOgotICAgIHZpcnR1YWwgYm9vbCBwYWludChTY3JvbGxiYXIqLCBHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOworICAgIHZpcnR1YWwgYm9v
bCBwYWludChTY3JvbGxiYXJUaGVtZUNsaWVudCosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAKLSAgICB2aXJ0dWFsIFNjcm9sbGJhclBhcnQg
aGl0VGVzdChTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0
dWFsIFNjcm9sbGJhclBhcnQgaGl0VGVzdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQYXJ0KFNj
cm9sbGJhciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmlydHVhbCBp
bnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVtYkxlbmd0
aChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9sbGJhciop
OwotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwg
aW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGlu
dCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IHRy
YWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGludCB0cmFj
a0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhaW50
U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0
JiBjb3JuZXJSZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRPdmVyaGFuZ0FyZWFzKFNjcm9s
bFZpZXcqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0JiBob3Jpem9udGFsT3Zlcmhh
bmdBcmVhLCBjb25zdCBJbnRSZWN0JiB2ZXJ0aWNhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVj
dCYgZGlydHlSZWN0KTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25z
KFNjcm9sbGJhciopID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kikg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopID0g
MDsKIAotICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3Jv
bGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKSA9IDA7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxi
YXIqLCBib29sIHBhaW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBh
aW50aW5nID0gZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJl
Y3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0g
ZmFsc2UpID0gMDsKKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKSA9IDA7CiAKLSAgICB2aXJ0dWFsIHZvaWQg
c3BsaXRUcmFjayhTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiB0cmFjaywgSW50UmVjdCYgc3Rh
cnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVuZFRyYWNrKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3BsaXRUcmFjayhTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmIHRy
YWNrLCBJbnRSZWN0JiBzdGFydFRyYWNrLCBJbnRSZWN0JiB0aHVtYiwgSW50UmVjdCYgZW5kVHJh
Y2spOwogICAgIAotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGll
bnQqKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKikge30KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQqLCBTY3Jv
bGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCkge30KLSAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVj
dCYsIFNjcm9sbGJhclBhcnQpIHt9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpIHt9Ci0gICAgdmlydHVhbCB2
b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3Jh
cGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGll
Y2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCkge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xs
YmFyUGFydCkge30KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmKSB7fQorICAgIHZpcnR1YWwg
dm9pZCBwYWludFRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IEludFJlY3QmKSB7fQogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRy
YWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyBy
ZXR1cm4gcmVjdDsgfQorICAgIHZpcnR1YWwgSW50UmVjdCBjb25zdHJhaW5UcmFja1JlY3RUb1Ry
YWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYgcmVjdCkgeyBy
ZXR1cm4gcmVjdDsgfQogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAppbmRleCBmOGNiMjgx
NTQ4NjFlMDFkYTcxMTI0OTIwYzYwZDA2YTM3ZTlhMTgzLi42ODJkODJkNWIzMzc5MThiMjVkMDk4
YmE3NzE3MzRlNzkxNTA1ZTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtLmNwcApAQCAtMzksMTQgKzM5
LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0
aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4g
IFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgo
c2Nyb2xsYmFyKSA+IDA7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9v
bCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6YmFja0J1dHRvblJlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewog
ICAgIC8vIFdpbmRvd3MgYW5kIExpbnV4IGp1c3QgaGF2ZSBzaW5nbGUgYXJyb3dzLgogICAgIGlm
IChwYXJ0ID09IEJhY2tCdXR0b25FbmRQYXJ0KQpAQCAtNTYsNyArNTYsNyBAQCBJbnRSZWN0IFNj
cm9sbGJhclRoZW1lQ2hyb21pdW06OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYQogICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxi
YXItPnkoKSwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3Jv
bGxiYXJUaGVtZUNocm9taXVtOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBT
Y3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBhbmQgTGludXgganVz
dCBoYXZlIHNpbmdsZSBhcnJvd3MuCiAgICAgaWYgKHBhcnQgPT0gRm9yd2FyZEJ1dHRvblN0YXJ0
UGFydCkKQEAgLTc0LDcgKzc0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpm
b3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmEKICAgICByZXR1
cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgYm9vbCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bTo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgSW50U2l6ZSBicyA9IGJ1
dHRvblNpemUoc2Nyb2xsYmFyKTsKICAgICAvLyBUaGUgYnV0dG9ucyBhdCB0aGUgdG9wIGFuZCBi
b3R0b20gb2YgdGhlIHNjcm9sbGJhciBhcmUgc3F1YXJlLCBzbyB0aGUKQEAgLTkyLDE0ICs5Miwx
NCBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lQ2hyb21pdW06OnRyYWNrUmVjdChTY3JvbGxiYXIq
IHNjcm9sbGJhciwgYm9vbCkKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyBicy5oZWlnaHQoKSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gMiAqIGJzLmhlaWdodCgpKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtOjpw
YWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciog
c2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9t
aXVtOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAg
Ly8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBhcnQuICBXZSBvbmx5IHBhaW50IHRoZSB0
cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJlIGlzIG5vIHRodW1iLgogICAgIGlmICgh
aGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFpbnRUcmFja1BpZWNlKGNvbnRleHQsIHNj
cm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bTo6cGFpbnRUaWNrbWFya3MoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAg
IGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgIT0gVmVydGljYWxTY3JvbGxiYXIpCiAgICAg
ICAgIHJldHVybjsKQEAgLTEwOSw3ICsxMDksNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21p
dW06OnBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKgog
CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRoZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9y
PEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmdl
dFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9sbGJhci0+Z2V0VGlja21hcmtzKHRpY2tt
YXJrcyk7CiAgICAgaWYgKCF0aWNrbWFya3Muc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRo
ZW1lQ2hyb21pdW0uaAppbmRleCAxMTc4MTI1NjlmNjlmMjAwMzcxYmFjMGY5ZGE4N2E3YzMyZGU0
ZmE1Li5jZjY3MWRkOTg0YzA3OTA5OTVjNjdkN2QwZjE4YzViNGE2ZjZjZmRkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVt
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bS5oCkBAIC00MSwxNyArNDEsMTcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8v
IFdpbmRvd3MgYW5kIExpbnV4LgogICAgIGNsYXNzIFNjcm9sbGJhclRoZW1lQ2hyb21pdW0gOiBw
dWJsaWMgU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUgewogICAgIHByb3RlY3RlZDoKLSAgICAgICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAot
ICAgICAgICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICAgICAgdmlydHVhbCBJbnRSZWN0
IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRp
bmcgPSBmYWxzZSk7Ci0gICAgICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFy
KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWlu
dGluZyA9IGZhbHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKKyAgICAgICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBh
aW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IElu
dFJlY3QmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUaWNrbWFy
a3MoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
Jik7CiAKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKikgPSAw
OworICAgICAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShTY3JvbGxiYXJUaGVtZUNsaWVu
dCopID0gMDsKICAgICB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVt
ZUNocm9taXVtQW5kcm9pZC5jcHAKaW5kZXggMWRiZWZhNjQ5YzA4OTcyZWIxYzJiMzdiNzQ3NzFi
MGQ2MWJlYTVhZC4uZTFlNTVhMWZjMTNkNzljMGY5ZThmNDczMGJlODk3ODA5NGMxZjY5MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUFuZHJvaWQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkLmNwcApAQCAtNTcsNyArNTcsNyBAQCBpbnQg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxi
YXJDb250cm9sU2l6ZSBjb250cgogICAgIHJldHVybiBzY3JvbGxiYXJUaGlja25lc3NWYWx1ZTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5kcm9pZDo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
Cit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpwYWludFNjcm9sbGJhckJhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Ny
b2xsYmFyKQogewogICAgIC8vIFBhaW50IGJsYWNrIGJhY2tncm91bmQgaW4gRHVtcFJlbmRlclRy
ZWUsIG90aGVyd2lzZSB0aGUgcGl4ZWxzIGluIHRoZSBzY3JvbGxiYXIgYXJlYSBkZXBlbmQKICAg
ICAvLyBvbiB0aGVpciBwcmV2aW91cyBzdGF0ZSwgd2hpY2ggbWFrZXMgdGhlIGR1bXBlZCByZXN1
bHQgdW5kZXRlcm1pbmVkLgpAQCAtNjUsMTIgKzY1LDEyIEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bUFuZHJvaWQ6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvCiAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KHNjcm9sbGJhci0+ZnJhbWVSZWN0KCksIENv
bG9yOjpibGFjaywgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUFuZHJvaWQ6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3Qg
UGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkOjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIpCitJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjpidXR0b25TaXpl
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+
b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNp
emUoc2Nyb2xsYmFyVGhpY2tuZXNzVmFsdWUsIGJ1dHRvbkxlbmd0aCk7CkBAIC03OCw3ICs3OCw3
IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQ6OmJ1dHRvblNpemUoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUoYnV0dG9uTGVuZ3RoLCBzY3Jv
bGxiYXJUaGlja25lc3NWYWx1ZSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtQW5k
cm9pZDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xsYmFyKQoraW50IFNjcm9s
bGJhclRoZW1lQ2hyb21pdW1BbmRyb2lkOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gMiAqIHNjcm9sbGJhclRoaWNrbmVz
cyhzY3JvbGxiYXItPmNvbnRyb2xTaXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1BbmRy
b2lkLmgKaW5kZXggZjA3YzkwMTY3ODZjYjI0Zjg4ZGZiOTRhZTRmYzIxNmZlNmU3MGJmYy4uZjNk
YjgwZTUyZmJmNTBjMWRmNjhhOTQwZWE5ZDQ3M2YyZGJmMjg2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUFuZHJvaWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtQW5kcm9pZC5oCkBAIC0zNSwxMCArMzUsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
aW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7CiAKIHByb3RlY3Rl
ZDoKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgSW50
U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNr
Z3JvdW5kKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIEludFNpemUgYnV0dG9uU2l6ZShT
Y3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0
aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhl
bWVDaHJvbWl1bUxpbnV4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Nj
cm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eC5jcHAKaW5kZXggZWM2ODQwN2U5ZDhjMzJlMzBkMzEw
ZDJlNTA1OGMyZGE3ZGJkZWNjNi4uNmI0ZGFmYzM3M2YxMGQwYWEyZDZlOTY2MmFiZTYzZGQ1ZGI2
NWU3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bUxpbnV4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguY3BwCkBAIC01MCw3ICs1MCw3IEBA
IGludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3Jv
bGxiYXJDb250cm9sU2l6ZSBjb250cm9sCiAgICAgcmV0dXJuIHNjcm9sbGJhclNpemUud2lkdGgo
KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VHJhY2tQaWVj
ZShHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJv
bWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFy
dCBwYXJ0VHlwZSkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0
ZSA9IHNjcm9sbGJhci0+aG92ZXJlZFBhcnQoKSA9PSBwYXJ0VHlwZSA/IFBsYXRmb3JtU3VwcG9y
dDo6U3RhdGVIb3ZlciA6IFBsYXRmb3JtU3VwcG9ydDo6U3RhdGVOb3JtYWw7CiAgICAgSW50UmVj
dCBhbGlnblJlY3QgPSB0cmFja1JlY3Qoc2Nyb2xsYmFyLCBmYWxzZSk7CkBAIC02Nyw3ICs2Nyw3
IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRyYWNrUGllY2UoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyCiAgICAgICAgICZleHRyYVBhcmFtcyk7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1dHRvbihHcmFwaGljc0Nv
bnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAgICBQbGF0
Zm9ybVN1cHBvcnQ6OlRoZW1lUGFydCBwYWludFBhcnQ7CiAgICAgUGxhdGZvcm1TdXBwb3J0OjpU
aGVtZVBhaW50U3RhdGUgc3RhdGUgPSBQbGF0Zm9ybVN1cHBvcnQ6OlN0YXRlTm9ybWFsOwpAQCAt
MTAyLDcgKzEwMiw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludEJ1
dHRvbihHcmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXIqIHNjCiAgICAgUGxhdGZvcm1TdXBw
b3J0OjpwYWludFRoZW1lUGFydChnYywgcGFpbnRQYXJ0LCBzdGF0ZSwgcmVjdCwgMCk7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9p
ZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0
KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCkKIHsKICAgICBQbGF0Zm9ybVN1cHBvcnQ6OlRoZW1lUGFpbnRTdGF0ZSBzdGF0ZTsKIApAQCAt
MTIwLDEyICsxMjAsMTIgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3IKICAgICAgICAgMCk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4OjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQorYm9vbCBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICByZXR1cm4gKGV2
dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9uKSB8fCAoZXZ0LmJ1dHRv
bigpID09IE1pZGRsZUJ1dHRvbik7CiB9CiAKLUludFNpemUgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1
bUxpbnV4OjpidXR0b25TaXplKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorSW50U2l6ZSBTY3JvbGxi
YXJUaGVtZUNocm9taXVtTGludXg6OmJ1dHRvblNpemUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IFZlcnRpY2Fs
U2Nyb2xsYmFyKSB7CiAgICAgICAgIEludFNpemUgc2l6ZSA9IFBsYXRmb3JtU3VwcG9ydDo6Z2V0
VGhlbWVQYXJ0U2l6ZShQbGF0Zm9ybVN1cHBvcnQ6OlBhcnRTY3JvbGxiYXJVcEFycm93KTsKQEAg
LTEzNyw3ICsxMzcsNyBAQCBJbnRTaXplIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1MaW51eDo6YnV0
dG9uU2l6ZShTY3JvbGxiYXIqIHNjcm9sbGJhcikKICAgICByZXR1cm4gSW50U2l6ZShzY3JvbGxi
YXItPndpZHRoKCkgPCAyICogc2l6ZS53aWR0aCgpID8gc2Nyb2xsYmFyLT53aWR0aCgpIC8gMiA6
IHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNo
cm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2lu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXg6Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gVmVydGljYWxTY3JvbGxiYXIpIHsKICAgICAgICAgSW50U2l6ZSBzaXplID0gUGxh
dGZvcm1TdXBwb3J0OjpnZXRUaGVtZVBhcnRTaXplKFBsYXRmb3JtU3VwcG9ydDo6UGFydFNjcm9s
bGJhclZlcnRpY2FsVGh1bWIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bUxpbnV4LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAppbmRleCA4ZTgw
MmU3MzQxYjc3NWI1OTU1YWQwZGVjMGI4ZWVkNTZmNzk3MjczLi4zMzBkMDNmYjAyMzIxMzRlYzJj
YTI5NDE5ZmRhYjI3MzQ5NDc1NGRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTGludXguaApAQCAt
MzksMTIgKzM5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBpbnQg
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKTsKIAogICAgIHByb3RlY3Rl
ZDoKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRleHQq
LCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25z
dCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRo
dW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKLSAgICAg
ICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNj
cm9sbGJhciopOwotICAgICAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRo
ZW1lQ2xpZW50Kik7CisgICAgICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOwogICAgIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1l
Q2hyb21pdW1NYWMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJh
clRoZW1lQ2hyb21pdW1NYWMuaAppbmRleCA0MWExOThlM2Y4NDIwYzg0ODk0NWZiODQ3NDRkZGI3
MDAyNGNkNmU1Li40ZDM0MjZiYjYyMDc5OWJhM2Q5MDgzYjZkYzg5NDFjYWI0NDI2ZWFlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xs
YmFyVGhlbWVDaHJvbWl1bU1hYy5oCkBAIC0zNiwxMiArMzYsMTIgQEAgcHVibGljOgogICAgIFNj
cm9sbGJhclRoZW1lQ2hyb21pdW1NYWMoKTsKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZUNo
cm9taXVtTWFjKCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2aXJ0
dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50T3ZlcmhhbmdBcmVhcyhTY3JvbGxWaWV3KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgaG9yaXpvbnRhbE92ZXJoYW5nQXJlYSwgY29uc3QgSW50UmVjdCYgdmVydGljYWxPdmVy
aGFuZ0FyZWEsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgCiBwcml2YXRlOgotICAg
IHZvaWQgcGFpbnRHaXZlblRpY2ttYXJrcyhHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBj
b25zdCBJbnRSZWN0JiwgY29uc3QgVmVjdG9yPEludFJlY3Q+Jik7CisgICAgdm9pZCBwYWludEdp
dmVuVGlja21hcmtzKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYpOwogCiAgICAgUmVmUHRyPFBhdHRl
cm4+IG1fb3ZlcmhhbmdQYXR0ZXJuOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjLm1tCmluZGV4
IDQ1OWE1OGIwNzZmNzAwNmYyNzc2NWIwMjQ5N2EwOTkzNWY4MjNmYjcuLjlmN2EzZjMwZDcxYTNk
NjM3NjQxNWQwM2VlZjkxMDU3MWZjZmJjYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hyb21pdW1NYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYy5tbQpA
QCAtNjEsMTEgKzYxLDExIEBAIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1NYWM6On5TY3JvbGxiYXJU
aGVtZUNocm9taXVtTWFjKCkKIHsKIH0KIAotc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQ
YWludFN0YXRlIHNjcm9sbGJhclN0YXRlVG9UaGVtZVN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQorc3RhdGljIFBsYXRmb3JtU3VwcG9ydDo6VGhlbWVQYWludFN0YXRlIHNjcm9sbGJhclN0YXRl
VG9UaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYg
KCFzY3JvbGxiYXItPmVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6
U3RhdGVEaXNhYmxlZDsKLSAgICBpZiAoIXNjcm9sbGJhci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNB
Y3RpdmUoKSkKKyAgICBpZiAoIXNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQog
ICAgICAgICByZXR1cm4gUGxhdGZvcm1TdXBwb3J0OjpTdGF0ZUluYWN0aXZlOwogICAgIGlmIChz
Y3JvbGxiYXItPnByZXNzZWRQYXJ0KCkgPT0gVGh1bWJQYXJ0KQogICAgICAgICByZXR1cm4gUGxh
dGZvcm1TdXBwb3J0OjpTdGF0ZVByZXNzZWQ7CkBAIC05NCwxMSArOTQsMTEgQEAgc3RhdGljIHZv
aWQgc2Nyb2xsYmFyUGFpbnRlclBhaW50VHJhY2soU2Nyb2xsYmFyUGFpbnRlciBzY3JvbGxiYXJQ
YWludGVyLCBib29sIGUKIC8vICAgICAtIGRyYXdpbmcgdXNpbmcgUGxhdGZvcm1TdXBwb3J0IGZ1
bmN0aW9ucwogLy8gICAgIC0gZHJhd2luZyB0aWNrbWFya3MKIC8vICAgICAtIFNraWEgc3BlY2lm
aWMgY2hhbmdlcwotYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0
IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgLy8gR2V0IHRoZSB0aWNrbWFya3MgZm9yIHRo
ZSBmcmFtZXZpZXcuCiAgICAgVmVjdG9yPEludFJlY3Q+IHRpY2ttYXJrczsKLSAgICBzY3JvbGxi
YXItPnNjcm9sbGFibGVBcmVhKCktPmdldFRpY2ttYXJrcyh0aWNrbWFya3MpOworICAgIHNjcm9s
bGJhci0+Z2V0VGlja21hcmtzKHRpY2ttYXJrcyk7CiAKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVy
bGF5QVBJQXZhaWxhYmxlKCkpIHsKICAgICAgICAgZmxvYXQgdmFsdWUgPSAwOwpAQCAtMTg4LDcg
KzE4OCw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bU1hYzo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogY29uCiAgICAgaWYgKCFzY3JvbGxiYXItPmVu
YWJsZWQoKSkKICAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tEaXNh
YmxlZDsKICAgICBlbHNlCi0gICAgICAgIHRyYWNrSW5mby5lbmFibGVTdGF0ZSA9IHNjcm9sbGJh
ci0+c2Nyb2xsYWJsZUFyZWEoKS0+aXNBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1Ro
ZW1lVHJhY2tJbmFjdGl2ZTsKKyAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xs
YmFyLT5pc1Njcm9sbGFibGVBcmVhQWN0aXZlKCkgPyBrVGhlbWVUcmFja0FjdGl2ZSA6IGtUaGVt
ZVRyYWNrSW5hY3RpdmU7CiAKICAgICBpZiAoIWhhc0J1dHRvbnMoc2Nyb2xsYmFyKSkKICAgICAg
ICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0ga1RoZW1lVHJhY2tOb3RoaW5nVG9TY3JvbGw7CkBA
IC0yNjMsNyArMjYzLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21h
cmtzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0
IEludFJlY3QmIHJlY3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYgdGlja21hcmtzKQordm9pZCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtTWFjOjpwYWludEdpdmVuVGlja21hcmtzKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50
UmVjdCYgcmVjdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiB0aWNrbWFya3MpCiB7CiAgICAgaWYg
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSAhPSBWZXJ0aWNhbFNjcm9sbGJhcikKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAppbmRleCBmNDM1ODM5ZDgyMTg1NjRm
ODAyNzI4ZDMyODUzMjBkMWUwY2RiYWM4Li5hMDgxOTgzNDc0OTFkY2M1ZDhmMDIyYTEyMjg4OTBk
NjU3N2ZlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9T
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2luLmNwcApAQCAtNzMsNyArNzMsNyBA
QCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJF
eGl0KCkKICAgICByZXR1cm4gd2luZG93c1ZlcnNpb24oKSA+PSBXaW5kb3dzVmlzdGE7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmln
aW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQor
Ym9vbCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdp
bihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZl
bnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGljaCB3ZSBzaG91bGRu
J3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8gaW4gYm90aCBkaW1l
bnNpb25zLgpAQCAtOTEsNyArOTEsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnNob3VsZFNuYXBCYWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhciogc2Nyb2xsYmFyLAogICAgIHJl
dHVybiAhcmVjdC5jb250YWlucyhtb3VzZVBvc2l0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJU
aGVtZUNocm9taXVtV2luOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFy
dFR5cGUpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VHJhY2tQaWVjZShH
cmFwaGljc0NvbnRleHQqIGdjLCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQogewogICAgIGJvb2wgaG9y
eiA9IHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyOwogCkBA
IC0xMTMsNyArMTEzLDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpwYWludFRy
YWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKgogICAgICAgICBhbGlnblJl
Y3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50QnV0dG9uKEdy
YXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiBy
ZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46
OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ2MsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkKIHsKICAg
ICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9s
bGJhcjsKIApAQCAtMTMxLDcgKzEzMSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdp
bjo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvCiAgICAg
ICAgIHJlY3QpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1
bWIoR3JhcGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OnBhaW50VGh1bWIoR3Jh
cGhpY3NDb250ZXh0KiBnYywgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICBib29sIGhvcnogPSBzY3JvbGxiYXItPm9yaWVudGF0aW9u
KCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKIApAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgU2Ny
b2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGdjLCBT
Y3JvbGxiYXIqIHNjcm9sCiAgICAgICAgIHJlY3QpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVD
aHJvbWl1bVdpbjo6Z2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFy
UGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1l
U3RhdGUoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0
KSBjb25zdAogewogICAgIC8vIFdoZW4gZHJhZ2dpbmcgdGhlIHRodW1iLCBkcmF3IHRodW1iIHBy
ZXNzZWQgYW5kIG90aGVyIHNlZ21lbnRzIG5vcm1hbAogICAgIC8vIHJlZ2FyZGxlc3Mgb2Ygd2hl
cmUgdGhlIGN1cnNvciBhY3R1YWxseSBpcy4gIFNlZSBhbHNvIGZvdXIgcGxhY2VzIGluCkBAIC0x
NzEsNyArMTcxLDcgQEAgaW50IFNjcm9sbGJhclRoZW1lQ2hyb21pdW1XaW46OmdldFRoZW1lU3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gKHNjcm9s
bGJhci0+cHJlc3NlZFBhcnQoKSA9PSBwYXJ0KSA/IFNDUkJTX1BSRVNTRUQgOiBTQ1JCU19OT1JN
QUw7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3Rh
dGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKK2ludCBT
Y3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRUaGVtZUFycm93U3RhdGUoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAogewogICAgIC8v
IFdlIGNvdWxkIHRha2UgYWR2YW50YWdlIG9mIGtub3dpbmcgdGhlIHZhbHVlcyBpbiB0aGUgc3Rh
dGUgZW51bSB0byB3cml0ZQogICAgIC8vIHNvbWUgc2ltcGxlciBjb2RlLCBidXQgdHJlYXRpbmcg
dGhlIHN0YXRlIGVudW0gYXMgYSBibGFjayBib3ggc2VlbXMKQEAgLTIyMSw3ICsyMjEsNyBAQCBp
bnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYQogICAgIHJldHVybiAoc2Nyb2xsYmFyLT5wcmVzc2VkUGFy
dCgpID09IHBhcnQpID8gQUJTX0RPV05QUkVTU0VEIDogQUJTX0RPV05OT1JNQUw7CiB9CiAKLWlu
dCBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0KSBjb25zdAoraW50IFNjcm9sbGJhclRo
ZW1lQ2hyb21pdW1XaW46OmdldENsYXNzaWNUaGVtZVN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCkgY29uc3QKIHsKICAgICAvLyBXaGVuIGRy
YWdnaW5nIHRoZSB0aHVtYiwgZHJhdyB0aGUgYnV0dG9ucyBub3JtYWwgZXZlbiB3aGVuIGhvdmVy
ZWQuCiAgICAgaWYgKHNjcm9sbGJhci0+cHJlc3NlZFBhcnQoKSA9PSBUaHVtYlBhcnQpCkBAIC0y
MzUsMTIgKzIzNSwxMiBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6Z2V0Q2xhc3Np
Y1RoZW1lU3RhdGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbAogICAgIHJldHVybiAoc2Ny
b2xsYmFyLT5wcmVzc2VkUGFydCgpID09IHBhcnQpID8gKERGQ1NfUFVTSEVEIHwgREZDU19GTEFU
KSA6IDA7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKK2Jvb2wg
U2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbjo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJU
aGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZ0KQogewogICAgIHJldHVy
biBldnQuc2hpZnRLZXkoKSAmJiBldnQuYnV0dG9uKCkgPT0gTGVmdEJ1dHRvbjsKIH0KIAotSW50
U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQorSW50U2l6ZSBTY3JvbGxiYXJUaGVtZUNocm9taXVtV2luOjpidXR0b25TaXplKFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgLy8gT3VyIGRlc2lyZWQgcmVj
dCBpcyBlc3NlbnRpYWxseSB0aGlja25lc3MgYnkgdGhpY2tuZXNzLgogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9taXVtV2lu
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9TY3JvbGxiYXJUaGVtZUNocm9t
aXVtV2luLmgKaW5kZXggNjljZmExMzFjNWNiMDRlOWI1MjEwYjc2NWNmYjQ4MWU4ZGRjYjEzNS4u
YWM4ODgxZjkzYjVkYjFhZmY0Njc5YTYwNjNlN2JhN2U4NmY1NTFmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vU2Nyb2xsYmFyVGhlbWVDaHJvbWl1bVdpbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Njcm9sbGJhclRoZW1lQ2hy
b21pdW1XaW4uaApAQCAtMzgsMTkgKzM4LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBw
dWJsaWM6CiAgICAgICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJD
b250cm9sU2l6ZSk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpbnZhbGlkYXRlT25Nb3VzZUVudGVy
RXhpdCgpOwotICAgICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4o
U2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCiAgICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0
dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50
QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmLCBTY3Jv
bGxiYXJQYXJ0KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgICAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
KTsKLSAgICAgICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRo
dW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Cisg
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBpbnQgZ2V0VGhlbWVTdGF0ZShTY3JvbGxiYXIqLCBT
Y3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldFRoZW1lQXJyb3dTdGF0ZShTY3Jv
bGxiYXIqLCBTY3JvbGxiYXJQYXJ0KSBjb25zdDsKLSAgICAgICAgaW50IGdldENsYXNzaWNUaGVt
ZVN0YXRlKFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpIGNvbnN0OworICAgICAgICBpbnQgZ2V0
VGhlbWVTdGF0ZShTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0Owor
ICAgICAgICBpbnQgZ2V0VGhlbWVBcnJvd1N0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Ny
b2xsYmFyUGFydCkgY29uc3Q7CisgICAgICAgIGludCBnZXRDbGFzc2ljVGhlbWVTdGF0ZShTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpIGNvbnN0OwogICAgIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Vm
bC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Ny
b2xsYmFyVGhlbWVFZmwuY3BwCmluZGV4IDYyZGYwMDVkNjc1NzFkMTRhZDM5NDM2MGQ1NmM0OThl
NGRmOTJiZmIuLjI0MGI1MDE0Nzc5YzE4MmQxNDM5MGMzZjhjMzkzNzc1NzdlOTNhODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZWZsL1Njcm9sbGJhclRoZW1lRWZsLmNwcApA
QCAtNDksMTEgKzQ5LDExIEBAIGludCBTY3JvbGxiYXJUaGVtZUVmbDo6c2Nyb2xsYmFyVGhpY2tu
ZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplIGNvbnRyb2xTaXplKQogICAgIHJldHVybiAwOyAvLyB3
ZSBwYWludCBvbiB0b3AKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6cmVnaXN0ZXJTY3Jv
bGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lRWZsOjpyZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCi12
b2lkIFNjcm9sbGJhclRoZW1lRWZsOjp1bnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Ny
b2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUVmbDo6dW5yZWdpc3RlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9lZmwvU2Nyb2xsYmFyVGhlbWVFZmwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJUaGVtZUVmbC5oCmluZGV4IDBmZTE2ODgxZTJlNDU2ZTZl
MTIzMDFhZWVmODZjMjY1YmQzMzIzNGIuLmZjNzFjYmVkODkwYTFhNjVhOWEwMmFkOGEwM2QzOGZk
Yzk5YWQzYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxi
YXJUaGVtZUVmbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2VmbC9TY3JvbGxiYXJU
aGVtZUVmbC5oCkBAIC0zOSw4ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgaW50IHNj
cm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxiYXIp
OwogCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKTsKLSAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcik7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpOworICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5jcHAKaW5kZXggZTk5
MzY0ZjJhN2ZjYWY0ODg4MzBiNDY4ZGUxZDE4YWQ3NTA0ZTkwZi4uOTRlM2ZkNzZmN2ZmYzUyMzBm
Yzg0N2ZmOWZlY2FmNDNkYzQ2ZmEwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Njcm9sbGJhclRoZW1lR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotc3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyKj4qIGdTY3JvbGxiYXJzOwor
c3RhdGljIEhhc2hTZXQ8U2Nyb2xsYmFyVGhlbWVDbGllbnQqPiogZ1Njcm9sbGJhcnM7CiAKIFNj
cm9sbGJhclRoZW1lKiBTY3JvbGxiYXJUaGVtZTo6bmF0aXZlVGhlbWUoKQogewpAQCAtNDUsMTQg
KzQ1LDE0IEBAIFNjcm9sbGJhclRoZW1lR3RrOjp+U2Nyb2xsYmFyVGhlbWVHdGsoKQogewogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpyZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNj
cm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgaWYgKCFnU2Nyb2xsYmFycykKLSAg
ICAgICAgZ1Njcm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXIqPjsKKyAgICAgICAgZ1Nj
cm9sbGJhcnMgPSBuZXcgSGFzaFNldDxTY3JvbGxiYXJUaGVtZUNsaWVudCo+OwogICAgIGdTY3Jv
bGxiYXJzLT5hZGQoc2Nyb2xsYmFyKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dW5y
ZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhl
bWVHdGs6OnVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
cikKIHsKICAgICBnU2Nyb2xsYmFycy0+cmVtb3ZlKHNjcm9sbGJhcik7CiAgICAgaWYgKGdTY3Jv
bGxiYXJzLT5pc0VtcHR5KCkpIHsKQEAgLTY5LDkgKzY5LDkgQEAgdm9pZCBTY3JvbGxiYXJUaGVt
ZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0ZyYW1lVGhpY2tuZXNzKCkKICAgICAvLyBVcGRhdGUgdGhl
IHRoaWNrbmVzcyBvZiBldmVyeSBpbnRlcmlvciBmcmFtZSBzY3JvbGxiYXIgd2lkZ2V0LiBUaGUK
ICAgICAvLyBwbGF0Zm9ybS1pbmRlcGVuZGVudCBzY3JvbGxiYXIgdGhlbSBjb2RlIGlzbid0IHll
dCBzbWFydCBlbm91Z2ggdG8gZ2V0CiAgICAgLy8gdGhpcyBpbmZvcm1hdGlvbiB3aGVuIGl0IHBh
aW50cy4KLSAgICBIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBlbmQgPSBnU2Nyb2xsYmFy
cy0+ZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNjcm9sbGJhcio+OjppdGVyYXRvciBpdCA9IGdT
Y3JvbGxiYXJzLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgU2Nyb2xsYmFy
KiBzY3JvbGxiYXIgPSAoKml0KTsKKyAgICBIYXNoU2V0PFNjcm9sbGJhclRoZW1lQ2xpZW50Kj46
Oml0ZXJhdG9yIGVuZCA9IGdTY3JvbGxiYXJzLT5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8U2Ny
b2xsYmFyVGhlbWVDbGllbnQqPjo6aXRlcmF0b3IgaXQgPSBnU2Nyb2xsYmFycy0+YmVnaW4oKTsg
aXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIgPSAoKml0KTsKIAogICAgICAgICAvLyBUb3AtbGV2ZWwgc2Nyb2xsYmFyIGkuZS4gc2Nyb2xs
YmFycyB3aG8gaGF2ZSBhIHBhcmVudCBTY3JvbGxWaWV3CiAgICAgICAgIC8vIHdpdGggbm8gcGFy
ZW50IGFyZSBuYXRpdmUsIGFuZCB0aHVzIGRvIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQuCkBAIC04
NiwxNCArODYsMTQgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlU2Nyb2xsYmFyc0Zy
YW1lVGhpY2tuZXNzKCkKICAgICB9CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVHdGs6Omhhc1Ro
dW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6aGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhv
ZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRpbWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgog
ICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4gYmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUg
dG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4gdGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7
CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJh
ciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJh
clRoZW1lR3RrOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFy
LCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCiB7CiAgICAgaWYgKHBhcnQgPT0gQmFja0J1dHRv
bkVuZFBhcnQgJiYgIW1faGFzQmFja0J1dHRvbkVuZFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRS
ZWN0KCk7CkBAIC0xMTQsNyArMTE0LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6YmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGEKICAgICBy
ZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXItPnkoKSArIHNjcm9sbGJhci0+aGVpZ2h0KCkgLSBt
X3Ryb3VnaEJvcmRlcldpZHRoIC0gKDIgKiBzaXplLmhlaWdodCgpKSwgc2l6ZS53aWR0aCgpLCBz
aXplLmhlaWdodCgpKTsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1
dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkK
K0ludFJlY3QgU2Nyb2xsYmFyVGhlbWVHdGs6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICBp
ZiAocGFydCA9PSBGb3J3YXJkQnV0dG9uU3RhcnRQYXJ0ICYmICFtX2hhc0ZvcndhcmRCdXR0b25T
dGFydFBhcnQpCiAgICAgICAgIHJldHVybiBJbnRSZWN0KCk7CkBAIC0xNDAsNyArMTQwLDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZUd0azo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdCh4LCBzY3JvbGxiYXIt
PnkoKSArIG1fdHJvdWdoQm9yZGVyV2lkdGggKyBzaXplLmhlaWdodCgpLCBzaXplLndpZHRoKCks
IHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1Jl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3Rr
Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgYm9vbCkKIHsKICAg
ICAvLyBUaGUgcGFkZGluZyBhbG9uZyB0aGUgdGh1bWIgbW92ZW1lbnQgYXhpcyBpbmNsdWRlcyB0
aGUgdHJvdWdoIGJvcmRlcgogICAgIC8vIHBsdXMgdGhlIHNpemUgb2Ygc3RlcHBlciBzcGFjaW5n
ICh0aGUgc3BhY2UgYmV0d2VlbiB0aGUgc3RlcHBlciBhbmQKQEAgLTE4MCw3ICsxODAsNyBAQCBJ
bnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0cmFja1JlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGJvb2wpCiAgICAgICAgICAgICAgICAgICAgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgp
IC0gKDIgKiBtb3ZlbWVudEF4aXNQYWRkaW5nKSAtIGJ1dHRvbnNXaWR0aCk7CiB9CiAKLUludFJl
Y3QgU2Nyb2xsYmFyVGhlbWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgdW5jb25zdHJhaW5lZFRyYWNrUmVjdCkKK0ludFJlY3QgU2Nyb2xsYmFyVGhl
bWVHdGs6OnRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB1bmNvbnN0cmFpbmVkVHJhY2tSZWN0KQogewogICAgIEludFJlY3QgdHJhY2tSZWN0
ID0gY29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNlcyhzY3JvbGxiYXIsIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwogICAgIGludCB0aHVtYlBvcyA9IHRodW1iUG9zaXRpb24oc2Nyb2xsYmFy
KTsKQEAgLTE5MSw3ICsxOTEsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lR3RrOjp0aHVtYlJl
Y3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHVuY29ucwogICAgIHJldHVy
biBJbnRSZWN0KHRyYWNrUmVjdC54KCkgKyAodHJhY2tSZWN0LndpZHRoKCkgLSBtX3RodW1iRmF0
bmVzcykgLyAyLCB0cmFja1JlY3QueSgpICsgdGh1bWJQb3MsIG1fdGh1bWJGYXRuZXNzLCB0aHVt
Ykxlbmd0aChzY3JvbGxiYXIpKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3QpCiB7CiAgICAgaWYgKGdyYXBoaWNz
Q29udGV4dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0y
NjAsNyArMjYwLDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnQoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb24KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2ZW50KQorYm9vbCBTY3JvbGxiYXJUaGVt
ZUd0azo6c2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7CiAgICAgcmV0dXJuIChldmVudC5zaGlmdEtleSgp
ICYmIGV2ZW50LmJ1dHRvbigpID09IExlZnRCdXR0b24pIHx8IChldmVudC5idXR0b24oKSA9PSBN
aWRkbGVCdXR0b24pOwogfQpAQCAtMjcwLDcgKzI3MCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZUd0
azo6c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplKQogICAgIHJldHVybiBt
X3RodW1iRmF0bmVzcyArIChtX3Ryb3VnaEJvcmRlcldpZHRoICogMik7CiB9CiAKLUludFNpemUg
U2Nyb2xsYmFyVGhlbWVHdGs6OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitJbnRT
aXplIFNjcm9sbGJhclRoZW1lR3RrOjpidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIpCiB7CiAgICAgaWYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNh
bFNjcm9sbGJhcikKICAgICAgICAgcmV0dXJuIEludFNpemUobV90aHVtYkZhdG5lc3MsIG1fc3Rl
cHBlclNpemUpOwpAQCAtMjc5LDcgKzI3OSw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVHdGs6
OmJ1dHRvblNpemUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIEludFNpemUobV9z
dGVwcGVyU2l6ZSwgbV90aHVtYkZhdG5lc3MpOwogfQogCi1pbnQgU2Nyb2xsYmFyVGhlbWVHdGs6
Om1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJU
aGVtZUd0azo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxi
YXIpCiB7CiAgICAgcmV0dXJuIG1fbWluVGh1bWJMZW5ndGg7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGsuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0ay5oCmluZGV4IDQ1ZTA5M2IxZWM5N2Qx
YWZhYTI0YzU4MzMxNTY2OTMwMmU4NWNkNjMuLmU3M2RmMjg1NTAxYjU4MjZkYzA1OWI4M2JmYzNk
OWE0MTcwZDRiYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxi
YXJUaGVtZUd0ay5oCkBAIC0zNywyOSArMzcsMjkgQEAgcHVibGljOgogICAgIFNjcm9sbGJhclRo
ZW1lR3RrKCk7CiAgICAgdmlydHVhbCB+U2Nyb2xsYmFyVGhlbWVHdGsoKTsKIAotICAgIHZpcnR1
YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tC
dXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wpOwotICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYXJ0LCBib29s
KTsKLSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wpOwotICAg
IEludFJlY3QgdGh1bWJSZWN0KFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWlu
ZWRUcmFja1JlY3QpOwotICAgIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0
KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Ci0gICAgdm9pZCBwYWludFNjcm9sbGJhckJh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKik7Ci0gICAgdm9pZCBwYWludFRy
YWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhciosIGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250
ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1l
Q2xpZW50KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwg
SW50UmVjdCBmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJh
clBhcnQsIGJvb2wpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBib29sKTsKKyAgICBJbnRSZWN0IHRodW1iUmVjdChTY3JvbGxiYXJUaGVtZUNs
aWVudCosIGNvbnN0IEludFJlY3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QpOworICAgIGJvb2wg
cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KTsKKyAgICB2b2lkIHBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25z
dCBJbnRSZWN0Jik7CisgICAgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IElu
dFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25U
aHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
ICAgIHZpcnR1YWwgaW50IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSk7
Ci0gICAgdmlydHVhbCBJbnRTaXplIGJ1dHRvblNpemUoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6
ZSBidXR0b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCBpbnQgbWlu
aW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICAgICAvLyBUT0RPOiBU
aGVzZSBhcmUgdGhlIGRlZmF1bHQgR1RLKyB2YWx1ZXMuIEF0IHNvbWUgcG9pbnQgd2Ugc2hvdWxk
IHB1bGwgdGhlc2UgZnJvbSB0aGUgdGhlbWUgaXRzZWxmLgogICAgIHZpcnR1YWwgZG91YmxlIGlu
aXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMjA7IH0KICAgICB2aXJ0dWFs
IGRvdWJsZSBhdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIDAuMDI7IH0KICAgICB2b2lk
IHVwZGF0ZVRoZW1lUHJvcGVydGllcygpOwogICAgIHZvaWQgdXBkYXRlU2Nyb2xsYmFyc0ZyYW1l
VGhpY2tuZXNzKCk7Ci0gICAgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqKTsKLSAg
ICB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdm9pZCByZWdpc3Rl
clNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZvaWQgdW5yZWdpc3RlclNj
cm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiBwcm90ZWN0ZWQ6CiAjaWZuZGVmIEdU
S19BUElfVkVSU0lPTl8yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsYmFyVGhlbWVHdGsyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3Jv
bGxiYXJUaGVtZUd0azIuY3BwCmluZGV4IDcyOWJkMTI0ZGUyYjIxODU0OTk3YjE5ODc2MzBjZGY4
OWJlYTkxMDMuLjg2NmJiOGExZDJmNzFhYTg2NGVhNTdlZDMwM2YxMzYwNzJjMWM0MjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azIuY3Bw
CkBAIC02NiwxMyArNjYsMTMgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6dXBkYXRlVGhlbWVQ
cm9wZXJ0aWVzKCkKICAgICB1cGRhdGVTY3JvbGxiYXJzRnJhbWVUaGlja25lc3MoKTsKIH0KIAot
c3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQorc3RhdGljIEd0a1dpZGdldCogZ2V0V2lkZ2V0Rm9yU2Nyb2xsYmFyKFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgUmVuZGVyVGhlbWVHdGsqIHRoZW1lID0gc3Rh
dGljX2Nhc3Q8UmVuZGVyVGhlbWVHdGsqPihSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkuZ2V0
KCkpOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gVmVydGljYWxTY3Jv
bGxiYXIgPyB0aGVtZS0+Z3RrVlNjcm9sbGJhcigpIDogdGhlbWUtPmd0a0hTY3JvbGxiYXIoKTsK
IH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYg
cmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29u
c3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAvLyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4g
SWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVycyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAg
Ly8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUgb2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZh
bHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBTY3JvbGxiYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVEFURV9BQ1RJ
VkUsIEdUS19TSEFET1dfSU4sICJ0cm91Z2giKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIEludFJlY3QgZnVsbFNjcm9sbGJhclJlY3QgPSBJbnRSZWN0
KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSwgc2Nyb2xsYmFyLT53aWR0aCgpLCBzY3Jv
bGxiYXItPmhlaWdodCgpKTsKIApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBT
Y3JvbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUQVRFX05PUk1BTCwgR1RL
X1NIQURPV19JTiwgInNjcm9sbGVkX3dpbmRvdyIpOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
R3RrOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCit2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBHdGtXaWRnZXQqIHdpZGdldCA9
IGdldFdpZGdldEZvclNjcm9sbGJhcihzY3JvbGxiYXIpOwogICAgIGdib29sZWFuIGFjdGl2YXRl
U2xpZGVyOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50
VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhCiAgICAg
d2lkZ2V0Q29udGV4dC5ndGtQYWludFNsaWRlcihzbGlkZXJSZWN0LCB3aWRnZXQsIHN0YXRlVHlw
ZSwgc2hhZG93VHlwZSwgInNsaWRlciIsIG9yaWVudGF0aW9uKTsKIH0KIAotdm9pZCBTY3JvbGxi
YXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQor
dm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0
LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7CiAgICAgLy8gVGhlIGJ1dHRvbnMgd2lsbCBiZSBkaXNh
YmxlZCBpZiB0aGUgdGh1bWIgaXMgYXMgdGhlIGFwcHJvcHJpYXRlIGV4dHJlbWUuCiAgICAgR3Rr
U2hhZG93VHlwZSBzaGFkb3dUeXBlID0gR1RLX1NIQURPV19PVVQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xsYmFyVGhlbWVHdGszLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCmluZGV4IDRjMzNlNjZk
YjhmZmVmYzNmNDIzNDZjYWQwZWVlNjdlZTZjZDQ1ZmUuLjk3NDljNTQzZjNkZGY2YjMxNWVmZmI5
OGE3NTlmZjViMDAyZDcwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9TY3JvbGxiYXJUaGVtZUd0azMuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyB2b2lkIGFw
cGx5U2Nyb2xsYmFyU3R5bGVDb250ZXh0Q2xhc3NlcyhHdGtTdHlsZUNvbnRleHQqIGNvbnRleHQs
IFNjcm9sbGJhCiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGNvbnRleHQsIG9yaWVu
dGF0aW9uID09IFZlcnRpY2FsU2Nyb2xsYmFyID8gIEdUS19TVFlMRV9DTEFTU19WRVJUSUNBTCA6
IEdUS19TVFlMRV9DTEFTU19IT1JJWk9OVEFMKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVH
dGs6OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICAv
LyBQYWludCB0aGUgdHJhY2sgYmFja2dyb3VuZC4gSWYgdGhlIHRyb3VnaC11bmRlci1zdGVwcGVy
cyBwcm9wZXJ0eSBpcyB0cnVlLCB0aGlzCiAgICAgLy8gc2hvdWxkIGJlIHRoZSBmdWxsIHNpemUg
b2YgdGhlIHNjcm9sbGJhciwgYnV0IGlmIGlzIGZhbHNlLCBpdCBzaG91bGQgb25seSBiZSB0aGUK
QEAgLTk0LDcgKzk0LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRUcmFja0JhY2tn
cm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIKICAgICBndGtfc3R5bGVf
Y29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6
OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRTY3JvbGxiYXJC
YWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhcikKIHsKICAgICBndGtfc3R5bGVfY29udGV4dF9zYXZlKG1fY29udGV4dCk7CiAK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lR3RrOjpwYWludFNjcm9sbGJh
ckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbAogICAgIGd0a19zdHls
ZV9jb250ZXh0X3Jlc3RvcmUobV9jb250ZXh0KTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBjb25zdCBJbnRSZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZUd0azo6cGFpbnRU
aHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QpCiB7CiAgICAgZ3RrX3N0eWxlX2NvbnRleHRfc2F2
ZShtX2NvbnRleHQpOwogCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZUd0
azo6cGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xs
YmEKICAgICBndGtfc3R5bGVfY29udGV4dF9yZXN0b3JlKG1fY29udGV4dCk7CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9sbGJhclBhcnQg
cGFydCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVHdGs6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewogICAgIGd0a19zdHlsZV9jb250ZXh0X3Nh
dmUobV9jb250ZXh0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1Njcm9sbGJhclRoZW1lTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMuaAppbmRleCAxM2Q0NGMyM2QzYjMzNjIzNmZiNjQwOThmYTg3MGFlYzhjN2I1
NjU4Li43N2ZiYWM5NGJjYjliMDI3NzY4ODQxYmNmZjg5ZDRjZDEwOTc5OWFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMuaApAQCAtMjYsNiAr
MjYsNyBAQAogI2lmbmRlZiBTY3JvbGxiYXJUaGVtZU1hY19oCiAjZGVmaW5lIFNjcm9sbGJhclRo
ZW1lTWFjX2gKIAorI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRo
ZW1lQ29tcG9zaXRlLmgiCiAKIHR5cGVkZWYgaWQgU2Nyb2xsYmFyUGFpbnRlcjsKQEAgLTM5LDEw
ICs0MCwxMCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHByZWZlcmVuY2VzQ2hhbmdlZCgpOwogCi0g
ICAgdmlydHVhbCB2b2lkIHVwZGF0ZUVuYWJsZWRTdGF0ZShTY3JvbGxiYXIqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKICNp
ZiAhUExBVEZPUk0oQ0hST01JVU0pCi0gICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhcios
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7Cisg
ICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkYW1hZ2VSZWN0KTsKICNlbmRpZgogCiAgICAg
dmlydHVhbCBpbnQgc2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVn
dWxhclNjcm9sbGJhcik7CkBAIC01Niw4ICs1Nyw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwg
U2Nyb2xsYmFyQnV0dG9uc1BsYWNlbWVudCBidXR0b25zUGxhY2VtZW50KCkgY29uc3Q7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7Ci0gICAgdmlydHVh
bCB2b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCB2b2lk
IHJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAogICAgIHZv
aWQgc2V0TmV3UGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIqLCBTY3JvbGxiYXJQYWludGVy
KTsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKik7
CkBAIC02NiwxOSArNjcsMTkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNldElzQ3VycmVu
dGx5RHJhd2luZ0ludG9MYXllcihib29sKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9v
bCBoYXNCdXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3Jv
bGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVu
dCopOworICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwog
Ci0gICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJh
clBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBm
YWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBh
aW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3Jv
bGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
CisgICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9
IGZhbHNlKTsKIAogICAgIHZpcnR1YWwgaW50IG1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSB7IHJl
dHVybiA0MDsgfQogCi0gICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJh
ciopOworICAgIHZpcnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCopOwogICAgIAotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwotICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxi
YXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVu
dCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogICAgIGludCBzY3JvbGxiYXJQYXJ0VG9I
SVByZXNzZWRTdGF0ZShTY3JvbGxiYXJQYXJ0KTsKIAogI2lmICFQTEFURk9STShDSFJPTUlVTSkg
JiYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBFTkFCTEUoUlVCQkVSX0JBTkRJTkcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVN
YWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0K
aW5kZXggY2M3NDgyNDU3Nzg1MjkzZDFkNTc4Yjc4MmQ4MWMyN2ZhYmIyNTkyNC4uM2I5MDIxYWRl
YTU1ZGM4YWZjZDY2YmRkZjU1NzYxMjQwOWQ5OTdhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9TY3JvbGxiYXJUaGVtZU1hYy5tbQpAQCAtNTAsNyArNTAsNyBAQCB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhh
c2hNYXA8U2Nyb2xsYmFyKiwgUmV0YWluUHRyPFNjcm9sbGJhclBhaW50ZXI+ID4gU2Nyb2xsYmFy
UGFpbnRlck1hcDsKK3R5cGVkZWYgSGFzaE1hcDxTY3JvbGxiYXJUaGVtZUNsaWVudCosIFJldGFp
blB0cjxTY3JvbGxiYXJQYWludGVyPiA+IFNjcm9sbGJhclBhaW50ZXJNYXA7CiAKIHN0YXRpYyBT
Y3JvbGxiYXJQYWludGVyTWFwKiBzY3JvbGxiYXJNYXAoKQogewpAQCAtMTYyLDcgKzE2Miw3IEBA
IHN0YXRpYyB2b2lkIHVwZGF0ZUFycm93UGxhY2VtZW50KCkKICAgICB9CiB9CiAKLXZvaWQgU2Ny
b2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFyKQor
dm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6cmVnaXN0ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVD
bGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxh
YmxlKCkpIHsKICAgICAgICAgYm9vbCBpc0hvcml6b250YWwgPSBzY3JvbGxiYXItPm9yaWVudGF0
aW9uKCkgPT0gSG9yaXpvbnRhbFNjcm9sbGJhcjsKQEAgLTE3NSwxOSArMTc1LDE5IEBAIHZvaWQg
U2Nyb2xsYmFyVGhlbWVNYWM6OnJlZ2lzdGVyU2Nyb2xsYmFyKFNjcm9sbGJhciogc2Nyb2xsYmFy
KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dW5yZWdpc3RlclNjcm9sbGJh
cihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnVucmVnaXN0
ZXJTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBzY3Jv
bGxiYXJNYXAoKS0+cmVtb3ZlKHNjcm9sbGJhcik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVN
YWM6OnNldE5ld1BhaW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhaW50ZXIgbmV3UGFpbnRlcikKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNYWM6OnNldE5ld1Bh
aW50ZXJGb3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xs
YmFyUGFpbnRlciBuZXdQYWludGVyKQogewogICAgIHNjcm9sbGJhck1hcCgpLT5zZXQoc2Nyb2xs
YmFyLCBuZXdQYWludGVyKTsKICAgICB1cGRhdGVFbmFibGVkU3RhdGUoc2Nyb2xsYmFyKTsKICAg
ICB1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoc2Nyb2xsYmFyKTsKIH0KIAotU2Nyb2xsYmFy
UGFpbnRlciBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnRlckZvclNjcm9sbGJhcihTY3JvbGxiYXIq
IHNjcm9sbGJhcikKK1Njcm9sbGJhclBhaW50ZXIgU2Nyb2xsYmFyVGhlbWVNYWM6OnBhaW50ZXJG
b3JTY3JvbGxiYXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1
cm4gc2Nyb2xsYmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpOwogfQpAQCAtMjQ4LDEwICsy
NDgsMTAgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6dXNlc092ZXJsYXlTY3JvbGxiYXJzKCkg
Y29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lTWFj
Ojp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCit2b2lk
IFNjcm9sbGJhclRoZW1lTWFjOjp1cGRhdGVTY3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBTY3JvbGxiYXJQYWludGVyIHBhaW50ZXIg
PSBwYWludGVyRm9yU2Nyb2xsYmFyKHNjcm9sbGJhcik7Ci0gICAgc3dpdGNoIChzY3JvbGxiYXIt
PnNjcm9sbGFibGVBcmVhKCktPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CisgICAgc3dpdGNo
IChzY3JvbGxiYXItPnNjcm9sbGJhck92ZXJsYXlTdHlsZSgpKSB7CiAgICAgY2FzZSBTY3JvbGxi
YXJPdmVybGF5U3R5bGVEZWZhdWx0OgogICAgICAgICBbcGFpbnRlciBzZXRLbm9iU3R5bGU6TlNT
Y3JvbGxlcktub2JTdHlsZURlZmF1bHRdOwogICAgICAgICBicmVhazsKQEAgLTI3OSw3ICsyNzks
NyBAQCBTY3JvbGxiYXJCdXR0b25zUGxhY2VtZW50IFNjcm9sbGJhclRoZW1lTWFjOjpidXR0b25z
UGxhY2VtZW50KCkgY29uc3QKICAgICByZXR1cm4gZ0J1dHRvblBsYWNlbWVudDsKIH0KIAotYm9v
bCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVNYWM6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhcikKIHsKICAgICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgYnV0dG9uc1Bs
YWNlbWVudCgpICE9IFNjcm9sbGJhckJ1dHRvbnNOb25lCiAgICAgICAgICAgICAgJiYgKHNjcm9s
bGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyCkBAIC0yODcsNyArMjg3
LDcgQEAgYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6aGFzQnV0dG9ucyhTY3JvbGxiYXIqIHNjcm9s
bGJhcikKICAgICAgICAgICAgICA6IHNjcm9sbGJhci0+aGVpZ2h0KCkpID49IDIgKiAoY1JlYWxC
dXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSAtIGNCdXR0b25IaXRJbnNldFtz
Y3JvbGxiYXItPmNvbnRyb2xTaXplKCldKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6
aGFzVGh1bWIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitib29sIFNjcm9sbGJhclRoZW1lTWFjOjpo
YXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGludCBtaW5M
ZW5ndGhGb3JUaHVtYjsKICAgICBpZiAoaXNTY3JvbGxiYXJPdmVybGF5QVBJQXZhaWxhYmxlKCkp
IHsKQEAgLTMxOSw3ICszMTksNyBAQCBzdGF0aWMgSW50UmVjdCBidXR0b25SZXBhaW50UmVjdChj
b25zdCBJbnRSZWN0JiBidXR0b25SZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlvbgogICAgIHJldHVy
biBwYWludFJlY3Q7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmJhY2tCdXR0b25S
ZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRp
bmcpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lTWFjOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wgcGFpbnRpbmcp
CiB7CiAgICAgSW50UmVjdCByZXN1bHQ7CiAgICAgCkBAIC0zNTMsNyArMzUzLDcgQEAgSW50UmVj
dCBTY3JvbGxiYXJUaGVtZU1hYzo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IFNjcm9sbGJhclBhcnQgcGEKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0IFNjcm9s
bGJhclRoZW1lTWFjOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1h
Yzo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Ny
b2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0Owog
ICAgIApAQCAtMzkzLDcgKzM5Myw3IEBAIEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OmZvcndh
cmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1hYzo6dHJhY2tSZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVt
ZU1hYzo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wgcGFp
bnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNCdXR0b25zKHNjcm9sbGJhcikpCiAg
ICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpAQCAtNDMwLDcgKzQzMCw3IEBA
IEludFJlY3QgU2Nyb2xsYmFyVGhlbWVNYWM6OnRyYWNrUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJh
ciwgYm9vbCBwYWludGluZykKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwgc2Ny
b2xsYmFyLT55KCkgKyBzdGFydFdpZHRoLCB0aGlja25lc3MsIHNjcm9sbGJhci0+aGVpZ2h0KCkg
LSB0b3RhbFdpZHRoKTsKIH0KIAotaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhlbWVNYWM6Om1pbmlt
dW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIGlm
IChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFpbGFibGUoKSkKICAgICAgICAgcmV0dXJuIFtzY3Jv
bGxiYXJNYXAoKS0+Z2V0KHNjcm9sbGJhcikuZ2V0KCkga25vYk1pbkxlbmd0aF07CkBAIC00Mzgs
NyArNDM4LDcgQEAgaW50IFNjcm9sbGJhclRoZW1lTWFjOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgICAgIHJldHVybiBjVGh1bWJNaW5MZW5ndGhbc2Nyb2xs
YmFyLT5jb250cm9sU2l6ZSgpXTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6c2hvdWxk
Q2VudGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkK
K2Jvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICBpZiAoZXZ0
LmJ1dHRvbigpICE9IExlZnRCdXR0b24pCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ0Nyw3
ICs0NDcsNyBAQCBib29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGRDZW50ZXJPblRodW1iKFNj
cm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudAogICAgIHJldHVybiBldnQuYWx0S2V5
KCk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVNYWM6OnNob3VsZERyYWdEb2N1bWVudEluc3Rl
YWRPZlRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiti
b29sIFNjcm9sbGJhclRoZW1lTWFjOjpzaG91bGREcmFnRG9jdW1lbnRJbnN0ZWFkT2ZUaHVtYihT
Y3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7
CiAgICAgcmV0dXJuIGV2ZW50LmFsdEtleSgpOwogfQpAQCAtNDcwLDcgKzQ3MCw3IEBAIGludCBT
Y3JvbGxiYXJUaGVtZU1hYzo6c2Nyb2xsYmFyUGFydFRvSElQcmVzc2VkU3RhdGUoU2Nyb2xsYmFy
UGFydCBwYXJ0KQogICAgIH0KIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6dXBkYXRlRW5h
YmxlZFN0YXRlKFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBTY3JvbGxiYXJUaGVtZU1hYzo6
dXBkYXRlRW5hYmxlZFN0YXRlKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpCiB7CiAg
ICAgaWYgKGlzU2Nyb2xsYmFyT3ZlcmxheUFQSUF2YWlsYWJsZSgpKQogICAgICAgICBbc2Nyb2xs
YmFyTWFwKCktPmdldChzY3JvbGxiYXIpLmdldCgpIHNldEVuYWJsZWQ6c2Nyb2xsYmFyLT5lbmFi
bGVkKCldOwpAQCAtNDk5LDcgKzQ5OSw3IEBAIHN0YXRpYyB2b2lkIHNjcm9sbGJhclBhaW50ZXJQ
YWludChTY3JvbGxiYXJQYWludGVyIHNjcm9sbGJhclBhaW50ZXIsIGJvb2wgZW5hYmxlCiB9CiAK
ICNpZiAhUExBVEZPUk0oQ0hST01JVU0pCi1ib29sIFNjcm9sbGJhclRoZW1lTWFjOjpwYWludChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRS
ZWN0JiBkYW1hZ2VSZWN0KQorYm9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFy
VGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJ
bnRSZWN0JiBkYW1hZ2VSZWN0KQogewogICAgIGlmIChpc1Njcm9sbGJhck92ZXJsYXlBUElBdmFp
bGFibGUoKSkgewogICAgICAgICBmbG9hdCB2YWx1ZSA9IDA7CkBAIC01NzAsNyArNTcwLDcgQEAg
Ym9vbCBTY3JvbGxiYXJUaGVtZU1hYzo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY28KICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgpKQog
ICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBrVGhlbWVUcmFja0Rpc2FibGVkOwogICAg
IGVsc2UKLSAgICAgICAgdHJhY2tJbmZvLmVuYWJsZVN0YXRlID0gc2Nyb2xsYmFyLT5zY3JvbGxh
YmxlQXJlYSgpLT5pc0FjdGl2ZSgpID8ga1RoZW1lVHJhY2tBY3RpdmUgOiBrVGhlbWVUcmFja0lu
YWN0aXZlOworICAgICAgICB0cmFja0luZm8uZW5hYmxlU3RhdGUgPSBzY3JvbGxiYXItPmlzU2Ny
b2xsYWJsZUFyZWFBY3RpdmUoKSA/IGtUaGVtZVRyYWNrQWN0aXZlIDoga1RoZW1lVHJhY2tJbmFj
dGl2ZTsKIAogICAgIGlmIChoYXNUaHVtYihzY3JvbGxiYXIpKQogICAgICAgICB0cmFja0luZm8u
YXR0cmlidXRlcyB8PSBrVGhlbWVUcmFja1Nob3dUaHVtYjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcAppbmRleCA1ZDJiYzNlYzA4
OTc4ZTAzNzM3ZmJhNzM5NWI4YjhjZTc0NjBkNDY0Li42ZGU5MWNjYjgxOTIxMDQwYzA4NDc4YzFl
ZTU2NzdkZGU0Mzc0OTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2Nr
L1Njcm9sbGJhclRoZW1lTW9jay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9TY3JvbGxiYXJUaGVtZU1vY2suY3BwCkBAIC0zMiw3ICszMiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGludCBjU2Nyb2xsYmFyVGhpY2tuZXNzW10gPSB7IDE1LCAxMSB9Owog
Ci1JbnRSZWN0IFNjcm9sbGJhclRoZW1lTW9jazo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZU1vY2s6OnRyYWNrUmVjdChTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBib29sKQogewogICAgIHJldHVybiBzY3JvbGxiYXIt
PmZyYW1lUmVjdCgpOwogfQpAQCAtNDIsMTIgKzQyLDEyIEBAIGludCBTY3JvbGxiYXJUaGVtZU1v
Y2s6OnNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSBjb250cm9sU2l6ZSkK
ICAgICByZXR1cm4gY1Njcm9sbGJhclRoaWNrbmVzc1tjb250cm9sU2l6ZV07CiB9CiAKLXZvaWQg
U2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lTW9jazo6cGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJ
bnRSZWN0JiB0cmFja1JlY3QpCiB7CiAgICAgY29udGV4dC0+ZmlsbFJlY3QodHJhY2tSZWN0LCBz
Y3JvbGxiYXItPmVuYWJsZWQoKSA/IENvbG9yOjpsaWdodEdyYXkgOiBDb2xvcigweEZGRTBFMEUw
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpw
YWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IEludFJlY3QmIHRodW1iUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVNb2NrOjpwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogewogICAgIGlmIChzY3JvbGxiYXIt
PmVuYWJsZWQoKSkKICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QodGh1bWJSZWN0LCBDb2xvcjo6
ZGFya0dyYXksIENvbG9yU3BhY2VEZXZpY2VSR0IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbW9jay9TY3JvbGxiYXJUaGVtZU1vY2suaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svU2Nyb2xsYmFyVGhlbWVNb2NrLmgKaW5kZXggZTI1NDg0MjJhMjhmNWU3MjNl
NDM1M2Y4ZjQ1NzY1MjUzY2I2ODViYi4uNjMzMzg0MWFiNzk2YjlkYzIzM2YzZjYzZWI4MDBhYmZh
N2IwYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9TY3JvbGxi
YXJUaGVtZU1vY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL1Njcm9sbGJh
clRoZW1lTW9jay5oCkBAIC0zNiwxNSArMzYsMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50
IHNjcm9sbGJhclRoaWNrbmVzcyhTY3JvbGxiYXJDb250cm9sU2l6ZSA9IFJlZ3VsYXJTY3JvbGxi
YXIpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFy
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFy
KikgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJh
clRoZW1lQ2xpZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1
bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCAv
KnBhaW50aW5nKi8gPSBmYWxzZSkgeyByZXR1cm4gSW50UmVjdCgpOyB9Ci0gICAgdmlydHVhbCBJ
bnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wg
LypwYWludGluZyovID0gZmFsc2UpIHsgcmV0dXJuIEludFJlY3QoKTsgfQotICAgIHZpcnR1YWwg
SW50UmVjdCB0cmFja1JlY3QoU2Nyb2xsYmFyKiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAg
ICB2aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJldHVybiBJbnRSZWN0
KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhl
bWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29sIC8qcGFpbnRpbmcqLyA9IGZhbHNlKSB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KKyAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJh
clRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKICAgICAKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwg
Y29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRodW1iKEdyYXBoaWNzQ29u
dGV4dCosIFNjcm9sbGJhciosIGNvbnN0IEludFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
LCBjb25zdCBJbnRSZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBw
cml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc01vY2tUaGVtZSgpIGNvbnN0IHsgcmV0dXJuIHRy
dWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRo
ZW1lUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5j
cHAKaW5kZXggZTMyNDNlY2ZhODk3OWI5YTY4MWUxNTliZGVlOWE5YjE1OWM2NzQzYy4uZDRiNThi
MWIwZTVhZjE3MGY5NmVmODM2NGI2OWI0ODRhMzYyMjI1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCBz
dGF0aWMgU2Nyb2xsYmFyUGFydCBzY3JvbGxiYXJQYXJ0KGNvbnN0IFFTdHlsZTo6U3ViQ29udHJv
bCYgc2MpCiAgICAgcmV0dXJuIE5vUGFydDsKIH0KIAotc3RhdGljIFFTdHlsZU9wdGlvblNsaWRl
ciogc3R5bGVPcHRpb25TbGlkZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGdl
dCA9IDApCitzdGF0aWMgUVN0eWxlT3B0aW9uU2xpZGVyKiBzdHlsZU9wdGlvblNsaWRlcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBRV2lkZ2V0KiB3aWRnZXQgPSAwKQogewogICAg
IHN0YXRpYyBRU3R5bGVPcHRpb25TbGlkZXIgb3B0OwogICAgIGlmICh3aWRnZXQpCkBAIC0xNTUs
NyArMTU1LDcgQEAgc3RhdGljIFFTdHlsZU9wdGlvblNsaWRlciogc3R5bGVPcHRpb25TbGlkZXIo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIFFXaWRnZXQqIHdpZGcKICAgICByZXR1cm4gJm9wdDsKIH0K
IAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpwYWludChTY3JvbGxiYXIqIHNjcm9sbGJhciwgR3Jh
cGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0IEludFJlY3QmIGRhbWFnZVJlY3Qp
Citib29sIFNjcm9sbGJhclRoZW1lUXQ6OnBhaW50KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBJbnRSZWN0JiBk
YW1hZ2VSZWN0KQogewogICAgIGlmIChncmFwaGljc0NvbnRleHQtPnVwZGF0aW5nQ29udHJvbFRp
bnRzKCkpIHsKICAgICAgICBzY3JvbGxiYXItPmludmFsaWRhdGVSZWN0KGRhbWFnZVJlY3QpOwpA
QCAtMTkzLDcgKzE5Myw3IEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVRdDo6cGFpbnQoU2Nyb2xsYmFy
KiBzY3JvbGxiYXIsIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLVNjcm9sbGJhclBhcnQgU2Nyb2xsYmFyVGhlbWVRdDo6aGl0VGVzdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitTY3JvbGxiYXJQ
YXJ0IFNjcm9sbGJhclRoZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgUVN0eWxlT3B0aW9u
U2xpZGVyKiBvcHQgPSBzdHlsZU9wdGlvblNsaWRlcihzY3JvbGxiYXIpOwogICAgIGNvbnN0IFFQ
b2ludCBwb3MgPSBzY3JvbGxiYXItPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhldnQucG9z
aXRpb24oKSk7CkBAIC0yMDIsMTMgKzIwMiwxMyBAQCBTY3JvbGxiYXJQYXJ0IFNjcm9sbGJhclRo
ZW1lUXQ6OmhpdFRlc3QoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IFBsYXRmb3JtTW91cwog
ICAgIHJldHVybiBzY3JvbGxiYXJQYXJ0KHNjKTsKIH0KIAotYm9vbCBTY3JvbGxiYXJUaGVtZVF0
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYgZXZ0KQorYm9vbCBTY3JvbGxiYXJUaGVtZVF0OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9s
bGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAg
Ly8gTWlkZGxlIGNsaWNrIGNlbnRlcnMgc2xpZGVyIHRodW1iIChpZiBzdXBwb3J0ZWQpLgogICAg
IHJldHVybiBzdHlsZSgpLT5zdHlsZUhpbnQoUVN0eWxlOjpTSF9TY3JvbGxCYXJfTWlkZGxlQ2xp
Y2tBYnNvbHV0ZVBvc2l0aW9uKSAmJiBldnQuYnV0dG9uKCkgPT0gTWlkZGxlQnV0dG9uOwogfQog
Ci12b2lkIFNjcm9sbGJhclRoZW1lUXQ6OmludmFsaWRhdGVQYXJ0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVF0OjppbnZhbGlkYXRlUGFy
dChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0KQogewogICAg
IC8vIEZJWE1FOiBEbyBtb3JlIHByZWNpc2UgaW52YWxpZGF0aW9uLgogICAgIHNjcm9sbGJhci0+
aW52YWxpZGF0ZSgpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGludCBTY3JvbGxiYXJUaGVtZVF0Ojpz
Y3JvbGxiYXJUaGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAg
cmV0dXJuIHN0eWxlKCktPnBpeGVsTWV0cmljKFFTdHlsZTo6UE1fU2Nyb2xsQmFyRXh0ZW50LCAm
bywgMCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYlBvc2l0aW9uKFNjcm9sbGJh
ciogc2Nyb2xsYmFyKQoraW50IFNjcm9sbGJhclRoZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICBpZiAoc2Nyb2xsYmFyLT5lbmFibGVk
KCkpIHsKICAgICAgICAgZmxvYXQgcG9zID0gKGZsb2F0KXNjcm9sbGJhci0+Y3VycmVudFBvcygp
ICogKHRyYWNrTGVuZ3RoKHNjcm9sbGJhcikgLSB0aHVtYkxlbmd0aChzY3JvbGxiYXIpKSAvIHNj
cm9sbGJhci0+bWF4aW11bSgpOwpAQCAtMjMzLDIxICsyMzMsMjEgQEAgaW50IFNjcm9sbGJhclRo
ZW1lUXQ6OnRodW1iUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiAgICAgcmV0dXJuIDA7
CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNs
aWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVP
cHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRodW1iID0gc3R5bGUoKS0+c3Vi
Q29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxC
YXJTbGlkZXIsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9y
aXpvbnRhbFNjcm9sbGJhciA/IHRodW1iLndpZHRoKCkgOiB0aHVtYi5oZWlnaHQoKTsKIH0KIAot
aW50IFNjcm9sbGJhclRoZW1lUXQ6OnRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyKiBzY3JvbGxiYXIp
CitpbnQgU2Nyb2xsYmFyVGhlbWVRdDo6dHJhY2tQb3NpdGlvbihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRlciogb3B0ID0gc3R5bGVPcHRp
b25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNrID0gc3R5bGUoKS0+c3ViQ29u
dHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0eWxlOjpTQ19TY3JvbGxCYXJH
cm9vdmUsIDApOwogICAgIHJldHVybiBzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkgPT0gSG9yaXpv
bnRhbFNjcm9sbGJhciA/IHRyYWNrLngoKSAtIHNjcm9sbGJhci0+eCgpIDogdHJhY2sueSgpIC0g
c2Nyb2xsYmFyLT55KCk7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChT
Y3JvbGxiYXIqIHNjcm9sbGJhcikKK2ludCBTY3JvbGxiYXJUaGVtZVF0Ojp0cmFja0xlbmd0aChT
Y3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIFFTdHlsZU9wdGlvblNsaWRl
ciogb3B0ID0gc3R5bGVPcHRpb25TbGlkZXIoc2Nyb2xsYmFyKTsKICAgICBJbnRSZWN0IHRyYWNr
ID0gc3R5bGUoKS0+c3ViQ29udHJvbFJlY3QoUVN0eWxlOjpDQ19TY3JvbGxCYXIsIG9wdCwgUVN0
eWxlOjpTQ19TY3JvbGxCYXJHcm9vdmUsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vcXQvU2Nyb2xsYmFyVGhlbWVRdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
cXQvU2Nyb2xsYmFyVGhlbWVRdC5oCmluZGV4IGNmNDg4MmRhMjAzYmJmMGZiN2NjNjllN2MzZTFj
MWZmZGQ4MWY1ZWIuLjAzMzdiZjgwY2NmNjQ2ZDE4ZThmMDdjNGZlNWFjYmEzYWE5OTUyMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3F0L1Njcm9sbGJhclRoZW1lUXQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9xdC9TY3JvbGxiYXJUaGVtZVF0LmgKQEAgLTQw
LDE5ICs0MCwxOSBAQCBjbGFzcyBTY3JvbGxiYXJUaGVtZVF0IDogcHVibGljIFNjcm9sbGJhclRo
ZW1lIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVF0KCk7CiAKLSAgICB2
aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50
UmVjdCYgZGFtYWdlUmVjdCk7CisgICAgdmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhclRoZW1l
Q2xpZW50KiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgSW50UmVjdCYgZGFtYWdlUmVjdCk7CiAg
ICAgdmlydHVhbCB2b2lkIHBhaW50U2Nyb2xsQ29ybmVyKFNjcm9sbFZpZXcqLCBHcmFwaGljc0Nv
bnRleHQqLCBjb25zdCBJbnRSZWN0JiBjb3JuZXJSZWN0KTsKIAotICAgIHZpcnR1YWwgU2Nyb2xs
YmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwor
ICAgIHZpcnR1YWwgU2Nyb2xsYmFyUGFydCBoaXRUZXN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqLCBjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVyT25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwogCi0gICAgdmlydHVhbCB2b2lkIGludmFsaWRhdGVQ
YXJ0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBpbnZhbGlk
YXRlUGFydChTY3JvbGxiYXJUaGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQpOwogCi0gICAgdmly
dHVhbCBpbnQgdGh1bWJQb3NpdGlvbihTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0aHVt
Ykxlbmd0aChTY3JvbGxiYXIqKTsKLSAgICB2aXJ0dWFsIGludCB0cmFja1Bvc2l0aW9uKFNjcm9s
bGJhciopOwotICAgIHZpcnR1YWwgaW50IHRyYWNrTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZp
cnR1YWwgaW50IHRodW1iUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0
dWFsIGludCB0aHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOworICAgIHZpcnR1YWwg
aW50IHRyYWNrUG9zaXRpb24oU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKKyAgICB2aXJ0dWFsIGlu
dCB0cmFja0xlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCiAgICAgdmlydHVhbCBpbnQg
c2Nyb2xsYmFyVGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJh
cik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJU
aGVtZVNhZmFyaS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhl
bWVTYWZhcmkuY3BwCmluZGV4IDM0M2JiYjI4MGVkNmFmODQ4ZjUxY2MwMGVkOThmMzFmN2UxN2Uy
NDguLjFjYzUzODVlMTg3YTIyZWFmMWIwNTVlMzRiZTBmZjY0Mzg5MjliM2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmNwcApA
QCAtMTA0LDE0ICsxMDQsMTQgQEAgaW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzY3JvbGxiYXJU
aGlja25lc3MoU2Nyb2xsYmFyQ29udHJvbFNpemUgY29udHJvbFNpemUpCiAgICAgcmV0dXJuIGNT
Y3JvbGxiYXJUaGlja25lc3NbY29udHJvbFNpemVdOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1l
U2FmYXJpOjpoYXNCdXR0b25zKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJU
aGVtZVNhZmFyaTo6aGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQog
ewogICAgIHJldHVybiBzY3JvbGxiYXItPmVuYWJsZWQoKSAmJiAoc2Nyb2xsYmFyLT5vcmllbnRh
dGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIgPyAKICAgICAgICAgICAgICBzY3JvbGxiYXIt
PndpZHRoKCkgOiAKICAgICAgICAgICAgICBzY3JvbGxiYXItPmhlaWdodCgpKSA+PSAyICogKGNS
ZWFsQnV0dG9uTGVuZ3RoW3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV0gLSBjQnV0dG9uSGl0SW5z
ZXRbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBTY3JvbGxiYXJUaGVt
ZVNhZmFyaTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAg
ICByZXR1cm4gc2Nyb2xsYmFyLT5lbmFibGVkKCkgJiYgKHNjcm9sbGJhci0+b3JpZW50YXRpb24o
KSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gCiAgICAgICAgICAgICAgc2Nyb2xsYmFyLT53aWR0
aCgpIDogCkBAIC0xMzQsNyArMTM0LDcgQEAgc3RhdGljIEludFJlY3QgYnV0dG9uUmVwYWludFJl
Y3QoY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Nyb2xsYmFyT3JpZW50YXRpb24KICAgICBy
ZXR1cm4gcGFpbnRSZWN0OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpiYWNr
QnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
IHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3Qo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29s
IHBhaW50aW5nKQogewogICAgIEludFJlY3QgcmVzdWx0OwogCkBAIC0xNTIsNyArMTUyLDcgQEAg
SW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1JbnRSZWN0
IFNjcm9sbGJhclRoZW1lU2FmYXJpOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9s
bGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVNhZmFyaTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sIHBhaW50aW5nKQogewogICAgIEludFJl
Y3QgcmVzdWx0OwogICAgIApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyBJbnRSZWN0IHRyYWNr
UmVwYWludFJlY3QoY29uc3QgSW50UmVjdCYgdHJhY2tSZWN0LCBTY3JvbGxiYXJPcmllbnRhdGlv
biBvCiAgICAgcmV0dXJuIHBhaW50UmVjdDsKIH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNh
ZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQorSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIsIGJvb2wgcGFpbnRpbmcpCiB7CiAgICAgaWYgKHBhaW50aW5nIHx8ICFoYXNC
dXR0b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgp
OwpAQCAtMTkzLDM2ICsxOTMsMzYgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6dHJh
Y2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sIHBhaW50aW5nKQogICAgIHJldHVybiBJ
bnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIGNCdXR0b25MZW5ndGhbc2Ny
b2xsYmFyLT5jb250cm9sU2l6ZSgpXSwgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0g
MiAqIGNCdXR0b25MZW5ndGhbc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpXSk7CiB9CiAKLWludCBT
Y3JvbGxiYXJUaGVtZVNhZmFyaTo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciogc2Nyb2xs
YmFyKQoraW50IFNjcm9sbGJhclRoZW1lU2FmYXJpOjptaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICByZXR1cm4gY1RodW1iTWluTGVuZ3Ro
W3Njcm9sbGJhci0+Y29udHJvbFNpemUoKV07CiB9CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVTYWZh
cmk6OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCiB7
CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5idXR0b24oKSA9PSBMZWZ0QnV0dG9u
OwogfQogCi12b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludFRyYWNrQmFja2dyb3VuZChH
cmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNv
bnN0IEludFJlY3QmIHRyYWNrUmVjdCkKK3ZvaWQgU2Nyb2xsYmFyVGhlbWVTYWZhcmk6OnBhaW50
VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBTY3JvbGxi
YXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0cmFja1JlY3QpCiB7CiAg
ICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwogICAgIE5TQ29u
dHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFsbFNjcm9sbGJh
ciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwogICAgIFRoZW1l
Q29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3JvbGxhYmxlQXJl
YSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJsZUFyZWFBY3Rp
dmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhhc0J1dHRvbnMo
c2Nyb2xsYmFyKSkKICAgICAgICAgc3RhdGUgfD0gRW5hYmxlZFN0YXRlOwogICAgIHBhaW50VGhl
bWVQYXJ0KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBWZXJ0aWNhbFNjcm9sbGJhciA/IFZT
Y3JvbGxUcmFja1BhcnQgOiBIU2Nyb2xsVHJhY2tQYXJ0LCBncmFwaGljc0NvbnRleHQtPnBsYXRm
b3JtQ29udGV4dCgpLCB0cmFja1JlY3QsIHNpemUsIHN0YXRlKTsgCiB9CiAKLXZvaWQgU2Nyb2xs
YmFyVGhlbWVTYWZhcmk6OnBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250
ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgYnV0dG9uUmVjdCwgU2Ny
b2xsYmFyUGFydCBwYXJ0KQordm9pZCBTY3JvbGxiYXJUaGVtZVNhZmFyaTo6cGFpbnRCdXR0b24o
R3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBz
Y3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIGJ1dHRvblJlY3QsIFNjcm9sbGJhclBhcnQgcGFydCkK
IHsKICAgICBpZiAoIVNhZmFyaVRoZW1lTGlicmFyeSgpKQogICAgICAgICByZXR1cm47CiAgICAg
TlNDb250cm9sU2l6ZSBzaXplID0gc2Nyb2xsYmFyLT5jb250cm9sU2l6ZSgpID09IFNtYWxsU2Ny
b2xsYmFyID8gTlNTbWFsbENvbnRyb2xTaXplIDogTlNSZWd1bGFyQ29udHJvbFNpemU7CiAgICAg
VGhlbWVDb250cm9sU3RhdGUgc3RhdGUgPSAwOwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFi
bGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAgaWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJl
YUFjdGl2ZSgpKQogICAgICAgICBzdGF0ZSB8PSBBY3RpdmVTdGF0ZTsKICAgICBpZiAoaGFzQnV0
dG9ucyhzY3JvbGxiYXIpKQogICAgICAgICBzdGF0ZSB8PSBFbmFibGVkU3RhdGU7CkBAIC0yMzYs
MTMgKzIzNiwxMyBAQCB2b2lkIFNjcm9sbGJhclRoZW1lU2FmYXJpOjpwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgU2Nyb2xsYgogICAgICAgICAgICAgICAgICAg
ICAgICBidXR0b25SZWN0LCBzaXplLCBzdGF0ZSk7CiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVT
YWZhcmk6OnBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIFNjcm9s
bGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJlY3QpCit2b2lkIFNjcm9sbGJh
clRoZW1lU2FmYXJpOjpwYWludFRodW1iKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0
LCBTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB0aHVtYlJl
Y3QpCiB7CiAgICAgaWYgKCFTYWZhcmlUaGVtZUxpYnJhcnkoKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIE5TQ29udHJvbFNpemUgc2l6ZSA9IHNjcm9sbGJhci0+Y29udHJvbFNpemUoKSA9PSBTbWFs
bFNjcm9sbGJhciA/IE5TU21hbGxDb250cm9sU2l6ZSA6IE5TUmVndWxhckNvbnRyb2xTaXplOwog
ICAgIFRoZW1lQ29udHJvbFN0YXRlIHN0YXRlID0gMDsKLSAgICBpZiAoc2Nyb2xsYmFyLT5zY3Jv
bGxhYmxlQXJlYSgpLT5pc0FjdGl2ZSgpKQorICAgIGlmIChzY3JvbGxiYXItPmlzU2Nyb2xsYWJs
ZUFyZWFBY3RpdmUoKSkKICAgICAgICAgc3RhdGUgfD0gQWN0aXZlU3RhdGU7CiAgICAgaWYgKGhh
c1RodW1iKHNjcm9sbGJhcikpCiAgICAgICAgIHN0YXRlIHw9IEVuYWJsZWRTdGF0ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxiYXJUaGVtZVNhZmFyaS5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKaW5k
ZXggZjAzOTM3OWVhNDQ3MDhlOGI1Yjc1Zjk2MDU1MzJmZTExZDYyNjU5Mi4uZjQyN2IxOTBmZDY3
NjY1MjE1Njc1NjZjYjZjYmM0ZGZlNDNkOTkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lU2FmYXJpLmgKQEAgLTQxLDIwICs0MSwyMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQ29udHJvbFRpbnRzKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCBib29sIGhhc0J1dHRvbnMo
U2Nyb2xsYmFyKik7Ci0gICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhciopOworICAg
IHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFs
IEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBw
YWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3Qo
U2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2
aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxz
ZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFs
IEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxi
YXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFj
a1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0g
ICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhciopOworICAgIHZpcnR1
YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogICAgIAot
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhciosIGNvbnN0IFBs
YXRmb3JtTW91c2VFdmVudCYpOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1i
KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CiAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihH
cmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFy
dCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xs
YmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dy
b3VuZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJl
Y3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAg
dmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqLCBjb25zdCBJbnRSZWN0Jik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmNwcAppbmRleCBkMzYzNDEwNjg0ODdmZjFi
Nzg2OTc2OGU5ZDVmNmIyZjQ4OTgxYWE1Li41NjQ0Mjk3ZDdmMjcwYzUwYzdhMjhlZjNiMWUyNGFj
ZjFkMTI3OWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xs
YmFyVGhlbWVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JvbGxi
YXJUaGVtZVdpbi5jcHAKQEAgLTEzMCwxMiArMTMwLDEyIEBAIGJvb2wgU2Nyb2xsYmFyVGhlbWVX
aW46OmludmFsaWRhdGVPbk1vdXNlRW50ZXJFeGl0KCkKICAgICByZXR1cm4gcnVubmluZ1Zpc3Rh
OwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9s
bGJhcikKK2Jvb2wgU2Nyb2xsYmFyVGhlbWVXaW46Omhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xp
ZW50KiBzY3JvbGxiYXIpCiB7CiAgICAgcmV0dXJuIHRodW1iTGVuZ3RoKHNjcm9sbGJhcikgPiAw
OwogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxi
YXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQorSW50UmVjdCBTY3JvbGxi
YXJUaGVtZVdpbjo6YmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgU2Nyb2xsYmFyUGFydCBwYXJ0LCBib29sKQogewogICAgIC8vIFdpbmRvd3MganVzdCBoYXMg
c2luZ2xlIGFycm93cy4KICAgICBpZiAocGFydCA9PSBCYWNrQnV0dG9uRW5kUGFydCkKQEAgLTE1
NCw3ICsxNTQsNyBAQCBJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpiYWNrQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYQogICAgICAgICAgICAgICAgICAg
IHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSA8IDIgKiB0aGlja25lc3MgPyBzY3JvbGxi
YXItPmhlaWdodCgpIC8gMiA6IHRoaWNrbmVzcyk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFyVGhl
bWVXaW46OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQ
YXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV2luOjpmb3J3YXJkQnV0dG9u
UmVjdChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQs
IGJvb2wpCiB7CiAgICAgLy8gV2luZG93cyBqdXN0IGhhcyBzaW5nbGUgYXJyb3dzLgogICAgIGlm
IChwYXJ0ID09IEZvcndhcmRCdXR0b25TdGFydFBhcnQpCkBAIC0xNzUsNyArMTc1LDcgQEAgSW50
UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQKICAgICByZXR1cm4gSW50UmVjdChzY3JvbGxiYXItPngoKSwg
c2Nyb2xsYmFyLT55KCkgKyBzY3JvbGxiYXItPmhlaWdodCgpIC0gaCwgdGhpY2tuZXNzLCBoKTsK
IH0KIAotSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBTY3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9s
bGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaW50IHRoaWNrbmVzcyA9
IHNjcm9sbGJhclRoaWNrbmVzcygpOwogICAgIGlmIChzY3JvbGxiYXItPm9yaWVudGF0aW9uKCkg
PT0gSG9yaXpvbnRhbFNjcm9sbGJhcikgewpAQCAtMTg4LDEyICsxODgsMTIgQEAgSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVdpbjo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQog
ICAgIHJldHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRoaWNr
bmVzcywgdGhpY2tuZXNzLCBzY3JvbGxiYXItPmhlaWdodCgpIC0gMiAqIHRoaWNrbmVzcyk7CiB9
CiAKLWJvb2wgU2Nyb2xsYmFyVGhlbWVXaW46OnNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFy
KiwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2lu
OjpzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCiB7CiAgICAgcmV0dXJuIGV2dC5zaGlmdEtleSgpICYmIGV2dC5i
dXR0b24oKSA9PSBMZWZ0QnV0dG9uOwogfQogCi1ib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91
bGRTbmFwQmFja1RvRHJhZ09yaWdpbihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZv
cm1Nb3VzZUV2ZW50JiBldnQpCitib29sIFNjcm9sbGJhclRoZW1lV2luOjpzaG91bGRTbmFwQmFj
a1RvRHJhZ09yaWdpbihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0
Zm9ybU1vdXNlRXZlbnQmIGV2dCkKIHsKICAgICAvLyBGaW5kIHRoZSByZWN0IHdpdGhpbiB3aGlj
aCB3ZSBzaG91bGRuJ3Qgc25hcCwgYnkgZXhwYW5kaW5nIHRoZSB0cmFjayByZWN0CiAgICAgLy8g
aW4gYm90aCBkaW1lbnNpb25zLgpAQCAtMjExLDE0ICsyMTEsMTQgQEAgYm9vbCBTY3JvbGxiYXJU
aGVtZVdpbjo6c2hvdWxkU25hcEJhY2tUb0RyYWdPcmlnaW4oU2Nyb2xsYmFyKiBzY3JvbGxiYXIs
IGNvbnN0IFAKICAgICByZXR1cm4gIXJlY3QuY29udGFpbnMobW91c2VQb3NpdGlvbik7CiB9CiAK
LXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29u
dGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3Qp
Cit2b2lkIFNjcm9sbGJhclRoZW1lV2luOjpwYWludFRyYWNrQmFja2dyb3VuZChHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgLy8gSnVzdCBhc3N1bWUgYSBmb3J3YXJkIHRyYWNrIHBhcnQu
ICBXZSBvbmx5IHBhaW50IHRoZSB0cmFjayBhcyBhIHNpbmdsZSBwaWVjZSB3aGVuIHRoZXJlIGlz
IG5vIHRodW1iLgogICAgIGlmICghaGFzVGh1bWIoc2Nyb2xsYmFyKSkKICAgICAgICAgcGFpbnRU
cmFja1BpZWNlKGNvbnRleHQsIHNjcm9sbGJhciwgcmVjdCwgRm9yd2FyZFRyYWNrUGFydCk7CiB9
CiAKLXZvaWQgU2Nyb2xsYmFyVGhlbWVXaW46OnBhaW50VHJhY2tQaWVjZShHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBT
Y3JvbGxiYXJQYXJ0IHBhcnRUeXBlKQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFj
a1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNj
cm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0VHlwZSkKIHsK
ICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBAIC0yNzYsNyArMjc2LDcgQEAg
dm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgU2Nyb2xsYmFyKiBzY3IKICNlbmRpZgogfQogCi12b2lkIFNjcm9sbGJhclRoZW1l
V2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCit2b2lkIFNj
cm9sbGJhclRoZW1lV2luOjpwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJlY3QmIHJlY3QsIFNjcm9s
bGJhclBhcnQgcGFydCkKIHsKICAgICBjaGVja0FuZEluaXRTY3JvbGxiYXJUaGVtZSgpOwogCkBA
IC0zMzksNyArMzM5LDcgQEAgc3RhdGljIEludFJlY3QgZ3JpcHBlclJlY3QoaW50IHRoaWNrbmVz
cywgY29uc3QgSW50UmVjdCYgdGh1bWJSZWN0KQogICAgICAgICAgICAgICAgICAgIGdyaXBwZXJU
aGlja25lc3MsIGdyaXBwZXJUaGlja25lc3MpOwogfQogCi1zdGF0aWMgdm9pZCBwYWludEdyaXBw
ZXIoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEhEQyBoZGMsIGNvbnN0IEludFJlY3QmIHJlY3QpCitz
dGF0aWMgdm9pZCBwYWludEdyaXBwZXIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwg
SERDIGhkYywgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICBpZiAoIXNjcm9sbGJhclRoZW1l
KQogICAgICAgICByZXR1cm47ICAvLyBDbGFzc2ljIGxvb2sgaGFzIG5vIGdyaXBwZXIuCkBAIC0z
NTgsNyArMzU4LDcgQEAgc3RhdGljIHZvaWQgcGFpbnRHcmlwcGVyKFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBIREMgaGRjLCBjb25zdCBJbnRSZWN0JiByZWN0KQogICAgIERyYXdUaGVtZUJhY2tncm91
bmQoc2Nyb2xsYmFyVGhlbWUsIGhkYywgc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6
b250YWxTY3JvbGxiYXIgPyBTUF9HUklQUEVSSE9SIDogU1BfR1JJUFBFUlZFUlQsIHN0YXRlLCAm
dGhlbWVSZWN0LCAwKTsKIH0KIAotdm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiByZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVdpbjo6cGFpbnRUaHVtYihHcmFwaGljc0Nv
bnRleHQqIGNvbnRleHQsIFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IElu
dFJlY3QmIHJlY3QpCiB7CiAgICAgY2hlY2tBbmRJbml0U2Nyb2xsYmFyVGhlbWUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Njcm9sbGJhclRoZW1lV2luLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAppbmRleCBj
ZDJmMTc2ZGZkYzk3MzgyYzM1YmI3NzNmOWIxZThkYWQyMTI3NmI2Li44NzAyNDBjMTY1NThjZjBm
NjI1NzQxOTZlZWI2OWFhYTgwNmE3YTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vU2Nyb2xsYmFyVGhlbWVXaW4uaApAQCAtNDIsMjAgKzQyLDIwIEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgaW52YWxpZGF0ZU9uTW91c2VFbnRlckV4aXQoKTsKIAogcHJvdGVjdGVk
OgotICAgIHZpcnR1YWwgYm9vbCBoYXNCdXR0b25zKFNjcm9sbGJhciopIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyKik7CisgICAgdmlydHVhbCBi
b29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKSB7IHJldHVybiB0cnVlOyB9Cisg
ICAgdmlydHVhbCBib29sIGhhc1RodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2
aXJ0dWFsIEludFJlY3QgYmFja0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwg
Ym9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRv
blJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsK
LSAgICB2aXJ0dWFsIEludFJlY3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcg
PSBmYWxzZSk7CisgICAgdmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRo
ZW1lQ2xpZW50KiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2
aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBT
Y3JvbGxiYXJQYXJ0LCBib29sIHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVj
dCB0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2Up
OwogCi0gICAgdmlydHVhbCBib29sIHNob3VsZENlbnRlck9uVGh1bWIoU2Nyb2xsYmFyKiwgY29u
c3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBCYWNr
VG9EcmFnT3JpZ2luKFNjcm9sbGJhciosIGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOworICAg
IHZpcnR1YWwgYm9vbCBzaG91bGRDZW50ZXJPblRodW1iKFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
Y29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgdmlydHVhbCBib29sIHNob3VsZFNuYXBC
YWNrVG9EcmFnT3JpZ2luKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgUGxhdGZvcm1Nb3Vz
ZUV2ZW50Jik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja0JhY2tncm91bmQoR3JhcGhp
Y3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50
UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFw
aGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7
Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
KiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrQmFja2dyb3Vu
ZChHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNvbnN0IEludFJlY3Qm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCosIFNj
cm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVt
ZUNsaWVudCosIGNvbnN0IEludFJlY3QmLCBTY3JvbGxiYXJQYXJ0KTsKKyAgICB2aXJ0dWFsIHZv
aWQgcGFpbnRUaHVtYihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXJUaGVtZUNsaWVudCosIGNv
bnN0IEludFJlY3QmKTsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3d4L1Njcm9sbGJhclRoZW1lV3guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gv
U2Nyb2xsYmFyVGhlbWVXeC5jcHAKaW5kZXggYzkyNDk3OGE1MDVhYzMxZjE0MDUxZTMwMTgzMzA2
NDI1MTNjNGE1MS4uYmFkZjMxNTU0MDVhNmE1MTM2NjIzMjViOTIzNTlkYzgxM2E5NTI0MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5jcHAKQEAg
LTcxLDE5ICs3MSwxOSBAQCBpbnQgU2Nyb2xsYmFyVGhlbWVXeDo6c2Nyb2xsYmFyVGhpY2tuZXNz
KFNjcm9sbGJhckNvbnRyb2xTaXplIHNpemUpCiAgICAgcmV0dXJuIHRoaWNrbmVzczsKIH0KIAot
Ym9vbCBTY3JvbGxiYXJUaGVtZVd4OjpoYXNUaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhcikKK2Jv
b2wgU2Nyb2xsYmFyVGhlbWVXeDo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9s
bGJhcikKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBqdXN0IGNhbGxlZCBhcyBhIHBhaW50LXRp
bWUgb3B0aW1pemF0aW9uIHRvIHNlZSBpZgogICAgIC8vIHBhaW50aW5nIHRoZSB0aHVtYiBjYW4g
YmUgc2tpcHBlZC4gIFdlIGRvbid0IGhhdmUgdG8gYmUgZXhhY3QgaGVyZS4KICAgICByZXR1cm4g
dGh1bWJMZW5ndGgoc2Nyb2xsYmFyKSA+IDA7CiB9CiAKLWludCBTY3JvbGxiYXJUaGVtZVd4Ojpt
aW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgU2Nyb2xsYmFyVGhl
bWVXeDo6bWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIp
CiB7CiAgICAgcmV0dXJuIDIwOwogfQogCi1JbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRv
blNpemUoU2Nyb2xsYmFyKikgCitJbnRTaXplIFNjcm9sbGJhclRoZW1lV3g6OmJ1dHRvblNpemUo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqKSAKIHsKICNpZmRlZiBfX1dYTUFDX18KICAgICByZXR1cm4g
SW50U2l6ZSgyMCwyMCk7CkBAIC05Miw3ICs5Miw3IEBAIEludFNpemUgU2Nyb2xsYmFyVGhlbWVX
eDo6YnV0dG9uU2l6ZShTY3JvbGxiYXIqKQogI2VuZGlmCiB9CiAKLXZvaWQgU2Nyb2xsYmFyVGhl
bWVXeDo6c3BsaXRUcmFjayhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgdW5j
b25zdHJhaW5lZFRyYWNrUmVjdCwgSW50UmVjdCYgYmVmb3JlVGh1bWJSZWN0LCBJbnRSZWN0JiB0
aHVtYlJlY3QsIEludFJlY3QmIGFmdGVyVGh1bWJSZWN0KQordm9pZCBTY3JvbGxiYXJUaGVtZVd4
OjpzcGxpdFRyYWNrKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHVuY29uc3RyYWluZWRUcmFja1JlY3QsIEludFJlY3QmIGJlZm9yZVRodW1iUmVjdCwgSW50
UmVjdCYgdGh1bWJSZWN0LCBJbnRSZWN0JiBhZnRlclRodW1iUmVjdCkKIHsKICAgICBTY3JvbGxi
YXJUaGVtZUNvbXBvc2l0ZTo6c3BsaXRUcmFjayhzY3JvbGxiYXIsIHVuY29uc3RyYWluZWRUcmFj
a1JlY3QsIGJlZm9yZVRodW1iUmVjdCwgdGh1bWJSZWN0LCBhZnRlclRodW1iUmVjdCk7CiAjaWZk
ZWYgX19XWE1BQ19fCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBTY3JvbGxiYXJUaGVtZVd4Ojpz
cGxpdFRyYWNrKFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiB1bmNvbnN0cmEK
ICNlbmRpZgogfQogCi1JbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNj
cm9sbGJhciogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNj
cm9sbGJhclRoZW1lV3g6OmJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3Jv
bGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxp
bmcgdGhpcyBjYXNlIGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBi
dXR0b25zCiAgICAgLy8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0
b20uCkBAIC0xMzAsNyArMTMwLDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4OjpiYWNrQnV0
dG9uUmVjdChTY3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydCBwYXIKICAgICByZXR1
cm4gSW50UmVjdCh4LCB5LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwogfQogCi1JbnRS
ZWN0IFNjcm9sbGJhclRoZW1lV3g6OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhciogc2Nyb2xs
YmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnQsIGJvb2wpCitJbnRSZWN0IFNjcm9sbGJhclRoZW1lV3g6
OmZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIFNjcm9s
bGJhclBhcnQgcGFydCwgYm9vbCkKIHsKICAgICAvLyBGSVhNRTogSGFuZGxpbmcgdGhpcyBjYXNl
IGlzIG5lZWRlZCB3aGVuIHRoZXJlIGFyZSB0d28gc2V0cyBvZiBhcnJvdyBidXR0b25zCiAgICAg
Ly8gb24gTWFjLCBvbmUgYXQgdGhlIHRvcCBhbmQgb25lIGF0IHRoZSBib3R0b20uCkBAIC0xNTUs
NyArMTU1LDcgQEAgSW50UmVjdCBTY3JvbGxiYXJUaGVtZVd4Ojpmb3J3YXJkQnV0dG9uUmVjdChT
Y3JvbGxiYXIqIHNjcm9sbGJhciwgU2Nyb2xsYmFyUGFydAogICAgIHJldHVybiBJbnRSZWN0KHgs
IHksIHNpemUud2lkdGgoKSwgc2l6ZS5oZWlnaHQoKSk7CiB9CiAKLUludFJlY3QgU2Nyb2xsYmFy
VGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQorSW50UmVjdCBT
Y3JvbGxiYXJUaGVtZVd4Ojp0cmFja1JlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJh
ciwgYm9vbCkKIHsKICAgICBJbnRTaXplIGJzID0gYnV0dG9uU2l6ZShzY3JvbGxiYXIpOwogICAg
IGludCB0cmFja1N0YXJ0ID0gMDsKQEAgLTE3OSwxMSArMTc5LDExIEBAIEludFJlY3QgU2Nyb2xs
YmFyVGhlbWVXeDo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Nyb2xsYmFyLCBib29sKQogICAgIHJl
dHVybiBJbnRSZWN0KHNjcm9sbGJhci0+eCgpLCBzY3JvbGxiYXItPnkoKSArIHRyYWNrU3RhcnQs
IHRoaWNrbmVzcywgc2Nyb2xsYmFyLT5oZWlnaHQoKSAtIDIgKiBicy5oZWlnaHQoKSk7CiB9CiAK
LWJvb2wgU2Nyb2xsYmFyVGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgSW50UmVjdCYgcmVjdCkKK2Jvb2wgU2Nyb2xsYmFy
VGhlbWVXeDo6cGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHd4T3JpZW50YXRp
b24gb3JpZW50YXRpb24gPSAoc2Nyb2xsYmFyLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxT
Y3JvbGxiYXIpID8gd3hIT1JJWk9OVEFMIDogd3hWRVJUSUNBTDsKICAgICBpbnQgZmxhZ3MgPSAw
OwotICAgIGlmIChzY3JvbGxiYXItPnNjcm9sbGFibGVBcmVhKCktPmlzQWN0aXZlKCkpCisgICAg
aWYgKHNjcm9sbGJhci0+aXNTY3JvbGxhYmxlQXJlYUFjdGl2ZSgpKQogICAgICAgICBmbGFncyB8
PSB3eENPTlRST0xfRk9DVVNFRDsKICAgICAKICAgICBpZiAoIXNjcm9sbGJhci0+ZW5hYmxlZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVX
eC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd3gvU2Nyb2xsYmFyVGhlbWVXeC5oCmluZGV4
IDc1YWIxNzVhM2JhNjA0ZmNkNzk1YWQyZWE0NWVkZmNmNTgzZWU1NTguLjM3MmFhZjk2NjJmNzQ1
ZDRlZTA3NDdlZGY1YzExZjlmYzVhZDg5NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3d4L1Njcm9sbGJhclRoZW1lV3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93eC9TY3JvbGxiYXJUaGVtZVd4LmgKQEAgLTM1LDIxICszNSwyMSBAQCBjbGFzcyBTY3JvbGxi
YXJUaGVtZVd4IDogcHVibGljIFNjcm9sbGJhclRoZW1lQ29tcG9zaXRlIHsKIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIH5TY3JvbGxiYXJUaGVtZVd4KCk7CiAgICAgdmlydHVhbCBpbnQgc2Nyb2xsYmFy
VGhpY2tuZXNzKFNjcm9sbGJhckNvbnRyb2xTaXplID0gUmVndWxhclNjcm9sbGJhcik7Ci0gICAg
dmlydHVhbCBib29sIHBhaW50KFNjcm9sbGJhciosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IElu
dFJlY3QmKTsKKyAgICB2aXJ0dWFsIGJvb2wgcGFpbnQoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBH
cmFwaGljc0NvbnRleHQqLCBjb25zdCBJbnRSZWN0Jik7CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAg
dmlydHVhbCBib29sIGhhc0J1dHRvbnMoU2Nyb2xsYmFyKikgeyByZXR1cm4gdHJ1ZTsgfQotICAg
IHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFz
QnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopIHsgcmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZpcnR1YWwg
SW50U2l6ZSBidXR0b25TaXplKFNjcm9sbGJhciopOworICAgIHZpcnR1YWwgSW50U2l6ZSBidXR0
b25TaXplKFNjcm9sbGJhclRoZW1lQ2xpZW50Kik7CiAKLSAgICB2aXJ0dWFsIEludFJlY3QgYmFj
a0J1dHRvblJlY3QoU2Nyb2xsYmFyKiwgU2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZh
bHNlKTsKLSAgICB2aXJ0dWFsIEludFJlY3QgZm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyKiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKLSAgICB2aXJ0dWFsIEludFJl
Y3QgdHJhY2tSZWN0KFNjcm9sbGJhciosIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAgdmly
dHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgU2Nyb2xs
YmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJlY3QgZm9y
d2FyZEJ1dHRvblJlY3QoU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBTY3JvbGxiYXJQYXJ0LCBib29s
IHBhaW50aW5nID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCB0cmFja1JlY3QoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqLCBib29sIHBhaW50aW5nID0gZmFsc2UpOwogCi0gICAgdmlydHVhbCB2
b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYgdHJhY2ssIEludFJlY3Qm
IHN0YXJ0VHJhY2ssIEludFJlY3QmIHRodW1iLCBJbnRSZWN0JiBlbmRUcmFjayk7CisgICAgdmly
dHVhbCB2b2lkIHNwbGl0VHJhY2soU2Nyb2xsYmFyVGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0
JiB0cmFjaywgSW50UmVjdCYgc3RhcnRUcmFjaywgSW50UmVjdCYgdGh1bWIsIEludFJlY3QmIGVu
ZFRyYWNrKTsKICAgICAKLSAgICB2aXJ0dWFsIGludCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xs
YmFyKik7CisgICAgdmlydHVhbCBpbnQgbWluaW11bVRodW1iTGVuZ3RoKFNjcm9sbGJhclRoZW1l
Q2xpZW50Kik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU2Nyb2xsYmFyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyLmgKaW5kZXggODEwYzk4ZmYzNjY4YWI5MWNkZTljMzU3MThkNmYwNGIyZjc0NjcxYi4uN2Zl
MmZhYzhiOGQ0OTc1NGQ4ZWFiMjNkNDA1YjE2MmJlMzNkYzdiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXIuaApAQCAtODUsNyArODUsNyBAQCBwcml2YXRlOgog
ICAgIEhhc2hNYXA8dW5zaWduZWQsIFJlbmRlclNjcm9sbGJhclBhcnQqPiBtX3BhcnRzOwogfTsK
IAotaW5saW5lIFJlbmRlclNjcm9sbGJhciogdG9SZW5kZXJTY3JvbGxiYXIoU2Nyb2xsYmFyKiBz
Y3JvbGxiYXIpCitpbmxpbmUgUmVuZGVyU2Nyb2xsYmFyKiB0b1JlbmRlclNjcm9sbGJhcihTY3Jv
bGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAgIEFTU0VSVCghc2Nyb2xsYmFyIHx8
IHNjcm9sbGJhci0+aXNDdXN0b21TY3JvbGxiYXIoKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFJlbmRlclNjcm9sbGJhcio+KHNjcm9sbGJhcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmNwcAppbmRleCA4NzMwOWQ0NGU1YWE0NTI2OTc5
YWZlYmU1MTI3OGI0ZTQ2YTVlOTE3Li40NjkzN2Y5OGYwZTMxMmZiZDNjYzhlZWVjY2ExMmUyOGU5
MDIxZDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU2Nyb2xs
YmFyVGhlbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxi
YXJUaGVtZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgUmVuZGVyU2Nyb2xsYmFyVGhlbWUqIFJlbmRl
clNjcm9sbGJhclRoZW1lOjpyZW5kZXJTY3JvbGxiYXJUaGVtZSgpCiAgICAgcmV0dXJuICZ0aGVt
ZTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YnV0dG9uU2l6ZXNBbG9uZ1RyYWNr
QXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFmdGVyU2l6
ZSkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxvbmdUcmFja0F4aXMo
U2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgaW50JiBiZWZvcmVTaXplLCBpbnQmIGFm
dGVyU2l6ZSkKIHsKICAgICBJbnRSZWN0IGZpcnN0QnV0dG9uID0gYmFja0J1dHRvblJlY3Qoc2Ny
b2xsYmFyLCBCYWNrQnV0dG9uU3RhcnRQYXJ0KTsKICAgICBJbnRSZWN0IHNlY29uZEJ1dHRvbiA9
IGZvcndhcmRCdXR0b25SZWN0KHNjcm9sbGJhciwgRm9yd2FyZEJ1dHRvblN0YXJ0UGFydCk7CkBA
IC01MSw3ICs1MSw3IEBAIHZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OmJ1dHRvblNpemVzQWxv
bmdUcmFja0F4aXMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGludCYKICAgICB9CiB9CiAKLWJvb2wg
UmVuZGVyU2Nyb2xsYmFyVGhlbWU6Omhhc0J1dHRvbnMoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCiti
b29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNjcm9sbGJhclRoZW1lQ2xpZW50
KiBzY3JvbGxiYXIpCiB7CiAgICAgaW50IHN0YXJ0U2l6ZTsKICAgICBpbnQgZW5kU2l6ZTsKQEAg
LTU5LDI3ICs1OSwyNyBAQCBib29sIFJlbmRlclNjcm9sbGJhclRoZW1lOjpoYXNCdXR0b25zKFNj
cm9sbGJhciogc2Nyb2xsYmFyKQogICAgIHJldHVybiAoc3RhcnRTaXplICsgZW5kU2l6ZSkgPD0g
KHNjcm9sbGJhci0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFyID8gc2Nyb2xs
YmFyLT53aWR0aCgpIDogc2Nyb2xsYmFyLT5oZWlnaHQoKSk7CiB9CiAKLWJvb2wgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6Omhhc1RodW1iKFNjcm9sbGJhciogc2Nyb2xsYmFyKQorYm9vbCBSZW5kZXJT
Y3JvbGxiYXJUaGVtZTo6aGFzVGh1bWIoU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikK
IHsKICAgICByZXR1cm4gdHJhY2tMZW5ndGgoc2Nyb2xsYmFyKSAtIHRodW1iTGVuZ3RoKHNjcm9s
bGJhcikgPj0gMDsKIH0KIAotaW50IFJlbmRlclNjcm9sbGJhclRoZW1lOjptaW5pbXVtVGh1bWJM
ZW5ndGgoU2Nyb2xsYmFyKiBzY3JvbGxiYXIpCitpbnQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6Om1p
bmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyKQogewogICAg
IHJldHVybiB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5taW5pbXVtVGh1bWJMZW5ndGgo
KTsKIH0KIAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6YmFja0J1dHRvblJlY3QoU2Ny
b2xsYmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0
IFJlbmRlclNjcm9sbGJhclRoZW1lOjpiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVy
biB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Zm9yd2FyZEJ1dHRvblJlY3QoU2Nyb2xs
YmFyKiBzY3JvbGxiYXIsIFNjcm9sbGJhclBhcnQgcGFydFR5cGUsIGJvb2wpCitJbnRSZWN0IFJl
bmRlclNjcm9sbGJhclRoZW1lOjpmb3J3YXJkQnV0dG9uUmVjdChTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBTY3JvbGxiYXJQYXJ0IHBhcnRUeXBlLCBib29sKQogewogICAgIHJldHVy
biB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5idXR0b25SZWN0KHBhcnRUeXBlKTsKIH0K
IAotSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNjcm9sbGJhciogc2Ny
b2xsYmFyLCBib29sKQorSW50UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6dHJhY2tSZWN0KFNj
cm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGJvb2wpCiB7CiAgICAgaWYgKCFoYXNCdXR0
b25zKHNjcm9sbGJhcikpCiAgICAgICAgIHJldHVybiBzY3JvbGxiYXItPmZyYW1lUmVjdCgpOwpA
QCAtOTEsNyArOTEsNyBAQCBJbnRSZWN0IFJlbmRlclNjcm9sbGJhclRoZW1lOjp0cmFja1JlY3Qo
U2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGJvb2wpCiAgICAgcmV0dXJuIHRvUmVuZGVyU2Nyb2xsYmFy
KHNjcm9sbGJhciktPnRyYWNrUmVjdChzdGFydExlbmd0aCwgZW5kTGVuZ3RoKTsKIH0KIAotSW50
UmVjdCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6Y29uc3RyYWluVHJhY2tSZWN0VG9UcmFja1BpZWNl
cyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKK0ludFJlY3QgUmVu
ZGVyU2Nyb2xsYmFyVGhlbWU6OmNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQaWVjZXMoU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsgCiAgICAg
SW50UmVjdCBiYWNrUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGll
Y2VSZWN0V2l0aE1hcmdpbnMoQmFja1RyYWNrUGFydCwgcmVjdCk7CiAgICAgSW50UmVjdCBmb3J3
YXJkUmVjdCA9IHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnRyYWNrUGllY2VSZWN0V2l0
aE1hcmdpbnMoRm9yd2FyZFRyYWNrUGFydCwgcmVjdCk7CkBAIC0xMTIsMjcgKzExMiwyNyBAQCB2
b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFNjcm9sbENvcm5lcihTY3JvbGxWaWV3Kiwg
R3JhcGhpY3NDb250ZXh0KiBjb250ZQogICAgIGNvbnRleHQtPmZpbGxSZWN0KGNvcm5lclJlY3Qs
IENvbG9yOjp3aGl0ZSwgQ29sb3JTcGFjZURldmljZVJHQik7CiB9CiAKLXZvaWQgUmVuZGVyU2Ny
b2xsYmFyVGhlbWU6OnBhaW50U2Nyb2xsYmFyQmFja2dyb3VuZChHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIFNjcm9sbGJhciogc2Nyb2xsYmFyKQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xs
YmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhcikKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3Jv
bGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgU2Nyb2xsYmFyQkdQYXJ0LCBzY3JvbGxiYXItPmZy
YW1lUmVjdCgpKTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRUcmFja0Jh
Y2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgcmVjdCkKK3ZvaWQgUmVuZGVyU2Nyb2xsYmFyVGhlbWU6OnBhaW50VHJh
Y2tCYWNrZ3JvdW5kKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGll
bnQqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9s
bGJhcihzY3JvbGxiYXIpLT5wYWludFBhcnQoY29udGV4dCwgVHJhY2tCR1BhcnQsIHJlY3QpOwog
fQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRyYWNrUGllY2UoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVj
dCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRU
cmFja1BpZWNlKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQq
IHNjcm9sbGJhciwgY29uc3QgSW50UmVjdCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQogewog
ICAgIHRvUmVuZGVyU2Nyb2xsYmFyKHNjcm9sbGJhciktPnBhaW50UGFydChjb250ZXh0LCBwYXJ0
LCByZWN0KTsKIH0KIAotdm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6cGFpbnRCdXR0b24oR3Jh
cGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgSW50UmVj
dCYgcmVjdCwgU2Nyb2xsYmFyUGFydCBwYXJ0KQordm9pZCBSZW5kZXJTY3JvbGxiYXJUaGVtZTo6
cGFpbnRCdXR0b24oR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyLCBjb25zdCBJbnRSZWN0JiByZWN0LCBTY3JvbGxiYXJQYXJ0IHBhcnQpCiB7
CiAgICAgdG9SZW5kZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKS0+cGFpbnRQYXJ0KGNvbnRleHQsIHBh
cnQsIHJlY3QpOwogfQogCi12b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyKiBzY3JvbGxiYXIsIGNvbnN0IEludFJl
Y3QmIHJlY3QpCit2b2lkIFJlbmRlclNjcm9sbGJhclRoZW1lOjpwYWludFRodW1iKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCwgU2Nyb2xsYmFyVGhlbWVDbGllbnQqIHNjcm9sbGJhciwgY29uc3Qg
SW50UmVjdCYgcmVjdCkKIHsKICAgICB0b1JlbmRlclNjcm9sbGJhcihzY3JvbGxiYXIpLT5wYWlu
dFBhcnQoY29udGV4dCwgVGh1bWJQYXJ0LCByZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclNjcm9sbGJhclRoZW1lLmgKaW5kZXggNzBjMjRhNWVhMmVkNzliYjlm
OGZhZDAyMTM3YzYzNTY5ZDk5NjNjNC4uZWM5MmJkYzkzOTNhY2M2ZjJkYTZhMTc0Zjc3YjlmM2Vh
MTQxZmU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9s
bGJhclRoZW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNjcm9sbGJh
clRoZW1lLmgKQEAgLTQ2LDM1ICs0NiwzNSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRTY3JvbGxDb3JuZXIoU2Nyb2xsVmlldyosIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgSW50UmVjdCYgY29ybmVyUmVjdCk7CiAKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2Vu
dGVyT25UaHVtYihTY3JvbGxiYXIqIHNjcm9sbGJhciwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBldmVudCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnNob3VsZENlbnRlck9u
VGh1bWIoc2Nyb2xsYmFyLCBldmVudCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQ2VudGVy
T25UaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCogc2Nyb2xsYmFyLCBjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmIGV2ZW50KSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+c2hvdWxk
Q2VudGVyT25UaHVtYihzY3JvbGxiYXIsIGV2ZW50KTsgfQogICAgIAogICAgIHZpcnR1YWwgZG91
YmxlIGluaXRpYWxBdXRvc2Nyb2xsVGltZXJEZWxheSgpIHsgcmV0dXJuIFNjcm9sbGJhclRoZW1l
Ojp0aGVtZSgpLT5pbml0aWFsQXV0b3Njcm9sbFRpbWVyRGVsYXkoKTsgfQogICAgIHZpcnR1YWwg
ZG91YmxlIGF1dG9zY3JvbGxUaW1lckRlbGF5KCkgeyByZXR1cm4gU2Nyb2xsYmFyVGhlbWU6OnRo
ZW1lKCktPmF1dG9zY3JvbGxUaW1lckRlbGF5KCk7IH0KIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4gU2Nyb2xsYmFyVGhl
bWU6OnRoZW1lKCktPnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXIqIHNjcm9sbGJhcikgeyByZXR1cm4g
U2Nyb2xsYmFyVGhlbWU6OnRoZW1lKCktPnVucmVnaXN0ZXJTY3JvbGxiYXIoc2Nyb2xsYmFyKTsg
fQorICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlclNjcm9sbGJhcihTY3JvbGxiYXJUaGVtZUNsaWVu
dCogc2Nyb2xsYmFyKSB7IHJldHVybiBTY3JvbGxiYXJUaGVtZTo6dGhlbWUoKS0+cmVnaXN0ZXJT
Y3JvbGxiYXIoc2Nyb2xsYmFyKTsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyU2Nyb2xs
YmFyKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIpIHsgcmV0dXJuIFNjcm9sbGJhclRo
ZW1lOjp0aGVtZSgpLT51bnJlZ2lzdGVyU2Nyb2xsYmFyKHNjcm9sbGJhcik7IH0KIAotICAgIHZp
cnR1YWwgaW50IG1pbmltdW1UaHVtYkxlbmd0aChTY3JvbGxiYXIqKTsKKyAgICB2aXJ0dWFsIGlu
dCBtaW5pbXVtVGh1bWJMZW5ndGgoU2Nyb2xsYmFyVGhlbWVDbGllbnQqKTsKIAotICAgIHZvaWQg
YnV0dG9uU2l6ZXNBbG9uZ1RyYWNrQXhpcyhTY3JvbGxiYXIqIHNjcm9sbGJhciwgaW50JiBiZWZv
cmVTaXplLCBpbnQmIGFmdGVyU2l6ZSk7CisgICAgdm9pZCBidXR0b25TaXplc0Fsb25nVHJhY2tB
eGlzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiBzY3JvbGxiYXIsIGludCYgYmVmb3JlU2l6ZSwgaW50
JiBhZnRlclNpemUpOwogICAgIAogICAgIHN0YXRpYyBSZW5kZXJTY3JvbGxiYXJUaGVtZSogcmVu
ZGVyU2Nyb2xsYmFyVGhlbWUoKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgYm9vbCBoYXNC
dXR0b25zKFNjcm9sbGJhciopOwotICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXIq
KTsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzQnV0dG9ucyhTY3JvbGxiYXJUaGVtZUNsaWVudCopOwor
ICAgIHZpcnR1YWwgYm9vbCBoYXNUaHVtYihTY3JvbGxiYXJUaGVtZUNsaWVudCopOwogCi0gICAg
dmlydHVhbCBJbnRSZWN0IGJhY2tCdXR0b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQs
IGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7Ci0gICAgdmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0
b25SZWN0KFNjcm9sbGJhciosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7
Ci0gICAgdmlydHVhbCBJbnRSZWN0IHRyYWNrUmVjdChTY3JvbGxiYXIqLCBib29sIHBhaW50aW5n
ID0gZmFsc2UpOworICAgIHZpcnR1YWwgSW50UmVjdCBiYWNrQnV0dG9uUmVjdChTY3JvbGxiYXJU
aGVtZUNsaWVudCosIFNjcm9sbGJhclBhcnQsIGJvb2wgcGFpbnRpbmcgPSBmYWxzZSk7CisgICAg
dmlydHVhbCBJbnRSZWN0IGZvcndhcmRCdXR0b25SZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50Kiwg
U2Nyb2xsYmFyUGFydCwgYm9vbCBwYWludGluZyA9IGZhbHNlKTsKKyAgICB2aXJ0dWFsIEludFJl
Y3QgdHJhY2tSZWN0KFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgYm9vbCBwYWludGluZyA9IGZhbHNl
KTsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRTY3JvbGxiYXJCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhciopOyAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUcmFj
a0JhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYp
OwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Ny
b2xsYmFyKiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOwotICAgIHZpcnR1YWwgdm9p
ZCBwYWludEJ1dHRvbihHcmFwaGljc0NvbnRleHQqLCBTY3JvbGxiYXIqLCBjb25zdCBJbnRSZWN0
JiwgU2Nyb2xsYmFyUGFydCk7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VGh1bWIoR3JhcGhpY3ND
b250ZXh0KiwgU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludFNjcm9sbGJhckJhY2tncm91bmQoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFyVGhlbWVD
bGllbnQqKTsgICAgCisgICAgdmlydHVhbCB2b2lkIHBhaW50VHJhY2tCYWNrZ3JvdW5kKEdyYXBo
aWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50UmVjdCYpOworICAg
IHZpcnR1YWwgdm9pZCBwYWludFRyYWNrUGllY2UoR3JhcGhpY3NDb250ZXh0KiwgU2Nyb2xsYmFy
VGhlbWVDbGllbnQqLCBjb25zdCBJbnRSZWN0JiwgU2Nyb2xsYmFyUGFydCk7CisgICAgdmlydHVh
bCB2b2lkIHBhaW50QnV0dG9uKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50
KiwgY29uc3QgSW50UmVjdCYsIFNjcm9sbGJhclBhcnQpOworICAgIHZpcnR1YWwgdm9pZCBwYWlu
dFRodW1iKEdyYXBoaWNzQ29udGV4dCosIFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29uc3QgSW50
UmVjdCYpOwogCi0gICAgdmlydHVhbCBJbnRSZWN0IGNvbnN0cmFpblRyYWNrUmVjdFRvVHJhY2tQ
aWVjZXMoU2Nyb2xsYmFyKiwgY29uc3QgSW50UmVjdCYpOworICAgIHZpcnR1YWwgSW50UmVjdCBj
b25zdHJhaW5UcmFja1JlY3RUb1RyYWNrUGllY2VzKFNjcm9sbGJhclRoZW1lQ2xpZW50KiwgY29u
c3QgSW50UmVjdCYpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>