<?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>99773</bug_id>
          
          <creation_ts>2012-10-18 16:28:26 -0700</creation_ts>
          <short_desc>IndexedDB: Refactor IDBDatabaseBackendImpl to use IDBDatabaseMetadata</short_desc>
          <delta_ts>2012-10-18 18:04:04 -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>New Bugs</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="Alec Flett">alecflett</reporter>
          <assigned_to name="Alec Flett">alecflett</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>jsbell</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>745716</commentid>
    <comment_count>0</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-18 16:28:26 -0700</bug_when>
    <thetext>IndexedDB: Refactor IDBDatabaseBackendImpl to use IDBDatabaseMetadata</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745722</commentid>
    <comment_count>1</comment_count>
      <attachid>169502</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-18 16:33:06 -0700</bug_when>
    <thetext>Created attachment 169502
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745723</commentid>
    <comment_count>2</comment_count>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-18 16:33:50 -0700</bug_when>
    <thetext>tony@ - r?

(jsbell, dgrogan and I discussed this in person)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745732</commentid>
    <comment_count>3</comment_count>
      <attachid>169502</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 16:42:18 -0700</bug_when>
    <thetext>Comment on attachment 169502
Patch

Attachment 169502 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14456237</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745742</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-18 16:49:16 -0700</bug_when>
    <thetext>Looks like some test files need updating.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745746</commentid>
    <comment_count>5</comment_count>
      <attachid>169502</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-10-18 16:52:10 -0700</bug_when>
    <thetext>Comment on attachment 169502
Patch

Seems fine with the compilation errors fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745751</commentid>
    <comment_count>6</comment_count>
      <attachid>169502</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-10-18 16:55:58 -0700</bug_when>
    <thetext>Comment on attachment 169502
Patch

Attachment 169502 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/14469009</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745782</commentid>
    <comment_count>7</comment_count>
      <attachid>169513</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-10-18 17:37:29 -0700</bug_when>
    <thetext>Created attachment 169513
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745819</commentid>
    <comment_count>8</comment_count>
      <attachid>169513</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 18:04:00 -0700</bug_when>
    <thetext>Comment on attachment 169513
Patch for landing

Clearing flags on attachment: 169513

Committed r131832: &lt;http://trac.webkit.org/changeset/131832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>745820</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-18 18:04:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169502</attachid>
            <date>2012-10-18 16:33:06 -0700</date>
            <delta_ts>2012-10-18 17:37:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-99773-20121018163150.patch</filename>
            <type>text/plain</type>
            <size>26325</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM4MzdlMDY3N2Q0M2Uz
