<?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>108909</bug_id>
          
          <creation_ts>2013-02-04 22:48:35 -0800</creation_ts>
          <short_desc>[V8] Reduce usage of deprecatedString() and deprecatedInteger()</short_desc>
          <delta_ts>2013-02-05 16:02:30 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dgrogan</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>825154</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 22:48:35 -0800</bug_when>
    <thetext>[V8] Reduce usage of deprecatedString() and deprecatedInteger().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825155</commentid>
    <comment_count>1</comment_count>
      <attachid>186551</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-04 22:50:54 -0800</bug_when>
    <thetext>Created attachment 186551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825208</commentid>
    <comment_count>2</comment_count>
      <attachid>186551</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 00:22:04 -0800</bug_when>
    <thetext>Comment on attachment 186551
Patch

Clearing flags on attachment: 186551

Committed r141865: &lt;http://trac.webkit.org/changeset/141865&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825209</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-05 00:22:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825305</commentid>
    <comment_count>4</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-05 02:27:50 -0800</bug_when>
    <thetext>Reverted r141865 for reason:

webkit unit tests are broken

Committed r141879: &lt;http://trac.webkit.org/changeset/141879&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825909</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-05 16:02:30 -0800</bug_when>
    <thetext>Committed r141946: &lt;http://trac.webkit.org/changeset/141946&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186551</attachid>
            <date>2013-02-04 22:50:54 -0800</date>
            <delta_ts>2013-02-05 00:22:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108909-20130205154733.patch</filename>
            <type>text/plain</type>
            <size>42531</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QwMjA4NzgzOTIxMmQ0
