<?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>235745</bug_id>
          
          <creation_ts>2022-01-27 17:04:43 -0800</creation_ts>
          <short_desc>Support additional WPEToolingBackend types</short_desc>
          <delta_ts>2022-01-31 07:16: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>Platform</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Don Olmstead">don.olmstead</reporter>
          <assigned_to name="Don Olmstead">don.olmstead</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1834775</commentid>
    <comment_count>0</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-27 17:04:43 -0800</bug_when>
    <thetext>Currently its all FDO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1834783</commentid>
    <comment_count>1</comment_count>
      <attachid>450195</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-27 17:18:52 -0800</bug_when>
    <thetext>Created attachment 450195
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835036</commentid>
    <comment_count>2</comment_count>
      <attachid>450249</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 10:15:25 -0800</bug_when>
    <thetext>Created attachment 450249
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835041</commentid>
    <comment_count>3</comment_count>
      <attachid>450250</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 10:22:54 -0800</bug_when>
    <thetext>Created attachment 450250
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835047</commentid>
    <comment_count>4</comment_count>
      <attachid>450252</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 10:34:52 -0800</bug_when>
    <thetext>Created attachment 450252
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835066</commentid>
    <comment_count>5</comment_count>
      <attachid>450258</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 10:53:04 -0800</bug_when>
    <thetext>Created attachment 450258
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835069</commentid>
    <comment_count>6</comment_count>
      <attachid>450259</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 11:02:19 -0800</bug_when>
    <thetext>Created attachment 450259
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835079</commentid>
    <comment_count>7</comment_count>
      <attachid>450262</attachid>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-28 11:39:45 -0800</bug_when>
    <thetext>Created attachment 450262
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835404</commentid>
    <comment_count>8</comment_count>
    <who name="Don Olmstead">don.olmstead</who>
    <bug_when>2022-01-30 14:17:47 -0800</bug_when>
    <thetext>This patch only touches WPE code so the Mac failures are bogus.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835503</commentid>
    <comment_count>9</comment_count>
      <attachid>450262</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2022-01-31 04:33:16 -0800</bug_when>
    <thetext>Comment on attachment 450262
Patch

The patch looks reasonable to me, as it is mostly moving things around.
I will wait a bit before setting it as r+, to see if Žan can take a quick
look as well :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835506</commentid>
    <comment_count>10</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-01-31 05:22:50 -0800</bug_when>
    <thetext>Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835525</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-01-31 07:15:38 -0800</bug_when>
    <thetext>Committed r288814 (246590@main): &lt;https://commits.webkit.org/246590@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 450262.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1835527</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-31 07:16:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/88268667&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450195</attachid>
            <date>2022-01-27 17:18:52 -0800</date>
            <delta_ts>2022-01-28 10:15:25 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>20050</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZmQ1ZTM4MzYxNTEuLjliNmJiNzMzNWJi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtNywxMyArNywxMSBAQCBmaWxlKE1B
S0VfRElSRUNUT1JZICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9KQog
c2V0KFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgIEhlYWRsZXNzVmlld0Jh
Y2tlbmQuaAogICAgIFZpZXdCYWNrZW5kLmgKLSAgICBXaW5kb3dWaWV3QmFja2VuZC5oCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAgIEhlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCiAgICAgVmlld0JhY2tlbmQuY3BwCi0gICAgV2luZG93Vmlld0JhY2tlbmQuY3BwCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC0y
Niw2ICsyNCwxMyBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgIFdQRTo6
bGlid3BlCiApCiAKK2lmIChVU0VfQ0FJUk8pCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX0RFRklOSVRJT05TIFVTRV9DQUlSTz0xKQorZW5kaWYgKCkKK2lmIChVU0VfR0xJQikK
KyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgVVNFX0dMSUI9
MSkKK2VuZGlmICgpCisKIHNldChXUEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0xJQlJBUklF
UyBXUEVUb29saW5nQmFja2VuZHMpCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9J
TkNMVURFX0RJUkVDVE9SSUVTICR7V1BFVG9vbGluZ0JhY2tlbmRzX0ZSQU1FV09SS19IRUFERVJT
X0RJUn0pCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9ERVBFTkRFTkNJRVMgV1BF
VG9vbGluZ0JhY2tlbmRzX0NvcHlIZWFkZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tl
bmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNz
Vmlld0JhY2tlbmQuY3BwCmluZGV4IDM5ZjBlMjZkMWJiMy4uZjY0OGU3MThiNTFkIDEwMDY0NAot
LS0gYS9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKKysrIGIvVG9v
bHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCkBAIC0yNSwxODEgKzI1LDgg
QEAKIAogI2luY2x1ZGUgIkhlYWRsZXNzVmlld0JhY2tlbmQuaCIKIAotI2luY2x1ZGUgPGNhc3Nl
cnQ+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLQotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSNpbmNsdWRlIDx3YXls
YW5kLXNlcnZlci5oPgotI2luY2x1ZGUgPHdwZS91bnN0YWJsZS9mZG8tc2htLmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKLXN0cnVjdCBIZWFkbGVzc0luc3Rh
bmNlIHsKLSAgICBzdGF0aWMgY29uc3QgSGVhZGxlc3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKLSAg
ICB7Ci0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOwotICAgICAgICBz
dGF0aWMgSGVhZGxlc3NJbnN0YW5jZSBzX2luc3RhbmNlOwotICAgICAgICBzdGQ6OmNhbGxfb25j
ZShzX29uY2VGbGFnLAotICAgICAgICAgICAgW10gewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lP
TigxLDcsMCkKLSAgICAgICAgICAgICAgICB3cGVfZmRvX2luaXRpYWxpemVfc2htKCk7Ci0jZW5k
aWYKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBzX2luc3RhbmNlOwotICAgIH0K
LX07Ci0KLXN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6OkhlYWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQz
Ml90IGhlaWdodCkKLSAgICA6IFZpZXdCYWNrZW5kKHdpZHRoLCBoZWlnaHQpCi17Ci0gICAgLy8g
VGhpcyBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgU0hNIG1vZGUuCi0gICAgSGVhZGxlc3NJbnN0YW5j
ZTo6c2luZ2xldG9uKCk7Ci0KLSAgICBzdGF0aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhw
b3J0YWJsZV9mZG9fY2xpZW50IGV4cG9ydGFibGVDbGllbnQgPSB7Ci0gICAgICAgIG51bGxwdHIs
Ci0gICAgICAgIG51bGxwdHIsCi0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAg
ICAgICAvLyBleHBvcnRfc2htX2J1ZmZlcgotICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qg
d3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGF1dG8mIGJhY2tlbmQgPSAqc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRh
dGEpOwotICAgICAgICAgICAgYmFja2VuZC5tX3VwZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgYmFja2VuZC51cGRhdGVTbmFwc2hvdChidWZmZXIpOwotICAgICAgICAgICAgd3Bl
X3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRl
ZF9idWZmZXIoYmFja2VuZC5tX2V4cG9ydGFibGUsIGJ1ZmZlcik7Ci0gICAgICAgIH0sCi0jZWxz
ZQotICAgICAgICBudWxscHRyLAotI2VuZGlmCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51
bGxwdHIsCi0gICAgfTsKLSAgICBtX2V4cG9ydGFibGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9y
dGFibGVfZmRvX2NyZWF0ZSgmZXhwb3J0YWJsZUNsaWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7
Ci0KLSAgICBhZGRBY3Rpdml0eVN0YXRlKHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUg
fCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfaW5fd2luZG93KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9f
Zm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0g
ICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsK
LSAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc3RyaWRlICogbV9oZWlnaHQpOwotCi0gICAgICAg
IG1fc25hcHNob3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIs
IENBSVJPX0ZPUk1BVF9BUkdCMzIsCi0gICAgICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3Ry
aWRlKTsKLQotICAgICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwg
JnNfYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgICAgICBbXSh2b2lkKiBkYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwot
ICAgICAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Ci0gICAgfQotCi0jaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCi0gICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNj
cmVlbl9oYW5kbGVyKGJhY2tlbmQoKSwgb25ET01GdWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7Ci0j
ZW5kaWYKLQotICAgIG1fdXBkYXRlLnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNF
Q19QRVJfU0VDIC8gNjAwMDApOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5z
b3VyY2UsIFtdKGdwb2ludGVyIGRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpLT52c3luYygpOwotICAgICAgICByZXR1cm4g
VFJVRTsKLSAgICB9LCB0aGlzLCBudWxscHRyKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHko
bV91cGRhdGUuc291cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX2F0dGFj
aChtX3VwZGF0ZS5zb3VyY2UsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7Ci19Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6On5IZWFkbGVzc1ZpZXdCYWNrZW5kKCkKLXsKLSAgICBpZiAobV91cGRh
dGUuc291cmNlKSB7Ci0gICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsK
LSAgICAgICAgZ19zb3VyY2VfdW5yZWYobV91cGRhdGUuc291cmNlKTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9zbmFwc2hvdCkKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3Qp
OwotCi0gICAgaWYgKG1fZXhwb3J0YWJsZSkKLSAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkb19kZXN0cm95KG1fZXhwb3J0YWJsZSk7Ci19Ci0KLXN0cnVjdCB3cGVfdmlld19i
YWNrZW5kKiBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9leHBvcnRhYmxlKQotICAgICAgICByZXR1cm4gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxl
X2Zkb19nZXRfdmlld19iYWNrZW5kKG1fZXhwb3J0YWJsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLWNhaXJvX3N1cmZhY2VfdCogSGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QoKQot
ewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3NuYXBzaG90KTsKLX0KLQot
dm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19z
aG1fZXhwb3J0ZWRfYnVmZmVyKiBleHBvcnRlZEJ1ZmZlcikKLXsKLSNpZiBXUEVfRkRPX0NIRUNL
X1ZFUlNJT04oMSw3LDApCi0gICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9IHdw
ZV9mZG9fc2htX2V4cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZlcik7
Ci0gICAgewotICAgICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1hdChz
aG1CdWZmZXIpOwotICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4ODgg
JiYgZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgdWludDhfdCog
YnVmZmVyID0gbmV3IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOwotICAgIG1lbXNl
dChidWZmZXIsIDAsIGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKLQotICAgIHsKLSAgICAgICAg
dWludDMyX3Qgd2lkdGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgoMCwg
d2xfc2htX2J1ZmZlcl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOwotICAgICAgICB1aW50MzJfdCBo
ZWlnaHQgPSBzdGQ6Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3NobV9i
dWZmZXJfZ2V0X2hlaWdodChzaG1CdWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IHN0cmlkZSA9
IHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKLQotICAg
ICAgICB3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgICAgICBhdXRv
KiBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEoc2ht
QnVmZmVyKSk7Ci0KLSAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5
KSB7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewot
ICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9IGRh
dGFbc3RyaWRlICogeSArIDQgKiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZl
clN0cmlkZSAqIHkgKyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAxXTsK
LSAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0gPSBk
YXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDJdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgM107
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3bF9zaG1fYnVmZmVyX2VuZF9h
Y2Nlc3Moc2htQnVmZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hvdCkKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgbV9zbmFwc2hvdCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FS
R0IzMiwKLSAgICAgICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9y
X3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKLQotICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgYnVmZmVyS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJf
ZGF0YShtX3NuYXBzaG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgIFtdKHZvaWQqIGRh
dGEpIHsKLSAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
YXRhKTsKLSAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgfSk7Ci0gICAgY2Fp
cm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc25hcHNob3QpOwotI2Vsc2UKLSAgICAodm9pZClleHBv
cnRlZEJ1ZmZlcjsKLSNlbmRpZgotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZzeW5j
KCkKLXsKLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgaWYgKG1fdXBkYXRl
LnBlbmRpbmcpCi0gICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlzcGF0
Y2hfZnJhbWVfY29tcGxldGUobV9leHBvcnRhYmxlKTsKLSNlbmRpZgotICAgIG1fdXBkYXRlLnBl
bmRpbmcgPSBmYWxzZTsKLX0KLQogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQogYm9v
bCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0KHZvaWQqIGRhdGEs
IGJvb2wgZnVsbHNjcmVlbikKIHsKQEAgLTIyNCw1ICs1MSw0IEBAIHZvaWQgSGVhZGxlc3NWaWV3
QmFja2VuZDo6ZGlzcGF0Y2hGdWxsc2NyZWVuRXZlbnQoKQogCiAjZW5kaWYKIAotCiB9IC8vIG5h
bWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5k
cy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3
QmFja2VuZC5oCmluZGV4IGZjNDEyMzc3ZTY1Ni4uYjhmOWNmZjliNTJkIDEwMDY0NAotLS0gYS9U
b29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9i
YWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsMTEgKzI3LDMwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlZpZXdC
YWNrZW5kLmgiCisKKyNpZiBkZWZpbmVkKFdQRV9CQUNLRU5EX0ZETykKKyNpbmNsdWRlIDx3cGUv
ZmRvLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KICNp
bmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9HTElCKSAmJiBVU0Vf
R0xJQgogI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0Jh
Y2tlbmRzIHsKIAorI2lmIGRlZmluZWQoV1BFX0JBQ0tFTkRfRkRPKQordXNpbmcgUGxhdGZvcm1C
dWZmZXIgPSBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKjsKK3VzaW5nIFBsYXRm
b3JtVmlld0JhY2tlbmQgPSBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkbyo7
CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KK3VzaW5nIFBs
YXRmb3JtSW1hZ2UgPSBjYWlyb19zdXJmYWNlX3QqOworI2VuZGlmCisKIGNsYXNzIEhlYWRsZXNz
Vmlld0JhY2tlbmQgZmluYWwgOiBwdWJsaWMgVmlld0JhY2tlbmQgewogcHVibGljOgogICAgIEhl
YWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CkBAIC0z
OCwxMCArNTgsMTAgQEAgcHVibGljOgogCiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJh
Y2tlbmQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogc25hcHNob3Qo
KTsKKyAgICBQbGF0Zm9ybUltYWdlIHNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1
cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKik7CisgICAg
dm9pZCB1cGRhdGVTbmFwc2hvdChQbGF0Zm9ybUJ1ZmZlcik7CiAgICAgdm9pZCB2c3luYygpOwog
CiAjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCkBAIC00OSwxNSArNjksMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRnVsbHNjcmVlbkV2ZW50KCk7CiAjZW5kaWYKIAorICAg
IFBsYXRmb3JtVmlld0JhY2tlbmQgbV9leHBvcnRhYmxlIHsgbnVsbHB0ciB9OworICAgIFBsYXRm
b3JtSW1hZ2UgbV9zbmFwc2hvdCB7IG51bGxwdHIgfTsKIAotICAgIHN0cnVjdCB3cGVfdmlld19i
YWNrZW5kX2V4cG9ydGFibGVfZmRvKiBtX2V4cG9ydGFibGUgeyBudWxscHRyIH07Ci0KLSAgICBj
YWlyb19zdXJmYWNlX3QqIG1fc25hcHNob3QgeyBudWxscHRyIH07Ci0KKyNpZiBkZWZpbmVkKFVT
RV9HTElCKSAmJiBVU0VfR0xJQgogICAgIHN0cnVjdCB7CiAgICAgICAgIEdTb3VyY2UqIHNvdXJj
ZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKICAgICB9IG1f
dXBkYXRlOworI2VuZGlmCiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKICAgICBi
b29sIG1faXNfZnVsbHNjcmVlbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFj
a2VuZHMvUGxhdGZvcm1XUEUuY21ha2UgYi9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUu
Y21ha2UKaW5kZXggMDcyMTYzNDE4MDhmLi4zMjFjNGQ1MzkzYjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy93cGUvYmFja2VuZHMv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTUsNiArNSw3IEBAIGZpbmRfcGFja2FnZShXUEVCYWNrZW5k
X2ZkbyAxLjMuMCBSRVFVSVJFRCkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BV
QkxJQ19IRUFERVJTCiAgICAgJHtXUEVUb29saW5nQmFja2VuZHNfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LWNsaWVudC1wcm90b2NvbC5oCisgICAgZmRvL1dpbmRv
d1ZpZXdCYWNrZW5kLmgKICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJD
RVMKQEAgLTE1LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJD
RVMKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCisgICAgJHtUT09MU19E
SVJ9L3dwZS9iYWNrZW5kcy9mZG8KICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRz
X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC00OCw5ICs1MCwxMiBAQCBhZGRfY3VzdG9t
X2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY2xpZW50LWhlYWRlciAk
e1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3hkZy1zaGVsbC94ZGctc2hlbGwt
dW5zdGFibGUtdjYueG1sICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9
L3hkZy1zaGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaAogICAgIFZFUkJBVElNKQog
CitsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkRf
RkRPKQorbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMg
V1BFX0JBQ0tFTkQ9ImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpCisKIGlmIChFTkFCTEVfQUND
RVNTSUJJTElUWSkKKyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElP
TlMgRU5BQkxFX0FDQ0VTU0lCSUxJVFk9MSkKICAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFj
a2VuZHNfUFJJVkFURV9ERUZJTklUSU9OUwotICAgICAgICBFTkFCTEVfQUNDRVNTSUJJTElUWT0x
CiAgICAgICAgIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9R0xJQl9WRVJTSU9OXzJfNDAKICAg
ICApCiAgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUyBBVEs6OkJy
aWRnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAgYi9U
b29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCmluZGV4IGEzNzQxMDRkMDVhMS4uMDA4
ZWNlZDBiYTc5IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3Bw
CisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAgVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln
aHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogewotICAg
IHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvIik7CisgICAgd3BlX2xv
YWRlcl9pbml0KFdQRV9CQUNLRU5EKTsKIH0KIAogVmlld0JhY2tlbmQ6On5WaWV3QmFja2VuZCgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5o
IGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMGU5ODA1YWY4NzgxLi41
MzUwODFhMWMwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5o
CisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yNiwyNiArMjYsMTIg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHdwZS9mZG8u
aD4KKyNpbmNsdWRlIDx3cGUvd3BlLmg+CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFU1NJQklM
SVRZKSAmJiBFTkFCTEVfQUNDRVNTSUJJTElUWQogdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBB
dGtPYmplY3Q7CiAjZW5kaWYKIAotdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Ci10eXBlZGVmIHZv
aWQqIEVHTENvbnRleHQ7Ci10eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci1zdHJ1Y3Qgd3BlX2Zk
b19lZ2xfZXhwb3J0ZWRfaW1hZ2U7Ci0KLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSwgNSwg
MCkKLXN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXI7Ci0jZW5kaWYKLQotLy8gTWFu
dWFsbHkgcHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0
Zm9ybS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4KLSNpZm5kZWYgRUdMX0NBU1QKLSNkZWZpbmUgRUdM
X0NBU1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5j
cHAgYi9Ub29scy93cGUvYmFja2VuZHMvZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGIzZDI2MjUyOGQzCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5k
RmRvLmNwcApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSGVhZGxlc3NWaWV3QmFja2VuZC5oIgorCisj
aW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQor
I2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CisjaW5jbHVkZSA8d3BlL3Vuc3RhYmxlL2Zkby1z
aG0uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKKworc3RydWN0
IEhlYWRsZXNzSW5zdGFuY2UgeworICAgIHN0YXRpYyBjb25zdCBIZWFkbGVzc0luc3RhbmNlJiBz
aW5nbGV0b24oKQorICAgIHsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZs
YWc7CisgICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5zdGFuY2U7CisgICAgICAg
IHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCisgICAgICAgICAgICBbXSB7CisjaWYgV1BFX0ZE
T19DSEVDS19WRVJTSU9OKDEsNywwKQorICAgICAgICAgICAgICAgIHdwZV9mZG9faW5pdGlhbGl6
ZV9zaG0oKTsKKyNlbmRpZgorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHNfaW5z
dGFuY2U7CisgICAgfQorfTsKKworc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX2J1ZmZl
cktleTsKKworSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQorICAgIDogVmlld0JhY2tlbmQod2lkdGgsIGhlaWdo
dCkKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBTSE0gbW9kZS4KKyAgICBI
ZWFkbGVzc0luc3RhbmNlOjpzaW5nbGV0b24oKTsKKworICAgIHN0YXRpYyBzdHJ1Y3Qgd3BlX3Zp
ZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJsZUNsaWVudCA9IHsKKyAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJ
T04oMSw3LDApCisgICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCisgICAgICAgIFtdKHZvaWQq
IGRhdGEsIHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGJ1ZmZlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNfY2FzdDxIZWFkbGVzc1Zp
ZXdCYWNrZW5kKj4oZGF0YSk7CisgICAgICAgICAgICBiYWNrZW5kLm1fdXBkYXRlLnBlbmRpbmcg
PSB0cnVlOworCisgICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBzaG90KGJ1ZmZlcik7Cisg
ICAgICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX3JlbGVh
c2Vfc2htX2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJsZSwgYnVmZmVyKTsKKyAg
ICAgICAgfSwKKyNlbHNlCisgICAgICAgIG51bGxwdHIsCisjZW5kaWYKKyAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgbnVsbHB0ciwKKyAgICB9OworICAgIG1fZXhwb3J0YWJsZSA9IHdwZV92aWV3
X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0aGlzLCB3
aWR0aCwgaGVpZ2h0KTsKKworICAgIGFkZEFjdGl2aXR5U3RhdGUod3BlX3ZpZXdfYWN0aXZpdHlf
c3RhdGVfdmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQgfCB3cGVfdmll
d19hY3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cpOworCisgICAgeworICAgICAgICB1aW50MzJfdCBz
dHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMy
LCBtX3dpZHRoKTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3IHVpbnQ4X3Rbc3RyaWRl
ICogbV9oZWlnaHRdOworICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBzdHJpZGUgKiBtX2hlaWdo
dCk7CisKKyAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zv
cl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgICAgIG1fd2lkdGgs
IG1faGVpZ2h0LCBzdHJpZGUpOworCisgICAgICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0
YShtX3NuYXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgICAgIFtdKHZvaWQq
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oZGF0YSk7CisgICAgICAgICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyAg
ICB9CisKKyNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKKyAgICB3cGVfdmlld19iYWNr
ZW5kX3NldF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRPTUZ1bGxTY3JlZW5SZXF1
ZXN0LCB0aGlzKTsKKyNlbmRpZgorCisgICAgbV91cGRhdGUuc291cmNlID0gZ190aW1lb3V0X3Nv
dXJjZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKG1fdXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4gZ2Jvb2xlYW4geworICAg
ICAgICBzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSktPnZzeW5jKCk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNl
X3NldF9wcmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7CisgICAg
Z19zb3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2NvbnRleHRfZGVmYXVsdCgp
KTsKK30KKworSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQoKQorewor
ICAgIGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsKKyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3Vw
ZGF0ZS5zb3VyY2UpOworICAgICAgICBnX3NvdXJjZV91bnJlZihtX3VwZGF0ZS5zb3VyY2UpOwor
ICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3kobV9zbmFwc2hvdCk7CisKKyAgICBpZiAobV9leHBvcnRhYmxlKQorICAgICAgICB3cGVfdmll
d19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRhYmxlKTsKK30KKworc3Ry
dWN0IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tlbmQoKSBjb25z
dAoreworICAgIGlmIChtX2V4cG9ydGFibGUpCisgICAgICAgIHJldHVybiB3cGVfdmlld19iYWNr
ZW5kX2V4cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBvcnRhYmxlKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworUGxhdGZvcm1JbWFnZSBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpz
bmFwc2hvdCgpCit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc25hcHNo
b3QpOworfQorCit2b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KFBsYXRm
b3JtQnVmZmVyIGV4cG9ydGVkQnVmZmVyKQoreworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigx
LDcsMCkKKyAgICBzdHJ1Y3Qgd2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1f
ZXhwb3J0ZWRfYnVmZmVyX2dldF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKKyAgICB7Cisg
ICAgICAgIGF1dG8gZm9ybWF0ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7
CisgICAgICAgIGlmIChmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQg
IT0gV0xfU0hNX0ZPUk1BVF9YUkdCODg4OCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB1aW50MzJfdCBidWZmZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0
aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBu
ZXcgdWludDhfdFtidWZmZXJTdHJpZGUgKiBtX2hlaWdodF07CisgICAgbWVtc2V0KGJ1ZmZlciwg
MCwgYnVmZmVyU3RyaWRlICogbV9oZWlnaHQpOworCisgICAgeworICAgICAgICB1aW50MzJfdCB3
aWR0aCA9IHN0ZDo6bWluPHVpbnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVm
ZmVyX2dldF93aWR0aChzaG1CdWZmZXIpKSk7CisgICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0
ZDo6bWluPHVpbnQzMl90PihtX2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRf
aGVpZ2h0KHNobUJ1ZmZlcikpKTsKKyAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgo
MCwgd2xfc2htX2J1ZmZlcl9nZXRfc3RyaWRlKHNobUJ1ZmZlcikpOworCisgICAgICAgIHdsX3No
bV9idWZmZXJfYmVnaW5fYWNjZXNzKHNobUJ1ZmZlcik7CisgICAgICAgIGF1dG8qIGRhdGEgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsK
KworICAgICAgICBmb3IgKHVpbnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAg
ICAgICAgIGZvciAodWludDMyX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAg
ICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUg
KiB5ICsgNCAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICog
eSArIDQgKiB4ICsgMV0gPSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRl
ICogeSArIDQgKiB4ICsgMl07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAq
IHkgKyA0ICogeCArIDNdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1C
dWZmZXIpOworICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7CisKKyAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAorICAg
ICAgICBtX3dpZHRoLCBtX2hlaWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJ
Uk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCkpOworCisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBidWZmZXJLZXk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25h
cHNob3QsICZidWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgW10odm9pZCogZGF0YSkgeworICAg
ICAgICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAg
ICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICB9KTsKKyAgICBjYWlyb19zdXJmYWNl
X21hcmtfZGlydHkobV9zbmFwc2hvdCk7CisjZWxzZQorICAgICh2b2lkKWV4cG9ydGVkQnVmZmVy
OworI2VuZGlmCit9CisKK3ZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQoreworI2lm
IFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICBpZiAobV91cGRhdGUucGVuZGluZykK
KyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9j
b21wbGV0ZShtX2V4cG9ydGFibGUpOworI2VuZGlmCisgICAgbV91cGRhdGUucGVuZGluZyA9IGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFj
a2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVu
YW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApyZW5hbWUg
dG8gVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5h
bWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuaApyZW5hbWUgdG8g
VG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCg==
</data>
<flag name="commit-queue"
          id="476536"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450249</attachid>
            <date>2022-01-28 10:15:25 -0800</date>
            <delta_ts>2022-01-28 10:48:13 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>20674</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZmQ1ZTM4MzYxNTEuLjliNmJiNzMzNWJi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtNywxMyArNywxMSBAQCBmaWxlKE1B
