<?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>88038</bug_id>
          
          <creation_ts>2012-05-31 19:49:59 -0700</creation_ts>
          <short_desc>[Chromium] Call clipboard methods directly</short_desc>
          <delta_ts>2012-06-01 11:55:53 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>82948</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Pilgrim (Google)">pilgrim</reporter>
          <assigned_to name="Mark Pilgrim (Google)">pilgrim</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>haraken</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>638925</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-31 19:49:59 -0700</bug_when>
    <thetext>[Chromium] Call clipboard methods directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638926</commentid>
    <comment_count>1</comment_count>
      <attachid>145200</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-31 19:50:35 -0700</bug_when>
    <thetext>Created attachment 145200
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638928</commentid>
    <comment_count>2</comment_count>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-05-31 19:51:07 -0700</bug_when>
    <thetext>*** Bug 88037 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638929</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-31 19:52:25 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638971</commentid>
    <comment_count>4</comment_count>
      <attachid>145200</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-05-31 22:12:00 -0700</bug_when>
    <thetext>Comment on attachment 145200
Patch

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

&gt; Source/Platform/chromium/public/WebClipboard.h:65
&gt; -    virtual uint64 sequenceNumber(Buffer) { return 0; }
&gt; +    virtual uint64_t sequenceNumber(Buffer) { return 0; }

I&apos;m surprised this change is needed, but it seems harmless.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639022</commentid>
    <comment_count>5</comment_count>
      <attachid>145200</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 00:06:46 -0700</bug_when>
    <thetext>Comment on attachment 145200
Patch

Attachment 145200 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/12873182</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639276</commentid>
    <comment_count>6</comment_count>
      <attachid>145290</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-06-01 06:34:10 -0700</bug_when>
    <thetext>Created attachment 145290
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639278</commentid>
    <comment_count>7</comment_count>
      <attachid>145290</attachid>
    <who name="Mark Pilgrim (Google)">pilgrim</who>
    <bug_when>2012-06-01 06:34:42 -0700</bug_when>
    <thetext>Comment on attachment 145290
Patch

Updated GYPI file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639572</commentid>
    <comment_count>8</comment_count>
      <attachid>145290</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 11:55:47 -0700</bug_when>
    <thetext>Comment on attachment 145290
Patch

Clearing flags on attachment: 145290

Committed r119258: &lt;http://trac.webkit.org/changeset/119258&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639573</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 11:55:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145200</attachid>
            <date>2012-05-31 19:50:35 -0700</date>
            <delta_ts>2012-06-01 06:33:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88038-20120531224955.patch</filename>
            <type>text/plain</type>
            <size>25537</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MTg3KQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA1LTMxICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENh
bGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRy
YWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9h
cmQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpzZXF1ZW5jZU51bWJlcik6CisK
IDIwMTItMDUtMzEgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBNaWdyYXRlIHRvIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4CkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJl
dmlzaW9uIDExOTEzNSkKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xp
cGJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDkgQEAKIAogI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgog
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldl
YlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDcgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmV0dXJucyBhbiBpZGVudGlmaWVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRl
dGVybWluZSB3aGV0aGVyIHRoZSBkYXRhCiAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY2xp
cGJvYXJkIGhhcyBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdWludDY0IHNlcXVlbmNlTnVtYmVyKEJ1
ZmZlcikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdWludDY0X3Qgc2VxdWVuY2VOdW1iZXIo
QnVmZmVyKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtYXRBdmFpbGFi
bGUoRm9ybWF0LCBCdWZmZXIpIHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExOTE4NykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM1IEBACisyMDEyLTA1LTMxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMg
ZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZUZyb21QYXN0ZWJvYXJkKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3RJdGVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9taXVtRGF0YU9iamVjdEl0ZW06OmdldEFzRmlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bURhdGFPYmplY3RJdGVtOjppbnRlcm5hbEdldEFzU3Ry
aW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGlsaXRpZXNDaHJv
bWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaDoK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9h
cmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVNlbGVj
dGlvbik6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dCk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6
OndyaXRlQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmNhblNtYXJ0
UmVwbGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjpwbGFpblRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6ZG9jdW1lbnRGcmFnbWVudCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZFByaXZhdGUuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybVN1cHBvcnQuaDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoUGxhdGZvcm1TdXBwb3J0KToKKwogMjAxMi0wNS0zMSAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjExOTE0Ni4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0Nocm9taXVtRGF0YU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAkocmV2aXNpb24gMTE5MTM1KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYgKzM2LDIxIEBACiAjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVySXRlbS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKworI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVj
dD4gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVGcm9tUGFzdGVib2FyZCgpCiB7CiAgICAgUmVm
UHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9IGNyZWF0ZSgpOwotICAgIHVpbnQ2
NF90IHNlcXVlbmNlTnVtYmVyID0gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRTZXF1ZW5jZU51
bWJlcihjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpKTsKKyAgICB1aW50NjRfdCBzZXF1ZW5jZU51
bWJlciA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCktPnNlcXVlbmNl
TnVtYmVyKGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkpOwogICAgIGJvb2wgaWdub3JlZDsKLSAg
ICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRB
dmFpbGFibGVUeXBlcyhjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpLCAmaWdub3JlZCk7CisgICAg
V2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+IHdlYlR5cGVzID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEF2YWlsYWJsZVR5cGVzKGN1cnJl
bnRQYXN0ZWJvYXJkQnVmZmVyKCksICZpZ25vcmVkKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gdHlw
ZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJUeXBlcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgdHlwZXMuYWRkKHdlYlR5cGVzW2ldKTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSB0eXBlcy5lbmQoKTsgKytp
dCkKICAgICAgICAgZGF0YU9iamVjdC0+bV9pdGVtTGlzdC5hcHBlbmQoQ2hyb21pdW1EYXRhT2Jq
ZWN0SXRlbTo6Y3JlYXRlRnJvbVBhc3RlYm9hcmQoKml0LCBzZXF1ZW5jZU51bWJlcikpOwogICAg
IHJldHVybiBkYXRhT2JqZWN0LnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdEl0ZW0uY3Bw
CShyZXZpc2lvbiAxMTkxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
aHJvbWl1bURhdGFPYmplY3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDEy
IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJE
YXRhVHJhbnNmZXJJdGVtLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0Nh
bGxiYWNrLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViQ2xpcGJvYXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxD
aHJvbWl1bURhdGFPYmplY3RJdGVtPiBDaHJvbWl1bURhdGFPYmplY3RJdGVtOjpjcmVhdGVGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQpAQCAtMTQxLDcg
KzE0Myw3IEBAIFBhc3NSZWZQdHI8QmxvYj4gQ2hyb21pdW1EYXRhT2JqZWN0SXRlbToKICAgICAg
ICAgLy8gbWV0aG9kIHRvIHRoZSBibG9iIHJlZ2lzdHJ5OyB0aGF0IHdheSB0aGUgZGF0YSBpcyBv
bmx5IGNvcGllZCBvdmVyCiAgICAgICAgIC8vIGludG8gdGhlIHJlbmRlcmVyIHdoZW4gaXQncyBh
Y3R1YWxseSByZWFkLCBub3Qgd2hlbiB0aGUgYmxvYiBpcwogICAgICAgICAvLyBpbml0aWFsbHkg
Y29uc3RydWN0ZWQpLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gUGxhdGZv
cm1TdXBwb3J0OjpjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJk
QnVmZmVyKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHN0YXRpY19jYXN0
PFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiA+KFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
Y2xpcGJvYXJkKCktPnJlYWRJbWFnZShXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRh
cmQpKTsKICAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUo
KTsKICAgICAgICAgcmF3RGF0YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JE
YXRhOjpjcmVhdGUoKTsKQEAgLTE2NSwxNSArMTY3LDE1IEBAIFN0cmluZyBDaHJvbWl1bURhdGFP
YmplY3RJdGVtOjppbnRlcm5hbEcKICAgICBTdHJpbmcgZGF0YTsKICAgICAvLyBUaGlzIGlzIHVn
bHkgYnV0IHRoZXJlJ3Mgbm8gcmVhbCBhbHRlcm5hdGl2ZS4KICAgICBpZiAobV90eXBlID09IG1p
bWVUeXBlVGV4dFBsYWluKQotICAgICAgICBkYXRhID0gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9h
cmRSZWFkUGxhaW5UZXh0KGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkpOworICAgICAgICBkYXRh
ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZFBsYWluVGV4
dChjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpKTsKICAgICBlbHNlIGlmIChtX3R5cGUgPT0gbWlt
ZVR5cGVUZXh0SFRNTCkgewotICAgICAgICBLVVJMIGlnbm9yZWRTb3VyY2VVUkw7CisgICAgICAg
IFdlYktpdDo6V2ViVVJMIGlnbm9yZWRTb3VyY2VVUkw7CiAgICAgICAgIHVuc2lnbmVkIGlnbm9y
ZWQ7Ci0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEhUTUwoY3VycmVudFBh
c3RlYm9hcmRCdWZmZXIoKSwgJmRhdGEsICZpZ25vcmVkU291cmNlVVJMLCAmaWdub3JlZCwgJmln
bm9yZWQpOworICAgICAgICBkYXRhID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlw
Ym9hcmQoKS0+cmVhZEhUTUwoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKSwgJmlnbm9yZWRTb3Vy
Y2VVUkwsICZpZ25vcmVkLCAmaWdub3JlZCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRhdGEgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRDdXN0b21EYXRhKGN1cnJlbnRQYXN0ZWJvYXJk
QnVmZmVyKCksIG1fdHlwZSk7CisgICAgICAgIGRhdGEgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPmNsaXBib2FyZCgpLT5yZWFkQ3VzdG9tRGF0YShjdXJyZW50UGFzdGVib2FyZEJ1ZmZl
cigpLCBtX3R5cGUpOwogCi0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkU2Vx
dWVuY2VOdW1iZXIoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKSkgPT0gbV9zZXF1ZW5jZU51bWJl
ciA/IGRhdGEgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jbGlwYm9hcmQoKS0+c2VxdWVuY2VOdW1iZXIoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIo
KSkgPT0gbV9zZXF1ZW5jZU51bWJlciA/IGRhdGEgOiBTdHJpbmcoKTsKIH0KIAogYm9vbCBDaHJv
bWl1bURhdGFPYmplY3RJdGVtOjppc0ZpbGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGls
aXRpZXNDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDExOTEzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsMTMgKzM1LDE1IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xpcGJvYXJkLmg+
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlciBjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpCitXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVm
ZmVyIGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxlY3Rpb25Nb2RlKCkgPwotICAgICAgICBQYXN0ZWJv
YXJkUHJpdmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6
OlN0YW5kYXJkQnVmZmVyOworICAgICAgICBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU2Vs
ZWN0aW9uIDoKKyAgICAgICAgV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OkJ1ZmZlclN0YW5kYXJkOwog
fQogCiAjaWYgT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaAkocmV2
aXNpb24gMTE5MTM1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkVXRpbGl0aWVzQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDE0IEBA
CiAjaWZuZGVmIENsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtX2gKICNkZWZpbmUgQ2xpcGJvYXJk
VXRpbGl0aWVzQ2hyb21pdW1faAogCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKLQor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7CiAKLVBhc3RlYm9hcmRQcml2
YXRlOjpDbGlwYm9hcmRCdWZmZXIgY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKTsKK1dlYktpdDo6
V2ViQ2xpcGJvYXJkOjpCdWZmZXIgY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKTsKICNpZiBPUyhX
SU5ET1dTKQogdm9pZCByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3Ry
aW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bh
c3RlYm9hcmRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gMTE5MTM1KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAj
aW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZVNraWEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC01MSw2
ICs1MSwxMCBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNsaXBib2FyZC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJEcmFnRGF0YS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKQEAgLTkxLDcgKzk1LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogcwogI2VuZGlmCiAgICAg
cmVwbGFjZU5CU1BXaXRoU3BhY2UocGxhaW5UZXh0KTsKIAotICAgIFBsYXRmb3JtU3VwcG9ydDo6
Y2xpcGJvYXJkV3JpdGVTZWxlY3Rpb24oaHRtbCwgdXJsLCBwbGFpblRleHQsIGNhblNtYXJ0Q29w
eU9yRGVsZXRlKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgp
LT53cml0ZUhUTUwoaHRtbCwgdXJsLCBwbGFpblRleHQsIGNhblNtYXJ0Q29weU9yRGVsZXRlKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CkBAIC05OSw5ICsxMDMsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0
IFN0CiAjaWYgT1MoV0lORE9XUykKICAgICBTdHJpbmcgcGxhaW5UZXh0KHRleHQpOwogICAgIHJl
cGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhwbGFpblRleHQpOwotICAgIFBs
YXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVQbGFpblRleHQocGxhaW5UZXh0KTsKKyAgICBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgpLT53cml0ZVBsYWluVGV4dChw
bGFpblRleHQpOwogI2Vsc2UKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlUGxh
aW5UZXh0KHRleHQpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJk
KCktPndyaXRlUGxhaW5UZXh0KHRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTExNiw3ICsxMjAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgICAgICAgICB0
aXRsZSA9IHVybC5ob3N0KCk7CiAgICAgfQogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9h
cmRXcml0ZVVSTCh1cmwsIHRpdGxlKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PmNsaXBib2FyZCgpLT53cml0ZVVSTCh1cmwsIHRpdGxlKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQpAQCAtMTUxLDQ3ICsxNTUsNTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUq
IG5vZGUsCiAgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50
LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJs
U3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKLQotICAgIFBs
YXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVybCwgdGl0bGUpOwor
ICAgIFdlYktpdDo6V2ViSW1hZ2Ugd2ViSW1hZ2UgPSBiaXRtYXAtPmJpdG1hcCgpOworICAgIFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSW1hZ2Uod2ViSW1h
Z2UsIFdlYktpdDo6V2ViVVJMKHVybCksIFdlYktpdDo6V2ViU3RyaW5nKHRpdGxlKSk7CiB9CiAK
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRXcml0ZURhdGFPYmplY3QoY2xpcGJvYXJk
KTsKKyAgICBXZWJLaXQ6OldlYkRyYWdEYXRhIGRyYWdEYXRhID0gc3RhdGljX2Nhc3Q8Q2xpcGJv
YXJkQ2hyb21pdW0qPihjbGlwYm9hcmQpLT5kYXRhT2JqZWN0KCk7CisgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVEYXRhT2JqZWN0KGRyYWdEYXRhKTsK
IH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZElzRm9ybWF0QXZhaWxhYmxlKFBhc3RlYm9hcmRQcml2
YXRlOjpXZWJTbWFydFBhc3RlRm9ybWF0LCBtX3NlbGVjdGlvbk1vZGUgPyBQYXN0ZWJvYXJkUHJp
dmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDogUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVmZmVy
KTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+
aXNGb3JtYXRBdmFpbGFibGUoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OkZvcm1hdFNtYXJ0UGFzdGUs
IG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpCdWZmZXJTZWxlY3Rpb24g
OiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRhcmQpOwogfQogCiBTdHJpbmcgUGFz
dGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1T
dXBwb3J0OjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KG1fc2VsZWN0aW9uTW9kZSA/IFBhc3RlYm9h
cmRQcml2YXRlOjpTZWxlY3Rpb25CdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRC
dWZmZXIpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2Fy
ZCgpLT5yZWFkUGxhaW5UZXh0KG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJvYXJk
OjpCdWZmZXJTZWxlY3Rpb24gOiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRhcmQp
OwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFs
bG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKICAgICBjaG9zZVBsYWluVGV4
dCA9IGZhbHNlOwotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVy
ID0gbV9zZWxlY3Rpb25Nb2RlID8gUGFzdGVib2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZlciA6
IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcjsKKyAgICBXZWJLaXQ6OldlYkNsaXBi
b2FyZDo6QnVmZmVyIGJ1ZmZlciA9IG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJv
YXJkOjpCdWZmZXJTZWxlY3Rpb24gOiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRh
cmQ7CiAKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRJc0Zvcm1hdEF2YWlsYWJs
ZShQYXN0ZWJvYXJkUHJpdmF0ZTo6SFRNTEZvcm1hdCwgYnVmZmVyKSkgewotICAgICAgICBTdHJp
bmcgbWFya3VwOwotICAgICAgICBLVVJMIHNyY1VSTDsKKyAgICBpZiAoV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+aXNGb3JtYXRBdmFpbGFibGUoV2ViS2l0OjpXZWJD
bGlwYm9hcmQ6OkZvcm1hdEhUTUwsIGJ1ZmZlcikpIHsKKyAgICAgICAgV2ViS2l0OjpXZWJTdHJp
bmcgbWFya3VwOwogICAgICAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gMDsKICAgICAgICAg
dW5zaWduZWQgZnJhZ21lbnRFbmQgPSAwOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBi
b2FyZFJlYWRIVE1MKGJ1ZmZlciwgJm1hcmt1cCwgJnNyY1VSTCwgJmZyYWdtZW50U3RhcnQsICZm
cmFnbWVudEVuZCk7CisgICAgICAgIFdlYktpdDo6V2ViVVJMIHVybDsKKyAgICAgICAgbWFya3Vw
ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEhUTUwoYnVm
ZmVyLCAmdXJsLCAmZnJhZ21lbnRTdGFydCwgJmZyYWdtZW50RW5kKTsKKworICAgICAgICAKKyAg
ICAgICAgLy8gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEhUTUwoYnVmZmVy
LCAmbWFya3VwLCAmc3JjVVJMLCAmZnJhZ21lbnRTdGFydCwgJmZyYWdtZW50RW5kKTsKIAogICAg
ICAgICBpZiAoIW1hcmt1cC5pc0VtcHR5KCkpIHsKICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPQotICAgICAgICAgICAgICBjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXBXaXRoQ29udGV4dChmcmFtZS0+ZG9jdW1lbnQoKSwgbWFya3VwLCBmcmFnbWVudFN0YXJ0LCBm
cmFnbWVudEVuZCwgc3JjVVJMLCBEaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQpOworICAgICAgICAg
ICAgICBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChmcmFtZS0+ZG9jdW1lbnQo
KSwgbWFya3VwLCBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCwgS1VSTCh1cmwpLCBEaXNhbGxv
d1NjcmlwdGluZ0NvbnRlbnQpOwogICAgICAgICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChhbGxvd1BsYWluVGV4dCkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gUGxhdGZvcm1TdXBw
b3J0OjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KGJ1ZmZlcik7CisgICAgICAgIFN0cmluZyBtYXJr
dXAgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgpLT5yZWFkUGxhaW5U
ZXh0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghbWFya3VwLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQcml2YXRlLmgJKHJldmlzaW9uIDExOTEz
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBhc3RlYm9hcmRQ
cml2YXRlX2gKLSNkZWZpbmUgUGFzdGVib2FyZFByaXZhdGVfaAotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLSAgICBjbGFzcyBQYXN0ZWJvYXJkUHJpdmF0ZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIENsaXBib2FyZEZvcm1hdCB7Ci0gICAgICAgICAgICBQbGFpblRleHRGb3JtYXQsCi0g
ICAgICAgICAgICBIVE1MRm9ybWF0LAotICAgICAgICAgICAgQm9va21hcmtGb3JtYXQsCi0gICAg
ICAgICAgICBXZWJTbWFydFBhc3RlRm9ybWF0LAotICAgICAgICB9OwotICAgICAgICBlbnVtIENs
aXBib2FyZEJ1ZmZlciB7Ci0gICAgICAgICAgICBTdGFuZGFyZEJ1ZmZlciwKLSAgICAgICAgICAg
IFNlbGVjdGlvbkJ1ZmZlciwKLSAgICAgICAgICAgIERyYWdCdWZmZXIsCi0gICAgICAgIH07Ci0g
ICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZp
c2lvbiAxMTkxMzUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIkxpbmtIYXNo
LmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRh
LmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjcsNyArNjYsNiBAQCB0eXBlZGVm
IHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5
bmNGaWxlU3lzdGVtOwotY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJz
b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTk0LDI2ICs5Miw2IEBAIHN0cnVjdCBGb250UmVuZGVy
U3R5bGU7CiAKIGNsYXNzIFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6Ci0gICAgLy8gQ2xpcGJv
YXJkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSAgICBzdGF0aWMgdWludDY0X3QgY2xpcGJvYXJkU2VxdWVuY2VOdW1iZXIoUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7Ci0KLSAgICBzdGF0aWMgYm9vbCBjbGlwYm9h
cmRJc0Zvcm1hdEF2YWlsYWJsZShQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkRm9ybWF0LCBQ
YXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKLSAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xp
cGJvYXJkQnVmZmVyLCBib29sKiBjb250YWluc0ZpbGVuYW1lcyk7Ci0KLSAgICBzdGF0aWMgU3Ry
aW5nIGNsaXBib2FyZFJlYWRQbGFpblRleHQoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlcik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJvYXJkUmVhZEhUTUwoUGFzdGVib2FyZFByaXZh
dGU6OkNsaXBib2FyZEJ1ZmZlciwgU3RyaW5nKiwgS1VSTCosIHVuc2lnbmVkKiBmcmFnbWVudFN0
YXJ0LCB1bnNpZ25lZCogZnJhZ21lbnRFbmQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xpcGJvYXJkUmVhZEltYWdlKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRC
dWZmZXIpOwotICAgIHN0YXRpYyBTdHJpbmcgY2xpcGJvYXJkUmVhZEN1c3RvbURhdGEoUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLQotICAg
IC8vIE9ubHkgdGhlIGNsaXBib2FyZFJlYWQgZnVuY3Rpb25zIHRha2UgYSBidWZmZXIgYXJndW1l
bnQgYmVjYXVzZQotICAgIC8vIENocm9taXVtIGN1cnJlbnRseSB1c2VzIGEgZGlmZmVyZW50IHRl
Y2huaXF1ZSB0byB3cml0ZSB0byBhbHRlcm5hdGUKLSAgICAvLyBjbGlwYm9hcmQgYnVmZmVycy4K
LSAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRXcml0ZVNlbGVjdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJv
YXJkV3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJv
YXJkV3JpdGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lk
IGNsaXBib2FyZFdyaXRlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRXcml0ZURhdGFPYmplY3QoQ2xpcGJv
YXJkKik7Ci0KICAgICAvLyBDb29raWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAg
c3RhdGljIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTE4NykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDUtMzEgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gQ2FsbCBjbGlwYm9hcmQgbWV0aG9kcyBkaXJlY3RseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jp
bmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0Q29va2llSmFyKToKKwogMjAxMi0wNS0zMSAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjExOTE0Ni4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fz
c2VydE1hdGNoaW5nRW51bXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCShyZXZpc2lvbiAxMTkxMzUpCisrKyBTb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTksNyArNTksNiBAQAogI2luY2x1ZGUgIk1lZGlhU3RyZWFtU291cmNlLmgiCiAj
aW5jbHVkZSAiTm90aWZpY2F0aW9uQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZVZpc2liaWxpdHlT
dGF0ZS5oIgotI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCiAjaW5jbHVkZSAiUGVlckNv
bm5lY3Rpb24wMC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtQ3Vyc29yLmgiCiAjaW5jbHVkZSAiUmVm
ZXJyZXJQb2xpY3kuaCIKQEAgLTI2OCwxNCArMjY3LDYgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJBcHBsaWNhdAogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6Q2FjaGVkRXZlbnQsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDQUNI
RURfRVZFTlQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6T2Jzb2xldGVFdmVudCwgQXBwbGljYXRpb25DYWNoZUhvc3Q6Ok9CU09MRVRFX0VW
RU5UKTsKIAotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJDbGlwYm9hcmQ6OkZvcm1h
dFBsYWluVGV4dCwgUGFzdGVib2FyZFByaXZhdGU6OlBsYWluVGV4dEZvcm1hdCk7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkNsaXBib2FyZDo6Rm9ybWF0SFRNTCwgUGFzdGVib2Fy
ZFByaXZhdGU6OkhUTUxGb3JtYXQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJD
bGlwYm9hcmQ6OkZvcm1hdEJvb2ttYXJrLCBQYXN0ZWJvYXJkUHJpdmF0ZTo6Qm9va21hcmtGb3Jt
YXQpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJDbGlwYm9hcmQ6OkZvcm1hdFNt
YXJ0UGFzdGUsIFBhc3RlYm9hcmRQcml2YXRlOjpXZWJTbWFydFBhc3RlRm9ybWF0KTsKLQotQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJDbGlwYm9hcmQ6OkJ1ZmZlclN0YW5kYXJkLCBQ
YXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXIpOwotQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJDbGlwYm9hcmQ6OkJ1ZmZlclNlbGVjdGlvbiwgUGFzdGVib2FyZFByaXZhdGU6
OlNlbGVjdGlvbkJ1ZmZlcik7Ci0KIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQ3Vy
c29ySW5mbzo6VHlwZVBvaW50ZXIsIFBsYXRmb3JtQ3Vyc29yOjpUeXBlUG9pbnRlcik7CiBDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkN1cnNvckluZm86OlR5cGVDcm9zcywgUGxhdGZv
cm1DdXJzb3I6OlR5cGVDcm9zcyk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkN1
cnNvckluZm86OlR5cGVIYW5kLCBQbGF0Zm9ybUN1cnNvcjo6VHlwZUhhbmQpOwpJbmRleDogU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1TdXBwb3J0LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCShyZXZpc2lv
biAxMTkxMzUpCisrKyBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MCw3ICs4MCw2IEBACiAKICNpbmNsdWRlICJBc3luY0Zp
bGVTeXN0ZW1DaHJvbWl1bS5oIgogI2luY2x1ZGUgIkJpdG1hcEltYWdlLmgiCi0jaW5jbHVkZSAi
Q2xpcGJvYXJkQ2hyb21pdW0uaCIKICNpbmNsdWRlICJDb29raWUuaCIKICNpbmNsdWRlICJEb2N1
bWVudC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgpAQCAtOTQsNyArOTMsNiBAQAogCiAjaW5j
bHVkZSAiV29ya2VyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dFByb3h5LmgiCi0jaW5jbHVk
ZSA8cHVibGljL1dlYkNsaXBib2FyZC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJDb29raWUuaD4K
ICNpbmNsdWRlIDxwdWJsaWMvV2ViQ29va2llSmFyLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYk1p
bWVSZWdpc3RyeS5oPgpAQCAtMTQxLDk2ICsxMzksNiBAQCBzdGF0aWMgV2ViQ29va2llSmFyKiBn
ZXRDb29raWVKYXIoY29uc3QKICAgICByZXR1cm4gY29va2llSmFyOwogfQogCi0vLyBDbGlwYm9h
cmQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLXVpbnQ2NF90IFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkU2VxdWVu
Y2VOdW1iZXIoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIpCi17Ci0g
ICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+c2VxdWVuY2VO
dW1iZXIoCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIp
KTsKLX0KLQotYm9vbCBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZElzRm9ybWF0QXZhaWxhYmxl
KAotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRGb3JtYXQgZm9ybWF0LAotICAgIFBh
c3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyKQotewotICAgIHJldHVybiB3
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJkKCktPmlzRm9ybWF0QXZhaWxhYmxlKAot
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkZvcm1hdD4oZm9ybWF0KSwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlcikpOwotfQotCi1IYXNo
U2V0PFN0cmluZz4gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMo
Ci0gICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsIGJvb2wqIGNv
bnRhaW5zRmlsZW5hbWVzKQotewotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdCA9IHdl
YktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+cmVhZEF2YWlsYWJsZVR5cGVzKAot
ICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgY29udGFp
bnNGaWxlbmFtZXMpOwotICAgIEhhc2hTZXQ8U3RyaW5nPiB0eXBlczsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKLSAgICAgICAgdHlwZXMuYWRkKHJlc3Vs
dFtpXSk7Ci0gICAgcmV0dXJuIHR5cGVzOwotfQotCi1TdHJpbmcgUGxhdGZvcm1TdXBwb3J0Ojpj
bGlwYm9hcmRSZWFkUGxhaW5UZXh0KAotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRC
dWZmZXIgYnVmZmVyKQotewotICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xp
cGJvYXJkKCktPnJlYWRQbGFpblRleHQoCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNsaXBib2Fy
ZDo6QnVmZmVyPihidWZmZXIpKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2Fy
ZFJlYWRIVE1MKAotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVy
LAotICAgIFN0cmluZyogaHRtbFRleHQsIEtVUkwqIHNvdXJjZVVSTCwgdW5zaWduZWQqIGZyYWdt
ZW50U3RhcnQsIHVuc2lnbmVkKiBmcmFnbWVudEVuZCkKLXsKLSAgICBXZWJVUkwgdXJsOwotICAg
ICpodG1sVGV4dCA9IHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+cmVhZEhU
TUwoCi0gICAgICAgIHN0YXRpY19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpLCAm
dXJsLCBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCk7Ci0gICAgKnNvdXJjZVVSTCA9IHVybDsK
LX0KLQotUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJk
UmVhZEltYWdlKAotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVy
KQotewotICAgIHJldHVybiB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJkKCktPnJl
YWRJbWFnZShzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSk7Ci19Ci0K
LVN0cmluZyBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRDdXN0b21EYXRhKAotICAgIFBh
c3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyLCBjb25zdCBTdHJpbmcmIHR5
cGUpCi17Ci0gICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+
cmVhZEN1c3RvbURhdGEoc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlciks
IHR5cGUpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVTZWxlY3Rp
b24oY29uc3QgU3RyaW5nJiBodG1sVGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEtVUkwmIHNvdXJjZVVSTCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB3cml0ZVNtYXJ0
UGFzdGUpCi17Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT53cml0
ZUhUTUwoCi0gICAgICAgIGh0bWxUZXh0LCBzb3VyY2VVUkwsIHBsYWluVGV4dCwgd3JpdGVTbWFy
dFBhc3RlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlUGxhaW5U
ZXh0KGNvbnN0IFN0cmluZyYgcGxhaW5UZXh0KQotewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9y
dCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVQbGFpblRleHQocGxhaW5UZXh0KTsKLX0KLQotdm9pZCBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiB0aXRsZSkKLXsKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJk
KCktPndyaXRlVVJMKHVybCwgdGl0bGUpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y2xp
cGJvYXJkV3JpdGVJbWFnZShOYXRpdmVJbWFnZVB0ciBpbWFnZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS1VSTCYgc291cmNlVVJMLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHRpdGxlKQotewot
ICAgIFdlYkltYWdlIHdlYkltYWdlKGltYWdlLT5iaXRtYXAoKSk7Ci0gICAgd2ViS2l0UGxhdGZv
cm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT53cml0ZUltYWdlKHdlYkltYWdlLCBzb3VyY2VVUkws
IHRpdGxlKTsKLX0KLQotdm9pZCBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlRGF0YU9i
amVjdChDbGlwYm9hcmQqIGNsaXBib2FyZCkKLXsKLSAgICBXZWJEcmFnRGF0YSBkYXRhID0gc3Rh
dGljX2Nhc3Q8Q2xpcGJvYXJkQ2hyb21pdW0qPihjbGlwYm9hcmQpLT5kYXRhT2JqZWN0KCk7Ci0g
ICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT53cml0ZURhdGFPYmplY3Qo
ZGF0YSk7Ci19Ci0KIC8vIENvb2tpZXMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBQbGF0Zm9ybVN1cHBv
cnQ6OnNldENvb2tpZXMoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBLVVJMJiB1cmws
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145290</attachid>
            <date>2012-06-01 06:34:10 -0700</date>
            <delta_ts>2012-06-01 11:55:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88038-20120601093328.patch</filename>
            <type>text/plain</type>
            <size>26835</size>
            <attacher name="Mark Pilgrim (Google)">pilgrim</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1Bs
