<?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>205129</bug_id>
          
          <creation_ts>2019-12-11 11:56:29 -0800</creation_ts>
          <short_desc>Minor WKWebView.mm code rearrangement</short_desc>
          <delta_ts>2019-12-13 10:36:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1597715</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-12-11 11:56:29 -0800</bug_when>
    <thetext>Minor WKWebView.mm code rearrangement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597719</commentid>
    <comment_count>1</comment_count>
      <attachid>385419</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-12-11 12:02:06 -0800</bug_when>
    <thetext>Created attachment 385419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598397</commentid>
    <comment_count>2</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2019-12-13 10:35:50 -0800</bug_when>
    <thetext>https://trac.webkit.org/changeset/253485/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1598398</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-12-13 10:36:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/57916852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>385419</attachid>
            <date>2019-12-11 12:02:06 -0800</date>
            <delta_ts>2019-12-11 12:03:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-205129-20191211120205.patch</filename>
            <type>text/plain</type>
            <size>29342</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzMzgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDgzMjZmOGUyYTMzMDdkODMz
NTcwYjE5MmQ4ZDg0NzBlZWFjOTBkNWUuLjA5ZmQzZGViNTRiMTA4ZTBhZWQwN2VhZDFmMDFkOThj
NDk1OWNhZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTIgQEAKKzIwMTktMTItMTEgIFNpbW9uIEZy
YXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAgICAgTWlub3IgV0tXZWJWaWV3
Lm1tIGNvZGUgcmVhcnJhbmdlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA1MTI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVGhyb3cgaW4gc29tZSBtb3JlICNwcmFnbWEgbWFya3MgYW5kIG1vdmUg
c29tZSBmdW5jdGlvbnMgYXJvdW5kLCB3aXRoIHRoZSBnb2FsIG9mCisgICAgICAgIGhhdmluZyB0
aGUgaW1wbGVtZW50YXRpb24gb3JkZXIgbW9zdGx5IGZvbGxvdyBoZWFkZXIgb3JkZXIsIGFuZCBn
cm91cGluZyByZWxhdGVkIGZ1bmN0aW9ucy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3BhZ2VGb3JUZXN0aW5nXSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfcGFnZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgdXJs
U2NoZW1lSGFuZGxlckZvclVSTFNjaGVtZTpdKToKKyAgICAgICAgKCtbV0tXZWJWaWV3IGhhbmRs
ZXNVUkxTY2hlbWU6XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzb2x1dGlvbkZvclNoYXJl
U2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZ10pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgY3JlYXRlUERGV2l0aENvbmZpZ3VyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBjcmVhdGVXZWJBcmNoaXZlRGF0YVdpdGhDb21wbGV0aW9uSGFuZGxl
cjpdKToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgorICAgICAgICAoLVtXS1dlYlZpZXcgZmlu
ZFN0cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNldE1lZGlhVHlwZTpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG1lZGlh
VHlwZV0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgbGF5b3V0U3Vidmlld3NdKToKKyAgICAgICAg
KC1bV0tXZWJWaWV3IHNjcm9sbFZpZXddKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9pc1Nob3dp
bmdWaWRlb1BpY3R1cmVJblBpY3R1cmVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9tYXlBdXRv
bWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZV0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX2luY3JlbWVudEZvY3VzUHJlc2VydmF0aW9uQ291bnRdKToKKyAgICAgICAgKC1bV0tXZWJW
aWV3IF9kZWNyZW1lbnRGb2N1c1ByZXNlcnZhdGlvbkNvdW50XSk6CisgICAgICAgICgtW1dLV2Vi
VmlldyBfcmVzZXRGb2N1c1ByZXNlcnZhdGlvbkNvdW50XSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfaXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3
IF9lZmZlY3RpdmVBcHBlYXJhbmNlSXNEYXJrXSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZWZm
ZWN0aXZlVXNlckludGVyZmFjZUxldmVsSXNFbGV2YXRlZF0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3Nob3VsZEF2b2lkUmVzaXppbmdXaGVuSW5wdXRWaWV3Qm91bmRzQ2hhbmdlXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBfZHJhZ0ludGVyYWN0aW9uUG9saWN5XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfc2V0RHJhZ0ludGVyYWN0aW9uUG9saWN5Ol0pOgorICAgICAgICAoLVtXS1dlYlZp
ZXcgX3BvcHVsYXRlQXJjaGl2ZWRTdWJ2aWV3czpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9p
c0JhY2tncm91bmRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRTaG91bGRTdXBwcmVzc0Zp
cnN0UmVzcG9uZGVyQ2hhbmdlczpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9yZXRhaW5BY3Rp
dmVGb2N1c2VkU3RhdGVdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9iZWNvbWVGaXJzdFJlc3Bv
bmRlcldpdGhTZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXS1dlYlZpZXcgX3NuYXBzaG90TGF5ZXJDb250ZW50c0ZvckJhY2tGb3J3YXJkTGlz
dEl0ZW06XSk6CisgICAgICAgICgtW1dLV2ViVmlldyBfZGF0YURldGVjdGlvblJlc3VsdHNdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9hY2Nlc3NpYmlsaXR5UmV0cmlldmVTcGVha1NlbGVjdGlv
bkNvbnRlbnRdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9hY2Nlc3NpYmlsaXR5RGlkR2V0U3Bl
YWtTZWxlY3Rpb25Db250ZW50Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX3ZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHNdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9zZXRWaWV3cG9y
dFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vU09BdXRob3JpemF0aW9uQ29vcmRpbmF0b3IubW06IFVuaWZpZWQgc291cmNlcyBi
dWlsZCBmaXggKHNlZW4gd2hpbGUgZG9pbmcgb3RoZXIgc3R1ZmYpLgorCiAyMDE5LTEyLTExICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgaW5j
cmVtZW50YWwgYnVpbGRzIGZhc3RlciBhZnRlciBtb2RpZnlpbmcgRGlzcGxheUxpc3RJdGVtcy5o
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRl
eCBkZDc2ZDg2N2Q0OTBiYTYzOWFjMjI1MTRhNDE4ZWUwNmQ5MjEyMTAxLi4yYThhYmU1OWZkMWYz
OGU3YTg1N2JjOWM1YzcwYWIzZGRjZjI1ZTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTQyMSwzMCArNDIxLDYgQEAgQUxMT1dfREVQ
UkVDQVRFRF9ERUNMQVJBVElPTlNfQkVHSU4KIEFMTE9XX0RFUFJFQ0FURURfREVDTEFSQVRJT05T
X0VORAogfQogCi0tIChCT09MKV9pc1Nob3dpbmdWaWRlb1BpY3R1cmVJblBpY3R1cmUKLXsKLSNp
ZiAhSEFWRShBVktJVCkKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAgIGlmICghX3BhZ2Ug
fHwgIV9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCkpCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIHJldHVybiBfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFuYWdlcigpLT5oYXNNb2Rl
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1
cmVJblBpY3R1cmUpOwotI2VuZGlmCi19Ci0KLS0gKEJPT0wpX21heUF1dG9tYXRpY2FsbHlTaG93
VmlkZW9QaWN0dXJlSW5QaWN0dXJlCi17Ci0jaWYgIUhBVkUoQVZLSVQpCi0gICAgcmV0dXJuIGZh
bHNlOwotI2Vsc2UKLSAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVuTWFu
YWdlcigpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gX3BhZ2UtPnZpZGVv
RnVsbHNjcmVlbk1hbmFnZXIoKS0+bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBp
Y3R1cmUoKTsKLSNlbmRpZgotfQotCiBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1cmVJblBp
Y3R1cmVNZWRpYVBsYXliYWNrKCkKIHsKICAgICBzdGF0aWMgYm9vbCBzaG91bGRBbGxvd1BpY3R1
cmVJblBpY3R1cmVNZWRpYVBsYXliYWNrID0gZHlsZF9nZXRfcHJvZ3JhbV9zZGtfdmVyc2lvbigp
ID49IERZTERfSU9TX1ZFUlNJT05fOV8wOwpAQCAtNDU3LDQ1ICs0MzMsNiBAQCBzdGF0aWMgYm9v
bCBzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHMoKQogICAgIHJldHVy
biBzaG91bGRBbGxvd1NldHRpbmdBbnlYSFJIZWFkZXJGcm9tRmlsZVVSTHM7CiB9CiAKLS0gKHZv
aWQpX2luY3JlbWVudEZvY3VzUHJlc2VydmF0aW9uQ291bnQKLXsKLSAgICArK19mb2N1c1ByZXNl
cnZhdGlvbkNvdW50OwotfQotCi0tICh2b2lkKV9kZWNyZW1lbnRGb2N1c1ByZXNlcnZhdGlvbkNv
dW50Ci17Ci0gICAgaWYgKF9mb2N1c1ByZXNlcnZhdGlvbkNvdW50KQotICAgICAgICAtLV9mb2N1
c1ByZXNlcnZhdGlvbkNvdW50OwotfQotCi0tICh2b2lkKV9yZXNldEZvY3VzUHJlc2VydmF0aW9u
Q291bnQKLXsKLSAgICBfZm9jdXNQcmVzZXJ2YXRpb25Db3VudCA9IDA7Ci19Ci0KLS0gKEJPT0wp
X2lzUmV0YWluaW5nQWN0aXZlRm9jdXNlZFN0YXRlCi17Ci0gICAgLy8gRm9jdXMgcHJlc2VydmF0
aW9uIGNvdW50IGZ1bGZpbGxzIHRoZSBzYW1lIHJvbGUgYXMgYWN0aXZlIGZvY3VzIHN0YXRlIGNv
dW50LgotICAgIC8vIEhvd2V2ZXIsIHVubGlrZSBhY3RpdmUgZm9jdXMgc3RhdGUsIGl0IG1heSBi
ZSByZXNldCB0byAwIHdpdGhvdXQgaW1wYWN0aW5nIHRoZQotICAgIC8vIGJlaGF2aW9yIG9mIC1f
cmV0YWluQWN0aXZlRm9jdXNlZFN0YXRlLCBhbmQgaXQncyBoYXJtbGVzcyB0byBpbnZva2UKLSAg
ICAvLyAtX2RlY3JlbWVudEZvY3VzUHJlc2VydmF0aW9uQ291bnQgYWZ0ZXIgcmVzZXR0aW5nIHRo
ZSBjb3VudCB0byAwLgotICAgIHJldHVybiBfZm9jdXNQcmVzZXJ2YXRpb25Db3VudCB8fCBfYWN0
aXZlRm9jdXNlZFN0YXRlUmV0YWluQ291bnQ7Ci19Ci0KLS0gKEJPT0wpX2VmZmVjdGl2ZUFwcGVh
cmFuY2VJc0RhcmsKLXsKLSAgICByZXR1cm4gc2VsZi50cmFpdENvbGxlY3Rpb24udXNlckludGVy
ZmFjZVN0eWxlID09IFVJVXNlckludGVyZmFjZVN0eWxlRGFyazsKLX0KLQotLSAoQk9PTClfZWZm
ZWN0aXZlVXNlckludGVyZmFjZUxldmVsSXNFbGV2YXRlZAotewotI2lmIEhBVkUoT1NfREFSS19N
T0RFX1NVUFBPUlQpICYmICFQTEFURk9STShXQVRDSE9TKQotICAgIHJldHVybiBzZWxmLnRyYWl0
Q29sbGVjdGlvbi51c2VySW50ZXJmYWNlTGV2ZWwgPT0gVUlVc2VySW50ZXJmYWNlTGV2ZWxFbGV2
YXRlZDsKLSNlbHNlCi0gICAgcmV0dXJuIE5POwotI2VuZGlmCi19Ci0KICNlbmRpZiAvLyBQTEFU
Rk9STShJT1NfRkFNSUxZKQogCiBzdGF0aWMgYm9vbCBzaG91bGRSZXF1aXJlVXNlckdlc3R1cmVU
b0xvYWRWaWRlbygpCkBAIC05MTcsNiArODU0LDggQEAgLSAoaWQpdmFsdWVGb3JVbmRlZmluZWRL
ZXk6KE5TU3RyaW5nICopa2V5CiAgICAgcmV0dXJuIFtzdXBlciB2YWx1ZUZvclVuZGVmaW5lZEtl
eTprZXldOwogfQogCisjcHJhZ21hIG1hcmsgLSBBUEkKKwogLSAoV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiAqKWNvbmZpZ3VyYXRpb24KIHsKICAgICByZXR1cm4gW1tfY29uZmlndXJhdGlvbiBjb3B5
XSBhdXRvcmVsZWFzZV07CkBAIC0xMjQ2LDE2ICsxMTg1LDYgQEAgLSAodm9pZClzZXRDdXN0b21V
c2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50CiAgICAgX3BhZ2UtPnNldEN1c3Rv
bVVzZXJBZ2VudChjdXN0b21Vc2VyQWdlbnQpOwogfQogCi0tIChXS1BhZ2VSZWYpX3BhZ2VGb3JU
ZXN0aW5nCi17Ci0gICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsKLX0KLQotLSAoV2ViS2l0
OjpXZWJQYWdlUHJveHkgKilfcGFnZQotewotICAgIHJldHVybiBfcGFnZS5nZXQoKTsKLX0KLQog
LSAoQk9PTClhbGxvd3NMaW5rUHJldmlldwogewogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTEyODYs
MjAgKzEyMTUsNiBAQCAtICh2b2lkKXNldEFsbG93c0xpbmtQcmV2aWV3OihCT09MKWFsbG93c0xp
bmtQcmV2aWV3CiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIH0KIAotLSAoQ0dTaXpl
KV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzCi17Ci0gICAgcmV0dXJuIF9wYWdlLT52
aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKCk7Ci19Ci0KLS0gKHZvaWQpX3NldFZpZXdw
b3J0U2l6ZUZvckNTU1ZpZXdwb3J0VW5pdHM6KENHU2l6ZSl2aWV3cG9ydFNpemUKLXsKLSAgICBh
dXRvIHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMgPSBXZWJDb3JlOjpJbnRTaXplKHZpZXdw
b3J0U2l6ZSk7Ci0gICAgaWYgKHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMuaXNFbXB0eSgp
KQotICAgICAgICBbTlNFeGNlcHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24g
Zm9ybWF0OkAiVmlld3BvcnQgc2l6ZSBzaG91bGQgbm90IGJlIGVtcHR5Il07Ci0KLSAgICBfcGFn
ZS0+c2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemVGb3JWaWV3
cG9ydFVuaXRzKTsKLX0KLQogc3RhdGljIE5TVGV4dEFsaWdubWVudCBuc1RleHRBbGlnbm1lbnQo
V2ViS2l0OjpUZXh0QWxpZ25tZW50IGFsaWdubWVudCkKIHsKICAgICBzd2l0Y2ggKGFsaWdubWVu
dCkgewpAQCAtMTQ3NSw0OCArMTM5MCwxMTQgQEAgLSAodm9pZClfZGlkSW52YWxpZGF0ZURhdGFG
b3JBdHRhY2htZW50OihBUEk6OkF0dGFjaG1lbnQmKWF0dGFjaG1lbnQKIAogI2VuZGlmIC8vIEVO
QUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCiAKLSNwcmFnbWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0
aG9kcworI3ByYWdtYSBtYXJrIC0gbWFjT1MvaU9TIGltcGxlbWVudGF0aW9uIG1ldGhvZHMKIAot
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCistIChXS1BhZ2VSZWYpX3BhZ2VGb3JUZXN0aW5nCit7
CisgICAgcmV0dXJuIHRvQVBJKF9wYWdlLmdldCgpKTsKK30KIAotLSAoQk9PTClfc2hvdWxkQXZv
aWRSZXNpemluZ1doZW5JbnB1dFZpZXdCb3VuZHNDaGFuZ2UKKy0gKFdlYktpdDo6V2ViUGFnZVBy
b3h5ICopX3BhZ2UKIHsKLSAgICByZXR1cm4gW19jb250ZW50VmlldyBfc2hvdWxkQXZvaWRSZXNp
emluZ1doZW5JbnB1dFZpZXdCb3VuZHNDaGFuZ2VdOworICAgIHJldHVybiBfcGFnZS5nZXQoKTsK
IH0KIAotLSAoX1dLRHJhZ0ludGVyYWN0aW9uUG9saWN5KV9kcmFnSW50ZXJhY3Rpb25Qb2xpY3kK
Ky0gKGlkIDxXS1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6
KE5TU3RyaW5nICopdXJsU2NoZW1lCiB7Ci0gICAgcmV0dXJuIF9kcmFnSW50ZXJhY3Rpb25Qb2xp
Y3k7CisgICAgYXV0byogaGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6V2ViVVJMU2NoZW1l
SGFuZGxlckNvY29hKj4oX3BhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUodXJsU2NoZW1l
KSk7CisgICAgcmV0dXJuIGhhbmRsZXIgPyBoYW5kbGVyLT5hcGlIYW5kbGVyKCkgOiBuaWw7CiB9
CiAKLS0gKHZvaWQpX3NldERyYWdJbnRlcmFjdGlvblBvbGljeTooX1dLRHJhZ0ludGVyYWN0aW9u
UG9saWN5KXBvbGljeQorKyAoQk9PTCloYW5kbGVzVVJMU2NoZW1lOihOU1N0cmluZyAqKXVybFNj
aGVtZQogewotICAgIGlmIChfZHJhZ0ludGVyYWN0aW9uUG9saWN5ID09IHBvbGljeSkKKyAgICBy
ZXR1cm4gV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzQnVpbHRpblNjaGVtZSh1cmxT
Y2hlbWUpOworfQorCistIChPcHRpb25hbDxCT09MPilfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJ
bW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZworeworICAgIHJldHVybiBfcmVzb2x1dGlvbkZv
clNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsKK30KKworLSAodm9pZClj
cmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0aW9uICopcGRmQ29uZmln
dXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRhICpwZGZEb2N1bWVudERh
dGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIFdlYkNvcmU6OkZy
YW1lSWRlbnRpZmllciBmcmFtZUlEOworICAgIGlmIChhdXRvIG1haW5GcmFtZSA9IF9wYWdlLT5t
YWluRnJhbWUoKSkKKyAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+ZnJhbWVJRCgpOworICAg
IGVsc2UgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tF
cnJvclVua25vd24pLmdldCgpKTsKICAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIF9kcmFn
SW50ZXJhY3Rpb25Qb2xpY3kgPSBwb2xpY3k7Ci0jaWYgRU5BQkxFKERSQUdfU1VQUE9SVCkKLSAg
ICBbX2NvbnRlbnRWaWV3IF9kaWRDaGFuZ2VEcmFnSW50ZXJhY3Rpb25Qb2xpY3ldOwotI2VuZGlm
CisgICAgT3B0aW9uYWw8V2ViQ29yZTo6RmxvYXRSZWN0PiBmbG9hdFJlY3Q7CisgICAgaWYgKHBk
ZkNvbmZpZ3VyYXRpb24gJiYgIUNHUmVjdElzTnVsbChwZGZDb25maWd1cmF0aW9uLnJlY3QpKQor
ICAgICAgICBmbG9hdFJlY3QgPSBXZWJDb3JlOjpGbG9hdFJlY3QocGRmQ29uZmlndXJhdGlvbi5y
ZWN0KTsKKworICAgIGF1dG8gaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxl
cik7CisgICAgX3BhZ2UtPmRyYXdUb1BERihmcmFtZUlELCBmbG9hdFJlY3QsIFtyZXRhaW5lZFNl
bGYgPSByZXRhaW5QdHIoc2VsZiksIGhhbmRsZXIgPSBXVEZNb3ZlKGhhbmRsZXIpXShjb25zdCBJ
UEM6OkRhdGFSZWZlcmVuY2UmIHBkZkRhdGEsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBl
cnJvcikgeworICAgICAgICBpZiAoZXJyb3IgIT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
OjpOb25lKSB7CisgICAgICAgICAgICBoYW5kbGVyKG5pbCwgY3JlYXRlTlNFcnJvcihXS0Vycm9y
VW5rbm93bikuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAg
ICAgYXV0byBkYXRhID0gYWRvcHRDRihDRkRhdGFDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
cGRmRGF0YS5kYXRhKCksIHBkZkRhdGEuc2l6ZSgpKSk7CisgICAgICAgIGhhbmRsZXIoKE5TRGF0
YSAqKWRhdGEuZ2V0KCksIG5pbCk7CisgICAgfSk7CiB9CiAKLS0gKHZvaWQpX3BvcHVsYXRlQXJj
aGl2ZWRTdWJ2aWV3czooTlNNdXRhYmxlU2V0ICopZW5jb2RlZFZpZXdzCistICh2b2lkKWNyZWF0
ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwg
TlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAgIFtzdXBlciBfcG9wdWxhdGVBcmNo
aXZlZFN1YnZpZXdzOmVuY29kZWRWaWV3c107CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhb
Y29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCi0gICAgaWYgKF9zY3JvbGxWaWV3KQotICAgICAg
ICBbZW5jb2RlZFZpZXdzIHJlbW92ZU9iamVjdDpfc2Nyb2xsVmlldy5nZXQoKV07Ci0gICAgaWYg
KF9jdXN0b21Db250ZW50Rml4ZWRPdmVybGF5VmlldykKLSAgICAgICAgW2VuY29kZWRWaWV3cyBy
ZW1vdmVPYmplY3Q6X2N1c3RvbUNvbnRlbnRGaXhlZE92ZXJsYXlWaWV3LmdldCgpXTsKKyAgICBf
cGFnZS0+Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoX3BhZ2UtPm1haW5GcmFtZSgpLCBbaGFuZGxlcl0o
QVBJOjpEYXRhKiBkYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKKyAg
ICAgICAgdm9pZCAoXmNvbXBsZXRpb25IYW5kbGVyQmxvY2spKE5TRGF0YSAqLCBOU0Vycm9yICop
ID0gKHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICopKWhhbmRsZXIuZ2V0KCk7CisgICAgICAg
IGlmIChlcnJvciAhPSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBQaXBlIGEgcHJvcGVyIGVycm9yIGluIGZyb20gdGhlIFdlYlBhZ2VQ
cm94eS4KKyAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQmxvY2sobmlsLCBbTlNFcnJvciBl
cnJvcldpdGhEb21haW46V0tFcnJvckRvbWFpbiBjb2RlOnN0YXRpY19jYXN0PGludD4oZXJyb3Ip
IHVzZXJJbmZvOm5pbF0pOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyQmxvY2sod3JhcHBlcigqZGF0YSksIG5pbCk7CisgICAgfSk7CiB9CiAKLS0gKEJPT0wp
X2lzQmFja2dyb3VuZAoraW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9GaW5kT3B0aW9ucyhX
S0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQogewotICAgIGlmICghW3NlbGYgdXNl
c1N0YW5kYXJkQ29udGVudFZpZXddICYmIFtfY3VzdG9tQ29udGVudFZpZXcgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcih3ZWJfaXNCYWNrZ3JvdW5kKV0pCi0gICAgICAgIHJldHVybiBbX2N1
c3RvbUNvbnRlbnRWaWV3IHdlYl9pc0JhY2tncm91bmRdOwotICAgIHJldHVybiBbX2NvbnRlbnRW
aWV3IGlzQmFja2dyb3VuZF07CisgICAgdW5zaWduZWQgZmluZE9wdGlvbnMgPSAwOworCisgICAg
aWYgKCFjb25maWd1cmF0aW9uLmNhc2VTZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9
IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKGNvbmZpZ3VyYXRp
b24uYmFja3dhcmRzKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25z
QmFja3dhcmRzOworICAgIGlmIChjb25maWd1cmF0aW9uLndyYXBzKQorICAgICAgICBmaW5kT3B0
aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zV3JhcEFyb3VuZDsKKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7Cit9CisKKy0gKHZvaWQp
ZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENv
bmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShX
S0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIXN0cmlu
Zy5sZW5ndGgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tGaW5kUmVzdWx0IGFs
bG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSBhdXRvcmVsZWFzZV0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0b0ZpbmRPcHRpb25z
KGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFu
ZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewor
ICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3Vu
ZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lICYmIGZvdW5kKV0g
YXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKIH0KIAorLSAodm9pZClzZXRNZWRpYVR5cGU6KE5TU3Ry
aW5nICopbWVkaWFTdHlsZQoreworICAgIF9wYWdlLT5zZXRPdmVycmlkZGVuTWVkaWFUeXBlKG1l
ZGlhU3R5bGUpOworfQorCistIChOU1N0cmluZyAqKW1lZGlhVHlwZQoreworICAgIHJldHVybiBf
cGFnZS0+b3ZlcnJpZGRlbk1lZGlhVHlwZSgpLmlzTnVsbCgpID8gbmlsIDogKE5TU3RyaW5nICop
X3BhZ2UtPm92ZXJyaWRkZW5NZWRpYVR5cGUoKTsKK30KKworI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCisKKyNwcmFnbWEgbWFyayAtIFVJVmlldyBvdmVycmlkZXMKKwogLSAodm9pZClzZXRGcmFt
ZTooQ0dSZWN0KWZyYW1lCiB7CiAgICAgQ0dSZWN0IG9sZEZyYW1lID0gc2VsZi5mcmFtZTsKQEAg
LTE1MzYsMTYgKzE1MTcsMTE5IEBAIC0gKHZvaWQpc2V0Qm91bmRzOihDR1JlY3QpYm91bmRzCiAg
ICAgICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CiB9CiAKLS0gKHZvaWQpbGF5b3V0
U3Vidmlld3MKKy0gKHZvaWQpbGF5b3V0U3Vidmlld3MKK3sKKyAgICBbX3NhZmVCcm93c2luZ1dh
cm5pbmcgc2V0RnJhbWU6c2VsZi5ib3VuZHNdOworICAgIFtzdXBlciBsYXlvdXRTdWJ2aWV3c107
CisgICAgW3NlbGYgX2ZyYW1lT3JCb3VuZHNDaGFuZ2VkXTsKK30KKworLSAoVUlTY3JvbGxWaWV3
ICopc2Nyb2xsVmlldworeworICAgIHJldHVybiBfc2Nyb2xsVmlldy5nZXQoKTsKK30KKworI3By
YWdtYSBtYXJrIC0gaU9TIGltcGxlbWVudGF0aW9uIG1ldGhvZHMKKworLSAoQk9PTClfaXNTaG93
aW5nVmlkZW9QaWN0dXJlSW5QaWN0dXJlCit7CisjaWYgIUhBVkUoQVZLSVQpCisgICAgcmV0dXJu
IGZhbHNlOworI2Vsc2UKKyAgICBpZiAoIV9wYWdlIHx8ICFfcGFnZS0+dmlkZW9GdWxsc2NyZWVu
TWFuYWdlcigpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gX3BhZ2UtPnZp
ZGVvRnVsbHNjcmVlbk1hbmFnZXIoKS0+aGFzTW9kZShXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKKyNlbmRpZgorfQor
CistIChCT09MKV9tYXlBdXRvbWF0aWNhbGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZQorewor
I2lmICFIQVZFKEFWS0lUKQorICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgaWYgKCFfcGFn
ZSB8fCAhX3BhZ2UtPnZpZGVvRnVsbHNjcmVlbk1hbmFnZXIoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgcmV0dXJuIF9wYWdlLT52aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCktPm1heUF1
dG9tYXRpY2FsbHlTaG93VmlkZW9QaWN0dXJlSW5QaWN0dXJlKCk7CisjZW5kaWYKK30KKworLSAo
dm9pZClfaW5jcmVtZW50Rm9jdXNQcmVzZXJ2YXRpb25Db3VudAoreworICAgICsrX2ZvY3VzUHJl
c2VydmF0aW9uQ291bnQ7Cit9CisKKy0gKHZvaWQpX2RlY3JlbWVudEZvY3VzUHJlc2VydmF0aW9u
Q291bnQKK3sKKyAgICBpZiAoX2ZvY3VzUHJlc2VydmF0aW9uQ291bnQpCisgICAgICAgIC0tX2Zv
Y3VzUHJlc2VydmF0aW9uQ291bnQ7Cit9CisKKy0gKHZvaWQpX3Jlc2V0Rm9jdXNQcmVzZXJ2YXRp
b25Db3VudAoreworICAgIF9mb2N1c1ByZXNlcnZhdGlvbkNvdW50ID0gMDsKK30KKworLSAoQk9P
TClfaXNSZXRhaW5pbmdBY3RpdmVGb2N1c2VkU3RhdGUKK3sKKyAgICAvLyBGb2N1cyBwcmVzZXJ2
YXRpb24gY291bnQgZnVsZmlsbHMgdGhlIHNhbWUgcm9sZSBhcyBhY3RpdmUgZm9jdXMgc3RhdGUg
Y291bnQuCisgICAgLy8gSG93ZXZlciwgdW5saWtlIGFjdGl2ZSBmb2N1cyBzdGF0ZSwgaXQgbWF5
IGJlIHJlc2V0IHRvIDAgd2l0aG91dCBpbXBhY3RpbmcgdGhlCisgICAgLy8gYmVoYXZpb3Igb2Yg
LV9yZXRhaW5BY3RpdmVGb2N1c2VkU3RhdGUsIGFuZCBpdCdzIGhhcm1sZXNzIHRvIGludm9rZQor
ICAgIC8vIC1fZGVjcmVtZW50Rm9jdXNQcmVzZXJ2YXRpb25Db3VudCBhZnRlciByZXNldHRpbmcg
dGhlIGNvdW50IHRvIDAuCisgICAgcmV0dXJuIF9mb2N1c1ByZXNlcnZhdGlvbkNvdW50IHx8IF9h
Y3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsKK30KKworLSAoQk9PTClfZWZmZWN0aXZlQXBw
ZWFyYW5jZUlzRGFyaworeworICAgIHJldHVybiBzZWxmLnRyYWl0Q29sbGVjdGlvbi51c2VySW50
ZXJmYWNlU3R5bGUgPT0gVUlVc2VySW50ZXJmYWNlU3R5bGVEYXJrOworfQorCistIChCT09MKV9l
ZmZlY3RpdmVVc2VySW50ZXJmYWNlTGV2ZWxJc0VsZXZhdGVkCit7CisjaWYgSEFWRShPU19EQVJL
X01PREVfU1VQUE9SVCkgJiYgIVBMQVRGT1JNKFdBVENIT1MpCisgICAgcmV0dXJuIHNlbGYudHJh
aXRDb2xsZWN0aW9uLnVzZXJJbnRlcmZhY2VMZXZlbCA9PSBVSVVzZXJJbnRlcmZhY2VMZXZlbEVs
ZXZhdGVkOworI2Vsc2UKKyAgICByZXR1cm4gTk87CisjZW5kaWYKK30KKworLSAoQk9PTClfc2hv
dWxkQXZvaWRSZXNpemluZ1doZW5JbnB1dFZpZXdCb3VuZHNDaGFuZ2UKK3sKKyAgICByZXR1cm4g
W19jb250ZW50VmlldyBfc2hvdWxkQXZvaWRSZXNpemluZ1doZW5JbnB1dFZpZXdCb3VuZHNDaGFu
Z2VdOworfQorCistIChfV0tEcmFnSW50ZXJhY3Rpb25Qb2xpY3kpX2RyYWdJbnRlcmFjdGlvblBv
bGljeQoreworICAgIHJldHVybiBfZHJhZ0ludGVyYWN0aW9uUG9saWN5OworfQorCistICh2b2lk
KV9zZXREcmFnSW50ZXJhY3Rpb25Qb2xpY3k6KF9XS0RyYWdJbnRlcmFjdGlvblBvbGljeSlwb2xp
Y3kKK3sKKyAgICBpZiAoX2RyYWdJbnRlcmFjdGlvblBvbGljeSA9PSBwb2xpY3kpCisgICAgICAg
IHJldHVybjsKKworICAgIF9kcmFnSW50ZXJhY3Rpb25Qb2xpY3kgPSBwb2xpY3k7CisjaWYgRU5B
QkxFKERSQUdfU1VQUE9SVCkKKyAgICBbX2NvbnRlbnRWaWV3IF9kaWRDaGFuZ2VEcmFnSW50ZXJh
Y3Rpb25Qb2xpY3ldOworI2VuZGlmCit9CisKKy0gKHZvaWQpX3BvcHVsYXRlQXJjaGl2ZWRTdWJ2
aWV3czooTlNNdXRhYmxlU2V0ICopZW5jb2RlZFZpZXdzCiB7Ci0gICAgW19zYWZlQnJvd3NpbmdX
YXJuaW5nIHNldEZyYW1lOnNlbGYuYm91bmRzXTsKLSAgICBbc3VwZXIgbGF5b3V0U3Vidmlld3Nd
OwotICAgIFtzZWxmIF9mcmFtZU9yQm91bmRzQ2hhbmdlZF07CisgICAgW3N1cGVyIF9wb3B1bGF0
ZUFyY2hpdmVkU3Vidmlld3M6ZW5jb2RlZFZpZXdzXTsKKworICAgIGlmIChfc2Nyb2xsVmlldykK
KyAgICAgICAgW2VuY29kZWRWaWV3cyByZW1vdmVPYmplY3Q6X3Njcm9sbFZpZXcuZ2V0KCldOwor
ICAgIGlmIChfY3VzdG9tQ29udGVudEZpeGVkT3ZlcmxheVZpZXcpCisgICAgICAgIFtlbmNvZGVk
Vmlld3MgcmVtb3ZlT2JqZWN0Ol9jdXN0b21Db250ZW50Rml4ZWRPdmVybGF5Vmlldy5nZXQoKV07
CiB9CiAKLS0gKFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKKy0gKEJPT0wpX2lzQmFja2dyb3Vu
ZAogewotICAgIHJldHVybiBfc2Nyb2xsVmlldy5nZXQoKTsKKyAgICBpZiAoIVtzZWxmIHVzZXNT
dGFuZGFyZENvbnRlbnRWaWV3XSAmJiBbX2N1c3RvbUNvbnRlbnRWaWV3IHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViX2lzQmFja2dyb3VuZCldKQorICAgICAgICByZXR1cm4gW19jdXN0
b21Db250ZW50VmlldyB3ZWJfaXNCYWNrZ3JvdW5kXTsKKyAgICByZXR1cm4gW19jb250ZW50Vmll
dyBpc0JhY2tncm91bmRdOwogfQogCiBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJ
TgpAQCAtMjcxNyw3ICsyODAxLDcgQEAgLSAoQk9PTClfc3R5bHVzVGFwR2VzdHVyZVNob3VsZENy
ZWF0ZUVkaXRhYmxlSW1hZ2UKICAgICByZXR1cm4gW19jb25maWd1cmF0aW9uIF9lZGl0YWJsZUlt
YWdlc0VuYWJsZWRdOwogfQogCi0jcHJhZ21hIG1hcmsgLSBVSVNjcm9sbFZpZXdEZWxlZ2F0ZQor
I3ByYWdtYSBtYXJrIFVJU2Nyb2xsVmlld0RlbGVnYXRlCiAKIC0gKEJPT0wpdXNlc1N0YW5kYXJk
Q29udGVudFZpZXcKIHsKQEAgLTI5MDUsNiArMjk4OSw4IEBAIC0gKHZvaWQpX3Njcm9sbFZpZXdE
aWRJbnRlcnJ1cHREZWNlbGVyYXRpbmc6KFVJU2Nyb2xsVmlldyAqKXNjcm9sbFZpZXcKICAgICBb
c2VsZiBfc2NoZWR1bGVWaXNpYmxlQ29udGVudFJlY3RVcGRhdGVBZnRlclNjcm9sbEluVmlldzpz
Y3JvbGxWaWV3XTsKIH0KIAorI3ByYWdtYSBtYXJrIGVuZCBVSVNjcm9sbFZpZXdEZWxlZ2F0ZQor
CiAtIChVSVZpZXcgKilfZW5jbG9zaW5nVmlld0ZvckV4cG9zZWRSZWN0Q29tcHV0YXRpb24KIHsK
ICAgICByZXR1cm4gW3NlbGYgX3Njcm9sbGVyXTsKQEAgLTM2MzQsNyArMzcyMCw3IEBAIC0gKEJP
T0wpX2hhdmVTZXRPYnNjdXJlZEluc2V0cwogCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAotI3ByYWdtYSBtYXJrIE9TIFgtc3BlY2lmaWMgbWV0aG9kcworI3ByYWdtYSBtYXJrIC0g
TlNWaWV3IG92ZXJyaWRlcwogCiAjaWYgUExBVEZPUk0oTUFDKQogCkBAIC0zNjg1LDYgKzM3NzEs
OCBAQCAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUKICAgICBfaW1wbC0+c2V0RnJh
bWVTaXplKE5TU2l6ZVRvQ0dTaXplKHNpemUpKTsKIH0KIAorI3ByYWdtYSBtYXJrIC0gbWFjT1Mg
aW1wbGVtZW50YXRpb24KKwogLSAodm9pZClfd2ViX2dyYW50RE9NUGFzdGVBY2Nlc3MKIHsKICAg
ICBfaW1wbC0+aGFuZGxlRE9NUGFzdGVSZXF1ZXN0V2l0aFJlc3VsdChXZWJDb3JlOjpET01QYXN0
ZUFjY2Vzc1Jlc3BvbnNlOjpHcmFudGVkRm9yR2VzdHVyZSk7CkBAIC0zNzEwLDYgKzM3OTgsOCBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICBbc3VwZXIgcmVuZXdH
U3RhdGVdOwogfQogCisjcHJhZ21hIG1hcmsgLSBtYWNPUyBJQkFjdGlvbi9OU1Jlc3BvbmRlcgor
CiAjZGVmaW5lIFdFQkNPUkVfQ09NTUFORChjb21tYW5kKSAtICh2b2lkKWNvbW1hbmQ6KGlkKXNl
bmRlciB7IF9pbXBsLT5leGVjdXRlRWRpdENvbW1hbmRGb3JTZWxlY3RvcihfY21kKTsgfQogCiBX
RUJDT1JFX0NPTU1BTkQoYWxpZ25DZW50ZXIpCkBAIC00NjkwLDYgKzQ3ODAsOCBAQCAtIChOU1By
aW50T3BlcmF0aW9uICopcHJpbnRPcGVyYXRpb25XaXRoUHJpbnRJbmZvOihOU1ByaW50SW5mbyAq
KXByaW50SW5mbwogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCisjcHJhZ21hIG1hcmsgLSB0
b3VjaEJhciBtZXRob2RzCisKICNpZiBIQVZFKFRPVUNIX0JBUikKIAogQGR5bmFtaWMgdG91Y2hC
YXI7CkBAIC00NzIyLDEwMiArNDgxNCwxNCBAQCAtICh2b2lkKV9pbnRlcmFjdFdpdGhNZWRpYUNv
bnRyb2xzRm9yVGVzdGluZwogCiAjZW5kaWYgLy8gSEFWRShUT1VDSF9CQVIpCiAKLS0gKGlkIDxX
S1VSTFNjaGVtZUhhbmRsZXI+KXVybFNjaGVtZUhhbmRsZXJGb3JVUkxTY2hlbWU6KE5TU3RyaW5n
ICopdXJsU2NoZW1lCi17Ci0gICAgYXV0byogaGFuZGxlciA9IHN0YXRpY19jYXN0PFdlYktpdDo6
V2ViVVJMU2NoZW1lSGFuZGxlckNvY29hKj4oX3BhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hl
bWUodXJsU2NoZW1lKSk7Ci0gICAgcmV0dXJuIGhhbmRsZXIgPyBoYW5kbGVyLT5hcGlIYW5kbGVy
KCkgOiBuaWw7Ci19Ci0KLSsgKEJPT0wpaGFuZGxlc1VSTFNjaGVtZTooTlNTdHJpbmcgKil1cmxT
Y2hlbWUKLXsKLSAgICByZXR1cm4gV2ViQ29yZTo6TGVnYWN5U2NoZW1lUmVnaXN0cnk6OmlzQnVp
bHRpblNjaGVtZSh1cmxTY2hlbWUpOwotfQotCi0tIChPcHRpb25hbDxCT09MPilfcmVzb2x1dGlv
bkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZwotewotICAgIHJldHVy
biBfcmVzb2x1dGlvbkZvclNoYXJlU2hlZXRJbW1lZGlhdGVDb21wbGV0aW9uRm9yVGVzdGluZzsK
LX0KLQotLSAodm9pZCljcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjooV0tQREZDb25maWd1cmF0
aW9uICopcGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoTlNEYXRh
ICpwZGZEb2N1bWVudERhdGEsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgotewot
ICAgIFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlEOwotICAgIGlmIChhdXRvIG1haW5G
cmFtZSA9IF9wYWdlLT5tYWluRnJhbWUoKSkKLSAgICAgICAgZnJhbWVJRCA9IG1haW5GcmFtZS0+
ZnJhbWVJRCgpOwotICAgIGVsc2UgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihuaWwsIGNy
ZWF0ZU5TRXJyb3IoV0tFcnJvclVua25vd24pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIE9wdGlvbmFsPFdlYkNvcmU6OkZsb2F0UmVjdD4gZmxvYXRSZWN0OwotICAgIGlm
IChwZGZDb25maWd1cmF0aW9uICYmICFDR1JlY3RJc051bGwocGRmQ29uZmlndXJhdGlvbi5yZWN0
KSkKLSAgICAgICAgZmxvYXRSZWN0ID0gV2ViQ29yZTo6RmxvYXRSZWN0KHBkZkNvbmZpZ3VyYXRp
b24ucmVjdCk7Ci0KLSAgICBhdXRvIGhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhh
bmRsZXIpOwotICAgIF9wYWdlLT5kcmF3VG9QREYoZnJhbWVJRCwgZmxvYXRSZWN0LCBbcmV0YWlu
ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpLCBoYW5kbGVyID0gV1RGTW92ZShoYW5kbGVyKV0oY29u
c3QgSVBDOjpEYXRhUmVmZXJlbmNlJiBwZGZEYXRhLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IgZXJyb3IpIHsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgaGFuZGxlcihuaWwsIGNyZWF0ZU5TRXJyb3IoV0tF
cnJvclVua25vd24pLmdldCgpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0g
ICAgICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIHBkZkRhdGEuZGF0YSgpLCBwZGZEYXRhLnNpemUoKSkpOwotICAgICAgICBoYW5kbGVyKChO
U0RhdGEgKilkYXRhLmdldCgpLCBuaWwpOwotICAgIH0pOwotfQotCi0tICh2b2lkKWNyZWF0ZVdl
YkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNF
cnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMo
W2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKLQotICAgIF9wYWdlLT5nZXRXZWJBcmNoaXZlT2ZG
cmFtZShfcGFnZS0+bWFpbkZyYW1lKCksIFtoYW5kbGVyXShBUEk6OkRhdGEqIGRhdGEsIFdlYktp
dDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgewotICAgICAgICB2b2lkICheY29tcGxldGlv
bkhhbmRsZXJCbG9jaykoTlNEYXRhICosIE5TRXJyb3IgKikgPSAodm9pZCAoXikoTlNEYXRhICos
IE5TRXJyb3IgKikpaGFuZGxlci5nZXQoKTsKLSAgICAgICAgaWYgKGVycm9yICE9IFdlYktpdDo6
Q2FsbGJhY2tCYXNlOjpFcnJvcjo6Tm9uZSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFBpcGUg
YSBwcm9wZXIgZXJyb3IgaW4gZnJvbSB0aGUgV2ViUGFnZVByb3h5LgotICAgICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXJCbG9jayhuaWwsIFtOU0Vycm9yIGVycm9yV2l0aERvbWFpbjpXS0Vycm9y
RG9tYWluIGNvZGU6c3RhdGljX2Nhc3Q8aW50PihlcnJvcikgdXNlckluZm86bmlsXSk7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXJCbG9jayh3cmFwcGVyKCpk
YXRhKSwgbmlsKTsKLSAgICB9KTsKLX0KLQotaW5saW5lIFdlYktpdDo6RmluZE9wdGlvbnMgdG9G
aW5kT3B0aW9ucyhXS0ZpbmRDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uKQotewotICAgIHVu
c2lnbmVkIGZpbmRPcHRpb25zID0gMDsKLQotICAgIGlmICghY29uZmlndXJhdGlvbi5jYXNlU2Vu
c2l0aXZlKQotICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQ2FzZUlu
c2Vuc2l0aXZlOwotICAgIGlmIChjb25maWd1cmF0aW9uLmJhY2t3YXJkcykKLSAgICAgICAgZmlu
ZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0JhY2t3YXJkczsKLSAgICBpZiAoY29uZmln
dXJhdGlvbi53cmFwcykKLSAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9u
c1dyYXBBcm91bmQ7Ci0KLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9u
cz4oZmluZE9wdGlvbnMpOwotfQotCi0tICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3Ry
aW5nIHdpdGhDb25maWd1cmF0aW9uOihXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlv
biBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBs
ZXRpb25IYW5kbGVyCi17Ci0gICAgaWYgKCFzdHJpbmcubGVuZ3RoKSB7Ci0gICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDpO
T10gYXV0b3JlbGVhc2VdKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIF9wYWdlLT5m
aW5kU3RyaW5nKHN0cmluZywgdG9GaW5kT3B0aW9ucyhjb25maWd1cmF0aW9uKSwgMSwgW2hhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXShib29sIGZvdW5kLCBXZWJLaXQ6
OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3IpIHsKLSAgICAgICAgaGFuZGxlcihbW1tXS0ZpbmRS
ZXN1bHQgYWxsb2NdIF9pbml0V2l0aE1hdGNoRm91bmQ6KGVycm9yID09IFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcjo6Tm9uZSAmJiBmb3VuZCldIGF1dG9yZWxlYXNlXSk7Ci0gICAgfSk7Ci19
Ci0KLS0gKHZvaWQpc2V0TWVkaWFUeXBlOihOU1N0cmluZyAqKW1lZGlhU3R5bGUKLXsKLSAgICBf
cGFnZS0+c2V0T3ZlcnJpZGRlbk1lZGlhVHlwZShtZWRpYVN0eWxlKTsKLX0KLQotLSAoTlNTdHJp
bmcgKiltZWRpYVR5cGUKLXsKLSAgICByZXR1cm4gX3BhZ2UtPm92ZXJyaWRkZW5NZWRpYVR5cGUo
KS5pc051bGwoKSA/IG5pbCA6IChOU1N0cmluZyAqKV9wYWdlLT5vdmVycmlkZGVuTWVkaWFUeXBl
KCk7Ci19Ci0KIEBlbmQKIAorI3ByYWdtYSBtYXJrIC0gV0tXZWJWaWV3IChXS1ByaXZhdGUpCisK
IEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKIAorI3ByYWdtYSBtYXJrIC0g
bWFjT1MgV0tQcml2YXRlCisKICNpZiBQTEFURk9STShNQUMpCiAKICNkZWZpbmUgV0VCQ09SRV9Q
UklWQVRFX0NPTU1BTkQoY29tbWFuZCkgLSAodm9pZClfIyNjb21tYW5kOihpZClzZW5kZXIgeyBf
cGFnZS0+ZXhlY3V0ZUVkaXRDb21tYW5kKCNjb21tYW5kICMjIF9zKTsgfQpAQCAtNDk4NCw4ICs0
OTg4LDE1IEBAIC0gKENHRmxvYXQpX3RvdGFsSGVpZ2h0T2ZCYW5uZXJzCiAgICAgcmV0dXJuIF9p
bXBsLT50b3RhbEhlaWdodE9mQmFubmVycygpOwogfQogCistICh2b2lkKV9zZXRTaG91bGRTdXBw
cmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlczooQk9PTClzaG91bGRTdXBwcmVzcworeworICAgIF9p
bXBsLT5zZXRTaG91bGRTdXBwcmVzc0ZpcnN0UmVzcG9uZGVyQ2hhbmdlcyhzaG91bGRTdXBwcmVz
cyk7Cit9CisKICNlbmRpZiAvLyBQTEFURk9STShNQUMpCiAKKyNwcmFnbWEgbWFyayAtIGlPUyBX
S1ByaXZhdGUKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKIEZPUl9FQUNIX1BSSVZBVEVf
V0tDT05URU5UVklFV19BQ1RJT04oRk9SV0FSRF9BQ1RJT05fVE9fV0tDT05URU5UVklFVykKQEAg
LTUwOTcsOCArNTEwOCw4MCBAQCAtIChCT09MKV9jb250ZW50Vmlld0lzRmlyc3RSZXNwb25kZXIK
ICAgICByZXR1cm4gc2VsZi5fY3VycmVudENvbnRlbnRWaWV3LmlzRmlyc3RSZXNwb25kZXI7CiB9
CiAKKy0gKHZvaWQgKF4pKHZvaWQpKV9yZXRhaW5BY3RpdmVGb2N1c2VkU3RhdGUKK3sKKyAgICAr
K19hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsKKworICAgIC8vIEZJWE1FOiBVc2Ugc29t
ZXRoaW5nIGxpa2UgQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlciB0byBlbnN1cmUgdGhhdCB0
aGUgcmV0dXJuZWQgYmxvY2sgaXMgY2FsbGVkIGJlZm9yZSBpdCdzIHJlbGVhc2VkLgorICAgIHJl
dHVybiBbW1tzZWxmXSB7CisgICAgICAgIC0tX2FjdGl2ZUZvY3VzZWRTdGF0ZVJldGFpbkNvdW50
OworICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOworfQorCistICh2b2lkKV9iZWNvbWVGaXJzdFJl
c3BvbmRlcldpdGhTZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOihCT09MKXNlbGVjdGluZ0ZvcndhcmQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZGlkQmVjb21lRmlyc3RSZXNwb25kZXIp
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgdHlwZW9mKGNvbXBsZXRpb25IYW5kbGVyKSBjb21w
bGV0aW9uSGFuZGxlckNvcHkgPSBuaWw7CisgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQorICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19jb3B5KGNvbXBsZXRpb25IYW5kbGVy
KTsKKworICAgIFtfY29udGVudFZpZXcgX2JlY29tZUZpcnN0UmVzcG9uZGVyV2l0aFNlbGVjdGlv
bk1vdmluZ0ZvcndhcmQ6c2VsZWN0aW5nRm9yd2FyZCBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxl
dGlvbkhhbmRsZXJDb3B5XShCT09MIGRpZEJlY29tZUZpcnN0UmVzcG9uZGVyKSB7CisgICAgICAg
IGlmICghY29tcGxldGlvbkhhbmRsZXJDb3B5KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShkaWRCZWNvbWVGaXJzdFJlc3BvbmRlcik7CisgICAg
ICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJDb3B5KTsKKyAgICB9XTsKK30KKwor
LSAoaWQpX3NuYXBzaG90TGF5ZXJDb250ZW50c0ZvckJhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFj
a0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KK3sKKyAgICBpZiAoX3BhZ2UtPmJhY2tGb3J3YXJkTGlz
dCgpLmN1cnJlbnRJdGVtKCkgPT0gJml0ZW0uX2l0ZW0pCisgICAgICAgIF9wYWdlLT5yZWNvcmRO
YXZpZ2F0aW9uU25hcHNob3QoKl9wYWdlLT5iYWNrRm9yd2FyZExpc3QoKS5jdXJyZW50SXRlbSgp
KTsKKworICAgIGlmIChhdXRvKiB2aWV3U25hcHNob3QgPSBpdGVtLl9pdGVtLnNuYXBzaG90KCkp
CisgICAgICAgIHJldHVybiB2aWV3U25hcHNob3QtPmFzTGF5ZXJDb250ZW50cygpOworCisgICAg
cmV0dXJuIG5pbDsKK30KKworLSAoTlNBcnJheSAqKV9kYXRhRGV0ZWN0aW9uUmVzdWx0cworewor
I2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKKyAgICByZXR1cm4gW19jb250ZW50VmlldyBfZGF0
YURldGVjdGlvblJlc3VsdHNdOworI2Vsc2UKKyAgICByZXR1cm4gbmlsOworI2VuZGlmCit9CisK
Ky0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFrU2VsZWN0aW9uQ29udGVudAorewor
ICAgIFtfY29udGVudFZpZXcgYWNjZXNzaWJpbGl0eVJldHJpZXZlU3BlYWtTZWxlY3Rpb25Db250
ZW50XTsKK30KKworLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUu
CisvLyBDdXJyZW50bHkgaXQncyBvbmx5IGluIFRlc3RSdW5uZXJXS1dlYlZpZXcuCistICh2b2lk
KV9hY2Nlc3NpYmlsaXR5RGlkR2V0U3BlYWtTZWxlY3Rpb25Db250ZW50OihOU1N0cmluZyAqKWNv
bnRlbnQKK3sKK30KKwogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKKyNwcmFnbWEg
bWFyayAtIG1hY09TL2lPUyBXS1ByaXZhdGUKKworLSAoQ0dTaXplKV92aWV3cG9ydFNpemVGb3JD
U1NWaWV3cG9ydFVuaXRzCit7CisgICAgcmV0dXJuIF9wYWdlLT52aWV3cG9ydFNpemVGb3JDU1NW
aWV3cG9ydFVuaXRzKCk7Cit9CisKKy0gKHZvaWQpX3NldFZpZXdwb3J0U2l6ZUZvckNTU1ZpZXdw
b3J0VW5pdHM6KENHU2l6ZSl2aWV3cG9ydFNpemUKK3sKKyAgICBhdXRvIHZpZXdwb3J0U2l6ZUZv
clZpZXdwb3J0VW5pdHMgPSBXZWJDb3JlOjpJbnRTaXplKHZpZXdwb3J0U2l6ZSk7CisgICAgaWYg
KHZpZXdwb3J0U2l6ZUZvclZpZXdwb3J0VW5pdHMuaXNFbXB0eSgpKQorICAgICAgICBbTlNFeGNl
cHRpb24gcmFpc2U6TlNJbnZhbGlkQXJndW1lbnRFeGNlcHRpb24gZm9ybWF0OkAiVmlld3BvcnQg
c2l6ZSBzaG91bGQgbm90IGJlIGVtcHR5Il07CisKKyAgICBfcGFnZS0+c2V0Vmlld3BvcnRTaXpl
Rm9yQ1NTVmlld3BvcnRVbml0cyh2aWV3cG9ydFNpemVGb3JWaWV3cG9ydFVuaXRzKTsKK30KKwog
LSAoX1dLSW5zcGVjdG9yICopX2luc3BlY3RvcgogewogICAgIGlmIChhdXRvKiBpbnNwZWN0b3Ig
PSBfcGFnZS0+aW5zcGVjdG9yKCkpCkBAIC01NTY0LDY5ICs1NjQ3LDcgQEAgLSAodm9pZClfdGFr
ZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICop
c25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQREZXaXRoQ29uZmlndXJhdGlvbjpwZGZDb25m
aWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKIH0KIAotI2lm
IFBMQVRGT1JNKE1BQykKLS0gKHZvaWQpX3NldFNob3VsZFN1cHByZXNzRmlyc3RSZXNwb25kZXJD
aGFuZ2VzOihCT09MKXNob3VsZFN1cHByZXNzCi17Ci0gICAgX2ltcGwtPnNldFNob3VsZFN1cHBy
ZXNzRmlyc3RSZXNwb25kZXJDaGFuZ2VzKHNob3VsZFN1cHByZXNzKTsKLX0KLSNlbmRpZgotCiAj
aWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLS0gKHZvaWQgKF4pKHZvaWQpKV9yZXRhaW5BY3RpdmVG
b2N1c2VkU3RhdGUKLXsKLSAgICArK19hY3RpdmVGb2N1c2VkU3RhdGVSZXRhaW5Db3VudDsKLQot
ICAgIC8vIEZJWE1FOiBVc2Ugc29tZXRoaW5nIGxpa2UgQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlciB0byBlbnN1cmUgdGhhdCB0aGUgcmV0dXJuZWQgYmxvY2sgaXMgY2FsbGVkIGJlZm9yZSBp
dCdzIHJlbGVhc2VkLgotICAgIHJldHVybiBbW1tzZWxmXSB7Ci0gICAgICAgIC0tX2FjdGl2ZUZv
Y3VzZWRTdGF0ZVJldGFpbkNvdW50OwotICAgIH0gY29weV0gYXV0b3JlbGVhc2VdOwotfQotCi0t
ICh2b2lkKV9iZWNvbWVGaXJzdFJlc3BvbmRlcldpdGhTZWxlY3Rpb25Nb3ZpbmdGb3J3YXJkOihC
T09MKXNlbGVjdGluZ0ZvcndhcmQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKEJPT0wgZGlk
QmVjb21lRmlyc3RSZXNwb25kZXIpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgdHlwZW9mKGNv
bXBsZXRpb25IYW5kbGVyKSBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBuaWw7Ci0gICAgaWYgKGNv
bXBsZXRpb25IYW5kbGVyKQotICAgICAgICBjb21wbGV0aW9uSGFuZGxlckNvcHkgPSBCbG9ja19j
b3B5KGNvbXBsZXRpb25IYW5kbGVyKTsKLQotICAgIFtfY29udGVudFZpZXcgX2JlY29tZUZpcnN0
UmVzcG9uZGVyV2l0aFNlbGVjdGlvbk1vdmluZ0ZvcndhcmQ6c2VsZWN0aW5nRm9yd2FyZCBjb21w
bGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkhhbmRsZXJDb3B5XShCT09MIGRpZEJlY29tZUZpcnN0
UmVzcG9uZGVyKSB7Ci0gICAgICAgIGlmICghY29tcGxldGlvbkhhbmRsZXJDb3B5KQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyQ29weShkaWRCZWNvbWVG
aXJzdFJlc3BvbmRlcik7Ci0gICAgICAgIEJsb2NrX3JlbGVhc2UoY29tcGxldGlvbkhhbmRsZXJD
b3B5KTsKLSAgICB9XTsKLX0KLQotLSAoaWQpX3NuYXBzaG90TGF5ZXJDb250ZW50c0ZvckJhY2tG
b3J3YXJkTGlzdEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW0KLXsKLSAgICBpZiAo
X3BhZ2UtPmJhY2tGb3J3YXJkTGlzdCgpLmN1cnJlbnRJdGVtKCkgPT0gJml0ZW0uX2l0ZW0pCi0g
ICAgICAgIF9wYWdlLT5yZWNvcmROYXZpZ2F0aW9uU25hcHNob3QoKl9wYWdlLT5iYWNrRm9yd2Fy
ZExpc3QoKS5jdXJyZW50SXRlbSgpKTsKLQotICAgIGlmIChhdXRvKiB2aWV3U25hcHNob3QgPSBp
dGVtLl9pdGVtLnNuYXBzaG90KCkpCi0gICAgICAgIHJldHVybiB2aWV3U25hcHNob3QtPmFzTGF5
ZXJDb250ZW50cygpOwotCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotLSAoTlNBcnJheSAqKV9kYXRh
RGV0ZWN0aW9uUmVzdWx0cwotewotI2lmIEVOQUJMRShEQVRBX0RFVEVDVElPTikKLSAgICByZXR1
cm4gW19jb250ZW50VmlldyBfZGF0YURldGVjdGlvblJlc3VsdHNdOwotI2Vsc2UKLSAgICByZXR1
cm4gbmlsOwotI2VuZGlmCi19Ci0KLS0gKHZvaWQpX2FjY2Vzc2liaWxpdHlSZXRyaWV2ZVNwZWFr
U2VsZWN0aW9uQ29udGVudAotewotICAgIFtfY29udGVudFZpZXcgYWNjZXNzaWJpbGl0eVJldHJp
ZXZlU3BlYWtTZWxlY3Rpb25Db250ZW50XTsKLX0KLQotLy8gVGhpcyBtZXRob2QgaXMgZm9yIHN1
YmNsYXNzZXMgdG8gb3ZlcnJpZGUuCi0vLyBDdXJyZW50bHkgaXQncyBvbmx5IGluIFRlc3RSdW5u
ZXJXS1dlYlZpZXcuCi0tICh2b2lkKV9hY2Nlc3NpYmlsaXR5RGlkR2V0U3BlYWtTZWxlY3Rpb25D
b250ZW50OihOU1N0cmluZyAqKWNvbnRlbnQKLXsKLX0KIAogLSAoVUlUZXh0SW5wdXRBc3Npc3Rh
bnRJdGVtICopaW5wdXRBc3Npc3RhbnRJdGVtCiB7CkBAIC02NTA1LDcgKzY1MjYsNyBAQCAtICh2
b2lkKV9kb0FmdGVyTmV4dFN0YWJsZVByZXNlbnRhdGlvblVwZGF0ZTooZGlzcGF0Y2hfYmxvY2tf
dCl1cGRhdGVCbG9jawogfQogI2VuZGlmCiAKLSNwcmFnbWEgbWFyayBpT1Mtc3BlY2lmaWMgbWV0
aG9kcworI3ByYWdtYSBtYXJrIC0gaU9TIFdLUHJpdmF0ZQogCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIApAQCAtNzAzMyw3ICs3MDU0LDcgQEAgLSAodm9pZClzZXRTZW1hbnRpY0NvbnRlbnRB
dHRyaWJ1dGU6KFVJU2VtYW50aWNDb250ZW50QXR0cmlidXRlKWNvbnRlbnRBdHRyaWJ1dGUKIAog
I2Vsc2UgLy8gI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKLSNwcmFnbWEgbWFyayAtIE9TIFgt
c3BlY2lmaWMgbWV0aG9kcworI3ByYWdtYSBtYXJrIC0gbWFjT1MgV0tQcml2YXRlCiAKIC0gKEJP
T0wpX2RyYXdzQmFja2dyb3VuZAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggOWE3MTM4MDcwZDJhY2VmZjk2ZDkx
MTZkMDcyNjQzMDNkZmJiYWYxNi4uMjdkMzAwZjRhMDQ5N2NlYTc4ZDMzNTQ5MjFlYzRmNjA2NzIy
OTRmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3UHJpdmF0ZS5oCkBAIC0xNDAsNiArMTQwLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNVUkwgKl91bnJlYWNoYWJsZVVSTDsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25s
eSkgTlNVUkwgKl9tYWluRnJhbWVVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlv
cygxMy4wKSk7CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfcmVzb3Vy
Y2VEaXJlY3RvcnlVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7
CiAKIC0gKHZvaWQpX2xvYWRBbHRlcm5hdGVIVE1MU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyBi
YXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgZm9yVW5yZWFjaGFibGVVUkw6KE5TVVJMICopdW5yZWFj
aGFibGVVUkw7CiAtIChXS05hdmlnYXRpb24gKilfbG9hZERhdGE6KE5TRGF0YSAqKWRhdGEgTUlN
RVR5cGU6KE5TU3RyaW5nICopTUlNRVR5cGUgY2hhcmFjdGVyRW5jb2RpbmdOYW1lOihOU1N0cmlu
ZyAqKWNoYXJhY3RlckVuY29kaW5nTmFtZSBiYXNlVVJMOihOU1VSTCAqKWJhc2VVUkwgdXNlckRh
dGE6KGlkKXVzZXJEYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTIpLCBpb3MoMTAuMCkp
OwpAQCAtMTQ5LDEyICsxNTAsMTAgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9X
S1JlY3RFZGdlKSB7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfY29t
bWl0dGVkVVJMOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqX01J
TUVUeXBlOwogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBOU1N0cmluZyAqX3VzZXJB
Z2VudCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwotCi1AcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHksIGdldHRlcj1faXNQbGF5aW5nQXVkaW8pIEJPT0wgX3Bs
YXlpbmdBdWRpbyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwot
CiBAcHJvcGVydHkgKGNvcHksIHNldHRlcj1fc2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
OikgTlNTdHJpbmcgKl9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQ7CiBAcHJvcGVydHkgKGNv
cHksIHNldHRlcj1fc2V0Q3VzdG9tVXNlckFnZW50OikgTlNTdHJpbmcgKl9jdXN0b21Vc2VyQWdl
bnQ7CiAKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSwgZ2V0dGVyPV9pc1BsYXlpbmdB
dWRpbykgQk9PTCBfcGxheWluZ0F1ZGlvIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTMuNCks
IGlvcygxMS4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywgc2V0dGVyPV9zZXRVc2VyQ29udGVu
dEV4dGVuc2lvbnNFbmFibGVkOikgQk9PTCBfdXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBX
S19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjExKSwgaW9zKDkuMCkpOwogCiBAcHJvcGVydHkgKG5v
bmF0b21pYywgcmVhZG9ubHkpIHBpZF90IF93ZWJQcm9jZXNzSWRlbnRpZmllcjsKQEAgLTE4NSw4
ICsxODQsNiBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsK
IAogQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5LCBnZXR0ZXI9X2lzU2hvd2luZ05hdmln
YXRpb25HZXN0dXJlU25hcHNob3QpIEJPT0wgX3Nob3dpbmdOYXZpZ2F0aW9uR2VzdHVyZVNuYXBz
aG90OwogCi1AcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIE5TVVJMICpfcmVzb3VyY2VE
aXJlY3RvcnlVUkwgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNSksIGlvcygxMy4wKSk7Ci0K
IC0gKHZvaWQpX2Nsb3NlOwogCiAtICh2b2lkKV91cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dl
YnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEw
LjEzKSwgaW9zKDExLjApKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25Db29yZGluYXRvci5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9TT0F1dGhvcml6YXRpb25D
b29yZGluYXRvci5tbQppbmRleCA5YTA3ZjFhZjE2NjkwZjdhM2FhNWFlZjE5OTQzNWMxMDNhMGIw
OTVjLi42M2ExOGE2YmU2ZWY1YWYzMjVjYzVjNDU2OGVmMjBjZTM3MmEzN2RlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vU09BdXRob3Jp
emF0aW9uQ29vcmRpbmF0b3IubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1NPQXV0aG9yaXphdGlvbkNvb3JkaW5hdG9yLm1tCkBAIC0zNCw2ICsz
NCw3IEBACiAjaW1wb3J0ICJSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCIKICNpbXBv
cnQgIlN1YkZyYW1lU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIgogI2ltcG9ydCAiV0tTT0F1dGhv
cml6YXRpb25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxX
ZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgogI2ltcG9ydCA8cGFsL2NvY29hL0FwcFNTT1NvZnRM
aW5rLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgo=
</data>
<flag name="review"
          id="401230"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>