S0VfRElSRUNUT1JZICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9KQog
c2V0KFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgIEhlYWRsZXNzVmlld0Jh
Y2tlbmQuaAogICAgIFZpZXdCYWNrZW5kLmgKLSAgICBXaW5kb3dWaWV3QmFja2VuZC5oCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAgIEhlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCiAgICAgVmlld0JhY2tlbmQuY3BwCi0gICAgV2luZG93Vmlld0JhY2tlbmQuY3BwCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC0y
Niw2ICsyNCwxMyBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgIFdQRTo6
bGlid3BlCiApCiAKK2lmIChVU0VfQ0FJUk8pCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX0RFRklOSVRJT05TIFVTRV9DQUlSTz0xKQorZW5kaWYgKCkKK2lmIChVU0VfR0xJQikK
KyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgVVNFX0dMSUI9
MSkKK2VuZGlmICgpCisKIHNldChXUEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0xJQlJBUklF
UyBXUEVUb29saW5nQmFja2VuZHMpCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9J
TkNMVURFX0RJUkVDVE9SSUVTICR7V1BFVG9vbGluZ0JhY2tlbmRzX0ZSQU1FV09SS19IRUFERVJT
X0RJUn0pCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9ERVBFTkRFTkNJRVMgV1BF
VG9vbGluZ0JhY2tlbmRzX0NvcHlIZWFkZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tl
bmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNz
Vmlld0JhY2tlbmQuY3BwCmluZGV4IDM5ZjBlMjZkMWJiMy4uZjY0OGU3MThiNTFkIDEwMDY0NAot
LS0gYS9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKKysrIGIvVG9v
bHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCkBAIC0yNSwxODEgKzI1LDgg
QEAKIAogI2luY2x1ZGUgIkhlYWRsZXNzVmlld0JhY2tlbmQuaCIKIAotI2luY2x1ZGUgPGNhc3Nl
cnQ+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLQotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSNpbmNsdWRlIDx3YXls
YW5kLXNlcnZlci5oPgotI2luY2x1ZGUgPHdwZS91bnN0YWJsZS9mZG8tc2htLmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKLXN0cnVjdCBIZWFkbGVzc0luc3Rh
bmNlIHsKLSAgICBzdGF0aWMgY29uc3QgSGVhZGxlc3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKLSAg
ICB7Ci0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOwotICAgICAgICBz
dGF0aWMgSGVhZGxlc3NJbnN0YW5jZSBzX2luc3RhbmNlOwotICAgICAgICBzdGQ6OmNhbGxfb25j
ZShzX29uY2VGbGFnLAotICAgICAgICAgICAgW10gewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lP
TigxLDcsMCkKLSAgICAgICAgICAgICAgICB3cGVfZmRvX2luaXRpYWxpemVfc2htKCk7Ci0jZW5k
aWYKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBzX2luc3RhbmNlOwotICAgIH0K
LX07Ci0KLXN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6OkhlYWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQz
Ml90IGhlaWdodCkKLSAgICA6IFZpZXdCYWNrZW5kKHdpZHRoLCBoZWlnaHQpCi17Ci0gICAgLy8g
VGhpcyBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgU0hNIG1vZGUuCi0gICAgSGVhZGxlc3NJbnN0YW5j
ZTo6c2luZ2xldG9uKCk7Ci0KLSAgICBzdGF0aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhw
b3J0YWJsZV9mZG9fY2xpZW50IGV4cG9ydGFibGVDbGllbnQgPSB7Ci0gICAgICAgIG51bGxwdHIs
Ci0gICAgICAgIG51bGxwdHIsCi0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAg
ICAgICAvLyBleHBvcnRfc2htX2J1ZmZlcgotICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qg
d3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGF1dG8mIGJhY2tlbmQgPSAqc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRh
dGEpOwotICAgICAgICAgICAgYmFja2VuZC5tX3VwZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgYmFja2VuZC51cGRhdGVTbmFwc2hvdChidWZmZXIpOwotICAgICAgICAgICAgd3Bl
X3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRl
ZF9idWZmZXIoYmFja2VuZC5tX2V4cG9ydGFibGUsIGJ1ZmZlcik7Ci0gICAgICAgIH0sCi0jZWxz
ZQotICAgICAgICBudWxscHRyLAotI2VuZGlmCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51
bGxwdHIsCi0gICAgfTsKLSAgICBtX2V4cG9ydGFibGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9y
dGFibGVfZmRvX2NyZWF0ZSgmZXhwb3J0YWJsZUNsaWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7
Ci0KLSAgICBhZGRBY3Rpdml0eVN0YXRlKHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUg
fCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfaW5fd2luZG93KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9f
Zm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0g
ICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsK
LSAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc3RyaWRlICogbV9oZWlnaHQpOwotCi0gICAgICAg
IG1fc25hcHNob3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIs
IENBSVJPX0ZPUk1BVF9BUkdCMzIsCi0gICAgICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3Ry
aWRlKTsKLQotICAgICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwg
JnNfYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgICAgICBbXSh2b2lkKiBkYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwot
ICAgICAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Ci0gICAgfQotCi0jaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCi0gICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNj
cmVlbl9oYW5kbGVyKGJhY2tlbmQoKSwgb25ET01GdWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7Ci0j
ZW5kaWYKLQotICAgIG1fdXBkYXRlLnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNF
Q19QRVJfU0VDIC8gNjAwMDApOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5z
b3VyY2UsIFtdKGdwb2ludGVyIGRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpLT52c3luYygpOwotICAgICAgICByZXR1cm4g
VFJVRTsKLSAgICB9LCB0aGlzLCBudWxscHRyKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHko
bV91cGRhdGUuc291cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX2F0dGFj
aChtX3VwZGF0ZS5zb3VyY2UsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7Ci19Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6On5IZWFkbGVzc1ZpZXdCYWNrZW5kKCkKLXsKLSAgICBpZiAobV91cGRh
dGUuc291cmNlKSB7Ci0gICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsK
LSAgICAgICAgZ19zb3VyY2VfdW5yZWYobV91cGRhdGUuc291cmNlKTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9zbmFwc2hvdCkKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3Qp
OwotCi0gICAgaWYgKG1fZXhwb3J0YWJsZSkKLSAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkb19kZXN0cm95KG1fZXhwb3J0YWJsZSk7Ci19Ci0KLXN0cnVjdCB3cGVfdmlld19i
YWNrZW5kKiBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9leHBvcnRhYmxlKQotICAgICAgICByZXR1cm4gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxl
X2Zkb19nZXRfdmlld19iYWNrZW5kKG1fZXhwb3J0YWJsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLWNhaXJvX3N1cmZhY2VfdCogSGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QoKQot
ewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3NuYXBzaG90KTsKLX0KLQot
dm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19z
aG1fZXhwb3J0ZWRfYnVmZmVyKiBleHBvcnRlZEJ1ZmZlcikKLXsKLSNpZiBXUEVfRkRPX0NIRUNL
X1ZFUlNJT04oMSw3LDApCi0gICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9IHdw
ZV9mZG9fc2htX2V4cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZlcik7
Ci0gICAgewotICAgICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1hdChz
aG1CdWZmZXIpOwotICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4ODgg
JiYgZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgdWludDhfdCog
YnVmZmVyID0gbmV3IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOwotICAgIG1lbXNl
dChidWZmZXIsIDAsIGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKLQotICAgIHsKLSAgICAgICAg
dWludDMyX3Qgd2lkdGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgoMCwg
d2xfc2htX2J1ZmZlcl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOwotICAgICAgICB1aW50MzJfdCBo
ZWlnaHQgPSBzdGQ6Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3NobV9i
dWZmZXJfZ2V0X2hlaWdodChzaG1CdWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IHN0cmlkZSA9
IHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKLQotICAg
ICAgICB3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgICAgICBhdXRv
KiBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEoc2ht
QnVmZmVyKSk7Ci0KLSAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5
KSB7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewot
ICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9IGRh
dGFbc3RyaWRlICogeSArIDQgKiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZl
clN0cmlkZSAqIHkgKyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAxXTsK
LSAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0gPSBk
YXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDJdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgM107
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3bF9zaG1fYnVmZmVyX2VuZF9h
Y2Nlc3Moc2htQnVmZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hvdCkKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgbV9zbmFwc2hvdCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FS
R0IzMiwKLSAgICAgICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9y
X3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKLQotICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgYnVmZmVyS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJf
ZGF0YShtX3NuYXBzaG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgIFtdKHZvaWQqIGRh
dGEpIHsKLSAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
YXRhKTsKLSAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgfSk7Ci0gICAgY2Fp
cm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc25hcHNob3QpOwotI2Vsc2UKLSAgICAodm9pZClleHBv
cnRlZEJ1ZmZlcjsKLSNlbmRpZgotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZzeW5j
KCkKLXsKLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgaWYgKG1fdXBkYXRl
LnBlbmRpbmcpCi0gICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlzcGF0
Y2hfZnJhbWVfY29tcGxldGUobV9leHBvcnRhYmxlKTsKLSNlbmRpZgotICAgIG1fdXBkYXRlLnBl
bmRpbmcgPSBmYWxzZTsKLX0KLQogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQogYm9v
bCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0KHZvaWQqIGRhdGEs
IGJvb2wgZnVsbHNjcmVlbikKIHsKQEAgLTIyNCw1ICs1MSw0IEBAIHZvaWQgSGVhZGxlc3NWaWV3
QmFja2VuZDo6ZGlzcGF0Y2hGdWxsc2NyZWVuRXZlbnQoKQogCiAjZW5kaWYKIAotCiB9IC8vIG5h
bWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5k
cy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3
QmFja2VuZC5oCmluZGV4IGZjNDEyMzc3ZTY1Ni4uYjhmOWNmZjliNTJkIDEwMDY0NAotLS0gYS9U
b29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9i
YWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsMTEgKzI3LDMwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlZpZXdC
YWNrZW5kLmgiCisKKyNpZiBkZWZpbmVkKFdQRV9CQUNLRU5EX0ZETykKKyNpbmNsdWRlIDx3cGUv
ZmRvLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KICNp
bmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9HTElCKSAmJiBVU0Vf
R0xJQgogI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0Jh
Y2tlbmRzIHsKIAorI2lmIGRlZmluZWQoV1BFX0JBQ0tFTkRfRkRPKQordXNpbmcgUGxhdGZvcm1C
dWZmZXIgPSBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKjsKK3VzaW5nIFBsYXRm
b3JtVmlld0JhY2tlbmQgPSBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkbyo7
CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KK3VzaW5nIFBs
YXRmb3JtSW1hZ2UgPSBjYWlyb19zdXJmYWNlX3QqOworI2VuZGlmCisKIGNsYXNzIEhlYWRsZXNz
Vmlld0JhY2tlbmQgZmluYWwgOiBwdWJsaWMgVmlld0JhY2tlbmQgewogcHVibGljOgogICAgIEhl
YWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CkBAIC0z
OCwxMCArNTgsMTAgQEAgcHVibGljOgogCiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJh
Y2tlbmQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogc25hcHNob3Qo
KTsKKyAgICBQbGF0Zm9ybUltYWdlIHNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1
cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKik7CisgICAg
dm9pZCB1cGRhdGVTbmFwc2hvdChQbGF0Zm9ybUJ1ZmZlcik7CiAgICAgdm9pZCB2c3luYygpOwog
CiAjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCkBAIC00OSwxNSArNjksMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRnVsbHNjcmVlbkV2ZW50KCk7CiAjZW5kaWYKIAorICAg
IFBsYXRmb3JtVmlld0JhY2tlbmQgbV9leHBvcnRhYmxlIHsgbnVsbHB0ciB9OworICAgIFBsYXRm
b3JtSW1hZ2UgbV9zbmFwc2hvdCB7IG51bGxwdHIgfTsKIAotICAgIHN0cnVjdCB3cGVfdmlld19i
YWNrZW5kX2V4cG9ydGFibGVfZmRvKiBtX2V4cG9ydGFibGUgeyBudWxscHRyIH07Ci0KLSAgICBj
YWlyb19zdXJmYWNlX3QqIG1fc25hcHNob3QgeyBudWxscHRyIH07Ci0KKyNpZiBkZWZpbmVkKFVT
RV9HTElCKSAmJiBVU0VfR0xJQgogICAgIHN0cnVjdCB7CiAgICAgICAgIEdTb3VyY2UqIHNvdXJj
ZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKICAgICB9IG1f
dXBkYXRlOworI2VuZGlmCiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKICAgICBi
b29sIG1faXNfZnVsbHNjcmVlbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFj
a2VuZHMvUGxhdGZvcm1XUEUuY21ha2UgYi9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUu
Y21ha2UKaW5kZXggMDcyMTYzNDE4MDhmLi4zMjFjNGQ1MzkzYjggMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy93cGUvYmFja2VuZHMv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTUsNiArNSw3IEBAIGZpbmRfcGFja2FnZShXUEVCYWNrZW5k
X2ZkbyAxLjMuMCBSRVFVSVJFRCkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BV
QkxJQ19IRUFERVJTCiAgICAgJHtXUEVUb29saW5nQmFja2VuZHNfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LWNsaWVudC1wcm90b2NvbC5oCisgICAgZmRvL1dpbmRv
d1ZpZXdCYWNrZW5kLmgKICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJD
RVMKQEAgLTE1LDYgKzE2LDcgQEAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJD
RVMKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCisgICAgJHtUT09MU19E
SVJ9L3dwZS9iYWNrZW5kcy9mZG8KICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRz
X1NZU1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC00OCw5ICs1MCwxMiBAQCBhZGRfY3VzdG9t
X2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY2xpZW50LWhlYWRlciAk
e1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3hkZy1zaGVsbC94ZGctc2hlbGwt
dW5zdGFibGUtdjYueG1sICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9
L3hkZy1zaGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaAogICAgIFZFUkJBVElNKQog
CitsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkRf
RkRPKQorbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMg
V1BFX0JBQ0tFTkQ9ImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpCisKIGlmIChFTkFCTEVfQUND
RVNTSUJJTElUWSkKKyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElP
TlMgRU5BQkxFX0FDQ0VTU0lCSUxJVFk9MSkKICAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFj
a2VuZHNfUFJJVkFURV9ERUZJTklUSU9OUwotICAgICAgICBFTkFCTEVfQUNDRVNTSUJJTElUWT0x
CiAgICAgICAgIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9R0xJQl9WRVJTSU9OXzJfNDAKICAg
ICApCiAgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUyBBVEs6OkJy
aWRnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAgYi9U
b29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCmluZGV4IGEzNzQxMDRkMDVhMS4uMDA4
ZWNlZDBiYTc5IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3Bw
CisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKQEAgLTMxLDcgKzMxLDcg
QEAgVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWln
aHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogewotICAg
IHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvIik7CisgICAgd3BlX2xv
YWRlcl9pbml0KFdQRV9CQUNLRU5EKTsKIH0KIAogVmlld0JhY2tlbmQ6On5WaWV3QmFja2VuZCgp
ID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5o
IGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMGU5ODA1YWY4NzgxLi41
MzUwODFhMWMwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5o
CisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yNiwyNiArMjYsMTIg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHdwZS9mZG8u
aD4KKyNpbmNsdWRlIDx3cGUvd3BlLmg+CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFU1NJQklM
SVRZKSAmJiBFTkFCTEVfQUNDRVNTSUJJTElUWQogdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBB
dGtPYmplY3Q7CiAjZW5kaWYKIAotdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Ci10eXBlZGVmIHZv
aWQqIEVHTENvbnRleHQ7Ci10eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci1zdHJ1Y3Qgd3BlX2Zk
b19lZ2xfZXhwb3J0ZWRfaW1hZ2U7Ci0KLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSwgNSwg
MCkKLXN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXI7Ci0jZW5kaWYKLQotLy8gTWFu
dWFsbHkgcHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0
Zm9ybS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4KLSNpZm5kZWYgRUdMX0NBU1QKLSNkZWZpbmUgRUdM
X0NBU1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCi0jZW5kaWYKLQog
bmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5j
cHAgYi9Ub29scy93cGUvYmFja2VuZHMvZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGIzZDI2MjUyOGQzCi0tLSAv
ZGV2L251bGwKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5k
RmRvLmNwcApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2Fs
aWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSGVhZGxlc3NWaWV3QmFja2VuZC5oIgorCisj
aW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4Pgor
I2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQor
I2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CisjaW5jbHVkZSA8d3BlL3Vuc3RhYmxlL2Zkby1z
aG0uaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKKworc3RydWN0
IEhlYWRsZXNzSW5zdGFuY2UgeworICAgIHN0YXRpYyBjb25zdCBIZWFkbGVzc0luc3RhbmNlJiBz
aW5nbGV0b24oKQorICAgIHsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZs
YWc7CisgICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5zdGFuY2U7CisgICAgICAg
IHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCisgICAgICAgICAgICBbXSB7CisjaWYgV1BFX0ZE
T19DSEVDS19WRVJTSU9OKDEsNywwKQorICAgICAgICAgICAgICAgIHdwZV9mZG9faW5pdGlhbGl6
ZV9zaG0oKTsKKyNlbmRpZgorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHNfaW5z
dGFuY2U7CisgICAgfQorfTsKKworc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX2J1ZmZl
cktleTsKKworSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJf
dCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQorICAgIDogVmlld0JhY2tlbmQod2lkdGgsIGhlaWdo
dCkKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBTSE0gbW9kZS4KKyAgICBI
ZWFkbGVzc0luc3RhbmNlOjpzaW5nbGV0b24oKTsKKworICAgIHN0YXRpYyBzdHJ1Y3Qgd3BlX3Zp
ZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJsZUNsaWVudCA9IHsKKyAg
ICAgICAgbnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJ
T04oMSw3LDApCisgICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCisgICAgICAgIFtdKHZvaWQq
IGRhdGEsIHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGJ1ZmZlcikKKyAgICAg
ICAgeworICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNfY2FzdDxIZWFkbGVzc1Zp
ZXdCYWNrZW5kKj4oZGF0YSk7CisgICAgICAgICAgICBiYWNrZW5kLm1fdXBkYXRlLnBlbmRpbmcg
PSB0cnVlOworCisgICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBzaG90KGJ1ZmZlcik7Cisg
ICAgICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX3JlbGVh
c2Vfc2htX2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJsZSwgYnVmZmVyKTsKKyAg
ICAgICAgfSwKKyNlbHNlCisgICAgICAgIG51bGxwdHIsCisjZW5kaWYKKyAgICAgICAgbnVsbHB0
ciwKKyAgICAgICAgbnVsbHB0ciwKKyAgICB9OworICAgIG1fZXhwb3J0YWJsZSA9IHdwZV92aWV3
X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0aGlzLCB3
aWR0aCwgaGVpZ2h0KTsKKworICAgIGFkZEFjdGl2aXR5U3RhdGUod3BlX3ZpZXdfYWN0aXZpdHlf
c3RhdGVfdmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQgfCB3cGVfdmll
d19hY3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cpOworCisgICAgeworICAgICAgICB1aW50MzJfdCBz
dHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMy
LCBtX3dpZHRoKTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3IHVpbnQ4X3Rbc3RyaWRl
ICogbV9oZWlnaHRdOworICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBzdHJpZGUgKiBtX2hlaWdo
dCk7CisKKyAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zv
cl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgICAgIG1fd2lkdGgs
IG1faGVpZ2h0LCBzdHJpZGUpOworCisgICAgICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0
YShtX3NuYXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgICAgIFtdKHZvaWQq
IGRhdGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50
OF90Kj4oZGF0YSk7CisgICAgICAgICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyAg
ICB9CisKKyNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKKyAgICB3cGVfdmlld19iYWNr
ZW5kX3NldF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRPTUZ1bGxTY3JlZW5SZXF1
ZXN0LCB0aGlzKTsKKyNlbmRpZgorCisgICAgbV91cGRhdGUuc291cmNlID0gZ190aW1lb3V0X3Nv
dXJjZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxi
YWNrKG1fdXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4gZ2Jvb2xlYW4geworICAg
ICAgICBzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSktPnZzeW5jKCk7Cisg
ICAgICAgIHJldHVybiBUUlVFOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNl
X3NldF9wcmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7CisgICAg
Z19zb3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2NvbnRleHRfZGVmYXVsdCgp
KTsKK30KKworSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQoKQorewor
ICAgIGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsKKyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3Vw
ZGF0ZS5zb3VyY2UpOworICAgICAgICBnX3NvdXJjZV91bnJlZihtX3VwZGF0ZS5zb3VyY2UpOwor
ICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ry
b3kobV9zbmFwc2hvdCk7CisKKyAgICBpZiAobV9leHBvcnRhYmxlKQorICAgICAgICB3cGVfdmll
d19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRhYmxlKTsKK30KKworc3Ry
dWN0IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tlbmQoKSBjb25z
dAoreworICAgIGlmIChtX2V4cG9ydGFibGUpCisgICAgICAgIHJldHVybiB3cGVfdmlld19iYWNr
ZW5kX2V4cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBvcnRhYmxlKTsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKK30KKworUGxhdGZvcm1JbWFnZSBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpz
bmFwc2hvdCgpCit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc25hcHNo
b3QpOworfQorCit2b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KFBsYXRm
b3JtQnVmZmVyIGV4cG9ydGVkQnVmZmVyKQoreworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigx
LDcsMCkKKyAgICBzdHJ1Y3Qgd2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1f
ZXhwb3J0ZWRfYnVmZmVyX2dldF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKKyAgICB7Cisg
ICAgICAgIGF1dG8gZm9ybWF0ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7
CisgICAgICAgIGlmIChmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQg
IT0gV0xfU0hNX0ZPUk1BVF9YUkdCODg4OCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB1aW50MzJfdCBidWZmZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0
aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBu
ZXcgdWludDhfdFtidWZmZXJTdHJpZGUgKiBtX2hlaWdodF07CisgICAgbWVtc2V0KGJ1ZmZlciwg
MCwgYnVmZmVyU3RyaWRlICogbV9oZWlnaHQpOworCisgICAgeworICAgICAgICB1aW50MzJfdCB3
aWR0aCA9IHN0ZDo6bWluPHVpbnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVm
ZmVyX2dldF93aWR0aChzaG1CdWZmZXIpKSk7CisgICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0
ZDo6bWluPHVpbnQzMl90PihtX2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRf
aGVpZ2h0KHNobUJ1ZmZlcikpKTsKKyAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgo
MCwgd2xfc2htX2J1ZmZlcl9nZXRfc3RyaWRlKHNobUJ1ZmZlcikpOworCisgICAgICAgIHdsX3No
bV9idWZmZXJfYmVnaW5fYWNjZXNzKHNobUJ1ZmZlcik7CisgICAgICAgIGF1dG8qIGRhdGEgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsK
KworICAgICAgICBmb3IgKHVpbnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAg
ICAgICAgIGZvciAodWludDMyX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAg
ICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUg
KiB5ICsgNCAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICog
eSArIDQgKiB4ICsgMV0gPSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRl
ICogeSArIDQgKiB4ICsgMl07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAq
IHkgKyA0ICogeCArIDNdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1C
dWZmZXIpOworICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJm
YWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7CisKKyAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vf
c3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAorICAg
ICAgICBtX3dpZHRoLCBtX2hlaWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJ
Uk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCkpOworCisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBidWZmZXJLZXk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25h
cHNob3QsICZidWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgW10odm9pZCogZGF0YSkgeworICAg
ICAgICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAg
ICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICB9KTsKKyAgICBjYWlyb19zdXJmYWNl
X21hcmtfZGlydHkobV9zbmFwc2hvdCk7CisjZWxzZQorICAgICh2b2lkKWV4cG9ydGVkQnVmZmVy
OworI2VuZGlmCit9CisKK3ZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQoreworI2lm
IFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICBpZiAobV91cGRhdGUucGVuZGluZykK
KyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9j
b21wbGV0ZShtX2V4cG9ydGFibGUpOworI2VuZGlmCisgICAgbV91cGRhdGUucGVuZGluZyA9IGZh
bHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBh
L1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFj
a2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVu
YW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApyZW5hbWUg
dG8gVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKZGlmZiAtLWdp
dCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFt
ZSBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCnJlbmFtZSB0byBU
b29scy93cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmgKaW5kZXggNDc0ZThiMjEy
YjcxLi45Mzk4Y2VmOTM1MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dW
aWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tl
bmQuaApAQCAtMzAsOCArMzAsMTYgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8dW5v
cmRlcmVkX21hcD4KIAordHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVH
TENvbnRleHQ7Cit0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7CiB0eXBlZGVmIHZvaWQqIEVHTFN1
cmZhY2U7Ci10eXBlZGVmIHN0cnVjdCB3bF9lZ2xfd2luZG93ICAqRUdMTmF0aXZlV2luZG93VHlw
ZTsKK3R5cGVkZWYgc3RydWN0IHdsX2VnbF93aW5kb3cgKkVHTE5hdGl2ZVdpbmRvd1R5cGU7CisK
Ky8vIE1hbnVhbGx5IHByb3ZpZGUgdGhlIEVHTF9DQVNUIEMrKyBkZWZpbml0aW9uIGluIGNhc2Ug
ZWdscGxhdGZvcm0uaCBkb2Vzbid0IHByb3ZpZGUgaXQuCisjaWZuZGVmIEVHTF9DQVNUCisjZGVm
aW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKQorI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCg==
</data>
<flag name="commit-queue"
          id="476612"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450250</attachid>
            <date>2022-01-28 10:22:54 -0800</date>
            <delta_ts>2022-01-28 10:34:52 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>20842</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZmQ1ZTM4MzYxNTEuLjliNmJiNzMzNWJi
YiAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtNywxMyArNywxMSBAQCBmaWxlKE1B
S0VfRElSRUNUT1JZICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9KQog
c2V0KFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgIEhlYWRsZXNzVmlld0Jh
Y2tlbmQuaAogICAgIFZpZXdCYWNrZW5kLmgKLSAgICBXaW5kb3dWaWV3QmFja2VuZC5oCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAgIEhlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCiAgICAgVmlld0JhY2tlbmQuY3BwCi0gICAgV2luZG93Vmlld0JhY2tlbmQuY3BwCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC0y
Niw2ICsyNCwxMyBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgIFdQRTo6
bGlid3BlCiApCiAKK2lmIChVU0VfQ0FJUk8pCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX0RFRklOSVRJT05TIFVTRV9DQUlSTz0xKQorZW5kaWYgKCkKK2lmIChVU0VfR0xJQikK
KyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgVVNFX0dMSUI9
MSkKK2VuZGlmICgpCisKIHNldChXUEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0xJQlJBUklF
UyBXUEVUb29saW5nQmFja2VuZHMpCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9J
TkNMVURFX0RJUkVDVE9SSUVTICR7V1BFVG9vbGluZ0JhY2tlbmRzX0ZSQU1FV09SS19IRUFERVJT
X0RJUn0pCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9ERVBFTkRFTkNJRVMgV1BF
VG9vbGluZ0JhY2tlbmRzX0NvcHlIZWFkZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tl
bmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNz
Vmlld0JhY2tlbmQuY3BwCmluZGV4IDM5ZjBlMjZkMWJiMy4uZjY0OGU3MThiNTFkIDEwMDY0NAot
LS0gYS9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKKysrIGIvVG9v
bHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCkBAIC0yNSwxODEgKzI1LDgg
QEAKIAogI2luY2x1ZGUgIkhlYWRsZXNzVmlld0JhY2tlbmQuaCIKIAotI2luY2x1ZGUgPGNhc3Nl
cnQ+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmlz
dGQuaD4KLQotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSNpbmNsdWRlIDx3YXls
YW5kLXNlcnZlci5oPgotI2luY2x1ZGUgPHdwZS91bnN0YWJsZS9mZG8tc2htLmg+Ci0jZW5kaWYK
LQogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKLXN0cnVjdCBIZWFkbGVzc0luc3Rh
bmNlIHsKLSAgICBzdGF0aWMgY29uc3QgSGVhZGxlc3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKLSAg
ICB7Ci0gICAgICAgIHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOwotICAgICAgICBz
dGF0aWMgSGVhZGxlc3NJbnN0YW5jZSBzX2luc3RhbmNlOwotICAgICAgICBzdGQ6OmNhbGxfb25j
ZShzX29uY2VGbGFnLAotICAgICAgICAgICAgW10gewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lP
TigxLDcsMCkKLSAgICAgICAgICAgICAgICB3cGVfZmRvX2luaXRpYWxpemVfc2htKCk7Ci0jZW5k
aWYKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiBzX2luc3RhbmNlOwotICAgIH0K
LX07Ci0KLXN0YXRpYyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6OkhlYWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQz
Ml90IGhlaWdodCkKLSAgICA6IFZpZXdCYWNrZW5kKHdpZHRoLCBoZWlnaHQpCi17Ci0gICAgLy8g
VGhpcyBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgU0hNIG1vZGUuCi0gICAgSGVhZGxlc3NJbnN0YW5j
ZTo6c2luZ2xldG9uKCk7Ci0KLSAgICBzdGF0aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhw
b3J0YWJsZV9mZG9fY2xpZW50IGV4cG9ydGFibGVDbGllbnQgPSB7Ci0gICAgICAgIG51bGxwdHIs
Ci0gICAgICAgIG51bGxwdHIsCi0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAg
ICAgICAvLyBleHBvcnRfc2htX2J1ZmZlcgotICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qg
d3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGF1dG8mIGJhY2tlbmQgPSAqc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRh
dGEpOwotICAgICAgICAgICAgYmFja2VuZC5tX3VwZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKLQotICAg
ICAgICAgICAgYmFja2VuZC51cGRhdGVTbmFwc2hvdChidWZmZXIpOwotICAgICAgICAgICAgd3Bl
X3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRl
ZF9idWZmZXIoYmFja2VuZC5tX2V4cG9ydGFibGUsIGJ1ZmZlcik7Ci0gICAgICAgIH0sCi0jZWxz
ZQotICAgICAgICBudWxscHRyLAotI2VuZGlmCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51
bGxwdHIsCi0gICAgfTsKLSAgICBtX2V4cG9ydGFibGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9y
dGFibGVfZmRvX2NyZWF0ZSgmZXhwb3J0YWJsZUNsaWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7
Ci0KLSAgICBhZGRBY3Rpdml0eVN0YXRlKHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUg
fCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfaW5fd2luZG93KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9f
Zm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0g
ICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsK
LSAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc3RyaWRlICogbV9oZWlnaHQpOwotCi0gICAgICAg
IG1fc25hcHNob3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIs
IENBSVJPX0ZPUk1BVF9BUkdCMzIsCi0gICAgICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3Ry
aWRlKTsKLQotICAgICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwg
JnNfYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgICAgICBbXSh2b2lkKiBkYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwot
ICAgICAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgICAgIH0pOwotICAgICAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Ci0gICAgfQotCi0jaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCi0gICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNj
cmVlbl9oYW5kbGVyKGJhY2tlbmQoKSwgb25ET01GdWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7Ci0j
ZW5kaWYKLQotICAgIG1fdXBkYXRlLnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNF
Q19QRVJfU0VDIC8gNjAwMDApOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5z
b3VyY2UsIFtdKGdwb2ludGVyIGRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RhdGljX2Nh
c3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpLT52c3luYygpOwotICAgICAgICByZXR1cm4g
VFJVRTsKLSAgICB9LCB0aGlzLCBudWxscHRyKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHko
bV91cGRhdGUuc291cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX2F0dGFj
aChtX3VwZGF0ZS5zb3VyY2UsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7Ci19Ci0KLUhlYWRs
ZXNzVmlld0JhY2tlbmQ6On5IZWFkbGVzc1ZpZXdCYWNrZW5kKCkKLXsKLSAgICBpZiAobV91cGRh
dGUuc291cmNlKSB7Ci0gICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsK
LSAgICAgICAgZ19zb3VyY2VfdW5yZWYobV91cGRhdGUuc291cmNlKTsKLSAgICB9Ci0KLSAgICBp
ZiAobV9zbmFwc2hvdCkKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3Qp
OwotCi0gICAgaWYgKG1fZXhwb3J0YWJsZSkKLSAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkb19kZXN0cm95KG1fZXhwb3J0YWJsZSk7Ci19Ci0KLXN0cnVjdCB3cGVfdmlld19i
YWNrZW5kKiBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kKCkgY29uc3QKLXsKLSAgICBpZiAo
bV9leHBvcnRhYmxlKQotICAgICAgICByZXR1cm4gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxl
X2Zkb19nZXRfdmlld19iYWNrZW5kKG1fZXhwb3J0YWJsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7
Ci19Ci0KLWNhaXJvX3N1cmZhY2VfdCogSGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QoKQot
ewotICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3NuYXBzaG90KTsKLX0KLQot
dm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19z
aG1fZXhwb3J0ZWRfYnVmZmVyKiBleHBvcnRlZEJ1ZmZlcikKLXsKLSNpZiBXUEVfRkRPX0NIRUNL
X1ZFUlNJT04oMSw3LDApCi0gICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9IHdw
ZV9mZG9fc2htX2V4cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZlcik7
Ci0gICAgewotICAgICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1hdChz
aG1CdWZmZXIpOwotICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4ODgg
JiYgZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgdWludDhfdCog
YnVmZmVyID0gbmV3IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOwotICAgIG1lbXNl
dChidWZmZXIsIDAsIGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKLQotICAgIHsKLSAgICAgICAg
dWludDMyX3Qgd2lkdGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgoMCwg
d2xfc2htX2J1ZmZlcl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOwotICAgICAgICB1aW50MzJfdCBo
ZWlnaHQgPSBzdGQ6Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3NobV9i
dWZmZXJfZ2V0X2hlaWdodChzaG1CdWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IHN0cmlkZSA9
IHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKLQotICAg
ICAgICB3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgICAgICBhdXRv
KiBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEoc2ht
QnVmZmVyKSk7Ci0KLSAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5
KSB7Ci0gICAgICAgICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewot
ICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9IGRh
dGFbc3RyaWRlICogeSArIDQgKiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZl
clN0cmlkZSAqIHkgKyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAxXTsK
LSAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0gPSBk
YXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDJdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgM107
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3bF9zaG1fYnVmZmVyX2VuZF9h
Y2Nlc3Moc2htQnVmZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hvdCkKLSAgICAgICAg
Y2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgbV9zbmFwc2hvdCA9IGNh
aXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FS
R0IzMiwKLSAgICAgICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9y
X3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKLQotICAgIHN0YXRpYyBjYWly
b191c2VyX2RhdGFfa2V5X3QgYnVmZmVyS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJf
ZGF0YShtX3NuYXBzaG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgIFtdKHZvaWQqIGRh
dGEpIHsKLSAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihk
YXRhKTsKLSAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgfSk7Ci0gICAgY2Fp
cm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc25hcHNob3QpOwotI2Vsc2UKLSAgICAodm9pZClleHBv
cnRlZEJ1ZmZlcjsKLSNlbmRpZgotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZzeW5j
KCkKLXsKLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgaWYgKG1fdXBkYXRl
LnBlbmRpbmcpCi0gICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlzcGF0
Y2hfZnJhbWVfY29tcGxldGUobV9leHBvcnRhYmxlKTsKLSNlbmRpZgotICAgIG1fdXBkYXRlLnBl
bmRpbmcgPSBmYWxzZTsKLX0KLQogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQogYm9v
bCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0KHZvaWQqIGRhdGEs
IGJvb2wgZnVsbHNjcmVlbikKIHsKQEAgLTIyNCw1ICs1MSw0IEBAIHZvaWQgSGVhZGxlc3NWaWV3
QmFja2VuZDo6ZGlzcGF0Y2hGdWxsc2NyZWVuRXZlbnQoKQogCiAjZW5kaWYKIAotCiB9IC8vIG5h
bWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5k
cy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3
QmFja2VuZC5oCmluZGV4IGZjNDEyMzc3ZTY1Ni4uYjhmOWNmZjliNTJkIDEwMDY0NAotLS0gYS9U
b29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9i
YWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29w
eXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwpAQCAtMjYsMTEgKzI3LDMwIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIlZpZXdC
YWNrZW5kLmgiCisKKyNpZiBkZWZpbmVkKFdQRV9CQUNLRU5EX0ZETykKKyNpbmNsdWRlIDx3cGUv
ZmRvLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KICNp
bmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9HTElCKSAmJiBVU0Vf
R0xJQgogI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgogCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0Jh
Y2tlbmRzIHsKIAorI2lmIGRlZmluZWQoV1BFX0JBQ0tFTkRfRkRPKQordXNpbmcgUGxhdGZvcm1C
dWZmZXIgPSBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKjsKK3VzaW5nIFBsYXRm
b3JtVmlld0JhY2tlbmQgPSBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkbyo7
CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJUk8KK3VzaW5nIFBs
YXRmb3JtSW1hZ2UgPSBjYWlyb19zdXJmYWNlX3QqOworI2VuZGlmCisKIGNsYXNzIEhlYWRsZXNz
Vmlld0JhY2tlbmQgZmluYWwgOiBwdWJsaWMgVmlld0JhY2tlbmQgewogcHVibGljOgogICAgIEhl
YWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCk7CkBAIC0z
OCwxMCArNTgsMTAgQEAgcHVibGljOgogCiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJh
Y2tlbmQoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogc25hcHNob3Qo
KTsKKyAgICBQbGF0Zm9ybUltYWdlIHNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1
cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKik7CisgICAg
dm9pZCB1cGRhdGVTbmFwc2hvdChQbGF0Zm9ybUJ1ZmZlcik7CiAgICAgdm9pZCB2c3luYygpOwog
CiAjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCkBAIC00OSwxNSArNjksMTUgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGRpc3BhdGNoRnVsbHNjcmVlbkV2ZW50KCk7CiAjZW5kaWYKIAorICAg
IFBsYXRmb3JtVmlld0JhY2tlbmQgbV9leHBvcnRhYmxlIHsgbnVsbHB0ciB9OworICAgIFBsYXRm
b3JtSW1hZ2UgbV9zbmFwc2hvdCB7IG51bGxwdHIgfTsKIAotICAgIHN0cnVjdCB3cGVfdmlld19i
YWNrZW5kX2V4cG9ydGFibGVfZmRvKiBtX2V4cG9ydGFibGUgeyBudWxscHRyIH07Ci0KLSAgICBj
YWlyb19zdXJmYWNlX3QqIG1fc25hcHNob3QgeyBudWxscHRyIH07Ci0KKyNpZiBkZWZpbmVkKFVT
RV9HTElCKSAmJiBVU0VfR0xJQgogICAgIHN0cnVjdCB7CiAgICAgICAgIEdTb3VyY2UqIHNvdXJj
ZSB7IG51bGxwdHIgfTsKICAgICAgICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKICAgICB9IG1f
dXBkYXRlOworI2VuZGlmCiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKICAgICBi
b29sIG1faXNfZnVsbHNjcmVlbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFj
a2VuZHMvUGxhdGZvcm1XUEUuY21ha2UgYi9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUu
Y21ha2UKaW5kZXggMDcyMTYzNDE4MDhmLi45YWUwM2Y3NTEzODQgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy93cGUvYmFja2VuZHMv
UGxhdGZvcm1XUEUuY21ha2UKQEAgLTUsMTYgKzUsMjIgQEAgZmluZF9wYWNrYWdlKFdQRUJhY2tl
bmRfZmRvIDEuMy4wIFJFUVVJUkVEKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNf
UFVCTElDX0hFQURFUlMKICAgICAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVEX1NPVVJDRVNf
RElSfS94ZGctc2hlbGwtdW5zdGFibGUtdjYtY2xpZW50LXByb3RvY29sLmgKKyAgICBmZG8vV2lu
ZG93Vmlld0JhY2tlbmQuaAogKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfU09V
UkNFUwogICAgICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hkZy1z
aGVsbC11bnN0YWJsZS12Ni1wcm90b2NvbC5jCisKICAgICBhdGsvVmlld0JhY2tlbmRBdGsuY3Bw
CiAgICAgYXRrL1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKKworICAgIGZkby9IZWFk
bGVzc1ZpZXdCYWNrZW5kRmRvLmNwcAorICAgIGZkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKICkK
IAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCisgICAgJHtUT09MU19ESVJ9
L3dwZS9iYWNrZW5kcy9mZG8KICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NZ
U1RFTV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC00OCw5ICs1NCwxMiBAQCBhZGRfY3VzdG9tX2Nv
bW1hbmQoCiAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY2xpZW50LWhlYWRlciAke1dB
WUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3hkZy1zaGVsbC94ZGctc2hlbGwtdW5z
dGFibGUtdjYueG1sICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hk
Zy1zaGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaAogICAgIFZFUkJBVElNKQogCits
aXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkRfRkRP
KQorbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMgV1BF
X0JBQ0tFTkQ9ImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpCisKIGlmIChFTkFCTEVfQUNDRVNT
SUJJTElUWSkKKyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMg
RU5BQkxFX0FDQ0VTU0lCSUxJVFk9MSkKICAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2Vu
ZHNfUFJJVkFURV9ERUZJTklUSU9OUwotICAgICAgICBFTkFCTEVfQUNDRVNTSUJJTElUWT0xCiAg
ICAgICAgIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9R0xJQl9WRVJTSU9OXzJfNDAKICAgICAp
CiAgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUyBBVEs6OkJyaWRn
ZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAgYi9Ub29s
cy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCmluZGV4IGEzNzQxMDRkMDVhMS4uMDA4ZWNl
ZDBiYTc5IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCisr
KyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAg
Vmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQp
CiAgICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogewotICAgIHdw
ZV9sb2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvIik7CisgICAgd3BlX2xvYWRl
cl9pbml0KFdQRV9CQUNLRU5EKTsKIH0KIAogVmlld0JhY2tlbmQ6On5WaWV3QmFja2VuZCgpID0g
ZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMGU5ODA1YWY4NzgxLi41MzUw
ODFhMWMwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisr
KyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yNiwyNiArMjYsMTIgQEAK
ICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHdwZS9mZG8uaD4K
KyNpbmNsdWRlIDx3cGUvd3BlLmg+CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFU1NJQklMSVRZ
KSAmJiBFTkFCTEVfQUNDRVNTSUJJTElUWQogdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtP
YmplY3Q7CiAjZW5kaWYKIAotdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Ci10eXBlZGVmIHZvaWQq
IEVHTENvbnRleHQ7Ci10eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci1zdHJ1Y3Qgd3BlX2Zkb19l
Z2xfZXhwb3J0ZWRfaW1hZ2U7Ci0KLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSwgNSwgMCkK
LXN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXI7Ci0jZW5kaWYKLQotLy8gTWFudWFs
bHkgcHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0Zm9y
bS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4KLSNpZm5kZWYgRUdMX0NBU1QKLSNkZWZpbmUgRUdMX0NB
U1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCi0jZW5kaWYKLQogbmFt
ZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKZGlmZiAt
LWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5jcHAg
Yi9Ub29scy93cGUvYmFja2VuZHMvZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGIzZDI2MjUyOGQzCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRv
LmNwcApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEg
Uy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiSGVhZGxlc3NWaWV3QmFja2VuZC5oIgorCisjaW5j
bHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4PgorI2lu
Y2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQorI2lu
Y2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+CisjaW5jbHVkZSA8d3BlL3Vuc3RhYmxlL2Zkby1zaG0u
aD4KKyNlbmRpZgorCituYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKKworc3RydWN0IEhl
YWRsZXNzSW5zdGFuY2UgeworICAgIHN0YXRpYyBjb25zdCBIZWFkbGVzc0luc3RhbmNlJiBzaW5n
bGV0b24oKQorICAgIHsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7
CisgICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5zdGFuY2U7CisgICAgICAgIHN0
ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCisgICAgICAgICAgICBbXSB7CisjaWYgV1BFX0ZET19D
SEVDS19WRVJTSU9OKDEsNywwKQorICAgICAgICAgICAgICAgIHdwZV9mZG9faW5pdGlhbGl6ZV9z
aG0oKTsKKyNlbmRpZgorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHNfaW5zdGFu
Y2U7CisgICAgfQorfTsKKworc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX2J1ZmZlcktl
eTsKKworSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0KQorICAgIDogVmlld0JhY2tlbmQod2lkdGgsIGhlaWdodCkK
K3sKKyAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBTSE0gbW9kZS4KKyAgICBIZWFk
bGVzc0luc3RhbmNlOjpzaW5nbGV0b24oKTsKKworICAgIHN0YXRpYyBzdHJ1Y3Qgd3BlX3ZpZXdf
YmFja2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJsZUNsaWVudCA9IHsKKyAgICAg
ICAgbnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04o
MSw3LDApCisgICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCisgICAgICAgIFtdKHZvaWQqIGRh
dGEsIHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGJ1ZmZlcikKKyAgICAgICAg
eworICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdC
YWNrZW5kKj4oZGF0YSk7CisgICAgICAgICAgICBiYWNrZW5kLm1fdXBkYXRlLnBlbmRpbmcgPSB0
cnVlOworCisgICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBzaG90KGJ1ZmZlcik7CisgICAg
ICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX3JlbGVhc2Vf
c2htX2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJsZSwgYnVmZmVyKTsKKyAgICAg
ICAgfSwKKyNlbHNlCisgICAgICAgIG51bGxwdHIsCisjZW5kaWYKKyAgICAgICAgbnVsbHB0ciwK
KyAgICAgICAgbnVsbHB0ciwKKyAgICB9OworICAgIG1fZXhwb3J0YWJsZSA9IHdwZV92aWV3X2Jh
Y2tlbmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0aGlzLCB3aWR0
aCwgaGVpZ2h0KTsKKworICAgIGFkZEFjdGl2aXR5U3RhdGUod3BlX3ZpZXdfYWN0aXZpdHlfc3Rh
dGVfdmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQgfCB3cGVfdmlld19h
Y3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cpOworCisgICAgeworICAgICAgICB1aW50MzJfdCBzdHJp
ZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBt
X3dpZHRoKTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3IHVpbnQ4X3Rbc3RyaWRlICog
bV9oZWlnaHRdOworICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBzdHJpZGUgKiBtX2hlaWdodCk7
CisKKyAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9k
YXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgICAgIG1fd2lkdGgsIG1f
aGVpZ2h0LCBzdHJpZGUpOworCisgICAgICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YSht
X3NuYXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgICAgIFtdKHZvaWQqIGRh
dGEpIHsKKyAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4oZGF0YSk7CisgICAgICAgICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICAgICAg
fSk7CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyAgICB9
CisKKyNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKKyAgICB3cGVfdmlld19iYWNrZW5k
X3NldF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0
LCB0aGlzKTsKKyNlbmRpZgorCisgICAgbV91cGRhdGUuc291cmNlID0gZ190aW1lb3V0X3NvdXJj
ZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNr
KG1fdXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAg
ICBzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSktPnZzeW5jKCk7CisgICAg
ICAgIHJldHVybiBUUlVFOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNlX3Nl
dF9wcmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7CisgICAgZ19z
b3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2NvbnRleHRfZGVmYXVsdCgpKTsK
K30KKworSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQoKQoreworICAg
IGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsKKyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3VwZGF0
ZS5zb3VyY2UpOworICAgICAgICBnX3NvdXJjZV91bnJlZihtX3VwZGF0ZS5zb3VyY2UpOworICAg
IH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3ko
bV9zbmFwc2hvdCk7CisKKyAgICBpZiAobV9leHBvcnRhYmxlKQorICAgICAgICB3cGVfdmlld19i
YWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRhYmxlKTsKK30KKworc3RydWN0
IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tlbmQoKSBjb25zdAor
eworICAgIGlmIChtX2V4cG9ydGFibGUpCisgICAgICAgIHJldHVybiB3cGVfdmlld19iYWNrZW5k
X2V4cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBvcnRhYmxlKTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKK30KKworUGxhdGZvcm1JbWFnZSBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpzbmFw
c2hvdCgpCit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc25hcHNob3Qp
OworfQorCit2b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KFBsYXRmb3Jt
QnVmZmVyIGV4cG9ydGVkQnVmZmVyKQoreworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcs
MCkKKyAgICBzdHJ1Y3Qgd2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1fZXhw
b3J0ZWRfYnVmZmVyX2dldF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKKyAgICB7CisgICAg
ICAgIGF1dG8gZm9ybWF0ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7Cisg
ICAgICAgIGlmIChmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQgIT0g
V0xfU0hNX0ZPUk1BVF9YUkdCODg4OCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICB1aW50MzJfdCBidWZmZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChD
QUlST19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBuZXcg
dWludDhfdFtidWZmZXJTdHJpZGUgKiBtX2hlaWdodF07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwg
YnVmZmVyU3RyaWRlICogbV9oZWlnaHQpOworCisgICAgeworICAgICAgICB1aW50MzJfdCB3aWR0
aCA9IHN0ZDo6bWluPHVpbnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVy
X2dldF93aWR0aChzaG1CdWZmZXIpKSk7CisgICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0ZDo6
bWluPHVpbnQzMl90PihtX2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfaGVp
Z2h0KHNobUJ1ZmZlcikpKTsKKyAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgoMCwg
d2xfc2htX2J1ZmZlcl9nZXRfc3RyaWRlKHNobUJ1ZmZlcikpOworCisgICAgICAgIHdsX3NobV9i
dWZmZXJfYmVnaW5fYWNjZXNzKHNobUJ1ZmZlcik7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsKKwor
ICAgICAgICBmb3IgKHVpbnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAg
ICAgIGZvciAodWludDMyX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICAg
ICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUgKiB5
ICsgNCAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSAr
IDQgKiB4ICsgMV0gPSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOworICAgICAgICAgICAg
ICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRlICog
eSArIDQgKiB4ICsgMl07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkg
KyA0ICogeCArIDNdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1CdWZm
ZXIpOworICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNl
X2Rlc3Ryb3kobV9zbmFwc2hvdCk7CisKKyAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vfc3Vy
ZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAorICAgICAg
ICBtX3dpZHRoLCBtX2hlaWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9f
Rk9STUFUX0FSR0IzMiwgbV93aWR0aCkpOworCisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9r
ZXlfdCBidWZmZXJLZXk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNo
b3QsICZidWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgW10odm9pZCogZGF0YSkgeworICAgICAg
ICAgICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAgICAg
ICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICB9KTsKKyAgICBjYWlyb19zdXJmYWNlX21h
cmtfZGlydHkobV9zbmFwc2hvdCk7CisjZWxzZQorICAgICh2b2lkKWV4cG9ydGVkQnVmZmVyOwor
I2VuZGlmCit9CisKK3ZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQoreworI2lmIFdQ
RV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICBpZiAobV91cGRhdGUucGVuZGluZykKKyAg
ICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21w
bGV0ZShtX2V4cG9ydGFibGUpOworI2VuZGlmCisgICAgbV91cGRhdGUucGVuZGluZyA9IGZhbHNl
OworfQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rv
b2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFja2Vu
ZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1l
IGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApyZW5hbWUgdG8g
VG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKZGlmZiAtLWdpdCBh
L1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2JhY2tl
bmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBm
cm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCnJlbmFtZSB0byBUb29s
cy93cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmgKaW5kZXggNDc0ZThiMjEyYjcx
Li45Mzk4Y2VmOTM1MDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3
QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQu
aApAQCAtMzAsOCArMzAsMTYgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8dW5vcmRl
cmVkX21hcD4KIAordHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENv
bnRleHQ7Cit0eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7CiB0eXBlZGVmIHZvaWQqIEVHTFN1cmZh
Y2U7Ci10eXBlZGVmIHN0cnVjdCB3bF9lZ2xfd2luZG93ICAqRUdMTmF0aXZlV2luZG93VHlwZTsK
K3R5cGVkZWYgc3RydWN0IHdsX2VnbF93aW5kb3cgKkVHTE5hdGl2ZVdpbmRvd1R5cGU7CisKKy8v
IE1hbnVhbGx5IHByb3ZpZGUgdGhlIEVHTF9DQVNUIEMrKyBkZWZpbml0aW9uIGluIGNhc2UgZWds
cGxhdGZvcm0uaCBkb2Vzbid0IHByb3ZpZGUgaXQuCisjaWZuZGVmIEVHTF9DQVNUCisjZGVmaW5l
IEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKQorI2VuZGlm
CiAKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCg==
</data>
<flag name="commit-queue"
          id="476603"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450252</attachid>
            <date>2022-01-28 10:34:52 -0800</date>
            <delta_ts>2022-01-28 10:53:04 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>21084</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZmQ1ZTM4MzYxNTEuLjQ5MTY3ZjhhY2My
OSAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtNywxMyArNywxMSBAQCBmaWxlKE1B
S0VfRElSRUNUT1JZICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9KQog
c2V0KFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgIEhlYWRsZXNzVmlld0Jh
Y2tlbmQuaAogICAgIFZpZXdCYWNrZW5kLmgKLSAgICBXaW5kb3dWaWV3QmFja2VuZC5oCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAgIEhlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCiAgICAgVmlld0JhY2tlbmQuY3BwCi0gICAgV2luZG93Vmlld0JhY2tlbmQuY3BwCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC0y
Niw2ICsyNCwxMCBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgIFdQRTo6
bGlid3BlCiApCiAKK2lmIChVU0VfQ0FJUk8pCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX0RFRklOSVRJT05TIFVTRV9DQUlSTz0xKQorZW5kaWYgKCkKKwogc2V0KFdQRVRvb2xp
bmdCYWNrZW5kc19JTlRFUkZBQ0VfTElCUkFSSUVTIFdQRVRvb2xpbmdCYWNrZW5kcykKIHNldChX
UEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgJHtXUEVUb29s
aW5nQmFja2VuZHNfRlJBTUVXT1JLX0hFQURFUlNfRElSfSkKIHNldChXUEVUb29saW5nQmFja2Vu
ZHNfSU5URVJGQUNFX0RFUEVOREVOQ0lFUyBXUEVUb29saW5nQmFja2VuZHNfQ29weUhlYWRlcnMp
CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAg
Yi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKaW5kZXggMzlmMGUy
NmQxYmIzLi5mNjQ4ZTcxOGI1MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFk
bGVzc1ZpZXdCYWNrZW5kLmNwcAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3
QmFja2VuZC5jcHAKQEAgLTI1LDE4MSArMjUsOCBAQAogCiAjaW5jbHVkZSAiSGVhZGxlc3NWaWV3
QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2lu
Y2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWYgV1BFX0ZET19DSEVDS19W
RVJTSU9OKDEsNywwKQotI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+Ci0jaW5jbHVkZSA8d3Bl
L3Vuc3RhYmxlL2Zkby1zaG0uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tl
bmRzIHsKIAotc3RydWN0IEhlYWRsZXNzSW5zdGFuY2UgewotICAgIHN0YXRpYyBjb25zdCBIZWFk
bGVzc0luc3RhbmNlJiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIHNfb25jZUZsYWc7Ci0gICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5z
dGFuY2U7Ci0gICAgICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCi0gICAgICAgICAgICBb
XSB7Ci0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAgICAgICAgICAgICAgIHdw
ZV9mZG9faW5pdGlhbGl6ZV9zaG0oKTsKLSNlbmRpZgotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgcmV0dXJuIHNfaW5zdGFuY2U7Ci0gICAgfQotfTsKLQotc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBzX2J1ZmZlcktleTsKLQotSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3
QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQotICAgIDogVmlld0JhY2tl
bmQod2lkdGgsIGhlaWdodCkKLXsKLSAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBT
SE0gbW9kZS4KLSAgICBIZWFkbGVzc0luc3RhbmNlOjpzaW5nbGV0b24oKTsKLQotICAgIHN0YXRp
YyBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJs
ZUNsaWVudCA9IHsKLSAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgbnVsbHB0ciwKLSNpZiBXUEVf
RkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCi0g
ICAgICAgIFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIq
IGJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNf
Y2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgICAgICBiYWNrZW5kLm1f
dXBkYXRlLnBlbmRpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBz
aG90KGJ1ZmZlcik7Ci0gICAgICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRv
X2Rpc3BhdGNoX3JlbGVhc2Vfc2htX2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJs
ZSwgYnVmZmVyKTsKLSAgICAgICAgfSwKLSNlbHNlCi0gICAgICAgIG51bGxwdHIsCi0jZW5kaWYK
LSAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgbnVsbHB0ciwKLSAgICB9OwotICAgIG1fZXhwb3J0
YWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxl
Q2xpZW50LCB0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGFkZEFjdGl2aXR5U3RhdGUod3Bl
X3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQgfCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cpOwotCi0gICAgewotICAg
ICAgICB1aW50MzJfdCBzdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlS
T19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKLSAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3
IHVpbnQ4X3Rbc3RyaWRlICogbV9oZWlnaHRdOwotICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBz
dHJpZGUgKiBtX2hlaWdodCk7Ci0KLSAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKLSAgICAg
ICAgICAgIG1fd2lkdGgsIG1faGVpZ2h0LCBzdHJpZGUpOwotCi0gICAgICAgIGNhaXJvX3N1cmZh
Y2Vfc2V0X3VzZXJfZGF0YShtX3NuYXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKLSAgICAg
ICAgICAgIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlW10gYnVm
ZmVyOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eSht
X3NuYXBzaG90KTsKLSAgICB9Ci0KLSNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKLSAg
ICB3cGVfdmlld19iYWNrZW5kX3NldF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRP
TUZ1bGxTY3JlZW5SZXF1ZXN0LCB0aGlzKTsKLSNlbmRpZgotCi0gICAgbV91cGRhdGUuc291cmNl
ID0gZ190aW1lb3V0X3NvdXJjZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7Ci0gICAgZ19z
b3VyY2Vfc2V0X2NhbGxiYWNrKG1fdXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4g
Z2Jvb2xlYW4gewotICAgICAgICBzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0
YSktPnZzeW5jKCk7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0sIHRoaXMsIG51bGxwdHIp
OwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlf
REVGQVVMVCk7Ci0gICAgZ19zb3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2Nv
bnRleHRfZGVmYXVsdCgpKTsKLX0KLQotSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmll
d0JhY2tlbmQoKQotewotICAgIGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsKLSAgICAgICAgZ19zb3Vy
Y2VfZGVzdHJveShtX3VwZGF0ZS5zb3VyY2UpOwotICAgICAgICBnX3NvdXJjZV91bnJlZihtX3Vw
ZGF0ZS5zb3VyY2UpOwotICAgIH0KLQotICAgIGlmIChtX3NuYXBzaG90KQotICAgICAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7Ci0KLSAgICBpZiAobV9leHBvcnRhYmxlKQot
ICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRh
YmxlKTsKLX0KLQotc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6
OmJhY2tlbmQoKSBjb25zdAotewotICAgIGlmIChtX2V4cG9ydGFibGUpCi0gICAgICAgIHJldHVy
biB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBv
cnRhYmxlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotY2Fpcm9fc3VyZmFjZV90KiBIZWFk
bGVzc1ZpZXdCYWNrZW5kOjpzbmFwc2hvdCgpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
cmVmZXJlbmNlKG1fc25hcHNob3QpOwotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVw
ZGF0ZVNuYXBzaG90KHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGV4cG9ydGVk
QnVmZmVyKQotewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSAgICBzdHJ1Y3Qg
d2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyX2dl
dF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gZm9ybWF0
ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7Ci0gICAgICAgIGlmIChmb3Jt
YXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9Y
UkdCODg4OCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1aW50MzJfdCBidWZm
ZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJH
QjMyLCBtX3dpZHRoKTsKLSAgICB1aW50OF90KiBidWZmZXIgPSBuZXcgdWludDhfdFtidWZmZXJT
dHJpZGUgKiBtX2hlaWdodF07Ci0gICAgbWVtc2V0KGJ1ZmZlciwgMCwgYnVmZmVyU3RyaWRlICog
bV9oZWlnaHQpOwotCi0gICAgewotICAgICAgICB1aW50MzJfdCB3aWR0aCA9IHN0ZDo6bWluPHVp
bnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dldF93aWR0aChzaG1C
dWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0ZDo6bWluPHVpbnQzMl90Piht
X2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfaGVpZ2h0KHNobUJ1ZmZlcikp
KTsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9n
ZXRfc3RyaWRlKHNobUJ1ZmZlcikpOwotCi0gICAgICAgIHdsX3NobV9idWZmZXJfYmVnaW5fYWNj
ZXNzKHNobUJ1ZmZlcik7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsKLQotICAgICAgICBmb3IgKHVp
bnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgICAgIGZvciAodWludDMy
X3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZl
clN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAwXTsK
LSAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMV0gPSBk
YXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgMl07
Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDNdID0g
ZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgIH0KLQot
ICAgIGlmIChtX3NuYXBzaG90KQotICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFw
c2hvdCk7Ci0KLSAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9y
X2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAotICAgICAgICBtX3dpZHRoLCBtX2hl
aWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwg
bV93aWR0aCkpOwotCi0gICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBidWZmZXJLZXk7
Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNob3QsICZidWZmZXJLZXks
IGJ1ZmZlciwKLSAgICAgICAgW10odm9pZCogZGF0YSkgewotICAgICAgICAgICAgYXV0byogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwotICAgICAgICAgICAgZGVsZXRlW10g
YnVmZmVyOwotICAgICAgICB9KTsKLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFw
c2hvdCk7Ci0jZWxzZQotICAgICh2b2lkKWV4cG9ydGVkQnVmZmVyOwotI2VuZGlmCi19Ci0KLXZv
aWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQotewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVS
U0lPTigxLDcsMCkKLSAgICBpZiAobV91cGRhdGUucGVuZGluZykKLSAgICAgICAgd3BlX3ZpZXdf
YmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFi
bGUpOwotI2VuZGlmCi0gICAgbV91cGRhdGUucGVuZGluZyA9IGZhbHNlOwotfQotCiAjaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCiBib29sIEhlYWRsZXNzVmlld0JhY2tlbmQ6Om9uRE9N
RnVsbFNjcmVlblJlcXVlc3Qodm9pZCogZGF0YSwgYm9vbCBmdWxsc2NyZWVuKQogewpAQCAtMjI0
LDUgKzUxLDQgQEAgdm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpkaXNwYXRjaEZ1bGxzY3JlZW5F
dmVudCgpCiAKICNlbmRpZgogCi0KIH0gLy8gbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuaCBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmgKaW5kZXggZmM0MTIzNzdlNjU2
Li5iOGY5Y2ZmOWI1MmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1Zp
ZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiwxMSArMjcsMzAgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVmlld0JhY2tlbmQuaCIKKworI2lmIGRlZmluZWQoV1BF
X0JBQ0tFTkRfRkRPKQorI2luY2x1ZGUgPHdwZS9mZG8uaD4KKyNlbmRpZgorCisjaWYgZGVmaW5l
ZChVU0VfQ0FJUk8pICYmIFVTRV9DQUlSTwogI2luY2x1ZGUgPGNhaXJvLmg+CisjZW5kaWYKKwor
I2lmIGRlZmluZWQoVVNFX0dMSUIpICYmIFVTRV9HTElCCiAjaW5jbHVkZSA8Z2xpYi5oPgorI2Vu
ZGlmCiAKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCisjaWYgZGVmaW5lZChXUEVf
QkFDS0VORF9GRE8pCit1c2luZyBQbGF0Zm9ybUJ1ZmZlciA9IHN0cnVjdCB3cGVfZmRvX3NobV9l
eHBvcnRlZF9idWZmZXIqOwordXNpbmcgUGxhdGZvcm1WaWV3QmFja2VuZCA9IHN0cnVjdCB3cGVf
dmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvKjsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0Vf
Q0FJUk8pICYmIFVTRV9DQUlSTwordXNpbmcgUGxhdGZvcm1JbWFnZSA9IGNhaXJvX3N1cmZhY2Vf
dCo7CisjZW5kaWYKKwogY2xhc3MgSGVhZGxlc3NWaWV3QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBW
aWV3QmFja2VuZCB7CiBwdWJsaWM6CiAgICAgSGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJfdCB3
aWR0aCwgdWludDMyX3QgaGVpZ2h0KTsKQEAgLTM4LDEwICs1OCwxMCBAQCBwdWJsaWM6CiAKICAg
ICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogYmFja2VuZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgY2Fpcm9fc3VyZmFjZV90KiBzbmFwc2hvdCgpOworICAgIFBsYXRmb3JtSW1hZ2Ugc25hcHNo
b3QoKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KHN0cnVjdCB3cGVfZmRv
X3NobV9leHBvcnRlZF9idWZmZXIqKTsKKyAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBsYXRmb3Jt
QnVmZmVyKTsKICAgICB2b2lkIHZzeW5jKCk7CiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAx
MSwgMSkKQEAgLTQ5LDE1ICs2OSwxNSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hGdWxs
c2NyZWVuRXZlbnQoKTsKICNlbmRpZgogCisgICAgUGxhdGZvcm1WaWV3QmFja2VuZCBtX2V4cG9y
dGFibGUgeyBudWxscHRyIH07CisgICAgUGxhdGZvcm1JbWFnZSBtX3NuYXBzaG90IHsgbnVsbHB0
ciB9OwogCi0gICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG8qIG1fZXhw
b3J0YWJsZSB7IG51bGxwdHIgfTsKLQotICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zbmFwc2hvdCB7
IG51bGxwdHIgfTsKLQorI2lmIGRlZmluZWQoVVNFX0dMSUIpICYmIFVTRV9HTElCCiAgICAgc3Ry
dWN0IHsKICAgICAgICAgR1NvdXJjZSogc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBib29s
IHBlbmRpbmcgeyBmYWxzZSB9OwogICAgIH0gbV91cGRhdGU7CisjZW5kaWYKIAogI2lmIFdQRV9D
SEVDS19WRVJTSU9OKDEsIDExLCAxKQogICAgIGJvb2wgbV9pc19mdWxsc2NyZWVuIHsgZmFsc2Ug
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQppbmRleCAwNzIxNjM0MTgwOGYuLmNm
MmRhMWI3NWNjYSAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNt
YWtlCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNSwxNiAr
NSwyMiBAQCBmaW5kX3BhY2thZ2UoV1BFQmFja2VuZF9mZG8gMS4zLjAgUkVRVUlSRUQpCiAKIGxp
c3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgICR7V1BFVG9v
bGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hkZy1zaGVsbC11bnN0YWJsZS12Ni1j
bGllbnQtcHJvdG9jb2wuaAorICAgIGZkby9XaW5kb3dWaWV3QmFja2VuZC5oCiApCiAKIGxpc3Qo
QVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19TT1VSQ0VTCiAgICAgJHtXUEVUb29saW5nQmFja2Vu
ZHNfREVSSVZFRF9TT1VSQ0VTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMK
KwogICAgIGF0ay9WaWV3QmFja2VuZEF0ay5jcHAKICAgICBhdGsvV2ViS2l0QWNjZXNzaWJsZUFw
cGxpY2F0aW9uLmNwcAorCisgICAgZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCisgICAg
ZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcAogKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFj
a2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtUT09MU19ESVJ9L3dwZS9i
YWNrZW5kcy9hdGsKKyAgICAke1RPT0xTX0RJUn0vd3BlL2JhY2tlbmRzL2ZkbwogKQogCiBsaXN0
KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKQEAg
LTMzLDYgKzM5LDcgQEAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwog
ICAgICR7V1BFQkFDS0VORF9GRE9fTElCUkFSSUVTfQogKQogCitsaXN0KEFQUEVORCBXUEVUb29s
aW5nQmFja2VuZHNfREVGSU5JVElPTlMgVVNFX0dMSUI9MSkKIGxpc3QoQVBQRU5EIFdQRVRvb2xp
bmdCYWNrZW5kc19QUklWQVRFX0RFRklOSVRJT05TICR7TElCRVBPWFlfREVGSU5JVElPTlN9KQog
CiBhZGRfY3VzdG9tX2NvbW1hbmQoCkBAIC00OCw5ICs1NSwxMiBAQCBhZGRfY3VzdG9tX2NvbW1h
bmQoCiAgICAgQ09NTUFORCAke1dBWUxBTkRfU0NBTk5FUn0gY2xpZW50LWhlYWRlciAke1dBWUxB
TkRfUFJPVE9DT0xTX0RBVEFESVJ9L3Vuc3RhYmxlL3hkZy1zaGVsbC94ZGctc2hlbGwtdW5zdGFi
bGUtdjYueG1sICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hkZy1z
aGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaAogICAgIFZFUkJBVElNKQogCitsaXN0
KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkRfRkRPKQor
bGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMgV1BFX0JB
Q0tFTkQ9ImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIpCisKIGlmIChFTkFCTEVfQUNDRVNTSUJJ
TElUWSkKKyAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgRU5B
QkxFX0FDQ0VTU0lCSUxJVFk9MSkKICAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNf
UFJJVkFURV9ERUZJTklUSU9OUwotICAgICAgICBFTkFCTEVfQUNDRVNTSUJJTElUWT0xCiAgICAg
ICAgIEdMSUJfVkVSU0lPTl9NSU5fUkVRVUlSRUQ9R0xJQl9WRVJTSU9OXzJfNDAKICAgICApCiAg
ICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUyBBVEs6OkJyaWRnZSkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAgYi9Ub29scy93
cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCmluZGV4IGEzNzQxMDRkMDVhMS4uMDA4ZWNlZDBi
YTc5IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCisrKyBi
L1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgVmll
d0JhY2tlbmQ6OlZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAg
ICAgOiBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogewotICAgIHdwZV9s
b2FkZXJfaW5pdCgibGliV1BFQmFja2VuZC1mZG8tMS4wLnNvIik7CisgICAgd3BlX2xvYWRlcl9p
bml0KFdQRV9CQUNLRU5EKTsKIH0KIAogVmlld0JhY2tlbmQ6On5WaWV3QmFja2VuZCgpID0gZGVm
YXVsdDsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9v
bHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKaW5kZXggMGU5ODA1YWY4NzgxLi41MzUwODFh
MWMwOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBi
L1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCkBAIC0yNiwyNiArMjYsMTIgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSA8bWVtb3J5PgotI2luY2x1ZGUgPHdwZS9mZG8uaD4KKyNp
bmNsdWRlIDx3cGUvd3BlLmg+CiAKICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFU1NJQklMSVRZKSAm
JiBFTkFCTEVfQUNDRVNTSUJJTElUWQogdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmpl
Y3Q7CiAjZW5kaWYKIAotdHlwZWRlZiB2b2lkKiBFR0xDb25maWc7Ci10eXBlZGVmIHZvaWQqIEVH
TENvbnRleHQ7Ci10eXBlZGVmIHZvaWQqIEVHTERpc3BsYXk7Ci1zdHJ1Y3Qgd3BlX2Zkb19lZ2xf
ZXhwb3J0ZWRfaW1hZ2U7Ci0KLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSwgNSwgMCkKLXN0
cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXI7Ci0jZW5kaWYKLQotLy8gTWFudWFsbHkg
cHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0Zm9ybS5o
IGRvZXNuJ3QgcHJvdmlkZSBpdC4KLSNpZm5kZWYgRUdMX0NBU1QKLSNkZWZpbmUgRUdMX0NBU1Qo
dHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKZGlmZiAtLWdp
dCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5jcHAgYi9U
b29scy93cGUvYmFja2VuZHMvZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGIzZDI2MjUyOGQzCi0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRvLmNw
cApAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5M
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiSGVhZGxlc3NWaWV3QmFja2VuZC5oIgorCisjaW5jbHVk
ZSA8Y2Fzc2VydD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1
ZGUgPHVuaXN0ZC5oPgorCisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQorI2luY2x1
ZGUgPHdheWxhbmQtc2VydmVyLmg+CisjaW5jbHVkZSA8d3BlL3Vuc3RhYmxlL2Zkby1zaG0uaD4K
KyNlbmRpZgorCituYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKKworc3RydWN0IEhlYWRs
ZXNzSW5zdGFuY2UgeworICAgIHN0YXRpYyBjb25zdCBIZWFkbGVzc0luc3RhbmNlJiBzaW5nbGV0
b24oKQorICAgIHsKKyAgICAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7Cisg
ICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5zdGFuY2U7CisgICAgICAgIHN0ZDo6
Y2FsbF9vbmNlKHNfb25jZUZsYWcsCisgICAgICAgICAgICBbXSB7CisjaWYgV1BFX0ZET19DSEVD
S19WRVJTSU9OKDEsNywwKQorICAgICAgICAgICAgICAgIHdwZV9mZG9faW5pdGlhbGl6ZV9zaG0o
KTsKKyNlbmRpZgorICAgICAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHNfaW5zdGFuY2U7
CisgICAgfQorfTsKKworc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX2J1ZmZlcktleTsK
KworSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0
aCwgdWludDMyX3QgaGVpZ2h0KQorICAgIDogVmlld0JhY2tlbmQod2lkdGgsIGhlaWdodCkKK3sK
KyAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBTSE0gbW9kZS4KKyAgICBIZWFkbGVz
c0luc3RhbmNlOjpzaW5nbGV0b24oKTsKKworICAgIHN0YXRpYyBzdHJ1Y3Qgd3BlX3ZpZXdfYmFj
a2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJsZUNsaWVudCA9IHsKKyAgICAgICAg
bnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3
LDApCisgICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCisgICAgICAgIFtdKHZvaWQqIGRhdGEs
IHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGJ1ZmZlcikKKyAgICAgICAgewor
ICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNr
ZW5kKj4oZGF0YSk7CisgICAgICAgICAgICBiYWNrZW5kLm1fdXBkYXRlLnBlbmRpbmcgPSB0cnVl
OworCisgICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBzaG90KGJ1ZmZlcik7CisgICAgICAg
ICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX3JlbGVhc2Vfc2ht
X2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJsZSwgYnVmZmVyKTsKKyAgICAgICAg
fSwKKyNlbHNlCisgICAgICAgIG51bGxwdHIsCisjZW5kaWYKKyAgICAgICAgbnVsbHB0ciwKKyAg
ICAgICAgbnVsbHB0ciwKKyAgICB9OworICAgIG1fZXhwb3J0YWJsZSA9IHdwZV92aWV3X2JhY2tl
bmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0aGlzLCB3aWR0aCwg
aGVpZ2h0KTsKKworICAgIGFkZEFjdGl2aXR5U3RhdGUod3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVf
dmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2ZvY3VzZWQgfCB3cGVfdmlld19hY3Rp
dml0eV9zdGF0ZV9pbl93aW5kb3cpOworCisgICAgeworICAgICAgICB1aW50MzJfdCBzdHJpZGUg
PSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dp
ZHRoKTsKKyAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3IHVpbnQ4X3Rbc3RyaWRlICogbV9o
ZWlnaHRdOworICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBzdHJpZGUgKiBtX2hlaWdodCk7CisK
KyAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRh
KGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKKyAgICAgICAgICAgIG1fd2lkdGgsIG1faGVp
Z2h0LCBzdHJpZGUpOworCisgICAgICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShtX3Nu
YXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgICAgIFtdKHZvaWQqIGRhdGEp
IHsKKyAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4o
ZGF0YSk7CisgICAgICAgICAgICAgICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICAgICAgfSk7
CisgICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyAgICB9CisK
KyNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKKyAgICB3cGVfdmlld19iYWNrZW5kX3Nl
dF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0LCB0
aGlzKTsKKyNlbmRpZgorCisgICAgbV91cGRhdGUuc291cmNlID0gZ190aW1lb3V0X3NvdXJjZV9u
ZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKG1f
dXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICBz
dGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSktPnZzeW5jKCk7CisgICAgICAg
IHJldHVybiBUUlVFOworICAgIH0sIHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNlX3NldF9w
cmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7CisgICAgZ19zb3Vy
Y2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2NvbnRleHRfZGVmYXVsdCgpKTsKK30K
KworSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQoKQoreworICAgIGlm
IChtX3VwZGF0ZS5zb3VyY2UpIHsKKyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3VwZGF0ZS5z
b3VyY2UpOworICAgICAgICBnX3NvdXJjZV91bnJlZihtX3VwZGF0ZS5zb3VyY2UpOworICAgIH0K
KworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9z
bmFwc2hvdCk7CisKKyAgICBpZiAobV9leHBvcnRhYmxlKQorICAgICAgICB3cGVfdmlld19iYWNr
ZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRhYmxlKTsKK30KKworc3RydWN0IHdw
ZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tlbmQoKSBjb25zdAorewor
ICAgIGlmIChtX2V4cG9ydGFibGUpCisgICAgICAgIHJldHVybiB3cGVfdmlld19iYWNrZW5kX2V4
cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBvcnRhYmxlKTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworUGxhdGZvcm1JbWFnZSBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpzbmFwc2hv
dCgpCit7CisgICAgcmV0dXJuIGNhaXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc25hcHNob3QpOwor
fQorCit2b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KFBsYXRmb3JtQnVm
ZmVyIGV4cG9ydGVkQnVmZmVyKQoreworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkK
KyAgICBzdHJ1Y3Qgd2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1fZXhwb3J0
ZWRfYnVmZmVyX2dldF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKKyAgICB7CisgICAgICAg
IGF1dG8gZm9ybWF0ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7CisgICAg
ICAgIGlmIChmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQgIT0gV0xf
U0hNX0ZPUk1BVF9YUkdCODg4OCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1
aW50MzJfdCBidWZmZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlS
T19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBuZXcgdWlu
dDhfdFtidWZmZXJTdHJpZGUgKiBtX2hlaWdodF07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwgYnVm
ZmVyU3RyaWRlICogbV9oZWlnaHQpOworCisgICAgeworICAgICAgICB1aW50MzJfdCB3aWR0aCA9
IHN0ZDo6bWluPHVpbnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dl
dF93aWR0aChzaG1CdWZmZXIpKSk7CisgICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0ZDo6bWlu
PHVpbnQzMl90PihtX2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfaGVpZ2h0
KHNobUJ1ZmZlcikpKTsKKyAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgoMCwgd2xf
c2htX2J1ZmZlcl9nZXRfc3RyaWRlKHNobUJ1ZmZlcikpOworCisgICAgICAgIHdsX3NobV9idWZm
ZXJfYmVnaW5fYWNjZXNzKHNobUJ1ZmZlcik7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNf
Y2FzdDx1aW50OF90Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsKKworICAg
ICAgICBmb3IgKHVpbnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAg
IGZvciAodWludDMyX3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICAgICAg
YnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUgKiB5ICsg
NCAqIHggKyAwXTsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQg
KiB4ICsgMV0gPSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOworICAgICAgICAgICAgICAg
IGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRlICogeSAr
IDQgKiB4ICsgMl07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0
ICogeCArIDNdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorCisgICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1CdWZmZXIp
OworICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rl
c3Ryb3kobV9zbmFwc2hvdCk7CisKKyAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vfc3VyZmFj
ZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAorICAgICAgICBt
X3dpZHRoLCBtX2hlaWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9S
TUFUX0FSR0IzMiwgbV93aWR0aCkpOworCisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlf
dCBidWZmZXJLZXk7CisgICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNob3Qs
ICZidWZmZXJLZXksIGJ1ZmZlciwKKyAgICAgICAgW10odm9pZCogZGF0YSkgeworICAgICAgICAg
ICAgYXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAgICAgICAg
ICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICB9KTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtf
ZGlydHkobV9zbmFwc2hvdCk7CisjZWxzZQorICAgICh2b2lkKWV4cG9ydGVkQnVmZmVyOworI2Vu
ZGlmCit9CisKK3ZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQoreworI2lmIFdQRV9G
RE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICBpZiAobV91cGRhdGUucGVuZGluZykKKyAgICAg
ICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0
ZShtX2V4cG9ydGFibGUpOworI2VuZGlmCisgICAgbV91cGRhdGUucGVuZGluZyA9IGZhbHNlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMv
ZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZy
b20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApyZW5hbWUgdG8gVG9v
bHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKZGlmZiAtLWdpdCBhL1Rv
b2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2JhY2tlbmRz
L2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9t
IFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCnJlbmFtZSB0byBUb29scy93
cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmgKaW5kZXggNDc0ZThiMjEyYjcxLi4x
NjkyMzRiOGYyNGQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFj
a2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQuaApA
QCAtMjksOSArMjksMTggQEAKICNpbmNsdWRlICJ4ZGctc2hlbGwtdW5zdGFibGUtdjYtY2xpZW50
LXByb3RvY29sLmgiCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+
CisjaW5jbHVkZSA8d3BlL2Zkby5oPgogCit0eXBlZGVmIHZvaWQqIEVHTENvbmZpZzsKK3R5cGVk
ZWYgdm9pZCogRUdMQ29udGV4dDsKK3R5cGVkZWYgdm9pZCogRUdMRGlzcGxheTsKIHR5cGVkZWYg
dm9pZCogRUdMU3VyZmFjZTsKLXR5cGVkZWYgc3RydWN0IHdsX2VnbF93aW5kb3cgICpFR0xOYXRp
dmVXaW5kb3dUeXBlOwordHlwZWRlZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqRUdMTmF0aXZlV2lu
ZG93VHlwZTsKKworLy8gTWFudWFsbHkgcHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRp
b24gaW4gY2FzZSBlZ2xwbGF0Zm9ybS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4KKyNpZm5kZWYgRUdM
X0NBU1QKKyNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2
YWx1ZSkpCisjZW5kaWYKIAogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAK
</data>
<flag name="commit-queue"
          id="476608"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450258</attachid>
            <date>2022-01-28 10:53:04 -0800</date>
            <delta_ts>2022-01-28 11:02:19 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>20970</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dCBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dAppbmRleCA1ZmQ1ZTM4MzYxNTEuLjQ5MTY3ZjhhY2My
OSAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL0NNYWtlTGlzdHMudHh0CisrKyBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4dApAQCAtNywxMyArNywxMSBAQCBmaWxlKE1B
S0VfRElSRUNUT1JZICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9KQog
c2V0KFdQRVRvb2xpbmdCYWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgIEhlYWRsZXNzVmlld0Jh
Y2tlbmQuaAogICAgIFZpZXdCYWNrZW5kLmgKLSAgICBXaW5kb3dWaWV3QmFja2VuZC5oCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAgIEhlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCiAgICAgVmlld0JhY2tlbmQuY3BwCi0gICAgV2luZG93Vmlld0JhY2tlbmQuY3BwCiApCiAK
IHNldChXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURFX0RJUkVDVE9SSUVTCkBAIC0y
Niw2ICsyNCwxMCBAQCBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgIFdQRTo6
bGlid3BlCiApCiAKK2lmIChVU0VfQ0FJUk8pCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX0RFRklOSVRJT05TIFVTRV9DQUlSTz0xKQorZW5kaWYgKCkKKwogc2V0KFdQRVRvb2xp
bmdCYWNrZW5kc19JTlRFUkZBQ0VfTElCUkFSSUVTIFdQRVRvb2xpbmdCYWNrZW5kcykKIHNldChX
UEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0lOQ0xVREVfRElSRUNUT1JJRVMgJHtXUEVUb29s
aW5nQmFja2VuZHNfRlJBTUVXT1JLX0hFQURFUlNfRElSfSkKIHNldChXUEVUb29saW5nQmFja2Vu
ZHNfSU5URVJGQUNFX0RFUEVOREVOQ0lFUyBXUEVUb29saW5nQmFja2VuZHNfQ29weUhlYWRlcnMp
CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAg
Yi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKaW5kZXggMzlmMGUy
NmQxYmIzLi5mNjQ4ZTcxOGI1MWQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFk
bGVzc1ZpZXdCYWNrZW5kLmNwcAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3
QmFja2VuZC5jcHAKQEAgLTI1LDE4MSArMjUsOCBAQAogCiAjaW5jbHVkZSAiSGVhZGxlc3NWaWV3
QmFja2VuZC5oIgogCi0jaW5jbHVkZSA8Y2Fzc2VydD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2lu
Y2x1ZGUgPG11dGV4PgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaWYgV1BFX0ZET19DSEVDS19W
RVJTSU9OKDEsNywwKQotI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+Ci0jaW5jbHVkZSA8d3Bl
L3Vuc3RhYmxlL2Zkby1zaG0uaD4KLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tl
bmRzIHsKIAotc3RydWN0IEhlYWRsZXNzSW5zdGFuY2UgewotICAgIHN0YXRpYyBjb25zdCBIZWFk
bGVzc0luc3RhbmNlJiBzaW5nbGV0b24oKQotICAgIHsKLSAgICAgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIHNfb25jZUZsYWc7Ci0gICAgICAgIHN0YXRpYyBIZWFkbGVzc0luc3RhbmNlIHNfaW5z
dGFuY2U7Ci0gICAgICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcsCi0gICAgICAgICAgICBb
XSB7Ci0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAgICAgICAgICAgICAgIHdw
ZV9mZG9faW5pdGlhbGl6ZV9zaG0oKTsKLSNlbmRpZgotICAgICAgICAgICAgfSk7Ci0KLSAgICAg
ICAgcmV0dXJuIHNfaW5zdGFuY2U7Ci0gICAgfQotfTsKLQotc3RhdGljIGNhaXJvX3VzZXJfZGF0
YV9rZXlfdCBzX2J1ZmZlcktleTsKLQotSGVhZGxlc3NWaWV3QmFja2VuZDo6SGVhZGxlc3NWaWV3
QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQotICAgIDogVmlld0JhY2tl
bmQod2lkdGgsIGhlaWdodCkKLXsKLSAgICAvLyBUaGlzIHNob3VsZCBpbml0aWFsaXplIHRoZSBT
SE0gbW9kZS4KLSAgICBIZWFkbGVzc0luc3RhbmNlOjpzaW5nbGV0b24oKTsKLQotICAgIHN0YXRp
YyBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19jbGllbnQgZXhwb3J0YWJs
ZUNsaWVudCA9IHsKLSAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgbnVsbHB0ciwKLSNpZiBXUEVf
RkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgICAgIC8vIGV4cG9ydF9zaG1fYnVmZmVyCi0g
ICAgICAgIFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIq
IGJ1ZmZlcikKLSAgICAgICAgewotICAgICAgICAgICAgYXV0byYgYmFja2VuZCA9ICpzdGF0aWNf
Y2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSk7Ci0gICAgICAgICAgICBiYWNrZW5kLm1f
dXBkYXRlLnBlbmRpbmcgPSB0cnVlOwotCi0gICAgICAgICAgICBiYWNrZW5kLnVwZGF0ZVNuYXBz
aG90KGJ1ZmZlcik7Ci0gICAgICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRv
X2Rpc3BhdGNoX3JlbGVhc2Vfc2htX2V4cG9ydGVkX2J1ZmZlcihiYWNrZW5kLm1fZXhwb3J0YWJs
ZSwgYnVmZmVyKTsKLSAgICAgICAgfSwKLSNlbHNlCi0gICAgICAgIG51bGxwdHIsCi0jZW5kaWYK
LSAgICAgICAgbnVsbHB0ciwKLSAgICAgICAgbnVsbHB0ciwKLSAgICB9OwotICAgIG1fZXhwb3J0
YWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY3JlYXRlKCZleHBvcnRhYmxl
Q2xpZW50LCB0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKLQotICAgIGFkZEFjdGl2aXR5U3RhdGUod3Bl
X3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2Zv
Y3VzZWQgfCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cpOwotCi0gICAgewotICAg
ICAgICB1aW50MzJfdCBzdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlS
T19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKLSAgICAgICAgdWludDhfdCogYnVmZmVyID0gbmV3
IHVpbnQ4X3Rbc3RyaWRlICogbV9oZWlnaHRdOwotICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBz
dHJpZGUgKiBtX2hlaWdodCk7Ci0KLSAgICAgICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKLSAgICAg
ICAgICAgIG1fd2lkdGgsIG1faGVpZ2h0LCBzdHJpZGUpOwotCi0gICAgICAgIGNhaXJvX3N1cmZh
Y2Vfc2V0X3VzZXJfZGF0YShtX3NuYXBzaG90LCAmc19idWZmZXJLZXksIGJ1ZmZlciwKLSAgICAg
ICAgICAgIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBz
dGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlW10gYnVm
ZmVyOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eSht
X3NuYXBzaG90KTsKLSAgICB9Ci0KLSNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKLSAg
ICB3cGVfdmlld19iYWNrZW5kX3NldF9mdWxsc2NyZWVuX2hhbmRsZXIoYmFja2VuZCgpLCBvbkRP
TUZ1bGxTY3JlZW5SZXF1ZXN0LCB0aGlzKTsKLSNlbmRpZgotCi0gICAgbV91cGRhdGUuc291cmNl
ID0gZ190aW1lb3V0X3NvdXJjZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2MDAwMCk7Ci0gICAgZ19z
b3VyY2Vfc2V0X2NhbGxiYWNrKG1fdXBkYXRlLnNvdXJjZSwgW10oZ3BvaW50ZXIgZGF0YSkgLT4g
Z2Jvb2xlYW4gewotICAgICAgICBzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0
YSktPnZzeW5jKCk7Ci0gICAgICAgIHJldHVybiBUUlVFOwotICAgIH0sIHRoaXMsIG51bGxwdHIp
OwotICAgIGdfc291cmNlX3NldF9wcmlvcml0eShtX3VwZGF0ZS5zb3VyY2UsIEdfUFJJT1JJVFlf
REVGQVVMVCk7Ci0gICAgZ19zb3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNvdXJjZSwgZ19tYWluX2Nv
bnRleHRfZGVmYXVsdCgpKTsKLX0KLQotSGVhZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmll
d0JhY2tlbmQoKQotewotICAgIGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsKLSAgICAgICAgZ19zb3Vy
Y2VfZGVzdHJveShtX3VwZGF0ZS5zb3VyY2UpOwotICAgICAgICBnX3NvdXJjZV91bnJlZihtX3Vw
ZGF0ZS5zb3VyY2UpOwotICAgIH0KLQotICAgIGlmIChtX3NuYXBzaG90KQotICAgICAgICBjYWly
b19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7Ci0KLSAgICBpZiAobV9leHBvcnRhYmxlKQot
ICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rlc3Ryb3kobV9leHBvcnRh
YmxlKTsKLX0KLQotc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRsZXNzVmlld0JhY2tlbmQ6
OmJhY2tlbmQoKSBjb25zdAotewotICAgIGlmIChtX2V4cG9ydGFibGUpCi0gICAgICAgIHJldHVy
biB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2dldF92aWV3X2JhY2tlbmQobV9leHBv
cnRhYmxlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQotY2Fpcm9fc3VyZmFjZV90KiBIZWFk
bGVzc1ZpZXdCYWNrZW5kOjpzbmFwc2hvdCgpCi17Ci0gICAgcmV0dXJuIGNhaXJvX3N1cmZhY2Vf
cmVmZXJlbmNlKG1fc25hcHNob3QpOwotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnVw
ZGF0ZVNuYXBzaG90KHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqIGV4cG9ydGVk
QnVmZmVyKQotewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSAgICBzdHJ1Y3Qg
d2xfc2htX2J1ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyX2dl
dF9zaG1fYnVmZmVyKGV4cG9ydGVkQnVmZmVyKTsKLSAgICB7Ci0gICAgICAgIGF1dG8gZm9ybWF0
ID0gd2xfc2htX2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7Ci0gICAgICAgIGlmIChmb3Jt
YXQgIT0gV0xfU0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9Y
UkdCODg4OCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICB1aW50MzJfdCBidWZm
ZXJTdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJH
QjMyLCBtX3dpZHRoKTsKLSAgICB1aW50OF90KiBidWZmZXIgPSBuZXcgdWludDhfdFtidWZmZXJT
dHJpZGUgKiBtX2hlaWdodF07Ci0gICAgbWVtc2V0KGJ1ZmZlciwgMCwgYnVmZmVyU3RyaWRlICog
bV9oZWlnaHQpOwotCi0gICAgewotICAgICAgICB1aW50MzJfdCB3aWR0aCA9IHN0ZDo6bWluPHVp
bnQzMl90PihtX3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dldF93aWR0aChzaG1C
dWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0ZDo6bWluPHVpbnQzMl90Piht
X2hlaWdodCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfaGVpZ2h0KHNobUJ1ZmZlcikp
KTsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9n
ZXRfc3RyaWRlKHNobUJ1ZmZlcikpOwotCi0gICAgICAgIHdsX3NobV9idWZmZXJfYmVnaW5fYWNj
ZXNzKHNobUJ1ZmZlcik7Ci0gICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90
Kj4od2xfc2htX2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsKLQotICAgICAgICBmb3IgKHVp
bnQzMl90IHkgPSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgICAgIGZvciAodWludDMy
X3QgeCA9IDA7IHggPCB3aWR0aDsgKyt4KSB7Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZl
clN0cmlkZSAqIHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAwXTsK
LSAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMV0gPSBk
YXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDFdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZm
ZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgMl07
Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDNdID0g
ZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAzXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQot
Ci0gICAgICAgIHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgIH0KLQot
ICAgIGlmIChtX3NuYXBzaG90KQotICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFw
c2hvdCk7Ci0KLSAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9y
X2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAotICAgICAgICBtX3dpZHRoLCBtX2hl
aWdodCwgY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwg
bV93aWR0aCkpOwotCi0gICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBidWZmZXJLZXk7
Ci0gICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNob3QsICZidWZmZXJLZXks
IGJ1ZmZlciwKLSAgICAgICAgW10odm9pZCogZGF0YSkgewotICAgICAgICAgICAgYXV0byogYnVm
ZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwotICAgICAgICAgICAgZGVsZXRlW10g
YnVmZmVyOwotICAgICAgICB9KTsKLSAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFw
c2hvdCk7Ci0jZWxzZQotICAgICh2b2lkKWV4cG9ydGVkQnVmZmVyOwotI2VuZGlmCi19Ci0KLXZv
aWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMoKQotewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVS
U0lPTigxLDcsMCkKLSAgICBpZiAobV91cGRhdGUucGVuZGluZykKLSAgICAgICAgd3BlX3ZpZXdf
YmFja2VuZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFi
bGUpOwotI2VuZGlmCi0gICAgbV91cGRhdGUucGVuZGluZyA9IGZhbHNlOwotfQotCiAjaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCiBib29sIEhlYWRsZXNzVmlld0JhY2tlbmQ6Om9uRE9N
RnVsbFNjcmVlblJlcXVlc3Qodm9pZCogZGF0YSwgYm9vbCBmdWxsc2NyZWVuKQogewpAQCAtMjI0
LDUgKzUxLDQgQEAgdm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpkaXNwYXRjaEZ1bGxzY3JlZW5F
dmVudCgpCiAKICNlbmRpZgogCi0KIH0gLy8gbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcwpk
aWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuaCBiL1Rv
b2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmgKaW5kZXggZmM0MTIzNzdlNjU2
Li5lNjFiOTZiODE0MjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1Zp
ZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
aApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSWdhbGlhIFMuTC4K
KyAqIENvcHlyaWdodCAoQykgMjAyMiBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNywyNCBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJWaWV3QmFja2VuZC5oIgorCisjaWYgZGVmaW5lZChXUEVf
QkFDS0VORF9GRE8pCisjaW5jbHVkZSA8d3BlL2Zkby5oPgorCit1c2luZyBQbGF0Zm9ybUJ1ZmZl
ciA9IHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIqOwordXNpbmcgUGxhdGZvcm1W
aWV3QmFja2VuZCA9IHN0cnVjdCB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvKjsKKyNl
bmRpZgorCisjaWYgZGVmaW5lZChVU0VfQ0FJUk8pICYmIFVTRV9DQUlSTwogI2luY2x1ZGUgPGNh
aXJvLmg+CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0dMSUIpICYmIFVTRV9HTElCCiAjaW5j
bHVkZSA8Z2xpYi5oPgogCit1c2luZyBQbGF0Zm9ybUltYWdlID0gY2Fpcm9fc3VyZmFjZV90KjsK
KyNlbmRpZgorCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRzIHsKIAogY2xhc3MgSGVhZGxl
c3NWaWV3QmFja2VuZCBmaW5hbCA6IHB1YmxpYyBWaWV3QmFja2VuZCB7CkBAIC0zOCwxMCArNTQs
MTAgQEAgcHVibGljOgogCiAgICAgc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIGJhY2tlbmQoKSBj
b25zdCBvdmVycmlkZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogc25hcHNob3QoKTsKKyAgICBQ
bGF0Zm9ybUltYWdlIHNuYXBzaG90KCk7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCB1cGRhdGVTbmFw
c2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKik7CisgICAgdm9pZCB1cGRh
dGVTbmFwc2hvdChQbGF0Zm9ybUJ1ZmZlcik7CiAgICAgdm9pZCB2c3luYygpOwogCiAjaWYgV1BF
X0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCkBAIC00OSwxNSArNjUsMTUgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGRpc3BhdGNoRnVsbHNjcmVlbkV2ZW50KCk7CiAjZW5kaWYKIAorICAgIFBsYXRmb3Jt
Vmlld0JhY2tlbmQgbV9leHBvcnRhYmxlIHsgbnVsbHB0ciB9OworICAgIFBsYXRmb3JtSW1hZ2Ug
bV9zbmFwc2hvdCB7IG51bGxwdHIgfTsKIAotICAgIHN0cnVjdCB3cGVfdmlld19iYWNrZW5kX2V4
cG9ydGFibGVfZmRvKiBtX2V4cG9ydGFibGUgeyBudWxscHRyIH07Ci0KLSAgICBjYWlyb19zdXJm
YWNlX3QqIG1fc25hcHNob3QgeyBudWxscHRyIH07Ci0KKyNpZiBkZWZpbmVkKFVTRV9HTElCKSAm
JiBVU0VfR0xJQgogICAgIHN0cnVjdCB7CiAgICAgICAgIEdTb3VyY2UqIHNvdXJjZSB7IG51bGxw
dHIgfTsKICAgICAgICAgYm9vbCBwZW5kaW5nIHsgZmFsc2UgfTsKICAgICB9IG1fdXBkYXRlOwor
I2VuZGlmCiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKICAgICBib29sIG1faXNf
ZnVsbHNjcmVlbiB7IGZhbHNlIH07CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvUGxh
dGZvcm1XUEUuY21ha2UgYi9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUuY21ha2UKaW5k
ZXggMDcyMTYzNDE4MDhmLi5jZjJkYTFiNzVjY2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNr
ZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQorKysgYi9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1X
UEUuY21ha2UKQEAgLTUsMTYgKzUsMjIgQEAgZmluZF9wYWNrYWdlKFdQRUJhY2tlbmRfZmRvIDEu
My4wIFJFUVVJUkVEKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfUFVCTElDX0hF
QURFUlMKICAgICAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVEX1NPVVJDRVNfRElSfS94ZGct
c2hlbGwtdW5zdGFibGUtdjYtY2xpZW50LXByb3RvY29sLmgKKyAgICBmZG8vV2luZG93Vmlld0Jh
Y2tlbmQuaAogKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfU09VUkNFUwogICAg
ICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hkZy1zaGVsbC11bnN0
YWJsZS12Ni1wcm90b2NvbC5jCisKICAgICBhdGsvVmlld0JhY2tlbmRBdGsuY3BwCiAgICAgYXRr
L1dlYktpdEFjY2Vzc2libGVBcHBsaWNhdGlvbi5jcHAKKworICAgIGZkby9IZWFkbGVzc1ZpZXdC
YWNrZW5kRmRvLmNwcAorICAgIGZkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKICkKIAogbGlzdChB
UFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICR7VE9PTFNfRElSfS93cGUvYmFja2VuZHMvYXRrCisgICAgJHtUT09MU19ESVJ9L3dwZS9iYWNr
ZW5kcy9mZG8KICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1NZU1RFTV9JTkNM
VURFX0RJUkVDVE9SSUVTCkBAIC0zMyw2ICszOSw3IEBAIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdC
YWNrZW5kc19MSUJSQVJJRVMKICAgICAke1dQRUJBQ0tFTkRfRkRPX0xJQlJBUklFU30KICkKIAor
bGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0RFRklOSVRJT05TIFVTRV9HTElCPTEpCiBs
aXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9ERUZJTklUSU9OUyAke0xJQkVQ
T1hZX0RFRklOSVRJT05TfSkKIAogYWRkX2N1c3RvbV9jb21tYW5kKApAQCAtNDgsOSArNTUsMTIg
QEAgYWRkX2N1c3RvbV9jb21tYW5kKAogICAgIENPTU1BTkQgJHtXQVlMQU5EX1NDQU5ORVJ9IGNs
aWVudC1oZWFkZXIgJHtXQVlMQU5EX1BST1RPQ09MU19EQVRBRElSfS91bnN0YWJsZS94ZGctc2hl
bGwveGRnLXNoZWxsLXVuc3RhYmxlLXY2LnhtbCAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVE
X1NPVVJDRVNfRElSfS94ZGctc2hlbGwtdW5zdGFibGUtdjYtY2xpZW50LXByb3RvY29sLmgKICAg
ICBWRVJCQVRJTSkKIAorbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0RFRklOSVRJT05T
IFdQRV9CQUNLRU5EX0ZETykKK2xpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19QUklWQVRF
X0RFRklOSVRJT05TIFdQRV9CQUNLRU5EPSJsaWJXUEVCYWNrZW5kLWZkby0xLjAuc28iKQorCiBp
ZiAoRU5BQkxFX0FDQ0VTU0lCSUxJVFkpCisgICAgbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tl
bmRzX0RFRklOSVRJT05TIEVOQUJMRV9BQ0NFU1NJQklMSVRZPTEpCiAgICAgbGlzdChBUFBFTkQg
V1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMKLSAgICAgICAgRU5BQkxFX0FD
Q0VTU0lCSUxJVFk9MQogICAgICAgICBHTElCX1ZFUlNJT05fTUlOX1JFUVVJUkVEPUdMSUJfVkVS
U0lPTl8yXzQwCiAgICAgKQogICAgIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19MSUJS
QVJJRVMgQVRLOjpCcmlkZ2UpCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvVmlld0Jh
Y2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcAppbmRleCBhMzc0
MTA0ZDA1YTEuLjAwOGVjZWQwYmE3OSAxMDA2NDQKLS0tIGEvVG9vbHMvd3BlL2JhY2tlbmRzL1Zp
ZXdCYWNrZW5kLmNwcAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCkBA
IC0zMSw3ICszMSw3IEBAIFZpZXdCYWNrZW5kOjpWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwg
dWludDMyX3QgaGVpZ2h0KQogICAgIDogbV93aWR0aCh3aWR0aCkKICAgICAsIG1faGVpZ2h0KGhl
aWdodCkKIHsKLSAgICB3cGVfbG9hZGVyX2luaXQoImxpYldQRUJhY2tlbmQtZmRvLTEuMC5zbyIp
OworICAgIHdwZV9sb2FkZXJfaW5pdChXUEVfQkFDS0VORCk7CiB9CiAKIFZpZXdCYWNrZW5kOjp+
Vmlld0JhY2tlbmQoKSA9IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMv
Vmlld0JhY2tlbmQuaCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCmluZGV4IDBl
OTgwNWFmODc4MS4uNTM1MDgxYTFjMDkyIDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFja2VuZHMv
Vmlld0JhY2tlbmQuaAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuaApAQCAt
MjYsMjYgKzI2LDEyIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPG1lbW9yeT4KLSNpbmNs
dWRlIDx3cGUvZmRvLmg+CisjaW5jbHVkZSA8d3BlL3dwZS5oPgogCiAjaWYgZGVmaW5lZChFTkFC
TEVfQUNDRVNTSUJJTElUWSkgJiYgRU5BQkxFX0FDQ0VTU0lCSUxJVFkKIHR5cGVkZWYgc3RydWN0
IF9BdGtPYmplY3QgQXRrT2JqZWN0OwogI2VuZGlmCiAKLXR5cGVkZWYgdm9pZCogRUdMQ29uZmln
OwotdHlwZWRlZiB2b2lkKiBFR0xDb250ZXh0OwotdHlwZWRlZiB2b2lkKiBFR0xEaXNwbGF5Owot
c3RydWN0IHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdlOwotCi0jaWYgV1BFX0ZET19DSEVDS19W
RVJTSU9OKDEsIDUsIDApCi1zdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyOwotI2Vu
ZGlmCi0KLS8vIE1hbnVhbGx5IHByb3ZpZGUgdGhlIEVHTF9DQVNUIEMrKyBkZWZpbml0aW9uIGlu
IGNhc2UgZWdscGxhdGZvcm0uaCBkb2Vzbid0IHByb3ZpZGUgaXQuCi0jaWZuZGVmIEVHTF9DQVNU
Ci0jZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAoc3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUp
KQotI2VuZGlmCi0KIG5hbWVzcGFjZSBXUEVUb29saW5nQmFja2VuZHMgewogCiBjbGFzcyBWaWV3
QmFja2VuZCB7CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvZmRvL0hlYWRsZXNzVmll
d0JhY2tlbmRGZG8uY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNr
ZW5kRmRvLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjRiM2Qy
NjI1MjhkMwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vSGVhZGxl
c3NWaWV3QmFja2VuZEZkby5jcHAKQEAgLTAsMCArMSwyMDMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkhlYWRsZXNzVmlld0Jh
Y2tlbmQuaCIKKworI2luY2x1ZGUgPGNhc3NlcnQ+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNs
dWRlIDxtdXRleD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVS
U0lPTigxLDcsMCkKKyNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5oPgorI2luY2x1ZGUgPHdwZS91
bnN0YWJsZS9mZG8tc2htLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5k
cyB7CisKK3N0cnVjdCBIZWFkbGVzc0luc3RhbmNlIHsKKyAgICBzdGF0aWMgY29uc3QgSGVhZGxl
c3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKKyAgICB7CisgICAgICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBzX29uY2VGbGFnOworICAgICAgICBzdGF0aWMgSGVhZGxlc3NJbnN0YW5jZSBzX2luc3Rh
bmNlOworICAgICAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFnLAorICAgICAgICAgICAgW10g
eworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICAgICAgICAgICAgICB3cGVf
ZmRvX2luaXRpYWxpemVfc2htKCk7CisjZW5kaWYKKyAgICAgICAgICAgIH0pOworCisgICAgICAg
IHJldHVybiBzX2luc3RhbmNlOworICAgIH0KK307CisKK3N0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3Qgc19idWZmZXJLZXk7CisKK0hlYWRsZXNzVmlld0JhY2tlbmQ6OkhlYWRsZXNzVmlld0Jh
Y2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKKyAgICA6IFZpZXdCYWNrZW5k
KHdpZHRoLCBoZWlnaHQpCit7CisgICAgLy8gVGhpcyBzaG91bGQgaW5pdGlhbGl6ZSB0aGUgU0hN
IG1vZGUuCisgICAgSGVhZGxlc3NJbnN0YW5jZTo6c2luZ2xldG9uKCk7CisKKyAgICBzdGF0aWMg
c3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY2xpZW50IGV4cG9ydGFibGVD
bGllbnQgPSB7CisgICAgICAgIG51bGxwdHIsCisgICAgICAgIG51bGxwdHIsCisjaWYgV1BFX0ZE
T19DSEVDS19WRVJTSU9OKDEsNywwKQorICAgICAgICAvLyBleHBvcnRfc2htX2J1ZmZlcgorICAg
ICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKiBi
dWZmZXIpCisgICAgICAgIHsKKyAgICAgICAgICAgIGF1dG8mIGJhY2tlbmQgPSAqc3RhdGljX2Nh
c3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpOworICAgICAgICAgICAgYmFja2VuZC5tX3Vw
ZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKKworICAgICAgICAgICAgYmFja2VuZC51cGRhdGVTbmFwc2hv
dChidWZmZXIpOworICAgICAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19k
aXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRlZF9idWZmZXIoYmFja2VuZC5tX2V4cG9ydGFibGUs
IGJ1ZmZlcik7CisgICAgICAgIH0sCisjZWxzZQorICAgICAgICBudWxscHRyLAorI2VuZGlmCisg
ICAgICAgIG51bGxwdHIsCisgICAgICAgIG51bGxwdHIsCisgICAgfTsKKyAgICBtX2V4cG9ydGFi
bGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2NyZWF0ZSgmZXhwb3J0YWJsZUNs
aWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7CisKKyAgICBhZGRBY3Rpdml0eVN0YXRlKHdwZV92
aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUgfCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9mb2N1
c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93KTsKKworICAgIHsKKyAgICAg
ICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9f
Rk9STUFUX0FSR0IzMiwgbV93aWR0aCk7CisgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG5ldyB1
aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsKKyAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgc3Ry
aWRlICogbV9oZWlnaHQpOworCisgICAgICAgIG1fc25hcHNob3QgPSBjYWlyb19pbWFnZV9zdXJm
YWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIsIENBSVJPX0ZPUk1BVF9BUkdCMzIsCisgICAgICAg
ICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3RyaWRlKTsKKworICAgICAgICBjYWlyb19zdXJmYWNl
X3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwgJnNfYnVmZmVyS2V5LCBidWZmZXIsCisgICAgICAg
ICAgICBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgICAgICAgICAgYXV0byogYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAgICAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZl
cjsKKyAgICAgICAgICAgIH0pOworICAgICAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9z
bmFwc2hvdCk7CisgICAgfQorCisjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEpCisgICAg
d3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNjcmVlbl9oYW5kbGVyKGJhY2tlbmQoKSwgb25ET01G
dWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7CisjZW5kaWYKKworICAgIG1fdXBkYXRlLnNvdXJjZSA9
IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNFQ19QRVJfU0VDIC8gNjAwMDApOworICAgIGdfc291
cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5zb3VyY2UsIFtdKGdwb2ludGVyIGRhdGEpIC0+IGdi
b29sZWFuIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEp
LT52c3luYygpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICB9LCB0aGlzLCBudWxscHRyKTsK
KyAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV91cGRhdGUuc291cmNlLCBHX1BSSU9SSVRZX0RF
RkFVTFQpOworICAgIGdfc291cmNlX2F0dGFjaChtX3VwZGF0ZS5zb3VyY2UsIGdfbWFpbl9jb250
ZXh0X2RlZmF1bHQoKSk7Cit9CisKK0hlYWRsZXNzVmlld0JhY2tlbmQ6On5IZWFkbGVzc1ZpZXdC
YWNrZW5kKCkKK3sKKyAgICBpZiAobV91cGRhdGUuc291cmNlKSB7CisgICAgICAgIGdfc291cmNl
X2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsKKyAgICAgICAgZ19zb3VyY2VfdW5yZWYobV91cGRh
dGUuc291cmNlKTsKKyAgICB9CisKKyAgICBpZiAobV9zbmFwc2hvdCkKKyAgICAgICAgY2Fpcm9f
c3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOworCisgICAgaWYgKG1fZXhwb3J0YWJsZSkKKyAg
ICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19kZXN0cm95KG1fZXhwb3J0YWJs
ZSk7Cit9CisKK3N0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpi
YWNrZW5kKCkgY29uc3QKK3sKKyAgICBpZiAobV9leHBvcnRhYmxlKQorICAgICAgICByZXR1cm4g
d3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19nZXRfdmlld19iYWNrZW5kKG1fZXhwb3J0
YWJsZSk7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1BsYXRmb3JtSW1hZ2UgSGVhZGxlc3NW
aWV3QmFja2VuZDo6c25hcHNob3QoKQoreworICAgIHJldHVybiBjYWlyb19zdXJmYWNlX3JlZmVy
ZW5jZShtX3NuYXBzaG90KTsKK30KKwordm9pZCBIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVT
bmFwc2hvdChQbGF0Zm9ybUJ1ZmZlciBleHBvcnRlZEJ1ZmZlcikKK3sKKyNpZiBXUEVfRkRPX0NI
RUNLX1ZFUlNJT04oMSw3LDApCisgICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9
IHdwZV9mZG9fc2htX2V4cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZl
cik7CisgICAgeworICAgICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1h
dChzaG1CdWZmZXIpOworICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4
ODggJiYgZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCisgICAgICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0
cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7CisgICAgdWludDhf
dCogYnVmZmVyID0gbmV3IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOworICAgIG1l
bXNldChidWZmZXIsIDAsIGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKKworICAgIHsKKyAgICAg
ICAgdWludDMyX3Qgd2lkdGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgo
MCwgd2xfc2htX2J1ZmZlcl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOworICAgICAgICB1aW50MzJf
dCBoZWlnaHQgPSBzdGQ6Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3No
bV9idWZmZXJfZ2V0X2hlaWdodChzaG1CdWZmZXIpKSk7CisgICAgICAgIHVpbnQzMl90IHN0cmlk
ZSA9IHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKKwor
ICAgICAgICB3bF9zaG1fYnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOworICAgICAgICBh
dXRvKiBkYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEo
c2htQnVmZmVyKSk7CisKKyAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsg
Kyt5KSB7CisgICAgICAgICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkg
eworICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9
IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgMF07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1
ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAx
XTsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0g
PSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDJdOworICAgICAgICAgICAgICAgIGJ1ZmZlclti
dWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsg
M107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3bF9zaG1fYnVmZmVyX2Vu
ZF9hY2Nlc3Moc2htQnVmZmVyKTsKKyAgICB9CisKKyAgICBpZiAobV9zbmFwc2hvdCkKKyAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOworCisgICAgbV9zbmFwc2hvdCA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFU
X0FSR0IzMiwKKyAgICAgICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVf
Zm9yX3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKKworICAgIHN0YXRpYyBj
YWlyb191c2VyX2RhdGFfa2V5X3QgYnVmZmVyS2V5OworICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3Vz
ZXJfZGF0YShtX3NuYXBzaG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCisgICAgICAgIFtdKHZvaWQq
IGRhdGEpIHsKKyAgICAgICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihkYXRhKTsKKyAgICAgICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKKyAgICAgICAgfSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV9tYXJrX2RpcnR5KG1fc25hcHNob3QpOworI2Vsc2UKKyAgICAodm9pZCll
eHBvcnRlZEJ1ZmZlcjsKKyNlbmRpZgorfQorCit2b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZz
eW5jKCkKK3sKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCisgICAgaWYgKG1fdXBk
YXRlLnBlbmRpbmcpCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlz
cGF0Y2hfZnJhbWVfY29tcGxldGUobV9leHBvcnRhYmxlKTsKKyNlbmRpZgorICAgIG1fdXBkYXRl
LnBlbmRpbmcgPSBmYWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRz
CmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuY3BwIGIv
VG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5jcHAKc2ltaWxhcml0eSBp
bmRleCAxMDAlCnJlbmFtZSBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2Vu
ZC5jcHAKcmVuYW1lIHRvIFRvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQu
Y3BwCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQuaCBi
L1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQuaApzaW1pbGFyaXR5IGlu
ZGV4IDkzJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMvV2luZG93Vmlld0JhY2tlbmQu
aApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCmlu
ZGV4IDQ3NGU4YjIxMmI3MS4uMGI3Y2MxMTllODNjIDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFj
a2VuZHMvV2luZG93Vmlld0JhY2tlbmQuaAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvZmRvL1dp
bmRvd1ZpZXdCYWNrZW5kLmgKQEAgLTI5LDkgKzI5LDIwIEBACiAjaW5jbHVkZSAieGRnLXNoZWxs
LXVuc3RhYmxlLXY2LWNsaWVudC1wcm90b2NvbC5oIgogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNs
dWRlIDx1bm9yZGVyZWRfbWFwPgorI2luY2x1ZGUgPHdwZS9mZG8uaD4KIAordHlwZWRlZiB2b2lk
KiBFR0xDb25maWc7Cit0eXBlZGVmIHZvaWQqIEVHTENvbnRleHQ7Cit0eXBlZGVmIHZvaWQqIEVH
TERpc3BsYXk7CiB0eXBlZGVmIHZvaWQqIEVHTFN1cmZhY2U7Ci10eXBlZGVmIHN0cnVjdCB3bF9l
Z2xfd2luZG93ICAqRUdMTmF0aXZlV2luZG93VHlwZTsKK3R5cGVkZWYgc3RydWN0IHdsX2VnbF93
aW5kb3cgKkVHTE5hdGl2ZVdpbmRvd1R5cGU7CisKKy8vIE1hbnVhbGx5IHByb3ZpZGUgdGhlIEVH
TF9DQVNUIEMrKyBkZWZpbml0aW9uIGluIGNhc2UgZWdscGxhdGZvcm0uaCBkb2Vzbid0IHByb3Zp
ZGUgaXQuCisjaWZuZGVmIEVHTF9DQVNUCisjZGVmaW5lIEVHTF9DQVNUKHR5cGUsIHZhbHVlKSAo
c3RhdGljX2Nhc3Q8dHlwZT4odmFsdWUpKQorI2VuZGlmCisKK3N0cnVjdCB3cGVfZmRvX2VnbF9l
eHBvcnRlZF9pbWFnZTsKIAogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450259</attachid>
            <date>2022-01-28 11:02:19 -0800</date>
            <delta_ts>2022-01-28 11:39:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>23323</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZDFi
NjliZjViZTUuLmJmNmE1YTA4ZDY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIyLTAxLTI4ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhZGRpdGlvbmFs
IFdQRVRvb2xpbmdCYWNrZW5kIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCB1cCBjb2RlIHNwZWNpZmljIHRvIHRoZSBmZG8gYmFja2Vu
ZCB0byBhbGxvdyBmb3IgYWRkaXRpb25hbCBXUEUgYmFja2VuZCB0eXBlcyB0byBiZQorICAgICAg
ICB1c2VkLiBBZGQgc29tZSBwbGF0Zm9ybSBkZWZpbmVzIGJhc2VkIG9uIHRoZSB1bmRlcmx5aW5n
IGJhY2tlbmQuCisKKyAgICAgICAgVGhpcyBpcyBhIHByZWN1cnNvciB0byBsYW5kaW5nIGEgUGxh
eVN0YXRpb24gdmFyaWFudC4KKworICAgICAgICAqIHdwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHA6CisgICAg
ICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzSW5zdGFuY2U6OnNpbmdsZXRvbik6IERl
bGV0ZWQuCisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6
OkhlYWRsZXNzVmlld0JhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tl
bmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjp+SGVhZGxlc3NWaWV3QmFja2VuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tl
bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVz
c1ZpZXdCYWNrZW5kOjpzbmFwc2hvdCk6IERlbGV0ZWQuCisgICAgICAgIChXUEVUb29saW5nQmFj
a2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMpOiBE
ZWxldGVkLgorICAgICAgICAqIHdwZS9iYWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmg6Cisg
ICAgICAgICogd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHdwZS9i
YWNrZW5kcy9WaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OlZp
ZXdCYWNrZW5kOjpWaWV3QmFja2VuZCk6CisgICAgICAgICogd3BlL2JhY2tlbmRzL1ZpZXdCYWNr
ZW5kLmg6CisgICAgICAgICogd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRv
LmNwcDogQ29waWVkIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc0luc3RhbmNlOjpzaW5n
bGV0b24pOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5k
OjpIZWFkbGVzc1ZpZXdCYWNrZW5kKToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVh
ZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQpOgorICAgICAgICAoV1BFVG9v
bGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QpOgor
ICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVT
bmFwc2hvdCk6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tl
bmQ6OnZzeW5jKToKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5k
LmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5j
cHAuCisgICAgICAgICogd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oOiBSZW5h
bWVkIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmguCisKIDIwMjIt
MDEtMjggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBTbWFsbCBjb3JyZWN0aW9ucyB0byBidWlsZC13ZWJraXQgYW5kIE1ha2VmaWxlIGZvciB3
b3Jrc3BhY2UgYnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0cy50eHQKaW5kZXggNWZkNWUzODM2
MTUxLi40OTE2N2Y4YWNjMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0cy50eHQKQEAgLTcsMTMg
KzcsMTEgQEAgZmlsZShNQUtFX0RJUkVDVE9SWSAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVE
X1NPVVJDRVNfRElSfSkKIHNldChXUEVUb29saW5nQmFja2VuZHNfUFVCTElDX0hFQURFUlMKICAg
ICBIZWFkbGVzc1ZpZXdCYWNrZW5kLmgKICAgICBWaWV3QmFja2VuZC5oCi0gICAgV2luZG93Vmll
d0JhY2tlbmQuaAogKQogCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICBIZWFk
bGVzc1ZpZXdCYWNrZW5kLmNwcAogICAgIFZpZXdCYWNrZW5kLmNwcAotICAgIFdpbmRvd1ZpZXdC
YWNrZW5kLmNwcAogKQogCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9E
SVJFQ1RPUklFUwpAQCAtMjYsNiArMjQsMTAgQEAgc2V0KFdQRVRvb2xpbmdCYWNrZW5kc19MSUJS
QVJJRVMKICAgICBXUEU6OmxpYndwZQogKQogCitpZiAoVVNFX0NBSVJPKQorICAgIGxpc3QoQVBQ
RU5EIFdQRVRvb2xpbmdCYWNrZW5kc19ERUZJTklUSU9OUyBVU0VfQ0FJUk89MSkKK2VuZGlmICgp
CisKIHNldChXUEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0xJQlJBUklFUyBXUEVUb29saW5n
QmFja2VuZHMpCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9JTkNMVURFX0RJUkVD
VE9SSUVTICR7V1BFVG9vbGluZ0JhY2tlbmRzX0ZSQU1FV09SS19IRUFERVJTX0RJUn0pCiBzZXQo
V1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9ERVBFTkRFTkNJRVMgV1BFVG9vbGluZ0JhY2tl
bmRzX0NvcHlIZWFkZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNz
Vmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCmluZGV4IDM5ZjBlMjZkMWJiMy4uZjY0OGU3MThiNTFkIDEwMDY0NAotLS0gYS9Ub29scy93
cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKKysrIGIvVG9vbHMvd3BlL2JhY2tl
bmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCkBAIC0yNSwxODEgKzI1LDggQEAKIAogI2luY2x1
ZGUgIkhlYWRsZXNzVmlld0JhY2tlbmQuaCIKIAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lm
IFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5o
PgotI2luY2x1ZGUgPHdwZS91bnN0YWJsZS9mZG8tc2htLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKLXN0cnVjdCBIZWFkbGVzc0luc3RhbmNlIHsKLSAgICBz
dGF0aWMgY29uc3QgSGVhZGxlc3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOwotICAgICAgICBzdGF0aWMgSGVhZGxl
c3NJbnN0YW5jZSBzX2luc3RhbmNlOwotICAgICAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFn
LAotICAgICAgICAgICAgW10gewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSAg
ICAgICAgICAgICAgICB3cGVfZmRvX2luaXRpYWxpemVfc2htKCk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgIHJldHVybiBzX2luc3RhbmNlOwotICAgIH0KLX07Ci0KLXN0YXRp
YyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7Ci0KLUhlYWRsZXNzVmlld0JhY2tl
bmQ6OkhlYWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkK
LSAgICA6IFZpZXdCYWNrZW5kKHdpZHRoLCBoZWlnaHQpCi17Ci0gICAgLy8gVGhpcyBzaG91bGQg
aW5pdGlhbGl6ZSB0aGUgU0hNIG1vZGUuCi0gICAgSGVhZGxlc3NJbnN0YW5jZTo6c2luZ2xldG9u
KCk7Ci0KLSAgICBzdGF0aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9f
Y2xpZW50IGV4cG9ydGFibGVDbGllbnQgPSB7Ci0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51
bGxwdHIsCi0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAgICAgICAvLyBleHBv
cnRfc2htX2J1ZmZlcgotICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2Zkb19zaG1f
ZXhwb3J0ZWRfYnVmZmVyKiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIGJh
Y2tlbmQgPSAqc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpOwotICAgICAg
ICAgICAgYmFja2VuZC5tX3VwZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKLQotICAgICAgICAgICAgYmFj
a2VuZC51cGRhdGVTbmFwc2hvdChidWZmZXIpOwotICAgICAgICAgICAgd3BlX3ZpZXdfYmFja2Vu
ZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRlZF9idWZmZXIoYmFj
a2VuZC5tX2V4cG9ydGFibGUsIGJ1ZmZlcik7Ci0gICAgICAgIH0sCi0jZWxzZQotICAgICAgICBu
dWxscHRyLAotI2VuZGlmCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51bGxwdHIsCi0gICAg
fTsKLSAgICBtX2V4cG9ydGFibGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Ny
ZWF0ZSgmZXhwb3J0YWJsZUNsaWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhZGRB
Y3Rpdml0eVN0YXRlKHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUgfCB3cGVfdmlld19h
Y3Rpdml0eV9zdGF0ZV9mb2N1c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93
KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgICAgIHVpbnQ4
X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsKLSAgICAgICAgbWVt
c2V0KGJ1ZmZlciwgMCwgc3RyaWRlICogbV9oZWlnaHQpOwotCi0gICAgICAgIG1fc25hcHNob3Qg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIsIENBSVJPX0ZPUk1B
VF9BUkdCMzIsCi0gICAgICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3RyaWRlKTsKLQotICAg
ICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwgJnNfYnVmZmVyS2V5
LCBidWZmZXIsCi0gICAgICAgICAgICBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwotICAgICAgICAgICAg
ICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBjYWlyb19zdXJm
YWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Ci0gICAgfQotCi0jaWYgV1BFX0NIRUNLX1ZFUlNJ
T04oMSwgMTEsIDEpCi0gICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNjcmVlbl9oYW5kbGVy
KGJhY2tlbmQoKSwgb25ET01GdWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7Ci0jZW5kaWYKLQotICAg
IG1fdXBkYXRlLnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNFQ19QRVJfU0VDIC8g
NjAwMDApOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5zb3VyY2UsIFtdKGdw
b2ludGVyIGRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SGVhZGxlc3NW
aWV3QmFja2VuZCo+KGRhdGEpLT52c3luYygpOwotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9
LCB0aGlzLCBudWxscHRyKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV91cGRhdGUuc291
cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX2F0dGFjaChtX3VwZGF0ZS5z
b3VyY2UsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7Ci19Ci0KLUhlYWRsZXNzVmlld0JhY2tl
bmQ6On5IZWFkbGVzc1ZpZXdCYWNrZW5kKCkKLXsKLSAgICBpZiAobV91cGRhdGUuc291cmNlKSB7
Ci0gICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsKLSAgICAgICAgZ19z
b3VyY2VfdW5yZWYobV91cGRhdGUuc291cmNlKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hv
dCkKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgaWYg
KG1fZXhwb3J0YWJsZSkKLSAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19k
ZXN0cm95KG1fZXhwb3J0YWJsZSk7Ci19Ci0KLXN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBIZWFk
bGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9leHBvcnRhYmxl
KQotICAgICAgICByZXR1cm4gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19nZXRfdmll
d19iYWNrZW5kKG1fZXhwb3J0YWJsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWNhaXJv
X3N1cmZhY2VfdCogSGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QoKQotewotICAgIHJldHVy
biBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3NuYXBzaG90KTsKLX0KLQotdm9pZCBIZWFkbGVz
c1ZpZXdCYWNrZW5kOjp1cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRf
YnVmZmVyKiBleHBvcnRlZEJ1ZmZlcikKLXsKLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3
LDApCi0gICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9IHdwZV9mZG9fc2htX2V4
cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZlcik7Ci0gICAgewotICAg
ICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1hdChzaG1CdWZmZXIpOwot
ICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4ODggJiYgZm9ybWF0ICE9
IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgo
Q0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgdWludDhfdCogYnVmZmVyID0gbmV3
IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOwotICAgIG1lbXNldChidWZmZXIsIDAs
IGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgd2lk
dGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZl
cl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOwotICAgICAgICB1aW50MzJfdCBoZWlnaHQgPSBzdGQ6
Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X2hl
aWdodChzaG1CdWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IHN0cmlkZSA9IHN0ZDo6bWF4KDAs
IHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKLQotICAgICAgICB3bF9zaG1f
YnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgICAgICBhdXRvKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEoc2htQnVmZmVyKSk7Ci0K
LSAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewotICAgICAgICAgICAg
ICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9IGRhdGFbc3RyaWRlICog
eSArIDQgKiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkg
KyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAxXTsKLSAgICAgICAgICAg
ICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0gPSBkYXRhW3N0cmlkZSAq
IHkgKyA0ICogeCArIDJdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5
ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgM107Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3bF9zaG1fYnVmZmVyX2VuZF9hY2Nlc3Moc2htQnVm
ZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hvdCkKLSAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKLSAgICAg
ICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJP
X0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKLQotICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3QgYnVmZmVyS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShtX3NuYXBz
aG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKTsKLSAgICAg
ICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgfSk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fc25hcHNob3QpOwotI2Vsc2UKLSAgICAodm9pZClleHBvcnRlZEJ1ZmZlcjsK
LSNlbmRpZgotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZzeW5jKCkKLXsKLSNpZiBX
UEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgaWYgKG1fdXBkYXRlLnBlbmRpbmcpCi0g
ICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlzcGF0Y2hfZnJhbWVfY29t
cGxldGUobV9leHBvcnRhYmxlKTsKLSNlbmRpZgotICAgIG1fdXBkYXRlLnBlbmRpbmcgPSBmYWxz
ZTsKLX0KLQogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQogYm9vbCBIZWFkbGVzc1Zp
ZXdCYWNrZW5kOjpvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0KHZvaWQqIGRhdGEsIGJvb2wgZnVsbHNj
cmVlbikKIHsKQEAgLTIyNCw1ICs1MSw0IEBAIHZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6ZGlz
cGF0Y2hGdWxsc2NyZWVuRXZlbnQoKQogCiAjZW5kaWYKIAotCiB9IC8vIG5hbWVzcGFjZSBXUEVU
b29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1Zp
ZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCmlu
ZGV4IGZjNDEyMzc3ZTY1Ni4uZTYxYjk2YjgxNDI2IDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFj
a2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFk
bGVzc1ZpZXdCYWNrZW5kLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
OSArMjcsMjQgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVmlld0JhY2tlbmQuaCIKKwor
I2lmIGRlZmluZWQoV1BFX0JBQ0tFTkRfRkRPKQorI2luY2x1ZGUgPHdwZS9mZG8uaD4KKwordXNp
bmcgUGxhdGZvcm1CdWZmZXIgPSBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKjsK
K3VzaW5nIFBsYXRmb3JtVmlld0JhY2tlbmQgPSBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkbyo7CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJ
Uk8KICNpbmNsdWRlIDxjYWlyby5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKFVTRV9HTElCKSAm
JiBVU0VfR0xJQgogI2luY2x1ZGUgPGdsaWIuaD4KIAordXNpbmcgUGxhdGZvcm1JbWFnZSA9IGNh
aXJvX3N1cmZhY2VfdCo7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7
CiAKIGNsYXNzIEhlYWRsZXNzVmlld0JhY2tlbmQgZmluYWwgOiBwdWJsaWMgVmlld0JhY2tlbmQg
ewpAQCAtMzgsMTAgKzU0LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0cnVjdCB3cGVfdmlld19iYWNr
ZW5kKiBiYWNrZW5kKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBjYWlyb19zdXJmYWNlX3QqIHNu
YXBzaG90KCk7CisgICAgUGxhdGZvcm1JbWFnZSBzbmFwc2hvdCgpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgdXBkYXRlU25hcHNob3Qoc3RydWN0IHdwZV9mZG9fc2htX2V4cG9ydGVkX2J1ZmZlciop
OworICAgIHZvaWQgdXBkYXRlU25hcHNob3QoUGxhdGZvcm1CdWZmZXIpOwogICAgIHZvaWQgdnN5
bmMoKTsKIAogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQpAQCAtNDksMTUgKzY1LDE1
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkaXNwYXRjaEZ1bGxzY3JlZW5FdmVudCgpOwogI2VuZGlm
CiAKKyAgICBQbGF0Zm9ybVZpZXdCYWNrZW5kIG1fZXhwb3J0YWJsZSB7IG51bGxwdHIgfTsKKyAg
ICBQbGF0Zm9ybUltYWdlIG1fc25hcHNob3QgeyBudWxscHRyIH07CiAKLSAgICBzdHJ1Y3Qgd3Bl
X3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2ZkbyogbV9leHBvcnRhYmxlIHsgbnVsbHB0ciB9Owot
Ci0gICAgY2Fpcm9fc3VyZmFjZV90KiBtX3NuYXBzaG90IHsgbnVsbHB0ciB9OwotCisjaWYgZGVm
aW5lZChVU0VfR0xJQikgJiYgVVNFX0dMSUIKICAgICBzdHJ1Y3QgewogICAgICAgICBHU291cmNl
KiBzb3VyY2UgeyBudWxscHRyIH07CiAgICAgICAgIGJvb2wgcGVuZGluZyB7IGZhbHNlIH07CiAg
ICAgfSBtX3VwZGF0ZTsKKyNlbmRpZgogCiAjaWYgV1BFX0NIRUNLX1ZFUlNJT04oMSwgMTEsIDEp
CiAgICAgYm9vbCBtX2lzX2Z1bGxzY3JlZW4geyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
d3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRm
b3JtV1BFLmNtYWtlCmluZGV4IDA3MjE2MzQxODA4Zi4uY2YyZGExYjc1Y2NhIDEwMDY0NAotLS0g
YS9Ub29scy93cGUvYmFja2VuZHMvUGxhdGZvcm1XUEUuY21ha2UKKysrIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCkBAIC01LDE2ICs1LDIyIEBAIGZpbmRfcGFja2FnZShX
UEVCYWNrZW5kX2ZkbyAxLjMuMCBSRVFVSVJFRCkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0Jh
Y2tlbmRzX1BVQkxJQ19IRUFERVJTCiAgICAgJHtXUEVUb29saW5nQmFja2VuZHNfREVSSVZFRF9T
T1VSQ0VTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LWNsaWVudC1wcm90b2NvbC5oCisgICAg
ZmRvL1dpbmRvd1ZpZXdCYWNrZW5kLmgKICkKIAogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tl
bmRzX1NPVVJDRVMKICAgICAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVEX1NPVVJDRVNfRElS
fS94ZGctc2hlbGwtdW5zdGFibGUtdjYtcHJvdG9jb2wuYworCiAgICAgYXRrL1ZpZXdCYWNrZW5k
QXRrLmNwcAogICAgIGF0ay9XZWJLaXRBY2Nlc3NpYmxlQXBwbGljYXRpb24uY3BwCisKKyAgICBm
ZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5jcHAKKyAgICBmZG8vV2luZG93Vmlld0JhY2tlbmQu
Y3BwCiApCiAKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19QUklWQVRFX0lOQ0xVREVf
RElSRUNUT1JJRVMKICAgICAke1RPT0xTX0RJUn0vd3BlL2JhY2tlbmRzL2F0aworICAgICR7VE9P
TFNfRElSfS93cGUvYmFja2VuZHMvZmRvCiApCiAKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNr
ZW5kc19TWVNURU1fSU5DTFVERV9ESVJFQ1RPUklFUwpAQCAtMzMsNiArMzksNyBAQCBsaXN0KEFQ
UEVORCBXUEVUb29saW5nQmFja2VuZHNfTElCUkFSSUVTCiAgICAgJHtXUEVCQUNLRU5EX0ZET19M
SUJSQVJJRVN9CiApCiAKK2xpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19ERUZJTklUSU9O
UyBVU0VfR0xJQj0xKQogbGlzdChBUFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfREVG
SU5JVElPTlMgJHtMSUJFUE9YWV9ERUZJTklUSU9OU30pCiAKIGFkZF9jdXN0b21fY29tbWFuZCgK
QEAgLTQ4LDkgKzU1LDEyIEBAIGFkZF9jdXN0b21fY29tbWFuZCgKICAgICBDT01NQU5EICR7V0FZ
TEFORF9TQ0FOTkVSfSBjbGllbnQtaGVhZGVyICR7V0FZTEFORF9QUk9UT0NPTFNfREFUQURJUn0v
dW5zdGFibGUveGRnLXNoZWxsL3hkZy1zaGVsbC11bnN0YWJsZS12Ni54bWwgJHtXUEVUb29saW5n
QmFja2VuZHNfREVSSVZFRF9TT1VSQ0VTX0RJUn0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LWNsaWVu
dC1wcm90b2NvbC5oCiAgICAgVkVSQkFUSU0pCiAKK2xpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNr
ZW5kc19ERUZJTklUSU9OUyBXUEVfQkFDS0VORF9GRE8pCitsaXN0KEFQUEVORCBXUEVUb29saW5n
QmFja2VuZHNfUFJJVkFURV9ERUZJTklUSU9OUyBXUEVfQkFDS0VORD0ibGliV1BFQmFja2VuZC1m
ZG8tMS4wLnNvIikKKwogaWYgKEVOQUJMRV9BQ0NFU1NJQklMSVRZKQorICAgIGxpc3QoQVBQRU5E
IFdQRVRvb2xpbmdCYWNrZW5kc19ERUZJTklUSU9OUyBFTkFCTEVfQUNDRVNTSUJJTElUWT0xKQog
ICAgIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19QUklWQVRFX0RFRklOSVRJT05TCi0g
ICAgICAgIEVOQUJMRV9BQ0NFU1NJQklMSVRZPTEKICAgICAgICAgR0xJQl9WRVJTSU9OX01JTl9S
RVFVSVJFRD1HTElCX1ZFUlNJT05fMl80MAogICAgICkKICAgICBsaXN0KEFQUEVORCBXUEVUb29s
aW5nQmFja2VuZHNfTElCUkFSSUVTIEFUSzo6QnJpZGdlKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3Bl
L2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmNwcCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2Vu
ZC5jcHAKaW5kZXggYTM3NDEwNGQwNWExLi4wMDhlY2VkMGJhNzkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1Zp
ZXdCYWNrZW5kLmNwcApAQCAtMzEsNyArMzEsNyBAQCBWaWV3QmFja2VuZDo6Vmlld0JhY2tlbmQo
dWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkKICAgICA6IG1fd2lkdGgod2lkdGgpCiAg
ICAgLCBtX2hlaWdodChoZWlnaHQpCiB7Ci0gICAgd3BlX2xvYWRlcl9pbml0KCJsaWJXUEVCYWNr
ZW5kLWZkby0xLjAuc28iKTsKKyAgICB3cGVfbG9hZGVyX2luaXQoV1BFX0JBQ0tFTkQpOwogfQog
CiBWaWV3QmFja2VuZDo6flZpZXdCYWNrZW5kKCkgPSBkZWZhdWx0OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0Jh
Y2tlbmQuaAppbmRleCAwZTk4MDVhZjg3ODEuLjUzNTA4MWExYzA5MiAxMDA2NDQKLS0tIGEvVG9v
bHMvd3BlL2JhY2tlbmRzL1ZpZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1Zp
ZXdCYWNrZW5kLmgKQEAgLTI2LDI2ICsyNiwxMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDxtZW1vcnk+Ci0jaW5jbHVkZSA8d3BlL2Zkby5oPgorI2luY2x1ZGUgPHdwZS93cGUuaD4KIAog
I2lmIGRlZmluZWQoRU5BQkxFX0FDQ0VTU0lCSUxJVFkpICYmIEVOQUJMRV9BQ0NFU1NJQklMSVRZ
CiB0eXBlZGVmIHN0cnVjdCBfQXRrT2JqZWN0IEF0a09iamVjdDsKICNlbmRpZgogCi10eXBlZGVm
IHZvaWQqIEVHTENvbmZpZzsKLXR5cGVkZWYgdm9pZCogRUdMQ29udGV4dDsKLXR5cGVkZWYgdm9p
ZCogRUdMRGlzcGxheTsKLXN0cnVjdCB3cGVfZmRvX2VnbF9leHBvcnRlZF9pbWFnZTsKLQotI2lm
IFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLCA1LCAwKQotc3RydWN0IHdwZV9mZG9fc2htX2V4cG9y
dGVkX2J1ZmZlcjsKLSNlbmRpZgotCi0vLyBNYW51YWxseSBwcm92aWRlIHRoZSBFR0xfQ0FTVCBD
KysgZGVmaW5pdGlvbiBpbiBjYXNlIGVnbHBsYXRmb3JtLmggZG9lc24ndCBwcm92aWRlIGl0Lgot
I2lmbmRlZiBFR0xfQ0FTVAotI2RlZmluZSBFR0xfQ0FTVCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19j
YXN0PHR5cGU+KHZhbHVlKSkKLSNlbmRpZgotCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0JhY2tlbmRz
IHsKIAogY2xhc3MgVmlld0JhY2tlbmQgewpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRz
L2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRvLmNwcCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8v
SGVhZGxlc3NWaWV3QmFja2VuZEZkby5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi40YjNkMjYyNTI4ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy93cGUvYmFj
a2VuZHMvZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCkBAIC0wLDAgKzEsMjAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE2IElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJIZWFkbGVzc1ZpZXdCYWNrZW5kLmgiCisKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUg
PGZjbnRsLmg+CisjaW5jbHVkZSA8bXV0ZXg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpZiBX
UEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCisjaW5jbHVkZSA8d2F5bGFuZC1zZXJ2ZXIuaD4K
KyNpbmNsdWRlIDx3cGUvdW5zdGFibGUvZmRvLXNobS5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBX
UEVUb29saW5nQmFja2VuZHMgeworCitzdHJ1Y3QgSGVhZGxlc3NJbnN0YW5jZSB7CisgICAgc3Rh
dGljIGNvbnN0IEhlYWRsZXNzSW5zdGFuY2UmIHNpbmdsZXRvbigpCisgICAgeworICAgICAgICBz
dGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19vbmNlRmxhZzsKKyAgICAgICAgc3RhdGljIEhlYWRsZXNz
SW5zdGFuY2Ugc19pbnN0YW5jZTsKKyAgICAgICAgc3RkOjpjYWxsX29uY2Uoc19vbmNlRmxhZywK
KyAgICAgICAgICAgIFtdIHsKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCisgICAg
ICAgICAgICAgICAgd3BlX2Zkb19pbml0aWFsaXplX3NobSgpOworI2VuZGlmCisgICAgICAgICAg
ICB9KTsKKworICAgICAgICByZXR1cm4gc19pbnN0YW5jZTsKKyAgICB9Cit9OworCitzdGF0aWMg
Y2Fpcm9fdXNlcl9kYXRhX2tleV90IHNfYnVmZmVyS2V5OworCitIZWFkbGVzc1ZpZXdCYWNrZW5k
OjpIZWFkbGVzc1ZpZXdCYWNrZW5kKHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCisg
ICAgOiBWaWV3QmFja2VuZCh3aWR0aCwgaGVpZ2h0KQoreworICAgIC8vIFRoaXMgc2hvdWxkIGlu
aXRpYWxpemUgdGhlIFNITSBtb2RlLgorICAgIEhlYWRsZXNzSW5zdGFuY2U6OnNpbmdsZXRvbigp
OworCisgICAgc3RhdGljIHN0cnVjdCB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Ns
aWVudCBleHBvcnRhYmxlQ2xpZW50ID0geworICAgICAgICBudWxscHRyLAorICAgICAgICBudWxs
cHRyLAorI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICAgICAgLy8gZXhwb3J0
X3NobV9idWZmZXIKKyAgICAgICAgW10odm9pZCogZGF0YSwgc3RydWN0IHdwZV9mZG9fc2htX2V4
cG9ydGVkX2J1ZmZlciogYnVmZmVyKQorICAgICAgICB7CisgICAgICAgICAgICBhdXRvJiBiYWNr
ZW5kID0gKnN0YXRpY19jYXN0PEhlYWRsZXNzVmlld0JhY2tlbmQqPihkYXRhKTsKKyAgICAgICAg
ICAgIGJhY2tlbmQubV91cGRhdGUucGVuZGluZyA9IHRydWU7CisKKyAgICAgICAgICAgIGJhY2tl
bmQudXBkYXRlU25hcHNob3QoYnVmZmVyKTsKKyAgICAgICAgICAgIHdwZV92aWV3X2JhY2tlbmRf
ZXhwb3J0YWJsZV9mZG9fZGlzcGF0Y2hfcmVsZWFzZV9zaG1fZXhwb3J0ZWRfYnVmZmVyKGJhY2tl
bmQubV9leHBvcnRhYmxlLCBidWZmZXIpOworICAgICAgICB9LAorI2Vsc2UKKyAgICAgICAgbnVs
bHB0ciwKKyNlbmRpZgorICAgICAgICBudWxscHRyLAorICAgICAgICBudWxscHRyLAorICAgIH07
CisgICAgbV9leHBvcnRhYmxlID0gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19jcmVh
dGUoJmV4cG9ydGFibGVDbGllbnQsIHRoaXMsIHdpZHRoLCBoZWlnaHQpOworCisgICAgYWRkQWN0
aXZpdHlTdGF0ZSh3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV92aXNpYmxlIHwgd3BlX3ZpZXdfYWN0
aXZpdHlfc3RhdGVfZm9jdXNlZCB8IHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX2luX3dpbmRvdyk7
CisKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHN0cmlkZSA9IGNhaXJvX2Zvcm1hdF9zdHJpZGVf
Zm9yX3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpOworICAgICAgICB1aW50OF90
KiBidWZmZXIgPSBuZXcgdWludDhfdFtzdHJpZGUgKiBtX2hlaWdodF07CisgICAgICAgIG1lbXNl
dChidWZmZXIsIDAsIHN0cmlkZSAqIG1faGVpZ2h0KTsKKworICAgICAgICBtX3NuYXBzaG90ID0g
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVmZmVyLCBDQUlST19GT1JNQVRf
QVJHQjMyLAorICAgICAgICAgICAgbV93aWR0aCwgbV9oZWlnaHQsIHN0cmlkZSk7CisKKyAgICAg
ICAgY2Fpcm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNob3QsICZzX2J1ZmZlcktleSwg
YnVmZmVyLAorICAgICAgICAgICAgW10odm9pZCogZGF0YSkgeworICAgICAgICAgICAgICAgIGF1
dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKTsKKyAgICAgICAgICAgICAg
ICBkZWxldGVbXSBidWZmZXI7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9tYXJrX2RpcnR5KG1fc25hcHNob3QpOworICAgIH0KKworI2lmIFdQRV9DSEVDS19WRVJTSU9O
KDEsIDExLCAxKQorICAgIHdwZV92aWV3X2JhY2tlbmRfc2V0X2Z1bGxzY3JlZW5faGFuZGxlcihi
YWNrZW5kKCksIG9uRE9NRnVsbFNjcmVlblJlcXVlc3QsIHRoaXMpOworI2VuZGlmCisKKyAgICBt
X3VwZGF0ZS5zb3VyY2UgPSBnX3RpbWVvdXRfc291cmNlX25ldyhHX1VTRUNfUEVSX1NFQyAvIDYw
MDAwKTsKKyAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sobV91cGRhdGUuc291cmNlLCBbXShncG9p
bnRlciBkYXRhKSAtPiBnYm9vbGVhbiB7CisgICAgICAgIHN0YXRpY19jYXN0PEhlYWRsZXNzVmll
d0JhY2tlbmQqPihkYXRhKS0+dnN5bmMoKTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgfSwg
dGhpcywgbnVsbHB0cik7CisgICAgZ19zb3VyY2Vfc2V0X3ByaW9yaXR5KG1fdXBkYXRlLnNvdXJj
ZSwgR19QUklPUklUWV9ERUZBVUxUKTsKKyAgICBnX3NvdXJjZV9hdHRhY2gobV91cGRhdGUuc291
cmNlLCBnX21haW5fY29udGV4dF9kZWZhdWx0KCkpOworfQorCitIZWFkbGVzc1ZpZXdCYWNrZW5k
Ojp+SGVhZGxlc3NWaWV3QmFja2VuZCgpCit7CisgICAgaWYgKG1fdXBkYXRlLnNvdXJjZSkgewor
ICAgICAgICBnX3NvdXJjZV9kZXN0cm95KG1fdXBkYXRlLnNvdXJjZSk7CisgICAgICAgIGdfc291
cmNlX3VucmVmKG1fdXBkYXRlLnNvdXJjZSk7CisgICAgfQorCisgICAgaWYgKG1fc25hcHNob3Qp
CisgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3NuYXBzaG90KTsKKworICAgIGlmICht
X2V4cG9ydGFibGUpCisgICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGVz
dHJveShtX2V4cG9ydGFibGUpOworfQorCitzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZCogSGVhZGxl
c3NWaWV3QmFja2VuZDo6YmFja2VuZCgpIGNvbnN0Cit7CisgICAgaWYgKG1fZXhwb3J0YWJsZSkK
KyAgICAgICAgcmV0dXJuIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZ2V0X3ZpZXdf
YmFja2VuZChtX2V4cG9ydGFibGUpOworICAgIHJldHVybiBudWxscHRyOworfQorCitQbGF0Zm9y
bUltYWdlIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnNuYXBzaG90KCkKK3sKKyAgICByZXR1cm4gY2Fp
cm9fc3VyZmFjZV9yZWZlcmVuY2UobV9zbmFwc2hvdCk7Cit9CisKK3ZvaWQgSGVhZGxlc3NWaWV3
QmFja2VuZDo6dXBkYXRlU25hcHNob3QoUGxhdGZvcm1CdWZmZXIgZXhwb3J0ZWRCdWZmZXIpCit7
CisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQorICAgIHN0cnVjdCB3bF9zaG1fYnVm
ZmVyKiBzaG1CdWZmZXIgPSB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXJfZ2V0X3NobV9idWZm
ZXIoZXhwb3J0ZWRCdWZmZXIpOworICAgIHsKKyAgICAgICAgYXV0byBmb3JtYXQgPSB3bF9zaG1f
YnVmZmVyX2dldF9mb3JtYXQoc2htQnVmZmVyKTsKKyAgICAgICAgaWYgKGZvcm1hdCAhPSBXTF9T
SE1fRk9STUFUX0FSR0I4ODg4ICYmIGZvcm1hdCAhPSBXTF9TSE1fRk9STUFUX1hSR0I4ODg4KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHVpbnQzMl90IGJ1ZmZlclN0cmlkZSA9
IGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJPX0ZPUk1BVF9BUkdCMzIsIG1fd2lk
dGgpOworICAgIHVpbnQ4X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W2J1ZmZlclN0cmlkZSAqIG1f
aGVpZ2h0XTsKKyAgICBtZW1zZXQoYnVmZmVyLCAwLCBidWZmZXJTdHJpZGUgKiBtX2hlaWdodCk7
CisKKyAgICB7CisgICAgICAgIHVpbnQzMl90IHdpZHRoID0gc3RkOjptaW48dWludDMyX3Q+KG1f
d2lkdGgsIHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X3dpZHRoKHNobUJ1ZmZlcikpKTsK
KyAgICAgICAgdWludDMyX3QgaGVpZ2h0ID0gc3RkOjptaW48dWludDMyX3Q+KG1faGVpZ2h0LCBz
dGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dldF9oZWlnaHQoc2htQnVmZmVyKSkpOworICAgICAg
ICB1aW50MzJfdCBzdHJpZGUgPSBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dldF9zdHJpZGUo
c2htQnVmZmVyKSk7CisKKyAgICAgICAgd2xfc2htX2J1ZmZlcl9iZWdpbl9hY2Nlc3Moc2htQnVm
ZmVyKTsKKyAgICAgICAgYXV0byogZGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPih3bF9zaG1f
YnVmZmVyX2dldF9kYXRhKHNobUJ1ZmZlcikpOworCisgICAgICAgIGZvciAodWludDMyX3QgeSA9
IDA7IHkgPCBoZWlnaHQ7ICsreSkgeworICAgICAgICAgICAgZm9yICh1aW50MzJfdCB4ID0gMDsg
eCA8IHdpZHRoOyArK3gpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICog
eSArIDQgKiB4ICsgMF0gPSBkYXRhW3N0cmlkZSAqIHkgKyA0ICogeCArIDBdOworICAgICAgICAg
ICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAxXSA9IGRhdGFbc3RyaWRl
ICogeSArIDQgKiB4ICsgMV07CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAq
IHkgKyA0ICogeCArIDJdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAyXTsKKyAgICAgICAg
ICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgM10gPSBkYXRhW3N0cmlk
ZSAqIHkgKyA0ICogeCArIDNdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
d2xfc2htX2J1ZmZlcl9lbmRfYWNjZXNzKHNobUJ1ZmZlcik7CisgICAgfQorCisgICAgaWYgKG1f
c25hcHNob3QpCisgICAgICAgIGNhaXJvX3N1cmZhY2VfZGVzdHJveShtX3NuYXBzaG90KTsKKwor
ICAgIG1fc25hcHNob3QgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZm
ZXIsIENBSVJPX0ZPUk1BVF9BUkdCMzIsCisgICAgICAgIG1fd2lkdGgsIG1faGVpZ2h0LCBjYWly
b19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKSk7
CisKKyAgICBzdGF0aWMgY2Fpcm9fdXNlcl9kYXRhX2tleV90IGJ1ZmZlcktleTsKKyAgICBjYWly
b19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwgJmJ1ZmZlcktleSwgYnVmZmVyLAor
ICAgICAgICBbXSh2b2lkKiBkYXRhKSB7CisgICAgICAgICAgICBhdXRvKiBidWZmZXIgPSBzdGF0
aWNfY2FzdDx1aW50OF90Kj4oZGF0YSk7CisgICAgICAgICAgICBkZWxldGVbXSBidWZmZXI7Cisg
ICAgICAgIH0pOworICAgIGNhaXJvX3N1cmZhY2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyNl
bHNlCisgICAgKHZvaWQpZXhwb3J0ZWRCdWZmZXI7CisjZW5kaWYKK30KKwordm9pZCBIZWFkbGVz
c1ZpZXdCYWNrZW5kOjp2c3luYygpCit7CisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNyww
KQorICAgIGlmIChtX3VwZGF0ZS5wZW5kaW5nKQorICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4
cG9ydGFibGVfZmRvX2Rpc3BhdGNoX2ZyYW1lX2NvbXBsZXRlKG1fZXhwb3J0YWJsZSk7CisjZW5k
aWYKKyAgICBtX3VwZGF0ZS5wZW5kaW5nID0gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdQ
RVRvb2xpbmdCYWNrZW5kcwpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1Zp
ZXdCYWNrZW5kLmNwcCBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBUb29scy93cGUvYmFja2VuZHMv
V2luZG93Vmlld0JhY2tlbmQuY3BwCnJlbmFtZSB0byBUb29scy93cGUvYmFja2VuZHMvZmRvL1dp
bmRvd1ZpZXdCYWNrZW5kLmNwcApkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRv
d1ZpZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5k
LmgKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dp
bmRvd1ZpZXdCYWNrZW5kLmgKcmVuYW1lIHRvIFRvb2xzL3dwZS9iYWNrZW5kcy9mZG8vV2luZG93
Vmlld0JhY2tlbmQuaAppbmRleCA0NzRlOGIyMTJiNzEuLjBiN2NjMTE5ZTgzYyAxMDA2NDQKLS0t
IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmgKKysrIGIvVG9vbHMvd3Bl
L2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oCkBAIC0yOSw5ICsyOSwyMCBAQAogI2lu
Y2x1ZGUgInhkZy1zaGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaCIKICNpbmNsdWRl
IDxnbGliLmg+CiAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KKyNpbmNsdWRlIDx3cGUvZmRvLmg+
CiAKK3R5cGVkZWYgdm9pZCogRUdMQ29uZmlnOwordHlwZWRlZiB2b2lkKiBFR0xDb250ZXh0Owor
dHlwZWRlZiB2b2lkKiBFR0xEaXNwbGF5OwogdHlwZWRlZiB2b2lkKiBFR0xTdXJmYWNlOwotdHlw
ZWRlZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAgKkVHTE5hdGl2ZVdpbmRvd1R5cGU7Cit0eXBlZGVm
IHN0cnVjdCB3bF9lZ2xfd2luZG93ICpFR0xOYXRpdmVXaW5kb3dUeXBlOworCisvLyBNYW51YWxs
eSBwcm92aWRlIHRoZSBFR0xfQ0FTVCBDKysgZGVmaW5pdGlvbiBpbiBjYXNlIGVnbHBsYXRmb3Jt
LmggZG9lc24ndCBwcm92aWRlIGl0LgorI2lmbmRlZiBFR0xfQ0FTVAorI2RlZmluZSBFR0xfQ0FT
VCh0eXBlLCB2YWx1ZSkgKHN0YXRpY19jYXN0PHR5cGU+KHZhbHVlKSkKKyNlbmRpZgorCitzdHJ1
Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2U7CiAKIG5hbWVzcGFjZSBXUEVUb29saW5nQmFj
a2VuZHMgewogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>450262</attachid>
            <date>2022-01-28 11:39:45 -0800</date>
            <delta_ts>2022-01-31 07:15:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-235745.diff</filename>
            <type>text/plain</type>
            <size>23267</size>
            <attacher name="Don Olmstead">don.olmstead</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA4ZDFi