Y2MyZTcxNGQ4Nzk1YmMzYTVhY2YyOTFkYy4uNzY0MGQzYzU4YWNjYWJiODAwZDE5NmQyOWQxNzc5
MWVhNGE0MTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY5IEBACisyMDEzLTAyLTA0ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlZHVjZSB1
c2FnZSBvZiBkZXByZWNhdGVkU3RyaW5nKCkgYW5kIGRlcHJlY2F0ZWRJbnRlZ2VyKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODkwOQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ5IHBhc3NpbmcgYW4g
SXNvbGF0ZSBwYXJhbWV0ZXIgYXJvdW5kLCB3ZSBjYW4gcmVkdWNlIHVzYWdlIG9mCisgICAgICAg
IGRlcHJlY2F0ZWQgbWV0aG9kcy4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06
CisgICAgICAgIChHZW5lcmF0ZU5vcm1hbEF0dHJTZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVF
dmVudExpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0RXZlbnRUYXJn
ZXRWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNr
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnJlbW92ZUV2ZW50TGlz
dGVuZXJDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGll
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXQpOgorICAgICAgICAoV2ViQ29yZTo6c2V0KToK
KyAgICAgICAgKFdlYkNvcmU6OmdldE50aFZhbHVlT25LZXlQYXRoKToKKyAgICAgICAgKFdlYkNv
cmU6OmNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmVuc3Vy
ZU50aFZhbHVlT25LZXlQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUlEQktleUZyb21T
Y3JpcHRWYWx1ZUFuZEtleVBhdGgpOgorICAgICAgICAoV2ViQ29yZTo6aW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhbkluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVWYWx1ZUxpc3RGcm9tVmFyaWFudEFyZ3MpOgorICAgICAgICAoX05Q
Tl9JbnZva2UpOgorICAgICAgICAoX05QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKF9OUE5f
U2V0UHJvcGVydHkpOgorICAgICAgICAoX05QTl9Db25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29u
dHJvbGxlcjo6Y29tcGlsZUFuZFJ1blNjcmlwdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2Ny
aXB0UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRQcm9maWxlcjo6dGFrZUhlYXBTbmFwc2hvdCk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
U2NyaXB0U291cmNlQ29kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2Rl
Ojpjb21waWxlU2NyaXB0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRTb3VyY2VDb2Rl
Lmg6CisgICAgICAgIChTY3JpcHRTb3VyY2VDb2RlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OExhenlFdmVudExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TGF6eUV2ZW50TGlz
dGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhO
UE9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpucE9iamVjdEludm9rZUltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6bnBPYmplY3RHZXRQcm9wZXJ0eSk6CisgICAgICAgICogYmluZGluZ3Mv
djgvVjhOUFV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnROUFZhcmlhbnRUb1Y4
T2JqZWN0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE5QVXRpbHMuaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kpOgorICAgICAgICAoV2ViQ29yZTo6cmVt
b3ZlSGlkZGVuRGVwZW5kZW5jeSk6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2ZlckhpZGRlbkRl
cGVuZGVuY3kpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmg6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxi
YWNrKToKKwogMjAxMy0wMi0wNCAgQ2hyaXMgSG9wbWFuICA8Y2pob3BtYW5AY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIE1ha2UgbW92ZUNhcmV0VG93YXJkc1dpbmRvd1BvaW50IG5vdCBzbmFwIHRv
IHRoZSBiZWdpbm5pbmcvZW5kIHdoZW4gbW92ZWQgYWJvdmUvYmVsb3cgZWRpdGFibGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGI2ZDIyMGE5MTIwMzMzODQxMDEwNTMyZWQxNzY2ZDI2
Mzg2NDBmMi4uODFlZmU3ODMzMGExMGIzYTUxZjFiNzNjYTM1YWE2YzY1NmZjMTg4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0wNCAgS2VudGFy
byBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBSZWR1Y2UgdXNh
Z2Ugb2YgZGVwcmVjYXRlZFN0cmluZygpIGFuZCBkZXByZWNhdGVkSW50ZWdlcigpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg5MDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogc3JjL1dlYkJpbmRpbmdzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViQmluZGluZ3M6OnRvVjhWYWx1ZSk6CisKIDIwMTMtMDItMDQgIENocmlz
IEhvcG1hbiAgPGNqaG9wbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBNYWtlIG1vdmVDYXJl
dFRvd2FyZHNXaW5kb3dQb2ludCBub3Qgc25hcCB0byB0aGUgYmVnaW5uaW5nL2VuZCB3aGVuIG1v
dmVkIGFib3ZlL2JlbG93IGVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IGZkY2YyODNhYzk3NjhhM2I4YWI3ODdk
ZjE0MWFhNGVmODdkNWJhNmUuLjI0YTU3ZWU3MGMwYzI3MzA5YTc0NjQzMzIxODdlNzMxMzY5NjQ1
MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvclY4LnBtCkBAIC0xMjczLDcgKzEyNzMsNyBAQCBFTkQKICAgICAgICAgICAgIG15ICRpbXBs
U2V0dGVyRnVuY3Rpb25OYW1lID0gJGNvZGVHZW5lcmF0b3ItPldLX3VjZmlyc3QoJGF0dHJOYW1l
KTsKICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJWOEFic3RyYWN0RXZlbnRMaXN0ZW5l
ci5oIik7CiAgICAgICAgICAgICBpZiAoISRjb2RlR2VuZXJhdG9yLT5Jbmhlcml0c0ludGVyZmFj
ZSgkaW50ZXJmYWNlLCAiTm9kZSIpKSB7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnREZWNscywgIiAgICB0cmFuc2ZlckhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgaW1w
LT4kYXR0ck5hbWUoKSwgdmFsdWUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZXZlbnRMaXN0ZW5lckNh
Y2hlSW5kZXgpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnREZWNscywg
IiAgICB0cmFuc2ZlckhpZGRlbkRlcGVuZGVuY3koaW5mby5Ib2xkZXIoKSwgaW1wLT4kYXR0ck5h
bWUoKSwgdmFsdWUsICR7djhJbnRlcmZhY2VOYW1lfTo6ZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgs
IGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQWRk
VG9JbXBsSW5jbHVkZXMoIlY4RXZlbnRMaXN0ZW5lckxpc3QuaCIpOwogICAgICAgICAgICAgaWYg
KCRpbnRlcmZhY2VOYW1lIGVxICJXb3JrZXJDb250ZXh0IiBhbmQgJGF0dHJpYnV0ZS0+c2lnbmF0
dXJlLT5uYW1lIGVxICJvbmVycm9yIikgewpAQCAtMTM3NSw3ICsxMzc1LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmN0aW9uTmFtZX1FdmVudExpc3RlbmVyQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3UKIEVORAogICAgIGlmICgkcmVxdWlyZXNIaWRkZW5EZXBlbmRlbmN5KSB7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLSAgICAgICAgJHtoaWRk
ZW5EZXBlbmRlbmN5QWN0aW9ufUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sx
XSwgVjgke2ludGVyZmFjZU5hbWV9OjpldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgICAg
ICR7aGlkZGVuRGVwZW5kZW5jeUFjdGlvbn1IaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCks
IGFyZ3NbMV0sIFY4JHtpbnRlcmZhY2VOYW1lfTo6ZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgsIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIEVORAogICAgIH0KICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCA8PEVORCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCA3NjhiMWE3Mjg1OTQ4NmZh
MGQxOGNmZTExNTMwMmQwZjEzMDdlN2M4Li5lZmEzNjcyY2VlZmQ2ZjJhMTI2ZTE4NDhmY2JlNTky
Mzg0MmIyNmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTg5LDcgKzg5LDcgQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAobGlzdGVuZXIpIHsKICAgICAgICAgVjhU
UllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291cmNlPFdpdGhOdWxsQ2hl
Y2s+LCBzdHJpbmdSZXNvdXJjZSwgYXJnc1swXSk7CiAgICAgICAgIFY4VGVzdEV2ZW50VGFyZ2V0
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKS0+YWRkRXZlbnRMaXN0ZW5lcihzdHJpbmdSZXNvdXJj
ZSwgbGlzdGVuZXIsIGFyZ3NbMl0tPkJvb2xlYW5WYWx1ZSgpKTsKLSAgICAgICAgY3JlYXRlSGlk
ZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBWOFRlc3RFdmVudFRhcmdldDo6
ZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5
KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4VGVzdEV2ZW50VGFyZ2V0OjpldmVudExpc3RlbmVy
Q2FjaGVJbmRleCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgog
ICAgIGlmIChsaXN0ZW5lcikgewogICAgICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09V
UkNFKFY4U3RyaW5nUmVzb3VyY2U8V2l0aE51bGxDaGVjaz4sIHN0cmluZ1Jlc291cmNlLCBhcmdz
WzBdKTsKICAgICAgICAgVjhUZXN0RXZlbnRUYXJnZXQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
LT5yZW1vdmVFdmVudExpc3RlbmVyKHN0cmluZ1Jlc291cmNlLCBsaXN0ZW5lci5nZXQoKSwgYXJn
c1syXS0+Qm9vbGVhblZhbHVlKCkpOwotICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFy
Z3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4VGVzdEV2ZW50VGFyZ2V0OjpldmVudExpc3RlbmVyQ2Fj
aGVJbmRleCk7CisgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwg
YXJnc1sxXSwgVjhUZXN0RXZlbnRUYXJnZXQ6OmV2ZW50TGlzdGVuZXJDYWNoZUluZGV4LCBhcmdz
LkdldElzb2xhdGUoKSk7CiAgICAgfQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcAppbmRleCBkMjZmYzM2ZjIyMjhkOGU5MzQ1MzUxNTE0MDQ3ODVhOTJmMmFhNTUzLi41NmY1
Nzc3ZjBhYThmOTViNTgwOGNjNDZkMGYxYzUxNWMyNGU4OGY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTEx
NCw3ICsxMTE0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRFdmVudExpc3Rl
bmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAobGlzdGVuZXIp
IHsKICAgICAgICAgVjhUUllDQVRDSF9GT1JfVjhTVFJJTkdSRVNPVVJDRShWOFN0cmluZ1Jlc291
cmNlPFdpdGhOdWxsQ2hlY2s+LCBzdHJpbmdSZXNvdXJjZSwgYXJnc1swXSk7CiAgICAgICAgIFY4
VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSktPmFkZEV2ZW50TGlzdGVuZXIoc3RyaW5n
UmVzb3VyY2UsIGxpc3RlbmVyLCBhcmdzWzJdLT5Cb29sZWFuVmFsdWUoKSk7Ci0gICAgICAgIGNy
ZWF0ZUhpZGRlbkRlcGVuZGVuY3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhUZXN0T2JqOjpl
dmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3ko
YXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgVjhUZXN0T2JqOjpldmVudExpc3RlbmVyQ2FjaGVJbmRl
eCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IH0KQEAgLTExMjUsNyArMTEyNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVt
b3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyCiAgICAgaWYg
KGxpc3RlbmVyKSB7CiAgICAgICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhT
dHJpbmdSZXNvdXJjZTxXaXRoTnVsbENoZWNrPiwgc3RyaW5nUmVzb3VyY2UsIGFyZ3NbMF0pOwog
ICAgICAgICBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpLT5yZW1vdmVFdmVudExp
c3RlbmVyKHN0cmluZ1Jlc291cmNlLCBsaXN0ZW5lci5nZXQoKSwgYXJnc1syXS0+Qm9vbGVhblZh
bHVlKCkpOwotICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFy
Z3NbMV0sIFY4VGVzdE9iajo6ZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgpOworICAgICAgICByZW1v
dmVIaWRkZW5EZXBlbmRlbmN5KGFyZ3MuSG9sZGVyKCksIGFyZ3NbMV0sIFY4VGVzdE9iajo6ZXZl
bnRMaXN0ZW5lckNhY2hlSW5kZXgsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICB9CiAgICAgcmV0
dXJuIHY4VW5kZWZpbmVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0lEQkJpbmRpbmdVdGlsaXRpZXMuY3BwCmluZGV4IGNmMWEzOGY0ODllNzMzNWJiMjZiZDYwNzI2
YjZlNWQyM2MzOGY1YWQuLjhmZDM3MzFlOWRhNTExNzRiYmUwMGI5YjU3YTljNjQzY2JlOTE4OGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0lEQkJpbmRpbmdVdGlsaXRp
ZXMuY3BwCkBAIC0xMzMsMTQgKzEzMywxNCBAQCBzdGF0aWMgYm9vbCBzZXRWYWx1ZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4mIHY4T2JqZWN0LCBUIGluZGV4T3JOYW1lLCBjb25zdCB2ODo6SAogICAg
IHJldHVybiBvYmplY3QtPlNldChpbmRleE9yTmFtZSwgdjhWYWx1ZSk7CiB9CiAKLXN0YXRpYyBi
b29sIGdldCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIG9iamVjdCwgY29uc3QgU3RyaW5nJiBrZXlQ
YXRoRWxlbWVudCwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiByZXN1bHQpCitzdGF0aWMgYm9vbCBn
ZXQodjg6OkhhbmRsZTx2ODo6VmFsdWU+JiBvYmplY3QsIGNvbnN0IFN0cmluZyYga2V5UGF0aEVs
ZW1lbnQsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcmVzdWx0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSkKIHsKICAgICBpZiAob2JqZWN0LT5Jc1N0cmluZygpICYmIGtleVBhdGhFbGVtZW50ID09ICJs
ZW5ndGgiKSB7CiAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gdjg6OkhhbmRsZTx2ODo6U3RyaW5n
Pjo6Q2FzdChvYmplY3QpLT5MZW5ndGgoKTsKICAgICAgICAgcmVzdWx0ID0gdjg6Ok51bWJlcjo6
TmV3KGxlbmd0aCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gb2Jq
ZWN0LT5Jc09iamVjdCgpICYmIGdldFZhbHVlRnJvbShkZXByZWNhdGVkVjhTdHJpbmcoa2V5UGF0
aEVsZW1lbnQpLCByZXN1bHQpOworICAgIHJldHVybiBvYmplY3QtPklzT2JqZWN0KCkgJiYgZ2V0
VmFsdWVGcm9tKHY4U3RyaW5nKGtleVBhdGhFbGVtZW50LCBpc29sYXRlKSwgcmVzdWx0KTsKIH0K
IAogc3RhdGljIGJvb2wgY2FuU2V0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgb2JqZWN0LCBjb25z
dCBTdHJpbmcmIGtleVBhdGhFbGVtZW50KQpAQCAtMTQ4LDI1ICsxNDgsMjUgQEAgc3RhdGljIGJv
b2wgY2FuU2V0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgb2JqZWN0LCBjb25zdCBTdHJpbmcmIGtl
eVBhdGhFbGVtZW50KQogICAgIHJldHVybiBvYmplY3QtPklzT2JqZWN0KCk7CiB9CiAKLXN0YXRp
YyBib29sIHNldCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIG9iamVjdCwgY29uc3QgU3RyaW5nJiBr
ZXlQYXRoRWxlbWVudCwgY29uc3Qgdjg6OkhhbmRsZTx2ODo6VmFsdWU+JiB2OFZhbHVlKQorc3Rh
dGljIGJvb2wgc2V0KHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgb2JqZWN0LCBjb25zdCBTdHJpbmcm
IGtleVBhdGhFbGVtZW50LCBjb25zdCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHY4VmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBjYW5TZXQob2JqZWN0LCBrZXlQYXRo
RWxlbWVudCkgJiYgc2V0VmFsdWUob2JqZWN0LCBkZXByZWNhdGVkVjhTdHJpbmcoa2V5UGF0aEVs
ZW1lbnQpLCB2OFZhbHVlKTsKKyAgICByZXR1cm4gY2FuU2V0KG9iamVjdCwga2V5UGF0aEVsZW1l
bnQpICYmIHNldFZhbHVlKG9iamVjdCwgdjhTdHJpbmcoa2V5UGF0aEVsZW1lbnQsIGlzb2xhdGUp
LCB2OFZhbHVlKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnZXROdGhWYWx1
ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4mIHJvb3RWYWx1ZSwgY29uc3QgVmVjdG9y
PFN0cmluZz4mIGtleVBhdGhFbGVtZW50cywgc2l6ZV90IGluZGV4KQorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBnZXROdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4m
IHJvb3RWYWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGhFbGVtZW50cywgc2l6ZV90
IGluZGV4LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gY3VycmVudFZhbHVlKHJvb3RWYWx1ZSk7CiAgICAgQVNTRVJUKGluZGV4IDw9IGtleVBhdGhF
bGVtZW50cy5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5kZXg7ICsraSkg
ewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50VmFsdWUoY3VycmVudFZhbHVl
KTsKLSAgICAgICAgaWYgKCFnZXQocGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50c1tpXSwgY3Vy
cmVudFZhbHVlKSkKKyAgICAgICAgaWYgKCFnZXQocGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50
c1tpXSwgY3VycmVudFZhbHVlLCBpc29sYXRlKSkKICAgICAgICAgICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogICAgIH0KIAogICAgIHJldHVybiBjdXJyZW50VmFsdWU7CiB9CiAKLXN0YXRpYyBi
b29sIGNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9v
dFZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0aEVsZW1lbnRzLCBzaXplX3QgaW5k
ZXgpCitzdGF0aWMgYm9vbCBjYW5JbmplY3ROdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4mIHJvb3RWYWx1ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGtleVBhdGhFbGVtZW50
cywgc2l6ZV90IGluZGV4LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAoIXJvb3RW
YWx1ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc3LDE0ICsxNzcs
MTQgQEAgc3RhdGljIGJvb2wgY2FuSW5qZWN0TnRoVmFsdWVPbktleVBhdGgodjg6OkhhbmRsZTx2
ODo6VmFsdWU+JiByb290VmFsdWUsIGNvbnN0IFYKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGluZGV4OyArK2kpIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBhcmVudFZhbHVl
KGN1cnJlbnRWYWx1ZSk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYga2V5UGF0aEVsZW1lbnQgPSBr
ZXlQYXRoRWxlbWVudHNbaV07Ci0gICAgICAgIGlmICghZ2V0KHBhcmVudFZhbHVlLCBrZXlQYXRo
RWxlbWVudCwgY3VycmVudFZhbHVlKSkKKyAgICAgICAgaWYgKCFnZXQocGFyZW50VmFsdWUsIGtl
eVBhdGhFbGVtZW50LCBjdXJyZW50VmFsdWUsIGlzb2xhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IGNhblNldChwYXJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnQpOwogICAgIH0KICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZhbHVl
T25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVlPiYgcm9vdFZhbHVlLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYga2V5UGF0aEVsZW1lbnRzLCBzaXplX3QgaW5kZXgpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGVuc3VyZU50aFZhbHVlT25LZXlQYXRoKHY4OjpIYW5kbGU8djg6OlZhbHVl
PiYgcm9vdFZhbHVlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYga2V5UGF0aEVsZW1lbnRzLCBzaXpl
X3QgaW5kZXgsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBjdXJyZW50VmFsdWUocm9vdFZhbHVlKTsKIApAQCAtMTkyLDkgKzE5Miw5IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5zdXJlTnRoVmFsdWVPbktleVBhdGgodjg6OkhhbmRs
ZTx2ODo6VmFsdWU+JiByb290CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmRleDsgKytp
KSB7CiAgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwYXJlbnRWYWx1ZShjdXJyZW50VmFs
dWUpOwogICAgICAgICBjb25zdCBTdHJpbmcmIGtleVBhdGhFbGVtZW50ID0ga2V5UGF0aEVsZW1l
bnRzW2ldOwotICAgICAgICBpZiAoIWdldChwYXJlbnRWYWx1ZSwga2V5UGF0aEVsZW1lbnQsIGN1
cnJlbnRWYWx1ZSkpIHsKKyAgICAgICAgaWYgKCFnZXQocGFyZW50VmFsdWUsIGtleVBhdGhFbGVt
ZW50LCBjdXJyZW50VmFsdWUsIGlzb2xhdGUpKSB7CiAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpPYmplY3Q6Ok5ldygpOwotICAgICAgICAgICAgaWYgKCFz
ZXQocGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50LCBvYmplY3QpKQorICAgICAgICAgICAgaWYg
KCFzZXQocGFyZW50VmFsdWUsIGtleVBhdGhFbGVtZW50LCBvYmplY3QsIGlzb2xhdGUpKQogICAg
ICAgICAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogICAgICAgICAgICAgY3VycmVudFZh
bHVlID0gb2JqZWN0OwogICAgICAgICB9CkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBlbnN1cmVOdGhWYWx1ZU9uS2V5UGF0aCh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4mIHJvb3QKICAgICByZXR1cm4gY3VycmVudFZhbHVlOwogfQogCi1zdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoY29uc3Qg
U2NyaXB0VmFsdWUmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGtleVBhdGgsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewogICAgIFZlY3RvcjxTdHJpbmc+IGtleVBhdGhFbGVtZW50czsKICAgICBJREJL
ZXlQYXRoUGFyc2VFcnJvciBlcnJvcjsKQEAgLTIxMywyNSArMjEzLDI2IEBAIHN0YXRpYyBQYXNz
UmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChjb25z
dCBTY3JpcHRWYWx1CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUudjhWYWx1ZSgpKTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdjhLZXkoZ2V0TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0
aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVudHMuc2l6ZSgpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHY4S2V5KGdldE50aFZhbHVlT25LZXlQYXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50
cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSwgaXNvbGF0ZSkpOwogICAgIGlmICh2OEtleS5Jc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tVmFs
dWUodjhLZXkpOwogfQogCi1QYXNzUmVmUHRyPElEQktleT4gY3JlYXRlSURCS2V5RnJvbVNjcmlw
dFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYgdmFs
dWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCitQYXNzUmVmUHRyPElEQktleT4gY3JlYXRl
SURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aChET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBj
b25zdCBTY3JpcHRWYWx1ZSYgdmFsdWUsIGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAg
ICAgSURCX1RSQUNFKCJjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFsdWVBbmRLZXlQYXRoIik7CiAg
ICAgQVNTRVJUKCFrZXlQYXRoLmlzTnVsbCgpKTsKICAgICBBU1NFUlQodjg6OkNvbnRleHQ6Oklu
Q29udGV4dCgpKTsKIAogCisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBzdGF0ZS0+Y29udGV4
dCgpLT5HZXRJc29sYXRlKCk7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAg
IGlmIChrZXlQYXRoLnR5cGUoKSA9PSBJREJLZXlQYXRoOjpBcnJheVR5cGUpIHsKICAgICAgICAg
SURCS2V5OjpLZXlBcnJheSByZXN1bHQ7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBh
cnJheSA9IGtleVBhdGguYXJyYXkoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBh
cnJheS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gY3Jl
YXRlSURCS2V5RnJvbVNjcmlwdFZhbHVlQW5kS2V5UGF0aCh2YWx1ZSwgYXJyYXlbaV0pOworICAg
ICAgICAgICAgUmVmUHRyPElEQktleT4ga2V5ID0gY3JlYXRlSURCS2V5RnJvbVNjcmlwdFZhbHVl
QW5kS2V5UGF0aCh2YWx1ZSwgYXJyYXlbaV0sIGlzb2xhdGUpOwogICAgICAgICAgICAgaWYgKCFr
ZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5k
KGtleSk7CkBAIC0yNDAsNyArMjQxLDcgQEAgUGFzc1JlZlB0cjxJREJLZXk+IGNyZWF0ZUlEQktl
eUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QKICAgICB9
CiAKICAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURCS2V5UGF0aDo6U3RyaW5nVHlwZSk7
Ci0gICAgcmV0dXJuIGNyZWF0ZUlEQktleUZyb21TY3JpcHRWYWx1ZUFuZEtleVBhdGgodmFsdWUs
IGtleVBhdGguc3RyaW5nKCkpOworICAgIHJldHVybiBjcmVhdGVJREJLZXlGcm9tU2NyaXB0VmFs
dWVBbmRLZXlQYXRoKHZhbHVlLCBrZXlQYXRoLnN0cmluZygpLCBpc29sYXRlKTsKIH0KIAogU2Ny
aXB0VmFsdWUgZGVzZXJpYWxpemVJREJWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJwVmFsdWUpCkBAIC0yNjcsMTkgKzI2OCwy
MCBAQCBib29sIGluamVjdElEQktleUludG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHN0
YXRlLCBQYXNzUmVmUHRyPElEQktleT4ga2V5LAogICAgIGlmICgha2V5UGF0aEVsZW1lbnRzLnNp
emUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHN0
YXRlLT5jb250ZXh0KCktPkdldElzb2xhdGUoKTsKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4VmFsdWUodmFsdWUudjhWYWx1ZSgp
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQ
YXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEp
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcGFyZW50KGVuc3VyZU50aFZhbHVlT25LZXlQ
YXRoKHY4VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEs
IGlzb2xhdGUpKTsKICAgICBpZiAocGFyZW50LklzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgaWYgKCFzZXQocGFyZW50LCBrZXlQYXRoRWxlbWVudHMubGFzdCgpLCBpZGJL
ZXlUb1Y4VmFsdWUoa2V5LmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHN0YXRlLT5j
b250ZXh0KCktPkdldElzb2xhdGUoKSkpKQorICAgIGlmICghc2V0KHBhcmVudCwga2V5UGF0aEVs
ZW1lbnRzLmxhc3QoKSwgaWRiS2V5VG9WOFZhbHVlKGtleS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpLCBpc29sYXRlKSwgaXNvbGF0ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1ib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShET01SZXF1ZXN0U3RhdGUqLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUsIGNvbnN0
IElEQktleVBhdGgmIGtleVBhdGgpCitib29sIGNhbkluamVjdElEQktleUludG9TY3JpcHRWYWx1
ZShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBjb25zdCBTY3JpcHRWYWx1ZSYgc2NyaXB0VmFsdWUs
IGNvbnN0IElEQktleVBhdGgmIGtleVBhdGgpCiB7CiAgICAgSURCX1RSQUNFKCJjYW5JbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUiKTsKICAgICBBU1NFUlQoa2V5UGF0aC50eXBlKCkgPT0gSURC
S2V5UGF0aDo6U3RyaW5nVHlwZSk7CkBAIC0yOTIsNyArMjk0LDcgQEAgYm9vbCBjYW5JbmplY3RJ
REJLZXlJbnRvU2NyaXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiwgY29uc3QgU2NyaXB0VmFsdWUm
IHNjcmlwdFYKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHY4VmFsdWUoc2NyaXB0VmFsdWUudjhWYWx1ZSgpKTsKLSAgICByZXR1cm4gY2FuSW5qZWN0
TnRoVmFsdWVPbktleVBhdGgodjhWYWx1ZSwga2V5UGF0aEVsZW1lbnRzLCBrZXlQYXRoRWxlbWVu
dHMuc2l6ZSgpIC0gMSk7CisgICAgcmV0dXJuIGNhbkluamVjdE50aFZhbHVlT25LZXlQYXRoKHY4
VmFsdWUsIGtleVBhdGhFbGVtZW50cywga2V5UGF0aEVsZW1lbnRzLnNpemUoKSAtIDEsIHN0YXRl
LT5jb250ZXh0KCktPkdldElzb2xhdGUoKSk7CiB9CiAKIFNjcmlwdFZhbHVlIGlkYktleVRvU2Ny
aXB0VmFsdWUoRE9NUmVxdWVzdFN0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0cjxJREJLZXk+IGtleSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L05QVjhPYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVjdC5jcHAKaW5kZXggYWZlMmY2MjBk
Zjk3MjVjZGNjNzAyNDk1ZDc2ZDQ2NGUwYWEyYmJmNC4uZWI4MTE0NDRhODEzNGFhZTUyM2Y5NTU2
NTBmNjQ1YTU3OTNjY2EzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
TlBWOE9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvTlBWOE9iamVj
dC5jcHAKQEAgLTk3LDEyICs5NywxMiBAQCBzdGF0aWMgdm9pZCBmcmVlVjhOUE9iamVjdChOUE9i
amVjdCogbnBPYmplY3QpCiAgICAgZnJlZSh2OE5wT2JqZWN0KTsKIH0KIAotc3RhdGljIFBhc3NP
d25BcnJheVB0cjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gPiBjcmVhdGVWYWx1ZUxpc3RGcm9tVmFy
aWFudEFyZ3MoY29uc3QgTlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbnQzMl90IGFyZ3VtZW50Q291
bnQsIE5QT2JqZWN0KiBvd25lcikKK3N0YXRpYyBQYXNzT3duQXJyYXlQdHI8djg6OkhhbmRsZTx2
ODo6VmFsdWU+ID4gY3JlYXRlVmFsdWVMaXN0RnJvbVZhcmlhbnRBcmdzKGNvbnN0IE5QVmFyaWFu
dCogYXJndW1lbnRzLCB1aW50MzJfdCBhcmd1bWVudENvdW50LCBOUE9iamVjdCogb3duZXIsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZh
bHVlPiA+IGFyZ3YgPSBhZG9wdEFycmF5UHRyKG5ldyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT5bYXJn
dW1lbnRDb3VudF0pOwogICAgIGZvciAodWludDMyX3QgaW5kZXggPSAwOyBpbmRleCA8IGFyZ3Vt
ZW50Q291bnQ7IGluZGV4KyspIHsKICAgICAgICAgY29uc3QgTlBWYXJpYW50KiBhcmcgPSAmYXJn
dW1lbnRzW2luZGV4XTsKLSAgICAgICAgYXJndltpbmRleF0gPSBjb252ZXJ0TlBWYXJpYW50VG9W
OE9iamVjdChhcmcsIG93bmVyKTsKKyAgICAgICAgYXJndltpbmRleF0gPSBjb252ZXJ0TlBWYXJp
YW50VG9WOE9iamVjdChhcmcsIG93bmVyLCBpc29sYXRlKTsKICAgICB9CiAgICAgcmV0dXJuIGFy
Z3YucmVsZWFzZSgpOwogfQpAQCAtMTgyLDYgKzE4Miw4IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQ
IG5wcCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3Qg
TlBWCiAgICAgaWYgKCFucE9iamVjdCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgdjg6
Oklzb2xhdGUqIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOworCiAgICAgaWYg
KG5wT2JqZWN0LT5fY2xhc3MgIT0gbnBTY3JpcHRPYmplY3RDbGFzcykgewogICAgICAgICBpZiAo
bnBPYmplY3QtPl9jbGFzcy0+aW52b2tlKQogICAgICAgICAgICAgcmV0dXJuIG5wT2JqZWN0LT5f
Y2xhc3MtPmludm9rZShucE9iamVjdCwgbWV0aG9kTmFtZSwgYXJndW1lbnRzLCBhcmd1bWVudENv
dW50LCByZXN1bHQpOwpAQCAtMjI4LDcgKzIzMCw3IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5w
cCwgTlBPYmplY3QqIG5wT2JqZWN0LCBOUElkZW50aWZpZXIgbWV0aG9kTmFtZSwgY29uc3QgTlBW
CiAKICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+IGZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KGZ1bmN0
aW9uT2JqZWN0KTsKLSAgICBPd25BcnJheVB0cjx2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gPiBhcmd2
ID0gY3JlYXRlVmFsdWVMaXN0RnJvbVZhcmlhbnRBcmdzKGFyZ3VtZW50cywgYXJndW1lbnRDb3Vu
dCwgbnBPYmplY3QpOworICAgIE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFy
Z3YgPSBjcmVhdGVWYWx1ZUxpc3RGcm9tVmFyaWFudEFyZ3MoYXJndW1lbnRzLCBhcmd1bWVudENv
dW50LCBucE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcmVzdWx0
T2JqZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5jYWxsRnVuY3Rpb24oZnVuY3Rpb24sIHY4TnBPYmpl
Y3QtPnY4T2JqZWN0LCBhcmd1bWVudENvdW50LCBhcmd2LmdldCgpKTsKIAogICAgIC8vIElmIHdl
IGhhZCBhbiBlcnJvciwgcmV0dXJuIGZhbHNlLiAgVGhlIHNwZWMgaXMgYSBsaXR0bGUgdW5jbGVh
ciBoZXJlLCBidXQgc2F5cyAiUmV0dXJucyB0cnVlIGlmIHRoZSBtZXRob2Qgd2FzCkBAIC0yNDYs
NiArMjQ4LDggQEAgYm9vbCBfTlBOX0ludm9rZURlZmF1bHQoTlBQIG5wcCwgTlBPYmplY3QqIG5w
T2JqZWN0LCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywKICAgICBpZiAoIW5wT2JqZWN0KQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4OjpJ
c29sYXRlOjpHZXRDdXJyZW50KCk7CisKICAgICBpZiAobnBPYmplY3QtPl9jbGFzcyAhPSBucFNj
cmlwdE9iamVjdENsYXNzKSB7CiAgICAgICAgIGlmIChucE9iamVjdC0+X2NsYXNzLT5pbnZva2VE
ZWZhdWx0KQogICAgICAgICAgICAgcmV0dXJuIG5wT2JqZWN0LT5fY2xhc3MtPmludm9rZURlZmF1
bHQobnBPYmplY3QsIGFyZ3VtZW50cywgYXJndW1lbnRDb3VudCwgcmVzdWx0KTsKQEAgLTI3Nyw3
ICsyODEsNyBAQCBib29sIF9OUE5fSW52b2tlRGVmYXVsdChOUFAgbnBwLCBOUE9iamVjdCogbnBP
YmplY3QsIGNvbnN0IE5QVmFyaWFudCogYXJndW1lbnRzLAogICAgICAgICBGcmFtZSogZnJhbWUg
PSB2OE5wT2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpOwogICAgICAgICBBU1NFUlQoZnJhbWUp
OwogCi0gICAgICAgIE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFyZ3YgPSBj
cmVhdGVWYWx1ZUxpc3RGcm9tVmFyaWFudEFyZ3MoYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCBu
cE9iamVjdCk7CisgICAgICAgIE93bkFycmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFy
Z3YgPSBjcmVhdGVWYWx1ZUxpc3RGcm9tVmFyaWFudEFyZ3MoYXJndW1lbnRzLCBhcmd1bWVudENv
dW50LCBucE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIHJlc3VsdE9iamVjdCA9IGZyYW1lLT5z
Y3JpcHQoKS0+Y2FsbEZ1bmN0aW9uKGZ1bmN0aW9uLCBmdW5jdGlvbk9iamVjdCwgYXJndW1lbnRD
b3VudCwgYXJndi5nZXQoKSk7CiAgICAgfQogICAgIC8vIElmIHdlIGhhZCBhbiBlcnJvciwgcmV0
dXJuIGZhbHNlLiAgVGhlIHNwZWMgaXMgYSBsaXR0bGUgdW5jbGVhciBoZXJlLCBidXQgc2F5cyAi
UmV0dXJucyB0cnVlIGlmIHRoZSBtZXRob2Qgd2FzCkBAIC0zOTIsOCArMzk2LDcgQEAgYm9vbCBf
TlBOX1NldFByb3BlcnR5KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgTlBJZGVudGlmaWVy
IHByb3BlcnR5TmFtZSwgY28KICAgICAgICAgRXhjZXB0aW9uQ2F0Y2hlciBleGNlcHRpb25DYXRj
aGVyOwogCiAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqKG9iamVjdC0+djhPYmpl
Y3QpOwotICAgICAgICBvYmotPlNldChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihwcm9wZXJ0
eU5hbWUpLAotICAgICAgICAgICAgICAgICBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdCh2YWx1
ZSwgb2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBP
YmplY3QoKSkpOworICAgICAgICBvYmotPlNldChucElkZW50aWZpZXJUb1Y4SWRlbnRpZmllcihw
cm9wZXJ0eU5hbWUpLCBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdCh2YWx1ZSwgb2JqZWN0LT5y
b290T2JqZWN0LT5mcmFtZSgpLT5zY3JpcHQoKS0+d2luZG93U2NyaXB0TlBPYmplY3QoKSwgY29u
dGV4dC0+R2V0SXNvbGF0ZSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAt
NTUzLDYgKzU1Niw4IEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQIG5wcCwgTlBPYmplY3QqIG5w
T2JqZWN0LCBjb25zdCBOUFZhcmlhbnQqIGFyZ3VtZW50cywgdWluCiAgICAgaWYgKCFucE9iamVj
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSB2
ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOworCiAgICAgaWYgKG5wT2JqZWN0LT5fY2xhc3MgPT0g
bnBTY3JpcHRPYmplY3RDbGFzcykgewogICAgICAgICBWOE5QT2JqZWN0KiBvYmplY3QgPSByZWlu
dGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihucE9iamVjdCk7CiAKQEAgLTU3NCw3ICs1NzksNyBA
QCBib29sIF9OUE5fQ29uc3RydWN0KE5QUCBucHAsIE5QT2JqZWN0KiBucE9iamVjdCwgY29uc3Qg
TlBWYXJpYW50KiBhcmd1bWVudHMsIHVpbgogICAgICAgICBpZiAoIWN0b3ItPklzTnVsbCgpKSB7
CiAgICAgICAgICAgICBGcmFtZSogZnJhbWUgPSBvYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCk7
CiAgICAgICAgICAgICBBU1NFUlQoZnJhbWUpOwotICAgICAgICAgICAgT3duQXJyYXlQdHI8djg6
OkhhbmRsZTx2ODo6VmFsdWU+ID4gYXJndiA9IGNyZWF0ZVZhbHVlTGlzdEZyb21WYXJpYW50QXJn
cyhhcmd1bWVudHMsIGFyZ3VtZW50Q291bnQsIG5wT2JqZWN0KTsKKyAgICAgICAgICAgIE93bkFy
cmF5UHRyPHY4OjpIYW5kbGU8djg6OlZhbHVlPiA+IGFyZ3YgPSBjcmVhdGVWYWx1ZUxpc3RGcm9t
VmFyaWFudEFyZ3MoYXJndW1lbnRzLCBhcmd1bWVudENvdW50LCBucE9iamVjdCwgaXNvbGF0ZSk7
CiAgICAgICAgICAgICByZXN1bHRPYmplY3QgPSBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0
YW5jZUluRG9jdW1lbnQoY3RvciwgYXJndW1lbnRDb3VudCwgYXJndi5nZXQoKSwgZnJhbWUgPyBm
cmFtZS0+ZG9jdW1lbnQoKSA6IDApOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNWEzZjYwZGVhMGRlOTczNThm
N2EzMzgwMmZhNWIzMGQ3NDlmZDQzNy4uNjZiOTczNTg0ZmM1ZGVmYTRkYTg4YzEzOWIyZGE4YTc5
YjNlMTkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTI2Myw3ICsyNjMsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHRD
b250cm9sbGVyOjpjb21waWxlQW5kUnVuU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZAogICAg
ICAgICB0cnlDYXRjaC5TZXRWZXJib3NlKHRydWUpOwogCiAgICAgICAgIC8vIENvbXBpbGUgdGhl
IHNjcmlwdC4KLSAgICAgICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBjb2RlID0gZGVwcmVjYXRl
ZFY4U3RyaW5nKHNvdXJjZS5zb3VyY2UoKSk7CisgICAgICAgIHY4OjpIYW5kbGU8djg6OlN0cmlu
Zz4gY29kZSA9IHY4U3RyaW5nKHNvdXJjZS5zb3VyY2UoKSwgbV9pc29sYXRlKTsKICNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKICAgICAgICAgVFJBQ0VfRVZFTlRfQkVHSU4wKCJ2OCIsICJ2OC5jb21w
aWxlIik7CiAjZW5kaWYKQEAgLTI3MSw3ICsyNzEsNyBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBT
Y3JpcHRDb250cm9sbGVyOjpjb21waWxlQW5kUnVuU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNv
ZAogCiAgICAgICAgIC8vIE5PVEU6IEZvciBjb21wYXRpYmlsaXR5IHdpdGggV2ViQ29yZSwgU2Ny
aXB0U291cmNlQ29kZSdzIGxpbmUgc3RhcnRzIGF0CiAgICAgICAgIC8vIDEsIHdoZXJlYXMgdjgg
c3RhcnRzIGF0IDAuCi0gICAgICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gU2Ny
aXB0U291cmNlQ29kZTo6Y29tcGlsZVNjcmlwdChjb2RlLCBzb3VyY2UudXJsKCksIHNvdXJjZS5z
dGFydFBvc2l0aW9uKCksIHNjcmlwdERhdGEuZ2V0KCkpOworICAgICAgICB2ODo6SGFuZGxlPHY4
OjpTY3JpcHQ+IHNjcmlwdCA9IFNjcmlwdFNvdXJjZUNvZGU6OmNvbXBpbGVTY3JpcHQoY29kZSwg
c291cmNlLnVybCgpLCBzb3VyY2Uuc3RhcnRQb3NpdGlvbigpLCBzY3JpcHREYXRhLmdldCgpLCBt
X2lzb2xhdGUpOwogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBUUkFDRV9FVkVOVF9F
TkQwKCJ2OCIsICJ2OC5jb21waWxlIik7CiAgICAgICAgIFRSQUNFX0VWRU5UMCgidjgiLCAidjgu
cnVuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9m
aWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRQcm9maWxlci5jcHAK
aW5kZXggNGQwZmJlMmU5ZmYxNThjYmYzNzRkYTk2YWU4OTM0OTc4OTBlNzc4MS4uNDk5MTBlYWNj
ZmE3NzExMjY4OTFjMGE3YzAwNTA4ODAxNTUzMTA1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcApAQCAtMTg5LDEzICsxODksMTQgQEAgcHJpdmF0
ZToKIAogfSAvLyBuYW1lc3BhY2UKIAorLy8gRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCByZWNl
aXZlIGEgU2NyaXB0U3RhdGUsIGZyb20gd2hpY2ggd2Ugc2hvdWxkIHJldHJpZXZlIGFuIElzb2xh
dGUuCiBQYXNzUmVmUHRyPFNjcmlwdEhlYXBTbmFwc2hvdD4gU2NyaXB0UHJvZmlsZXI6OnRha2VI
ZWFwU25hcHNob3QoY29uc3QgU3RyaW5nJiB0aXRsZSwgSGVhcFNuYXBzaG90UHJvZ3Jlc3MqIGNv
bnRyb2wpCiB7CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhzOwogICAgIEFTU0VSVChjb250cm9sKTsK
ICAgICBBY3Rpdml0eUNvbnRyb2xBZGFwdGVyIGFkYXB0ZXIoY29udHJvbCk7CiAgICAgR2xvYmFs
T2JqZWN0TmFtZVJlc29sdmVyIHJlc29sdmVyOwotICAgIGNvbnN0IHY4OjpIZWFwU25hcHNob3Qq
IHNuYXBzaG90ID0gdjg6OkhlYXBQcm9maWxlcjo6VGFrZVNuYXBzaG90KGRlcHJlY2F0ZWRWOFN0
cmluZyh0aXRsZSksIHY4OjpIZWFwU25hcHNob3Q6OmtGdWxsLCAmYWRhcHRlciwgJnJlc29sdmVy
KTsKKyAgICBjb25zdCB2ODo6SGVhcFNuYXBzaG90KiBzbmFwc2hvdCA9IHY4OjpIZWFwUHJvZmls
ZXI6OlRha2VTbmFwc2hvdCh2OFN0cmluZyh0aXRsZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQo
KSksIHY4OjpIZWFwU25hcHNob3Q6OmtGdWxsLCAmYWRhcHRlciwgJnJlc29sdmVyKTsKICAgICBy
ZXR1cm4gc25hcHNob3QgPyBTY3JpcHRIZWFwU25hcHNob3Q6OmNyZWF0ZShzbmFwc2hvdCkgOiAw
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRTb3Vy
Y2VDb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUu
Y3BwCmluZGV4IGQwMDI4ODFlY2NiNDhjZGFkOTQ5OWRiZWRhZWFkNTA3YjE5NDBjYjIuLmJlMzgw
Y2M2NTFmNTBiMzVkOGFkZjdkYTQ1MmZlZThhZWM3MjQ3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuY3BwCkBAIC01NywxMSArNTcsMTEgQEAg
UGFzc093blB0cjx2ODo6U2NyaXB0RGF0YT4gU2NyaXB0U291cmNlQ29kZTo6cHJlY29tcGlsZVNj
cmlwdCh2ODo6SGFuZGxlPHY4OjpTdHIKICAgICByZXR1cm4gc2NyaXB0RGF0YS5yZWxlYXNlKCk7
CiB9CiAKLXY4OjpIYW5kbGU8djg6OlNjcmlwdD4gU2NyaXB0U291cmNlQ29kZTo6Y29tcGlsZVNj
cmlwdCh2ODo6SGFuZGxlPHY4OjpTdHJpbmc+IGNvZGUsIGNvbnN0IFN0cmluZyYgZmlsZU5hbWUs
IGNvbnN0IFRleHRQb3NpdGlvbiYgc2NyaXB0U3RhcnRQb3NpdGlvbiwgdjg6OlNjcmlwdERhdGEq
IHNjcmlwdERhdGEpCit2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IFNjcmlwdFNvdXJjZUNvZGU6OmNv
bXBpbGVTY3JpcHQodjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBjb2RlLCBjb25zdCBTdHJpbmcmIGZp
bGVOYW1lLCBjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9zaXRpb24sIHY4OjpTY3Jp
cHREYXRhKiBzY3JpcHREYXRhLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpTdHJpbmc+IG5hbWUgPSBkZXByZWNhdGVkVjhTdHJpbmcoZmlsZU5hbWUpOwotICAg
IHY4OjpIYW5kbGU8djg6OkludGVnZXI+IGxpbmUgPSBkZXByZWNhdGVkVjhJbnRlZ2VyKHNjcmlw
dFN0YXJ0UG9zaXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpKTsKLSAgICB2ODo6SGFuZGxlPHY4
OjpJbnRlZ2VyPiBjb2x1bW4gPSBkZXByZWNhdGVkVjhJbnRlZ2VyKHNjcmlwdFN0YXJ0UG9zaXRp
b24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4g
bmFtZSA9IHY4U3RyaW5nKGZpbGVOYW1lLCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpJ
bnRlZ2VyPiBsaW5lID0gdjhJbnRlZ2VyKHNjcmlwdFN0YXJ0UG9zaXRpb24ubV9saW5lLnplcm9C
YXNlZEludCgpLCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpJbnRlZ2VyPiBjb2x1bW4g
PSB2OEludGVnZXIoc2NyaXB0U3RhcnRQb3NpdGlvbi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKSwg
aXNvbGF0ZSk7CiAgICAgdjg6OlNjcmlwdE9yaWdpbiBvcmlnaW4obmFtZSwgbGluZSwgY29sdW1u
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IHY4OjpTY3JpcHQ6OkNvbXBp
bGUoY29kZSwgJm9yaWdpbiwgc2NyaXB0RGF0YSk7CiAgICAgcmV0dXJuIHNjcmlwdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFNvdXJjZUNvZGUuaAppbmRleCA1NzNlNzdj
MDMxMTJkM2Q0MTQxODBmOThhNTQzOGUyYTlkODdjMDU2Li45NWQ2NDkzMjliODM4NGQ0ZTgyMjQw
ZGZkOGRjNWJlZjhkOGNjZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHRTb3VyY2VDb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0U291cmNlQ29kZS5oCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBUZXh0
UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0UG9zaXRpb247
IH0KIAogICAgIHN0YXRpYyBQYXNzT3duUHRyPHY4OjpTY3JpcHREYXRhPiBwcmVjb21waWxlU2Ny
aXB0KHY4OjpIYW5kbGU8djg6OlN0cmluZz4sIENhY2hlZFNjcmlwdCopOwotICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IGNvbXBpbGVTY3JpcHQodjg6OkhhbmRsZTx2ODo6U3RyaW5n
PiwgY29uc3QgU3RyaW5nJiwgY29uc3QgVGV4dFBvc2l0aW9uJiwgdjg6OlNjcmlwdERhdGEqID0g
MCk7CisgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gY29tcGlsZVNjcmlwdCh2ODo6
SGFuZGxlPHY4OjpTdHJpbmc+LCBjb25zdCBTdHJpbmcmLCBjb25zdCBUZXh0UG9zaXRpb24mLCB2
ODo6U2NyaXB0RGF0YSosIHY4OjpJc29sYXRlKik7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIG1f
c291cmNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhMYXp5RXZl
bnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExp
c3RlbmVyLmNwcAppbmRleCBmYjBjOWMzNWQyMGE3ZmIxMzI1ZGRkZTc0ZDA0NmIxMzhkNWY5NzEx
Li43ODdmNDlkNDE5OTMyZmU5MWIxMzk3YmUyMDQ1MzY4YTk4MmI5NDI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcApAQCAtMTI1
LDYgKzEyNSw3IEBAIHZvaWQgVjhMYXp5RXZlbnRMaXN0ZW5lcjo6cHJlcGFyZUxpc3RlbmVyT2Jq
ZWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgICAgIHJldHVybjsKICAg
ICAvLyBVc2UgdGhlIG91dGVyIHNjb3BlIHRvIGhvbGQgY29udGV4dC4KICAgICB2ODo6TG9jYWw8
djg6OkNvbnRleHQ+IHY4Q29udGV4dCA9IHRvVjhDb250ZXh0KGNvbnRleHQsIHdvcmxkQ29udGV4
dCgpKTsKKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgp
OwogICAgIC8vIEJhaWwgb3V0IGlmIHdlIGNhbm5vdCBnZXQgdGhlIGNvbnRleHQuCiAgICAgaWYg
KHY4Q29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NSw5ICsxNTYsOSBA
QCB2b2lkIFY4TGF6eUV2ZW50TGlzdGVuZXI6OnByZXBhcmVMaXN0ZW5lck9iamVjdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICAgICAgICAgIn07IgogICAgICAgICAifX19
fSkiOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6U3RyaW5nPiBjb2RlRXh0ZXJuYWxTdHJpbmcgPSB2
OFN0cmluZyhjb2RlLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSk7CisgICAgdjg6OkhhbmRsZTx2
ODo6U3RyaW5nPiBjb2RlRXh0ZXJuYWxTdHJpbmcgPSB2OFN0cmluZyhjb2RlLCBpc29sYXRlKTsK
IAotICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gc2NyaXB0ID0gU2NyaXB0U291cmNlQ29kZTo6
Y29tcGlsZVNjcmlwdChjb2RlRXh0ZXJuYWxTdHJpbmcsIG1fc291cmNlVVJMLCBtX3Bvc2l0aW9u
KTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+IHNjcmlwdCA9IFNjcmlwdFNvdXJjZUNvZGU6
OmNvbXBpbGVTY3JpcHQoY29kZUV4dGVybmFsU3RyaW5nLCBtX3NvdXJjZVVSTCwgbV9wb3NpdGlv
biwgMCwgaXNvbGF0ZSk7CiAgICAgaWYgKHNjcmlwdC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
bjsKIApAQCAtMTc4LDE4ICsxNzksMTggQEAgdm9pZCBWOExhenlFdmVudExpc3RlbmVyOjpwcmVw
YXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICBp
ZiAobV9ub2RlICYmIG1fbm9kZS0+aXNIVE1MRWxlbWVudCgpKQogICAgICAgICBmb3JtRWxlbWVu
dCA9IHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4obV9ub2RlKS0+Zm9ybSgpOwogCi0gICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxOb2RlPiht
X25vZGUsIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGZvcm1XcmFwcGVyID0gdG9PYmplY3RXcmFwcGVyPEhUTUxGb3JtRWxlbWVudD4oZm9ybUVs
ZW1lbnQsIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGRvY3VtZW50V3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxEb2N1bWVudD4obV9ub2RlID8g
bV9ub2RlLT5vd25lckRvY3VtZW50KCkgOiAwLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSk7Cisg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBub2RlV3JhcHBlciA9IHRvT2JqZWN0V3JhcHBlcjxO
b2RlPihtX25vZGUsIGlzb2xhdGUpOworICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZm9ybVdy
YXBwZXIgPSB0b09iamVjdFdyYXBwZXI8SFRNTEZvcm1FbGVtZW50Pihmb3JtRWxlbWVudCwgaXNv
bGF0ZSk7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBkb2N1bWVudFdyYXBwZXIgPSB0b09i
amVjdFdyYXBwZXI8RG9jdW1lbnQ+KG1fbm9kZSA/IG1fbm9kZS0+b3duZXJEb2N1bWVudCgpIDog
MCwgaXNvbGF0ZSk7CiAKICAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gdGhpc09iamVjdCA9IHY4
OjpPYmplY3Q6Ok5ldygpOwogICAgIGlmICh0aGlzT2JqZWN0LklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuOwotICAgIGlmICghdGhpc09iamVjdC0+Rm9yY2VTZXQodjhJbnRlZ2VyKDAsIHY4Q29u
dGV4dC0+R2V0SXNvbGF0ZSgpKSwgbm9kZVdyYXBwZXIpKQorICAgIGlmICghdGhpc09iamVjdC0+
Rm9yY2VTZXQodjhJbnRlZ2VyKDAsIGlzb2xhdGUpLCBub2RlV3JhcHBlcikpCiAgICAgICAgIHJl
dHVybjsKLSAgICBpZiAoIXRoaXNPYmplY3QtPkZvcmNlU2V0KHY4SW50ZWdlcigxLCB2OENvbnRl
eHQtPkdldElzb2xhdGUoKSksIGZvcm1XcmFwcGVyKSkKKyAgICBpZiAoIXRoaXNPYmplY3QtPkZv
cmNlU2V0KHY4SW50ZWdlcigxLCBpc29sYXRlKSwgZm9ybVdyYXBwZXIpKQogICAgICAgICByZXR1
cm47Ci0gICAgaWYgKCF0aGlzT2JqZWN0LT5Gb3JjZVNldCh2OEludGVnZXIoMiwgdjhDb250ZXh0
LT5HZXRJc29sYXRlKCkpLCBkb2N1bWVudFdyYXBwZXIpKQorICAgIGlmICghdGhpc09iamVjdC0+
Rm9yY2VTZXQodjhJbnRlZ2VyKDIsIGlzb2xhdGUpLCBkb2N1bWVudFdyYXBwZXIpKQogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY29kZSB3aGVuIHdlIHN0b3Ag
ZG9pbmcgdGhlICd3aXRoJyBoYWNrIGFib3ZlLgpAQCAtMjIwLDExICsyMjEsMTEgQEAgdm9pZCBW
OExhenlFdmVudExpc3RlbmVyOjpwcmVwYXJlTGlzdGVuZXJPYmplY3QoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCkKICAgICAgICAgdG9TdHJpbmdGdW5jdGlvbiA9IHRvU3RyaW5nVGVt
cGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgaWYgKCF0b1N0cmluZ0Z1bmN0aW9uLklzRW1wdHko
KSkgewogICAgICAgICBTdHJpbmcgdG9TdHJpbmdTdHJpbmcgPSAiZnVuY3Rpb24gIiArIG1fZnVu
Y3Rpb25OYW1lICsgIigiICsgbV9ldmVudFBhcmFtZXRlck5hbWUgKyAiKSB7XG4gICIgKyBtX2Nv
ZGUgKyAiXG59IjsKLSAgICAgICAgd3JhcHBlZEZ1bmN0aW9uLT5TZXRIaWRkZW5WYWx1ZShWOEhp
ZGRlblByb3BlcnR5TmFtZTo6dG9TdHJpbmdTdHJpbmcoKSwgdjhTdHJpbmcodG9TdHJpbmdTdHJp
bmcsIHY4Q29udGV4dC0+R2V0SXNvbGF0ZSgpKSk7CisgICAgICAgIHdyYXBwZWRGdW5jdGlvbi0+
U2V0SGlkZGVuVmFsdWUoVjhIaWRkZW5Qcm9wZXJ0eU5hbWU6OnRvU3RyaW5nU3RyaW5nKCksIHY4
U3RyaW5nKHRvU3RyaW5nU3RyaW5nLCBpc29sYXRlKSk7CiAgICAgICAgIHdyYXBwZWRGdW5jdGlv
bi0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdG9TdHJpbmdGdW5jdGlv
bik7CiAgICAgfQogCi0gICAgd3JhcHBlZEZ1bmN0aW9uLT5TZXROYW1lKHY4U3RyaW5nKG1fZnVu
Y3Rpb25OYW1lLCB2OENvbnRleHQtPkdldElzb2xhdGUoKSkpOworICAgIHdyYXBwZWRGdW5jdGlv
bi0+U2V0TmFtZSh2OFN0cmluZyhtX2Z1bmN0aW9uTmFtZSwgaXNvbGF0ZSkpOwogCiAgICAgLy8g
RklYTUU6IFJlbW92ZSB0aGUgZm9sbG93aW5nIGNvbW1lbnQtb3V0cy4KICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg1MTUyIGZvciBtb3JlIGRldGFp
bHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBPYmplY3QuY3BwCmluZGV4IGQ4ZTU4
NDVkZmNjMDJhYzkwZWY4Y2U5MGI0M2Y5NTc2Y2YxODQ1ZWMuLjQ1YmVhMmViNTFhODM5NGI5MTI1
OGUwMjU0Njk0ZjdiZWFmYzA5NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4TlBPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBP
YmplY3QuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBucE9iamVjdEludm9rZUltcGwoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywgSW52b2sKICAg
ICAvLyBVbndyYXAgcmV0dXJuIHZhbHVlcy4KICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmV0
dXJuVmFsdWU7CiAgICAgaWYgKF9OUE5fSXNBbGl2ZShucE9iamVjdCkpCi0gICAgICAgIHJldHVy
blZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVjhPYmplY3QoJnJlc3VsdCwgbnBPYmplY3QpOwor
ICAgICAgICByZXR1cm5WYWx1ZSA9IGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0KCZyZXN1bHQs
IG5wT2JqZWN0LCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgX05QTl9SZWxlYXNlVmFyaWFudFZh
bHVlKCZyZXN1bHQpOwogCiAgICAgcmV0dXJuIHJldHVyblZhbHVlOwpAQCAtMjMwLDcgKzIzMCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnBPYmplY3RHZXRQcm9wZXJ0eSh2ODo6
TG9jYWw8djg6Ok9iamVjdD4gc2VsZiwgTlBJCiAKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJldHVyblZhbHVlOwogICAgICAgICBpZiAoX05QTl9Jc0FsaXZlKG5wT2JqZWN0KSkKLSAg
ICAgICAgICAgIHJldHVyblZhbHVlID0gY29udmVydE5QVmFyaWFudFRvVjhPYmplY3QoJnJlc3Vs
dCwgbnBPYmplY3QpOworICAgICAgICAgICAgcmV0dXJuVmFsdWUgPSBjb252ZXJ0TlBWYXJpYW50
VG9WOE9iamVjdCgmcmVzdWx0LCBucE9iamVjdCwgaXNvbGF0ZSk7CiAgICAgICAgIF9OUE5fUmVs
ZWFzZVZhcmlhbnRWYWx1ZSgmcmVzdWx0KTsKICAgICAgICAgcmV0dXJuIHJldHVyblZhbHVlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcAppbmRleCA4ODY3NmY4MGY3
YmUwZjNkZjM3NTlkMmU0MTU1ODU1MDZkNWFmZTg2Li45M2ZkYzQ1OTE4ZmYyNWJkMzE0YjQwOWZj
M2QwZDdhNjhkMTM3ZGVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OE5QVXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5j
cHAKQEAgLTc2LDEzICs3NiwxMyBAQCB2b2lkIGNvbnZlcnRWOE9iamVjdFRvTlBWYXJpYW50KHY4
OjpMb2NhbDx2ODo6VmFsdWU+IG9iamVjdCwgTlBPYmplY3QqIG93bmVyLCBOUAogICAgIH0KIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0KGNvbnN0
IE5QVmFyaWFudCogdmFyaWFudCwgTlBPYmplY3QqIG5wb2JqZWN0KQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0KGNvbnN0IE5QVmFyaWFudCogdmFyaWFu
dCwgTlBPYmplY3QqIG5wb2JqZWN0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBOUFZh
cmlhbnRUeXBlIHR5cGUgPSB2YXJpYW50LT50eXBlOwogCiAgICAgc3dpdGNoICh0eXBlKSB7CiAg
ICAgY2FzZSBOUFZhcmlhbnRUeXBlX0ludDMyOgotICAgICAgICByZXR1cm4gZGVwcmVjYXRlZFY4
SW50ZWdlcihOUFZBUklBTlRfVE9fSU5UMzIoKnZhcmlhbnQpKTsKKyAgICAgICAgcmV0dXJuIHY4
SW50ZWdlcihOUFZBUklBTlRfVE9fSU5UMzIoKnZhcmlhbnQpLCBpc29sYXRlKTsKICAgICBjYXNl
IE5QVmFyaWFudFR5cGVfRG91YmxlOgogICAgICAgICByZXR1cm4gdjg6Ok51bWJlcjo6TmV3KE5Q
VkFSSUFOVF9UT19ET1VCTEUoKnZhcmlhbnQpKTsKICAgICBjYXNlIE5QVmFyaWFudFR5cGVfQm9v
bDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmgKaW5kZXggZGM2MTg1YjAwYTE2
ZWZkY2RlNTZhYWNhYzY1Y2I5N2I0NTFkYmZkYS4uMWM4MTRmYWQzMDI3YjYyYmQwMzUzMmYyYTc5
NDA1MzdiMWEyMjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhO
UFV0aWxzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmgKQEAg
LTQ1LDcgKzQ1LDcgQEAgdm9pZCBjb252ZXJ0VjhPYmplY3RUb05QVmFyaWFudCh2ODo6TG9jYWw8
djg6OlZhbHVlPiwgTlBPYmplY3QqLCBOUFZhcmlhbnQqKTsKIAogLy8gQ29udmVydCBhIE5QVmFy
aWFudCAoc3RyaW5nLCBib29sLCBvYmplY3QsIGV0YykgYmFjayB0byBhIFY4IFZhbHVlLiAgVGhl
IG93bmVyIG9iamVjdCBpcyB0aGUgTlBPYmplY3Qgd2hpY2ggcmVsYXRlcyB0byB0aGUKIC8vIG9i
amVjdCwgaWYgdGhlIG9iamVjdCBpcyBhbiBPYmplY3QuICBUaGUgY3JlYXRlZCBOUE9iamVjdCB3
aWxsIGJlIHRpZWQgdG8gdGhlIGxpZmV0aW1lIG9mIHRoZSBvd25lci4KLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb252ZXJ0TlBWYXJpYW50VG9WOE9iamVjdChjb25zdCBOUFZhcmlhbnQqLCBOUE9i
amVjdCopOwordjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0
KGNvbnN0IE5QVmFyaWFudCosIE5QT2JqZWN0Kiwgdjg6Oklzb2xhdGUqKTsKIAogLy8gSGVscGVy
IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBOUE4gU3RyaW5nIElkZW50aWZpZXIgZnJvbSBhIHY4IHN0
cmluZy4KIE5QSWRlbnRpZmllciBnZXRTdHJpbmdJZGVudGlmaWVyKHY4OjpIYW5kbGU8djg6OlN0
cmluZz4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRp
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4
IGY3ZDQzYzQyNzdlOGI5NTY2MjliNjYzMDgwMWMxZTE0MTIyZDE2NzQuLjNmYjg4MDkxNzUxZTA5
OGUzNzYxOGI0MGIwYzNmOWI3NmE5MmJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFV0aWxpdGllcy5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAvLyBVc2UgYW4gYXJyYXkgdG8gaG9sZCBkZXBlbmRlbnRzLiBJdCB3b3JrcyBsaWtlIGEgcmVm
LWNvdW50ZWQgc2NoZW1lLgogLy8gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2Ug
dG8gdGhlIERPTSBvYmplY3QuCi12b2lkIGNyZWF0ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2Fj
aGVJbmRleCkKK3ZvaWQgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGludCBjYWNoZUluZGV4LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNoZSA9
IG9iamVjdC0+R2V0SW50ZXJuYWxGaWVsZChjYWNoZUluZGV4KTsKICAgICBpZiAoY2FjaGUtPklz
TnVsbCgpIHx8IGNhY2hlLT5Jc1VuZGVmaW5lZCgpKSB7CkBAIC01OSw3ICs1OSw3IEBAIHZvaWQg
Y3JlYXRlSGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCwgdjg6
OkxvY2FsPHY4OjpWYWx1ZT4KICAgICB9CiAKICAgICB2ODo6TG9jYWw8djg6OkFycmF5PiBjYWNo
ZUFycmF5ID0gdjg6OkxvY2FsPHY4OjpBcnJheT46OkNhc3QoY2FjaGUpOwotICAgIGNhY2hlQXJy
YXktPlNldChkZXByZWNhdGVkVjhJbnRlZ2VyKGNhY2hlQXJyYXktPkxlbmd0aCgpKSwgdmFsdWUp
OworICAgIGNhY2hlQXJyYXktPlNldCh2OEludGVnZXIoY2FjaGVBcnJheS0+TGVuZ3RoKCksIGlz
b2xhdGUpLCB2YWx1ZSk7CiB9CiAKIGJvb2wgZXh0cmFjdFRyYW5zZmVyYWJsZXModjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRzLCBBcnJheUJ1ZmZlckFy
cmF5JiBhcnJheUJ1ZmZlcnMsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpAQCAtMTIxLDE0ICsxMjEs
MTQgQEAgYm9vbCBnZXRNZXNzYWdlUG9ydEFycmF5KHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl
LCBNZXNzYWdlUG9ydEFycmF5JiBwb3J0cywgdjgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9p
ZCByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0LCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgaW50IGNhY2hlSW5kZXgpCit2b2lkIHJlbW92ZUhp
ZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHZhbHVlLCBpbnQgY2FjaGVJbmRleCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gY2FjaGUgPSBvYmplY3QtPkdldEludGVybmFsRmll
bGQoY2FjaGVJbmRleCk7CiAgICAgaWYgKCFjYWNoZS0+SXNBcnJheSgpKQogICAgICAgICByZXR1
cm47CiAgICAgdjg6OkxvY2FsPHY4OjpBcnJheT4gY2FjaGVBcnJheSA9IHY4OjpMb2NhbDx2ODo6
QXJyYXk+OjpDYXN0KGNhY2hlKTsKICAgICBmb3IgKGludCBpID0gY2FjaGVBcnJheS0+TGVuZ3Ro
KCkgLSAxOyBpID49IDA7IC0taSkgewotICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBjYWNo
ZWQgPSBjYWNoZUFycmF5LT5HZXQoZGVwcmVjYXRlZFY4SW50ZWdlcihpKSk7CisgICAgICAgIHY4
OjpMb2NhbDx2ODo6VmFsdWU+IGNhY2hlZCA9IGNhY2hlQXJyYXktPkdldCh2OEludGVnZXIoaSwg
aXNvbGF0ZSkpOwogICAgICAgICBpZiAoY2FjaGVkLT5TdHJpY3RFcXVhbHModmFsdWUpKSB7CiAg
ICAgICAgICAgICBjYWNoZUFycmF5LT5EZWxldGUoaSk7CiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xMzYsMjEgKzEzNiwxOCBAQCB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QsIHY4OjpMb2NhbDx2ODo6VmFsdWU+CiAgICAgfQogfQogICAg
IAotdm9pZCB0cmFuc2ZlckhpZGRlbkRlcGVuZGVuY3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBv
YmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExpc3RlbmVyKiBvbGRW
YWx1ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVl
PiBuZXdWYWx1ZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2FjaGVJbmRl
eCkKK3ZvaWQgdHJhbnNmZXJIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0LCBFdmVudExpc3RlbmVyKiBvbGRWYWx1ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3
VmFsdWUsIGludCBjYWNoZUluZGV4LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKICAgICBpZiAo
b2xkVmFsdWUpIHsKICAgICAgICAgVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXIqIG9sZExpc3RlbmVy
ID0gVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmNhc3Qob2xkVmFsdWUpOwogICAgICAgICBpZiAo
b2xkTGlzdGVuZXIpIHsKICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBvbGRMaXN0
ZW5lck9iamVjdCA9IG9sZExpc3RlbmVyLT5nZXRFeGlzdGluZ0xpc3RlbmVyT2JqZWN0KCk7CiAg
ICAgICAgICAgICBpZiAoIW9sZExpc3RlbmVyT2JqZWN0LklzRW1wdHkoKSkKLSAgICAgICAgICAg
ICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KG9iamVjdCwgb2xkTGlzdGVuZXJPYmplY3QsIGNh
Y2hlSW5kZXgpOworICAgICAgICAgICAgICAgIHJlbW92ZUhpZGRlbkRlcGVuZGVuY3kob2JqZWN0
LCBvbGRMaXN0ZW5lck9iamVjdCwgY2FjaGVJbmRleCwgaXNvbGF0ZSk7CiAgICAgICAgIH0KICAg
ICB9CiAgICAgaWYgKCFuZXdWYWx1ZS0+SXNOdWxsKCkgJiYgIW5ld1ZhbHVlLT5Jc1VuZGVmaW5l
ZCgpKQotICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KG9iamVjdCwgbmV3VmFsdWUsIGNh
Y2hlSW5kZXgpOworICAgICAgICBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KG9iamVjdCwgbmV3VmFs
dWUsIGNhY2hlSW5kZXgsIGlzb2xhdGUpOwogfQogCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5oCmluZGV4IDRiYzU2Y2NhZmZiZDRiNTFkM2FhZTY4NmM3NzAyOWM0YmNkMjk5YWQu
LjI0YjIzY2ZlM2RlMWE2MjgyYTYyZTJkYTVjZmVmMzYwYjliY2UzNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuaApAQCAtNDUsMTEgKzQ1LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICBjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OwogCiAgICAgLy8g
VXNlIGFuIGFycmF5IHRvIGhvbGQgZGVwZW5kZW50cy4gSXQgd29ya3MgbGlrZSBhIHJlZi1jb3Vu
dGVkIHNjaGVtZS4gQSB2YWx1ZSBjYW4gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UgdG8gdGhlIERP
TSBvYmplY3QuCi0gICAgdm9pZCBjcmVhdGVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4sIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBpbnQgY2FjaGVJbmRleCk7Ci0gICAgdm9p
ZCByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpMb2Nh
bDx2ODo6VmFsdWU+LCBpbnQgY2FjaGVJbmRleCk7CisgICAgdm9pZCBjcmVhdGVIaWRkZW5EZXBl
bmRlbmN5KHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpMb2NhbDx2ODo6VmFsdWU+LCBpbnQg
Y2FjaGVJbmRleCwgdjg6Oklzb2xhdGUqKTsKKyAgICB2b2lkIHJlbW92ZUhpZGRlbkRlcGVuZGVu
Y3kodjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGludCBjYWNo
ZUluZGV4LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgLy8gQ29tYm8gY3JlYXRlL3JlbW92ZSwgZm9y
IGdlbmVyYXRlZCBldmVudC1oYW5kbGVyLXNldHRlciBiaW5kaW5nczoKLSAgICB2b2lkIHRyYW5z
ZmVySGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBFdmVudExpc3RlbmVy
KiBvbGRWYWx1ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3VmFsdWUsIGludCBjYWNoZUluZGV4
KTsKKyAgICB2b2lkIHRyYW5zZmVySGlkZGVuRGVwZW5kZW5jeSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCBFdmVudExpc3RlbmVyKiBvbGRWYWx1ZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3VmFs
dWUsIGludCBjYWNoZUluZGV4LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDdk
ZWM0NzRkYzdlNzQ0OWY1MzUxZGU3YThhN2E0ZTFlMDI2ODUxMzguLjJjOWVkZTg2NmVmZTUyNjc3
MzE4ZDEyZTU5OTUzNGExYzcyM2EzYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xNTEsMTIgKzE1MSwxMyBA
QCBTY3JpcHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTdHJp
bmcmIHNjcmlwdCwgY29uc3QgU3RyaW5nJgogICAgICAgICBtX2Rpc2FibGVFdmFsUGVuZGluZyA9
IFN0cmluZygpOwogICAgIH0KIAorICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gbV9jb250ZXh0
LT5HZXRJc29sYXRlKCk7CiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dC5n
ZXQoKSk7CiAKICAgICB2ODo6VHJ5Q2F0Y2ggYmxvY2s7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpT
dHJpbmc+IHNjcmlwdFN0cmluZyA9IHY4U3RyaW5nKHNjcmlwdCwgbV9jb250ZXh0LT5HZXRJc29s
YXRlKCkpOwotICAgIHY4OjpIYW5kbGU8djg6OlNjcmlwdD4gY29tcGlsZWRTY3JpcHQgPSBTY3Jp
cHRTb3VyY2VDb2RlOjpjb21waWxlU2NyaXB0KHNjcmlwdFN0cmluZywgZmlsZU5hbWUsIHNjcmlw
dFN0YXJ0UG9zaXRpb24pOworICAgIHY4OjpIYW5kbGU8djg6OlN0cmluZz4gc2NyaXB0U3RyaW5n
ID0gdjhTdHJpbmcoc2NyaXB0LCBpc29sYXRlKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpTY3JpcHQ+
IGNvbXBpbGVkU2NyaXB0ID0gU2NyaXB0U291cmNlQ29kZTo6Y29tcGlsZVNjcmlwdChzY3JpcHRT
dHJpbmcsIGZpbGVOYW1lLCBzY3JpcHRTdGFydFBvc2l0aW9uLCAwLCBpc29sYXRlKTsKICAgICB2
ODo6TG9jYWw8djg6OlZhbHVlPiByZXN1bHQgPSBTY3JpcHRSdW5uZXI6OnJ1bkNvbXBpbGVkU2Ny
aXB0KGNvbXBpbGVkU2NyaXB0LCBtX3dvcmtlckNvbnRleHQpOwogCiAgICAgaWYgKCFibG9jay5D
YW5Db250aW51ZSgpKSB7CkBAIC0xNzEsNyArMTcyLDcgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IFN0cmlu
ZyYKICAgICAgICAgc3RhdGUtPmxpbmVOdW1iZXIgPSBtZXNzYWdlLT5HZXRMaW5lTnVtYmVyKCk7
CiAgICAgICAgIHN0YXRlLT5zb3VyY2VVUkwgPSB0b1dlYkNvcmVTdHJpbmcobWVzc2FnZS0+R2V0
U2NyaXB0UmVzb3VyY2VOYW1lKCkpOwogICAgICAgICBpZiAobV93b3JrZXJDb250ZXh0LT5zYW5p
dGl6ZVNjcmlwdEVycm9yKHN0YXRlLT5lcnJvck1lc3NhZ2UsIHN0YXRlLT5saW5lTnVtYmVyLCBz
dGF0ZS0+c291cmNlVVJMKSkKLSAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0aHJvd0Vy
cm9yKHY4R2VuZXJhbEVycm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRhKCksIG1f
Y29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKKyAgICAgICAgICAgIHN0YXRlLT5leGNlcHRpb24gPSB0
aHJvd0Vycm9yKHY4R2VuZXJhbEVycm9yLCBzdGF0ZS0+ZXJyb3JNZXNzYWdlLnV0ZjgoKS5kYXRh
KCksIGlzb2xhdGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBzdGF0ZS0+ZXhjZXB0aW9u
ID0gU2NyaXB0VmFsdWUoYmxvY2suRXhjZXB0aW9uKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCAz
ZTA4N2ZjN2I1MmMyZmI1NzM1NmM1Y2UyYWI5NDNkNDI2NTUwZGE0Li5jZmI1NGYwYjFlOTllZWVh
ZGNjZmUxMjVkMTQ5MGI1ZjZiNjY2NzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTI0OSw3ICsyNDks
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogCiAgICAgaWYgKGxpc3RlbmVyKSB7CiAgICAg
ICAgIGltcC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJl
KTsKLSAgICAgICAgY3JlYXRlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFd
LCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCk7CisgICAgICAgIGNyZWF0ZUhpZGRlbkRlcGVuZGVu
Y3koYXJncy5Ib2xkZXIoKSwgYXJnc1sxXSwgZXZlbnRMaXN0ZW5lckNhY2hlSW5kZXgsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpAQCAt
Mjc4LDcgKzI3OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3Zl
RXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVuCiAKICAgICBpZiAobGlzdGVu
ZXIpIHsKICAgICAgICAgaW1wLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIuZ2V0KCksIHVzZUNhcHR1cmUpOwotICAgICAgICByZW1vdmVIaWRkZW5EZXBlbmRlbmN5KGFy
Z3MuSG9sZGVyKCksIGFyZ3NbMV0sIGV2ZW50TGlzdGVuZXJDYWNoZUluZGV4KTsKKyAgICAgICAg
cmVtb3ZlSGlkZGVuRGVwZW5kZW5jeShhcmdzLkhvbGRlcigpLCBhcmdzWzFdLCBldmVudExpc3Rl
bmVyQ2FjaGVJbmRleCwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIH0KIAogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJCaW5kaW5ncy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5j
cHAKaW5kZXggMjE3MjNmNjBhNWM1MTViYzg0MDFjMzc2NzEzN2NhYzU5YmFjYzNlZC4uYWNiODgz
NmQ1YmU0M2RjMWJhMWMxZDhmZjE1MzEzZTc0M2NjYTlkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcApAQCAtMzk0LDE2ICszOTQsMTcgQEAgdm9pZCBXZWJC
aW5kaW5nczo6dG9OUFZhcmlhbnQodjg6OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBOUE9iamVj
dCogcm9vdCwgTlBWYXIKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkJpbmRpbmdzOjp0b1Y4
VmFsdWUoY29uc3QgTlBWYXJpYW50KiB2YXJpYW50KQogeworICAgIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBpZiAodmFyaWFudC0+dHlwZSA9
PSBOUFZhcmlhbnRUeXBlX09iamVjdCkgewogICAgICAgICBOUE9iamVjdCogb2JqZWN0ID0gTlBW
QVJJQU5UX1RPX09CSkVDVCgqdmFyaWFudCk7CiAgICAgICAgIGlmIChvYmplY3QtPl9jbGFzcyAh
PSBucFNjcmlwdE9iamVjdENsYXNzKQogICAgICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQo
KTsKICAgICAgICAgVjhOUE9iamVjdCogdjhPYmplY3QgPSByZWludGVycHJldF9jYXN0PFY4TlBP
YmplY3QqPihvYmplY3QpOwotICAgICAgICByZXR1cm4gY29udmVydE5QVmFyaWFudFRvVjhPYmpl
Y3QodmFyaWFudCwgdjhPYmplY3QtPnJvb3RPYmplY3QtPmZyYW1lKCktPnNjcmlwdCgpLT53aW5k
b3dTY3JpcHROUE9iamVjdCgpKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnROUFZhcmlhbnRUb1Y4
T2JqZWN0KHZhcmlhbnQsIHY4T2JqZWN0LT5yb290T2JqZWN0LT5mcmFtZSgpLT5zY3JpcHQoKS0+
d2luZG93U2NyaXB0TlBPYmplY3QoKSwgaXNvbGF0ZSk7CiAgICAgfQogICAgIC8vIFNhZmUgdG8g
cGFzcyAwIHNpbmNlIHdlIGhhdmUgY2hlY2tlZCB0aGUgc2NyaXB0IG9iamVjdCBjbGFzcyB0byBt
YWtlIHN1cmUgdGhlCiAgICAgLy8gYXJndW1lbnQgaXMgYSBwcmltaXRpdmUgdjggdHlwZS4KLSAg
ICByZXR1cm4gY29udmVydE5QVmFyaWFudFRvVjhPYmplY3QodmFyaWFudCwgMCk7CisgICAgcmV0
dXJuIGNvbnZlcnROUFZhcmlhbnRUb1Y4T2JqZWN0KHZhcmlhbnQsIDAsIGlzb2xhdGUpOwogfQog
I2VuZGlmCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>