<?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>107398</bug_id>
          
          <creation_ts>2013-01-20 07:12:07 -0800</creation_ts>
          <short_desc>[GTK][GStreamer] FullscreenVideoControllerGtk implementation</short_desc>
          <delta_ts>2013-02-01 02:28:26 -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>Media</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>
          <dependson>106760</dependson>
    
    <dependson>107458</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>811619</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 07:12:07 -0800</bug_when>
    <thetext>See also bug 106760</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>811621</commentid>
    <comment_count>1</comment_count>
      <attachid>183672</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-20 07:23:51 -0800</bug_when>
    <thetext>Created attachment 183672
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>817185</commentid>
    <comment_count>2</comment_count>
      <attachid>184864</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-26 07:15:10 -0800</bug_when>
    <thetext>Created attachment 184864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820175</commentid>
    <comment_count>3</comment_count>
      <attachid>185497</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-30 07:00:42 -0800</bug_when>
    <thetext>Created attachment 185497
Patch

Rebased against ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821412</commentid>
    <comment_count>4</comment_count>
      <attachid>185497</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2013-01-31 05:11:31 -0800</bug_when>
    <thetext>Comment on attachment 185497
Patch

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

&gt; Source/WebCore/platform/graphics/gtk/FullscreenVideoControllerGtk.h:82
&gt; +    unsigned long m_exitFullcreenActionActivateSignalHandler;

Two naming nits about this class: these really aren&apos;t handlers but rather ids, so how about s/Handler/ID/? And secondly, keeping Gtk out of this class&apos; name would avoid having an #if PLATFORM() block for each of GStreamer-based ports in the MediaPlayerPrivate part of this patch, wouldn&apos;t it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821468</commentid>
    <comment_count>5</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-01-31 06:16:17 -0800</bug_when>
    <thetext>Hum but how would that work?

I expect each port to have its own FullscreenController implementation deriving from the base class. Having a Gtk subsclass kinda makes sense to me :)

I guess I&apos;m misunderstanding your point</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822531</commentid>
    <comment_count>6</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-01 02:21:18 -0800</bug_when>
    <thetext>Carlos clarified this for me, the create method should be moved to the GStreamer base class, avoiding the ugly #define FullscreenVideoControllerClass in the player so I can directly use the base class there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822534</commentid>
    <comment_count>7</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-01 02:27:25 -0800</bug_when>
    <thetext>Committed r141566: &lt;http://trac.webkit.org/changeset/141566&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822536</commentid>
    <comment_count>8</comment_count>
      <attachid>185497</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-02-01 02:28:26 -0800</bug_when>
    <thetext>Comment on attachment 185497
Patch