NjliZjViZTUuLmJmNmE1YTA4ZDY3OSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIyLTAxLTI4ICBEb24gT2xtc3Rl
YWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBhZGRpdGlvbmFs
IFdQRVRvb2xpbmdCYWNrZW5kIHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzU3NDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTcGxpdCB1cCBjb2RlIHNwZWNpZmljIHRvIHRoZSBmZG8gYmFja2Vu
ZCB0byBhbGxvdyBmb3IgYWRkaXRpb25hbCBXUEUgYmFja2VuZCB0eXBlcyB0byBiZQorICAgICAg
ICB1c2VkLiBBZGQgc29tZSBwbGF0Zm9ybSBkZWZpbmVzIGJhc2VkIG9uIHRoZSB1bmRlcmx5aW5n
IGJhY2tlbmQuCisKKyAgICAgICAgVGhpcyBpcyBhIHByZWN1cnNvciB0byBsYW5kaW5nIGEgUGxh
eVN0YXRpb24gdmFyaWFudC4KKworICAgICAgICAqIHdwZS9iYWNrZW5kcy9DTWFrZUxpc3RzLnR4
dDoKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHA6CisgICAg
ICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzSW5zdGFuY2U6OnNpbmdsZXRvbik6IERl
bGV0ZWQuCisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6
OkhlYWRsZXNzVmlld0JhY2tlbmQpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tl
bmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjp+SGVhZGxlc3NWaWV3QmFja2VuZCk6IERlbGV0ZWQu
CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6OmJhY2tl
bmQgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVz
c1ZpZXdCYWNrZW5kOjpzbmFwc2hvdCk6IERlbGV0ZWQuCisgICAgICAgIChXUEVUb29saW5nQmFj
a2VuZHM6OkhlYWRsZXNzVmlld0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZDo6dnN5bmMpOiBE
ZWxldGVkLgorICAgICAgICAqIHdwZS9iYWNrZW5kcy9IZWFkbGVzc1ZpZXdCYWNrZW5kLmg6Cisg
ICAgICAgICogd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlOgorICAgICAgICAqIHdwZS9i
YWNrZW5kcy9WaWV3QmFja2VuZC5jcHA6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OlZp
ZXdCYWNrZW5kOjpWaWV3QmFja2VuZCk6CisgICAgICAgICogd3BlL2JhY2tlbmRzL1ZpZXdCYWNr
ZW5kLmg6CisgICAgICAgICogd3BlL2JhY2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRv
LmNwcDogQ29waWVkIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwLgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc0luc3RhbmNlOjpzaW5n
bGV0b24pOgorICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5k
OjpIZWFkbGVzc1ZpZXdCYWNrZW5kKToKKyAgICAgICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVh
ZGxlc3NWaWV3QmFja2VuZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQpOgorICAgICAgICAoV1BFVG9v
bGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kIGNvbnN0KToKKyAgICAg
ICAgKFdQRVRvb2xpbmdCYWNrZW5kczo6SGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QpOgor
ICAgICAgICAoV1BFVG9vbGluZ0JhY2tlbmRzOjpIZWFkbGVzc1ZpZXdCYWNrZW5kOjp1cGRhdGVT
bmFwc2hvdCk6CisgICAgICAgIChXUEVUb29saW5nQmFja2VuZHM6OkhlYWRsZXNzVmlld0JhY2tl
bmQ6OnZzeW5jKToKKyAgICAgICAgKiB3cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5k
LmNwcDogUmVuYW1lZCBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5j
cHAuCisgICAgICAgICogd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2VuZC5oOiBSZW5h
bWVkIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRzL1dpbmRvd1ZpZXdCYWNrZW5kLmguCisKIDIwMjIt
MDEtMjggIEVsbGlvdHQgV2lsbGlhbXMgIDxlbXdAYXBwbGUuY29tPgogCiAgICAgICAgIFtYQ0J1
aWxkXSBTbWFsbCBjb3JyZWN0aW9ucyB0byBidWlsZC13ZWJraXQgYW5kIE1ha2VmaWxlIGZvciB3
b3Jrc3BhY2UgYnVpbGRzCmRpZmYgLS1naXQgYS9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0
cy50eHQgYi9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0cy50eHQKaW5kZXggNWZkNWUzODM2
MTUxLi40OTE2N2Y4YWNjMjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9DTWFrZUxp
c3RzLnR4dAorKysgYi9Ub29scy93cGUvYmFja2VuZHMvQ01ha2VMaXN0cy50eHQKQEAgLTcsMTMg
KzcsMTEgQEAgZmlsZShNQUtFX0RJUkVDVE9SWSAke1dQRVRvb2xpbmdCYWNrZW5kc19ERVJJVkVE
X1NPVVJDRVNfRElSfSkKIHNldChXUEVUb29saW5nQmFja2VuZHNfUFVCTElDX0hFQURFUlMKICAg
ICBIZWFkbGVzc1ZpZXdCYWNrZW5kLmgKICAgICBWaWV3QmFja2VuZC5oCi0gICAgV2luZG93Vmll
d0JhY2tlbmQuaAogKQogCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1NPVVJDRVMKICAgICBIZWFk
bGVzc1ZpZXdCYWNrZW5kLmNwcAogICAgIFZpZXdCYWNrZW5kLmNwcAotICAgIFdpbmRvd1ZpZXdC
YWNrZW5kLmNwcAogKQogCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX1BSSVZBVEVfSU5DTFVERV9E
SVJFQ1RPUklFUwpAQCAtMjYsNiArMjQsMTAgQEAgc2V0KFdQRVRvb2xpbmdCYWNrZW5kc19MSUJS
QVJJRVMKICAgICBXUEU6OmxpYndwZQogKQogCitpZiAoVVNFX0NBSVJPKQorICAgIGxpc3QoQVBQ
RU5EIFdQRVRvb2xpbmdCYWNrZW5kc19ERUZJTklUSU9OUyBVU0VfQ0FJUk89MSkKK2VuZGlmICgp
CisKIHNldChXUEVUb29saW5nQmFja2VuZHNfSU5URVJGQUNFX0xJQlJBUklFUyBXUEVUb29saW5n
QmFja2VuZHMpCiBzZXQoV1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9JTkNMVURFX0RJUkVD
VE9SSUVTICR7V1BFVG9vbGluZ0JhY2tlbmRzX0ZSQU1FV09SS19IRUFERVJTX0RJUn0pCiBzZXQo
V1BFVG9vbGluZ0JhY2tlbmRzX0lOVEVSRkFDRV9ERVBFTkRFTkNJRVMgV1BFVG9vbGluZ0JhY2tl
bmRzX0NvcHlIZWFkZXJzKQpkaWZmIC0tZ2l0IGEvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNz
Vmlld0JhY2tlbmQuY3BwIGIvVG9vbHMvd3BlL2JhY2tlbmRzL0hlYWRsZXNzVmlld0JhY2tlbmQu
Y3BwCmluZGV4IDM5ZjBlMjZkMWJiMy4uZjY0OGU3MThiNTFkIDEwMDY0NAotLS0gYS9Ub29scy93
cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5jcHAKKysrIGIvVG9vbHMvd3BlL2JhY2tl
bmRzL0hlYWRsZXNzVmlld0JhY2tlbmQuY3BwCkBAIC0yNSwxODEgKzI1LDggQEAKIAogI2luY2x1
ZGUgIkhlYWRsZXNzVmlld0JhY2tlbmQuaCIKIAotI2luY2x1ZGUgPGNhc3NlcnQ+Ci0jaW5jbHVk
ZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxtdXRleD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2lm
IFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSNpbmNsdWRlIDx3YXlsYW5kLXNlcnZlci5o
PgotI2luY2x1ZGUgPHdwZS91bnN0YWJsZS9mZG8tc2htLmg+Ci0jZW5kaWYKLQogbmFtZXNwYWNl
IFdQRVRvb2xpbmdCYWNrZW5kcyB7CiAKLXN0cnVjdCBIZWFkbGVzc0luc3RhbmNlIHsKLSAgICBz
dGF0aWMgY29uc3QgSGVhZGxlc3NJbnN0YW5jZSYgc2luZ2xldG9uKCkKLSAgICB7Ci0gICAgICAg
IHN0YXRpYyBzdGQ6Om9uY2VfZmxhZyBzX29uY2VGbGFnOwotICAgICAgICBzdGF0aWMgSGVhZGxl
c3NJbnN0YW5jZSBzX2luc3RhbmNlOwotICAgICAgICBzdGQ6OmNhbGxfb25jZShzX29uY2VGbGFn
LAotICAgICAgICAgICAgW10gewotI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKLSAg
ICAgICAgICAgICAgICB3cGVfZmRvX2luaXRpYWxpemVfc2htKCk7Ci0jZW5kaWYKLSAgICAgICAg
ICAgIH0pOwotCi0gICAgICAgIHJldHVybiBzX2luc3RhbmNlOwotICAgIH0KLX07Ci0KLXN0YXRp
YyBjYWlyb191c2VyX2RhdGFfa2V5X3Qgc19idWZmZXJLZXk7Ci0KLUhlYWRsZXNzVmlld0JhY2tl
bmQ6OkhlYWRsZXNzVmlld0JhY2tlbmQodWludDMyX3Qgd2lkdGgsIHVpbnQzMl90IGhlaWdodCkK
LSAgICA6IFZpZXdCYWNrZW5kKHdpZHRoLCBoZWlnaHQpCi17Ci0gICAgLy8gVGhpcyBzaG91bGQg
aW5pdGlhbGl6ZSB0aGUgU0hNIG1vZGUuCi0gICAgSGVhZGxlc3NJbnN0YW5jZTo6c2luZ2xldG9u
KCk7Ci0KLSAgICBzdGF0aWMgc3RydWN0IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9f
Y2xpZW50IGV4cG9ydGFibGVDbGllbnQgPSB7Ci0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51
bGxwdHIsCi0jaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQotICAgICAgICAvLyBleHBv
cnRfc2htX2J1ZmZlcgotICAgICAgICBbXSh2b2lkKiBkYXRhLCBzdHJ1Y3Qgd3BlX2Zkb19zaG1f
ZXhwb3J0ZWRfYnVmZmVyKiBidWZmZXIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1dG8mIGJh
Y2tlbmQgPSAqc3RhdGljX2Nhc3Q8SGVhZGxlc3NWaWV3QmFja2VuZCo+KGRhdGEpOwotICAgICAg
ICAgICAgYmFja2VuZC5tX3VwZGF0ZS5wZW5kaW5nID0gdHJ1ZTsKLQotICAgICAgICAgICAgYmFj
a2VuZC51cGRhdGVTbmFwc2hvdChidWZmZXIpOwotICAgICAgICAgICAgd3BlX3ZpZXdfYmFja2Vu
ZF9leHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9yZWxlYXNlX3NobV9leHBvcnRlZF9idWZmZXIoYmFj
a2VuZC5tX2V4cG9ydGFibGUsIGJ1ZmZlcik7Ci0gICAgICAgIH0sCi0jZWxzZQotICAgICAgICBu
dWxscHRyLAotI2VuZGlmCi0gICAgICAgIG51bGxwdHIsCi0gICAgICAgIG51bGxwdHIsCi0gICAg
fTsKLSAgICBtX2V4cG9ydGFibGUgPSB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Ny
ZWF0ZSgmZXhwb3J0YWJsZUNsaWVudCwgdGhpcywgd2lkdGgsIGhlaWdodCk7Ci0KLSAgICBhZGRB
Y3Rpdml0eVN0YXRlKHdwZV92aWV3X2FjdGl2aXR5X3N0YXRlX3Zpc2libGUgfCB3cGVfdmlld19h
Y3Rpdml0eV9zdGF0ZV9mb2N1c2VkIHwgd3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfaW5fd2luZG93
KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgc3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlk
ZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgICAgIHVpbnQ4
X3QqIGJ1ZmZlciA9IG5ldyB1aW50OF90W3N0cmlkZSAqIG1faGVpZ2h0XTsKLSAgICAgICAgbWVt
c2V0KGJ1ZmZlciwgMCwgc3RyaWRlICogbV9oZWlnaHQpOwotCi0gICAgICAgIG1fc25hcHNob3Qg
PSBjYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShidWZmZXIsIENBSVJPX0ZPUk1B
VF9BUkdCMzIsCi0gICAgICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgc3RyaWRlKTsKLQotICAg
ICAgICBjYWlyb19zdXJmYWNlX3NldF91c2VyX2RhdGEobV9zbmFwc2hvdCwgJnNfYnVmZmVyS2V5
LCBidWZmZXIsCi0gICAgICAgICAgICBbXSh2b2lkKiBkYXRhKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byogYnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOwotICAgICAgICAgICAg
ICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgICAgIH0pOwotICAgICAgICBjYWlyb19zdXJm
YWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Ci0gICAgfQotCi0jaWYgV1BFX0NIRUNLX1ZFUlNJ
T04oMSwgMTEsIDEpCi0gICAgd3BlX3ZpZXdfYmFja2VuZF9zZXRfZnVsbHNjcmVlbl9oYW5kbGVy
KGJhY2tlbmQoKSwgb25ET01GdWxsU2NyZWVuUmVxdWVzdCwgdGhpcyk7Ci0jZW5kaWYKLQotICAg
IG1fdXBkYXRlLnNvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3KEdfVVNFQ19QRVJfU0VDIC8g
NjAwMDApOwotICAgIGdfc291cmNlX3NldF9jYWxsYmFjayhtX3VwZGF0ZS5zb3VyY2UsIFtdKGdw
b2ludGVyIGRhdGEpIC0+IGdib29sZWFuIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SGVhZGxlc3NW
aWV3QmFja2VuZCo+KGRhdGEpLT52c3luYygpOwotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICB9
LCB0aGlzLCBudWxscHRyKTsKLSAgICBnX3NvdXJjZV9zZXRfcHJpb3JpdHkobV91cGRhdGUuc291
cmNlLCBHX1BSSU9SSVRZX0RFRkFVTFQpOwotICAgIGdfc291cmNlX2F0dGFjaChtX3VwZGF0ZS5z
b3VyY2UsIGdfbWFpbl9jb250ZXh0X2RlZmF1bHQoKSk7Ci19Ci0KLUhlYWRsZXNzVmlld0JhY2tl
bmQ6On5IZWFkbGVzc1ZpZXdCYWNrZW5kKCkKLXsKLSAgICBpZiAobV91cGRhdGUuc291cmNlKSB7
Ci0gICAgICAgIGdfc291cmNlX2Rlc3Ryb3kobV91cGRhdGUuc291cmNlKTsKLSAgICAgICAgZ19z
b3VyY2VfdW5yZWYobV91cGRhdGUuc291cmNlKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hv
dCkKLSAgICAgICAgY2Fpcm9fc3VyZmFjZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgaWYg
KG1fZXhwb3J0YWJsZSkKLSAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19k
ZXN0cm95KG1fZXhwb3J0YWJsZSk7Ci19Ci0KLXN0cnVjdCB3cGVfdmlld19iYWNrZW5kKiBIZWFk
bGVzc1ZpZXdCYWNrZW5kOjpiYWNrZW5kKCkgY29uc3QKLXsKLSAgICBpZiAobV9leHBvcnRhYmxl
KQotICAgICAgICByZXR1cm4gd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19nZXRfdmll
d19iYWNrZW5kKG1fZXhwb3J0YWJsZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLWNhaXJv
X3N1cmZhY2VfdCogSGVhZGxlc3NWaWV3QmFja2VuZDo6c25hcHNob3QoKQotewotICAgIHJldHVy
biBjYWlyb19zdXJmYWNlX3JlZmVyZW5jZShtX3NuYXBzaG90KTsKLX0KLQotdm9pZCBIZWFkbGVz
c1ZpZXdCYWNrZW5kOjp1cGRhdGVTbmFwc2hvdChzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRf
YnVmZmVyKiBleHBvcnRlZEJ1ZmZlcikKLXsKLSNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3
LDApCi0gICAgc3RydWN0IHdsX3NobV9idWZmZXIqIHNobUJ1ZmZlciA9IHdwZV9mZG9fc2htX2V4
cG9ydGVkX2J1ZmZlcl9nZXRfc2htX2J1ZmZlcihleHBvcnRlZEJ1ZmZlcik7Ci0gICAgewotICAg
ICAgICBhdXRvIGZvcm1hdCA9IHdsX3NobV9idWZmZXJfZ2V0X2Zvcm1hdChzaG1CdWZmZXIpOwot
ICAgICAgICBpZiAoZm9ybWF0ICE9IFdMX1NITV9GT1JNQVRfQVJHQjg4ODggJiYgZm9ybWF0ICE9
IFdMX1NITV9GT1JNQVRfWFJHQjg4ODgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgdWludDMyX3QgYnVmZmVyU3RyaWRlID0gY2Fpcm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgo
Q0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCk7Ci0gICAgdWludDhfdCogYnVmZmVyID0gbmV3
IHVpbnQ4X3RbYnVmZmVyU3RyaWRlICogbV9oZWlnaHRdOwotICAgIG1lbXNldChidWZmZXIsIDAs
IGJ1ZmZlclN0cmlkZSAqIG1faGVpZ2h0KTsKLQotICAgIHsKLSAgICAgICAgdWludDMyX3Qgd2lk
dGggPSBzdGQ6Om1pbjx1aW50MzJfdD4obV93aWR0aCwgc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZl
cl9nZXRfd2lkdGgoc2htQnVmZmVyKSkpOwotICAgICAgICB1aW50MzJfdCBoZWlnaHQgPSBzdGQ6
Om1pbjx1aW50MzJfdD4obV9oZWlnaHQsIHN0ZDo6bWF4KDAsIHdsX3NobV9idWZmZXJfZ2V0X2hl
aWdodChzaG1CdWZmZXIpKSk7Ci0gICAgICAgIHVpbnQzMl90IHN0cmlkZSA9IHN0ZDo6bWF4KDAs
IHdsX3NobV9idWZmZXJfZ2V0X3N0cmlkZShzaG1CdWZmZXIpKTsKLQotICAgICAgICB3bF9zaG1f
YnVmZmVyX2JlZ2luX2FjY2VzcyhzaG1CdWZmZXIpOwotICAgICAgICBhdXRvKiBkYXRhID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KHdsX3NobV9idWZmZXJfZ2V0X2RhdGEoc2htQnVmZmVyKSk7Ci0K
LSAgICAgICAgZm9yICh1aW50MzJfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7Ci0gICAgICAg
ICAgICBmb3IgKHVpbnQzMl90IHggPSAwOyB4IDwgd2lkdGg7ICsreCkgewotICAgICAgICAgICAg
ICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5ICsgNCAqIHggKyAwXSA9IGRhdGFbc3RyaWRlICog
eSArIDQgKiB4ICsgMF07Ci0gICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkg
KyA0ICogeCArIDFdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAxXTsKLSAgICAgICAgICAg
ICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMl0gPSBkYXRhW3N0cmlkZSAq
IHkgKyA0ICogeCArIDJdOwotICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUgKiB5
ICsgNCAqIHggKyAzXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgM107Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLQotICAgICAgICB3bF9zaG1fYnVmZmVyX2VuZF9hY2Nlc3Moc2htQnVm
ZmVyKTsKLSAgICB9Ci0KLSAgICBpZiAobV9zbmFwc2hvdCkKLSAgICAgICAgY2Fpcm9fc3VyZmFj
ZV9kZXN0cm95KG1fc25hcHNob3QpOwotCi0gICAgbV9zbmFwc2hvdCA9IGNhaXJvX2ltYWdlX3N1
cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFUX0FSR0IzMiwKLSAgICAg
ICAgbV93aWR0aCwgbV9oZWlnaHQsIGNhaXJvX2Zvcm1hdF9zdHJpZGVfZm9yX3dpZHRoKENBSVJP
X0ZPUk1BVF9BUkdCMzIsIG1fd2lkdGgpKTsKLQotICAgIHN0YXRpYyBjYWlyb191c2VyX2RhdGFf
a2V5X3QgYnVmZmVyS2V5OwotICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShtX3NuYXBz
aG90LCAmYnVmZmVyS2V5LCBidWZmZXIsCi0gICAgICAgIFtdKHZvaWQqIGRhdGEpIHsKLSAgICAg
ICAgICAgIGF1dG8qIGJ1ZmZlciA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihkYXRhKTsKLSAgICAg
ICAgICAgIGRlbGV0ZVtdIGJ1ZmZlcjsKLSAgICAgICAgfSk7Ci0gICAgY2Fpcm9fc3VyZmFjZV9t
YXJrX2RpcnR5KG1fc25hcHNob3QpOwotI2Vsc2UKLSAgICAodm9pZClleHBvcnRlZEJ1ZmZlcjsK
LSNlbmRpZgotfQotCi12b2lkIEhlYWRsZXNzVmlld0JhY2tlbmQ6OnZzeW5jKCkKLXsKLSNpZiBX
UEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCi0gICAgaWYgKG1fdXBkYXRlLnBlbmRpbmcpCi0g
ICAgICAgIHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fZGlzcGF0Y2hfZnJhbWVfY29t
cGxldGUobV9leHBvcnRhYmxlKTsKLSNlbmRpZgotICAgIG1fdXBkYXRlLnBlbmRpbmcgPSBmYWxz
ZTsKLX0KLQogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAxKQogYm9vbCBIZWFkbGVzc1Zp
ZXdCYWNrZW5kOjpvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0KHZvaWQqIGRhdGEsIGJvb2wgZnVsbHNj
cmVlbikKIHsKQEAgLTIyNCw1ICs1MSw0IEBAIHZvaWQgSGVhZGxlc3NWaWV3QmFja2VuZDo6ZGlz
cGF0Y2hGdWxsc2NyZWVuRXZlbnQoKQogCiAjZW5kaWYKIAotCiB9IC8vIG5hbWVzcGFjZSBXUEVU
b29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFkbGVzc1Zp
ZXdCYWNrZW5kLmggYi9Ub29scy93cGUvYmFja2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCmlu
ZGV4IGZjNDEyMzc3ZTY1Ni4uZjU3MTNlY2Y3ZWJiIDEwMDY0NAotLS0gYS9Ub29scy93cGUvYmFj
a2VuZHMvSGVhZGxlc3NWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9IZWFk
bGVzc1ZpZXdCYWNrZW5kLmgKQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDE2IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYs
OCArMjcsMjMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiVmlld0JhY2tlbmQuaCIKKwor
I2lmIGRlZmluZWQoV1BFX0JBQ0tFTkRfRkRPKQorI2luY2x1ZGUgPHdwZS9mZG8uaD4KKwordXNp
bmcgUGxhdGZvcm1CdWZmZXIgPSBzdHJ1Y3Qgd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyKjsK
K3VzaW5nIFBsYXRmb3JtVmlld0JhY2tlbmQgPSBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBv
cnRhYmxlX2Zkbyo7CisjZW5kaWYKKworI2lmIGRlZmluZWQoVVNFX0NBSVJPKSAmJiBVU0VfQ0FJ
Uk8KICNpbmNsdWRlIDxjYWlyby5oPgorCit1c2luZyBQbGF0Zm9ybUltYWdlID0gY2Fpcm9fc3Vy
ZmFjZV90KjsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChVU0VfR0xJQikgJiYgVVNFX0dMSUIKICNp
bmNsdWRlIDxnbGliLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5kcyB7
CiAKQEAgLTM4LDEwICs1NCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdHJ1Y3Qgd3BlX3ZpZXdfYmFj
a2VuZCogYmFja2VuZCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgY2Fpcm9fc3VyZmFjZV90KiBz
bmFwc2hvdCgpOworICAgIFBsYXRmb3JtSW1hZ2Ugc25hcHNob3QoKTsKIAogcHJpdmF0ZToKLSAg
ICB2b2lkIHVwZGF0ZVNuYXBzaG90KHN0cnVjdCB3cGVfZmRvX3NobV9leHBvcnRlZF9idWZmZXIq
KTsKKyAgICB2b2lkIHVwZGF0ZVNuYXBzaG90KFBsYXRmb3JtQnVmZmVyKTsKICAgICB2b2lkIHZz
eW5jKCk7CiAKICNpZiBXUEVfQ0hFQ0tfVkVSU0lPTigxLCAxMSwgMSkKQEAgLTQ5LDE1ICs2NSwx
NSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlzcGF0Y2hGdWxsc2NyZWVuRXZlbnQoKTsKICNlbmRp
ZgogCisgICAgUGxhdGZvcm1WaWV3QmFja2VuZCBtX2V4cG9ydGFibGUgeyBudWxscHRyIH07Cisg
ICAgUGxhdGZvcm1JbWFnZSBtX3NuYXBzaG90IHsgbnVsbHB0ciB9OwogCi0gICAgc3RydWN0IHdw
ZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG8qIG1fZXhwb3J0YWJsZSB7IG51bGxwdHIgfTsK
LQotICAgIGNhaXJvX3N1cmZhY2VfdCogbV9zbmFwc2hvdCB7IG51bGxwdHIgfTsKLQorI2lmIGRl
ZmluZWQoVVNFX0dMSUIpICYmIFVTRV9HTElCCiAgICAgc3RydWN0IHsKICAgICAgICAgR1NvdXJj
ZSogc291cmNlIHsgbnVsbHB0ciB9OwogICAgICAgICBib29sIHBlbmRpbmcgeyBmYWxzZSB9Owog
ICAgIH0gbV91cGRhdGU7CisjZW5kaWYKIAogI2lmIFdQRV9DSEVDS19WRVJTSU9OKDEsIDExLCAx
KQogICAgIGJvb2wgbV9pc19mdWxsc2NyZWVuIHsgZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1Rvb2xz
L3dwZS9iYWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZSBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9QbGF0
Zm9ybVdQRS5jbWFrZQppbmRleCAwNzIxNjM0MTgwOGYuLmNmMmRhMWI3NWNjYSAxMDA2NDQKLS0t
IGEvVG9vbHMvd3BlL2JhY2tlbmRzL1BsYXRmb3JtV1BFLmNtYWtlCisrKyBiL1Rvb2xzL3dwZS9i
YWNrZW5kcy9QbGF0Zm9ybVdQRS5jbWFrZQpAQCAtNSwxNiArNSwyMiBAQCBmaW5kX3BhY2thZ2Uo
V1BFQmFja2VuZF9mZG8gMS4zLjAgUkVRVUlSRUQpCiAKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdC
YWNrZW5kc19QVUJMSUNfSEVBREVSUwogICAgICR7V1BFVG9vbGluZ0JhY2tlbmRzX0RFUklWRURf
U09VUkNFU19ESVJ9L3hkZy1zaGVsbC11bnN0YWJsZS12Ni1jbGllbnQtcHJvdG9jb2wuaAorICAg
IGZkby9XaW5kb3dWaWV3QmFja2VuZC5oCiApCiAKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNr
ZW5kc19TT1VSQ0VTCiAgICAgJHtXUEVUb29saW5nQmFja2VuZHNfREVSSVZFRF9TT1VSQ0VTX0RJ
Un0veGRnLXNoZWxsLXVuc3RhYmxlLXY2LXByb3RvY29sLmMKKwogICAgIGF0ay9WaWV3QmFja2Vu
ZEF0ay5jcHAKICAgICBhdGsvV2ViS2l0QWNjZXNzaWJsZUFwcGxpY2F0aW9uLmNwcAorCisgICAg
ZmRvL0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCisgICAgZmRvL1dpbmRvd1ZpZXdCYWNrZW5k
LmNwcAogKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgJHtUT09MU19ESVJ9L3dwZS9iYWNrZW5kcy9hdGsKKyAgICAke1RP
T0xTX0RJUn0vd3BlL2JhY2tlbmRzL2ZkbwogKQogCiBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFj
a2VuZHNfU1lTVEVNX0lOQ0xVREVfRElSRUNUT1JJRVMKQEAgLTMzLDYgKzM5LDcgQEAgbGlzdChB
UFBFTkQgV1BFVG9vbGluZ0JhY2tlbmRzX0xJQlJBUklFUwogICAgICR7V1BFQkFDS0VORF9GRE9f
TElCUkFSSUVTfQogKQogCitsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElP
TlMgVVNFX0dMSUI9MSkKIGxpc3QoQVBQRU5EIFdQRVRvb2xpbmdCYWNrZW5kc19QUklWQVRFX0RF
RklOSVRJT05TICR7TElCRVBPWFlfREVGSU5JVElPTlN9KQogCiBhZGRfY3VzdG9tX2NvbW1hbmQo
CkBAIC00OCw5ICs1NSwxMiBAQCBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgQ09NTUFORCAke1dB
WUxBTkRfU0NBTk5FUn0gY2xpZW50LWhlYWRlciAke1dBWUxBTkRfUFJPVE9DT0xTX0RBVEFESVJ9
L3Vuc3RhYmxlL3hkZy1zaGVsbC94ZGctc2hlbGwtdW5zdGFibGUtdjYueG1sICR7V1BFVG9vbGlu
Z0JhY2tlbmRzX0RFUklWRURfU09VUkNFU19ESVJ9L3hkZy1zaGVsbC11bnN0YWJsZS12Ni1jbGll
bnQtcHJvdG9jb2wuaAogICAgIFZFUkJBVElNKQogCitsaXN0KEFQUEVORCBXUEVUb29saW5nQmFj
a2VuZHNfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkRfRkRPKQorbGlzdChBUFBFTkQgV1BFVG9vbGlu
Z0JhY2tlbmRzX1BSSVZBVEVfREVGSU5JVElPTlMgV1BFX0JBQ0tFTkQ9ImxpYldQRUJhY2tlbmQt
ZmRvLTEuMC5zbyIpCisKIGlmIChFTkFCTEVfQUNDRVNTSUJJTElUWSkKKyAgICBsaXN0KEFQUEVO
RCBXUEVUb29saW5nQmFja2VuZHNfREVGSU5JVElPTlMgRU5BQkxFX0FDQ0VTU0lCSUxJVFk9MSkK
ICAgICBsaXN0KEFQUEVORCBXUEVUb29saW5nQmFja2VuZHNfUFJJVkFURV9ERUZJTklUSU9OUwot
ICAgICAgICBFTkFCTEVfQUNDRVNTSUJJTElUWT0xCiAgICAgICAgIEdMSUJfVkVSU0lPTl9NSU5f
UkVRVUlSRUQ9R0xJQl9WRVJTSU9OXzJfNDAKICAgICApCiAgICAgbGlzdChBUFBFTkQgV1BFVG9v
bGluZ0JhY2tlbmRzX0xJQlJBUklFUyBBVEs6OkJyaWRnZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMvVmlld0JhY2tl
bmQuY3BwCmluZGV4IGEzNzQxMDRkMDVhMS4uMDA4ZWNlZDBiYTc5IDEwMDY0NAotLS0gYS9Ub29s
cy93cGUvYmFja2VuZHMvVmlld0JhY2tlbmQuY3BwCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9W
aWV3QmFja2VuZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAgVmlld0JhY2tlbmQ6OlZpZXdCYWNrZW5k
KHVpbnQzMl90IHdpZHRoLCB1aW50MzJfdCBoZWlnaHQpCiAgICAgOiBtX3dpZHRoKHdpZHRoKQog
ICAgICwgbV9oZWlnaHQoaGVpZ2h0KQogewotICAgIHdwZV9sb2FkZXJfaW5pdCgibGliV1BFQmFj
a2VuZC1mZG8tMS4wLnNvIik7CisgICAgd3BlX2xvYWRlcl9pbml0KFdQRV9CQUNLRU5EKTsKIH0K
IAogVmlld0JhY2tlbmQ6On5WaWV3QmFja2VuZCgpID0gZGVmYXVsdDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2JhY2tlbmRzL1ZpZXdC
YWNrZW5kLmgKaW5kZXggMGU5ODA1YWY4NzgxLi41MzUwODFhMWMwOTIgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL3dwZS9iYWNrZW5kcy9WaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dwZS9iYWNrZW5kcy9W
aWV3QmFja2VuZC5oCkBAIC0yNiwyNiArMjYsMTIgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSA8bWVtb3J5PgotI2luY2x1ZGUgPHdwZS9mZG8uaD4KKyNpbmNsdWRlIDx3cGUvd3BlLmg+CiAK
ICNpZiBkZWZpbmVkKEVOQUJMRV9BQ0NFU1NJQklMSVRZKSAmJiBFTkFCTEVfQUNDRVNTSUJJTElU
WQogdHlwZWRlZiBzdHJ1Y3QgX0F0a09iamVjdCBBdGtPYmplY3Q7CiAjZW5kaWYKIAotdHlwZWRl
ZiB2b2lkKiBFR0xDb25maWc7Ci10eXBlZGVmIHZvaWQqIEVHTENvbnRleHQ7Ci10eXBlZGVmIHZv
aWQqIEVHTERpc3BsYXk7Ci1zdHJ1Y3Qgd3BlX2Zkb19lZ2xfZXhwb3J0ZWRfaW1hZ2U7Ci0KLSNp
ZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSwgNSwgMCkKLXN0cnVjdCB3cGVfZmRvX3NobV9leHBv
cnRlZF9idWZmZXI7Ci0jZW5kaWYKLQotLy8gTWFudWFsbHkgcHJvdmlkZSB0aGUgRUdMX0NBU1Qg
QysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0Zm9ybS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4K
LSNpZm5kZWYgRUdMX0NBU1QKLSNkZWZpbmUgRUdMX0NBU1QodHlwZSwgdmFsdWUpIChzdGF0aWNf
Y2FzdDx0eXBlPih2YWx1ZSkpCi0jZW5kaWYKLQogbmFtZXNwYWNlIFdQRVRvb2xpbmdCYWNrZW5k
cyB7CiAKIGNsYXNzIFZpZXdCYWNrZW5kIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5k
cy9mZG8vSGVhZGxlc3NWaWV3QmFja2VuZEZkby5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMvZmRv
L0hlYWRsZXNzVmlld0JhY2tlbmRGZG8uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNGIzZDI2MjUyOGQzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvd3BlL2Jh
Y2tlbmRzL2Zkby9IZWFkbGVzc1ZpZXdCYWNrZW5kRmRvLmNwcApAQCAtMCwwICsxLDIwMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiSGVhZGxlc3NWaWV3QmFja2VuZC5oIgorCisjaW5jbHVkZSA8Y2Fzc2VydD4KKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPG11dGV4PgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaWYg
V1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQorI2luY2x1ZGUgPHdheWxhbmQtc2VydmVyLmg+
CisjaW5jbHVkZSA8d3BlL3Vuc3RhYmxlL2Zkby1zaG0uaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
V1BFVG9vbGluZ0JhY2tlbmRzIHsKKworc3RydWN0IEhlYWRsZXNzSW5zdGFuY2UgeworICAgIHN0
YXRpYyBjb25zdCBIZWFkbGVzc0luc3RhbmNlJiBzaW5nbGV0b24oKQorICAgIHsKKyAgICAgICAg
c3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfb25jZUZsYWc7CisgICAgICAgIHN0YXRpYyBIZWFkbGVz
c0luc3RhbmNlIHNfaW5zdGFuY2U7CisgICAgICAgIHN0ZDo6Y2FsbF9vbmNlKHNfb25jZUZsYWcs
CisgICAgICAgICAgICBbXSB7CisjaWYgV1BFX0ZET19DSEVDS19WRVJTSU9OKDEsNywwKQorICAg
ICAgICAgICAgICAgIHdwZV9mZG9faW5pdGlhbGl6ZV9zaG0oKTsKKyNlbmRpZgorICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgcmV0dXJuIHNfaW5zdGFuY2U7CisgICAgfQorfTsKKworc3RhdGlj
IGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBzX2J1ZmZlcktleTsKKworSGVhZGxlc3NWaWV3QmFja2Vu
ZDo6SGVhZGxlc3NWaWV3QmFja2VuZCh1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQor
ICAgIDogVmlld0JhY2tlbmQod2lkdGgsIGhlaWdodCkKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBp
bml0aWFsaXplIHRoZSBTSE0gbW9kZS4KKyAgICBIZWFkbGVzc0luc3RhbmNlOjpzaW5nbGV0b24o
KTsKKworICAgIHN0YXRpYyBzdHJ1Y3Qgd3BlX3ZpZXdfYmFja2VuZF9leHBvcnRhYmxlX2Zkb19j
bGllbnQgZXhwb3J0YWJsZUNsaWVudCA9IHsKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgbnVs
bHB0ciwKKyNpZiBXUEVfRkRPX0NIRUNLX1ZFUlNJT04oMSw3LDApCisgICAgICAgIC8vIGV4cG9y
dF9zaG1fYnVmZmVyCisgICAgICAgIFtdKHZvaWQqIGRhdGEsIHN0cnVjdCB3cGVfZmRvX3NobV9l
eHBvcnRlZF9idWZmZXIqIGJ1ZmZlcikKKyAgICAgICAgeworICAgICAgICAgICAgYXV0byYgYmFj
a2VuZCA9ICpzdGF0aWNfY2FzdDxIZWFkbGVzc1ZpZXdCYWNrZW5kKj4oZGF0YSk7CisgICAgICAg
ICAgICBiYWNrZW5kLm1fdXBkYXRlLnBlbmRpbmcgPSB0cnVlOworCisgICAgICAgICAgICBiYWNr
ZW5kLnVwZGF0ZVNuYXBzaG90KGJ1ZmZlcik7CisgICAgICAgICAgICB3cGVfdmlld19iYWNrZW5k
X2V4cG9ydGFibGVfZmRvX2Rpc3BhdGNoX3JlbGVhc2Vfc2htX2V4cG9ydGVkX2J1ZmZlcihiYWNr
ZW5kLm1fZXhwb3J0YWJsZSwgYnVmZmVyKTsKKyAgICAgICAgfSwKKyNlbHNlCisgICAgICAgIG51
bGxwdHIsCisjZW5kaWYKKyAgICAgICAgbnVsbHB0ciwKKyAgICAgICAgbnVsbHB0ciwKKyAgICB9
OworICAgIG1fZXhwb3J0YWJsZSA9IHdwZV92aWV3X2JhY2tlbmRfZXhwb3J0YWJsZV9mZG9fY3Jl
YXRlKCZleHBvcnRhYmxlQ2xpZW50LCB0aGlzLCB3aWR0aCwgaGVpZ2h0KTsKKworICAgIGFkZEFj
dGl2aXR5U3RhdGUod3BlX3ZpZXdfYWN0aXZpdHlfc3RhdGVfdmlzaWJsZSB8IHdwZV92aWV3X2Fj
dGl2aXR5X3N0YXRlX2ZvY3VzZWQgfCB3cGVfdmlld19hY3Rpdml0eV9zdGF0ZV9pbl93aW5kb3cp
OworCisgICAgeworICAgICAgICB1aW50MzJfdCBzdHJpZGUgPSBjYWlyb19mb3JtYXRfc3RyaWRl
X2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dpZHRoKTsKKyAgICAgICAgdWludDhf
dCogYnVmZmVyID0gbmV3IHVpbnQ4X3Rbc3RyaWRlICogbV9oZWlnaHRdOworICAgICAgICBtZW1z
ZXQoYnVmZmVyLCAwLCBzdHJpZGUgKiBtX2hlaWdodCk7CisKKyAgICAgICAgbV9zbmFwc2hvdCA9
IGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9kYXRhKGJ1ZmZlciwgQ0FJUk9fRk9STUFU
X0FSR0IzMiwKKyAgICAgICAgICAgIG1fd2lkdGgsIG1faGVpZ2h0LCBzdHJpZGUpOworCisgICAg
ICAgIGNhaXJvX3N1cmZhY2Vfc2V0X3VzZXJfZGF0YShtX3NuYXBzaG90LCAmc19idWZmZXJLZXks
IGJ1ZmZlciwKKyAgICAgICAgICAgIFtdKHZvaWQqIGRhdGEpIHsKKyAgICAgICAgICAgICAgICBh
dXRvKiBidWZmZXIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YSk7CisgICAgICAgICAgICAg
ICAgZGVsZXRlW10gYnVmZmVyOworICAgICAgICAgICAgfSk7CisgICAgICAgIGNhaXJvX3N1cmZh
Y2VfbWFya19kaXJ0eShtX3NuYXBzaG90KTsKKyAgICB9CisKKyNpZiBXUEVfQ0hFQ0tfVkVSU0lP
TigxLCAxMSwgMSkKKyAgICB3cGVfdmlld19iYWNrZW5kX3NldF9mdWxsc2NyZWVuX2hhbmRsZXIo
YmFja2VuZCgpLCBvbkRPTUZ1bGxTY3JlZW5SZXF1ZXN0LCB0aGlzKTsKKyNlbmRpZgorCisgICAg
bV91cGRhdGUuc291cmNlID0gZ190aW1lb3V0X3NvdXJjZV9uZXcoR19VU0VDX1BFUl9TRUMgLyA2
MDAwMCk7CisgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrKG1fdXBkYXRlLnNvdXJjZSwgW10oZ3Bv
aW50ZXIgZGF0YSkgLT4gZ2Jvb2xlYW4geworICAgICAgICBzdGF0aWNfY2FzdDxIZWFkbGVzc1Zp
ZXdCYWNrZW5kKj4oZGF0YSktPnZzeW5jKCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgIH0s
IHRoaXMsIG51bGxwdHIpOworICAgIGdfc291cmNlX3NldF9wcmlvcml0eShtX3VwZGF0ZS5zb3Vy
Y2UsIEdfUFJJT1JJVFlfREVGQVVMVCk7CisgICAgZ19zb3VyY2VfYXR0YWNoKG1fdXBkYXRlLnNv
dXJjZSwgZ19tYWluX2NvbnRleHRfZGVmYXVsdCgpKTsKK30KKworSGVhZGxlc3NWaWV3QmFja2Vu
ZDo6fkhlYWRsZXNzVmlld0JhY2tlbmQoKQoreworICAgIGlmIChtX3VwZGF0ZS5zb3VyY2UpIHsK
KyAgICAgICAgZ19zb3VyY2VfZGVzdHJveShtX3VwZGF0ZS5zb3VyY2UpOworICAgICAgICBnX3Nv
dXJjZV91bnJlZihtX3VwZGF0ZS5zb3VyY2UpOworICAgIH0KKworICAgIGlmIChtX3NuYXBzaG90
KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7CisKKyAgICBpZiAo
bV9leHBvcnRhYmxlKQorICAgICAgICB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2Rl
c3Ryb3kobV9leHBvcnRhYmxlKTsKK30KKworc3RydWN0IHdwZV92aWV3X2JhY2tlbmQqIEhlYWRs
ZXNzVmlld0JhY2tlbmQ6OmJhY2tlbmQoKSBjb25zdAoreworICAgIGlmIChtX2V4cG9ydGFibGUp
CisgICAgICAgIHJldHVybiB3cGVfdmlld19iYWNrZW5kX2V4cG9ydGFibGVfZmRvX2dldF92aWV3
X2JhY2tlbmQobV9leHBvcnRhYmxlKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworUGxhdGZv
cm1JbWFnZSBIZWFkbGVzc1ZpZXdCYWNrZW5kOjpzbmFwc2hvdCgpCit7CisgICAgcmV0dXJuIGNh
aXJvX3N1cmZhY2VfcmVmZXJlbmNlKG1fc25hcHNob3QpOworfQorCit2b2lkIEhlYWRsZXNzVmll
d0JhY2tlbmQ6OnVwZGF0ZVNuYXBzaG90KFBsYXRmb3JtQnVmZmVyIGV4cG9ydGVkQnVmZmVyKQor
eworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcsMCkKKyAgICBzdHJ1Y3Qgd2xfc2htX2J1
ZmZlciogc2htQnVmZmVyID0gd3BlX2Zkb19zaG1fZXhwb3J0ZWRfYnVmZmVyX2dldF9zaG1fYnVm
ZmVyKGV4cG9ydGVkQnVmZmVyKTsKKyAgICB7CisgICAgICAgIGF1dG8gZm9ybWF0ID0gd2xfc2ht
X2J1ZmZlcl9nZXRfZm9ybWF0KHNobUJ1ZmZlcik7CisgICAgICAgIGlmIChmb3JtYXQgIT0gV0xf
U0hNX0ZPUk1BVF9BUkdCODg4OCAmJiBmb3JtYXQgIT0gV0xfU0hNX0ZPUk1BVF9YUkdCODg4OCkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB1aW50MzJfdCBidWZmZXJTdHJpZGUg
PSBjYWlyb19mb3JtYXRfc3RyaWRlX2Zvcl93aWR0aChDQUlST19GT1JNQVRfQVJHQjMyLCBtX3dp
ZHRoKTsKKyAgICB1aW50OF90KiBidWZmZXIgPSBuZXcgdWludDhfdFtidWZmZXJTdHJpZGUgKiBt
X2hlaWdodF07CisgICAgbWVtc2V0KGJ1ZmZlciwgMCwgYnVmZmVyU3RyaWRlICogbV9oZWlnaHQp
OworCisgICAgeworICAgICAgICB1aW50MzJfdCB3aWR0aCA9IHN0ZDo6bWluPHVpbnQzMl90Piht
X3dpZHRoLCBzdGQ6Om1heCgwLCB3bF9zaG1fYnVmZmVyX2dldF93aWR0aChzaG1CdWZmZXIpKSk7
CisgICAgICAgIHVpbnQzMl90IGhlaWdodCA9IHN0ZDo6bWluPHVpbnQzMl90PihtX2hlaWdodCwg
c3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfaGVpZ2h0KHNobUJ1ZmZlcikpKTsKKyAgICAg
ICAgdWludDMyX3Qgc3RyaWRlID0gc3RkOjptYXgoMCwgd2xfc2htX2J1ZmZlcl9nZXRfc3RyaWRl
KHNobUJ1ZmZlcikpOworCisgICAgICAgIHdsX3NobV9idWZmZXJfYmVnaW5fYWNjZXNzKHNobUJ1
ZmZlcik7CisgICAgICAgIGF1dG8qIGRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4od2xfc2ht
X2J1ZmZlcl9nZXRfZGF0YShzaG1CdWZmZXIpKTsKKworICAgICAgICBmb3IgKHVpbnQzMl90IHkg
PSAwOyB5IDwgaGVpZ2h0OyArK3kpIHsKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgeCA9IDA7
IHggPCB3aWR0aDsgKyt4KSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAq
IHkgKyA0ICogeCArIDBdID0gZGF0YVtzdHJpZGUgKiB5ICsgNCAqIHggKyAwXTsKKyAgICAgICAg
ICAgICAgICBidWZmZXJbYnVmZmVyU3RyaWRlICogeSArIDQgKiB4ICsgMV0gPSBkYXRhW3N0cmlk
ZSAqIHkgKyA0ICogeCArIDFdOworICAgICAgICAgICAgICAgIGJ1ZmZlcltidWZmZXJTdHJpZGUg
KiB5ICsgNCAqIHggKyAyXSA9IGRhdGFbc3RyaWRlICogeSArIDQgKiB4ICsgMl07CisgICAgICAg
ICAgICAgICAgYnVmZmVyW2J1ZmZlclN0cmlkZSAqIHkgKyA0ICogeCArIDNdID0gZGF0YVtzdHJp
ZGUgKiB5ICsgNCAqIHggKyAzXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IHdsX3NobV9idWZmZXJfZW5kX2FjY2VzcyhzaG1CdWZmZXIpOworICAgIH0KKworICAgIGlmICht
X3NuYXBzaG90KQorICAgICAgICBjYWlyb19zdXJmYWNlX2Rlc3Ryb3kobV9zbmFwc2hvdCk7CisK
KyAgICBtX3NuYXBzaG90ID0gY2Fpcm9faW1hZ2Vfc3VyZmFjZV9jcmVhdGVfZm9yX2RhdGEoYnVm
ZmVyLCBDQUlST19GT1JNQVRfQVJHQjMyLAorICAgICAgICBtX3dpZHRoLCBtX2hlaWdodCwgY2Fp
cm9fZm9ybWF0X3N0cmlkZV9mb3Jfd2lkdGgoQ0FJUk9fRk9STUFUX0FSR0IzMiwgbV93aWR0aCkp
OworCisgICAgc3RhdGljIGNhaXJvX3VzZXJfZGF0YV9rZXlfdCBidWZmZXJLZXk7CisgICAgY2Fp
cm9fc3VyZmFjZV9zZXRfdXNlcl9kYXRhKG1fc25hcHNob3QsICZidWZmZXJLZXksIGJ1ZmZlciwK
KyAgICAgICAgW10odm9pZCogZGF0YSkgeworICAgICAgICAgICAgYXV0byogYnVmZmVyID0gc3Rh
dGljX2Nhc3Q8dWludDhfdCo+KGRhdGEpOworICAgICAgICAgICAgZGVsZXRlW10gYnVmZmVyOwor
ICAgICAgICB9KTsKKyAgICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHkobV9zbmFwc2hvdCk7Cisj
ZWxzZQorICAgICh2b2lkKWV4cG9ydGVkQnVmZmVyOworI2VuZGlmCit9CisKK3ZvaWQgSGVhZGxl
c3NWaWV3QmFja2VuZDo6dnN5bmMoKQoreworI2lmIFdQRV9GRE9fQ0hFQ0tfVkVSU0lPTigxLDcs
MCkKKyAgICBpZiAobV91cGRhdGUucGVuZGluZykKKyAgICAgICAgd3BlX3ZpZXdfYmFja2VuZF9l
eHBvcnRhYmxlX2Zkb19kaXNwYXRjaF9mcmFtZV9jb21wbGV0ZShtX2V4cG9ydGFibGUpOworI2Vu
ZGlmCisgICAgbV91cGRhdGUucGVuZGluZyA9IGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZSBX
UEVUb29saW5nQmFja2VuZHMKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dW
aWV3QmFja2VuZC5jcHAgYi9Ub29scy93cGUvYmFja2VuZHMvZmRvL1dpbmRvd1ZpZXdCYWNrZW5k
LmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gVG9vbHMvd3BlL2JhY2tlbmRz
L1dpbmRvd1ZpZXdCYWNrZW5kLmNwcApyZW5hbWUgdG8gVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9X
aW5kb3dWaWV3QmFja2VuZC5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5k
b3dWaWV3QmFja2VuZC5oIGIvVG9vbHMvd3BlL2JhY2tlbmRzL2Zkby9XaW5kb3dWaWV3QmFja2Vu
ZC5oCnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIFRvb2xzL3dwZS9iYWNrZW5kcy9X
aW5kb3dWaWV3QmFja2VuZC5oCnJlbmFtZSB0byBUb29scy93cGUvYmFja2VuZHMvZmRvL1dpbmRv
d1ZpZXdCYWNrZW5kLmgKaW5kZXggNDc0ZThiMjEyYjcxLi4wYjdjYzExOWU4M2MgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL3dwZS9iYWNrZW5kcy9XaW5kb3dWaWV3QmFja2VuZC5oCisrKyBiL1Rvb2xzL3dw
ZS9iYWNrZW5kcy9mZG8vV2luZG93Vmlld0JhY2tlbmQuaApAQCAtMjksOSArMjksMjAgQEAKICNp
bmNsdWRlICJ4ZGctc2hlbGwtdW5zdGFibGUtdjYtY2xpZW50LXByb3RvY29sLmgiCiAjaW5jbHVk
ZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisjaW5jbHVkZSA8d3BlL2Zkby5o
PgogCit0eXBlZGVmIHZvaWQqIEVHTENvbmZpZzsKK3R5cGVkZWYgdm9pZCogRUdMQ29udGV4dDsK
K3R5cGVkZWYgdm9pZCogRUdMRGlzcGxheTsKIHR5cGVkZWYgdm9pZCogRUdMU3VyZmFjZTsKLXR5
cGVkZWYgc3RydWN0IHdsX2VnbF93aW5kb3cgICpFR0xOYXRpdmVXaW5kb3dUeXBlOwordHlwZWRl
ZiBzdHJ1Y3Qgd2xfZWdsX3dpbmRvdyAqRUdMTmF0aXZlV2luZG93VHlwZTsKKworLy8gTWFudWFs
bHkgcHJvdmlkZSB0aGUgRUdMX0NBU1QgQysrIGRlZmluaXRpb24gaW4gY2FzZSBlZ2xwbGF0Zm9y
bS5oIGRvZXNuJ3QgcHJvdmlkZSBpdC4KKyNpZm5kZWYgRUdMX0NBU1QKKyNkZWZpbmUgRUdMX0NB
U1QodHlwZSwgdmFsdWUpIChzdGF0aWNfY2FzdDx0eXBlPih2YWx1ZSkpCisjZW5kaWYKKworc3Ry
dWN0IHdwZV9mZG9fZWdsX2V4cG9ydGVkX2ltYWdlOwogCiBuYW1lc3BhY2UgV1BFVG9vbGluZ0Jh
Y2tlbmRzIHsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>