YXRmb3JtL0NoYW5nZUxvZwkocmV2aXNpb24gMTE5MjIzKQorKysgU291cmNlL1BsYXRmb3JtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA2LTAxICBNYXJr
IFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENh
bGwgY2xpcGJvYXJkIG1ldGhvZHMgZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTg4MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgUGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRy
YWNraW5nIGJ1ZyA4Mjk0OC4KKworICAgICAgICAqIGNocm9taXVtL3B1YmxpYy9XZWJDbGlwYm9h
cmQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpzZXF1ZW5jZU51bWJlcik6CisK
IDIwMTItMDUtMzEgIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgW2Nocm9taXVtXSBNaWdyYXRlIHRvIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4CkluZGV4
OiBTb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkNsaXBib2FyZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xpcGJvYXJkLmgJKHJl
dmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViQ2xp
cGJvYXJkLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDkgQEAKIAogI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgogI2luY2x1ZGUgIldlYkRhdGEuaCIKKyNpbmNsdWRlICJXZWJJbWFnZS5oIgog
I2luY2x1ZGUgIldlYlN0cmluZy5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgIldl
YlZlY3Rvci5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTYwLDcgKzYyLDcgQEAgcHVibGlj
OgogCiAgICAgLy8gUmV0dXJucyBhbiBpZGVudGlmaWVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGRl
dGVybWluZSB3aGV0aGVyIHRoZSBkYXRhCiAgICAgLy8gY29udGFpbmVkIHdpdGhpbiB0aGUgY2xp
cGJvYXJkIGhhcyBjaGFuZ2VkLgotICAgIHZpcnR1YWwgdWludDY0IHNlcXVlbmNlTnVtYmVyKEJ1
ZmZlcikgeyByZXR1cm4gMDsgfQorICAgIHZpcnR1YWwgdWludDY0X3Qgc2VxdWVuY2VOdW1iZXIo
QnVmZmVyKSB7IHJldHVybiAwOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNGb3JtYXRBdmFpbGFi
bGUoRm9ybWF0LCBCdWZmZXIpIHsgcmV0dXJuIGZhbHNlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDM4IEBACisyMDEyLTA2LTAxICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIENhbGwgY2xpcGJvYXJkIG1ldGhvZHMg
ZGlyZWN0bHkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTg4MDM4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
UGFydCBvZiBhIHJlZmFjdG9yaW5nIHNlcmllcy4gU2VlIHRyYWNraW5nIGJ1ZyA4Mjk0OC4KKwor
ICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBwbGF0Zm9ybS9QYXN0ZWJvYXJkLmg6
CisgICAgICAgIChQYXN0ZWJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DaHJv
bWl1bURhdGFPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1EYXRhT2JqZWN0
OjpjcmVhdGVGcm9tUGFzdGVib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2hy
b21pdW1EYXRhT2JqZWN0SXRlbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1bURhdGFP
YmplY3RJdGVtOjpnZXRBc0ZpbGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21pdW1EYXRhT2Jq
ZWN0SXRlbTo6aW50ZXJuYWxHZXRBc1N0cmluZyk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3Vy
cmVudFBhc3RlYm9hcmRCdWZmZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZFV0aWxpdGllc0Nocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9QYXN0ZWJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UGFzdGVib2FyZDo6d3JpdGVTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVi
b2FyZDo6d3JpdGVQbGFpblRleHQpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3Jp
dGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVJbWFnZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYXN0ZWJvYXJkOjp3cml0ZUNsaXBib2FyZCk6CisgICAgICAgIChXZWJD
b3JlOjpQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFz
dGVib2FyZDo6cGxhaW5UZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9hcmQ6OmRvY3Vt
ZW50RnJhZ21lbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQcml2
YXRlLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1TdXBw
b3J0Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFBsYXRmb3JtU3VwcG9ydCk6CisK
IDIwMTItMDYtMDEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgRnJhbWU6OndpbGxEZXRhY2hQYWdlKCkgc2hvdWxkbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4g
b25jZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtMzM0Niw3ICszMzQ2LDYgQEAK
ICAgICAgICAgICAgICdwbGF0Zm9ybS9jaHJvbWl1bS9NZW1vcnlVc2FnZVN1cHBvcnRDaHJvbWl1
bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL01JTUVUeXBlUmVnaXN0cnlD
aHJvbWl1bS5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRD
aHJvbWl1bS5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQ
cml2YXRlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQ3Vyc29y
LmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtS2V5Ym9hcmRFdmVu
dENocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1T
Y3JlZW5DaHJvbWl1bS5jcHAnLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVi
b2FyZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Bhc3RlYm9hcmQu
aAkocmV2aXNpb24gMTE5MjIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUGFzdGVib2Fy
ZC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMCArNTMsNiBAQCBPQkpDX0NMQVNTIE5TQXJyYXk7
CiB0eXBlZGVmIHN0cnVjdCBIV05EX18qIEhXTkQ7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JNKENI
Uk9NSVVNKQotI2luY2x1ZGUgIlBhc3RlYm9hcmRQcml2YXRlLmgiCi0jZW5kaWYKLQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTIzLDkgKzExOSw2IEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3NlbGVjdGlvbk1vZGU7CiAjZW5kaWYKIAotI2lmIFBMQVRGT1JN
KENIUk9NSVVNKQotICAgIFBhc3RlYm9hcmRQcml2YXRlIHA7Ci0jZW5kaWYKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L0Nocm9taXVtRGF0YU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAkocmV2aXNpb24gMTE5MjIzKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTYgKzM2LDIxIEBACiAjaW5jbHVkZSAiRGF0YVRyYW5z
ZmVySXRlbS5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25Db2RlUGxhY2Vob2xkZXIuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKKworI2lu
Y2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVj
dD4gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVGcm9tUGFzdGVib2FyZCgpCiB7CiAgICAgUmVm
UHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9IGNyZWF0ZSgpOwotICAgIHVpbnQ2
NF90IHNlcXVlbmNlTnVtYmVyID0gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRTZXF1ZW5jZU51
bWJlcihjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpKTsKKyAgICB1aW50NjRfdCBzZXF1ZW5jZU51
bWJlciA9IFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCktPnNlcXVlbmNl
TnVtYmVyKGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkpOwogICAgIGJvb2wgaWdub3JlZDsKLSAg
ICBIYXNoU2V0PFN0cmluZz4gdHlwZXMgPSBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRB
dmFpbGFibGVUeXBlcyhjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpLCAmaWdub3JlZCk7CisgICAg
V2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJTdHJpbmc+IHdlYlR5cGVzID0gV2ViS2l0OjpQ
bGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEF2YWlsYWJsZVR5cGVzKGN1cnJl
bnRQYXN0ZWJvYXJkQnVmZmVyKCksICZpZ25vcmVkKTsKKyAgICBIYXNoU2V0PFN0cmluZz4gdHlw
ZXM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB3ZWJUeXBlcy5zaXplKCk7ICsraSkKKyAg
ICAgICAgdHlwZXMuYWRkKHdlYlR5cGVzW2ldKTsKICAgICBmb3IgKEhhc2hTZXQ8U3RyaW5nPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSB0eXBlcy5iZWdpbigpOyBpdCAhPSB0eXBlcy5lbmQoKTsgKytp
dCkKICAgICAgICAgZGF0YU9iamVjdC0+bV9pdGVtTGlzdC5hcHBlbmQoQ2hyb21pdW1EYXRhT2Jq
ZWN0SXRlbTo6Y3JlYXRlRnJvbVBhc3RlYm9hcmQoKml0LCBzZXF1ZW5jZU51bWJlcikpOwogICAg
IHJldHVybiBkYXRhT2JqZWN0LnJlbGVhc2UoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdEl0ZW0uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdEl0ZW0uY3Bw
CShyZXZpc2lvbiAxMTkyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
aHJvbWl1bURhdGFPYmplY3RJdGVtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTAgKzQwLDEy
IEBACiAjaW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJE
YXRhVHJhbnNmZXJJdGVtLmgiCiAjaW5jbHVkZSAiRmlsZS5oIgotI2luY2x1ZGUgIlBsYXRmb3Jt
U3VwcG9ydC5oIgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN0cmluZ0Nh
bGxiYWNrLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViQ2xpcGJvYXJkLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxD
aHJvbWl1bURhdGFPYmplY3RJdGVtPiBDaHJvbWl1bURhdGFPYmplY3RJdGVtOjpjcmVhdGVGcm9t
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhKQpAQCAtMTQxLDcg
KzE0Myw3IEBAIFBhc3NSZWZQdHI8QmxvYj4gQ2hyb21pdW1EYXRhT2JqZWN0SXRlbToKICAgICAg
ICAgLy8gbWV0aG9kIHRvIHRoZSBibG9iIHJlZ2lzdHJ5OyB0aGF0IHdheSB0aGUgZGF0YSBpcyBv
bmx5IGNvcGllZCBvdmVyCiAgICAgICAgIC8vIGludG8gdGhlIHJlbmRlcmVyIHdoZW4gaXQncyBh
Y3R1YWxseSByZWFkLCBub3Qgd2hlbiB0aGUgYmxvYiBpcwogICAgICAgICAvLyBpbml0aWFsbHkg
Y29uc3RydWN0ZWQpLgotICAgICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBkYXRhID0gUGxhdGZv
cm1TdXBwb3J0OjpjbGlwYm9hcmRSZWFkSW1hZ2UoUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJk
QnVmZmVyKTsKKyAgICAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IHN0YXRpY19jYXN0
PFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiA+KFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+
Y2xpcGJvYXJkKCktPnJlYWRJbWFnZShXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRh
cmQpKTsKICAgICAgICAgUmVmUHRyPFJhd0RhdGE+IHJhd0RhdGEgPSBSYXdEYXRhOjpjcmVhdGUo
KTsKICAgICAgICAgcmF3RGF0YS0+bXV0YWJsZURhdGEoKS0+YXBwZW5kKGRhdGEtPmRhdGEoKSwg
ZGF0YS0+c2l6ZSgpKTsKICAgICAgICAgT3duUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JE
YXRhOjpjcmVhdGUoKTsKQEAgLTE2NSwxNSArMTY3LDE1IEBAIFN0cmluZyBDaHJvbWl1bURhdGFP
YmplY3RJdGVtOjppbnRlcm5hbEcKICAgICBTdHJpbmcgZGF0YTsKICAgICAvLyBUaGlzIGlzIHVn
bHkgYnV0IHRoZXJlJ3Mgbm8gcmVhbCBhbHRlcm5hdGl2ZS4KICAgICBpZiAobV90eXBlID09IG1p
bWVUeXBlVGV4dFBsYWluKQotICAgICAgICBkYXRhID0gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9h
cmRSZWFkUGxhaW5UZXh0KGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkpOworICAgICAgICBkYXRh
ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZFBsYWluVGV4
dChjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpKTsKICAgICBlbHNlIGlmIChtX3R5cGUgPT0gbWlt
ZVR5cGVUZXh0SFRNTCkgewotICAgICAgICBLVVJMIGlnbm9yZWRTb3VyY2VVUkw7CisgICAgICAg
IFdlYktpdDo6V2ViVVJMIGlnbm9yZWRTb3VyY2VVUkw7CiAgICAgICAgIHVuc2lnbmVkIGlnbm9y
ZWQ7Ci0gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEhUTUwoY3VycmVudFBh
c3RlYm9hcmRCdWZmZXIoKSwgJmRhdGEsICZpZ25vcmVkU291cmNlVVJMLCAmaWdub3JlZCwgJmln
bm9yZWQpOworICAgICAgICBkYXRhID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlw
Ym9hcmQoKS0+cmVhZEhUTUwoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKSwgJmlnbm9yZWRTb3Vy
Y2VVUkwsICZpZ25vcmVkLCAmaWdub3JlZCk7CiAgICAgfSBlbHNlCi0gICAgICAgIGRhdGEgPSBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRDdXN0b21EYXRhKGN1cnJlbnRQYXN0ZWJvYXJk
QnVmZmVyKCksIG1fdHlwZSk7CisgICAgICAgIGRhdGEgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPmNsaXBib2FyZCgpLT5yZWFkQ3VzdG9tRGF0YShjdXJyZW50UGFzdGVib2FyZEJ1ZmZl
cigpLCBtX3R5cGUpOwogCi0gICAgcmV0dXJuIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkU2Vx
dWVuY2VOdW1iZXIoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKSkgPT0gbV9zZXF1ZW5jZU51bWJl
ciA/IGRhdGEgOiBTdHJpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVu
dCgpLT5jbGlwYm9hcmQoKS0+c2VxdWVuY2VOdW1iZXIoY3VycmVudFBhc3RlYm9hcmRCdWZmZXIo
KSkgPT0gbV9zZXF1ZW5jZU51bWJlciA/IGRhdGEgOiBTdHJpbmcoKTsKIH0KIAogYm9vbCBDaHJv
bWl1bURhdGFPYmplY3RJdGVtOjppc0ZpbGVuYW1lKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRVdGls
aXRpZXNDaHJvbWl1bS5jcHAJKHJldmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsMTMgKzM1LDE1IEBACiAjaW5jbHVkZSAiUGFzdGVib2FyZC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAKKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ2xpcGJvYXJkLmg+
CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlciBjdXJyZW50UGFzdGVib2FyZEJ1ZmZlcigpCitXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVm
ZmVyIGN1cnJlbnRQYXN0ZWJvYXJkQnVmZmVyKCkKIHsKICAgICByZXR1cm4gUGFzdGVib2FyZDo6
Z2VuZXJhbFBhc3RlYm9hcmQoKS0+aXNTZWxlY3Rpb25Nb2RlKCkgPwotICAgICAgICBQYXN0ZWJv
YXJkUHJpdmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDoKLSAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6
OlN0YW5kYXJkQnVmZmVyOworICAgICAgICBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU2Vs
ZWN0aW9uIDoKKyAgICAgICAgV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OkJ1ZmZlclN0YW5kYXJkOwog
fQogCiAjaWYgT1MoV0lORE9XUykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaAkocmV2
aXNpb24gMTE5MjIzKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkVXRpbGl0aWVzQ2hyb21pdW0uaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTUgKzMxLDE0IEBA
CiAjaWZuZGVmIENsaXBib2FyZFV0aWxpdGllc0Nocm9taXVtX2gKICNkZWZpbmUgQ2xpcGJvYXJk
VXRpbGl0aWVzQ2hyb21pdW1faAogCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKLQor
I2luY2x1ZGUgPHB1YmxpYy9XZWJDbGlwYm9hcmQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEtVUkw7CiAKLVBhc3RlYm9hcmRQcml2
YXRlOjpDbGlwYm9hcmRCdWZmZXIgY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKTsKK1dlYktpdDo6
V2ViQ2xpcGJvYXJkOjpCdWZmZXIgY3VycmVudFBhc3RlYm9hcmRCdWZmZXIoKTsKICNpZiBPUyhX
SU5ET1dTKQogdm9pZCByZXBsYWNlTmV3bGluZXNXaXRoV2luZG93c1N0eWxlTmV3bGluZXMoU3Ry
aW5nJik7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bh
c3RlYm9hcmRDaHJvbWl1bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAkocmV2aXNpb24gMTE5MjIzKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGFzdGVib2FyZENocm9taXVtLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIlBhc3RlYm9hcmQuaCIKIAorI2luY2x1ZGUgIkNsaXBib2FyZENocm9taXVtLmgiCiAj
aW5jbHVkZSAiQ2xpcGJvYXJkVXRpbGl0aWVzQ2hyb21pdW0uaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKQEAgLTQxLDcgKzQyLDYgQEAKICNp
bmNsdWRlICJJbWFnZS5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOYXRpdmVJbWFn
ZVNraWEuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN1cHBvcnQuaCIKICNpbmNsdWRlICJSYW5nZS5o
IgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAibWFya3VwLmgiCkBAIC01MSw2
ICs1MSwxMCBAQAogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8
cHVibGljL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNsaXBib2FyZC5oPgorI2lu
Y2x1ZGUgPHB1YmxpYy9XZWJEcmFnRGF0YS5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBh
c3RlYm9hcmQqIFBhc3RlYm9hcmQ6OmdlbmVyYWxQYXN0ZWJvYXJkKCkKQEAgLTkxLDcgKzk1LDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVNlbGVjdGlvbihSYW5nZSogcwogI2VuZGlmCiAgICAg
cmVwbGFjZU5CU1BXaXRoU3BhY2UocGxhaW5UZXh0KTsKIAotICAgIFBsYXRmb3JtU3VwcG9ydDo6
Y2xpcGJvYXJkV3JpdGVTZWxlY3Rpb24oaHRtbCwgdXJsLCBwbGFpblRleHQsIGNhblNtYXJ0Q29w
eU9yRGVsZXRlKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgp
LT53cml0ZUhUTUwoaHRtbCwgdXJsLCBwbGFpblRleHQsIGNhblNtYXJ0Q29weU9yRGVsZXRlKTsK
IH0KIAogdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVBsYWluVGV4dChjb25zdCBTdHJpbmcmIHRleHQp
CkBAIC05OSw5ICsxMDMsOSBAQCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlUGxhaW5UZXh0KGNvbnN0
IFN0CiAjaWYgT1MoV0lORE9XUykKICAgICBTdHJpbmcgcGxhaW5UZXh0KHRleHQpOwogICAgIHJl
cGxhY2VOZXdsaW5lc1dpdGhXaW5kb3dzU3R5bGVOZXdsaW5lcyhwbGFpblRleHQpOwotICAgIFBs
YXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVQbGFpblRleHQocGxhaW5UZXh0KTsKKyAgICBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgpLT53cml0ZVBsYWluVGV4dChw
bGFpblRleHQpOwogI2Vsc2UKLSAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFdyaXRlUGxh
aW5UZXh0KHRleHQpOworICAgIFdlYktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJk
KCktPndyaXRlUGxhaW5UZXh0KHRleHQpOwogI2VuZGlmCiB9CiAKQEAgLTExNiw3ICsxMjAsNyBA
QCB2b2lkIFBhc3RlYm9hcmQ6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVyCiAgICAgICAgICAgICB0
aXRsZSA9IHVybC5ob3N0KCk7CiAgICAgfQogCi0gICAgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9h
cmRXcml0ZVVSTCh1cmwsIHRpdGxlKTsKKyAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCkt
PmNsaXBib2FyZCgpLT53cml0ZVVSTCh1cmwsIHRpdGxlKTsKIH0KIAogdm9pZCBQYXN0ZWJvYXJk
Ojp3cml0ZUltYWdlKE5vZGUqIG5vZGUsIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQpAQCAtMTUxLDQ3ICsxNTUsNTEgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZUltYWdlKE5vZGUq
IG5vZGUsCiAgICAgICAgIHVybFN0cmluZyA9IGVsZW1lbnQtPmdldEF0dHJpYnV0ZShlbGVtZW50
LT5pbWFnZVNvdXJjZUF0dHJpYnV0ZU5hbWUoKSk7CiAgICAgfQogICAgIEtVUkwgdXJsID0gdXJs
U3RyaW5nLmlzRW1wdHkoKSA/IEtVUkwoKSA6IG5vZGUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJM
KHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNlcyh1cmxTdHJpbmcpKTsKLQotICAgIFBs
YXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVJbWFnZShiaXRtYXAsIHVybCwgdGl0bGUpOwor
ICAgIFdlYktpdDo6V2ViSW1hZ2Ugd2ViSW1hZ2UgPSBiaXRtYXAtPmJpdG1hcCgpOworICAgIFdl
YktpdDo6UGxhdGZvcm06OmN1cnJlbnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSW1hZ2Uod2ViSW1h
Z2UsIFdlYktpdDo6V2ViVVJMKHVybCksIFdlYktpdDo6V2ViU3RyaW5nKHRpdGxlKSk7CiB9CiAK
IHZvaWQgUGFzdGVib2FyZDo6d3JpdGVDbGlwYm9hcmQoQ2xpcGJvYXJkKiBjbGlwYm9hcmQpCiB7
Ci0gICAgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRXcml0ZURhdGFPYmplY3QoY2xpcGJvYXJk
KTsKKyAgICBXZWJLaXQ6OldlYkRyYWdEYXRhIGRyYWdEYXRhID0gc3RhdGljX2Nhc3Q8Q2xpcGJv
YXJkQ2hyb21pdW0qPihjbGlwYm9hcmQpLT5kYXRhT2JqZWN0KCk7CisgICAgV2ViS2l0OjpQbGF0
Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVEYXRhT2JqZWN0KGRyYWdEYXRhKTsK
IH0KIAogYm9vbCBQYXN0ZWJvYXJkOjpjYW5TbWFydFJlcGxhY2UoKQogewotICAgIHJldHVybiBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZElzRm9ybWF0QXZhaWxhYmxlKFBhc3RlYm9hcmRQcml2
YXRlOjpXZWJTbWFydFBhc3RlRm9ybWF0LCBtX3NlbGVjdGlvbk1vZGUgPyBQYXN0ZWJvYXJkUHJp
dmF0ZTo6U2VsZWN0aW9uQnVmZmVyIDogUGFzdGVib2FyZFByaXZhdGU6OlN0YW5kYXJkQnVmZmVy
KTsKKyAgICByZXR1cm4gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+
aXNGb3JtYXRBdmFpbGFibGUoV2ViS2l0OjpXZWJDbGlwYm9hcmQ6OkZvcm1hdFNtYXJ0UGFzdGUs
IG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJvYXJkOjpCdWZmZXJTZWxlY3Rpb24g
OiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRhcmQpOwogfQogCiBTdHJpbmcgUGFz
dGVib2FyZDo6cGxhaW5UZXh0KEZyYW1lKiBmcmFtZSkKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1T
dXBwb3J0OjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KG1fc2VsZWN0aW9uTW9kZSA/IFBhc3RlYm9h
cmRQcml2YXRlOjpTZWxlY3Rpb25CdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRC
dWZmZXIpOworICAgIHJldHVybiBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2Fy
ZCgpLT5yZWFkUGxhaW5UZXh0KG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJvYXJk
OjpCdWZmZXJTZWxlY3Rpb24gOiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRhcmQp
OwogfQogCiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IFBhc3RlYm9hcmQ6OmRvY3VtZW50
RnJhZ21lbnQoRnJhbWUqIGZyYW1lLCBQYXNzUmVmUHRyPFJhbmdlPiBjb250ZXh0LCBib29sIGFs
bG93UGxhaW5UZXh0LCBib29sJiBjaG9zZVBsYWluVGV4dCkKIHsKICAgICBjaG9zZVBsYWluVGV4
dCA9IGZhbHNlOwotICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVy
ID0gbV9zZWxlY3Rpb25Nb2RlID8gUGFzdGVib2FyZFByaXZhdGU6OlNlbGVjdGlvbkJ1ZmZlciA6
IFBhc3RlYm9hcmRQcml2YXRlOjpTdGFuZGFyZEJ1ZmZlcjsKKyAgICBXZWJLaXQ6OldlYkNsaXBi
b2FyZDo6QnVmZmVyIGJ1ZmZlciA9IG1fc2VsZWN0aW9uTW9kZSA/IFdlYktpdDo6V2ViQ2xpcGJv
YXJkOjpCdWZmZXJTZWxlY3Rpb24gOiBXZWJLaXQ6OldlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRh
cmQ7CiAKLSAgICBpZiAoUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRJc0Zvcm1hdEF2YWlsYWJs
ZShQYXN0ZWJvYXJkUHJpdmF0ZTo6SFRNTEZvcm1hdCwgYnVmZmVyKSkgewotICAgICAgICBTdHJp
bmcgbWFya3VwOwotICAgICAgICBLVVJMIHNyY1VSTDsKKyAgICBpZiAoV2ViS2l0OjpQbGF0Zm9y
bTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+aXNGb3JtYXRBdmFpbGFibGUoV2ViS2l0OjpXZWJD
bGlwYm9hcmQ6OkZvcm1hdEhUTUwsIGJ1ZmZlcikpIHsKKyAgICAgICAgV2ViS2l0OjpXZWJTdHJp
bmcgbWFya3VwOwogICAgICAgICB1bnNpZ25lZCBmcmFnbWVudFN0YXJ0ID0gMDsKICAgICAgICAg
dW5zaWduZWQgZnJhZ21lbnRFbmQgPSAwOwotICAgICAgICBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBi
b2FyZFJlYWRIVE1MKGJ1ZmZlciwgJm1hcmt1cCwgJnNyY1VSTCwgJmZyYWdtZW50U3RhcnQsICZm
cmFnbWVudEVuZCk7CisgICAgICAgIFdlYktpdDo6V2ViVVJMIHVybDsKKyAgICAgICAgbWFya3Vw
ID0gV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEhUTUwoYnVm
ZmVyLCAmdXJsLCAmZnJhZ21lbnRTdGFydCwgJmZyYWdtZW50RW5kKTsKKworICAgICAgICAKKyAg
ICAgICAgLy8gICAgICAgIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEhUTUwoYnVmZmVy
LCAmbWFya3VwLCAmc3JjVVJMLCAmZnJhZ21lbnRTdGFydCwgJmZyYWdtZW50RW5kKTsKIAogICAg
ICAgICBpZiAoIW1hcmt1cC5pc0VtcHR5KCkpIHsKICAgICAgICAgICBSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQgPQotICAgICAgICAgICAgICBjcmVhdGVGcmFnbWVudEZyb21NYXJr
dXBXaXRoQ29udGV4dChmcmFtZS0+ZG9jdW1lbnQoKSwgbWFya3VwLCBmcmFnbWVudFN0YXJ0LCBm
cmFnbWVudEVuZCwgc3JjVVJMLCBEaXNhbGxvd1NjcmlwdGluZ0NvbnRlbnQpOworICAgICAgICAg
ICAgICBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXBXaXRoQ29udGV4dChmcmFtZS0+ZG9jdW1lbnQo
KSwgbWFya3VwLCBmcmFnbWVudFN0YXJ0LCBmcmFnbWVudEVuZCwgS1VSTCh1cmwpLCBEaXNhbGxv
d1NjcmlwdGluZ0NvbnRlbnQpOwogICAgICAgICAgIGlmIChmcmFnbWVudCkKICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYWdtZW50LnJlbGVhc2UoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlm
IChhbGxvd1BsYWluVGV4dCkgewotICAgICAgICBTdHJpbmcgbWFya3VwID0gUGxhdGZvcm1TdXBw
b3J0OjpjbGlwYm9hcmRSZWFkUGxhaW5UZXh0KGJ1ZmZlcik7CisgICAgICAgIFN0cmluZyBtYXJr
dXAgPSBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNsaXBib2FyZCgpLT5yZWFkUGxhaW5U
ZXh0KGJ1ZmZlcik7CiAgICAgICAgIGlmICghbWFya3VwLmlzRW1wdHkoKSkgewogICAgICAgICAg
ICAgY2hvc2VQbGFpblRleHQgPSB0cnVlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9QYXN0ZWJvYXJkUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQcml2YXRlLmgJKHJldmlzaW9uIDExOTIy
MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1Bhc3RlYm9hcmRQcml2YXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykg
MjAwOCwgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIAotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKiAKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqIAotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFBhc3RlYm9hcmRQ
cml2YXRlX2gKLSNkZWZpbmUgUGFzdGVib2FyZFByaXZhdGVfaAotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLSAgICBjbGFzcyBQYXN0ZWJvYXJkUHJpdmF0ZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIENsaXBib2FyZEZvcm1hdCB7Ci0gICAgICAgICAgICBQbGFpblRleHRGb3JtYXQsCi0g
ICAgICAgICAgICBIVE1MRm9ybWF0LAotICAgICAgICAgICAgQm9va21hcmtGb3JtYXQsCi0gICAg
ICAgICAgICBXZWJTbWFydFBhc3RlRm9ybWF0LAotICAgICAgICB9OwotICAgICAgICBlbnVtIENs
aXBib2FyZEJ1ZmZlciB7Ci0gICAgICAgICAgICBTdGFuZGFyZEJ1ZmZlciwKLSAgICAgICAgICAg
IFNlbGVjdGlvbkJ1ZmZlciwKLSAgICAgICAgICAgIERyYWdCdWZmZXIsCi0gICAgICAgIH07Ci0g
ICAgfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtU3VwcG9ydC5oCShyZXZp
c2lvbiAxMTkyMjMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9y
bVN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkZp
bGVTeXN0ZW0uaCIKICNpbmNsdWRlICJJbWFnZVNvdXJjZS5oIgogI2luY2x1ZGUgIkxpbmtIYXNo
LmgiCi0jaW5jbHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKICNpbmNsdWRlICJQbHVnaW5EYXRh
LmgiCiAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtNjcsNyArNjYsNiBAQCB0eXBlZGVm
IHN0cnVjdCBIRk9OVF9fKiBIRk9OVDsKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQXN5
bmNGaWxlU3lzdGVtOwotY2xhc3MgQ2xpcGJvYXJkOwogY2xhc3MgQ29sb3I7CiBjbGFzcyBDdXJz
b3I7CiBjbGFzcyBEb2N1bWVudDsKQEAgLTk0LDI2ICs5Miw2IEBAIHN0cnVjdCBGb250UmVuZGVy
U3R5bGU7CiAKIGNsYXNzIFBsYXRmb3JtU3VwcG9ydCB7CiBwdWJsaWM6Ci0gICAgLy8gQ2xpcGJv
YXJkIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSAgICBzdGF0aWMgdWludDY0X3QgY2xpcGJvYXJkU2VxdWVuY2VOdW1iZXIoUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7Ci0KLSAgICBzdGF0aWMgYm9vbCBjbGlwYm9h
cmRJc0Zvcm1hdEF2YWlsYWJsZShQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkRm9ybWF0LCBQ
YXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKLSAgICBzdGF0aWMgSGFzaFNldDxT
dHJpbmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xp
cGJvYXJkQnVmZmVyLCBib29sKiBjb250YWluc0ZpbGVuYW1lcyk7Ci0KLSAgICBzdGF0aWMgU3Ry
aW5nIGNsaXBib2FyZFJlYWRQbGFpblRleHQoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1
ZmZlcik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJvYXJkUmVhZEhUTUwoUGFzdGVib2FyZFByaXZh
dGU6OkNsaXBib2FyZEJ1ZmZlciwgU3RyaW5nKiwgS1VSTCosIHVuc2lnbmVkKiBmcmFnbWVudFN0
YXJ0LCB1bnNpZ25lZCogZnJhZ21lbnRFbmQpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4gY2xpcGJvYXJkUmVhZEltYWdlKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRC
dWZmZXIpOwotICAgIHN0YXRpYyBTdHJpbmcgY2xpcGJvYXJkUmVhZEN1c3RvbURhdGEoUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlKTsKLQotICAg
IC8vIE9ubHkgdGhlIGNsaXBib2FyZFJlYWQgZnVuY3Rpb25zIHRha2UgYSBidWZmZXIgYXJndW1l
bnQgYmVjYXVzZQotICAgIC8vIENocm9taXVtIGN1cnJlbnRseSB1c2VzIGEgZGlmZmVyZW50IHRl
Y2huaXF1ZSB0byB3cml0ZSB0byBhbHRlcm5hdGUKLSAgICAvLyBjbGlwYm9hcmQgYnVmZmVycy4K
LSAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRXcml0ZVNlbGVjdGlvbihjb25zdCBTdHJpbmcmLCBj
b25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgYm9vbCk7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJv
YXJkV3JpdGVQbGFpblRleHQoY29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgY2xpcGJv
YXJkV3JpdGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYpOwotICAgIHN0YXRpYyB2b2lk
IGNsaXBib2FyZFdyaXRlSW1hZ2UoTmF0aXZlSW1hZ2VQdHIsIGNvbnN0IEtVUkwmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCBjbGlwYm9hcmRXcml0ZURhdGFPYmplY3QoQ2xpcGJv
YXJkKik7Ci0KICAgICAvLyBDb29raWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIHN0YXRpYyB2b2lkIHNldENvb2tpZXMo
Y29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAg
c3RhdGljIFN0cmluZyBjb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYpOwpJbmRl
eDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTItMDYtMDEgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFtDaHJvbWl1bV0gQ2FsbCBjbGlwYm9hcmQgbWV0aG9kcyBkaXJlY3RseQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODgwMzgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXJ0IG9mIGEgcmVmYWN0b3Jp
bmcgc2VyaWVzLiBTZWUgdHJhY2tpbmcgYnVnIDgyOTQ4LgorCisgICAgICAgICogc3JjL0Fzc2Vy
dE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Z2V0Q29va2llSmFyKToKKwogMjAxMi0wNi0wMSAgUGV0ZXIgQmV2
ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxl
ZCBERVBTLgpJbmRleDogU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0
TWF0Y2hpbmdFbnVtcy5jcHAJKHJldmlzaW9uIDExOTIyMykKKysrIFNvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01OSw3
ICs1OSw2IEBACiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKICNpbmNsdWRlICJOb3Rp
ZmljYXRpb25DbGllbnQuaCIKICNpbmNsdWRlICJQYWdlVmlzaWJpbGl0eVN0YXRlLmgiCi0jaW5j
bHVkZSAiUGFzdGVib2FyZFByaXZhdGUuaCIKICNpbmNsdWRlICJQZWVyQ29ubmVjdGlvbjAwLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1DdXJzb3IuaCIKICNpbmNsdWRlICJSZWZlcnJlclBvbGljeS5o
IgpAQCAtMjY4LDE0ICsyNjcsNiBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFw
cGxpY2F0CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpDYWNoZWRFdmVudCwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCk7CiBD
T01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpPYnNv
bGV0ZUV2ZW50LCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6T0JTT0xFVEVfRVZFTlQpOwogCi1DT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkNsaXBib2FyZDo6Rm9ybWF0UGxhaW5UZXh0LCBQ
YXN0ZWJvYXJkUHJpdmF0ZTo6UGxhaW5UZXh0Rm9ybWF0KTsKLUNPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViQ2xpcGJvYXJkOjpGb3JtYXRIVE1MLCBQYXN0ZWJvYXJkUHJpdmF0ZTo6SFRN
TEZvcm1hdCk7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkNsaXBib2FyZDo6Rm9y
bWF0Qm9va21hcmssIFBhc3RlYm9hcmRQcml2YXRlOjpCb29rbWFya0Zvcm1hdCk7Ci1DT01QSUxF
X0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkNsaXBib2FyZDo6Rm9ybWF0U21hcnRQYXN0ZSwgUGFz
dGVib2FyZFByaXZhdGU6OldlYlNtYXJ0UGFzdGVGb3JtYXQpOwotCi1DT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkNsaXBib2FyZDo6QnVmZmVyU3RhbmRhcmQsIFBhc3RlYm9hcmRQcml2
YXRlOjpTdGFuZGFyZEJ1ZmZlcik7Ci1DT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkNs
aXBib2FyZDo6QnVmZmVyU2VsZWN0aW9uLCBQYXN0ZWJvYXJkUHJpdmF0ZTo6U2VsZWN0aW9uQnVm
ZmVyKTsKLQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJDdXJzb3JJbmZvOjpUeXBl
UG9pbnRlciwgUGxhdGZvcm1DdXJzb3I6OlR5cGVQb2ludGVyKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViQ3Vyc29ySW5mbzo6VHlwZUNyb3NzLCBQbGF0Zm9ybUN1cnNvcjo6VHlw
ZUNyb3NzKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViQ3Vyc29ySW5mbzo6VHlw
ZUhhbmQsIFBsYXRmb3JtQ3Vyc29yOjpUeXBlSGFuZCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9QbGF0Zm9ybVN1cHBvcnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHJldmlzaW9uIDExOTIyMykKKysr
IFNvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtU3VwcG9ydC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgwLDcgKzgwLDYgQEAKIAogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbUNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiQml0bWFwSW1hZ2UuaCIKLSNpbmNsdWRlICJDbGlwYm9hcmRDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCkBAIC05NCw3ICs5Myw2IEBACiAKICNpbmNsdWRlICJXb3JrZXIu
aCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0UHJveHkuaCIKLSNpbmNsdWRlIDxwdWJsaWMvV2Vi
Q2xpcGJvYXJkLmg+CiAjaW5jbHVkZSA8cHVibGljL1dlYkNvb2tpZS5oPgogI2luY2x1ZGUgPHB1
YmxpYy9XZWJDb29raWVKYXIuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViTWltZVJlZ2lzdHJ5Lmg+
CkBAIC0xNDEsOTYgKzEzOSw2IEBAIHN0YXRpYyBXZWJDb29raWVKYXIqIGdldENvb2tpZUphcihj
b25zdAogICAgIHJldHVybiBjb29raWVKYXI7CiB9CiAKLS8vIENsaXBib2FyZCAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotdWludDY0X3QgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRTZXF1ZW5jZU51bWJlcihQYXN0
ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlcikKLXsKLSAgICByZXR1cm4gd2Vi
S2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT5zZXF1ZW5jZU51bWJlcigKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlcikpOwotfQotCi1ib29s
IFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkSXNGb3JtYXRBdmFpbGFibGUoCi0gICAgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEZvcm1hdCBmb3JtYXQsCi0gICAgUGFzdGVib2FyZFByaXZh
dGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIpCi17Ci0gICAgcmV0dXJuIHdlYktpdFBsYXRmb3Jt
U3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+aXNGb3JtYXRBdmFpbGFibGUoCi0gICAgICAgIHN0YXRp
Y19jYXN0PFdlYkNsaXBib2FyZDo6Rm9ybWF0Pihmb3JtYXQpLAotICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSk7Ci19Ci0KLUhhc2hTZXQ8U3RyaW5nPiBQ
bGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcygKLSAgICBQYXN0ZWJv
YXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxlbmFt
ZXMpCi17Ci0gICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVzdWx0ID0gd2ViS2l0UGxhdGZvcm1T
dXBwb3J0KCktPmNsaXBib2FyZCgpLT5yZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgICAgIHN0YXRp
Y19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpLCBjb250YWluc0ZpbGVuYW1lcyk7
Ci0gICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
cmVzdWx0LnNpemUoKTsgKytpKQotICAgICAgICB0eXBlcy5hZGQocmVzdWx0W2ldKTsKLSAgICBy
ZXR1cm4gdHlwZXM7Ci19Ci0KLVN0cmluZyBQbGF0Zm9ybVN1cHBvcnQ6OmNsaXBib2FyZFJlYWRQ
bGFpblRleHQoCi0gICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIp
Ci17Ci0gICAgcmV0dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+cmVh
ZFBsYWluVGV4dCgKLSAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1
ZmZlcikpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEhUTUwoCi0g
ICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsCi0gICAgU3RyaW5n
KiBodG1sVGV4dCwgS1VSTCogc291cmNlVVJMLCB1bnNpZ25lZCogZnJhZ21lbnRTdGFydCwgdW5z
aWduZWQqIGZyYWdtZW50RW5kKQotewotICAgIFdlYlVSTCB1cmw7Ci0gICAgKmh0bWxUZXh0ID0g
d2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT5yZWFkSFRNTCgKLSAgICAgICAg
c3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlciksICZ1cmwsIGZyYWdtZW50
U3RhcnQsIGZyYWdtZW50RW5kKTsKLSAgICAqc291cmNlVVJMID0gdXJsOwotfQotCi1QYXNzUmVm
UHRyPFNoYXJlZEJ1ZmZlcj4gUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRSZWFkSW1hZ2UoCi0g
ICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIpCi17Ci0gICAgcmV0
dXJuIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+cmVhZEltYWdlKHN0YXRp
Y19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpKTsKLX0KLQotU3RyaW5nIFBsYXRm
b3JtU3VwcG9ydDo6Y2xpcGJvYXJkUmVhZEN1c3RvbURhdGEoCi0gICAgUGFzdGVib2FyZFByaXZh
dGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSkKLXsKLSAgICBy
ZXR1cm4gd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2FyZCgpLT5yZWFkQ3VzdG9tRGF0
YShzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgdHlwZSk7Ci19Ci0K
LXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRXcml0ZVNlbGVjdGlvbihjb25zdCBTdHJp
bmcmIGh0bWxUZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgS1VSTCYgc291cmNlVVJMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiBwbGFpblRleHQsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHdyaXRlU21hcnRQYXN0ZSkKLXsKLSAg
ICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlSFRNTCgKLSAgICAg
ICAgaHRtbFRleHQsIHNvdXJjZVVSTCwgcGxhaW5UZXh0LCB3cml0ZVNtYXJ0UGFzdGUpOwotfQot
Ci12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVQbGFpblRleHQoY29uc3QgU3Ry
aW5nJiBwbGFpblRleHQpCi17Ci0gICAgd2ViS2l0UGxhdGZvcm1TdXBwb3J0KCktPmNsaXBib2Fy
ZCgpLT53cml0ZVBsYWluVGV4dChwbGFpblRleHQpOwotfQotCi12b2lkIFBsYXRmb3JtU3VwcG9y
dDo6Y2xpcGJvYXJkV3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxl
KQotewotICAgIHdlYktpdFBsYXRmb3JtU3VwcG9ydCgpLT5jbGlwYm9hcmQoKS0+d3JpdGVVUkwo
dXJsLCB0aXRsZSk7Ci19Ci0KLXZvaWQgUGxhdGZvcm1TdXBwb3J0OjpjbGlwYm9hcmRXcml0ZUlt
YWdlKE5hdGl2ZUltYWdlUHRyIGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBLVVJMJiBzb3VyY2VVUkwsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUpCi17Ci0gICAgV2ViSW1hZ2Ug
d2ViSW1hZ2UoaW1hZ2UtPmJpdG1hcCgpKTsKLSAgICB3ZWJLaXRQbGF0Zm9ybVN1cHBvcnQoKS0+
Y2xpcGJvYXJkKCktPndyaXRlSW1hZ2Uod2ViSW1hZ2UsIHNvdXJjZVVSTCwgdGl0bGUpOwotfQot
Ci12b2lkIFBsYXRmb3JtU3VwcG9ydDo6Y2xpcGJvYXJkV3JpdGVEYXRhT2JqZWN0KENsaXBib2Fy
ZCogY2xpcGJvYXJkKQotewotICAgIFdlYkRyYWdEYXRhIGRhdGEgPSBzdGF0aWNfY2FzdDxDbGlw
Ym9hcmRDaHJvbWl1bSo+KGNsaXBib2FyZCktPmRhdGFPYmplY3QoKTsKLSAgICB3ZWJLaXRQbGF0
Zm9ybVN1cHBvcnQoKS0+Y2xpcGJvYXJkKCktPndyaXRlRGF0YU9iamVjdChkYXRhKTsKLX0KLQog
Ly8gQ29va2llcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIFBsYXRmb3JtU3VwcG9ydDo6c2V0Q29va2ll
cyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwK
</data>

          </attachment>
      

    </bug>

</bugzilla>