Clearing r+ flag of landed patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>183672</attachid>
            <date>2013-01-20 07:23:51 -0800</date>
            <delta_ts>2013-01-26 07:15:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>42865</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBmNGNkMGFkYzgzMzk4MzJjYTUyM2E2ZTgyYThjNGJhMjI3ZjM2YTZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjIwOjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE5ICsrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAg
ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwICAgICAgfCAgIDIyICstCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKwogLi4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR3RrLmNwcH0gfCAgMzM1ICsrKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaH0gICB8ICAgNjggKyst
LQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI3ICsrCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgLQogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCAgfCAgIDUzICsrKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIHwgICAgMiArLQogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwICAgICAgICAgfCAgIDI4IC0tCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3ByaXZhdGUuaCAgICB8ICAgIDggLQogMTIgZmlsZXMgY2hhbmdlZCwgMjUyIGlu
c2VydGlvbnMoKyksIDMyMCBkZWxldGlvbnMoLSkKIHJlbmFtZSBTb3VyY2Uve1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgPT4gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHB9ICg1
NCUpCiByZW5hbWUgU291cmNlL3tXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaCA9PiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrLmh9ICg1MyUpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDU4NWQ3ZjYuLmE2
MDUwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bR1N0cmVhbWVy
XSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTyBzdXBwb3J0IGZvciB0aGUgR1RLIHBvcnQuIFRoZSBwcmV2aW91cworICAgICAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyIGltcGxlbWVudGF0aW9uIHdhcyByZWZhY3RvcmVkIGFzIGEK
KyAgICAgICAgc3ViLWNsYXNzIG9mIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIg
YW5kIGhvb2tlZCBpbiB0aGUKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGJh
Y2tlbmQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaC4KKworMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggNTAyZGE0OC4uZWQyZDI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC02MDc0LDYgKzYwNzQsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDdkZWI5ODkuLjY4MTM2ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02MCw2ICs2MCwx
MiBAQAogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIKKyNlbmRpZgorI2VuZGlmCisK
IC8vIEdzdFBsYXlGbGFncyBmbGFncyBmcm9tIHBsYXliaW4yLiBJdCBpcyB0aGUgcG9saWN5IG9m
IEdTdHJlYW1lciB0bwogLy8gbm90IHB1YmxpY2x5IGV4cG9zZSBlbGVtZW50LXNwZWNpZmljIGVu
dW1zLiBUaGF0J3Mgd2h5IHRoaXMKIC8vIEdzdFBsYXlGbGFncyBlbnVtIGhhcyBiZWVuIGNvcGll
ZCBoZXJlLgpAQCAtMjY5LDYgKzI3NSw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgfQogCiAjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisg
ICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisKICAgICBpZiAobV92aWRlb1NpbmtCaW4pIHsKICAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihtX3ZpZGVvU2lua0Jpbik7CiAgICAgICAgIG1fdmlkZW9T
aW5rQmluID0gMDsKQEAgLTE3NTEsMTIgKzE3NjAsMjEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorICAgIEFTU0VSVCghbV9mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgbV9mdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyID0gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlKHRo
aXMpOworICAgIG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmV4aXRGdWxs
c2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAoIW1f
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBtX2Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIucmVsZWFzZSgpOworI2VuZGlmCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDczMmUwNDkuLmEwOTNl
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAg
LTM3LDYgKzM3LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RF
bGVtZW50IEdzdEVsZW1lbnQ7CiAKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisj
aWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3Mg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0aworI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5hbWUg
ZnJvbSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQxNGRjOTcuLjIwMzYyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDg2ICsxOSw4NiBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIK
IAorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJHUmVmUHRyR3RrLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCiAjaW5jbHVk
ZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAj
aW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgot
I2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAwIC8vIDMgc2Vj
b25kcwogI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAvLyAxNTBtcwot
I2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKLSNkZWZpbmUgVk9MVU1FX0RPV05f
T0ZGU0VUIDAuMDUgLy8gNSUKIAogLy8gVXNlIHN5bWJvbGljIGljb25zIG9ubHkgaWYgd2UgYnVp
bGQgd2l0aCBHVEsrLTMgc3VwcG9ydC4gVGhleSBjb3VsZAogLy8gYmUgZW5hYmxlZCBmb3IgdGhl
IEdUSysyIGJ1aWxkIGJ1dCB3ZSdkIG5lZWQgdG8gYnVtcCB0aGUgcmVxdWlyZWQKIC8vIHZlcnNp
b24gdG8gYXQgbGVhc3QgMi4yMi4KLSNpZiBHVEtfTUFKT1JfVkVSU0lPTiA8IDMKLSNkZWZpbmUg
UExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgotI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIgotI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNP
Tl9OQU1FICJ2aWV3LXJlc3RvcmUiCisjaWYgR1RLX01BSk9SX1ZFUlNJT04gPiAyCisjZGVmaW5l
IElDT05fTkFNRV9TVUZGSVggIi1zeW1ib2xpYyIKICNlbHNlCi0jZGVmaW5lIFBMQVlfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIKLSNkZWZpbmUgUEFVU0VfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIKLSNkZWZpbmUgRVhJVF9GVUxMU0NS
RUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlLXN5bWJvbGljIgorI2RlZmluZSBJQ09OX05BTUVf
U1VGRklYCiAjZW5kaWYKIAotc3RhdGljIGdib29sZWFuIGhpZGVIdWRDYWxsYmFjayhGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorI2RlZmluZSBQTEFZX0lDT05fTkFNRSAi
bWVkaWEtcGxheWJhY2stc3RhcnQiSUNPTl9OQU1FX1NVRkZJWAorI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIklDT05fTkFNRV9TVUZGSVgKKyNkZWZpbmUgRVhJ
VF9GVUxMU0NSRUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlIklDT05fTkFNRV9TVUZGSVgKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgZ2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxl
ci0+aGlkZUh1ZCgpOwogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVu
dE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQor
c3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPnNob3dIdWQodHJ1ZSk7CiAg
ICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5v
dGlmaWNhdGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR1BhcmFtU3BlYyogcHJvcGVydHksIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3Jl
ZW5HdGtBY3RpdmVOb3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHBy
b3BlcnR5LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmICghZ3RrX3dpbmRvd19pc19hY3RpdmUoR1RLX1dJTkRPVyh3aWRnZXQpKSkKICAgICAgICAg
Y29udHJvbGxlci0+aGlkZUh1ZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVu
R3RrQ29uZmlndXJlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRDb25maWd1cmUqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250
cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmd0a0NvbmZpZ3VyZShldmVudCk7CiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lk
Z2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0
aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRl
ZChHdGtBY3Rpb24qIGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
cikKK3N0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlv
biwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250
cm9sbGVyLT50b2dnbGVQbGF5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4aXRGdWxsc2NyZWVuQWN0
aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyKQorc3RhdGljIHZvaWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBh
Y3Rpb24sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAg
Y29udHJvbGxlci0+ZXhpdE9uVXNlclJlcXVlc3QoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHBy
b2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQs
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4g
dGltZVNjYWxlQnV0dG9uUHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24q
IGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQogICAgICAgICByZXR1cm4gRkFM
U0U7CkBAIC0xMDcsNjQgKzEwNyw0OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LAogICAgIHJl
dHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblJlbGVhc2Vk
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5l
bmRTZWVrKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCB0aW1lU2NhbGVW
YWx1ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1ZUNoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAg
ICAgY29udHJvbGxlci0+ZG9TZWVrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHZvbHVtZVZhbHVlQ2hh
bmdlZChHdGtTY2FsZUJ1dHRvbiAqYnV0dG9uLCBnZG91YmxlIHZhbHVlLCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2Vk
KEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0
YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOwogfQogCi12b2lkIHBsYXllclZvbHVtZUNoYW5nZWRD
YWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT52b2x1bWVDaGFu
Z2VkKCk7Ci19CiAKLXZvaWQgcGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVt
ZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOwotfQotCi1GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKLSAgICA6IG1faHVk
VGltZW91dElkKDApCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQorICAg
IDogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihwbGF5ZXIpCisgICAgLCBtX2h1
ZFRpbWVvdXRJZCgwKQogICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCiAgICAgLCBtX3Nl
ZWtMb2NrKGZhbHNlKQogICAgICwgbV93aW5kb3coMCkKICAgICAsIG1faHVkV2luZG93KDApCisg
ICAgLCBtX2tleVByZXNzU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9kZXN0cm95U2lnbmFsSGFu
ZGxlcigwKQorICAgICwgbV9pc0FjdGl2ZVNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fbW90aW9u
Tm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRs
ZXIoMCkKKyAgICAsIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90
aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fcGxheUFjdGlvbkFjdGl2YXRl
U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWdu
YWxIYW5kbGVyKDApCiB7CiB9CiAKLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1l
bnQ7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4ndCBkbyBmdWxs
LXNjcmVlbiwganVzdCBnZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omd0a0NvbmZpZ3VyZShHZGtFdmVu
dENvbmZpZ3VyZSogZXZlbnQpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Omd0
a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpCiB7CiAgICAgdXBkYXRlSHVkUG9z
aXRpb24oKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKGJv
b2wgYXV0b0hpZGUpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnNob3dIdWQo
Ym9vbCBhdXRvSGlkZSkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0xOTIsNyArMTc3LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93
SHVkKGJvb2wgYXV0b0hpZGUpCiAgICAgICAgIG1faHVkVGltZW91dElkID0gZ190aW1lb3V0X2Fk
ZChIVURfQVVUT19ISURFX0lOVEVSVkFMLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPiho
aWRlSHVkQ2FsbGJhY2spLCB0aGlzKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpoaWRlSHVkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aGlkZUh1
ZCgpCiB7CiAgICAgaWYgKG1faHVkVGltZW91dElkKSB7CiAgICAgICAgIGdfc291cmNlX3JlbW92
ZShtX2h1ZFRpbWVvdXRJZCk7CkBAIC0yMjIsMTIgKzIwNywxMCBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQogICAgIH0KIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5
KiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBn
Ym9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEtleSogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xs
ZXIpCiB7CiAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CiAgICAgY2FzZSBHREtfRXNjYXBl
OgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgogICAgICAgICBjb250cm9sbGVyLT5leGl0
T25Vc2VyUmVxdWVzdCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdES19zcGFjZToKQEAg
LTIzNSwxMiArMjE4LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVz
c0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlCiAgICAgICAgIGNvbnRy
b2xsZXItPnRvZ2dsZVBsYXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfVXA6Ci0g
ICAgICAgIC8vIHZvbHVtZSB1cAotICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJv
bGxlci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxlci0+
aW5jcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfRG93bjoKLSAg
ICAgICAgLy8gdm9sdW1lIGRvd24KLSAgICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRy
b2xsZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxl
ci0+ZGVjcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC0yNDksMjUgKzIzMCwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2Ny
ZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZQog
ICAgIHJldHVybiBUUlVFOwogfQogCi0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aW5p
dGlhbGl6ZVdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2dzdHJlYW1lckdXb3JsZCA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkOwotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQt
PmVudGVyRnVsbHNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3dpbmRvdyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9nc3RyZWFtZXJHV29ybGQtPnBsYXRmb3JtVmlk
ZW9XaW5kb3coKS0+d2luZG93KCkpOwogCi0gICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX2dz
dHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5l
LCAibm90aWZ5Ojp2b2x1bWUiLCBHX0NBTExCQUNLKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6Om11dGUi
LCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQogICAgIGlm
ICghbV9odWRXaW5kb3cpCiAgICAgICAgIGNyZWF0ZUh1ZCgpOwogCkBAIC0yODEsOSArMjQ3LDkg
QEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogI2Vu
ZGlmCiAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fd2luZG93LCBGQUxTRSk7
CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19D
QUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0
a0Rlc3Ryb3kpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAibm90aWZ5
Ojppcy1hY3RpdmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlv
biksIHRoaXMpOworICAgIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVj
dChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIG1fZGVzdHJveVNpZ25hbEhhbmRsZXIgPSBnX3Np
Z25hbF9jb25uZWN0KG1fd2luZG93LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrRGVzdHJveSksIHRoaXMpOworICAgIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyID0gZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKIAogICAgIGd0a193aWRnZXRf
c2hvd19hbGwobV93aW5kb3cpOwogCkBAIC0yOTEsMTQgKzI1NywxNCBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHZGtDdXJz
b3I+IGN1cnNvcihhZG9wdEdSZWYoYmxhbmtDdXJzb3IoKSkpOwogICAgIGdka193aW5kb3dfc2V0
X2N1cnNvcih3aW5kb3csIGN1cnNvci5nZXQoKSk7CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2luZG93LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
TW90aW9uTm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93
LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVF
dmVudCksIHRoaXMpOworICAgIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFs
X2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1fY29uZmlndXJlRXZl
bnRTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1l
dmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsK
IAogICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CiAgICAg
c2hvd0h1ZCh0cnVlKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0
ZUh1ZFBvc2l0aW9uKCkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0zMDcsOCArMjczLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCiAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2luZG93X2dldF9z
Y3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOwogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKICAgICBHZGtSZWN0YW5nbGUgZnVsbHNjcmVl
blJlY3RhbmdsZTsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwg
Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3cpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3JlZW5SZWN0YW5nbGUpOworICAg
IGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdyksICZmdWxsc2NyZWVuUmVjdGFuZ2xlKTsK
IAogICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCiAgICAgaW50IGh1ZFdpZHRoLCBo
dWRIZWlnaHQ7CkBAIC0zMTgsMjggKzI4MywyNiBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lO
RE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS53aWR0aCwgaHVkSGVpZ2h0KTsK
IAogICAgIC8vIE1vdmUgdGhlIGh1ZCB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uCi0gICAg
Z3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFu
Z2xlLngsCi0gICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVpZ2h0ICsg
ZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbV9tZWRpYUVsZW1l
bnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9o
dWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLngsIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVp
Z2h0ICsgZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHdGs6OmRlc3Ryb3lXaW5kb3coKQogewogICAgIGlmICghbV9odWRXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
RGVzdHJveSksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrTW90aW9u
Tm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0Nv
bmZpZ3VyZUV2ZW50KSwgdGhpcyk7Ci0KLSAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVk
aWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGlu
ZSgpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhp
cyk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2tleVByZXNzU2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBt
X2Rlc3Ryb3lTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qo
bV93aW5kb3csIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QobV93aW5kb3csIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcik7CisgICAg
Z19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2NvbmZpZ3VyZUV2ZW50U2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1faHVkV2luZG93
LCBtX2h1ZE1vdGlvbk5vdGlmeVNpZ25hbEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1fdGltZVNjYWxlQnV0dG9uUHJlc3NlZFNpZ25hbEhh
bmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1f
dGltZVNjYWxlQnV0dG9uUmVsZWFzZWRTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QobV90aW1lSFNjYWxlLCBtX2hzY2FsZVVwZGF0ZUlkKTsKKyAgICBnX3Np
Z25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3BsYXlQYXVzZUFjdGlvbiwgbV9w
bGF5QWN0aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0
aXZhdGVTaWduYWxIYW5kbGVyKTsKIAogICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgewogICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOwpAQCAtMzUxLDE1OCArMzE0LDU4IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgICAg
ICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOwogICAgIH0KIAotICAgIGlmIChtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0
cmVhbWVyR1dvcmxkVHlwZSkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7Ci0KICAgICBndGtfd2lk
Z2V0X2hpZGUobV93aW5kb3cpOwogCi0gICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faHVkV2luZG93
KTsKKyAgICBpZiAobV9odWRXaW5kb3cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1
ZFdpbmRvdyk7CiAgICAgbV9odWRXaW5kb3cgPSAwOwogfQogCi1ib29sIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmNhblBsYXkoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dCAmJiBtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnBsYXkoKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkKLSAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnBsYXkoKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKLSAgICBz
aG93SHVkKHRydWUpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNl
KCkKLXsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5w
YXVzZSgpOwotCi0gICAgcGxheVN0YXRlQ2hhbmdlZCgpOwotICAgIHNob3dIdWQoZmFsc2UpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQoKQor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpwbGF5U3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBpZiAoY2FuUGxheSgpKQorICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNl
ZCgpKQogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwg
XygiUGxheSIpLCAiaWNvbi1uYW1lIiwgUExBWV9JQ09OX05BTUUsIE5VTEwpOwogICAgIGVsc2UK
ICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBh
dXNlIiksICJpY29uLW5hbWUiLCBQQVVTRV9JQ09OX05BTUUsIE5VTEwpOworICAgIHNob3dIdWQo
IW1fY2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQotewotICAgIGlmIChjYW5QbGF5KCkpCi0gICAg
ICAgIHBsYXkoKTsKLSAgICBlbHNlCi0gICAgICAgIHBhdXNlKCk7Ci19Ci0KLWZsb2F0IEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKLX0KLQotYm9vbCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11dGVkKCkgOiBmYWxzZTsKLX0KLQotdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAg
IGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4gMS4wKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKLSAgICB9Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnZvbHVtZUNoYW5nZWQoKQogewogICAgIGdfc2lnbmFs
X2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwotICAgIGd0
a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24p
LCB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JV
VFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxf
aGFuZGxlcl91bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAot
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Om11dGVDaGFuZ2VkKCkKIHsKICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBndGtf
c2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwg
bXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUo
R1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT5tdXRlZCgpID8gMCA6
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcl91bmJsb2NrKG1fdm9s
dW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAotZmxvYXQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxl
bWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7Ci0gICAgfQotfQot
Ci1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkgOiAw
OwotfQotCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpIDogMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpi
ZWdpblNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpiZWdpblNlZWso
KQogewogICAgIG1fc2Vla0xvY2sgPSB0cnVlOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50KQot
ICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrOjpkb1NlZWsoKQogewogICAgIGlmICghbV9zZWVrTG9jaykKLSAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0Q3VycmVudFRpbWUoZ3RrX3JhbmdlX2dl
dF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqZHVyYXRpb24oKSAvIDEwMCk7CisgICAg
bV9wbGF5ZXItPnNlZWsoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSkqbV9wbGF5ZXItPmR1cmF0aW9uKCkgLyAxMDApOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmVuZFNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3Rr
OjplbmRTZWVrKCkKIHsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFF
bGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKLQogICAgIG1fc2Vla0xvY2sgPSBmYWxzZTsKIH0KIAot
c3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkKK2dib29sZWFuIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKIHsKLSAgICBpZiAo
IWlzZmluaXRlKHRpbWUpKQotICAgICAgICB0aW1lID0gMDsKLSAgICBpbnQgc2Vjb25kcyA9IGZh
YnNmKHRpbWUpOwotICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50
IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAg
ICBpZiAoaG91cnMpIHsKLSAgICAgICAgaWYgKGhvdXJzID4gOSkKLSAgICAgICAgICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIi
KSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVzJTAxZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAy
ZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKLX0KLQot
Z2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIo
KQotewotICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb24oKSk7Ci0gICAgZmxvYXQgbWVk
aWFQb3NpdGlvbihjdXJyZW50VGltZSgpKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKG1fcGxh
eWVyLT5kdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKG1fcGxheWVyLT5jdXJy
ZW50VGltZSgpKTsKIAogICAgIGlmICghbV9zZWVrTG9jaykgewogICAgICAgICBnZG91YmxlIHZh
bHVlID0gMC4wOwpAQCAtNTE0LDIyICszNzcsMjEgQEAgZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQogICAgICAgICBndGtfYWRqdXN0bWVu
dF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOwogICAgIH0KIAotICAgIGd0a19yYW5nZV9z
ZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgpKiAx
MDApOworICAgIGd0a19yYW5nZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSwgKG1fcGxheWVyLT5tYXhUaW1lTG9hZGVkKCkgLyBtZWRpYUR1cmF0aW9uKSogMTAwKTsKIAot
ICAgIGdjaGFyKiBsYWJlbCA9IGdfc3RyZHVwX3ByaW50ZigiJXMgLyAlcyIsIHRpbWVUb1N0cmlu
ZyhtZWRpYVBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lVG9TdHJpbmcobWVkaWFEdXJhdGlvbikudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRvU3RyaW5n
KG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9u
KS51dGY4KCkuZGF0YSgpKTsKICAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGlt
ZUxhYmVsKSwgbGFiZWwpOwogICAgIGdfZnJlZShsYWJlbCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlSHVkKCkKIHsKICAgICBtX2h1ZFdpbmRv
dyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOwogICAgIGd0a193aW5kb3dfc2V0
X2dyYXZpdHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1Qp
OwogICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwg
R0RLX1dJTkRPV19UWVBFX0hJTlRfTk9STUFMKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9o
dWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5H
dGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1faHVkTW90aW9uTm90aWZ5U2lnbmFs
SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV9odWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMp
OwogCiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBHdGtXaWRnZXQqIGhib3ggPSBndGtf
aGJveF9uZXcoRkFMU0UsIDQpOwpAQCAtNTM5LDkgKzQwMSw3IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKG1faHVkV2luZG93KSwgaGJveCk7CiAKICAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2Ug
dGhlIG1lZGlhIiksIFBBVVNFX0lDT05fTkFNRSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX3Bs
YXlQYXVzZUFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyh0b2dnbGVQbGF5UGF1c2VBY3Rp
dmF0ZWQpLCB0aGlzKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fcGxheVBhdXNlQWN0
aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCksIHRo
aXMpOwogCiAgICAgR3RrV2lkZ2V0KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVt
KG1fcGxheVBhdXNlQWN0aW9uKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94
KSwgaXRlbSwgRkFMU0UsIFRSVUUsIDApOwpAQCAtNTU3LDggKzQxNyw4IEBAIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICNlbmRpZgogICAgIGd0a19zY2FsZV9z
ZXRfZHJhd192YWx1ZShHVEtfU0NBTEUobV90aW1lSFNjYWxlKSwgRkFMU0UpOwogICAgIGd0a19y
YW5nZV9zZXRfc2hvd19maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBUUlVFKTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIs
IEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJlc3NlZCksIHRoaXMpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNL
KHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25Q
cmVzc2VkU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0
dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwgdGhp
cyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIgPSBnX3NpZ25h
bF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1yZWxlYXNlLWV2ZW50IiwgR19DQUxMQkFD
Syh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCksIHRoaXMpOwogICAgIG1faHNjYWxlVXBkYXRlSWQg
PSBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExC
QUNLKHRpbWVTY2FsZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwogCiAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUhTY2FsZSwgVFJVRSwgVFJVRSwgMCk7CkBAIC01Njks
MTggKzQyOSwxOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgp
CiAgICAgLy8gVm9sdW1lIGJ1dHRvbi4KICAgICBtX3ZvbHVtZUJ1dHRvbiA9IGd0a192b2x1bWVf
YnV0dG9uX25ldygpOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3Zv
bHVtZUJ1dHRvbiwgRkFMU0UsIFRSVUUsIDApOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3Zh
bHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pLCB2b2x1bWUoKSk7CisgICAgZ3Rr
X3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiks
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgbV92b2x1bWVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV92b2x1bWVCdXR0b24sICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh2b2x1bWVW
YWx1ZUNoYW5nZWQpLCB0aGlzKTsKIAotCiAgICAgbV9leGl0RnVsbHNjcmVlbkFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJleGl0IiwgXygiRXhpdCBGdWxsc2NyZWVuIiksIF8oIkV4aXQgZnJvbSBm
dWxsc2NyZWVuIG1vZGUiKSwgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFNRSk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX2V4aXRGdWxsc2NyZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNL
KGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKSwgdGhpcyk7CisgICAgbV9leGl0RnVsbGNyZWVuQWN0
aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX2V4aXRGdWxsc2Ny
ZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVk
KSwgdGhpcyk7CiAgICAgZ19vYmplY3Rfc2V0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJpY29u
LW5hbWUiLCBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FLCBOVUxMKTsKICAgICBpdGVtID0gZ3Rr
X2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24pOwogICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CiAK
LQogICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JFU1NfQkFS
X1VQREFURV9JTlRFUlZBTCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocHJvZ3Jlc3NC
YXJVcGRhdGVDYWxsYmFjayksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOwogfQog
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrLmgKc2ltaWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCmluZGV4IDgxN2JjMTkuLjkxN2YyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTcsMzIgKzE3LDI3IEBACiAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmbmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKLSNkZWZpbmUgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisjaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGtfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrX2gKIAotI2lmIEVO
QUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAK
LSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCiAK
LWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwotcHVibGljOgotICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIoKTsKLSAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCk7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKy8q
IGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI7ICovCisvKiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7ICovCiAKLSAgICB2b2lkIGd0a0NvbmZpZ3VyZShH
ZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpOworY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ayA6IHB1YmxpYyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrPiBj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKHBsYXllcikpOyB9CisgICAgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsK
IAotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigp
OworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKik7CisKKyAgICB2b2lk
IHBsYXlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKLSAg
ICB2b2lkIHRvZ2dsZVBsYXkoKTsKICAgICB2b2lkIGJlZ2luU2VlaygpOwogICAgIHZvaWQgZG9T
ZWVrKCk7CiAgICAgdm9pZCBlbmRTZWVrKCk7CkBAIC01MSwzMSArNDYsMTYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2hvd0h1ZChib29sKTsKICAgICBnYm9vbGVhbiB1cGRhdGVIdWRQcm9ncmVzc0Jh
cigpOwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxv
YXQpOwogICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgpOwogICAgIHZvaWQgbXV0ZUNoYW5nZWQoKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNhblBsYXkoKSBjb25zdDsKLSAgICB2b2lkIHBsYXkoKTsK
LSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBwbGF5U3RhdGVDaGFuZ2VkKCk7Ci0KLSAgICBi
b29sIG11dGVkKCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOwotCi0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25z
dDsKLSAgICBmbG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXpl
V2luZG93KCk7CisgICAgdm9pZCBkZXN0cm95V2luZG93KCk7CiAKICAgICB2b2lkIGNyZWF0ZUh1
ZCgpOwogICAgIHZvaWQgdXBkYXRlSHVkUG9zaXRpb24oKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkPiBtX2dzdHJlYW1lckdXb3JsZDsKLQogICAgIGd1aW50IG1faHVkVGlt
ZW91dElkOwogICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZDsKICAgICBndWludCBtX3By
b2dyZXNzQmFyRmlsbFVwZGF0ZUlkOwpAQCAtODksOCArNjksMjAgQEAgcHJpdmF0ZToKICAgICBH
dGtXaWRnZXQqIG1fdGltZUhTY2FsZTsKICAgICBHdGtXaWRnZXQqIG1fdGltZUxhYmVsOwogICAg
IEd0a1dpZGdldCogbV92b2x1bWVCdXR0b247CisKKyAgICB1bnNpZ25lZCBsb25nIG1fa2V5UHJl
c3NTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9kZXN0cm95U2lnbmFsSGFuZGxl
cjsKKyAgICB1bnNpZ25lZCBsb25nIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyOworICAgIHVuc2ln
bmVkIGxvbmcgbV9tb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcg
bV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2h1ZE1v
dGlvbk5vdGlmeVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1
dHRvblByZXNzZWRTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2V4aXRGdWxsY3Jl
ZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CiB9OwogCit9CiAjZW5kaWYKIAotI2VuZGlm
IC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorI2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGY4MzY4OWUuLjY3NWUyYmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0wMS0yMCAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bR1N0cmVhbWVyXSBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIgYXMgaXQgbW92ZWQgdG8KKyAgICAgICAgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lciBhbmQgaXRzIEd0ayBzdWJjbGFzcyBpbgorICAgICAgICBXZWJDb3Jl
LiBIb29rIGluIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIGluIHRoZSBDaHJvbWVDbGllbnQgaW4K
KyAgICAgICAgdGhlIHR3byBwb3NzaWJsZSBzY2VuYXJpb3MsIHdldGhlciBGVUxMU0NSRUVOX0FQ
SSBpcyBlbmFibGVkIG9yIG5vdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hy
b21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKTogSG9vaworICAgICAgICBOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKENocm9tZUNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDog
UmVtb3ZlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgc3VwcG9ydC4KKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDogRGl0dG8KKwogMjAxMy0wMS0xOCAgTWFydGluIFJv
Ymluc29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gQWRkIHByb3Bl
cnR5IGZvciBJbmRleGVkREIgZGF0YWJhc2UgcGF0aCB0byBXZWJLaXRHVEsrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGExYmZlNzkuLmIwNDA2MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2Vm
aWxlLmFtCkBAIC0yMTAsOCArMjEwLDYgQEAgd2Via2l0Z3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZU5ldHdvcmtpbmdD
b250ZXh0R3RrLmggXAotCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuY3BwIFwKLQlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmggXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0dlb2xvY2F0aW9uQ2xpZW50R3RrLmNwcCBcCiAJU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvR3RrQWRqdXN0bWVudFdhdGNoZXIuY3BwIFwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4
IDE0ZDhjZGYuLjY3MGY2NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNzcsNiArNzcsMTAgQEAKICNpbmNsdWRl
ICJEYXRhYmFzZU1hbmFnZXIuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0Uo
TkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgor
I2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
QEAgLTg5Niw4ICs5MDAsNyBAQCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlYXJjaFBvcHVwTWVudT4g
Q2hyb21lQ2xpZW50OjpjcmVhdGVTZWFyY2hQb3B1cE1lbnUoV2ViQ29yZQogICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgU2VhcmNoUG9wdXBNZW51R3RrKGNsaWVudCkpOwogfQogCi0jaWYgRU5BQkxF
KFZJREVPKQotCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCiBib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBO
b2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlk
ZW9UYWcpOwpAQCAtOTA1LDEyICs5MDgsMjggQEAgYm9vbCBDaHJvbWVDbGllbnQ6OnN1cHBvcnRz
RnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSogbm9kZSkKIAogdm9pZCBDaHJvbWVDbGllbnQ6
OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICB3ZWJWaWV3RW50ZXJG
dWxsc2NyZWVuKG1fd2ViVmlldywgbm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1
cm47CisKKyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50
Kj4obm9kZSk7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkg
eworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxI
VE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBs
YXllcigpICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmNhbkVudGVyRnVsbHNjcmVlbigpKQor
ICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7Cisg
ICAgfQogfQogCiB2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUq
IG5vZGUpCiB7Ci0gICAgd2ViVmlld0V4aXRGdWxsc2NyZWVuKG1fd2ViVmlldyk7CisgICAgaWYg
KCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBIVE1MRWxlbWVudCogZWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obm9kZSk7CisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVu
dC0+aXNNZWRpYUVsZW1lbnQoKSkgeworICAgICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAg
IGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5w
bGF5ZXIoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICB9CiB9CiAjZW5kaWYKIApAQCAtOTQ5LDYg
Kzk2OCwxOSBAQCB2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChX
ZWJDb3JlOjpFbGVtZW50KiBlbGVtZW50KQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAg
cmV0dXJuOwogCisjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCisgICAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC0+aXNNZWRpYUVsZW1lbnQoKSkgeworICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVk
aWFFbGVtZW50Kj4oZWxlbWVudCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQtPnBsYXllcigp
ICYmIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmNhbkVudGVyRnVsbHNjcmVlbigpKSB7CisgICAg
ICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmVu
dGVyRnVsbHNjcmVlbigpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1l
bnQ7CisgICAgICAgICAgICBlbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisjZW5kaWYKKwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9w
bGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKICAgICBpZiAoIXdpZGdldElzT25zY3JlZW5U
b3BsZXZlbFdpbmRvdyh3aW5kb3cpKQogICAgICAgICByZXR1cm47CkBAIC05NzYsNiArMTAwOCwx
OSBAQCB2b2lkIENocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6
OkVsZW1lbnQqKQogICAgIGlmIChyZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuOwogCisjaWYg
RU5BQkxFKFZJREVPKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisgICAgaWYgKG1f
ZnVsbFNjcmVlbkVsZW1lbnQgJiYgbV9mdWxsU2NyZWVuRWxlbWVudC0+aXNNZWRpYUVsZW1lbnQo
KSkgeworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXRXaWxs
RXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworICAg
ICAgICBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTWVk
aWFFbGVtZW50Kj4obV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIGlmIChtZWRp
YUVsZW1lbnQtPnBsYXllcigpKSB7CisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigp
LT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZG9j
dW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVs
ZW1lbnQuZ2V0KCkpOworICAgICAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC5jbGVhcigpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKwogICAgIEd0a1dpZGdl
dCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcp
KTsKICAgICBBU1NFUlQod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykpOwog
ICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyh3aW5kb3csIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQpLCB0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0
ay5oIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgK
aW5kZXggMWU5MzMxYy4uZGMyZDk1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmgKQEAgLTEzNSw3ICsxMzUsNyBAQCBuYW1lc3Bh
Y2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBib29sIGhhc09wZW5lZFBvcHVwKCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxQb3B1cE1lbnU+IGNyZWF0ZVBvcHVwTWVudShQ
b3B1cE1lbnVDbGllbnQqKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFNlYXJj
aFBvcHVwTWVudT4gY3JlYXRlU2VhcmNoUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0
OwotI2lmIEVOQUJMRShWSURFTykKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKICAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZv
ck5vZGUoY29uc3QgTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVu
Rm9yTm9kZShOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5v
ZGUoTm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmlu
ZGV4IGQxYTVmNWYuLjMyOTliMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAKQEAgLTUzMDgsMzQgKzUzMDgsNiBAQCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nu
YXBzaG90KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcmV0dXJuIHN1cmZhY2U7CiB9CiAK
LXZvaWQgd2ViVmlld0VudGVyRnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBOb2Rl
KiBub2RlKQotewotICAgIGlmICghbm9kZS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnZpZGVvVGFn
KSkKLSAgICAgICAgcmV0dXJuOwotCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKLSAgICBIVE1MTWVkaWFFbGVtZW50KiB2aWRlb0VsZW1lbnQgPSBzdGF0
aWNfY2FzdDxIVE1MTWVkaWFFbGVtZW50Kj4obm9kZSk7Ci0gICAgV2ViS2l0V2ViVmlld1ByaXZh
dGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotCi0gICAgLy8gRmlyc3QgZXhpdCBGdWxsc2NyZWVu
IGZvciB0aGUgb2xkIG1lZGlhRWxlbWVudC4KLSAgICBpZiAocHJpdi0+ZnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcikKLSAgICAgICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZXhp
dEZ1bGxzY3JlZW4oKTsKLQotICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgPSBu
ZXcgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjsKLSAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLT5zZXRNZWRpYUVsZW1lbnQodmlkZW9FbGVtZW50KTsKLSAgICBwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLT5lbnRlckZ1bGxzY3JlZW4oKTsKLSNlbmRpZgotfQotCi12
b2lkIHdlYlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQotewotI2lm
IEVOQUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCi0gICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OwotICAgIGlmIChwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOwotI2VuZGlmCi19Ci0KICNpZiBFTkFCTEUoSUNPTkRB
VEFCQVNFKQogdm9pZCB3ZWJraXRXZWJWaWV3SWNvbkxvYWRlZChXZWJLaXRGYXZpY29uRGF0YWJh
c2UqIGRhdGFiYXNlLCBjb25zdCBjaGFyKiBmcmFtZVVSSSwgV2ViS2l0V2ViVmlldyogd2ViVmll
dykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
cHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRl
LmgKaW5kZXggMGFlNTIyYy4uNDY2NWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgKQEAgLTI0LDcgKzI0LDYgQEAKICNkZWZpbmUgd2Vi
a2l0d2Vidmlld3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuaCIKLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCiAjaW5jbHVk
ZSAiR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiR3RrQ2xpY2tDb3VudGVyLmgi
CiAjaW5jbHVkZSAiR3RrRHJhZ0FuZERyb3BIZWxwZXIuaCIKQEAgLTkxLDEwICs5MCw2IEBAIHN0
cnVjdCBfV2ViS2l0V2ViVmlld1ByaXZhdGUgewogCiAgICAgZ2Jvb2xlYW4gZGlzcG9zaW5nOwog
Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLSAgICBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBmdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwotI2Vu
ZGlmCi0KICAgICAvLyBUaGVzZSBhcmUgaG9zdGVkIGhlcmUgYmVjYXVzZSB0aGUgRGF0YVNvdXJj
ZSBvYmplY3QgaXMKICAgICAvLyBjcmVhdGVkIHRvbyBsYXRlIGluIHRoZSBmcmFtZSBsb2FkaW5n
IHByb2Nlc3MuCiAgICAgR1JlZlB0cjxXZWJLaXRXZWJSZXNvdXJjZT4gbWFpblJlc291cmNlOwpA
QCAtMTQzLDkgKzEzOCw2IEBAIEdMaXN0KiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N1YnJlc291cmNl
cyhXZWJLaXRXZWJWaWV3Kik7CiB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfdG9vbHRpcF90ZXh0
KFdlYktpdFdlYlZpZXcqLCBjb25zdCBjaGFyKik7CiBHdGtNZW51KiB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2NvbnRleHRfbWVudShXZWJLaXRXZWJWaWV3Kik7CiAKLXZvaWQgd2ViVmlld0VudGVyRnVs
bHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJDb3JlOjpOb2RlKik7Ci12b2lkIHdl
YlZpZXdFeGl0RnVsbHNjcmVlbihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KTsKLQogdm9pZCB3ZWJr
aXRXZWJWaWV3UnVuRmlsZUNob29zZXJSZXF1ZXN0KFdlYktpdFdlYlZpZXcqLCBXZWJLaXRGaWxl
Q2hvb3NlclJlcXVlc3QqKTsKIAogI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCi0tIAoxLjcuMTAu
NA==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184864</attachid>
            <date>2013-01-26 07:15:10 -0800</date>
            <delta_ts>2013-01-30 07:00:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>42855</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA0YjgxMmMyOWFkODBiOTgxMGZlMjEyMGYwOWNmYWE1YWQzN2UwMWM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjIwOjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE5ICsrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAg
ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwICAgICAgfCAgIDIyICstCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKwogLi4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR3RrLmNwcH0gfCAgMzM1ICsrKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaH0gICB8ICAgNjggKyst
LQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI3ICsrCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgLQogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCAgfCAgIDUzICsrKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIHwgICAgMiArLQogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwICAgICAgICAgfCAgIDI4IC0tCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3ByaXZhdGUuaCAgICB8ICAgIDggLQogMTIgZmlsZXMgY2hhbmdlZCwgMjUyIGlu
c2VydGlvbnMoKyksIDMyMCBkZWxldGlvbnMoLSkKIHJlbmFtZSBTb3VyY2Uve1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgPT4gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHB9ICg1
NCUpCiByZW5hbWUgU291cmNlL3tXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaCA9PiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrLmh9ICg1MyUpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQxZjYwM2MuLmNj
ZGNmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bR1N0cmVhbWVy
XSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTyBzdXBwb3J0IGZvciB0aGUgR1RLIHBvcnQuIFRoZSBwcmV2aW91cworICAgICAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyIGltcGxlbWVudGF0aW9uIHdhcyByZWZhY3RvcmVkIGFzIGEK
KyAgICAgICAgc3ViLWNsYXNzIG9mIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIg
YW5kIGhvb2tlZCBpbiB0aGUKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGJh
Y2tlbmQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaC4KKworMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggOTJlOTUzNy4uOGFkZWJkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC02MDcyLDYgKzYwNzIsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDRlNWRmZDEuLjhjZjJjMzkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02MCw2ICs2MCwx
MiBAQAogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIKKyNlbmRpZgorI2VuZGlmCisK
IC8vIEdzdFBsYXlGbGFncyBmbGFncyBmcm9tIHBsYXliaW4yLiBJdCBpcyB0aGUgcG9saWN5IG9m
IEdTdHJlYW1lciB0bwogLy8gbm90IHB1YmxpY2x5IGV4cG9zZSBlbGVtZW50LXNwZWNpZmljIGVu
dW1zLiBUaGF0J3Mgd2h5IHRoaXMKIC8vIEdzdFBsYXlGbGFncyBlbnVtIGhhcyBiZWVuIGNvcGll
ZCBoZXJlLgpAQCAtMjY5LDYgKzI3NSw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgfQogCiAjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisg
ICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisKICAgICBpZiAobV92aWRlb1NpbmtCaW4pIHsKICAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihtX3ZpZGVvU2lua0Jpbik7CiAgICAgICAgIG1fdmlkZW9T
aW5rQmluID0gMDsKQEAgLTE3NjEsMTIgKzE3NzAsMjEgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorICAgIEFTU0VSVCghbV9mdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKTsKKyNpZiBQTEFURk9STShHVEspCisgICAgbV9mdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyID0gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlKHRo
aXMpOworICAgIG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci0+ZW50ZXJGdWxsc2NyZWVuKCk7
CisjZW5kaWYKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmV4aXRGdWxs
c2NyZWVuKCkKIHsKLSAgICAvLyBUT0RPLgorI2lmIFBMQVRGT1JNKEdUSykKKyAgICBpZiAoIW1f
ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcikKKyAgICAgICAgcmV0dXJuOworICAgIG1fZnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBtX2Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIucmVsZWFzZSgpOworI2VuZGlmCiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDczOThlMmYuLjU4NDkw
MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgKQEAg
LTM3LDYgKzM3LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwogdHlw
ZWRlZiBzdHJ1Y3QgX0dzdE1lc3NhZ2UgR3N0TWVzc2FnZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RF
bGVtZW50IEdzdEVsZW1lbnQ7CiAKKyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisj
aWYgUExBVEZPUk0oR1RLKQorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3Mg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0aworI2VuZGlmCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAjaWZkZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckNsYXNzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApzaW1pbGFyaXR5IGluZGV4IDU0JQpyZW5hbWUg
ZnJvbSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyLmNwcApyZW5hbWUgdG8gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3Rr
L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwCmluZGV4IGQxNGRjOTcuLjIwMzYyZTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDEwIElnYWxpYSBTLkwKKyAqICBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTAogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDg2ICsxOSw4NiBAQAog
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdT
VF9BUElfVkVSU0lPTl8xKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKEdTVFJFQU1FUikgJiYg
VVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogCi0jaW5jbHVkZSAiRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIK
IAorI2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKICNpbmNs
dWRlICJHUmVmUHRyR3RrLmgiCisjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxkLmgiCiAjaW5jbHVk
ZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIk1lZGlhUGxheWVyLmgiCisjaW5jbHVkZSAi
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmgiCiAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAj
aW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgot
I2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxndGsvZ3RrLmg+Ci0KLXVzaW5nIG5hbWVz
cGFjZSBzdGQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CiAKICNkZWZpbmUgSFVEX0FVVE9fSElERV9JTlRFUlZBTCAzMDAwIC8vIDMgc2Vj
b25kcwogI2RlZmluZSBQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMIDE1MCAvLyAxNTBtcwot
I2RlZmluZSBWT0xVTUVfVVBfT0ZGU0VUIDAuMDUgLy8gNSUKLSNkZWZpbmUgVk9MVU1FX0RPV05f
T0ZGU0VUIDAuMDUgLy8gNSUKIAogLy8gVXNlIHN5bWJvbGljIGljb25zIG9ubHkgaWYgd2UgYnVp
bGQgd2l0aCBHVEsrLTMgc3VwcG9ydC4gVGhleSBjb3VsZAogLy8gYmUgZW5hYmxlZCBmb3IgdGhl
IEdUSysyIGJ1aWxkIGJ1dCB3ZSdkIG5lZWQgdG8gYnVtcCB0aGUgcmVxdWlyZWQKIC8vIHZlcnNp
b24gdG8gYXQgbGVhc3QgMi4yMi4KLSNpZiBHVEtfTUFKT1JfVkVSU0lPTiA8IDMKLSNkZWZpbmUg
UExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0IgotI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIgotI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNP
Tl9OQU1FICJ2aWV3LXJlc3RvcmUiCisjaWYgR1RLX01BSk9SX1ZFUlNJT04gPiAyCisjZGVmaW5l
IElDT05fTkFNRV9TVUZGSVggIi1zeW1ib2xpYyIKICNlbHNlCi0jZGVmaW5lIFBMQVlfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1zdGFydC1zeW1ib2xpYyIKLSNkZWZpbmUgUEFVU0VfSUNPTl9O
QU1FICJtZWRpYS1wbGF5YmFjay1wYXVzZS1zeW1ib2xpYyIKLSNkZWZpbmUgRVhJVF9GVUxMU0NS
RUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlLXN5bWJvbGljIgorI2RlZmluZSBJQ09OX05BTUVf
U1VGRklYCiAjZW5kaWYKIAotc3RhdGljIGdib29sZWFuIGhpZGVIdWRDYWxsYmFjayhGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorI2RlZmluZSBQTEFZX0lDT05fTkFNRSAi
bWVkaWEtcGxheWJhY2stc3RhcnQiSUNPTl9OQU1FX1NVRkZJWAorI2RlZmluZSBQQVVTRV9JQ09O
X05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNlIklDT05fTkFNRV9TVUZGSVgKKyNkZWZpbmUgRVhJ
VF9GVUxMU0NSRUVOX0lDT05fTkFNRSAidmlldy1yZXN0b3JlIklDT05fTkFNRV9TVUZGSVgKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgZ2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxl
ci0+aGlkZUh1ZCgpOwogICAgIHJldHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVu
dE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQor
c3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtFdmVudE1vdGlvbiogZXZlbnQsICBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPnNob3dIdWQodHJ1ZSk7CiAg
ICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5v
dGlmaWNhdGlvbihHdGtXaWRnZXQqIHdpZGdldCwgR1BhcmFtU3BlYyogcHJvcGVydHksIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCBvbkZ1bGxzY3Jl
ZW5HdGtBY3RpdmVOb3RpZmljYXRpb24oR3RrV2lkZ2V0KiB3aWRnZXQsIEdQYXJhbVNwZWMqIHBy
b3BlcnR5LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmICghZ3RrX3dpbmRvd19pc19hY3RpdmUoR1RLX1dJTkRPVyh3aWRnZXQpKSkKICAgICAgICAg
Y29udHJvbGxlci0+aGlkZUh1ZCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVu
R3RrQ29uZmlndXJlRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Q29uZmlndXJlKiBl
dmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBnYm9v
bGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
RXZlbnRDb25maWd1cmUqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250
cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmd0a0NvbmZpZ3VyZShldmVudCk7CiAgICAgcmV0
dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rlc3Ryb3koR3RrV2lk
Z2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0
aWMgdm9pZCBvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KEd0a1dpZGdldCogd2lkZ2V0LCBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRl
ZChHdGtBY3Rpb24qIGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxl
cikKK3N0YXRpYyB2b2lkIHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlv
biwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250
cm9sbGVyLT50b2dnbGVQbGF5KCk7CiB9CiAKLXN0YXRpYyB2b2lkIGV4aXRGdWxsc2NyZWVuQWN0
aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250
cm9sbGVyKQorc3RhdGljIHZvaWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBh
Y3Rpb24sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAg
Y29udHJvbGxlci0+ZXhpdE9uVXNlclJlcXVlc3QoKTsKIH0KIAotc3RhdGljIGdib29sZWFuIHBy
b2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKK3N0YXRpYyBnYm9vbGVhbiBwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgcmV0dXJuIGNvbnRyb2xs
ZXItPnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbiB0aW1lU2Nh
bGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQs
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4g
dGltZVNjYWxlQnV0dG9uUHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24q
IGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBjb250cm9sbGVyKQogewogICAg
IGlmIChldmVudC0+dHlwZSAhPSBHREtfQlVUVE9OX1BSRVNTKQogICAgICAgICByZXR1cm4gRkFM
U0U7CkBAIC0xMDcsNjQgKzEwNyw0OSBAQCBzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UHJlc3NlZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LAogICAgIHJl
dHVybiBGQUxTRTsKIH0KIAotc3RhdGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblJlbGVhc2Vk
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9u
UmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5l
bmRTZWVrKCk7CiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZCB0aW1lU2NhbGVW
YWx1ZUNoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIq
IGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCB0aW1lU2NhbGVWYWx1ZUNoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAg
ICAgY29udHJvbGxlci0+ZG9TZWVrKCk7CiB9CiAKLXN0YXRpYyB2b2lkIHZvbHVtZVZhbHVlQ2hh
bmdlZChHdGtTY2FsZUJ1dHRvbiAqYnV0dG9uLCBnZG91YmxlIHZhbHVlLCBGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2Vk
KEd0a1NjYWxlQnV0dG9uICpidXR0b24sIGdkb3VibGUgdmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKHN0
YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpOwogfQogCi12b2lkIHBsYXllclZvbHVtZUNoYW5nZWRD
YWxsYmFjayhHT2JqZWN0ICplbGVtZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKLXsKLSAgICBjb250cm9sbGVyLT52b2x1bWVDaGFu
Z2VkKCk7Ci19CiAKLXZvaWQgcGxheWVyTXV0ZUNoYW5nZWRDYWxsYmFjayhHT2JqZWN0ICplbGVt
ZW50LCBHUGFyYW1TcGVjICpwc3BlYywgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJv
bGxlcikKLXsKLSAgICBjb250cm9sbGVyLT5tdXRlQ2hhbmdlZCgpOwotfQotCi1GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKCkKLSAgICA6IG1faHVk
VGltZW91dElkKDApCitGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpGdWxsc2NyZWVuVmlk
ZW9Db250cm9sbGVyR3RrKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciogcGxheWVyKQorICAg
IDogRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckdTdHJlYW1lcihwbGF5ZXIpCisgICAgLCBtX2h1
ZFRpbWVvdXRJZCgwKQogICAgICwgbV9wcm9ncmVzc0JhclVwZGF0ZUlkKDApCiAgICAgLCBtX3Nl
ZWtMb2NrKGZhbHNlKQogICAgICwgbV93aW5kb3coMCkKICAgICAsIG1faHVkV2luZG93KDApCisg
ICAgLCBtX2tleVByZXNzU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9kZXN0cm95U2lnbmFsSGFu
ZGxlcigwKQorICAgICwgbV9pc0FjdGl2ZVNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fbW90aW9u
Tm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRs
ZXIoMCkKKyAgICAsIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90
aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSGFuZGxlcigwKQorICAgICwgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIoMCkKKyAgICAsIG1fcGxheUFjdGlvbkFjdGl2YXRl
U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0aXZhdGVTaWdu
YWxIYW5kbGVyKDApCiB7CiB9CiAKLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6On5GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyKCkKLXsKLSAgICBleGl0RnVsbHNjcmVlbigpOwotfQotCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVt
ZW50KiBtZWRpYUVsZW1lbnQpCi17Ci0gICAgaWYgKG1lZGlhRWxlbWVudCA9PSBtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1l
bnQ7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkgewotICAgICAgICAvLyBDYW4ndCBkbyBmdWxs
LXNjcmVlbiwganVzdCBnZXQgb3V0Ci0gICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci0gICAgfQot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Omd0a0NvbmZpZ3VyZShHZGtFdmVu
dENvbmZpZ3VyZSogZXZlbnQpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Omd0
a0NvbmZpZ3VyZShHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpCiB7CiAgICAgdXBkYXRlSHVkUG9z
aXRpb24oKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93SHVkKGJv
b2wgYXV0b0hpZGUpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnNob3dIdWQo
Ym9vbCBhdXRvSGlkZSkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0xOTIsNyArMTc3LDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzaG93
SHVkKGJvb2wgYXV0b0hpZGUpCiAgICAgICAgIG1faHVkVGltZW91dElkID0gZ190aW1lb3V0X2Fk
ZChIVURfQVVUT19ISURFX0lOVEVSVkFMLCByZWludGVycHJldF9jYXN0PEdTb3VyY2VGdW5jPiho
aWRlSHVkQ2FsbGJhY2spLCB0aGlzKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjpoaWRlSHVkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aGlkZUh1
ZCgpCiB7CiAgICAgaWYgKG1faHVkVGltZW91dElkKSB7CiAgICAgICAgIGdfc291cmNlX3JlbW92
ZShtX2h1ZFRpbWVvdXRJZCk7CkBAIC0yMjIsMTIgKzIwNywxMCBAQCB2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQogICAgIH0KIH0KIAotc3RhdGljIGdib29sZWFuIG9u
RnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5
KiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyBn
Ym9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtFdmVudEtleSogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xs
ZXIpCiB7CiAgICAgc3dpdGNoIChldmVudC0+a2V5dmFsKSB7CiAgICAgY2FzZSBHREtfRXNjYXBl
OgotICAgIGNhc2UgJ2YnOgotICAgIGNhc2UgJ0YnOgogICAgICAgICBjb250cm9sbGVyLT5leGl0
T25Vc2VyUmVxdWVzdCgpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdES19zcGFjZToKQEAg
LTIzNSwxMiArMjE4LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVz
c0V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlCiAgICAgICAgIGNvbnRy
b2xsZXItPnRvZ2dsZVBsYXkoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfVXA6Ci0g
ICAgICAgIC8vIHZvbHVtZSB1cAotICAgICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJv
bGxlci0+dm9sdW1lKCkgKyBWT0xVTUVfVVBfT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxlci0+
aW5jcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBHREtfRG93bjoKLSAg
ICAgICAgLy8gdm9sdW1lIGRvd24KLSAgICAgICAgY29udHJvbGxlci0+c2V0Vm9sdW1lKGNvbnRy
b2xsZXItPnZvbHVtZSgpIC0gVk9MVU1FX0RPV05fT0ZGU0VUKTsKKyAgICAgICAgY29udHJvbGxl
ci0+ZGVjcmVhc2VWb2x1bWUoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgYnJlYWs7CkBAIC0yNDksMjUgKzIzMCwxMCBAQCBzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2Ny
ZWVuR3RrS2V5UHJlc3NFdmVudChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZQog
ICAgIHJldHVybiBUUlVFOwogfQogCi0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6aW5p
dGlhbGl6ZVdpbmRvdygpCiB7Ci0gICAgaWYgKCFtX21lZGlhRWxlbWVudCkKLSAgICAgICAgcmV0
dXJuOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlwZSAhPSBX
ZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQotICAgICAgICByZXR1
cm47Ci0KLSAgICBtX2dzdHJlYW1lckdXb3JsZCA9IG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1l
ZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkOwotICAgIGlmICghbV9nc3RyZWFtZXJHV29ybGQt
PmVudGVyRnVsbHNjcmVlbigpKQotICAgICAgICByZXR1cm47Ci0KICAgICBtX3dpbmRvdyA9IHJl
aW50ZXJwcmV0X2Nhc3Q8R3RrV2lkZ2V0Kj4obV9nc3RyZWFtZXJHV29ybGQtPnBsYXRmb3JtVmlk
ZW9XaW5kb3coKS0+d2luZG93KCkpOwogCi0gICAgR3N0RWxlbWVudCogcGlwZWxpbmUgPSBtX2dz
dHJlYW1lckdXb3JsZC0+cGlwZWxpbmUoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KHBpcGVsaW5l
LCAibm90aWZ5Ojp2b2x1bWUiLCBHX0NBTExCQUNLKHBsYXllclZvbHVtZUNoYW5nZWRDYWxsYmFj
ayksIHRoaXMpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6Om11dGUi
LCBHX0NBTExCQUNLKHBsYXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLQogICAgIGlm
ICghbV9odWRXaW5kb3cpCiAgICAgICAgIGNyZWF0ZUh1ZCgpOwogCkBAIC0yODEsOSArMjQ3LDkg
QEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQogI2Vu
ZGlmCiAgICAgZ3RrX3dpZGdldF9zZXRfZG91YmxlX2J1ZmZlcmVkKG1fd2luZG93LCBGQUxTRSk7
CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAia2V5LXByZXNzLWV2ZW50IiwgR19D
QUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgImRlc3Ryb3kiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0
a0Rlc3Ryb3kpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAibm90aWZ5
Ojppcy1hY3RpdmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlv
biksIHRoaXMpOworICAgIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVj
dChtX3dpbmRvdywgImtleS1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOworICAgIG1fZGVzdHJveVNpZ25hbEhhbmRsZXIgPSBnX3Np
Z25hbF9jb25uZWN0KG1fd2luZG93LCAiZGVzdHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVu
R3RrRGVzdHJveSksIHRoaXMpOworICAgIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyID0gZ19zaWdu
YWxfY29ubmVjdChtX3dpbmRvdywgIm5vdGlmeTo6aXMtYWN0aXZlIiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtBY3RpdmVOb3RpZmljYXRpb24pLCB0aGlzKTsKIAogICAgIGd0a193aWRnZXRf
c2hvd19hbGwobV93aW5kb3cpOwogCkBAIC0yOTEsMTQgKzI1NywxNCBAQCB2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiAgICAgR1JlZlB0cjxHZGtDdXJz
b3I+IGN1cnNvcihhZG9wdEdSZWYoYmxhbmtDdXJzb3IoKSkpOwogICAgIGdka193aW5kb3dfc2V0
X2N1cnNvcih3aW5kb3csIGN1cnNvci5nZXQoKSk7CiAKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1f
d2luZG93LCAibW90aW9uLW5vdGlmeS1ldmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3Rr
TW90aW9uTm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93
LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVF
dmVudCksIHRoaXMpOworICAgIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFs
X2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1
bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1fY29uZmlndXJlRXZl
bnRTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgImNvbmZpZ3VyZS1l
dmVudCIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsK
IAogICAgIGd0a193aW5kb3dfZnVsbHNjcmVlbihHVEtfV0lORE9XKG1fd2luZG93KSk7CiAgICAg
c2hvd0h1ZCh0cnVlKTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0
ZUh1ZFBvc2l0aW9uKCkKIHsKICAgICBpZiAoIW1faHVkV2luZG93KQogICAgICAgICByZXR1cm47
CkBAIC0zMDcsOCArMjczLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRh
dGVIdWRQb3NpdGlvbigpCiAgICAgR2RrU2NyZWVuKiBzY3JlZW4gPSBndGtfd2luZG93X2dldF9z
Y3JlZW4oR1RLX1dJTkRPVyhtX3dpbmRvdykpOwogICAgIEdka1dpbmRvdyogd2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfd2luZG93KG1fd2luZG93KTsKICAgICBHZGtSZWN0YW5nbGUgZnVsbHNjcmVl
blJlY3RhbmdsZTsKLSAgICBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2dlb21ldHJ5KHNjcmVlbiwg
Z2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9hdF93aW5kb3coc2NyZWVuLCB3aW5kb3cpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZ1bGxzY3JlZW5SZWN0YW5nbGUpOworICAg
IGdka19zY3JlZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9t
b25pdG9yX2F0X3dpbmRvdyhzY3JlZW4sIHdpbmRvdyksICZmdWxsc2NyZWVuUmVjdGFuZ2xlKTsK
IAogICAgIC8vIEdldCB0aGUgcG9wdXAgd2luZG93IHNpemUuCiAgICAgaW50IGh1ZFdpZHRoLCBo
dWRIZWlnaHQ7CkBAIC0zMTgsMjggKzI4MywyNiBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lO
RE9XKG1faHVkV2luZG93KSwgZnVsbHNjcmVlblJlY3RhbmdsZS53aWR0aCwgaHVkSGVpZ2h0KTsK
IAogICAgIC8vIE1vdmUgdGhlIGh1ZCB0byB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4uCi0gICAg
Z3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFu
Z2xlLngsCi0gICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVpZ2h0ICsg
ZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKLX0KLQotdm9pZCBGdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyOjpleGl0T25Vc2VyUmVxdWVzdCgpCi17Ci0gICAgbV9tZWRpYUVsZW1l
bnQtPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgZ3RrX3dpbmRvd19tb3ZlKEdUS19XSU5ET1cobV9o
dWRXaW5kb3cpLCBmdWxsc2NyZWVuUmVjdGFuZ2xlLngsIGZ1bGxzY3JlZW5SZWN0YW5nbGUuaGVp
Z2h0ICsgZnVsbHNjcmVlblJlY3RhbmdsZS55IC0gaHVkSGVpZ2h0KTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCit2b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHdGs6OmRlc3Ryb3lXaW5kb3coKQogewogICAgIGlmICghbV9odWRXaW5k
b3cpCiAgICAgICAgIHJldHVybjsKIAotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3Rf
YnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
RGVzdHJveSksIHRoaXMpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVu
YyhtX3dpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrTW90aW9u
Tm90aWZ5RXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5
X2Z1bmMobV93aW5kb3csIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KG9uRnVsbHNjcmVlbkd0a0Nv
bmZpZ3VyZUV2ZW50KSwgdGhpcyk7Ci0KLSAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fbWVk
aWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkubWVkaWEuZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGlu
ZSgpOwotICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhwaXBlbGluZSwg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhp
cyk7Ci0gICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihwbGF5ZXJNdXRlQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7
CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2tleVByZXNzU2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBt
X2Rlc3Ryb3lTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3Qo
bV93aW5kb3csIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVy
X2Rpc2Nvbm5lY3QobV93aW5kb3csIG1fbW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcik7CisgICAg
Z19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fd2luZG93LCBtX2NvbmZpZ3VyZUV2ZW50U2ln
bmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1faHVkV2luZG93
LCBtX2h1ZE1vdGlvbk5vdGlmeVNpZ25hbEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJf
ZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1fdGltZVNjYWxlQnV0dG9uUHJlc3NlZFNpZ25hbEhh
bmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2NhbGUsIG1f
dGltZVNjYWxlQnV0dG9uUmVsZWFzZWRTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5k
bGVyX2Rpc2Nvbm5lY3QobV90aW1lSFNjYWxlLCBtX2hzY2FsZVVwZGF0ZUlkKTsKKyAgICBnX3Np
Z25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQp
OworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3BsYXlQYXVzZUFjdGlvbiwgbV9w
bGF5QWN0aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgbV9leGl0RnVsbGNyZWVuQWN0aW9uQWN0
aXZhdGVTaWduYWxIYW5kbGVyKTsKIAogICAgIGlmIChtX2h1ZFRpbWVvdXRJZCkgewogICAgICAg
ICBnX3NvdXJjZV9yZW1vdmUobV9odWRUaW1lb3V0SWQpOwpAQCAtMzUxLDE1OCArMzE0LDU4IEBA
IHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZXhpdEZ1bGxzY3JlZW4oKQogICAgICAg
ICBtX3Byb2dyZXNzQmFyVXBkYXRlSWQgPSAwOwogICAgIH0KIAotICAgIGlmIChtX21lZGlhRWxl
bWVudC0+cGxhdGZvcm1NZWRpYSgpLnR5cGUgPT0gV2ViQ29yZTo6UGxhdGZvcm1NZWRpYTo6R1N0
cmVhbWVyR1dvcmxkVHlwZSkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPmV4aXRGdWxsc2NyZWVuKCk7Ci0KICAgICBndGtfd2lk
Z2V0X2hpZGUobV93aW5kb3cpOwogCi0gICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faHVkV2luZG93
KTsKKyAgICBpZiAobV9odWRXaW5kb3cpCisgICAgICAgIGd0a193aWRnZXRfZGVzdHJveShtX2h1
ZFdpbmRvdyk7CiAgICAgbV9odWRXaW5kb3cgPSAwOwogfQogCi1ib29sIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmNhblBsYXkoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxlbWVu
dCAmJiBtX21lZGlhRWxlbWVudC0+Y2FuUGxheSgpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OnBsYXkoKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkKLSAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPnBsYXkoKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKLSAgICBz
aG93SHVkKHRydWUpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBhdXNl
KCkKLXsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5w
YXVzZSgpOwotCi0gICAgcGxheVN0YXRlQ2hhbmdlZCgpOwotICAgIHNob3dIdWQoZmFsc2UpOwot
fQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnBsYXlTdGF0ZUNoYW5nZWQoKQor
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpwbGF5U3RhdGVDaGFuZ2VkKCkKIHsK
LSAgICBpZiAoY2FuUGxheSgpKQorICAgIGlmIChtX2NsaWVudC0+bWVkaWFQbGF5ZXJJc1BhdXNl
ZCgpKQogICAgICAgICBnX29iamVjdF9zZXQobV9wbGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwg
XygiUGxheSIpLCAiaWNvbi1uYW1lIiwgUExBWV9JQ09OX05BTUUsIE5VTEwpOwogICAgIGVsc2UK
ICAgICAgICAgZ19vYmplY3Rfc2V0KG1fcGxheVBhdXNlQWN0aW9uLCAidG9vbHRpcCIsIF8oIlBh
dXNlIiksICJpY29uLW5hbWUiLCBQQVVTRV9JQ09OX05BTUUsIE5VTEwpOworICAgIHNob3dIdWQo
IW1fY2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnRvZ2dsZVBsYXkoKQotewotICAgIGlmIChjYW5QbGF5KCkpCi0gICAg
ICAgIHBsYXkoKTsKLSAgICBlbHNlCi0gICAgICAgIHBhdXNlKCk7Ci19Ci0KLWZsb2F0IEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnZvbHVtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPnZvbHVtZSgpIDogMDsKLX0KLQotYm9vbCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVk
aWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPm11dGVkKCkgOiBmYWxzZTsKLX0KLQotdm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRWb2x1bWUoZmxvYXQgdm9sdW1lKQotewotICAg
IGlmICh2b2x1bWUgPCAwLjAgfHwgdm9sdW1lID4gMS4wKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldFZvbHVtZSh2b2x1bWUsIGVjKTsKLSAgICB9Ci19Ci0KLXZv
aWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9sdW1lQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnZvbHVtZUNoYW5nZWQoKQogewogICAgIGdfc2lnbmFs
X2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwotICAgIGd0
a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24p
LCB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JV
VFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxf
aGFuZGxlcl91bmJsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAot
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjptdXRlQ2hhbmdlZCgpCit2b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6Om11dGVDaGFuZ2VkKCkKIHsKICAgICBnX3NpZ25hbF9o
YW5kbGVyX2Jsb2NrKG1fdm9sdW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKLSAgICBndGtf
c2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwg
bXV0ZWQoKSA/IDAgOiB2b2x1bWUoKSk7CisgICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUo
R1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIG1fcGxheWVyLT5tdXRlZCgpID8gMCA6
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcl91bmJsb2NrKG1fdm9s
dW1lQnV0dG9uLCBtX3ZvbHVtZVVwZGF0ZUlkKTsKIH0KIAotZmxvYXQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6Y3VycmVudFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBtX21lZGlhRWxl
bWVudCA/IG1fbWVkaWFFbGVtZW50LT5jdXJyZW50VGltZSgpIDogMDsKLX0KLQotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpzZXRDdXJyZW50VGltZShmbG9hdCB2YWx1ZSkKLXsKLSAg
ICBpZiAobV9tZWRpYUVsZW1lbnQpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYzsKLSAgICAg
ICAgbV9tZWRpYUVsZW1lbnQtPnNldEN1cnJlbnRUaW1lKHZhbHVlLCBlYyk7Ci0gICAgfQotfQot
Ci1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpkdXJhdGlvbigpIGNvbnN0Ci17Ci0g
ICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmR1cmF0aW9uKCkgOiAw
OwotfQotCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpwZXJjZW50TG9hZGVkKCkg
Y29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVudC0+cGVy
Y2VudExvYWRlZCgpIDogMDsKLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpi
ZWdpblNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpiZWdpblNlZWso
KQogewogICAgIG1fc2Vla0xvY2sgPSB0cnVlOwotCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50KQot
ICAgICAgICBtX21lZGlhRWxlbWVudC0+YmVnaW5TY3J1YmJpbmcoKTsKIH0KIAotdm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyOjpkb1NlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyR3RrOjpkb1NlZWsoKQogewogICAgIGlmICghbV9zZWVrTG9jaykKLSAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgcmV0dXJuOwogCi0gICAgc2V0Q3VycmVudFRpbWUoZ3RrX3JhbmdlX2dl
dF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxlKSkqZHVyYXRpb24oKSAvIDEwMCk7CisgICAg
bV9wbGF5ZXItPnNlZWsoZ3RrX3JhbmdlX2dldF92YWx1ZShHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSkqbV9wbGF5ZXItPmR1cmF0aW9uKCkgLyAxMDApOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXI6OmVuZFNlZWsoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3Rr
OjplbmRTZWVrKCkKIHsKLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFF
bGVtZW50LT5lbmRTY3J1YmJpbmcoKTsKLQogICAgIG1fc2Vla0xvY2sgPSBmYWxzZTsKIH0KIAot
c3RhdGljIFN0cmluZyB0aW1lVG9TdHJpbmcoZmxvYXQgdGltZSkKK2dib29sZWFuIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGs6OnVwZGF0ZUh1ZFByb2dyZXNzQmFyKCkKIHsKLSAgICBpZiAo
IWlzZmluaXRlKHRpbWUpKQotICAgICAgICB0aW1lID0gMDsKLSAgICBpbnQgc2Vjb25kcyA9IGZh
YnNmKHRpbWUpOwotICAgIGludCBob3VycyA9IHNlY29uZHMgLyAoNjAgKiA2MCk7Ci0gICAgaW50
IG1pbnV0ZXMgPSAoc2Vjb25kcyAvIDYwKSAlIDYwOwotICAgIHNlY29uZHMgJT0gNjA7Ci0KLSAg
ICBpZiAoaG91cnMpIHsKLSAgICAgICAgaWYgKGhvdXJzID4gOSkKLSAgICAgICAgICAgIHJldHVy
biBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQ6JTAyZCIsICh0aW1lIDwgMCA/ICItIiA6ICIi
KSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3Jt
YXQoIiVzJTAxZDolMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIgOiAiIiksIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVzJTAy
ZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBtaW51dGVzLCBzZWNvbmRzKTsKLX0KLQot
Z2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIo
KQotewotICAgIGZsb2F0IG1lZGlhRHVyYXRpb24oZHVyYXRpb24oKSk7Ci0gICAgZmxvYXQgbWVk
aWFQb3NpdGlvbihjdXJyZW50VGltZSgpKTsKKyAgICBmbG9hdCBtZWRpYUR1cmF0aW9uKG1fcGxh
eWVyLT5kdXJhdGlvbigpKTsKKyAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKG1fcGxheWVyLT5jdXJy
ZW50VGltZSgpKTsKIAogICAgIGlmICghbV9zZWVrTG9jaykgewogICAgICAgICBnZG91YmxlIHZh
bHVlID0gMC4wOwpAQCAtNTE0LDIyICszNzcsMjEgQEAgZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6dXBkYXRlSHVkUHJvZ3Jlc3NCYXIoKQogICAgICAgICBndGtfYWRqdXN0bWVu
dF9zZXRfdmFsdWUoYWRqdXN0bWVudCwgdmFsdWUpOwogICAgIH0KIAotICAgIGd0a19yYW5nZV9z
ZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxlKSwgcGVyY2VudExvYWRlZCgpKiAx
MDApOworICAgIGd0a19yYW5nZV9zZXRfZmlsbF9sZXZlbChHVEtfUkFOR0UobV90aW1lSFNjYWxl
KSwgKG1fcGxheWVyLT5tYXhUaW1lTG9hZGVkKCkgLyBtZWRpYUR1cmF0aW9uKSogMTAwKTsKIAot
ICAgIGdjaGFyKiBsYWJlbCA9IGdfc3RyZHVwX3ByaW50ZigiJXMgLyAlcyIsIHRpbWVUb1N0cmlu
ZyhtZWRpYVBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB0aW1lVG9TdHJpbmcobWVkaWFEdXJhdGlvbikudXRmOCgpLmRhdGEoKSk7Cisg
ICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJkdXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRvU3RyaW5n
KG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHRpbWVUb1N0cmluZyhtZWRpYUR1cmF0aW9u
KS51dGY4KCkuZGF0YSgpKTsKICAgICBndGtfbGFiZWxfc2V0X3RleHQoR1RLX0xBQkVMKG1fdGlt
ZUxhYmVsKSwgbGFiZWwpOwogICAgIGdfZnJlZShsYWJlbCk7CiAgICAgcmV0dXJuIFRSVUU7CiB9
CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Y3JlYXRlSHVkKCkKIHsKICAgICBtX2h1ZFdpbmRv
dyA9IGd0a193aW5kb3dfbmV3KEdUS19XSU5ET1dfUE9QVVApOwogICAgIGd0a193aW5kb3dfc2V0
X2dyYXZpdHkoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIEdES19HUkFWSVRZX1NPVVRIX1dFU1Qp
OwogICAgIGd0a193aW5kb3dfc2V0X3R5cGVfaGludChHVEtfV0lORE9XKG1faHVkV2luZG93KSwg
R0RLX1dJTkRPV19UWVBFX0hJTlRfTk9STUFMKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV9o
dWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5H
dGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOworICAgIG1faHVkTW90aW9uTm90aWZ5U2lnbmFs
SGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV9odWRXaW5kb3csICJtb3Rpb24tbm90aWZ5LWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMp
OwogCiAjaWZkZWYgR1RLX0FQSV9WRVJTSU9OXzIKICAgICBHdGtXaWRnZXQqIGhib3ggPSBndGtf
aGJveF9uZXcoRkFMU0UsIDQpOwpAQCAtNTM5LDkgKzQwMSw3IEBAIHZvaWQgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09O
VEFJTkVSKG1faHVkV2luZG93KSwgaGJveCk7CiAKICAgICBtX3BsYXlQYXVzZUFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJwbGF5IiwgXygiUGxheSAvIFBhdXNlIiksIF8oIlBsYXkgb3IgcGF1c2Ug
dGhlIG1lZGlhIiksIFBBVVNFX0lDT05fTkFNRSk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX3Bs
YXlQYXVzZUFjdGlvbiwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyh0b2dnbGVQbGF5UGF1c2VBY3Rp
dmF0ZWQpLCB0aGlzKTsKLQotICAgIHBsYXlTdGF0ZUNoYW5nZWQoKTsKKyAgICBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fcGxheVBhdXNlQWN0
aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCksIHRo
aXMpOwogCiAgICAgR3RrV2lkZ2V0KiBpdGVtID0gZ3RrX2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVt
KG1fcGxheVBhdXNlQWN0aW9uKTsKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94
KSwgaXRlbSwgRkFMU0UsIFRSVUUsIDApOwpAQCAtNTU3LDggKzQxNyw4IEBAIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICNlbmRpZgogICAgIGd0a19zY2FsZV9z
ZXRfZHJhd192YWx1ZShHVEtfU0NBTEUobV90aW1lSFNjYWxlKSwgRkFMU0UpOwogICAgIGd0a19y
YW5nZV9zZXRfc2hvd19maWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCBUUlVFKTsK
LSAgICBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1wcmVzcy1ldmVudCIs
IEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUHJlc3NlZCksIHRoaXMpOwotICAgIGdfc2lnbmFs
X2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0dG9uLXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNL
KHRpbWVTY2FsZUJ1dHRvblJlbGVhc2VkKSwgdGhpcyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25Q
cmVzc2VkU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAiYnV0
dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0b25QcmVzc2VkKSwgdGhp
cyk7CisgICAgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXIgPSBnX3NpZ25h
bF9jb25uZWN0KG1fdGltZUhTY2FsZSwgImJ1dHRvbi1yZWxlYXNlLWV2ZW50IiwgR19DQUxMQkFD
Syh0aW1lU2NhbGVCdXR0b25SZWxlYXNlZCksIHRoaXMpOwogICAgIG1faHNjYWxlVXBkYXRlSWQg
PSBnX3NpZ25hbF9jb25uZWN0KG1fdGltZUhTY2FsZSwgInZhbHVlLWNoYW5nZWQiLCBHX0NBTExC
QUNLKHRpbWVTY2FsZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwogCiAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goaGJveCksIG1fdGltZUhTY2FsZSwgVFJVRSwgVFJVRSwgMCk7CkBAIC01Njks
MTggKzQyOSwxOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmNyZWF0ZUh1ZCgp
CiAgICAgLy8gVm9sdW1lIGJ1dHRvbi4KICAgICBtX3ZvbHVtZUJ1dHRvbiA9IGd0a192b2x1bWVf
YnV0dG9uX25ldygpOwogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBtX3Zv
bHVtZUJ1dHRvbiwgRkFMU0UsIFRSVUUsIDApOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3Zh
bHVlKEdUS19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pLCB2b2x1bWUoKSk7CisgICAgZ3Rr
X3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiks
IG1fcGxheWVyLT52b2x1bWUoKSk7CiAgICAgbV92b2x1bWVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nv
bm5lY3QobV92b2x1bWVCdXR0b24sICJ2YWx1ZS1jaGFuZ2VkIiwgR19DQUxMQkFDSyh2b2x1bWVW
YWx1ZUNoYW5nZWQpLCB0aGlzKTsKIAotCiAgICAgbV9leGl0RnVsbHNjcmVlbkFjdGlvbiA9IGd0
a19hY3Rpb25fbmV3KCJleGl0IiwgXygiRXhpdCBGdWxsc2NyZWVuIiksIF8oIkV4aXQgZnJvbSBm
dWxsc2NyZWVuIG1vZGUiKSwgRVhJVF9GVUxMU0NSRUVOX0lDT05fTkFNRSk7Ci0gICAgZ19zaWdu
YWxfY29ubmVjdChtX2V4aXRGdWxsc2NyZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNL
KGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVkKSwgdGhpcyk7CisgICAgbV9leGl0RnVsbGNyZWVuQWN0
aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX2V4aXRGdWxsc2Ny
ZWVuQWN0aW9uLCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKGV4aXRGdWxsc2NyZWVuQWN0aXZhdGVk
KSwgdGhpcyk7CiAgICAgZ19vYmplY3Rfc2V0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJpY29u
LW5hbWUiLCBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FLCBOVUxMKTsKICAgICBpdGVtID0gZ3Rr
X2FjdGlvbl9jcmVhdGVfdG9vbF9pdGVtKG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24pOwogICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7CiAK
LQogICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9IGdfdGltZW91dF9hZGQoUFJPR1JFU1NfQkFS
X1VQREFURV9JTlRFUlZBTCwgcmVpbnRlcnByZXRfY2FzdDxHU291cmNlRnVuYz4ocHJvZ3Jlc3NC
YXJVcGRhdGVDYWxsYmFjayksIHRoaXMpOworCisgICAgcGxheVN0YXRlQ2hhbmdlZCgpOwogfQog
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrLmgKc2ltaWxhcml0eSBpbmRleCA1MyUKcmVuYW1lIGZyb20gU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5oCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCmluZGV4IDgxN2JjMTkuLjkxN2YyODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlh
IFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtMTcsMzIgKzE3LDI3IEBACiAgKiAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CiAgKi8KIAotI2lmbmRlZiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gKLSNkZWZpbmUgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcl9oCisjaWZuZGVmIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xs
ZXJHdGtfaAorI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrX2gKIAotI2lmIEVO
QUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5BQkxFKFZJ
REVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCiAK
LSNpbmNsdWRlICJHU3RyZWFtZXJHV29ybGQuaCIKLSNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50
LmgiCi0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dSZWZQ
dHIuaD4KKyNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyLmgiCiAK
LWNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpOwotcHVibGljOgotICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIoKTsKLSAgICB2aXJ0dWFsIH5GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KCk7CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICB2b2lkIHNldE1lZGlhRWxlbWVudChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Kik7Ci0gICAgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudCog
bWVkaWFFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9tZWRpYUVsZW1lbnQuZ2V0KCk7IH0KKy8q
IGNsYXNzIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXI7ICovCisvKiBjbGFzcyBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI7ICovCiAKLSAgICB2b2lkIGd0a0NvbmZpZ3VyZShH
ZGtFdmVudENvbmZpZ3VyZSogZXZlbnQpOworY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ayA6IHB1YmxpYyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrPiBj
cmVhdGUoTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpIHsgcmV0dXJuIGFkb3B0
UHRyKG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKHBsYXllcikpOyB9CisgICAgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayhNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIqKTsK
IAotICAgIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7Ci0gICAgdm9pZCBleGl0RnVsbHNjcmVlbigp
OworICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKik7CisKKyAgICB2b2lk
IHBsYXlTdGF0ZUNoYW5nZWQoKTsKIAotICAgIHZvaWQgZXhpdE9uVXNlclJlcXVlc3QoKTsKLSAg
ICB2b2lkIHRvZ2dsZVBsYXkoKTsKICAgICB2b2lkIGJlZ2luU2VlaygpOwogICAgIHZvaWQgZG9T
ZWVrKCk7CiAgICAgdm9pZCBlbmRTZWVrKCk7CkBAIC01MSwzMSArNDYsMTYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2hvd0h1ZChib29sKTsKICAgICBnYm9vbGVhbiB1cGRhdGVIdWRQcm9ncmVzc0Jh
cigpOwogCi0gICAgZmxvYXQgdm9sdW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWb2x1bWUoZmxv
YXQpOwogICAgIHZvaWQgdm9sdW1lQ2hhbmdlZCgpOwogICAgIHZvaWQgbXV0ZUNoYW5nZWQoKTsK
IAogcHJpdmF0ZToKLSAgICBib29sIGNhblBsYXkoKSBjb25zdDsKLSAgICB2b2lkIHBsYXkoKTsK
LSAgICB2b2lkIHBhdXNlKCk7Ci0gICAgdm9pZCBwbGF5U3RhdGVDaGFuZ2VkKCk7Ci0KLSAgICBi
b29sIG11dGVkKCkgY29uc3Q7Ci0KLSAgICBmbG9hdCBjdXJyZW50VGltZSgpIGNvbnN0OwotICAg
IHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQpOwotCi0gICAgZmxvYXQgZHVyYXRpb24oKSBjb25z
dDsKLSAgICBmbG9hdCBwZXJjZW50TG9hZGVkKCkgY29uc3Q7CisgICAgdm9pZCBpbml0aWFsaXpl
V2luZG93KCk7CisgICAgdm9pZCBkZXN0cm95V2luZG93KCk7CiAKICAgICB2b2lkIGNyZWF0ZUh1
ZCgpOwogICAgIHZvaWQgdXBkYXRlSHVkUG9zaXRpb24oKTsKIAotICAgIFJlZlB0cjxXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50PiBtX21lZGlhRWxlbWVudDsKLSAgICBSZWZQdHI8V2ViQ29yZTo6
R1N0cmVhbWVyR1dvcmxkPiBtX2dzdHJlYW1lckdXb3JsZDsKLQogICAgIGd1aW50IG1faHVkVGlt
ZW91dElkOwogICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZDsKICAgICBndWludCBtX3By
b2dyZXNzQmFyRmlsbFVwZGF0ZUlkOwpAQCAtODksOCArNjksMjAgQEAgcHJpdmF0ZToKICAgICBH
dGtXaWRnZXQqIG1fdGltZUhTY2FsZTsKICAgICBHdGtXaWRnZXQqIG1fdGltZUxhYmVsOwogICAg
IEd0a1dpZGdldCogbV92b2x1bWVCdXR0b247CisKKyAgICB1bnNpZ25lZCBsb25nIG1fa2V5UHJl
c3NTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9kZXN0cm95U2lnbmFsSGFuZGxl
cjsKKyAgICB1bnNpZ25lZCBsb25nIG1faXNBY3RpdmVTaWduYWxIYW5kbGVyOworICAgIHVuc2ln
bmVkIGxvbmcgbV9tb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcg
bV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2h1ZE1v
dGlvbk5vdGlmeVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1
dHRvblByZXNzZWRTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV90aW1lU2NhbGVC
dXR0b25SZWxlYXNlZFNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX3BsYXlBY3Rp
b25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2V4aXRGdWxsY3Jl
ZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXI7CiB9OwogCit9CiAjZW5kaWYKIAotI2VuZGlm
IC8vIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJfaAorI2VuZGlmIC8vIEZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXJHdGtfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDdlOWU1MjAuLjdmOWFmZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMy0wMS0yMCAgUGhpbGlwcGUgTm9y
bWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS11bR1N0cmVhbWVyXSBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgdGhlIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIgYXMgaXQgbW92ZWQgdG8KKyAgICAgICAgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lciBhbmQgaXRzIEd0ayBzdWJjbGFzcyBpbgorICAgICAgICBXZWJDb3Jl
LiBIb29rIGluIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIGluIHRoZSBDaHJvbWVDbGllbnQgaW4K
KyAgICAgICAgdGhlIHR3byBwb3NzaWJsZSBzY2VuYXJpb3MsIHdldGhlciBGVUxMU0NSRUVOX0FQ
SSBpcyBlbmFibGVkIG9yIG5vdC4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBSZW1vdmUg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6Q2hy
b21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKTogSG9vaworICAgICAgICBOQVRJVkVf
RlVMTFNDUkVFTl9WSURFTyBzdXBwb3J0LgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6
OmV4aXRGdWxsc2NyZWVuRm9yTm9kZSk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNs
aWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IERpdHRvCisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogRGl0dG8KKyAgICAgICAg
KiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaDoKKyAgICAgICAgKENocm9tZUNsaWVu
dCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5j
cHA6IFJlbW92ZWQuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5oOiBSZW1vdmVkLgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDog
UmVtb3ZlIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIgc3VwcG9ydC4KKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaDogRGl0dG8KKwogMjAxMy0wMS0yNSAgSm9vbmUgSHVy
ICA8am9vbmUuaHVyQGludGVsLmNvbT4KIAogICAgICAgICBbR1RLXVtBQ10gVXNlIG5ldyBDbHV0
dGVyIEFQSXMgaW5zdGVhZCBvZiBkZXByZWNhdGVkIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUu
YW0KaW5kZXggZTg0OTEyMy4uN2U0NjYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsv
R05VbWFrZWZpbGUuYW0KKysrIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAg
LTIxMCw4ICsyMTAsNiBAQCB3ZWJraXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVOZXR3b3JraW5nQ29udGV4dEd0ay5jcHAgXAogCVNv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsu
aCBcCi0JU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlci5jcHAgXAotCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
R2VvbG9jYXRpb25DbGllbnRHdGsuY3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9HZW9sb2NhdGlvbkNsaWVudEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9HdGtBZGp1c3RtZW50V2F0Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMTRkOGNkZi4u
NjcwZjY0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRHdGsuY3BwCkBAIC03Nyw2ICs3NywxMCBAQAogI2luY2x1ZGUgIkRhdGFiYXNl
TWFuYWdlci5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjZW5kaWYKKwog
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODk2LDgg
KzkwMCw3IEBAIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVDbGll
bnQ6OmNyZWF0ZVNlYXJjaFBvcHVwTWVudShXZWJDb3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBTZWFyY2hQb3B1cE1lbnVHdGsoY2xpZW50KSk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi0K
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIGJvb2wg
Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUp
CiB7CiAgICAgcmV0dXJuIG5vZGUtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZyk7CkBA
IC05MDUsMTIgKzkwOCwyOCBAQCBib29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
Rm9yTm9kZShjb25zdCBOb2RlKiBub2RlKQogCiB2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJGdWxs
c2NyZWVuRm9yTm9kZShOb2RlKiBub2RlKQogewotICAgIHdlYlZpZXdFbnRlckZ1bGxzY3JlZW4o
bV93ZWJWaWV3LCBub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsK
KyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAg
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVs
ZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYg
bWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgICAg
ICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB9CiB9CiAK
IHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsK
LSAgICB3ZWJWaWV3RXhpdEZ1bGxzY3JlZW4obV93ZWJWaWV3KTsKKyAgICBpZiAoIW5vZGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8
SFRNTEVsZW1lbnQqPihub2RlKTsKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlh
RWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0
YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlh
RWxlbWVudC0+cGxheWVyKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5l
eGl0RnVsbHNjcmVlbigpOworICAgIH0KIH0KICNlbmRpZgogCkBAIC05NDksNiArOTY4LDE5IEBA
IHZvaWQgQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVs
ZW1lbnQqIGVsZW1lbnQpCiAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm47CiAK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBp
ZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgbWVkaWFF
bGVtZW50LT5wbGF5ZXIoKS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkpIHsKKyAgICAgICAgICAgIGVs
ZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVs
ZW1lbnQpOworICAgICAgICAgICAgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAgICAg
ICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQoZWxlbWVudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRp
ZgorCiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKG1fd2ViVmlldykpOwogICAgIGlmICghd2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2lu
ZG93KHdpbmRvdykpCiAgICAgICAgIHJldHVybjsKQEAgLTk3Niw2ICsxMDA4LDE5IEBAIHZvaWQg
Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCop
CiAgICAgaWYgKHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoVklE
RU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBpZiAobV9mdWxsU2NyZWVu
RWxlbWVudCAmJiBtX2Z1bGxTY3JlZW5FbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIEhUTUxN
ZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQq
PihtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+
cGxheWVyKCkpIHsKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmV4aXRGdWxs
c2NyZWVuKCk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53
ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQo
KSk7CisgICAgICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LmNsZWFyKCk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwogICAgIEFT
U0VSVCh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSk7CiAgICAgZ19zaWdu
YWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKHdpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2
b2lkKj4ob25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVudCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxZTkz
MzFjLi5kYzJkOTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuaApAQCAtMTM1LDcgKzEzNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBQYXNzUmVmUHRyPFBvcHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNs
aWVudCopIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51
PiBjcmVhdGVTZWFyY2hQb3B1cE1lbnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0jaWYgRU5B
QkxFKFZJREVPKQorI2lmIEVOQUJMRShWSURFTykgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJ
REVPKQogICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25z
dCBOb2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5v
ZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggNmJlY2Zh
YS4uN2I2YTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cApAQCAtNTMxMSwzNCArNTMxMSw2IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotdm9pZCB3ZWJW
aWV3RW50ZXJGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCi17
Ci0gICAgaWYgKCFub2RlLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQotICAgICAg
ICByZXR1cm47Ci0KLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lP
Tl8xKQotICAgIEhUTUxNZWRpYUVsZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhU
TUxNZWRpYUVsZW1lbnQqPihub2RlKTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9
IHdlYlZpZXctPnByaXY7Ci0KLSAgICAvLyBGaXJzdCBleGl0IEZ1bGxzY3JlZW4gZm9yIHRoZSBv
bGQgbWVkaWFFbGVtZW50LgotICAgIGlmIChwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
KQotICAgICAgICBwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVl
bigpOwotCi0gICAgcHJpdi0+ZnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciA9IG5ldyBGdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyOwotICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIt
PnNldE1lZGlhRWxlbWVudCh2aWRlb0VsZW1lbnQpOwotICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOwotI2VuZGlmCi19Ci0KLXZvaWQgd2ViVmll
d0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0jaWYgRU5BQkxFKFZJ
REVPKSAmJiAhZGVmaW5lZChHU1RfQVBJX1ZFUlNJT05fMSkKLSAgICBXZWJLaXRXZWJWaWV3UHJp
dmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0gICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRl
b0NvbnRyb2xsZXIpCi0gICAgICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4
aXRGdWxsc2NyZWVuKCk7Ci0jZW5kaWYKLX0KLQogI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCiB2
b2lkIHdlYmtpdFdlYlZpZXdJY29uTG9hZGVkKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJh
c2UsIGNvbnN0IGNoYXIqIGZyYW1lVVJJLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCAw
YWU1MjJjLi40NjY1YzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlld3ByaXZhdGUuaApAQCAtMjQsNyArMjQsNiBAQAogI2RlZmluZSB3ZWJraXR3ZWJ2aWV3
cHJpdmF0ZV9oCiAKICNpbmNsdWRlICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgot
I2luY2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9sb2Nh
dGlvbkNsaWVudE1vY2suaCIKICNpbmNsdWRlICJHdGtDbGlja0NvdW50ZXIuaCIKICNpbmNsdWRl
ICJHdGtEcmFnQW5kRHJvcEhlbHBlci5oIgpAQCAtOTEsMTAgKzkwLDYgQEAgc3RydWN0IF9XZWJL
aXRXZWJWaWV3UHJpdmF0ZSB7CiAKICAgICBnYm9vbGVhbiBkaXNwb3Npbmc7CiAKLSNpZiBFTkFC
TEUoVklERU8pICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQotICAgIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIqIGZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI7Ci0jZW5kaWYKLQogICAg
IC8vIFRoZXNlIGFyZSBob3N0ZWQgaGVyZSBiZWNhdXNlIHRoZSBEYXRhU291cmNlIG9iamVjdCBp
cwogICAgIC8vIGNyZWF0ZWQgdG9vIGxhdGUgaW4gdGhlIGZyYW1lIGxvYWRpbmcgcHJvY2Vzcy4K
ICAgICBHUmVmUHRyPFdlYktpdFdlYlJlc291cmNlPiBtYWluUmVzb3VyY2U7CkBAIC0xNDMsOSAr
MTM4LDYgQEAgR0xpc3QqIHdlYmtpdF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdl
YlZpZXcqKTsKIHZvaWQgd2Via2l0X3dlYl92aWV3X3NldF90b29sdGlwX3RleHQoV2ViS2l0V2Vi
VmlldyosIGNvbnN0IGNoYXIqKTsKIEd0a01lbnUqIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4
dF9tZW51KFdlYktpdFdlYlZpZXcqKTsKIAotdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIFdlYkNvcmU6Ok5vZGUqKTsKLXZvaWQgd2ViVmlld0V4aXRG
dWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpOwotCiB2b2lkIHdlYmtpdFdlYlZpZXdS
dW5GaWxlQ2hvb3NlclJlcXVlc3QoV2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2VyUmVx
dWVzdCopOwogCiAjaWYgRU5BQkxFKElDT05EQVRBQkFTRSkKLS0gCjEuNy4xMC40
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185497</attachid>
            <date>2013-01-30 07:00:42 -0800</date>
            <delta_ts>2013-02-01 02:28:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Patch.patch</filename>
            <type>text/plain</type>
            <size>42891</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSA2YTRlNTcyNDdmOTZhNWQ1NTMzZjE4Mjc1YWYwNjFhN2UyOTM0YTRiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBTdW4sIDIwIEphbiAyMDEzIDE2OjIwOjExICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
UGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgIDE5ICsrCiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtICAgICAg
ICAgICAgICAgICB8ICAgIDIgKwogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwICAgICAgfCAgIDIyICsrCiAuLi4vZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5oICAgICAgICB8ICAgIDYgKwogLi4uL2dyYXBoaWNzL2d0ay9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyR3RrLmNwcH0gfCAgMzM1ICsrKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4v
Z3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaH0gICB8ICAgNjggKyst
LQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgfCAg
IDI3ICsrCiBTb3VyY2UvV2ViS2l0L2d0ay9HTlVtYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAg
ICB8ICAgIDIgLQogLi4uL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3Rr
LmNwcCAgfCAgIDUzICsrKy0KIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9t
ZUNsaWVudEd0ay5oIHwgICAgMiArLQogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuY3BwICAgICAgICAgfCAgIDI4IC0tCiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlld3ByaXZhdGUuaCAgICB8ICAgIDggLQogMTIgZmlsZXMgY2hhbmdlZCwgMjU0IGlu
c2VydGlvbnMoKyksIDMxOCBkZWxldGlvbnMoLSkKIHJlbmFtZSBTb3VyY2Uve1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgPT4gV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5jcHB9ICg1
NCUpCiByZW5hbWUgU291cmNlL3tXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaCA9PiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9GdWxsc2Ny
ZWVuVmlkZW9Db250cm9sbGVyR3RrLmh9ICg1MyUpCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGNhNGU4NDMuLjhm
MWIwZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyNCBAQAogMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKKyAgICAgICAgW0dUS11bR1N0cmVhbWVy
XSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIGltcGxlbWVudGF0aW9uCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDczOTgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOQVRJVkVfRlVMTFNDUkVFTl9W
SURFTyBzdXBwb3J0IGZvciB0aGUgR1RLIHBvcnQuIFRoZSBwcmV2aW91cworICAgICAgICBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyIGltcGxlbWVudGF0aW9uIHdhcyByZWZhY3RvcmVkIGFzIGEK
KyAgICAgICAgc3ViLWNsYXNzIG9mIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIg
YW5kIGhvb2tlZCBpbiB0aGUKKyAgICAgICAgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyIGJh
Y2tlbmQuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp+TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuY3BwOiBSZW5hbWVkIGZyb20g
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ci5jcHAuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaC4KKworMjAxMy0wMS0yMCAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CisKICAgICAgICAgW0dTdHJlYW1lcl0gVVNF
KE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKSBzdXBwb3J0CiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY3NjAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggOTk2Mzc5Zi4uNDQzY2QwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC02MDgwLDYgKzYwODAsOCBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Db2xvckd0ay5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9HZGtDYWlyb1V0aWxpdGllcy5oIFwK
KwlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ay5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9G
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmggXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9JY29uR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3RrL0ltYWdlQnVmZmVyR3RrLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXll
clByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGRmMTI3MDkuLmQyZDc1ODUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC02MCw2ICs2MCwx
MiBAQAogI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3N0cmVhbXZvbHVtZS5oPgogI2VuZGlmCiAK
KyNpZiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklERU8pCisjaWYgUExBVEZPUk0oR1RLKQorI2lu
Y2x1ZGUgIkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaCIKKyNlbmRpZgorI2VuZGlmCisK
IC8vIEdzdFBsYXlGbGFncyBmbGFncyBmcm9tIHBsYXliaW4yLiBJdCBpcyB0aGUgcG9saWN5IG9m
IEdTdHJlYW1lciB0bwogLy8gbm90IHB1YmxpY2x5IGV4cG9zZSBlbGVtZW50LXNwZWNpZmljIGVu
dW1zLiBUaGF0J3Mgd2h5IHRoaXMKIC8vIEdzdFBsYXlGbGFncyBlbnVtIGhhcyBiZWVuIGNvcGll
ZCBoZXJlLgpAQCAtMjY5LDYgKzI3NSw5IEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
fk1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcigpCiAgICAgfQogCiAjaWYgVVNFKE5BVElWRV9G
VUxMU0NSRUVOX1ZJREVPKQorICAgIGlmIChtX2Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCisg
ICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisKICAgICBpZiAobV92aWRlb1NpbmtCaW4pIHsKICAg
ICAgICAgZ3N0X29iamVjdF91bnJlZihtX3ZpZGVvU2lua0Jpbik7CiAgICAgICAgIG1fdmlkZW9T
aW5rQmluID0gMDsKQEAgLTE3NjEsMTIgKzE3NzAsMjUgQEAgYm9vbCBNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Omhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QKICNpZiBVU0UoTkFU
SVZFX0ZVTExTQ1JFRU5fVklERU8pCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKyAgICBBU1NFUlQoIW1fZnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcik7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIG1fZnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciA9IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmNyZWF0ZSh0aGlzKTsKKyAgICBtX2Z1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVsbHNjcmVlbigpOworI2Vsc2UKICAgICBu
b3RJbXBsZW1lbnRlZCgpOworI2VuZGlmCiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyOjpleGl0RnVsbHNjcmVlbigpCiB7CisjaWYgUExBVEZPUk0oR1RLKQorICAgIGlmICgh
bV9mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKQorICAgICAgICByZXR1cm47CisgICAgbV9mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOworICAgIG1fZnVsbHNjcmVl
blZpZGVvQ29udHJvbGxlci5yZWxlYXNlKCk7CisjZWxzZQogICAgIG5vdEltcGxlbWVudGVkKCk7
CisjZW5kaWYKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmgKaW5kZXggNzM5OGUyZi4uNTg0OTAyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaApAQCAtMzcsNiArMzcsMTIgQEAgdHlwZWRlZiBz
dHJ1Y3QgX0dzdEJ1ZmZlciBHc3RCdWZmZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0TWVzc2FnZSBH
c3RNZXNzYWdlOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVsZW1lbnQgR3N0RWxlbWVudDsKIAorI2lm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyNpZiBQTEFURk9STShHVEspCisjZGVmaW5l
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJDbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
R3RrCisjZW5kaWYKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZmRlZiBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyQ2xhc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggNTQlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuY3BwCnJlbmFtZSB0byBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ckd0ay5jcHAKaW5kZXggZDE0ZGM5Ny4uMjAzNjJlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGsuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTAg
SWdhbGlhIFMuTAorICogIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MCiAgKgogICogIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYwpAQCAtMTksODYgKzE5LDg2IEBACiAKICNpbmNsdWRlICJjb25maWcuaCIKIAot
I2lmIEVOQUJMRShWSURFTykgJiYgIWRlZmluZWQoR1NUX0FQSV9WRVJTSU9OXzEpCisjaWYgRU5B
QkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKSAmJiBVU0UoTkFUSVZFX0ZVTExTQ1JFRU5fVklE
RU8pCiAKLSNpbmNsdWRlICJGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmgiCisjaW5jbHVkZSAi
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ay5oIgogCisjaW5jbHVkZSAiRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlckdTdHJlYW1lci5oIgogI2luY2x1ZGUgIkdSZWZQdHJHdGsuaCIKKyNpbmNs
dWRlICJHU3RyZWFtZXJHV29ybGQuaCIKICNpbmNsdWRlICJHdGtWZXJzaW9uaW5nLmgiCiAjaW5j
bHVkZSAiTWVkaWFQbGF5ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXIuaCIKIAogI2luY2x1ZGUgPGdkay9nZGsuaD4KICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogI2RlZmluZSBIVURf
QVVUT19ISURFX0lOVEVSVkFMIDMwMDAgLy8gMyBzZWNvbmRzCiAjZGVmaW5lIFBST0dSRVNTX0JB
Ul9VUERBVEVfSU5URVJWQUwgMTUwIC8vIDE1MG1zCi0jZGVmaW5lIFZPTFVNRV9VUF9PRkZTRVQg
MC4wNSAvLyA1JQotI2RlZmluZSBWT0xVTUVfRE9XTl9PRkZTRVQgMC4wNSAvLyA1JQogCiAvLyBV
c2Ugc3ltYm9saWMgaWNvbnMgb25seSBpZiB3ZSBidWlsZCB3aXRoIEdUSystMyBzdXBwb3J0LiBU
aGV5IGNvdWxkCiAvLyBiZSBlbmFibGVkIGZvciB0aGUgR1RLKzIgYnVpbGQgYnV0IHdlJ2QgbmVl
ZCB0byBidW1wIHRoZSByZXF1aXJlZAogLy8gdmVyc2lvbiB0byBhdCBsZWFzdCAyLjIyLgotI2lm
IEdUS19NQUpPUl9WRVJTSU9OIDwgMwotI2RlZmluZSBQTEFZX0lDT05fTkFNRSAibWVkaWEtcGxh
eWJhY2stc3RhcnQiCi0jZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1
c2UiCi0jZGVmaW5lIEVYSVRfRlVMTFNDUkVFTl9JQ09OX05BTUUgInZpZXctcmVzdG9yZSIKKyNp
ZiBHVEtfTUFKT1JfVkVSU0lPTiA+IDIKKyNkZWZpbmUgSUNPTl9OQU1FX1NVRkZJWCAiLXN5bWJv
bGljIgogI2Vsc2UKLSNkZWZpbmUgUExBWV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXN0YXJ0
LXN5bWJvbGljIgotI2RlZmluZSBQQVVTRV9JQ09OX05BTUUgIm1lZGlhLXBsYXliYWNrLXBhdXNl
LXN5bWJvbGljIgotI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2aWV3LXJlc3Rv
cmUtc3ltYm9saWMiCisjZGVmaW5lIElDT05fTkFNRV9TVUZGSVgKICNlbmRpZgogCi1zdGF0aWMg
Z2Jvb2xlYW4gaGlkZUh1ZENhbGxiYWNrKEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRy
b2xsZXIpCisjZGVmaW5lIFBMQVlfSUNPTl9OQU1FICJtZWRpYS1wbGF5YmFjay1zdGFydCJJQ09O
X05BTUVfU1VGRklYCisjZGVmaW5lIFBBVVNFX0lDT05fTkFNRSAibWVkaWEtcGxheWJhY2stcGF1
c2UiSUNPTl9OQU1FX1NVRkZJWAorI2RlZmluZSBFWElUX0ZVTExTQ1JFRU5fSUNPTl9OQU1FICJ2
aWV3LXJlc3RvcmUiSUNPTl9OQU1FX1NVRkZJWAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0
YXRpYyBnYm9vbGVhbiBoaWRlSHVkQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0
ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CiAgICAgcmV0dXJu
IEZBTFNFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrTW90aW9uTm90aWZ5
RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9uKiBldmVudCwgIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2Ny
ZWVuR3RrTW90aW9uTm90aWZ5RXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50TW90aW9u
KiBldmVudCwgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAg
ICAgY29udHJvbGxlci0+c2hvd0h1ZCh0cnVlKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3Rh
dGljIHZvaWQgb25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKEd0a1dpZGdldCogd2lk
Z2V0LCBHUGFyYW1TcGVjKiBwcm9wZXJ0eSwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29u
dHJvbGxlcikKK3N0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNhdGlvbihH
dGtXaWRnZXQqIHdpZGdldCwgR1BhcmFtU3BlYyogcHJvcGVydHksIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKCFndGtfd2luZG93X2lzX2FjdGl2
ZShHVEtfV0lORE9XKHdpZGdldCkpKQogICAgICAgICBjb250cm9sbGVyLT5oaWRlSHVkKCk7CiB9
CiAKLXN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtDb25maWd1cmVFdmVudChHdGtXaWRn
ZXQqIHdpZGdldCwgR2RrRXZlbnRDb25maWd1cmUqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0NvbmZp
Z3VyZUV2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudENvbmZpZ3VyZSogZXZlbnQsIEZ1
bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxl
ci0+Z3RrQ29uZmlndXJlKGV2ZW50KTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIHZv
aWQgb25GdWxsc2NyZWVuR3RrRGVzdHJveShHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZp
ZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyB2b2lkIG9uRnVsbHNjcmVlbkd0a0Rl
c3Ryb3koR3RrV2lkZ2V0KiB3aWRnZXQsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsqIGNv
bnRyb2xsZXIpCiB7CiAgICAgY29udHJvbGxlci0+ZXhpdEZ1bGxzY3JlZW4oKTsKIH0KIAotc3Rh
dGljIHZvaWQgdG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIHZvaWQgdG9nZ2xlUGxh
eVBhdXNlQWN0aXZhdGVkKEd0a0FjdGlvbiogYWN0aW9uLCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR3RrKiBjb250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPnRvZ2dsZVBsYXkoKTsKIH0K
IAotc3RhdGljIHZvaWQgZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQoR3RrQWN0aW9uKiBhY3Rpb24s
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCitzdGF0aWMgdm9pZCBleGl0
RnVsbHNjcmVlbkFjdGl2YXRlZChHdGtBY3Rpb24qIGFjdGlvbiwgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5leGl0T25Vc2VyUmVx
dWVzdCgpOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gcHJvZ3Jlc3NCYXJVcGRhdGVDYWxsYmFjayhG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIGdib29sZWFuIHBy
b2dyZXNzQmFyVXBkYXRlQ2FsbGJhY2soRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29u
dHJvbGxlcikKIHsKICAgICByZXR1cm4gY29udHJvbGxlci0+dXBkYXRlSHVkUHJvZ3Jlc3NCYXIo
KTsKIH0KIAotc3RhdGljIGdib29sZWFuIHRpbWVTY2FsZUJ1dHRvblByZXNzZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka0V2ZW50QnV0dG9uKiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
ciogY29udHJvbGxlcikKK3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0
a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsqIGNvbnRyb2xsZXIpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlICE9IEdES19C
VVRUT05fUFJFU1MpCiAgICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTEwNyw2NCArMTA3LDQ5IEBA
IHN0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25QcmVzc2VkKEd0a1dpZGdldCogd2lkZ2V0
LCBHZGtFdmVudEJ1dHRvbiogZXZlbnQsCiAgICAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMg
Z2Jvb2xlYW4gdGltZVNjYWxlQnV0dG9uUmVsZWFzZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2
ZW50QnV0dG9uKiBldmVudCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikK
K3N0YXRpYyBnYm9vbGVhbiB0aW1lU2NhbGVCdXR0b25SZWxlYXNlZChHdGtXaWRnZXQqIHdpZGdl
dCwgR2RrRXZlbnRCdXR0b24qIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrKiBj
b250cm9sbGVyKQogewogICAgIGNvbnRyb2xsZXItPmVuZFNlZWsoKTsKICAgICByZXR1cm4gRkFM
U0U7CiB9CiAKLXN0YXRpYyB2b2lkIHRpbWVTY2FsZVZhbHVlQ2hhbmdlZChHdGtXaWRnZXQqIHdp
ZGdldCwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciogY29udHJvbGxlcikKK3N0YXRpYyB2b2lk
IHRpbWVTY2FsZVZhbHVlQ2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBjb250cm9sbGVyLT5kb1NlZWsoKTsK
IH0KIAotc3RhdGljIHZvaWQgdm9sdW1lVmFsdWVDaGFuZ2VkKEd0a1NjYWxlQnV0dG9uICpidXR0
b24sIGdkb3VibGUgdmFsdWUsIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
CitzdGF0aWMgdm9pZCB2b2x1bWVWYWx1ZUNoYW5nZWQoR3RrU2NhbGVCdXR0b24gKmJ1dHRvbiwg
Z2RvdWJsZSB2YWx1ZSwgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikK
IHsKICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoc3RhdGljX2Nhc3Q8ZmxvYXQ+KHZhbHVlKSk7
CiB9CiAKLXZvaWQgcGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQs
IEdQYXJhbVNwZWMgKnBzcGVjLCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVy
KQotewotICAgIGNvbnRyb2xsZXItPnZvbHVtZUNoYW5nZWQoKTsKLX0KIAotdm9pZCBwbGF5ZXJN
dXRlQ2hhbmdlZENhbGxiYWNrKEdPYmplY3QgKmVsZW1lbnQsIEdQYXJhbVNwZWMgKnBzcGVjLCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKiBjb250cm9sbGVyKQotewotICAgIGNvbnRyb2xsZXIt
Pm11dGVDaGFuZ2VkKCk7Ci19Ci0KLUZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXIoKQotICAgIDogbV9odWRUaW1lb3V0SWQoMCkKK0Z1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHdGs6OkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsoTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyKiBwbGF5ZXIpCisgICAgOiBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyR1N0cmVhbWVyKHBsYXllcikKKyAgICAsIG1faHVkVGltZW91dElkKDApCiAgICAgLCBtX3By
b2dyZXNzQmFyVXBkYXRlSWQoMCkKICAgICAsIG1fc2Vla0xvY2soZmFsc2UpCiAgICAgLCBtX3dp
bmRvdygwKQogICAgICwgbV9odWRXaW5kb3coMCkKKyAgICAsIG1fa2V5UHJlc3NTaWduYWxIYW5k
bGVyKDApCisgICAgLCBtX2Rlc3Ryb3lTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX2lzQWN0aXZl
U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9tb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyKDApCisg
ICAgLCBtX2NvbmZpZ3VyZUV2ZW50U2lnbmFsSGFuZGxlcigwKQorICAgICwgbV9odWRNb3Rpb25O
b3RpZnlTaWduYWxIYW5kbGVyKDApCisgICAgLCBtX3RpbWVTY2FsZUJ1dHRvblByZXNzZWRTaWdu
YWxIYW5kbGVyKDApCisgICAgLCBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2lnbmFsSGFuZGxl
cigwKQorICAgICwgbV9wbGF5QWN0aW9uQWN0aXZhdGVTaWduYWxIYW5kbGVyKDApCisgICAgLCBt
X2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIoMCkKIHsKIH0KIAotRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlcjo6fkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKQotewot
ICAgIGV4aXRGdWxsc2NyZWVuKCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxl
cjo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKLXsKLSAg
ICBpZiAobWVkaWFFbGVtZW50ID09IG1fbWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0K
LSAgICBtX21lZGlhRWxlbWVudCA9IG1lZGlhRWxlbWVudDsKLSAgICBpZiAoIW1fbWVkaWFFbGVt
ZW50KSB7Ci0gICAgICAgIC8vIENhbid0IGRvIGZ1bGwtc2NyZWVuLCBqdXN0IGdldCBvdXQKLSAg
ICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKLSAgICB9Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCkKK3ZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6Z3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmln
dXJlKiBldmVudCkKIHsKICAgICB1cGRhdGVIdWRQb3NpdGlvbigpOwogfQogCi12b2lkIEZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKK3ZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0azo6c2hvd0h1ZChib29sIGF1dG9IaWRlKQogewogICAgIGlm
ICghbV9odWRXaW5kb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTE5Miw3ICsxNzcsNyBAQCB2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNob3dIdWQoYm9vbCBhdXRvSGlkZSkKICAgICAg
ICAgbV9odWRUaW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkKEhVRF9BVVRPX0hJREVfSU5URVJWQUws
IHJlaW50ZXJwcmV0X2Nhc3Q8R1NvdXJjZUZ1bmM+KGhpZGVIdWRDYWxsYmFjayksIHRoaXMpOwog
fQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmhpZGVIdWQoKQordm9pZCBGdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjpoaWRlSHVkKCkKIHsKICAgICBpZiAobV9odWRUaW1l
b3V0SWQpIHsKICAgICAgICAgZ19zb3VyY2VfcmVtb3ZlKG1faHVkVGltZW91dElkKTsKQEAgLTIy
MiwxMiArMjA3LDEwIEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6aGlkZUh1ZCgp
CiAgICAgfQogfQogCi1zdGF0aWMgZ2Jvb2xlYW4gb25GdWxsc2NyZWVuR3RrS2V5UHJlc3NFdmVu
dChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRXZlbnRLZXkqIGV2ZW50LCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyKiBjb250cm9sbGVyKQorc3RhdGljIGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0tl
eVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50S2V5KiBldmVudCwgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlckd0ayogY29udHJvbGxlcikKIHsKICAgICBzd2l0Y2ggKGV2ZW50
LT5rZXl2YWwpIHsKICAgICBjYXNlIEdES19Fc2NhcGU6Ci0gICAgY2FzZSAnZic6Ci0gICAgY2Fz
ZSAnRic6CiAgICAgICAgIGNvbnRyb2xsZXItPmV4aXRPblVzZXJSZXF1ZXN0KCk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgR0RLX3NwYWNlOgpAQCAtMjM1LDEyICsyMTgsMTAgQEAgc3RhdGlj
IGdib29sZWFuIG9uRnVsbHNjcmVlbkd0a0tleVByZXNzRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQs
IEdka0V2ZW50S2V5KiBldmUKICAgICAgICAgY29udHJvbGxlci0+dG9nZ2xlUGxheSgpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIEdES19VcDoKLSAgICAgICAgLy8gdm9sdW1lIHVwCi0gICAg
ICAgIGNvbnRyb2xsZXItPnNldFZvbHVtZShjb250cm9sbGVyLT52b2x1bWUoKSArIFZPTFVNRV9V
UF9PRkZTRVQpOworICAgICAgICBjb250cm9sbGVyLT5pbmNyZWFzZVZvbHVtZSgpOwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIEdES19Eb3duOgotICAgICAgICAvLyB2b2x1bWUgZG93bgotICAg
ICAgICBjb250cm9sbGVyLT5zZXRWb2x1bWUoY29udHJvbGxlci0+dm9sdW1lKCkgLSBWT0xVTUVf
RE9XTl9PRkZTRVQpOworICAgICAgICBjb250cm9sbGVyLT5kZWNyZWFzZVZvbHVtZSgpOwogICAg
ICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKQEAgLTI0OSwyNSArMjMw
LDEwIEBAIHN0YXRpYyBnYm9vbGVhbiBvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KEd0a1dp
ZGdldCogd2lkZ2V0LCBHZGtFdmVudEtleSogZXZlCiAgICAgcmV0dXJuIFRSVUU7CiB9CiAKLQot
dm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjplbnRlckZ1bGxzY3JlZW4oKQordm9pZCBG
dWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrOjppbml0aWFsaXplV2luZG93KCkKIHsKLSAgICBp
ZiAoIW1fbWVkaWFFbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAobV9tZWRpYUVs
ZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS50eXBlICE9IFdlYkNvcmU6OlBsYXRmb3JtTWVkaWE6OkdT
dHJlYW1lckdXb3JsZFR5cGUpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fZ3N0cmVhbWVyR1dv
cmxkID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEoKS5tZWRpYS5nc3RyZWFtZXJHV29y
bGQ7Ci0gICAgaWYgKCFtX2dzdHJlYW1lckdXb3JsZC0+ZW50ZXJGdWxsc2NyZWVuKCkpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIG1fd2luZG93ID0gcmVpbnRlcnByZXRfY2FzdDxHdGtXaWRnZXQq
PihtX2dzdHJlYW1lckdXb3JsZC0+cGxhdGZvcm1WaWRlb1dpbmRvdygpLT53aW5kb3coKSk7CiAK
LSAgICBHc3RFbGVtZW50KiBwaXBlbGluZSA9IG1fZ3N0cmVhbWVyR1dvcmxkLT5waXBlbGluZSgp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QocGlwZWxpbmUsICJub3RpZnk6OnZvbHVtZSIsIEdfQ0FM
TEJBQ0socGxheWVyVm9sdW1lQ2hhbmdlZENhbGxiYWNrKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxf
Y29ubmVjdChwaXBlbGluZSwgIm5vdGlmeTo6bXV0ZSIsIEdfQ0FMTEJBQ0socGxheWVyTXV0ZUNo
YW5nZWRDYWxsYmFjayksIHRoaXMpOwotCiAgICAgaWYgKCFtX2h1ZFdpbmRvdykKICAgICAgICAg
Y3JlYXRlSHVkKCk7CiAKQEAgLTI4MSw5ICsyNDcsOSBAQCB2b2lkIEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmVudGVyRnVsbHNjcmVlbigpCiAjZW5kaWYKICAgICBndGtfd2lkZ2V0X3NldF9k
b3VibGVfYnVmZmVyZWQobV93aW5kb3csIEZBTFNFKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
bV93aW5kb3csICJrZXktcHJlc3MtZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0tl
eVByZXNzRXZlbnQpLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAiZGVz
dHJveSIsIEdfQ0FMTEJBQ0sob25GdWxsc2NyZWVuR3RrRGVzdHJveSksIHRoaXMpOwotICAgIGdf
c2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJub3RpZnk6OmlzLWFjdGl2ZSIsIEdfQ0FMTEJBQ0so
b25GdWxsc2NyZWVuR3RrQWN0aXZlTm90aWZpY2F0aW9uKSwgdGhpcyk7CisgICAgbV9rZXlQcmVz
c1NpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAia2V5LXByZXNzLWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Cisg
ICAgbV9kZXN0cm95U2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJk
ZXN0cm95IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7CisgICAg
bV9pc0FjdGl2ZVNpZ25hbEhhbmRsZXIgPSBnX3NpZ25hbF9jb25uZWN0KG1fd2luZG93LCAibm90
aWZ5Ojppcy1hY3RpdmUiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a0FjdGl2ZU5vdGlmaWNh
dGlvbiksIHRoaXMpOwogCiAgICAgZ3RrX3dpZGdldF9zaG93X2FsbChtX3dpbmRvdyk7CiAKQEAg
LTI5MSwxNCArMjU3LDE0IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW50ZXJG
dWxsc2NyZWVuKCkKICAgICBHUmVmUHRyPEdka0N1cnNvcj4gY3Vyc29yKGFkb3B0R1JlZihibGFu
a0N1cnNvcigpKSk7CiAgICAgZ2RrX3dpbmRvd19zZXRfY3Vyc29yKHdpbmRvdywgY3Vyc29yLmdl
dCgpKTsKIAotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJtb3Rpb24tbm90aWZ5LWV2
ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMp
OwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV93aW5kb3csICJjb25maWd1cmUtZXZlbnQiLCBHX0NB
TExCQUNLKG9uRnVsbHNjcmVlbkd0a0NvbmZpZ3VyZUV2ZW50KSwgdGhpcyk7CisgICAgbV9tb3Rp
b25Ob3RpZnlTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVjdChtX3dpbmRvdywgIm1vdGlv
bi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2
ZW50KSwgdGhpcyk7CisgICAgbV9jb25maWd1cmVFdmVudFNpZ25hbEhhbmRsZXIgPSBnX3NpZ25h
bF9jb25uZWN0KG1fd2luZG93LCAiY29uZmlndXJlLWV2ZW50IiwgR19DQUxMQkFDSyhvbkZ1bGxz
Y3JlZW5HdGtDb25maWd1cmVFdmVudCksIHRoaXMpOwogCiAgICAgZ3RrX3dpbmRvd19mdWxsc2Ny
ZWVuKEdUS19XSU5ET1cobV93aW5kb3cpKTsKICAgICBzaG93SHVkKHRydWUpOwogfQogCi12b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKK3ZvaWQgRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6dXBkYXRlSHVkUG9zaXRpb24oKQogewogICAgIGlm
ICghbV9odWRXaW5kb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTMwNyw4ICsyNzMsNyBAQCB2b2lk
IEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnVwZGF0ZUh1ZFBvc2l0aW9uKCkKICAgICBHZGtT
Y3JlZW4qIHNjcmVlbiA9IGd0a193aW5kb3dfZ2V0X3NjcmVlbihHVEtfV0lORE9XKG1fd2luZG93
KSk7CiAgICAgR2RrV2luZG93KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cobV93aW5k
b3cpOwogICAgIEdka1JlY3RhbmdsZSBmdWxsc2NyZWVuUmVjdGFuZ2xlOwotICAgIGdka19zY3Jl
ZW5fZ2V0X21vbml0b3JfZ2VvbWV0cnkoc2NyZWVuLCBnZGtfc2NyZWVuX2dldF9tb25pdG9yX2F0
X3dpbmRvdyhzY3JlZW4sIHdpbmRvdyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAmZnVsbHNjcmVlblJlY3RhbmdsZSk7CisgICAgZ2RrX3NjcmVlbl9nZXRfbW9uaXRvcl9n
ZW9tZXRyeShzY3JlZW4sIGdka19zY3JlZW5fZ2V0X21vbml0b3JfYXRfd2luZG93KHNjcmVlbiwg
d2luZG93KSwgJmZ1bGxzY3JlZW5SZWN0YW5nbGUpOwogCiAgICAgLy8gR2V0IHRoZSBwb3B1cCB3
aW5kb3cgc2l6ZS4KICAgICBpbnQgaHVkV2lkdGgsIGh1ZEhlaWdodDsKQEAgLTMxOCwyOCArMjgz
LDI2IEBAIHZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dXBkYXRlSHVkUG9zaXRpb24o
KQogICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBmdWxsc2Ny
ZWVuUmVjdGFuZ2xlLndpZHRoLCBodWRIZWlnaHQpOwogCiAgICAgLy8gTW92ZSB0aGUgaHVkIHRv
IHRoZSBib3R0b20gb2YgdGhlIHNjcmVlbi4KLSAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRP
VyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0YW5nbGUueCwKLSAgICAgICAgICAgICAgICAg
ICAgZnVsbHNjcmVlblJlY3RhbmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xlLnkgLSBo
dWRIZWlnaHQpOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4aXRPblVz
ZXJSZXF1ZXN0KCkKLXsKLSAgICBtX21lZGlhRWxlbWVudC0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAg
ICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyhtX2h1ZFdpbmRvdyksIGZ1bGxzY3JlZW5SZWN0
YW5nbGUueCwgZnVsbHNjcmVlblJlY3RhbmdsZS5oZWlnaHQgKyBmdWxsc2NyZWVuUmVjdGFuZ2xl
LnkgLSBodWRIZWlnaHQpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmV4
aXRGdWxsc2NyZWVuKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6ZGVzdHJv
eVdpbmRvdygpCiB7CiAgICAgaWYgKCFtX2h1ZFdpbmRvdykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtLZXlQcmVzc0V2ZW50KSwgdGhpcyk7Ci0g
ICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtEZXN0cm95KSwgdGhpcyk7Ci0gICAgZ19z
aWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jKG1fd2luZG93LCByZWludGVycHJldF9j
YXN0PHZvaWQqPihvbkZ1bGxzY3JlZW5HdGtNb3Rpb25Ob3RpZnlFdmVudCksIHRoaXMpOwotICAg
IGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhtX3dpbmRvdywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3RrQ29uZmlndXJlRXZlbnQpLCB0aGlzKTsKLQot
ICAgIEdzdEVsZW1lbnQqIHBpcGVsaW5lID0gbV9tZWRpYUVsZW1lbnQtPnBsYXRmb3JtTWVkaWEo
KS5tZWRpYS5nc3RyZWFtZXJHV29ybGQtPnBpcGVsaW5lKCk7Ci0gICAgZ19zaWduYWxfaGFuZGxl
cnNfZGlzY29ubmVjdF9ieV9mdW5jKHBpcGVsaW5lLCByZWludGVycHJldF9jYXN0PHZvaWQqPihw
bGF5ZXJWb2x1bWVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKLSAgICBnX3NpZ25hbF9oYW5kbGVy
c19kaXNjb25uZWN0X2J5X2Z1bmMocGlwZWxpbmUsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHBs
YXllck11dGVDaGFuZ2VkQ2FsbGJhY2spLCB0aGlzKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rp
c2Nvbm5lY3QobV93aW5kb3csIG1fa2V5UHJlc3NTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV93aW5kb3csIG1fZGVzdHJveVNpZ25hbEhhbmRsZXIpOwor
ICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dpbmRvdywgbV9pc0FjdGl2ZVNpZ25h
bEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3dpbmRvdywgbV9t
b3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5l
Y3QobV93aW5kb3csIG1fY29uZmlndXJlRXZlbnRTaWduYWxIYW5kbGVyKTsKKyAgICBnX3NpZ25h
bF9oYW5kbGVyX2Rpc2Nvbm5lY3QobV9odWRXaW5kb3csIG1faHVkTW90aW9uTm90aWZ5U2lnbmFs
SGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0KG1fdGltZUhTY2FsZSwg
bV90aW1lU2NhbGVCdXR0b25QcmVzc2VkU2lnbmFsSGFuZGxlcik7CisgICAgZ19zaWduYWxfaGFu
ZGxlcl9kaXNjb25uZWN0KG1fdGltZUhTY2FsZSwgbV90aW1lU2NhbGVCdXR0b25SZWxlYXNlZFNp
Z25hbEhhbmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX3RpbWVIU2Nh
bGUsIG1faHNjYWxlVXBkYXRlSWQpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCht
X3ZvbHVtZUJ1dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7CisgICAgZ19zaWduYWxfaGFuZGxlcl9k
aXNjb25uZWN0KG1fcGxheVBhdXNlQWN0aW9uLCBtX3BsYXlBY3Rpb25BY3RpdmF0ZVNpZ25hbEhh
bmRsZXIpOworICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdChtX2V4aXRGdWxsc2NyZWVu
QWN0aW9uLCBtX2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIpOwogCiAg
ICAgaWYgKG1faHVkVGltZW91dElkKSB7CiAgICAgICAgIGdfc291cmNlX3JlbW92ZShtX2h1ZFRp
bWVvdXRJZCk7CkBAIC0zNTEsMTU4ICszMTQsNTggQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250
cm9sbGVyOjpleGl0RnVsbHNjcmVlbigpCiAgICAgICAgIG1fcHJvZ3Jlc3NCYXJVcGRhdGVJZCA9
IDA7CiAgICAgfQogCi0gICAgaWYgKG1fbWVkaWFFbGVtZW50LT5wbGF0Zm9ybU1lZGlhKCkudHlw
ZSA9PSBXZWJDb3JlOjpQbGF0Zm9ybU1lZGlhOjpHU3RyZWFtZXJHV29ybGRUeXBlKQotICAgICAg
ICBtX21lZGlhRWxlbWVudC0+cGxhdGZvcm1NZWRpYSgpLm1lZGlhLmdzdHJlYW1lckdXb3JsZC0+
ZXhpdEZ1bGxzY3JlZW4oKTsKLQogICAgIGd0a193aWRnZXRfaGlkZShtX3dpbmRvdyk7CiAKLSAg
ICBndGtfd2lkZ2V0X2Rlc3Ryb3kobV9odWRXaW5kb3cpOworICAgIGlmIChtX2h1ZFdpbmRvdykK
KyAgICAgICAgZ3RrX3dpZGdldF9kZXN0cm95KG1faHVkV2luZG93KTsKICAgICBtX2h1ZFdpbmRv
dyA9IDA7CiB9CiAKLWJvb2wgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6Y2FuUGxheSgpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ICYmIG1fbWVkaWFFbGVtZW50LT5jYW5Q
bGF5KCk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGxheSgpCi17Ci0g
ICAgaWYgKG1fbWVkaWFFbGVtZW50KQotICAgICAgICBtX21lZGlhRWxlbWVudC0+cGxheSgpOwot
Ci0gICAgcGxheVN0YXRlQ2hhbmdlZCgpOwotICAgIHNob3dIdWQodHJ1ZSk7Ci19Ci0KLXZvaWQg
RnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6cGF1c2UoKQotewotICAgIGlmIChtX21lZGlhRWxl
bWVudCkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnBhdXNlKCk7Ci0KLSAgICBwbGF5U3RhdGVD
aGFuZ2VkKCk7Ci0gICAgc2hvd0h1ZChmYWxzZSk7Ci19Ci0KLXZvaWQgRnVsbHNjcmVlblZpZGVv
Q29udHJvbGxlcjo6cGxheVN0YXRlQ2hhbmdlZCgpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXJHdGs6OnBsYXlTdGF0ZUNoYW5nZWQoKQogewotICAgIGlmIChjYW5QbGF5KCkpCisgICAg
aWYgKG1fY2xpZW50LT5tZWRpYVBsYXllcklzUGF1c2VkKCkpCiAgICAgICAgIGdfb2JqZWN0X3Nl
dChtX3BsYXlQYXVzZUFjdGlvbiwgInRvb2x0aXAiLCBfKCJQbGF5IiksICJpY29uLW5hbWUiLCBQ
TEFZX0lDT05fTkFNRSwgTlVMTCk7CiAgICAgZWxzZQogICAgICAgICBnX29iamVjdF9zZXQobV9w
bGF5UGF1c2VBY3Rpb24sICJ0b29sdGlwIiwgXygiUGF1c2UiKSwgImljb24tbmFtZSIsIFBBVVNF
X0lDT05fTkFNRSwgTlVMTCk7CisgICAgc2hvd0h1ZCghbV9jbGllbnQtPm1lZGlhUGxheWVySXNQ
YXVzZWQoKSk7CiB9CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dG9nZ2xlUGxh
eSgpCi17Ci0gICAgaWYgKGNhblBsYXkoKSkKLSAgICAgICAgcGxheSgpOwotICAgIGVsc2UKLSAg
ICAgICAgcGF1c2UoKTsKLX0KLQotZmxvYXQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6dm9s
dW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+dm9sdW1lKCkgOiAwOwotfQotCi1ib29sIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6Om11
dGVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQgPyBtX21lZGlhRWxlbWVu
dC0+bXV0ZWQoKSA6IGZhbHNlOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6
OnNldFZvbHVtZShmbG9hdCB2b2x1bWUpCi17Ci0gICAgaWYgKHZvbHVtZSA8IDAuMCB8fCB2b2x1
bWUgPiAxLjApCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChtX21lZGlhRWxlbWVudCkgewot
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Vm9s
dW1lKHZvbHVtZSwgZWMpOwotICAgIH0KLX0KLQotdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9s
bGVyOjp2b2x1bWVDaGFuZ2VkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6
dm9sdW1lQ2hhbmdlZCgpCiB7CiAgICAgZ19zaWduYWxfaGFuZGxlcl9ibG9jayhtX3ZvbHVtZUJ1
dHRvbiwgbV92b2x1bWVVcGRhdGVJZCk7Ci0gICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUo
R1RLX1NDQUxFX0JVVFRPTihtX3ZvbHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBndGtfc2Nh
bGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9w
bGF5ZXItPnZvbHVtZSgpKTsKICAgICBnX3NpZ25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVC
dXR0b24sIG1fdm9sdW1lVXBkYXRlSWQpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRy
b2xsZXI6Om11dGVDaGFuZ2VkKCkKK3ZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6
bXV0ZUNoYW5nZWQoKQogewogICAgIGdfc2lnbmFsX2hhbmRsZXJfYmxvY2sobV92b2x1bWVCdXR0
b24sIG1fdm9sdW1lVXBkYXRlSWQpOwotICAgIGd0a19zY2FsZV9idXR0b25fc2V0X3ZhbHVlKEdU
S19TQ0FMRV9CVVRUT04obV92b2x1bWVCdXR0b24pLCBtdXRlZCgpID8gMCA6IHZvbHVtZSgpKTsK
KyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShHVEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1l
QnV0dG9uKSwgbV9wbGF5ZXItPm11dGVkKCkgPyAwIDogbV9wbGF5ZXItPnZvbHVtZSgpKTsKICAg
ICBnX3NpZ25hbF9oYW5kbGVyX3VuYmxvY2sobV92b2x1bWVCdXR0b24sIG1fdm9sdW1lVXBkYXRl
SWQpOwogfQogCi1mbG9hdCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjdXJyZW50VGltZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fbWVkaWFFbGVtZW50ID8gbV9tZWRpYUVsZW1lbnQtPmN1
cnJlbnRUaW1lKCkgOiAwOwotfQotCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OnNl
dEN1cnJlbnRUaW1lKGZsb2F0IHZhbHVlKQotewotICAgIGlmIChtX21lZGlhRWxlbWVudCkgewot
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjOwotICAgICAgICBtX21lZGlhRWxlbWVudC0+c2V0Q3Vy
cmVudFRpbWUodmFsdWUsIGVjKTsKLSAgICB9Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXI6OmR1cmF0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9tZWRpYUVsZW1lbnQg
PyBtX21lZGlhRWxlbWVudC0+ZHVyYXRpb24oKSA6IDA7Ci19Ci0KLWZsb2F0IEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXI6OnBlcmNlbnRMb2FkZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX21l
ZGlhRWxlbWVudCA/IG1fbWVkaWFFbGVtZW50LT5wZXJjZW50TG9hZGVkKCkgOiAwOwotfQotCi12
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmJlZ2luU2VlaygpCit2b2lkIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmJlZ2luU2VlaygpCiB7CiAgICAgbV9zZWVrTG9jayA9IHRy
dWU7Ci0KLSAgICBpZiAobV9tZWRpYUVsZW1lbnQpCi0gICAgICAgIG1fbWVkaWFFbGVtZW50LT5i
ZWdpblNjcnViYmluZygpOwogfQogCi12b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXI6OmRv
U2VlaygpCit2b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmRvU2VlaygpCiB7CiAg
ICAgaWYgKCFtX3NlZWtMb2NrKQotICAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm47CiAK
LSAgICBzZXRDdXJyZW50VGltZShndGtfcmFuZ2VfZ2V0X3ZhbHVlKEdUS19SQU5HRShtX3RpbWVI
U2NhbGUpKSpkdXJhdGlvbigpIC8gMTAwKTsKKyAgICBtX3BsYXllci0+c2VlayhndGtfcmFuZ2Vf
Z2V0X3ZhbHVlKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpKSptX3BsYXllci0+ZHVyYXRpb24oKSAv
IDEwMCk7CiB9CiAKLXZvaWQgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcjo6ZW5kU2VlaygpCit2
b2lkIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs6OmVuZFNlZWsoKQogewotICAgIGlmICht
X21lZGlhRWxlbWVudCkKLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPmVuZFNjcnViYmluZygpOwot
CiAgICAgbV9zZWVrTG9jayA9IGZhbHNlOwogfQogCi1zdGF0aWMgU3RyaW5nIHRpbWVUb1N0cmlu
ZyhmbG9hdCB0aW1lKQorZ2Jvb2xlYW4gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0azo6dXBk
YXRlSHVkUHJvZ3Jlc3NCYXIoKQogewotICAgIGlmICghaXNmaW5pdGUodGltZSkpCi0gICAgICAg
IHRpbWUgPSAwOwotICAgIGludCBzZWNvbmRzID0gZmFic2YodGltZSk7Ci0gICAgaW50IGhvdXJz
ID0gc2Vjb25kcyAvICg2MCAqIDYwKTsKLSAgICBpbnQgbWludXRlcyA9IChzZWNvbmRzIC8gNjAp
ICUgNjA7Ci0gICAgc2Vjb25kcyAlPSA2MDsKLQotICAgIGlmIChob3VycykgewotICAgICAgICBp
ZiAoaG91cnMgPiA5KQotICAgICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyUwMmQ6
JTAyZDolMDJkIiwgKHRpbWUgPCAwID8gIi0iIDogIiIpLCBob3VycywgbWludXRlcywgc2Vjb25k
cyk7Ci0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDFkOiUwMmQ6JTAyZCIsICh0
aW1lIDwgMCA/ICItIiA6ICIiKSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMpOwotICAgIH0KLQot
ICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMlMDJkOiUwMmQiLCAodGltZSA8IDAgPyAiLSIg
OiAiIiksIG1pbnV0ZXMsIHNlY29uZHMpOwotfQotCi1nYm9vbGVhbiBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjp1cGRhdGVIdWRQcm9ncmVzc0JhcigpCi17Ci0gICAgZmxvYXQgbWVkaWFEdXJh
dGlvbihkdXJhdGlvbigpKTsKLSAgICBmbG9hdCBtZWRpYVBvc2l0aW9uKGN1cnJlbnRUaW1lKCkp
OworICAgIGZsb2F0IG1lZGlhRHVyYXRpb24obV9wbGF5ZXItPmR1cmF0aW9uKCkpOworICAgIGZs
b2F0IG1lZGlhUG9zaXRpb24obV9wbGF5ZXItPmN1cnJlbnRUaW1lKCkpOwogCiAgICAgaWYgKCFt
X3NlZWtMb2NrKSB7CiAgICAgICAgIGdkb3VibGUgdmFsdWUgPSAwLjA7CkBAIC01MTQsMjIgKzM3
NywyMSBAQCBnYm9vbGVhbiBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjp1cGRhdGVIdWRQcm9n
cmVzc0JhcigpCiAgICAgICAgIGd0a19hZGp1c3RtZW50X3NldF92YWx1ZShhZGp1c3RtZW50LCB2
YWx1ZSk7CiAgICAgfQogCi0gICAgZ3RrX3JhbmdlX3NldF9maWxsX2xldmVsKEdUS19SQU5HRSht
X3RpbWVIU2NhbGUpLCBwZXJjZW50TG9hZGVkKCkqIDEwMCk7CisgICAgZ3RrX3JhbmdlX3NldF9m
aWxsX2xldmVsKEdUS19SQU5HRShtX3RpbWVIU2NhbGUpLCAobV9wbGF5ZXItPm1heFRpbWVMb2Fk
ZWQoKSAvIG1lZGlhRHVyYXRpb24pKiAxMDApOwogCi0gICAgZ2NoYXIqIGxhYmVsID0gZ19zdHJk
dXBfcHJpbnRmKCIlcyAvICVzIiwgdGltZVRvU3RyaW5nKG1lZGlhUG9zaXRpb24pLnV0ZjgoKS5k
YXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb1N0cmluZyht
ZWRpYUR1cmF0aW9uKS51dGY4KCkuZGF0YSgpKTsKKyAgICBnY2hhciogbGFiZWwgPSBnX3N0cmR1
cF9wcmludGYoIiVzIC8gJXMiLCB0aW1lVG9TdHJpbmcobWVkaWFQb3NpdGlvbikudXRmOCgpLmRh
dGEoKSwgdGltZVRvU3RyaW5nKG1lZGlhRHVyYXRpb24pLnV0ZjgoKS5kYXRhKCkpOwogICAgIGd0
a19sYWJlbF9zZXRfdGV4dChHVEtfTEFCRUwobV90aW1lTGFiZWwpLCBsYWJlbCk7CiAgICAgZ19m
cmVlKGxhYmVsKTsKICAgICByZXR1cm4gVFJVRTsKIH0KIAotdm9pZCBGdWxsc2NyZWVuVmlkZW9D
b250cm9sbGVyOjpjcmVhdGVIdWQoKQordm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3Rr
OjpjcmVhdGVIdWQoKQogewogICAgIG1faHVkV2luZG93ID0gZ3RrX3dpbmRvd19uZXcoR1RLX1dJ
TkRPV19QT1BVUCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZ3Jhdml0eShHVEtfV0lORE9XKG1faHVk
V2luZG93KSwgR0RLX0dSQVZJVFlfU09VVEhfV0VTVCk7CiAgICAgZ3RrX3dpbmRvd19zZXRfdHlw
ZV9oaW50KEdUS19XSU5ET1cobV9odWRXaW5kb3cpLCBHREtfV0lORE9XX1RZUEVfSElOVF9OT1JN
QUwpOwogCi0gICAgZ19zaWduYWxfY29ubmVjdChtX2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnkt
ZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNjcmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhp
cyk7CisgICAgbV9odWRNb3Rpb25Ob3RpZnlTaWduYWxIYW5kbGVyID0gZ19zaWduYWxfY29ubmVj
dChtX2h1ZFdpbmRvdywgIm1vdGlvbi1ub3RpZnktZXZlbnQiLCBHX0NBTExCQUNLKG9uRnVsbHNj
cmVlbkd0a01vdGlvbk5vdGlmeUV2ZW50KSwgdGhpcyk7CiAKICNpZmRlZiBHVEtfQVBJX1ZFUlNJ
T05fMgogICAgIEd0a1dpZGdldCogaGJveCA9IGd0a19oYm94X25ldyhGQUxTRSwgNCk7CkBAIC01
MzksOSArNDAxLDcgQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVhdGVIdWQo
KQogICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIobV9odWRXaW5kb3cpLCBoYm94
KTsKIAogICAgIG1fcGxheVBhdXNlQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoInBsYXkiLCBfKCJQ
bGF5IC8gUGF1c2UiKSwgXygiUGxheSBvciBwYXVzZSB0aGUgbWVkaWEiKSwgUEFVU0VfSUNPTl9O
QU1FKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fcGxheVBhdXNlQWN0aW9uLCAiYWN0aXZhdGUi
LCBHX0NBTExCQUNLKHRvZ2dsZVBsYXlQYXVzZUFjdGl2YXRlZCksIHRoaXMpOwotCi0gICAgcGxh
eVN0YXRlQ2hhbmdlZCgpOworICAgIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSGFuZGxlciA9
IGdfc2lnbmFsX2Nvbm5lY3QobV9wbGF5UGF1c2VBY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJB
Q0sodG9nZ2xlUGxheVBhdXNlQWN0aXZhdGVkKSwgdGhpcyk7CiAKICAgICBHdGtXaWRnZXQqIGl0
ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0obV9wbGF5UGF1c2VBY3Rpb24pOwogICAg
IGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhib3gpLCBpdGVtLCBGQUxTRSwgVFJVRSwgMCk7
CkBAIC01NTcsOCArNDE3LDggQEAgdm9pZCBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOjpjcmVh
dGVIdWQoKQogI2VuZGlmCiAgICAgZ3RrX3NjYWxlX3NldF9kcmF3X3ZhbHVlKEdUS19TQ0FMRSht
X3RpbWVIU2NhbGUpLCBGQUxTRSk7CiAgICAgZ3RrX3JhbmdlX3NldF9zaG93X2ZpbGxfbGV2ZWwo
R1RLX1JBTkdFKG1fdGltZUhTY2FsZSksIFRSVUUpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QobV90
aW1lSFNjYWxlLCAiYnV0dG9uLXByZXNzLWV2ZW50IiwgR19DQUxMQkFDSyh0aW1lU2NhbGVCdXR0
b25QcmVzc2VkKSwgdGhpcyk7Ci0gICAgZ19zaWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJi
dXR0b24tcmVsZWFzZS1ldmVudCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlQnV0dG9uUmVsZWFzZWQp
LCB0aGlzKTsKKyAgICBtX3RpbWVTY2FsZUJ1dHRvblByZXNzZWRTaWduYWxIYW5kbGVyID0gZ19z
aWduYWxfY29ubmVjdChtX3RpbWVIU2NhbGUsICJidXR0b24tcHJlc3MtZXZlbnQiLCBHX0NBTExC
QUNLKHRpbWVTY2FsZUJ1dHRvblByZXNzZWQpLCB0aGlzKTsKKyAgICBtX3RpbWVTY2FsZUJ1dHRv
blJlbGVhc2VkU2lnbmFsSGFuZGxlciA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1lSFNjYWxlLCAi
YnV0dG9uLXJlbGVhc2UtZXZlbnQiLCBHX0NBTExCQUNLKHRpbWVTY2FsZUJ1dHRvblJlbGVhc2Vk
KSwgdGhpcyk7CiAgICAgbV9oc2NhbGVVcGRhdGVJZCA9IGdfc2lnbmFsX2Nvbm5lY3QobV90aW1l
SFNjYWxlLCAidmFsdWUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGltZVNjYWxlVmFsdWVDaGFuZ2Vk
KSwgdGhpcyk7CiAKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94KSwgbV90aW1l
SFNjYWxlLCBUUlVFLCBUUlVFLCAwKTsKQEAgLTU2OSwxOCArNDI5LDE5IEBAIHZvaWQgRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlcjo6Y3JlYXRlSHVkKCkKICAgICAvLyBWb2x1bWUgYnV0dG9uLgog
ICAgIG1fdm9sdW1lQnV0dG9uID0gZ3RrX3ZvbHVtZV9idXR0b25fbmV3KCk7CiAgICAgZ3RrX2Jv
eF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIG1fdm9sdW1lQnV0dG9uLCBGQUxTRSwgVFJVRSwg
MCk7Ci0gICAgZ3RrX3NjYWxlX2J1dHRvbl9zZXRfdmFsdWUoR1RLX1NDQUxFX0JVVFRPTihtX3Zv
bHVtZUJ1dHRvbiksIHZvbHVtZSgpKTsKKyAgICBndGtfc2NhbGVfYnV0dG9uX3NldF92YWx1ZShH
VEtfU0NBTEVfQlVUVE9OKG1fdm9sdW1lQnV0dG9uKSwgbV9wbGF5ZXItPnZvbHVtZSgpKTsKICAg
ICBtX3ZvbHVtZVVwZGF0ZUlkID0gZ19zaWduYWxfY29ubmVjdChtX3ZvbHVtZUJ1dHRvbiwgInZh
bHVlLWNoYW5nZWQiLCBHX0NBTExCQUNLKHZvbHVtZVZhbHVlQ2hhbmdlZCksIHRoaXMpOwogCi0K
ICAgICBtX2V4aXRGdWxsc2NyZWVuQWN0aW9uID0gZ3RrX2FjdGlvbl9uZXcoImV4aXQiLCBfKCJF
eGl0IEZ1bGxzY3JlZW4iKSwgXygiRXhpdCBmcm9tIGZ1bGxzY3JlZW4gbW9kZSIpLCBFWElUX0ZV
TExTQ1JFRU5fSUNPTl9OQU1FKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxzY3Jl
ZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQp
LCB0aGlzKTsKKyAgICBtX2V4aXRGdWxsY3JlZW5BY3Rpb25BY3RpdmF0ZVNpZ25hbEhhbmRsZXIg
PSBnX3NpZ25hbF9jb25uZWN0KG1fZXhpdEZ1bGxzY3JlZW5BY3Rpb24sICJhY3RpdmF0ZSIsIEdf
Q0FMTEJBQ0soZXhpdEZ1bGxzY3JlZW5BY3RpdmF0ZWQpLCB0aGlzKTsKICAgICBnX29iamVjdF9z
ZXQobV9leGl0RnVsbHNjcmVlbkFjdGlvbiwgImljb24tbmFtZSIsIEVYSVRfRlVMTFNDUkVFTl9J
Q09OX05BTUUsIE5VTEwpOwogICAgIGl0ZW0gPSBndGtfYWN0aW9uX2NyZWF0ZV90b29sX2l0ZW0o
bV9leGl0RnVsbHNjcmVlbkFjdGlvbik7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1go
aGJveCksIGl0ZW0sIEZBTFNFLCBUUlVFLCAwKTsKIAotCiAgICAgbV9wcm9ncmVzc0JhclVwZGF0
ZUlkID0gZ190aW1lb3V0X2FkZChQUk9HUkVTU19CQVJfVVBEQVRFX0lOVEVSVkFMLCByZWludGVy
cHJldF9jYXN0PEdTb3VyY2VGdW5jPihwcm9ncmVzc0JhclVwZGF0ZUNhbGxiYWNrKSwgdGhpcyk7
CisKKyAgICBwbGF5U3RhdGVDaGFuZ2VkKCk7CiB9CiAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3RrL0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGsuaApzaW1pbGFyaXR5IGluZGV4IDUz
JQpyZW5hbWUgZnJvbSBTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVu
VmlkZW9Db250cm9sbGVyLmgKcmVuYW1lIHRvIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgKaW5kZXggODE3YmMxOS4uOTE3
ZjI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNj
cmVlblZpZGVvQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrLmgKQEAgLTEsNSArMSw1IEBACiAv
KgotICogIENvcHlyaWdodCAoQykgMjAxMCBJZ2FsaWEgUy5MCisgKiAgQ29weXJpZ2h0IChDKSAy
MDEzIElnYWxpYSBTLkwKICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlv
dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNywzMiArMTcsMjcgQEAK
ICAqICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJfaAotI2RlZmluZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyX2gK
KyNpZm5kZWYgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCisjZGVmaW5lIEZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHdGtfaAogCi0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChH
U1RfQVBJX1ZFUlNJT05fMSkKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIAotI2luY2x1ZGUgIkdTdHJlYW1lckdXb3Js
ZC5oIgotI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKLSNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL2dvYmplY3QvR1JlZlB0ci5oPgorI2luY2x1ZGUgIkZ1bGxzY3Jl
ZW5WaWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIuaCIKIAotY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcik7Ci1wdWJsaWM6Ci0gICAgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlcigpOwotICAgIHZp
cnR1YWwgfkZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIoKTsKK25hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIHZvaWQgc2V0TWVkaWFFbGVtZW50KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQqKTsK
LSAgICBXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBtX21lZGlhRWxlbWVudC5nZXQoKTsgfQorLyogY2xhc3MgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlckdTdHJlYW1lcjsgKi8KKy8qIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjsgKi8KIAotICAgIHZvaWQgZ3RrQ29uZmlndXJlKEdka0V2ZW50Q29uZmlndXJlKiBldmVudCk7
CitjbGFzcyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3RrIDogcHVibGljIEZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXJHU3RyZWFtZXIgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRy
PEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJHdGs+IGNyZWF0ZShNZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIqIHBsYXllcikgeyByZXR1cm4gYWRvcHRQdHIobmV3IEZ1bGxzY3JlZW5WaWRlb0Nv
bnRyb2xsZXJHdGsocGxheWVyKSk7IH0KKyAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR3Rr
KE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciopOwogCi0gICAgdm9pZCBlbnRlckZ1bGxzY3Jl
ZW4oKTsKLSAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisgICAgdm9pZCBndGtDb25maWd1cmUo
R2RrRXZlbnRDb25maWd1cmUqKTsKKworICAgIHZvaWQgcGxheVN0YXRlQ2hhbmdlZCgpOwogCi0g
ICAgdm9pZCBleGl0T25Vc2VyUmVxdWVzdCgpOwotICAgIHZvaWQgdG9nZ2xlUGxheSgpOwogICAg
IHZvaWQgYmVnaW5TZWVrKCk7CiAgICAgdm9pZCBkb1NlZWsoKTsKICAgICB2b2lkIGVuZFNlZWso
KTsKQEAgLTUxLDMxICs0NiwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93SHVkKGJvb2wpOwog
ICAgIGdib29sZWFuIHVwZGF0ZUh1ZFByb2dyZXNzQmFyKCk7CiAKLSAgICBmbG9hdCB2b2x1bWUo
KSBjb25zdDsKLSAgICB2b2lkIHNldFZvbHVtZShmbG9hdCk7CiAgICAgdm9pZCB2b2x1bWVDaGFu
Z2VkKCk7CiAgICAgdm9pZCBtdXRlQ2hhbmdlZCgpOwogCiBwcml2YXRlOgotICAgIGJvb2wgY2Fu
UGxheSgpIGNvbnN0OwotICAgIHZvaWQgcGxheSgpOwotICAgIHZvaWQgcGF1c2UoKTsKLSAgICB2
b2lkIHBsYXlTdGF0ZUNoYW5nZWQoKTsKLQotICAgIGJvb2wgbXV0ZWQoKSBjb25zdDsKLQotICAg
IGZsb2F0IGN1cnJlbnRUaW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRDdXJyZW50VGltZShmbG9h
dCk7Ci0KLSAgICBmbG9hdCBkdXJhdGlvbigpIGNvbnN0OwotICAgIGZsb2F0IHBlcmNlbnRMb2Fk
ZWQoKSBjb25zdDsKKyAgICB2b2lkIGluaXRpYWxpemVXaW5kb3coKTsKKyAgICB2b2lkIGRlc3Ry
b3lXaW5kb3coKTsKIAogICAgIHZvaWQgY3JlYXRlSHVkKCk7CiAgICAgdm9pZCB1cGRhdGVIdWRQ
b3NpdGlvbigpOwogCi0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVk
aWFFbGVtZW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpHU3RyZWFtZXJHV29ybGQ+IG1fZ3N0cmVh
bWVyR1dvcmxkOwotCiAgICAgZ3VpbnQgbV9odWRUaW1lb3V0SWQ7CiAgICAgZ3VpbnQgbV9wcm9n
cmVzc0JhclVwZGF0ZUlkOwogICAgIGd1aW50IG1fcHJvZ3Jlc3NCYXJGaWxsVXBkYXRlSWQ7CkBA
IC04OSw4ICs2OSwyMCBAQCBwcml2YXRlOgogICAgIEd0a1dpZGdldCogbV90aW1lSFNjYWxlOwog
ICAgIEd0a1dpZGdldCogbV90aW1lTGFiZWw7CiAgICAgR3RrV2lkZ2V0KiBtX3ZvbHVtZUJ1dHRv
bjsKKworICAgIHVuc2lnbmVkIGxvbmcgbV9rZXlQcmVzc1NpZ25hbEhhbmRsZXI7CisgICAgdW5z
aWduZWQgbG9uZyBtX2Rlc3Ryb3lTaWduYWxIYW5kbGVyOworICAgIHVuc2lnbmVkIGxvbmcgbV9p
c0FjdGl2ZVNpZ25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX21vdGlvbk5vdGlmeVNp
Z25hbEhhbmRsZXI7CisgICAgdW5zaWduZWQgbG9uZyBtX2NvbmZpZ3VyZUV2ZW50U2lnbmFsSGFu
ZGxlcjsKKyAgICB1bnNpZ25lZCBsb25nIG1faHVkTW90aW9uTm90aWZ5U2lnbmFsSGFuZGxlcjsK
KyAgICB1bnNpZ25lZCBsb25nIG1fdGltZVNjYWxlQnV0dG9uUHJlc3NlZFNpZ25hbEhhbmRsZXI7
CisgICAgdW5zaWduZWQgbG9uZyBtX3RpbWVTY2FsZUJ1dHRvblJlbGVhc2VkU2lnbmFsSGFuZGxl
cjsKKyAgICB1bnNpZ25lZCBsb25nIG1fcGxheUFjdGlvbkFjdGl2YXRlU2lnbmFsSGFuZGxlcjsK
KyAgICB1bnNpZ25lZCBsb25nIG1fZXhpdEZ1bGxjcmVlbkFjdGlvbkFjdGl2YXRlU2lnbmFsSGFu
ZGxlcjsKIH07CiAKK30KICNlbmRpZgogCi0jZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJv
bGxlcl9oCisjZW5kaWYgLy8gRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlckd0a19oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cKaW5kZXggOGI1ZDJmNC4uMjZkMmFlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDMwIEBACisyMDEzLTAxLTIwICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNv
bT4KKworICAgICAgICBbR1RLXVtHU3RyZWFtZXJdIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXJH
dGsgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwNzM5OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJlbW92ZSB0aGUgRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlciBhcyBpdCBtb3Zl
ZCB0bworICAgICAgICBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyR1N0cmVhbWVyIGFuZCBpdHMg
R3RrIHN1YmNsYXNzIGluCisgICAgICAgIFdlYkNvcmUuIEhvb2sgaW4gTkFUSVZFX0ZVTExTQ1JF
RU5fVklERU8gaW4gdGhlIENocm9tZUNsaWVudCBpbgorICAgICAgICB0aGUgdHdvIHBvc3NpYmxl
IHNjZW5hcmlvcywgd2V0aGVyIEZVTExTQ1JFRU5fQVBJIGlzIGVuYWJsZWQgb3Igbm90LgorCisg
ICAgICAgICogR05VbWFrZWZpbGUuYW06IFJlbW92ZSBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVy
LgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVl
bkZvck5vZGUpOiBIb29rCisgICAgICAgIE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPIHN1cHBvcnQu
CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKTog
RGl0dG8KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50KTogRGl0dG8KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQpOiBEaXR0bworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEd0ay5oOgorICAgICAgICAoQ2hyb21lQ2xpZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9GdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOiBSZW1vdmUgRnVsbHNjcmVlblZpZGVvQ29u
dHJvbGxlciBzdXBwb3J0LgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3cHJpdmF0ZS5o
OiBEaXR0bworCiAyMDEzLTAxLTMwICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkx
MDAubmV0PgogCiAgICAgICAgIFtUZXhNYXBdIFJlbW92ZSBHcmFwaGljc0xheWVyIGluIFRleHR1
cmVNYXBwZXJMYXllci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0dOVW1ha2VmaWxl
LmFtIGIvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggODQwNjAzOC4uZjgy
MDM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KKysrIGIv
U291cmNlL1dlYktpdC9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTIxMCw4ICsyMTAsNiBAQCB3ZWJr
aXRndGtfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaCBcCiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVOZXR3b3JraW5nQ29udGV4dEd0ay5jcHAgXAogCVNvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsuaCBcCi0JU291cmNlL1dlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnVsbHNjcmVlblZpZGVvQ29udHJvbGxlci5jcHAgXAotCVNvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Z1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIuaCBc
CiAJU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvR2VvbG9jYXRpb25DbGllbnRHdGsu
Y3BwIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HZW9sb2NhdGlvbkNsaWVu
dEd0ay5oIFwKIAlTb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9HdGtBZGp1c3RtZW50
V2F0Y2hlci5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggMTRkOGNkZi4uNjcwZjY0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBA
IC03Nyw2ICs3NywxMCBAQAogI2luY2x1ZGUgIkRhdGFiYXNlTWFuYWdlci5oIgogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyNpbmNs
dWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODk2LDggKzkwMCw3IEBAIFBhc3NSZWZQdHI8
V2ViQ29yZTo6U2VhcmNoUG9wdXBNZW51PiBDaHJvbWVDbGllbnQ6OmNyZWF0ZVNlYXJjaFBvcHVw
TWVudShXZWJDb3JlCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTZWFyY2hQb3B1cE1lbnVHdGso
Y2xpZW50KSk7CiB9CiAKLSNpZiBFTkFCTEUoVklERU8pCi0KKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKIGJvb2wgQ2hyb21lQ2xpZW50OjpzdXBwb3J0
c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCiB7CiAgICAgcmV0dXJuIG5vZGUt
Pmhhc1RhZ05hbWUoSFRNTE5hbWVzOjp2aWRlb1RhZyk7CkBAIC05MDUsMTIgKzkwOCwyOCBAQCBi
b29sIENocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKiBu
b2RlKQogCiB2b2lkIENocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKiBu
b2RlKQogewotICAgIHdlYlZpZXdFbnRlckZ1bGxzY3JlZW4obV93ZWJWaWV3LCBub2RlKTsKKyAg
ICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIEhUTUxFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsKKyAgICBpZiAoZWxlbWVudCAmJiBl
bGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1l
ZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAg
ICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgbWVkaWFFbGVtZW50LT5wbGF5ZXIo
KS0+Y2FuRW50ZXJGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXll
cigpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB9CiB9CiAKIHZvaWQgQ2hyb21lQ2xpZW50Ojpl
eGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSogbm9kZSkKIHsKLSAgICB3ZWJWaWV3RXhpdEZ1bGxz
Y3JlZW4obV93ZWJWaWV3KTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAg
IEhUTUxFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihub2RlKTsK
KyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAg
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVs
ZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkpCisg
ICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnBsYXllcigpLT5leGl0RnVsbHNjcmVlbigpOworICAg
IH0KIH0KICNlbmRpZgogCkBAIC05NDksNiArOTY4LDE5IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpl
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVsZW1lbnQpCiAgICAg
aWYgKHJldHVyblZhbHVlKQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoVklERU8pICYm
IFVTRShOQVRJVkVfRlVMTFNDUkVFTl9WSURFTykKKyAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50
LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihlbGVtZW50KTsKKyAgICAgICAg
aWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkgJiYgbWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+Y2Fu
RW50ZXJGdWxsc2NyZWVuKCkpIHsKKyAgICAgICAgICAgIGVsZW1lbnQtPmRvY3VtZW50KCktPndl
YmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAg
bWVkaWFFbGVtZW50LT5wbGF5ZXIoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgICAgICBt
X2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgICAgIGVsZW1lbnQtPmRvY3Vt
ZW50KCktPndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCiAgICAgR3RrV2lkZ2V0KiB3
aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwog
ICAgIGlmICghd2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRvdykpCiAgICAgICAg
IHJldHVybjsKQEAgLTk3Niw2ICsxMDA4LDE5IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpleGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQoV2ViQ29yZTo6RWxlbWVudCopCiAgICAgaWYgKHJldHVyblZhbHVl
KQogICAgICAgICByZXR1cm47CiAKKyNpZiBFTkFCTEUoVklERU8pICYmIFVTRShOQVRJVkVfRlVM
TFNDUkVFTl9WSURFTykKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCAmJiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50LT5pc01lZGlhRWxlbWVudCgpKSB7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1l
bnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxs
U2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxl
bWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihtX2Z1bGxTY3JlZW5FbGVtZW50
LmdldCgpKTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+cGxheWVyKCkpIHsKKyAgICAgICAg
ICAgIG1lZGlhRWxlbWVudC0+cGxheWVyKCktPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7CisgICAgICAgICAgICBtX2Z1
bGxTY3JlZW5FbGVtZW50LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyNlbmRpZgorCiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwogICAgIEFTU0VSVCh3aWRnZXRJc09uc2NyZWVu
VG9wbGV2ZWxXaW5kb3cod2luZG93KSk7CiAgICAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVj
dF9ieV9mdW5jKHdpbmRvdywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ob25GdWxsc2NyZWVuR3Rr
S2V5UHJlc3NFdmVudCksIHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAppbmRleCAxZTkzMzFjLi5kYzJkOTUyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuaApA
QCAtMTM1LDcgKzEzNSw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIGJv
b2wgaGFzT3BlbmVkUG9wdXAoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPFBv
cHVwTWVudT4gY3JlYXRlUG9wdXBNZW51KFBvcHVwTWVudUNsaWVudCopIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2VhcmNoUG9wdXBNZW51PiBjcmVhdGVTZWFyY2hQb3B1cE1l
bnUoUG9wdXBNZW51Q2xpZW50KikgY29uc3Q7Ci0jaWYgRU5BQkxFKFZJREVPKQorI2lmIEVOQUJM
RShWSURFTykgJiYgVVNFKE5BVElWRV9GVUxMU0NSRUVOX1ZJREVPKQogICAgICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggOTJiNjUyNi4uODUxM2FhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNTMxNSwzNCArNTMxNSw2
IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfc25hcHNob3QoV2ViS2l0V2ViVmlldyogd2ViVmlldykK
ICAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAotdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdl
YktpdFdlYlZpZXcqIHdlYlZpZXcsIE5vZGUqIG5vZGUpCi17Ci0gICAgaWYgKCFub2RlLT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6dmlkZW9UYWcpKQotICAgICAgICByZXR1cm47Ci0KLSNpZiBFTkFC
TEUoVklERU8pICYmICFkZWZpbmVkKEdTVF9BUElfVkVSU0lPTl8xKQotICAgIEhUTUxNZWRpYUVs
ZW1lbnQqIHZpZGVvRWxlbWVudCA9IHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihub2Rl
KTsKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7Ci0KLSAg
ICAvLyBGaXJzdCBleGl0IEZ1bGxzY3JlZW4gZm9yIHRoZSBvbGQgbWVkaWFFbGVtZW50LgotICAg
IGlmIChwcml2LT5mdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyKQotICAgICAgICBwcml2LT5mdWxs
c2NyZWVuVmlkZW9Db250cm9sbGVyLT5leGl0RnVsbHNjcmVlbigpOwotCi0gICAgcHJpdi0+ZnVs
bHNjcmVlblZpZGVvQ29udHJvbGxlciA9IG5ldyBGdWxsc2NyZWVuVmlkZW9Db250cm9sbGVyOwot
ICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPnNldE1lZGlhRWxlbWVudCh2aWRl
b0VsZW1lbnQpOwotICAgIHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmVudGVyRnVs
bHNjcmVlbigpOwotI2VuZGlmCi19Ci0KLXZvaWQgd2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCi17Ci0jaWYgRU5BQkxFKFZJREVPKSAmJiAhZGVmaW5lZChHU1Rf
QVBJX1ZFUlNJT05fMSkKLSAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXct
PnByaXY7Ci0gICAgaWYgKHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIpCi0gICAgICAg
IHByaXYtPmZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXItPmV4aXRGdWxsc2NyZWVuKCk7Ci0jZW5k
aWYKLX0KLQogI2lmIEVOQUJMRShJQ09OREFUQUJBU0UpCiB2b2lkIHdlYmtpdFdlYlZpZXdJY29u
TG9hZGVkKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IGNoYXIqIGZyYW1l
VVJJLCBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXdwcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAppbmRleCAwYWU1MjJjLi40NjY1YzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlld3ByaXZhdGUuaApAQCAt
MjQsNyArMjQsNiBAQAogI2RlZmluZSB3ZWJraXR3ZWJ2aWV3cHJpdmF0ZV9oCiAKICNpbmNsdWRl
ICJBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIkZ1bGxzY3JlZW5W
aWRlb0NvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJHZW9sb2NhdGlvbkNsaWVudE1vY2suaCIKICNp
bmNsdWRlICJHdGtDbGlja0NvdW50ZXIuaCIKICNpbmNsdWRlICJHdGtEcmFnQW5kRHJvcEhlbHBl
ci5oIgpAQCAtOTEsMTAgKzkwLDYgQEAgc3RydWN0IF9XZWJLaXRXZWJWaWV3UHJpdmF0ZSB7CiAK
ICAgICBnYm9vbGVhbiBkaXNwb3Npbmc7CiAKLSNpZiBFTkFCTEUoVklERU8pICYmICFkZWZpbmVk
KEdTVF9BUElfVkVSU0lPTl8xKQotICAgIEZ1bGxzY3JlZW5WaWRlb0NvbnRyb2xsZXIqIGZ1bGxz
Y3JlZW5WaWRlb0NvbnRyb2xsZXI7Ci0jZW5kaWYKLQogICAgIC8vIFRoZXNlIGFyZSBob3N0ZWQg
aGVyZSBiZWNhdXNlIHRoZSBEYXRhU291cmNlIG9iamVjdCBpcwogICAgIC8vIGNyZWF0ZWQgdG9v
IGxhdGUgaW4gdGhlIGZyYW1lIGxvYWRpbmcgcHJvY2Vzcy4KICAgICBHUmVmUHRyPFdlYktpdFdl
YlJlc291cmNlPiBtYWluUmVzb3VyY2U7CkBAIC0xNDMsOSArMTM4LDYgQEAgR0xpc3QqIHdlYmtp
dF93ZWJfdmlld19nZXRfc3VicmVzb3VyY2VzKFdlYktpdFdlYlZpZXcqKTsKIHZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF90b29sdGlwX3RleHQoV2ViS2l0V2ViVmlldyosIGNvbnN0IGNoYXIqKTsK
IEd0a01lbnUqIHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dF9tZW51KFdlYktpdFdlYlZpZXcq
KTsKIAotdm9pZCB3ZWJWaWV3RW50ZXJGdWxsc2NyZWVuKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcs
IFdlYkNvcmU6Ok5vZGUqKTsKLXZvaWQgd2ViVmlld0V4aXRGdWxsc2NyZWVuKFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcpOwotCiB2b2lkIHdlYmtpdFdlYlZpZXdSdW5GaWxlQ2hvb3NlclJlcXVlc3Qo
V2ViS2l0V2ViVmlldyosIFdlYktpdEZpbGVDaG9vc2VyUmVxdWVzdCopOwogCiAjaWYgRU5BQkxF
KElDT05EQVRBQkFTRSkKLS0gCjEuNy4xMC40
</data>

          </attachment>
      

    </bug>

</bugzilla>