Zjc5ZmJjZjdmNGJjZjYxMDJmMWIyNTBkNC4uYzk5ZWU1ZWYxNTExYjUwOWI5NzE5ODRlNmEzZGU3
NWQ4YjFiOGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTE4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIElEQkRhdGFiYXNlQmFja2VuZEltcGwgdG8gdXNlIElEQkRhdGFiYXNlTWV0YWRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NzczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVmYWN0b3Ig
dG8gYmVnaW4gc2VwYXJhdGluZyBvdXQgbWV0YWRhdGEgZnJvbSBzdGF0ZWZ1bCBiYWNrZW5kIG9i
amVjdHMsCisgICAgICAgIGluIHByZXBhcmF0aW9uIGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTk3NzQuCisKKyAgICAgICAgQWxzbyBpbmNsdWRlcyBzb21lICNp
bmNsdWRlIGRlcGVuZGVuY3kgY2xlYW51cCBzbyB0aGF0IHRoZSBiYWNraW5nIHN0b3JlCisgICAg
ICAgIGRlcGVuZHMgbGVzcyBvbiB0aGUgc3RhdGVmdWwgYmFja2VuZCBvYmplY3RzLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyBhcyB0aGlzIGlzIHB1cmVseSBhIHJlZmFjdG9yLgorCisgICAgICAg
ICogTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKElEQkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVk
ZGIvSURCQ3Vyc29yLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFj
a2VuZEltcGwuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0U3RvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQ
ZW5kaW5nQ2FsbHMpOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
b3BlbkNvbm5lY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1w
bDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OklE
QkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bG9hZE9iamVjdFN0b3Jlcyk6
CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNpb24p
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaDoK
KyAgICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OmlkKToKKyAgICAgICAg
KElEQkRhdGFiYXNlQmFja2VuZEltcGwpOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lE
QkxldmVsREJCYWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAgICogTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlLmg6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaDoKKyAgICAgICAgKFdlYkNvcmUpOgorCiAyMDEyLTEwLTE4ICBUYWthc2hpIFNh
a2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxMzE0NjQp
OiBOdWxsLXBvaW50ZXIgY3Jhc2ggaW4gU3R5bGVSZXNvbHZlcjo6c3R5bGVGb3JFbGVtZW50CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
CmluZGV4IGNjMTk3YzIxN2ZlNjVlZGE5MmNlMDQyNTQ1NGJiNDM2YWRjNzkzNzEuLmQzNzQ5M2I5
ODMwY2RmMjY2ZGMxOGM2MjY1YTk3YTk1ODU2NzY1MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC0yOSwxOCArMjksMTkg
QEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIklEQkN1cnNvci5o
IgotI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiU1FM
aXRlRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgSURCS2V5OwogY2xhc3Mg
SURCS2V5UmFuZ2U7CiBjbGFzcyBTZWN1cml0eU9yaWdpbjsKK3N0cnVjdCBJREJEYXRhYmFzZU1l
dGFkYXRhOwogCiBjbGFzcyBJREJCYWNraW5nU3RvcmUgOiBwdWJsaWMgUmVmQ291bnRlZDxJREJC
YWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKQEAgLTQ5LDcgKzUwLDcgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpIHt9OwogCiAgICAgdmlydHVhbCB2b2lkIGdldERhdGFi
YXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpID0gMDsKLSAgICB2aXJ0dWFsIGJv
b2wgZ2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91
bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGludDY0X3QmIGZvdW5k
SWQsIGludDY0X3QmIG1heE9iamVjdFN0b3JlSWQpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0YWRh
dGEqIGZvdW5kTWV0YWRhdGEpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJh
c2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgc3RyaW5nVmVyc2lv
biwgaW50NjRfdCBpbnRWZXJzaW9uLCBpbnQ2NF90JiByb3dJZCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCB1cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24oVHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJv
d0lkLCBpbnQ2NF90IGludFZlcnNpb24pID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURC
RGF0YWJhc2VNZXRhRGF0YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0IFN0cmlu
ZyYgdmVyc2lvbikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvSURCQ3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJD
dXJzb3IuaAppbmRleCBmZTcyNWM5YmE3ODcxOTQ1YTBiMzc4M2Y4NjRmYTk1MzAwODIyZmM2Li41
NTg5YzIyMmZjNTdhOGI1MmY2ZTNmNjVlYmI2OWMyZTdmMjIyNWUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuaApAQCAtMzAsNiArMzAsNyBAQAogCiAj
aW5jbHVkZSAiSURCS2V5LmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRl
ICJTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApp
bmRleCAzYjkyZjExN2VmMWU0ZTJmOTcxZTcyMDljOGNkNTQwMzg3ZTAwZWRlLi4xZjc0YzMzOTFl
MmY5OWYwYzZhMzYyM2JlMGQ2OTFjYzgzMTMzZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKQEAgLTMyLDYg
KzMyLDggQEAKICNpbmNsdWRlICJJREJCYWNraW5nU3RvcmUuaCIKICNpbmNsdWRlICJJREJDdXJz
b3IuaCIKICNpbmNsdWRlICJJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAi
SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbC5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KQEAgLTQyLDggKzQ0LDYgQEAgY2xhc3MgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDsKIGNsYXNzIElEQkluZGV4QmFja2VuZEltcGw7CiBjbGFzcyBJ
REJLZXlSYW5nZTsKIGNsYXNzIElEQk9iamVjdFN0b3JlQmFja2VuZEltcGw7Ci1jbGFzcyBJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsOwotY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlOwogCiBj
bGFzcyBJREJDdXJzb3JCYWNrZW5kSW1wbCA6IHB1YmxpYyBJREJDdXJzb3JCYWNrZW5kSW50ZXJm
YWNlIHsKIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKaW5kZXggNGU4OTU0MTdkNDYxYmQ2
OGZjMTE4MDM0NWM3NjkxOTZiNGIxODg1Yy4uZDVmYmQ2ZGQ0YTcyNDBkMTE2ZDUzMWU2OWFiZWVi
OGJmNDlhZTk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAKQEAgLTEzMywyOCArMTMzLDI0IEBA
IGNvbnN0IGNoYXIqIE5vU3RyaW5nVmVyc2lvbiA9ICIiOwogCiBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCQmFja2lu
Z1N0b3JlKiBiYWNraW5nU3RvcmUsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCogZmFjdG9yeSwgY29u
c3QgU3RyaW5nJiB1bmlxdWVJZGVudGlmaWVyKQogICAgIDogbV9iYWNraW5nU3RvcmUoYmFja2lu
Z1N0b3JlKQotICAgICwgbV9pZChJbnZhbGlkSWQpCi0gICAgLCBtX25hbWUobmFtZSkKLSAgICAs
IG1fdmVyc2lvbihOb1N0cmluZ1ZlcnNpb24pCi0gICAgLCBtX2ludFZlcnNpb24oSURCRGF0YWJh
c2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKQotICAgICwgbV9tYXhPYmplY3RTdG9yZUlkKEludmFs
aWRJZCkKKyAgICAsIG1fbWV0YWRhdGEobmFtZSwgSW52YWxpZElkLCBOb1N0cmluZ1ZlcnNpb24s
IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbiwgSW52YWxpZElkKQogICAgICwgbV9p
ZGVudGlmaWVyKHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgLCBtX2ZhY3RvcnkoZmFjdG9yeSkKICAg
ICAsIG1fdHJhbnNhY3Rpb25Db29yZGluYXRvcihJREJUcmFuc2FjdGlvbkNvb3JkaW5hdG9yOjpj
cmVhdGUoKSkKICAgICAsIG1fY2xvc2luZ0Nvbm5lY3Rpb24oZmFsc2UpCiB7Ci0gICAgQVNTRVJU
KCFtX25hbWUuaXNOdWxsKCkpOworICAgIEFTU0VSVCghbV9tZXRhZGF0YS5uYW1lLmlzTnVsbCgp
KTsKIH0KIAogYm9vbCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVuSW50ZXJuYWwoKQogewot
ICAgIGJvb2wgc3VjY2VzcyA9IG1fYmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRh
KG1fbmFtZSwgbV92ZXJzaW9uLCBtX2ludFZlcnNpb24sIG1faWQsIG1fbWF4T2JqZWN0U3RvcmVJ
ZCk7Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09IChtX2lkICE9IEludmFsaWRJ
ZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlbGxkIiwgc3VjY2VzcyA/ICJ0cnVlIiA6ICJmYWxz
ZSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pZCkpOworICAgIGJvb2wgc3VjY2VzcyA9IG1f
YmFja2luZ1N0b3JlLT5nZXRJREJEYXRhYmFzZU1ldGFEYXRhKG1fbWV0YWRhdGEubmFtZSwgJm1f
bWV0YWRhdGEpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uoc3VjY2VzcyA9PSAobV9tZXRhZGF0
YS5pZCAhPSBJbnZhbGlkSWQpLCAic3VjY2VzcyA9ICVzLCBtX2lkID0gJWxsZCIsIHN1Y2Nlc3Mg
PyAidHJ1ZSIgOiAiZmFsc2UiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0YWRhdGEuaWQp
KTsKICAgICBpZiAoc3VjY2VzcykgewogICAgICAgICBsb2FkT2JqZWN0U3RvcmVzKCk7CiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIH0KLSAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0
ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9uYW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9p
ZCk7CisgICAgcmV0dXJuIG1fYmFja2luZ1N0b3JlLT5jcmVhdGVJREJEYXRhYmFzZU1ldGFEYXRh
KG1fbWV0YWRhdGEubmFtZSwgbV9tZXRhZGF0YS52ZXJzaW9uLCBtX21ldGFkYXRhLmludFZlcnNp
b24sIG1fbWV0YWRhdGEuaWQpOwogfQogCiBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjp+SURCRGF0
YWJhc2VCYWNrZW5kSW1wbCgpCkBAIC0xNjgsNyArMTY0LDggQEAgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmJhY2tpbmdTdG9yZSgpIGNvbnN0CiAK
IElEQkRhdGFiYXNlTWV0YWRhdGEgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6bWV0YWRhdGEoKSBj
b25zdAogewotICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9uYW1lLCBtX2lkLCBt
X3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9tYXhPYmplY3RTdG9yZUlkKTsKKyAgICAvLyBGSVhN
RTogRmlndXJlIG91dCBhIHdheSB0byBrZWVwIG1fbWV0YWRhdGEub2JqZWN0U3RvcmVzLmdldChO
KS5pbmRleGVzIHVwIHRvIGRhdGUgcmF0aGVyIHRoYW4gcmVnZW5lcmF0aW5nIHRoaXMgZXZlcnkg
dGltZS4KKyAgICBJREJEYXRhYmFzZU1ldGFkYXRhIG1ldGFkYXRhKG1fbWV0YWRhdGEpOwogICAg
IGZvciAoT2JqZWN0U3RvcmVNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vYmplY3RTdG9yZXMu
YmVnaW4oKTsgaXQgIT0gbV9vYmplY3RTdG9yZXMuZW5kKCk7ICsraXQpCiAgICAgICAgIG1ldGFk
YXRhLm9iamVjdFN0b3Jlcy5zZXQoaXQtPmtleSwgaXQtPnZhbHVlLT5tZXRhZGF0YSgpKTsKICAg
ICByZXR1cm4gbWV0YWRhdGE7CkBAIC0xODQsOSArMTgxLDkgQEAgUGFzc1JlZlB0cjxJREJPYmpl
Y3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNyZWF0ZU9i
amVjdFMKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsOjpmcm9tKHRyYW5zYWN0aW9uUHRyKTsKICAgICBB
U1NFUlQodHJhbnNhY3Rpb24tPm1vZGUoKSA9PSBJREJUcmFuc2FjdGlvbjo6VkVSU0lPTl9DSEFO
R0UpOwogCi0gICAgLy8gRklYTUU6IEZpeCBlZGdlIGNhc2VzIGFyb3VuZCB0cmFuc2FjdGlvbiBh
Ym9ydHMgdGhhdCBwcmV2ZW50IHRoaXMgZnJvbSBqdXN0IGJlaW5nIEFTU0VSVChpZCA9PSBtX21h
eE9iamVjdFN0b3JlSWQgKyAxKQotICAgIEFTU0VSVChpZCA+IG1fbWF4T2JqZWN0U3RvcmVJZCk7
Ci0gICAgbV9tYXhPYmplY3RTdG9yZUlkID0gaWQ7CisgICAgLy8gRklYTUU6IEZpeCBlZGdlIGNh
c2VzIGFyb3VuZCB0cmFuc2FjdGlvbiBhYm9ydHMgdGhhdCBwcmV2ZW50IHRoaXMgZnJvbSBqdXN0
IGJlaW5nIEFTU0VSVChpZCA9PSBtX21ldGFkYXRhLm1heE9iamVjdFN0b3JlSWQgKyAxKQorICAg
IEFTU0VSVChpZCA+IG1fbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZCk7CisgICAgbV9tZXRhZGF0
YS5tYXhPYmplY3RTdG9yZUlkID0gaWQ7CiAKICAgICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5k
SW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIGlmICghdHJhbnNhY3Rpb24tPnNjaGVkdWxlVGFz
aygKQEAgLTI3NSw3ICsyNzIsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZl
cnNpb24oY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBQYXNzUmVmUHRyPElEQkNhbAogICAgIFJlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CiAgICAgaWYgKCF0cmFu
c2FjdGlvbi0+c2NoZWR1bGVUYXNrKAogICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwsIGRhdGFiYXNlLCB2ZXJz
aW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKSwKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNr
VGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJzaW9uLCBkYXRhYmFzZSwgbV92
ZXJzaW9uLCBtX2ludFZlcnNpb24pKSkgeworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX21ldGFk
YXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbikpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgbGluZXMuCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICBlYyA9IElEQkRhdGFiYXNlRXhjZXB0aW9uOjpUUkFOU0FDVElP
Tl9JTkFDVElWRV9FUlI7CkBAIC0yODYsOSArMjgzLDkgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tl
bmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWYKIHsKICAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW1wbD4gdHJhbnNhY3Rpb24g
PSBwcnBUcmFuc2FjdGlvbjsKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQo
KTsKLSAgICBkYXRhYmFzZS0+bV92ZXJzaW9uID0gdmVyc2lvbjsKLSAgICBkYXRhYmFzZS0+bV9p
bnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwotICAgIGlmICgh
ZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKHRyYW5z
YWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+
bV92ZXJzaW9uKSB8fCAhZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFz
ZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFi
YXNlSWQsIGRhdGFiYXNlLT5tX2ludFZlcnNpb24pKSB7CisgICAgZGF0YWJhc2UtPm1fbWV0YWRh
dGEudmVyc2lvbiA9IHZlcnNpb247CisgICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lv
biA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKKyAgICBpZiAoIWRhdGFiYXNl
LT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YSh0cmFuc2FjdGlvbi0+
YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UtPm1fbWV0YWRh
dGEudmVyc2lvbikgfHwgIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJh
c2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRh
YmFzZUlkLCBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkgewogICAgICAgICBSZWZQ
dHI8SURCRGF0YWJhc2VFcnJvcj4gZXJyb3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURC
RGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0
YWJsZSBzdG9yYWdlLiIpOwogICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAg
ICAgICB0cmFuc2FjdGlvbi0+YWJvcnQoZXJyb3IpOwpAQCAtMzAwLDEwICsyOTcsMTAgQEAgdm9p
ZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWYKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50
VmVyc2lvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRh
dGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlLCBpbnQ2NF90IHZlcnNpb24sIFBhc3NSZWZQdHI8
SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5k
SW1wbD4gdHJhbnNhY3Rpb24pCiB7CiAgICAgaW50NjRfdCBkYXRhYmFzZUlkID0gZGF0YWJhc2Ut
PmlkKCk7Ci0gICAgaW50NjRfdCBvbGRWZXJzaW9uID0gZGF0YWJhc2UtPm1faW50VmVyc2lvbjsK
KyAgICBpbnQ2NF90IG9sZFZlcnNpb24gPSBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9u
OwogICAgIEFTU0VSVCh2ZXJzaW9uID4gb2xkVmVyc2lvbik7Ci0gICAgZGF0YWJhc2UtPm1faW50
VmVyc2lvbiA9IHZlcnNpb247Ci0gICAgaWYgKCFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVw
ZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNh
Y3Rpb24oKSwgZGF0YWJhc2VJZCwgZGF0YWJhc2UtPm1faW50VmVyc2lvbikpIHsKKyAgICBkYXRh
YmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gdmVyc2lvbjsKKyAgICBpZiAoIWRhdGFiYXNl
LT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9u
LT5iYWNraW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9tZXRh
ZGF0YS5pbnRWZXJzaW9uKSkgewogICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4gZXJy
b3IgPSBJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05P
V05fRVJSLCAiRXJyb3Igd3JpdGluZyBkYXRhIHRvIHN0YWJsZSBzdG9yYWdlLiIpOwogICAgICAg
ICBjYWxsYmFja3MtPm9uRXJyb3IoZXJyb3IpOwogICAgICAgICB0cmFuc2FjdGlvbi0+YWJvcnQo
ZXJyb3IpOwpAQCAtMzYzLDggKzM2MCw4IEBAIHNpemVfdCBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
Ojpjb25uZWN0aW9uQ291bnQoKQogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpwcm9jZXNz
UGVuZGluZ0NhbGxzKCkKIHsKICAgICBpZiAobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVy
c2lvbikgewotICAgICAgICBBU1NFUlQobV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lv
bi0+dmVyc2lvbigpID09IG1faW50VmVyc2lvbik7Ci0gICAgICAgIEFTU0VSVChtX2lkICE9IElu
dmFsaWRJZCk7CisgICAgICAgIEFTU0VSVChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJz
aW9uLT52ZXJzaW9uKCkgPT0gbV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKKyAgICAgICAgQVNTRVJU
KG1fbWV0YWRhdGEuaWQgIT0gSW52YWxpZElkKTsKICAgICAgICAgbV9wZW5kaW5nU2Vjb25kSGFs
Zk9wZW5XaXRoVmVyc2lvbi0+Y2FsbGJhY2tzKCktPm9uU3VjY2Vzcyh0aGlzKTsKICAgICAgICAg
bV9wZW5kaW5nU2Vjb25kSGFsZk9wZW5XaXRoVmVyc2lvbi5yZWxlYXNlKCk7CiAgICAgICAgIC8v
IEZhbGwgdGhyb3VnaCB3aGVuIGNvbXBsZXRlLCBhcyBwZW5kaW5nIGRlbGV0ZXMgbWF5IGJlIChw
YXJ0aWFsbHkpIHVuYmxvY2tlZC4KQEAgLTQ0NSwxMSArNDQyLDExIEBAIHZvaWQgSURCRGF0YWJh
c2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNh
bGxiYWNrcywKICAgICAgICAgbV9wZW5kaW5nT3BlbkNhbGxzLmFwcGVuZChQZW5kaW5nT3BlbkNh
bGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKG1faWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50ZXJuYWwoKSkg
eworICAgIGlmIChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCAmJiAhb3BlbkludGVybmFsKCkp
IHsKICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJ
REJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRlcm5hbCBlcnJvci4iKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fdmVyc2lvbiA9PSBOb1N0cmluZ1ZlcnNp
b24gJiYgbV9pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikg
eworICAgIGlmIChtX21ldGFkYXRhLnZlcnNpb24gPT0gTm9TdHJpbmdWZXJzaW9uICYmIG1fbWV0
YWRhdGEuaW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb24pIHsK
ICAgICAgICAgLy8gU3BlYyBzYXlzOiBJZiBubyB2ZXJzaW9uIGlzIHNwZWNpZmllZCBhbmQgbm8g
ZGF0YWJhc2UgZXhpc3RzLCBzZXQKICAgICAgICAgLy8gZGF0YWJhc2UgdmVyc2lvbiB0byAxLiBX
ZSBpbmZlciB0aGF0IHRoZSBkYXRhYmFzZSBkaWRuJ3QgZXhpc3QgZnJvbQogICAgICAgICAvLyBp
dHMgbGFjayBvZiBlaXRoZXIgdHlwZSBvZiB2ZXJzaW9uLgpAQCAtNDY4LDcgKzQ2NSw3IEBAIHZv
aWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KGludDY0X3QgcmVxdWVzdGVkVmVyCiAgICAgZm9yIChEYXRhYmFzZUNhbGxiYWNrc1NldDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX2RhdGFiYXNlQ2FsbGJhY2tzU2V0LmJlZ2luKCk7IGl0ICE9IG1f
ZGF0YWJhc2VDYWxsYmFja3NTZXQuZW5kKCk7ICsraXQpIHsKICAgICAgICAgLy8gRnJvbnQgZW5k
IGVuc3VyZXMgdGhlIGV2ZW50IGlzIG5vdCBmaXJlZCBhdCBjb25uZWN0aW9ucyB0aGF0IGhhdmUg
Y2xvc2VQZW5kaW5nIHNldC4KICAgICAgICAgaWYgKCppdCAhPSBkYXRhYmFzZUNhbGxiYWNrcykK
LSAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9pbnRWZXJzaW9uLCByZXF1ZXN0
ZWRWZXJzaW9uKTsKKyAgICAgICAgICAgICgqaXQpLT5vblZlcnNpb25DaGFuZ2UobV9tZXRhZGF0
YS5pbnRWZXJzaW9uLCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9CiAgICAgLy8gVGhlIHNwZWMg
ZGljdGF0ZXMgd2Ugd2FpdCB1bnRpbCBhbGwgdGhlIHZlcnNpb24gY2hhbmdlIGV2ZW50cyBhcmUK
ICAgICAvLyBkZWxpdmVyZWQgYW5kIHRoZW4gY2hlY2sgbV9kYXRhYmFzZUNhbGxiYWNrcy5lbXB0
eSgpIGJlZm9yZSBwcm9jZWVkaW5nCkBAIC00NzgsNyArNDc1LDcgQEAgdm9pZCBJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1
ZXN0ZWRWZXIKICAgICAvLyB0ZWxscyB1cyB0aGF0IGFsbCB0aGUgYmxvY2tlZCBldmVudHMgaGF2
ZSBiZWVuIGRlbGl2ZXJlZC4gU2VlCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTcxMTMwCiAgICAgaWYgKGNvbm5lY3Rpb25Db3VudCgpKQotICAgICAgICBj
YWxsYmFja3MtPm9uQmxvY2tlZChtX2ludFZlcnNpb24pOworICAgICAgICBjYWxsYmFja3MtPm9u
QmxvY2tlZChtX21ldGFkYXRhLmludFZlcnNpb24pOwogICAgIC8vIEZJWE1FOiBBZGQgdGVzdCBm
b3IgbV9ydW5uaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uLgogICAgIGlmIChtX3J1bm5pbmdW
ZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24gfHwgY29ubmVjdGlvbkNvdW50KCkpIHsKICAgICAgICAg
bV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuV2l0aFZlcnNp
b25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywgcmVxdWVzdGVkVmVy
c2lvbikpOwpAQCAtNDkzLDcgKzQ5MCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6
cnVuSW50VmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGludDY0X3QgcmVxdWVzdGVkVmVyCiAKICAg
ICBSZWZQdHI8SURCRGF0YWJhc2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UgPSB0aGlzOwogICAgIE93
blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiBpbnRWZXJzaW9uVGFzayA9IGNyZWF0
ZUNhbGxiYWNrVGFzaygmSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0SW50VmVyc2lvbkludGVy
bmFsLCBkYXRhYmFzZSwgcmVxdWVzdGVkVmVyc2lvbiwgY2FsbGJhY2tzLCB0cmFuc2FjdGlvbik7
Ci0gICAgT3duUHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHJlc2V0VmVyc2lvbk9u
QWJvcnRUYXNrID0gY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpy
ZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbik7CisgICAgT3du
UHRyPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHJlc2V0VmVyc2lvbk9uQWJvcnRUYXNr
ID0gY3JlYXRlQ2FsbGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNp
b24sIGRhdGFiYXNlLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbik7
CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKGludFZlcnNpb25UYXNrLnJlbGVh
c2UoKSwgcmVzZXRWZXJzaW9uT25BYm9ydFRhc2sucmVsZWFzZSgpKSkgewogICAgICAgICAvLyBG
SVhNRTogUmVtb3ZlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGxpbmVzLgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTUxMiwyMyArNTA5LDIzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNr
cz4KICAgICAgICAgbV9wZW5kaW5nT3BlbldpdGhWZXJzaW9uQ2FsbHMuYXBwZW5kKFBlbmRpbmdP
cGVuV2l0aFZlcnNpb25DYWxsOjpjcmVhdGUoY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcywg
dmVyc2lvbikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2lkID09IEludmFs
aWRJZCkgeworICAgIGlmIChtX21ldGFkYXRhLmlkID09IEludmFsaWRJZCkgewogICAgICAgICBp
ZiAob3BlbkludGVybmFsKCkpCi0gICAgICAgICAgICBBU1NFUlQobV9pbnRWZXJzaW9uID09IElE
QkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7CisgICAgICAgICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbik7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFi
YXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJJbnRl
cm5hbCBlcnJvci4iKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgaWYgKHZlcnNpb24gPiBtX2ludFZlcnNpb24pIHsKKyAgICBpZiAodmVyc2lvbiA+IG1fbWV0
YWRhdGEuaW50VmVyc2lvbikgewogICAgICAgICBydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rp
b24odmVyc2lvbiwgY2FsbGJhY2tzLCBkYXRhYmFzZUNhbGxiYWNrcyk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaWYgKHZlcnNpb24gPCBtX2ludFZlcnNpb24pIHsKLSAgICAgICAgY2Fs
bGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2Vw
dGlvbjo6VkVSX0VSUiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lvbiAoJWxs
ZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1faW50VmVyc2lv
bikpKSk7CisgICAgaWYgKHZlcnNpb24gPCBtX21ldGFkYXRhLmludFZlcnNpb24pIHsKKyAgICAg
ICAgY2FsbGJhY2tzLT5vbkVycm9yKElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFz
ZUV4Y2VwdGlvbjo6VkVSX0VSUiwgU3RyaW5nOjpmb3JtYXQoIlRoZSByZXF1ZXN0ZWQgdmVyc2lv
biAoJWxsZCkgaXMgbGVzcyB0aGFuIHRoZSBleGlzdGluZyB2ZXJzaW9uICglbGxkKS4iLCBzdGF0
aWNfY2FzdDxsb25nIGxvbmc+KHZlcnNpb24pLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KG1fbWV0
YWRhdGEuaW50VmVyc2lvbikpKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgQVNTRVJU
KHZlcnNpb24gPT0gbV9pbnRWZXJzaW9uKTsKKyAgICBBU1NFUlQodmVyc2lvbiA9PSBtX21ldGFk
YXRhLmludFZlcnNpb24pOwogICAgIG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYWRkKGRhdGFiYXNl
Q2FsbGJhY2tzKTsKICAgICBjYWxsYmFja3MtPm9uU3VjY2Vzcyh0aGlzKTsKIH0KQEAgLTU1Mywx
MyArNTUwLDEzIEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6ZGVsZXRlRGF0YWJhc2Uo
UGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IHBycENhbGxiYWNrCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgQVNTRVJUKG1fYmFja2luZ1N0b3JlKTsKLSAgICBpZiAoIW1fYmFja2luZ1N0b3Jl
LT5kZWxldGVEYXRhYmFzZShtX25hbWUpKSB7CisgICAgaWYgKCFtX2JhY2tpbmdTdG9yZS0+ZGVs
ZXRlRGF0YWJhc2UobV9tZXRhZGF0YS5uYW1lKSkgewogICAgICAgICBjYWxsYmFja3MtPm9uRXJy
b3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dO
X0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X3ZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247Ci0gICAgbV9pZCA9IEludmFsaWRJZDsKLSAgICBt
X2ludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CisgICAgbV9t
ZXRhZGF0YS52ZXJzaW9uID0gTm9TdHJpbmdWZXJzaW9uOworICAgIG1fbWV0YWRhdGEuaWQgPSBJ
bnZhbGlkSWQ7CisgICAgbV9tZXRhZGF0YS5pbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0
YTo6Tm9JbnRWZXJzaW9uOwogICAgIG1fb2JqZWN0U3RvcmVzLmNsZWFyKCk7CiAgICAgY2FsbGJh
Y2tzLT5vblN1Y2Nlc3MoKTsKIH0KQEAgLTYxMSw3ICs2MDgsNyBAQCB2b2lkIElEQkRhdGFiYXNl
QmFja2VuZEltcGw6OmxvYWRPYmplY3RTdG9yZXMoKQogICAgIFZlY3RvcjxJREJLZXlQYXRoPiBr
ZXlQYXRoczsKICAgICBWZWN0b3I8Ym9vbD4gYXV0b0luY3JlbWVudEZsYWdzOwogICAgIFZlY3Rv
cjxpbnQ2NF90PiBtYXhJbmRleElkczsKLSAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3Rv
cmVzKG1faWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MsIG1heElu
ZGV4SWRzKTsKKyAgICBtX2JhY2tpbmdTdG9yZS0+Z2V0T2JqZWN0U3RvcmVzKG1fbWV0YWRhdGEu
aWQsIGlkcywgbmFtZXMsIGtleVBhdGhzLCBhdXRvSW5jcmVtZW50RmxhZ3MsIG1heEluZGV4SWRz
KTsKIAogICAgIEFTU0VSVChuYW1lcy5zaXplKCkgPT0gaWRzLnNpemUoKSk7CiAgICAgQVNTRVJU
KGtleVBhdGhzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKQEAgLTYzOCw4ICs2MzUsOCBAQCB2b2lk
IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmFkZE9iamVjdFN0b3JlVG9NYXAoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZQogCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0
VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwcmV2aW91c1ZlcnNpb24sIGludDY0
X3QgcHJldmlvdXNJbnRWZXJzaW9uKQogewotICAgIGRhdGFiYXNlLT5tX3ZlcnNpb24gPSBwcmV2
aW91c1ZlcnNpb247Ci0gICAgZGF0YWJhc2UtPm1faW50VmVyc2lvbiA9IHByZXZpb3VzSW50VmVy
c2lvbjsKKyAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS52ZXJzaW9uID0gcHJldmlvdXNWZXJzaW9u
OworICAgIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24gPSBwcmV2aW91c0ludFZlcnNp
b247CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAppbmRleCA5
N2I4NTVkYWU0MGMwMDZhMjFkYTc2Y2I5N2IzODMwY2Y5NzQxMzY2Li4xMWE2OWQwYmZkYTY2YjA2
MjAxZDM5NjNjMGVlMTQ0YWI4OGUzNWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCkBAIC01Myw3ICs1
Myw3IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0
b3JlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBJbnZhbGlkSWQgPSAwOwot
ICAgIGludDY0X3QgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgaW50NjRfdCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWV0YWRhdGEuaWQ7IH0KIAogICAgIHZvaWQgb3BlbkNvbm5lY3Rp
b24oUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJh
Y2tzPik7CiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURC
Q2FsbGJhY2tzPiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUNhbGxiYWNrcz4sIGludDY0X3QgdmVy
c2lvbik7CkBAIC05NCwxMSArOTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHJlc2V0
VmVyc2lvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90IGludFZlcnNpb24pOwog
CiAgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gbV9iYWNraW5nU3RvcmU7Ci0gICAgaW50NjRf
dCBtX2lkOwotICAgIFN0cmluZyBtX25hbWU7Ci0gICAgU3RyaW5nIG1fdmVyc2lvbjsKLSAgICBp
bnQ2NF90IG1faW50VmVyc2lvbjsKLSAgICBpbnQ2NF90IG1fbWF4T2JqZWN0U3RvcmVJZDsKKyAg
ICBJREJEYXRhYmFzZU1ldGFkYXRhIG1fbWV0YWRhdGE7CiAKICAgICBTdHJpbmcgbV9pZGVudGlm
aWVyOwogICAgIC8vIFRoaXMgbWlnaHQgbm90IG5lZWQgdG8gYmUgYSBSZWZQdHIgc2luY2UgdGhl
IGZhY3RvcnkncyBsaWZldGltZSBpcyB0aGF0IG9mIHRoZSBwYWdlIGdyb3VwLCBidXQgaXQncyBi
ZXR0ZXIgdG8gYmUgY29uc2Vydml0aXZlIHRoYW4gc29ycnkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IGQ2ZmJiNjc2N2Q1NWZkOGE1MWNkMTY4ZTcwMDA2OWQ1NjY2MmQ5OTQuLmU1MTM1MGQx
Y2QxZGYxOWQ5MGNmNmI0Y2NjOGU5NWI2MDM1OGQ2NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiSURCS2V5UGF0aC5oIgogI2luY2x1ZGUgIklE
QktleVJhbmdlLmgiCiAjaW5jbHVkZSAiSURCTGV2ZWxEQkNvZGluZy5oIgorI2luY2x1ZGUgIklE
Qk1ldGFkYXRhLmgiCiAjaW5jbHVkZSAiTGV2ZWxEQkNvbXBhcmF0b3IuaCIKICNpbmNsdWRlICJM
ZXZlbERCRGF0YWJhc2UuaCIKICNpbmNsdWRlICJMZXZlbERCSXRlcmF0b3IuaCIKQEAgLTMxMywy
NSArMzE0LDI1IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0RGF0YWJhc2VOYW1l
cyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykKICAgICB9CiB9CiAKLWJvb2wgSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUs
IFN0cmluZyYgZm91bmRTdHJpbmdWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZEludFZlcnNpb24sIGlu
dDY0X3QmIGZvdW5kSWQsIGludDY0X3QmIG1heE9iamVjdFN0b3JlSWQpCitib29sIElEQkxldmVs
REJCYWNraW5nU3RvcmU6OmdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBJREJEYXRhYmFzZU1ldGFkYXRhKiBtZXRhZGF0YSkKIHsKICAgICBjb25zdCBWZWN0b3I8Y2hh
cj4ga2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUobV9pZGVudGlmaWVyLCBuYW1lKTsKIAot
ICAgIGJvb2wgb2sgPSBnZXRJbnQobV9kYi5nZXQoKSwga2V5LCBmb3VuZElkKTsKKyAgICBib29s
IG9rID0gZ2V0SW50KG1fZGIuZ2V0KCksIGtleSwgbWV0YWRhdGEtPmlkKTsKICAgICBpZiAoIW9r
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBvayA9IGdldFN0cmluZyhtX2RiLmdldCgp
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUoZm91bmRJZCwgRGF0YWJhc2VNZXRhRGF0YUtl
eTo6VXNlclZlcnNpb24pLCBmb3VuZFN0cmluZ1ZlcnNpb24pOworICAgIG9rID0gZ2V0U3RyaW5n
KG1fZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShtZXRhZGF0YS0+aWQsIERh
dGFiYXNlTWV0YURhdGFLZXk6OlVzZXJWZXJzaW9uKSwgbWV0YWRhdGEtPnZlcnNpb24pOwogICAg
IGlmICghb2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG9rID0gZ2V0VmFySW50KG1f
ZGIuZ2V0KCksIERhdGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1l
dGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIGZvdW5kSW50VmVyc2lvbik7CisgICAgb2sgPSBn
ZXRWYXJJbnQobV9kYi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRh
LT5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6VXNlckludFZlcnNpb24pLCBtZXRhZGF0YS0+aW50
VmVyc2lvbik7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChm
b3VuZEludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6RGVmYXVsdEludFZlcnNpb24p
Ci0gICAgICAgIGZvdW5kSW50VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVy
c2lvbjsKKyAgICBpZiAobWV0YWRhdGEtPmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0
YTo6RGVmYXVsdEludFZlcnNpb24pCisgICAgICAgIG1ldGFkYXRhLT5pbnRWZXJzaW9uID0gSURC
RGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOwogCi0gICAgbWF4T2JqZWN0U3RvcmVJZCA9
IGdldE1heE9iamVjdFN0b3JlSWQobV9kYi5nZXQoKSwgZm91bmRJZCk7CisgICAgbWV0YWRhdGEt
Pm1heE9iamVjdFN0b3JlSWQgPSBnZXRNYXhPYmplY3RTdG9yZUlkKG1fZGIuZ2V0KCksIG1ldGFk
YXRhLT5pZCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQwNSwxNSArNDA2LDEyIEBAIGJv
b2wgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgIElEQl9UUkFDRSgiSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6ZGVsZXRlRGF0YWJh
c2UiKTsKICAgICBPd25QdHI8TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uPiB0cmFuc2FjdGlv
biA9IExldmVsREJXcml0ZU9ubHlUcmFuc2FjdGlvbjo6Y3JlYXRlKG1fZGIuZ2V0KCkpOwogCi0g
ICAgaW50NjRfdCBkYXRhYmFzZUlkOwotICAgIFN0cmluZyB2ZXJzaW9uOwotICAgIGludDY0X3Qg
aW50VmVyc2lvbjsKLSAgICBpbnQ2NF90IG1heE9iamVjdFN0b3JlSWQ7Ci0gICAgaWYgKCFnZXRJ
REJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsIHZlcnNpb24sIGludFZlcnNpb24sIGRhdGFiYXNlSWQs
IG1heE9iamVjdFN0b3JlSWQpKQorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGE7Cisg
ICAgaWYgKCFnZXRJREJEYXRhYmFzZU1ldGFEYXRhKG5hbWUsICZtZXRhZGF0YSkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJh
c2VNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok9y
aWdpbk5hbWUpOwotICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gRGF0YWJhc2VNZXRh
RGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQgKyAxLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmln
aW5OYW1lKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1ldGFE
YXRhS2V5OjplbmNvZGUobWV0YWRhdGEuaWQsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5h
bWUpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gRGF0YWJhc2VNZXRhRGF0YUtl
eTo6ZW5jb2RlKG1ldGFkYXRhLmlkICsgMSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFt
ZSk7CiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRv
cigpOwogICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBh
cmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKQogICAgICAgICB0cmFu
c2FjdGlvbi0+cmVtb3ZlKGl0LT5rZXkoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKaW5kZXggY2FhNTdm
NTE0YjU5OThkNGU4YjQyODgxYWQxMmExNDc5ZjNlYjg4ZC4uMGNmMzI3NmIzMmVkZDk1NTA3N2Jm
ODllYjQ5YzE5NGRiYzdhYWE4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaApAQCAtNDUsNyArNDUsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCTGV2ZWxEQkJhY2tpbmdTdG9yZSgpOwogCiAgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMp
OwotICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYg
bmFtZSwgU3RyaW5nJiBmb3VuZFZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50
NjRfdCYgZm91bmRJZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCk7CisgICAgdmlydHVhbCBi
b29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJEYXRhYmFz
ZU1ldGFkYXRhKik7CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVy
c2lvbiwgaW50NjRfdCYgcm93SWQpOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFz
ZU1ldGFEYXRhKElEQkJhY2tpbmdTdG9yZTo6VHJhbnNhY3Rpb24qLCBpbnQ2NF90IHJvd0lkLCBj
b25zdCBTdHJpbmcmIHZlcnNpb24pOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRhYmFz
ZUludFZlcnNpb24oSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQs
IGludDY0X3QgaW50VmVyc2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCmlu
ZGV4IDQzNTNkYjlmZjFjZDJiMDkzNWRlMjVjNmQyZDVlOWUwYWIwNmJlMjIuLmM2ZWExM2M1MDE5
ZDhjZjgzMGJmMWRmOTA2Mzg4MWYxZDQ4ZDY4ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZElu
dGVyZmFjZS5oCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIElEQk9iamVjdFN0b3JlQmFja2Vu
ZEludGVyZmFjZV9oCiAKICNpbmNsdWRlICJJREJDdXJzb3IuaCIKKyNpbmNsdWRlICJJREJUcmFu
c2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5oCmluZGV4IGQ2NzNjMDJkOTczZjM1NjFj
MjdjMmZlYTU3MzNmMTJkNDUzYWZhYmEuLjg5OTM5YmY4NTk3NWIxY2I5ZjdmNTBiNTE5N2Y5ZjZh
YzMxYmZjOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QlRyYW5zYWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURC
VHJhbnNhY3Rpb24uaApAQCAtMzUsOCArMzUsNiBAQAogI2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIu
aCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNp
bmNsdWRlICJJREJNZXRhZGF0YS5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLmgiCiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgpAQCAtNDcsNiAr
NDUsOCBAQCBjbGFzcyBJREJDdXJzb3I7CiBjbGFzcyBJREJEYXRhYmFzZTsKIGNsYXNzIElEQk9i
amVjdFN0b3JlOwogY2xhc3MgSURCT3BlbkRCUmVxdWVzdDsKK2NsYXNzIElEQlRyYW5zYWN0aW9u
QmFja2VuZEludGVyZmFjZTsKK3N0cnVjdCBJREJPYmplY3RTdG9yZU1ldGFkYXRhOwogCiBjbGFz
cyBJREJUcmFuc2FjdGlvbiA6IHB1YmxpYyBJREJUcmFuc2FjdGlvbkNhbGxiYWNrcywgcHVibGlj
IEV2ZW50VGFyZ2V0LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169513</attachid>
            <date>2012-10-18 17:37:29 -0700</date>
            <delta_ts>2012-10-18 18:04:00 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-99773-20121018173614.patch</filename>
            <type>text/plain</type>
            <size>28046</size>
            <attacher name="Alec Flett">alecflett</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjM4MzdlMDY3N2Q0M2Uz
