<?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>71755</bug_id>
          
          <creation_ts>2011-11-07 17:54:44 -0800</creation_ts>
          <short_desc>Move static &quot;policy&quot; state from SecurityOrigin.cpp to SecurityPolicy.cpp</short_desc>
          <delta_ts>2011-11-08 23:58:56 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>497641</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 17:54:44 -0800</bug_when>
    <thetext>Move static &quot;policy&quot; state from SecurityOrigin.cpp to SecurityPolicy.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>497642</commentid>
    <comment_count>1</comment_count>
      <attachid>113968</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-07 17:56:27 -0800</bug_when>
    <thetext>Created attachment 113968
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498651</commentid>
    <comment_count>2</comment_count>
      <attachid>114205</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 22:26:10 -0800</bug_when>
    <thetext>Created attachment 114205
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498655</commentid>
    <comment_count>3</comment_count>
      <attachid>114205</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-11-08 22:30:57 -0800</bug_when>
    <thetext>Comment on attachment 114205
Patch

Attachment 114205 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/10369313</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498656</commentid>
    <comment_count>4</comment_count>
      <attachid>114205</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-08 22:31:33 -0800</bug_when>
    <thetext>Comment on attachment 114205
Patch

Attachment 114205 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/10373128</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498657</commentid>
    <comment_count>5</comment_count>
      <attachid>114205</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-11-08 22:33:07 -0800</bug_when>
    <thetext>Comment on attachment 114205
Patch

Attachment 114205 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/10382114</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498659</commentid>
    <comment_count>6</comment_count>
      <attachid>114205</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2011-11-08 22:33:38 -0800</bug_when>
    <thetext>Comment on attachment 114205
Patch

Attachment 114205 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10372132</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498660</commentid>
    <comment_count>7</comment_count>
      <attachid>114207</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 22:34:15 -0800</bug_when>
    <thetext>Created attachment 114207
now with svn add power</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498673</commentid>
    <comment_count>8</comment_count>
      <attachid>114207</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-11-08 22:57:24 -0800</bug_when>
    <thetext>Comment on attachment 114207
now with svn add power

Attachment 114207 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/10374327</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498675</commentid>
    <comment_count>9</comment_count>
      <attachid>114212</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 23:00:27 -0800</bug_when>
    <thetext>Created attachment 114212
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>498688</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-11-08 23:58:56 -0800</bug_when>
    <thetext>Committed r99659: &lt;http://trac.webkit.org/changeset/99659&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>113968</attachid>
            <date>2011-11-07 17:56:27 -0800</date>
            <delta_ts>2011-11-08 22:26:06 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-71755-20111107175626.patch</filename>
            <type>text/plain</type>
            <size>43199</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NTA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBz
dGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFNlY3VyaXR5T3Jp
Z2luIGNsYXNzIHNob3VsZCBiZSBmb2N1c2VkIG9uIHJlcHJlc2VudGluZyBhIHdlYgorICAgICAg
ICBzZWN1cml0eSBvcmlnaW4gcmF0aGVyIHRoYW4gYmVpbmcgYSBkdW1waW5nIGdyb3VuZCBmb3Ig
YWxsCisgICAgICAgIHNlY3VyaXR5LXJlbGF0ZWQgc3RhdGUuICBUaGlzIHBhdGNoIG1vdmVzIGEg
YnVuY2ggb2Ygc3RhdGljICJwb2xpY3kiCisgICAgICAgIHN0YXRlIGludG8gaXRzIG93biBTZWN1
cml0eVBvbGljeSBjbGFzcy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6Omxv
YWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kUGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9s
YXRpb24pOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKwogMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIE1vdmUgRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbiBzY2hlbWUgcmVnaXN0
cnkgdG8gU2NoZW1lUmVnaXN0cnkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA5
OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBA
IC0zODQsMTUgKzM4NCwxNSBAQCBfX1pON1dlYkNvcmUxNFNjcm9sbGFibGVBcmVhRDJFdgogX19a
TjdXZWJDb3JlMTRTY3JvbGxiYXJUaGVtZTV0aGVtZUV2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5
T3JpZ2luMTJpc29sYXRlZENvcHlFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE2Y3Jl
YXRlRnJvbVN0cmluZ0VSS04zV1RGNlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmln
aW4xOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xpY3lFCi1fX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMThzaG91bGRIaWRlUmVmZXJyZXJFUktOU180S1VSTEVSS04zV1RG
NlN0cmluZ0UKLV9fWk43V2ViQ29yZTE0U2VjdXJpdHlPcmlnaW4yN3Jlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0c0V2CiBfX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjhjcmVhdGVGcm9tRGF0
YWJhc2VJZGVudGlmaWVyRVJLTjNXVEY2U3RyaW5nRQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9y
aWdpbjI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04zV1RGNlN0cmluZ0VT
Nl9iCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMzJyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2U3RyaW5nRVM2X2IKIF9fWk43V2ViQ29yZTE0U2VjdXJp
dHlPcmlnaW40MHNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWVFYlJLTjNX
VEY2U3RyaW5nRQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVFUktOM1dURjZT
dHJpbmdFUzRfaQogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjZjcmVhdGVFUktOU180S1VS
TEViCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzZXRMb2NhbExvYWRQb2xpY3lFTlMw
XzE1TG9jYWxMb2FkUG9saWN5RQorX19aTjdXZWJDb3JlMTRTZWN1cml0eVBvbGljeTE4c2hvdWxk
SGlkZVJlZmVycmVyRVJLTlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUxNFNl
Y3VyaXR5UG9saWN5MjdyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgorX19aTjdXZWJDb3Jl
MTRTZWN1cml0eVBvbGljeTI5YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04z
V1RGNlN0cmluZ0VTNl9iCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MzJyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2U3RyaW5nRVM2X2IKIF9fWk43V2Vi
Q29yZTE0U3RvcmFnZVRyYWNrZXI3b3JpZ2luc0VSTjNXVEY2VmVjdG9ySU5TMV82UmVmUHRySU5T
XzE0U2VjdXJpdHlPcmlnaW5FRUVMbTBFRUUKIF9fWk43V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI3
dHJhY2tlckV2CiBfX1pON1dlYkNvcmUxNFN0b3JhZ2VUcmFja2VyOXNldENsaWVudEVQTlNfMjBT
dG9yYWdlVHJhY2tlckNsaWVudEUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDk5NDc3
KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC02NDUs
NiArNjQ1LDcgQEAKICAgICAgICAgICAgICdwYWdlL1ByaW50Q29udGV4dC5oJywKICAgICAgICAg
ICAgICdwYWdlL1NlY3VyaXR5T3JpZ2luLmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJpdHlP
cmlnaW5IYXNoLmgnLAorICAgICAgICAgICAgJ3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCcsCiAgICAg
ICAgICAgICAncGFnZS9TZXR0aW5ncy5oJywKICAgICAgICAgICAgICdwYWdlL1NwYXRpYWxOYXZp
Z2F0aW9uLmgnLAogICAgICAgICAgICAgJ3BhZ2UvVXNlckNvbnRlbnRUeXBlcy5oJywKQEAgLTI5
ODIsNiArMjk4Myw3IEBACiAgICAgICAgICAgICAncGFnZS9TY3JlZW4uY3BwJywKICAgICAgICAg
ICAgICdwYWdlL1NjcmVlbi5oJywKICAgICAgICAgICAgICdwYWdlL1NlY3VyaXR5T3JpZ2luLmNw
cCcsCisgICAgICAgICAgICAncGFnZS9TZWN1cml0eVBvbGljeS5jcHAnLAogICAgICAgICAgICAg
J3BhZ2UvU2V0dGluZ3MuY3BwJywKICAgICAgICAgICAgICdwYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TcGVlY2hJbnB1dC5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUg
IlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNs
dWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5j
bHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRl
ICJTaGFkb3dSb290LmgiCkBAIC00NDA3LDcgKzQ0MDgsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0
U2VjdXJpdHlDb250ZXh0KCkKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0
eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG1fdXJsLCBpc1NhbmRib3hlZChTYW5kYm94
T3JpZ2luKSkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0
eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6OmNyZWF0ZSh0aGlzKSk7CiAKLSAgICBpZiAo
U2VjdXJpdHlPcmlnaW46OmFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKKyAg
ICBpZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkp
IHsKICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVudCB3YXMgbG9hZGVkIHdpdGggc3Vic3RpdHV0
ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgogICAgICAgICAvLyBsb2FkIGxvY2FsIHJlc291
cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTYK
ICAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTc2MCBmb3IgZnVydGhlcgpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxl
bWVudC5jcHAJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5j
aG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxMSw3ICs1MTIsNyBAQCB2
b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVDbGljayhFdmVuCiAKICAgICAgICAgaWYgKCFo
YXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSkgewogICAgICAgICAgICAgU3RyaW5nIHJlZmVycmVy
ID0gZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7Ci0gICAgICAgICAgICBpZiAo
IXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJl
cihrdXJsLCByZWZlcnJlcikpCisgICAgICAgICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAm
JiAhU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCiAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAg
ICAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVz
dChyZXF1ZXN0KTsKICAgICAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCShyZXZpc2lvbiA5OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRl
ICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTEzNiw3ICsxMTM3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdAogICAgIGVsc2UKICAgICAgICAgcmVmZXJyZXIg
PSBtX291dGdvaW5nUmVmZXJyZXI7CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhp
ZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKSB8fCByZWZlcnJlclBvbGljeSA9PSBOb1JlZmVycmVy
KQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJy
ZXIpIHx8IHJlZmVycmVyUG9saWN5ID09IE5vUmVmZXJyZXIpCiAgICAgICAgIHJlZmVycmVyID0g
U3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZTsKQEAgLTI1ODYsNyAr
MjU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQb3N0UmVxdWVzdChjb25zdCAKIHVuc2ln
bmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRDcmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFs
cywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgU3RyaW5nIHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVy
cmVyOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3Qu
dXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZl
cnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5n
KCk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAJKHJldmlzaW9uIDk5NDc3KQor
KysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAi
UmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUg
IlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU5LDcg
KzYwLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUqIGZyYW1lLAogICAgIHJl
cXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJlcXVlc3Q6OlRhcmdldElzSW1hZ2UpOwogI2Vu
ZGlmCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4
LWFnZT0wIik7Ci0gICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJl
cXVlc3QudXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBp
ZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQogICAgICAgICByZXF1ZXN0LnNldEhU
VFBSZWZlcnJlcihmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgZnJh
bWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
OwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5nTG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdM
b2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKQEAgLTg2LDcgKzg3LDcgQEAgdm9pZCBQaW5nTG9hZGVy
OjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIAogICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcGlu
Z09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGluZ1VSTCk7CiAgICAgRnJhbWVMb2Fk
ZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzb3VyY2VPcmlnaW4tPnRvU3RyaW5n
KCkpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQaW5nLVRvIiwgZGVzdGluYXRp
b25VUkwpOwotICAgIGlmICghU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihwaW5n
VVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpIHsKKyAgICBpZiAoIVNl
Y3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIocGluZ1VSTCwgZnJhbWUtPmxvYWRlcigp
LT5vdXRnb2luZ1JlZmVycmVyKCkpKSB7CiAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZCgiUGluZy1Gcm9tIiwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKICAgICAgIGlmICghc291
cmNlT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChwaW5nT3JpZ2luLmdldCgpKSkKICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpOwpAQCAtMTA5LDcgKzExMCw3IEBAIHZvaWQgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVu
dFNlY3VyaXR5UG8KICAgICByZXF1ZXN0LnNldEhUVFBCb2R5KHJlcG9ydCk7CiAgICAgZnJhbWUt
PmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwog
Ci0gICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcG9ydFVSTCwg
ZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQorICAgIGlmICghU2VjdXJpdHlQ
b2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXBvcnRVUkwsIGZyYW1lLT5sb2FkZXIoKS0+b3V0
Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUt
PmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBw
aW5nTG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdMb2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5
OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVj
dC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5o
IgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAog
I2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQpAQCAtMjYxLDcgKzI2Miw3IEBAIEZy
YW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKEhUTUwKICAgICBpZiAoIW93bmVyRWxl
bWVudC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q2hpbGRGcmFt
ZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBib29sIGhpZGVSZWZl
cnJlciA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIodXJsLCByZWZlcnJlcik7
CisgICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVy
cmVyKHVybCwgcmVmZXJyZXIpOwogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lLT5s
b2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZUZyYW1lKHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCBo
aWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVycmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdp
bldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCiAgICAgaWYgKCFmcmFtZSkgIHsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAkocmV2aXNpb24gOTk0Nzcp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5j
bHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVu
dC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkTGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NSw3ICs4Niw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3Vy
Y2VMb2FkZXI+IFN1YnJlc291cmMKICAgICAgICAgb3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2luZ1JlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAg
ICB9CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0
LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3Vs
ZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKSkKICAgICAgICAg
bmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigpOwogICAgIGVsc2UgaWYgKCFyZXF1ZXN0Lmh0
dHBSZWZlcnJlcigpKQogICAgICAgICBuZXdSZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihvdXRnb2lu
Z1JlZmVycmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShy
ZXZpc2lvbiA5OTQ3NykKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCwyNiArMzQsMTYgQEAKICNpbmNsdWRlICJGaWxlU3lzdGVt
LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKLSNp
bmNsdWRlICJPcmlnaW5BY2Nlc3NFbnRyeS5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIFNlY3VyaXR5T3Jp
Z2luOjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gU2VjdXJpdHlPcmlnaW46OkFs
bG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKIGNvbnN0IGludCBNYXhBbGxvd2VkUG9ydCA9IDY1
NTM1OwogCi10eXBlZGVmIFZlY3RvcjxPcmlnaW5BY2Nlc3NFbnRyeT4gT3JpZ2luQWNjZXNzV2hp
dGVMaXN0OwotdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgT3JpZ2luQWNjZXNzV2hpdGVMaXN0Kj4g
T3JpZ2luQWNjZXNzTWFwOwotCi1zdGF0aWMgT3JpZ2luQWNjZXNzTWFwJiBvcmlnaW5BY2Nlc3NN
YXAoKQotewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoT3JpZ2luQWNjZXNzTWFwLCBvcmlnaW5B
Y2Nlc3NNYXAsICgpKTsKLSAgICByZXR1cm4gb3JpZ2luQWNjZXNzTWFwOwotfQotCiBzdGF0aWMg
Ym9vbCBzY2hlbWVSZXF1aXJlc0F1dGhvcml0eShjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFVSTFNjaGVtZXNNYXAsIHNjaGVtZXMsICgpKTsKQEAgLTI3
OCw3ICsyNjgsNyBAQCBib29sIFNlY3VyaXR5T3JpZ2luOjpjYW5SZXF1ZXN0KGNvbnN0IEtVCiAg
ICAgaWYgKGlzU2FtZVNjaGVtZUhvc3RQb3J0KHRhcmdldE9yaWdpbi5nZXQoKSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKGlzQWNjZXNzV2hpdGVMaXN0ZWQodGFyZ2V0T3JpZ2lu
LmdldCgpKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzV2hpdGVMaXN0ZWQodGhp
cywgdGFyZ2V0T3JpZ2luLmdldCgpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1
cm4gZmFsc2U7CkBAIC0zMTYsMjMgKzMwNiw2IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmNhblJl
Y2VpdmVEcmFnRGF0YSgKICAgICByZXR1cm4gY2FuQWNjZXNzKGRyYWdJbml0aWF0b3IpOyAgCiB9
CiAKLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzQWNjZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4qIHRhcmdldE9yaWdpbikgY29uc3QKLXsKLSAgICBpZiAoT3JpZ2luQWNjZXNzV2hp
dGVMaXN0KiBsaXN0ID0gb3JpZ2luQWNjZXNzTWFwKCkuZ2V0KHRvU3RyaW5nKCkpKSB7Ci0gICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+c2l6ZSgpOyAgKytpKSB7Ci0gICAgICAg
ICAgIGlmIChsaXN0LT5hdChpKS5tYXRjaGVzT3JpZ2luKCp0YXJnZXRPcmlnaW4pKQotICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLWJvb2wgU2VjdXJpdHlPcmlnaW46OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Ci17Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRP
cmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHVybCk7Ci0gICAgcmV0dXJuIGlzQWNjZXNz
V2hpdGVMaXN0ZWQodGFyZ2V0T3JpZ2luLmdldCgpKTsKLX0KLQogLy8gVGhpcyBpcyBhIGhhY2sg
dG8gYWxsb3cga2VlcCBuYXZpZ2F0aW9uIHRvIGh0dHAvaHR0cHMgZmVlZHMgd29ya2luZy4gVG8g
cmVtb3ZlIHRoaXMKIC8vIHdlIG5lZWQgdG8gaW50cm9kdWNlIG5ldyBBUEkgYWtpbiB0byByZWdp
c3RlclVSTFNjaGVtZUFzTG9jYWwsIHRoYXQgcmVnaXN0ZXJzIGEKIC8vIHByb3RvY29scyBuYXZp
Z2F0aW9uIHBvbGljeS4KQEAgLTM2NCwxMCArMzM3LDEwIEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46
OmNhbkRpc3BsYXkoY29uc3QgS1UKICAgICAgICAgcmV0dXJuIGNhblJlcXVlc3QodXJsKTsKIAog
ICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0Rpc3BsYXlJc29s
YXRlZChwcm90b2NvbCkpCi0gICAgICAgIHJldHVybiBtX3Byb3RvY29sID09IHByb3RvY29sIHx8
IGlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh1cmwpOworICAgICAgICByZXR1cm4gbV9wcm90b2Nv
bCA9PSBwcm90b2NvbCB8fCBTZWN1cml0eVBvbGljeTo6aXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVk
KHRoaXMsIHVybCk7CiAKLSAgICBpZiAocmVzdHJpY3RBY2Nlc3NUb0xvY2FsKCkgJiYgU2NoZW1l
UmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChwcm90b2NvbCkpCi0gICAgICAg
IHJldHVybiBjYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSB8fCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0
ZWQodXJsKTsKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgp
ICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwocHJvdG9jb2wp
KQorICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgU2VjdXJpdHlQb2xp
Y3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC0zNzksNyArMzUyLDcgQEAgdm9pZCBTZWN1cml0eU9yaWdpbjo6Z3JhbnRMb2Fk
TG9jYWxSZXNvdQogICAgIC8vIGluIGEgU2VjdXJpdHlPcmlnaW4gaXMgYSBzZWN1cml0eSBoYXph
cmQgYmVjYXVzZSB0aGUgZG9jdW1lbnRzIHdpdGhvdXQKICAgICAvLyB0aGUgcHJpdmlsZWdlIGNh
biBvYnRhaW4gdGhlIHByaXZpbGVnZSBieSBpbmplY3Rpbmcgc2NyaXB0IGludG8gdGhlCiAgICAg
Ly8gZG9jdW1lbnRzIHRoYXQgaGF2ZSBiZWVuIGdyYW50ZWQgdGhlIHByaXZpbGVnZS4KLSAgICBB
U1NFUlQoYWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vzc1RvTG9jYWwoKSk7CisgICAgQVNTRVJUKFNl
Y3VyaXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpKTsKICAgICBt
X2NhbkxvYWRMb2NhbFJlc291cmNlcyA9IHRydWU7CiB9CiAKQEAgLTUyOCwyMiArNTAxLDYgQEAg
Ym9vbCBTZWN1cml0eU9yaWdpbjo6aXNTYW1lU2NoZW1lSG9zdFBvcgogICAgIHJldHVybiB0cnVl
OwogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKQotewotICAgIGJvb2wgcmVmZXJyZXJJc1Nl
Y3VyZVVSTCA9IHByb3RvY29sSXMocmVmZXJyZXIsICJodHRwcyIpOwotICAgIGJvb2wgcmVmZXJy
ZXJJc1dlYlVSTCA9IHJlZmVycmVySXNTZWN1cmVVUkwgfHwgcHJvdG9jb2xJcyhyZWZlcnJlciwg
Imh0dHAiKTsKLQotICAgIGlmICghcmVmZXJyZXJJc1dlYlVSTCkKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICBpZiAoIXJlZmVycmVySXNTZWN1cmVVUkwpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGJvb2wgVVJMSXNTZWN1cmVVUkwgPSB1cmwucHJvdG9jb2xJcygiaHR0cHMiKTsK
LQotICAgIHJldHVybiAhVVJMSXNTZWN1cmVVUkw7Ci19Ci0KIFNhbmRib3hGbGFncyBTZWN1cml0
eU9yaWdpbjo6cGFyc2VTYW5kYm94UG9saWN5KGNvbnN0IFN0cmluZyYgcG9saWN5KQogewogICAg
IC8vIFBhcnNlIHRoZSB1bm9yZGVyZWQgc2V0IG9mIHVuaXF1ZSBzcGFjZS1zZXBhcmF0ZWQgdG9r
ZW5zLgpAQCAtNTc5LDcwICs1MzYsNCBAQCBTYW5kYm94RmxhZ3MgU2VjdXJpdHlPcmlnaW46OnBh
cnNlU2FuZGJvCiAgICAgcmV0dXJuIGZsYWdzOwogfQogCi12b2lkIFNlY3VyaXR5T3JpZ2luOjpz
ZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBvbGljeSkKLXsKLSAgICBsb2NhbExv
YWRQb2xpY3kgPSBwb2xpY3k7Ci19Ci0KLWJvb2wgU2VjdXJpdHlPcmlnaW46OnJlc3RyaWN0QWNj
ZXNzVG9Mb2NhbCgpCi17Ci0gICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eU9y
aWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOwotfQotCi1ib29sIFNlY3VyaXR5T3JpZ2luOjph
bGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCi17Ci0gICAgcmV0dXJuIGxvY2FsTG9h
ZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5Owot
fQotCi12b2lkIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShj
b25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwotICAgIGlmIChzb3VyY2VPcmlnaW4u
aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHJpbmcgc291cmNlU3RyaW5nID0g
c291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxPcmlnaW5BY2Nlc3NNYXA6Oml0ZXJh
dG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAoKS5hZGQoc291cmNlU3RyaW5nLCAw
KTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQg
PSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OwotCi0gICAgT3JpZ2luQWNjZXNzV2hpdGVMaXN0
KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAgbGlzdC0+YXBwZW5kKE9yaWdpbkFj
Y2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uRG9tYWluLCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0VudHJ5OjpBbGxvd1N1YmRvbWFpbnMg
OiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21haW5zKSk7Ci19Ci0KLXZvaWQgU2Vj
dXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNlY3Vy
aXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEFTU0VSVCgh
c291cmNlT3JpZ2luLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNvdXJjZU9yaWdpbi5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBzb3VyY2VPcmln
aW4udG9TdHJpbmcoKTsKLSAgICBPcmlnaW5BY2Nlc3NNYXAmIG1hcCA9IG9yaWdpbkFjY2Vzc01h
cCgpOwotICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3IgaXQgPSBtYXAuZmluZChzb3VyY2VT
dHJpbmcpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5zZWNvbmQ7Ci0gICAgc2l6ZV90IGlu
ZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMgPyBPcmlnaW5BY2Nl
c3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNjZXNzRW50cnk6OkRpc2FsbG93U3Vi
ZG9tYWlucykpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKLQotICAgIGlmICghbGlzdC0+aXNFbXB0eSgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtYXAucmVtb3ZlKGl0KTsKLSAgICBkZWxldGUgbGlzdDsK
LX0KLQotdm9pZCBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkK
LXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIE9yaWdpbkFjY2Vzc01hcCYgbWFw
ID0gb3JpZ2luQWNjZXNzTWFwKCk7Ci0gICAgZGVsZXRlQWxsVmFsdWVzKG1hcCk7Ci0gICAgbWFw
LmNsZWFyKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODAsMjEgKzE4MCw2IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBTYW5kYm94RmxhZ3MgcGFyc2VTYW5kYm94UG9saWN5KGNv
bnN0IFN0cmluZyYgcG9saWN5KTsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZEhpZGVSZWZlcnJl
cihjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7Ci0KLSAgICBlbnVtIExvY2Fs
TG9hZFBvbGljeSB7Ci0gICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckFsbCwgLy8gTm8gcmVzdHJp
Y3Rpb24gb24gbG9jYWwgbG9hZHMuCi0gICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsQW5k
U3Vic3RpdHV0ZURhdGEsCi0gICAgICAgIEFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seSwKLSAg
ICB9OwotICAgIHN0YXRpYyB2b2lkIHNldExvY2FsTG9hZFBvbGljeShMb2NhbExvYWRQb2xpY3kp
OwotICAgIHN0YXRpYyBib29sIHJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpOwotICAgIHN0YXRpYyBi
b29sIGFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCk7Ci0KLSAgICBzdGF0aWMgdm9p
ZCBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291
cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwot
ICAgIHN0YXRpYyB2b2lkIHJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFNl
Y3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Qcm90
b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7Ci0gICAgc3RhdGljIHZvaWQgcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7Ci0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgU2VjdXJpdHlPcmlnaW4oY29uc3QgS1VS
TCYsIGJvb2wgZm9yY2VVbmlxdWUpOwogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0
IFNlY3VyaXR5T3JpZ2luKik7CkBAIC0yMDIsOSArMTg3LDYgQEAgcHJpdmF0ZToKICAgICAvLyBG
SVhNRTogUmVuYW1lIHRoaXMgZnVuY3Rpb24gdG8gc29tZXRoaW5nIG1vcmUgc2VtYW50aWMuCiAg
ICAgYm9vbCBwYXNzZXNGaWxlQ2hlY2soY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0eU9yaWdpbiopIGNvbnN0
OwotICAgIGJvb2wgaXNBY2Nlc3NUb1VSTFdoaXRlTGlzdGVkKGNvbnN0IEtVUkwmKSBjb25zdDsK
LQogICAgIFN0cmluZyBtX3Byb3RvY29sOwogICAgIFN0cmluZyBtX2hvc3Q7CiAgICAgbXV0YWJs
ZSBTdHJpbmcgbV9lbmNvZGVkSG9zdDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NTA5KQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNb3ZlIHN0YXRpYyAicG9saWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBT
ZWN1cml0eVBvbGljeS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojpsb2FkVVJMKToK
KwogMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAg
IE1vdmUgRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbiBzY2hlbWUgcmVnaXN0cnkgdG8gU2NoZW1l
UmVnaXN0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA5OTQ3NykKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9S
ZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Nl
Y3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJyYXlQ
dHIuaD4KQEAgLTE3MSwxNyArMTcyLDE3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEF1dGhv
ckFuZFVzZXJTdHkKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3Vy
Y2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9y
aWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5h
dGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgU3Ry
aW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6
cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVG
cm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9u
SG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5Ojpy
ZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25I
b3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRCdW5k
bGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46
OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6Y2xl
YXJBbGxEYXRhYmFzZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gOTk0NzcpCisrKyBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU3
LDYgKzU3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bFZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0
b3IuaD4KIApAQCAtOTgzLDcgKzk4NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1aW50
NjRfdCByZXF1ZXMKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhU
VFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoaHR0cEJvZHkuZGF0YSgpLCBodHRwQm9keS5zaXplKCkp
KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwogCi0gICAgaWYg
KCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihmcmFtZUxv
YWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBmcmFtZSgpLT5sb2FkZXIoKS0+b3V0
Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVl
c3QoKS5zZXRIVFRQUmVmZXJyZXIoZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIo
KSk7CiAKICAgICBtX3BlbmRpbmdVUkxSZXF1ZXN0cy5hcHBlbmQoVVJMUmVxdWVzdDo6Y3JlYXRl
KHJlcXVlc3RJRCwgZnJhbWVMb2FkUmVxdWVzdCwgYWxsb3dQb3B1cHMpKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTUwOSkKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEt
MDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRp
YyAicG9saWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGlj
eS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpzZXRS
ZWZlcnJlckZvclJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJTZWN1cml0eVBvbGljeS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5
UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKToKKyAgICAgICAgKiBzcmMvV2Vi
Vmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW5pdGlhbGl6ZU1h
aW5GcmFtZSk6CisKIDIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
IAogICAgICAgICBNb3ZlIERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW4gc2NoZW1lIHJlZ2lzdHJ5
IHRvIFNjaGVtZVJlZ2lzdHJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
cmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw3IEBA
CiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxUeXBlcy5oIgogI2lu
Y2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNp
bmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNraWFVdGlscy5oIgogI2luY2x1ZGUgIlN1
YnN0aXR1dGVEYXRhLmgiCkBAIC0xMDY1LDE0ICsxMDY2LDE0IEBAIGJvb2wgV2ViRnJhbWVJbXBs
Ojppc1ZpZXdTb3VyY2VNb2RlRW5hYmwKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgV2Vi
RnJhbWVJbXBsOjpzZXRSZWZlcnJlckZvclJlcXVlc3QoCi0gICAgV2ViVVJMUmVxdWVzdCYgcmVx
dWVzdCwgY29uc3QgV2ViVVJMJiByZWZlcnJlclVSTCkgewordm9pZCBXZWJGcmFtZUltcGw6OnNl
dFJlZmVycmVyRm9yUmVxdWVzdChXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJVUkwm
IHJlZmVycmVyVVJMKQorewogICAgIFN0cmluZyByZWZlcnJlcjsKICAgICBpZiAocmVmZXJyZXJV
UkwuaXNFbXB0eSgpKQogICAgICAgICByZWZlcnJlciA9IG1fZnJhbWUtPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCk7CiAgICAgZWxzZQogICAgICAgICByZWZlcnJlciA9IHJlZmVycmVyVVJM
LnNwZWMoKS51dGYxNigpOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVy
cmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNo
b3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCiAgICAgICAgIHJldHVy
bjsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6OmZyb21VVEY4KCJS
ZWZlcmVyIiksIHJlZmVycmVyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKIAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgogI2luY2x1ZGUgIldl
YlVSTC5oIgpAQCAtNjgsNyArNjksNyBAQCB2b2lkIFdlYlNlY3VyaXR5UG9saWN5OjphZGRPcmln
aW5BY2Nlc3NXCiAgICAgY29uc3QgV2ViU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsCiAgICAgYm9v
bCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRk
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoCisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KAogICAgICAgICAqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShz
b3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLAogICAgICAgICBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KQEAgLTc5LDE5ICs4MCwxOSBAQCB2
b2lkIFdlYlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2NlCiAgICAgY29uc3QgV2ViU3Ry
aW5nJiBkZXN0aW5hdGlvbkhvc3QsCiAgICAgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoCisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KAogICAgICAgICAqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzb3VyY2VPcmlnaW4pLCBkZXN0aW5h
dGlvblByb3RvY29sLAogICAgICAgICBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKIH0KIAogdm9pZCBXZWJTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpOwogfQogCiBib29sIFdlYlNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIo
Y29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgcmVmZXJyZXIpCiB7Ci0gICAgcmV0
dXJuIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIodXJsLCByZWZlcnJlcik7Cisg
ICAgcmV0dXJuIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIodXJsLCByZWZlcnJl
cik7CiB9CiAKIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOb3RB
bGxvd2luZ0phdmFzY3JpcHRVUkxzKGNvbnN0IFdlYlN0cmluZyYgc2NoZW1lKQpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gOTk0Nzcp
CisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTk2LDYgKzk2LDcgQEAKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2lu
Y2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNp
bmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVk
ZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCkBA
IC0yODksNyArMjkwLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5pdGlhbGl6ZU1haW5GcmFtZShX
ZQogCiAgICAgLy8gUmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0K
ICAgICAvLyAoc2VlIFdlYlZpZXcubW0gV2ViVmlldzo6X2NvbW1vbkluaXRpYWxpemF0aW9uV2l0
aEZyYW1lTmFtZSkuCi0gICAgU2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9hZFBvbGljeShTZWN1
cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5KTsKKyAgICBTZWN1cml0eVBv
bGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNG
b3JMb2NhbE9ubHkpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRBdXRvZmlsbENsaWVudChX
ZWJBdXRvZmlsbENsaWVudCogYXV0b2ZpbGxDbGllbnQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5OTUwOSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1
cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2hp
dGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisKIDIwMTEtMTEtMDMgIERhcmluIEFk
bGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIENoYW5nZSByZW1haW5pbmcgY2FsbGVy
cyBvZiByZWxlYXNlUmVmIHRvIGNhbGwgbGVha1JlZgpJbmRleDogU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRH
dGsuY3BwCShyZXZpc2lvbiA5OTQ3NykKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYg
KzU2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5o
IgogI2luY2x1ZGUgIldlYktpdERPTVJhbmdlUHJpdmF0ZS5oIgpAQCAtNjY3LDEyICs2NjgsMTIg
QEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNldFNtYXJ0SQogCiB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydEd0azo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBnY2hh
ciogc291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3Qg
Z2NoYXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
IHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwor
ICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAK
IHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlz
dHMoKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9
CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpnY0NvbGxlY3RKYXZhc2NyaXB0T2Jq
ZWN0cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTUwOSkKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEx
LTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBz
dGF0aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQ
b2xpY3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAg
IChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpIb3N0ZWROZXRzY2FwZVBsdWdp
blN0cmVhbSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToK
KyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpXZWJOZXRzY2FwZVBsdWdpblN0cmVh
bSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9j
b21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3JvdXBOYW1lOl0pOgorICAgICAgICAo
K1tXZWJWaWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46
ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhvc3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblByb3RvY29sOmRlc3RpbmF0aW9uSG9z
dDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToKKyAgICAgICAgKCtbV2ViVmlldyBfcmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzXSk6CisKIDIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIERvbWFpblJlbGF4YXRpb25Gb3JiaWRk
ZW4gc2NoZW1lIHJlZ2lzdHJ5IHRvIFNjaGVtZVJlZ2lzdHJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0JKHJldmlz
aW9uIDk5NDc3KQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdp
blN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVs
ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZU9iakNFeHRyYXMu
aD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0IDxXZWJL
aXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTE3MCw4ICsxNzEsOCBAQCBXZWJOZXRzY2FwZVBsdWdp
blN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnCiAgICAgc2V0UGx1Z2luKHBsdWdpbik7CiAgICAgCiAg
ICAgc3RyZWFtcygpLmFkZCgmbV9zdHJlYW0sIHBsdWdpbik7Ci0gICAgICAgIAotICAgIGlmIChT
ZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKFtyZXF1ZXN0IFVSTF0sIGNvcmUoW3Zp
ZXcgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCisgICAgCisgICAg
aWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoW3JlcXVlc3QgVVJMXSwgY29y
ZShbdmlldyB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAg
ICAgW21fcmVxdWVzdC5nZXQoKSBfd2ViX3NldEhUVFBSZWZlcnJlcjpuaWxdOwogfQogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0
cmVhbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9I
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNpb24gOTk0NzcpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxv
YWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlQ
b2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3BvbnNlLmg+CiAjaW1wb3J0
IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKQEAgLTU4LDcgKzU5LDcgQEAgSG9zdGVk
TmV0c2NhcGVQbHVnaW5TdHJlYW06Okhvc3RlZE5ldHNjYQogICAgICwgbV9yZXF1ZXN0VVJMKFty
ZXF1ZXN0IFVSTF0pCiAgICAgLCBtX2ZyYW1lTG9hZGVyKDApCiB7Ci0gICAgaWYgKFNlY3VyaXR5
T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoW3JlcXVlc3QgVVJMXSwgY29yZShbaW5zdGFuY2Ut
PnBsdWdpblZpZXcoKSB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkK
KyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihbcmVxdWVzdCBVUkxd
LCBjb3JlKFtpbnN0YW5jZS0+cGx1Z2luVmlldygpIHdlYkZyYW1lXSktPmxvYWRlcigpLT5vdXRn
b2luZ1JlZmVycmVyKCkpKQogICAgICAgICBbbV9yZXF1ZXN0LmdldCgpIF93ZWJfc2V0SFRUUFJl
ZmVycmVyOm5pbF07CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA5OTQ3NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1LDYgKzE1NSw3IEBACiAjaW1wb3J0
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2NyaXB0VmFs
dWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbXBvcnQgPFdlYkNv
cmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBv
cnQgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9UaHJl
YWRDaGVjay5oPgpAQCAtNzc3LDExICs3NzgsMTEgQEAgLSAodm9pZClfY29tbW9uSW5pdGlhbGl6
YXRpb25XaXRoRnJhbWVOYQogCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lU
X0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0NBTF9SRVNPVVJDRV9TRUNVUklUWV9SRVNUUklDVElPTikp
IHsKICAgICAgICAgLy8gT3JpZ2luYWxseSwgd2UgYWxsb3dlZCBhbGwgbG9jYWwgbG9hZHMuCi0g
ICAgICAgIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koU2VjdXJpdHlPcmlnaW46
OkFsbG93TG9jYWxMb2Fkc0ZvckFsbCk7CisgICAgICAgIFNlY3VyaXR5UG9saWN5OjpzZXRMb2Nh
bExvYWRQb2xpY3koU2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckFsbCk7CiAgICAg
fSBlbHNlIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJ
VEhfTU9SRV9TVFJJQ1RfTE9DQUxfUkVTT1VSQ0VfU0VDVVJJVFlfUkVTVFJJQ1RJT04pKSB7CiAg
ICAgICAgIC8vIExhdGVyLCB3ZSBhbGxvd2VkIGxvY2FsIGxvYWRzIGZvciBsb2NhbCBVUkxzIGFu
ZCBkb2N1bWVudHMgbG9hZGVkCiAgICAgICAgIC8vIHdpdGggc3Vic3RpdHV0ZSBkYXRhLgotICAg
ICAgICBTZWN1cml0eU9yaWdpbjo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpB
bGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRhKTsKKyAgICAgICAgU2VjdXJp
dHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGljeShTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExv
YWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CiAgICAgfQogCiAgICAgaWYgKCFXZWJLaXRM
aW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSE9VVF9DT05URU5UX1NOSUZG
SU5HX0ZPUl9GSUxFX1VSTFMpKQpAQCAtMjQ2NywxNyArMjQ2OCwxNyBAQCAtIChOU1Bhc3RlYm9h
cmQgKilfaW5zZXJ0aW9uUGFzdGVib2FyZAogCiArICh2b2lkKV9hZGRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291cmNlT3JpZ2luIGRlc3Rp
bmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90b2NvbCBkZXN0aW5hdGlv
bkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0gICAgU2VjdXJpdHlPcmln
aW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlv
bkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiArICh2b2lkKV9yZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5nICopc291cmNl
T3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRpb25Qcm90b2Nv
bCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5zCiB7Ci0gICAg
U2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3Rv
Y29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiAr
KHZvaWQpX3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cwogewotICAgIFNlY3VyaXR5T3JpZ2lu
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIC0gKHZvaWQpX3VwZGF0ZUFjdGl2ZVN0
YXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gOTk1MDkpCisrKyBTb3VyY2UvV2ViS2l0
L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTA3
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMg
InBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3ku
Y3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRl
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHA6
CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9y
aWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVtb3ZlV2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKToKKwogMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFi
YXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIE1vdmUgRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRl
biBzY2hlbWUgcmVnaXN0cnkgdG8gU2NoZW1lUmVnaXN0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
cXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAJKHJldmlzaW9uIDk5NDc3KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdl
YnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlY3Vy
aXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0
aW5ncy5oIgogI2lmIGRlZmluZWQgUV9PU19XSU4zMgogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIK
QEAgLTMzMCw3ICszMzEsNyBAQCBRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2Vi
UGFnCiAgICAgV2ViQ29yZTo6SW5pdGlhbGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7
CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6
aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsKLSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0
TG9jYWxMb2FkUG9saWN5KFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNG
b3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRhKTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6
c2V0TG9jYWxMb2FkUG9saWN5KFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9h
ZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRhKTsKIAogICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0
Ojppbml0aWFsaXplKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA5
OTQ3NykKKysrIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVT
dXBwb3J0UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MCw2ICs3MCw3IEBACiAjaW5jbHVkZSAi
U2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUg
IlNldHRpbmdzLmgiCiAjaWYgRU5BQkxFKFNWRykKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVu
c2lvbnMuaCIKQEAgLTQ2MywxNyArNDY0LDE3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OnJlc3VtZUFjdGkKIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJp
bmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBh
bGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0UXQ6OnJlbW92ZVdoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291
cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3Ry
aW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7
Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9u
UHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwog
fQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
TGlzdHMoKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlz
dHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnNldERvbWFpblJlbGF4YXRpb25G
b3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9vbCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVt
ZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NTA5KQorKysgU291cmNlL1dlYktp
dC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEt
MDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRp
YyAicG9saWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGlj
eS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcx
NzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KToKKyAgICAgICAgKFdlYlZpZXc6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KToKKyAgICAgICAgKFdlYlZpZXc6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisKIDIw
MTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3Zl
IERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW4gc2NoZW1lIHJlZ2lzdHJ5IHRvIFNjaGVtZVJlZ2lz
dHJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNpb24gOTk0NzcpCisrKyBTb3VyY2Uv
V2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JvbGxiYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9s
bGJhclRoZW1lLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdz
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TaW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvU3lzdGVtSW5mby5oPgpAQCAtNjM1NSwxOSArNjM1NiwxOSBAQCBIUkVTVUxUIFdlYlZpZXc6
OmludmFsaWRhdGVCYWNraW5nU3RvcmUoCiAKIEhSRVNVTFQgV2ViVmlldzo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoQlNUUiBzb3VyY2VPcmlnaW4sIEJTVFIgZGVzdGluYXRpb25Qcm90
b2NvbCwgQlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFp
bnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBT
eXNTdHJpbmdMZW4oc291cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwg
U3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9z
dCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBT
eXNTdHJpbmdMZW4oc291cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwg
U3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9z
dCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoQlNUUiBzb3VyY2VPcmlnaW4sIEJTVFIgZGVzdGluYXRp
b25Qcm90b2NvbCwgQlNUUiBkZXN0aW5hdGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291cmNl
T3JpZ2luLCBTeXNTdHJpbmdMZW4oc291cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRpb25Q
cm90b2NvbCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRlc3Rp
bmF0aW9uSG9zdCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291
cmNlT3JpZ2luLCBTeXNTdHJpbmdMZW4oc291cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRp
b25Qcm90b2NvbCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRl
c3RpbmF0aW9uSG9zdCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViVmll
dzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6
cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0
T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogICAgIHJldHVybiBTX09LOwogfQogIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114205</attachid>
            <date>2011-11-08 22:26:10 -0800</date>
            <delta_ts>2011-11-08 22:34:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71755-20111108222609.patch</filename>
            <type>text/plain</type>
            <size>49243</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBz
dGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFNlY3VyaXR5T3Jp
Z2luIGNsYXNzIHNob3VsZCBiZSBmb2N1c2VkIG9uIHJlcHJlc2VudGluZyBhIHdlYgorICAgICAg
ICBzZWN1cml0eSBvcmlnaW4gcmF0aGVyIHRoYW4gYmVpbmcgYSBkdW1waW5nIGdyb3VuZCBmb3Ig
YWxsCisgICAgICAgIHNlY3VyaXR5LXJlbGF0ZWQgc3RhdGUuICBUaGlzIHBhdGNoIG1vdmVzIGEg
YnVuY2ggb2Ygc3RhdGljICJwb2xpY3kiCisgICAgICAgIHN0YXRlIGludG8gaXRzIG93biBTZWN1
cml0eVBvbGljeSBjbGFzcy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6Omxv
YWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kUGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9s
YXRpb24pOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKwogMjAxMS0xMS0wOCAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBDcmFzaCBhY2Nlc3NpbmcgZm9udCBmYWN0IHJ1bGUgcGFyZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw2ICsxMDA3LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVu
LmNwcAogICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisgICAgcGFnZS9TZWN1cml0eVBvbGlj
eS5jcHAKICAgICBwYWdlL1NldHRpbmdzLmNwcAogICAgIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MDgsNiArMjQwOCw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNiArMTAwMSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAg
ICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCisgICAgcGFnZS9TZWN1cml0eVBvbGljeS5jcHAg
XAogICAgIHBhZ2UvU2V0dGluZ3MuY3BwIFwKICAgICBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNw
cCBcCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzg1LDE0ICszODUsMTQgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxh
YmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYmFyVGhlbWU1dGhlbWVFdgogX19aTjdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9s
aWN5RQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJL
TlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjdy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW4yOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLUzBf
UktOM1dURjZTdHJpbmdFUzZfYgotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjMycmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04zV1RGNlN0cmluZ0VTNl9iCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9pCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRWIKK19fWk43V2ViQ29y
ZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xp
Y3lFCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzaG91bGRIaWRlUmVmZXJyZXJFUktO
U180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MjlhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2U3RyaW5nRVM2X2IK
K19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5RVJLUzBfUktOM1dURjZTdHJpbmdFUzZfYgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJh
Y2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdp
bkVFRUxtMEVFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xp
ZW50RQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw2ICs2NDUsNyBAQAogICAg
ICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaCcsCiAgICAgICAgICAgICAncGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCcsCisg
ICAgICAgICAgICAncGFnZS9TZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAgICdwYWdlL1Nl
dHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCcsCiAgICAg
ICAgICAgICAncGFnZS9Vc2VyQ29udGVudFR5cGVzLmgnLApAQCAtMjk4Myw2ICsyOTg0LDcgQEAK
ICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVu
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL1NlY3VyaXR5UG9saWN5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TZXR0aW5ncy5j
cHAnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwJywKICAgICAgICAg
ICAgICdwYWdlL1NwZWVjaElucHV0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU0
MzAsNiArMjU0MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxTZWN1cml0eVBvbGljeS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2VjdXJpdHlQb2xpY3kuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTZXR0
aW5ncy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMTUsNiArMzIxNSw4IEBACiAJCTk3M0RDNjQwMTQ1QTk0MDkwMDI4NDJDMiAv
KiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
RTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLzsgfTsK
IAkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNFMzI1NTEwODgz
QjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzREMkRBNDE0NkE1MzVEMDBENTFGOEIg
LyogU2VjdXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc0RDJEQTIxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNw
cCAqLzsgfTsKKwkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzREMkRBMzE0
NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLzsgfTsKIAkJOTc1MkQzOEQxNDEz
MTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBK
U0hUTUxTcGFuRWxlbWVudC5jcHAgKi87IH07CiAJCTk3NTJEMzhFMTQxMzEwNEIwMDMzMDVCRCAv
KiBKU0hUTUxTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc1MkQzOEMxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmggKi87IH07CiAJCTk3NUNBMjhBMTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1Q0EyODcxMzAzNjVG
ODAwRTk5QUQ5IC8qIENyeXB0by5jcHAgKi87IH07CkBAIC0xMDM4Myw2ICsxMDM4NSw4IEBACiAJ
CTk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzREMkRBMjE0NkE1MzVEMDBENTFG
OEIgLyogU2VjdXJpdHlQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
NzREMkRBMzE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTc1MkQzOEIxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNwYW5FbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc1MkQzOEMxNDEzMTA0QjAw
MzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3NUNBMjg3MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NTc1LDYgKzE1NTc5LDggQEAKIAkJCQlCQ0QwRTBGNzBFOTcyQzM1MDAyNjVERUEg
LyogU2VjdXJpdHlPcmlnaW4uY3BwICovLAogCQkJCUJDRDBFMEY4MEU5NzJDMzUwMDI2NURFQSAv
KiBTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDRDBFMEY5MEU5NzJDMzUwMDI2NURFQSAvKiBT
ZWN1cml0eU9yaWdpbkhhc2guaCAqLywKKwkJCQk5NzREMkRBMjE0NkE1MzVEMDBENTFGOEIgLyog
U2VjdXJpdHlQb2xpY3kuY3BwICovLAorCQkJCTk3NEQyREEzMTQ2QTUzNUQwMEQ1MUY4QiAvKiBT
ZWN1cml0eVBvbGljeS5oICovLAogCQkJCTE0QzlBNUU5MEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0
aW5ncy5jcHAgKi8sCiAJCQkJRjU4Nzg2M0EwMkRFM0ExNDAxRUE0MTIyIC8qIFNldHRpbmdzLmgg
Ki8sCiAJCQkJNjI2Q0RFMEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNw
cCAqLywKQEAgLTI0NjM0LDYgKzI0NjQwLDcgQEAKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1
QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNzQ5Myw2ICsyNzUwMCw3IEBACiAJCQkJQ0RFQTc2MzUxNDYwQjcx
QTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYy
MjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEz
NDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5OTY1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC00NDEwLDcgKzQ0
MTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsLCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmNyZWF0ZSh0aGlzKSk7CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmFsbG93U3Vic3RpdHV0
ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vi
c3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVu
dCB3YXMgbG9hZGVkIHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgog
ICAgICAgICAvLyBsb2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTYKICAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2MCBmb3IgZnVydGhlcgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTUxMSw3ICs1MTIsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVuCiAKICAgICAgICAgaWYgKCFoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHJlZmVycmVyID0gZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1Jl
ZmVycmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJp
dHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCisgICAgICAgICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRy
YUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDYgKzkwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTEz
Niw3ICsxMTM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdAog
ICAgIGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKLSAgICBp
ZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKSB8fCBy
ZWZlcnJlclBvbGljeSA9PSBOb1JlZmVycmVyKQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hv
dWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVycmVyUG9saWN5ID09IE5vUmVm
ZXJyZXIpCiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2Fk
VHlwZSBsb2FkVHlwZTsKQEAgLTI1ODYsNyArMjU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRD
cmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgU3RyaW5n
IHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6
c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2Vj
dXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikp
CiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2Fk
SW1hZ2UoRnJhbWUqIGZyYW1lLAogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldElzSW1hZ2UpOwogI2VuZGlmCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7Ci0gICAgaWYgKCFTZWN1cml0eU9y
aWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRl
UmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihmcmFtZS0+bG9hZGVyKCktPm91
dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1Rv
U3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5n
TG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdMb2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKQEAgLTg2
LDcgKzg3LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIAogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocGluZ1VSTCk7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1
ZXN0LCBzb3VyY2VPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKCJQaW5nLVRvIiwgZGVzdGluYXRpb25VUkwpOwotICAgIGlmICghU2VjdXJpdHlPcmln
aW46OnNob3VsZEhpZGVSZWZlcnJlcihwaW5nVVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSkpIHsKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJy
ZXIocGluZ1VSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKSB7CiAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUGluZy1Gcm9tIiwgZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKTsKICAgICAgIGlmICghc291cmNlT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9y
dChwaW5nT3JpZ2luLmdldCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMTA5LDcgKzExMCw3IEBAIHZv
aWQgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG8KICAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KHJlcG9ydCk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3Vi
cmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogCi0gICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hv
dWxkSGlkZVJlZmVycmVyKHJlcG9ydFVSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXBv
cnRVUkwsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkp
OwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5nTG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdM
b2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQpAQCAtMjYxLDcgKzI2Miw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZy
YW1lKEhUTUwKICAgICBpZiAoIW93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBib29sIGhpZGVSZWZlcnJlciA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRI
aWRlUmVmZXJyZXIodXJsLCByZWZlcnJlcik7CisgICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1
cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpOwogICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZUZyYW1l
KHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCBoaWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVy
cmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCiAgICAg
aWYgKCFmcmFtZSkgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NSw3ICs4
Niw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmMKICAgICAgICAg
b3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2lu
Z1JlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAgICB9CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46
OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKSkKKyAg
ICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKSkKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigp
OwogICAgIGVsc2UgaWYgKCFyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKQogICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMs
MTYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBTZWN1cml0eU9yaWdpbjo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiBjb25zdCBpbnQg
TWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotdHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNjZXNzRW50
cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCo+IE9yaWdpbkFjY2Vzc01hcDsKLQotc3RhdGljIE9yaWdpbkFjY2Vz
c01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdp
bkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7Ci0gICAgcmV0dXJuIG9yaWdpbkFjY2Vz
c01hcDsKLX0KLQogc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzLCAoKSk7CkBAIC0yNTEsNyArMjQxLDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2Fu
UmVxdWVzdChjb25zdCBLVQogICAgIGlmIChpc1NhbWVTY2hlbWVIb3N0UG9ydCh0YXJnZXRPcmln
aW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpc0FjY2Vzc1doaXRl
TGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSkpCisgICAgaWYgKFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1doaXRlTGlzdGVkKHRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg5LDIzICsyNzksNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoCiAgICAgcmV0dXJuIGNhbkFjY2Vzcyhk
cmFnSW5pdGlhdG9yKTsgIAogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1doaXRl
TGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pIGNvbnN0Ci17Ci0gICAg
aWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldCh0
b1N0cmluZygpKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUo
KTsgICsraSkgewotICAgICAgICAgICBpZiAobGlzdC0+YXQoaSkubWF0Y2hlc09yaWdpbigqdGFy
Z2V0T3JpZ2luKSkKLSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAotewotICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwot
ICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSk7Ci19Ci0K
IC8vIFRoaXMgaXMgYSBoYWNrIHRvIGFsbG93IGtlZXAgbmF2aWdhdGlvbiB0byBodHRwL2h0dHBz
IGZlZWRzIHdvcmtpbmcuIFRvIHJlbW92ZSB0aGlzCiAvLyB3ZSBuZWVkIHRvIGludHJvZHVjZSBu
ZXcgQVBJIGFraW4gdG8gcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsLCB0aGF0IHJlZ2lzdGVycyBh
CiAvLyBwcm90b2NvbHMgbmF2aWdhdGlvbiBwb2xpY3kuCkBAIC0zMzcsMTAgKzMxMCwxMCBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IEtVCiAgICAgICAgIHJldHVybiBj
YW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gbV9wcm90
b2NvbCA9PSBwcm90b2NvbCB8fCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodXJsKTsKKyAgICAg
ICAgcmV0dXJuIG1fcHJvdG9jb2wgPT0gcHJvdG9jb2wgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwogCi0gICAgaWYgKHJlc3RyaWN0QWNjZXNz
VG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgaXNB
Y2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHVybCk7CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0
cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0xvY2FsKHByb3RvY29sKSkKKyAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNl
cygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJs
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzUyLDcgKzMyNSw3IEBAIHZvaWQgU2VjdXJp
dHlPcmlnaW46OmdyYW50TG9hZExvY2FsUmVzb3UKICAgICAvLyBpbiBhIFNlY3VyaXR5T3JpZ2lu
IGlzIGEgc2VjdXJpdHkgaGF6YXJkIGJlY2F1c2UgdGhlIGRvY3VtZW50cyB3aXRob3V0CiAgICAg
Ly8gdGhlIHByaXZpbGVnZSBjYW4gb2J0YWluIHRoZSBwcml2aWxlZ2UgYnkgaW5qZWN0aW5nIHNj
cmlwdCBpbnRvIHRoZQogICAgIC8vIGRvY3VtZW50cyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIHRo
ZSBwcml2aWxlZ2UuCi0gICAgQVNTRVJUKGFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2Fs
KCkpOworICAgIEFTU0VSVChTZWN1cml0eVBvbGljeTo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vz
c1RvTG9jYWwoKSk7CiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSB0cnVlOwogfQogCkBA
IC01MDEsODYgKzQ3NCw0IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQ
b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlk
ZVJlZmVycmVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAg
ICBib29sIHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMi
KTsKLSAgICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHBy
b3RvY29sSXMocmVmZXJyZXIsICJodHRwIik7Ci0KLSAgICBpZiAoIXJlZmVycmVySXNXZWJVUkwp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnBy
b3RvY29sSXMoImh0dHBzIik7Ci0KLSAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwotfQotCi12
b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBv
bGljeSkKLXsKLSAgICBsb2NhbExvYWRQb2xpY3kgPSBwb2xpY3k7Ci19Ci0KLWJvb2wgU2VjdXJp
dHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCi17Ci0gICAgcmV0dXJuIGxvY2FsTG9h
ZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOwotfQotCi1i
b29sIFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCi17
Ci0gICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2Nh
bExvYWRzRm9yTG9jYWxPbmx5OwotfQotCi12b2lkIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwot
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5hZGQoc291cmNlU3RyaW5nLCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OwotCi0gICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAg
bGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7Ci19Ci0KLXZvaWQgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNv
dXJjZU9yaWdpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBPcmlnaW5BY2Nlc3NNYXAm
IG1hcCA9IG9yaWdpbkFjY2Vzc01hcCgpOwotICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChzb3VyY2VTdHJpbmcpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgc2l6ZV90IGluZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNj
ZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKLQotICAgIGlm
ICghbGlzdC0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtYXAucmVtb3ZlKGl0
KTsKLSAgICBkZWxldGUgbGlzdDsKLX0KLQotdm9pZCBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7Ci0gICAgZGVsZXRlQWxs
VmFsdWVzKG1hcCk7Ci0gICAgbWFwLmNsZWFyKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDk5NjUx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsMjEgKzE3Myw2IEBAIHB1YmxpYzoKICAgICAvLyAoYW5kIHdoZXRoZXIgaXQgd2Fz
IHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZvciBwb3N0TWVzc2Fn
ZS4KICAgICBib29sIGlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotCi0gICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewot
ICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2Fs
IGxvYWRzLgotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRh
LAotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHksCi0gICAgfTsKLSAgICBzdGF0
aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5KTsKLSAgICBzdGF0aWMg
Ym9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd1N1YnN0
aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOwotCi0gICAgc3RhdGljIHZvaWQgYWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwotICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBib29sIGZvcmNl
VW5pcXVlKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biopOwpAQCAtMTk1LDkgKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFJlbmFtZSB0
aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgogICAgIGJvb2wgcGFzc2Vz
RmlsZUNoZWNrKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAKLSAgICBib29sIGlzQWNj
ZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKLSAgICBib29sIGlz
QWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBLVVJMJikgY29uc3Q7Ci0KICAgICBTdHJpbmcg
bV9wcm90b2NvbDsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIG11dGFibGUgU3RyaW5nIG1fZW5j
b2RlZEhvc3Q7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDExLTExLTA3
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMg
InBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3ku
Y3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkluamVjdGVkQnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAg
ICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSk6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVkQnVuZGxlOjpyZXNldE9yaWdpbkFjY2Vz
c1doaXRlbGlzdHMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bG9hZFVSTCk6CisKIDIwMTEtMTEtMDgg
IEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtXaW5DYWly
b10gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjk5NjEzLgpJbmRleDogU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYg
KzUzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9y
aWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRv
ci5oPgogI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgpAQCAtMTcxLDE3ICsxNzIsMTcgQEAg
dm9pZCBJbmplY3RlZEJ1bmRsZTo6c2V0QXV0aG9yQW5kVXNlclN0eQogCiB2b2lkIEluamVjdGVk
QnVuZGxlOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAg
ICBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNl
Y3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQg
SW5qZWN0ZWRCdW5kbGU6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KGNvbnN0IFN0
cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVz
dGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVu
dHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0
aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21h
aW5zKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwog
fQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpjbGVhckFsbERhdGFiYXNlcygpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCShyZXZp
c2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQAogI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRWYWx1
ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsVmlldy5oPgorI2luY2x1ZGUgPFdlYkNvcmUv
U2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9Vc2VyR2VzdHVyZUluZGljYXRvci5oPgogCkBAIC05ODMsNyArOTg0LDcgQEAg
dm9pZCBQbHVnaW5WaWV3Ojpsb2FkVVJMKHVpbnQ2NF90IHJlcXVlcwogICAgIGZyYW1lTG9hZFJl
cXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShodHRw
Qm9keS5kYXRhKCksIGh0dHBCb2R5LnNpemUoKSkpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0
RnJhbWVOYW1lKHRhcmdldCk7CiAKLSAgICBpZiAoIVNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRl
UmVmZXJyZXIoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgZnJhbWUo
KS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCisgICAgaWYgKCFTZWN1cml0eVBvbGlj
eTo6c2hvdWxkSGlkZVJlZmVycmVyKGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCku
dXJsKCksIGZyYW1lKCktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQogICAgICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihmcmFtZSgp
LT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKTsKIAogICAgIG1fcGVuZGluZ1VSTFJlcXVl
c3RzLmFwcGVuZChVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdElELCBmcmFtZUxvYWRSZXF1ZXN0
LCBhbGxvd1BvcHVwcykpOwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDk5NjUxKQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgc3RhdGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJp
dHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5UG9saWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUltcGw6OnNldFJlZmVycmVyRm9yUmVxdWVzdCk6CisgICAgICAg
ICogc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToK
KyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVsaXN0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRl
UmVmZXJyZXIpOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjppbml0aWFsaXplTWFpbkZyYW1lKToKKwogMjAxMS0xMS0wOCAgTmF0
IER1Y2EgIDxuZHVjYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBXaGVuIEdD
M0RQcml2YXRlOjppbml0aWFsaXpFeHRlbnNpb25zIGZhaWxzLCBkb250IGtlZXAgcmV0cnlpbmcK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkocmV2
aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDcgQEAKICNpbmNsdWRlICJTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgIlNjcm9sbFR5cGVzLmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyVGhl
bWUuaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAjaW5jbHVkZSAiU2tpYVV0aWxzLmgiCiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEuaCIKQEAg
LTEwNjUsMTQgKzEwNjYsMTQgQEAgYm9vbCBXZWJGcmFtZUltcGw6OmlzVmlld1NvdXJjZU1vZGVF
bmFibAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBXZWJGcmFtZUltcGw6OnNldFJlZmVy
cmVyRm9yUmVxdWVzdCgKLSAgICBXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXZWJVUkwm
IHJlZmVycmVyVVJMKSB7Cit2b2lkIFdlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JSZXF1ZXN0
KFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFdlYlVSTCYgcmVmZXJyZXJVUkwpCit7CiAg
ICAgU3RyaW5nIHJlZmVycmVyOwogICAgIGlmIChyZWZlcnJlclVSTC5pc0VtcHR5KCkpCiAgICAg
ICAgIHJlZmVycmVyID0gbV9mcmFtZS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKTsKICAg
ICBlbHNlCiAgICAgICAgIHJlZmVycmVyID0gcmVmZXJyZXJVUkwuc3BlYygpLnV0ZjE2KCk7Ci0g
ICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIocmVxdWVzdC51cmwoKSwg
cmVmZXJyZXIpKQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHJl
cXVlc3QudXJsKCksIHJlZmVycmVyKSkKICAgICAgICAgcmV0dXJuOwogICAgIHJlcXVlc3Quc2V0
SFRUUEhlYWRlckZpZWxkKFdlYlN0cmluZzo6ZnJvbVVURjgoIlJlZmVyZXIiKSwgcmVmZXJyZXIp
OwogfQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3ku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5
UG9saWN5LmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZWN1cml0eVBvbGljeS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
CiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgiCkBAIC02OCw3ICs2
OSw3IEBAIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1cKICAgICBjb25z
dCBXZWJTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwKICAgICBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeSgKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoCiAgICAgICAgICpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHNvdXJjZU9yaWdpbiksIGRlc3Rp
bmF0aW9uUHJvdG9jb2wsCiAgICAgICAgIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwogfQpAQCAtNzksMTkgKzgwLDE5IEBAIHZvaWQgV2ViU2VjdXJpdHlQb2xp
Y3k6OnJlbW92ZU9yaWdpbkFjY2UKICAgICBjb25zdCBXZWJTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwKICAgICBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5
T3JpZ2luOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgKKyAgICBTZWN1cml0eVBv
bGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoCiAgICAgICAgICpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsCiAgICAg
ICAgIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2
b2lkIFdlYlNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewot
ICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBT
ZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIGJvb2wg
V2ViU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihjb25zdCBXZWJVUkwmIHVybCwg
Y29uc3QgV2ViU3RyaW5nJiByZWZlcnJlcikKIHsKLSAgICByZXR1cm4gU2VjdXJpdHlPcmlnaW46
OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKTsKKyAgICByZXR1cm4gU2VjdXJpdHlQ
b2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKTsKIH0KIAogdm9pZCBXZWJT
ZWN1cml0eVBvbGljeTo6cmVnaXN0ZXJVUkxTY2hlbWVBc05vdEFsbG93aW5nSmF2YXNjcmlwdFVS
THMoY29uc3QgV2ViU3RyaW5nJiBzY2hlbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcs
NyBAQAogI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0
b3IuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9s
aWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTcGVlY2hJbnB1dENsaWVu
dEltcGwuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKQEAgLTI5MCw3ICsyOTEsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjppbml0aWFsaXplTWFpbkZyYW1lKFdlCiAKICAgICAvLyBSZXN0cmlj
dCB0aGUgYWNjZXNzIHRvIHRoZSBsb2NhbCBmaWxlIHN5c3RlbQogICAgIC8vIChzZWUgV2ViVmll
dy5tbSBXZWJWaWV3OjpfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lKS4KLSAgICBT
ZWN1cml0eU9yaWdpbjo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5T3JpZ2luOjpBbGxvd0xv
Y2FsTG9hZHNGb3JMb2NhbE9ubHkpOworICAgIFNlY3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQ
b2xpY3koU2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seSk7CiB9CiAK
IHZvaWQgV2ViVmlld0ltcGw6OnNldEF1dG9maWxsQ2xpZW50KFdlYkF1dG9maWxsQ2xpZW50KiBh
dXRvZmlsbENsaWVudCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysg
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAg
ICBNb3ZlIHN0YXRpYyAicG9saWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBT
ZWN1cml0eVBvbGljeS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTcxNzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwOgor
ICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3Jp
Z2luKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzZXRPcmlnaW5BY2Nl
c3NXaGl0ZUxpc3RzKToKKwogMjAxMS0xMS0wOCAgWmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtA
Z21haWwuY29tPgogCiAgICAgICAgIFtXS11bR1RLXSBBcHBsaWNhdGlvbiBjYWNoZSBkaXJlY3Rv
cnkgaXMgaW5jb3JyZWN0bHkgc2V0CkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHJl
dmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAog
I2luY2x1ZGUgIlJlbmRlclRyZWVBc1RleHQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCiAj
aW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgog
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiV2ViS2l0RE9NUmFuZ2VQcml2YXRlLmgiCkBAIC02NjcsMTIgKzY2OCwxMiBAQCB2b2lkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6c2V0U21hcnRJCiAKIHZvaWQgRHVtcFJlbmRlclRyZWVT
dXBwb3J0R3RrOjp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IGdjaGFyKiBzb3VyY2VP
cmlnaW4sIGNvbnN0IGdjaGFyKiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBnY2hhciogZGVz
dGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNl
Y3VyaXR5T3JpZ2luOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwg
ZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJp
dHlQb2xpY3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0
aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cygpCiB7Ci0g
ICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNl
Y3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OmdjQ29sbGVjdEphdmFzY3JpcHRPYmplY3RzKCkKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdC9tYWMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMTEtMDcgIEFk
YW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9s
aWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5z
L0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAgKFdlYktpdDo6
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtKToK
KyAgICAgICAgKiBQbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAgICAo
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW06OldlYk5ldHNjYXBlUGx1Z2luU3RyZWFtKToKKyAgICAg
ICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisgICAgICAgICgrW1dlYlZpZXcg
X2FkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlv
blByb3RvY29sOmRlc3RpbmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToK
KyAgICAgICAgKCtbV2ViVmlldyBfcmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRo
U291cmNlT3JpZ2luOmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHNdKToKKwogMjAxMS0xMS0wOCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jh
cm9AYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgTlNSYW5nZSAvIERPTVJhbmdlIGZ1bmN0aW9u
cyBiYWNrIHRvIFdlYkZyYW1lSW50ZXJuYWwKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNpb24gOTk2NTEp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1l
TG9hZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0
eVBvbGljeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlT2JqQ0V4dHJhcy5oPgogI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUlu
dGVyZmFjZS5oPgpAQCAtMTcwLDggKzE3MSw4IEBAIFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpX
ZWJOZXRzY2FwZVBsdWcKICAgICBzZXRQbHVnaW4ocGx1Z2luKTsKICAgICAKICAgICBzdHJlYW1z
KCkuYWRkKCZtX3N0cmVhbSwgcGx1Z2luKTsKLSAgICAgICAgCi0gICAgaWYgKFNlY3VyaXR5T3Jp
Z2luOjpzaG91bGRIaWRlUmVmZXJyZXIoW3JlcXVlc3QgVVJMXSwgY29yZShbdmlldyB3ZWJGcmFt
ZV0pLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICAKKyAgICBpZiAoU2VjdXJp
dHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihbcmVxdWVzdCBVUkxdLCBjb3JlKFt2aWV3IHdl
YkZyYW1lXSktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQogICAgICAgICBbbV9yZXF1
ZXN0LmdldCgpIF93ZWJfc2V0SFRUUFJlZmVycmVyOm5pbF07CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNj
YXBlUGx1Z2luU3RyZWFtLm1tCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFj
L1BsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL0ZyYW1lTG9hZGVyLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVVJMUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9SZWZD
b3VudGVkTGVha0NvdW50ZXIuaD4KIApAQCAtNTgsNyArNTksNyBAQCBIb3N0ZWROZXRzY2FwZVBs
dWdpblN0cmVhbTo6SG9zdGVkTmV0c2NhCiAgICAgLCBtX3JlcXVlc3RVUkwoW3JlcXVlc3QgVVJM
XSkKICAgICAsIG1fZnJhbWVMb2FkZXIoMCkKIHsKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNo
b3VsZEhpZGVSZWZlcnJlcihbcmVxdWVzdCBVUkxdLCBjb3JlKFtpbnN0YW5jZS0+cGx1Z2luVmll
dygpIHdlYkZyYW1lXSktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQorICAgIGlmIChT
ZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKFtyZXF1ZXN0IFVSTF0sIGNvcmUoW2lu
c3RhbmNlLT5wbHVnaW5WaWV3KCkgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSkpCiAgICAgICAgIFttX3JlcXVlc3QuZ2V0KCkgX3dlYl9zZXRIVFRQUmVmZXJyZXI6bmls
XTsKIAogI2lmbmRlZiBOREVCVUcKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0JKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNTUsNiArMTU1LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUv
U2NyaXB0Q29udHJvbGxlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9TY3JpcHRWYWx1ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0
eVBvbGljeS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9UZXh0UmVzb3VyY2VEZWNvZGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RocmVhZENoZWNrLmg+
CkBAIC03NzcsMTEgKzc3OCwxMSBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhG
cmFtZU5hCiAKICAgICBpZiAoIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVS
U0lPTl9XSVRIX0xPQ0FMX1JFU09VUkNFX1NFQ1VSSVRZX1JFU1RSSUNUSU9OKSkgewogICAgICAg
ICAvLyBPcmlnaW5hbGx5LCB3ZSBhbGxvd2VkIGFsbCBsb2NhbCBsb2Fkcy4KLSAgICAgICAgU2Vj
dXJpdHlPcmlnaW46OnNldExvY2FsTG9hZFBvbGljeShTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2Nh
bExvYWRzRm9yQWxsKTsKKyAgICAgICAgU2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGlj
eShTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yQWxsKTsKICAgICB9IGVsc2UgaWYg
KCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9NT1JFX1NU
UklDVF9MT0NBTF9SRVNPVVJDRV9TRUNVUklUWV9SRVNUUklDVElPTikpIHsKICAgICAgICAgLy8g
TGF0ZXIsIHdlIGFsbG93ZWQgbG9jYWwgbG9hZHMgZm9yIGxvY2FsIFVSTHMgYW5kIGRvY3VtZW50
cyBsb2FkZWQKICAgICAgICAgLy8gd2l0aCBzdWJzdGl0dXRlIGRhdGEuCi0gICAgICAgIFNlY3Vy
aXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koU2VjdXJpdHlPcmlnaW46OkFsbG93TG9jYWxM
b2Fkc0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOworICAgICAgICBTZWN1cml0eVBvbGljeTo6
c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2Nh
bEFuZFN1YnN0aXR1dGVEYXRhKTsKICAgICB9CiAKICAgICBpZiAoIVdlYktpdExpbmtlZE9uT3JB
ZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9XSVRIT1VUX0NPTlRFTlRfU05JRkZJTkdfRk9SX0ZJ
TEVfVVJMUykpCkBAIC0yNDY3LDE3ICsyNDY4LDE3IEBAIC0gKE5TUGFzdGVib2FyZCAqKV9pbnNl
cnRpb25QYXN0ZWJvYXJkCiAKICsgKHZvaWQpX2FkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5
V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVzdGluYXRpb25Qcm90
b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0aW9uSG9zdDooTlNT
dHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6KEJPT0wp
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5n
KHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291
cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsgKHZvaWQpX3JlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjooTlNTdHJpbmcgKilzb3VyY2VPcmlnaW4gZGVz
dGluYXRpb25Qcm90b2NvbDooTlNTdHJpbmcgKilkZXN0aW5hdGlvblByb3RvY29sIGRlc3RpbmF0
aW9uSG9zdDooTlNTdHJpbmcgKilkZXN0aW5hdGlvbkhvc3QgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnM6KEJPT0wpYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMKIHsKLSAgICBTZWN1cml0eU9y
aWdpbjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9s
aWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGlu
YXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKICsodm9pZClfcmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3Jp
Z2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdHMoKTsKIH0KIAogLSAodm9pZClfdXBkYXRlQWN0aXZlU3RhdGUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBz
dGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2Uu
Y3BwOgorICAgICAgICAoUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFnZVByaXZhdGUpOgorICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcDoKKyAgICAgICAg
KER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3aGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKToKKyAg
ICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVXaGl0ZUxpc3RBY2Nlc3NGcm9t
T3JpZ2luKToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpyZXNldE9yaWdpbkFj
Y2Vzc1doaXRlTGlzdHMpOgorCiAyMDExLTExLTA4ICBMdWl6IEFnb3N0aW5pICA8bHVpei5hZ29z
dGluaUBwYWxtLmNvbT4KIAogICAgICAgICBbUXRdIFJlbW92aW5nIHF3ZWJraXRnbG9iYWwuaCBp
bmNsdXNpb24gZnJvbSBxd2Via2l0cGxhdGZvcm1wbHVnaW4uaApJbmRleDogU291cmNlL1dlYktp
dC9xdC9BcGkvcXdlYnBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlLmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0FwaS9x
d2VicGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsNyBAQAogI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2Nyb2xsYmFyLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAjaWYgZGVmaW5lZCBRX09TX1dJTjMyCiAjaW5jbHVkZSAiU3lzdGVtSW5mby5o
IgpAQCAtMzMwLDcgKzMzMSw3IEBAIFFXZWJQYWdlUHJpdmF0ZTo6UVdlYlBhZ2VQcml2YXRlKFFX
ZWJQYWcKICAgICBXZWJDb3JlOjpJbml0aWFsaXplTG9nZ2luZ0NoYW5uZWxzSWZOZWNlc3Nhcnko
KTsKICAgICBTY3JpcHRDb250cm9sbGVyOjppbml0aWFsaXplVGhyZWFkaW5nKCk7CiAgICAgV1RG
Ojppbml0aWFsaXplTWFpblRocmVhZCgpOwotICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpz
ZXRMb2NhbExvYWRQb2xpY3koV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OkFsbG93TG9jYWxMb2Fk
c0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOworICAgIFdlYkNvcmU6OlNlY3VyaXR5UG9saWN5
OjpzZXRMb2NhbExvYWRQb2xpY3koV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxM
b2Fkc0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOwogCiAgICAgUGxhdGZvcm1TdHJhdGVnaWVz
UXQ6OmluaXRpYWxpemUoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRRdC5jcHAJKHJldmlzaW9u
IDk5NjUxKQorKysgU291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJl
ZVN1cHBvcnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRl
ICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIgpAQCAtNDY0LDE3ICs0NjUsMTcgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cmVzdW1lQWN0aQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0Ojp3aGl0ZUxp
c3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0
cmluZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0
LCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2lu
OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZy
b21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25I
b3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OmFk
ZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3Qs
IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1
cHBvcnRRdDo6cmVtb3ZlV2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBRU3RyaW5nJiBz
b3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFFT
dHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykK
IHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
KlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0
aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgq
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRp
b25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7
CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc2V0T3JpZ2luQWNjZXNzV2hp
dGVMaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMo
KTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6c2V0RG9tYWluUmVsYXhhdGlv
bkZvcmJpZGRlbkZvclVSTFNjaGVtZShib29sIGZvcmJpZGRlbiwgY29uc3QgUVN0cmluZyYgc2No
ZW1lKQpJbmRleDogU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMS0x
MS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgc3Rh
dGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJpdHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5UG9s
aWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkpOgorICAgICAgICAoV2ViVmlldzo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkpOgorICAgICAgICAoV2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKToKKwog
MjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIE1v
dmUgRG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbiBzY2hlbWUgcmVnaXN0cnkgdG8gU2NoZW1lUmVn
aXN0cnkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJj
ZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2Ny
b2xsYmFyVGhlbWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGlu
Z3MuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NpbXBsZUZvbnREYXRhLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TeXN0ZW1JbmZvLmg+CkBAIC02MzU1LDE5ICs2MzU2LDE5IEBAIEhSRVNVTFQgV2ViVmll
dzo6aW52YWxpZGF0ZUJhY2tpbmdTdG9yZSgKIAogSFJFU1VMVCBXZWJWaWV3OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShCU1RSIHNvdXJjZU9yaWdpbiwgQlNUUiBkZXN0aW5hdGlvblBy
b3RvY29sLCBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFN0cmluZyhzb3VyY2VPcmlnaW4s
IFN5c1N0cmluZ0xlbihzb3VyY2VPcmlnaW4pKSksIFN0cmluZyhkZXN0aW5hdGlvblByb3RvY29s
LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Qcm90b2NvbCkpLCBTdHJpbmcoZGVzdGluYXRpb25I
b3N0LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Ib3N0KSksIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50
cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFN0cmluZyhzb3VyY2VPcmlnaW4s
IFN5c1N0cmluZ0xlbihzb3VyY2VPcmlnaW4pKSksIFN0cmluZyhkZXN0aW5hdGlvblByb3RvY29s
LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Qcm90b2NvbCkpLCBTdHJpbmcoZGVzdGluYXRpb25I
b3N0LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Ib3N0KSksIGFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJWaWV3OjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShCU1RSIHNvdXJjZU9yaWdpbiwgQlNUUiBkZXN0aW5h
dGlvblByb3RvY29sLCBCU1RSIGRlc3RpbmF0aW9uSG9zdCwgQk9PTCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFN0cmluZyhzb3Vy
Y2VPcmlnaW4sIFN5c1N0cmluZ0xlbihzb3VyY2VPcmlnaW4pKSksIFN0cmluZyhkZXN0aW5hdGlv
blByb3RvY29sLCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Qcm90b2NvbCkpLCBTdHJpbmcoZGVz
dGluYXRpb25Ib3N0LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Ib3N0KSksIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFN0cmluZyhz
b3VyY2VPcmlnaW4sIFN5c1N0cmluZ0xlbihzb3VyY2VPcmlnaW4pKSksIFN0cmluZyhkZXN0aW5h
dGlvblByb3RvY29sLCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Qcm90b2NvbCkpLCBTdHJpbmco
ZGVzdGluYXRpb25Ib3N0LCBTeXNTdHJpbmdMZW4oZGVzdGluYXRpb25Ib3N0KSksIGFsbG93RGVz
dGluYXRpb25TdWJkb21haW5zKTsKICAgICByZXR1cm4gU19PSzsKIH0KIAogSFJFU1VMVCBXZWJW
aWV3OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKQogewotICAgIFNlY3VyaXR5T3JpZ2lu
OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CiAgCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114207</attachid>
            <date>2011-11-08 22:34:15 -0800</date>
            <delta_ts>2011-11-08 23:00:20 -0800</delta_ts>
            <desc>now with svn add power</desc>
            <filename>bug-71755-20111108223414.patch</filename>
            <type>text/plain</type>
            <size>58109</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBz
dGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFNlY3VyaXR5T3Jp
Z2luIGNsYXNzIHNob3VsZCBiZSBmb2N1c2VkIG9uIHJlcHJlc2VudGluZyBhIHdlYgorICAgICAg
ICBzZWN1cml0eSBvcmlnaW4gcmF0aGVyIHRoYW4gYmVpbmcgYSBkdW1waW5nIGdyb3VuZCBmb3Ig
YWxsCisgICAgICAgIHNlY3VyaXR5LXJlbGF0ZWQgc3RhdGUuICBUaGlzIHBhdGNoIG1vdmVzIGEg
YnVuY2ggb2Ygc3RhdGljICJwb2xpY3kiCisgICAgICAgIHN0YXRlIGludG8gaXRzIG93biBTZWN1
cml0eVBvbGljeSBjbGFzcy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6Omxv
YWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kUGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9s
YXRpb24pOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKwogMjAxMS0xMS0wOCAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBDcmFzaCBhY2Nlc3NpbmcgZm9udCBmYWN0IHJ1bGUgcGFyZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw2ICsxMDA3LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVu
LmNwcAogICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisgICAgcGFnZS9TZWN1cml0eVBvbGlj
eS5jcHAKICAgICBwYWdlL1NldHRpbmdzLmNwcAogICAgIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MDgsNiArMjQwOCw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNiArMTAwMSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAg
ICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCisgICAgcGFnZS9TZWN1cml0eVBvbGljeS5jcHAg
XAogICAgIHBhZ2UvU2V0dGluZ3MuY3BwIFwKICAgICBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNw
cCBcCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzg1LDE0ICszODUsMTQgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxh
YmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYmFyVGhlbWU1dGhlbWVFdgogX19aTjdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9s
aWN5RQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJL
TlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjdy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW4yOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLUzBf
UktOM1dURjZTdHJpbmdFUzZfYgotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjMycmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04zV1RGNlN0cmluZ0VTNl9iCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9pCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRWIKK19fWk43V2ViQ29y
ZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xp
Y3lFCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzaG91bGRIaWRlUmVmZXJyZXJFUktO
U180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MjlhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2U3RyaW5nRVM2X2IK
K19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5RVJLUzBfUktOM1dURjZTdHJpbmdFUzZfYgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJh
Y2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdp
bkVFRUxtMEVFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xp
ZW50RQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw2ICs2NDUsNyBAQAogICAg
ICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaCcsCiAgICAgICAgICAgICAncGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCcsCisg
ICAgICAgICAgICAncGFnZS9TZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAgICdwYWdlL1Nl
dHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCcsCiAgICAg
ICAgICAgICAncGFnZS9Vc2VyQ29udGVudFR5cGVzLmgnLApAQCAtMjk4Myw2ICsyOTg0LDcgQEAK
ICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVu
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL1NlY3VyaXR5UG9saWN5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TZXR0aW5ncy5j
cHAnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwJywKICAgICAgICAg
ICAgICdwYWdlL1NwZWVjaElucHV0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU0
MzAsNiArMjU0MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxTZWN1cml0eVBvbGljeS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2VjdXJpdHlQb2xpY3kuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTZXR0
aW5ncy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMTUsNiArMzIxNSw4IEBACiAJCTk3M0RDNjQwMTQ1QTk0MDkwMDI4NDJDMiAv
KiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
RTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLzsgfTsK
IAkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNFMzI1NTEwODgz
QjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzREMkRBNDE0NkE1MzVEMDBENTFGOEIg
LyogU2VjdXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc0RDJEQTIxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNw
cCAqLzsgfTsKKwkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzREMkRBMzE0
NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLzsgfTsKIAkJOTc1MkQzOEQxNDEz
MTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBK
U0hUTUxTcGFuRWxlbWVudC5jcHAgKi87IH07CiAJCTk3NTJEMzhFMTQxMzEwNEIwMDMzMDVCRCAv
KiBKU0hUTUxTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc1MkQzOEMxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmggKi87IH07CiAJCTk3NUNBMjhBMTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1Q0EyODcxMzAzNjVG
ODAwRTk5QUQ5IC8qIENyeXB0by5jcHAgKi87IH07CkBAIC0xMDM4Myw2ICsxMDM4NSw4IEBACiAJ
CTk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzREMkRBMjE0NkE1MzVEMDBENTFG
OEIgLyogU2VjdXJpdHlQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
NzREMkRBMzE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTc1MkQzOEIxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNwYW5FbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc1MkQzOEMxNDEzMTA0QjAw
MzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3NUNBMjg3MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NTc1LDYgKzE1NTc5LDggQEAKIAkJCQlCQ0QwRTBGNzBFOTcyQzM1MDAyNjVERUEg
LyogU2VjdXJpdHlPcmlnaW4uY3BwICovLAogCQkJCUJDRDBFMEY4MEU5NzJDMzUwMDI2NURFQSAv
KiBTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDRDBFMEY5MEU5NzJDMzUwMDI2NURFQSAvKiBT
ZWN1cml0eU9yaWdpbkhhc2guaCAqLywKKwkJCQk5NzREMkRBMjE0NkE1MzVEMDBENTFGOEIgLyog
U2VjdXJpdHlQb2xpY3kuY3BwICovLAorCQkJCTk3NEQyREEzMTQ2QTUzNUQwMEQ1MUY4QiAvKiBT
ZWN1cml0eVBvbGljeS5oICovLAogCQkJCTE0QzlBNUU5MEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0
aW5ncy5jcHAgKi8sCiAJCQkJRjU4Nzg2M0EwMkRFM0ExNDAxRUE0MTIyIC8qIFNldHRpbmdzLmgg
Ki8sCiAJCQkJNjI2Q0RFMEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNw
cCAqLywKQEAgLTI0NjM0LDYgKzI0NjQwLDcgQEAKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1
QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNzQ5Myw2ICsyNzUwMCw3IEBACiAJCQkJQ0RFQTc2MzUxNDYwQjcx
QTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYy
MjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEz
NDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5OTY1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC00NDEwLDcgKzQ0
MTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsLCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmNyZWF0ZSh0aGlzKSk7CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmFsbG93U3Vic3RpdHV0
ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vi
c3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVu
dCB3YXMgbG9hZGVkIHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgog
ICAgICAgICAvLyBsb2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTYKICAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2MCBmb3IgZnVydGhlcgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTUxMSw3ICs1MTIsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVuCiAKICAgICAgICAgaWYgKCFoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHJlZmVycmVyID0gZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1Jl
ZmVycmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJp
dHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCisgICAgICAgICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRy
YUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDYgKzkwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTEz
Niw3ICsxMTM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdAog
ICAgIGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKLSAgICBp
ZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKSB8fCBy
ZWZlcnJlclBvbGljeSA9PSBOb1JlZmVycmVyKQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hv
dWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVycmVyUG9saWN5ID09IE5vUmVm
ZXJyZXIpCiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2Fk
VHlwZSBsb2FkVHlwZTsKQEAgLTI1ODYsNyArMjU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRD
cmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgU3RyaW5n
IHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6
c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2Vj
dXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikp
CiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2Fk
SW1hZ2UoRnJhbWUqIGZyYW1lLAogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldElzSW1hZ2UpOwogI2VuZGlmCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7Ci0gICAgaWYgKCFTZWN1cml0eU9y
aWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRl
UmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihmcmFtZS0+bG9hZGVyKCktPm91
dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1Rv
U3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5n
TG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdMb2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKQEAgLTg2
LDcgKzg3LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIAogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocGluZ1VSTCk7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1
ZXN0LCBzb3VyY2VPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKCJQaW5nLVRvIiwgZGVzdGluYXRpb25VUkwpOwotICAgIGlmICghU2VjdXJpdHlPcmln
aW46OnNob3VsZEhpZGVSZWZlcnJlcihwaW5nVVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSkpIHsKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJy
ZXIocGluZ1VSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKSB7CiAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUGluZy1Gcm9tIiwgZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKTsKICAgICAgIGlmICghc291cmNlT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9y
dChwaW5nT3JpZ2luLmdldCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMTA5LDcgKzExMCw3IEBAIHZv
aWQgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG8KICAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KHJlcG9ydCk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3Vi
cmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogCi0gICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hv
dWxkSGlkZVJlZmVycmVyKHJlcG9ydFVSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXBv
cnRVUkwsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkp
OwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5nTG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdM
b2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQpAQCAtMjYxLDcgKzI2Miw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZy
YW1lKEhUTUwKICAgICBpZiAoIW93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBib29sIGhpZGVSZWZlcnJlciA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRI
aWRlUmVmZXJyZXIodXJsLCByZWZlcnJlcik7CisgICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1
cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpOwogICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZUZyYW1l
KHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCBoaWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVy
cmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCiAgICAg
aWYgKCFmcmFtZSkgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NSw3ICs4
Niw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmMKICAgICAgICAg
b3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2lu
Z1JlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAgICB9CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46
OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKSkKKyAg
ICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKSkKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigp
OwogICAgIGVsc2UgaWYgKCFyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKQogICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMs
MTYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBTZWN1cml0eU9yaWdpbjo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiBjb25zdCBpbnQg
TWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotdHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNjZXNzRW50
cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCo+IE9yaWdpbkFjY2Vzc01hcDsKLQotc3RhdGljIE9yaWdpbkFjY2Vz
c01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdp
bkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7Ci0gICAgcmV0dXJuIG9yaWdpbkFjY2Vz
c01hcDsKLX0KLQogc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzLCAoKSk7CkBAIC0yNTEsNyArMjQxLDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2Fu
UmVxdWVzdChjb25zdCBLVQogICAgIGlmIChpc1NhbWVTY2hlbWVIb3N0UG9ydCh0YXJnZXRPcmln
aW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpc0FjY2Vzc1doaXRl
TGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSkpCisgICAgaWYgKFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1doaXRlTGlzdGVkKHRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg5LDIzICsyNzksNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoCiAgICAgcmV0dXJuIGNhbkFjY2Vzcyhk
cmFnSW5pdGlhdG9yKTsgIAogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1doaXRl
TGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pIGNvbnN0Ci17Ci0gICAg
aWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldCh0
b1N0cmluZygpKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUo
KTsgICsraSkgewotICAgICAgICAgICBpZiAobGlzdC0+YXQoaSkubWF0Y2hlc09yaWdpbigqdGFy
Z2V0T3JpZ2luKSkKLSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAotewotICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwot
ICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSk7Ci19Ci0K
IC8vIFRoaXMgaXMgYSBoYWNrIHRvIGFsbG93IGtlZXAgbmF2aWdhdGlvbiB0byBodHRwL2h0dHBz
IGZlZWRzIHdvcmtpbmcuIFRvIHJlbW92ZSB0aGlzCiAvLyB3ZSBuZWVkIHRvIGludHJvZHVjZSBu
ZXcgQVBJIGFraW4gdG8gcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsLCB0aGF0IHJlZ2lzdGVycyBh
CiAvLyBwcm90b2NvbHMgbmF2aWdhdGlvbiBwb2xpY3kuCkBAIC0zMzcsMTAgKzMxMCwxMCBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IEtVCiAgICAgICAgIHJldHVybiBj
YW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gbV9wcm90
b2NvbCA9PSBwcm90b2NvbCB8fCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodXJsKTsKKyAgICAg
ICAgcmV0dXJuIG1fcHJvdG9jb2wgPT0gcHJvdG9jb2wgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwogCi0gICAgaWYgKHJlc3RyaWN0QWNjZXNz
VG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgaXNB
Y2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHVybCk7CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0
cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0xvY2FsKHByb3RvY29sKSkKKyAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNl
cygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJs
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzUyLDcgKzMyNSw3IEBAIHZvaWQgU2VjdXJp
dHlPcmlnaW46OmdyYW50TG9hZExvY2FsUmVzb3UKICAgICAvLyBpbiBhIFNlY3VyaXR5T3JpZ2lu
IGlzIGEgc2VjdXJpdHkgaGF6YXJkIGJlY2F1c2UgdGhlIGRvY3VtZW50cyB3aXRob3V0CiAgICAg
Ly8gdGhlIHByaXZpbGVnZSBjYW4gb2J0YWluIHRoZSBwcml2aWxlZ2UgYnkgaW5qZWN0aW5nIHNj
cmlwdCBpbnRvIHRoZQogICAgIC8vIGRvY3VtZW50cyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIHRo
ZSBwcml2aWxlZ2UuCi0gICAgQVNTRVJUKGFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2Fs
KCkpOworICAgIEFTU0VSVChTZWN1cml0eVBvbGljeTo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vz
c1RvTG9jYWwoKSk7CiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSB0cnVlOwogfQogCkBA
IC01MDEsODYgKzQ3NCw0IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQ
b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlk
ZVJlZmVycmVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAg
ICBib29sIHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMi
KTsKLSAgICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHBy
b3RvY29sSXMocmVmZXJyZXIsICJodHRwIik7Ci0KLSAgICBpZiAoIXJlZmVycmVySXNXZWJVUkwp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnBy
b3RvY29sSXMoImh0dHBzIik7Ci0KLSAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwotfQotCi12
b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBv
bGljeSkKLXsKLSAgICBsb2NhbExvYWRQb2xpY3kgPSBwb2xpY3k7Ci19Ci0KLWJvb2wgU2VjdXJp
dHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCi17Ci0gICAgcmV0dXJuIGxvY2FsTG9h
ZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOwotfQotCi1i
b29sIFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCi17
Ci0gICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2Nh
bExvYWRzRm9yTG9jYWxPbmx5OwotfQotCi12b2lkIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwot
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5hZGQoc291cmNlU3RyaW5nLCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OwotCi0gICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAg
bGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7Ci19Ci0KLXZvaWQgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNv
dXJjZU9yaWdpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBPcmlnaW5BY2Nlc3NNYXAm
IG1hcCA9IG9yaWdpbkFjY2Vzc01hcCgpOwotICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChzb3VyY2VTdHJpbmcpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgc2l6ZV90IGluZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNj
ZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKLQotICAgIGlm
ICghbGlzdC0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtYXAucmVtb3ZlKGl0
KTsKLSAgICBkZWxldGUgbGlzdDsKLX0KLQotdm9pZCBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7Ci0gICAgZGVsZXRlQWxs
VmFsdWVzKG1hcCk7Ci0gICAgbWFwLmNsZWFyKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDk5NjUx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsMjEgKzE3Myw2IEBAIHB1YmxpYzoKICAgICAvLyAoYW5kIHdoZXRoZXIgaXQgd2Fz
IHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZvciBwb3N0TWVzc2Fn
ZS4KICAgICBib29sIGlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotCi0gICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewot
ICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2Fs
IGxvYWRzLgotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRh
LAotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHksCi0gICAgfTsKLSAgICBzdGF0
aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5KTsKLSAgICBzdGF0aWMg
Ym9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd1N1YnN0
aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOwotCi0gICAgc3RhdGljIHZvaWQgYWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwotICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBib29sIGZvcmNl
VW5pcXVlKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biopOwpAQCAtMTk1LDkgKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFJlbmFtZSB0
aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgogICAgIGJvb2wgcGFzc2Vz
RmlsZUNoZWNrKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAKLSAgICBib29sIGlzQWNj
ZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKLSAgICBib29sIGlz
QWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBLVVJMJikgY29uc3Q7Ci0KICAgICBTdHJpbmcg
bV9wcm90b2NvbDsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIG11dGFibGUgU3RyaW5nIG1fZW5j
b2RlZEhvc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWN1
cml0eVBvbGljeS5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk9yaWdpbkFjY2Vz
c0VudHJ5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNlY3VyaXR5
UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gU2VjdXJpdHlQb2xpY3k6
OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKKwordHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNj
ZXNzRW50cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCo+IE9yaWdpbkFjY2Vzc01hcDsKKworc3RhdGljIE9yaWdp
bkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KE9yaWdpbkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7CisgICAgcmV0dXJuIG9yaWdp
bkFjY2Vzc01hcDsKK30KKworYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVy
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3sKKyAgICBib29sIHJl
ZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMiKTsKKyAgICBi
b29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29sSXMo
cmVmZXJyZXIsICJodHRwIik7CisKKyAgICBpZiAoIXJlZmVycmVySXNXZWJVUkwpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnByb3RvY29sSXMo
Imh0dHBzIik7CisKKyAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOworfQorCit2b2lkIFNlY3Vy
aXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBvbGljeSkKK3sK
KyAgICBsb2NhbExvYWRQb2xpY3kgPSBwb2xpY3k7Cit9CisKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6
OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCit7CisgICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAh
PSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOworfQorCitib29sIFNlY3Vy
aXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCit7CisgICAgcmV0
dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9y
TG9jYWxPbmx5OworfQorCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVk
KGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXRPcmlnaW4pCit7CisgICAgaWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9
IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4tPnRvU3RyaW5nKCkpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+c2l6ZSgpOyAgKytpKSB7CisgICAgICAg
ICAgIGlmIChsaXN0LT5hdChpKS5tYXRjaGVzT3JpZ2luKCp0YXJnZXRPcmlnaW4pKQorICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25z
dCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCk7CisgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZlT3JpZ2luLCB0
YXJnZXRPcmlnaW4uZ2V0KCkpOworfQorCit2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwor
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CisgICAgcGFpcjxP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5hZGQoc291cmNlU3RyaW5nLCAwKTsKKyAgICBpZiAocmVzdWx0LnNlY29uZCkKKyAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OworCisgICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
bGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7Cit9CisKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7CisgICAgaWYgKHNv
dXJjZU9yaWdpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBPcmlnaW5BY2Nlc3NNYXAm
IG1hcCA9IG9yaWdpbkFjY2Vzc01hcCgpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChzb3VyY2VTdHJpbmcpOworICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7CisgICAgc2l6ZV90IGluZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNj
ZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKKworICAgIGlm
ICghbGlzdC0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAucmVtb3ZlKGl0
KTsKKyAgICBkZWxldGUgbGlzdDsKK30KKwordm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7CisgICAgZGVsZXRlQWxs
VmFsdWVzKG1hcCk7CisgICAgbWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNlY3VyaXR5UG9saWN5X2gKKyNkZWZpbmUgU2VjdXJpdHlQb2xpY3lf
aAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgS1VSTDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBTZWN1cml0
eVBvbGljeSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVycmVyKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKworICAgIGVudW0gTG9jYWxMb2Fk
UG9saWN5IHsKKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlv
biBvbiBsb2NhbCBsb2Fkcy4KKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJz
dGl0dXRlRGF0YSwKKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5LAorICAgIH07
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5KTsK
KyAgICBzdGF0aWMgYm9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKKyAgICBzdGF0aWMgYm9v
bCBhbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOworCisgICAgc3RhdGljIHZvaWQg
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAg
ICBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1
cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpOworCisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2lu
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgS1VSTCYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2VjdXJpdHlQb2xpY3lfaApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgc3RhdGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJp
dHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5UG9saWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmxvYWRVUkwpOgorCiAyMDExLTExLTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHI5OTYxMy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA5OTY1MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJy
YXlQdHIuaD4KQEAgLTE3MSwxNyArMTcyLDE3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEF1
dGhvckFuZFVzZXJTdHkKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhz
b3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdp
bjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0
aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5
OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlPcmln
aW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5Ojpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
Y2xlYXJBbGxEYXRhYmFzZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRp
Y2F0b3IuaD4KIApAQCAtOTgzLDcgKzk4NCw3IEBAIHZvaWQgUGx1Z2luVmlldzo6bG9hZFVSTCh1
aW50NjRfdCByZXF1ZXMKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNl
dEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoaHR0cEJvZHkuZGF0YSgpLCBodHRwQm9keS5zaXpl
KCkpKTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwogCi0gICAg
aWYgKCFTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKGZyYW1lTG9hZFJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihmcmFt
ZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBmcmFtZSgpLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJl
cXVlc3QoKS5zZXRIVFRQUmVmZXJyZXIoZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJy
ZXIoKSk7CiAKICAgICBtX3BlbmRpbmdVUkxSZXF1ZXN0cy5hcHBlbmQoVVJMUmVxdWVzdDo6Y3Jl
YXRlKHJlcXVlc3RJRCwgZnJhbWVMb2FkUmVxdWVzdCwgYWxsb3dQb3B1cHMpKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEt
MTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0
YXRpYyAicG9saWN5IiBzdGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBv
bGljeS5jcHAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTcxNzU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpz
ZXRSZWZlcnJlckZvclJlcXVlc3QpOgorICAgICAgICAqIHNyYy9XZWJTZWN1cml0eVBvbGljeS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3VyaXR5UG9saWN5OjpyZW1v
dmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNlY3Vy
aXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKToKKyAgICAgICAgKiBzcmMv
V2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6aW5pdGlhbGl6
ZU1haW5GcmFtZSk6CisKIDIwMTEtMTEtMDggIE5hdCBEdWNhICA8bmR1Y2FAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gV2hlbiBHQzNEUHJpdmF0ZTo6aW5pdGlhbGl6RXh0ZW5z
aW9ucyBmYWlscywgZG9udCBrZWVwIHJldHJ5aW5nCkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI5
LDYgKzEyOSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTY3JvbGxU
eXBlcy5oIgogI2luY2x1ZGUgIlNjcm9sbGJhclRoZW1lLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQ
b2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNraWFVdGlscy5oIgog
I2luY2x1ZGUgIlN1YnN0aXR1dGVEYXRhLmgiCkBAIC0xMDY1LDE0ICsxMDY2LDE0IEBAIGJvb2wg
V2ViRnJhbWVJbXBsOjppc1ZpZXdTb3VyY2VNb2RlRW5hYmwKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgV2ViRnJhbWVJbXBsOjpzZXRSZWZlcnJlckZvclJlcXVlc3QoCi0gICAgV2ViVVJM
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVVJMJiByZWZlcnJlclVSTCkgewordm9pZCBXZWJG
cmFtZUltcGw6OnNldFJlZmVycmVyRm9yUmVxdWVzdChXZWJVUkxSZXF1ZXN0JiByZXF1ZXN0LCBj
b25zdCBXZWJVUkwmIHJlZmVycmVyVVJMKQorewogICAgIFN0cmluZyByZWZlcnJlcjsKICAgICBp
ZiAocmVmZXJyZXJVUkwuaXNFbXB0eSgpKQogICAgICAgICByZWZlcnJlciA9IG1fZnJhbWUtPmxv
YWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCk7CiAgICAgZWxzZQogICAgICAgICByZWZlcnJlciA9
IHJlZmVycmVyVVJMLnNwZWMoKS51dGYxNigpOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6c2hv
dWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2VjdXJp
dHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikpCiAg
ICAgICAgIHJldHVybjsKICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZChXZWJTdHJpbmc6
OmZyb21VVEY4KCJSZWZlcmVyIiksIHJlZmVycmVyKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1cml0eVBvbGljeS5jcHAJKHJldmlzaW9uIDk5NjUx
KQorKysgU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKIAogI2luY2x1ZGUgIldlYlN0cmluZy5oIgog
I2luY2x1ZGUgIldlYlVSTC5oIgpAQCAtNjgsNyArNjksNyBAQCB2b2lkIFdlYlNlY3VyaXR5UG9s
aWN5OjphZGRPcmlnaW5BY2Nlc3NXCiAgICAgY29uc3QgV2ViU3RyaW5nJiBkZXN0aW5hdGlvbkhv
c3QsCiAgICAgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0
eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoCisgICAgU2VjdXJpdHlQb2xp
Y3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KAogICAgICAgICAqU2VjdXJpdHlPcmln
aW46OmNyZWF0ZShzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLAogICAgICAgICBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KQEAgLTc5LDE5
ICs4MCwxOSBAQCB2b2lkIFdlYlNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2NlCiAgICAg
Y29uc3QgV2ViU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsCiAgICAgYm9vbCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVtb3ZlT3JpZ2luQWNjZXNz
V2hpdGVsaXN0RW50cnkoCisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KAogICAgICAgICAqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShzb3VyY2VPcmln
aW4pLCBkZXN0aW5hdGlvblByb3RvY29sLAogICAgICAgICBkZXN0aW5hdGlvbkhvc3QsIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogdm9pZCBXZWJTZWN1cml0eVBvbGljeTo6cmVz
ZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2lu
QWNjZXNzV2hpdGVsaXN0cygpOwogfQogCiBib29sIFdlYlNlY3VyaXR5UG9saWN5OjpzaG91bGRI
aWRlUmVmZXJyZXIoY29uc3QgV2ViVVJMJiB1cmwsIGNvbnN0IFdlYlN0cmluZyYgcmVmZXJyZXIp
CiB7Ci0gICAgcmV0dXJuIFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIodXJsLCBy
ZWZlcnJlcik7CisgICAgcmV0dXJuIFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIo
dXJsLCByZWZlcnJlcik7CiB9CiAKIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNOb3RBbGxvd2luZ0phdmFzY3JpcHRVUkxzKGNvbnN0IFdlYlN0cmluZyYgc2NoZW1l
KQpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2
aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTk3LDYgKzk3LDcgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdp
c3RyeS5oIgogI2luY2x1ZGUgIlNjcm9sbEFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlP
cmlnaW4uaCIKKyNpbmNsdWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdz
LmgiCiAjaW5jbHVkZSAiU3BlZWNoSW5wdXRDbGllbnRJbXBsLmgiCiAjaW5jbHVkZSAiVGV4dEl0
ZXJhdG9yLmgiCkBAIC0yOTAsNyArMjkxLDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aW5pdGlhbGl6
ZU1haW5GcmFtZShXZQogCiAgICAgLy8gUmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgbG9jYWwg
ZmlsZSBzeXN0ZW0KICAgICAvLyAoc2VlIFdlYlZpZXcubW0gV2ViVmlldzo6X2NvbW1vbkluaXRp
YWxpemF0aW9uV2l0aEZyYW1lTmFtZSkuCi0gICAgU2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9h
ZFBvbGljeShTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5KTsKKyAg
ICBTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5UG9saWN5OjpBbGxv
d0xvY2FsTG9hZHNGb3JMb2NhbE9ubHkpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjpzZXRBdXRv
ZmlsbENsaWVudChXZWJBdXRvZmlsbENsaWVudCogYXV0b2ZpbGxDbGllbnQpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3Rh
dGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrLmNwcDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3Vw
cG9ydEd0azo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVuZGVy
VHJlZVN1cHBvcnRHdGs6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisKIDIwMTEtMTEt
MDggIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KIAogICAgICAgICBbV0td
W0dUS10gQXBwbGljYXRpb24gY2FjaGUgZGlyZWN0b3J5IGlzIGluY29ycmVjdGx5IHNldApJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlQXNUZXh0
LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIldlYktpdERPTVJhbmdlUHJpdmF0ZS5o
IgpAQCAtNjY3LDEyICs2NjgsMTIgQEAgdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OnNl
dFNtYXJ0SQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6d2hpdGVMaXN0QWNjZXNz
RnJvbU9yaWdpbihjb25zdCBnY2hhciogc291cmNlT3JpZ2luLCBjb25zdCBnY2hhciogZGVzdGlu
YXRpb25Qcm90b2NvbCwgY29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rl
c3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3Jp
Z2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0
aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9y
aWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpn
Y0NvbGxlY3RKYXZhc2NyaXB0T2JqZWN0cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDIwIEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9y
aWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW06CisgICAgICAgIChXZWJLaXQ6Okhvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFt
OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgICogUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBlUGx1Z2luU3RyZWFtOjpX
ZWJOZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3Jv
dXBOYW1lOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RF
bnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhvc3Q6
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3JlbW92
ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5V2l0aFNvdXJjZU9yaWdpbjpkZXN0aW5hdGlvblBy
b3RvY29sOmRlc3RpbmF0aW9uSG9zdDphbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWluczpdKToKKyAg
ICAgICAgKCtbV2ViVmlldyBfcmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzXSk6CisKIDIwMTEt
MTEtMDggIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBN
b3ZlIE5TUmFuZ2UgLyBET01SYW5nZSBmdW5jdGlvbnMgYmFjayB0byBXZWJGcmFtZUludGVybmFs
CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFt
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQ
bHVnaW5TdHJlYW0ubW0JKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdC9tYWMvUGx1
Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNv
cmUvV2ViQ29yZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVSTFJlc3Bv
bnNlLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KQEAgLTE3MCw4ICsxNzEs
OCBAQCBXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnCiAgICAgc2V0UGx1
Z2luKHBsdWdpbik7CiAgICAgCiAgICAgc3RyZWFtcygpLmFkZCgmbV9zdHJlYW0sIHBsdWdpbik7
Ci0gICAgICAgIAotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKFty
ZXF1ZXN0IFVSTF0sIGNvcmUoW3ZpZXcgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5nUmVm
ZXJyZXIoKSkpCisgICAgCisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJy
ZXIoW3JlcXVlc3QgVVJMXSwgY29yZShbdmlldyB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+b3V0Z29p
bmdSZWZlcnJlcigpKSkKICAgICAgICAgW21fcmVxdWVzdC5nZXQoKSBfd2ViX3NldEhUVFBSZWZl
cnJlcjpuaWxdOwogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9I
b3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbS5tbQkocmV2aXNp
b24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Ib3N0ZWROZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2lt
cG9ydCA8V2ViQ29yZS9GcmFtZUxvYWRlci5oPgogI2ltcG9ydCA8V2ViQ29yZS9SZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbXBv
cnQgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVVS
TFJlc3BvbnNlLmg+CiAjaW1wb3J0IDx3dGYvUmVmQ291bnRlZExlYWtDb3VudGVyLmg+CiAKQEAg
LTU4LDcgKzU5LDcgQEAgSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW06Okhvc3RlZE5ldHNjYQog
ICAgICwgbV9yZXF1ZXN0VVJMKFtyZXF1ZXN0IFVSTF0pCiAgICAgLCBtX2ZyYW1lTG9hZGVyKDAp
CiB7Ci0gICAgaWYgKFNlY3VyaXR5T3JpZ2luOjpzaG91bGRIaWRlUmVmZXJyZXIoW3JlcXVlc3Qg
VVJMXSwgY29yZShbaW5zdGFuY2UtPnBsdWdpblZpZXcoKSB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihbcmVxdWVzdCBVUkxdLCBjb3JlKFtpbnN0YW5jZS0+cGx1Z2luVmlldygpIHdlYkZy
YW1lXSktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQogICAgICAgICBbbV9yZXF1ZXN0
LmdldCgpIF93ZWJfc2V0SFRUUFJlZmVycmVyOm5pbF07CiAKICNpZm5kZWYgTkRFQlVHCkluZGV4
OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA5OTY1MSkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTU1
LDYgKzE1NSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KICNpbXBv
cnQgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KKyNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlQb2xpY3kuaD4KICNpbXBvcnQgPFdlYkNv
cmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9UaHJlYWRDaGVjay5oPgpAQCAtNzc3LDExICs3NzgsMTEgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogCiAgICAgaWYgKCFXZWJLaXRM
aW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05fV0lUSF9MT0NBTF9SRVNPVVJDRV9T
RUNVUklUWV9SRVNUUklDVElPTikpIHsKICAgICAgICAgLy8gT3JpZ2luYWxseSwgd2UgYWxsb3dl
ZCBhbGwgbG9jYWwgbG9hZHMuCi0gICAgICAgIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQ
b2xpY3koU2VjdXJpdHlPcmlnaW46OkFsbG93TG9jYWxMb2Fkc0ZvckFsbCk7CisgICAgICAgIFNl
Y3VyaXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koU2VjdXJpdHlQb2xpY3k6OkFsbG93TG9j
YWxMb2Fkc0ZvckFsbCk7CiAgICAgfSBlbHNlIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdF
QktJVF9GSVJTVF9WRVJTSU9OX1dJVEhfTU9SRV9TVFJJQ1RfTE9DQUxfUkVTT1VSQ0VfU0VDVVJJ
VFlfUkVTVFJJQ1RJT04pKSB7CiAgICAgICAgIC8vIExhdGVyLCB3ZSBhbGxvd2VkIGxvY2FsIGxv
YWRzIGZvciBsb2NhbCBVUkxzIGFuZCBkb2N1bWVudHMgbG9hZGVkCiAgICAgICAgIC8vIHdpdGgg
c3Vic3RpdHV0ZSBkYXRhLgotICAgICAgICBTZWN1cml0eU9yaWdpbjo6c2V0TG9jYWxMb2FkUG9s
aWN5KFNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVE
YXRhKTsKKyAgICAgICAgU2VjdXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGljeShTZWN1cml0
eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CiAgICAg
fQogCiAgICAgaWYgKCFXZWJLaXRMaW5rZWRPbk9yQWZ0ZXIoV0VCS0lUX0ZJUlNUX1ZFUlNJT05f
V0lUSE9VVF9DT05URU5UX1NOSUZGSU5HX0ZPUl9GSUxFX1VSTFMpKQpAQCAtMjQ2NywxNyArMjQ2
OCwxNyBAQCAtIChOU1Bhc3RlYm9hcmQgKilfaW5zZXJ0aW9uUGFzdGVib2FyZAogCiArICh2b2lk
KV9hZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46KE5TU3RyaW5n
ICopc291cmNlT3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5nICopZGVzdGluYXRp
b25Qcm90b2NvbCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGluYXRpb25Ib3N0IGFs
bG93RGVzdGluYXRpb25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRpb25TdWJkb21haW5z
CiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiArICh2b2lkKV9yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeVdpdGhTb3VyY2VPcmln
aW46KE5TU3RyaW5nICopc291cmNlT3JpZ2luIGRlc3RpbmF0aW9uUHJvdG9jb2w6KE5TU3RyaW5n
ICopZGVzdGluYXRpb25Qcm90b2NvbCBkZXN0aW5hdGlvbkhvc3Q6KE5TU3RyaW5nICopZGVzdGlu
YXRpb25Ib3N0IGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zOihCT09MKWFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1do
aXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmln
aW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRp
b25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdp
biksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOwogfQogCiArKHZvaWQpX3Jlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cwog
ewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAg
ICBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIC0g
KHZvaWQpX3VwZGF0ZUFjdGl2ZVN0YXRlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gOTk2
NTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5j
cHAgdG8gU2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlUHJp
dmF0ZTo6UVdlYlBhZ2VQcml2YXRlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6
d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBv
cnRRdDo6cmVtb3ZlV2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbik6CisgICAgICAgIChEdW1wUmVu
ZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxpc3RzKToKKwogMjAxMS0x
MS0wOCAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAcGFsbS5jb20+CiAKICAgICAgICAg
W1F0XSBSZW1vdmluZyBxd2Via2l0Z2xvYmFsLmggaW5jbHVzaW9uIGZyb20gcXdlYmtpdHBsYXRm
b3JtcGx1Z2luLmgKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9uIDk5
NjUxKQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMDUsNiArMTA1LDcgQEAKICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lmIGRlZmluZWQgUV9P
U19XSU4zMgogI2luY2x1ZGUgIlN5c3RlbUluZm8uaCIKQEAgLTMzMCw3ICszMzEsNyBAQCBRV2Vi
UGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0ZShRV2ViUGFnCiAgICAgV2ViQ29yZTo6SW5pdGlh
bGl6ZUxvZ2dpbmdDaGFubmVsc0lmTmVjZXNzYXJ5KCk7CiAgICAgU2NyaXB0Q29udHJvbGxlcjo6
aW5pdGlhbGl6ZVRocmVhZGluZygpOwogICAgIFdURjo6aW5pdGlhbGl6ZU1haW5UaHJlYWQoKTsK
LSAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6c2V0TG9jYWxMb2FkUG9saWN5KFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRh
KTsKKyAgICBXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6c2V0TG9jYWxMb2FkUG9saWN5KFdlYkNv
cmU6OlNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVE
YXRhKTsKIAogICAgIFBsYXRmb3JtU3RyYXRlZ2llc1F0Ojppbml0aWFsaXplKCk7CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJl
bmRlclRyZWVTdXBwb3J0UXQuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC03MSw2ICs3MSw3IEBACiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNs
dWRlICJTZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaWYgRU5BQkxF
KFNWRykKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKQEAgLTQ2NCwxNyArNDY1
LDE3IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlc3VtZUFjdGkKIAogdm9pZCBE
dW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6d2hpdGVMaXN0QWNjZXNzRnJvbU9yaWdpbihjb25zdCBR
U3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2ws
IGNvbnN0IFFTdHJpbmcmIGRlc3RpbmF0aW9uSG9zdCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3Vi
ZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0
RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRv
bWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRy
eSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGlu
YXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlbW92ZVdoaXRlTGlzdEFj
Y2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2luLCBjb25zdCBRU3RyaW5n
JiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJv
b2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJl
bW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6cmVt
b3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9t
U3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9z
dCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVl
U3VwcG9ydFF0OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMoKQogewotICAgIFNlY3VyaXR5
T3JpZ2luOjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKKyAgICBTZWN1cml0eVBvbGlj
eTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CiB9CiAKIHZvaWQgRHVtcFJlbmRlclRy
ZWVTdXBwb3J0UXQ6OnNldERvbWFpblJlbGF4YXRpb25Gb3JiaWRkZW5Gb3JVUkxTY2hlbWUoYm9v
bCBmb3JiaWRkZW4sIGNvbnN0IFFTdHJpbmcmIHNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
d2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBzdGF0ZSBmcm9tIFNl
Y3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YlZpZXc6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYlZpZXc6
OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KToKKyAgICAgICAgKFdlYlZpZXc6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cyk6CisKIDIwMTEtMTEtMDcgIEFkYW0gQmFydGggIDxh
YmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBNb3ZlIERvbWFpblJlbGF4YXRpb25Gb3JiaWRk
ZW4gc2NoZW1lIHJlZ2lzdHJ5IHRvIFNjaGVtZVJlZ2lzdHJ5CkluZGV4OiBTb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3
LmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTI5LDYgKzEyOSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9TY3Jv
bGxiYXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Njcm9sbGJhclRoZW1lLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgorI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlQb2xp
Y3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9T
aW1wbGVGb250RGF0YS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3lzdGVtSW5mby5oPgpAQCAtNjM1
NSwxOSArNjM1NiwxOSBAQCBIUkVTVUxUIFdlYlZpZXc6OmludmFsaWRhdGVCYWNraW5nU3RvcmUo
CiAKIEhSRVNVTFQgV2ViVmlldzo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoQlNUUiBz
b3VyY2VPcmlnaW4sIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgQlNUUiBkZXN0aW5hdGlvbkhv
c3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmln
aW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBTeXNTdHJpbmdMZW4oc291cmNlT3JpZ2lu
KSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9u
UHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0
aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xp
Y3k6OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
RnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBTeXNTdHJpbmdMZW4oc291cmNlT3JpZ2lu
KSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0aW9u
UHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCwgU3lzU3RyaW5nTGVuKGRlc3RpbmF0
aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAgcmV0dXJuIFNfT0s7
CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnko
QlNUUiBzb3VyY2VPcmlnaW4sIEJTVFIgZGVzdGluYXRpb25Qcm90b2NvbCwgQlNUUiBkZXN0aW5h
dGlvbkhvc3QsIEJPT0wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJp
dHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBTeXNTdHJpbmdMZW4oc291
cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwgU3lzU3RyaW5nTGVuKGRl
c3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCwgU3lzU3RyaW5nTGVu
KGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2Vj
dXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhTdHJpbmcoc291cmNlT3JpZ2luLCBTeXNTdHJpbmdMZW4o
c291cmNlT3JpZ2luKSkpLCBTdHJpbmcoZGVzdGluYXRpb25Qcm90b2NvbCwgU3lzU3RyaW5nTGVu
KGRlc3RpbmF0aW9uUHJvdG9jb2wpKSwgU3RyaW5nKGRlc3RpbmF0aW9uSG9zdCwgU3lzU3RyaW5n
TGVuKGRlc3RpbmF0aW9uSG9zdCkpLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiAgICAg
cmV0dXJuIFNfT0s7CiB9CiAKIEhSRVNVTFQgV2ViVmlldzo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygp
OwogICAgIHJldHVybiBTX09LOwogfQogIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114212</attachid>
            <date>2011-11-08 23:00:27 -0800</date>
            <delta_ts>2011-11-08 23:56:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-71755-20111108230025.patch</filename>
            <type>text/plain</type>
            <size>58146</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMTEtMDcgIEFkYW0gQmFy
dGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBNb3ZlIHN0YXRpYyAicG9saWN5IiBz
dGF0ZSBmcm9tIFNlY3VyaXR5T3JpZ2luLmNwcCB0byBTZWN1cml0eVBvbGljeS5jcHAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxNzU1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIFNlY3VyaXR5T3Jp
Z2luIGNsYXNzIHNob3VsZCBiZSBmb2N1c2VkIG9uIHJlcHJlc2VudGluZyBhIHdlYgorICAgICAg
ICBzZWN1cml0eSBvcmlnaW4gcmF0aGVyIHRoYW4gYmVpbmcgYSBkdW1waW5nIGdyb3VuZCBmb3Ig
YWxsCisgICAgICAgIHNlY3VyaXR5LXJlbGF0ZWQgc3RhdGUuICBUaGlzIHBhdGNoIG1vdmVzIGEg
YnVuY2ggb2Ygc3RhdGljICJwb2xpY3kiCisgICAgICAgIHN0YXRlIGludG8gaXRzIG93biBTZWN1
cml0eVBvbGljeSBjbGFzcy4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAq
IFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmluaXRTZWN1cml0eUNvbnRleHQpOgorICAgICAgICAqIGh0bWwvSFRN
TEFuY2hvckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEFuY2hvckVsZW1lbnQ6
OmhhbmRsZUNsaWNrKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAq
IGxvYWRlci9QaW5nTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6Omxv
YWRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpzZW5kUGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpQaW5nTG9hZGVyOjpyZXBvcnRDb250ZW50U2VjdXJpdHlQb2xpY3lWaW9s
YXRpb24pOgorICAgICAgICAqIGxvYWRlci9TdWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZyYW1lKToKKyAgICAgICAgKiBsb2FkZXIv
U3VicmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2Fk
ZXI6OmNyZWF0ZSk6CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbjo6Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJp
dHlPcmlnaW4uaDoKKwogMjAxMS0xMS0wOCAgQ2hyaXMgRXZhbnMgIDxjZXZhbnNAZ29vZ2xlLmNv
bT4KIAogICAgICAgICBDcmFzaCBhY2Nlc3NpbmcgZm9udCBmYWN0IHJ1bGUgcGFyZW50CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTAwNyw2ICsxMDA3LDcgQEAgU0VUKFdl
YkNvcmVfU09VUkNFUwogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcAogICAgIHBhZ2UvU2NyZWVu
LmNwcAogICAgIHBhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCisgICAgcGFnZS9TZWN1cml0eVBvbGlj
eS5jcHAKICAgICBwYWdlL1NldHRpbmdzLmNwcAogICAgIHBhZ2UvU3BhdGlhbE5hdmlnYXRpb24u
Y3BwCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5saXN0LmFtCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MDgsNiArMjQwOCw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaCBcCiAJU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCBcCisJU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaCBcCiAJ
U291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaCBcCiAJU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlvbi5jcHAg
XApJbmRleDogU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL1Rh
cmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwMDEsNiArMTAwMSw3IEBAIFNPVVJDRVMgKz0g
XAogICAgIHBhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAgICAgcGFnZS9TY3JlZW4uY3BwIFwKICAg
ICBwYWdlL1NlY3VyaXR5T3JpZ2luLmNwcCBcCisgICAgcGFnZS9TZWN1cml0eVBvbGljeS5jcHAg
XAogICAgIHBhZ2UvU2V0dGluZ3MuY3BwIFwKICAgICBwYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNw
cCBcCiAgICAgcGFnZS9TdXNwZW5kYWJsZVRpbWVyLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgko
d29ya2luZyBjb3B5KQpAQCAtMzg1LDE0ICszODUsMTQgQEAgX19aTjdXZWJDb3JlMTRTY3JvbGxh
YmxlQXJlYUQyRXYKIF9fWk43V2ViQ29yZTE0U2Nyb2xsYmFyVGhlbWU1dGhlbWVFdgogX19aTjdX
ZWJDb3JlMTRTZWN1cml0eU9yaWdpbjEyaXNvbGF0ZWRDb3B5RXYKIF9fWk43V2ViQ29yZTE0U2Vj
dXJpdHlPcmlnaW4xNmNyZWF0ZUZyb21TdHJpbmdFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNv
cmUxNFNlY3VyaXR5T3JpZ2luMThzZXRMb2NhbExvYWRQb2xpY3lFTlMwXzE1TG9jYWxMb2FkUG9s
aWN5RQotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjE4c2hvdWxkSGlkZVJlZmVycmVyRVJL
TlNfNEtVUkxFUktOM1dURjZTdHJpbmdFCi1fX1pON1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luMjdy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHNFdgogX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdp
bjI4Y3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllckVSS04zV1RGNlN0cmluZ0UKLV9fWk43V2Vi
Q29yZTE0U2VjdXJpdHlPcmlnaW4yOWFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5RVJLUzBf
UktOM1dURjZTdHJpbmdFUzZfYgotX19aTjdXZWJDb3JlMTRTZWN1cml0eU9yaWdpbjMycmVtb3Zl
T3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlFUktTMF9SS04zV1RGNlN0cmluZ0VTNl9iCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS04zV1RGNlN0cmluZ0VTNF9pCiBfX1pO
N1dlYkNvcmUxNFNlY3VyaXR5T3JpZ2luNmNyZWF0ZUVSS05TXzRLVVJMRWIKK19fWk43V2ViQ29y
ZTE0U2VjdXJpdHlQb2xpY3kxOHNldExvY2FsTG9hZFBvbGljeUVOUzBfMTVMb2NhbExvYWRQb2xp
Y3lFCitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5MThzaG91bGRIaWRlUmVmZXJyZXJFUktO
U180S1VSTEVSS04zV1RGNlN0cmluZ0UKK19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kyN3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c0V2CitfX1pON1dlYkNvcmUxNFNlY3VyaXR5UG9saWN5
MjlhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeUVSS1MwX1JLTjNXVEY2U3RyaW5nRVM2X2IK
K19fWk43V2ViQ29yZTE0U2VjdXJpdHlQb2xpY3kzMnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlz
dEVudHJ5RVJLUzBfUktOM1dURjZTdHJpbmdFUzZfYgogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJh
Y2tlcjdvcmlnaW5zRVJOM1dURjZWZWN0b3JJTlMxXzZSZWZQdHJJTlNfMTRTZWN1cml0eU9yaWdp
bkVFRUxtMEVFRQogX19aTjdXZWJDb3JlMTRTdG9yYWdlVHJhY2tlcjd0cmFja2VyRXYKIF9fWk43
V2ViQ29yZTE0U3RvcmFnZVRyYWNrZXI5c2V0Q2xpZW50RVBOU18yMFN0b3JhZ2VUcmFja2VyQ2xp
ZW50RQpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTY0NSw2ICs2NDUsNyBAQAogICAg
ICAgICAgICAgJ3BhZ2UvUHJpbnRDb250ZXh0LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJp
dHlPcmlnaW4uaCcsCiAgICAgICAgICAgICAncGFnZS9TZWN1cml0eU9yaWdpbkhhc2guaCcsCisg
ICAgICAgICAgICAncGFnZS9TZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAgICdwYWdlL1Nl
dHRpbmdzLmgnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uaCcsCiAgICAg
ICAgICAgICAncGFnZS9Vc2VyQ29udGVudFR5cGVzLmgnLApAQCAtMjk4Myw2ICsyOTg0LDcgQEAK
ICAgICAgICAgICAgICdwYWdlL1NjcmVlbi5jcHAnLAogICAgICAgICAgICAgJ3BhZ2UvU2NyZWVu
LmgnLAogICAgICAgICAgICAgJ3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwJywKKyAgICAgICAgICAg
ICdwYWdlL1NlY3VyaXR5UG9saWN5LmNwcCcsCiAgICAgICAgICAgICAncGFnZS9TZXR0aW5ncy5j
cHAnLAogICAgICAgICAgICAgJ3BhZ2UvU3BhdGlhbE5hdmlnYXRpb24uY3BwJywKICAgICAgICAg
ICAgICdwYWdlL1NwZWVjaElucHV0LmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjU0
MzAsNiArMjU0MzAsMTQgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxTZWN1cml0eVBvbGljeS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgor
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2VjdXJpdHlQb2xpY3kuaCIKKwkJ
CQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTZXR0
aW5ncy5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gOTk2NTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTMyMTUsNiArMzIxNSw4IEBACiAJCTk3M0RDNjQwMTQ1QTk0MDkwMDI4NDJDMiAv
KiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25D
b2RlRGVzY3JpcHRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk5NzNFMzI1NjEwODgzQjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZp
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcz
RTMyNTQxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmNwcCAqLzsgfTsK
IAkJOTczRTMyNTcxMDg4M0I3QzAwNUJDNDkzIC8qIFJlc291cmNlTG9hZE5vdGlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzNFMzI1NTEwODgz
QjdDMDA1QkM0OTMgLyogUmVzb3VyY2VMb2FkTm90aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NzREMkRBNDE0NkE1MzVEMDBENTFGOEIg
LyogU2VjdXJpdHlQb2xpY3kuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc0RDJEQTIxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNw
cCAqLzsgfTsKKwkJOTc0RDJEQTUxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzREMkRBMzE0
NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLzsgfTsKIAkJOTc1MkQzOEQxNDEz
MTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3NTJEMzhCMTQxMzEwNEIwMDMzMDVCRCAvKiBK
U0hUTUxTcGFuRWxlbWVudC5jcHAgKi87IH07CiAJCTk3NTJEMzhFMTQxMzEwNEIwMDMzMDVCRCAv
KiBKU0hUTUxTcGFuRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTc1MkQzOEMxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmggKi87IH07CiAJCTk3NUNBMjhBMTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTc1Q0EyODcxMzAzNjVG
ODAwRTk5QUQ5IC8qIENyeXB0by5jcHAgKi87IH07CkBAIC0xMDM4Myw2ICsxMDM4NSw4IEBACiAJ
CTk3M0RDNjNFMTQ1QTk0MDkwMDI4NDJDMiAvKiBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uQ29kZURlc2NyaXB0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3M0UzMjU0MTA4ODNCN0MwMDVCQzQ5
MyAvKiBSZXNvdXJjZUxvYWROb3RpZmllci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmllci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3M0UzMjU1MTA4ODNCN0MwMDVCQzQ5MyAvKiBSZXNvdXJjZUxvYWROb3RpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXNvdXJjZUxvYWROb3RpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NzREMkRBMjE0NkE1MzVEMDBENTFG
OEIgLyogU2VjdXJpdHlQb2xpY3kuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2VjdXJpdHlQb2xpY3kuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5
NzREMkRBMzE0NkE1MzVEMDBENTFGOEIgLyogU2VjdXJpdHlQb2xpY3kuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VjdXJpdHlQb2xpY3kuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTc1MkQzOEIxNDEzMTA0QjAwMzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNwYW5FbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTc1MkQzOEMxNDEzMTA0QjAw
MzMwNUJEIC8qIEpTSFRNTFNwYW5FbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTSFRNTFNwYW5FbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3NUNBMjg3MTMwMzY1RjgwMEU5OUFEOSAvKiBDcnlwdG8uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ3J5cHRvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE1NTc1LDYgKzE1NTc5LDggQEAKIAkJCQlCQ0QwRTBGNzBFOTcyQzM1MDAyNjVERUEg
LyogU2VjdXJpdHlPcmlnaW4uY3BwICovLAogCQkJCUJDRDBFMEY4MEU5NzJDMzUwMDI2NURFQSAv
KiBTZWN1cml0eU9yaWdpbi5oICovLAogCQkJCUJDRDBFMEY5MEU5NzJDMzUwMDI2NURFQSAvKiBT
ZWN1cml0eU9yaWdpbkhhc2guaCAqLywKKwkJCQk5NzREMkRBMjE0NkE1MzVEMDBENTFGOEIgLyog
U2VjdXJpdHlQb2xpY3kuY3BwICovLAorCQkJCTk3NEQyREEzMTQ2QTUzNUQwMEQ1MUY4QiAvKiBT
ZWN1cml0eVBvbGljeS5oICovLAogCQkJCTE0QzlBNUU5MEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0
aW5ncy5jcHAgKi8sCiAJCQkJRjU4Nzg2M0EwMkRFM0ExNDAxRUE0MTIyIC8qIFNldHRpbmdzLmgg
Ki8sCiAJCQkJNjI2Q0RFMEMxMTQwNDI0QzAwMUU1QTY4IC8qIFNwYXRpYWxOYXZpZ2F0aW9uLmNw
cCAqLywKQEAgLTI0NjM0LDYgKzI0NjQwLDcgQEAKIAkJCQlDQUU5RjkxMDE0NjQ0MUYwMDBDMjQ1
QjAgLyogQ1NTQXNwZWN0UmF0aW9WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTc2RjM2RUIx
NDY4NjIyNTAwNUU5M0I0IC8qIFNlY3VyaXR5Q29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NzEzNDQ5NkUxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk3NEQyREE1MTQ2QTUzNUQwMEQ1MUY4QiAvKiBTZWN1cml0eVBvbGljeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkBAIC0yNzQ5Myw2ICsyNzUwMCw3IEBACiAJCQkJQ0RFQTc2MzUxNDYwQjcx
QTAwOEIzMUYxIC8qIENsb2NrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3NkYzNkVBMTQ2ODYy
MjUwMDVFOTNCNCAvKiBTZWN1cml0eUNvbnRleHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNzEz
NDQ5NkQxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJOTc0RDJEQTQxNDZBNTM1RDAwRDUxRjhCIC8qIFNlY3VyaXR5UG9saWN5LmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA5OTY1
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzMCw2ICsxMzAsNyBAQAogI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVuZXIuaCIKICNpbmNs
dWRlICJTY3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1
ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAiU2VnbWVudGVkU3RyaW5nLmgiCiAjaW5j
bHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCkBAIC00NDEwLDcgKzQ0
MTEsNyBAQCB2b2lkIERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzZXRTZWN1cml0eU9yaWdpbihTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KG1fdXJsLCBpc1NhbmRib3hlZChTYW5kYm94T3JpZ2luKSkpOwogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OnNldENvbnRlbnRTZWN1cml0eVBvbGljeShDb250ZW50U2VjdXJpdHlQb2xpY3k6
OmNyZWF0ZSh0aGlzKSk7CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmFsbG93U3Vic3RpdHV0
ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKKyAgICBpZiAoU2VjdXJpdHlQb2xpY3k6OmFsbG93U3Vi
c3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2FsKCkpIHsKICAgICAgICAgLy8gSWYgdGhpcyBkb2N1bWVu
dCB3YXMgbG9hZGVkIHdpdGggc3Vic3RpdHV0ZURhdGEsIHRoZW4gdGhlIGRvY3VtZW50IGNhbgog
ICAgICAgICAvLyBsb2FkIGxvY2FsIHJlc291cmNlcy4gIFNlZSBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3NTYKICAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2MCBmb3IgZnVydGhlcgpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQW5jaG9yRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJl
c291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJT
ZWN1cml0eVBvbGljeS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTUxMSw3ICs1MTIsNyBAQCB2b2lkIEhUTUxBbmNob3JFbGVtZW50OjpoYW5kbGVD
bGljayhFdmVuCiAKICAgICAgICAgaWYgKCFoYXNSZWwoUmVsYXRpb25Ob1JlZmVycmVyKSkgewog
ICAgICAgICAgICAgU3RyaW5nIHJlZmVycmVyID0gZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1Jl
ZmVycmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJp
dHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCisgICAgICAgICAg
ICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSAmJiAhU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVS
ZWZlcnJlcihrdXJsLCByZWZlcnJlcikpCiAgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRIVFRQ
UmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRy
YUZpZWxkc1RvTWFpblJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkw
LDYgKzkwLDcgQEAKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKICNpbmNsdWRl
ICJTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtMTEz
Niw3ICsxMTM3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVzdChjb25zdAog
ICAgIGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSBtX291dGdvaW5nUmVmZXJyZXI7CiAKLSAgICBp
ZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcih1cmwsIHJlZmVycmVyKSB8fCBy
ZWZlcnJlclBvbGljeSA9PSBOb1JlZmVycmVyKQorICAgIGlmIChTZWN1cml0eVBvbGljeTo6c2hv
dWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpIHx8IHJlZmVycmVyUG9saWN5ID09IE5vUmVm
ZXJyZXIpCiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgRnJhbWVMb2Fk
VHlwZSBsb2FkVHlwZTsKQEAgLTI1ODYsNyArMjU4Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCAKIHVuc2lnbmVkIGxvbmcgRnJhbWVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBTdG9yZWRD
cmVkZW50aWFscyBzdG9yZWRDcmVkZW50aWFscywgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgU3RyaW5n
IHJlZmVycmVyID0gbV9vdXRnb2luZ1JlZmVycmVyOwotICAgIGlmIChTZWN1cml0eU9yaWdpbjo6
c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIHJlZmVycmVyKSkKKyAgICBpZiAoU2Vj
dXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCByZWZlcnJlcikp
CiAgICAgICAgIHJlZmVycmVyID0gU3RyaW5nKCk7CiAgICAgCiAgICAgUmVzb3VyY2VSZXF1ZXN0
IGluaXRpYWxSZXF1ZXN0ID0gcmVxdWVzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Q
aW5nTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xv
YWRlci5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdM
b2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAiUHJv
Z3Jlc3NUcmFja2VyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKICNpbmNsdWRlICJT
ZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSA8
d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTU5LDcgKzYwLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpsb2Fk
SW1hZ2UoRnJhbWUqIGZyYW1lLAogICAgIHJlcXVlc3Quc2V0VGFyZ2V0VHlwZShSZXNvdXJjZVJl
cXVlc3Q6OlRhcmdldElzSW1hZ2UpOwogI2VuZGlmCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7Ci0gICAgaWYgKCFTZWN1cml0eU9y
aWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHJlcXVlc3QudXJsKCksIGZyYW1lLT5sb2FkZXIoKS0+
b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRl
UmVmZXJyZXIocmVxdWVzdC51cmwoKSwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVy
KCkpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihmcmFtZS0+bG9hZGVyKCktPm91
dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1Rv
U3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5n
TG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdMb2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKQEAgLTg2
LDcgKzg3LDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kUGluZyhGcmFtZSogZnJhbWUsIAogICAg
IFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gcGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVh
dGUocGluZ1VSTCk7CiAgICAgRnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1
ZXN0LCBzb3VyY2VPcmlnaW4tPnRvU3RyaW5nKCkpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRl
ckZpZWxkKCJQaW5nLVRvIiwgZGVzdGluYXRpb25VUkwpOwotICAgIGlmICghU2VjdXJpdHlPcmln
aW46OnNob3VsZEhpZGVSZWZlcnJlcihwaW5nVVJMLCBmcmFtZS0+bG9hZGVyKCktPm91dGdvaW5n
UmVmZXJyZXIoKSkpIHsKKyAgICBpZiAoIVNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJy
ZXIocGluZ1VSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKSB7CiAgICAg
ICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVsZCgiUGluZy1Gcm9tIiwgZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpKTsKICAgICAgIGlmICghc291cmNlT3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9y
dChwaW5nT3JpZ2luLmdldCgpKSkKICAgICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJh
bWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwpAQCAtMTA5LDcgKzExMCw3IEBAIHZv
aWQgUGluZ0xvYWRlcjo6cmVwb3J0Q29udGVudFNlY3VyaXR5UG8KICAgICByZXF1ZXN0LnNldEhU
VFBCb2R5KHJlcG9ydCk7CiAgICAgZnJhbWUtPmxvYWRlcigpLT5hZGRFeHRyYUZpZWxkc1RvU3Vi
cmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwogCi0gICAgaWYgKCFTZWN1cml0eU9yaWdpbjo6c2hv
dWxkSGlkZVJlZmVycmVyKHJlcG9ydFVSTCwgZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVy
cmVyKCkpKQorICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXBv
cnRVUkwsIGZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgcmVx
dWVzdC5zZXRIVFRQUmVmZXJyZXIoZnJhbWUtPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkp
OwogICAgIE93blB0cjxQaW5nTG9hZGVyPiBwaW5nTG9hZGVyID0gYWRvcHRQdHIobmV3IFBpbmdM
b2FkZXIoZnJhbWUsIHJlcXVlc3QpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YmZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
ZnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRl
ci9TdWJmcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAKICNp
bmNsdWRlICJSZW5kZXJFbWJlZGRlZE9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIK
ICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5Lmgi
CiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJ
REVPKQpAQCAtMjYxLDcgKzI2Miw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6bG9hZFN1YmZy
YW1lKEhUTUwKICAgICBpZiAoIW93bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS0+Y29udGVudFNlY3Vy
aXR5UG9saWN5KCktPmFsbG93Q2hpbGRGcmFtZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBib29sIGhpZGVSZWZlcnJlciA9IFNlY3VyaXR5T3JpZ2luOjpzaG91bGRI
aWRlUmVmZXJyZXIodXJsLCByZWZlcnJlcik7CisgICAgYm9vbCBoaWRlUmVmZXJyZXIgPSBTZWN1
cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpOwogICAgIFJlZlB0
cjxGcmFtZT4gZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+Y2xpZW50KCktPmNyZWF0ZUZyYW1l
KHVybCwgbmFtZSwgb3duZXJFbGVtZW50LCBoaWRlUmVmZXJyZXIgPyBTdHJpbmcoKSA6IHJlZmVy
cmVyLCBhbGxvd3NTY3JvbGxpbmcsIG1hcmdpbldpZHRoLCBtYXJnaW5IZWlnaHQpOwogCiAgICAg
aWYgKCFmcmFtZSkgIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5j
bHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgogI2luY2x1
ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
TGVha0NvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CkBAIC04NSw3ICs4
Niw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFN1YnJlc291cmMKICAgICAgICAg
b3V0Z29pbmdPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhvdXRnb2lu
Z1JlZmVycmVyKS0+dG9TdHJpbmcoKTsKICAgICB9CiAKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46
OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKSkKKyAg
ICBpZiAoU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1ZXN0LnVybCgpLCBv
dXRnb2luZ1JlZmVycmVyKSkKICAgICAgICAgbmV3UmVxdWVzdC5jbGVhckhUVFBSZWZlcnJlcigp
OwogICAgIGVsc2UgaWYgKCFyZXF1ZXN0Lmh0dHBSZWZlcnJlcigpKQogICAgICAgICBuZXdSZXF1
ZXN0LnNldEhUVFBSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMywyNiArMzMs
MTYgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJLVVJMLmgiCi0jaW5jbHVkZSAiT3JpZ2luQWNjZXNzRW50cnkuaCIKICNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
LXN0YXRpYyBTZWN1cml0eU9yaWdpbjo6TG9jYWxMb2FkUG9saWN5IGxvY2FsTG9hZFBvbGljeSA9
IFNlY3VyaXR5T3JpZ2luOjpBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHk7CiBjb25zdCBpbnQg
TWF4QWxsb3dlZFBvcnQgPSA2NTUzNTsKIAotdHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNjZXNzRW50
cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKLXR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIE9yaWdp
bkFjY2Vzc1doaXRlTGlzdCo+IE9yaWdpbkFjY2Vzc01hcDsKLQotc3RhdGljIE9yaWdpbkFjY2Vz
c01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKLXsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKE9yaWdp
bkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7Ci0gICAgcmV0dXJuIG9yaWdpbkFjY2Vz
c01hcDsKLX0KLQogc3RhdGljIGJvb2wgc2NoZW1lUmVxdWlyZXNBdXRob3JpdHkoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChVUkxTY2hlbWVzTWFwLCBz
Y2hlbWVzLCAoKSk7CkBAIC0yNTEsNyArMjQxLDcgQEAgYm9vbCBTZWN1cml0eU9yaWdpbjo6Y2Fu
UmVxdWVzdChjb25zdCBLVQogICAgIGlmIChpc1NhbWVTY2hlbWVIb3N0UG9ydCh0YXJnZXRPcmln
aW4uZ2V0KCkpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChpc0FjY2Vzc1doaXRl
TGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSkpCisgICAgaWYgKFNlY3VyaXR5UG9saWN5Ojppc0Fj
Y2Vzc1doaXRlTGlzdGVkKHRoaXMsIHRhcmdldE9yaWdpbi5nZXQoKSkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMjg5LDIzICsyNzksNiBAQCBib29sIFNl
Y3VyaXR5T3JpZ2luOjpjYW5SZWNlaXZlRHJhZ0RhdGEoCiAgICAgcmV0dXJuIGNhbkFjY2Vzcyhk
cmFnSW5pdGlhdG9yKTsgIAogfQogCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1doaXRl
TGlzdGVkKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiB0YXJnZXRPcmlnaW4pIGNvbnN0Ci17Ci0gICAg
aWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IG9yaWdpbkFjY2Vzc01hcCgpLmdldCh0
b1N0cmluZygpKSkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3QtPnNpemUo
KTsgICsraSkgewotICAgICAgICAgICBpZiAobGlzdC0+YXQoaSkubWF0Y2hlc09yaWdpbigqdGFy
Z2V0T3JpZ2luKSkKLSAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgIH0KLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFNlY3VyaXR5T3JpZ2luOjppc0FjY2Vzc1Rv
VVJMV2hpdGVMaXN0ZWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAotewotICAgIFJlZlB0cjxTZWN1
cml0eU9yaWdpbj4gdGFyZ2V0T3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwot
ICAgIHJldHVybiBpc0FjY2Vzc1doaXRlTGlzdGVkKHRhcmdldE9yaWdpbi5nZXQoKSk7Ci19Ci0K
IC8vIFRoaXMgaXMgYSBoYWNrIHRvIGFsbG93IGtlZXAgbmF2aWdhdGlvbiB0byBodHRwL2h0dHBz
IGZlZWRzIHdvcmtpbmcuIFRvIHJlbW92ZSB0aGlzCiAvLyB3ZSBuZWVkIHRvIGludHJvZHVjZSBu
ZXcgQVBJIGFraW4gdG8gcmVnaXN0ZXJVUkxTY2hlbWVBc0xvY2FsLCB0aGF0IHJlZ2lzdGVycyBh
CiAvLyBwcm90b2NvbHMgbmF2aWdhdGlvbiBwb2xpY3kuCkBAIC0zMzcsMTAgKzMxMCwxMCBAQCBi
b29sIFNlY3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5KGNvbnN0IEtVCiAgICAgICAgIHJldHVybiBj
YW5SZXF1ZXN0KHVybCk7CiAKICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJM
U2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQocHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gbV9wcm90
b2NvbCA9PSBwcm90b2NvbCB8fCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodXJsKTsKKyAgICAg
ICAgcmV0dXJuIG1fcHJvdG9jb2wgPT0gcHJvdG9jb2wgfHwgU2VjdXJpdHlQb2xpY3k6OmlzQWNj
ZXNzVG9VUkxXaGl0ZUxpc3RlZCh0aGlzLCB1cmwpOwogCi0gICAgaWYgKHJlc3RyaWN0QWNjZXNz
VG9Mb2NhbCgpICYmIFNjaGVtZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwo
cHJvdG9jb2wpKQotICAgICAgICByZXR1cm4gY2FuTG9hZExvY2FsUmVzb3VyY2VzKCkgfHwgaXNB
Y2Nlc3NUb1VSTFdoaXRlTGlzdGVkKHVybCk7CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpyZXN0
cmljdEFjY2Vzc1RvTG9jYWwoKSAmJiBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hl
bWVBc0xvY2FsKHByb3RvY29sKSkKKyAgICAgICAgcmV0dXJuIGNhbkxvYWRMb2NhbFJlc291cmNl
cygpIHx8IFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQodGhpcywgdXJs
KTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzUyLDcgKzMyNSw3IEBAIHZvaWQgU2VjdXJp
dHlPcmlnaW46OmdyYW50TG9hZExvY2FsUmVzb3UKICAgICAvLyBpbiBhIFNlY3VyaXR5T3JpZ2lu
IGlzIGEgc2VjdXJpdHkgaGF6YXJkIGJlY2F1c2UgdGhlIGRvY3VtZW50cyB3aXRob3V0CiAgICAg
Ly8gdGhlIHByaXZpbGVnZSBjYW4gb2J0YWluIHRoZSBwcml2aWxlZ2UgYnkgaW5qZWN0aW5nIHNj
cmlwdCBpbnRvIHRoZQogICAgIC8vIGRvY3VtZW50cyB0aGF0IGhhdmUgYmVlbiBncmFudGVkIHRo
ZSBwcml2aWxlZ2UuCi0gICAgQVNTRVJUKGFsbG93U3Vic3RpdHV0ZURhdGFBY2Nlc3NUb0xvY2Fs
KCkpOworICAgIEFTU0VSVChTZWN1cml0eVBvbGljeTo6YWxsb3dTdWJzdGl0dXRlRGF0YUFjY2Vz
c1RvTG9jYWwoKSk7CiAgICAgbV9jYW5Mb2FkTG9jYWxSZXNvdXJjZXMgPSB0cnVlOwogfQogCkBA
IC01MDEsODYgKzQ3NCw0IEBAIGJvb2wgU2VjdXJpdHlPcmlnaW46OmlzU2FtZVNjaGVtZUhvc3RQ
b3IKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBTZWN1cml0eU9yaWdpbjo6c2hvdWxkSGlk
ZVJlZmVycmVyKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKLXsKLSAg
ICBib29sIHJlZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMi
KTsKLSAgICBib29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHBy
b3RvY29sSXMocmVmZXJyZXIsICJodHRwIik7Ci0KLSAgICBpZiAoIXJlZmVycmVySXNXZWJVUkwp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnBy
b3RvY29sSXMoImh0dHBzIik7Ci0KLSAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOwotfQotCi12
b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBv
bGljeSkKLXsKLSAgICBsb2NhbExvYWRQb2xpY3kgPSBwb2xpY3k7Ci19Ci0KLWJvb2wgU2VjdXJp
dHlPcmlnaW46OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCi17Ci0gICAgcmV0dXJuIGxvY2FsTG9h
ZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOwotfQotCi1i
b29sIFNlY3VyaXR5T3JpZ2luOjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCi17
Ci0gICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eU9yaWdpbjo6QWxsb3dMb2Nh
bExvYWRzRm9yTG9jYWxPbmx5OwotfQotCi12b2lkIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCi17Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKLSAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwot
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7Ci0gICAgcGFpcjxP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5hZGQoc291cmNlU3RyaW5nLCAwKTsKLSAgICBpZiAocmVzdWx0LnNlY29uZCkKLSAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OwotCi0gICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7Ci0gICAg
bGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7Ci19Ci0KLXZvaWQgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7Ci0gICAgaWYgKHNv
dXJjZU9yaWdpbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIFN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKLSAgICBPcmlnaW5BY2Nlc3NNYXAm
IG1hcCA9IG9yaWdpbkFjY2Vzc01hcCgpOwotICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChzb3VyY2VTdHJpbmcpOwotICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7Ci0gICAgc2l6ZV90IGluZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNj
ZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOwotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKLQotICAgIGlm
ICghbGlzdC0+aXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtYXAucmVtb3ZlKGl0
KTsKLSAgICBkZWxldGUgbGlzdDsKLX0KLQotdm9pZCBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAg
IE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7Ci0gICAgZGVsZXRlQWxs
VmFsdWVzKG1hcCk7Ci0gICAgbWFwLmNsZWFyKCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmgJKHJldmlzaW9uIDk5NjUx
KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNzMsMjEgKzE3Myw2IEBAIHB1YmxpYzoKICAgICAvLyAoYW5kIHdoZXRoZXIgaXQgd2Fz
IHNldCkgYnV0IGNvbnNpZGVyaW5nIHRoZSBob3N0LiBJdCBpcyB1c2VkIGZvciBwb3N0TWVzc2Fn
ZS4KICAgICBib29sIGlzU2FtZVNjaGVtZUhvc3RQb3J0KGNvbnN0IFNlY3VyaXR5T3JpZ2luKikg
Y29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRIaWRlUmVmZXJyZXIoY29uc3QgS1VSTCYs
IGNvbnN0IFN0cmluZyYgcmVmZXJyZXIpOwotCi0gICAgZW51bSBMb2NhbExvYWRQb2xpY3kgewot
ICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JBbGwsIC8vIE5vIHJlc3RyaWN0aW9uIG9uIGxvY2Fs
IGxvYWRzLgotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbEFuZFN1YnN0aXR1dGVEYXRh
LAotICAgICAgICBBbGxvd0xvY2FsTG9hZHNGb3JMb2NhbE9ubHksCi0gICAgfTsKLSAgICBzdGF0
aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5KTsKLSAgICBzdGF0aWMg
Ym9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKLSAgICBzdGF0aWMgYm9vbCBhbGxvd1N1YnN0
aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOwotCi0gICAgc3RhdGljIHZvaWQgYWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJjZU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9u
RG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKLSAgICBzdGF0aWMgdm9p
ZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYg
c291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0
cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
OwotICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwotCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IFNlY3VyaXR5T3JpZ2luKGNvbnN0IEtVUkwmLCBib29sIGZvcmNl
VW5pcXVlKTsKICAgICBleHBsaWNpdCBTZWN1cml0eU9yaWdpbihjb25zdCBTZWN1cml0eU9yaWdp
biopOwpAQCAtMTk1LDkgKzE4MCw2IEBAIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IFJlbmFtZSB0
aGlzIGZ1bmN0aW9uIHRvIHNvbWV0aGluZyBtb3JlIHNlbWFudGljLgogICAgIGJvb2wgcGFzc2Vz
RmlsZUNoZWNrKGNvbnN0IFNlY3VyaXR5T3JpZ2luKikgY29uc3Q7CiAKLSAgICBib29sIGlzQWNj
ZXNzV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJpdHlPcmlnaW4qKSBjb25zdDsKLSAgICBib29sIGlz
QWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25zdCBLVVJMJikgY29uc3Q7Ci0KICAgICBTdHJpbmcg
bV9wcm90b2NvbDsKICAgICBTdHJpbmcgbV9ob3N0OwogICAgIG11dGFibGUgU3RyaW5nIG1fZW5j
b2RlZEhvc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29n
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlLCBJbmMuICgiR29vZ2xlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBHT09HTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTZWN1
cml0eVBvbGljeS5oIgorCisjaW5jbHVkZSAiS1VSTC5oIgorI2luY2x1ZGUgIk9yaWdpbkFjY2Vz
c0VudHJ5LmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFNlY3VyaXR5
UG9saWN5OjpMb2NhbExvYWRQb2xpY3kgbG9jYWxMb2FkUG9saWN5ID0gU2VjdXJpdHlQb2xpY3k6
OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seTsKKwordHlwZWRlZiBWZWN0b3I8T3JpZ2luQWNj
ZXNzRW50cnk+IE9yaWdpbkFjY2Vzc1doaXRlTGlzdDsKK3R5cGVkZWYgSGFzaE1hcDxTdHJpbmcs
IE9yaWdpbkFjY2Vzc1doaXRlTGlzdCo+IE9yaWdpbkFjY2Vzc01hcDsKKworc3RhdGljIE9yaWdp
bkFjY2Vzc01hcCYgb3JpZ2luQWNjZXNzTWFwKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KE9yaWdpbkFjY2Vzc01hcCwgb3JpZ2luQWNjZXNzTWFwLCAoKSk7CisgICAgcmV0dXJuIG9yaWdp
bkFjY2Vzc01hcDsKK30KKworYm9vbCBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVy
KGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlcikKK3sKKyAgICBib29sIHJl
ZmVycmVySXNTZWN1cmVVUkwgPSBwcm90b2NvbElzKHJlZmVycmVyLCAiaHR0cHMiKTsKKyAgICBi
b29sIHJlZmVycmVySXNXZWJVUkwgPSByZWZlcnJlcklzU2VjdXJlVVJMIHx8IHByb3RvY29sSXMo
cmVmZXJyZXIsICJodHRwIik7CisKKyAgICBpZiAoIXJlZmVycmVySXNXZWJVUkwpCisgICAgICAg
IHJldHVybiB0cnVlOworCisgICAgaWYgKCFyZWZlcnJlcklzU2VjdXJlVVJMKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBib29sIFVSTElzU2VjdXJlVVJMID0gdXJsLnByb3RvY29sSXMo
Imh0dHBzIik7CisKKyAgICByZXR1cm4gIVVSTElzU2VjdXJlVVJMOworfQorCit2b2lkIFNlY3Vy
aXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5IHBvbGljeSkKK3sK
KyAgICBsb2NhbExvYWRQb2xpY3kgPSBwb2xpY3k7Cit9CisKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6
OnJlc3RyaWN0QWNjZXNzVG9Mb2NhbCgpCit7CisgICAgcmV0dXJuIGxvY2FsTG9hZFBvbGljeSAh
PSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yQWxsOworfQorCitib29sIFNlY3Vy
aXR5UG9saWN5OjphbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpCit7CisgICAgcmV0
dXJuIGxvY2FsTG9hZFBvbGljeSAhPSBTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9y
TG9jYWxPbmx5OworfQorCitib29sIFNlY3VyaXR5UG9saWN5Ojppc0FjY2Vzc1doaXRlTGlzdGVk
KGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVPcmlnaW4sIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
KiB0YXJnZXRPcmlnaW4pCit7CisgICAgaWYgKE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9
IG9yaWdpbkFjY2Vzc01hcCgpLmdldChhY3RpdmVPcmlnaW4tPnRvU3RyaW5nKCkpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlzdC0+c2l6ZSgpOyAgKytpKSB7CisgICAgICAg
ICAgIGlmIChsaXN0LT5hdChpKS5tYXRjaGVzT3JpZ2luKCp0YXJnZXRPcmlnaW4pKQorICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKK2Jvb2wgU2VjdXJpdHlQb2xpY3k6OmlzQWNjZXNzVG9VUkxXaGl0ZUxpc3RlZChjb25z
dCBTZWN1cml0eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBLVVJMJiB1cmwpCit7CisgICAg
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiB0YXJnZXRPcmlnaW4gPSBTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKHVybCk7CisgICAgcmV0dXJuIGlzQWNjZXNzV2hpdGVMaXN0ZWQoYWN0aXZlT3JpZ2luLCB0
YXJnZXRPcmlnaW4uZ2V0KCkpOworfQorCit2b2lkIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBj
b25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRp
b25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIXNvdXJjZU9yaWdpbi5pc0VtcHR5KCkpOwor
ICAgIGlmIChzb3VyY2VPcmlnaW4uaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBT
dHJpbmcgc291cmNlU3RyaW5nID0gc291cmNlT3JpZ2luLnRvU3RyaW5nKCk7CisgICAgcGFpcjxP
cmlnaW5BY2Nlc3NNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBvcmlnaW5BY2Nlc3NNYXAo
KS5hZGQoc291cmNlU3RyaW5nLCAwKTsKKyAgICBpZiAocmVzdWx0LnNlY29uZCkKKyAgICAgICAg
cmVzdWx0LmZpcnN0LT5zZWNvbmQgPSBuZXcgT3JpZ2luQWNjZXNzV2hpdGVMaXN0OworCisgICAg
T3JpZ2luQWNjZXNzV2hpdGVMaXN0KiBsaXN0ID0gcmVzdWx0LmZpcnN0LT5zZWNvbmQ7CisgICAg
bGlzdC0+YXBwZW5kKE9yaWdpbkFjY2Vzc0VudHJ5KGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uRG9tYWluLCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyA/IE9yaWdpbkFjY2Vzc0Vu
dHJ5OjpBbGxvd1N1YmRvbWFpbnMgOiBPcmlnaW5BY2Nlc3NFbnRyeTo6RGlzYWxsb3dTdWJkb21h
aW5zKSk7Cit9CisKK3ZvaWQgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KGNvbnN0IFNlY3VyaXR5T3JpZ2luJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGVzdGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkRvbWFpbiwg
Ym9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVCghc291cmNlT3JpZ2luLmlzRW1wdHkoKSk7CisgICAgaWYgKHNv
dXJjZU9yaWdpbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyBzb3Vy
Y2VTdHJpbmcgPSBzb3VyY2VPcmlnaW4udG9TdHJpbmcoKTsKKyAgICBPcmlnaW5BY2Nlc3NNYXAm
IG1hcCA9IG9yaWdpbkFjY2Vzc01hcCgpOworICAgIE9yaWdpbkFjY2Vzc01hcDo6aXRlcmF0b3Ig
aXQgPSBtYXAuZmluZChzb3VyY2VTdHJpbmcpOworICAgIGlmIChpdCA9PSBtYXAuZW5kKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIE9yaWdpbkFjY2Vzc1doaXRlTGlzdCogbGlzdCA9IGl0LT5z
ZWNvbmQ7CisgICAgc2l6ZV90IGluZGV4ID0gbGlzdC0+ZmluZChPcmlnaW5BY2Nlc3NFbnRyeShk
ZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkRvbWFpbiwgYWxsb3dEZXN0aW5hdGlvblN1
YmRvbWFpbnMgPyBPcmlnaW5BY2Nlc3NFbnRyeTo6QWxsb3dTdWJkb21haW5zIDogT3JpZ2luQWNj
ZXNzRW50cnk6OkRpc2FsbG93U3ViZG9tYWlucykpOworICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbGlzdC0+cmVtb3ZlKGluZGV4KTsKKworICAgIGlm
ICghbGlzdC0+aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtYXAucmVtb3ZlKGl0
KTsKKyAgICBkZWxldGUgbGlzdDsKK30KKwordm9pZCBTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IE9yaWdpbkFjY2Vzc01hcCYgbWFwID0gb3JpZ2luQWNjZXNzTWFwKCk7CisgICAgZGVsZXRlQWxs
VmFsdWVzKG1hcCk7CisgICAgbWFwLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlQb2xpY3kuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSwgSW5jLiAoIkdvb2dsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
R09PR0xFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFNlY3VyaXR5UG9saWN5X2gKKyNkZWZpbmUgU2VjdXJpdHlQb2xpY3lf
aAorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgS1VSTDsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworCitjbGFzcyBTZWN1cml0
eVBvbGljeSB7CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgc2hvdWxkSGlkZVJlZmVycmVyKGNv
bnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKKworICAgIGVudW0gTG9jYWxMb2Fk
UG9saWN5IHsKKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yQWxsLCAvLyBObyByZXN0cmljdGlv
biBvbiBsb2NhbCBsb2Fkcy4KKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJz
dGl0dXRlRGF0YSwKKyAgICAgICAgQWxsb3dMb2NhbExvYWRzRm9yTG9jYWxPbmx5LAorICAgIH07
CisKKyAgICBzdGF0aWMgdm9pZCBzZXRMb2NhbExvYWRQb2xpY3koTG9jYWxMb2FkUG9saWN5KTsK
KyAgICBzdGF0aWMgYm9vbCByZXN0cmljdEFjY2Vzc1RvTG9jYWwoKTsKKyAgICBzdGF0aWMgYm9v
bCBhbGxvd1N1YnN0aXR1dGVEYXRhQWNjZXNzVG9Mb2NhbCgpOworCisgICAgc3RhdGljIHZvaWQg
YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoY29uc3QgU2VjdXJpdHlPcmlnaW4mIHNvdXJj
ZU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcm
IGRlc3RpbmF0aW9uRG9tYWluLCBib29sIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAg
ICBzdGF0aWMgdm9pZCByZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTZWN1
cml0eU9yaWdpbiYgc291cmNlT3JpZ2luLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uUHJvdG9j
b2wsIGNvbnN0IFN0cmluZyYgZGVzdGluYXRpb25Eb21haW4sIGJvb2wgYWxsb3dEZXN0aW5hdGlv
blN1YmRvbWFpbnMpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpOworCisgICAgc3RhdGljIGJvb2wgaXNBY2Nlc3NXaGl0ZUxpc3RlZChjb25zdCBTZWN1cml0
eU9yaWdpbiogYWN0aXZlT3JpZ2luLCBjb25zdCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0T3JpZ2lu
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0FjY2Vzc1RvVVJMV2hpdGVMaXN0ZWQoY29uc3QgU2VjdXJp
dHlPcmlnaW4qIGFjdGl2ZU9yaWdpbiwgY29uc3QgS1VSTCYpOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2VjdXJpdHlQb2xpY3lfaApJbmRleDogU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwko
cmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJr
aXQub3JnPgorCisgICAgICAgIE1vdmUgc3RhdGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJp
dHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5UG9saWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5q
ZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6YWRkT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRs
ZTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpJ
bmplY3RlZEJ1bmRsZTo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKToKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmxvYWRVUkwpOgorCiAyMDExLTExLTA4ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1A
d2Via2l0Lm9yZz4KIAogICAgICAgICBbV2luQ2Fpcm9dIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFm
dGVyIHI5OTYxMy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwCShyZXZpc2lvbiA5OTY1MSkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvVXNlckdlc3R1cmVJbmRpY2F0b3IuaD4KICNpbmNsdWRlIDx3dGYvT3duQXJy
YXlQdHIuaD4KQEAgLTE3MSwxNyArMTcyLDE3IEBAIHZvaWQgSW5qZWN0ZWRCdW5kbGU6OnNldEF1
dGhvckFuZFVzZXJTdHkKIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6YWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnkoY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGVz
dGluYXRpb25Qcm90b2NvbCwgY29uc3QgU3RyaW5nJiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxs
b3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdp
bkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhz
b3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNj
ZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJj
ZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIEluamVjdGVkQnVuZGxlOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeShjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBTdHJpbmcmIGRlc3RpbmF0aW9uSG9z
dCwgYm9vbCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucykKIHsKLSAgICBTZWN1cml0eU9yaWdp
bjo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpjcmVh
dGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3RpbmF0
aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5
OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CiAKIHZvaWQgSW5qZWN0ZWRC
dW5kbGU6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2VjdXJpdHlPcmln
aW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5UG9saWN5Ojpy
ZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKIH0KIAogdm9pZCBJbmplY3RlZEJ1bmRsZTo6
Y2xlYXJBbGxEYXRhYmFzZXMoKQpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU3LDYgKzU3LDggQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlTG9hZFNjaGVkdWxlci5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0VmFsdWUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Nj
cm9sbFZpZXcuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW5jbHVk
ZSA8V2ViQ29yZS9TZWN1cml0eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2V0dGluZ3Mu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJHZXN0dXJlSW5kaWNhdG9yLmg+CiAKQEAgLTk4Myw3
ICs5ODUsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzCiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0YTo6
Y3JlYXRlKGh0dHBCb2R5LmRhdGEoKSwgaHR0cEJvZHkuc2l6ZSgpKSk7CiAgICAgZnJhbWVMb2Fk
UmVxdWVzdC5zZXRGcmFtZU5hbWUodGFyZ2V0KTsKIAotICAgIGlmICghU2VjdXJpdHlPcmlnaW46
OnNob3VsZEhpZGVSZWZlcnJlcihmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVy
bCgpLCBmcmFtZSgpLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZlcnJlcigpKSkKKyAgICBpZiAoIVNl
Y3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJj
ZVJlcXVlc3QoKS51cmwoKSwgZnJhbWUoKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkp
CiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVy
cmVyKGZyYW1lKCktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpOwogCiAgICAgbV9wZW5k
aW5nVVJMUmVxdWVzdHMuYXBwZW5kKFVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0SUQsIGZyYW1l
TG9hZFJlcXVlc3QsIGFsbG93UG9wdXBzKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZwkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8
YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3RhdGUg
ZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8gU2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTc1NQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkZyYW1lSW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6c2V0UmVmZXJyZXJGb3JSZXF1ZXN0
KToKKyAgICAgICAgKiBzcmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZXNzV2hpdGVs
aXN0RW50cnkpOgorICAgICAgICAoV2ViS2l0OjpXZWJTZWN1cml0eVBvbGljeTo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RzKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2VjdXJpdHlQb2xpY3k6
OnNob3VsZEhpZGVSZWZlcnJlcik6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OmluaXRpYWxpemVNYWluRnJhbWUpOgorCiAyMDEx
LTExLTA4ICBOYXQgRHVjYSAgPG5kdWNhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21p
dW1dIFdoZW4gR0MzRFByaXZhdGU6OmluaXRpYWxpekV4dGVuc2lvbnMgZmFpbHMsIGRvbnQga2Vl
cCByZXRyeWluZwpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUlt
cGwuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkZyYW1lSW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSw2ICsxMjksNyBAQAogI2luY2x1
ZGUgIlNjcmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsVHlwZXMuaCIKICNpbmNsdWRlICJT
Y3JvbGxiYXJUaGVtZS5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAjaW5jbHVkZSAi
U2V0dGluZ3MuaCIKICNpbmNsdWRlICJTa2lhVXRpbHMuaCIKICNpbmNsdWRlICJTdWJzdGl0dXRl
RGF0YS5oIgpAQCAtMTA2NSwxNCArMTA2NiwxNCBAQCBib29sIFdlYkZyYW1lSW1wbDo6aXNWaWV3
U291cmNlTW9kZUVuYWJsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIFdlYkZyYW1lSW1w
bDo6c2V0UmVmZXJyZXJGb3JSZXF1ZXN0KAotICAgIFdlYlVSTFJlcXVlc3QmIHJlcXVlc3QsIGNv
bnN0IFdlYlVSTCYgcmVmZXJyZXJVUkwpIHsKK3ZvaWQgV2ViRnJhbWVJbXBsOjpzZXRSZWZlcnJl
ckZvclJlcXVlc3QoV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgV2ViVVJMJiByZWZlcnJl
clVSTCkKK3sKICAgICBTdHJpbmcgcmVmZXJyZXI7CiAgICAgaWYgKHJlZmVycmVyVVJMLmlzRW1w
dHkoKSkKICAgICAgICAgcmVmZXJyZXIgPSBtX2ZyYW1lLT5sb2FkZXIoKS0+b3V0Z29pbmdSZWZl
cnJlcigpOwogICAgIGVsc2UKICAgICAgICAgcmVmZXJyZXIgPSByZWZlcnJlclVSTC5zcGVjKCku
dXRmMTYoKTsKLSAgICBpZiAoU2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihyZXF1
ZXN0LnVybCgpLCByZWZlcnJlcikpCisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRl
UmVmZXJyZXIocmVxdWVzdC51cmwoKSwgcmVmZXJyZXIpKQogICAgICAgICByZXR1cm47CiAgICAg
cmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoV2ViU3RyaW5nOjpmcm9tVVRGOCgiUmVmZXJlciIp
LCByZWZlcnJlcik7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWN1
cml0eVBvbGljeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2VjdXJpdHlQb2xpY3kuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNlY3VyaXR5UG9saWN5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsNyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVn
aXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
UG9saWN5LmgiCiAKICNpbmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
QEAgLTY4LDcgKzY5LDcgQEAgdm9pZCBXZWJTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNz
VwogICAgIGNvbnN0IFdlYlN0cmluZyYgZGVzdGluYXRpb25Ib3N0LAogICAgIGJvb2wgYWxsb3dE
ZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFj
Y2Vzc1doaXRlbGlzdEVudHJ5KAorICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgKICAgICAgICAgKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc291cmNlT3Jp
Z2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwKICAgICAgICAgZGVzdGluYXRpb25Ib3N0LCBhbGxv
d0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CiB9CkBAIC03OSwxOSArODAsMTkgQEAgdm9pZCBXZWJT
ZWN1cml0eVBvbGljeTo6cmVtb3ZlT3JpZ2luQWNjZQogICAgIGNvbnN0IFdlYlN0cmluZyYgZGVz
dGluYXRpb25Ib3N0LAogICAgIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0g
ICAgU2VjdXJpdHlPcmlnaW46OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KAorICAg
IFNlY3VyaXR5UG9saWN5OjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgKICAgICAg
ICAgKlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwKICAgICAgICAgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlu
cyk7CiB9CiAKIHZvaWQgV2ViU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVs
aXN0cygpCiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0
cygpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsK
IH0KIAogYm9vbCBXZWJTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKGNvbnN0IFdl
YlVSTCYgdXJsLCBjb25zdCBXZWJTdHJpbmcmIHJlZmVycmVyKQogewotICAgIHJldHVybiBTZWN1
cml0eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpOworICAgIHJldHVy
biBTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHVybCwgcmVmZXJyZXIpOwogfQog
CiB2b2lkIFdlYlNlY3VyaXR5UG9saWN5OjpyZWdpc3RlclVSTFNjaGVtZUFzTm90QWxsb3dpbmdK
YXZhc2NyaXB0VVJMcyhjb25zdCBXZWJTdHJpbmcmIHNjaGVtZSkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDk5NjUxKQorKysgU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05Nyw2ICs5Nyw3IEBACiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJT
Y3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAi
U2VjdXJpdHlQb2xpY3kuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlNwZWVj
aElucHV0Q2xpZW50SW1wbC5oIgogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgpAQCAtMjkwLDcg
KzI5MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6OmluaXRpYWxpemVNYWluRnJhbWUoV2UKIAogICAg
IC8vIFJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIGxvY2FsIGZpbGUgc3lzdGVtCiAgICAgLy8g
KHNlZSBXZWJWaWV3Lm1tIFdlYlZpZXc6Ol9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5h
bWUpLgotICAgIFNlY3VyaXR5T3JpZ2luOjpzZXRMb2NhbExvYWRQb2xpY3koU2VjdXJpdHlPcmln
aW46OkFsbG93TG9jYWxMb2Fkc0ZvckxvY2FsT25seSk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnNl
dExvY2FsTG9hZFBvbGljeShTZWN1cml0eVBvbGljeTo6QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxP
bmx5KTsKIH0KIAogdm9pZCBXZWJWaWV3SW1wbDo6c2V0QXV0b2ZpbGxDbGllbnQoV2ViQXV0b2Zp
bGxDbGllbnQqIGF1dG9maWxsQ2xpZW50KQpJbmRleDogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24g
OTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgorCisgICAgICAgIE1vdmUgc3RhdGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJpdHlPcmln
aW4uY3BwIHRvIFNlY3VyaXR5UG9saWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9y
dEd0ay5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGs6OndoaXRlTGlzdEFj
Y2Vzc0Zyb21PcmlnaW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpyZXNl
dE9yaWdpbkFjY2Vzc1doaXRlTGlzdHMpOgorCiAyMDExLTExLTA4ICBaYW4gRG9iZXJzZWsgIDx6
YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgW1dLXVtHVEtdIEFwcGxpY2F0aW9uIGNh
Y2hlIGRpcmVjdG9yeSBpcyBpbmNvcnJlY3RseSBzZXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
R3RrLmNwcAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2
ICs1Niw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5
UG9saWN5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0b3Iu
aCIKICNpbmNsdWRlICJXZWJLaXRET01SYW5nZVByaXZhdGUuaCIKQEAgLTY2NywxMiArNjY4LDEy
IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0R3RrOjpzZXRTbWFydEkKIAogdm9pZCBEdW1w
UmVuZGVyVHJlZVN1cHBvcnRHdGs6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgZ2No
YXIqIHNvdXJjZU9yaWdpbiwgY29uc3QgZ2NoYXIqIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGNvbnN0
IGdjaGFyKiBkZXN0aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMp
CiB7Ci0gICAgU2VjdXJpdHlPcmlnaW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlv
blByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsK
KyAgICBTZWN1cml0eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJv
dG9jb2wsIGRlc3RpbmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQog
CiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZUxp
c3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3Rz
KCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwog
fQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0azo6Z2NDb2xsZWN0SmF2YXNjcmlwdE9i
amVjdHMoKQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
MS0xMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUg
c3RhdGljICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJpdHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5
UG9saWN5LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzE3NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFBsdWdpbnMvSG9zdGVkL0hvc3RlZE5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tOgorICAgICAg
ICAoV2ViS2l0OjpIb3N0ZWROZXRzY2FwZVBsdWdpblN0cmVhbTo6SG9zdGVkTmV0c2NhcGVQbHVn
aW5TdHJlYW0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06
CisgICAgICAgIChXZWJOZXRzY2FwZVBsdWdpblN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnaW5TdHJl
YW0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBf
Y29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYW1lOmdyb3VwTmFtZTpdKToKKyAgICAgICAg
KCtbV2ViVmlldyBfYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2lu
OmRlc3RpbmF0aW9uUHJvdG9jb2w6ZGVzdGluYXRpb25Ib3N0OmFsbG93RGVzdGluYXRpb25TdWJk
b21haW5zOl0pOgorICAgICAgICAoK1tXZWJWaWV3IF9yZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxp
c3RFbnRyeVdpdGhTb3VyY2VPcmlnaW46ZGVzdGluYXRpb25Qcm90b2NvbDpkZXN0aW5hdGlvbkhv
c3Q6YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnM6XSk6CisgICAgICAgICgrW1dlYlZpZXcgX3Jl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0c10pOgorCiAyMDExLTExLTA4ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBOU1JhbmdlIC8gRE9NUmFu
Z2UgZnVuY3Rpb25zIGJhY2sgdG8gV2ViRnJhbWVJbnRlcm5hbApJbmRleDogU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCShyZXZp
c2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW0ubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbXBvcnQgPFdl
YkNvcmUvRnJhbWVMb2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFz
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9ydCA8V2Vi
S2l0U3lzdGVtSW50ZXJmYWNlLmg+CkBAIC0xNzAsOCArMTcxLDggQEAgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OldlYk5ldHNjYXBlUGx1ZwogICAgIHNldFBsdWdpbihwbHVnaW4pOwogICAgIAog
ICAgIHN0cmVhbXMoKS5hZGQoJm1fc3RyZWFtLCBwbHVnaW4pOwotICAgICAgICAKLSAgICBpZiAo
U2VjdXJpdHlPcmlnaW46OnNob3VsZEhpZGVSZWZlcnJlcihbcmVxdWVzdCBVUkxdLCBjb3JlKFt2
aWV3IHdlYkZyYW1lXSktPmxvYWRlcigpLT5vdXRnb2luZ1JlZmVycmVyKCkpKQorICAgIAorICAg
IGlmIChTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKFtyZXF1ZXN0IFVSTF0sIGNv
cmUoW3ZpZXcgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkpCiAgICAg
ICAgIFttX3JlcXVlc3QuZ2V0KCkgX3dlYl9zZXRIVFRQUmVmZXJyZXI6bmlsXTsKIH0KIApJbmRl
eDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5T
dHJlYW0ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQv
SG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0JKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNl
L1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvSG9zdGVkTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0J
KHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvRnJhbWVM
b2FkZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
UG9saWN5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVVUkxSZXNwb25zZS5oPgogI2ltcG9y
dCA8d3RmL1JlZkNvdW50ZWRMZWFrQ291bnRlci5oPgogCkBAIC01OCw3ICs1OSw3IEBAIEhvc3Rl
ZE5ldHNjYXBlUGx1Z2luU3RyZWFtOjpIb3N0ZWROZXRzY2EKICAgICAsIG1fcmVxdWVzdFVSTChb
cmVxdWVzdCBVUkxdKQogICAgICwgbV9mcmFtZUxvYWRlcigwKQogewotICAgIGlmIChTZWN1cml0
eU9yaWdpbjo6c2hvdWxkSGlkZVJlZmVycmVyKFtyZXF1ZXN0IFVSTF0sIGNvcmUoW2luc3RhbmNl
LT5wbHVnaW5WaWV3KCkgd2ViRnJhbWVdKS0+bG9hZGVyKCktPm91dGdvaW5nUmVmZXJyZXIoKSkp
CisgICAgaWYgKFNlY3VyaXR5UG9saWN5OjpzaG91bGRIaWRlUmVmZXJyZXIoW3JlcXVlc3QgVVJM
XSwgY29yZShbaW5zdGFuY2UtPnBsdWdpblZpZXcoKSB3ZWJGcmFtZV0pLT5sb2FkZXIoKS0+b3V0
Z29pbmdSZWZlcnJlcigpKSkKICAgICAgICAgW21fcmVxdWVzdC5nZXQoKSBfd2ViX3NldEhUVFBS
ZWZlcnJlcjpuaWxdOwogCiAjaWZuZGVmIE5ERUJVRwpJbmRleDogU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViVmlldy5tbQkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE1NSw2ICsxNTUsNyBAQAogI2ltcG9y
dCA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NjcmlwdFZh
bHVlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CisjaW1wb3J0IDxXZWJD
b3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1w
b3J0IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGhy
ZWFkQ2hlY2suaD4KQEAgLTc3NywxMSArNzc4LDExIEBAIC0gKHZvaWQpX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aEZyYW1lTmEKIAogICAgIGlmICghV2ViS2l0TGlua2VkT25PckFmdGVyKFdFQktJ
VF9GSVJTVF9WRVJTSU9OX1dJVEhfTE9DQUxfUkVTT1VSQ0VfU0VDVVJJVFlfUkVTVFJJQ1RJT04p
KSB7CiAgICAgICAgIC8vIE9yaWdpbmFsbHksIHdlIGFsbG93ZWQgYWxsIGxvY2FsIGxvYWRzLgot
ICAgICAgICBTZWN1cml0eU9yaWdpbjo6c2V0TG9jYWxMb2FkUG9saWN5KFNlY3VyaXR5T3JpZ2lu
OjpBbGxvd0xvY2FsTG9hZHNGb3JBbGwpOworICAgICAgICBTZWN1cml0eVBvbGljeTo6c2V0TG9j
YWxMb2FkUG9saWN5KFNlY3VyaXR5UG9saWN5OjpBbGxvd0xvY2FsTG9hZHNGb3JBbGwpOwogICAg
IH0gZWxzZSBpZiAoIVdlYktpdExpbmtlZE9uT3JBZnRlcihXRUJLSVRfRklSU1RfVkVSU0lPTl9X
SVRIX01PUkVfU1RSSUNUX0xPQ0FMX1JFU09VUkNFX1NFQ1VSSVRZX1JFU1RSSUNUSU9OKSkgewog
ICAgICAgICAvLyBMYXRlciwgd2UgYWxsb3dlZCBsb2NhbCBsb2FkcyBmb3IgbG9jYWwgVVJMcyBh
bmQgZG9jdW1lbnRzIGxvYWRlZAogICAgICAgICAvLyB3aXRoIHN1YnN0aXR1dGUgZGF0YS4KLSAg
ICAgICAgU2VjdXJpdHlPcmlnaW46OnNldExvY2FsTG9hZFBvbGljeShTZWN1cml0eU9yaWdpbjo6
QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CisgICAgICAgIFNlY3Vy
aXR5UG9saWN5OjpzZXRMb2NhbExvYWRQb2xpY3koU2VjdXJpdHlQb2xpY3k6OkFsbG93TG9jYWxM
b2Fkc0ZvckxvY2FsQW5kU3Vic3RpdHV0ZURhdGEpOwogICAgIH0KIAogICAgIGlmICghV2ViS2l0
TGlua2VkT25PckFmdGVyKFdFQktJVF9GSVJTVF9WRVJTSU9OX1dJVEhPVVRfQ09OVEVOVF9TTklG
RklOR19GT1JfRklMRV9VUkxTKSkKQEAgLTI0NjcsMTcgKzI0NjgsMTcgQEAgLSAoTlNQYXN0ZWJv
YXJkICopX2luc2VydGlvblBhc3RlYm9hcmQKIAogKyAodm9pZClfYWRkT3JpZ2luQWNjZXNzV2hp
dGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2luOihOU1N0cmluZyAqKXNvdXJjZU9yaWdpbiBkZXN0
aW5hdGlvblByb3RvY29sOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uUHJvdG9jb2wgZGVzdGluYXRp
b25Ib3N0OihOU1N0cmluZyAqKWRlc3RpbmF0aW9uSG9zdCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9t
YWluczooQk9PTClhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucwogewotICAgIFNlY3VyaXR5T3Jp
Z2luOjphZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0
ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRp
b25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJv
bVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhv
c3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAogKyAodm9pZClfcmVtb3ZlT3Jp
Z2luQWNjZXNzV2hpdGVsaXN0RW50cnlXaXRoU291cmNlT3JpZ2luOihOU1N0cmluZyAqKXNvdXJj
ZU9yaWdpbiBkZXN0aW5hdGlvblByb3RvY29sOihOU1N0cmluZyAqKWRlc3RpbmF0aW9uUHJvdG9j
b2wgZGVzdGluYXRpb25Ib3N0OihOU1N0cmluZyAqKWRlc3RpbmF0aW9uSG9zdCBhbGxvd0Rlc3Rp
bmF0aW9uU3ViZG9tYWluczooQk9PTClhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucwogewotICAg
IFNlY3VyaXR5T3JpZ2luOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJp
dHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2luKSwgZGVzdGluYXRpb25Qcm90
b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9uU3ViZG9tYWlucyk7CisgICAg
U2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0
eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3Rv
Y29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKIH0KIAog
Kyh2b2lkKV9yZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMKIHsKLSAgICBTZWN1cml0eU9yaWdp
bjo6cmVzZXRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOwogfQogCiAtICh2b2lkKV91cGRhdGVBY3RpdmVT
dGF0ZQpJbmRleDogU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDk5NjUxKQorKysgU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0xMS0w
NyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgc3RhdGlj
ICJwb2xpY3kiIHN0YXRlIGZyb20gU2VjdXJpdHlPcmlnaW4uY3BwIHRvIFNlY3VyaXR5UG9saWN5
LmNwcAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE3
NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OlFXZWJQYWdlUHJpdmF0
ZSk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQuY3Bw
OgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21P
cmlnaW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJlbW92ZVdoaXRlTGlz
dEFjY2Vzc0Zyb21PcmlnaW4pOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0UXQ6OnJl
c2V0T3JpZ2luQWNjZXNzV2hpdGVMaXN0cyk6CisKIDIwMTEtMTEtMDggIEx1aXogQWdvc3Rpbmkg
IDxsdWl6LmFnb3N0aW5pQHBhbG0uY29tPgogCiAgICAgICAgIFtRdF0gUmVtb3ZpbmcgcXdlYmtp
dGdsb2JhbC5oIGluY2x1c2lvbiBmcm9tIHF3ZWJraXRwbGF0Zm9ybXBsdWdpbi5oCkluZGV4OiBT
b3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA5OTY1MSkKKysrIFNvdXJjZS9XZWJL
aXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDYgKzEwNSw3IEBA
CiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNp
bmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgorI2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCiAj
aW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpZiBkZWZpbmVkIFFfT1NfV0lOMzIKICNpbmNsdWRlICJT
eXN0ZW1JbmZvLmgiCkBAIC0zMzAsNyArMzMxLDcgQEAgUVdlYlBhZ2VQcml2YXRlOjpRV2ViUGFn
ZVByaXZhdGUoUVdlYlBhZwogICAgIFdlYkNvcmU6OkluaXRpYWxpemVMb2dnaW5nQ2hhbm5lbHNJ
Zk5lY2Vzc2FyeSgpOwogICAgIFNjcmlwdENvbnRyb2xsZXI6OmluaXRpYWxpemVUaHJlYWRpbmco
KTsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7Ci0gICAgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW46OnNldExvY2FsTG9hZFBvbGljeShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6QWxs
b3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CisgICAgV2ViQ29yZTo6U2Vj
dXJpdHlQb2xpY3k6OnNldExvY2FsTG9hZFBvbGljeShXZWJDb3JlOjpTZWN1cml0eVBvbGljeTo6
QWxsb3dMb2NhbExvYWRzRm9yTG9jYWxBbmRTdWJzdGl0dXRlRGF0YSk7CiAKICAgICBQbGF0Zm9y
bVN0cmF0ZWdpZXNRdDo6aW5pdGlhbGl6ZSgpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNw
cAkocmV2aXNpb24gOTk2NTEpCisrKyBTb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBA
QAogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRWYWx1ZS5o
IgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3ku
aCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmgiCkBAIC00NjQsMTcgKzQ2NSwxNyBAQCB2b2lkIER1bXBSZW5k
ZXJUcmVlU3VwcG9ydFF0OjpyZXN1bWVBY3RpCiAKIHZvaWQgRHVtcFJlbmRlclRyZWVTdXBwb3J0
UXQ6OndoaXRlTGlzdEFjY2Vzc0Zyb21PcmlnaW4oY29uc3QgUVN0cmluZyYgc291cmNlT3JpZ2lu
LCBjb25zdCBRU3RyaW5nJiBkZXN0aW5hdGlvblByb3RvY29sLCBjb25zdCBRU3RyaW5nJiBkZXN0
aW5hdGlvbkhvc3QsIGJvb2wgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpCiB7Ci0gICAgU2Vj
dXJpdHlPcmlnaW46OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KCpTZWN1cml0eU9yaWdp
bjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4pLCBkZXN0aW5hdGlvblByb3RvY29sLCBk
ZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25TdWJkb21haW5zKTsKKyAgICBTZWN1cml0
eVBvbGljeTo6YWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkoKlNlY3VyaXR5T3JpZ2luOjpj
cmVhdGVGcm9tU3RyaW5nKHNvdXJjZU9yaWdpbiksIGRlc3RpbmF0aW9uUHJvdG9jb2wsIGRlc3Rp
bmF0aW9uSG9zdCwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogfQogCiB2b2lkIER1bXBS
ZW5kZXJUcmVlU3VwcG9ydFF0OjpyZW1vdmVXaGl0ZUxpc3RBY2Nlc3NGcm9tT3JpZ2luKGNvbnN0
IFFTdHJpbmcmIHNvdXJjZU9yaWdpbiwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Qcm90b2Nv
bCwgY29uc3QgUVN0cmluZyYgZGVzdGluYXRpb25Ib3N0LCBib29sIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZW1vdmVPcmlnaW5BY2Nlc3NXaGl0
ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoc291cmNlT3JpZ2lu
KSwgZGVzdGluYXRpb25Qcm90b2NvbCwgZGVzdGluYXRpb25Ib3N0LCBhbGxvd0Rlc3RpbmF0aW9u
U3ViZG9tYWlucyk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRl
bGlzdEVudHJ5KCpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyhzb3VyY2VPcmlnaW4p
LCBkZXN0aW5hdGlvblByb3RvY29sLCBkZXN0aW5hdGlvbkhvc3QsIGFsbG93RGVzdGluYXRpb25T
dWJkb21haW5zKTsKIH0KIAogdm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRRdDo6cmVzZXRPcmln
aW5BY2Nlc3NXaGl0ZUxpc3RzKCkKIHsKLSAgICBTZWN1cml0eU9yaWdpbjo6cmVzZXRPcmlnaW5B
Y2Nlc3NXaGl0ZWxpc3RzKCk7CisgICAgU2VjdXJpdHlQb2xpY3k6OnJlc2V0T3JpZ2luQWNjZXNz
V2hpdGVsaXN0cygpOwogfQogCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydFF0OjpzZXREb21h
aW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lKGJvb2wgZm9yYmlkZGVuLCBjb25zdCBR
U3RyaW5nJiBzY2hlbWUpCkluZGV4OiBTb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA5OTY1MSkKKysr
IFNvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTW92ZSBzdGF0aWMgInBvbGljeSIgc3RhdGUgZnJvbSBTZWN1cml0eU9yaWdpbi5jcHAgdG8g
U2VjdXJpdHlQb2xpY3kuY3BwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03MTc1NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjphZGRPcmlnaW5BY2Nl
c3NXaGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJWaWV3OjpyZW1vdmVPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSk6CisgICAgICAgIChXZWJWaWV3OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRl
bGlzdHMpOgorCiAyMDExLTExLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgTW92ZSBEb21haW5SZWxheGF0aW9uRm9yYmlkZGVuIHNjaGVtZSByZWdpc3RyeSB0
byBTY2hlbWVSZWdpc3RyeQpJbmRleDogU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDk5NjUx
KQorKysgU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
OSw2ICsxMjksNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2Nyb2xsYmFyLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TY3JvbGxiYXJUaGVtZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW4uaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5UG9saWN5Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2ltcGxlRm9udERhdGEuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL1N5c3RlbUluZm8uaD4KQEAgLTYzNTUsMTkgKzYzNTYsMTkgQEAgSFJF
U1VMVCBXZWJWaWV3OjppbnZhbGlkYXRlQmFja2luZ1N0b3JlKAogCiBIUkVTVUxUIFdlYlZpZXc6
OmFkZE9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEJTVFIgc291cmNlT3JpZ2luLCBCU1RSIGRl
c3RpbmF0aW9uUHJvdG9jb2wsIEJTVFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93RGVzdGlu
YXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nKHNv
dXJjZU9yaWdpbiwgU3lzU3RyaW5nTGVuKHNvdXJjZU9yaWdpbikpKSwgU3RyaW5nKGRlc3RpbmF0
aW9uUHJvdG9jb2wsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvblByb3RvY29sKSksIFN0cmluZyhk
ZXN0aW5hdGlvbkhvc3QsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvbkhvc3QpKSwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjphZGRPcmlnaW5BY2Nlc3NX
aGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcoU3RyaW5nKHNv
dXJjZU9yaWdpbiwgU3lzU3RyaW5nTGVuKHNvdXJjZU9yaWdpbikpKSwgU3RyaW5nKGRlc3RpbmF0
aW9uUHJvdG9jb2wsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvblByb3RvY29sKSksIFN0cmluZyhk
ZXN0aW5hdGlvbkhvc3QsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvbkhvc3QpKSwgYWxsb3dEZXN0
aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVybiBTX09LOwogfQogCiBIUkVTVUxUIFdlYlZp
ZXc6OnJlbW92ZU9yaWdpbkFjY2Vzc1doaXRlbGlzdEVudHJ5KEJTVFIgc291cmNlT3JpZ2luLCBC
U1RSIGRlc3RpbmF0aW9uUHJvdG9jb2wsIEJTVFIgZGVzdGluYXRpb25Ib3N0LCBCT09MIGFsbG93
RGVzdGluYXRpb25TdWJkb21haW5zKQogewotICAgIFNlY3VyaXR5T3JpZ2luOjpyZW1vdmVPcmln
aW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
U3RyaW5nKHNvdXJjZU9yaWdpbiwgU3lzU3RyaW5nTGVuKHNvdXJjZU9yaWdpbikpKSwgU3RyaW5n
KGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvblByb3RvY29sKSks
IFN0cmluZyhkZXN0aW5hdGlvbkhvc3QsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvbkhvc3QpKSwg
YWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOworICAgIFNlY3VyaXR5UG9saWN5OjpyZW1vdmVP
cmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeSgqU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJp
bmcoU3RyaW5nKHNvdXJjZU9yaWdpbiwgU3lzU3RyaW5nTGVuKHNvdXJjZU9yaWdpbikpKSwgU3Ry
aW5nKGRlc3RpbmF0aW9uUHJvdG9jb2wsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvblByb3RvY29s
KSksIFN0cmluZyhkZXN0aW5hdGlvbkhvc3QsIFN5c1N0cmluZ0xlbihkZXN0aW5hdGlvbkhvc3Qp
KSwgYWxsb3dEZXN0aW5hdGlvblN1YmRvbWFpbnMpOwogICAgIHJldHVybiBTX09LOwogfQogCiBI
UkVTVUxUIFdlYlZpZXc6OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpCiB7Ci0gICAgU2Vj
dXJpdHlPcmlnaW46OnJlc2V0T3JpZ2luQWNjZXNzV2hpdGVsaXN0cygpOworICAgIFNlY3VyaXR5
UG9saWN5OjpyZXNldE9yaWdpbkFjY2Vzc1doaXRlbGlzdHMoKTsKICAgICByZXR1cm4gU19PSzsK
IH0KICAK
</data>
<flag name="review"
          id="112805"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>