Zjc5ZmJjZjdmNGJjZjYxMDJmMWIyNTBkNC4uNGNhYjI0NTU5OGFkZGMxNTNhMWYzZTBhYjdlOGVl
MDRlYjMyYWYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDEyLTEwLTE4ICBBbGVj
IEZsZXR0ICA8YWxlY2ZsZXR0QGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFJl
ZmFjdG9yIElEQkRhdGFiYXNlQmFja2VuZEltcGwgdG8gdXNlIElEQkRhdGFiYXNlTWV0YWRhdGEK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5NzczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KKworICAgICAgICBSZWZhY3RvciB0byBi
ZWdpbiBzZXBhcmF0aW5nIG91dCBtZXRhZGF0YSBmcm9tIHN0YXRlZnVsIGJhY2tlbmQgb2JqZWN0
cywKKyAgICAgICAgaW4gcHJlcGFyYXRpb24gZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD05OTc3NC4KKworICAgICAgICBBbHNvIGluY2x1ZGVzIHNvbWUgI2luY2x1
ZGUgZGVwZW5kZW5jeSBjbGVhbnVwIHNvIHRoYXQgdGhlIGJhY2tpbmcgc3RvcmUKKyAgICAgICAg
ZGVwZW5kcyBsZXNzIG9uIHRoZSBzdGF0ZWZ1bCBiYWNrZW5kIG9iamVjdHMuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIGFzIHRoaXMgaXMgcHVyZWx5IGEgcmVmYWN0b3IuCisKKyAgICAgICAgKiBN
b2R1bGVzL2luZGV4ZWRkYi9JREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoSURCQmFja2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5k
SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFz
ZUJhY2tlbmRJbXBsOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6
OklEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGVPYmplY3RTdG9yZSk6CisgICAgICAgIChXZWJD
b3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRWZXJzaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cHJvY2Vzc1BlbmRp
bmdDYWxscyk6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpvcGVu
Q29ubmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpy
dW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SURCRGF0
YWJhc2VCYWNrZW5kSW1wbDo6b3BlbkNvbm5lY3Rpb25XaXRoVmVyc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZSk6CisgICAgICAg
IChXZWJDb3JlOjpJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpsb2FkT2JqZWN0U3RvcmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbik6Cisg
ICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oOgorICAg
ICAgICAoV2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6aWQpOgorICAgICAgICAoSURC
RGF0YWJhc2VCYWNrZW5kSW1wbCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2
ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2lu
Z1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxl
dmVsREJCYWNraW5nU3RvcmU6OmRlbGV0ZURhdGFiYXNlKToKKyAgICAgICAgKiBNb2R1bGVzL2lu
ZGV4ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmg6CisgICAgICAgIChJREJMZXZlbERCQmFj
a2luZ1N0b3JlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJPYmplY3RTdG9yZUJh
Y2tlbmRJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2Fj
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZSk6CisKIDIwMTItMTAtMTggIFRha2FzaGkgU2FrYW1v
dG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjEzMTQ2NCk6IE51
bGwtcG9pbnRlciBjcmFzaCBpbiBTdHlsZVJlc29sdmVyOjpzdHlsZUZvckVsZW1lbnQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkJhY2tpbmdTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKaW5k
ZXggY2MxOTdjMjE3ZmU2NWVkYTkyY2UwNDI1NDU0YmI0MzZhZGM3OTM3MS4uZDM3NDkzYjk4MzBj
ZGYyNjZkYzE4YzYyNjVhOTdhOTU4NTY3NjUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCQmFja2luZ1N0b3JlLmgKQEAgLTI5LDE4ICsyOSwxOSBAQAog
I2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQogCiAjaW5jbHVkZSAiSURCQ3Vyc29yLmgiCi0j
aW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaCIKLSNpbmNsdWRlICJTUUxpdGVE
YXRhYmFzZS5oIgorI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBJREJLZXk7CiBjbGFzcyBJREJL
ZXlSYW5nZTsKIGNsYXNzIFNlY3VyaXR5T3JpZ2luOworc3RydWN0IElEQkRhdGFiYXNlTWV0YWRh
dGE7CiAKIGNsYXNzIElEQkJhY2tpbmdTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tp
bmdTdG9yZT4gewogcHVibGljOgpAQCAtNDksNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+SURCQmFja2luZ1N0b3JlKCkge307CiAKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VO
YW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBn
ZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3RyaW5nJiBmb3VuZFN0
cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCwg
aW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBnZXRJREJE
YXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSog
Zm91bmRNZXRhZGF0YSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjcmVhdGVJREJEYXRhYmFzZU1l
dGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBzdHJpbmdWZXJzaW9uLCBp
bnQ2NF90IGludFZlcnNpb24sIGludDY0X3QmIHJvd0lkKSA9IDA7CiAgICAgdmlydHVhbCBib29s
IHVwZGF0ZUlEQkRhdGFiYXNlSW50VmVyc2lvbihUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQs
IGludDY0X3QgaW50VmVyc2lvbikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCB1cGRhdGVJREJEYXRh
YmFzZU1ldGFEYXRhKFRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgY29uc3QgU3RyaW5nJiB2
ZXJzaW9uKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9JREJDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNv
ci5oCmluZGV4IGZlNzI1YzliYTc4NzE5NDVhMGIzNzgzZjg2NGZhOTUzMDA4MjJmYzYuLjU1ODlj
MjIyZmM1N2E4YjUyZjZlM2Y2NWViYjY5YzJlN2YyMjI1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5oCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNs
dWRlICJJREJLZXkuaCIKICNpbmNsdWRlICJJREJUcmFuc2FjdGlvbi5oIgorI2luY2x1ZGUgIlNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3JCYWNrZW5kSW1wbC5oCmluZGV4
IDNiOTJmMTE3ZWYxZTRlMmY5NzFlNzIwOWM4Y2Q1NDAzODdlMDBlZGUuLjFmNzRjMzM5MWUyZjk5
ZjBjNmEzNjIzYmUwZDY5MWNjODMxMzNlOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvckJhY2tlbmRJbXBsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yQmFja2VuZEltcGwuaApAQCAtMzIsNiArMzIs
OCBAQAogI2luY2x1ZGUgIklEQkJhY2tpbmdTdG9yZS5oIgogI2luY2x1ZGUgIklEQkN1cnNvci5o
IgogI2luY2x1ZGUgIklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbXBsLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgpAQCAtNDIsOCArNDQsNiBAQCBjbGFzcyBJREJEYXRh
YmFzZUJhY2tlbmRJbXBsOwogY2xhc3MgSURCSW5kZXhCYWNrZW5kSW1wbDsKIGNsYXNzIElEQktl
eVJhbmdlOwogY2xhc3MgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW1wbDsKLWNsYXNzIElEQlRyYW5z
YWN0aW9uQmFja2VuZEltcGw7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7CiAKIGNsYXNz
IElEQkN1cnNvckJhY2tlbmRJbXBsIDogcHVibGljIElEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2Ug
ewogcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
SURCRGF0YWJhc2VCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcAppbmRleCA0ZTg5NTQxN2Q0NjFiZDY4ZmMx
MTgwMzQ1Yzc2OTE5NmI0YjE4ODVjLi5kNWZiZDZkZDRhNzI0MGQxMTZkNTMxZTY5YWJlZWI4YmY0
OWFlOTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJE
YXRhYmFzZUJhY2tlbmRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmNwcApAQCAtMTMzLDI4ICsxMzMsMjQgQEAgY29u
c3QgY2hhciogTm9TdHJpbmdWZXJzaW9uID0gIiI7CiAKIElEQkRhdGFiYXNlQmFja2VuZEltcGw6
OklEQkRhdGFiYXNlQmFja2VuZEltcGwoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJCYWNraW5nU3Rv
cmUqIGJhY2tpbmdTdG9yZSwgSURCRmFjdG9yeUJhY2tlbmRJbXBsKiBmYWN0b3J5LCBjb25zdCBT
dHJpbmcmIHVuaXF1ZUlkZW50aWZpZXIpCiAgICAgOiBtX2JhY2tpbmdTdG9yZShiYWNraW5nU3Rv
cmUpCi0gICAgLCBtX2lkKEludmFsaWRJZCkKLSAgICAsIG1fbmFtZShuYW1lKQotICAgICwgbV92
ZXJzaW9uKE5vU3RyaW5nVmVyc2lvbikKLSAgICAsIG1faW50VmVyc2lvbihJREJEYXRhYmFzZU1l
dGFkYXRhOjpOb0ludFZlcnNpb24pCi0gICAgLCBtX21heE9iamVjdFN0b3JlSWQoSW52YWxpZElk
KQorICAgICwgbV9tZXRhZGF0YShuYW1lLCBJbnZhbGlkSWQsIE5vU3RyaW5nVmVyc2lvbiwgSURC
RGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uLCBJbnZhbGlkSWQpCiAgICAgLCBtX2lkZW50
aWZpZXIodW5pcXVlSWRlbnRpZmllcikKICAgICAsIG1fZmFjdG9yeShmYWN0b3J5KQogICAgICwg
bV90cmFuc2FjdGlvbkNvb3JkaW5hdG9yKElEQlRyYW5zYWN0aW9uQ29vcmRpbmF0b3I6OmNyZWF0
ZSgpKQogICAgICwgbV9jbG9zaW5nQ29ubmVjdGlvbihmYWxzZSkKIHsKLSAgICBBU1NFUlQoIW1f
bmFtZS5pc051bGwoKSk7CisgICAgQVNTRVJUKCFtX21ldGFkYXRhLm5hbWUuaXNOdWxsKCkpOwog
fQogCiBib29sIElEQkRhdGFiYXNlQmFja2VuZEltcGw6Om9wZW5JbnRlcm5hbCgpCiB7Ci0gICAg
Ym9vbCBzdWNjZXNzID0gbV9iYWNraW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9u
YW1lLCBtX3ZlcnNpb24sIG1faW50VmVyc2lvbiwgbV9pZCwgbV9tYXhPYmplY3RTdG9yZUlkKTsK
LSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHN1Y2Nlc3MgPT0gKG1faWQgIT0gSW52YWxpZElkKSwg
InN1Y2Nlc3MgPSAlcywgbV9pZCA9ICVsbGQiLCBzdWNjZXNzID8gInRydWUiIDogImZhbHNlIiwg
c3RhdGljX2Nhc3Q8bG9uZyBsb25nPihtX2lkKSk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9iYWNr
aW5nU3RvcmUtPmdldElEQkRhdGFiYXNlTWV0YURhdGEobV9tZXRhZGF0YS5uYW1lLCAmbV9tZXRh
ZGF0YSk7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShzdWNjZXNzID09IChtX21ldGFkYXRhLmlk
ICE9IEludmFsaWRJZCksICJzdWNjZXNzID0gJXMsIG1faWQgPSAlbGxkIiwgc3VjY2VzcyA/ICJ0
cnVlIiA6ICJmYWxzZSIsIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZXRhZGF0YS5pZCkpOwog
ICAgIGlmIChzdWNjZXNzKSB7CiAgICAgICAgIGxvYWRPYmplY3RTdG9yZXMoKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQotICAgIHJldHVybiBtX2JhY2tpbmdTdG9yZS0+Y3JlYXRlSURC
RGF0YWJhc2VNZXRhRGF0YShtX25hbWUsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uLCBtX2lkKTsK
KyAgICByZXR1cm4gbV9iYWNraW5nU3RvcmUtPmNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEobV9t
ZXRhZGF0YS5uYW1lLCBtX21ldGFkYXRhLnZlcnNpb24sIG1fbWV0YWRhdGEuaW50VmVyc2lvbiwg
bV9tZXRhZGF0YS5pZCk7CiB9CiAKIElEQkRhdGFiYXNlQmFja2VuZEltcGw6On5JREJEYXRhYmFz
ZUJhY2tlbmRJbXBsKCkKQEAgLTE2OCw3ICsxNjQsOCBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6YmFja2luZ1N0b3JlKCkgY29uc3QKIAogSURC
RGF0YWJhc2VNZXRhZGF0YSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjptZXRhZGF0YSgpIGNvbnN0
CiB7Ci0gICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YShtX25hbWUsIG1faWQsIG1fdmVy
c2lvbiwgbV9pbnRWZXJzaW9uLCBtX21heE9iamVjdFN0b3JlSWQpOworICAgIC8vIEZJWE1FOiBG
aWd1cmUgb3V0IGEgd2F5IHRvIGtlZXAgbV9tZXRhZGF0YS5vYmplY3RTdG9yZXMuZ2V0KE4pLmlu
ZGV4ZXMgdXAgdG8gZGF0ZSByYXRoZXIgdGhhbiByZWdlbmVyYXRpbmcgdGhpcyBldmVyeSB0aW1l
LgorICAgIElEQkRhdGFiYXNlTWV0YWRhdGEgbWV0YWRhdGEobV9tZXRhZGF0YSk7CiAgICAgZm9y
IChPYmplY3RTdG9yZU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29iamVjdFN0b3Jlcy5iZWdp
bigpOyBpdCAhPSBtX29iamVjdFN0b3Jlcy5lbmQoKTsgKytpdCkKICAgICAgICAgbWV0YWRhdGEu
b2JqZWN0U3RvcmVzLnNldChpdC0+a2V5LCBpdC0+dmFsdWUtPm1ldGFkYXRhKCkpOwogICAgIHJl
dHVybiBtZXRhZGF0YTsKQEAgLTE4NCw5ICsxODEsOSBAQCBQYXNzUmVmUHRyPElEQk9iamVjdFN0
b3JlQmFja2VuZEludGVyZmFjZT4gSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6Y3JlYXRlT2JqZWN0
UwogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IElE
QlRyYW5zYWN0aW9uQmFja2VuZEltcGw6OmZyb20odHJhbnNhY3Rpb25QdHIpOwogICAgIEFTU0VS
VCh0cmFuc2FjdGlvbi0+bW9kZSgpID09IElEQlRyYW5zYWN0aW9uOjpWRVJTSU9OX0NIQU5HRSk7
CiAKLSAgICAvLyBGSVhNRTogRml4IGVkZ2UgY2FzZXMgYXJvdW5kIHRyYW5zYWN0aW9uIGFib3J0
cyB0aGF0IHByZXZlbnQgdGhpcyBmcm9tIGp1c3QgYmVpbmcgQVNTRVJUKGlkID09IG1fbWF4T2Jq
ZWN0U3RvcmVJZCArIDEpCi0gICAgQVNTRVJUKGlkID4gbV9tYXhPYmplY3RTdG9yZUlkKTsKLSAg
ICBtX21heE9iamVjdFN0b3JlSWQgPSBpZDsKKyAgICAvLyBGSVhNRTogRml4IGVkZ2UgY2FzZXMg
YXJvdW5kIHRyYW5zYWN0aW9uIGFib3J0cyB0aGF0IHByZXZlbnQgdGhpcyBmcm9tIGp1c3QgYmVp
bmcgQVNTRVJUKGlkID09IG1fbWV0YWRhdGEubWF4T2JqZWN0U3RvcmVJZCArIDEpCisgICAgQVNT
RVJUKGlkID4gbV9tZXRhZGF0YS5tYXhPYmplY3RTdG9yZUlkKTsKKyAgICBtX21ldGFkYXRhLm1h
eE9iamVjdFN0b3JlSWQgPSBpZDsKIAogICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBs
PiBkYXRhYmFzZSA9IHRoaXM7CiAgICAgaWYgKCF0cmFuc2FjdGlvbi0+c2NoZWR1bGVUYXNrKApA
QCAtMjc1LDcgKzI3Miw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6c2V0VmVyc2lv
bihjb25zdCBTdHJpbmcmIHZlcnNpb24sIFBhc3NSZWZQdHI8SURCQ2FsCiAgICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEltcGw+IGRhdGFiYXNlID0gdGhpczsKICAgICBpZiAoIXRyYW5zYWN0
aW9uLT5zY2hlZHVsZVRhc2soCiAgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRh
dGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbCwgZGF0YWJhc2UsIHZlcnNpb24s
IGNhbGxiYWNrcywgdHJhbnNhY3Rpb24pLAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNr
KCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpyZXNldFZlcnNpb24sIGRhdGFiYXNlLCBtX3ZlcnNp
b24sIG1faW50VmVyc2lvbikpKSB7CisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJklE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwgZGF0YWJhc2UsIG1fbWV0YWRhdGEu
dmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKSkpIHsKICAgICAgICAgLy8gRklYTUU6IFJl
bW92ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBsaW5lcy4KICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIGVjID0gSURCRGF0YWJhc2VFeGNlcHRpb246OlRSQU5TQUNUSU9OX0lO
QUNUSVZFX0VSUjsKQEAgLTI4Niw5ICsyODMsOSBAQCB2b2lkIElEQkRhdGFiYXNlQmFja2VuZElt
cGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZgog
ewogICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBsPiB0cmFuc2FjdGlvbiA9IHBy
cFRyYW5zYWN0aW9uOwogICAgIGludDY0X3QgZGF0YWJhc2VJZCA9IGRhdGFiYXNlLT5pZCgpOwot
ICAgIGRhdGFiYXNlLT5tX3ZlcnNpb24gPSB2ZXJzaW9uOwotICAgIGRhdGFiYXNlLT5tX2ludFZl
cnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247Ci0gICAgaWYgKCFkYXRh
YmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlTWV0YURhdGEodHJhbnNhY3Rp
b24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX3Zl
cnNpb24pIHx8ICFkYXRhYmFzZS0+bV9iYWNraW5nU3RvcmUtPnVwZGF0ZUlEQkRhdGFiYXNlSW50
VmVyc2lvbih0cmFuc2FjdGlvbi0+YmFja2luZ1N0b3JlVHJhbnNhY3Rpb24oKSwgZGF0YWJhc2VJ
ZCwgZGF0YWJhc2UtPm1faW50VmVyc2lvbikpIHsKKyAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS52
ZXJzaW9uID0gdmVyc2lvbjsKKyAgICBkYXRhYmFzZS0+bV9tZXRhZGF0YS5pbnRWZXJzaW9uID0g
SURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uOworICAgIGlmICghZGF0YWJhc2UtPm1f
YmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZU1ldGFEYXRhKHRyYW5zYWN0aW9uLT5iYWNr
aW5nU3RvcmVUcmFuc2FjdGlvbigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9tZXRhZGF0YS52
ZXJzaW9uKSB8fCAhZGF0YWJhc2UtPm1fYmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUlu
dFZlcnNpb24odHJhbnNhY3Rpb24tPmJhY2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNl
SWQsIGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb24pKSB7CiAgICAgICAgIFJlZlB0cjxJ
REJEYXRhYmFzZUVycm9yPiBlcnJvciA9IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRh
YmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9FUlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxl
IHN0b3JhZ2UuIik7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAg
IHRyYW5zYWN0aW9uLT5hYm9ydChlcnJvcik7CkBAIC0zMDAsMTAgKzI5NywxMCBAQCB2b2lkIElE
QkRhdGFiYXNlQmFja2VuZEltcGw6OnNldFZlcnNpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZgogdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJz
aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW1wbD4gZGF0YWJhc2UsIGludDY0X3QgdmVyc2lvbiwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbXBs
PiB0cmFuc2FjdGlvbikKIHsKICAgICBpbnQ2NF90IGRhdGFiYXNlSWQgPSBkYXRhYmFzZS0+aWQo
KTsKLSAgICBpbnQ2NF90IG9sZFZlcnNpb24gPSBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uOworICAg
IGludDY0X3Qgb2xkVmVyc2lvbiA9IGRhdGFiYXNlLT5tX21ldGFkYXRhLmludFZlcnNpb247CiAg
ICAgQVNTRVJUKHZlcnNpb24gPiBvbGRWZXJzaW9uKTsKLSAgICBkYXRhYmFzZS0+bV9pbnRWZXJz
aW9uID0gdmVyc2lvbjsKLSAgICBpZiAoIWRhdGFiYXNlLT5tX2JhY2tpbmdTdG9yZS0+dXBkYXRl
SURCRGF0YWJhc2VJbnRWZXJzaW9uKHRyYW5zYWN0aW9uLT5iYWNraW5nU3RvcmVUcmFuc2FjdGlv
bigpLCBkYXRhYmFzZUlkLCBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uKSkgeworICAgIGRhdGFiYXNl
LT5tX21ldGFkYXRhLmludFZlcnNpb24gPSB2ZXJzaW9uOworICAgIGlmICghZGF0YWJhc2UtPm1f
YmFja2luZ1N0b3JlLT51cGRhdGVJREJEYXRhYmFzZUludFZlcnNpb24odHJhbnNhY3Rpb24tPmJh
Y2tpbmdTdG9yZVRyYW5zYWN0aW9uKCksIGRhdGFiYXNlSWQsIGRhdGFiYXNlLT5tX21ldGFkYXRh
LmludFZlcnNpb24pKSB7CiAgICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUVycm9yPiBlcnJvciA9
IElEQkRhdGFiYXNlRXJyb3I6OmNyZWF0ZShJREJEYXRhYmFzZUV4Y2VwdGlvbjo6VU5LTk9XTl9F
UlIsICJFcnJvciB3cml0aW5nIGRhdGEgdG8gc3RhYmxlIHN0b3JhZ2UuIik7CiAgICAgICAgIGNh
bGxiYWNrcy0+b25FcnJvcihlcnJvcik7CiAgICAgICAgIHRyYW5zYWN0aW9uLT5hYm9ydChlcnJv
cik7CkBAIC0zNjMsOCArMzYwLDggQEAgc2l6ZV90IElEQkRhdGFiYXNlQmFja2VuZEltcGw6OmNv
bm5lY3Rpb25Db3VudCgpCiB2b2lkIElEQkRhdGFiYXNlQmFja2VuZEltcGw6OnByb2Nlc3NQZW5k
aW5nQ2FsbHMoKQogewogICAgIGlmIChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9u
KSB7Ci0gICAgICAgIEFTU0VSVChtX3BlbmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLT52
ZXJzaW9uKCkgPT0gbV9pbnRWZXJzaW9uKTsKLSAgICAgICAgQVNTRVJUKG1faWQgIT0gSW52YWxp
ZElkKTsKKyAgICAgICAgQVNTRVJUKG1fcGVuZGluZ1NlY29uZEhhbGZPcGVuV2l0aFZlcnNpb24t
PnZlcnNpb24oKSA9PSBtX21ldGFkYXRhLmludFZlcnNpb24pOworICAgICAgICBBU1NFUlQobV9t
ZXRhZGF0YS5pZCAhPSBJbnZhbGlkSWQpOwogICAgICAgICBtX3BlbmRpbmdTZWNvbmRIYWxmT3Bl
bldpdGhWZXJzaW9uLT5jYWxsYmFja3MoKS0+b25TdWNjZXNzKHRoaXMpOwogICAgICAgICBtX3Bl
bmRpbmdTZWNvbmRIYWxmT3BlbldpdGhWZXJzaW9uLnJlbGVhc2UoKTsKICAgICAgICAgLy8gRmFs
bCB0aHJvdWdoIHdoZW4gY29tcGxldGUsIGFzIHBlbmRpbmcgZGVsZXRlcyBtYXkgYmUgKHBhcnRp
YWxseSkgdW5ibG9ja2VkLgpAQCAtNDQ1LDExICs0NDIsMTEgQEAgdm9pZCBJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsOjpvcGVuQ29ubmVjdGlvbihQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJh
Y2tzLAogICAgICAgICBtX3BlbmRpbmdPcGVuQ2FsbHMuYXBwZW5kKFBlbmRpbmdPcGVuQ2FsbDo6
Y3JlYXRlKGNhbGxiYWNrcywgZGF0YWJhc2VDYWxsYmFja3MpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAobV9pZCA9PSBJbnZhbGlkSWQgJiYgIW9wZW5JbnRlcm5hbCgpKSB7Cisg
ICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkICYmICFvcGVuSW50ZXJuYWwoKSkgewog
ICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRh
dGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV92ZXJzaW9uID09IE5vU3RyaW5nVmVyc2lvbiAm
JiBtX2ludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKSB7Cisg
ICAgaWYgKG1fbWV0YWRhdGEudmVyc2lvbiA9PSBOb1N0cmluZ1ZlcnNpb24gJiYgbV9tZXRhZGF0
YS5pbnRWZXJzaW9uID09IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbikgewogICAg
ICAgICAvLyBTcGVjIHNheXM6IElmIG5vIHZlcnNpb24gaXMgc3BlY2lmaWVkIGFuZCBubyBkYXRh
YmFzZSBleGlzdHMsIHNldAogICAgICAgICAvLyBkYXRhYmFzZSB2ZXJzaW9uIHRvIDEuIFdlIGlu
ZmVyIHRoYXQgdGhlIGRhdGFiYXNlIGRpZG4ndCBleGlzdCBmcm9tCiAgICAgICAgIC8vIGl0cyBs
YWNrIG9mIGVpdGhlciB0eXBlIG9mIHZlcnNpb24uCkBAIC00NjgsNyArNDY1LDcgQEAgdm9pZCBJ
REJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5JbnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50
NjRfdCByZXF1ZXN0ZWRWZXIKICAgICBmb3IgKERhdGFiYXNlQ2FsbGJhY2tzU2V0Ojpjb25zdF9p
dGVyYXRvciBpdCA9IG1fZGF0YWJhc2VDYWxsYmFja3NTZXQuYmVnaW4oKTsgaXQgIT0gbV9kYXRh
YmFzZUNhbGxiYWNrc1NldC5lbmQoKTsgKytpdCkgewogICAgICAgICAvLyBGcm9udCBlbmQgZW5z
dXJlcyB0aGUgZXZlbnQgaXMgbm90IGZpcmVkIGF0IGNvbm5lY3Rpb25zIHRoYXQgaGF2ZSBjbG9z
ZVBlbmRpbmcgc2V0LgogICAgICAgICBpZiAoKml0ICE9IGRhdGFiYXNlQ2FsbGJhY2tzKQotICAg
ICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX2ludFZlcnNpb24sIHJlcXVlc3RlZFZl
cnNpb24pOworICAgICAgICAgICAgKCppdCktPm9uVmVyc2lvbkNoYW5nZShtX21ldGFkYXRhLmlu
dFZlcnNpb24sIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0KICAgICAvLyBUaGUgc3BlYyBkaWN0
YXRlcyB3ZSB3YWl0IHVudGlsIGFsbCB0aGUgdmVyc2lvbiBjaGFuZ2UgZXZlbnRzIGFyZQogICAg
IC8vIGRlbGl2ZXJlZCBhbmQgdGhlbiBjaGVjayBtX2RhdGFiYXNlQ2FsbGJhY2tzLmVtcHR5KCkg
YmVmb3JlIHByb2NlZWRpbmcKQEAgLTQ3OCw3ICs0NzUsNyBAQCB2b2lkIElEQkRhdGFiYXNlQmFj
a2VuZEltcGw6OnJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihpbnQ2NF90IHJlcXVlc3Rl
ZFZlcgogICAgIC8vIHRlbGxzIHVzIHRoYXQgYWxsIHRoZSBibG9ja2VkIGV2ZW50cyBoYXZlIGJl
ZW4gZGVsaXZlcmVkLiBTZWUKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NzExMzAKICAgICBpZiAoY29ubmVjdGlvbkNvdW50KCkpCi0gICAgICAgIGNhbGxi
YWNrcy0+b25CbG9ja2VkKG1faW50VmVyc2lvbik7CisgICAgICAgIGNhbGxiYWNrcy0+b25CbG9j
a2VkKG1fbWV0YWRhdGEuaW50VmVyc2lvbik7CiAgICAgLy8gRklYTUU6IEFkZCB0ZXN0IGZvciBt
X3J1bm5pbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24uCiAgICAgaWYgKG1fcnVubmluZ1ZlcnNp
b25DaGFuZ2VUcmFuc2FjdGlvbiB8fCBjb25uZWN0aW9uQ291bnQoKSkgewogICAgICAgICBtX3Bl
bmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5XaXRoVmVyc2lvbkNh
bGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCByZXF1ZXN0ZWRWZXJzaW9u
KSk7CkBAIC00OTMsNyArNDkwLDcgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpydW5J
bnRWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24oaW50NjRfdCByZXF1ZXN0ZWRWZXIKIAogICAgIFJl
ZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZSA9IHRoaXM7CiAgICAgT3duUHRy
PFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IGludFZlcnNpb25UYXNrID0gY3JlYXRlQ2Fs
bGJhY2tUYXNrKCZJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpzZXRJbnRWZXJzaW9uSW50ZXJuYWws
IGRhdGFiYXNlLCByZXF1ZXN0ZWRWZXJzaW9uLCBjYWxsYmFja3MsIHRyYW5zYWN0aW9uKTsKLSAg
ICBPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gcmVzZXRWZXJzaW9uT25BYm9y
dFRhc2sgPSBjcmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0
VmVyc2lvbiwgZGF0YWJhc2UsIG1fdmVyc2lvbiwgbV9pbnRWZXJzaW9uKTsKKyAgICBPd25QdHI8
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gcmVzZXRWZXJzaW9uT25BYm9ydFRhc2sgPSBj
cmVhdGVDYWxsYmFja1Rhc2soJklEQkRhdGFiYXNlQmFja2VuZEltcGw6OnJlc2V0VmVyc2lvbiwg
ZGF0YWJhc2UsIG1fbWV0YWRhdGEudmVyc2lvbiwgbV9tZXRhZGF0YS5pbnRWZXJzaW9uKTsKICAg
ICBpZiAoIXRyYW5zYWN0aW9uLT5zY2hlZHVsZVRhc2soaW50VmVyc2lvblRhc2sucmVsZWFzZSgp
LCByZXNldFZlcnNpb25PbkFib3J0VGFzay5yZWxlYXNlKCkpKSB7CiAgICAgICAgIC8vIEZJWE1F
OiBSZW1vdmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgbGluZXMuCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwpAQCAtNTEyLDIzICs1MDksMjMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJ
bXBsOjpvcGVuQ29ubmVjdGlvbldpdGhWZXJzaW9uKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPgog
ICAgICAgICBtX3BlbmRpbmdPcGVuV2l0aFZlcnNpb25DYWxscy5hcHBlbmQoUGVuZGluZ09wZW5X
aXRoVmVyc2lvbkNhbGw6OmNyZWF0ZShjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzLCB2ZXJz
aW9uKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1faWQgPT0gSW52YWxpZElk
KSB7CisgICAgaWYgKG1fbWV0YWRhdGEuaWQgPT0gSW52YWxpZElkKSB7CiAgICAgICAgIGlmIChv
cGVuSW50ZXJuYWwoKSkKLSAgICAgICAgICAgIEFTU0VSVChtX2ludFZlcnNpb24gPT0gSURCRGF0
YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKKyAgICAgICAgICAgIEFTU0VSVChtX21ldGFk
YXRhLmludFZlcnNpb24gPT0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9uKTsKICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFs
IGVycm9yLiIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBp
ZiAodmVyc2lvbiA+IG1faW50VmVyc2lvbikgeworICAgIGlmICh2ZXJzaW9uID4gbV9tZXRhZGF0
YS5pbnRWZXJzaW9uKSB7CiAgICAgICAgIHJ1bkludFZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbih2
ZXJzaW9uLCBjYWxsYmFja3MsIGRhdGFiYXNlQ2FsbGJhY2tzKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBpZiAodmVyc2lvbiA8IG1faW50VmVyc2lvbikgewotICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9u
OjpWRVJfRVJSLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3RlZCB2ZXJzaW9uICglbGxkKSBp
cyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsbGQpLiIsIHN0YXRpY19jYXN0PGxv
bmcgbG9uZz4odmVyc2lvbiksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9pbnRWZXJzaW9uKSkp
KTsKKyAgICBpZiAodmVyc2lvbiA8IG1fbWV0YWRhdGEuaW50VmVyc2lvbikgeworICAgICAgICBj
YWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhj
ZXB0aW9uOjpWRVJfRVJSLCBTdHJpbmc6OmZvcm1hdCgiVGhlIHJlcXVlc3RlZCB2ZXJzaW9uICgl
bGxkKSBpcyBsZXNzIHRoYW4gdGhlIGV4aXN0aW5nIHZlcnNpb24gKCVsbGQpLiIsIHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4odmVyc2lvbiksIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV9tZXRhZGF0
YS5pbnRWZXJzaW9uKSkpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBBU1NFUlQodmVy
c2lvbiA9PSBtX2ludFZlcnNpb24pOworICAgIEFTU0VSVCh2ZXJzaW9uID09IG1fbWV0YWRhdGEu
aW50VmVyc2lvbik7CiAgICAgbV9kYXRhYmFzZUNhbGxiYWNrc1NldC5hZGQoZGF0YWJhc2VDYWxs
YmFja3MpOwogICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKHRoaXMpOwogfQpAQCAtNTUzLDEzICs1
NTAsMTMgQEAgdm9pZCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpkZWxldGVEYXRhYmFzZShQYXNz
UmVmUHRyPElEQkNhbGxiYWNrcz4gcHJwQ2FsbGJhY2sKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBBU1NFUlQobV9iYWNraW5nU3RvcmUpOwotICAgIGlmICghbV9iYWNraW5nU3RvcmUtPmRl
bGV0ZURhdGFiYXNlKG1fbmFtZSkpIHsKKyAgICBpZiAoIW1fYmFja2luZ1N0b3JlLT5kZWxldGVE
YXRhYmFzZShtX21ldGFkYXRhLm5hbWUpKSB7CiAgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJ
REJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJS
LCAiSW50ZXJuYWwgZXJyb3IuIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fdmVy
c2lvbiA9IE5vU3RyaW5nVmVyc2lvbjsKLSAgICBtX2lkID0gSW52YWxpZElkOwotICAgIG1faW50
VmVyc2lvbiA9IElEQkRhdGFiYXNlTWV0YWRhdGE6Ok5vSW50VmVyc2lvbjsKKyAgICBtX21ldGFk
YXRhLnZlcnNpb24gPSBOb1N0cmluZ1ZlcnNpb247CisgICAgbV9tZXRhZGF0YS5pZCA9IEludmFs
aWRJZDsKKyAgICBtX21ldGFkYXRhLmludFZlcnNpb24gPSBJREJEYXRhYmFzZU1ldGFkYXRhOjpO
b0ludFZlcnNpb247CiAgICAgbV9vYmplY3RTdG9yZXMuY2xlYXIoKTsKICAgICBjYWxsYmFja3Mt
Pm9uU3VjY2VzcygpOwogfQpAQCAtNjExLDcgKzYwOCw3IEBAIHZvaWQgSURCRGF0YWJhc2VCYWNr
ZW5kSW1wbDo6bG9hZE9iamVjdFN0b3JlcygpCiAgICAgVmVjdG9yPElEQktleVBhdGg+IGtleVBh
dGhzOwogICAgIFZlY3Rvcjxib29sPiBhdXRvSW5jcmVtZW50RmxhZ3M7CiAgICAgVmVjdG9yPGlu
dDY0X3Q+IG1heEluZGV4SWRzOwotICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMo
bV9pZCwgaWRzLCBuYW1lcywga2V5UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncywgbWF4SW5kZXhJ
ZHMpOworICAgIG1fYmFja2luZ1N0b3JlLT5nZXRPYmplY3RTdG9yZXMobV9tZXRhZGF0YS5pZCwg
aWRzLCBuYW1lcywga2V5UGF0aHMsIGF1dG9JbmNyZW1lbnRGbGFncywgbWF4SW5kZXhJZHMpOwog
CiAgICAgQVNTRVJUKG5hbWVzLnNpemUoKSA9PSBpZHMuc2l6ZSgpKTsKICAgICBBU1NFUlQoa2V5
UGF0aHMuc2l6ZSgpID09IGlkcy5zaXplKCkpOwpAQCAtNjM4LDggKzYzNSw4IEBAIHZvaWQgSURC
RGF0YWJhc2VCYWNrZW5kSW1wbDo6YWRkT2JqZWN0U3RvcmVUb01hcChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlCiAKIHZvaWQgSURCRGF0YWJhc2VCYWNrZW5kSW1wbDo6cmVzZXRWZXJz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+IGRhdGFiYXNlLCBjb25zdCBTdHJpbmcmIHByZXZpb3VzVmVyc2lvbiwgaW50NjRfdCBw
cmV2aW91c0ludFZlcnNpb24pCiB7Ci0gICAgZGF0YWJhc2UtPm1fdmVyc2lvbiA9IHByZXZpb3Vz
VmVyc2lvbjsKLSAgICBkYXRhYmFzZS0+bV9pbnRWZXJzaW9uID0gcHJldmlvdXNJbnRWZXJzaW9u
OworICAgIGRhdGFiYXNlLT5tX21ldGFkYXRhLnZlcnNpb24gPSBwcmV2aW91c1ZlcnNpb247Cisg
ICAgZGF0YWJhc2UtPm1fbWV0YWRhdGEuaW50VmVyc2lvbiA9IHByZXZpb3VzSW50VmVyc2lvbjsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvSURCRGF0YWJhc2VCYWNrZW5kSW1wbC5oCmluZGV4IDk3Yjg1
NWRhZTQwYzAwNmEyMWRhNzZjYjk3YjM4MzBjZjk3NDEzNjYuLjExYTY5ZDBiZmRhNjZiMDYyMDFk
Mzk2M2MwZWUxNDRhYjg4ZTM1ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL0lEQkRhdGFiYXNlQmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9JREJEYXRhYmFzZUJhY2tlbmRJbXBsLmgKQEAgLTUzLDcgKzUzLDcg
QEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBiYWNraW5nU3RvcmUo
KSBjb25zdDsKIAogICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IEludmFsaWRJZCA9IDA7Ci0gICAg
aW50NjRfdCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBpbnQ2NF90IGlkKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRhZGF0YS5pZDsgfQogCiAgICAgdm9pZCBvcGVuQ29ubmVjdGlvbihQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8SURCRGF0YWJhc2VDYWxsYmFja3M+
KTsKICAgICB2b2lkIG9wZW5Db25uZWN0aW9uV2l0aFZlcnNpb24oUGFzc1JlZlB0cjxJREJDYWxs
YmFja3M+LCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiwgaW50NjRfdCB2ZXJzaW9u
KTsKQEAgLTk0LDExICs5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgcmVzZXRWZXJz
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2Vu
ZEltcGw+LCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lvbik7CiAKICAg
ICBSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBtX2JhY2tpbmdTdG9yZTsKLSAgICBpbnQ2NF90IG1f
aWQ7Ci0gICAgU3RyaW5nIG1fbmFtZTsKLSAgICBTdHJpbmcgbV92ZXJzaW9uOwotICAgIGludDY0
X3QgbV9pbnRWZXJzaW9uOwotICAgIGludDY0X3QgbV9tYXhPYmplY3RTdG9yZUlkOworICAgIElE
QkRhdGFiYXNlTWV0YWRhdGEgbV9tZXRhZGF0YTsKIAogICAgIFN0cmluZyBtX2lkZW50aWZpZXI7
CiAgICAgLy8gVGhpcyBtaWdodCBub3QgbmVlZCB0byBiZSBhIFJlZlB0ciBzaW5jZSB0aGUgZmFj
dG9yeSdzIGxpZmV0aW1lIGlzIHRoYXQgb2YgdGhlIHBhZ2UgZ3JvdXAsIGJ1dCBpdCdzIGJldHRl
ciB0byBiZSBjb25zZXJ2aXRpdmUgdGhhbiBzb3JyeS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKaW5k
ZXggZDZmYmI2NzY3ZDU1ZmQ4YTUxY2QxNjhlNzAwMDY5ZDU2NjYyZDk5NC4uZTUxMzUwZDFjZDFk
ZjE5ZDkwY2Y2YjRjY2M4ZTk1YjYwMzU4ZDY1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJJREJLZXlQYXRoLmgiCiAjaW5jbHVkZSAiSURCS2V5
UmFuZ2UuaCIKICNpbmNsdWRlICJJREJMZXZlbERCQ29kaW5nLmgiCisjaW5jbHVkZSAiSURCTWV0
YWRhdGEuaCIKICNpbmNsdWRlICJMZXZlbERCQ29tcGFyYXRvci5oIgogI2luY2x1ZGUgIkxldmVs
REJEYXRhYmFzZS5oIgogI2luY2x1ZGUgIkxldmVsREJJdGVyYXRvci5oIgpAQCAtMzEzLDI1ICsz
MTQsMjUgQEAgdm9pZCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXREYXRhYmFzZU5hbWVzKFZl
Y3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKQogICAgIH0KIH0KIAotYm9vbCBJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgU3Ry
aW5nJiBmb3VuZFN0cmluZ1ZlcnNpb24sIGludDY0X3QmIGZvdW5kSW50VmVyc2lvbiwgaW50NjRf
dCYgZm91bmRJZCwgaW50NjRfdCYgbWF4T2JqZWN0U3RvcmVJZCkKK2Jvb2wgSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZTo6Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElE
QkRhdGFiYXNlTWV0YWRhdGEqIG1ldGFkYXRhKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBr
ZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwogCi0gICAg
Ym9vbCBvayA9IGdldEludChtX2RiLmdldCgpLCBrZXksIGZvdW5kSWQpOworICAgIGJvb2wgb2sg
PSBnZXRJbnQobV9kYi5nZXQoKSwga2V5LCBtZXRhZGF0YS0+aWQpOwogICAgIGlmICghb2spCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG9rID0gZ2V0U3RyaW5nKG1fZGIuZ2V0KCksIERh
dGFiYXNlTWV0YURhdGFLZXk6OmVuY29kZShmb3VuZElkLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpV
c2VyVmVyc2lvbiksIGZvdW5kU3RyaW5nVmVyc2lvbik7CisgICAgb2sgPSBnZXRTdHJpbmcobV9k
Yi5nZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKG1ldGFkYXRhLT5pZCwgRGF0YWJh
c2VNZXRhRGF0YUtleTo6VXNlclZlcnNpb24pLCBtZXRhZGF0YS0+dmVyc2lvbik7CiAgICAgaWYg
KCFvaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgb2sgPSBnZXRWYXJJbnQobV9kYi5n
ZXQoKSwgRGF0YWJhc2VNZXRhRGF0YUtleTo6ZW5jb2RlKGZvdW5kSWQsIERhdGFiYXNlTWV0YURh
dGFLZXk6OlVzZXJJbnRWZXJzaW9uKSwgZm91bmRJbnRWZXJzaW9uKTsKKyAgICBvayA9IGdldFZh
ckludChtX2RiLmdldCgpLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjplbmNvZGUobWV0YWRhdGEtPmlk
LCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpVc2VySW50VmVyc2lvbiksIG1ldGFkYXRhLT5pbnRWZXJz
aW9uKTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKGZvdW5k
SW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpEZWZhdWx0SW50VmVyc2lvbikKLSAg
ICAgICAgZm91bmRJbnRWZXJzaW9uID0gSURCRGF0YWJhc2VNZXRhZGF0YTo6Tm9JbnRWZXJzaW9u
OworICAgIGlmIChtZXRhZGF0YS0+aW50VmVyc2lvbiA9PSBJREJEYXRhYmFzZU1ldGFkYXRhOjpE
ZWZhdWx0SW50VmVyc2lvbikKKyAgICAgICAgbWV0YWRhdGEtPmludFZlcnNpb24gPSBJREJEYXRh
YmFzZU1ldGFkYXRhOjpOb0ludFZlcnNpb247CiAKLSAgICBtYXhPYmplY3RTdG9yZUlkID0gZ2V0
TWF4T2JqZWN0U3RvcmVJZChtX2RiLmdldCgpLCBmb3VuZElkKTsKKyAgICBtZXRhZGF0YS0+bWF4
T2JqZWN0U3RvcmVJZCA9IGdldE1heE9iamVjdFN0b3JlSWQobV9kYi5nZXQoKSwgbWV0YWRhdGEt
PmlkKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDA1LDE1ICs0MDYsMTIgQEAgYm9vbCBJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZShjb25zdCBTdHJpbmcmIG5hbWUp
CiAgICAgSURCX1RSQUNFKCJJREJMZXZlbERCQmFja2luZ1N0b3JlOjpkZWxldGVEYXRhYmFzZSIp
OwogICAgIE93blB0cjxMZXZlbERCV3JpdGVPbmx5VHJhbnNhY3Rpb24+IHRyYW5zYWN0aW9uID0g
TGV2ZWxEQldyaXRlT25seVRyYW5zYWN0aW9uOjpjcmVhdGUobV9kYi5nZXQoKSk7CiAKLSAgICBp
bnQ2NF90IGRhdGFiYXNlSWQ7Ci0gICAgU3RyaW5nIHZlcnNpb247Ci0gICAgaW50NjRfdCBpbnRW
ZXJzaW9uOwotICAgIGludDY0X3QgbWF4T2JqZWN0U3RvcmVJZDsKLSAgICBpZiAoIWdldElEQkRh
dGFiYXNlTWV0YURhdGEobmFtZSwgdmVyc2lvbiwgaW50VmVyc2lvbiwgZGF0YWJhc2VJZCwgbWF4
T2JqZWN0U3RvcmVJZCkpCisgICAgSURCRGF0YWJhc2VNZXRhZGF0YSBtZXRhZGF0YTsKKyAgICBp
ZiAoIWdldElEQkRhdGFiYXNlTWV0YURhdGEobmFtZSwgJm1ldGFkYXRhKSkKICAgICAgICAgcmV0
dXJuIHRydWU7CiAKLSAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RhcnRLZXkgPSBEYXRhYmFzZU1l
dGFEYXRhS2V5OjplbmNvZGUoZGF0YWJhc2VJZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2lu
TmFtZSk7Ci0gICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU1ldGFEYXRh
S2V5OjplbmNvZGUoZGF0YWJhc2VJZCArIDEsIERhdGFiYXNlTWV0YURhdGFLZXk6Ok9yaWdpbk5h
bWUpOworICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtleSA9IERhdGFiYXNlTWV0YURhdGFL
ZXk6OmVuY29kZShtZXRhZGF0YS5pZCwgRGF0YWJhc2VNZXRhRGF0YUtleTo6T3JpZ2luTmFtZSk7
CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0b3BLZXkgPSBEYXRhYmFzZU1ldGFEYXRhS2V5Ojpl
bmNvZGUobWV0YWRhdGEuaWQgKyAxLCBEYXRhYmFzZU1ldGFEYXRhS2V5OjpPcmlnaW5OYW1lKTsK
ICAgICBPd25QdHI8TGV2ZWxEQkl0ZXJhdG9yPiBpdCA9IG1fZGItPmNyZWF0ZUl0ZXJhdG9yKCk7
CiAgICAgZm9yIChpdC0+c2VlayhzdGFydEtleSk7IGl0LT5pc1ZhbGlkKCkgJiYgY29tcGFyZUtl
eXMoaXQtPmtleSgpLCBzdG9wS2V5KSA8IDA7IGl0LT5uZXh0KCkpCiAgICAgICAgIHRyYW5zYWN0
aW9uLT5yZW1vdmUoaXQtPmtleSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaAppbmRleCBjYWE1N2Y1MTRi
NTk5OGQ0ZThiNDI4ODFhZDEyYTE0NzlmM2ViODhkLi4wY2YzMjc2YjMyZWRkOTU1MDc3YmY4OWVi
NDljMTk0ZGJjN2FhYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5oCkBAIC00NSw3ICs0NSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIH5JREJMZXZlbERCQmFja2luZ1N0b3JlKCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcyk7Ci0g
ICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBpbnQ2NF90
JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKTsKKyAgICB2aXJ0dWFsIGJvb2wg
Z2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIElEQkRhdGFiYXNlTWV0
YWRhdGEqKTsKICAgICB2aXJ0dWFsIGJvb2wgY3JlYXRlSURCRGF0YWJhc2VNZXRhRGF0YShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCBpbnRWZXJzaW9u
LCBpbnQ2NF90JiByb3dJZCk7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlTWV0
YURhdGEoSURCQmFja2luZ1N0b3JlOjpUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93SWQsIGNvbnN0
IFN0cmluZyYgdmVyc2lvbik7CiAgICAgdmlydHVhbCBib29sIHVwZGF0ZUlEQkRhdGFiYXNlSW50
VmVyc2lvbihJREJCYWNraW5nU3RvcmU6OlRyYW5zYWN0aW9uKiwgaW50NjRfdCByb3dJZCwgaW50
NjRfdCBpbnRWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL0lEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKaW5kZXgg
NDM1M2RiOWZmMWNkMmIwOTM1ZGUyNWM2ZDJkNWU5ZTBhYjA2YmUyMi4uYzZlYTEzYzUwMTlkOGNm
ODMwYmYxZGY5MDYzODgxZjFkNDhkNjhkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJm
YWNlLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50
ZXJmYWNlX2gKIAogI2luY2x1ZGUgIklEQkN1cnNvci5oIgorI2luY2x1ZGUgIklEQlRyYW5zYWN0
aW9uQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgPHd0Zi9UaHJlYWRpbmcuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmgKaW5kZXggZDY3M2MwMmQ5NzNmMzU2MWMyN2My
ZmVhNTczM2YxMmQ0NTNhZmFiYS4uODk5MzliZjg1OTc1YjFjYjlmN2Y1MGI1MTk3ZjlmNmFjMzFi
ZmM5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJh
bnNhY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5oCkBAIC0zNSw4ICszNSw2IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1
ZGUgIklEQk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJm
YWNlLmgiCiAjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb25DYWxsYmFja3MuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC00Nyw2ICs0NSw4
IEBAIGNsYXNzIElEQkN1cnNvcjsKIGNsYXNzIElEQkRhdGFiYXNlOwogY2xhc3MgSURCT2JqZWN0
U3RvcmU7CiBjbGFzcyBJREJPcGVuREJSZXF1ZXN0OworY2xhc3MgSURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlOworc3RydWN0IElEQk9iamVjdFN0b3JlTWV0YWRhdGE7CiAKIGNsYXNzIElE
QlRyYW5zYWN0aW9uIDogcHVibGljIElEQlRyYW5zYWN0aW9uQ2FsbGJhY2tzLCBwdWJsaWMgRXZl
bnRUYXJnZXQsIHB1YmxpYyBBY3RpdmVET01PYmplY3QgewogcHVibGljOgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9JREJBYm9ydE9uQ29ycnVwdFRlc3QuY3BwCmlu
ZGV4IGNkMmEwNzY0OTczYjVhM2JlZTJkNWVhMDQzNzU2YWYwMDMyOTE1YzIuLjJiZTRlNTY3ZTcz
MTVhZGNlZTZhNWQxNjQ3OGEyOGZmMmE2YzdmYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvSURCQWJvcnRPbkNvcnJ1cHRUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0lEQkFib3J0T25Db3JydXB0VGVzdC5jcHAKQEAgLTI0LDYgKzI0
LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSURCQ2FsbGJhY2tz
LmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQ2FsbGJh
Y2tzLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0lEQkZha2VC
YWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tp
bmdTdG9yZS5oCmluZGV4IGM1OWRjZTY3NTE3ZTFmNjNlMWQzYjMzNjQ1N2ViNjU0ZjMyYTQxZDYu
LjQ1Y2RkMWNiMmVkZTE2YjJjYzc1NmQ5YWNjNWQxNDA1OTk3NzFjZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvSURCRmFrZUJhY2tpbmdTdG9yZS5oCkBAIC0zMyw3
ICszMyw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIElEQkZha2VCYWNraW5nU3RvcmUg
OiBwdWJsaWMgSURCQmFja2luZ1N0b3JlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZ2V0
RGF0YWJhc2VOYW1lcyhWZWN0b3I8U3RyaW5nPiYgZm91bmROYW1lcykgT1ZFUlJJREUgeyB9Ci0g
ICAgdmlydHVhbCBib29sIGdldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1l
LCBTdHJpbmcmIGZvdW5kU3RyaW5nVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJbnRWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZElkLCBpbnQ2NF90JiBtYXhPYmplY3RTdG9yZUlkKSBPVkVSUklERSB7IHJl
dHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgYm9vbCBnZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgSURCRGF0YWJhc2VNZXRhZGF0YSopIE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGNyZWF0ZUlEQkRhdGFiYXNlTWV0YURhdGEoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QgaW50VmVyc2lv
biwgaW50NjRfdCYgcm93SWQpIE9WRVJSSURFIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFs
IGJvb2wgdXBkYXRlSURCRGF0YWJhc2VNZXRhRGF0YShUcmFuc2FjdGlvbiosIGludDY0X3Qgcm93
SWQsIGNvbnN0IFN0cmluZyYgdmVyc2lvbikgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgdXBkYXRlSURCRGF0YWJhc2VJbnRWZXJzaW9uKFRyYW5zYWN0aW9uKiwg
aW50NjRfdCByb3dJZCwgaW50NjRfdCB2ZXJzaW9uKSBPVkVSUklERSB7IHJldHVybiBmYWxzZTsg
fQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>