<?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>58407</bug_id>
          
          <creation_ts>2011-04-12 18:33:10 -0700</creation_ts>
          <short_desc>Make PropertyMapEntry use a WriteBarrier for specificValue</short_desc>
          <delta_ts>2011-04-13 11:53:19 -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>Other</rep_platform>
          <op_sys>OS X 10.5</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="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>buildbot</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>384596</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-12 18:33:10 -0700</bug_when>
    <thetext>Make PropertyMapEntry use a WriteBarrier for specificValue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384600</commentid>
    <comment_count>1</comment_count>
      <attachid>89323</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-12 18:35:02 -0700</bug_when>
    <thetext>Created attachment 89323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384605</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-12 18:38:10 -0700</bug_when>
    <thetext>Attachment 89323 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:146:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384633</commentid>
    <comment_count>3</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-12 19:53:16 -0700</bug_when>
    <thetext>Attachment 89323 did not build on win:
Build output: http://queues.webkit.org/results/8398116</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384652</commentid>
    <comment_count>4</comment_count>
      <attachid>89334</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-12 21:21:06 -0700</bug_when>
    <thetext>Created attachment 89334
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384653</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-12 21:23:12 -0700</bug_when>
    <thetext>Attachment 89334 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:146:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384665</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-12 21:49:23 -0700</bug_when>
    <thetext>Attachment 89334 did not build on win:
Build output: http://queues.webkit.org/results/8400185</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384688</commentid>
    <comment_count>7</comment_count>
      <attachid>89342</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-12 22:50:14 -0700</bug_when>
    <thetext>Created attachment 89342
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384690</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-12 22:53:07 -0700</bug_when>
    <thetext>Attachment 89342 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:146:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 25 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384711</commentid>
    <comment_count>9</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-12 23:58:03 -0700</bug_when>
    <thetext>Attachment 89342 did not build on win:
Build output: http://queues.webkit.org/results/8400229</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384718</commentid>
    <comment_count>10</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-13 00:27:32 -0700</bug_when>
    <thetext>Attachment 89342 did not build on win:
Build output: http://queues.webkit.org/results/8403160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384907</commentid>
    <comment_count>11</comment_count>
      <attachid>89381</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 08:34:36 -0700</bug_when>
    <thetext>Created attachment 89381
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384910</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 08:37:23 -0700</bug_when>
    <thetext>Attachment 89381 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:146:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384954</commentid>
    <comment_count>13</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2011-04-13 09:42:41 -0700</bug_when>
    <thetext>Attachment 89381 did not build on win:
Build output: http://queues.webkit.org/results/8403268</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384972</commentid>
    <comment_count>14</comment_count>
      <attachid>89394</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 10:09:11 -0700</bug_when>
    <thetext>Created attachment 89394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>384974</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-13 10:11:25 -0700</bug_when>
    <thetext>Attachment 89394 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/JSClassRef.cpp&apos;,...&quot; exit_code: 1

Source/JavaScriptCore/runtime/Structure.h:146:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385048</commentid>
    <comment_count>16</comment_count>
      <attachid>89394</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-04-13 11:34:38 -0700</bug_when>
    <thetext>Comment on attachment 89394
Patch

Might be worth adding a comment re the PropertyTable code being non- write barrier correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385087</commentid>
    <comment_count>17</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2011-04-13 11:53:19 -0700</bug_when>
    <thetext>Committed r83751: &lt;http://trac.webkit.org/changeset/83751&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89323</attachid>
            <date>2011-04-12 18:35:02 -0700</date>
            <delta_ts>2011-04-12 21:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58407-20110412183501.patch</filename>
            <type>text/plain</type>
            <size>77191</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM2NjEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IDcwNjY4YmQyMzVlNWVkYmJhYjQzM2RlZTcwN2Q5NTYxMTJkNTY3Yjcu
LjA4ZGM3MjExYjJmMzAxNTM2ZTcxYTM2MDgxZTEwOWJiYzA0ZDZjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc0Ns
YXNzRGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVj
KSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsg
Ly8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNh
biBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpKQotICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFBy
b3RvdHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAganNDbGFz
c0RhdGEuY2FjaGVkUHJvdG90eXBlLT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBqc0NsYXNzRGF0YS5jYWNo
ZWRQcm90b3R5cGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZTVjNzc4ZjliYzUwYWQ5ODdlMTA3ZDU1MmI5NzkwZTQ4YjBmOTFlZS4uMTU4
YjI1NjI2ZDJhMTQ2MjY0YTUzYjljM2RiMDA3OTczN2NhMmMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5
cGUgPSBqc051bGwoKTsKLSAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHByb3RvdHlw
ZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSgqZ2xvYmFsRGF0YSwgcHJvdG90
eXBlKTsKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBi
NzAzMGU0YmE1ZmM5NWM4ODcxZTJlZjdlOTAzNWI3MmJiMWZmYzVjLi4yZGYwMTBhNTE4OWY3YzZl
ZDJjOWFlZjljMThlMzFmMzcwODk1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2Uo
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogCiAgICAg
SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+KiBvYmplY3QgPSBuZXcg
KGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CiAgICAgaWYgKEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCi0gICAgICAgIG9iamVj
dC0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKIAogICAgIHJldHVybiB0b1JlZihvYmpl
Y3QpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogCi0gICAganNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNs
ZUNoZWNrKGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7CisgICAganNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwganNW
YWx1ZS5pc09iamVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVj
dEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMjhiMGRmZjY5
OWI1ZDI4ZDU5ZGNmMGNhMGI1NzU3YzVjY2QzZmVkNy4uYzUwZWNiNDJmNzVjNjZiOGRmMjhmYzBl
ZGYwOGMyOTMzOTQ1Y2IwYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTE3
IEBACiAyMDExLTA0LTEyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1h
cEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBNYWtl
IFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlLCBh
bmQgdGhlbgorICAgICAgICBwcm9wYWdhdGUgdGhlIHJlcXVpcmVkIEpTR2xvYmFsRGF0YSB0aHJv
dWdoIGFsbCB0aGUgbWV0aG9kcyBpdCBlbmRzCisgICAgICAgIHVwIGJlaW5nIG5lZWRlZC4KKwor
ICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnBy
b3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZSk6CisgICAgICAgIChKU09i
amVjdFNldFByb3RvdHlwZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Om5h
bWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZVNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6bG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3plbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAg
ICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KToKKwor
MjAxMS0wNC0xMiAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgorCiAgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgogCiAgICAgICAgIE1ha2UgQVBJIGNhbGxiYWNrIG9i
amVjdHMgdXNlIHdlYWsgaGFuZGxlcyB0byBydW4gdGhlaXIgZmluYWxpemVycwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKaW5kZXggZDIwYzJjYjliOWUzYmUxYTUyYzA2
ZDJmMGI0YTU3ZWY3OTRkOGE4MS4uNWVjMzNmNjIyMThkNWNhNjc2YzJkMzM1OTA2MzAyMDVkYjdl
ZTdlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCkBAIC0zMTYs
MTIgKzMxNiwxMiBAQCBfX1pOM0pTQzlNYXJrU3RhY2sxOGluaXRpYWxpemVQYWdlc2l6ZUV2CiBf
X1pOM0pTQzlTdHJ1Y3R1cmUxN3N0b3BJZ25vcmluZ0xlYWtzRXYKIF9fWk4zSlNDOVN0cnVjdHVy
ZTE4c3RhcnRJZ25vcmluZ0xlYWtzRXYKIF9fWk4zSlNDOVN0cnVjdHVyZTIxYWRkUHJvcGVydHlU
cmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVQUzBfUktOU18xMElkZW50aWZpZXJFalBOU182
SlNDZWxsRVJtCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyMm1hdGVyaWFsaXplUHJvcGVydHlNYXBFdgot
X19aTjNKU0M5U3RydWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVBTMF9OU183SlNW
YWx1ZUUKLV9fWk4zSlNDOVN0cnVjdHVyZTI3ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uRVJL
TlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0M5U3RydWN0dXJlMjdkZXNwZWNpZnlGdW5jdGlvblRy
YW5zaXRpb25FUFMwX1JLTlNfMTBJZGVudGlmaWVyRQotX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uRVJLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEUK
LV9fWk4zSlNDOVN0cnVjdHVyZTNnZXRFUE4zV1RGMTBTdHJpbmdJbXBsRVJqUlBOU182SlNDZWxs
RQorX19aTjNKU0M5U3RydWN0dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRVJOU18xMkpTR2xv
YmFsRGF0YUUKK19fWk4zSlNDOVN0cnVjdHVyZTI1Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkVS
TlNfMTJKU0dsb2JhbERhdGFFUFMwX05TXzdKU1ZhbHVlRQorX19aTjNKU0M5U3RydWN0dXJlMjdk
ZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVu
dGlmaWVyRQorX19aTjNKU0M5U3RydWN0dXJlMjdkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb25F
Uk5TXzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlNDOVN0cnVj
dHVyZTI4YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktO
U18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQorX19aTjNKU0M5U3RydWN0dXJlM2dldEVSTlNf
MTJKU0dsb2JhbERhdGFFUE4zV1RGMTBTdHJpbmdJbXBsRVJqUlBOU182SlNDZWxsRQogX19aTjNK
U0M5U3RydWN0dXJlNDBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlRVBT
MF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KIF9fWk4zSlNDOVN0cnVjdHVyZUMx
RU5TXzdKU1ZhbHVlRVJLTlNfOFR5cGVJbmZvRWpQS05TXzlDbGFzc0luZm9FCiBfX1pOM0pTQzlT
dHJ1Y3R1cmVEMUV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGYyNjhiZWYwMDMzODQ5MDJjNjFjNGM2
OGViZTA1YmRjMjg2MmEyZDkuLjgzZTQ1OTIzMWEwZmMwMDMyMmI4MjEwNGViZjQ1NjYyNzYyOTBj
NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0
b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgU2NvcGVDaGFp
bk5vZGUqIHMKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGJvb2w+LCAxNj4gZnVuY3Rp
b25JbmZvKGZ1bmN0aW9uU3RhY2suc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkJv
ZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgICAgICBnbG9iYWxP
YmplY3QtPnJlbW92ZURpcmVjdChmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE1ha2Ugc3VyZSBvdXIg
bmV3IGZ1bmN0aW9uIGlzIG5vdCBzaGFkb3dlZCBieSBhbiBvbGQgcHJvcGVydHkuCisgICAgICAg
ICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBmdW5jdGlvbi0+
aWRlbnQoKSk7IC8vIE1ha2Ugc3VyZSBvdXIgbmV3IGZ1bmN0aW9uIGlzIG5vdCBzaGFkb3dlZCBi
eSBhbiBvbGQgcHJvcGVydHkuCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0g
c3ltYm9sVGFibGUtPmlubGluZUdldChmdW5jdGlvbi0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA2NzAyNDA0M2M2
M2VjMzhiOTk5YjgzYzZlYjRiNmJmYzNkMDEyNDZjLi5kNzljNTgxZTM2MTcxZjRjY2NmYWQ1N2Jj
MzNiZDUzNjU3MjQ5NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMgdm9pZCBhcHBl
bmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNl
cHRpb24sCiAgICAgICAgIHJldHVybjsKIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAgICBKU1ZhbHVlIGpzTWVzc2FnZSA9IGV4Y2Vw
dGlvbi0+Z2V0RGlyZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOworICAg
IEpTVmFsdWUganNNZXNzYWdlID0gZXhjZXB0aW9uLT5nZXREaXJlY3QoKmdsb2JhbERhdGEsIGds
b2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwogICAgIGlmICghanNNZXNzYWdlIHx8
ICFqc01lc3NhZ2UuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzY0LDcgKzEz
NjQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUg
dHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCiAgICAgICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGJhc2VPYmplY3QtPmZsYXR0ZW5E
aWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG9m
ZnNldCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAg
ICAgICAgIG9mZnNldCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQo
IWJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKQEAg
LTMwNzksNyArMzA3OSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgICAgICAg
ICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIHVuc2lnbmVk
IG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VP
YmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNv
ZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmpl
Y3QtPmdldERpcmVjdExvY2F0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
PmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAg
ICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwg
b2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAg
ICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CkBAIC0zMTE0
LDcgKzMxMTQsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIGludCB2
YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0
ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBB
U1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0
TG9jYXRpb24oY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zm
c2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRp
b24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAg
ICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAg
ICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF9yZXBsYWNlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggOTIyYmQ1OTY0M2RhM2Zm
MWIwYjZiNzY0ZmFhZjlmZjNiZjA4NDQ4Yi4uZmUyNmRjYWExNjMyYjQ2N2MxZjE4Y2Y3MzRmNjNm
MTBjYWQ1M2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTkx
OSw3ICs5MTksNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJ
RChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAgICAgICAvLyBzaG91bGQg
bm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICAgICAgc2xvdEJhc2VP
YmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsK
LSAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHBy
b3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZzZXQgPSBzbG90QmFzZU9iamVjdC0+c3RydWN0
dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG8oc3RydWN0
dXJlLCBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCkpOwpAQCAtMTc0NCw3ICsxNzQ0LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9wcm90b19s
aXN0KQogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5Lgog
ICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkg
ewogICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZzZXQg
PSBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBsaXN0SW5kZXg7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlv
bk9wdGltaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5z
aXRpb25PcHRpbWl6ZXIuaAppbmRleCAwZjZhNjQ2NTRkOGQzYjJjMGUzMWFkMjFhZGE3ZjI4MjQz
ODBmMzdjLi5lZGVlYzU3NTZhMWQzZGEyMWNmYmFlYmFiOGY5ODg2NzM4MjgxNjlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGlt
aXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX29i
amVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAgIG1fb2Jq
ZWN0LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0
aW9uKG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5z
ZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGds
b2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAg
fkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjcxMDZhMTg0ZTZmMDIyYmFk
ZTMyYjhlZTNkNWRkYjQyMDgyY2YxYi4uNjA5MTgzMWE1ZmE4MGIwNjE1MDczYmZlNjk1MjliMDlk
MWUzZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJu
YWxGdW5jdGlvbi5jcHAKQEAgLTUxLDEyICs1MSwxMiBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRl
cm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGds
bwogCiBjb25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhl
YykKIHsKLSAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5w
cm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CisgICAgcmV0dXJuIGFzU3RyaW5n
KGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0
eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNvbnN0IFVTdHJpbmcgSW50ZXJu
YWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUg
ZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMt
PmRpc3BsYXlOYW1lKTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlO
YW1lKTsKICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNwbGF5
TmFtZSktPnRyeUdldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcAppbmRleCBkMGM1MGRkNjc0YTRhODI3MTcwMzJlMDIxM2Q2MjAwYjc4
NzAzNzUxLi44M2I2YTFjMTJjNGM4ZGQ1ZGU5MGUwNDc3MzUyMTA4MzU5NDcwYjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE0Miw3
ICsxNDIsNyBAQCBib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydAogICAgIGlmIChzeW1ib2xUYWJsZUdl
dChwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHBy
b3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b24gPSBnZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZShsb2NhdGlvbi0+Z2V0KCkpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uY3BwCmluZGV4IGRiZmM2MDY1NWUyYzMzY2ZlMDVlYmRhNjc0NDZmNzk2ZTcyMDAzNGMuLmI4
ZTQ5OWI2ODc5Y2IzYmUxMWU5YzU3NzIxYmU5NGVhYzVlMDdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBz
dGF0aWMgdm9pZCBjcmVhdGVEZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5RGVzY3JpcAogCiBjb25zdCBVU3RyaW5nJiBKU0Z1bmN0aW9uOjpuYW1l
KEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CisgICAg
cmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNvbnN0
IFVTdHJpbmcgSlNGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAg
IEpTVmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3Bl
cnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMt
PmRpc3BsYXlOYW1lKTsKICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0cmlu
ZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBib29s
IEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TgogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlT
bG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09
IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAgV3JpdGVCYXJyaWVy
QmFzZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUp
OworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVj
dExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBp
ZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywgc2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0
cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51
bSk7CiAgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9w
ZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7
Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
dGhpcywgbG9jYXRpb24tPmdldCgpLCBvZmZzZXRGb3JMb2NhdGlvbihsb2NhdGlvbikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDQxMTA4YzQ2ZTk2NTE2N2IwMGI4ZGFhMjBhZTdjZjI2MTNmMWEwMTkuLjg0Yzg1YWU3YWNmODJm
Y2JhOTM3ZDQ1ZDdiMmFlZDczMzNlZjY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQg
SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVyCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgSlNWYWx1ZSB2YWx1ZUJlZm9yZSA9IGdldERpcmVjdChwcm9w
ZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgdmFsdWVCZWZvcmUgPSBnZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAg
IEpTVmFyaWFibGVPYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsK
ICAgICBpZiAoIXZhbHVlQmVmb3JlKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWVBZnRlciA9IGdl
dERpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU1ZhbHVlIHZhbHVlQWZ0ZXIgPSBnZXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAodmFs
dWVBZnRlcikKICAgICAgICAgICAgIEpTT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlQWZ0ZXIsIGF0dHJpYnV0ZXMpOwogICAgIH0KQEAgLTI5OSwxOCAr
Mjk5LDE4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBK
U0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50
aWZpZXIoZXhlYywgImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVtKTsK
ICNlbmRpZgogCi0gICAgcmVzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICByZXNldFByb3Rv
dHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CiB9CiAKIC8vIFNldCBwcm90b3R5
cGUsIGFuZCBhbHNvIGluc2VydCB0aGUgb2JqZWN0IHByb3RvdHlwZSBhdCB0aGUgZW5kIG9mIHRo
ZSBjaGFpbi4KLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTVmFsdWUgcHJv
dG90eXBlKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBzZXRQcm90b3R5cGUocHJv
dG90eXBlKTsKKyAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlKTsKIAogICAg
IEpTT2JqZWN0KiBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiA9IGxhc3RJblByb3RvdHlwZUNoYWlu
KHRoaXMpOwogICAgIEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUgPSBtX29iamVjdFByb3RvdHlw
ZS5nZXQoKTsKICAgICBpZiAob2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gIT0gb2JqZWN0UHJvdG90
eXBlKQotICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBlKG9iamVj
dFByb3RvdHlwZSk7CisgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90b3R5
cGUoZ2xvYmFsRGF0YSwgb2JqZWN0UHJvdG90eXBlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVj
dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDBlZjVjYjhiYTgwZDljM2Qz
ZTBiOGVhZWM5MjNmY2Q3Y2QyMDA2Ni4uMzAwZjRiMDQ5ODU4OTY1ZTNjMTI5MGZmMTNhMTQ3YjNk
OGI0MDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCkBAIC0yMzUsNyArMjM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQg
Y29weUdsb2JhbHNUbyhSZWdpc3RlckZpbGUmKTsKICAgICAgICAgdm9pZCByZXNpemVSZWdpc3Rl
cnMoaW50IG9sZFNpemUsIGludCBuZXdTaXplKTsKIAotICAgICAgICB2b2lkIHJlc2V0UHJvdG90
eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU0ds
b2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYjMwNzU0MDc5Y2I5
NDRiM2FhNjA2M2Y5NThiNWIzMDBhNGI2NTFhNC4uYWI0NzJkNDY5MzdkODNmMjgzOTgxMWFkYmI3
YTA5MGNiMWI0ZmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAgICAg
IC8vIFNldHRpbmcgX19wcm90b19fIHRvIGEgbm9uLW9iamVjdCwgbm9uLW51bGwgdmFsdWUgaXMg
c2lsZW50bHkgaWdub3JlZCB0byBtYXRjaCBNb3ppbGxhLgogICAgICAgICBpZiAoIXZhbHVlLmlz
T2JqZWN0KCkgJiYgIXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBpZiAoIXNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKHZhbHVlKSkKKyAgICAgICAgaWYgKCFz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT5nbG9iYWxEYXRhKCksIHZhbHVlKSkKICAg
ICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgImN5Y2xpYyBfX3By
b3RvX18gdmFsdWUiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjcsMTQgKzEyNywx
NCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdl
dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91
bmQpICYmIGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgeworICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdl
dChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNW
YWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAg
ICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVy
cm9yKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTT2JqZWN0KiBvYmog
PSB0aGlzOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgaWYgKEpTVmFs
dWUgZ3MgPSBvYmotPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChKU1Zh
bHVlIGdzID0gb2JqLT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUp
KSB7CiAgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICAgICAg
ICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsg
ICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewpAQCAtMjE4LDEwICsy
MTgsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRl
czsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKG1fc3RydWN0dXJlLT5nZXQo
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5k
KSB7CisgICAgaWYgKG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKICAg
ICAgICAgaWYgKChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJlbW92ZURpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICByZW1v
dmVEaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMxMiwzNCArMzEyLDM1IEBAIGNvbnN0IEhhc2hFbnRyeSog
SlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpCiAKIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewotICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0KHBy
b3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVy
U2V0dGVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQ
cm9wZXJ0aWVzKCkpOwogICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0ZXIo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0
ZXIgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcihleGVjKTsKLSAgICBwdXREaXJlY3RJbnRlcm5h
bChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1
dGVzIHwgR2V0dGVyLCB0cnVlLCBzbG90KTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEdldHRlciwgdHJ1
ZSwgc2xvdCk7CiAKICAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBp
ZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZvcgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMs
IHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCiAgICAgLy8gaWYg
d2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgogICAgIGlm
IChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CiAgICAgICAg
IGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8
U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24o
bV9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0g
U3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJl
KTsKICAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0
aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZ2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGdsb2JhbERh
dGEsIGdldHRlckZ1bmN0aW9uKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCog
c2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgSlNWYWx1ZSBvYmpl
Y3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIG9iamVjdCA9IGdldERp
cmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9iamVjdCAm
JiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUt
Pmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAgICAgICAgIGFzR2V0dGVyU2V0dGVyKG9i
amVjdCktPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsKQEAg
LTM1NSw3ICszNTYsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBl
eGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIC8vIGlmIHdlIG92
ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xv
dC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewogICAgICAgICBpZiAo
IW1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVj
dHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKG1fc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVj
dHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fc3RydWN0
dXJlKTsKICAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTM2NCwxMSArMzY1LDExIEBAIHZvaWQgSlNPYmplY3Q6OmRlZmlu
ZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
SlNPCiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0
ZXJGdW5jdGlvbik7CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3Rh
dGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0Ojps
b29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsK
LSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5h
bWUpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVl
LmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRlcih2
YWx1ZSktPmdldHRlcigpOwpAQCAtMzgzLDExICszODQsMTEgQEAgSlNWYWx1ZSBKU09iamVjdDo6
bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
ICAgICB9CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBT
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAg
ICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7
CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzR2V0
dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAg
ICAgICAgICBKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRlcih2YWx1ZSkt
PnNldHRlcigpOwpAQCAtNDI4LDEwICs0MjksMTAgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJ
c0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4K
ICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6
OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0Citib29sIEpTT2JqZWN0
OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CiAgICAg
dW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCisgICAgaWYg
KG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGlj
IHRhYmxlPyAtIHNob3VsZCBwcm9iYWJseQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYg
cHJvcGVydHlOYW1lCiAKIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0
YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25N
b2RlIG1vZGUpCiB7Ci0gICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMocHJvcGVydHlO
YW1lcywgbW9kZSk7CisgICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICBnZXRDbGFzc1Byb3BlcnR5TmFt
ZXMoZXhlYywgY2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCkBAIC01MDks
MzMgKzUxMCwzMyBAQCBKU09iamVjdCogSlNPYmplY3Q6OnVud3JhcHBlZE9iamVjdCgpCiAgICAg
cmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnNlYWwoKQordm9pZCBKU09iamVjdDo6
c2VhbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0cnVj
dHVyZTo6c2VhbFRyYW5zaXRpb24obV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoU3Ry
dWN0dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12
b2lkIEpTT2JqZWN0OjpmcmVlemUoKQordm9pZCBKU09iamVjdDo6ZnJlZXplKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKIHsKLSAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpmcmVlemVUcmFu
c2l0aW9uKG1fc3RydWN0dXJlKSk7CisgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZnJlZXpl
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12b2lkIEpTT2JqZWN0
OjpwcmV2ZW50RXh0ZW5zaW9ucygpCit2b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQotICAg
ICAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24o
bV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6cHJldmVudEV4
dGVuc2lvbnNUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKSk7CiB9CiAKLXZvaWQg
SlNPYmplY3Q6OnJlbW92ZURpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2
b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgc2l6ZV90IG9mZnNldDsKICAgICBp
ZiAobV9zdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgb2Zm
c2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKG9m
ZnNldCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RP
ZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdHJ1
Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKG1f
c3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4g
c3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0
YSwgbV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBzZXRTdHJ1Y3R1cmUo
c3RydWN0dXJlLnJlbGVhc2UoKSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQog
ICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwpAQCAtNTk4LDExICs1
OTksMTEgQEAgdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9s
ZFNpemUsIHNpemVfdCBuZXdTaXplKQogICAgIG1fcHJvcGVydHlTdG9yYWdlID0gbmV3UHJvcGVy
dHlTdG9yYWdlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2Ny
aXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0g
MDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgc2l6ZV90IG9mZnNl
dCA9IG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIGNlbGwpOwogICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXREaXJlY3RP
ZmZzZXQob2Zmc2V0KSwgYXR0cmlidXRlcyk7CkBAIC03NTQsNyArNzU1LDcgQEAgYm9vbCBKU09i
amVjdDo6ZGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CisgICAg
SlNWYWx1ZSBhY2Nlc3NvciA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5
TmFtZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEdl
dHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggN2EyNDhkMmI2MzFkZjkz
NDA4ZGExZWUxMzNlMmZiYzU5MDBkMjVkMC4uYjUzYWVmY2QwMDM2YWNkYjY1NjAzNjRjZGEwOGQ5
NmJlODIxYTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBA
IC04Nyw4ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5KU09iamVj
dCgpOwogCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQg
c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgYm9vbCBzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHZvaWQgc2V0UHJv
dG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgYm9vbCBz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlw
ZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERh
dGEmKTsKQEAgLTE0NiwyMiArMTQ2LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29s
IGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CiAKICAg
ICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFw
LgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpIGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0g
ICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUp
OworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0
YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RG
b3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAK
LSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVu
a25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90
IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHNp
emVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZv
ck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJh
c2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAg
ewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBz
cGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5j
dGlvbik7CiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2Nh
dGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCkBAIC0xNzIsNyArMTcyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oU3RydWN0dXJl
Kik7CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lKTsKKyAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0
aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCBo
YXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKTsgfQogCkBAIC0yMDksMTEgKzIwOSwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaWN0TW9kZUZ1bmN0aW9uKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRXJyb3JJbnN0YW5jZSgp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdm9pZCBzZWFsKCk7Ci0gICAgICAg
IHZvaWQgZnJlZXplKCk7Ci0gICAgICAgIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoKTsKLSAgICAg
ICAgYm9vbCBpc1NlYWxlZCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc1NlYWxlZCgpOyB9Ci0g
ICAgICAgIGJvb2wgaXNGcm96ZW4oKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNGcm96ZW4oKTsg
fQorICAgICAgICB2b2lkIHNlYWwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgZnJlZXpl
KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIHByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICBib29sIGlzU2VhbGVkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkg
eyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzU2VhbGVkKGdsb2JhbERhdGEpOyB9CisgICAgICAgIGJv
b2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBtX3N0cnVjdHVy
ZS0+aXNGcm96ZW4oZ2xvYmFsRGF0YSk7IH0KICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUoKSB7
IHJldHVybiBtX3N0cnVjdHVyZS0+aXNFeHRlbnNpYmxlKCk7IH0KIAogICAgICAgICB2aXJ0dWFs
IENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KQEAgLTQx
Niw3ICs0MTYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29uc3QK
ICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCi1pbmxpbmUg
Ym9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNWYWx1ZSBwcm90b3R5
cGUpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBKU1ZhbHVl
IG5leHRQcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlw
ZVZhbHVlICYmIG5leHRQcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC00MjUsMTQgKzQy
NSwxNCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
SlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5l
eHRQcm90b3R5cGVWYWx1ZSA9IG5leHRQcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgIH0KLSAg
ICBzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwg
cHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6
OnNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkK
IHsKICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBuZXdTdHJ1
Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24obV9zdHJ1Y3R1cmUs
IHByb3RvdHlwZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3RydWN0
dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBw
cm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZShuZXdTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKIH0K
IApAQCAtNDcxLDcgKzQ3MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0
IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmpl
Y3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChXcml0
ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3Bl
cnR5TmFtZSkpIHsKKyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24g
PSBnZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsK
ICAgICAgICAgaWYgKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYg
bG9jYXRpb24tPmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVy
dHlTbG90KHNsb3QsIGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQpAQCAtNTU3LDEyICs1NTcsMTIg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBpZiAobV9zdHJ1Y3R1cmUtPmlzRGljdGlv
bmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBK
U0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50
U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+
Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRT
cGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7
CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlv
biwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3
IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3Vy
cmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24pKQotICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0
aW9uYXJ5RnVuY3Rpb24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVy
ZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgICAgICBpZiAoY2hlY2tSZWFkT25seSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJl
YWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTgyLDcgKzU4Miw3
IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVu
Y3Rpb24pOworICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24pOwogICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0
b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSk7CiAKQEAgLTYxMiw3ICs2MTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogCiAg
ICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lm
aWNGdW5jdGlvbjsKLSAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwg
Y3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZzZXQg
PSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJp
YnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6
bm90Rm91bmQpIHsKICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0
ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMyw3ICs2MzMs
NyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxs
IHRocm91Z2ggdG8gKDMpLgotICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsKKyAg
ICAgICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4K
QEAgLTcwNyw3ICs3MDcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogaW5saW5lIHZvaWQg
SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9z
dHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRy
aWJ1dGVzLCAwKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCAw
KTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2Fw
YWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXRE
aXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03MTYsNyArNzE2LDcg
QEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJl
Y3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUt
PmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCB2
YWx1ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFsdWUp
OwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBh
Y2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHB1dERp
cmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IDMwN2JjZWIyNTBiOTU1OTBkNTgzYTRhYTc1N2Q1
YzVmYTI5YWI2MGEuLjI1YjUxNmVmYjBmYTI2ZTE5NTJmNTQzMmZmNTE5OTk5NWRkZmNiNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNzMsNyArNzMsNyBA
QCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFz
aEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgQVNTRVJUKHRoaXNPYmotPnN0cnVjdHVyZSgp
LT5hbm9ueW1vdXNTbG90Q291bnQoKSA+IDApOwogICAgIEFTU0VSVCh0aGlzT2JqLT5nZXRBbm9u
eW1vdXNWYWx1ZSgwKS5pc0NlbGwoKSAmJiBhc09iamVjdCh0aGlzT2JqLT5nZXRBbm9ueW1vdXNW
YWx1ZSgwKS5hc0NlbGwoKSktPmlzR2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRyeS0+
YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOwotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGxvY2F0aW9uID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKKyAg
ICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVj
dExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgIGlmICgh
bG9jYXRpb24pIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb247CkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBI
YXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgICAgIGZ1bmN0aW9uID0gbmV3IChl
eGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlv
blN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBlbnRy
eS0+ZnVuY3Rpb24oKSk7CiAKICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0RnVuY3Rpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRl
cygpKTsKLSAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAgICBzbG90LnNl
dFZhbHVlKHRoaXNPYmosIGxvY2F0aW9uLT5nZXQoKSwgdGhpc09iai0+b2Zmc2V0Rm9yTG9jYXRp
b24obG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09i
amVjdENvbnN0cnVjdG9yLmNwcAppbmRleCBjNjQyYTViNTlmMmQ1OThiY2E0ZGVhNTU4Y2YyNTJl
NzYyM2U5YzgzLi42YmQyYTI4MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNkMmFlMjEwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3Iu
Y3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1
bWVudCgwKS5pc09iamVjdCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pc051bGwoKSkKICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVj
dCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIikpOwogICAgIEpTT2Jq
ZWN0KiBuZXdPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBuZXdPYmpl
Y3QtPnNldFByb3RvdHlwZShleGVjLT5hcmd1bWVudCgwKSk7CisgICAgbmV3T2JqZWN0LT5zZXRQ
cm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUobmV3T2JqZWN0KTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0
KCkpCkBAIC0zNTUsNyArMzU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhl
Yy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5zZWFsIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICBhc09iamVjdChvYmopLT5zZWFs
KCk7CisgICAgYXNPYmplY3Qob2JqKS0+c2VhbChleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIApAQCAtMzY0LDcgKzM2NCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRl
KiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFv
YmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIk9iamVjdC5mcmVlemUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVj
dHMuIikpOwotICAgIGFzT2JqZWN0KG9iaiktPmZyZWV6ZSgpOworICAgIGFzT2JqZWN0KG9iaikt
PmZyZWV6ZShleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
b2JqKTsKIH0KIApAQCAtMzczLDcgKzM3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAg
ICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVj
dCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmpl
Y3RzLiIpKTsKLSAgICBhc09iamVjdChvYmopLT5wcmV2ZW50RXh0ZW5zaW9ucygpOworICAgIGFz
T2JqZWN0KG9iaiktPnByZXZlbnRFeHRlbnNpb25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQogCkBAIC0zODIsNyArMzgyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlm
ICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IE9iamVjdHMuIikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2Jq
ZWN0KG9iaiktPmlzU2VhbGVkKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc09iamVjdChvYmopLT5pc1NlYWxlZChleGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9CiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihF
eGVjU3RhdGUqIGV4ZWMpCkBAIC0zOTAsNyArMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBK
U1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkp
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJPYmplY3QuaXNGcm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwotICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzRnJvemVu
KCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmop
LT5pc0Zyb3plbihleGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVj
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGIxZjQ3
NGY3MzYzODk3MGQ3ZjNlZDExNmJiMzhjNTAxZjllZTk3MjEuLmMxMDJlZWJlZDNhYTY2MzY5OWZm
YzUxOWY1OTY0Nzk3ZDRhMWYxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cGVyYXRpb25zLmgKQEAgLTQzMCw3ICs0MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAg
ICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5n
bG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQotICAg
ICAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChwcm9w
ZXJ0eU5hbWUpOyAKKyAgICAgICAgICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVj
dHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7IAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICArK2NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggYzAwMGRjODFh
ZjAxYmY2ZGEyMTYyOWI3NWFlZmE4MTYwMjZjZGZkNS4uZWRiZDM1ZjQ4YTI2YzI4ZDY5ZDBlMWM0
NzQ2MjhmYWNlNzE4MDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC03MywxMyArNzMsMTMgQEAgc3RydWN0IFBy
b3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKICAgICB1bnNpZ25lZCBvZmZz
ZXQ7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7
CisgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5
TWFwRW50cnkoU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJp
YnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
ICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwg
YXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICAgICAsIHNwZWNpZmljVmFsdWUoc3BlY2lmaWNW
YWx1ZSkKKyAgICAgICAgLCBzcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIG93bmVyLCBzcGVjaWZp
Y1ZhbHVlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMTQxLDkgKzE0MSw5IEBAIHB1YmxpYzoKICAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRvcjsK
IAogICAgIC8vIENvbnN0cnVjdG9yIGlzIHBhc3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5LCBhIFBy
b3BlcnR5VGFibGUgdG8gY29weSwgb3IgYm90aC4KLSAgICBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxl
Jik7Ci0gICAgUHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFBy
b3BlcnR5VGFibGUmKTsKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRp
YWxDYXBhY2l0eSk7CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBj
b25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBK
U0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsK
ICAgICB+UHJvcGVydHlUYWJsZSgpOwogCiAgICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9k
cy4KQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0
KHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5z
dXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KLSAgICBQ
YXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOworICAg
IFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93
bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc2l6ZV90
IHNpemVJbk1lbW9yeSgpOwpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBw
cml2YXRlOgorICAgIFByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAgIC8v
IFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwgYW5k
IHdoZXJlIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVpbnNl
cnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7CiAKQEAgLTI0Myw3ICsyNDQsNyBAQCBpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAg
ICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5
VGFibGU6OlByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUg
UHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25z
dCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICA6IG1faW5kZXhTaXplKG90aGVyLm1faW5kZXhT
aXplKQogICAgICwgbV9pbmRleE1hc2sob3RoZXIubV9pbmRleE1hc2spCiAgICAgLCBtX2luZGV4
KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdE1hbGxvYyhkYXRhU2l6ZSgpKSkpCkBAIC0yNjQs
NyArMjY1LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoY29uc3QgUHJv
cGVydHlUYWJsZSYgb3RoZXIpCiAgICAgICAgIG1fZGVsZXRlZE9mZnNldHMuc2V0KG5ldyBWZWN0
b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0
eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJv
cGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShK
U0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFBy
b3BlcnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUoc2l6ZUZvckNhcGFjaXR5KGlu
aXRpYWxDYXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFzayhtX2luZGV4U2l6ZSAtIDEpCiAgICAg
LCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRhU2l6
ZSgpKSkpCkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjph
ZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5h
cHBlbmQob2Zmc2V0KTsKIH0KIAotaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJv
cGVydHlUYWJsZTo6Y29weSh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKK2lubGluZSBQYXNzT3duUHRy
PFByb3BlcnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQo
bmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7CiAKICAgICAvLyBGYXN0IGNhc2U7IGlmIHRoZSBu
ZXcgdGFibGUgd2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0aGlzIG9uZSwgd2UgY2Fu
IG1lbWNweSBpdCwKICAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5cy4KICAgICBpZiAoc2l6
ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkKLSAgICAgICAgcmV0dXJu
IG5ldyBQcm9wZXJ0eVRhYmxlKCp0aGlzKTsKLSAgICByZXR1cm4gbmV3IFByb3BlcnR5VGFibGUo
bmV3Q2FwYWNpdHksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKGds
b2JhbERhdGEsIG93bmVyLCAqdGhpcyk7CisgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKGds
b2JhbERhdGEsIG93bmVyLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwogfQogCiAjaWZuZGVmIE5ERUJV
RwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMTMx
ZWE2YmRlMzBhNTYwOTc1MTk4ZGUxMTdmZjQyZWM2N2I3OWI3ZS4uYmQ3ZDlkZGE5MDE3MmFlNjI1
YzczZjAzYjczYWVmYjIyY2NhMGY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OnN0b3BJ
Z25vcmluZ0xlYWtzKCkKICNlbmRpZgogfQogCi12b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcCgpCit2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgQVNTRVJUKCFtX3Byb3BlcnR5VGFibGUpOwog
CkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlN
YXAoKQogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAg
ICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAgICAg
bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkobV9vZmZz
ZXQgKyAxKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9w
ZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6
Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoKQogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0cnVj
dHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJlID0gc3Ry
dWN0dXJlc1tpXTsKLSAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShzdHJ1Y3R1cmUtPm1f
bmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0dXJlLT5t
X29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1f
c3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5
KGdsb2JhbERhdGEsIDAsIHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9hbm9u
eW1vdXNTbG90Q291bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmli
dXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAg
ICAgICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKGVudHJ5KTsKICAgICB9CiB9CkBAIC0zMzQsMTgg
KzMzNCwxOCBAQCB2b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkK
ICAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSAqPSAyOwogfQogCi12b2lkIFN0cnVj
dHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLmltcGwoKTsKIAotICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKIAogICAgIEFTU0VSVChpc0RpY3Rpb25hcnkoKSk7
CiAgICAgQVNTRVJUKG1fcHJvcGVydHlUYWJsZSk7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBl
bnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChyZXApLmZpcnN0OwogICAgIEFTU0VSVChlbnRy
eSk7Ci0gICAgZW50cnktPnNwZWNpZmljVmFsdWUgPSAwOworICAgIGVudHJ5LT5zcGVjaWZpY1Zh
bHVlLmNsZWFyKCk7CiB9CiAKIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKQEAgLTM4Nyw5ICszODcsOSBAQCBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKIAogICAg
IGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Db3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVuZ3Ro
KSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7Ci0g
ICAgICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpOworICAgICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAg
QVNTRVJUKG9mZnNldCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICAg
ICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQgPT0gdHJhbnNpdGlvbi0+
bV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlT
dG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKQEAg
LTQwNywxNyArNDA3LDE3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAKICAgICBpZiAoc3Ry
dWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bp
bm5lZFByb3BlcnR5VGFibGUpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFi
bGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShzdHJ1Y3R1cmUtPm1fcHJvcGVy
dHlUYWJsZS0+c2l6ZSgpICsgMSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBz
dHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpICsgMSk7CiAgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9w
ZXJ0eVRhYmxlLnJlbGVhc2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3RydWN0dXJl
LT5tX3ByZXZpb3VzKQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcCgpOworICAgICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChn
bG9iYWxEYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Y3JlYXRl
UHJvcGVydHlNYXAoKTsKICAgICB9CiAKLSAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQocHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBvZmZzZXQgPSB0cmFu
c2l0aW9uLT5wdXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y1ZhbHVlKTsKICAgICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90
Q291bnQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRy
YW5zaXRpb24tPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICBpZiAodHJhbnNpdGlvbi0+cHJv
cGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSkKQEAgLTQyOSwxMSArNDI5LDExIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAgcmV0
dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFu
c2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7Cisg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgb2Zmc2V0ID0gdHJhbnNp
dGlvbi0+cmVtb3ZlKHByb3BlcnR5TmFtZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBzdHJ1Y3R1
cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsCiAgICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNz
UmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0
cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3RvdHlwZSkKK1Bhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAg
ICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwogCkBA
IC00NTAsMTUgKzQ1MCwxNSBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpjaGFu
Z2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLAogCiAgICAgLy8gRG9u
J3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAKLSAg
ICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAgIHRy
YW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUo
KTsKKyAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9i
YWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNv
cHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQ
cm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1v
dXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CiAgICAg
cmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKK1Bhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBs
YWNlRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9u
VGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKQEAgLTQ2NywxNCAr
NDY3LDE0IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0
aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAKICAgICAvLyBEb24ndCBzZXQgbV9v
ZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVy
ZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+
bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0
cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwor
ICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUgPSB0cnVlOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fc3BlY2lmaWNGdW5jdGlvblRocmFz
aENvdW50ID09IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKLSAgICAgICAgdHJhbnNp
dGlvbi0+ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CisgICAgICAgIHRyYW5zaXRpb24tPmRlc3Bl
Y2lmeUFsbEZ1bmN0aW9ucyhnbG9iYWxEYXRhKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCBy
ZW1vdmVkID0gdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24ocmVwbGFjZUZ1bmN0aW9uKTsK
KyAgICAgICAgYm9vbCByZW1vdmVkID0gdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24oZ2xv
YmFsRGF0YSwgcmVwbGFjZUZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVk
LCByZW1vdmVkKTsKICAgICB9CiAgICAgCkBAIC00ODIsMjggKzQ4MiwyOCBAQCBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0
dXJlKiBzdHJ1Y3R1cgogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmdldHRl
clNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIHsKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0
cnVjdHVyZSk7CiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRy
YW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0
dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVy
dHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAg
dHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAogICAgIEFT
U0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255
bW91c1Nsb3RDb3VudCgpKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24o
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCiB7
CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAg
IAogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsK
IAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0g
ICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlU
YWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5
KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVy
ZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bp
bm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtp
bmQgPSBraW5kOwogICAgIApAQCAtNTExLDIwICs1MTEsMjAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgRGkKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24o
c3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7CisgICAgcmV0dXJuIHRvRGljdGlvbmFy
eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7
CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0
aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiB0
b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7
CisgICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBVbmNhY2hlZERpY3Rpb25hcnlLaW5kKTsKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50
IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OnNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0
aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRy
PFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJs
ZSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5t
X3Byb3BlcnR5VGFibGUtPmVuZCgpOwpAQCAtNTM2LDkgKzUzNiw5IEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQog
fQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0aW9uLgot
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyZWV6ZVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9
IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAg
ICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBQcm9wZXJ0eVRh
YmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgpOwpA
QCAtNTUwLDE0ICs1NTAsMTQgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJl
ZXplVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0KIAogLy8gSW4gZnV0dXJlIHdl
IG1heSB3YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJl
PiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25z
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogewogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJl
KTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlv
biB0byB0aGlzLgogCi0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3NhcnkoKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNv
cHlQcm9wZXJ0eVRhYmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxl
ID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKICAgICB0cmFuc2l0
aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAgdHJhbnNpdGlvbi0+bV9w
cmV2ZW50RXh0ZW5zaW9ucyA9IHRydWU7CiAKQEAgLTU2NiwxMiArNTY2LDEyIEBAIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0
aGlzIHByb3BlcnR5LgotYm9vbCBTdHJ1Y3R1cmU6OmlzU2VhbGVkKCkKK2Jvb2wgU3RydWN0dXJl
Ojppc1NlYWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0ZW5z
aWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5
TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC01ODQsMTIgKzU4NCwxMiBAQCBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoKQog
fQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KLWJv
b2wgU3RydWN0dXJlOjppc0Zyb3plbigpCitib29sIFN0cnVjdHVyZTo6aXNGcm96ZW4oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQogewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7
CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAg
IGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNjMwLDMw
ICs2MzAsMzAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rp
b25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWwKICAgICByZXR1cm4gdGhpczsKIH0K
IAotc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3Bl
Y2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBB
U1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKICAgICBpZiAobV9zcGVjaWZpY0Z1bmN0aW9u
VGhyYXNoQ291bnQgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQogICAgICAgICBz
cGVjaWZpY1ZhbHVlID0gMDsKIAotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
IAogICAgIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAotICAgIHNpemVfdCBvZmZz
ZXQgPSBwdXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBz
aXplX3Qgb2Zmc2V0ID0gcHV0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBtX2Fub255bW91c1Nsb3RDb3Vu
dCk7CiAgICAgaWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpCiAgICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHJldHVy
biBvZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc2l6ZV90IFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQoaXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwog
Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogCiAgICAgbV9pc1Bpbm5lZFBy
b3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlO
YW1lKTsKQEAgLTY4OCwxNCArNjg4LDE0IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6Y2hlY2tD
b25zaXN0ZW5jeSgpCiAKICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQ
cm9wZXJ0eVRhYmxlKCkKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIHJldHVybiBtX3Byb3BlcnR5VGFi
bGUgPyBuZXcgUHJvcGVydHlUYWJsZSgqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CisgICAgcmV0dXJu
IG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIDAsICptX3By
b3BlcnR5VGFibGUpIDogMDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KFN0cmluZ0ltcGwq
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFs
dWUpCitzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJp
bmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKQogewotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwor
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBp
ZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CiAKQEAg
LTcwNCwxNCArNzA0LDE0IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChTdHJpbmdJbXBsKiBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzCiAgICAgICAgIHJldHVy
biBXVEY6Om5vdEZvdW5kOwogCiAgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwot
ICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZTsKKyAgICBzcGVjaWZpY1Zh
bHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CiAgICAgQVNTRVJUKGVudHJ5LT5vZmZz
ZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0Owog
fQogCi1ib29sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKQorYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAg
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJs
ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MjEsMjUgKzcyMSwyNSBAQCBib29sIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZW50cnktPnNwZWNpZmljVmFs
dWUpOwotICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlID0gMDsKKyAgICBlbnRyeS0+c3BlY2lmaWNW
YWx1ZS5jbGVhcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0cnVjdHVyZTo6ZGVz
cGVjaWZ5QWxsRnVuY3Rpb25zKCkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlv
bnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQo
KTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFi
bGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnNwZWNpZmlj
VmFsdWUgPSAwOworICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OnB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6
OnB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAg
IEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoZ2V0KHByb3BlcnR5
TmFtZSkgPT0gbm90Rm91bmQpOworICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKSA9PSBub3RGb3VuZCk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0
dHJpYnV0ZXMgJiBEb250RW51bSkKQEAgLTc1OCw3ICs3NTgsNyBAQCBzaXplX3QgU3RydWN0dXJl
OjpwdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVz
LCBKU0NlbAogICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSArIG1f
YW5vbnltb3VzU2xvdENvdW50OwogICAgIEFTU0VSVChuZXdPZmZzZXQgPj0gbV9hbm9ueW1vdXNT
bG90Q291bnQpOwogCi0gICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShy
ZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOworICAgIG1fcHJvcGVy
dHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgMCwgcmVwLCBuZXdPZmZz
ZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3ko
KTsKICAgICByZXR1cm4gbmV3T2Zmc2V0OwpAQCAtNzk4LDkgKzc5OCw5IEBAIHZvaWQgU3RydWN0
dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBjYXBhY2l0eSkKICAgICBjaGVja0NvbnNp
c3RlbmN5KCk7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKFByb3BlcnR5
TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgU3Ry
dWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVy
dHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAg
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJv
cGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJs
ZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCmluZGV4IDJkZjU2OTEzMWM1MjkwNmQwOWExY2Q2NDM3ZDNhYzYyZTMxMjg2MjEuLjk0
YTA2YjJmOTY5ZjJlZDNmZjdkZGUwYmU2ZjExY2I4NDhkY2I4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC03NiwxOCArNzYsMTggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUs
IHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBh
ZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBz
cGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJl
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1
cmU+IGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlm
aWVyJik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVy
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJh
bnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBzZWFsVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBmcmVlemVUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1
cmUqKTsKLQotICAgICAgICBib29sIGlzU2VhbGVkKCk7Ci0gICAgICAgIGJvb2wgaXNGcm96ZW4o
KTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IHNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwor
CisgICAgICAgIGJvb2wgaXNTZWFsZWQoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIGJvb2wgaXNG
cm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3Qg
eyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KIAogICAgICAgICBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmpl
Y3QqKTsKQEAgLTk1LDggKzk1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5TdHJ1Y3R1
cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAK
LSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgYWRkUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Cisg
ICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJv
dG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUg
PSBwcm90b3R5cGU7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29u
c3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAg
LTEyMCwxMiArMTIwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBwcm9w
ZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbm9ueW1vdXNTbG90Q291bnQgKyAo
bV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkg
OiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KICAgICAgICAgYm9vbCBp
c1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCi0gICAgICAgIHNpemVfdCBnZXQoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChTdHJpbmdJbXBs
KiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1Zh
bHVlKTsKLSAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorICAgICAgICBz
aXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlO
YW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAg
ICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1Zh
bHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwo
KSk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpAQCAtMTM4LDEyICsxMzgsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6IG1f
b2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAgICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5
RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdm9pZCBk
ZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRy
YWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVu
Y3Rpb25UaHJhc2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShK
U0dsb2JhbERhdGEmLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsg
Ly8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUoKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmguCi0gICAgICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhQcm9wZXJ0
eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlKTsKKyAgICAgICAgdm9pZCBnZXRQcm9w
ZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25N
b2RlIG1vZGUpOwogCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3Qg
eyByZXR1cm4gbV9jbGFzc0luZm87IH0KIApAQCAtMTc4LDIzICsxNzgsMjMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9IDEsCiAgICAgICAgICAg
ICBVbmNhY2hlZERpY3Rpb25hcnlLaW5kID0gMgogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXQoY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICBzaXplX3QgcHV0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUpOwogCiAgICAgICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQg
PSAwKTsKICAgICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICAgICAgYm9vbCBk
ZXNwZWNpZnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHZvaWQgZGVzcGVj
aWZ5QWxsRnVuY3Rpb25zKCk7CisgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1
bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5UHJv
cGVydHlUYWJsZSgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKLSAg
ICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKQorICAgICAgICBQ
cm9wZXJ0eVRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAg
dm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lk
IG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlICYmIG1fcHJl
dmlvdXMpCi0gICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAg
ICAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoZ2xvYmFsRGF0YSk7CiAgICAgICAgIH0K
IAogICAgICAgICBzaWduZWQgY2hhciB0cmFuc2l0aW9uQ291bnQoKSBjb25zdApAQCAtMjUxLDkg
KzI1MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyA0IGZyZWUgYml0cwogICAgIH07
CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKLSAg
ICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFt
X3Byb3BlcnR5VGFibGUpCiAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1MWY0YmQ3ZTIzNmViZmQzZDA3OWNiMjYwMjhmYjE0MjFmZmQ4YjMyLi4yNmQ3NTg2YjM0
OWNhOTJlYzAxMzkyZWNhNDQ3NjIyNWU5MzgxNzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDQtMTIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFByb3BlcnR5TWFw
RW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQwNworCisgICAgICAgIFBhc3Mg
SlNHbG9iYWxEYXRhIHJlZmVyZW5jZSBvbiB0byBBUElzIHRoYXQgbm93IG5lZWQgdGhlbQorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVu
dDo6YWxsKToKKwogMjAxMS0wNC0xMiAgTHVpeiBBZ29zdGluaSAgPGx1aXouYWdvc3RpbmlAb3Bl
bmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBbmRyZWFzIEtsaW5nLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDQzMDdjMWM0
NjFiMGZmNDZiZjhhM2E3N2JhYjhlYzJlNTA0ZjliYjYuLjU3NWIyOTZjNDljZWNiMzU4ZTE4NDgy
Y2Q2YjU4ZGMwZmZjY2RiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd1NoZWxsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93KTsKICAgICAgICAg
ICAgIG1fd2luZG93LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cpOwotICAgICAgICAgICAg
c2V0UHJvdG90eXBlKHdpbmRvdy0+cHJvdG90eXBlKCkpOworICAgICAgICAgICAgc2V0UHJvdG90
eXBlKGdsb2JhbERhdGEsIHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAgICB9CiAgICAgICAg
IHZvaWQgc2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAxOTJl
ZjVkYjg1MzNhZmFlMDRmM2JmMDkxMjk3YjA3ZGZkYTY0N2U3Li5jMzNmODU5ZmIyMDU1NDE4MGIz
OTk3MWVmMzdkNTZhNmZiYmEzZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04Niw3ICs4Niw3IEBAIEpTVmFsdWUg
SlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVuCiBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBl
eGVjKSBjb25zdAogewogICAgIC8vIElmICJhbGwiIGhhcyBiZWVuIG92ZXJ3cml0dGVuLCByZXR1
cm4gdGhlIG92ZXJ3cml0dGVuIHZhbHVlCi0gICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KElkZW50
aWZpZXIoZXhlYywgImFsbCIpKTsKKyAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CiAgICAgaWYgKHYpCiAgICAgICAg
IHJldHVybiB2OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89334</attachid>
            <date>2011-04-12 21:21:06 -0700</date>
            <delta_ts>2011-04-12 22:50:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58407-20110412212105.patch</filename>
            <type>text/plain</type>
            <size>79446</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM2ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IDcwNjY4YmQyMzVlNWVkYmJhYjQzM2RlZTcwN2Q5NTYxMTJkNTY3Yjcu
LjA4ZGM3MjExYjJmMzAxNTM2ZTcxYTM2MDgxZTEwOWJiYzA0ZDZjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc0Ns
YXNzRGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVj
KSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsg
Ly8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNh
biBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpKQotICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFBy
b3RvdHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAganNDbGFz
c0RhdGEuY2FjaGVkUHJvdG90eXBlLT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBqc0NsYXNzRGF0YS5jYWNo
ZWRQcm90b3R5cGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZTVjNzc4ZjliYzUwYWQ5ODdlMTA3ZDU1MmI5NzkwZTQ4YjBmOTFlZS4uMTU4
YjI1NjI2ZDJhMTQ2MjY0YTUzYjljM2RiMDA3OTczN2NhMmMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5
cGUgPSBqc051bGwoKTsKLSAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHByb3RvdHlw
ZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSgqZ2xvYmFsRGF0YSwgcHJvdG90
eXBlKTsKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBi
NzAzMGU0YmE1ZmM5NWM4ODcxZTJlZjdlOTAzNWI3MmJiMWZmYzVjLi4yZGYwMTBhNTE4OWY3YzZl
ZDJjOWFlZjljMThlMzFmMzcwODk1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2Uo
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogCiAgICAg
SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+KiBvYmplY3QgPSBuZXcg
KGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CiAgICAgaWYgKEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCi0gICAgICAgIG9iamVj
dC0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKIAogICAgIHJldHVybiB0b1JlZihvYmpl
Y3QpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogCi0gICAganNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNs
ZUNoZWNrKGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7CisgICAganNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwganNW
YWx1ZS5pc09iamVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVj
dEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMThmYTU2NWQx
YmY2M2E4NzMxMzEwYjE0YmQzMWRjYmUxNWRkMTU4Ny4uZWVlMDJiYjE4MTUxODhiZjk5NzI2Nzdj
MWU2MmM3MTI4YjE4OTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDExLTA0LTEyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1h
cEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBNYWtl
IFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlLCBh
bmQgdGhlbgorICAgICAgICBwcm9wYWdhdGUgdGhlIHJlcXVpcmVkIEpTR2xvYmFsRGF0YSB0aHJv
dWdoIGFsbCB0aGUgbWV0aG9kcyBpdCBlbmRzCisgICAgICAgIHVwIGJlaW5nIG5lZWRlZC4KKwor
ICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnBy
b3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZSk6CisgICAgICAgIChKU09i
amVjdFNldFByb3RvdHlwZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Om5h
bWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZVNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6bG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3plbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAg
ICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KToKKwog
MjAxMS0wNC0xMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAppbmRleCBkMjBjMmNiOWI5ZTNiZTFhNTJjMDZkMmYwYjRhNTdlZjc5
NGQ4YTgxLi41ZWMzM2Y2MjIxOGQ1Y2E2NzZjMmQzMzU5MDYzMDIwNWRiN2VlN2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMxNiwxMiArMzE2LDEyIEBA
IF9fWk4zSlNDOU1hcmtTdGFjazE4aW5pdGlhbGl6ZVBhZ2VzaXplRXYKIF9fWk4zSlNDOVN0cnVj
dHVyZTE3c3RvcElnbm9yaW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMThzdGFydElnbm9y
aW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMjFhZGRQcm9wZXJ0eVRyYW5zaXRpb25FUk5T
XzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KLV9f
Wk4zSlNDOVN0cnVjdHVyZTIybWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEV2Ci1fX1pOM0pTQzlTdHJ1
Y3R1cmUyNWNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25FUFMwX05TXzdKU1ZhbHVlRQotX19aTjNK
U0M5U3RydWN0dXJlMjdkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25FUktOU18xMElkZW50aWZp
ZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVQUzBf
UktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb25FUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQotX19aTjNKU0M5U3Ry
dWN0dXJlM2dldEVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlT
dHJ1Y3R1cmUyMm1hdGVyaWFsaXplUHJvcGVydHlNYXBFUk5TXzEySlNHbG9iYWxEYXRhRQorX19a
TjNKU0M5U3RydWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFs
RGF0YUVQUzBfTlNfN0pTVmFsdWVFCitfX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCitfX1pO
M0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVSTlNfMTJKU0dsb2Jh
bERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmll
ckVqUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlTdHJ1Y3R1cmUzZ2V0RVJOU18xMkpTR2xvYmFsRGF0
YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzlTdHJ1Y3R1cmU0
MGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVFUFMwX1JLTlNfMTBJZGVu
dGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlQzFFTlNfN0pTVmFsdWVF
UktOU184VHlwZUluZm9FalBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUQxRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
aW5kZXggN2VhOTU4YzQzNWY2MmM5MWU4NWQzOTY3YmZhOTM4YzU2NjFkNDFmZC4uNGIxZjgwODUy
Y2Q0YWMwNzc1MDlhMGVkNTg1OWQzNzFhZmNkMWZlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTc4LDcgKzc4LDYgQEAgRVhQ
T1JUUwogICAgID9jYWxsT25NYWluVGhyZWFkQW5kV2FpdEBXVEZAQFlBWFA2QVhQQVhAWjBAWgog
ICAgID9jYW5jZWxDYWxsT25NYWluVGhyZWFkQFdURkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2Nh
cGFjaXR5QEhlYXBASlNDQEBRQkVJWFoKLSAgICA/Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkBT
dHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFW
MTJAVkpTVmFsdWVAMkBAWgogICAgID9jaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRp
ZmllckBKU0NAQENBWFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAgP2NoZWNrQ3VycmVudElkZW50aWZp
ZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BAQ0FYUEFWSlNHbG9iYWxEYXRhQDJAQFoKICAgICA/Y2hl
Y2tTeW50YXhASlNDQEBZQT9BVkNvbXBsZXRpb25AMUBQQVZFeGVjU3RhdGVAMUBBQlZTb3VyY2VD
b2RlQDFAQFoKQEAgLTE0Myw4ICsxNDIsNiBAQCBFWFBPUlRTCiAgICAgP2RlbGV0ZVByb3BlcnR5
QEpTVmFyaWFibGVPYmplY3RASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJA
MkBAWgogICAgID9kZWxldGVQcm9wZXJ0eUBTdHJpbmdPYmplY3RASlNDQEBVQUVfTlBBVkV4ZWNT
dGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9kZWxldGVUYWJsZUBIYXNoVGFibGVASlND
QEBRQkVYWFoKLSAgICA/ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uQFN0cnVjdHVyZUBKU0NA
QFFBRVhBQlZJZGVudGlmaWVyQDJAQFoKLSAgICA/ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9u
QFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQ
QVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVzdHJveUBIZWFwQEpTQ0BAUUFFWFhaCiAg
ICAgP2RldGFjaEBEZWJ1Z2dlckBKU0NAQFVBRVhQQVZKU0dsb2JhbE9iamVjdEAyQEBaCiAgICAg
P2RldGFjaFRocmVhZEBXVEZAQFlBWElAWgpAQCAtMTcyLDcgKzE2OSw2IEBAIEVYUE9SVFMKICAg
ICA/ZnJvbUBJZGVudGlmaWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/
ZnVuY3Rpb25HZXR0ZXJAUHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNT
dGF0ZUAyQEBaCiAgICAgP2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRVBC
VlVTdHJpbmdAMkBYWgotICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSVBBVlN0cmluZ0ltcGxA
V1RGQEBBQUlBQVBBVkpTQ2VsbEAyQEBaCiAgICAgP2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFVB
RT9BVzRDYWxsVHlwZUAyQEFBVENhbGxEYXRhQDJAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBK
U0NlbGxASlNDQEBVQUU/QVc0Q29uc3RydWN0VHlwZUAyQEFBVENvbnN0cnVjdERhdGFAMkBAWgog
ICAgID9nZXRKU051bWJlckBKU0NlbGxASlNDQEBVQUU/QVZKU1ZhbHVlQDJAWFoKQEAgLTIzOSw3
ICsyMzUsNiBAQCBFWFBPUlRTCiAgICAgP21hcmtDaGlsZHJlbkBKU09iamVjdEBKU0NAQFVBRVhB
QVZNYXJrU3RhY2tAMkBAWgogICAgID9tYXJrQ2hpbGRyZW5ASlNXcmFwcGVyT2JqZWN0QEpTQ0BA
RUFFWEFBVk1hcmtTdGFja0AyQEBaCiAgICAgP21hcmtDaGlsZHJlbkBTY29wZUNoYWluTm9kZUBK
U0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBAWgotICAgID9tYXRlcmlhbGl6ZVByb3BlcnR5TWFwQFN0
cnVjdHVyZUBKU0NAQEFBRVhYWgogICAgID9tb250aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05A
WgogICAgID9tc1RvWWVhckBXVEZAQFlBSE5AWgogICAgID9uYW1lQEludGVybmFsRnVuY3Rpb25A
SlNDQEBRQUVBQlZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5k
ZXggZjI2OGJlZjAwMzM4NDkwMmM2MWM0YzY4ZWJlMDViZGMyODYyYTJkOS4uODNlNDU5MjMxYTBm
YzAwMzIyYjgyMTA0ZWJmNDU2NjI3NjI5MGM1MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI2Miw3
ICsyNjIsNyBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoUHJvZ3JhbU5v
ZGUqIHByb2dyYW1Ob2RlLCBTY29wZUNoYWluTm9kZSogcwogICAgICAgICBWZWN0b3I8c3RkOjpw
YWlyPGludCwgYm9vbD4sIDE2PiBmdW5jdGlvbkluZm8oZnVuY3Rpb25TdGFjay5zaXplKCkpOwog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2suc2l6ZSgpOyArK2kp
IHsKICAgICAgICAgICAgIEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFj
a1tpXTsKLSAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0KGZ1bmN0aW9uLT5p
ZGVudCgpKTsgLy8gTWFrZSBzdXJlIG91ciBuZXcgZnVuY3Rpb24gaXMgbm90IHNoYWRvd2VkIGJ5
IGFuIG9sZCBwcm9wZXJ0eS4KKyAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3ZlRGlyZWN0
KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTWFrZSBzdXJlIG91ciBuZXcg
ZnVuY3Rpb24gaXMgbm90IHNoYWRvd2VkIGJ5IGFuIG9sZCBwcm9wZXJ0eS4KICAgICAgICAgICAg
IFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBzeW1ib2xUYWJsZS0+aW5saW5lR2V0KGZ1bmN0aW9u
LT5pZGVudCgpLmltcGwoKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChlbnRyeS5p
c051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IDY3MDI0MDQzYzYzZWMzOGI5OTliODNjNmViNGI2YmZjM2QwMTI0NmMu
LmQ3OWM1ODFlMzYxNzFmNGNjY2ZhZDU3YmMzM2JkNTM2NTcyNDk0YmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNjIwLDcg
KzYyMCw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFNvdXJjZVRvRXJyb3IoQ2FsbEZyYW1lKiBjYWxs
RnJhbWUsIEVycm9ySW5zdGFuY2UqIGV4Y2VwdGlvbiwKICAgICAgICAgcmV0dXJuOwogCiAgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpOwotICAg
IEpTVmFsdWUganNNZXNzYWdlID0gZXhjZXB0aW9uLT5nZXREaXJlY3QoZ2xvYmFsRGF0YS0+cHJv
cGVydHlOYW1lcy0+bWVzc2FnZSk7CisgICAgSlNWYWx1ZSBqc01lc3NhZ2UgPSBleGNlcHRpb24t
PmdldERpcmVjdCgqZ2xvYmFsRGF0YSwgZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+bWVzc2Fn
ZSk7CiAgICAgaWYgKCFqc01lc3NhZ2UgfHwgIWpzTWVzc2FnZS5pc1N0cmluZygpKQogICAgICAg
ICByZXR1cm47CiAKQEAgLTEzNjQsNyArMTM2NCw3IEBAIE5FVkVSX0lOTElORSB2b2lkIEludGVy
cHJldGVyOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENvZGVCbG9jayoK
ICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAg
ICAgaWYgKGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAg
ICAgICAgYmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCkpOwotICAgICAgICAgICAgb2Zmc2V0ID0gYmFzZU9iamVjdC0+c3RydWN0dXJlKCkt
PmdldChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgb2Zmc2V0ID0gYmFzZU9iamVjdC0+c3Ry
dWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgfQogCiAgICAgICAgIEFTU0VSVCghYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkpOwpAQCAtMzA3OSw3ICszMDc5LDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKIAogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7
CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzddLnUub3BlcmFuZDsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9i
amVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9w
ZXJhbmQpKSkgPT0gb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+
b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkp
ID09IG9mZnNldCk7CiAgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNW
YWx1ZSgpKTsKIAogICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uKTsKQEAgLTMxMTQsNyArMzExNCw3IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3BlcmFuZDsKICAgICAg
ICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbNV0udS5vcGVyYW5kOwogICAgICAgICAg
ICAgICAgIAotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2Nh
dGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjb2RlQmxvY2stPmlkZW50aWZpZXIo
dlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChi
YXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlv
bihjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51
Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXRE
aXJlY3RPZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5y
KHZhbHVlKS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfcHV0X2J5X2lkX3JlcGxhY2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAppbmRleCA5MjJiZDU5NjQzZGEzZmYxYjBiNmI3NjRmYWFmOWZmM2JmMDg0NDhiLi5mZTI2
ZGNhYTE2MzJiNDY3YzFmMThjZjczNGY2M2YxMGNhZDUzZjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcApAQCAtOTE5LDcgKzkxOSw3IEBAIE5FVkVSX0lOTElORSB2b2lk
IEpJVFRodW5rczo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxv
Y2sqIGNvCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnku
CiAgICAgICAgIGlmIChzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgp
KSB7CiAgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3Qo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwotICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG9mZnNl
dCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzdHViSW5m
by0+aW5pdEdldEJ5SWRQcm90byhzdHJ1Y3R1cmUsIHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUo
KSk7CkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTihFbmNvZGVkSlNW
YWx1ZSwgb3BfZ2V0X2J5X2lkX3Byb3RvX2xpc3QpCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUg
dHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCiAgICAgICAgIGlmIChzbG90QmFzZU9iamVjdC0+c3Ry
dWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICBzbG90QmFzZU9iamVjdC0+
ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkpOwotICAgICAg
ICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlO
YW1lKTsKKyAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
Z2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9CiAK
ICAgICAgICAgaW50IGxpc3RJbmRleDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCmluZGV4IDBmNmE2NDY1
NGQ4ZDNiMmMwZTMxYWQyMWFkYTdmMjgyNDM4MGYzN2MuLmVkZWVjNTc1NmExZDNkYTIxY2ZiYWVi
YWI4Zjk4ODY3MzgyODE2OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaApAQCAtMzksNyArMzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICwgbV9vYmplY3Qob2JqZWN0KQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fb2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5
KCkpCi0gICAgICAgICAgICAgICAgbV9vYmplY3QtPnNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnRv
Q2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24obV9vYmplY3QtPnN0cnVjdHVyZSgpKSk7Cisg
ICAgICAgICAgICAgICAgbV9vYmplY3QtPnNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnRvQ2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9vYmplY3QtPnN0cnVjdHVyZSgp
KSk7CiAgICAgICAgIH0KIAogICAgICAgICB+QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlv
bi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNw
cAppbmRleCAyNzEwNmExODRlNmYwMjJiYWRlMzJiOGVlM2Q1ZGRiNDIwODJjZjFiLi42MDkxODMx
YTVmYTgwYjA2MTUwNzNiZmU2OTUyOWIwOWQxZTNmNTBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtNTEsMTIgKzUxLDEy
IEBAIEludGVybmFsRnVuY3Rpb246OkludGVybmFsRnVuY3Rpb24oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCBKU0dsb2JhbE9iamVjdCogZ2xvCiAKIGNvbnN0IFVTdHJpbmcmIEludGVybmFsRnVu
Y3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBhc1N0cmluZyhnZXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUpKS0+dHJ5R2V0VmFs
dWUoKTsKKyAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUpKS0+dHJ5R2V0VmFsdWUoKTsK
IH0KIAogY29uc3QgVVN0cmluZyBJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZShFeGVjU3Rh
dGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOworICAgIEpTVmFsdWUgZGlz
cGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRh
KCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOwogICAgIAogICAgIGlmIChkaXNwbGF5TmFt
ZSAmJiBpc0pTU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGRpc3BsYXlOYW1lKSkKICAgICAg
ICAgcmV0dXJuIGFzU3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCmluZGV4IGQwYzUwZGQ2
NzRhNGE4MjcxNzAzMmUwMjEzZDYyMDBiNzg3MDM3NTEuLjgzYjZhMWMxMmM0YzhkZDVkZTkwZTA0
NzczNTIxMDgzNTk0NzBiOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIGJvb2wgSlNBY3RpdmF0aW9uOjpn
ZXRPd25Qcm9wZXJ0eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0CiAgICAgaWYgKHN5bWJvbFRhYmxlR2V0KHByb3BlcnR5TmFtZSwgc2xvdCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCi0gICAgaWYgKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0
aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChXcml0ZUJh
cnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBzbG90LnNldFZhbHVlKGxvY2F0
aW9uLT5nZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAKaW5kZXggZGJmYzYwNjU1ZTJjMzNjZmUw
NWViZGE2NzQ0NmY3OTZlNzIwMDM0Yy4uYjhlNDk5YjY4NzljYjNiZTExZTljNTc3MjFiZTk0ZWFj
NWUwN2VhOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAKQEAgLTExMiwxMiArMTEyLDEyIEBAIHN0YXRpYyB2b2lkIGNyZWF0ZURlc2NyaXB0b3JGb3JU
aHJvd2luZ1Byb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlEZXNjcmlwCiAKIGNvbnN0
IFVTdHJpbmcmIEpTRnVuY3Rpb246Om5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVy
biBhc1N0cmluZyhnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5h
bWUpKS0+dHJ5R2V0VmFsdWUoKTsKKyAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPm5hbWUpKS0+
dHJ5R2V0VmFsdWUoKTsKIH0KIAogY29uc3QgVVN0cmluZyBKU0Z1bmN0aW9uOjpkaXNwbGF5TmFt
ZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVj
dChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOworICAgIEpT
VmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5n
bG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+ZGlzcGxheU5hbWUpOwogICAgIAogICAgIGlmIChk
aXNwbGF5TmFtZSAmJiBpc0pTU3RyaW5nKCZleGVjLT5nbG9iYWxEYXRhKCksIGRpc3BsYXlOYW1l
KSkKICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGRpc3BsYXlOYW1lKS0+dHJ5R2V0VmFsdWUoKTsK
QEAgLTE4NiwxMyArMTg2LDEzIEBAIGJvb2wgSlNGdW5jdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOCiAgICAgICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsK
IAogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlw
ZSkgewotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERp
cmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5r
bm93bj4qIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpOwogCiAgICAgICAgIGlmICghbG9jYXRpb24pIHsKICAgICAgICAgICAgIEpT
T2JqZWN0KiBwcm90b3R5cGUgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzY29wZSgpLT5n
bG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCkpOwogICAgICAgICAgICAgcHJvdG90
eXBlLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
Y29uc3RydWN0b3IsIHRoaXMsIERvbnRFbnVtKTsKICAgICAgICAgICAgIHB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgRG9udERlbGV0ZSB8IERvbnRFbnVtKTsKLSAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGly
ZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIGxvY2F0aW9uID0gZ2V0RGly
ZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB9
CiAKICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzLCBsb2NhdGlvbi0+Z2V0KCksIG9mZnNldEZv
ckxvY2F0aW9uKGxvY2F0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggNDExMDhjNDZlOTY1MTY3YjAwYjhkYWEyMGFlN2Nm
MjYxM2YxYTAxOS4uODRjODVhZTdhY2Y4MmZjYmE5MzdkNDVkN2IyYWVkNzMzM2VmNjYzMyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApA
QCAtMTM3LDExICsxMzcsMTEgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6cHV0V2l0aEF0dHJpYnV0
ZXMoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXIKICAgICBpZiAoc3lt
Ym9sVGFibGVQdXRXaXRoQXR0cmlidXRlcyhleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFt
ZSwgdmFsdWUsIGF0dHJpYnV0ZXMpKQogICAgICAgICByZXR1cm47CiAKLSAgICBKU1ZhbHVlIHZh
bHVlQmVmb3JlID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSB2YWx1ZUJl
Zm9yZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgSlNWYXJpYWJsZU9iamVjdDo6cHV0KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgdmFsdWUsIHNsb3QpOwogICAgIGlmICghdmFsdWVCZWZvcmUpIHsKLSAgICAg
ICAgSlNWYWx1ZSB2YWx1ZUFmdGVyID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CisgICAgICAg
IEpTVmFsdWUgdmFsdWVBZnRlciA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgICAgIGlmICh2YWx1ZUFmdGVyKQogICAgICAgICAgICAgSlNPYmplY3Q6
OnB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWVBZnRlciwgYXR0cmli
dXRlcyk7CiAgICAgfQpAQCAtMjk5LDE4ICsyOTksMTggQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgcHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJh
bnNpdGlvbihleGVjLCBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgdGhpcywgbV9mdW5jdGlv
blN0cnVjdHVyZS5nZXQoKSwgMSwgSWRlbnRpZmllcihleGVjLCAianNjcHJpbnQiKSwgZ2xvYmFs
RnVuY0pTQ1ByaW50KSwgRG9udEVudW0pOwogI2VuZGlmCiAKLSAgICByZXNldFByb3RvdHlwZShw
cm90b3R5cGUpOworICAgIHJlc2V0UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90
eXBlKTsKIH0KIAogLy8gU2V0IHByb3RvdHlwZSwgYW5kIGFsc28gaW5zZXJ0IHRoZSBvYmplY3Qg
cHJvdG90eXBlIGF0IHRoZSBlbmQgb2YgdGhlIGNoYWluLgotdm9pZCBKU0dsb2JhbE9iamVjdDo6
cmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpCit2b2lkIEpTR2xvYmFsT2JqZWN0Ojpy
ZXNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUgcHJvdG90eXBl
KQogewotICAgIHNldFByb3RvdHlwZShwcm90b3R5cGUpOworICAgIHNldFByb3RvdHlwZShnbG9i
YWxEYXRhLCBwcm90b3R5cGUpOwogCiAgICAgSlNPYmplY3QqIG9sZExhc3RJblByb3RvdHlwZUNo
YWluID0gbGFzdEluUHJvdG90eXBlQ2hhaW4odGhpcyk7CiAgICAgSlNPYmplY3QqIG9iamVjdFBy
b3RvdHlwZSA9IG1fb2JqZWN0UHJvdG90eXBlLmdldCgpOwogICAgIGlmIChvbGRMYXN0SW5Qcm90
b3R5cGVDaGFpbiAhPSBvYmplY3RQcm90b3R5cGUpCi0gICAgICAgIG9sZExhc3RJblByb3RvdHlw
ZUNoYWluLT5zZXRQcm90b3R5cGUob2JqZWN0UHJvdG90eXBlKTsKKyAgICAgICAgb2xkTGFzdElu
UHJvdG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBvYmplY3RQcm90b3R5cGUp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJr
U3RhY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAppbmRleCAwMGVmNWNiOGJhODBkOWMzZDNlMGI4ZWFlYzkyM2ZjZDdjZDIwMDY2Li4zMDBmNGIw
NDk4NTg5NjVlM2MxMjkwZmYxM2ExNDdiM2Q4YjQwNTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTIzNSw3ICsyMzUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5R2xvYmFsc1RvKFJlZ2lzdGVyRmlsZSYpOwog
ICAgICAgICB2b2lkIHJlc2l6ZVJlZ2lzdGVycyhpbnQgb2xkU2l6ZSwgaW50IG5ld1NpemUpOwog
Ci0gICAgICAgIHZvaWQgcmVzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpOworICAgICAg
ICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsK
IAogICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdCB7IHJldHVybiAqbV9n
bG9iYWxEYXRhLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcAppbmRleCBiMzA3NTQwNzljYjk0NGIzYWE2MDYzZjk1OGI1YjMwMGE0YjY1MWE0Li5h
YjQ3MmQ0NjkzN2Q4M2YyODM5ODExYWRiYjdhMDkwY2IxYjRmZGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdm9pZCBK
U09iamVjdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlIHZhbHUKICAgICAgICAgLy8gU2V0dGluZyBfX3Byb3RvX18gdG8gYSBub24t
b2JqZWN0LCBub24tbnVsbCB2YWx1ZSBpcyBzaWxlbnRseSBpZ25vcmVkIHRvIG1hdGNoIE1vemls
bGEuCiAgICAgICAgIGlmICghdmFsdWUuaXNPYmplY3QoKSAmJiAhdmFsdWUuaXNOdWxsKCkpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmICghc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
Y2sodmFsdWUpKQorICAgICAgICBpZiAoIXNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgdmFsdWUpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVh
dGVFcnJvcihleGVjLCAiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTEyNywxNCArMTI3LDE0IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAg
ICAgCiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7
Ci0gICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7
CisgICAgaWYgKChtX3N0cnVjdHVyZS0+Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSAmJiBhdHRy
aWJ1dGVzICYgUmVhZE9ubHkpIHsKICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCiAg
ICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RN
b2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAogICAgIGZvciAoSlNPYmplY3QqIG9iaiA9IHRoaXM7IDsgb2JqID0gYXNPYmplY3QocHJvdG90
eXBlKSkgewotICAgICAgICBpZiAoSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KHByb3BlcnR5
TmFtZSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIGlmIChncy5pc0dldHRl
clNldHRlcigpKSB7CiAgICAgICAgICAgICAgICAgSlNPYmplY3QqIHNldHRlckZ1bmMgPSBhc0dl
dHRlclNldHRlcihncyktPnNldHRlcigpOyAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKCFz
ZXR0ZXJGdW5jKSB7CkBAIC0yMTgsMTAgKzIxOCwxMCBAQCBib29sIEpTT2JqZWN0OjpkZWxldGVQ
cm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
IHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsK
LSAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKKyAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChl
eGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSkgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBpZiAoKGF0dHJpYnV0ZXMgJiBEb250RGVs
ZXRlKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgcmVtb3ZlRGlyZWN0KHBy
b3BlcnR5TmFtZSk7CisgICAgICAgIHJlbW92ZURpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHBy
b3BlcnR5TmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMzEyLDM0ICsz
MTIsMzUgQEAgY29uc3QgSGFzaEVudHJ5KiBKU09iamVjdDo6ZmluZFByb3BlcnR5SGFzaEVudHJ5
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmkKIAogdm9pZCBKU09iamVjdDo6ZGVmaW5l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBK
U09iamVjdCogZ2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgSlNW
YWx1ZSBvYmplY3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIG9iamVj
dCA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgaWYg
KG9iamVjdCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9z
dHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAgICAgICAgIGFzR2V0dGVy
U2V0dGVyKG9iamVjdCktPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGdldHRlckZ1bmN0
aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAg
ICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9IG5ldyAoZXhlYykgR2V0dGVyU2V0dGVyKGV4
ZWMpOwotICAgIHB1dERpcmVjdEludGVybmFsKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCBnZXR0ZXJTZXR0ZXIsIGF0dHJpYnV0ZXMgfCBHZXR0ZXIsIHRydWUsIHNsb3QpOworICAg
IHB1dERpcmVjdEludGVybmFsKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVy
LCBhdHRyaWJ1dGVzIHwgR2V0dGVyLCB0cnVlLCBzbG90KTsKIAogICAgIC8vIHB1dERpcmVjdCB3
aWxsIGNoYW5nZSBvdXIgU3RydWN0dXJlIGlmIHdlIGFkZCBhIG5ldyBwcm9wZXJ0eS4gRm9yCiAg
ICAgLy8gZ2V0dGVycyBhbmQgc2V0dGVycywgdGhvdWdoLCB3ZSBhbHNvIG5lZWQgdG8gY2hhbmdl
IG91ciBTdHJ1Y3R1cmUKICAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0
dGVyIG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xv
dDo6TmV3UHJvcGVydHkpIHsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihtX3N0cnVjdHVyZSk7CisgICAgICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgc2V0U3RydWN0dXJlKHN0
cnVjdHVyZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgbV9zdHJ1Y3R1cmUt
PnNldEhhc0dldHRlclNldHRlclByb3BlcnRpZXModHJ1ZSk7Ci0gICAgZ2V0dGVyU2V0dGVyLT5z
ZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CisgICAgZ2V0dGVy
U2V0dGVyLT5zZXRHZXR0ZXIoZ2xvYmFsRGF0YSwgZ2V0dGVyRnVuY3Rpb24pOwogfQogCiB2b2lk
IEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTT2JqZWN0KiBzZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmli
dXRlcykKIHsKLSAgICBKU1ZhbHVlIG9iamVjdCA9IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOwor
ICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lKTsKICAgICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAg
ICAgICAgIEFTU0VSVChtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsK
ICAgICAgICAgYXNHZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0U2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgc2V0dGVyRnVuY3Rpb24pOwpAQCAtMzU1LDcgKzM1Niw3IEBAIHZvaWQgSlNPYmplY3Q6
OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNPCiAgICAgLy8gaWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBv
ciBub24tc2V0dGVyLgogICAgIGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KSB7CiAgICAgICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7
Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6Omdl
dHRlclNldHRlclRyYW5zaXRpb24obV9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9zdHJ1Y3R1cmUpOwogICAgICAgICAgICAgc2V0U3RydWN0dXJl
KHN0cnVjdHVyZS5yZWxlYXNlKCkpOwogICAgICAgICB9CiAgICAgfQpAQCAtMzY0LDExICszNjUs
MTEgQEAgdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU08KICAgICBnZXR0ZXJTZXR0ZXItPnNldFNldHRl
cihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsKIH0KIAotSlNWYWx1ZSBKU09i
amVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSkKK0pTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0g
dGhpczsKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG9i
amVjdC0+Z2V0RGlyZWN0KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdmFs
dWUgPSBvYmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgICAgIGlmICghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlv
bk9iamVjdCA9IGFzR2V0dGVyU2V0dGVyKHZhbHVlKS0+Z2V0dGVyKCk7CkBAIC0zODMsMTEgKzM4
NCwxMSBAQCBKU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIH0KIH0KIAotSlNWYWx1ZSBKU09iamVjdDo6
bG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
K0pTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBKU09iamVjdCogb2JqZWN0ID0gdGhpczsK
ICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1ZSA9IG9iamVjdC0+
Z2V0RGlyZWN0KHByb3BlcnR5TmFtZSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBv
YmplY3QtPmdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsKICAg
ICAgICAgICAgIGlmICghdmFsdWUuaXNHZXR0ZXJTZXR0ZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgICAgIEpTT2JqZWN0KiBmdW5jdGlvbk9iamVj
dCA9IGFzR2V0dGVyU2V0dGVyKHZhbHVlKS0+c2V0dGVyKCk7CkBAIC00MjgsMTAgKzQyOSwxMCBA
QCBib29sIEpTT2JqZWN0Ojpwcm9wZXJ0eUlzRW51bWVyYWJsZShFeGVjU3RhdGUqIGV4ZWMsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgIHJldHVybiBkZXNjcmlwdG9yLmVudW1lcmFi
bGUoKTsKIH0KIAotYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNW
YWx1ZSkgY29uc3QKK2Jvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3Bl
Y2lmaWNWYWx1ZSkgY29uc3QKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwotICAgIGlmICht
X3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkg
IT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChleGVjLT5nbG9iYWxE
YXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpu
b3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBUaGlzIGNvdWxkIGJlIGEg
ZnVuY3Rpb24gd2l0aGluIHRoZSBzdGF0aWMgdGFibGU/IC0gc2hvdWxkIHByb2JhYmx5CkBAIC00
NjQsNyArNDY1LDcgQEAgdm9pZCBKU09iamVjdDo6Z2V0UHJvcGVydHlOYW1lcyhFeGVjU3RhdGUq
IGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWUKIAogdm9pZCBKU09iamVjdDo6
Z2V0T3duUHJvcGVydHlOYW1lcyhFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBtX3N0cnVjdHVyZS0+
Z2V0UHJvcGVydHlOYW1lcyhwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKKyAgICBtX3N0cnVjdHVyZS0+
Z2V0UHJvcGVydHlOYW1lcyhleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZXMsIG1vZGUp
OwogICAgIGdldENsYXNzUHJvcGVydHlOYW1lcyhleGVjLCBjbGFzc0luZm8oKSwgcHJvcGVydHlO
YW1lcywgbW9kZSk7CiB9CiAKQEAgLTUwOSwzMyArNTEwLDMzIEBAIEpTT2JqZWN0KiBKU09iamVj
dDo6dW53cmFwcGVkT2JqZWN0KCkKICAgICByZXR1cm4gdGhpczsKIH0KIAotdm9pZCBKU09iamVj
dDo6c2VhbCgpCit2b2lkIEpTT2JqZWN0OjpzZWFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
IHsKLSAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihtX3N0cnVjdHVy
ZSkpOworICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIG1fc3RydWN0dXJlKSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OmZyZWV6ZSgpCit2b2lkIEpT
T2JqZWN0OjpmcmVlemUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIHNldFN0cnVj
dHVyZShTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24obV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRT
dHJ1Y3R1cmUoU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlKSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKCkKK3ZvaWQgSlNP
YmplY3Q6OnByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKICAg
ICBpZiAoaXNFeHRlbnNpYmxlKCkpCi0gICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnBy
ZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihtX3N0cnVjdHVyZSkpOworICAgICAgICBzZXRTdHJ1
Y3R1cmUoU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwg
bV9zdHJ1Y3R1cmUpKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0KGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3ZvaWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsK
ICAgICBzaXplX3Qgb2Zmc2V0OwogICAgIGlmIChtX3N0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkgewotICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+cmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUpOworICAgICAgICBvZmZzZXQgPSBtX3N0
cnVjdHVyZS0+cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAg
ICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpy
ZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24obV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0
KTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQpOwogICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICBpZiAo
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zm
c2V0KG9mZnNldCk7CkBAIC01OTgsMTEgKzU5OSwxMSBAQCB2b2lkIEpTT2JqZWN0OjphbGxvY2F0
ZVByb3BlcnR5U3RvcmFnZShzaXplX3Qgb2xkU2l6ZSwgc2l6ZV90IG5ld1NpemUpCiAgICAgbV9w
cm9wZXJ0eVN0b3JhZ2UgPSBuZXdQcm9wZXJ0eVN0b3JhZ2U7CiB9CiAKLWJvb2wgSlNPYmplY3Q6
OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKK2Jvb2wgSlNPYmpl
Y3Q6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQogewog
ICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXMgPSAwOwogICAgIEpTQ2VsbCogY2VsbCA9IDA7Ci0gICAg
c2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBjZWxsKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CiAgICAgaWYgKG9mZnNl
dCA9PSBXVEY6Om5vdEZvdW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVzY3JpcHRv
ci5zZXREZXNjcmlwdG9yKGdldERpcmVjdE9mZnNldChvZmZzZXQpLCBhdHRyaWJ1dGVzKTsKQEAg
LTc1NCw3ICs3NTUsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBnZXRE
aXJlY3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIGFjY2Vzc29yID0gZ2V0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICBpZiAoIWFjY2Vzc29yKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBhc0dl
dHRlclNldHRlcihhY2Nlc3Nvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAppbmRleCA3YTI0OGQyYjYzMWRmOTM0MDhkYTFlZTEzM2UyZmJjNTkwMGQyNWQwLi5iNTNh
ZWZjZDAwMzZhY2RiNjU2MDM2NGNkYTA4ZDk2YmU4MjFhNmFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTg3LDggKzg3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZpcnR1YWwgfkpTT2JqZWN0KCk7CiAKICAgICAgICAgSlNWYWx1ZSBwcm90b3R5
cGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUp
OwotICAgICAgICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTVmFsdWUgcHJvdG90
eXBlKTsKKyAgICAgICAgdm9pZCBzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBw
cm90b3R5cGUpOworICAgICAgICBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xv
YmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKICAgICAgICAgCiAgICAgICAgIHZvaWQgc2V0
U3RydWN0dXJlKE5vbk51bGxQYXNzUmVmUHRyPFN0cnVjdHVyZT4pOwogICAgICAgICBTdHJ1Y3R1
cmUqIGluaGVyaXRvcklEKEpTR2xvYmFsRGF0YSYpOwpAQCAtMTQ2LDIyICsxNDYsMjIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgZ2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVj
aWZpY0Z1bmN0aW9uKSBjb25zdDsKIAogICAgICAgICAvLyBUaGlzIGdldCBmdW5jdGlvbiBvbmx5
IGxvb2tzIGF0IHRoZSBwcm9wZXJ0eSBtYXAuCi0gICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICAgICAgSlNWYWx1ZSBnZXRE
aXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0
cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAg
cmV0dXJuIG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCkg
OiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25v
d24+KiBnZXREaXJlY3RMb2NhdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisg
ICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9w
ZXJ0eU5hbWUpOworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0g
V1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAgICAgICB9
CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24o
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKKyAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2ln
bmVkJiBhdHRyaWJ1dGVzKQogICAgICAgICB7CiAgICAgICAgICAgICBKU0NlbGwqIHNwZWNpZmlj
RnVuY3Rpb247Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAgICAgICAgICAg
c2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgICAgIHJldHVybiBvZmZz
ZXQgIT0gV1RGOjpub3RGb3VuZCA/IGxvY2F0aW9uRm9yT2Zmc2V0KG9mZnNldCkgOiAwOwogICAg
ICAgICB9CiAKQEAgLTE3Miw3ICsxNzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIHRyYW5zaXRpb25UbyhTdHJ1Y3R1cmUqKTsKIAotICAgICAgICB2b2lkIHJlbW92ZURpcmVj
dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICB2b2lkIHJlbW92ZURp
cmVjdChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBib29sIGhhc0N1c3RvbVByb3BlcnRpZXMoKSB7IHJldHVybiAhbV9zdHJ1Y3R1cmUtPmlz
RW1wdHkoKTsgfQogICAgICAgICBib29sIGhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSB7IHJl
dHVybiBtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpOyB9CiAKQEAgLTIw
OSwxMSArMjA5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
dHJpY3RNb2RlRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNFcnJvckluc3RhbmNlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAotICAg
ICAgICB2b2lkIHNlYWwoKTsKLSAgICAgICAgdm9pZCBmcmVlemUoKTsKLSAgICAgICAgdm9pZCBw
cmV2ZW50RXh0ZW5zaW9ucygpOwotICAgICAgICBib29sIGlzU2VhbGVkKCkgeyByZXR1cm4gbV9z
dHJ1Y3R1cmUtPmlzU2VhbGVkKCk7IH0KLSAgICAgICAgYm9vbCBpc0Zyb3plbigpIHsgcmV0dXJu
IG1fc3RydWN0dXJlLT5pc0Zyb3plbigpOyB9CisgICAgICAgIHZvaWQgc2VhbChKU0dsb2JhbERh
dGEmKTsKKyAgICAgICAgdm9pZCBmcmVlemUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQg
cHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIGJvb2wgaXNTZWFsZWQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNTZWFsZWQo
Z2xvYmFsRGF0YSk7IH0KKyAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc0Zyb3plbihnbG9iYWxEYXRhKTsgfQogICAg
ICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc0V4dGVuc2li
bGUoKTsgfQogCiAgICAgICAgIHZpcnR1YWwgQ29tcGxUeXBlIGV4Y2VwdGlvblR5cGUoKSBjb25z
dCB7IHJldHVybiBUaHJvdzsgfQpAQCAtNDE2LDcgKzQxNiw3IEBAIGlubGluZSBKU1ZhbHVlIEpT
T2JqZWN0Ojpwcm90b3R5cGUoKSBjb25zdAogICAgIHJldHVybiBtX3N0cnVjdHVyZS0+c3RvcmVk
UHJvdG90eXBlKCk7CiB9CiAKLWlubGluZSBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRo
Q3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSkKK2lubGluZSBib29sIEpTT2JqZWN0OjpzZXRQ
cm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTVmFsdWUg
cHJvdG90eXBlKQogewogICAgIEpTVmFsdWUgbmV4dFByb3RvdHlwZVZhbHVlID0gcHJvdG90eXBl
OwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlVmFsdWUgJiYgbmV4dFByb3RvdHlwZVZhbHVlLmlz
T2JqZWN0KCkpIHsKQEAgLTQyNSwxNCArNDI1LDE0IEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSkKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgbmV4dFByb3RvdHlwZVZhbHVlID0gbmV4dFByb3RvdHlw
ZS0+cHJvdG90eXBlKCk7CiAgICAgfQotICAgIHNldFByb3RvdHlwZShwcm90b3R5cGUpOworICAg
IHNldFByb3RvdHlwZShnbG9iYWxEYXRhLCBwcm90b3R5cGUpOwogICAgIHJldHVybiB0cnVlOwog
fQogCi1pbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBl
KQoraW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIEFTU0VSVChwcm90b3R5cGUpOwotICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90
eXBlVHJhbnNpdGlvbihtX3N0cnVjdHVyZSwgcHJvdG90eXBlKTsKKyAgICBSZWZQdHI8U3RydWN0
dXJlPiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgbV9zdHJ1Y3R1cmUsIHByb3RvdHlwZSk7CiAgICAgc2V0U3RydWN0dXJlKG5l
d1N0cnVjdHVyZS5yZWxlYXNlKCkpOwogfQogCkBAIC00NzEsNyArNDcxLDcgQEAgaW5saW5lIGJv
b2wgSlNWYWx1ZTo6aW5oZXJpdHMoY29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pIGNvbnN0CiAK
IEFMV0FZU19JTkxJTkUgYm9vbCBKU09iamVjdDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNs
b3QmIHNsb3QpCiB7Ci0gICAgaWYgKFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9u
ID0gZ2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKSkgeworICAgIGlmIChXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICBpZiAobV9zdHJ1Y3R1cmUtPmhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoKSAmJiBsb2NhdGlvbi0+aXNHZXR0ZXJTZXR0ZXIoKSkKICAg
ICAgICAgICAgIGZpbGxHZXR0ZXJQcm9wZXJ0eVNsb3Qoc2xvdCwgbG9jYXRpb24pOwogICAgICAg
ICBlbHNlCkBAIC01NTcsMTIgKzU1NywxMiBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGly
ZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAg
IGlmIChtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgdW5zaWduZWQgY3Vy
cmVudEF0dHJpYnV0ZXM7CiAgICAgICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247
Ci0gICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwg
Y3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgc2l6
ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBj
dXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAo
b2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGN1
cnJlbnRseSBhIHNwZWNpZmljIGZ1bmN0aW9uLCBhbmQgdGhlcmUgbm93IGVpdGhlciBpc24ndCwK
ICAgICAgICAgICAgIC8vIG9yIHRoZSBuZXcgdmFsdWUgaXMgZGlmZmVyZW50LCB0aGVuIGRlc3Bl
Y2lmeS4KICAgICAgICAgICAgIGlmIChjdXJyZW50U3BlY2lmaWNGdW5jdGlvbiAmJiAoc3BlY2lm
aWNGdW5jdGlvbiAhPSBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbikpCi0gICAgICAgICAgICAgICAg
bV9zdHJ1Y3R1cmUtPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24o
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIGlmIChjaGVja1JlYWRPbmx5
ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCkBAIC01ODIsNyArNTgyLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERp
cmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgICAgICBzaXplX3QgY3VycmVudENhcGFjaXR5
ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7Ci0gICAgICAgIG9mZnNl
dCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHByb3BlcnR5TmFt
ZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIG9mZnNldCA9IG1fc3Ry
dWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5
TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAgIGlmIChjdXJyZW50
Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAg
ICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0
dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKIApAQCAtNjEyLDcgKzYxMiw3IEBAIGlu
bGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpCiAKICAgICB1bnNpZ25lZCBjdXJyZW50QXR0cmlidXRlczsK
ICAgICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgIG9mZnNldCA9IG1fc3Ry
dWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNp
ZmljRnVuY3Rpb24pOworICAgIG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24p
OwogICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICBpZiAoY2hlY2tS
ZWFkT25seSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwpAQCAtNjMzLDcgKzYzMyw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXRE
aXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAv
LyBjYXNlICgyKSBEZXNwZWNpZnksIGZhbGwgdGhyb3VnaCB0byAoMykuCi0gICAgICAgICAgICBz
ZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24obV9zdHJ1
Y3R1cmUsIHByb3BlcnR5TmFtZSkpOworICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVy
ZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUpKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIGNhc2UgKDMpIHNldCB0aGUg
c2xvdCwgZG8gdGhlIHB1dCwgcmV0dXJuLgpAQCAtNzA3LDcgKzcwNyw3IEBAIGlubGluZSB2b2lk
IEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpCiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTVmFsdWUgdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgc2l6ZV90
IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
OwotICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIDApOworICAgIHNpemVfdCBvZmZzZXQg
PSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIDApOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0g
bV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRl
UHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpOwogICAgIHB1dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQs
IHZhbHVlKTsKQEAgLTcxNiw3ICs3MTYsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdAogaW5s
aW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Q2VsbCogdmFsdWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7CiAgICAgc2l6ZV90IGN1cnJlbnRD
YXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgIHNp
emVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVlKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbV9z
dHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCB2YWx1ZSk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0eSAhPSBt
X3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgYWxsb2NhdGVQ
cm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9mZnNldCwg
dmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3Vw
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKaW5kZXggMzA3
YmNlYjI1MGI5NTU5MGQ1ODNhNGFhNzU3ZDVjNWZhMjlhYjYwYS4uMjViNTE2ZWZiMGZhMjZlMTk1
MmY1NDMyZmY1MTk5OTk1ZGRmY2I0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvTG9va3VwLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3Qo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICBB
U1NFUlQodGhpc09iai0+c3RydWN0dXJlKCktPmFub255bW91c1Nsb3RDb3VudCgpID4gMCk7CiAg
ICAgQVNTRVJUKHRoaXNPYmotPmdldEFub255bW91c1ZhbHVlKDApLmlzQ2VsbCgpICYmIGFzT2Jq
ZWN0KHRoaXNPYmotPmdldEFub255bW91c1ZhbHVlKDApLmFzQ2VsbCgpKS0+aXNHbG9iYWxPYmpl
Y3QoKSk7CiAgICAgQVNTRVJUKGVudHJ5LT5hdHRyaWJ1dGVzKCkgJiBGdW5jdGlvbik7Ci0gICAg
V3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RM
b2NhdGlvbihwcm9wZXJ0eU5hbWUpOworICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxv
Y2F0aW9uID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpOwogCiAgICAgaWYgKCFsb2NhdGlvbikgewogICAgICAgICBKU0Z1bmN0aW9u
KiBmdW5jdGlvbjsKQEAgLTg2LDcgKzg2LDcgQEAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9uU2xv
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0KgogICAg
ICAgICAgICAgZnVuY3Rpb24gPSBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZ2xvYmFsT2Jq
ZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uU3RydWN0dXJlKCksIGVudHJ5LT5mdW5jdGlvbkxl
bmd0aCgpLCBwcm9wZXJ0eU5hbWUsIGVudHJ5LT5mdW5jdGlvbigpKTsKIAogICAgICAgICB0aGlz
T2JqLT5wdXREaXJlY3RGdW5jdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwg
ZnVuY3Rpb24sIGVudHJ5LT5hdHRyaWJ1dGVzKCkpOwotICAgICAgICBsb2NhdGlvbiA9IHRoaXNP
YmotPmdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgICAgIGxvY2F0aW9uID0g
dGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUpOwogICAgIH0KIAogICAgIHNsb3Quc2V0VmFsdWUodGhpc09iaiwgbG9jYXRpb24tPmdldCgp
LCB0aGlzT2JqLT5vZmZzZXRGb3JMb2NhdGlvbihsb2NhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IGM2NDJh
NWI1OWYyZDU5OGJjYTRkZWE1NThjZjI1MmU3NjIzZTljODMuLjZiZDJhMjgzNmU1Y2ZiMzg3NjBi
YTYwM2IyNWE2YjgwM2QyYWUyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkgJiYgIWV4ZWMtPmFy
Z3VtZW50KDApLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmpl
Y3Qgb3IgbnVsbC4iKSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpOwotICAgIG5ld09iamVjdC0+c2V0UHJvdG90eXBlKGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBuZXdPYmplY3QtPnNldFByb3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRlZmluZWQo
KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuZXdPYmplY3QpOwogICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMSkuaXNPYmplY3QoKSkKQEAgLTM1NSw3ICszNTUsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yU2VhbChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5p
c09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiT2JqZWN0LnNlYWwgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikp
OwotICAgIGFzT2JqZWN0KG9iaiktPnNlYWwoKTsKKyAgICBhc09iamVjdChvYmopLT5zZWFsKGV4
ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQog
CkBAIC0zNjQsNyArMzY0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RD
b25zdHJ1Y3RvckZyZWV6ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBvYmogPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmZyZWV6ZSBj
YW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7Ci0gICAgYXNPYmplY3Qob2JqKS0+ZnJl
ZXplKCk7CisgICAgYXNPYmplY3Qob2JqKS0+ZnJlZXplKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQogCkBAIC0zNzMsNyArMzczLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRl
bnNpb25zKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50
KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QucHJldmVudEV4dGVuc2lvbnMg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwotICAgIGFzT2JqZWN0KG9iaiktPnBy
ZXZlbnRFeHRlbnNpb25zKCk7CisgICAgYXNPYmplY3Qob2JqKS0+cHJldmVudEV4dGVuc2lvbnMo
ZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiB9
CiAKQEAgLTM4Miw3ICszODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0cnVjdG9ySXNTZWFsZWQoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc1Nl
YWxlZCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3Qob2JqKS0+aXNTZWFsZWQoKSkpOworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzU2VhbGVkKGV4
ZWMtPmdsb2JhbERhdGEoKSkpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKQEAgLTM5MCw3ICszOTAs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96
ZW4oRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5pc0Zyb3plbiBjYW4gb25seSBiZSBj
YWxsZWQgb24gT2JqZWN0cy4iKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4oYXNPYmplY3Qob2JqKS0+aXNGcm96ZW4oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzRnJvemVuKGV4ZWMtPmdsb2JhbERhdGEoKSkp
KTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rvcklz
RXh0ZW5zaWJsZShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKaW5kZXggYjFmNDc0ZjczNjM4OTcwZDdmM2VkMTE2YmIzOGM1MDFmOWVl
OTcyMS4uYzEwMmVlYmVkM2FhNjYzNjk5ZmZjNTE5ZjU5NjQ3OTdkNGExZjFlNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaApAQCAtNDMwLDcgKzQzMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGNlbGwtPnN0cnVjdHVyZSgpLT5pc0Rp
Y3Rpb25hcnkoKSkgewogICAgICAgICAgICAgICAgIGFzT2JqZWN0KGNlbGwpLT5mbGF0dGVuRGlj
dGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7CiAgICAgICAgICAgICAgICAg
aWYgKHNsb3RCYXNlID09IGNlbGwpCi0gICAgICAgICAgICAgICAgICAgIHNsb3RPZmZzZXQgPSBj
ZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7IAorICAgICAgICAgICAgICAgICAg
ICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lKTsgCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICsrY291
bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1h
cEhhc2hUYWJsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBI
YXNoVGFibGUuaAppbmRleCBjMDAwZGM4MWFmMDFiZjZkYTIxNjI5Yjc1YWVmYTgxNjAyNmNkZmQ1
Li5lZGJkMzVmNDhhMjZjMjhkNjlkMGUxYzQ3NDYyOGZhY2U3MTgwMWI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKQEAg
LTczLDEzICs3MywxMyBAQCBzdHJ1Y3QgUHJvcGVydHlNYXBFbnRyeSB7CiAgICAgU3RyaW5nSW1w
bCoga2V5OwogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwot
ICAgIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNDZWxsPiBzcGVj
aWZpY1ZhbHVlOwogCi0gICAgUHJvcGVydHlNYXBFbnRyeShTdHJpbmdJbXBsKiBrZXksIHVuc2ln
bmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQor
ICAgIFByb3BlcnR5TWFwRW50cnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwqIG93
bmVyLCBTdHJpbmdJbXBsKiBrZXksIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgYXR0cmlidXRl
cywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogICAgICAgICA6IGtleShrZXkpCiAgICAgICAgICwg
b2Zmc2V0KG9mZnNldCkKICAgICAgICAgLCBhdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpCi0gICAgICAg
ICwgc3BlY2lmaWNWYWx1ZShzcGVjaWZpY1ZhbHVlKQorICAgICAgICAsIHNwZWNpZmljVmFsdWUo
Z2xvYmFsRGF0YSwgb3duZXIsIHNwZWNpZmljVmFsdWUpCiAgICAgewogICAgIH0KIH07CkBAIC0x
NDEsOSArMTQxLDkgQEAgcHVibGljOgogICAgIHR5cGVkZWYgc3RkOjpwYWlyPFZhbHVlVHlwZSos
IHVuc2lnbmVkPiBmaW5kX2l0ZXJhdG9yOwogCiAgICAgLy8gQ29uc3RydWN0b3IgaXMgcGFzc2Vk
IGFuIGluaXRpYWwgY2FwYWNpdHksIGEgUHJvcGVydHlUYWJsZSB0byBjb3B5LCBvciBib3RoLgot
ICAgIFByb3BlcnR5VGFibGUodW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKLSAgICBQcm9wZXJ0
eVRhYmxlKGNvbnN0IFByb3BlcnR5VGFibGUmKTsKLSAgICBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOworICAgIGV4cGxpY2l0IFBy
b3BlcnR5VGFibGUodW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KTsKKyAgICBQcm9wZXJ0eVRhYmxl
KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKKyAgICBQcm9w
ZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0
eSwgY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAgIH5Qcm9wZXJ0eVRhYmxlKCk7CiAKICAgICAv
LyBPcmRlcmVkIGl0ZXJhdGlvbiBtZXRob2RzLgpAQCAtMTc2LDcgKzE3Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGFkZERlbGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0KTsKIAogICAgIC8vIENv
cHkgdGhpcyBQcm9wZXJ0eVRhYmxlLCBlbnN1cmluZyB0aGUgY29weSBoYXMgYXQgbGVhc3QgdGhl
IGNhcGFjaXR5IHByb3ZpZGVkLgotICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weSh1
bnNpZ25lZCBuZXdDYXBhY2l0eSk7CisgICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBjb3B5
KEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKIAog
I2lmbmRlZiBOREVCVUcKICAgICBzaXplX3Qgc2l6ZUluTWVtb3J5KCk7CkBAIC0xODQsNiArMTg0
LDcgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6CisgICAgUHJvcGVydHlUYWJsZShjb25z
dCBQcm9wZXJ0eVRhYmxlJik7CiAgICAgLy8gVXNlZCB0byBpbnNlcnQgYSB2YWx1ZSBrbm93biBu
b3QgdG8gYmUgaW4gdGhlIHRhYmxlLCBhbmQgd2hlcmUgd2Uga25vdyBjYXBhY2l0eSB0byBiZSBh
dmFpbGFibGUuCiAgICAgdm9pZCByZWluc2VydChjb25zdCBWYWx1ZVR5cGUmIGVudHJ5KTsKIApA
QCAtMjQzLDcgKzI0NCw3IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKHVu
c2lnbmVkIGluaXRpYWxDYXBhY2l0eSkKICAgICBBU1NFUlQoaXNQb3dlck9mMihtX2luZGV4U2l6
ZSkpOwogfQogCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShjb25zdCBQcm9w
ZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpT
R2xvYmFsRGF0YSYsIEpTQ2VsbCosIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDog
bV9pbmRleFNpemUob3RoZXIubV9pbmRleFNpemUpCiAgICAgLCBtX2luZGV4TWFzayhvdGhlci5t
X2luZGV4TWFzaykKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQqPihmYXN0TWFs
bG9jKGRhdGFTaXplKCkpKSkKQEAgLTI2NCw3ICsyNjUsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6UHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICAgICAgbV9k
ZWxldGVkT2Zmc2V0cy5zZXQobmV3IFZlY3Rvcjx1bnNpZ25lZD4oKm90aGVyRGVsZXRlZE9mZnNl
dHMpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUodW5zaWduZWQg
aW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKK2lubGluZSBQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYsIEpTQ2VsbCosIHVuc2lnbmVk
IGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgOiBtX2lu
ZGV4U2l6ZShzaXplRm9yQ2FwYWNpdHkoaW5pdGlhbENhcGFjaXR5KSkKICAgICAsIG1faW5kZXhN
YXNrKG1faW5kZXhTaXplIC0gMSkKICAgICAsIG1faW5kZXgoc3RhdGljX2Nhc3Q8dW5zaWduZWQq
PihmYXN0WmVyb2VkTWFsbG9jKGRhdGFTaXplKCkpKSkKQEAgLTQ0MywxNSArNDQ0LDE1IEBAIGlu
bGluZSB2b2lkIFByb3BlcnR5VGFibGU6OmFkZERlbGV0ZWRPZmZzZXQodW5zaWduZWQgb2Zmc2V0
KQogICAgIG1fZGVsZXRlZE9mZnNldHMtPmFwcGVuZChvZmZzZXQpOwogfQogCi1pbmxpbmUgUGFz
c093blB0cjxQcm9wZXJ0eVRhYmxlPiBQcm9wZXJ0eVRhYmxlOjpjb3B5KHVuc2lnbmVkIG5ld0Nh
cGFjaXR5KQoraW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6
Y29weShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2VsbCogb3duZXIsIHVuc2lnbmVkIG5l
d0NhcGFjaXR5KQogewogICAgIEFTU0VSVChuZXdDYXBhY2l0eSA+PSBtX2tleUNvdW50KTsKIAog
ICAgIC8vIEZhc3QgY2FzZTsgaWYgdGhlIG5ldyB0YWJsZSB3aWxsIGJlIHRoZSBzYW1lIG1faW5k
ZXhTaXplIGFzIHRoaXMgb25lLCB3ZSBjYW4gbWVtY3B5IGl0LAogICAgIC8vIHNhdmUgcmVoYXNo
aW5nIGFsbCBrZXlzLgogICAgIGlmIChzaXplRm9yQ2FwYWNpdHkobmV3Q2FwYWNpdHkpID09IG1f
aW5kZXhTaXplKQotICAgICAgICByZXR1cm4gbmV3IFByb3BlcnR5VGFibGUoKnRoaXMpOwotICAg
IHJldHVybiBuZXcgUHJvcGVydHlUYWJsZShuZXdDYXBhY2l0eSwgKnRoaXMpOworICAgICAgICBy
ZXR1cm4gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsICp0aGlzKTsKKyAgICBy
ZXR1cm4gbmV3IFByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSwgb3duZXIsIG5ld0NhcGFjaXR5LCAq
dGhpcyk7CiB9CiAKICNpZm5kZWYgTkRFQlVHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmNwcAppbmRleCAxMzFlYTZiZGUzMGE1NjA5NzUxOThkZTExN2ZmNDJlYzY3
Yjc5YjdlLi5iZDdkOWRkYTkwMTcyYWU2MjVjNzNmMDNiNzNhZWZiMjJjY2EwZjdlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKQEAgLTI5NCw3ICsyOTQs
NyBAQCB2b2lkIFN0cnVjdHVyZTo6c3RvcElnbm9yaW5nTGVha3MoKQogI2VuZGlmCiB9CiAKLXZv
aWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCkKK3ZvaWQgU3RydWN0dXJlOjpt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKICAgICBB
U1NFUlQoIW1fcHJvcGVydHlUYWJsZSk7CiAKQEAgLTMwOSw3ICszMDksNyBAQCB2b2lkIFN0cnVj
dHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpCiAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5tX3Byb3BlcnR5VGFibGUpOwogICAgICAgICAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPm1f
cHJldmlvdXMpOwogCi0gICAgICAgICAgICBtX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1f
cHJvcGVydHlUYWJsZS0+Y29weShtX29mZnNldCArIDEpOworICAgICAgICAgICAgbV9wcm9wZXJ0
eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwg
bV9vZmZzZXQgKyAxKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTMyMSw3
ICszMjEsNyBAQCB2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpCiAKICAg
ICBmb3IgKHB0cmRpZmZfdCBpID0gc3RydWN0dXJlcy5zaXplKCkgLSAyOyBpID49IDA7IC0taSkg
ewogICAgICAgICBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmVzW2ldOwotICAgICAgICBQcm9wZXJ0eU1h
cEVudHJ5IGVudHJ5KHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9hbm9ueW1v
dXNTbG90Q291bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRl
c0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CisgICAg
ICAgIFByb3BlcnR5TWFwRW50cnkgZW50cnkoZ2xvYmFsRGF0YSwgMCwgc3RydWN0dXJlLT5tX25h
bWVJblByZXZpb3VzLmdldCgpLCBtX2Fub255bW91c1Nsb3RDb3VudCArIHN0cnVjdHVyZS0+bV9v
ZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRyaWJ1dGVzSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX3Nw
ZWNpZmljVmFsdWVJblByZXZpb3VzKTsKICAgICAgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoZW50
cnkpOwogICAgIH0KIH0KQEAgLTMzNCwxOCArMzM0LDE4IEBAIHZvaWQgU3RydWN0dXJlOjpncm93
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKQogICAgICAgICBtX3Byb3BlcnR5U3RvcmFnZUNhcGFj
aXR5ICo9IDI7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rp
b24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQordm9pZCBTdHJ1Y3R1cmU6OmRlc3Bl
Y2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBTdHJpbmdJbXBsKiByZXAgPSBwcm9wZXJ0
eU5hbWUuaW1wbCgpOwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7
CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogCiAg
ICAgQVNTRVJUKGlzRGljdGlvbmFyeSgpKTsKICAgICBBU1NFUlQobV9wcm9wZXJ0eVRhYmxlKTsK
IAogICAgIFByb3BlcnR5TWFwRW50cnkqIGVudHJ5ID0gbV9wcm9wZXJ0eVRhYmxlLT5maW5kKHJl
cCkuZmlyc3Q7CiAgICAgQVNTRVJUKGVudHJ5KTsKLSAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZSA9
IDA7CisgICAgZW50cnktPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsKIH0KIAogUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVj
dHVyZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zm
c2V0KQpAQCAtMzg3LDkgKzM4Nyw5IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6
OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAgICAg
IHNwZWNpZmljVmFsdWUgPSAwOwogCiAgICAgaWYgKHN0cnVjdHVyZS0+dHJhbnNpdGlvbkNvdW50
KCkgPiBzX21heFRyYW5zaXRpb25MZW5ndGgpIHsKLSAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4g
dHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlKTsK
KyAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvQ2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZSAhPSB0cmFuc2l0aW9uKTsKLSAgICAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0
KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIG9mZnNl
dCA9IHRyYW5zaXRpb24tPnB1dChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9h
bm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5tX2Fub255bW91
c1Nsb3RDb3VudCA9PSB0cmFuc2l0aW9uLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAg
IGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9uLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQpAQCAtNDA3LDE3ICs0MDcsMTcgQEAgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwKIAogICAgIGlmIChzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSkgewogICAg
ICAgICBpZiAoc3RydWN0dXJlLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSkKLSAgICAgICAgICAg
IHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxl
LT5jb3B5KHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyAxKTsKKyAgICAgICAg
ICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRh
YmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5zaXpl
KCkgKyAxKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0
eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUucmVsZWFzZSgpOwogICAgIH0gZWxz
ZSB7CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm1fcHJldmlvdXMpCi0gICAgICAgICAgICB0cmFu
c2l0aW9uLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7CisgICAgICAgICAgICB0cmFuc2l0aW9u
LT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwKGdsb2JhbERhdGEpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0cmFuc2l0aW9uLT5jcmVhdGVQcm9wZXJ0eU1hcCgpOwogICAgIH0KIAotICAgIG9m
ZnNldCA9IHRyYW5zaXRpb24tPnB1dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
VmFsdWUpOworICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIEFTU0VSVChvZmZzZXQgPj0g
c3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
bV9hbm9ueW1vdXNTbG90Q291bnQgPT0gdHJhbnNpdGlvbi0+bV9hbm9ueW1vdXNTbG90Q291bnQp
OwogICAgIGlmICh0cmFuc2l0aW9uLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgPiB0cmFuc2l0aW9u
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQpAQCAtNDI5LDExICs0MjksMTEgQEAgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAK
LVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBz
aXplX3QmIG9mZnNldCkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KQog
ewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKIAot
ICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b1VuY2FjaGVhYmxlRGljdGlvbmFy
eVRyYW5zaXRpb24oc3RydWN0dXJlKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9u
ID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAKICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5yZW1vdmUocHJvcGVydHlOYW1lKTsKICAg
ICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQpOwpAQCAt
NDQyLDcgKzQ0Miw3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnJlbW92ZVBy
b3BlcnR5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwKICAgICByZXR1cm4gdHJhbnNp
dGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmNo
YW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEpTVmFsdWUgcHJv
dG90eXBlKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBl
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9u
ID0gY3JlYXRlKHN0cnVjdHVyZSk7CiAKQEAgLTQ1MCwxNSArNDUwLDE1IEBAIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsCiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90
IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3Ry
dWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAg
ICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFu
b255bW91c1Nsb3RDb3VudCgpKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcmVwbGFjZUZ1
bmN0aW9uKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rp
b25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKIHsKICAgICBBU1NFUlQoc3Ry
dWN0dXJlLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA8IG1heFNwZWNpZmljRnVuY3Rp
b25UaHJhc2hDb3VudCk7CiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0
ZShzdHJ1Y3R1cmUpOwpAQCAtNDY3LDE0ICs0NjcsMTQgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0
dXIKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlv
biB0byB0aGlzLgogCi0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNl
c3NhcnkoKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNv
cHlQcm9wZXJ0eVRhYmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxl
ID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKICAgICB0cmFuc2l0
aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAKICAgICBpZiAodHJhbnNpdGlv
bi0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRo
cmFzaENvdW50KQotICAgICAgICB0cmFuc2l0aW9uLT5kZXNwZWNpZnlBbGxGdW5jdGlvbnMoKTsK
KyAgICAgICAgdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKGdsb2JhbERhdGEpOwog
ICAgIGVsc2UgewotICAgICAgICBib29sIHJlbW92ZWQgPSB0cmFuc2l0aW9uLT5kZXNwZWNpZnlG
dW5jdGlvbihyZXBsYWNlRnVuY3Rpb24pOworICAgICAgICBib29sIHJlbW92ZWQgPSB0cmFuc2l0
aW9uLT5kZXNwZWNpZnlGdW5jdGlvbihnbG9iYWxEYXRhLCByZXBsYWNlRnVuY3Rpb24pOwogICAg
ICAgICBBU1NFUlRfVU5VU0VEKHJlbW92ZWQsIHJlbW92ZWQpOwogICAgIH0KICAgICAKQEAgLTQ4
MiwyOCArNDgyLDI4IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lm
eUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAgICAgcmV0dXJuIHRyYW5z
aXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKIAogICAgIC8vIERvbid0IHNldCBt
X29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCi0gICAgc3RydWN0
dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKLSAgICB0cmFuc2l0aW9u
LT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKCk7CisgICAg
c3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
CisgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVy
dHlUYWJsZShnbG9iYWxEYXRhKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJvcGVydHlU
YWJsZSA9IHRydWU7CiAgICAgCiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENv
dW50KCkgPT0gdHJhbnNpdGlvbi0+YW5vbnltb3VzU2xvdENvdW50KCkpOwogICAgIHJldHVybiB0
cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVy
ZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGljdGlvbmFy
eUtpbmQga2luZCkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFy
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgRGljdGlvbmFyeUtpbmQga2luZCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgCiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNp
dGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwogCi0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUg
PSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+
bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRh
KTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAg
dHJhbnNpdGlvbi0+bV9kaWN0aW9uYXJ5S2luZCA9IGtpbmQ7CiAgICAgCkBAIC01MTEsMjAgKzUx
MSwyMCBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFu
c2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBEaQogICAgIHJldHVybiB0cmFuc2l0aW9uLnJl
bGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9DYWNoZWFi
bGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1
cm4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1cmUsIENhY2hlZERpY3Rpb25hcnlLaW5k
KTsKKyAgICByZXR1cm4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1
cmUsIENhY2hlZERpY3Rpb25hcnlLaW5kKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0
cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3Ry
dWN0dXJlKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9VbmNhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJl
LCBVbmNhY2hlZERpY3Rpb25hcnlLaW5kKTsKKyAgICByZXR1cm4gdG9EaWN0aW9uYXJ5VHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQpOwogfQog
CiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0aW9uLgotUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24oc3RydWN0dXJlKTsKKyAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVu
dEV4dGVuc2lvbnNUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBpZiAo
dHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlKSB7CiAgICAgICAgIFByb3BlcnR5VGFibGU6Oml0
ZXJhdG9yIGVuZCA9IHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CkBAIC01MzYs
OSArNTM2LDkgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRp
b24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0
byBjYWNoZSB0aGlzIHRyYW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJl
OjpmcmVlemVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5z
aXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oc3RydWN0dXJlKTsKKyAgICBSZWZQ
dHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICBpZiAodHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRh
YmxlKSB7CiAgICAgICAgIFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGVuZCA9IHRyYW5zaXRpb24t
Pm1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CkBAIC01NTAsMTQgKzU1MCwxNCBAQCBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0
dXJlKQogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0
aW9uLgotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNU
cmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0
cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJh
bnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwogCiAgICAgLy8gRG9uJ3Qgc2V0IG1fb2Zmc2V0
LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAKLSAgICBzdHJ1Y3R1cmUtPm1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAgIHRyYW5zaXRpb24tPm1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoKTsKKyAgICBzdHJ1Y3R1
cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKKyAgICB0
cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxl
KGdsb2JhbERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0g
dHJ1ZTsKICAgICB0cmFuc2l0aW9uLT5tX3ByZXZlbnRFeHRlbnNpb25zID0gdHJ1ZTsKIApAQCAt
NTY2LDEyICs1NjYsMTIgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cHJldmVu
dEV4dGVuc2lvbnNUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXIKIH0KIAogLy8gSW4gZnV0
dXJlIHdlIG1heSB3YW50IHRvIGNhY2hlIHRoaXMgcHJvcGVydHkuCi1ib29sIFN0cnVjdHVyZTo6
aXNTZWFsZWQoKQorYm9vbCBTdHJ1Y3R1cmU6OmlzU2VhbGVkKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKIHsKICAgICBpZiAoaXNFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTU4NCwxMiArNTg0LDEyIEBAIGJv
b2wgU3RydWN0dXJlOjppc1NlYWxlZCgpCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0
byBjYWNoZSB0aGlzIHByb3BlcnR5LgotYm9vbCBTdHJ1Y3R1cmU6OmlzRnJvemVuKCkKK2Jvb2wg
U3RydWN0dXJlOjppc0Zyb3plbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYg
KGlzRXh0ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtYXRlcmlhbGl6
ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAg
IHJldHVybiB0cnVlOwogCkBAIC02MzAsMzAgKzYzMCwzMCBAQCBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjpmbGF0dGVuRGljdGlvbmFyeVN0cnVjdHVyZShKU0dsb2JhbERhdGEmIGds
b2JhbAogICAgIHJldHVybiB0aGlzOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjphZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIAog
ICAgIGlmIChtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9PSBtYXhTcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQpCiAgICAgICAgIHNwZWNpZmljVmFsdWUgPSAwOwogCi0gICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogCiAgICAgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUg
PSB0cnVlOwogCi0gICAgc2l6ZV90IG9mZnNldCA9IHB1dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOworICAgIHNpemVfdCBvZmZzZXQgPSBwdXQoZ2xvYmFsRGF0YSwg
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICBBU1NFUlQob2Zm
c2V0ID49IG1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICBpZiAocHJvcGVydHlTdG9yYWdlU2l6
ZSgpID4gcHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgZ3Jvd1Byb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCk7CiAgICAgcmV0dXJuIG9mZnNldDsKIH0KIAotc2l6ZV90IFN0cnVjdHVy
ZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCitzaXplX3QgU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQogewogICAgIEFTU0VSVChpc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICBBU1NF
UlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFs
RGF0YSk7CiAKICAgICBtX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAgc2l6ZV90
IG9mZnNldCA9IHJlbW92ZShwcm9wZXJ0eU5hbWUpOwpAQCAtNjg4LDE0ICs2ODgsMTQgQEAgaW5s
aW5lIHZvaWQgU3RydWN0dXJlOjpjaGVja0NvbnNpc3RlbmN5KCkKIAogI2VuZGlmCiAKLVByb3Bl
cnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUoKQorUHJvcGVydHlUYWJsZSog
U3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7
Ci0gICAgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKCptX3Byb3Bl
cnR5VGFibGUpIDogMDsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSwgMCwgKm1fcHJvcGVydHlUYWJsZSkgOiAwOwogfQogCi1zaXplX3Qg
U3RydWN0dXJlOjpnZXQoU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmdldChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQm
IGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiB7Ci0gICAgbWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICBy
ZXR1cm4gV1RGOjpub3RGb3VuZDsKIApAQCAtNzA0LDE0ICs3MDQsMTQgQEAgc2l6ZV90IFN0cnVj
dHVyZTo6Z2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHMKICAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CiAKICAgICBhdHRyaWJ1
dGVzID0gZW50cnktPmF0dHJpYnV0ZXM7Ci0gICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVj
aWZpY1ZhbHVlOworICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5nZXQo
KTsKICAgICBBU1NFUlQoZW50cnktPm9mZnNldCA+PSBtX2Fub255bW91c1Nsb3RDb3VudCk7CiAg
ICAgcmV0dXJuIGVudHJ5LT5vZmZzZXQ7CiB9CiAKLWJvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlG
dW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitib29sIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAg
LTcyMSwyNSArNzIxLDI1IEBAIGJvb2wgU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IEFTU0VSVChlbnRyeS0+c3BlY2lmaWNWYWx1ZSk7Ci0gICAgZW50cnktPnNwZWNpZmljVmFsdWUg
PSAwOworICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoKQordm9pZCBTdHJ1
Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7
Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9wZXJ0
eVRhYmxlKQogICAgICAgICByZXR1cm47CiAKICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBl
bmQgPSBtX3Byb3BlcnR5VGFibGUtPmVuZCgpOwogICAgIGZvciAoUHJvcGVydHlUYWJsZTo6aXRl
cmF0b3IgaXRlciA9IG1fcHJvcGVydHlUYWJsZS0+YmVnaW4oKTsgaXRlciAhPSBlbmQ7ICsraXRl
cikKLSAgICAgICAgaXRlci0+c3BlY2lmaWNWYWx1ZSA9IDA7CisgICAgICAgIGl0ZXItPnNwZWNp
ZmljVmFsdWUuY2xlYXIoKTsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6cHV0KGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6cHV0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0Nl
bGwqIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkp
OwotICAgIEFTU0VSVChnZXQocHJvcGVydHlOYW1lKSA9PSBub3RGb3VuZCk7CisgICAgQVNTRVJU
KGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKIAogICAgIGNoZWNr
Q29uc2lzdGVuY3koKTsKICAgICBpZiAoYXR0cmlidXRlcyAmIERvbnRFbnVtKQpAQCAtNzU4LDcg
Kzc1OCw3IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OnB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsCiAgICAgICAgIG5ld09mZnNldCA9IG1f
cHJvcGVydHlUYWJsZS0+c2l6ZSgpICsgbV9hbm9ueW1vdXNTbG90Q291bnQ7CiAgICAgQVNTRVJU
KG5ld09mZnNldCA+PSBtX2Fub255bW91c1Nsb3RDb3VudCk7CiAKLSAgICBtX3Byb3BlcnR5VGFi
bGUtPmFkZChQcm9wZXJ0eU1hcEVudHJ5KHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKSk7CisgICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShn
bG9iYWxEYXRhLCAwLCByZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkp
OwogCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIHJldHVybiBuZXdPZmZzZXQ7CkBAIC03
OTgsOSArNzk4LDkgQEAgdm9pZCBTdHJ1Y3R1cmU6OmNyZWF0ZVByb3BlcnR5TWFwKHVuc2lnbmVk
IGNhcGFjaXR5KQogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6
OmdldFByb3BlcnR5TmFtZXMoUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1l
cmF0aW9uTW9kZSBtb2RlKQordm9pZCBTdHJ1Y3R1cmU6OmdldFByb3BlcnR5TmFtZXMoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51
bWVyYXRpb25Nb2RlIG1vZGUpCiB7Ci0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OwogICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggMmRmNTY5MTMxYzUyOTA2ZDA5
YTFjZDY0MzdkM2FjNjJlMzEyODYyMS4uOTRhMDZiMmY5NjlmMmVkM2ZmN2RkZTBiZTZmMTFjYjg0
OGRjYjgxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAg
LTc2LDE4ICs3NiwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZzZXQpOwogICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmUoU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zmc2V0KTsK
LSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5z
aXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBzaXplX3Qm
IG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hhbmdlUHJv
dG90eXBlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9u
KFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5z
aXRpb24oU3RydWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
dG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwot
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZyZWV6ZVRyYW5zaXRpb24oU3Ry
dWN0dXJlKik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gcHJldmVudEV4
dGVuc2lvbnNUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotCi0gICAgICAgIGJvb2wgaXNTZWFsZWQo
KTsKLSAgICAgICAgYm9vbCBpc0Zyb3plbigpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNpemVfdCYgb2Zmc2V0KTsKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFuZ2VQcm90b3R5cGVUcmFuc2l0
aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRp
b24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc2VhbFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
ZnJlZXplVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisKKyAgICAgICAgYm9vbCBpc1NlYWxlZChKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgYm9vbCBpc0Zyb3plbihKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
Ym9vbCBpc0V4dGVuc2libGUoKSBjb25zdCB7IHJldHVybiAhbV9wcmV2ZW50RXh0ZW5zaW9uczsg
fQogCiAgICAgICAgIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBmbGF0dGVuRGljdGlvbmFyeVN0cnVj
dHVyZShKU0dsb2JhbERhdGEmLCBKU09iamVjdCopOwpAQCAtOTUsOCArOTUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgflN0cnVjdHVyZSgpOwogCiAgICAgICAgIC8vIFRoZXNlIHNob3Vs
ZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4gIAotICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCByZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CisgICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZVByb3BlcnR5V2l0
aG91dFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgdm9pZCBzZXRQcm90b3R5cGVXaXRob3V0VHJhbnNpdGlvbihKU1ZhbHVl
IHByb3RvdHlwZSkgeyBtX3Byb3RvdHlwZSA9IHByb3RvdHlwZTsgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0RpY3Rpb25hcnkoKSBjb25zdCB7IHJldHVybiBtX2RpY3Rpb25hcnlLaW5kICE9
IE5vbmVEaWN0aW9uYXJ5S2luZDsgfQpAQCAtMTIwLDEyICsxMjAsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHVuc2lnbmVkIHByb3BlcnR5U3RvcmFnZVNpemUoKSBjb25zdCB7IHJldHVy
biBtX2Fub255bW91c1Nsb3RDb3VudCArIChtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFi
bGUtPnByb3BlcnR5U3RvcmFnZVNpemUoKSA6IHN0YXRpY19jYXN0PHVuc2lnbmVkPihtX29mZnNl
dCArIDEpKTsgfQogICAgICAgICBib29sIGlzVXNpbmdJbmxpbmVTdG9yYWdlKCkgY29uc3Q7CiAK
LSAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwotICAg
ICAgICBzaXplX3QgZ2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgZ2V0KGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbCom
IHNwZWNpZmljVmFsdWUpCisgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERh
dGEmLCBTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0Nl
bGwqJiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJp
YnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLSAgICAgICAgICAgIHJldHVybiBnZXQocHJv
cGVydHlOYW1lLmltcGwoKSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgICAg
ICByZXR1cm4gZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
OyB9CkBAIC0xMzgsMTIgKzEzOCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvcGVydHlUYWJsZSA/IG1fcHJv
cGVydHlUYWJsZS0+aXNFbXB0eSgpIDogbV9vZmZzZXQgPT0gbm9PZmZzZXQ7IH0KIAotICAgICAg
ICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOworICAgICAgICB2b2lkIGRlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbihKU0ds
b2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogICAgICAgICB2b2lk
IGRpc2FibGVTcGVjaWZpY0Z1bmN0aW9uVHJhY2tpbmcoKSB7IG1fc3BlY2lmaWNGdW5jdGlvblRo
cmFzaENvdW50ID0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50OyB9CiAKICAgICAgICAg
dm9pZCBzZXRFbnVtZXJhdGlvbkNhY2hlKEpTR2xvYmFsRGF0YSYsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaC4KICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNo
ZSgpOyAvLyBEZWZpbmVkIGluIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaC4KLSAgICAgICAgdm9p
ZCBnZXRQcm9wZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1v
ZGUpOworICAgICAgICB2b2lkIGdldFByb3BlcnR5TmFtZXMoSlNHbG9iYWxEYXRhJiwgUHJvcGVy
dHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSk7CiAKICAgICAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiBtX2NsYXNzSW5mbzsgfQogCkBAIC0x
NzgsMjMgKzE3OCwyMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIENhY2hlZERpY3Rp
b25hcnlLaW5kID0gMSwKICAgICAgICAgICAgIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQgPSAyCiAg
ICAgICAgIH0gRGljdGlvbmFyeUtpbmQ7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7
CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9EaWN0aW9uYXJ5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBEaWN0aW9uYXJ5S2luZCk7CiAKLSAgICAg
ICAgc2l6ZV90IHB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCBwdXQoSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwogICAgICAgICBzaXplX3QgcmVtb3ZlKGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgdm9pZCBjcmVhdGVQcm9w
ZXJ0eU1hcCh1bnNpZ25lZCBrZXlDb3VudCA9IDApOwogICAgICAgICB2b2lkIGNoZWNrQ29uc2lz
dGVuY3koKTsKIAotICAgICAgICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZp
ZXImKTsKLSAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMoKTsKKyAgICAgICAgYm9v
bCBkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSYpOwogCi0gICAg
ICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxlKCk7Ci0gICAgICAgIHZvaWQgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeSgpCisgICAgICAgIFByb3BlcnR5VGFibGUqIGNvcHlQcm9wZXJ0eVRhYmxl
KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUgJiYgbV9wcmV2aW91cykKLSAgICAgICAgICAgICAgICBtYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKCk7CisgICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChnbG9iYWxEYXRhKTsKICAgICAgICAgfQogCiAgICAgICAgIHNpZ25lZCBjaGFyIHRyYW5zaXRp
b25Db3VudCgpIGNvbnN0CkBAIC0yNTEsOSArMjUxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIC8vIDQgZnJlZSBiaXRzCiAgICAgfTsKIAotICAgIGlubGluZSBzaXplX3QgU3RydWN0dXJl
OjpnZXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgIGlubGluZSBzaXplX3Qg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCiAgICAgewotICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKTsKKyAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGds
b2JhbERhdGEpOwogICAgICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgICAgIHJl
dHVybiBub3RGb3VuZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGE2MDU0ZGRlYWUyYjkwMGU0ODE4OTdhYTFj
YWZlZDJkOTc0OTc3YmEuLjE4MTI3NjBkYWQ2MjIyM2Q2ZTVkMTE3ZWU1ZGNiMjIxZTU3N2RmNTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wNC0xMiAgT2xpdmVyIEh1bnQgIDxv
bGl2ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE1ha2UgUHJvcGVydHlNYXBFbnRyeSB1c2UgYSBXcml0ZUJhcnJpZXIgZm9yIHNw
ZWNpZmljVmFsdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTU4NDA3CisKKyAgICAgICAgUGFzcyBKU0dsb2JhbERhdGEgcmVmZXJlbmNlIG9uIHRvIEFQ
SXMgdGhhdCBub3cgbmVlZCB0aGVtCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvd1NoZWxsOjpzZXRXaW5kb3cp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTSFRNTERvY3VtZW50OjphbGwpOgorCiAyMDExLTA0LTEyICBEaWVnbyBH
b256YWxleiAgPGRpZWdvaGNnQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2Vu
bmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd1NoZWxsLmgKaW5kZXggNDMwN2MxYzQ2MWIwZmY0NmJmOGEzYTc3YmFiOGVjMmU1
MDRmOWJiNi4uNTc1YjI5NmM0OWNlY2IzNThlMTg0ODJjZDZiNThkYzBmZmNjZGJiNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaApAQCAtNDgsNyAr
NDgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VF9BUkcod2luZG93LCB3aW5kb3cpOwogICAgICAgICAgICAgbV93aW5kb3cuc2V0KGdsb2JhbERh
dGEsIHRoaXMsIHdpbmRvdyk7Ci0gICAgICAgICAgICBzZXRQcm90b3R5cGUod2luZG93LT5wcm90
b3R5cGUoKSk7CisgICAgICAgICAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgd2luZG93LT5w
cm90b3R5cGUoKSk7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBzZXRXaW5kb3coUGFzc1JlZlB0
cjxET01XaW5kb3c+KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDE5MmVmNWRiODUzM2FmYWUwNGYzYmYwOTEyOTdi
MDdkZmRhNjQ3ZTcuLmMzM2Y4NTlmYjIwNTU0MTgwYjM5OTcxZWYzN2Q1NmE2ZmJiYTNkY2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3Rv
bS5jcHAKQEAgLTg2LDcgKzg2LDcgQEAgSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW4KIEpTVmFsdWUg
SlNIVE1MRG9jdW1lbnQ6OmFsbChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB7CiAgICAgLy8gSWYg
ImFsbCIgaGFzIGJlZW4gb3ZlcndyaXR0ZW4sIHJldHVybiB0aGUgb3ZlcndyaXR0ZW4gdmFsdWUK
LSAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3QoSWRlbnRpZmllcihleGVjLCAiYWxsIikpOworICAg
IEpTVmFsdWUgdiA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIElkZW50aWZpZXIoZXhl
YywgImFsbCIpKTsKICAgICBpZiAodikKICAgICAgICAgcmV0dXJuIHY7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89342</attachid>
            <date>2011-04-12 22:50:14 -0700</date>
            <delta_ts>2011-04-13 08:34:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58407-20110412225013.patch</filename>
            <type>text/plain</type>
            <size>80107</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM2ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IDcwNjY4YmQyMzVlNWVkYmJhYjQzM2RlZTcwN2Q5NTYxMTJkNTY3Yjcu
LjA4ZGM3MjExYjJmMzAxNTM2ZTcxYTM2MDgxZTEwOWJiYzA0ZDZjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc0Ns
YXNzRGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVj
KSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsg
Ly8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNh
biBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpKQotICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFBy
b3RvdHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAganNDbGFz
c0RhdGEuY2FjaGVkUHJvdG90eXBlLT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBqc0NsYXNzRGF0YS5jYWNo
ZWRQcm90b3R5cGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZTVjNzc4ZjliYzUwYWQ5ODdlMTA3ZDU1MmI5NzkwZTQ4YjBmOTFlZS4uMTU4
YjI1NjI2ZDJhMTQ2MjY0YTUzYjljM2RiMDA3OTczN2NhMmMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5
cGUgPSBqc051bGwoKTsKLSAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHByb3RvdHlw
ZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSgqZ2xvYmFsRGF0YSwgcHJvdG90
eXBlKTsKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBi
NzAzMGU0YmE1ZmM5NWM4ODcxZTJlZjdlOTAzNWI3MmJiMWZmYzVjLi4yZGYwMTBhNTE4OWY3YzZl
ZDJjOWFlZjljMThlMzFmMzcwODk1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2Uo
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogCiAgICAg
SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+KiBvYmplY3QgPSBuZXcg
KGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CiAgICAgaWYgKEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCi0gICAgICAgIG9iamVj
dC0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKIAogICAgIHJldHVybiB0b1JlZihvYmpl
Y3QpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogCi0gICAganNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNs
ZUNoZWNrKGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7CisgICAganNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwganNW
YWx1ZS5pc09iamVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVj
dEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMThmYTU2NWQx
YmY2M2E4NzMxMzEwYjE0YmQzMWRjYmUxNWRkMTU4Ny4uZWVlMDJiYjE4MTUxODhiZjk5NzI2Nzdj
MWU2MmM3MTI4YjE4OTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDExLTA0LTEyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1h
cEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBNYWtl
IFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlLCBh
bmQgdGhlbgorICAgICAgICBwcm9wYWdhdGUgdGhlIHJlcXVpcmVkIEpTR2xvYmFsRGF0YSB0aHJv
dWdoIGFsbCB0aGUgbWV0aG9kcyBpdCBlbmRzCisgICAgICAgIHVwIGJlaW5nIG5lZWRlZC4KKwor
ICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnBy
b3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZSk6CisgICAgICAgIChKU09i
amVjdFNldFByb3RvdHlwZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Om5h
bWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZVNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6bG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3plbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAg
ICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KToKKwog
MjAxMS0wNC0xMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAppbmRleCBkMjBjMmNiOWI5ZTNiZTFhNTJjMDZkMmYwYjRhNTdlZjc5
NGQ4YTgxLi41ZWMzM2Y2MjIxOGQ1Y2E2NzZjMmQzMzU5MDYzMDIwNWRiN2VlN2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMxNiwxMiArMzE2LDEyIEBA
IF9fWk4zSlNDOU1hcmtTdGFjazE4aW5pdGlhbGl6ZVBhZ2VzaXplRXYKIF9fWk4zSlNDOVN0cnVj
dHVyZTE3c3RvcElnbm9yaW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMThzdGFydElnbm9y
aW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMjFhZGRQcm9wZXJ0eVRyYW5zaXRpb25FUk5T
XzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KLV9f
Wk4zSlNDOVN0cnVjdHVyZTIybWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEV2Ci1fX1pOM0pTQzlTdHJ1
Y3R1cmUyNWNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25FUFMwX05TXzdKU1ZhbHVlRQotX19aTjNK
U0M5U3RydWN0dXJlMjdkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25FUktOU18xMElkZW50aWZp
ZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVQUzBf
UktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb25FUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQotX19aTjNKU0M5U3Ry
dWN0dXJlM2dldEVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlT
dHJ1Y3R1cmUyMm1hdGVyaWFsaXplUHJvcGVydHlNYXBFUk5TXzEySlNHbG9iYWxEYXRhRQorX19a
TjNKU0M5U3RydWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFs
RGF0YUVQUzBfTlNfN0pTVmFsdWVFCitfX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCitfX1pO
M0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVSTlNfMTJKU0dsb2Jh
bERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmll
ckVqUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlTdHJ1Y3R1cmUzZ2V0RVJOU18xMkpTR2xvYmFsRGF0
YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzlTdHJ1Y3R1cmU0
MGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVFUFMwX1JLTlNfMTBJZGVu
dGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlQzFFTlNfN0pTVmFsdWVF
UktOU184VHlwZUluZm9FalBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUQxRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
aW5kZXggN2VhOTU4YzQzNWY2MmM5MWU4NWQzOTY3YmZhOTM4YzU2NjFkNDFmZC4uZTYzNDBiYTEy
YzYzOWYzZDM3ZGIzMmY4NjU0MzAwN2M2NTJkMjdiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTU0LDcgKzU0LDYgQEAgRVhQ
T1JUUwogICAgID9hZGRDdXJyZW50VGhyZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAg
ICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0
ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRp
ZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1
cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0g
ICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAUUFFSUFCVklk
ZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQFoKICAgICA/YWRkU2xvd0Nhc2VASWRlbnRpZmllckBK
U0NAQENBP0FWPyRQYXNzUmVmUHRyQFZTdHJpbmdJbXBsQFdURkBAQFdURkBAUEFWRXhlY1N0YXRl
QDJAUEFWU3RyaW5nSW1wbEA0QEBaCiAgICAgP2FsbG9jYXRlQEhlYXBASlNDQEBRQUVQQVhJQFoK
ICAgICA/YWxsb2NhdGVGcm9tU2l6ZUNsYXNzQE1hcmtlZFNwYWNlQEpTQ0BAQUFFUEFYQUFVU2l6
ZUNsYXNzQDEyQEBaCkBAIC03OCw3ICs3Nyw2IEBAIEVYUE9SVFMKICAgICA/Y2FsbE9uTWFpblRo
cmVhZEFuZFdhaXRAV1RGQEBZQVhQNkFYUEFYQFowQFoKICAgICA/Y2FuY2VsQ2FsbE9uTWFpblRo
cmVhZEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgID9jYXBhY2l0eUBIZWFwQEpTQ0BAUUJFSVha
Ci0gICAgP2NoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBh
c3NSZWZQdHJAVlN0cnVjdHVyZUBKU0NAQEBXVEZAQFBBVjEyQFZKU1ZhbHVlQDJAQFoKICAgICA/
Y2hlY2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQQVZFeGVjU3Rh
dGVAMkBAWgogICAgID9jaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NA
QENBWFBBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2NoZWNrU3ludGF4QEpTQ0BAWUE/QVZDb21w
bGV0aW9uQDFAUEFWRXhlY1N0YXRlQDFAQUJWU291cmNlQ29kZUAxQEBaCkBAIC0xNDMsOCArMTQx
LDYgQEAgRVhQT1JUUwogICAgID9kZWxldGVQcm9wZXJ0eUBKU1ZhcmlhYmxlT2JqZWN0QEpTQ0BA
VUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVsZXRlUHJvcGVy
dHlAU3RyaW5nT2JqZWN0QEpTQ0BAVUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJA
QFoKICAgICA/ZGVsZXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAUUJFWFhaCi0gICAgP2Rlc3BlY2lm
eURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUJWSWRlbnRpZmllckAyQEBa
Ci0gICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8k
UGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBa
CiAgICAgP2Rlc3Ryb3lASGVhcEBKU0NAQFFBRVhYWgogICAgID9kZXRhY2hARGVidWdnZXJASlND
QEBVQUVYUEFWSlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJ
QFoKQEAgLTE3Miw3ICsxNjgsNiBAQCBFWFBPUlRTCiAgICAgP2Zyb21ASWRlbnRpZmllckBKU0NA
QFNBP0FWMTJAUEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2Z1bmN0aW9uR2V0dGVyQFByb3BlcnR5
U2xvdEBKU0NAQEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9mdW5jdGlv
bk5hbWVARGVidWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQlZVU3RyaW5nQDJAWFoKLSAgICA/Z2V0
QFN0cnVjdHVyZUBKU0NAQFFBRUlQQVZTdHJpbmdJbXBsQFdURkBAQUFJQUFQQVZKU0NlbGxAMkBA
WgogICAgID9nZXRDYWxsRGF0YUBKU0NlbGxASlNDQEBVQUU/QVc0Q2FsbFR5cGVAMkBBQVRDYWxs
RGF0YUAyQEBaCiAgICAgP2dldENvbnN0cnVjdERhdGFASlNDZWxsQEpTQ0BAVUFFP0FXNENvbnN0
cnVjdFR5cGVAMkBBQVRDb25zdHJ1Y3REYXRhQDJAQFoKICAgICA/Z2V0SlNOdW1iZXJASlNDZWxs
QEpTQ0BAVUFFP0FWSlNWYWx1ZUAyQFhaCkBAIC0yMzksNyArMjM0LDYgQEAgRVhQT1JUUwogICAg
ID9tYXJrQ2hpbGRyZW5ASlNPYmplY3RASlNDQEBVQUVYQUFWTWFya1N0YWNrQDJAQFoKICAgICA/
bWFya0NoaWxkcmVuQEpTV3JhcHBlck9iamVjdEBKU0NAQEVBRVhBQVZNYXJrU3RhY2tAMkBAWgog
ICAgID9tYXJrQ2hpbGRyZW5AU2NvcGVDaGFpbk5vZGVASlNDQEBVQUVYQUFWTWFya1N0YWNrQDJA
QFoKLSAgICA/bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEBTdHJ1Y3R1cmVASlNDQEBBQUVYWFoKICAg
ICA/bW9udGhGcm9tRGF5SW5ZZWFyQFdURkBAWUFISF9OQFoKICAgICA/bXNUb1llYXJAV1RGQEBZ
QUhOQFoKICAgICA/bmFtZUBJbnRlcm5hbEZ1bmN0aW9uQEpTQ0BAUUFFQUJWVVN0cmluZ0AyQFBB
VkV4ZWNTdGF0ZUAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGYyNjhiZWYwMDMzODQ5MDJjNjFj
NGM2OGViZTA1YmRjMjg2MmEyZDkuLjgzZTQ1OTIzMWEwZmMwMDMyMmI4MjEwNGViZjQ1NjYyNzYy
OTBjNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgQnl0ZWNvZGVHZW5l
cmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgU2NvcGVD
aGFpbk5vZGUqIHMKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGJvb2w+LCAxNj4gZnVu
Y3Rpb25JbmZvKGZ1bmN0aW9uU3RhY2suc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlv
bkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgICAgICBnbG9i
YWxPYmplY3QtPnJlbW92ZURpcmVjdChmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE1ha2Ugc3VyZSBv
dXIgbmV3IGZ1bmN0aW9uIGlzIG5vdCBzaGFkb3dlZCBieSBhbiBvbGQgcHJvcGVydHkuCisgICAg
ICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBmdW5jdGlv
bi0+aWRlbnQoKSk7IC8vIE1ha2Ugc3VyZSBvdXIgbmV3IGZ1bmN0aW9uIGlzIG5vdCBzaGFkb3dl
ZCBieSBhbiBvbGQgcHJvcGVydHkuCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5
ID0gc3ltYm9sVGFibGUtPmlubGluZUdldChmdW5jdGlvbi0+aWRlbnQoKS5pbXBsKCkpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA2NzAyNDA0
M2M2M2VjMzhiOTk5YjgzYzZlYjRiNmJmYzNkMDEyNDZjLi5kNzljNTgxZTM2MTcxZjRjY2NmYWQ1
N2JjMzNiZDUzNjU3MjQ5NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRTb3VyY2VUb0Vycm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBl
eGNlcHRpb24sCiAgICAgICAgIHJldHVybjsKIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZjYWxsRnJhbWUtPmdsb2JhbERhdGEoKTsKLSAgICBKU1ZhbHVlIGpzTWVzc2FnZSA9IGV4
Y2VwdGlvbi0+Z2V0RGlyZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwor
ICAgIEpTVmFsdWUganNNZXNzYWdlID0gZXhjZXB0aW9uLT5nZXREaXJlY3QoKmdsb2JhbERhdGEs
IGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwogICAgIGlmICghanNNZXNzYWdl
IHx8ICFqc01lc3NhZ2UuaXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzY0LDcg
KzEzNjQsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlE
KENhbGxGcmFtZSogY2FsbEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgICAgIC8vIHNob3VsZCBub3Qg
YmUgdHJlYXRlZCBhcyBhIGRpY3Rpb25hcnkuCiAgICAgICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGJhc2VPYmplY3QtPmZsYXR0
ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAg
IG9mZnNldCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgICAgIG9mZnNldCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NF
UlQoIWJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsK
QEAgLTMwNzksNyArMzA3OSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgICAg
ICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIHVuc2ln
bmVkIG9mZnNldCA9IHZQQ1s3XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJh
c2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9u
KGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VP
YmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIodlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAg
ICAgICAgIGJhc2VPYmplY3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEo
KSwgb2Zmc2V0LCBjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAg
ICAgICB2UEMgKz0gT1BDT0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CkBAIC0z
MTE0LDcgKzMxMTQsNyBAQCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIGlu
dCB2YWx1ZSA9IHZQQ1szXS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zm
c2V0ID0gdlBDWzVdLnUub3BlcmFuZDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGly
ZWN0TG9jYXRpb24oY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0g
b2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9j
YXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7
CiAgICAgICAgICAgICAgICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+
Z2xvYmFsRGF0YSgpLCBvZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAog
ICAgICAgICAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF9yZXBsYWNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggOTIyYmQ1OTY0M2Rh
M2ZmMWIwYjZiNzY0ZmFhZjlmZjNiZjA4NDQ4Yi4uZmUyNmRjYWExNjMyYjQ2N2MxZjE4Y2Y3MzRm
NjNmMTBjYWQ1M2Y2MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAg
LTkxOSw3ICs5MTksNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0
QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAgICAgICAvLyBzaG91
bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICAgICAgc2xvdEJh
c2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
KTsKLSAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0
KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZzZXQgPSBzbG90QmFzZU9iamVjdC0+c3Ry
dWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG8oc3Ry
dWN0dXJlLCBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCkpOwpAQCAtMTc0NCw3ICsxNzQ0LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9wcm90
b19saXN0KQogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5
LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnko
KSkgewogICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0
KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNl
T2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZz
ZXQgPSBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERh
dGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBsaXN0SW5kZXg7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRy
YW5zaXRpb25PcHRpbWl6ZXIuaAppbmRleCAwZjZhNjQ2NTRkOGQzYjJjMGUzMWFkMjFhZGE3ZjI4
MjQzODBmMzdjLi5lZGVlYzU3NTZhMWQzZGEyMWNmYmFlYmFiOGY5ODg2NzM4MjgxNjlmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyLmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAsIG1fb2JqZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X29iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAgIG1f
b2JqZWN0LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0
LT5zZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIG1fb2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAg
ICAgfkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjcxMDZhMTg0ZTZmMDIy
YmFkZTMyYjhlZTNkNWRkYjQyMDgyY2YxYi4uNjA5MTgzMWE1ZmE4MGIwNjE1MDczYmZlNjk1Mjli
MDlkMWUzZjUwYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
ZXJuYWxGdW5jdGlvbi5jcHAKQEAgLTUxLDEyICs1MSwxMiBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJ
bnRlcm5hbEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3Qq
IGdsbwogCiBjb25zdCBVU3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CisgICAgcmV0dXJuIGFzU3Ry
aW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNvbnN0IFVTdHJpbmcgSW50
ZXJuYWxGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFs
dWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFt
ZXMtPmRpc3BsYXlOYW1lKTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3Bs
YXlOYW1lKTsKICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+
Z2xvYmFsRGF0YSgpLCBkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNw
bGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmNwcAppbmRleCBkMGM1MGRkNjc0YTRhODI3MTcwMzJlMDIxM2Q2MjAw
Yjc4NzAzNzUxLi44M2I2YTFjMTJjNGM4ZGQ1ZGU5MGUwNDc3MzUyMTA4MzU5NDcwYjhjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBib29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydAogICAgIGlmIChzeW1ib2xUYWJs
ZUdldChwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlm
IChXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9u
KHByb3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFt
ZSkpIHsKICAgICAgICAgc2xvdC5zZXRWYWx1ZShsb2NhdGlvbi0+Z2V0KCkpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCmluZGV4IGRiZmM2MDY1NWUyYzMzY2ZlMDVlYmRhNjc0NDZmNzk2ZTcyMDAzNGMu
LmI4ZTQ5OWI2ODc5Y2IzYmUxMWU5YzU3NzIxYmU5NGVhYzVlMDdlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBA
QCBzdGF0aWMgdm9pZCBjcmVhdGVEZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlcnR5RGVzY3JpcAogCiBjb25zdCBVU3RyaW5nJiBKU0Z1bmN0aW9uOjpu
YW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7Cisg
ICAgcmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmds
b2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNv
bnN0IFVTdHJpbmcgSlNGdW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewot
ICAgIEpTVmFsdWUgZGlzcGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnBy
b3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFt
ZXMtPmRpc3BsYXlOYW1lKTsKICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmlu
ZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0
cmluZyhkaXNwbGF5TmFtZSktPnRyeUdldFZhbHVlKCk7CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBi
b29sIEpTRnVuY3Rpb246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TgogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVy
dHlTbG90KGV4ZWMsIHByb3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1l
ID09IGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5h
bWUpOworICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERp
cmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgICAg
ICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgc2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVj
dFN0cnVjdHVyZSgpKTsKICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250
RW51bSk7CiAgICAgICAgICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5w
cm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51
bSk7Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHNsb3Quc2V0VmFs
dWUodGhpcywgbG9jYXRpb24tPmdldCgpLCBvZmZzZXRGb3JMb2NhdGlvbihsb2NhdGlvbikpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IDQxMTA4YzQ2ZTk2NTE2N2IwMGI4ZGFhMjBhZTdjZjI2MTNmMWEwMTkuLjg0Yzg1YWU3YWNm
ODJmY2JhOTM3ZDQ1ZDdiMmFlZDczMzNlZjY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNywxMSArMTM3LDExIEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVyCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0
ZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSlNWYWx1ZSB2YWx1ZUJlZm9yZSA9IGdldERpcmVjdChw
cm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgdmFsdWVCZWZvcmUgPSBnZXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90Owog
ICAgIEpTVmFyaWFibGVPYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90
KTsKICAgICBpZiAoIXZhbHVlQmVmb3JlKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWVBZnRlciA9
IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICBKU1ZhbHVlIHZhbHVlQWZ0ZXIgPSBn
ZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAo
dmFsdWVBZnRlcikKICAgICAgICAgICAgIEpTT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhleGVj
LCBwcm9wZXJ0eU5hbWUsIHZhbHVlQWZ0ZXIsIGF0dHJpYnV0ZXMpOwogICAgIH0KQEAgLTI5OSwx
OCArMjk5LDE4IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KQogICAgIHB1dERpcmVjdEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVj
KSBKU0Z1bmN0aW9uKGV4ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElk
ZW50aWZpZXIoZXhlYywgImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVt
KTsKICNlbmRpZgogCi0gICAgcmVzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICByZXNldFBy
b3RvdHlwZShleGVjLT5nbG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CiB9CiAKIC8vIFNldCBwcm90
b3R5cGUsIGFuZCBhbHNvIGluc2VydCB0aGUgb2JqZWN0IHByb3RvdHlwZSBhdCB0aGUgZW5kIG9m
IHRoZSBjaGFpbi4KLXZvaWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTVmFsdWUg
cHJvdG90eXBlKQordm9pZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBzZXRQcm90b3R5cGUo
cHJvdG90eXBlKTsKKyAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlKTsKIAog
ICAgIEpTT2JqZWN0KiBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbiA9IGxhc3RJblByb3RvdHlwZUNo
YWluKHRoaXMpOwogICAgIEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUgPSBtX29iamVjdFByb3Rv
dHlwZS5nZXQoKTsKICAgICBpZiAob2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gIT0gb2JqZWN0UHJv
dG90eXBlKQotICAgICAgICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBlKG9i
amVjdFByb3RvdHlwZSk7CisgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90
b3R5cGUoZ2xvYmFsRGF0YSwgb2JqZWN0UHJvdG90eXBlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDBlZjVjYjhiYTgwZDlj
M2QzZTBiOGVhZWM5MjNmY2Q3Y2QyMDA2Ni4uMzAwZjRiMDQ5ODU4OTY1ZTNjMTI5MGZmMTNhMTQ3
YjNkOGI0MDU3NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCkBAIC0yMzUsNyArMjM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgY29weUdsb2JhbHNUbyhSZWdpc3RlckZpbGUmKTsKICAgICAgICAgdm9pZCByZXNpemVSZWdp
c3RlcnMoaW50IG9sZFNpemUsIGludCBuZXdTaXplKTsKIAotICAgICAgICB2b2lkIHJlc2V0UHJv
dG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShK
U0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKCkgY29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYjMwNzU0MDc5
Y2I5NDRiM2FhNjA2M2Y5NThiNWIzMDBhNGI2NTFhNC4uYWI0NzJkNDY5MzdkODNmMjgzOTgxMWFk
YmI3YTA5MGNiMWI0ZmRhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmNwcApAQCAtMTA5LDcgKzEwOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAg
ICAgIC8vIFNldHRpbmcgX19wcm90b19fIHRvIGEgbm9uLW9iamVjdCwgbm9uLW51bGwgdmFsdWUg
aXMgc2lsZW50bHkgaWdub3JlZCB0byBtYXRjaCBNb3ppbGxhLgogICAgICAgICBpZiAoIXZhbHVl
LmlzT2JqZWN0KCkgJiYgIXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBpZiAoIXNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKHZhbHVlKSkKKyAgICAgICAgaWYg
KCFzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT5nbG9iYWxEYXRhKCksIHZhbHVlKSkK
ICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgImN5Y2xpYyBf
X3Byb3RvX18gdmFsdWUiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjcsMTQgKzEy
NywxNCBAQCB2b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJp
YnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIGlmICgobV9zdHJ1Y3R1cmUt
PmdldChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90
Rm91bmQpICYmIGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgeworICAgIGlmICgobV9zdHJ1Y3R1cmUt
PmdldChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lm
aWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAg
ICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0
ZUVycm9yKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTT2JqZWN0KiBv
YmogPSB0aGlzOyA7IG9iaiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgaWYgKEpT
VmFsdWUgZ3MgPSBvYmotPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5h
bWUpKSB7CiAgICAgICAgICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICAg
ICAgICAgIEpTT2JqZWN0KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIo
KTsgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewpAQCAtMjE4LDEw
ICsyMTgsMTAgQEAgYm9vbCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgdW5zaWduZWQgYXR0cmli
dXRlczsKICAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKG1fc3RydWN0dXJlLT5n
ZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZv
dW5kKSB7CisgICAgaWYgKG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsK
ICAgICAgICAgaWYgKChhdHRyaWJ1dGVzICYgRG9udERlbGV0ZSkpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIHJlbW92ZURpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICBy
ZW1vdmVEaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTMxMiwzNCArMzEyLDM1IEBAIGNvbnN0IEhhc2hFbnRy
eSogSlNPYmplY3Q6OmZpbmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpCiAKIHZvaWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9u
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewotICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0
KHByb3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0
dGVyU2V0dGVyKCkpIHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKCkpOwogICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0
ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRh
KCk7CiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJT
ZXR0ZXIgPSBuZXcgKGV4ZWMpIEdldHRlclNldHRlcihleGVjKTsKLSAgICBwdXREaXJlY3RJbnRl
cm5hbChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRy
aWJ1dGVzIHwgR2V0dGVyLCB0cnVlLCBzbG90KTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9i
YWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEdldHRlciwg
dHJ1ZSwgc2xvdCk7CiAKICAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVy
ZSBpZiB3ZSBhZGQgYSBuZXcgcHJvcGVydHkuIEZvcgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRl
cnMsIHRob3VnaCwgd2UgYWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCiAgICAgLy8g
aWYgd2Ugb3ZlcnJpZGUgYW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgogICAg
IGlmIChzbG90LnR5cGUoKSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CiAgICAg
ICAgIGlmICghbV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRp
b24obV9zdHJ1Y3R1cmUpOworICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJl
ID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0
dXJlKTsKICAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAg
ICAgICAgfQogICAgIH0KIAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9w
ZXJ0aWVzKHRydWUpOwotICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZ2V0dGVyRnVuY3Rpb24pOworICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGdsb2Jh
bERhdGEsIGdldHRlckZ1bmN0aW9uKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVj
dCogc2V0dGVyRnVuY3Rpb24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgSlNWYWx1ZSBv
YmplY3QgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIG9iamVjdCA9IGdl
dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9iamVj
dCAmJiBvYmplY3QuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1
cmUtPmhhc0dldHRlclNldHRlclByb3BlcnRpZXMoKSk7CiAgICAgICAgIGFzR2V0dGVyU2V0dGVy
KG9iamVjdCktPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsK
QEAgLTM1NSw3ICszNTYsNyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIC8vIGlmIHdl
IG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAo
c2xvdC50eXBlKCkgIT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewogICAgICAgICBp
ZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKG1f
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0
cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fc3Ry
dWN0dXJlKTsKICAgICAgICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsK
ICAgICAgICAgfQogICAgIH0KQEAgLTM2NCwxMSArMzY1LDExIEBAIHZvaWQgSlNPYmplY3Q6OmRl
ZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNPCiAgICAgZ2V0dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBz
ZXR0ZXJGdW5jdGlvbik7CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0
Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpCiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUp
IHsKLSAgICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0
eU5hbWUpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZh
bHVlLmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRl
cih2YWx1ZSktPmdldHRlcigpOwpAQCAtMzgzLDExICszODQsMTEgQEAgSlNWYWx1ZSBKU09iamVj
dDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKICAgICB9CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0Ojpsb29r
dXBTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgaWYgKEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5hbWUp
KSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgICAgICAgICBKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRlcih2YWx1
ZSktPnNldHRlcigpOwpAQCAtNDI4LDEwICs0MjksMTAgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVy
dHlJc0VudW1lcmFibGUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU4KICAgICByZXR1cm4gZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAKLWJvb2wgSlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0Citib29sIEpTT2Jq
ZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CiAg
ICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCisgICAg
aWYgKG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0
dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgLy8gVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3Rh
dGljIHRhYmxlPyAtIHNob3VsZCBwcm9iYWJseQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgSlNP
YmplY3Q6OmdldFByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJh
eSYgcHJvcGVydHlOYW1lCiAKIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhl
Y1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRp
b25Nb2RlIG1vZGUpCiB7Ci0gICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMocHJvcGVy
dHlOYW1lcywgbW9kZSk7CisgICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICBnZXRDbGFzc1Byb3BlcnR5
TmFtZXMoZXhlYywgY2xhc3NJbmZvKCksIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCkBAIC01
MDksMzMgKzUxMCwzMyBAQCBKU09iamVjdCogSlNPYmplY3Q6OnVud3JhcHBlZE9iamVjdCgpCiAg
ICAgcmV0dXJuIHRoaXM7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnNlYWwoKQordm9pZCBKU09iamVj
dDo6c2VhbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0
cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24obV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUo
U3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQog
Ci12b2lkIEpTT2JqZWN0OjpmcmVlemUoKQordm9pZCBKU09iamVjdDo6ZnJlZXplKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKIHsKLSAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpmcmVlemVU
cmFuc2l0aW9uKG1fc3RydWN0dXJlKSk7CisgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZnJl
ZXplVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12b2lkIEpTT2Jq
ZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucygpCit2b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9u
cyhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQot
ICAgICAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24obV9zdHJ1Y3R1cmUpKTsKKyAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6cHJldmVu
dEV4dGVuc2lvbnNUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKSk7CiB9CiAKLXZv
aWQgSlNPYmplY3Q6OnJlbW92ZURpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
Cit2b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgc2l6ZV90IG9mZnNldDsKICAg
ICBpZiAobV9zdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAg
b2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJv
cGVydHlOYW1lKTsKKyAgICAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYg
KG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9u
KG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUsIG9mZnNldCk7CisgICAgUmVmUHRyPFN0cnVjdHVy
ZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFs
RGF0YSwgbV9zdHJ1Y3R1cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBzZXRTdHJ1Y3R1
cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5k
KQogICAgICAgICBwdXRVbmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwpAQCAtNTk4LDEx
ICs1OTksMTEgQEAgdm9pZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90
IG9sZFNpemUsIHNpemVfdCBuZXdTaXplKQogICAgIG1fcHJvcGVydHlTdG9yYWdlID0gbmV3UHJv
cGVydHlTdG9yYWdlOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURl
c2NyaXB0b3ImIGRlc2NyaXB0b3IpCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5RGVzY3JpcHRvciYgZGVzY3JpcHRvcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVz
ID0gMDsKICAgICBKU0NlbGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVj
dHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgc2l6ZV90IG9m
ZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUs
IGF0dHJpYnV0ZXMsIGNlbGwpOwogICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXREaXJl
Y3RPZmZzZXQob2Zmc2V0KSwgYXR0cmlidXRlcyk7CkBAIC03NTQsNyArNzU1LDcgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgIH0KLSAgICBKU1ZhbHVlIGFjY2Vzc29yID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7Cisg
ICAgSlNWYWx1ZSBhY2Nlc3NvciA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgaWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggN2EyNDhkMmI2MzFk
ZjkzNDA4ZGExZWUxMzNlMmZiYzU5MDBkMjVkMC4uYjUzYWVmY2QwMDM2YWNkYjY1NjAzNjRjZGEw
OGQ5NmJlODIxYTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CkBAIC04Nyw4ICs4Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5KU09i
amVjdCgpOwogCiAgICAgICAgIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7Ci0gICAgICAgIHZv
aWQgc2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgYm9vbCBzZXRQcm90
b3R5cGVXaXRoQ3ljbGVDaGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHZvaWQgc2V0
UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgYm9v
bCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3Rv
dHlwZSk7CiAgICAgICAgIAogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+KTsKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2Jh
bERhdGEmKTsKQEAgLTE0NiwyMiArMTQ2LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBi
b29sIGdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CiAK
ICAgICAgICAgLy8gVGhpcyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkg
bWFwLgotICAgICAgICBKU1ZhbHVlIGdldERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpIGNvbnN0CisgICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7
Ci0gICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5h
bWUpOworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFs
RGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpu
b3RGb3VuZCA/IGdldERpcmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9
CiAKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24o
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgc2l6
ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlv
bkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmll
ckJhc2U8VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMpCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAg
ICAgewogICAgICAgICAgICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAg
c2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVj
dHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNG
dW5jdGlvbik7CiAgICAgICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBs
b2NhdGlvbkZvck9mZnNldChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCkBAIC0xNzIsNyArMTcy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oU3RydWN0
dXJlKik7CiAKLSAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKTsKKyAgICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9w
ZXJ0aWVzKCkgeyByZXR1cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9v
bCBoYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dl
dHRlclNldHRlclByb3BlcnRpZXMoKTsgfQogCkBAIC0yMDksMTEgKzIwOSwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzU3RyaWN0TW9kZUZ1bmN0aW9uKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRXJyb3JJbnN0YW5j
ZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdm9pZCBzZWFsKCk7Ci0gICAg
ICAgIHZvaWQgZnJlZXplKCk7Ci0gICAgICAgIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoKTsKLSAg
ICAgICAgYm9vbCBpc1NlYWxlZCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc1NlYWxlZCgpOyB9
Ci0gICAgICAgIGJvb2wgaXNGcm96ZW4oKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNGcm96ZW4o
KTsgfQorICAgICAgICB2b2lkIHNlYWwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgZnJl
ZXplKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIHByZXZlbnRFeHRlbnNpb25zKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICBib29sIGlzU2VhbGVkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzU2VhbGVkKGdsb2JhbERhdGEpOyB9CisgICAgICAg
IGJvb2wgaXNGcm96ZW4oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBtX3N0cnVj
dHVyZS0+aXNGcm96ZW4oZ2xvYmFsRGF0YSk7IH0KICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUo
KSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNFeHRlbnNpYmxlKCk7IH0KIAogICAgICAgICB2aXJ0
dWFsIENvbXBsVHlwZSBleGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KQEAg
LTQxNiw3ICs0MTYsNyBAQCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29u
c3QKICAgICByZXR1cm4gbV9zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCi1pbmxp
bmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNWYWx1ZSBwcm90
b3R5cGUpCitpbmxpbmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBKU1Zh
bHVlIG5leHRQcm90b3R5cGVWYWx1ZSA9IHByb3RvdHlwZTsKICAgICB3aGlsZSAobmV4dFByb3Rv
dHlwZVZhbHVlICYmIG5leHRQcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC00MjUsMTQg
KzQyNSwxNCBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hl
Y2soSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IG5leHRQcm90b3R5cGVWYWx1ZSA9IG5leHRQcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgIH0K
LSAgICBzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0
YSwgcHJvdG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmpl
Y3Q6OnNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlw
ZSkKIHsKICAgICBBU1NFUlQocHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBuZXdT
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24obV9zdHJ1Y3R1
cmUsIHByb3RvdHlwZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJl
LCBwcm90b3R5cGUpOwogICAgIHNldFN0cnVjdHVyZShuZXdTdHJ1Y3R1cmUucmVsZWFzZSgpKTsK
IH0KIApAQCAtNDcxLDcgKzQ3MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNv
bnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNP
YmplY3Q6OmlubGluZUdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHBy
b3BlcnR5TmFtZSkpIHsKKyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRp
b24gPSBnZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkp
IHsKICAgICAgICAgaWYgKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkg
JiYgbG9jYXRpb24tPmlzR2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJv
cGVydHlTbG90KHNsb3QsIGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQpAQCAtNTU3LDEyICs1NTcs
MTIgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKICAgICBpZiAobV9zdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpKSB7CiAgICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAg
ICBKU0NlbGwqIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJy
ZW50U3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5k
KSB7CiAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5j
dGlvbiwgYW5kIHRoZXJlIG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUg
bmV3IHZhbHVlIGlzIGRpZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAo
Y3VycmVudFNwZWNpZmljRnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNw
ZWNpZmljRnVuY3Rpb24pKQotICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlE
aWN0aW9uYXJ5RnVuY3Rpb24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBtX3N0cnVj
dHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFt
ZSk7CiAgICAgICAgICAgICBpZiAoY2hlY2tSZWFkT25seSAmJiBjdXJyZW50QXR0cmlidXRlcyAm
IFJlYWRPbmx5KQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTgyLDcgKzU4
Miw3IEBAIGlubGluZSBib29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAgICAgc2l6ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpOwotICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
RnVuY3Rpb24pOworICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljRnVuY3Rpb24pOwogICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0
eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSk7CiAKQEAgLTYxMiw3ICs2MTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0
RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQog
CiAgICAgdW5zaWduZWQgY3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3Bl
Y2lmaWNGdW5jdGlvbjsKLSAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFt
ZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZz
ZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0
dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IFdU
Rjo6bm90Rm91bmQpIHsKICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJp
YnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMyw3ICs2
MzMsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBm
YWxsIHRocm91Z2ggdG8gKDMpLgotICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsK
KyAgICAgICAgICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAg
IH0KIAogICAgICAgICAvLyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVy
bi4KQEAgLTcwNyw3ICs3MDcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVu
Y3Rpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0
cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCAwKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3Bl
cnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCAwKTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50
Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBw
dXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03MTYsNyArNzE2
LDcgQEAgaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXRE
aXJlY3RGdW5jdGlvbldpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1
cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCB2YWx1ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdp
dGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFs
dWUpOwogICAgIGlmIChjdXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpCiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRD
YXBhY2l0eSwgbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHB1
dERpcmVjdE9mZnNldChnbG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCmluZGV4IDMwN2JjZWIyNTBiOTU1OTBkNTgzYTRhYTc1
N2Q1YzVmYTI5YWI2MGEuLjI1YjUxNmVmYjBmYTI2ZTE5NTJmNTQzMmZmNTE5OTk5NWRkZmNiNDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNzMsNyArNzMs
NyBAQCB2b2lkIHNldFVwU3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3QqCiAgICAgQVNTRVJUKHRoaXNPYmotPnN0cnVjdHVy
ZSgpLT5hbm9ueW1vdXNTbG90Q291bnQoKSA+IDApOwogICAgIEFTU0VSVCh0aGlzT2JqLT5nZXRB
bm9ueW1vdXNWYWx1ZSgwKS5pc0NlbGwoKSAmJiBhc09iamVjdCh0aGlzT2JqLT5nZXRBbm9ueW1v
dXNWYWx1ZSgwKS5hc0NlbGwoKSktPmlzR2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRy
eS0+YXR0cmlidXRlcygpICYgRnVuY3Rpb24pOwotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93
bj4qIGxvY2F0aW9uID0gdGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsK
KyAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERp
cmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgIGlm
ICghbG9jYXRpb24pIHsKICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb247CkBAIC04Niw3ICs4
Niw3IEBAIHZvaWQgc2V0VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBIYXNoRW50cnkqIGVudHJ5LCBKU09iamVjdCoKICAgICAgICAgICAgIGZ1bmN0aW9uID0gbmV3
IChleGVjKSBKU0Z1bmN0aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5j
dGlvblN0cnVjdHVyZSgpLCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBl
bnRyeS0+ZnVuY3Rpb24oKSk7CiAKICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0RnVuY3Rpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmli
dXRlcygpKTsKLSAgICAgICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihw
cm9wZXJ0eU5hbWUpOworICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmosIGxvY2F0aW9uLT5nZXQoKSwgdGhpc09iai0+b2Zmc2V0Rm9yTG9j
YXRpb24obG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09iamVjdENvbnN0cnVjdG9yLmNwcAppbmRleCBjNjQyYTViNTlmMmQ1OThiY2E0ZGVhNTU4Y2Yy
NTJlNzYyM2U5YzgzLi42YmQyYTI4MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNkMmFlMjEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc09iamVjdCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9i
amVjdCBwcm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIikpOwogICAgIEpT
T2JqZWN0KiBuZXdPYmplY3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBuZXdP
YmplY3QtPnNldFByb3RvdHlwZShleGVjLT5hcmd1bWVudCgwKSk7CisgICAgbmV3T2JqZWN0LT5z
ZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAg
aWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUobmV3T2JqZWN0KTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2Jq
ZWN0KCkpCkBAIC0zNTUsNyArMzU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBv
YmplY3RDb25zdHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5zZWFs
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICBhc09iamVjdChvYmopLT5z
ZWFsKCk7CisgICAgYXNPYmplY3Qob2JqKS0+c2VhbChleGVjLT5nbG9iYWxEYXRhKCkpOwogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIApAQCAtMzY0LDcgKzM2NCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0
YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5mcmVlemUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9i
amVjdHMuIikpOwotICAgIGFzT2JqZWN0KG9iaiktPmZyZWV6ZSgpOworICAgIGFzT2JqZWN0KG9i
aiktPmZyZWV6ZShleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUob2JqKTsKIH0KIApAQCAtMzczLDcgKzM3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgb2JqZWN0Q29uc3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09i
amVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBP
YmplY3RzLiIpKTsKLSAgICBhc09iamVjdChvYmopLT5wcmV2ZW50RXh0ZW5zaW9ucygpOworICAg
IGFzT2JqZWN0KG9iaiktPnByZXZlbnRFeHRlbnNpb25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQogCkBAIC0zODIsNyArMzgyLDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVk
IG9uIE9iamVjdHMuIikpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFz
T2JqZWN0KG9iaiktPmlzU2VhbGVkKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc09iamVjdChvYmopLT5pc1NlYWxlZChleGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9
CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3pl
bihFeGVjU3RhdGUqIGV4ZWMpCkBAIC0zOTAsNyArMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKICAg
ICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJPYmplY3QuaXNGcm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzRnJv
emVuKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChv
YmopLT5pc0Zyb3plbihleGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBl
eGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9u
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGIx
ZjQ3NGY3MzYzODk3MGQ3ZjNlZDExNmJiMzhjNTAxZjllZTk3MjEuLmMxMDJlZWJlZDNhYTY2MzY5
OWZmYzUxOWY1OTY0Nzk3ZDRhMWYxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcGVyYXRpb25zLmgKQEAgLTQzMCw3ICs0MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIGlmIChjZWxsLT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAg
ICAgICAgICBhc09iamVjdChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1l
LT5nbG9iYWxEYXRhKCkpOwogICAgICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQot
ICAgICAgICAgICAgICAgICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChw
cm9wZXJ0eU5hbWUpOyAKKyAgICAgICAgICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0
cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7IAog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICArK2NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggYzAwMGRj
ODFhZjAxYmY2ZGEyMTYyOWI3NWFlZmE4MTYwMjZjZGZkNS4uZWRiZDM1ZjQ4YTI2YzI4ZDY5ZDBl
MWM0NzQ2MjhmYWNlNzE4MDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC03MywxMyArNzMsMTMgQEAgc3RydWN0
IFByb3BlcnR5TWFwRW50cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKICAgICB1bnNpZ25lZCBv
ZmZzZXQ7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKLSAgICBKU0NlbGwqIHNwZWNpZmljVmFs
dWU7CisgICAgV3JpdGVCYXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3Bl
cnR5TWFwRW50cnkoU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0
dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1
bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1
ZSkKICAgICAgICAgOiBrZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAg
ICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQotICAgICAgICAsIHNwZWNpZmljVmFsdWUoc3BlY2lm
aWNWYWx1ZSkKKyAgICAgICAgLCBzcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIG93bmVyLCBzcGVj
aWZpY1ZhbHVlKQogICAgIHsKICAgICB9CiB9OwpAQCAtMTQxLDkgKzE0MSw5IEBAIHB1YmxpYzoK
ICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRv
cjsKIAogICAgIC8vIENvbnN0cnVjdG9yIGlzIHBhc3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5LCBh
IFByb3BlcnR5VGFibGUgdG8gY29weSwgb3IgYm90aC4KLSAgICBQcm9wZXJ0eVRhYmxlKHVuc2ln
bmVkIGluaXRpYWxDYXBhY2l0eSk7Ci0gICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRh
YmxlJik7Ci0gICAgUHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0
IFByb3BlcnR5VGFibGUmKTsKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGlu
aXRpYWxDYXBhY2l0eSk7CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwq
LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEm
LCBKU0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUm
KTsKICAgICB+UHJvcGVydHlUYWJsZSgpOwogCiAgICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0
aG9kcy4KQEAgLTE3Niw3ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREZWxldGVkT2Zm
c2V0KHVuc2lnbmVkIG9mZnNldCk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwg
ZW5zdXJpbmcgdGhlIGNvcHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KLSAg
ICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IGNvcHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOwor
ICAgIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwq
IG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc2l6
ZV90IHNpemVJbk1lbW9yeSgpOwpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgog
CiBwcml2YXRlOgorICAgIFByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAg
IC8vIFVzZWQgdG8gaW5zZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwg
YW5kIHdoZXJlIHdlIGtub3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVp
bnNlcnQoY29uc3QgVmFsdWVUeXBlJiBlbnRyeSk7CiAKQEAgLTI0Myw3ICsyNDQsNyBAQCBpbmxp
bmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkp
CiAgICAgQVNTRVJUKGlzUG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3Bl
cnR5VGFibGU6OlByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxp
bmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBj
b25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICA6IG1faW5kZXhTaXplKG90aGVyLm1faW5k
ZXhTaXplKQogICAgICwgbV9pbmRleE1hc2sob3RoZXIubV9pbmRleE1hc2spCiAgICAgLCBtX2lu
ZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdE1hbGxvYyhkYXRhU2l6ZSgpKSkpCkBAIC0y
NjQsNyArMjY1LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoY29uc3Qg
UHJvcGVydHlUYWJsZSYgb3RoZXIpCiAgICAgICAgIG1fZGVsZXRlZE9mZnNldHMuc2V0KG5ldyBW
ZWN0b3I8dW5zaWduZWQ+KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKLWlubGluZSBQcm9w
ZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3Qg
UHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJs
ZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0
IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgIDogbV9pbmRleFNpemUoc2l6ZUZvckNhcGFjaXR5
KGluaXRpYWxDYXBhY2l0eSkpCiAgICAgLCBtX2luZGV4TWFzayhtX2luZGV4U2l6ZSAtIDEpCiAg
ICAgLCBtX2luZGV4KHN0YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRh
U2l6ZSgpKSkpCkBAIC00NDMsMTUgKzQ0NCwxNSBAQCBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxl
OjphZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9mZnNldCkKICAgICBtX2RlbGV0ZWRPZmZzZXRz
LT5hcHBlbmQob2Zmc2V0KTsKIH0KIAotaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4g
UHJvcGVydHlUYWJsZTo6Y29weSh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKK2lubGluZSBQYXNzT3du
UHRyPFByb3BlcnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NF
UlQobmV3Q2FwYWNpdHkgPj0gbV9rZXlDb3VudCk7CiAKICAgICAvLyBGYXN0IGNhc2U7IGlmIHRo
ZSBuZXcgdGFibGUgd2lsbCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0aGlzIG9uZSwgd2Ug
Y2FuIG1lbWNweSBpdCwKICAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5cy4KICAgICBpZiAo
c2l6ZUZvckNhcGFjaXR5KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkKLSAgICAgICAgcmV0
dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKCp0aGlzKTsKLSAgICByZXR1cm4gbmV3IFByb3BlcnR5VGFi
bGUobmV3Q2FwYWNpdHksICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxl
KGdsb2JhbERhdGEsIG93bmVyLCAqdGhpcyk7CisgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxl
KGdsb2JhbERhdGEsIG93bmVyLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwogfQogCiAjaWZuZGVmIE5E
RUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXgg
MTMxZWE2YmRlMzBhNTYwOTc1MTk4ZGUxMTdmZjQyZWM2N2I3OWI3ZS4uYmQ3ZDlkZGE5MDE3MmFl
NjI1YzczZjAzYjczYWVmYjIyY2NhMGY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OnN0
b3BJZ25vcmluZ0xlYWtzKCkKICNlbmRpZgogfQogCi12b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcCgpCit2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgQVNTRVJUKCFtX3Byb3BlcnR5VGFibGUp
OwogCkBAIC0zMDksNyArMzA5LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVy
dHlNYXAoKQogICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsK
ICAgICAgICAgICAgIEFTU0VSVCghc3RydWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAg
ICAgbV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkobV9v
ZmZzZXQgKyAxKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9w
cm9wZXJ0eVRhYmxlLT5jb3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoKQogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0
cnVjdHVyZXMuc2l6ZSgpIC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJlID0g
c3RydWN0dXJlc1tpXTsKLSAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShzdHJ1Y3R1cmUt
Pm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0dXJl
LT5tX29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1cmUt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOworICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVu
dHJ5KGdsb2JhbERhdGEsIDAsIHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9h
bm9ueW1vdXNTbG90Q291bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0
cmlidXRlc0luUHJldmlvdXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7
CiAgICAgICAgIG1fcHJvcGVydHlUYWJsZS0+YWRkKGVudHJ5KTsKICAgICB9CiB9CkBAIC0zMzQs
MTggKzMzNCwxOCBAQCB2b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkKICAgICAgICAgbV9wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSAqPSAyOwogfQogCi12b2lkIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CiB7CiAgICAgU3RyaW5nSW1wbCogcmVwID0gcHJvcGVydHlOYW1lLmltcGwoKTsKIAotICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKIAogICAgIEFTU0VSVChpc0RpY3Rpb25hcnko
KSk7CiAgICAgQVNTRVJUKG1fcHJvcGVydHlUYWJsZSk7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5
KiBlbnRyeSA9IG1fcHJvcGVydHlUYWJsZS0+ZmluZChyZXApLmZpcnN0OwogICAgIEFTU0VSVChl
bnRyeSk7Ci0gICAgZW50cnktPnNwZWNpZmljVmFsdWUgPSAwOworICAgIGVudHJ5LT5zcGVjaWZp
Y1ZhbHVlLmNsZWFyKCk7CiB9CiAKIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywg
SlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKQEAgLTM4Nyw5ICszODcsOSBA
QCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKIAog
ICAgIGlmIChzdHJ1Y3R1cmUtPnRyYW5zaXRpb25Db3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVu
Z3RoKSB7Ci0gICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1
cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7
Ci0gICAgICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnB1dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQoZ2xv
YmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAg
ICAgQVNTRVJUKG9mZnNldCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQgPT0gdHJhbnNpdGlv
bi0+bV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVy
dHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkK
QEAgLTQwNywxNyArNDA3LDE3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFk
ZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAKICAgICBpZiAo
c3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9p
c1Bpbm5lZFByb3BlcnR5VGFibGUpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShzdHJ1Y3R1cmUtPm1fcHJv
cGVydHlUYWJsZS0+c2l6ZSgpICsgMSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3Bl
cnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAw
LCBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+c2l6ZSgpICsgMSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9w
cm9wZXJ0eVRhYmxlLnJlbGVhc2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3RydWN0
dXJlLT5tX3ByZXZpb3VzKQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcCgpOworICAgICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChnbG9iYWxEYXRhKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Y3Jl
YXRlUHJvcGVydHlNYXAoKTsKICAgICB9CiAKLSAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQo
cHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBvZmZzZXQgPSB0
cmFuc2l0aW9uLT5wdXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVj
aWZpY1ZhbHVlKTsKICAgICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNT
bG90Q291bnQpOwogICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09
IHRyYW5zaXRpb24tPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICBpZiAodHJhbnNpdGlvbi0+
cHJvcGVydHlTdG9yYWdlU2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSkKQEAgLTQyOSwxMSArNDI5LDExIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAg
cmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0
cmFuc2l0aW9uID0gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7
CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9u
YXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgb2Zmc2V0ID0gdHJh
bnNpdGlvbi0+cmVtb3ZlKHByb3BlcnR5TmFtZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBzdHJ1
Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsCiAgICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1Q
YXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9u
KFN0cnVjdHVyZSogc3RydWN0dXJlLCBKU1ZhbHVlIHByb3RvdHlwZSkKK1Bhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7
CiAgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwog
CkBAIC00NTAsMTUgKzQ1MCwxNSBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpj
aGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLAogCiAgICAgLy8g
RG9uJ3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAK
LSAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAg
IHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFi
bGUoKTsKKyAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
PmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5u
ZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9u
eW1vdXNTbG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CiAg
ICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKK1Bhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBy
ZXBsYWNlRnVuY3Rpb24pCiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQgPCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKQEAgLTQ2Nywx
NCArNDY3LDE0IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1
bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAKICAgICAvLyBEb24ndCBzZXQg
bV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVj
dHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlv
bi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAg
IHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUgPSB0cnVlOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fc3BlY2lmaWNGdW5jdGlvblRo
cmFzaENvdW50ID09IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKLSAgICAgICAgdHJh
bnNpdGlvbi0+ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCk7CisgICAgICAgIHRyYW5zaXRpb24tPmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyhnbG9iYWxEYXRhKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9v
bCByZW1vdmVkID0gdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24ocmVwbGFjZUZ1bmN0aW9u
KTsKKyAgICAgICAgYm9vbCByZW1vdmVkID0gdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24o
Z2xvYmFsRGF0YSwgcmVwbGFjZUZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1v
dmVkLCByZW1vdmVkKTsKICAgICB9CiAgICAgCkBAIC00ODIsMjggKzQ4MiwyOCBAQCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAot
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6Omdl
dHRlclNldHRlclRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRl
KHN0cnVjdHVyZSk7CiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90
IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0
eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3Ry
dWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQ
cm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJv
cGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAg
ICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFu
b255bW91c1Nsb3RDb3VudCgpKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9
CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRp
b24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQp
CiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwog
ICAgIAogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJl
KTsKIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7
Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVy
dHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNz
YXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVj
dHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9p
c1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFy
eUtpbmQgPSBraW5kOwogICAgIApAQCAtNTExLDIwICs1MTEsMjAgQEAgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSwgRGkKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0
b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRp
b24oc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7CisgICAgcmV0dXJuIHRvRGljdGlv
bmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2lu
ZCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVE
aWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVy
biB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2lu
ZCk7CisgICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0
dXJlLCBVbmNhY2hlZERpY3Rpb25hcnlLaW5kKTsKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3
YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFu
c2l0aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVm
UHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlU
YWJsZSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9u
LT5tX3Byb3BlcnR5VGFibGUtPmVuZCgpOwpAQCAtNTM2LDkgKzUzNiw5IEBAIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJl
KQogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0aW9u
LgotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyZWV6
ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVudEV4dGVuc2lv
bnNUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlv
biA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwog
CiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBQcm9wZXJ0
eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgp
OwpAQCAtNTUwLDE0ICs1NTAsMTQgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6
ZnJlZXplVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0KIAogLy8gSW4gZnV0dXJl
IHdlIG1heSB3YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0
dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNp
b25zVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogewogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0
dXJlKTsKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNp
dGlvbiB0byB0aGlzLgogCi0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUt
PmNvcHlQcm9wZXJ0eVRhYmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5
TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKICAgICB0cmFu
c2l0aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAgdHJhbnNpdGlvbi0+
bV9wcmV2ZW50RXh0ZW5zaW9ucyA9IHRydWU7CiAKQEAgLTU2NiwxMiArNTY2LDEyIEBAIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihT
dHJ1Y3R1cmUqIHN0cnVjdHVyCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNo
ZSB0aGlzIHByb3BlcnR5LgotYm9vbCBTdHJ1Y3R1cmU6OmlzU2VhbGVkKCkKK2Jvb2wgU3RydWN0
dXJlOjppc1NlYWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0
ZW5zaWJsZSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCkBAIC01ODQsMTIgKzU4NCwxMiBAQCBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQo
KQogfQogCiAvLyBJbiBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4K
LWJvb2wgU3RydWN0dXJlOjppc0Zyb3plbigpCitib29sIFN0cnVjdHVyZTo6aXNGcm96ZW4oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5
KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwog
ICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNjMw
LDMwICs2MzAsMzAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZmxhdHRlbkRp
Y3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWwKICAgICByZXR1cm4gdGhpczsK
IH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCog
c3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAg
ICBBU1NFUlQoIW1fZW51bWVyYXRpb25DYWNoZSk7CiAKICAgICBpZiAobV9zcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQgPT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQogICAgICAg
ICBzcGVjaWZpY1ZhbHVlID0gMDsKIAotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vz
c2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRh
KTsKIAogICAgIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAotICAgIHNpemVfdCBv
ZmZzZXQgPSBwdXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAg
ICBzaXplX3Qgb2Zmc2V0ID0gcHV0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRl
cywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBtX2Fub255bW91c1Nsb3RD
b3VudCk7CiAgICAgaWYgKHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpCiAgICAgICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHJl
dHVybiBvZmZzZXQ7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc2l6ZV90IFN0cnVj
dHVyZTo6cmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQoaXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUp
OwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogCiAgICAgbV9pc1Bpbm5l
ZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVy
dHlOYW1lKTsKQEAgLTY4OCwxNCArNjg4LDE0IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6Y2hl
Y2tDb25zaXN0ZW5jeSgpCiAKICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNv
cHlQcm9wZXJ0eVRhYmxlKCkKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIHJldHVybiBtX3Byb3BlcnR5
VGFibGUgPyBuZXcgUHJvcGVydHlUYWJsZSgqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CisgICAgcmV0
dXJuIG1fcHJvcGVydHlUYWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIDAsICpt
X3Byb3BlcnR5VGFibGUpIDogMDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KFN0cmluZ0lt
cGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmlj
VmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBz
cGVjaWZpY1ZhbHVlKQogewotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgp
OworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CiAK
QEAgLTcwNCwxNCArNzA0LDE0IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChTdHJpbmdJbXBsKiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzCiAgICAgICAgIHJl
dHVybiBXVEY6Om5vdEZvdW5kOwogCiAgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVz
OwotICAgIHNwZWNpZmljVmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZTsKKyAgICBzcGVjaWZp
Y1ZhbHVlID0gZW50cnktPnNwZWNpZmljVmFsdWUuZ2V0KCk7CiAgICAgQVNTRVJUKGVudHJ5LT5v
ZmZzZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0
OwogfQogCi1ib29sIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewot
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlU
YWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC03MjEsMjUgKzcyMSwyNSBAQCBib29s
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZW50cnktPnNwZWNpZmlj
VmFsdWUpOwotICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlID0gMDsKKyAgICBlbnRyeS0+c3BlY2lm
aWNWYWx1ZS5jbGVhcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKCkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5j
dGlvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewotICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5l
bmQoKTsKICAgICBmb3IgKFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5
VGFibGUtPmJlZ2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnNwZWNp
ZmljVmFsdWUgPSAwOworICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAK
LXNpemVfdCBTdHJ1Y3R1cmU6OnB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1
cmU6OnB1dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewog
ICAgIEFTU0VSVCghcHJvcGVydHlOYW1lLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoZ2V0KHByb3Bl
cnR5TmFtZSkgPT0gbm90Rm91bmQpOworICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lKSA9PSBub3RGb3VuZCk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYg
KGF0dHJpYnV0ZXMgJiBEb250RW51bSkKQEAgLTc1OCw3ICs3NTgsNyBAQCBzaXplX3QgU3RydWN0
dXJlOjpwdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbAogICAgICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSAr
IG1fYW5vbnltb3VzU2xvdENvdW50OwogICAgIEFTU0VSVChuZXdPZmZzZXQgPj0gbV9hbm9ueW1v
dXNTbG90Q291bnQpOwogCi0gICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRy
eShyZXAsIG5ld09mZnNldCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOworICAgIG1fcHJv
cGVydHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgMCwgcmVwLCBuZXdP
ZmZzZXQsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVu
Y3koKTsKICAgICByZXR1cm4gbmV3T2Zmc2V0OwpAQCAtNzk4LDkgKzc5OCw5IEBAIHZvaWQgU3Ry
dWN0dXJlOjpjcmVhdGVQcm9wZXJ0eU1hcCh1bnNpZ25lZCBjYXBhY2l0eSkKICAgICBjaGVja0Nv
bnNpc3RlbmN5KCk7CiB9CiAKLXZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKFByb3Bl
cnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQg
U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
cGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewot
ICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlU
YWJsZSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCmluZGV4IDJkZjU2OTEzMWM1MjkwNmQwOWExY2Q2NDM3ZDNhYzYyZTMxMjg2MjEu
Ljk0YTA2YjJmOTY5ZjJlZDNmZjdkZGUwYmU2ZjExY2I4NDhkY2I4MTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCkBAIC03NiwxOCArNzYsMTggQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9w
ZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUsIHNpemVfdCYgb2Zmc2V0KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBhZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxs
KiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0
dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IGRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVu
dGlmaWVyJik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0
dGVyVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBzZWFsVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U3RydWN0dXJlPiBmcmVlemVUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqKTsKLQotICAgICAgICBib29sIGlzU2VhbGVkKCk7Ci0gICAgICAgIGJvb2wgaXNGcm96
ZW4oKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0
eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCBzaXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gY2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1
Y3R1cmUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlv
bmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9u
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHNlYWxUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAg
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZyZWV6ZVRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSop
OworCisgICAgICAgIGJvb2wgaXNTZWFsZWQoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIGJvb2wg
aXNGcm96ZW4oSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29u
c3QgeyByZXR1cm4gIW1fcHJldmVudEV4dGVuc2lvbnM7IH0KIAogICAgICAgICBQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNP
YmplY3QqKTsKQEAgLTk1LDggKzk1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5TdHJ1
Y3R1cmUoKTsKIAogICAgICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24u
ICAKLSAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpOwotICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlv
bihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgYWRkUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7
CisgICAgICAgIHNpemVfdCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0
UHJvdG90eXBlV2l0aG91dFRyYW5zaXRpb24oSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5
cGUgPSBwcm90b3R5cGU7IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkg
Y29uc3QgeyByZXR1cm4gbV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0K
QEAgLTEyMCwxMiArMTIwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBw
cm9wZXJ0eVN0b3JhZ2VTaXplKCkgY29uc3QgeyByZXR1cm4gbV9hbm9ueW1vdXNTbG90Q291bnQg
KyAobV9wcm9wZXJ0eVRhYmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXpl
KCkgOiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KICAgICAgICAgYm9v
bCBpc1VzaW5nSW5saW5lU3RvcmFnZSgpIGNvbnN0OwogCi0gICAgICAgIHNpemVfdCBnZXQoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChTdHJpbmdJ
bXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorICAgICAg
ICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSk7CisgICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Cisg
ICAgICAgIHNpemVfdCBnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZp
Y1ZhbHVlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051
bGwoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxEYXRh
LCBwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsg
cmV0dXJuIG1faGFzR2V0dGVyU2V0dGVyUHJvcGVydGllczsgfQpAQCAtMTM4LDEyICsxMzgsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25z
dCB7IHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6
IG1fb2Zmc2V0ID09IG5vT2Zmc2V0OyB9CiAKLSAgICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9u
YXJ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdm9p
ZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHlOYW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlv
blRyYWNraW5nKCkgeyBtX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNo
ZShKU0dsb2JhbERhdGEmLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hl
KTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgICAgIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGVudW1lcmF0aW9uQ2FjaGUoKTsgLy8gRGVmaW5lZCBpbiBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmguCi0gICAgICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhQcm9w
ZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlKTsKKyAgICAgICAgdm9pZCBnZXRQ
cm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRp
b25Nb2RlIG1vZGUpOwogCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29u
c3QgeyByZXR1cm4gbV9jbGFzc0luZm87IH0KIApAQCAtMTc4LDIzICsxNzgsMjMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9IDEsCiAgICAgICAg
ICAgICBVbmNhY2hlZERpY3Rpb25hcnlLaW5kID0gMgogICAgICAgICB9IERpY3Rpb25hcnlLaW5k
OwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5z
aXRpb24oU3RydWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOworICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKiwgRGljdGlvbmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXQoY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNp
ZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcHV0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlKTsKICAgICAgICAgc2l6ZV90IHJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUpOwogCiAgICAgICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291
bnQgPSAwKTsKICAgICAgICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICAgICAgYm9v
bCBkZXNwZWNpZnlGdW5jdGlvbihjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHZvaWQgZGVz
cGVjaWZ5QWxsRnVuY3Rpb25zKCk7CisgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oSlNH
bG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICB2b2lkIGRlc3BlY2lmeUFs
bEZ1bmN0aW9ucyhKU0dsb2JhbERhdGEmKTsKIAotICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5
UHJvcGVydHlUYWJsZSgpOwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsK
LSAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKQorICAgICAg
ICBQcm9wZXJ0eVRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2
b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlICYmIG1f
cHJldmlvdXMpCi0gICAgICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOworICAg
ICAgICAgICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoZ2xvYmFsRGF0YSk7CiAgICAgICAg
IH0KIAogICAgICAgICBzaWduZWQgY2hhciB0cmFuc2l0aW9uQ291bnQoKSBjb25zdApAQCAtMjUx
LDkgKzI1MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyA0IGZyZWUgYml0cwogICAg
IH07CiAKLSAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKKyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsK
LSAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYg
KCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhNjA1NGRkZWFlMmI5MDBlNDgxODk3YWExY2FmZWQyZDk3NDk3N2JhLi4xODEyNzYw
ZGFkNjIyMjNkNmU1ZDExN2VlNWRjYjIyMWU1NzdkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTEtMDQtMTIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFByb3BlcnR5
TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQwNworCisgICAgICAgIFBh
c3MgSlNHbG9iYWxEYXRhIHJlZmVyZW5jZSBvbiB0byBBUElzIHRoYXQgbm93IG5lZWQgdGhlbQor
CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01XaW5kb3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1
bWVudDo6YWxsKToKKwogMjAxMS0wNC0xMiAgRGllZ28gR29uemFsZXogIDxkaWVnb2hjZ0B3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2Vu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVs
bC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4
IDQzMDdjMWM0NjFiMGZmNDZiZjhhM2E3N2JhYjhlYzJlNTA0ZjliYjYuLjU3NWIyOTZjNDljZWNi
MzU4ZTE4NDgyY2Q2YjU4ZGMwZmZjY2RiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NV2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93KTsK
ICAgICAgICAgICAgIG1fd2luZG93LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cpOwotICAg
ICAgICAgICAgc2V0UHJvdG90eXBlKHdpbmRvdy0+cHJvdG90eXBlKCkpOworICAgICAgICAgICAg
c2V0UHJvdG90eXBlKGdsb2JhbERhdGEsIHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAgICB9
CiAgICAgICAgIHZvaWQgc2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApp
bmRleCAxOTJlZjVkYjg1MzNhZmFlMDRmM2JmMDkxMjk3YjA3ZGZkYTY0N2U3Li5jMzNmODU5ZmIy
MDU1NDE4MGIzOTk3MWVmMzdkNTZhNmZiYmEzZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04Niw3ICs4Niw3IEBA
IEpTVmFsdWUgSlNIVE1MRG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHNsb3RCYXNlLCBjb25zdCBJZGVuCiBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhl
Y1N0YXRlKiBleGVjKSBjb25zdAogewogICAgIC8vIElmICJhbGwiIGhhcyBiZWVuIG92ZXJ3cml0
dGVuLCByZXR1cm4gdGhlIG92ZXJ3cml0dGVuIHZhbHVlCi0gICAgSlNWYWx1ZSB2ID0gZ2V0RGly
ZWN0KElkZW50aWZpZXIoZXhlYywgImFsbCIpKTsKKyAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CiAgICAgaWYgKHYp
CiAgICAgICAgIHJldHVybiB2OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89381</attachid>
            <date>2011-04-13 08:34:36 -0700</date>
            <delta_ts>2011-04-13 10:09:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58407-20110413083427.patch</filename>
            <type>text/plain</type>
            <size>81118</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM2ODkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IDcwNjY4YmQyMzVlNWVkYmJhYjQzM2RlZTcwN2Q5NTYxMTJkNTY3Yjcu
LjA4ZGM3MjExYjJmMzAxNTM2ZTcxYTM2MDgxZTEwOWJiYzA0ZDZjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc0Ns
YXNzRGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVj
KSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsg
Ly8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNh
biBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpKQotICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFBy
b3RvdHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAganNDbGFz
c0RhdGEuY2FjaGVkUHJvdG90eXBlLT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBqc0NsYXNzRGF0YS5jYWNo
ZWRQcm90b3R5cGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZTVjNzc4ZjliYzUwYWQ5ODdlMTA3ZDU1MmI5NzkwZTQ4YjBmOTFlZS4uMTU4
YjI1NjI2ZDJhMTQ2MjY0YTUzYjljM2RiMDA3OTczN2NhMmMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5
cGUgPSBqc051bGwoKTsKLSAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHByb3RvdHlw
ZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSgqZ2xvYmFsRGF0YSwgcHJvdG90
eXBlKTsKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBi
NzAzMGU0YmE1ZmM5NWM4ODcxZTJlZjdlOTAzNWI3MmJiMWZmYzVjLi4yZGYwMTBhNTE4OWY3YzZl
ZDJjOWFlZjljMThlMzFmMzcwODk1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2Uo
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogCiAgICAg
SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+KiBvYmplY3QgPSBuZXcg
KGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CiAgICAgaWYgKEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCi0gICAgICAgIG9iamVj
dC0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKIAogICAgIHJldHVybiB0b1JlZihvYmpl
Y3QpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogCi0gICAganNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNs
ZUNoZWNrKGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7CisgICAganNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwganNW
YWx1ZS5pc09iamVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVj
dEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggMThmYTU2NWQx
YmY2M2E4NzMxMzEwYjE0YmQzMWRjYmUxNWRkMTU4Ny4uZWVlMDJiYjE4MTUxODhiZjk5NzI2Nzdj
MWU2MmM3MTI4YjE4OTU2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDExLTA0LTEyICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1h
cEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBNYWtl
IFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlLCBh
bmQgdGhlbgorICAgICAgICBwcm9wYWdhdGUgdGhlIHJlcXVpcmVkIEpTR2xvYmFsRGF0YSB0aHJv
dWdoIGFsbCB0aGUgbWV0aG9kcyBpdCBlbmRzCisgICAgICAgIHVwIGJlaW5nIG5lZWRlZC4KKwor
ICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnBy
b3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZSk6CisgICAgICAgIChKU09i
amVjdFNldFByb3RvdHlwZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Om5h
bWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZVNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6bG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3plbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAg
ICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KToKKwog
MjAxMS0wNC0xMiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmV4cAppbmRleCBkMjBjMmNiOWI5ZTNiZTFhNTJjMDZkMmYwYjRhNTdlZjc5
NGQ4YTgxLi41ZWMzM2Y2MjIxOGQ1Y2E2NzZjMmQzMzU5MDYzMDIwNWRiN2VlN2U4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTMxNiwxMiArMzE2LDEyIEBA
IF9fWk4zSlNDOU1hcmtTdGFjazE4aW5pdGlhbGl6ZVBhZ2VzaXplRXYKIF9fWk4zSlNDOVN0cnVj
dHVyZTE3c3RvcElnbm9yaW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMThzdGFydElnbm9y
aW5nTGVha3NFdgogX19aTjNKU0M5U3RydWN0dXJlMjFhZGRQcm9wZXJ0eVRyYW5zaXRpb25FUk5T
XzEySlNHbG9iYWxEYXRhRVBTMF9SS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFUm0KLV9f
Wk4zSlNDOVN0cnVjdHVyZTIybWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEV2Ci1fX1pOM0pTQzlTdHJ1
Y3R1cmUyNWNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25FUFMwX05TXzdKU1ZhbHVlRQotX19aTjNK
U0M5U3RydWN0dXJlMjdkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb25FUktOU18xMElkZW50aWZp
ZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVQUzBf
UktOU18xMElkZW50aWZpZXJFCi1fX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5V2l0aG91
dFRyYW5zaXRpb25FUktOU18xMElkZW50aWZpZXJFalBOU182SlNDZWxsRQotX19aTjNKU0M5U3Ry
dWN0dXJlM2dldEVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlT
dHJ1Y3R1cmUyMm1hdGVyaWFsaXplUHJvcGVydHlNYXBFUk5TXzEySlNHbG9iYWxEYXRhRQorX19a
TjNKU0M5U3RydWN0dXJlMjVjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFs
RGF0YUVQUzBfTlNfN0pTVmFsdWVFCitfX1pOM0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeURpY3Rp
b25hcnlGdW5jdGlvbkVSTlNfMTJKU0dsb2JhbERhdGFFUktOU18xMElkZW50aWZpZXJFCitfX1pO
M0pTQzlTdHJ1Y3R1cmUyN2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkVSTlNfMTJKU0dsb2Jh
bERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRQorX19aTjNKU0M5U3RydWN0dXJlMjhhZGRQcm9w
ZXJ0eVdpdGhvdXRUcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmll
ckVqUE5TXzZKU0NlbGxFCitfX1pOM0pTQzlTdHJ1Y3R1cmUzZ2V0RVJOU18xMkpTR2xvYmFsRGF0
YUVQTjNXVEYxMFN0cmluZ0ltcGxFUmpSUE5TXzZKU0NlbGxFCiBfX1pOM0pTQzlTdHJ1Y3R1cmU0
MGFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmVFUFMwX1JLTlNfMTBJZGVu
dGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQogX19aTjNKU0M5U3RydWN0dXJlQzFFTlNfN0pTVmFsdWVF
UktOU184VHlwZUluZm9FalBLTlNfOUNsYXNzSW5mb0UKIF9fWk4zSlNDOVN0cnVjdHVyZUQxRXYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZGVmIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYK
aW5kZXggN2VhOTU4YzQzNWY2MmM5MWU4NWQzOTY3YmZhOTM4YzU2NjFkNDFmZC4uODQ1MDBiYTA0
N2IzZWUzOTFiNTZkMjI3YzkyZjM3MWY0MTM3YzEyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5kZWYKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYKQEAgLTU0LDcgKzU0LDcgQEAgRVhQ
T1JUUwogICAgID9hZGRDdXJyZW50VGhyZWFkQE1hY2hpbmVUaHJlYWRzQEpTQ0BAUUFFWFhaCiAg
ICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0
ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRp
ZmllckAyQElQQVZKU0NlbGxAMkBBQUlAWgogICAgID9hZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4
aXN0aW5nU3RydWN0dXJlQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1Y3R1
cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJASVBBVkpTQ2VsbEAyQEFBSUBaCi0g
ICAgP2FkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAUUFFSUFCVklk
ZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQFoKKyAgICA/YWRkUHJvcGVydHlXaXRob3V0VHJhbnNp
dGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAy
QElQQVZKU0NlbGxAMkBAWgogICAgID9hZGRTbG93Q2FzZUBJZGVudGlmaWVyQEpTQ0BAQ0E/QVY/
JFBhc3NSZWZQdHJAVlN0cmluZ0ltcGxAV1RGQEBAV1RGQEBQQVZFeGVjU3RhdGVAMkBQQVZTdHJp
bmdJbXBsQDRAQFoKICAgICA/YWxsb2NhdGVASGVhcEBKU0NAQFFBRVBBWElAWgogICAgID9hbGxv
Y2F0ZUZyb21TaXplQ2xhc3NATWFya2VkU3BhY2VASlNDQEBBQUVQQVhBQVVTaXplQ2xhc3NAMTJA
QFoKQEAgLTc4LDcgKzc4LDYgQEAgRVhQT1JUUwogICAgID9jYWxsT25NYWluVGhyZWFkQW5kV2Fp
dEBXVEZAQFlBWFA2QVhQQVhAWjBAWgogICAgID9jYW5jZWxDYWxsT25NYWluVGhyZWFkQFdURkBA
WUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhcGFjaXR5QEhlYXBASlNDQEBRQkVJWFoKLSAgICA/Y2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBW
U3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAVkpTVmFsdWVAMkBAWgogICAgID9jaGVja0N1cnJl
bnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NAQENBWFBBVkV4ZWNTdGF0ZUAyQEBaCiAg
ICAgP2NoZWNrQ3VycmVudElkZW50aWZpZXJUYWJsZUBJZGVudGlmaWVyQEpTQ0BAQ0FYUEFWSlNH
bG9iYWxEYXRhQDJAQFoKICAgICA/Y2hlY2tTeW50YXhASlNDQEBZQT9BVkNvbXBsZXRpb25AMUBQ
QVZFeGVjU3RhdGVAMUBBQlZTb3VyY2VDb2RlQDFAQFoKQEAgLTE0Myw4ICsxNDIsNyBAQCBFWFBP
UlRTCiAgICAgP2RlbGV0ZVByb3BlcnR5QEpTVmFyaWFibGVPYmplY3RASlNDQEBVQUVfTlBBVkV4
ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9kZWxldGVQcm9wZXJ0eUBTdHJpbmdP
YmplY3RASlNDQEBVQUVfTlBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBAWgogICAgID9k
ZWxldGVUYWJsZUBIYXNoVGFibGVASlNDQEBRQkVYWFoKLSAgICA/ZGVzcGVjaWZ5RGljdGlvbmFy
eUZ1bmN0aW9uQFN0cnVjdHVyZUBKU0NAQFFBRVhBQlZJZGVudGlmaWVyQDJAQFoKLSAgICA/ZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRy
QFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBBQlZJZGVudGlmaWVyQDJAQFoKKyAgICA/ZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRy
QFZTdHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlm
aWVyQDJAQFoKICAgICA/ZGVzdHJveUBIZWFwQEpTQ0BAUUFFWFhaCiAgICAgP2RldGFjaEBEZWJ1
Z2dlckBKU0NAQFVBRVhQQVZKU0dsb2JhbE9iamVjdEAyQEBaCiAgICAgP2RldGFjaFRocmVhZEBX
VEZAQFlBWElAWgpAQCAtMTcyLDcgKzE3MCw2IEBAIEVYUE9SVFMKICAgICA/ZnJvbUBJZGVudGlm
aWVyQEpTQ0BAU0E/QVYxMkBQQVZFeGVjU3RhdGVAMkBJQFoKICAgICA/ZnVuY3Rpb25HZXR0ZXJA
UHJvcGVydHlTbG90QEpTQ0BAQUJFP0FWSlNWYWx1ZUAyQFBBVkV4ZWNTdGF0ZUAyQEBaCiAgICAg
P2Z1bmN0aW9uTmFtZUBEZWJ1Z2dlckNhbGxGcmFtZUBKU0NAQFFCRVBCVlVTdHJpbmdAMkBYWgot
ICAgID9nZXRAU3RydWN0dXJlQEpTQ0BAUUFFSVBBVlN0cmluZ0ltcGxAV1RGQEBBQUlBQVBBVkpT
Q2VsbEAyQEBaCiAgICAgP2dldENhbGxEYXRhQEpTQ2VsbEBKU0NAQFVBRT9BVzRDYWxsVHlwZUAy
QEFBVENhbGxEYXRhQDJAQFoKICAgICA/Z2V0Q29uc3RydWN0RGF0YUBKU0NlbGxASlNDQEBVQUU/
QVc0Q29uc3RydWN0VHlwZUAyQEFBVENvbnN0cnVjdERhdGFAMkBAWgogICAgID9nZXRKU051bWJl
ckBKU0NlbGxASlNDQEBVQUU/QVZKU1ZhbHVlQDJAWFoKQEAgLTIzOSw3ICsyMzYsNyBAQCBFWFBP
UlRTCiAgICAgP21hcmtDaGlsZHJlbkBKU09iamVjdEBKU0NAQFVBRVhBQVZNYXJrU3RhY2tAMkBA
WgogICAgID9tYXJrQ2hpbGRyZW5ASlNXcmFwcGVyT2JqZWN0QEpTQ0BARUFFWEFBVk1hcmtTdGFj
a0AyQEBaCiAgICAgP21hcmtDaGlsZHJlbkBTY29wZUNoYWluTm9kZUBKU0NAQFVBRVhBQVZNYXJr
U3RhY2tAMkBAWgotICAgID9tYXRlcmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFB
RVhYWgorICAgID9tYXRlcmlhbGl6ZVByb3BlcnR5TWFwQFN0cnVjdHVyZUBKU0NAQEFBRVhBQVZK
U0dsb2JhbERhdGFAMkBAWgogICAgID9tb250aEZyb21EYXlJblllYXJAV1RGQEBZQUhIX05AWgog
ICAgID9tc1RvWWVhckBXVEZAQFlBSE5AWgogICAgID9uYW1lQEludGVybmFsRnVuY3Rpb25ASlND
QEBRQUVBQlZVU3RyaW5nQDJAUEFWRXhlY1N0YXRlQDJAQFoKQEAgLTI2Nyw2ICsyNjQsNyBAQCBF
WFBPUlRTCiAgICAgP3B1dEBTdHJpbmdPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUJW
SWRlbnRpZmllckAyQFZKU1ZhbHVlQDJAQUFWUHV0UHJvcGVydHlTbG90QDJAQFoKICAgICA/cHV0
RGlyZWN0RnVuY3Rpb25ASlNPYmplY3RASlNDQEBRQUVYUEFWRXhlY1N0YXRlQDJAUEFWSW50ZXJu
YWxGdW5jdGlvbkAyQElAWgogICAgID9wdXREaXJlY3RGdW5jdGlvbkBKU09iamVjdEBKU0NAQFFB
RVhQQVZFeGVjU3RhdGVAMkBQQVZKU0Z1bmN0aW9uQDJASUBaCisgICAgP3B1dERpcmVjdEludGVy
bmFsQEpTT2JqZWN0QEpTQ0BAQUFFX05BQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJA
VkpTVmFsdWVAMkBJX05BQVZQdXRQcm9wZXJ0eVNsb3RAMkBQQVZKU0NlbGxAMkBAWgogICAgID9w
dXRXaXRoQXR0cmlidXRlc0BKU0dsb2JhbE9iamVjdEBKU0NAQFVBRVhQQVZFeGVjU3RhdGVAMkBB
QlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cHV0V2l0aEF0dHJpYnV0ZXNASlNP
YmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAyQFZKU1ZhbHVlQDJA
SUBaCiAgICAgP3B1dFdpdGhBdHRyaWJ1dGVzQEpTT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0
ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQElfTkFBVlB1dFByb3BlcnR5U2xvdEAyQEBa
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCmluZGV4IGYyNjhiZWYwMDMzODQ5MDJjNjFjNGM2OGViZTA1YmRjMjg2
MmEyZDkuLjgzZTQ1OTIzMWEwZmMwMDMyMmI4MjEwNGViZjQ1NjYyNzYyOTBjNTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCkBAIC0yNjIsNyArMjYyLDcgQEAgQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2Rl
R2VuZXJhdG9yKFByb2dyYW1Ob2RlKiBwcm9ncmFtTm9kZSwgU2NvcGVDaGFpbk5vZGUqIHMKICAg
ICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIGJvb2w+LCAxNj4gZnVuY3Rpb25JbmZvKGZ1bmN0
aW9uU3RhY2suc2l6ZSgpKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlv
blN0YWNrLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5j
dGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgICAgICBnbG9iYWxPYmplY3QtPnJlbW92
ZURpcmVjdChmdW5jdGlvbi0+aWRlbnQoKSk7IC8vIE1ha2Ugc3VyZSBvdXIgbmV3IGZ1bmN0aW9u
IGlzIG5vdCBzaGFkb3dlZCBieSBhbiBvbGQgcHJvcGVydHkuCisgICAgICAgICAgICBnbG9iYWxP
YmplY3QtPnJlbW92ZURpcmVjdCgqbV9nbG9iYWxEYXRhLCBmdW5jdGlvbi0+aWRlbnQoKSk7IC8v
IE1ha2Ugc3VyZSBvdXIgbmV3IGZ1bmN0aW9uIGlzIG5vdCBzaGFkb3dlZCBieSBhbiBvbGQgcHJv
cGVydHkuCiAgICAgICAgICAgICBTeW1ib2xUYWJsZUVudHJ5IGVudHJ5ID0gc3ltYm9sVGFibGUt
PmlubGluZUdldChmdW5jdGlvbi0+aWRlbnQoKS5pbXBsKCkpOwogICAgICAgICAgICAgCiAgICAg
ICAgICAgICBpZiAoZW50cnkuaXNOdWxsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA2NzAyNDA0M2M2M2VjMzhiOTk5Yjgz
YzZlYjRiNmJmYzNkMDEyNDZjLi5kNzljNTgxZTM2MTcxZjRjY2NmYWQ1N2JjMzNiZDUzNjU3MjQ5
NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAKQEAgLTYyMCw3ICs2MjAsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRTb3VyY2VUb0Vy
cm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBFcnJvckluc3RhbmNlKiBleGNlcHRpb24sCiAgICAg
ICAgIHJldHVybjsKIAogICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKTsKLSAgICBKU1ZhbHVlIGpzTWVzc2FnZSA9IGV4Y2VwdGlvbi0+Z2V0RGly
ZWN0KGdsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPm1lc3NhZ2UpOworICAgIEpTVmFsdWUganNN
ZXNzYWdlID0gZXhjZXB0aW9uLT5nZXREaXJlY3QoKmdsb2JhbERhdGEsIGdsb2JhbERhdGEtPnBy
b3BlcnR5TmFtZXMtPm1lc3NhZ2UpOwogICAgIGlmICghanNNZXNzYWdlIHx8ICFqc01lc3NhZ2Uu
aXNTdHJpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBJbnRlcnByZXRlcjo6dHJ5Q2FjaGVHZXRCeUlEKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBDb2RlQmxvY2sqCiAgICAgICAgIC8vIHNob3VsZCBub3QgYmUgdHJlYXRlZCBhcyBh
IGRpY3Rpb25hcnkuCiAgICAgICAgIGlmIChiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0
aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIGJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2Jq
ZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG9mZnNldCA9IGJhc2VP
YmplY3QtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIG9mZnNl
dCA9IGJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KIAogICAgICAgICBBU1NFUlQoIWJhc2VPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKQEAgLTMwNzksNyArMzA3
OSw3IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUg
PSB2UENbM10udS5vcGVyYW5kOwogICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQ
Q1s3XS51Lm9wZXJhbmQ7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNl
dEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRl
bnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVj
dExvY2F0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
dlBDWzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGJhc2VPYmpl
Y3QtPnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgb2Zmc2V0LCBjYWxs
RnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICB2UEMgKz0gT1BD
T0RFX0xFTkdUSChvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbik7CkBAIC0zMTE0LDcgKzMxMTQsNyBA
QCBza2lwX2lkX2N1c3RvbV9zZWxmOgogICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IHZQQ1sz
XS51Lm9wZXJhbmQ7CiAgICAgICAgICAgICAgICAgdW5zaWduZWQgb2Zmc2V0ID0gdlBDWzVdLnUu
b3BlcmFuZDsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBBU1NFUlQoYmFzZU9i
amVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVjdC0+Z2V0RGlyZWN0TG9jYXRpb24oY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJhbmQpKSkgPT0gb2Zmc2V0KTsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoYmFzZU9iamVjdC0+b2Zmc2V0Rm9yTG9jYXRpb24oYmFzZU9iamVj
dC0+Z2V0RGlyZWN0TG9jYXRpb24oY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
aWRlbnRpZmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CiAgICAgICAgICAgICAg
ICAgYmFzZU9iamVjdC0+cHV0RGlyZWN0T2Zmc2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBv
ZmZzZXQsIGNhbGxGcmFtZS0+cih2YWx1ZSkuanNWYWx1ZSgpKTsKIAogICAgICAgICAgICAgICAg
IHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1dF9ieV9pZF9yZXBsYWNlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXggOTIyYmQ1OTY0M2RhM2ZmMWIwYjZiNzY0ZmFh
ZjlmZjNiZjA4NDQ4Yi4uZmUyNmRjYWExNjMyYjQ2N2MxZjE4Y2Y3MzRmNjNmMTBjYWQ1M2Y2MCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKQEAgLTkxOSw3ICs5MTksNyBA
QCBORVZFUl9JTkxJTkUgdm9pZCBKSVRUaHVua3M6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgQ29kZUJsb2NrKiBjbwogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0
ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAoc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVy
ZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICAgICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0
ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKLSAgICAgICAgICAg
IG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7
CisgICAgICAgICAgICBvZmZzZXQgPSBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChj
YWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgc3R1YkluZm8tPmluaXRHZXRCeUlkUHJvdG8oc3RydWN0dXJlLCBzbG90QmFz
ZU9iamVjdC0+c3RydWN0dXJlKCkpOwpAQCAtMTc0NCw3ICsxNzQ0LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04oRW5jb2RlZEpTVmFsdWUsIG9wX2dldF9ieV9pZF9wcm90b19saXN0KQogICAgICAg
ICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5LgogICAgICAgICBpZiAo
c2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICAg
ICAgc2xvdEJhc2VPYmplY3QtPmZsYXR0ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpKTsKLSAgICAgICAgICAgIG9mZnNldCA9IHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZzZXQgPSBzbG90QmFzZU9i
amVjdC0+c3RydWN0dXJlKCktPmdldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIGludCBsaXN0SW5kZXg7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6
ZXIuaAppbmRleCAwZjZhNjQ2NTRkOGQzYjJjMGUzMWFkMjFhZGE3ZjI4MjQzODBmMzdjLi5lZGVl
YzU3NTZhMWQzZGEyMWNmYmFlYmFiOGY5ODg2NzM4MjgxNjlmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
LmgKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAsIG1fb2Jq
ZWN0KG9iamVjdCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX29iamVjdC0+c3RydWN0
dXJlKCktPmlzRGljdGlvbmFyeSgpKQotICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTdHJ1
Y3R1cmUoU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKG1fb2JqZWN0
LT5zdHJ1Y3R1cmUoKSkpOworICAgICAgICAgICAgICAgIG1fb2JqZWN0LT5zZXRTdHJ1Y3R1cmUo
U3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1f
b2JqZWN0LT5zdHJ1Y3R1cmUoKSkpOwogICAgICAgICB9CiAKICAgICAgICAgfkJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHAKaW5kZXggMjcxMDZhMTg0ZTZmMDIyYmFkZTMyYjhlZTNkNWRk
YjQyMDgyY2YxYi4uNjA5MTgzMWE1ZmE4MGIwNjE1MDczYmZlNjk1MjliMDlkMWUzZjUwYyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAKQEAgLTUxLDEyICs1MSwxMiBAQCBJbnRlcm5hbEZ1bmN0aW9uOjpJbnRlcm5hbEZ1bmN0aW9u
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgSlNHbG9iYWxPYmplY3QqIGdsbwogCiBjb25zdCBV
U3RyaW5nJiBJbnRlcm5hbEZ1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBy
ZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVz
LT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CisgICAgcmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5uYW1l
KSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNvbnN0IFVTdHJpbmcgSW50ZXJuYWxGdW5jdGlvbjo6
ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgZGlzcGxheU5hbWUg
PSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1l
KTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1lKTsKICAgICAK
ICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFsRGF0YSgpLCBk
aXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNwbGF5TmFtZSktPnRyeUdl
dFZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fj
dGl2YXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmNwcAppbmRleCBkMGM1MGRkNjc0YTRhODI3MTcwMzJlMDIxM2Q2MjAwYjc4NzAzNzUxLi44M2I2
YTFjMTJjNGM4ZGQ1ZGU5MGUwNDc3MzUyMTA4MzU5NDcwYjhjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBi
b29sIEpTQWN0aXZhdGlvbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydAogICAgIGlmIChzeW1ib2xUYWJsZUdldChwcm9wZXJ0eU5h
bWUsIHNsb3QpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChXcml0ZUJhcnJpZXJC
YXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSkp
IHsKKyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJl
Y3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAg
c2xvdC5zZXRWYWx1ZShsb2NhdGlvbi0+Z2V0KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4
IGRiZmM2MDY1NWUyYzMzY2ZlMDVlYmRhNjc0NDZmNzk2ZTcyMDAzNGMuLmI4ZTQ5OWI2ODc5Y2Iz
YmUxMWU5YzU3NzIxYmU5NGVhYzVlMDdlYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0xMTIsMTIgKzExMiwxMiBAQCBzdGF0aWMgdm9pZCBj
cmVhdGVEZXNjcmlwdG9yRm9yVGhyb3dpbmdQcm9wZXJ0eShFeGVjU3RhdGUqIGV4ZWMsIFByb3Bl
cnR5RGVzY3JpcAogCiBjb25zdCBVU3RyaW5nJiBKU0Z1bmN0aW9uOjpuYW1lKEV4ZWNTdGF0ZSog
ZXhlYykKIHsKLSAgICByZXR1cm4gYXNTdHJpbmcoZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KS5wcm9wZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CisgICAgcmV0dXJuIGFzU3Ry
aW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lKSktPnRyeUdldFZhbHVlKCk7CiB9CiAKIGNvbnN0IFVTdHJpbmcgSlNG
dW5jdGlvbjo6ZGlzcGxheU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgZGlz
cGxheU5hbWUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRp
c3BsYXlOYW1lKTsKKyAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+Z2xvYmFsRGF0YSgpLnByb3BlcnR5TmFtZXMtPmRpc3BsYXlOYW1l
KTsKICAgICAKICAgICBpZiAoZGlzcGxheU5hbWUgJiYgaXNKU1N0cmluZygmZXhlYy0+Z2xvYmFs
RGF0YSgpLCBkaXNwbGF5TmFtZSkpCiAgICAgICAgIHJldHVybiBhc1N0cmluZyhkaXNwbGF5TmFt
ZSktPnRyeUdldFZhbHVlKCk7CkBAIC0xODYsMTMgKzE4NiwxMyBAQCBib29sIEpTRnVuY3Rpb246
OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TgogICAgICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90KGV4ZWMsIHBy
b3BlcnR5TmFtZSwgc2xvdCk7CiAKICAgICBpZiAocHJvcGVydHlOYW1lID09IGV4ZWMtPnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUpIHsKLSAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOworICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICBpZiAoIWxvY2F0aW9u
KSB7CiAgICAgICAgICAgICBKU09iamVjdCogcHJvdG90eXBlID0gY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgc2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpKTsK
ICAgICAgICAgICAgIHByb3RvdHlwZS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+cHJvcGVydHlOYW1lcygpLmNvbnN0cnVjdG9yLCB0aGlzLCBEb250RW51bSk7CiAgICAgICAg
ICAgICBwdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5wcm9wZXJ0eU5hbWVzKCku
cHJvdG90eXBlLCBwcm90b3R5cGUsIERvbnREZWxldGUgfCBEb250RW51bSk7Ci0gICAgICAgICAg
ICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgICAgICAg
ICBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lKTsKICAgICAgICAgfQogCiAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpcywgbG9jYXRp
b24tPmdldCgpLCBvZmZzZXRGb3JMb2NhdGlvbihsb2NhdGlvbikpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDQxMTA4YzQ2ZTk2
NTE2N2IwMGI4ZGFhMjBhZTdjZjI2MTNmMWEwMTkuLjg0Yzg1YWU3YWNmODJmY2JhOTM3ZDQ1ZDdi
MmFlZDczMzNlZjY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTEzNywxMSArMTM3LDExIEBAIHZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVyCiAgICAgaWYgKHN5bWJvbFRhYmxlUHV0V2l0aEF0dHJpYnV0ZXMoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBhdHRyaWJ1dGVzKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgSlNWYWx1ZSB2YWx1ZUJlZm9yZSA9IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOwor
ICAgIEpTVmFsdWUgdmFsdWVCZWZvcmUgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90OwogICAgIEpTVmFyaWFibGVP
YmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBzbG90KTsKICAgICBpZiAoIXZh
bHVlQmVmb3JlKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWVBZnRlciA9IGdldERpcmVjdChwcm9w
ZXJ0eU5hbWUpOworICAgICAgICBKU1ZhbHVlIHZhbHVlQWZ0ZXIgPSBnZXREaXJlY3QoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICBpZiAodmFsdWVBZnRlcikKICAg
ICAgICAgICAgIEpTT2JqZWN0OjpwdXRXaXRoQXR0cmlidXRlcyhleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlQWZ0ZXIsIGF0dHJpYnV0ZXMpOwogICAgIH0KQEAgLTI5OSwxOCArMjk5LDE4IEBAIHZv
aWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHB1dERpcmVj
dEZ1bmN0aW9uV2l0aG91dFRyYW5zaXRpb24oZXhlYywgbmV3IChleGVjKSBKU0Z1bmN0aW9uKGV4
ZWMsIHRoaXMsIG1fZnVuY3Rpb25TdHJ1Y3R1cmUuZ2V0KCksIDEsIElkZW50aWZpZXIoZXhlYywg
ImpzY3ByaW50IiksIGdsb2JhbEZ1bmNKU0NQcmludCksIERvbnRFbnVtKTsKICNlbmRpZgogCi0g
ICAgcmVzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAgICByZXNldFByb3RvdHlwZShleGVjLT5n
bG9iYWxEYXRhKCksIHByb3RvdHlwZSk7CiB9CiAKIC8vIFNldCBwcm90b3R5cGUsIGFuZCBhbHNv
IGluc2VydCB0aGUgb2JqZWN0IHByb3RvdHlwZSBhdCB0aGUgZW5kIG9mIHRoZSBjaGFpbi4KLXZv
aWQgSlNHbG9iYWxPYmplY3Q6OnJlc2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKQordm9p
ZCBKU0dsb2JhbE9iamVjdDo6cmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKLSAgICBzZXRQcm90b3R5cGUocHJvdG90eXBlKTsKKyAg
ICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlKTsKIAogICAgIEpTT2JqZWN0KiBv
bGRMYXN0SW5Qcm90b3R5cGVDaGFpbiA9IGxhc3RJblByb3RvdHlwZUNoYWluKHRoaXMpOwogICAg
IEpTT2JqZWN0KiBvYmplY3RQcm90b3R5cGUgPSBtX29iamVjdFByb3RvdHlwZS5nZXQoKTsKICAg
ICBpZiAob2xkTGFzdEluUHJvdG90eXBlQ2hhaW4gIT0gb2JqZWN0UHJvdG90eXBlKQotICAgICAg
ICBvbGRMYXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBlKG9iamVjdFByb3RvdHlwZSk7
CisgICAgICAgIG9sZExhc3RJblByb3RvdHlwZUNoYWluLT5zZXRQcm90b3R5cGUoZ2xvYmFsRGF0
YSwgb2JqZWN0UHJvdG90eXBlKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxk
cmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMDBlZjVjYjhiYTgwZDljM2QzZTBiOGVhZWM5MjNm
Y2Q3Y2QyMDA2Ni4uMzAwZjRiMDQ5ODU4OTY1ZTNjMTI5MGZmMTNhMTQ3YjNkOGI0MDU3NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0y
MzUsNyArMjM1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29weUdsb2JhbHNU
byhSZWdpc3RlckZpbGUmKTsKICAgICAgICAgdm9pZCByZXNpemVSZWdpc3RlcnMoaW50IG9sZFNp
emUsIGludCBuZXdTaXplKTsKIAotICAgICAgICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTVmFsdWUg
cHJvdG90eXBlKTsKKyAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmLCBK
U1ZhbHVlIHByb3RvdHlwZSk7CiAKICAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKCkg
Y29uc3QgeyByZXR1cm4gKm1fZ2xvYmFsRGF0YS5nZXQoKTsgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggYjMwNzU0MDc5Y2I5NDRiM2FhNjA2M2Y5
NThiNWIzMDBhNGI2NTFhNC4uYWI0NzJkNDY5MzdkODNmMjgzOTgxMWFkYmI3YTA5MGNiMWI0ZmRh
MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTA5
LDcgKzEwOSw3IEBAIHZvaWQgSlNPYmplY3Q6OnB1dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1CiAgICAgICAgIC8vIFNldHRpbmcg
X19wcm90b19fIHRvIGEgbm9uLW9iamVjdCwgbm9uLW51bGwgdmFsdWUgaXMgc2lsZW50bHkgaWdu
b3JlZCB0byBtYXRjaCBNb3ppbGxhLgogICAgICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgJiYg
IXZhbHVlLmlzTnVsbCgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBpZiAoIXNldFBy
b3RvdHlwZVdpdGhDeWNsZUNoZWNrKHZhbHVlKSkKKyAgICAgICAgaWYgKCFzZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhleGVjLT5nbG9iYWxEYXRhKCksIHZhbHVlKSkKICAgICAgICAgICAgIHRo
cm93RXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUi
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMjcsMTQgKzEyNywxNCBAQCB2b2lkIEpT
T2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUgdmFsdQogICAgIAogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlND
ZWxsKiBzcGVjaWZpY1ZhbHVlOwotICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5h
bWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpICYmIGF0dHJp
YnV0ZXMgJiBSZWFkT25seSkgeworICAgIGlmICgobV9zdHJ1Y3R1cmUtPmdldChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkgIT0gV1RG
Ojpub3RGb3VuZCkgJiYgYXR0cmlidXRlcyAmIFJlYWRPbmx5KSB7CiAgICAgICAgIGlmIChzbG90
LmlzU3RyaWN0TW9kZSgpKQogICAgICAgICAgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgU3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKEpTT2JqZWN0KiBvYmogPSB0aGlzOyA7IG9i
aiA9IGFzT2JqZWN0KHByb3RvdHlwZSkpIHsKLSAgICAgICAgaWYgKEpTVmFsdWUgZ3MgPSBvYmot
PmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIGdzID0gb2Jq
LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAg
ICAgICBpZiAoZ3MuaXNHZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICAgICAgICAgIEpTT2JqZWN0
KiBzZXR0ZXJGdW5jID0gYXNHZXR0ZXJTZXR0ZXIoZ3MpLT5zZXR0ZXIoKTsgICAgICAgIAogICAg
ICAgICAgICAgICAgIGlmICghc2V0dGVyRnVuYykgewpAQCAtMjE4LDEwICsyMTgsMTAgQEAgYm9v
bCBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKICAgICBKU0Nl
bGwqIHNwZWNpZmljVmFsdWU7Ci0gICAgaWYgKG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1l
LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSB7CisgICAgaWYg
KG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpIHsKICAgICAgICAgaWYgKChh
dHRyaWJ1dGVzICYgRG9udERlbGV0ZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIHJlbW92ZURpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgICAgICByZW1vdmVEaXJlY3QoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKQEAgLTMxMiwzNCArMzEyLDM1IEBAIGNvbnN0IEhhc2hFbnRyeSogSlNPYmplY3Q6OmZp
bmRQcm9wZXJ0eUhhc2hFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpCiAKIHZv
aWQgSlNPYmplY3Q6OmRlZmluZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIGdldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBhdHRy
aWJ1dGVzKQogewotICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7
CisgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUpOwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkp
OwogICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBnZXR0ZXJGdW5jdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAgICAgUHV0UHJv
cGVydHlTbG90IHNsb3Q7CiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBuZXcgKGV4
ZWMpIEdldHRlclNldHRlcihleGVjKTsKLSAgICBwdXREaXJlY3RJbnRlcm5hbChleGVjLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSwgZ2V0dGVyU2V0dGVyLCBhdHRyaWJ1dGVzIHwgR2V0dGVy
LCB0cnVlLCBzbG90KTsKKyAgICBwdXREaXJlY3RJbnRlcm5hbChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEdldHRlciwgdHJ1ZSwgc2xvdCk7CiAK
ICAgICAvLyBwdXREaXJlY3Qgd2lsbCBjaGFuZ2Ugb3VyIFN0cnVjdHVyZSBpZiB3ZSBhZGQgYSBu
ZXcgcHJvcGVydHkuIEZvcgogICAgIC8vIGdldHRlcnMgYW5kIHNldHRlcnMsIHRob3VnaCwgd2Ug
YWxzbyBuZWVkIHRvIGNoYW5nZSBvdXIgU3RydWN0dXJlCiAgICAgLy8gaWYgd2Ugb3ZlcnJpZGUg
YW4gZXhpc3Rpbmcgbm9uLWdldHRlciBvciBub24tc2V0dGVyLgogICAgIGlmIChzbG90LnR5cGUo
KSAhPSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CiAgICAgICAgIGlmICghbV9zdHJ1
Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiBz
dHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24obV9zdHJ1Y3R1cmUp
OworICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKTsKICAgICAgICAg
ICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAgIH0K
IAogICAgIG1fc3RydWN0dXJlLT5zZXRIYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKHRydWUpOwot
ICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVyRnVu
Y3Rpb24pOworICAgIGdldHRlclNldHRlci0+c2V0R2V0dGVyKGdsb2JhbERhdGEsIGdldHRlckZ1
bmN0aW9uKTsKIH0KIAogdm9pZCBKU09iamVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU09iamVjdCogc2V0dGVyRnVuY3Rp
b24sIHVuc2lnbmVkIGF0dHJpYnV0ZXMpCiB7Ci0gICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJl
Y3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIG9iamVjdCA9IGdldERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgaWYgKG9iamVjdCAmJiBvYmplY3QuaXNH
ZXR0ZXJTZXR0ZXIoKSkgewogICAgICAgICBBU1NFUlQobV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNl
dHRlclByb3BlcnRpZXMoKSk7CiAgICAgICAgIGFzR2V0dGVyU2V0dGVyKG9iamVjdCktPnNldFNl
dHRlcihleGVjLT5nbG9iYWxEYXRhKCksIHNldHRlckZ1bmN0aW9uKTsKQEAgLTM1NSw3ICszNTYs
NyBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4
aXN0aW5nIG5vbi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewogICAgICAgICBpZiAoIW1fc3RydWN0dXJl
LT5pc0RpY3Rpb25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0
dXJlID0gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKG1fc3RydWN0dXJlKTsKKyAg
ICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Z2V0dGVy
U2V0dGVyVHJhbnNpdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fc3RydWN0dXJlKTsKICAgICAg
ICAgICAgIHNldFN0cnVjdHVyZShzdHJ1Y3R1cmUucmVsZWFzZSgpKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTM2NCwxMSArMzY1LDExIEBAIHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPCiAgICAgZ2V0
dGVyU2V0dGVyLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7
CiB9CiAKLUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAg
SlNPYmplY3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYg
KEpTVmFsdWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CisgICAg
ICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzR2V0dGVyU2V0
dGVyKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAg
ICBKU09iamVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRlcih2YWx1ZSktPmdldHRl
cigpOwpAQCAtMzgzLDExICszODQsMTEgQEAgSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwR2V0dGVy
KEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB9CiB9CiAK
LUpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cFNldHRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCitKU1ZhbHVlIEpTT2JqZWN0Ojpsb29rdXBTZXR0ZXIoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IHRoaXM7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgaWYgKEpTVmFs
dWUgdmFsdWUgPSBvYmplY3QtPmdldERpcmVjdChwcm9wZXJ0eU5hbWUpKSB7CisgICAgICAgIGlm
IChKU1ZhbHVlIHZhbHVlID0gb2JqZWN0LT5nZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzR2V0dGVyU2V0dGVyKCkp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgICAgICBKU09i
amVjdCogZnVuY3Rpb25PYmplY3QgPSBhc0dldHRlclNldHRlcih2YWx1ZSktPnNldHRlcigpOwpA
QCAtNDI4LDEwICs0MjksMTAgQEAgYm9vbCBKU09iamVjdDo6cHJvcGVydHlJc0VudW1lcmFibGUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4KICAgICByZXR1cm4g
ZGVzY3JpcHRvci5lbnVtZXJhYmxlKCk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OmdldFByb3BlcnR5
U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0Citib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0
eVNwZWNpZmljVmFsdWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpIGNvbnN0CiB7CiAgICAgdW5zaWduZWQgYXR0
cmlidXRlczsKLSAgICBpZiAobV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCisgICAgaWYgKG1fc3RydWN0dXJl
LT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNp
ZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAg
Ly8gVGhpcyBjb3VsZCBiZSBhIGZ1bmN0aW9uIHdpdGhpbiB0aGUgc3RhdGljIHRhYmxlPyAtIHNo
b3VsZCBwcm9iYWJseQpAQCAtNDY0LDcgKzQ2NSw3IEBAIHZvaWQgSlNPYmplY3Q6OmdldFByb3Bl
cnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1l
CiAKIHZvaWQgSlNPYmplY3Q6OmdldE93blByb3BlcnR5TmFtZXMoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywgRW51bWVyYXRpb25Nb2RlIG1vZGUpCiB7
Ci0gICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMocHJvcGVydHlOYW1lcywgbW9kZSk7
CisgICAgbV9zdHJ1Y3R1cmUtPmdldFByb3BlcnR5TmFtZXMoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWVzLCBtb2RlKTsKICAgICBnZXRDbGFzc1Byb3BlcnR5TmFtZXMoZXhlYywgY2xh
c3NJbmZvKCksIHByb3BlcnR5TmFtZXMsIG1vZGUpOwogfQogCkBAIC01MDksMzMgKzUxMCwzMyBA
QCBKU09iamVjdCogSlNPYmplY3Q6OnVud3JhcHBlZE9iamVjdCgpCiAgICAgcmV0dXJuIHRoaXM7
CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnNlYWwoKQordm9pZCBKU09iamVjdDo6c2VhbChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6c2VhbFRy
YW5zaXRpb24obV9zdHJ1Y3R1cmUpKTsKKyAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpzZWFs
VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12b2lkIEpTT2JqZWN0
OjpmcmVlemUoKQordm9pZCBKU09iamVjdDo6ZnJlZXplKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKIHsKLSAgICBzZXRTdHJ1Y3R1cmUoU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKG1fc3Ry
dWN0dXJlKSk7CisgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0
ZW5zaW9ucygpCit2b2lkIEpTT2JqZWN0OjpwcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQotICAgICAgICBzZXRTdHJ1
Y3R1cmUoU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24obV9zdHJ1Y3R1cmUp
KTsKKyAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6cHJldmVudEV4dGVuc2lvbnNUcmFu
c2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlKSk7CiB9CiAKLXZvaWQgSlNPYmplY3Q6OnJl
bW92ZURpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIEpTT2JqZWN0
OjpyZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgc2l6ZV90IG9mZnNldDsKICAgICBpZiAobV9zdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpIHsKLSAgICAgICAgb2Zmc2V0ID0gbV9zdHJ1
Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6
Om5vdEZvdW5kKQogICAgICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJlY3RPZmZzZXQob2Zmc2V0
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVj
dHVyZSA9IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBw
cm9wZXJ0eU5hbWUsIG9mZnNldCk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSwgb2Zmc2V0KTsKICAgICBzZXRTdHJ1Y3R1cmUoc3RydWN0dXJlLnJl
bGVhc2UoKSk7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKQogICAgICAgICBwdXRV
bmRlZmluZWRBdERpcmVjdE9mZnNldChvZmZzZXQpOwpAQCAtNTk4LDExICs1OTksMTEgQEAgdm9p
ZCBKU09iamVjdDo6YWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2Uoc2l6ZV90IG9sZFNpemUsIHNpemVf
dCBuZXdTaXplKQogICAgIG1fcHJvcGVydHlTdG9yYWdlID0gbmV3UHJvcGVydHlTdG9yYWdlOwog
fQogCi1ib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2Ny
aXB0b3IpCitib29sIEpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3BlcnR5RGVzY3JpcHRv
ciYgZGVzY3JpcHRvcikKIHsKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzID0gMDsKICAgICBKU0Nl
bGwqIGNlbGwgPSAwOwotICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3Bl
cnR5TmFtZSwgYXR0cmlidXRlcywgY2VsbCk7CisgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0
dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIGNl
bGwpOwogICAgIGlmIChvZmZzZXQgPT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGRlc2NyaXB0b3Iuc2V0RGVzY3JpcHRvcihnZXREaXJlY3RPZmZzZXQob2Zmc2V0
KSwgYXR0cmlidXRlcyk7CkBAIC03NTQsNyArNzU1LDcgQEAgYm9vbCBKU09iamVjdDo6ZGVmaW5l
T3duUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KLSAgICBKU1Zh
bHVlIGFjY2Vzc29yID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFtZSk7CisgICAgSlNWYWx1ZSBhY2Nl
c3NvciA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAg
aWYgKCFhY2Nlc3NvcikKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEdldHRlclNldHRlciog
Z2V0dGVyU2V0dGVyID0gYXNHZXR0ZXJTZXR0ZXIoYWNjZXNzb3IpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggN2EyNDhkMmI2MzFkZjkzNDA4ZGExZWUxMzNl
MmZiYzU5MDBkMjVkMC4uYjUzYWVmY2QwMDM2YWNkYjY1NjAzNjRjZGEwOGQ5NmJlODIxYTZhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCkBAIC04Nyw4ICs4Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0dWFsIH5KU09iamVjdCgpOwogCiAgICAg
ICAgIEpTVmFsdWUgcHJvdG90eXBlKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0UHJvdG90eXBl
KEpTVmFsdWUgcHJvdG90eXBlKTsKLSAgICAgICAgYm9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVD
aGVjayhKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlKEpTR2xv
YmFsRGF0YSYsIEpTVmFsdWUgcHJvdG90eXBlKTsKKyAgICAgICAgYm9vbCBzZXRQcm90b3R5cGVX
aXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmLCBKU1ZhbHVlIHByb3RvdHlwZSk7CiAgICAgICAg
IAogICAgICAgICB2b2lkIHNldFN0cnVjdHVyZShOb25OdWxsUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
KTsKICAgICAgICAgU3RydWN0dXJlKiBpbmhlcml0b3JJRChKU0dsb2JhbERhdGEmKTsKQEAgLTE0
NiwyMiArMTQ2LDIyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIGdldFByb3BlcnR5
U3BlY2lmaWNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgSlNDZWxsKiYgc3BlY2lmaWNGdW5jdGlvbikgY29uc3Q7CiAKICAgICAgICAgLy8gVGhp
cyBnZXQgZnVuY3Rpb24gb25seSBsb29rcyBhdCB0aGUgcHJvcGVydHkgbWFwLgotICAgICAgICBK
U1ZhbHVlIGdldERpcmVjdChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpIGNvbnN0Cisg
ICAgICAgIEpTVmFsdWUgZ2V0RGlyZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAogICAgICAgICB7Ci0gICAgICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUpOworICAgICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgICAgIHJldHVybiBvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCA/IGdldERp
cmVjdE9mZnNldChvZmZzZXQpIDogSlNWYWx1ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24oY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXRE
aXJlY3RMb2NhdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1f
c3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQg
PSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNldChvZmZz
ZXQpIDogMDsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4q
IGdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQmIGF0dHJpYnV0ZXMpCisgICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGdldERp
cmVjdExvY2F0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcykKICAgICAgICAgewogICAgICAgICAg
ICAgSlNDZWxsKiBzcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9
IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0
aW9uKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2Jh
bERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CiAgICAg
ICAgICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBsb2NhdGlvbkZvck9mZnNl
dChvZmZzZXQpIDogMDsKICAgICAgICAgfQogCkBAIC0xNzIsNyArMTcyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCB0cmFuc2l0aW9uVG8oU3RydWN0dXJlKik7CiAKLSAgICAg
ICAgdm9pZCByZW1vdmVEaXJlY3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgdm9pZCByZW1vdmVEaXJlY3QoSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgYm9vbCBoYXNDdXN0b21Qcm9wZXJ0aWVzKCkgeyByZXR1
cm4gIW1fc3RydWN0dXJlLT5pc0VtcHR5KCk7IH0KICAgICAgICAgYm9vbCBoYXNHZXR0ZXJTZXR0
ZXJQcm9wZXJ0aWVzKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmhhc0dldHRlclNldHRlclByb3Bl
cnRpZXMoKTsgfQogCkBAIC0yMDksMTEgKzIwOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzU3RyaWN0TW9kZUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gZmFs
c2U7IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzRXJyb3JJbnN0YW5jZSgpIGNvbnN0IHsgcmV0
dXJuIGZhbHNlOyB9CiAKLSAgICAgICAgdm9pZCBzZWFsKCk7Ci0gICAgICAgIHZvaWQgZnJlZXpl
KCk7Ci0gICAgICAgIHZvaWQgcHJldmVudEV4dGVuc2lvbnMoKTsKLSAgICAgICAgYm9vbCBpc1Nl
YWxlZCgpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc1NlYWxlZCgpOyB9Ci0gICAgICAgIGJvb2wg
aXNGcm96ZW4oKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNGcm96ZW4oKTsgfQorICAgICAgICB2
b2lkIHNlYWwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgZnJlZXplKEpTR2xvYmFsRGF0
YSYpOworICAgICAgICB2b2lkIHByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsRGF0YSYpOworICAg
ICAgICBib29sIGlzU2VhbGVkKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkgeyByZXR1cm4gbV9z
dHJ1Y3R1cmUtPmlzU2VhbGVkKGdsb2JhbERhdGEpOyB9CisgICAgICAgIGJvb2wgaXNGcm96ZW4o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBtX3N0cnVjdHVyZS0+aXNGcm96ZW4o
Z2xvYmFsRGF0YSk7IH0KICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUoKSB7IHJldHVybiBtX3N0
cnVjdHVyZS0+aXNFeHRlbnNpYmxlKCk7IH0KIAogICAgICAgICB2aXJ0dWFsIENvbXBsVHlwZSBl
eGNlcHRpb25UeXBlKCkgY29uc3QgeyByZXR1cm4gVGhyb3c7IH0KQEAgLTQxNiw3ICs0MTYsNyBA
QCBpbmxpbmUgSlNWYWx1ZSBKU09iamVjdDo6cHJvdG90eXBlKCkgY29uc3QKICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUtPnN0b3JlZFByb3RvdHlwZSgpOwogfQogCi1pbmxpbmUgYm9vbCBKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNWYWx1ZSBwcm90b3R5cGUpCitpbmxpbmUg
Ym9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5
cGVWYWx1ZSA9IHByb3RvdHlwZTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZVZhbHVlICYmIG5l
eHRQcm90b3R5cGVWYWx1ZS5pc09iamVjdCgpKSB7CkBAIC00MjUsMTQgKzQyNSwxNCBAQCBpbmxp
bmUgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNWYWx1ZSBwcm90
b3R5cGUpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIG5leHRQcm90b3R5cGVW
YWx1ZSA9IG5leHRQcm90b3R5cGUtPnByb3RvdHlwZSgpOwogICAgIH0KLSAgICBzZXRQcm90b3R5
cGUocHJvdG90eXBlKTsKKyAgICBzZXRQcm90b3R5cGUoZ2xvYmFsRGF0YSwgcHJvdG90eXBlKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZShKU1ZhbHVlIHByb3RvdHlwZSkKK2lubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3RvdHlwZSkKIHsKICAgICBBU1NF
UlQocHJvdG90eXBlKTsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBuZXdTdHJ1Y3R1cmUgPSBTdHJ1
Y3R1cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24obV9zdHJ1Y3R1cmUsIHByb3RvdHlwZSk7
CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQ
cm90b3R5cGVUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm90b3R5cGUpOwog
ICAgIHNldFN0cnVjdHVyZShuZXdTdHJ1Y3R1cmUucmVsZWFzZSgpKTsKIH0KIApAQCAtNDcxLDcg
KzQ3MSw3IEBAIGlubGluZSBib29sIEpTVmFsdWU6OmluaGVyaXRzKGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKSBjb25zdAogCiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNPYmplY3Q6OmlubGluZUdl
dE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQogewotICAgIGlmIChXcml0ZUJhcnJpZXJCYXNl
PFVua25vd24+KiBsb2NhdGlvbiA9IGdldERpcmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSkpIHsK
KyAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJlY3RM
b2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSkpIHsKICAgICAgICAgaWYg
KG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCkgJiYgbG9jYXRpb24tPmlz
R2V0dGVyU2V0dGVyKCkpCiAgICAgICAgICAgICBmaWxsR2V0dGVyUHJvcGVydHlTbG90KHNsb3Qs
IGxvY2F0aW9uKTsKICAgICAgICAgZWxzZQpAQCAtNTU3LDEyICs1NTcsMTIgQEAgaW5saW5lIGJv
b2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
Y29uc3QgSWRlbnRpZmkKICAgICBpZiAobV9zdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CiAg
ICAgICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1dGVzOwogICAgICAgICBKU0NlbGwqIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uOwotICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUt
PmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbik7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0
aW9uKTsKICAgICAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgICAg
ICAvLyBJZiB0aGVyZSBpcyBjdXJyZW50bHkgYSBzcGVjaWZpYyBmdW5jdGlvbiwgYW5kIHRoZXJl
IG5vdyBlaXRoZXIgaXNuJ3QsCiAgICAgICAgICAgICAvLyBvciB0aGUgbmV3IHZhbHVlIGlzIGRp
ZmZlcmVudCwgdGhlbiBkZXNwZWNpZnkuCiAgICAgICAgICAgICBpZiAoY3VycmVudFNwZWNpZmlj
RnVuY3Rpb24gJiYgKHNwZWNpZmljRnVuY3Rpb24gIT0gY3VycmVudFNwZWNpZmljRnVuY3Rpb24p
KQotICAgICAgICAgICAgICAgIG1fc3RydWN0dXJlLT5kZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rp
b24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgICAgICBtX3N0cnVjdHVyZS0+ZGVzcGVjaWZ5
RGljdGlvbmFyeUZ1bmN0aW9uKGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAgICAg
ICBpZiAoY2hlY2tSZWFkT25seSAmJiBjdXJyZW50QXR0cmlidXRlcyAmIFJlYWRPbmx5KQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTgyLDcgKzU4Miw3IEBAIGlubGluZSBi
b29sIEpTT2JqZWN0OjpwdXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IGNvbnN0IElkZW50aWZpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAgICAgc2l6
ZV90IGN1cnJlbnRDYXBhY2l0eSA9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0
eSgpOwotICAgICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOworICAg
ICAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwog
ICAgICAgICBpZiAoY3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3Jh
Z2VDYXBhY2l0eSgpKQogICAgICAgICAgICAgYWxsb2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVu
dENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAKQEAg
LTYxMiw3ICs2MTIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogCiAgICAgdW5zaWduZWQg
Y3VycmVudEF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbjsK
LSAgICBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJp
YnV0ZXMsIGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICBvZmZzZXQgPSBtX3N0cnVjdHVy
ZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgY3VycmVudEF0dHJpYnV0ZXMsIGN1cnJl
bnRTcGVjaWZpY0Z1bmN0aW9uKTsKICAgICBpZiAob2Zmc2V0ICE9IFdURjo6bm90Rm91bmQpIHsK
ICAgICAgICAgaWYgKGNoZWNrUmVhZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25s
eSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTYzMyw3ICs2MzMsNyBAQCBpbmxpbmUg
Ym9vbCBKU09iamVjdDo6cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBjb25zdCBJZGVudGlmaQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgLy8gY2FzZSAoMikgRGVzcGVjaWZ5LCBmYWxsIHRocm91Z2ggdG8g
KDMpLgotICAgICAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rp
b25UcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5hbWUpKTsKKyAgICAgICAgICAgIHNl
dFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihnbG9iYWxE
YXRhLCBtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7CiAgICAgICAgIH0KIAogICAgICAgICAv
LyBjYXNlICgzKSBzZXQgdGhlIHNsb3QsIGRvIHRoZSBwdXQsIHJldHVybi4KQEAgLTcwNyw3ICs3
MDcsNyBAQCBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaQogaW5saW5lIHZvaWQgSlNPYmplY3Q6OnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzKQogewogICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFk
ZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCAwKTsK
KyAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5z
aXRpb24oZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCAwKTsKICAgICBpZiAo
Y3VycmVudENhcGFjaXR5ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KQogICAgICAgICBhbGxvY2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3Ry
dWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQo
Z2xvYmFsRGF0YSwgb2Zmc2V0LCB2YWx1ZSk7CkBAIC03MTYsNyArNzE2LDcgQEAgaW5saW5lIHZv
aWQgSlNPYmplY3Q6OnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgY29uc3QKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RGdW5jdGlvbldp
dGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQogewog
ICAgIHNpemVfdCBjdXJyZW50Q2FwYWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkoKTsKLSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb24ocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCB2YWx1ZSk7CisgICAg
c2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFsdWUpOwogICAgIGlmIChj
dXJyZW50Q2FwYWNpdHkgIT0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkp
CiAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9zdHJ1
Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogICAgIHB1dERpcmVjdE9mZnNldChn
bG9iYWxEYXRhLCBvZmZzZXQsIHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuY3BwCmluZGV4IDMwN2JjZWIyNTBiOTU1OTBkNTgzYTRhYTc1N2Q1YzVmYTI5YWI2MGEu
LjI1YjUxNmVmYjBmYTI2ZTE5NTJmNTQzMmZmNTE5OTk5NWRkZmNiNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xvb2t1cC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcApAQCAtNzMsNyArNzMsNyBAQCB2b2lkIHNldFVw
U3RhdGljRnVuY3Rpb25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRy
eSwgSlNPYmplY3QqCiAgICAgQVNTRVJUKHRoaXNPYmotPnN0cnVjdHVyZSgpLT5hbm9ueW1vdXNT
bG90Q291bnQoKSA+IDApOwogICAgIEFTU0VSVCh0aGlzT2JqLT5nZXRBbm9ueW1vdXNWYWx1ZSgw
KS5pc0NlbGwoKSAmJiBhc09iamVjdCh0aGlzT2JqLT5nZXRBbm9ueW1vdXNWYWx1ZSgwKS5hc0Nl
bGwoKSktPmlzR2xvYmFsT2JqZWN0KCkpOwogICAgIEFTU0VSVChlbnRyeS0+YXR0cmlidXRlcygp
ICYgRnVuY3Rpb24pOwotICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0g
dGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKKyAgICBXcml0ZUJhcnJp
ZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKIAogICAgIGlmICghbG9jYXRpb24pIHsK
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb247CkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgc2V0
VXBTdGF0aWNGdW5jdGlvblNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBIYXNoRW50cnkqIGVu
dHJ5LCBKU09iamVjdCoKICAgICAgICAgICAgIGZ1bmN0aW9uID0gbmV3IChleGVjKSBKU0Z1bmN0
aW9uKGV4ZWMsIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblN0cnVjdHVyZSgp
LCBlbnRyeS0+ZnVuY3Rpb25MZW5ndGgoKSwgcHJvcGVydHlOYW1lLCBlbnRyeS0+ZnVuY3Rpb24o
KSk7CiAKICAgICAgICAgdGhpc09iai0+cHV0RGlyZWN0RnVuY3Rpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBwcm9wZXJ0eU5hbWUsIGZ1bmN0aW9uLCBlbnRyeS0+YXR0cmlidXRlcygpKTsKLSAgICAg
ICAgbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOwor
ICAgICAgICBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERpcmVjdExvY2F0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAgICB9CiAKICAgICBzbG90LnNldFZhbHVlKHRoaXNP
YmosIGxvY2F0aW9uLT5nZXQoKSwgdGhpc09iai0+b2Zmc2V0Rm9yTG9jYXRpb24obG9jYXRpb24p
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAppbmRleCBjNjQyYTViNTlmMmQ1OThiY2E0ZGVhNTU4Y2YyNTJlNzYyM2U5YzgzLi42
YmQyYTI4MzZlNWNmYjM4NzYwYmE2MDNiMjVhNmI4MDNkMmFlMjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0zNDIs
NyArMzQyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
ckNyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc09i
amVjdCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdCBwcm90b3R5cGUg
bWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIikpOwogICAgIEpTT2JqZWN0KiBuZXdPYmpl
Y3QgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKTsKLSAgICBuZXdPYmplY3QtPnNldFByb3Rv
dHlwZShleGVjLT5hcmd1bWVudCgwKSk7CisgICAgbmV3T2JqZWN0LT5zZXRQcm90b3R5cGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50KDEpLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUobmV3
T2JqZWN0KTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzT2JqZWN0KCkpCkBAIC0zNTUs
NyArMzU1LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3Rv
clNlYWwoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5zZWFsIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICBhc09iamVjdChvYmopLT5zZWFsKCk7CisgICAgYXNP
YmplY3Qob2JqKS0+c2VhbChleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUob2JqKTsKIH0KIApAQCAtMzY0LDcgKzM2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0YXRlKiBleGVjKQogICAg
IEpTVmFsdWUgb2JqID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3Qo
KSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgIk9iamVjdC5mcmVlemUgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwotICAg
IGFzT2JqZWN0KG9iaiktPmZyZWV6ZSgpOworICAgIGFzT2JqZWN0KG9iaiktPmZyZWV6ZShleGVj
LT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKIH0KIApA
QCAtMzczLDcgKzM3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29u
c3RydWN0b3JQcmV2ZW50RXh0ZW5zaW9ucyhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBv
YmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0
LnByZXZlbnRFeHRlbnNpb25zIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAg
ICBhc09iamVjdChvYmopLT5wcmV2ZW50RXh0ZW5zaW9ucygpOworICAgIGFzT2JqZWN0KG9iaikt
PnByZXZlbnRFeHRlbnNpb25zKGV4ZWMtPmdsb2JhbERhdGEoKSk7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShvYmopOwogfQogCkBAIC0zODIsNyArMzgyLDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvcklzU2VhbGVkKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2Jq
ZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJPYmplY3QuaXNTZWFsZWQgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikp
OwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlz
U2VhbGVkKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVj
dChvYmopLT5pc1NlYWxlZChleGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9CiAKIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJc0Zyb3plbihFeGVjU3RhdGUqIGV4
ZWMpCkBAIC0zOTAsNyArMzkwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvcklzRnJvemVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuaXNG
cm96ZW4gY2FuIG9ubHkgYmUgY2FsbGVkIG9uIE9iamVjdHMuIikpOwotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNCb29sZWFuKGFzT2JqZWN0KG9iaiktPmlzRnJvemVuKCkpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc0Zyb3plbihl
eGVjLT5nbG9iYWxEYXRhKCkpKSk7CiB9CiAKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JJc0V4dGVuc2libGUoRXhlY1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IGIxZjQ3NGY3MzYzODk3MGQ3
ZjNlZDExNmJiMzhjNTAxZjllZTk3MjEuLmMxMDJlZWJlZDNhYTY2MzY5OWZmYzUxOWY1OTY0Nzk3
ZDRhMWYxZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJh
dGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgK
QEAgLTQzMCw3ICs0MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIGlmIChjZWxs
LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgICAgICBhc09iamVj
dChjZWxsKS0+ZmxhdHRlbkRpY3Rpb25hcnlPYmplY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCkp
OwogICAgICAgICAgICAgICAgIGlmIChzbG90QmFzZSA9PSBjZWxsKQotICAgICAgICAgICAgICAg
ICAgICBzbG90T2Zmc2V0ID0gY2VsbC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOyAK
KyAgICAgICAgICAgICAgICAgICAgc2xvdE9mZnNldCA9IGNlbGwtPnN0cnVjdHVyZSgpLT5nZXQo
Y2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7IAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICArK2NvdW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggYzAwMGRjODFhZjAxYmY2ZGEyMTYy
OWI3NWFlZmE4MTYwMjZjZGZkNS4uZWRiZDM1ZjQ4YTI2YzI4ZDY5ZDBlMWM0NzQ2MjhmYWNlNzE4
MDFiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlN
YXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCkBAIC03MywxMyArNzMsMTMgQEAgc3RydWN0IFByb3BlcnR5TWFwRW50
cnkgewogICAgIFN0cmluZ0ltcGwqIGtleTsKICAgICB1bnNpZ25lZCBvZmZzZXQ7CiAgICAgdW5z
aWduZWQgYXR0cmlidXRlczsKLSAgICBKU0NlbGwqIHNwZWNpZmljVmFsdWU7CisgICAgV3JpdGVC
YXJyaWVyPEpTQ2VsbD4gc3BlY2lmaWNWYWx1ZTsKIAotICAgIFByb3BlcnR5TWFwRW50cnkoU3Ry
aW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2Vs
bCogc3BlY2lmaWNWYWx1ZSkKKyAgICBQcm9wZXJ0eU1hcEVudHJ5KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSlNDZWxsKiBvd25lciwgU3RyaW5nSW1wbCoga2V5LCB1bnNpZ25lZCBvZmZzZXQs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgOiBr
ZXkoa2V5KQogICAgICAgICAsIG9mZnNldChvZmZzZXQpCiAgICAgICAgICwgYXR0cmlidXRlcyhh
dHRyaWJ1dGVzKQotICAgICAgICAsIHNwZWNpZmljVmFsdWUoc3BlY2lmaWNWYWx1ZSkKKyAgICAg
ICAgLCBzcGVjaWZpY1ZhbHVlKGdsb2JhbERhdGEsIG93bmVyLCBzcGVjaWZpY1ZhbHVlKQogICAg
IHsKICAgICB9CiB9OwpAQCAtMTQxLDkgKzE0MSw5IEBAIHB1YmxpYzoKICAgICB0eXBlZGVmIHN0
ZDo6cGFpcjxWYWx1ZVR5cGUqLCB1bnNpZ25lZD4gZmluZF9pdGVyYXRvcjsKIAogICAgIC8vIENv
bnN0cnVjdG9yIGlzIHBhc3NlZCBhbiBpbml0aWFsIGNhcGFjaXR5LCBhIFByb3BlcnR5VGFibGUg
dG8gY29weSwgb3IgYm90aC4KLSAgICBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRpYWxDYXBh
Y2l0eSk7Ci0gICAgUHJvcGVydHlUYWJsZShjb25zdCBQcm9wZXJ0eVRhYmxlJik7Ci0gICAgUHJv
cGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUm
KTsKKyAgICBleHBsaWNpdCBQcm9wZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSk7
CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0
eVRhYmxlJik7CisgICAgUHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCB1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmKTsKICAgICB+UHJvcGVy
dHlUYWJsZSgpOwogCiAgICAgLy8gT3JkZXJlZCBpdGVyYXRpb24gbWV0aG9kcy4KQEAgLTE3Niw3
ICsxNzYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGREZWxldGVkT2Zmc2V0KHVuc2lnbmVkIG9m
ZnNldCk7CiAKICAgICAvLyBDb3B5IHRoaXMgUHJvcGVydHlUYWJsZSwgZW5zdXJpbmcgdGhlIGNv
cHkgaGFzIGF0IGxlYXN0IHRoZSBjYXBhY2l0eSBwcm92aWRlZC4KLSAgICBQYXNzT3duUHRyPFBy
b3BlcnR5VGFibGU+IGNvcHkodW5zaWduZWQgbmV3Q2FwYWNpdHkpOworICAgIFBhc3NPd25QdHI8
UHJvcGVydHlUYWJsZT4gY29weShKU0dsb2JhbERhdGEmLCBKU0NlbGwqIG93bmVyLCB1bnNpZ25l
ZCBuZXdDYXBhY2l0eSk7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgc2l6ZV90IHNpemVJbk1lbW9y
eSgpOwpAQCAtMTg0LDYgKzE4NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiBwcml2YXRlOgorICAg
IFByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwogICAgIC8vIFVzZWQgdG8gaW5z
ZXJ0IGEgdmFsdWUga25vd24gbm90IHRvIGJlIGluIHRoZSB0YWJsZSwgYW5kIHdoZXJlIHdlIGtu
b3cgY2FwYWNpdHkgdG8gYmUgYXZhaWxhYmxlLgogICAgIHZvaWQgcmVpbnNlcnQoY29uc3QgVmFs
dWVUeXBlJiBlbnRyeSk7CiAKQEAgLTI0Myw3ICsyNDQsNyBAQCBpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6UHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpCiAgICAgQVNTRVJUKGlz
UG93ZXJPZjIobV9pbmRleFNpemUpKTsKIH0KIAotaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3Bl
cnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJs
ZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmLCBKU0NlbGwqLCBjb25zdCBQcm9wZXJ0eVRh
YmxlJiBvdGhlcikKICAgICA6IG1faW5kZXhTaXplKG90aGVyLm1faW5kZXhTaXplKQogICAgICwg
bV9pbmRleE1hc2sob3RoZXIubV9pbmRleE1hc2spCiAgICAgLCBtX2luZGV4KHN0YXRpY19jYXN0
PHVuc2lnbmVkKj4oZmFzdE1hbGxvYyhkYXRhU2l6ZSgpKSkpCkBAIC0yNjQsNyArMjY1LDcgQEAg
aW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYg
b3RoZXIpCiAgICAgICAgIG1fZGVsZXRlZE9mZnNldHMuc2V0KG5ldyBWZWN0b3I8dW5zaWduZWQ+
KCpvdGhlckRlbGV0ZWRPZmZzZXRzKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9w
ZXJ0eVRhYmxlKHVuc2lnbmVkIGluaXRpYWxDYXBhY2l0eSwgY29uc3QgUHJvcGVydHlUYWJsZSYg
b3RoZXIpCitpbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEm
LCBKU0NlbGwqLCB1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUm
IG90aGVyKQogICAgIDogbV9pbmRleFNpemUoc2l6ZUZvckNhcGFjaXR5KGluaXRpYWxDYXBhY2l0
eSkpCiAgICAgLCBtX2luZGV4TWFzayhtX2luZGV4U2l6ZSAtIDEpCiAgICAgLCBtX2luZGV4KHN0
YXRpY19jYXN0PHVuc2lnbmVkKj4oZmFzdFplcm9lZE1hbGxvYyhkYXRhU2l6ZSgpKSkpCkBAIC00
NDMsMTUgKzQ0NCwxNSBAQCBpbmxpbmUgdm9pZCBQcm9wZXJ0eVRhYmxlOjphZGREZWxldGVkT2Zm
c2V0KHVuc2lnbmVkIG9mZnNldCkKICAgICBtX2RlbGV0ZWRPZmZzZXRzLT5hcHBlbmQob2Zmc2V0
KTsKIH0KIAotaW5saW5lIFBhc3NPd25QdHI8UHJvcGVydHlUYWJsZT4gUHJvcGVydHlUYWJsZTo6
Y29weSh1bnNpZ25lZCBuZXdDYXBhY2l0eSkKK2lubGluZSBQYXNzT3duUHRyPFByb3BlcnR5VGFi
bGU+IFByb3BlcnR5VGFibGU6OmNvcHkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU0NlbGwq
IG93bmVyLCB1bnNpZ25lZCBuZXdDYXBhY2l0eSkKIHsKICAgICBBU1NFUlQobmV3Q2FwYWNpdHkg
Pj0gbV9rZXlDb3VudCk7CiAKICAgICAvLyBGYXN0IGNhc2U7IGlmIHRoZSBuZXcgdGFibGUgd2ls
bCBiZSB0aGUgc2FtZSBtX2luZGV4U2l6ZSBhcyB0aGlzIG9uZSwgd2UgY2FuIG1lbWNweSBpdCwK
ICAgICAvLyBzYXZlIHJlaGFzaGluZyBhbGwga2V5cy4KICAgICBpZiAoc2l6ZUZvckNhcGFjaXR5
KG5ld0NhcGFjaXR5KSA9PSBtX2luZGV4U2l6ZSkKLSAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0
eVRhYmxlKCp0aGlzKTsKLSAgICByZXR1cm4gbmV3IFByb3BlcnR5VGFibGUobmV3Q2FwYWNpdHks
ICp0aGlzKTsKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93
bmVyLCAqdGhpcyk7CisgICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIG93
bmVyLCBuZXdDYXBhY2l0eSwgKnRoaXMpOwogfQogCiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggMTMxZWE2YmRlMzBhNTYw
OTc1MTk4ZGUxMTdmZjQyZWM2N2I3OWI3ZS4uYmQ3ZDlkZGE5MDE3MmFlNjI1YzczZjAzYjczYWVm
YjIyY2NhMGY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6OnN0b3BJZ25vcmluZ0xlYWtz
KCkKICNlbmRpZgogfQogCi12b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgp
Cit2b2lkIFN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCiB7CiAgICAgQVNTRVJUKCFtX3Byb3BlcnR5VGFibGUpOwogCkBAIC0zMDksNyAr
MzA5LDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoKQogICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKTsKICAgICAgICAgICAgIEFT
U0VSVCghc3RydWN0dXJlLT5tX3ByZXZpb3VzKTsKIAotICAgICAgICAgICAgbV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPmNvcHkobV9vZmZzZXQgKyAxKTsKKyAg
ICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLT5j
b3B5KGdsb2JhbERhdGEsIDAsIG1fb2Zmc2V0ICsgMSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQogCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXpl
UHJvcGVydHlNYXAoKQogCiAgICAgZm9yIChwdHJkaWZmX3QgaSA9IHN0cnVjdHVyZXMuc2l6ZSgp
IC0gMjsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgc3RydWN0dXJlID0gc3RydWN0dXJlc1tpXTsK
LSAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShzdHJ1Y3R1cmUtPm1fbmFtZUluUHJldmlv
dXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0dXJlLT5tX29mZnNldCwgc3Ry
dWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNWYWx1
ZUluUHJldmlvdXMpOworICAgICAgICBQcm9wZXJ0eU1hcEVudHJ5IGVudHJ5KGdsb2JhbERhdGEs
IDAsIHN0cnVjdHVyZS0+bV9uYW1lSW5QcmV2aW91cy5nZXQoKSwgbV9hbm9ueW1vdXNTbG90Q291
bnQgKyBzdHJ1Y3R1cmUtPm1fb2Zmc2V0LCBzdHJ1Y3R1cmUtPm1fYXR0cmlidXRlc0luUHJldmlv
dXMsIHN0cnVjdHVyZS0+bV9zcGVjaWZpY1ZhbHVlSW5QcmV2aW91cyk7CiAgICAgICAgIG1fcHJv
cGVydHlUYWJsZS0+YWRkKGVudHJ5KTsKICAgICB9CiB9CkBAIC0zMzQsMTggKzMzNCwxOCBAQCB2
b2lkIFN0cnVjdHVyZTo6Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkKICAgICAgICAgbV9w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSAqPSAyOwogfQogCi12b2lkIFN0cnVjdHVyZTo6ZGVzcGVj
aWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK3Zv
aWQgU3RydWN0dXJlOjpkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgU3RyaW5n
SW1wbCogcmVwID0gcHJvcGVydHlOYW1lLmltcGwoKTsKIAotICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eShnbG9iYWxEYXRhKTsKIAogICAgIEFTU0VSVChpc0RpY3Rpb25hcnkoKSk7CiAgICAgQVNTRVJU
KG1fcHJvcGVydHlUYWJsZSk7CiAKICAgICBQcm9wZXJ0eU1hcEVudHJ5KiBlbnRyeSA9IG1fcHJv
cGVydHlUYWJsZS0+ZmluZChyZXApLmZpcnN0OwogICAgIEFTU0VSVChlbnRyeSk7Ci0gICAgZW50
cnktPnNwZWNpZmljVmFsdWUgPSAwOworICAgIGVudHJ5LT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7
CiB9CiAKIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvblRvRXhpc3RpbmdTdHJ1Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZp
Y1ZhbHVlLCBzaXplX3QmIG9mZnNldCkKQEAgLTM4Nyw5ICszODcsOSBAQCBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLAogICAgICAgICBzcGVjaWZpY1ZhbHVlID0gMDsKIAogICAgIGlmIChzdHJ1Y3R1
cmUtPnRyYW5zaXRpb25Db3VudCgpID4gc19tYXhUcmFuc2l0aW9uTGVuZ3RoKSB7Ci0gICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFu
c2l0aW9uKHN0cnVjdHVyZSk7CisgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24g
PSB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSk7
CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gdHJhbnNpdGlvbik7Ci0gICAgICAgIG9mZnNl
dCA9IHRyYW5zaXRpb24tPnB1dChwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFs
dWUpOworICAgICAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQoZ2xvYmFsRGF0YSwgcHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgQVNTRVJUKG9mZnNl
dCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQgPT0gdHJhbnNpdGlvbi0+bV9hbm9ueW1vdXNT
bG90Q291bnQpOwogICAgICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlU2l6ZSgp
ID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKQEAgLTQwNywxNyArNDA3
LDE3IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNp
dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAKICAgICBpZiAoc3RydWN0dXJlLT5tX3By
b3BlcnR5VGFibGUpIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUpCi0gICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1
cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+c2l6
ZSgpICsgMSk7CisgICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1
Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRhLCAwLCBzdHJ1Y3R1cmUtPm1f
cHJvcGVydHlUYWJsZS0+c2l6ZSgpICsgMSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRy
YW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlLnJl
bGVhc2UoKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc3RydWN0dXJlLT5tX3ByZXZpb3Vz
KQotICAgICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOworICAg
ICAgICAgICAgdHJhbnNpdGlvbi0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcChnbG9iYWxEYXRhKTsK
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Y3JlYXRlUHJvcGVydHlNYXAo
KTsKICAgICB9CiAKLSAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQocHJvcGVydHlOYW1lLCBh
dHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBvZmZzZXQgPSB0cmFuc2l0aW9uLT5wdXQo
Z2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAg
ICBBU1NFUlQob2Zmc2V0ID49IHN0cnVjdHVyZS0+bV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1f
YW5vbnltb3VzU2xvdENvdW50KTsKICAgICBpZiAodHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdl
U2l6ZSgpID4gdHJhbnNpdGlvbi0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKQEAgLTQyOSwx
MSArNDI5LDExIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsCiAgICAgcmV0dXJuIHRyYW5zaXRp
b24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpyZW1v
dmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCBzaXplX3QmIG9mZnNldCkKIHsKICAgICBBU1NFUlQoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKSk7CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gdG9V
bmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRyPFN0
cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cmVtb3Zl
KHByb3BlcnR5TmFtZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnlt
b3VzU2xvdENvdW50KTsKQEAgLTQ0Miw3ICs0NDIsNyBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUs
CiAgICAgcmV0dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVj
dHVyZT4gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBKU1ZhbHVlIHByb3RvdHlwZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OmNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwogCkBAIC00NTAsMTUgKzQ1
MCwxNSBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpjaGFuZ2VQcm90b3R5cGVU
cmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLAogCiAgICAgLy8gRG9uJ3Qgc2V0IG1fb2Zm
c2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAKLSAgICBzdHJ1Y3R1cmUt
Pm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAgIHRyYW5zaXRpb24tPm1f
cHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoKTsKKyAgICBzdHJ1
Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKKyAg
ICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRh
YmxlKGdsb2JhbERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxl
ID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNTbG90Q291bnQo
KSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CiAgICAgcmV0dXJuIHRyYW5z
aXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpk
ZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IElk
ZW50aWZpZXImIHJlcGxhY2VGdW5jdGlvbikKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBsYWNlRnVuY3Rpb24p
CiB7CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+bV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQg
PCBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQpOwogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+
IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKQEAgLTQ2NywxNCArNDY3LDE0IEBAIFBh
c3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIHN0cnVjdHVyCiAKICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9u
ZSBjYW4gbm90IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxp
emVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRh
YmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRp
b24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFs
RGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwog
CiAgICAgaWYgKHRyYW5zaXRpb24tPm1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID09IG1h
eFNwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCkKLSAgICAgICAgdHJhbnNpdGlvbi0+ZGVzcGVj
aWZ5QWxsRnVuY3Rpb25zKCk7CisgICAgICAgIHRyYW5zaXRpb24tPmRlc3BlY2lmeUFsbEZ1bmN0
aW9ucyhnbG9iYWxEYXRhKTsKICAgICBlbHNlIHsKLSAgICAgICAgYm9vbCByZW1vdmVkID0gdHJh
bnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24ocmVwbGFjZUZ1bmN0aW9uKTsKKyAgICAgICAgYm9v
bCByZW1vdmVkID0gdHJhbnNpdGlvbi0+ZGVzcGVjaWZ5RnVuY3Rpb24oZ2xvYmFsRGF0YSwgcmVw
bGFjZUZ1bmN0aW9uKTsKICAgICAgICAgQVNTRVJUX1VOVVNFRChyZW1vdmVkLCByZW1vdmVkKTsK
ICAgICB9CiAgICAgCkBAIC00ODIsMjggKzQ4MiwyOCBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
U3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1
cgogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1
Y3R1cmU+IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5z
aXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsK
ICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CiAK
ICAgICAvLyBEb24ndCBzZXQgbV9vZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24gdG8g
dGhpcy4KIAotICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5
KCk7Ci0gICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJv
cGVydHlUYWJsZSgpOworICAgIHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVj
ZXNzYXJ5KGdsb2JhbERhdGEpOworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0
cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+
bV9pc1Bpbm5lZFByb3BlcnR5VGFibGUgPSB0cnVlOwogICAgIAogICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPmFub255bW91c1Nsb3RDb3VudCgpID09IHRyYW5zaXRpb24tPmFub255bW91c1Nsb3RDb3Vu
dCgpKTsKICAgICByZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8
U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpY3Rpb25hcnlLaW5kIGtpbmQpCiB7CiAgICAgQVNTRVJU
KCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAgIAogICAgIFJlZlB0
cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKIAotICAgIHN0cnVj
dHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlv
bi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAg
IHN0cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEp
OworICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3Bl
cnR5VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5
VGFibGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fZGljdGlvbmFyeUtpbmQgPSBraW5kOwog
ICAgIApAQCAtNTExLDIwICs1MTEsMjAgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVy
ZTo6dG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgRGkKICAgICBy
ZXR1cm4gdHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBT
dHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0NhY2hlYWJsZURpY3Rp
b25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiB7Ci0gICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24oc3RydWN0dXJlLCBD
YWNoZWREaWN0aW9uYXJ5S2luZCk7CisgICAgcmV0dXJuIHRvRGljdGlvbmFyeVRyYW5zaXRpb24o
Z2xvYmFsRGF0YSwgc3RydWN0dXJlLCBDYWNoZWREaWN0aW9uYXJ5S2luZCk7CiB9CiAKLVBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNp
dGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OnRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAgIHJldHVybiB0b0RpY3Rpb25hcnlU
cmFuc2l0aW9uKHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7CisgICAgcmV0dXJu
IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBVbmNhY2hlZERp
Y3Rpb25hcnlLaW5kKTsKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50IHRvIGNhY2hlIHRo
aXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnNlYWxUcmFu
c2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6c2VhbFRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKIHsKLSAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVu
dEV4dGVuc2lvbnNUcmFuc2l0aW9uKHN0cnVjdHVyZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4g
dHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1
Y3R1cmUpOwogCiAgICAgaWYgKHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAg
ICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRvciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFi
bGUtPmVuZCgpOwpAQCAtNTM2LDkgKzUzNiw5IEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQogfQogCiAvLyBJbiBm
dXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyB0cmFuc2l0aW9uLgotUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKLSAgICBSZWZQ
dHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gcHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKHN0
cnVjdHVyZSk7CisgICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRl
bnNpb25zVHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgaWYgKHRyYW5z
aXRpb24tPm1fcHJvcGVydHlUYWJsZSkgewogICAgICAgICBQcm9wZXJ0eVRhYmxlOjppdGVyYXRv
ciBlbmQgPSB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUtPmVuZCgpOwpAQCAtNTUwLDE0ICs1
NTAsMTQgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3YW50IHRv
IGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6
OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK1Bhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewogICAgIFJl
ZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKIAogICAgIC8v
IERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNhbiBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgog
Ci0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKLSAg
ICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRh
YmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nhcnko
Z2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJl
LT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRhKTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlu
bmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAgdHJhbnNpdGlvbi0+bV9wcmV2ZW50RXh0ZW5z
aW9ucyA9IHRydWU7CiAKQEAgLTU2NiwxMiArNTY2LDEyIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJl
PiBTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVj
dHVyCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHByb3BlcnR5
LgotYm9vbCBTdHJ1Y3R1cmU6OmlzU2VhbGVkKCkKK2Jvb2wgU3RydWN0dXJlOjppc1NlYWxlZChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7CiAgICAgaWYgKGlzRXh0ZW5zaWJsZSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC01
ODQsMTIgKzU4NCwxMiBAQCBib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoKQogfQogCiAvLyBJbiBm
dXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KLWJvb2wgU3RydWN0dXJl
Ojppc0Zyb3plbigpCitib29sIFN0cnVjdHVyZTo6aXNGcm96ZW4oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQogewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9wcm9w
ZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNjMwLDMwICs2MzAsMzAgQEAg
UGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZmxhdHRlbkRpY3Rpb25hcnlTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiBnbG9iYWwKICAgICByZXR1cm4gdGhpczsKIH0KIAotc2l6ZV90IFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlmaWVyJiBw
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkK
K3NpemVfdCBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fZW51
bWVyYXRpb25DYWNoZSk7CiAKICAgICBpZiAobV9zcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQg
PT0gbWF4U3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50KQogICAgICAgICBzcGVjaWZpY1ZhbHVl
ID0gMDsKIAotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKIAogICAgIG1faXNQ
aW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAotICAgIHNpemVfdCBvZmZzZXQgPSBwdXQocHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICBzaXplX3Qgb2Zmc2V0
ID0gcHV0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1
ZSk7CiAgICAgQVNTRVJUKG9mZnNldCA+PSBtX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgaWYg
KHByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCiAgICAg
ICAgIGdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgIHJldHVybiBvZmZzZXQ7CiB9
CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorc2l6ZV90IFN0cnVjdHVyZTo6cmVtb3ZlUHJv
cGVydHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKICAgICBBU1NFUlQoaXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKSk7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUpOwogCi0gICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogCiAgICAgbV9pc1Bpbm5lZFByb3BlcnR5VGFibGUg
PSB0cnVlOwogICAgIHNpemVfdCBvZmZzZXQgPSByZW1vdmUocHJvcGVydHlOYW1lKTsKQEAgLTY4
OCwxNCArNjg4LDE0IEBAIGlubGluZSB2b2lkIFN0cnVjdHVyZTo6Y2hlY2tDb25zaXN0ZW5jeSgp
CiAKICNlbmRpZgogCi1Qcm9wZXJ0eVRhYmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxl
KCkKK1Byb3BlcnR5VGFibGUqIFN0cnVjdHVyZTo6Y29weVByb3BlcnR5VGFibGUoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogewotICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJv
cGVydHlUYWJsZSgqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CisgICAgcmV0dXJuIG1fcHJvcGVydHlU
YWJsZSA/IG5ldyBQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEsIDAsICptX3Byb3BlcnR5VGFibGUp
IDogMDsKIH0KIAotc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KFN0cmluZ0ltcGwqIHByb3BlcnR5TmFt
ZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMsIEpTQ2VsbComIHNwZWNpZmljVmFsdWUpCitzaXplX3Qg
U3RydWN0dXJlOjpnZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJpbmdJbXBsKiBwcm9w
ZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQog
ewotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVy
dHlUYWJsZSkKICAgICAgICAgcmV0dXJuIFdURjo6bm90Rm91bmQ7CiAKQEAgLTcwNCwxNCArNzA0
LDE0IEBAIHNpemVfdCBTdHJ1Y3R1cmU6OmdldChTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzCiAgICAgICAgIHJldHVybiBXVEY6Om5vdEZv
dW5kOwogCiAgICAgYXR0cmlidXRlcyA9IGVudHJ5LT5hdHRyaWJ1dGVzOwotICAgIHNwZWNpZmlj
VmFsdWUgPSBlbnRyeS0+c3BlY2lmaWNWYWx1ZTsKKyAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnkt
PnNwZWNpZmljVmFsdWUuZ2V0KCk7CiAgICAgQVNTRVJUKGVudHJ5LT5vZmZzZXQgPj0gbV9hbm9u
eW1vdXNTbG90Q291bnQpOwogICAgIHJldHVybiBlbnRyeS0+b2Zmc2V0OwogfQogCi1ib29sIFN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQorYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAgIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC03MjEsMjUgKzcyMSwyNSBAQCBib29sIFN0cnVjdHVyZTo6ZGVz
cGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoZW50cnktPnNwZWNpZmljVmFsdWUpOwotICAgIGVu
dHJ5LT5zcGVjaWZpY1ZhbHVlID0gMDsKKyAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5jbGVhcigp
OwogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVu
Y3Rpb25zKCkKK3ZvaWQgU3RydWN0dXJlOjpkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQogewotICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2Fy
eSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsK
ICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUHJvcGVy
dHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gbV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKICAgICBmb3Ig
KFByb3BlcnR5VGFibGU6Oml0ZXJhdG9yIGl0ZXIgPSBtX3Byb3BlcnR5VGFibGUtPmJlZ2luKCk7
IGl0ZXIgIT0gZW5kOyArK2l0ZXIpCi0gICAgICAgIGl0ZXItPnNwZWNpZmljVmFsdWUgPSAwOwor
ICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlLmNsZWFyKCk7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1
cmU6OnB1dChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0
ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OnB1dChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKQogewogICAgIEFTU0VSVCghcHJv
cGVydHlOYW1lLmlzTnVsbCgpKTsKLSAgICBBU1NFUlQoZ2V0KHByb3BlcnR5TmFtZSkgPT0gbm90
Rm91bmQpOworICAgIEFTU0VSVChnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lKSA9PSBub3RG
b3VuZCk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgaWYgKGF0dHJpYnV0ZXMgJiBE
b250RW51bSkKQEAgLTc1OCw3ICs3NTgsNyBAQCBzaXplX3QgU3RydWN0dXJlOjpwdXQoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbAogICAg
ICAgICBuZXdPZmZzZXQgPSBtX3Byb3BlcnR5VGFibGUtPnNpemUoKSArIG1fYW5vbnltb3VzU2xv
dENvdW50OwogICAgIEFTU0VSVChuZXdPZmZzZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwog
Ci0gICAgbV9wcm9wZXJ0eVRhYmxlLT5hZGQoUHJvcGVydHlNYXBFbnRyeShyZXAsIG5ld09mZnNl
dCwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSkpOworICAgIG1fcHJvcGVydHlUYWJsZS0+YWRk
KFByb3BlcnR5TWFwRW50cnkoZ2xvYmFsRGF0YSwgMCwgcmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0
ZXMsIHNwZWNpZmljVmFsdWUpKTsKIAogICAgIGNoZWNrQ29uc2lzdGVuY3koKTsKICAgICByZXR1
cm4gbmV3T2Zmc2V0OwpAQCAtNzk4LDkgKzc5OCw5IEBAIHZvaWQgU3RydWN0dXJlOjpjcmVhdGVQ
cm9wZXJ0eU1hcCh1bnNpZ25lZCBjYXBhY2l0eSkKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiB9
CiAKLXZvaWQgU3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKFByb3BlcnR5TmFtZUFycmF5JiBw
cm9wZXJ0eU5hbWVzLCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKK3ZvaWQgU3RydWN0dXJlOjpnZXRQ
cm9wZXJ0eU5hbWVzKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvcGVydHlOYW1lQXJyYXkm
IHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5l
Y2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAgICAgICAg
cmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCmluZGV4
IDJkZjU2OTEzMWM1MjkwNmQwOWExY2Q2NDM3ZDNhYzYyZTMxMjg2MjEuLjk0YTA2YjJmOTY5ZjJl
ZDNmZjdkZGUwYmU2ZjExY2I4NDhkY2I4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCkBAIC03NiwxOCArNzYsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUsIHNpemVfdCYgb2Zm
c2V0KTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBhZGRQcm9wZXJ0eVRy
YW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVl
LCBzaXplX3QmIG9mZnNldCk7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4g
cmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb24oU3RydWN0dXJlKiwgSlNWYWx1ZSBw
cm90b3R5cGUpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lm
eUZ1bmN0aW9uVHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNpdGlvbihT
dHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0NhY2hl
YWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihTdHJ1
Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzZWFsVHJhbnNp
dGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBm
cmVlemVUcmFuc2l0aW9uKFN0cnVjdHVyZSopOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
dHJ1Y3R1cmU+IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLQotICAg
ICAgICBib29sIGlzU2VhbGVkKCk7Ci0gICAgICAgIGJvb2wgaXNGcm96ZW4oKTsKKyAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiByZW1vdmVQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBz
aXplX3QmIG9mZnNldCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gY2hh
bmdlUHJvdG90eXBlVHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBKU1ZhbHVl
IHByb3RvdHlwZSk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZGVzcGVj
aWZ5RnVuY3Rpb25UcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBnZXR0ZXJT
ZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0
cnVjdHVyZT4gdG9VbmNhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHNlYWxU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGZyZWV6ZVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gcHJldmVudEV4dGVu
c2lvbnNUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworCisgICAgICAgIGJv
b2wgaXNTZWFsZWQoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIGJvb2wgaXNGcm96ZW4oSlNHbG9i
YWxEYXRhJik7CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgY29uc3QgeyByZXR1cm4gIW1f
cHJldmVudEV4dGVuc2lvbnM7IH0KIAogICAgICAgICBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZmxh
dHRlbkRpY3Rpb25hcnlTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNPYmplY3QqKTsKQEAgLTk1
LDggKzk1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH5TdHJ1Y3R1cmUoKTsKIAogICAg
ICAgICAvLyBUaGVzZSBzaG91bGQgYmUgdXNlZCB3aXRoIGNhdXRpb24uICAKLSAgICAgICAgc2l6
ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOwotICAg
ICAgICBzaXplX3QgcmVtb3ZlUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgYWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVf
dCByZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIHZvaWQgc2V0UHJvdG90eXBlV2l0aG91
dFRyYW5zaXRpb24oSlNWYWx1ZSBwcm90b3R5cGUpIHsgbV9wcm90b3R5cGUgPSBwcm90b3R5cGU7
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNEaWN0aW9uYXJ5KCkgY29uc3QgeyByZXR1cm4g
bV9kaWN0aW9uYXJ5S2luZCAhPSBOb25lRGljdGlvbmFyeUtpbmQ7IH0KQEAgLTEyMCwxMiArMTIw
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB1bnNpZ25lZCBwcm9wZXJ0eVN0b3JhZ2VT
aXplKCkgY29uc3QgeyByZXR1cm4gbV9hbm9ueW1vdXNTbG90Q291bnQgKyAobV9wcm9wZXJ0eVRh
YmxlID8gbV9wcm9wZXJ0eVRhYmxlLT5wcm9wZXJ0eVN0b3JhZ2VTaXplKCkgOiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obV9vZmZzZXQgKyAxKSk7IH0KICAgICAgICAgYm9vbCBpc1VzaW5nSW5saW5l
U3RvcmFnZSgpIGNvbnN0OwogCi0gICAgICAgIHNpemVfdCBnZXQoY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHlOYW1lKTsKLSAgICAgICAgc2l6ZV90IGdldChTdHJpbmdJbXBsKiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAg
ICAgc2l6ZV90IGdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorICAgICAgICBzaXplX3QgZ2V0KEpT
R2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHNp
emVfdCBnZXQoSlNHbG9iYWxEYXRhJiwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25l
ZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7CisgICAgICAgIHNpemVfdCBn
ZXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051bGwoKSk7Ci0gICAgICAg
ICAgICByZXR1cm4gZ2V0KHByb3BlcnR5TmFtZS5pbXBsKCksIGF0dHJpYnV0ZXMsIHNwZWNpZmlj
VmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIGdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUu
aW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKICAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzR2V0
dGVyU2V0dGVyUHJvcGVydGllczsgfQpAQCAtMTM4LDEyICsxMzgsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3By
b3BlcnR5VGFibGUgPyBtX3Byb3BlcnR5VGFibGUtPmlzRW1wdHkoKSA6IG1fb2Zmc2V0ID09IG5v
T2Zmc2V0OyB9CiAKLSAgICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0aW9uYXJ5RnVuY3Rpb24oY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKKyAgICAgICAgdm9pZCBkZXNwZWNpZnlEaWN0
aW9uYXJ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU3BlY2lmaWNGdW5jdGlvblRyYWNraW5nKCkgeyBt
X3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9IG1heFNwZWNpZmljRnVuY3Rpb25UaHJhc2hD
b3VudDsgfQogCiAgICAgICAgIHZvaWQgc2V0RW51bWVyYXRpb25DYWNoZShKU0dsb2JhbERhdGEm
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlvbkNhY2hlKTsgLy8gRGVmaW5lZCBp
biBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmguCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIGVudW1lcmF0aW9uQ2FjaGUoKTsgLy8gRGVmaW5lZCBpbiBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmguCi0gICAgICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhQcm9wZXJ0eU5hbWVBcnJheSYs
IEVudW1lcmF0aW9uTW9kZSBtb2RlKTsKKyAgICAgICAgdm9pZCBnZXRQcm9wZXJ0eU5hbWVzKEpT
R2xvYmFsRGF0YSYsIFByb3BlcnR5TmFtZUFycmF5JiwgRW51bWVyYXRpb25Nb2RlIG1vZGUpOwog
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gbV9j
bGFzc0luZm87IH0KIApAQCAtMTc4LDIzICsxNzgsMjMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBDYWNoZWREaWN0aW9uYXJ5S2luZCA9IDEsCiAgICAgICAgICAgICBVbmNhY2hlZERp
Y3Rpb25hcnlLaW5kID0gMgogICAgICAgICB9IERpY3Rpb25hcnlLaW5kOwotICAgICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJl
KiwgRGljdGlvbmFyeUtpbmQpOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IHRvRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgRGljdGlv
bmFyeUtpbmQpOwogCi0gICAgICAgIHNpemVfdCBwdXQoY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAg
ICAgICBzaXplX3QgcHV0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKICAgICAg
ICAgc2l6ZV90IHJlbW92ZShjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOwogCiAgICAg
ICAgIHZvaWQgY3JlYXRlUHJvcGVydHlNYXAodW5zaWduZWQga2V5Q291bnQgPSAwKTsKICAgICAg
ICAgdm9pZCBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICAgICAgYm9vbCBkZXNwZWNpZnlGdW5j
dGlvbihjb25zdCBJZGVudGlmaWVyJik7Ci0gICAgICAgIHZvaWQgZGVzcGVjaWZ5QWxsRnVuY3Rp
b25zKCk7CisgICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oSlNHbG9iYWxEYXRhJiwgY29u
c3QgSWRlbnRpZmllciYpOworICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucyhKU0ds
b2JhbERhdGEmKTsKIAotICAgICAgICBQcm9wZXJ0eVRhYmxlKiBjb3B5UHJvcGVydHlUYWJsZSgp
OwotICAgICAgICB2b2lkIG1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKLSAgICAgICAgdm9pZCBt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKQorICAgICAgICBQcm9wZXJ0eVRhYmxl
KiBjb3B5UHJvcGVydHlUYWJsZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBtYXRlcmlh
bGl6ZVByb3BlcnR5TWFwKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIG1hdGVyaWFsaXpl
UHJvcGVydHlNYXBJZk5lY2Vzc2FyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlICYmIG1fcHJldmlvdXMpCi0gICAg
ICAgICAgICAgICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCgpOworICAgICAgICAgICAgICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXAoZ2xvYmFsRGF0YSk7CiAgICAgICAgIH0KIAogICAgICAgICBz
aWduZWQgY2hhciB0cmFuc2l0aW9uQ291bnQoKSBjb25zdApAQCAtMjUxLDkgKzI1MSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAvLyA0IGZyZWUgYml0cwogICAgIH07CiAKLSAgICBpbmxp
bmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkK
KyAgICBpbmxpbmUgc2l6ZV90IFN0cnVjdHVyZTo6Z2V0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogICAgIHsKLSAgICAgICAgbWF0ZXJp
YWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgICAgIG1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICAgICAgaWYgKCFtX3Byb3BlcnR5VGFi
bGUpCiAgICAgICAgICAgICByZXR1cm4gbm90Rm91bmQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBhNjA1NGRk
ZWFlMmI5MDBlNDgxODk3YWExY2FmZWQyZDk3NDk3N2JhLi4xODEyNzYwZGFkNjIyMjNkNmU1ZDEx
N2VlNWRjYjIyMWU1NzdkZjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTEtMDQt
MTIgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFByb3BlcnR5TWFwRW50cnkgdXNlIGEg
V3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODQwNworCisgICAgICAgIFBhc3MgSlNHbG9iYWxEYXRh
IHJlZmVyZW5jZSBvbiB0byBBUElzIHRoYXQgbm93IG5lZWQgdGhlbQorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5k
b3dTaGVsbDo6c2V0V2luZG93KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVu
dEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0hUTUxEb2N1bWVudDo6YWxsKToKKwog
MjAxMS0wNC0xMiAgRGllZ28gR29uemFsZXogIDxkaWVnb2hjZ0B3ZWJraXQub3JnPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCmluZGV4IDQzMDdjMWM0NjFiMGZm
NDZiZjhhM2E3N2JhYjhlYzJlNTA0ZjliYjYuLjU3NWIyOTZjNDljZWNiMzU4ZTE4NDgyY2Q2YjU4
ZGMwZmZjY2RiYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d1NoZWxsLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlRfQVJHKHdpbmRvdywgd2luZG93KTsKICAgICAgICAgICAgIG1f
d2luZG93LnNldChnbG9iYWxEYXRhLCB0aGlzLCB3aW5kb3cpOwotICAgICAgICAgICAgc2V0UHJv
dG90eXBlKHdpbmRvdy0+cHJvdG90eXBlKCkpOworICAgICAgICAgICAgc2V0UHJvdG90eXBlKGds
b2JhbERhdGEsIHdpbmRvdy0+cHJvdG90eXBlKCkpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQg
c2V0V2luZG93KFBhc3NSZWZQdHI8RE9NV2luZG93Pik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAxOTJlZjVkYjg1
MzNhZmFlMDRmM2JmMDkxMjk3YjA3ZGZkYTY0N2U3Li5jMzNmODU5ZmIyMDU1NDE4MGIzOTk3MWVm
MzdkNTZhNmZiYmEzZGNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC04Niw3ICs4Niw3IEBAIEpTVmFsdWUgSlNIVE1M
RG9jdW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVuCiBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjphbGwoRXhlY1N0YXRlKiBleGVjKSBj
b25zdAogewogICAgIC8vIElmICJhbGwiIGhhcyBiZWVuIG92ZXJ3cml0dGVuLCByZXR1cm4gdGhl
IG92ZXJ3cml0dGVuIHZhbHVlCi0gICAgSlNWYWx1ZSB2ID0gZ2V0RGlyZWN0KElkZW50aWZpZXIo
ZXhlYywgImFsbCIpKTsKKyAgICBKU1ZhbHVlIHYgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CiAgICAgaWYgKHYpCiAgICAgICAgIHJldHVy
biB2OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>89394</attachid>
            <date>2011-04-13 10:09:11 -0700</date>
            <delta_ts>2011-04-13 11:34:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-58407-20110413100909.patch</filename>
            <type>text/plain</type>
            <size>81950</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODM3NDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xh
c3NSZWYuY3BwCmluZGV4IDcwNjY4YmQyMzVlNWVkYmJhYjQzM2RlZTcwN2Q5NTYxMTJkNTY3Yjcu
LjA4ZGM3MjExYjJmMzAxNTM2ZTcxYTM2MDgxZTEwOWJiYzA0ZDZjMzAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDbGFzc1JlZi5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcApAQCAtMjU0LDcgKzI1NCw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBqc0Ns
YXNzRGF0YS5jYWNoZWRQcm90b3R5cGUuc2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgbmV3IChleGVj
KSBKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0V2l0aEdsb2JhbE9iamVjdD4oZXhlYywgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmNhbGxi
YWNrT2JqZWN0U3RydWN0dXJlKCksIHByb3RvdHlwZUNsYXNzLCAmanNDbGFzc0RhdGEpLCAwKTsg
Ly8gc2V0IGpzQ2xhc3NEYXRhIGFzIHRoZSBvYmplY3QncyBwcml2YXRlIGRhdGEsIHNvIGl0IGNh
biBjbGVhciBvdXIgcmVmZXJlbmNlIG9uIGRlc3RydWN0aW9uCiAgICAgICAgIGlmIChwYXJlbnRD
bGFzcykgewogICAgICAgICAgICAgaWYgKEpTT2JqZWN0KiBwcm90b3R5cGUgPSBwYXJlbnRDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpKQotICAgICAgICAgICAgICAgIGpzQ2xhc3NEYXRhLmNhY2hlZFBy
b3RvdHlwZS0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgICAgICAgICAganNDbGFz
c0RhdGEuY2FjaGVkUHJvdG90eXBlLT5zZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBqc0NsYXNzRGF0YS5jYWNo
ZWRQcm90b3R5cGUuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJl
Zi5jcHAKaW5kZXggZTVjNzc4ZjliYzUwYWQ5ODdlMTA3ZDU1MmI5NzkwZTQ4YjBmOTFlZS4uMTU4
YjI1NjI2ZDJhMTQ2MjY0YTUzYjljM2RiMDA3OTczN2NhMmMyNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTR2xvYmFs
Q29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKEpTQ29udGV4dEdyb3VwUmVm
IGdyb3VwLCBKU0NsYXNzCiAgICAgSlNWYWx1ZSBwcm90b3R5cGUgPSBnbG9iYWxPYmplY3RDbGFz
cy0+cHJvdG90eXBlKGV4ZWMpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5
cGUgPSBqc051bGwoKTsKLSAgICBnbG9iYWxPYmplY3QtPnJlc2V0UHJvdG90eXBlKHByb3RvdHlw
ZSk7CisgICAgZ2xvYmFsT2JqZWN0LT5yZXNldFByb3RvdHlwZSgqZ2xvYmFsRGF0YSwgcHJvdG90
eXBlKTsKICAgICByZXR1cm4gSlNHbG9iYWxDb250ZXh0UmV0YWluKHRvR2xvYmFsUmVmKGV4ZWMp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJl
Zi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCBi
NzAzMGU0YmE1ZmM5NWM4ODcxZTJlZjdlOTAzNWI3MmJiMWZmYzVjLi4yZGYwMTBhNTE4OWY3YzZl
ZDJjOWFlZjljMThlMzFmMzcwODk1NDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
T2JqZWN0UmVmLmNwcApAQCAtODMsNyArODMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2Uo
SlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRhKQogCiAgICAg
SlNDYWxsYmFja09iamVjdDxKU09iamVjdFdpdGhHbG9iYWxPYmplY3Q+KiBvYmplY3QgPSBuZXcg
KGV4ZWMpIEpTQ2FsbGJhY2tPYmplY3Q8SlNPYmplY3RXaXRoR2xvYmFsT2JqZWN0PihleGVjLCBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+
Y2FsbGJhY2tPYmplY3RTdHJ1Y3R1cmUoKSwganNDbGFzcywgZGF0YSk7CiAgICAgaWYgKEpTT2Jq
ZWN0KiBwcm90b3R5cGUgPSBqc0NsYXNzLT5wcm90b3R5cGUoZXhlYykpCi0gICAgICAgIG9iamVj
dC0+c2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgICAgIG9iamVjdC0+c2V0UHJvdG90eXBl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvdG90eXBlKTsKIAogICAgIHJldHVybiB0b1JlZihvYmpl
Y3QpOwogfQpAQCAtMjM1LDcgKzIzNSw3IEBAIHZvaWQgSlNPYmplY3RTZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1ZhbHVlUmVmIHZhbHVlCiAgICAg
SlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOwogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHRvSlMoZXhlYywgdmFsdWUpOwogCi0gICAganNPYmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNs
ZUNoZWNrKGpzVmFsdWUuaXNPYmplY3QoKSA/IGpzVmFsdWUgOiBqc051bGwoKSk7CisgICAganNP
YmplY3QtPnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKGV4ZWMtPmdsb2JhbERhdGEoKSwganNW
YWx1ZS5pc09iamVjdCgpID8ganNWYWx1ZSA6IGpzTnVsbCgpKTsKIH0KIAogYm9vbCBKU09iamVj
dEhhc1Byb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJp
bmdSZWYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggZDU5OTNhZDU2
YmViNWRkOTZlNmZjMDk0MjA5ZWViYzU1ZDg3OTVjMy4uZTY0MjQ0NzFmM2Y1NDIyODI5YjM1MTc4
YzRhNTQyZmIwOTRkOWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTE1
IEBACisyMDExLTA0LTEzICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1h
cEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBmb3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBNYWtl
IFByb3BlcnR5TWFwRW50cnkgdXNlIGEgV3JpdGVCYXJyaWVyIGZvciBzcGVjaWZpY1ZhbHVlLCBh
bmQgdGhlbgorICAgICAgICBwcm9wYWdhdGUgdGhlIHJlcXVpcmVkIEpTR2xvYmFsRGF0YSB0aHJv
dWdoIGFsbCB0aGUgbWV0aG9kcyBpdCBlbmRzCisgICAgICAgIHVwIGJlaW5nIG5lZWRlZC4KKwor
ICAgICAgICAqIEFQSS9KU0NsYXNzUmVmLmNwcDoKKyAgICAgICAgKE9wYXF1ZUpTQ2xhc3M6OnBy
b3RvdHlwZSk6CisgICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJ
L0pTT2JqZWN0UmVmLmNwcDoKKyAgICAgICAgKEpTT2JqZWN0TWFrZSk6CisgICAgICAgIChKU09i
amVjdFNldFByb3RvdHlwZSk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUuZXhwOgorICAgICAg
ICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjphcHBlbmRTb3VyY2VUb0Vycm9yKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRCk6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6CisgICAgICAgICogaml0L0pJVFN0dWJz
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQpOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9CYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oOgorICAgICAgICAoSlNDOjpCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplcjo6QmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIpOgorICAgICAgICAqIHJ1bnRpbWUv
SW50ZXJuYWxGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkludGVybmFsRnVuY3Rpb246Om5h
bWUpOgorICAgICAgICAoSlNDOjpJbnRlcm5hbEZ1bmN0aW9uOjpkaXNwbGF5TmFtZSk6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uY3BwOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6bmFtZSk6CisgICAgICAgIChKU0M6OkpTRnVu
Y3Rpb246OmRpc3BsYXlOYW1lKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlvbjo6Z2V0T3duUHJv
cGVydHlTbG90KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAg
ICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnB1dFdpdGhBdHRyaWJ1dGVzKToKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OnJlc2V0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6
OnJlc2V0UHJvdG90eXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpw
dXQpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkpOgorICAgICAgICAo
SlNDOjpKU09iamVjdDo6ZGVmaW5lR2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmRl
ZmluZVNldHRlcik6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6bG9va3VwU2V0dGVyKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OmdldFByb3BlcnR5U3BlY2lmaWNWYWx1ZSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpn
ZXRPd25Qcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnNlYWwpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZnJlZXplKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnBy
ZXZlbnRFeHRlbnNpb25zKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnJlbW92ZURpcmVjdCk6
CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IpOgorICAg
ICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmdldERpcmVjdCk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpnZXREaXJlY3RMb2NhdGlvbik6CisgICAgICAgIChKU0M6OkpT
T2JqZWN0Ojppc1NlYWxlZCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojppc0Zyb3plbik6Cisg
ICAgICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAg
ICAgIChKU0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGUpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6aW5saW5lR2V0T3duUHJvcGVydHlTbG90KToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1
dERpcmVjdEludGVybmFsKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9u
V2l0aG91dFRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvTG9va3VwLmNwcDoKKyAgICAg
ICAgKEpTQzo6c2V0VXBTdGF0aWNGdW5jdGlvblNsb3QpOgorICAgICAgICAqIHJ1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0
ZSk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2VhbCk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRnJlZXplKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0
b3JQcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9ySXNT
ZWFsZWQpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvcklzRnJvemVuKToKKyAgICAg
ICAgKiBydW50aW1lL09wZXJhdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6bm9ybWFsaXplUHJvdG90
eXBlQ2hhaW4pOgorICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6UHJvcGVydHlNYXBFbnRyeTo6UHJvcGVydHlNYXBFbnRyeSk6CisgICAgICAg
IChKU0M6OlByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUpOgorICAgICAgICAoSlNDOjpQcm9w
ZXJ0eVRhYmxlOjpjb3B5KToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6CisgICAg
ICAgIChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcCk6CisgICAgICAgIChK
U0M6OlN0cnVjdHVyZTo6ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1
Y3R1cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpn
ZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0RpY3Rp
b25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b0NhY2hlYWJsZURp
Y3Rpb25hcnlUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OnNlYWxU
cmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24pOgor
ICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmlzU2VhbGVkKToKKyAgICAgICAgKEpTQzo6U3RydWN0
dXJlOjppc0Zyb3plbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6YWRkUHJvcGVydHlXaXRo
b3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlX
aXRob3V0VHJhbnNpdGlvbik6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6Y29weVByb3BlcnR5
VGFibGUpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAgIChKU0M6OlN0
cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmRl
c3BlY2lmeUFsbEZ1bmN0aW9ucyk6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZTo6cHV0KToKKyAg
ICAgICAgKEpTQzo6U3RydWN0dXJlOjpnZXRQcm9wZXJ0eU5hbWVzKToKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmdldCk6CisgICAgICAg
IChKU0M6OlN0cnVjdHVyZTo6bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KToKKwog
MjAxMS0wNC0xMyAgUGF1bCBLbmlnaHQgIDxwa25pZ2h0QGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUuZXhwCmluZGV4IGQyMGMyY2I5YjllM2JlMWE1MmMwNmQyZjBiNGE1N2VmNzk0ZDhh
ODEuLjVlYzMzZjYyMjE4ZDVjYTY3NmMyZDMzNTkwNjMwMjA1ZGI3ZWU3ZTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cApAQCAtMzE2LDEyICszMTYsMTIgQEAgX19a
TjNKU0M5TWFya1N0YWNrMThpbml0aWFsaXplUGFnZXNpemVFdgogX19aTjNKU0M5U3RydWN0dXJl
MTdzdG9wSWdub3JpbmdMZWFrc0V2CiBfX1pOM0pTQzlTdHJ1Y3R1cmUxOHN0YXJ0SWdub3JpbmdM
ZWFrc0V2CiBfX1pOM0pTQzlTdHJ1Y3R1cmUyMWFkZFByb3BlcnR5VHJhbnNpdGlvbkVSTlNfMTJK
U0dsb2JhbERhdGFFUFMwX1JLTlNfMTBJZGVudGlmaWVyRWpQTlNfNkpTQ2VsbEVSbQotX19aTjNK
U0M5U3RydWN0dXJlMjJtYXRlcmlhbGl6ZVByb3BlcnR5TWFwRXYKLV9fWk4zSlNDOVN0cnVjdHVy
ZTI1Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbkVQUzBfTlNfN0pTVmFsdWVFCi1fX1pOM0pTQzlT
dHJ1Y3R1cmUyN2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkVSS05TXzEwSWRlbnRpZmllckUK
LV9fWk4zSlNDOVN0cnVjdHVyZTI3ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uRVBTMF9SS05T
XzEwSWRlbnRpZmllckUKLV9fWk4zSlNDOVN0cnVjdHVyZTI4YWRkUHJvcGVydHlXaXRob3V0VHJh
bnNpdGlvbkVSS05TXzEwSWRlbnRpZmllckVqUE5TXzZKU0NlbGxFCi1fX1pOM0pTQzlTdHJ1Y3R1
cmUzZ2V0RVBOM1dURjEwU3RyaW5nSW1wbEVSalJQTlNfNkpTQ2VsbEUKK19fWk4zSlNDOVN0cnVj
dHVyZTIybWF0ZXJpYWxpemVQcm9wZXJ0eU1hcEVSTlNfMTJKU0dsb2JhbERhdGFFCitfX1pOM0pT
QzlTdHJ1Y3R1cmUyNWNoYW5nZVByb3RvdHlwZVRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRh
RVBTMF9OU183SlNWYWx1ZUUKK19fWk4zSlNDOVN0cnVjdHVyZTI3ZGVzcGVjaWZ5RGljdGlvbmFy
eUZ1bmN0aW9uRVJOU18xMkpTR2xvYmFsRGF0YUVSS05TXzEwSWRlbnRpZmllckUKK19fWk4zSlND
OVN0cnVjdHVyZTI3ZGVzcGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uRVJOU18xMkpTR2xvYmFsRGF0
YUVQUzBfUktOU18xMElkZW50aWZpZXJFCitfX1pOM0pTQzlTdHJ1Y3R1cmUyOGFkZFByb3BlcnR5
V2l0aG91dFRyYW5zaXRpb25FUk5TXzEySlNHbG9iYWxEYXRhRVJLTlNfMTBJZGVudGlmaWVyRWpQ
TlNfNkpTQ2VsbEUKK19fWk4zSlNDOVN0cnVjdHVyZTNnZXRFUk5TXzEySlNHbG9iYWxEYXRhRVBO
M1dURjEwU3RyaW5nSW1wbEVSalJQTlNfNkpTQ2VsbEUKIF9fWk4zSlNDOVN0cnVjdHVyZTQwYWRk
UHJvcGVydHlUcmFuc2l0aW9uVG9FeGlzdGluZ1N0cnVjdHVyZUVQUzBfUktOU18xMElkZW50aWZp
ZXJFalBOU182SlNDZWxsRVJtCiBfX1pOM0pTQzlTdHJ1Y3R1cmVDMUVOU183SlNWYWx1ZUVSS05T
XzhUeXBlSW5mb0VqUEtOU185Q2xhc3NJbmZvRQogX19aTjNKU0M5U3RydWN0dXJlRDFFdgpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5kZWYgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgppbmRl
eCA3ZWE5NThjNDM1ZjYyYzkxZTg1ZDM5NjdiZmE5MzhjNTY2MWQ0MWZkLi40NmZiYjk3OTU5NDJi
MmUzNjdlMzRiNjBiYTkxM2Y2ZDBjNzg2NmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LmRlZgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmRlZgpAQCAtNTQsNyArNTQsNyBAQCBFWFBPUlRT
CiAgICAgP2FkZEN1cnJlbnRUaHJlYWRATWFjaGluZVRocmVhZHNASlNDQEBRQUVYWFoKICAgICA/
YWRkUHJvcGVydHlUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZT
dHJ1Y3R1cmVASlNDQEBAV1RGQEBBQVZKU0dsb2JhbERhdGFAMkBQQVYxMkBBQlZJZGVudGlmaWVy
QDJASVBBVkpTQ2VsbEAyQEFBSUBaCiAgICAgP2FkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3Rp
bmdTdHJ1Y3R1cmVAU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQFBBVjEyQEFCVklkZW50aWZpZXJAMkBJUEFWSlNDZWxsQDJAQUFJQFoKLSAgICA/
YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVJQUJWSWRlbnRp
ZmllckAyQElQQVZKU0NlbGxAMkBAWgorICAgID9hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9u
QFN0cnVjdHVyZUBKU0NAQFFBRUlBQVZKU0dsb2JhbERhdGFAMkBBQlZJZGVudGlmaWVyQDJASVBB
VkpTQ2VsbEAyQEBaCiAgICAgP2FkZFNsb3dDYXNlQElkZW50aWZpZXJASlNDQEBDQT9BVj8kUGFz
c1JlZlB0ckBWU3RyaW5nSW1wbEBXVEZAQEBXVEZAQFBBVkV4ZWNTdGF0ZUAyQFBBVlN0cmluZ0lt
cGxANEBAWgogICAgID9hbGxvY2F0ZUBIZWFwQEpTQ0BAUUFFUEFYSUBaCiAgICAgP2FsbG9jYXRl
RnJvbVNpemVDbGFzc0BNYXJrZWRTcGFjZUBKU0NAQEFBRVBBWEFBVVNpemVDbGFzc0AxMkBAWgpA
QCAtNzgsNyArNzgsNyBAQCBFWFBPUlRTCiAgICAgP2NhbGxPbk1haW5UaHJlYWRBbmRXYWl0QFdU
RkBAWUFYUDZBWFBBWEBaMEBaCiAgICAgP2NhbmNlbENhbGxPbk1haW5UaHJlYWRAV1RGQEBZQVhQ
NkFYUEFYQFowQFoKICAgICA/Y2FwYWNpdHlASGVhcEBKU0NAQFFCRUlYWgotICAgID9jaGFuZ2VQ
cm90b3R5cGVUcmFuc2l0aW9uQFN0cnVjdHVyZUBKU0NAQFNBP0FWPyRQYXNzUmVmUHRyQFZTdHJ1
Y3R1cmVASlNDQEBAV1RGQEBQQVYxMkBWSlNWYWx1ZUAyQEBaCisgICAgP2NoYW5nZVByb3RvdHlw
ZVRyYW5zaXRpb25AU3RydWN0dXJlQEpTQ0BAU0E/QVY/JFBhc3NSZWZQdHJAVlN0cnVjdHVyZUBK
U0NAQEBXVEZAQEFBVkpTR2xvYmFsRGF0YUAyQFBBVjEyQFZKU1ZhbHVlQDJAQFoKICAgICA/Y2hl
Y2tDdXJyZW50SWRlbnRpZmllclRhYmxlQElkZW50aWZpZXJASlNDQEBDQVhQQVZFeGVjU3RhdGVA
MkBAWgogICAgID9jaGVja0N1cnJlbnRJZGVudGlmaWVyVGFibGVASWRlbnRpZmllckBKU0NAQENB
WFBBVkpTR2xvYmFsRGF0YUAyQEBaCiAgICAgP2NoZWNrU3ludGF4QEpTQ0BAWUE/QVZDb21wbGV0
aW9uQDFAUEFWRXhlY1N0YXRlQDFAQUJWU291cmNlQ29kZUAxQEBaCkBAIC0xNDMsOCArMTQzLDgg
QEAgRVhQT1JUUwogICAgID9kZWxldGVQcm9wZXJ0eUBKU1ZhcmlhYmxlT2JqZWN0QEpTQ0BAVUFF
X05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoKICAgICA/ZGVsZXRlUHJvcGVydHlA
U3RyaW5nT2JqZWN0QEpTQ0BAVUFFX05QQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAQFoK
ICAgICA/ZGVsZXRlVGFibGVASGFzaFRhYmxlQEpTQ0BAUUJFWFhaCi0gICAgP2Rlc3BlY2lmeURp
Y3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUJWSWRlbnRpZmllckAyQEBaCi0g
ICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFz
c1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BAQFdURkBAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBaCisg
ICAgP2Rlc3BlY2lmeURpY3Rpb25hcnlGdW5jdGlvbkBTdHJ1Y3R1cmVASlNDQEBRQUVYQUFWSlNH
bG9iYWxEYXRhQDJAQUJWSWRlbnRpZmllckAyQEBaCisgICAgP2Rlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbkBTdHJ1Y3R1cmVASlNDQEBTQT9BVj8kUGFzc1JlZlB0ckBWU3RydWN0dXJlQEpTQ0BA
QFdURkBAQUFWSlNHbG9iYWxEYXRhQDJAUEFWMTJAQUJWSWRlbnRpZmllckAyQEBaCiAgICAgP2Rl
c3Ryb3lASGVhcEBKU0NAQFFBRVhYWgogICAgID9kZXRhY2hARGVidWdnZXJASlNDQEBVQUVYUEFW
SlNHbG9iYWxPYmplY3RAMkBAWgogICAgID9kZXRhY2hUaHJlYWRAV1RGQEBZQVhJQFoKQEAgLTE3
Miw3ICsxNzIsOCBAQCBFWFBPUlRTCiAgICAgP2Zyb21ASWRlbnRpZmllckBKU0NAQFNBP0FWMTJA
UEFWRXhlY1N0YXRlQDJASUBaCiAgICAgP2Z1bmN0aW9uR2V0dGVyQFByb3BlcnR5U2xvdEBKU0NA
QEFCRT9BVkpTVmFsdWVAMkBQQVZFeGVjU3RhdGVAMkBAWgogICAgID9mdW5jdGlvbk5hbWVARGVi
dWdnZXJDYWxsRnJhbWVASlNDQEBRQkVQQlZVU3RyaW5nQDJAWFoKLSAgICA/Z2V0QFN0cnVjdHVy
ZUBKU0NAQFFBRUlQQVZTdHJpbmdJbXBsQFdURkBAQUFJQUFQQVZKU0NlbGxAMkBAWgorICAgID9n
ZXRAU3RydWN0dXJlQEpTQ0BAUUFFSUFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBB
QUlBQVBBVkpTQ2VsbEAyQEBaCisgICAgP2dldEBTdHJ1Y3R1cmVASlNDQEBRQUVJQUFWSlNHbG9i
YWxEYXRhQDJAUEFWU3RyaW5nSW1wbEBXVEZAQEFBSUFBUEFWSlNDZWxsQDJAQFoKICAgICA/Z2V0
Q2FsbERhdGFASlNDZWxsQEpTQ0BAVUFFP0FXNENhbGxUeXBlQDJAQUFUQ2FsbERhdGFAMkBAWgog
ICAgID9nZXRDb25zdHJ1Y3REYXRhQEpTQ2VsbEBKU0NAQFVBRT9BVzRDb25zdHJ1Y3RUeXBlQDJA
QUFUQ29uc3RydWN0RGF0YUAyQEBaCiAgICAgP2dldEpTTnVtYmVyQEpTQ2VsbEBKU0NAQFVBRT9B
VkpTVmFsdWVAMkBYWgpAQCAtMjM5LDcgKzI0MCw3IEBAIEVYUE9SVFMKICAgICA/bWFya0NoaWxk
cmVuQEpTT2JqZWN0QEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCiAgICAgP21hcmtDaGlsZHJl
bkBKU1dyYXBwZXJPYmplY3RASlNDQEBFQUVYQUFWTWFya1N0YWNrQDJAQFoKICAgICA/bWFya0No
aWxkcmVuQFNjb3BlQ2hhaW5Ob2RlQEpTQ0BAVUFFWEFBVk1hcmtTdGFja0AyQEBaCi0gICAgP21h
dGVyaWFsaXplUHJvcGVydHlNYXBAU3RydWN0dXJlQEpTQ0BAQUFFWFhaCisgICAgP21hdGVyaWFs
aXplUHJvcGVydHlNYXBAU3RydWN0dXJlQEpTQ0BAQUFFWEFBVkpTR2xvYmFsRGF0YUAyQEBaCiAg
ICAgP21vbnRoRnJvbURheUluWWVhckBXVEZAQFlBSEhfTkBaCiAgICAgP21zVG9ZZWFyQFdURkBA
WUFITkBaCiAgICAgP25hbWVASW50ZXJuYWxGdW5jdGlvbkBKU0NAQFFBRUFCVlVTdHJpbmdAMkBQ
QVZFeGVjU3RhdGVAMkBAWgpAQCAtMjY3LDYgKzI2OCw3IEBAIEVYUE9SVFMKICAgICA/cHV0QFN0
cmluZ09iamVjdEBKU0NAQFVBRVhQQVZFeGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFs
dWVAMkBBQVZQdXRQcm9wZXJ0eVNsb3RAMkBAWgogICAgID9wdXREaXJlY3RGdW5jdGlvbkBKU09i
amVjdEBKU0NAQFFBRVhQQVZFeGVjU3RhdGVAMkBQQVZJbnRlcm5hbEZ1bmN0aW9uQDJASUBaCiAg
ICAgP3B1dERpcmVjdEZ1bmN0aW9uQEpTT2JqZWN0QEpTQ0BAUUFFWFBBVkV4ZWNTdGF0ZUAyQFBB
VkpTRnVuY3Rpb25AMkBJQFoKKyAgICA/cHV0RGlyZWN0SW50ZXJuYWxASlNPYmplY3RASlNDQEBB
QUVfTkFBVkpTR2xvYmFsRGF0YUAyQEFCVklkZW50aWZpZXJAMkBWSlNWYWx1ZUAyQElfTkFBVlB1
dFByb3BlcnR5U2xvdEAyQFBBVkpTQ2VsbEAyQEBaCiAgICAgP3B1dFdpdGhBdHRyaWJ1dGVzQEpT
R2xvYmFsT2JqZWN0QEpTQ0BAVUFFWFBBVkV4ZWNTdGF0ZUAyQEFCVklkZW50aWZpZXJAMkBWSlNW
YWx1ZUAyQElAWgogICAgID9wdXRXaXRoQXR0cmlidXRlc0BKU09iamVjdEBKU0NAQFVBRVhQQVZF
eGVjU3RhdGVAMkBBQlZJZGVudGlmaWVyQDJAVkpTVmFsdWVAMkBJQFoKICAgICA/cHV0V2l0aEF0
dHJpYnV0ZXNASlNPYmplY3RASlNDQEBVQUVYUEFWRXhlY1N0YXRlQDJAQUJWSWRlbnRpZmllckAy
QFZKU1ZhbHVlQDJASV9OQUFWUHV0UHJvcGVydHlTbG90QDJAQFoKQEAgLTMwMSw2ICszMDMsNyBA
QCBFWFBPUlRTCiAgICAgP3NldExvY0BTdGF0ZW1lbnROb2RlQEpTQ0BAUUFFWEhIQFoKICAgICA/
c2V0TWFpblRocmVhZENhbGxiYWNrc1BhdXNlZEBXVEZAQFlBWF9OQFoKICAgICA/c2V0T3JkZXJM
b3dlckZpcnN0QENvbGxhdG9yQFdURkBAUUFFWF9OQFoKKyAgICA/c2V0UHJvdG90eXBlQEpTT2Jq
ZWN0QEpTQ0BAUUFFWEFBVkpTR2xvYmFsRGF0YUAyQFZKU1ZhbHVlQDJAQFoKICAgICA/c2V0U2V0
dGVyQFByb3BlcnR5RGVzY3JpcHRvckBKU0NAQFFBRVhWSlNWYWx1ZUAyQEBaCiAgICAgP3NldFVu
ZGVmaW5lZEBQcm9wZXJ0eURlc2NyaXB0b3JASlNDQEBRQUVYWFoKICAgICA/c2V0VXBTdGF0aWNG
dW5jdGlvblNsb3RASlNDQEBZQVhQQVZFeGVjU3RhdGVAMUBQQlZIYXNoRW50cnlAMUBQQVZKU09i
amVjdEAxQEFCVklkZW50aWZpZXJAMUBBQVZQcm9wZXJ0eVNsb3RAMUBAWgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAppbmRleCBmMjY4YmVmMDAzMzg0OTAyYzYxYzRjNjhlYmUwNWJkYzI4NjJhMmQ5Li44M2U0NTky
MzFhMGZjMDAzMjJiODIxMDRlYmY0NTY2Mjc2MjkwYzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MjYyLDcgKzI2Miw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm9n
cmFtTm9kZSogcHJvZ3JhbU5vZGUsIFNjb3BlQ2hhaW5Ob2RlKiBzCiAgICAgICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8aW50LCBib29sPiwgMTY+IGZ1bmN0aW9uSW5mbyhmdW5jdGlvblN0YWNrLnNpemUo
KSk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7
ICsraSkgewogICAgICAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5jdGlv
blN0YWNrW2ldOwotICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVEaXJlY3QoZnVuY3Rp
b24tPmlkZW50KCkpOyAvLyBNYWtlIHN1cmUgb3VyIG5ldyBmdW5jdGlvbiBpcyBub3Qgc2hhZG93
ZWQgYnkgYW4gb2xkIHByb3BlcnR5LgorICAgICAgICAgICAgZ2xvYmFsT2JqZWN0LT5yZW1vdmVE
aXJlY3QoKm1fZ2xvYmFsRGF0YSwgZnVuY3Rpb24tPmlkZW50KCkpOyAvLyBNYWtlIHN1cmUgb3Vy
IG5ldyBmdW5jdGlvbiBpcyBub3Qgc2hhZG93ZWQgYnkgYW4gb2xkIHByb3BlcnR5LgogICAgICAg
ICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IHN5bWJvbFRhYmxlLT5pbmxpbmVHZXQoZnVu
Y3Rpb24tPmlkZW50KCkuaW1wbCgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGVu
dHJ5LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKaW5kZXggNjcwMjQwNDNjNjNlYzM4Yjk5OWI4M2M2ZWI0YjZiZmMzZDAx
MjQ2Yy4uZDc5YzU4MWUzNjE3MWY0Y2NjZmFkNTdiYzMzYmQ1MzY1NzI0OTRiYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC02
MjAsNyArNjIwLDcgQEAgc3RhdGljIHZvaWQgYXBwZW5kU291cmNlVG9FcnJvcihDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgRXJyb3JJbnN0YW5jZSogZXhjZXB0aW9uLAogICAgICAgICByZXR1cm47CiAK
ICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCk7
Ci0gICAgSlNWYWx1ZSBqc01lc3NhZ2UgPSBleGNlcHRpb24tPmdldERpcmVjdChnbG9iYWxEYXRh
LT5wcm9wZXJ0eU5hbWVzLT5tZXNzYWdlKTsKKyAgICBKU1ZhbHVlIGpzTWVzc2FnZSA9IGV4Y2Vw
dGlvbi0+Z2V0RGlyZWN0KCpnbG9iYWxEYXRhLCBnbG9iYWxEYXRhLT5wcm9wZXJ0eU5hbWVzLT5t
ZXNzYWdlKTsKICAgICBpZiAoIWpzTWVzc2FnZSB8fCAhanNNZXNzYWdlLmlzU3RyaW5nKCkpCiAg
ICAgICAgIHJldHVybjsKIApAQCAtMTM2NCw3ICsxMzY0LDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQg
SW50ZXJwcmV0ZXI6OnRyeUNhY2hlR2V0QnlJRChDYWxsRnJhbWUqIGNhbGxGcmFtZSwgQ29kZUJs
b2NrKgogICAgICAgICAvLyBzaG91bGQgbm90IGJlIHRyZWF0ZWQgYXMgYSBkaWN0aW9uYXJ5Lgog
ICAgICAgICBpZiAoYmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmlzRGljdGlvbmFyeSgpKSB7CiAg
ICAgICAgICAgICBiYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSk7Ci0gICAgICAgICAgICBvZmZzZXQgPSBiYXNlT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+Z2V0KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBvZmZzZXQgPSBiYXNlT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUp
OwogICAgICAgICB9CiAKICAgICAgICAgQVNTRVJUKCFiYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKSk7CkBAIC0zMDc5LDcgKzMwNzksNyBAQCBza2lwX2lk
X2N1c3RvbV9zZWxmOgogCiAgICAgICAgICAgICAgICAgaW50IHZhbHVlID0gdlBDWzNdLnUub3Bl
cmFuZDsKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBvZmZzZXQgPSB2UENbN10udS5vcGVyYW5k
OwotICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2JqZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihi
YXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjb2RlQmxvY2stPmlkZW50aWZpZXIodlBDWzJd
LnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOworICAgICAgICAgICAgICAgIEFTU0VSVChiYXNlT2Jq
ZWN0LT5vZmZzZXRGb3JMb2NhdGlvbihiYXNlT2JqZWN0LT5nZXREaXJlY3RMb2NhdGlvbihjYWxs
RnJhbWUtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5pZGVudGlmaWVyKHZQQ1syXS51Lm9wZXJh
bmQpKSkgPT0gb2Zmc2V0KTsKICAgICAgICAgICAgICAgICBiYXNlT2JqZWN0LT5wdXREaXJlY3RP
ZmZzZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIG9mZnNldCwgY2FsbEZyYW1lLT5yKHZhbHVl
KS5qc1ZhbHVlKCkpOwogCiAgICAgICAgICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5HVEgob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb24pOwpAQCAtMzExNCw3ICszMTE0LDcgQEAgc2tpcF9pZF9jdXN0
b21fc2VsZjoKICAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSB2UENbM10udS5vcGVyYW5kOwog
ICAgICAgICAgICAgICAgIHVuc2lnbmVkIG9mZnNldCA9IHZQQ1s1XS51Lm9wZXJhbmQ7CiAgICAg
ICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgQVNTRVJUKGJhc2VPYmplY3QtPm9mZnNldEZv
ckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExvY2F0aW9uKGNvZGVCbG9jay0+aWRlbnRp
Zmllcih2UENbMl0udS5vcGVyYW5kKSkpID09IG9mZnNldCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKGJhc2VPYmplY3QtPm9mZnNldEZvckxvY2F0aW9uKGJhc2VPYmplY3QtPmdldERpcmVjdExv
Y2F0aW9uKGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPmlkZW50aWZpZXIodlBD
WzJdLnUub3BlcmFuZCkpKSA9PSBvZmZzZXQpOwogICAgICAgICAgICAgICAgIGJhc2VPYmplY3Qt
PnB1dERpcmVjdE9mZnNldChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgb2Zmc2V0LCBjYWxsRnJh
bWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAKICAgICAgICAgICAgICAgICB2UEMgKz0gT1BDT0RF
X0xFTkdUSChvcF9wdXRfYnlfaWRfcmVwbGFjZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCmluZGV4IDkyMmJkNTk2NDNkYTNmZjFiMGI2Yjc2NGZhYWY5ZmYzYmYwODQ0OGIu
LmZlMjZkY2FhMTYzMmI0NjdjMWYxOGNmNzM0ZjYzZjEwY2FkNTNmNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCkBAIC05MTksNyArOTE5LDcgQEAgTkVWRVJfSU5MSU5F
IHZvaWQgSklUVGh1bmtzOjp0cnlDYWNoZUdldEJ5SUQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIENv
ZGVCbG9jayogY28KICAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSB0cmVhdGVkIGFzIGEgZGljdGlv
bmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9u
YXJ5KCkpIHsKICAgICAgICAgICAgIHNsb3RCYXNlT2JqZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9i
amVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7Ci0gICAgICAgICAgICBvZmZzZXQgPSBzbG90
QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAg
b2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVyZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9i
YWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHN0
dWJJbmZvLT5pbml0R2V0QnlJZFByb3RvKHN0cnVjdHVyZSwgc2xvdEJhc2VPYmplY3QtPnN0cnVj
dHVyZSgpKTsKQEAgLTE3NDQsNyArMTc0NCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKEVuY29k
ZWRKU1ZhbHVlLCBvcF9nZXRfYnlfaWRfcHJvdG9fbGlzdCkKICAgICAgICAgLy8gc2hvdWxkIG5v
dCBiZSB0cmVhdGVkIGFzIGEgZGljdGlvbmFyeS4KICAgICAgICAgaWYgKHNsb3RCYXNlT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNEaWN0aW9uYXJ5KCkpIHsKICAgICAgICAgICAgIHNsb3RCYXNlT2Jq
ZWN0LT5mbGF0dGVuRGljdGlvbmFyeU9iamVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSk7Ci0g
ICAgICAgICAgICBvZmZzZXQgPSBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlKCktPmdldChwcm9w
ZXJ0eU5hbWUpOworICAgICAgICAgICAgb2Zmc2V0ID0gc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVy
ZSgpLT5nZXQoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IH0KIAogICAgICAgICBpbnQgbGlzdEluZGV4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0JhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgKaW5kZXggMGY2
YTY0NjU0ZDhkM2IyYzBlMzFhZDIxYWRhN2YyODI0MzgwZjM3Yy4uZWRlZWM1NzU2YTFkM2RhMjFj
ZmJhZWJhYjhmOTg4NjczODI4MTY5ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgLCBtX29iamVjdChvYmplY3QpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9vYmplY3QtPnN0cnVjdHVyZSgpLT5pc0RpY3Rp
b25hcnkoKSkKLSAgICAgICAgICAgICAgICBtX29iamVjdC0+c2V0U3RydWN0dXJlKFN0cnVjdHVy
ZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihtX29iamVjdC0+c3RydWN0dXJlKCkp
KTsKKyAgICAgICAgICAgICAgICBtX29iamVjdC0+c2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6dG9D
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBtX29iamVjdC0+c3RydWN0
dXJlKCkpKTsKICAgICAgICAgfQogCiAgICAgICAgIH5CYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
cigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1
bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwCmluZGV4IDI3MTA2YTE4NGU2ZjAyMmJhZGUzMmI4ZWUzZDVkZGI0MjA4MmNmMWIuLjYw
OTE4MzFhNWZhODBiMDYxNTA3M2JmZTY5NTI5YjA5ZDFlM2Y1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCkBAIC01MSwxMiAr
NTEsMTIgQEAgSW50ZXJuYWxGdW5jdGlvbjo6SW50ZXJuYWxGdW5jdGlvbihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogY29uc3QgVVN0cmluZyYgSW50ZXJu
YWxGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgcmV0dXJuIGFzU3RyaW5n
KGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlH
ZXRWYWx1ZSgpOworICAgIHJldHVybiBhc1N0cmluZyhnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFtZSkpLT50cnlHZXRWYWx1
ZSgpOwogfQogCiBjb25zdCBVU3RyaW5nIEludGVybmFsRnVuY3Rpb246OmRpc3BsYXlOYW1lKEV4
ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CisgICAgSlNWYWx1
ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmdsb2Jh
bERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCiAgICAgaWYgKGRpc3Bs
YXlOYW1lICYmIGlzSlNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZGlzcGxheU5hbWUpKQog
ICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1ZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5jcHAKaW5kZXggZDBj
NTBkZDY3NGE0YTgyNzE3MDMyZTAyMTNkNjIwMGI3ODcwMzc1MS4uODNiNmExYzEyYzRjOGRkNWRl
OTBlMDQ3NzM1MjEwODM1OTQ3MGI4YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNBY3RpdmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FjdGl2YXRpb24uY3BwCkBAIC0xNDIsNyArMTQyLDcgQEAgYm9vbCBKU0FjdGl2YXRp
b246OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnQKICAgICBpZiAoc3ltYm9sVGFibGVHZXQocHJvcGVydHlOYW1lLCBzbG90KSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiog
bG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKFdy
aXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIHNsb3Quc2V0VmFsdWUo
bG9jYXRpb24tPmdldCgpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkYmZjNjA2NTVlMmMz
M2NmZTA1ZWJkYTY3NDQ2Zjc5NmU3MjAwMzRjLi5iOGU0OTliNjg3OWNiM2JlMTFlOWM1NzcyMWJl
OTRlYWM1ZTA3ZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmNwcApAQCAtMTEyLDEyICsxMTIsMTIgQEAgc3RhdGljIHZvaWQgY3JlYXRlRGVzY3JpcHRv
ckZvclRocm93aW5nUHJvcGVydHkoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eURlc2NyaXAKIAog
Y29uc3QgVVN0cmluZyYgSlNGdW5jdGlvbjo6bmFtZShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAg
cmV0dXJuIGFzU3RyaW5nKGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1l
cy0+bmFtZSkpLT50cnlHZXRWYWx1ZSgpOworICAgIHJldHVybiBhc1N0cmluZyhnZXREaXJlY3Qo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5nbG9iYWxEYXRhKCkucHJvcGVydHlOYW1lcy0+bmFt
ZSkpLT50cnlHZXRWYWx1ZSgpOwogfQogCiBjb25zdCBVU3RyaW5nIEpTRnVuY3Rpb246OmRpc3Bs
YXlOYW1lKEV4ZWNTdGF0ZSogZXhlYykKIHsKLSAgICBKU1ZhbHVlIGRpc3BsYXlOYW1lID0gZ2V0
RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7Cisg
ICAgSlNWYWx1ZSBkaXNwbGF5TmFtZSA9IGdldERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMtPmdsb2JhbERhdGEoKS5wcm9wZXJ0eU5hbWVzLT5kaXNwbGF5TmFtZSk7CiAgICAgCiAgICAg
aWYgKGRpc3BsYXlOYW1lICYmIGlzSlNTdHJpbmcoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZGlzcGxh
eU5hbWUpKQogICAgICAgICByZXR1cm4gYXNTdHJpbmcoZGlzcGxheU5hbWUpLT50cnlHZXRWYWx1
ZSgpOwpAQCAtMTg2LDEzICsxODYsMTMgQEAgYm9vbCBKU0Z1bmN0aW9uOjpnZXRPd25Qcm9wZXJ0
eVNsb3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU4KICAgICAg
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNs
b3QpOwogCiAgICAgaWYgKHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkucHJv
dG90eXBlKSB7Ci0gICAgICAgIFdyaXRlQmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0g
Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxVbmtub3duPiogbG9jYXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSk7CiAKICAgICAgICAgaWYgKCFsb2NhdGlvbikgewogICAgICAgICAg
ICAgSlNPYmplY3QqIHByb3RvdHlwZSA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHNjb3Bl
KCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKSk7CiAgICAgICAgICAgICBw
cm90b3R5cGUtPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPnByb3BlcnR5TmFt
ZXMoKS5jb25zdHJ1Y3RvciwgdGhpcywgRG9udEVudW0pOwogICAgICAgICAgICAgcHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+cHJvcGVydHlOYW1lcygpLnByb3RvdHlwZSwgcHJv
dG90eXBlLCBEb250RGVsZXRlIHwgRG9udEVudW0pOwotICAgICAgICAgICAgbG9jYXRpb24gPSBn
ZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpOworICAgICAgICAgICAgbG9jYXRpb24gPSBn
ZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3BlcnR5TmFtZSk7CiAgICAg
ICAgIH0KIAogICAgICAgICBzbG90LnNldFZhbHVlKHRoaXMsIGxvY2F0aW9uLT5nZXQoKSwgb2Zm
c2V0Rm9yTG9jYXRpb24obG9jYXRpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA0MTEwOGM0NmU5NjUxNjdiMDBiOGRhYTIw
YWU3Y2YyNjEzZjFhMDE5Li44NGM4NWFlN2FjZjgyZmNiYTkzN2Q0NWQ3YjJhZWQ3MzMzZWY2NjMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0xMzcsMTEgKzEzNywxMSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjpwdXRXaXRoQXR0
cmlidXRlcyhFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcgogICAgIGlm
IChzeW1ib2xUYWJsZVB1dFdpdGhBdHRyaWJ1dGVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVy
dHlOYW1lLCB2YWx1ZSwgYXR0cmlidXRlcykpCiAgICAgICAgIHJldHVybjsKIAotICAgIEpTVmFs
dWUgdmFsdWVCZWZvcmUgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKKyAgICBKU1ZhbHVlIHZh
bHVlQmVmb3JlID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsK
ICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICBKU1ZhcmlhYmxlT2JqZWN0OjpwdXQoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgc2xvdCk7CiAgICAgaWYgKCF2YWx1ZUJlZm9yZSkgewot
ICAgICAgICBKU1ZhbHVlIHZhbHVlQWZ0ZXIgPSBnZXREaXJlY3QocHJvcGVydHlOYW1lKTsKKyAg
ICAgICAgSlNWYWx1ZSB2YWx1ZUFmdGVyID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwg
cHJvcGVydHlOYW1lKTsKICAgICAgICAgaWYgKHZhbHVlQWZ0ZXIpCiAgICAgICAgICAgICBKU09i
amVjdDo6cHV0V2l0aEF0dHJpYnV0ZXMoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZUFmdGVyLCBh
dHRyaWJ1dGVzKTsKICAgICB9CkBAIC0yOTksMTggKzI5OSwxOCBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldChKU1ZhbHVlIHByb3RvdHlwZSkKICAgICBwdXREaXJlY3RGdW5jdGlvbldpdGhv
dXRUcmFuc2l0aW9uKGV4ZWMsIG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCB0aGlzLCBtX2Z1
bmN0aW9uU3RydWN0dXJlLmdldCgpLCAxLCBJZGVudGlmaWVyKGV4ZWMsICJqc2NwcmludCIpLCBn
bG9iYWxGdW5jSlNDUHJpbnQpLCBEb250RW51bSk7CiAjZW5kaWYKIAotICAgIHJlc2V0UHJvdG90
eXBlKHByb3RvdHlwZSk7CisgICAgcmVzZXRQcm90b3R5cGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm90b3R5cGUpOwogfQogCiAvLyBTZXQgcHJvdG90eXBlLCBhbmQgYWxzbyBpbnNlcnQgdGhlIG9i
amVjdCBwcm90b3R5cGUgYXQgdGhlIGVuZCBvZiB0aGUgY2hhaW4uCi12b2lkIEpTR2xvYmFsT2Jq
ZWN0OjpyZXNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSkKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3Q6OnJlc2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90
b3R5cGUpCiB7Ci0gICAgc2V0UHJvdG90eXBlKHByb3RvdHlwZSk7CisgICAgc2V0UHJvdG90eXBl
KGdsb2JhbERhdGEsIHByb3RvdHlwZSk7CiAKICAgICBKU09iamVjdCogb2xkTGFzdEluUHJvdG90
eXBlQ2hhaW4gPSBsYXN0SW5Qcm90b3R5cGVDaGFpbih0aGlzKTsKICAgICBKU09iamVjdCogb2Jq
ZWN0UHJvdG90eXBlID0gbV9vYmplY3RQcm90b3R5cGUuZ2V0KCk7CiAgICAgaWYgKG9sZExhc3RJ
blByb3RvdHlwZUNoYWluICE9IG9iamVjdFByb3RvdHlwZSkKLSAgICAgICAgb2xkTGFzdEluUHJv
dG90eXBlQ2hhaW4tPnNldFByb3RvdHlwZShvYmplY3RQcm90b3R5cGUpOworICAgICAgICBvbGRM
YXN0SW5Qcm90b3R5cGVDaGFpbi0+c2V0UHJvdG90eXBlKGdsb2JhbERhdGEsIG9iamVjdFByb3Rv
dHlwZSk7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3Q6Om1hcmtDaGlsZHJlbihNYXJrU3RhY2sm
IG1hcmtTdGFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IDAwZWY1Y2I4YmE4MGQ5YzNkM2UwYjhlYWVjOTIzZmNkN2NkMjAwNjYuLjMw
MGY0YjA0OTg1ODk2NWUzYzEyOTBmZjEzYTE0N2IzZDhiNDA1NzUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMjM1LDcgKzIzNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlHbG9iYWxzVG8oUmVnaXN0ZXJGaWxl
Jik7CiAgICAgICAgIHZvaWQgcmVzaXplUmVnaXN0ZXJzKGludCBvbGRTaXplLCBpbnQgbmV3U2l6
ZSk7CiAKLSAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSk7Cisg
ICAgICAgIHZvaWQgcmVzZXRQcm90b3R5cGUoSlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5
cGUpOwogCiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIGNvbnN0IHsgcmV0dXJu
ICptX2dsb2JhbERhdGEuZ2V0KCk7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCmluZGV4IGIzMDc1NDA3OWNiOTQ0YjNhYTYwNjNmOTU4YjViMzAwYTRiNjUx
YTQuLmFiNDcyZDQ2OTM3ZDgzZjI4Mzk4MTFhZGJiN2EwOTBjYjFiNGZkYTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTEwOSw3ICsxMDksNyBAQCB2
b2lkIEpTT2JqZWN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdQogICAgICAgICAvLyBTZXR0aW5nIF9fcHJvdG9fXyB0byBh
IG5vbi1vYmplY3QsIG5vbi1udWxsIHZhbHVlIGlzIHNpbGVudGx5IGlnbm9yZWQgdG8gbWF0Y2gg
TW96aWxsYS4KICAgICAgICAgaWYgKCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwo
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKCFzZXRQcm90b3R5cGVXaXRoQ3lj
bGVDaGVjayh2YWx1ZSkpCisgICAgICAgIGlmICghc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
ZXhlYy0+Z2xvYmFsRGF0YSgpLCB2YWx1ZSkpCiAgICAgICAgICAgICB0aHJvd0Vycm9yKGV4ZWMs
IGNyZWF0ZUVycm9yKGV4ZWMsICJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgdm9pZCBKU09iamVjdDo6cHV0KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZh
bHUKICAgICAKICAgICB1bnNpZ25lZCBhdHRyaWJ1dGVzOwogICAgIEpTQ2VsbCogc3BlY2lmaWNW
YWx1ZTsKLSAgICBpZiAoKG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVz
LCBzcGVjaWZpY1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSAmJiBhdHRyaWJ1dGVzICYgUmVhZE9u
bHkpIHsKKyAgICBpZiAoKG1fc3RydWN0dXJlLT5nZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpICE9IFdURjo6bm90Rm91bmQpICYm
IGF0dHJpYnV0ZXMgJiBSZWFkT25seSkgewogICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIFN0
cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCiAgICAgZm9yIChKU09iamVjdCogb2JqID0gdGhpczsgOyBvYmogPSBhc09iamVjdChw
cm90b3R5cGUpKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIGdzID0gb2JqLT5nZXREaXJlY3QocHJv
cGVydHlOYW1lKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSBncyA9IG9iai0+Z2V0RGlyZWN0KGV4
ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkgewogICAgICAgICAgICAgaWYgKGdzLmlz
R2V0dGVyU2V0dGVyKCkpIHsKICAgICAgICAgICAgICAgICBKU09iamVjdCogc2V0dGVyRnVuYyA9
IGFzR2V0dGVyU2V0dGVyKGdzKS0+c2V0dGVyKCk7ICAgICAgICAKICAgICAgICAgICAgICAgICBp
ZiAoIXNldHRlckZ1bmMpIHsKQEAgLTIxOCwxMCArMjE4LDEwIEBAIGJvb2wgSlNPYmplY3Q6OmRl
bGV0ZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7CiAgICAgSlNDZWxsKiBzcGVjaWZpY1Zh
bHVlOwotICAgIGlmIChtX3N0cnVjdHVyZS0+Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywg
c3BlY2lmaWNWYWx1ZSkgIT0gV1RGOjpub3RGb3VuZCkgeworICAgIGlmIChtX3N0cnVjdHVyZS0+
Z2V0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZp
Y1ZhbHVlKSAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIGlmICgoYXR0cmlidXRlcyAmIERv
bnREZWxldGUpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZW1vdmVEaXJl
Y3QocHJvcGVydHlOYW1lKTsKKyAgICAgICAgcmVtb3ZlRGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgcHJvcGVydHlOYW1lKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC0zMTIs
MzQgKzMxMiwzNSBAQCBjb25zdCBIYXNoRW50cnkqIEpTT2JqZWN0OjpmaW5kUHJvcGVydHlIYXNo
RW50cnkoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaQogCiB2b2lkIEpTT2JqZWN0Ojpk
ZWZpbmVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIEpTT2JqZWN0KiBnZXR0ZXJGdW5jdGlvbiwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKLSAg
ICBKU1ZhbHVlIG9iamVjdCA9IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUg
b2JqZWN0ID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKTsKICAg
ICBpZiAob2JqZWN0ICYmIG9iamVjdC5pc0dldHRlclNldHRlcigpKSB7CiAgICAgICAgIEFTU0VS
VChtX3N0cnVjdHVyZS0+aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpKTsKICAgICAgICAgYXNH
ZXR0ZXJTZXR0ZXIob2JqZWN0KS0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgZ2V0dGVy
RnVuY3Rpb24pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
OwogICAgIEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0gbmV3IChleGVjKSBHZXR0ZXJTZXR0
ZXIoZXhlYyk7Ci0gICAgcHV0RGlyZWN0SW50ZXJuYWwoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9w
ZXJ0eU5hbWUsIGdldHRlclNldHRlciwgYXR0cmlidXRlcyB8IEdldHRlciwgdHJ1ZSwgc2xvdCk7
CisgICAgcHV0RGlyZWN0SW50ZXJuYWwoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLCBnZXR0ZXJT
ZXR0ZXIsIGF0dHJpYnV0ZXMgfCBHZXR0ZXIsIHRydWUsIHNsb3QpOwogCiAgICAgLy8gcHV0RGly
ZWN0IHdpbGwgY2hhbmdlIG91ciBTdHJ1Y3R1cmUgaWYgd2UgYWRkIGEgbmV3IHByb3BlcnR5LiBG
b3IKICAgICAvLyBnZXR0ZXJzIGFuZCBzZXR0ZXJzLCB0aG91Z2gsIHdlIGFsc28gbmVlZCB0byBj
aGFuZ2Ugb3VyIFN0cnVjdHVyZQogICAgIC8vIGlmIHdlIG92ZXJyaWRlIGFuIGV4aXN0aW5nIG5v
bi1nZXR0ZXIgb3Igbm9uLXNldHRlci4KICAgICBpZiAoc2xvdC50eXBlKCkgIT0gUHV0UHJvcGVy
dHlTbG90OjpOZXdQcm9wZXJ0eSkgewogICAgICAgICBpZiAoIW1fc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSkgewotICAgICAgICAgICAgUmVmUHRyPFN0cnVjdHVyZT4gc3RydWN0dXJlID0gU3Ry
dWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKG1fc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Z2V0dGVyU2V0dGVyVHJh
bnNpdGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSk7CiAgICAgICAgICAgICBzZXRTdHJ1Y3R1
cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBtX3N0cnVj
dHVyZS0+c2V0SGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcyh0cnVlKTsKLSAgICBnZXR0ZXJTZXR0
ZXItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGdldHRlckZ1bmN0aW9uKTsKKyAgICBn
ZXR0ZXJTZXR0ZXItPnNldEdldHRlcihnbG9iYWxEYXRhLCBnZXR0ZXJGdW5jdGlvbik7CiB9CiAK
IHZvaWQgSlNPYmplY3Q6OmRlZmluZVNldHRlcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSwgSlNPYmplY3QqIHNldHRlckZ1bmN0aW9uLCB1bnNpZ25lZCBh
dHRyaWJ1dGVzKQogewotICAgIEpTVmFsdWUgb2JqZWN0ID0gZ2V0RGlyZWN0KHByb3BlcnR5TmFt
ZSk7CisgICAgSlNWYWx1ZSBvYmplY3QgPSBnZXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBw
cm9wZXJ0eU5hbWUpOwogICAgIGlmIChvYmplY3QgJiYgb2JqZWN0LmlzR2V0dGVyU2V0dGVyKCkp
IHsKICAgICAgICAgQVNTRVJUKG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVz
KCkpOwogICAgICAgICBhc0dldHRlclNldHRlcihvYmplY3QpLT5zZXRTZXR0ZXIoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBzZXR0ZXJGdW5jdGlvbik7CkBAIC0zNTUsNyArMzU2LDcgQEAgdm9pZCBKU09i
amVjdDo6ZGVmaW5lU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lLCBKU08KICAgICAvLyBpZiB3ZSBvdmVycmlkZSBhbiBleGlzdGluZyBub24tZ2V0
dGVyIG9yIG5vbi1zZXR0ZXIuCiAgICAgaWYgKHNsb3QudHlwZSgpICE9IFB1dFByb3BlcnR5U2xv
dDo6TmV3UHJvcGVydHkpIHsKICAgICAgICAgaWYgKCFtX3N0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpIHsKLSAgICAgICAgICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVy
ZTo6Z2V0dGVyU2V0dGVyVHJhbnNpdGlvbihtX3N0cnVjdHVyZSk7CisgICAgICAgICAgICBSZWZQ
dHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1cmU6OmdldHRlclNldHRlclRyYW5zaXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX3N0cnVjdHVyZSk7CiAgICAgICAgICAgICBzZXRTdHJ1
Y3R1cmUoc3RydWN0dXJlLnJlbGVhc2UoKSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0zNjQsMTEg
KzM2NSwxMSBAQCB2b2lkIEpTT2JqZWN0OjpkZWZpbmVTZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTTwogICAgIGdldHRlclNldHRlci0+c2V0
U2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgc2V0dGVyRnVuY3Rpb24pOwogfQogCi1KU1ZhbHVl
IEpTT2JqZWN0Ojpsb29rdXBHZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQorSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0KiBvYmpl
Y3QgPSB0aGlzOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHZhbHVl
ID0gb2JqZWN0LT5nZXREaXJlY3QocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoSlNWYWx1
ZSB2YWx1ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lKSkgewogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgSlNPYmplY3QqIGZ1
bmN0aW9uT2JqZWN0ID0gYXNHZXR0ZXJTZXR0ZXIodmFsdWUpLT5nZXR0ZXIoKTsKQEAgLTM4Mywx
MSArMzg0LDExIEBAIEpTVmFsdWUgSlNPYmplY3Q6Omxvb2t1cEdldHRlcihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiAgICAgfQogfQogCi1KU1ZhbHVlIEpTT2Jq
ZWN0Ojpsb29rdXBTZXR0ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKQorSlNWYWx1ZSBKU09iamVjdDo6bG9va3VwU2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIEpTT2JqZWN0KiBvYmplY3QgPSB0
aGlzOwogICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGlmIChKU1ZhbHVlIHZhbHVlID0gb2Jq
ZWN0LT5nZXREaXJlY3QocHJvcGVydHlOYW1lKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2YWx1
ZSA9IG9iamVjdC0+Z2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lKSkg
ewogICAgICAgICAgICAgaWYgKCF2YWx1ZS5pc0dldHRlclNldHRlcigpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAgICAgSlNPYmplY3QqIGZ1bmN0aW9u
T2JqZWN0ID0gYXNHZXR0ZXJTZXR0ZXIodmFsdWUpLT5zZXR0ZXIoKTsKQEAgLTQyOCwxMCArNDI5
LDEwIEBAIGJvb2wgSlNPYmplY3Q6OnByb3BlcnR5SXNFbnVtZXJhYmxlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOCiAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZW51
bWVyYWJsZSgpOwogfQogCi1ib29sIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUo
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwqJiBzcGVj
aWZpY1ZhbHVlKSBjb25zdAorYm9vbCBKU09iamVjdDo6Z2V0UHJvcGVydHlTcGVjaWZpY1ZhbHVl
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU0NlbGwq
JiBzcGVjaWZpY1ZhbHVlKSBjb25zdAogewogICAgIHVuc2lnbmVkIGF0dHJpYnV0ZXM7Ci0gICAg
aWYgKG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKSAhPSBXVEY6Om5vdEZvdW5kKQorICAgIGlmIChtX3N0cnVjdHVyZS0+Z2V0KGV4ZWMtPmds
b2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKSAhPSBX
VEY6Om5vdEZvdW5kKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFRoaXMgY291bGQg
YmUgYSBmdW5jdGlvbiB3aXRoaW4gdGhlIHN0YXRpYyB0YWJsZT8gLSBzaG91bGQgcHJvYmFibHkK
QEAgLTQ2NCw3ICs0NjUsNyBAQCB2b2lkIEpTT2JqZWN0OjpnZXRQcm9wZXJ0eU5hbWVzKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJyYXkmIHByb3BlcnR5TmFtZQogCiB2b2lkIEpTT2Jq
ZWN0OjpnZXRPd25Qcm9wZXJ0eU5hbWVzKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lQXJy
YXkmIHByb3BlcnR5TmFtZXMsIEVudW1lcmF0aW9uTW9kZSBtb2RlKQogewotICAgIG1fc3RydWN0
dXJlLT5nZXRQcm9wZXJ0eU5hbWVzKHByb3BlcnR5TmFtZXMsIG1vZGUpOworICAgIG1fc3RydWN0
dXJlLT5nZXRQcm9wZXJ0eU5hbWVzKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lcywg
bW9kZSk7CiAgICAgZ2V0Q2xhc3NQcm9wZXJ0eU5hbWVzKGV4ZWMsIGNsYXNzSW5mbygpLCBwcm9w
ZXJ0eU5hbWVzLCBtb2RlKTsKIH0KIApAQCAtNTA5LDMzICs1MTAsMzMgQEAgSlNPYmplY3QqIEpT
T2JqZWN0Ojp1bndyYXBwZWRPYmplY3QoKQogICAgIHJldHVybiB0aGlzOwogfQogCi12b2lkIEpT
T2JqZWN0OjpzZWFsKCkKK3ZvaWQgSlNPYmplY3Q6OnNlYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQogewotICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnNlYWxUcmFuc2l0aW9uKG1fc3Ry
dWN0dXJlKSk7CisgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVyZTo6c2VhbFRyYW5zaXRpb24oZ2xv
YmFsRGF0YSwgbV9zdHJ1Y3R1cmUpKTsKIH0KIAotdm9pZCBKU09iamVjdDo6ZnJlZXplKCkKK3Zv
aWQgSlNPYmplY3Q6OmZyZWV6ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCiB7Ci0gICAgc2V0
U3RydWN0dXJlKFN0cnVjdHVyZTo6ZnJlZXplVHJhbnNpdGlvbihtX3N0cnVjdHVyZSkpOworICAg
IHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9z
dHJ1Y3R1cmUpKTsKIH0KIAotdm9pZCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoKQordm9p
ZCBKU09iamVjdDo6cHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQog
ewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKLSAgICAgICAgc2V0U3RydWN0dXJlKFN0cnVjdHVy
ZTo6cHJldmVudEV4dGVuc2lvbnNUcmFuc2l0aW9uKG1fc3RydWN0dXJlKSk7CisgICAgICAgIHNl
dFN0cnVjdHVyZShTdHJ1Y3R1cmU6OnByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihnbG9iYWxE
YXRhLCBtX3N0cnVjdHVyZSkpOwogfQogCi12b2lkIEpTT2JqZWN0OjpyZW1vdmVEaXJlY3QoY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQordm9pZCBKU09iamVjdDo6cmVtb3ZlRGlyZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1l
KQogewogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKG1fc3RydWN0dXJlLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpKSB7Ci0gICAgICAgIG9mZnNldCA9IG1fc3RydWN0dXJlLT5yZW1vdmVQ
cm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgICAgIG9mZnNldCA9
IG1fc3RydWN0dXJlLT5yZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERhdGEs
IHByb3BlcnR5TmFtZSk7CiAgICAgICAgIGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKICAg
ICAgICAgICAgIHB1dFVuZGVmaW5lZEF0RGlyZWN0T2Zmc2V0KG9mZnNldCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8U3RydWN0dXJlPiBzdHJ1Y3R1cmUgPSBTdHJ1Y3R1
cmU6OnJlbW92ZVByb3BlcnR5VHJhbnNpdGlvbihtX3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lLCBv
ZmZzZXQpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHN0cnVjdHVyZSA9IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIG1fc3RydWN0dXJlLCBwcm9wZXJ0eU5h
bWUsIG9mZnNldCk7CiAgICAgc2V0U3RydWN0dXJlKHN0cnVjdHVyZS5yZWxlYXNlKCkpOwogICAg
IGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkKICAgICAgICAgcHV0VW5kZWZpbmVkQXREaXJl
Y3RPZmZzZXQob2Zmc2V0KTsKQEAgLTU5OCwxMSArNTk5LDExIEBAIHZvaWQgSlNPYmplY3Q6OmFs
bG9jYXRlUHJvcGVydHlTdG9yYWdlKHNpemVfdCBvbGRTaXplLCBzaXplX3QgbmV3U2l6ZSkKICAg
ICBtX3Byb3BlcnR5U3RvcmFnZSA9IG5ld1Byb3BlcnR5U3RvcmFnZTsKIH0KIAotYm9vbCBKU09i
amVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yKQorYm9vbCBK
U09iamVjdDo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2NyaXB0b3Ip
CiB7CiAgICAgdW5zaWduZWQgYXR0cmlidXRlcyA9IDA7CiAgICAgSlNDZWxsKiBjZWxsID0gMDsK
LSAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGF0dHJp
YnV0ZXMsIGNlbGwpOworICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGV4ZWMt
Pmdsb2JhbERhdGEoKSwgcHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBjZWxsKTsKICAgICBpZiAo
b2Zmc2V0ID09IFdURjo6bm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBkZXNj
cmlwdG9yLnNldERlc2NyaXB0b3IoZ2V0RGlyZWN0T2Zmc2V0KG9mZnNldCksIGF0dHJpYnV0ZXMp
OwpAQCAtNzU0LDcgKzc1NSw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgSlNWYWx1ZSBhY2Nlc3NvciA9
IGdldERpcmVjdChwcm9wZXJ0eU5hbWUpOworICAgIEpTVmFsdWUgYWNjZXNzb3IgPSBnZXREaXJl
Y3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghYWNjZXNzb3Ip
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBHZXR0ZXJTZXR0ZXIqIGdldHRlclNldHRlciA9
IGFzR2V0dGVyU2V0dGVyKGFjY2Vzc29yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCmluZGV4IDdhMjQ4ZDJiNjMxZGY5MzQwOGRhMWVlMTMzZTJmYmM1OTAwZDI1ZDAu
LmI1M2FlZmNkMDAzNmFjZGI2NTYwMzY0Y2RhMDhkOTZiZTgyMWE2YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtODcsOCArODcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdmlydHVhbCB+SlNPYmplY3QoKTsKIAogICAgICAgICBKU1ZhbHVlIHBy
b3RvdHlwZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFByb3RvdHlwZShKU1ZhbHVlIHByb3Rv
dHlwZSk7Ci0gICAgICAgIGJvb2wgc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2soSlNWYWx1ZSBw
cm90b3R5cGUpOworICAgICAgICB2b2lkIHNldFByb3RvdHlwZShKU0dsb2JhbERhdGEmLCBKU1Zh
bHVlIHByb3RvdHlwZSk7CisgICAgICAgIGJvb2wgc2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
SlNHbG9iYWxEYXRhJiwgSlNWYWx1ZSBwcm90b3R5cGUpOwogICAgICAgICAKICAgICAgICAgdm9p
ZCBzZXRTdHJ1Y3R1cmUoTm9uTnVsbFBhc3NSZWZQdHI8U3RydWN0dXJlPik7CiAgICAgICAgIFN0
cnVjdHVyZSogaW5oZXJpdG9ySUQoSlNHbG9iYWxEYXRhJik7CkBAIC0xNDYsMjIgKzE0NiwyMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBnZXRQcm9wZXJ0eVNwZWNpZmljVmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpTQ2VsbCom
IHNwZWNpZmljRnVuY3Rpb24pIGNvbnN0OwogCiAgICAgICAgIC8vIFRoaXMgZ2V0IGZ1bmN0aW9u
IG9ubHkgbG9va3MgYXQgdGhlIHByb3BlcnR5IG1hcC4KLSAgICAgICAgSlNWYWx1ZSBnZXREaXJl
Y3QoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICBKU1ZhbHVl
IGdldERpcmVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSkgY29uc3QKICAgICAgICAgewotICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9
IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlOYW1lKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZz
ZXQgPSBtX3N0cnVjdHVyZS0+Z2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0ICE9IFdURjo6bm90Rm91bmQgPyBnZXREaXJlY3RPZmZzZXQob2Zm
c2V0KSA6IEpTVmFsdWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIFdyaXRlQmFycmllckJhc2U8
VW5rbm93bj4qIGdldERpcmVjdExvY2F0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKKyAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogZ2V0RGlyZWN0TG9jYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUp
CiAgICAgICAgIHsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+Z2V0
KHByb3BlcnR5TmFtZSk7CisgICAgICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUt
PmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgcmV0dXJuIG9mZnNl
dCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7CiAgICAg
ICAgIH0KIAotICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2Nh
dGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBhdHRyaWJ1dGVz
KQorICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBnZXREaXJlY3RMb2NhdGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
dW5zaWduZWQmIGF0dHJpYnV0ZXMpCiAgICAgICAgIHsKICAgICAgICAgICAgIEpTQ2VsbCogc3Bl
Y2lmaWNGdW5jdGlvbjsKLSAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtX3N0cnVjdHVyZS0+
Z2V0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNGdW5jdGlvbik7CisgICAgICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0
eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljRnVuY3Rpb24pOwogICAgICAgICAgICAgcmV0dXJu
IG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kID8gbG9jYXRpb25Gb3JPZmZzZXQob2Zmc2V0KSA6IDA7
CiAgICAgICAgIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHZvaWQgdHJhbnNpdGlvblRvKFN0cnVjdHVyZSopOwogCi0gICAgICAgIHZvaWQgcmVtb3Zl
RGlyZWN0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CisgICAgICAgIHZvaWQgcmVt
b3ZlRGlyZWN0KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
CiAgICAgICAgIGJvb2wgaGFzQ3VzdG9tUHJvcGVydGllcygpIHsgcmV0dXJuICFtX3N0cnVjdHVy
ZS0+aXNFbXB0eSgpOyB9CiAgICAgICAgIGJvb2wgaGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygp
IHsgcmV0dXJuIG1fc3RydWN0dXJlLT5oYXNHZXR0ZXJTZXR0ZXJQcm9wZXJ0aWVzKCk7IH0KIApA
QCAtMjA5LDExICsyMDksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1N0cmljdE1vZGVGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0Vycm9ySW5zdGFuY2UoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
Ci0gICAgICAgIHZvaWQgc2VhbCgpOwotICAgICAgICB2b2lkIGZyZWV6ZSgpOwotICAgICAgICB2
b2lkIHByZXZlbnRFeHRlbnNpb25zKCk7Ci0gICAgICAgIGJvb2wgaXNTZWFsZWQoKSB7IHJldHVy
biBtX3N0cnVjdHVyZS0+aXNTZWFsZWQoKTsgfQotICAgICAgICBib29sIGlzRnJvemVuKCkgeyBy
ZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzRnJvemVuKCk7IH0KKyAgICAgICAgdm9pZCBzZWFsKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2b2lkIGZyZWV6ZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAg
dm9pZCBwcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgYm9vbCBpc1Nl
YWxlZChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpIHsgcmV0dXJuIG1fc3RydWN0dXJlLT5pc1Nl
YWxlZChnbG9iYWxEYXRhKTsgfQorICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzRnJvemVuKGdsb2JhbERhdGEpOyB9
CiAgICAgICAgIGJvb2wgaXNFeHRlbnNpYmxlKCkgeyByZXR1cm4gbV9zdHJ1Y3R1cmUtPmlzRXh0
ZW5zaWJsZSgpOyB9CiAKICAgICAgICAgdmlydHVhbCBDb21wbFR5cGUgZXhjZXB0aW9uVHlwZSgp
IGNvbnN0IHsgcmV0dXJuIFRocm93OyB9CkBAIC00MTYsNyArNDE2LDcgQEAgaW5saW5lIEpTVmFs
dWUgSlNPYmplY3Q6OnByb3RvdHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RydWN0dXJlLT5z
dG9yZWRQcm90b3R5cGUoKTsKIH0KIAotaW5saW5lIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZVdpdGhDeWNsZUNoZWNrKEpTVmFsdWUgcHJvdG90eXBlKQoraW5saW5lIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNW
YWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBlVmFsdWUgPSBwcm90
b3R5cGU7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5cGVWYWx1ZSAmJiBuZXh0UHJvdG90eXBlVmFs
dWUuaXNPYmplY3QoKSkgewpAQCAtNDI1LDE0ICs0MjUsMTQgQEAgaW5saW5lIGJvb2wgSlNPYmpl
Y3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKEpTVmFsdWUgcHJvdG90eXBlKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBuZXh0UHJvdG90eXBlVmFsdWUgPSBuZXh0UHJv
dG90eXBlLT5wcm90b3R5cGUoKTsKICAgICB9Ci0gICAgc2V0UHJvdG90eXBlKHByb3RvdHlwZSk7
CisgICAgc2V0UHJvdG90eXBlKGdsb2JhbERhdGEsIHByb3RvdHlwZSk7CiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLWlubGluZSB2b2lkIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoSlNWYWx1ZSBwcm90
b3R5cGUpCitpbmxpbmUgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSlNWYWx1ZSBwcm90b3R5cGUpCiB7CiAgICAgQVNTRVJUKHByb3RvdHlwZSk7
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gbmV3U3RydWN0dXJlID0gU3RydWN0dXJlOjpjaGFuZ2VQ
cm90b3R5cGVUcmFuc2l0aW9uKG1fc3RydWN0dXJlLCBwcm90b3R5cGUpOworICAgIFJlZlB0cjxT
dHJ1Y3R1cmU+IG5ld1N0cnVjdHVyZSA9IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNp
dGlvbihnbG9iYWxEYXRhLCBtX3N0cnVjdHVyZSwgcHJvdG90eXBlKTsKICAgICBzZXRTdHJ1Y3R1
cmUobmV3U3RydWN0dXJlLnJlbGVhc2UoKSk7CiB9CiAKQEAgLTQ3MSw3ICs0NzEsNyBAQCBpbmxp
bmUgYm9vbCBKU1ZhbHVlOjppbmhlcml0cyhjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbykgY29u
c3QKIAogQUxXQVlTX0lOTElORSBib29sIEpTT2JqZWN0OjppbmxpbmVHZXRPd25Qcm9wZXJ0eVNs
b3QoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIFByb3Bl
cnR5U2xvdCYgc2xvdCkKIHsKLSAgICBpZiAoV3JpdGVCYXJyaWVyQmFzZTxVbmtub3duPiogbG9j
YXRpb24gPSBnZXREaXJlY3RMb2NhdGlvbihwcm9wZXJ0eU5hbWUpKSB7CisgICAgaWYgKFdyaXRl
QmFycmllckJhc2U8VW5rbm93bj4qIGxvY2F0aW9uID0gZ2V0RGlyZWN0TG9jYXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpKSB7CiAgICAgICAgIGlmIChtX3N0cnVjdHVyZS0+
aGFzR2V0dGVyU2V0dGVyUHJvcGVydGllcygpICYmIGxvY2F0aW9uLT5pc0dldHRlclNldHRlcigp
KQogICAgICAgICAgICAgZmlsbEdldHRlclByb3BlcnR5U2xvdChzbG90LCBsb2NhdGlvbik7CiAg
ICAgICAgIGVsc2UKQEAgLTU1NywxMiArNTU3LDEyIEBAIGlubGluZSBib29sIEpTT2JqZWN0Ojpw
dXREaXJlY3RJbnRlcm5hbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZp
CiAgICAgaWYgKG1fc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgewogICAgICAgICB1bnNpZ25l
ZCBjdXJyZW50QXR0cmlidXRlczsKICAgICAgICAgSlNDZWxsKiBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbjsKLSAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5nZXQocHJvcGVydHlO
YW1lLCBjdXJyZW50QXR0cmlidXRlcywgY3VycmVudFNwZWNpZmljRnVuY3Rpb24pOworICAgICAg
ICBzaXplX3Qgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChnbG9iYWxEYXRhLCBwcm9wZXJ0eU5h
bWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5jdGlvbik7CiAgICAgICAg
IGlmIChvZmZzZXQgIT0gV1RGOjpub3RGb3VuZCkgewogICAgICAgICAgICAgLy8gSWYgdGhlcmUg
aXMgY3VycmVudGx5IGEgc3BlY2lmaWMgZnVuY3Rpb24sIGFuZCB0aGVyZSBub3cgZWl0aGVyIGlz
bid0LAogICAgICAgICAgICAgLy8gb3IgdGhlIG5ldyB2YWx1ZSBpcyBkaWZmZXJlbnQsIHRoZW4g
ZGVzcGVjaWZ5LgogICAgICAgICAgICAgaWYgKGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uICYmIChz
cGVjaWZpY0Z1bmN0aW9uICE9IGN1cnJlbnRTcGVjaWZpY0Z1bmN0aW9uKSkKLSAgICAgICAgICAg
ICAgICBtX3N0cnVjdHVyZS0+ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKHByb3BlcnR5TmFt
ZSk7CisgICAgICAgICAgICAgICAgbV9zdHJ1Y3R1cmUtPmRlc3BlY2lmeURpY3Rpb25hcnlGdW5j
dGlvbihnbG9iYWxEYXRhLCBwcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgaWYgKGNoZWNrUmVh
ZE9ubHkgJiYgY3VycmVudEF0dHJpYnV0ZXMgJiBSZWFkT25seSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTU4Miw3ICs1ODIsNyBAQCBpbmxpbmUgYm9vbCBKU09iamVjdDo6
cHV0RGlyZWN0SW50ZXJuYWwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlm
aQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIHNpemVfdCBjdXJyZW50Q2Fw
YWNpdHkgPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKLSAgICAgICAg
b2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24ocHJvcGVy
dHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKKyAgICAgICAgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgcHJv
cGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY0Z1bmN0aW9uKTsKICAgICAgICAgaWYgKGN1
cnJlbnRDYXBhY2l0eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkK
ICAgICAgICAgICAgIGFsbG9jYXRlUHJvcGVydHlTdG9yYWdlKGN1cnJlbnRDYXBhY2l0eSwgbV9z
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpOwogCkBAIC02MTIsNyArNjEyLDcg
QEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmkKIAogICAgIHVuc2lnbmVkIGN1cnJlbnRBdHRyaWJ1
dGVzOwogICAgIEpTQ2VsbCogY3VycmVudFNwZWNpZmljRnVuY3Rpb247Ci0gICAgb2Zmc2V0ID0g
bV9zdHJ1Y3R1cmUtPmdldChwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50
U3BlY2lmaWNGdW5jdGlvbik7CisgICAgb2Zmc2V0ID0gbV9zdHJ1Y3R1cmUtPmdldChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGN1cnJlbnRBdHRyaWJ1dGVzLCBjdXJyZW50U3BlY2lmaWNGdW5j
dGlvbik7CiAgICAgaWYgKG9mZnNldCAhPSBXVEY6Om5vdEZvdW5kKSB7CiAgICAgICAgIGlmIChj
aGVja1JlYWRPbmx5ICYmIGN1cnJlbnRBdHRyaWJ1dGVzICYgUmVhZE9ubHkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC02MzMsNyArNjMzLDcgQEAgaW5saW5lIGJvb2wgSlNPYmplY3Q6
OnB1dERpcmVjdEludGVybmFsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRp
ZmkKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIGNhc2UgKDIpIERlc3BlY2lmeSwgZmFsbCB0aHJvdWdoIHRvICgzKS4KLSAgICAgICAg
ICAgIHNldFN0cnVjdHVyZShTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9uVHJhbnNpdGlvbiht
X3N0cnVjdHVyZSwgcHJvcGVydHlOYW1lKSk7CisgICAgICAgICAgICBzZXRTdHJ1Y3R1cmUoU3Ry
dWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgbV9zdHJ1Y3R1
cmUsIHByb3BlcnR5TmFtZSkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gY2FzZSAoMykgc2V0
IHRoZSBzbG90LCBkbyB0aGUgcHV0LCByZXR1cm4uCkBAIC03MDcsNyArNzA3LDcgQEAgaW5saW5l
IHZvaWQgSlNPYmplY3Q6OnB1dERpcmVjdEZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmkKIGlubGluZSB2b2lkIEpTT2JqZWN0OjpwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBz
aXplX3QgY3VycmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCk7Ci0gICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhv
dXRUcmFuc2l0aW9uKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CisgICAgc2l6ZV90IG9m
ZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGdsb2JhbERh
dGEsIHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgMCk7CiAgICAgaWYgKGN1cnJlbnRDYXBhY2l0
eSAhPSBtX3N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkKICAgICAgICAgYWxs
b2NhdGVQcm9wZXJ0eVN0b3JhZ2UoY3VycmVudENhcGFjaXR5LCBtX3N0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSk7CiAgICAgcHV0RGlyZWN0T2Zmc2V0KGdsb2JhbERhdGEsIG9m
ZnNldCwgdmFsdWUpOwpAQCAtNzE2LDcgKzcxNiw3IEBAIGlubGluZSB2b2lkIEpTT2JqZWN0Ojpw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0
CiBpbmxpbmUgdm9pZCBKU09iamVjdDo6cHV0RGlyZWN0RnVuY3Rpb25XaXRob3V0VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNDZWxsKiB2YWx1ZSwgdW5zaWduZWQgYXR0cmlidXRlcykKIHsKICAgICBzaXplX3QgY3Vy
cmVudENhcGFjaXR5ID0gbV9zdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7Ci0g
ICAgc2l6ZV90IG9mZnNldCA9IG1fc3RydWN0dXJlLT5hZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0
aW9uKHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgdmFsdWUpOworICAgIHNpemVfdCBvZmZzZXQg
PSBtX3N0cnVjdHVyZS0+YWRkUHJvcGVydHlXaXRob3V0VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBw
cm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHZhbHVlKTsKICAgICBpZiAoY3VycmVudENhcGFjaXR5
ICE9IG1fc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBhbGxv
Y2F0ZVByb3BlcnR5U3RvcmFnZShjdXJyZW50Q2FwYWNpdHksIG1fc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKTsKICAgICBwdXREaXJlY3RPZmZzZXQoZ2xvYmFsRGF0YSwgb2Zm
c2V0LCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9M
b29rdXAuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTG9va3VwLmNwcAppbmRl
eCAzMDdiY2ViMjUwYjk1NTkwZDU4M2E0YWE3NTdkNWM1ZmEyOWFiNjBhLi4yNWI1MTZlZmIwZmEy
NmUxOTUyZjU0MzJmZjUxOTk5OTVkZGZjYjQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Mb29rdXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0xvb2t1cC5jcHAKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBzZXRVcFN0YXRpY0Z1bmN0aW9u
U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEhhc2hFbnRyeSogZW50cnksIEpTT2JqZWN0Kgog
ICAgIEFTU0VSVCh0aGlzT2JqLT5zdHJ1Y3R1cmUoKS0+YW5vbnltb3VzU2xvdENvdW50KCkgPiAw
KTsKICAgICBBU1NFUlQodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkuaXNDZWxsKCkgJiYg
YXNPYmplY3QodGhpc09iai0+Z2V0QW5vbnltb3VzVmFsdWUoMCkuYXNDZWxsKCkpLT5pc0dsb2Jh
bE9iamVjdCgpKTsKICAgICBBU1NFUlQoZW50cnktPmF0dHJpYnV0ZXMoKSAmIEZ1bmN0aW9uKTsK
LSAgICBXcml0ZUJhcnJpZXJCYXNlPFVua25vd24+KiBsb2NhdGlvbiA9IHRoaXNPYmotPmdldERp
cmVjdExvY2F0aW9uKHByb3BlcnR5TmFtZSk7CisgICAgV3JpdGVCYXJyaWVyQmFzZTxVbmtub3du
PiogbG9jYXRpb24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIHByb3BlcnR5TmFtZSk7CiAKICAgICBpZiAoIWxvY2F0aW9uKSB7CiAgICAgICAgIEpTRnVu
Y3Rpb24qIGZ1bmN0aW9uOwpAQCAtODYsNyArODYsNyBAQCB2b2lkIHNldFVwU3RhdGljRnVuY3Rp
b25TbG90KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSGFzaEVudHJ5KiBlbnRyeSwgSlNPYmplY3Qq
CiAgICAgICAgICAgICBmdW5jdGlvbiA9IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVuY3Rpb25TdHJ1Y3R1cmUoKSwgZW50cnktPmZ1bmN0
aW9uTGVuZ3RoKCksIHByb3BlcnR5TmFtZSwgZW50cnktPmZ1bmN0aW9uKCkpOwogCiAgICAgICAg
IHRoaXNPYmotPnB1dERpcmVjdEZ1bmN0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgcHJvcGVydHlO
YW1lLCBmdW5jdGlvbiwgZW50cnktPmF0dHJpYnV0ZXMoKSk7Ci0gICAgICAgIGxvY2F0aW9uID0g
dGhpc09iai0+Z2V0RGlyZWN0TG9jYXRpb24ocHJvcGVydHlOYW1lKTsKKyAgICAgICAgbG9jYXRp
b24gPSB0aGlzT2JqLT5nZXREaXJlY3RMb2NhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIHByb3Bl
cnR5TmFtZSk7CiAgICAgfQogCiAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqLCBsb2NhdGlvbi0+
Z2V0KCksIHRoaXNPYmotPm9mZnNldEZvckxvY2F0aW9uKGxvY2F0aW9uKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKaW5kZXgg
YzY0MmE1YjU5ZjJkNTk4YmNhNGRlYTU1OGNmMjUyZTc2MjNlOWM4My4uNmJkMmEyODM2ZTVjZmIz
ODc2MGJhNjAzYjI1YTZiODAzZDJhZTIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcApAQCAtMzQyLDcgKzM0Miw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiAhZXhl
Yy0+YXJndW1lbnQoMCkuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFu
IE9iamVjdCBvciBudWxsLiIpKTsKICAgICBKU09iamVjdCogbmV3T2JqZWN0ID0gY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYyk7Ci0gICAgbmV3T2JqZWN0LT5zZXRQcm90b3R5cGUoZXhlYy0+YXJn
dW1lbnQoMCkpOworICAgIG5ld09iamVjdC0+c2V0UHJvdG90eXBlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudCgxKS5pc1VuZGVm
aW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5ld09iamVjdCk7CiAgICAg
aWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQpAQCAtMzU1LDcgKzM1NSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JTZWFsKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
b2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJPYmplY3Quc2VhbCBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0
cy4iKSk7Ci0gICAgYXNPYmplY3Qob2JqKS0+c2VhbCgpOworICAgIGFzT2JqZWN0KG9iaiktPnNl
YWwoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7
CiB9CiAKQEAgLTM2NCw3ICszNjQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9i
amVjdENvbnN0cnVjdG9yRnJlZXplKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIG9iaiA9
IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIGlmICghb2JqLmlzT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJPYmplY3QuZnJl
ZXplIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICBhc09iamVjdChvYmop
LT5mcmVlemUoKTsKKyAgICBhc09iamVjdChvYmopLT5mcmVlemUoZXhlYy0+Z2xvYmFsRGF0YSgp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iaik7CiB9CiAKQEAgLTM3Myw3ICszNzMs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVjdG9yUHJldmVu
dEV4dGVuc2lvbnMoRXhlY1N0YXRlKiBleGVjKQogICAgIEpTVmFsdWUgb2JqID0gZXhlYy0+YXJn
dW1lbnQoMCk7CiAgICAgaWYgKCFvYmouaXNPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIk9iamVjdC5wcmV2ZW50RXh0ZW5z
aW9ucyBjYW4gb25seSBiZSBjYWxsZWQgb24gT2JqZWN0cy4iKSk7Ci0gICAgYXNPYmplY3Qob2Jq
KS0+cHJldmVudEV4dGVuc2lvbnMoKTsKKyAgICBhc09iamVjdChvYmopLT5wcmV2ZW50RXh0ZW5z
aW9ucyhleGVjLT5nbG9iYWxEYXRhKCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2Jq
KTsKIH0KIApAQCAtMzgyLDcgKzM4Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0Q29uc3RydWN0b3JJc1NlYWxlZChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBv
YmogPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0
LmlzU2VhbGVkIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc09iamVjdChvYmopLT5pc1NlYWxlZCgpKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3Qob2JqKS0+aXNTZWFs
ZWQoZXhlYy0+Z2xvYmFsRGF0YSgpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9ySXNGcm96ZW4oRXhlY1N0YXRlKiBleGVjKQpAQCAtMzkwLDcg
KzM5MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JJ
c0Zyb3plbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1ZSBvYmogPSBleGVjLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIW9iai5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiT2JqZWN0LmlzRnJvemVuIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBPYmplY3RzLiIpKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihhc09iamVjdChvYmopLT5pc0Zyb3plbigpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0Jvb2xlYW4oYXNPYmplY3Qob2JqKS0+aXNGcm96ZW4oZXhlYy0+Z2xvYmFsRGF0
YSgpKSkpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0cnVj
dG9ySXNFeHRlbnNpYmxlKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaAppbmRleCBiMWY0NzRmNzM2Mzg5NzBkN2YzZWQxMTZiYjM4YzUw
MWY5ZWU5NzIxLi5jMTAyZWViZWQzYWE2NjM2OTlmZmM1MTlmNTk2NDc5N2Q0YTFmMWU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCkBAIC00MzAsNyArNDMw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBpZiAoY2VsbC0+c3RydWN0dXJlKCkt
PmlzRGljdGlvbmFyeSgpKSB7CiAgICAgICAgICAgICAgICAgYXNPYmplY3QoY2VsbCktPmZsYXR0
ZW5EaWN0aW9uYXJ5T2JqZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpKTsKICAgICAgICAgICAg
ICAgICBpZiAoc2xvdEJhc2UgPT0gY2VsbCkKLSAgICAgICAgICAgICAgICAgICAgc2xvdE9mZnNl
dCA9IGNlbGwtPnN0cnVjdHVyZSgpLT5nZXQocHJvcGVydHlOYW1lKTsgCisgICAgICAgICAgICAg
ICAgICAgIHNsb3RPZmZzZXQgPSBjZWxsLT5zdHJ1Y3R1cmUoKS0+Z2V0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBwcm9wZXJ0eU5hbWUpOyAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
Kytjb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCmluZGV4IGMwMDBkYzgxYWYwMWJmNmRhMjE2MjliNzVhZWZhODE2MDI2
Y2RmZDUuLmVkYmQzNWY0OGEyNmMyOGQ2OWQwZTFjNDc0NjI4ZmFjZTcxODAxYjggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aApAQCAtNzMsMTMgKzczLDEzIEBAIHN0cnVjdCBQcm9wZXJ0eU1hcEVudHJ5IHsKICAgICBTdHJp
bmdJbXBsKiBrZXk7CiAgICAgdW5zaWduZWQgb2Zmc2V0OwogICAgIHVuc2lnbmVkIGF0dHJpYnV0
ZXM7Ci0gICAgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlOworICAgIFdyaXRlQmFycmllcjxKU0NlbGw+
IHNwZWNpZmljVmFsdWU7CiAKLSAgICBQcm9wZXJ0eU1hcEVudHJ5KFN0cmluZ0ltcGwqIGtleSwg
dW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFs
dWUpCisgICAgUHJvcGVydHlNYXBFbnRyeShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpTQ2Vs
bCogb3duZXIsIFN0cmluZ0ltcGwqIGtleSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBhdHRy
aWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCiAgICAgICAgIDoga2V5KGtleSkKICAgICAg
ICAgLCBvZmZzZXQob2Zmc2V0KQogICAgICAgICAsIGF0dHJpYnV0ZXMoYXR0cmlidXRlcykKLSAg
ICAgICAgLCBzcGVjaWZpY1ZhbHVlKHNwZWNpZmljVmFsdWUpCisgICAgICAgICwgc3BlY2lmaWNW
YWx1ZShnbG9iYWxEYXRhLCBvd25lciwgc3BlY2lmaWNWYWx1ZSkKICAgICB7CiAgICAgfQogfTsK
QEAgLTE0MSw5ICsxNDEsOSBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8VmFsdWVU
eXBlKiwgdW5zaWduZWQ+IGZpbmRfaXRlcmF0b3I7CiAKICAgICAvLyBDb25zdHJ1Y3RvciBpcyBw
YXNzZWQgYW4gaW5pdGlhbCBjYXBhY2l0eSwgYSBQcm9wZXJ0eVRhYmxlIHRvIGNvcHksIG9yIGJv
dGguCi0gICAgUHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOwotICAgIFBy
b3BlcnR5VGFibGUoY29uc3QgUHJvcGVydHlUYWJsZSYpOwotICAgIFByb3BlcnR5VGFibGUodW5z
aWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CisgICAgZXhwbGlj
aXQgUHJvcGVydHlUYWJsZSh1bnNpZ25lZCBpbml0aWFsQ2FwYWNpdHkpOworICAgIFByb3BlcnR5
VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYpOworICAg
IFByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5zaWduZWQgaW5pdGlhbENh
cGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJik7CiAgICAgflByb3BlcnR5VGFibGUoKTsKIAog
ICAgIC8vIE9yZGVyZWQgaXRlcmF0aW9uIG1ldGhvZHMuCkBAIC0xNzYsNyArMTc2LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBvZmZzZXQpOwogCiAgICAg
Ly8gQ29weSB0aGlzIFByb3BlcnR5VGFibGUsIGVuc3VyaW5nIHRoZSBjb3B5IGhhcyBhdCBsZWFz
dCB0aGUgY2FwYWNpdHkgcHJvdmlkZWQuCi0gICAgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBj
b3B5KHVuc2lnbmVkIG5ld0NhcGFjaXR5KTsKKyAgICBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+
IGNvcHkoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiBvd25lciwgdW5zaWduZWQgbmV3Q2FwYWNpdHkp
OwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHNpemVfdCBzaXplSW5NZW1vcnkoKTsKQEAgLTE4NCw2
ICsxODQsNyBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKKyAgICBQcm9wZXJ0eVRhYmxl
KGNvbnN0IFByb3BlcnR5VGFibGUmKTsKICAgICAvLyBVc2VkIHRvIGluc2VydCBhIHZhbHVlIGtu
b3duIG5vdCB0byBiZSBpbiB0aGUgdGFibGUsIGFuZCB3aGVyZSB3ZSBrbm93IGNhcGFjaXR5IHRv
IGJlIGF2YWlsYWJsZS4KICAgICB2b2lkIHJlaW5zZXJ0KGNvbnN0IFZhbHVlVHlwZSYgZW50cnkp
OwogCkBAIC0yNDMsNyArMjQ0LDcgQEAgaW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUodW5zaWduZWQgaW5pdGlhbENhcGFjaXR5KQogICAgIEFTU0VSVChpc1Bvd2VyT2YyKG1faW5k
ZXhTaXplKSk7CiB9CiAKLWlubGluZSBQcm9wZXJ0eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKGNvbnN0
IFByb3BlcnR5VGFibGUmIG90aGVyKQoraW5saW5lIFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFi
bGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgY29uc3QgUHJvcGVydHlUYWJsZSYgb3RoZXIpCiAg
ICAgOiBtX2luZGV4U2l6ZShvdGhlci5tX2luZGV4U2l6ZSkKICAgICAsIG1faW5kZXhNYXNrKG90
aGVyLm1faW5kZXhNYXNrKQogICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1bnNpZ25lZCo+KGZh
c3RNYWxsb2MoZGF0YVNpemUoKSkpKQpAQCAtMjY0LDcgKzI2NSw3IEBAIGlubGluZSBQcm9wZXJ0
eVRhYmxlOjpQcm9wZXJ0eVRhYmxlKGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQogICAgICAg
ICBtX2RlbGV0ZWRPZmZzZXRzLnNldChuZXcgVmVjdG9yPHVuc2lnbmVkPigqb3RoZXJEZWxldGVk
T2Zmc2V0cykpOwogfQogCi1pbmxpbmUgUHJvcGVydHlUYWJsZTo6UHJvcGVydHlUYWJsZSh1bnNp
Z25lZCBpbml0aWFsQ2FwYWNpdHksIGNvbnN0IFByb3BlcnR5VGFibGUmIG90aGVyKQoraW5saW5l
IFByb3BlcnR5VGFibGU6OlByb3BlcnR5VGFibGUoSlNHbG9iYWxEYXRhJiwgSlNDZWxsKiwgdW5z
aWduZWQgaW5pdGlhbENhcGFjaXR5LCBjb25zdCBQcm9wZXJ0eVRhYmxlJiBvdGhlcikKICAgICA6
IG1faW5kZXhTaXplKHNpemVGb3JDYXBhY2l0eShpbml0aWFsQ2FwYWNpdHkpKQogICAgICwgbV9p
bmRleE1hc2sobV9pbmRleFNpemUgLSAxKQogICAgICwgbV9pbmRleChzdGF0aWNfY2FzdDx1bnNp
Z25lZCo+KGZhc3RaZXJvZWRNYWxsb2MoZGF0YVNpemUoKSkpKQpAQCAtNDQzLDE1ICs0NDQsMTUg
QEAgaW5saW5lIHZvaWQgUHJvcGVydHlUYWJsZTo6YWRkRGVsZXRlZE9mZnNldCh1bnNpZ25lZCBv
ZmZzZXQpCiAgICAgbV9kZWxldGVkT2Zmc2V0cy0+YXBwZW5kKG9mZnNldCk7CiB9CiAKLWlubGlu
ZSBQYXNzT3duUHRyPFByb3BlcnR5VGFibGU+IFByb3BlcnR5VGFibGU6OmNvcHkodW5zaWduZWQg
bmV3Q2FwYWNpdHkpCitpbmxpbmUgUGFzc093blB0cjxQcm9wZXJ0eVRhYmxlPiBQcm9wZXJ0eVRh
YmxlOjpjb3B5KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSlNDZWxsKiBvd25lciwgdW5zaWdu
ZWQgbmV3Q2FwYWNpdHkpCiB7CiAgICAgQVNTRVJUKG5ld0NhcGFjaXR5ID49IG1fa2V5Q291bnQp
OwogCiAgICAgLy8gRmFzdCBjYXNlOyBpZiB0aGUgbmV3IHRhYmxlIHdpbGwgYmUgdGhlIHNhbWUg
bV9pbmRleFNpemUgYXMgdGhpcyBvbmUsIHdlIGNhbiBtZW1jcHkgaXQsCiAgICAgLy8gc2F2ZSBy
ZWhhc2hpbmcgYWxsIGtleXMuCiAgICAgaWYgKHNpemVGb3JDYXBhY2l0eShuZXdDYXBhY2l0eSkg
PT0gbV9pbmRleFNpemUpCi0gICAgICAgIHJldHVybiBuZXcgUHJvcGVydHlUYWJsZSgqdGhpcyk7
Ci0gICAgcmV0dXJuIG5ldyBQcm9wZXJ0eVRhYmxlKG5ld0NhcGFjaXR5LCAqdGhpcyk7CisgICAg
ICAgIHJldHVybiBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgKnRoaXMpOwor
ICAgIHJldHVybiBuZXcgUHJvcGVydHlUYWJsZShnbG9iYWxEYXRhLCBvd25lciwgbmV3Q2FwYWNp
dHksICp0aGlzKTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCmluZGV4IDEzMWVhNmJkZTMwYTU2MDk3NTE5OGRlMTE3ZmY0
MmVjNjdiNzliN2UuLmJkN2Q5ZGRhOTAxNzJhZTYyNWM3M2YwM2I3M2FlZmIyMmNjYTBmN2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMjk0LDcg
KzI5NCw3IEBAIHZvaWQgU3RydWN0dXJlOjpzdG9wSWdub3JpbmdMZWFrcygpCiAjZW5kaWYKIH0K
IAotdm9pZCBTdHJ1Y3R1cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoKQordm9pZCBTdHJ1Y3R1
cmU6Om1hdGVyaWFsaXplUHJvcGVydHlNYXAoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogewog
ICAgIEFTU0VSVCghbV9wcm9wZXJ0eVRhYmxlKTsKIApAQCAtMzA5LDcgKzMwOSw3IEBAIHZvaWQg
U3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCkKICAgICAgICAgICAgIEFTU0VSVChz
dHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZSk7CiAgICAgICAgICAgICBBU1NFUlQoIXN0cnVjdHVy
ZS0+bV9wcmV2aW91cyk7CiAKLSAgICAgICAgICAgIG1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVy
ZS0+bV9wcm9wZXJ0eVRhYmxlLT5jb3B5KG1fb2Zmc2V0ICsgMSk7CisgICAgICAgICAgICBtX3By
b3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS0+Y29weShnbG9iYWxEYXRh
LCAwLCBtX29mZnNldCArIDEpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAt
MzIxLDcgKzMyMSw3IEBAIHZvaWQgU3RydWN0dXJlOjptYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCkK
IAogICAgIGZvciAocHRyZGlmZl90IGkgPSBzdHJ1Y3R1cmVzLnNpemUoKSAtIDI7IGkgPj0gMDsg
LS1pKSB7CiAgICAgICAgIHN0cnVjdHVyZSA9IHN0cnVjdHVyZXNbaV07Ci0gICAgICAgIFByb3Bl
cnR5TWFwRW50cnkgZW50cnkoc3RydWN0dXJlLT5tX25hbWVJblByZXZpb3VzLmdldCgpLCBtX2Fu
b255bW91c1Nsb3RDb3VudCArIHN0cnVjdHVyZS0+bV9vZmZzZXQsIHN0cnVjdHVyZS0+bV9hdHRy
aWJ1dGVzSW5QcmV2aW91cywgc3RydWN0dXJlLT5tX3NwZWNpZmljVmFsdWVJblByZXZpb3VzKTsK
KyAgICAgICAgUHJvcGVydHlNYXBFbnRyeSBlbnRyeShnbG9iYWxEYXRhLCAwLCBzdHJ1Y3R1cmUt
Pm1fbmFtZUluUHJldmlvdXMuZ2V0KCksIG1fYW5vbnltb3VzU2xvdENvdW50ICsgc3RydWN0dXJl
LT5tX29mZnNldCwgc3RydWN0dXJlLT5tX2F0dHJpYnV0ZXNJblByZXZpb3VzLCBzdHJ1Y3R1cmUt
Pm1fc3BlY2lmaWNWYWx1ZUluUHJldmlvdXMpOwogICAgICAgICBtX3Byb3BlcnR5VGFibGUtPmFk
ZChlbnRyeSk7CiAgICAgfQogfQpAQCAtMzM0LDE4ICszMzQsMTggQEAgdm9pZCBTdHJ1Y3R1cmU6
Omdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpCiAgICAgICAgIG1fcHJvcGVydHlTdG9yYWdl
Q2FwYWNpdHkgKj0gMjsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeURpY3Rpb25hcnlG
dW5jdGlvbihjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCit2b2lkIFN0cnVjdHVyZTo6
ZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewogICAgIFN0cmluZ0ltcGwqIHJlcCA9IHBy
b3BlcnR5TmFtZS5pbXBsKCk7CiAKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7
CiAKICAgICBBU1NFUlQoaXNEaWN0aW9uYXJ5KCkpOwogICAgIEFTU0VSVChtX3Byb3BlcnR5VGFi
bGUpOwogCiAgICAgUHJvcGVydHlNYXBFbnRyeSogZW50cnkgPSBtX3Byb3BlcnR5VGFibGUtPmZp
bmQocmVwKS5maXJzdDsKICAgICBBU1NFUlQoZW50cnkpOwotICAgIGVudHJ5LT5zcGVjaWZpY1Zh
bHVlID0gMDsKKyAgICBlbnRyeS0+c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCiBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5n
U3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90
JiBvZmZzZXQpCkBAIC0zODcsOSArMzg3LDkgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwKICAg
ICAgICAgc3BlY2lmaWNWYWx1ZSA9IDA7CiAKICAgICBpZiAoc3RydWN0dXJlLT50cmFuc2l0aW9u
Q291bnQoKSA+IHNfbWF4VHJhbnNpdGlvbkxlbmd0aCkgewotICAgICAgICBSZWZQdHI8U3RydWN0
dXJlPiB0cmFuc2l0aW9uID0gdG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1
cmUpOworICAgICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0gdG9DYWNoZWFibGVE
aWN0aW9uYXJ5VHJhbnNpdGlvbihnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogICAgICAgICBBU1NF
UlQoc3RydWN0dXJlICE9IHRyYW5zaXRpb24pOwotICAgICAgICBvZmZzZXQgPSB0cmFuc2l0aW9u
LT5wdXQocHJvcGVydHlOYW1lLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAg
b2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIEFTU0VSVChvZmZzZXQgPj0gc3RydWN0dXJl
LT5tX2Fub255bW91c1Nsb3RDb3VudCk7CiAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPm1fYW5v
bnltb3VzU2xvdENvdW50ID09IHRyYW5zaXRpb24tPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAg
ICAgICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5zaXRpb24t
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCkBAIC00MDcsMTcgKzQwNywxNyBAQCBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLAogCiAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcm9wZXJ0eVRhYmxlKSB7
CiAgICAgICAgIGlmIChzdHJ1Y3R1cmUtPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlKQotICAgICAg
ICAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3BlcnR5
VGFibGUtPmNvcHkoc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUtPnNpemUoKSArIDEpOworICAg
ICAgICAgICAgdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5tX3Byb3Bl
cnR5VGFibGUtPmNvcHkoZ2xvYmFsRGF0YSwgMCwgc3RydWN0dXJlLT5tX3Byb3BlcnR5VGFibGUt
PnNpemUoKSArIDEpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5tX3By
b3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPm1fcHJvcGVydHlUYWJsZS5yZWxlYXNlKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgaWYgKHN0cnVjdHVyZS0+bV9wcmV2aW91cykKLSAgICAgICAgICAg
IHRyYW5zaXRpb24tPm1hdGVyaWFsaXplUHJvcGVydHlNYXAoKTsKKyAgICAgICAgICAgIHRyYW5z
aXRpb24tPm1hdGVyaWFsaXplUHJvcGVydHlNYXAoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRyYW5zaXRpb24tPmNyZWF0ZVByb3BlcnR5TWFwKCk7CiAgICAgfQogCi0g
ICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KHByb3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3Bl
Y2lmaWNWYWx1ZSk7CisgICAgb2Zmc2V0ID0gdHJhbnNpdGlvbi0+cHV0KGdsb2JhbERhdGEsIHBy
b3BlcnR5TmFtZSwgYXR0cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgQVNTRVJUKG9mZnNl
dCA+PSBzdHJ1Y3R1cmUtPm1fYW5vbnltb3VzU2xvdENvdW50KTsKICAgICBBU1NFUlQoc3RydWN0
dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCA9PSB0cmFuc2l0aW9uLT5tX2Fub255bW91c1Nsb3RD
b3VudCk7CiAgICAgaWYgKHRyYW5zaXRpb24tPnByb3BlcnR5U3RvcmFnZVNpemUoKSA+IHRyYW5z
aXRpb24tPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpCkBAIC00MjksMTEgKzQyOSwxMSBAQCBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLAogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2UoKTsK
IH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cmVtb3ZlUHJvcGVydHlUcmFu
c2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5h
bWUsIHNpemVfdCYgb2Zmc2V0KQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZz
ZXQpCiB7CiAgICAgQVNTRVJUKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkp
OwogCi0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHRvVW5jYWNoZWFibGVEaWN0
aW9uYXJ5VHJhbnNpdGlvbihzdHJ1Y3R1cmUpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5z
aXRpb24gPSB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3Ry
dWN0dXJlKTsKIAogICAgIG9mZnNldCA9IHRyYW5zaXRpb24tPnJlbW92ZShwcm9wZXJ0eU5hbWUp
OwogICAgIEFTU0VSVChvZmZzZXQgPj0gc3RydWN0dXJlLT5tX2Fub255bW91c1Nsb3RDb3VudCk7
CkBAIC00NDIsNyArNDQyLDcgQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6cmVt
b3ZlUHJvcGVydHlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLAogICAgIHJldHVybiB0
cmFuc2l0aW9uLnJlbGVhc2UoKTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVy
ZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1
ZSBwcm90b3R5cGUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpjaGFuZ2VQcm90
b3R5cGVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIEpTVmFsdWUgcHJvdG90eXBlKQogewogICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5z
aXRpb24gPSBjcmVhdGUoc3RydWN0dXJlKTsKIApAQCAtNDUwLDE1ICs0NTAsMTUgQEAgUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6Y2hhbmdlUHJvdG90eXBlVHJhbnNpdGlvbihTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwKIAogICAgIC8vIERvbid0IHNldCBtX29mZnNldCwgYXMgb25lIGNh
biBub3QgdHJhbnNpdGlvbiB0byB0aGlzLgogCi0gICAgc3RydWN0dXJlLT5tYXRlcmlhbGl6ZVBy
b3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKLSAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUg
PSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKCk7CisgICAgc3RydWN0dXJlLT5tYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CisgICAgdHJhbnNpdGlvbi0+
bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZShnbG9iYWxEYXRh
KTsKICAgICB0cmFuc2l0aW9uLT5tX2lzUGlubmVkUHJvcGVydHlUYWJsZSA9IHRydWU7CiAgICAg
CiAgICAgQVNTRVJUKHN0cnVjdHVyZS0+YW5vbnltb3VzU2xvdENvdW50KCkgPT0gdHJhbnNpdGlv
bi0+YW5vbnltb3VzU2xvdENvdW50KCkpOwogICAgIHJldHVybiB0cmFuc2l0aW9uLnJlbGVhc2Uo
KTsKIH0KIAotUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5RnVuY3Rp
b25UcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25zdCBJZGVudGlmaWVyJiByZXBs
YWNlRnVuY3Rpb24pCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlG
dW5jdGlvblRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSwgY29uc3QgSWRlbnRpZmllciYgcmVwbGFjZUZ1bmN0aW9uKQogewogICAgIEFTU0VS
VChzdHJ1Y3R1cmUtPm1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50IDwgbWF4U3BlY2lmaWNG
dW5jdGlvblRocmFzaENvdW50KTsKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0cmFuc2l0aW9uID0g
Y3JlYXRlKHN0cnVjdHVyZSk7CkBAIC00NjcsMTQgKzQ2NywxNCBAQCBQYXNzUmVmUHRyPFN0cnVj
dHVyZT4gU3RydWN0dXJlOjpkZXNwZWNpZnlGdW5jdGlvblRyYW5zaXRpb24oU3RydWN0dXJlKiBz
dHJ1Y3R1cgogCiAgICAgLy8gRG9uJ3Qgc2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFu
c2l0aW9uIHRvIHRoaXMuCiAKLSAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJ
Zk5lY2Vzc2FyeSgpOwotICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVy
ZS0+Y29weVByb3BlcnR5VGFibGUoKTsKKyAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVy
dHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5
VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOwogICAgIHRy
YW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKIAogICAgIGlmICh0cmFu
c2l0aW9uLT5tX3NwZWNpZmljRnVuY3Rpb25UaHJhc2hDb3VudCA9PSBtYXhTcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQpCi0gICAgICAgIHRyYW5zaXRpb24tPmRlc3BlY2lmeUFsbEZ1bmN0aW9u
cygpOworICAgICAgICB0cmFuc2l0aW9uLT5kZXNwZWNpZnlBbGxGdW5jdGlvbnMoZ2xvYmFsRGF0
YSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGJvb2wgcmVtb3ZlZCA9IHRyYW5zaXRpb24tPmRlc3Bl
Y2lmeUZ1bmN0aW9uKHJlcGxhY2VGdW5jdGlvbik7CisgICAgICAgIGJvb2wgcmVtb3ZlZCA9IHRy
YW5zaXRpb24tPmRlc3BlY2lmeUZ1bmN0aW9uKGdsb2JhbERhdGEsIHJlcGxhY2VGdW5jdGlvbik7
CiAgICAgICAgIEFTU0VSVF9VTlVTRUQocmVtb3ZlZCwgcmVtb3ZlZCk7CiAgICAgfQogICAgIApA
QCAtNDgyLDI4ICs0ODIsMjggQEAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6ZGVz
cGVjaWZ5RnVuY3Rpb25UcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXIKICAgICByZXR1cm4g
dHJhbnNpdGlvbi5yZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1
cmU6OmdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpnZXR0ZXJTZXR0ZXJUcmFuc2l0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7CiAgICAgUmVmUHRyPFN0
cnVjdHVyZT4gdHJhbnNpdGlvbiA9IGNyZWF0ZShzdHJ1Y3R1cmUpOwogCiAgICAgLy8gRG9uJ3Qg
c2V0IG1fb2Zmc2V0LCBhcyBvbmUgY2FuIG5vdCB0cmFuc2l0aW9uIHRvIHRoaXMuCiAKLSAgICBz
dHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAgIHRyYW5z
aXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoKTsK
KyAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxE
YXRhKTsKKyAgICB0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQ
cm9wZXJ0eVRhYmxlKGdsb2JhbERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9w
ZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICAKICAgICBBU1NFUlQoc3RydWN0dXJlLT5hbm9ueW1vdXNT
bG90Q291bnQoKSA9PSB0cmFuc2l0aW9uLT5hbm9ueW1vdXNTbG90Q291bnQoKSk7CiAgICAgcmV0
dXJuIHRyYW5zaXRpb24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3Ry
dWN0dXJlOjp0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlLCBEaWN0
aW9uYXJ5S2luZCBraW5kKQorUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9EaWN0
aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCBEaWN0aW9uYXJ5S2luZCBraW5kKQogewogICAgIEFTU0VSVCghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKTsKICAgICAKICAgICBSZWZQdHI8U3RydWN0dXJlPiB0
cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CiAKLSAgICBzdHJ1Y3R1cmUtPm1hdGVyaWFs
aXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOwotICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlU
YWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5VGFibGUoKTsKKyAgICBzdHJ1Y3R1cmUtPm1h
dGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKKyAgICB0cmFuc2l0
aW9uLT5tX3Byb3BlcnR5VGFibGUgPSBzdHJ1Y3R1cmUtPmNvcHlQcm9wZXJ0eVRhYmxlKGdsb2Jh
bERhdGEpOwogICAgIHRyYW5zaXRpb24tPm1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsK
ICAgICB0cmFuc2l0aW9uLT5tX2RpY3Rpb25hcnlLaW5kID0ga2luZDsKICAgICAKQEAgLTUxMSwy
MCArNTExLDIwIEBAIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnRvRGljdGlvbmFy
eVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIERpCiAgICAgcmV0dXJuIHRyYW5zaXRp
b24ucmVsZWFzZSgpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b0Nh
Y2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSogc3RydWN0dXJlKQorUGFzc1Jl
ZlB0cjxTdHJ1Y3R1cmU+IFN0cnVjdHVyZTo6dG9DYWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogewotICAg
IHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKHN0cnVjdHVyZSwgQ2FjaGVkRGljdGlvbmFy
eUtpbmQpOworICAgIHJldHVybiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgQ2FjaGVkRGljdGlvbmFyeUtpbmQpOwogfQogCi1QYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjp0b1VuY2FjaGVh
YmxlRGljdGlvbmFyeVRyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKIHsKLSAgICByZXR1cm4gdG9EaWN0aW9uYXJ5VHJhbnNpdGlvbihzdHJ1
Y3R1cmUsIFVuY2FjaGVkRGljdGlvbmFyeUtpbmQpOworICAgIHJldHVybiB0b0RpY3Rpb25hcnlU
cmFuc2l0aW9uKGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCk7
CiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRyYW5zaXRpb24u
Ci1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpzZWFsVHJhbnNpdGlvbihTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSkKK1Bhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OnNlYWxUcmFu
c2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7
Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4gdHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJh
bnNpdGlvbihzdHJ1Y3R1cmUpOworICAgIFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBw
cmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAg
IGlmICh0cmFuc2l0aW9uLT5tX3Byb3BlcnR5VGFibGUpIHsKICAgICAgICAgUHJvcGVydHlUYWJs
ZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNpdGlvbi0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKQEAg
LTUzNiw5ICs1MzYsOSBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpzZWFsVHJh
bnNpdGlvbihTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3
YW50IHRvIGNhY2hlIHRoaXMgdHJhbnNpdGlvbi4KLVBhc3NSZWZQdHI8U3RydWN0dXJlPiBTdHJ1
Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitQYXNzUmVmUHRy
PFN0cnVjdHVyZT4gU3RydWN0dXJlOjpmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiB7Ci0gICAgUmVmUHRyPFN0cnVjdHVyZT4g
dHJhbnNpdGlvbiA9IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlvbihzdHJ1Y3R1cmUpOworICAg
IFJlZlB0cjxTdHJ1Y3R1cmU+IHRyYW5zaXRpb24gPSBwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRp
b24oZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIGlmICh0cmFuc2l0aW9uLT5tX3Byb3Bl
cnR5VGFibGUpIHsKICAgICAgICAgUHJvcGVydHlUYWJsZTo6aXRlcmF0b3IgZW5kID0gdHJhbnNp
dGlvbi0+bV9wcm9wZXJ0eVRhYmxlLT5lbmQoKTsKQEAgLTU1MCwxNCArNTUwLDE0IEBAIFBhc3NS
ZWZQdHI8U3RydWN0dXJlPiBTdHJ1Y3R1cmU6OmZyZWV6ZVRyYW5zaXRpb24oU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiB9CiAKIC8vIEluIGZ1dHVyZSB3ZSBtYXkgd2FudCB0byBjYWNoZSB0aGlzIHRy
YW5zaXRpb24uCi1QYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5z
aW9uc1RyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCitQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gU3RydWN0dXJlOjpwcmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIHsKICAgICBSZWZQdHI8U3RydWN0dXJl
PiB0cmFuc2l0aW9uID0gY3JlYXRlKHN0cnVjdHVyZSk7CiAKICAgICAvLyBEb24ndCBzZXQgbV9v
ZmZzZXQsIGFzIG9uZSBjYW4gbm90IHRyYW5zaXRpb24gdG8gdGhpcy4KIAotICAgIHN0cnVjdHVy
ZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7Ci0gICAgdHJhbnNpdGlvbi0+
bV9wcm9wZXJ0eVRhYmxlID0gc3RydWN0dXJlLT5jb3B5UHJvcGVydHlUYWJsZSgpOworICAgIHN0
cnVjdHVyZS0+bWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwor
ICAgIHRyYW5zaXRpb24tPm1fcHJvcGVydHlUYWJsZSA9IHN0cnVjdHVyZS0+Y29weVByb3BlcnR5
VGFibGUoZ2xvYmFsRGF0YSk7CiAgICAgdHJhbnNpdGlvbi0+bV9pc1Bpbm5lZFByb3BlcnR5VGFi
bGUgPSB0cnVlOwogICAgIHRyYW5zaXRpb24tPm1fcHJldmVudEV4dGVuc2lvbnMgPSB0cnVlOwog
CkBAIC01NjYsMTIgKzU2NiwxMiBAQCBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gU3RydWN0dXJlOjpw
cmV2ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oU3RydWN0dXJlKiBzdHJ1Y3R1cgogfQogCiAvLyBJ
biBmdXR1cmUgd2UgbWF5IHdhbnQgdG8gY2FjaGUgdGhpcyBwcm9wZXJ0eS4KLWJvb2wgU3RydWN0
dXJlOjppc1NlYWxlZCgpCitib29sIFN0cnVjdHVyZTo6aXNTZWFsZWQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQogewogICAgIGlmIChpc0V4dGVuc2libGUoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgbWF0ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KCk7CisgICAgbWF0
ZXJpYWxpemVQcm9wZXJ0eU1hcElmTmVjZXNzYXJ5KGdsb2JhbERhdGEpOwogICAgIGlmICghbV9w
cm9wZXJ0eVRhYmxlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIApAQCAtNTg0LDEyICs1ODQsMTIg
QEAgYm9vbCBTdHJ1Y3R1cmU6OmlzU2VhbGVkKCkKIH0KIAogLy8gSW4gZnV0dXJlIHdlIG1heSB3
YW50IHRvIGNhY2hlIHRoaXMgcHJvcGVydHkuCi1ib29sIFN0cnVjdHVyZTo6aXNGcm96ZW4oKQor
Ym9vbCBTdHJ1Y3R1cmU6OmlzRnJvemVuKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKIHsKICAg
ICBpZiAoaXNFeHRlbnNpYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1hdGVy
aWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeShnbG9iYWxEYXRhKTsKICAgICBpZiAoIW1fcHJvcGVydHlUYWJsZSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTYzMCwzMCArNjMwLDMwIEBAIFBhc3NSZWZQdHI8U3Ry
dWN0dXJlPiBTdHJ1Y3R1cmU6OmZsYXR0ZW5EaWN0aW9uYXJ5U3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKLXNpemVfdCBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1
bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0
dXJlOjphZGRQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBK
U0NlbGwqIHNwZWNpZmljVmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX2VudW1lcmF0aW9uQ2FjaGUp
OwogCiAgICAgaWYgKG1fc3BlY2lmaWNGdW5jdGlvblRocmFzaENvdW50ID09IG1heFNwZWNpZmlj
RnVuY3Rpb25UaHJhc2hDb3VudCkKICAgICAgICAgc3BlY2lmaWNWYWx1ZSA9IDA7CiAKLSAgICBt
YXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAKICAgICBtX2lzUGlubmVkUHJvcGVydHlU
YWJsZSA9IHRydWU7CiAKLSAgICBzaXplX3Qgb2Zmc2V0ID0gcHV0KHByb3BlcnR5TmFtZSwgYXR0
cmlidXRlcywgc3BlY2lmaWNWYWx1ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IHB1dChnbG9iYWxE
YXRhLCBwcm9wZXJ0eU5hbWUsIGF0dHJpYnV0ZXMsIHNwZWNpZmljVmFsdWUpOwogICAgIEFTU0VS
VChvZmZzZXQgPj0gbV9hbm9ueW1vdXNTbG90Q291bnQpOwogICAgIGlmIChwcm9wZXJ0eVN0b3Jh
Z2VTaXplKCkgPiBwcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKQogICAgICAgICBncm93UHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICByZXR1cm4gb2Zmc2V0OwogfQogCi1zaXplX3QgU3Ry
dWN0dXJlOjpyZW1vdmVQcm9wZXJ0eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkKK3NpemVfdCBTdHJ1Y3R1cmU6OnJlbW92ZVByb3BlcnR5V2l0aG91dFRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpCiB7CiAgICAgQVNTRVJUKGlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkpOwogICAg
IEFTU0VSVCghbV9lbnVtZXJhdGlvbkNhY2hlKTsKIAotICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeSgpOworICAgIG1hdGVyaWFsaXplUHJvcGVydHlNYXBJZk5lY2Vzc2FyeShn
bG9iYWxEYXRhKTsKIAogICAgIG1faXNQaW5uZWRQcm9wZXJ0eVRhYmxlID0gdHJ1ZTsKICAgICBz
aXplX3Qgb2Zmc2V0ID0gcmVtb3ZlKHByb3BlcnR5TmFtZSk7CkBAIC02ODgsMTQgKzY4OCwxNCBA
QCBpbmxpbmUgdm9pZCBTdHJ1Y3R1cmU6OmNoZWNrQ29uc2lzdGVuY3koKQogCiAjZW5kaWYKIAot
UHJvcGVydHlUYWJsZSogU3RydWN0dXJlOjpjb3B5UHJvcGVydHlUYWJsZSgpCitQcm9wZXJ0eVRh
YmxlKiBTdHJ1Y3R1cmU6OmNvcHlQcm9wZXJ0eVRhYmxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKIHsKLSAgICByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8gbmV3IFByb3BlcnR5VGFibGUoKm1f
cHJvcGVydHlUYWJsZSkgOiAwOworICAgIHJldHVybiBtX3Byb3BlcnR5VGFibGUgPyBuZXcgUHJv
cGVydHlUYWJsZShnbG9iYWxEYXRhLCAwLCAqbV9wcm9wZXJ0eVRhYmxlKSA6IDA7CiB9CiAKLXNp
emVfdCBTdHJ1Y3R1cmU6OmdldChTdHJpbmdJbXBsKiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkJiBh
dHRyaWJ1dGVzLCBKU0NlbGwqJiBzcGVjaWZpY1ZhbHVlKQorc2l6ZV90IFN0cnVjdHVyZTo6Z2V0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNp
Z25lZCYgYXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKIHsKLSAgICBtYXRlcmlh
bGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFw
SWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAg
ICAgIHJldHVybiBXVEY6Om5vdEZvdW5kOwogCkBAIC03MDQsMTQgKzcwNCwxNCBAQCBzaXplX3Qg
U3RydWN0dXJlOjpnZXQoU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmli
dXRlcywgSlNDZWxsKiYgcwogICAgICAgICByZXR1cm4gV1RGOjpub3RGb3VuZDsKIAogICAgIGF0
dHJpYnV0ZXMgPSBlbnRyeS0+YXR0cmlidXRlczsKLSAgICBzcGVjaWZpY1ZhbHVlID0gZW50cnkt
PnNwZWNpZmljVmFsdWU7CisgICAgc3BlY2lmaWNWYWx1ZSA9IGVudHJ5LT5zcGVjaWZpY1ZhbHVl
LmdldCgpOwogICAgIEFTU0VSVChlbnRyeS0+b2Zmc2V0ID49IG1fYW5vbnltb3VzU2xvdENvdW50
KTsKICAgICByZXR1cm4gZW50cnktPm9mZnNldDsKIH0KIAotYm9vbCBTdHJ1Y3R1cmU6OmRlc3Bl
Y2lmeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKK2Jvb2wgU3RydWN0
dXJlOjpkZXNwZWNpZnlGdW5jdGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFs
RGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IApAQCAtNzIxLDI1ICs3MjEsMjUgQEAgYm9vbCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUZ1bmN0aW9u
KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgQVNTRVJUKGVudHJ5LT5zcGVjaWZpY1ZhbHVlKTsKLSAgICBlbnRyeS0+c3BlY2lmaWNW
YWx1ZSA9IDA7CisgICAgZW50cnktPnNwZWNpZmljVmFsdWUuY2xlYXIoKTsKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAotdm9pZCBTdHJ1Y3R1cmU6OmRlc3BlY2lmeUFsbEZ1bmN0aW9ucygpCit2b2lk
IFN0cnVjdHVyZTo6ZGVzcGVjaWZ5QWxsRnVuY3Rpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKIHsKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoKTsKKyAgICBtYXRl
cmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFsRGF0YSk7CiAgICAgaWYgKCFtX3By
b3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFByb3BlcnR5VGFibGU6Oml0ZXJh
dG9yIGVuZCA9IG1fcHJvcGVydHlUYWJsZS0+ZW5kKCk7CiAgICAgZm9yIChQcm9wZXJ0eVRhYmxl
OjppdGVyYXRvciBpdGVyID0gbV9wcm9wZXJ0eVRhYmxlLT5iZWdpbigpOyBpdGVyICE9IGVuZDsg
KytpdGVyKQotICAgICAgICBpdGVyLT5zcGVjaWZpY1ZhbHVlID0gMDsKKyAgICAgICAgaXRlci0+
c3BlY2lmaWNWYWx1ZS5jbGVhcigpOwogfQogCi1zaXplX3QgU3RydWN0dXJlOjpwdXQoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBKU0NlbGwqIHNw
ZWNpZmljVmFsdWUpCitzaXplX3QgU3RydWN0dXJlOjpwdXQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIGF0dHJpYnV0ZXMs
IEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSkKIHsKICAgICBBU1NFUlQoIXByb3BlcnR5TmFtZS5pc051
bGwoKSk7Ci0gICAgQVNTRVJUKGdldChwcm9wZXJ0eU5hbWUpID09IG5vdEZvdW5kKTsKKyAgICBB
U1NFUlQoZ2V0KGdsb2JhbERhdGEsIHByb3BlcnR5TmFtZSkgPT0gbm90Rm91bmQpOwogCiAgICAg
Y2hlY2tDb25zaXN0ZW5jeSgpOwogICAgIGlmIChhdHRyaWJ1dGVzICYgRG9udEVudW0pCkBAIC03
NTgsNyArNzU4LDcgQEAgc2l6ZV90IFN0cnVjdHVyZTo6cHV0KGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0cmlidXRlcywgSlNDZWwKICAgICAgICAgbmV3T2Zmc2V0
ID0gbV9wcm9wZXJ0eVRhYmxlLT5zaXplKCkgKyBtX2Fub255bW91c1Nsb3RDb3VudDsKICAgICBB
U1NFUlQobmV3T2Zmc2V0ID49IG1fYW5vbnltb3VzU2xvdENvdW50KTsKIAotICAgIG1fcHJvcGVy
dHlUYWJsZS0+YWRkKFByb3BlcnR5TWFwRW50cnkocmVwLCBuZXdPZmZzZXQsIGF0dHJpYnV0ZXMs
IHNwZWNpZmljVmFsdWUpKTsKKyAgICBtX3Byb3BlcnR5VGFibGUtPmFkZChQcm9wZXJ0eU1hcEVu
dHJ5KGdsb2JhbERhdGEsIDAsIHJlcCwgbmV3T2Zmc2V0LCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1Zh
bHVlKSk7CiAKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAgICAgcmV0dXJuIG5ld09mZnNldDsK
QEAgLTc5OCw5ICs3OTgsOSBAQCB2b2lkIFN0cnVjdHVyZTo6Y3JlYXRlUHJvcGVydHlNYXAodW5z
aWduZWQgY2FwYWNpdHkpCiAgICAgY2hlY2tDb25zaXN0ZW5jeSgpOwogfQogCi12b2lkIFN0cnVj
dHVyZTo6Z2V0UHJvcGVydHlOYW1lcyhQcm9wZXJ0eU5hbWVBcnJheSYgcHJvcGVydHlOYW1lcywg
RW51bWVyYXRpb25Nb2RlIG1vZGUpCit2b2lkIFN0cnVjdHVyZTo6Z2V0UHJvcGVydHlOYW1lcyhK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb3BlcnR5TmFtZUFycmF5JiBwcm9wZXJ0eU5hbWVz
LCBFbnVtZXJhdGlvbk1vZGUgbW9kZSkKIHsKLSAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoKTsKKyAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3NhcnkoZ2xvYmFs
RGF0YSk7CiAgICAgaWYgKCFtX3Byb3BlcnR5VGFibGUpCiAgICAgICAgIHJldHVybjsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAppbmRleCAyZGY1NjkxMzFjNTI5
MDZkMDlhMWNkNjQzN2QzYWM2MmUzMTI4NjIxLi45NGEwNmIyZjk2OWYyZWQzZmY3ZGRlMGJlNmYx
MWNiODQ4ZGNiODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aApAQCAtNzYsMTggKzc2LDE4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWduZWQgYXR0
cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlLCBzaXplX3QmIG9mZnNldCk7CiAgICAgICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gYWRkUHJvcGVydHlUcmFuc2l0aW9uVG9FeGlz
dGluZ1N0cnVjdHVyZShTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSwgc2l6ZV90JiBvZmZz
ZXQpOwotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHJlbW92ZVByb3BlcnR5
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHNp
emVfdCYgb2Zmc2V0KTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBjaGFu
Z2VQcm90b3R5cGVUcmFuc2l0aW9uKFN0cnVjdHVyZSosIEpTVmFsdWUgcHJvdG90eXBlKTsKLSAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBkZXNwZWNpZnlGdW5jdGlvblRyYW5z
aXRpb24oU3RydWN0dXJlKiwgY29uc3QgSWRlbnRpZmllciYpOwotICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTdHJ1Y3R1cmU+IGdldHRlclNldHRlclRyYW5zaXRpb24oU3RydWN0dXJlKik7Ci0g
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gdG9DYWNoZWFibGVEaWN0aW9uYXJ5
VHJhbnNpdGlvbihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiB0b1VuY2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24oU3RydWN0dXJlKik7Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gc2VhbFRyYW5zaXRpb24oU3RydWN0dXJl
Kik7Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZnJlZXplVHJhbnNpdGlv
bihTdHJ1Y3R1cmUqKTsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBwcmV2
ZW50RXh0ZW5zaW9uc1RyYW5zaXRpb24oU3RydWN0dXJlKik7Ci0KLSAgICAgICAgYm9vbCBpc1Nl
YWxlZCgpOwotICAgICAgICBib29sIGlzRnJvemVuKCk7CisgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gcmVtb3ZlUHJvcGVydHlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSosIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgc2l6ZV90JiBvZmZzZXQp
OworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNoYW5nZVByb3RvdHlwZVRy
YW5zaXRpb24oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgSlNWYWx1ZSBwcm90b3R5cGUpOwor
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGRlc3BlY2lmeUZ1bmN0aW9uVHJh
bnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBjb25zdCBJZGVudGlmaWVyJik7Cisg
ICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVyZT4gZ2V0dGVyU2V0dGVyVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiB0b0NhY2hlYWJsZURpY3Rpb25hcnlUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOworICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHRvVW5j
YWNoZWFibGVEaWN0aW9uYXJ5VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
KyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiBzZWFsVHJhbnNpdGlvbihKU0ds
b2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0
dXJlPiBmcmVlemVUcmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOworICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IHByZXZlbnRFeHRlbnNpb25zVHJhbnNpdGlv
bihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKKworICAgICAgICBib29sIGlzU2VhbGVkKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICBib29sIGlzRnJvemVuKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICBib29sIGlzRXh0ZW5zaWJsZSgpIGNvbnN0IHsgcmV0dXJuICFtX3ByZXZlbnRFeHRlbnNp
b25zOyB9CiAKICAgICAgICAgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGZsYXR0ZW5EaWN0aW9uYXJ5
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTT2JqZWN0Kik7CkBAIC05NSw4ICs5NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB+U3RydWN0dXJlKCk7CiAKICAgICAgICAgLy8gVGhlc2Ug
c2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLiAgCi0gICAgICAgIHNpemVfdCBhZGRQcm9wZXJ0
eVdpdGhvdXRUcmFuc2l0aW9uKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKLSAgICAgICAgc2l6ZV90IHJl
bW92ZVByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlO
YW1lKTsKKyAgICAgICAgc2l6ZV90IGFkZFByb3BlcnR5V2l0aG91dFRyYW5zaXRpb24oSlNHbG9i
YWxEYXRhJiwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1
dGVzLCBKU0NlbGwqIHNwZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgcmVtb3ZlUHJvcGVy
dHlXaXRob3V0VHJhbnNpdGlvbihKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eU5hbWUpOwogICAgICAgICB2b2lkIHNldFByb3RvdHlwZVdpdGhvdXRUcmFuc2l0aW9uKEpT
VmFsdWUgcHJvdG90eXBlKSB7IG1fcHJvdG90eXBlID0gcHJvdG90eXBlOyB9CiAgICAgICAgIAog
ICAgICAgICBib29sIGlzRGljdGlvbmFyeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGljdGlvbmFyeUtp
bmQgIT0gTm9uZURpY3Rpb25hcnlLaW5kOyB9CkBAIC0xMjAsMTIgKzEyMCwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQgcHJvcGVydHlTdG9yYWdlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYW5vbnltb3VzU2xvdENvdW50ICsgKG1fcHJvcGVydHlUYWJsZSA/IG1fcHJvcGVy
dHlUYWJsZS0+cHJvcGVydHlTdG9yYWdlU2l6ZSgpIDogc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1f
b2Zmc2V0ICsgMSkpOyB9CiAgICAgICAgIGJvb2wgaXNVc2luZ0lubGluZVN0b3JhZ2UoKSBjb25z
dDsKIAotICAgICAgICBzaXplX3QgZ2V0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIHNpemVfdCBnZXQoU3RyaW5nSW1wbCogcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSk7Ci0gICAgICAgIHNpemVfdCBnZXQo
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYgYXR0cmlidXRlcywgSlND
ZWxsKiYgc3BlY2lmaWNWYWx1ZSkKKyAgICAgICAgc2l6ZV90IGdldChKU0dsb2JhbERhdGEmLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xv
YmFsRGF0YSYsIFN0cmluZ0ltcGwqIHByb3BlcnR5TmFtZSwgdW5zaWduZWQmIGF0dHJpYnV0ZXMs
IEpTQ2VsbComIHNwZWNpZmljVmFsdWUpOworICAgICAgICBzaXplX3QgZ2V0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCYg
YXR0cmlidXRlcywgSlNDZWxsKiYgc3BlY2lmaWNWYWx1ZSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKCFwcm9wZXJ0eU5hbWUuaXNOdWxsKCkpOwotICAgICAgICAgICAgcmV0dXJuIGdl
dChwcm9wZXJ0eU5hbWUuaW1wbCgpLCBhdHRyaWJ1dGVzLCBzcGVjaWZpY1ZhbHVlKTsKKyAgICAg
ICAgICAgIHJldHVybiBnZXQoZ2xvYmFsRGF0YSwgcHJvcGVydHlOYW1lLmltcGwoKSwgYXR0cmli
dXRlcywgc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGhhc0dldHRl
clNldHRlclByb3BlcnRpZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc0dldHRlclNldHRlclByb3Bl
cnRpZXM7IH0KQEAgLTEzOCwxMiArMTM4LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9wcm9wZXJ0eVRhYmxlID8g
bV9wcm9wZXJ0eVRhYmxlLT5pc0VtcHR5KCkgOiBtX29mZnNldCA9PSBub09mZnNldDsgfQogCi0g
ICAgICAgIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9uKGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSk7CisgICAgICAgIHZvaWQgZGVzcGVjaWZ5RGljdGlvbmFyeUZ1bmN0aW9u
KEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSk7CiAgICAgICAg
IHZvaWQgZGlzYWJsZVNwZWNpZmljRnVuY3Rpb25UcmFja2luZygpIHsgbV9zcGVjaWZpY0Z1bmN0
aW9uVGhyYXNoQ291bnQgPSBtYXhTcGVjaWZpY0Z1bmN0aW9uVGhyYXNoQ291bnQ7IH0KIAogICAg
ICAgICB2b2lkIHNldEVudW1lcmF0aW9uQ2FjaGUoSlNHbG9iYWxEYXRhJiwgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvciogZW51bWVyYXRpb25DYWNoZSk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oLgogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBlbnVtZXJhdGlv
bkNhY2hlKCk7IC8vIERlZmluZWQgaW4gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oLgotICAgICAg
ICB2b2lkIGdldFByb3BlcnR5TmFtZXMoUHJvcGVydHlOYW1lQXJyYXkmLCBFbnVtZXJhdGlvbk1v
ZGUgbW9kZSk7CisgICAgICAgIHZvaWQgZ2V0UHJvcGVydHlOYW1lcyhKU0dsb2JhbERhdGEmLCBQ
cm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSBtb2RlKTsKIAogICAgICAgICBjb25z
dCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAK
QEAgLTE3OCwyMyArMTc4LDIzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgQ2FjaGVk
RGljdGlvbmFyeUtpbmQgPSAxLAogICAgICAgICAgICAgVW5jYWNoZWREaWN0aW9uYXJ5S2luZCA9
IDIKICAgICAgICAgfSBEaWN0aW9uYXJ5S2luZDsKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8
U3RydWN0dXJlPiB0b0RpY3Rpb25hcnlUcmFuc2l0aW9uKFN0cnVjdHVyZSosIERpY3Rpb25hcnlL
aW5kKTsKKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U3RydWN0dXJlPiB0b0RpY3Rpb25hcnlU
cmFuc2l0aW9uKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIERpY3Rpb25hcnlLaW5kKTsKIAot
ICAgICAgICBzaXplX3QgcHV0KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgdW5zaWdu
ZWQgYXR0cmlidXRlcywgSlNDZWxsKiBzcGVjaWZpY1ZhbHVlKTsKKyAgICAgICAgc2l6ZV90IHB1
dChKU0dsb2JhbERhdGEmLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIHVuc2lnbmVk
IGF0dHJpYnV0ZXMsIEpTQ2VsbCogc3BlY2lmaWNWYWx1ZSk7CiAgICAgICAgIHNpemVfdCByZW1v
dmUoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKTsKIAogICAgICAgICB2b2lkIGNyZWF0
ZVByb3BlcnR5TWFwKHVuc2lnbmVkIGtleUNvdW50ID0gMCk7CiAgICAgICAgIHZvaWQgY2hlY2tD
b25zaXN0ZW5jeSgpOwogCi0gICAgICAgIGJvb2wgZGVzcGVjaWZ5RnVuY3Rpb24oY29uc3QgSWRl
bnRpZmllciYpOwotICAgICAgICB2b2lkIGRlc3BlY2lmeUFsbEZ1bmN0aW9ucygpOworICAgICAg
ICBib29sIGRlc3BlY2lmeUZ1bmN0aW9uKEpTR2xvYmFsRGF0YSYsIGNvbnN0IElkZW50aWZpZXIm
KTsKKyAgICAgICAgdm9pZCBkZXNwZWNpZnlBbGxGdW5jdGlvbnMoSlNHbG9iYWxEYXRhJik7CiAK
LSAgICAgICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5VGFibGUoKTsKLSAgICAgICAgdm9p
ZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwKCk7Ci0gICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9w
ZXJ0eU1hcElmTmVjZXNzYXJ5KCkKKyAgICAgICAgUHJvcGVydHlUYWJsZSogY29weVByb3BlcnR5
VGFibGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgbWF0ZXJpYWxpemVQcm9wZXJ0eU1h
cChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZO
ZWNlc3NhcnkoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgICAgICB7CiAgICAgICAgICAg
ICBpZiAoIW1fcHJvcGVydHlUYWJsZSAmJiBtX3ByZXZpb3VzKQotICAgICAgICAgICAgICAgIG1h
dGVyaWFsaXplUHJvcGVydHlNYXAoKTsKKyAgICAgICAgICAgICAgICBtYXRlcmlhbGl6ZVByb3Bl
cnR5TWFwKGdsb2JhbERhdGEpOwogICAgICAgICB9CiAKICAgICAgICAgc2lnbmVkIGNoYXIgdHJh
bnNpdGlvbkNvdW50KCkgY29uc3QKQEAgLTI1MSw5ICsyNTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgLy8gNCBmcmVlIGJpdHMKICAgICB9OwogCi0gICAgaW5saW5lIHNpemVfdCBTdHJ1
Y3R1cmU6OmdldChjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgaW5saW5lIHNp
emVfdCBTdHJ1Y3R1cmU6OmdldChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5TmFtZSkKICAgICB7Ci0gICAgICAgIG1hdGVyaWFsaXplUHJvcGVydHlN
YXBJZk5lY2Vzc2FyeSgpOworICAgICAgICBtYXRlcmlhbGl6ZVByb3BlcnR5TWFwSWZOZWNlc3Nh
cnkoZ2xvYmFsRGF0YSk7CiAgICAgICAgIGlmICghbV9wcm9wZXJ0eVRhYmxlKQogICAgICAgICAg
ICAgcmV0dXJuIG5vdEZvdW5kOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgyNDNlNjgzNzYyM2JlM2FiNTgx
YTVjZDI1YmY4YmE4NzgxNjg3Ny4uOTkzYzBiYjQ4OGU2MzA0OTdhYWFiYWU2MGExOGE3MzRjZGYz
ZDk4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDExLTA0LTEzICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTWFrZSBQcm9wZXJ0eU1hcEVudHJ5IHVzZSBhIFdyaXRlQmFycmllciBm
b3Igc3BlY2lmaWNWYWx1ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTg0MDcKKworICAgICAgICBQYXNzIEpTR2xvYmFsRGF0YSByZWZlcmVuY2Ugb24g
dG8gQVBJcyB0aGF0IG5vdyBuZWVkIHRoZW0KKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93U2hlbGw6OnNldFdp
bmRvdyk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNIVE1MRG9jdW1lbnQ6OmFsbCk6CisKIDIwMTEtMDQtMTIgIFBh
dmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93U2hlbGwuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93U2hlbGwuaAppbmRleCA0MzA3YzFjNDYxYjBmZjQ2YmY4YTNhNzdiYWI4ZWMyZTUwNGY5
YmI2Li41NzViMjk2YzQ5Y2VjYjM1OGUxODQ4MmNkNmI1OGRjMGZmY2NkYmI1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd1NoZWxsLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5oCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUX0FS
Ryh3aW5kb3csIHdpbmRvdyk7CiAgICAgICAgICAgICBtX3dpbmRvdy5zZXQoZ2xvYmFsRGF0YSwg
dGhpcywgd2luZG93KTsKLSAgICAgICAgICAgIHNldFByb3RvdHlwZSh3aW5kb3ctPnByb3RvdHlw
ZSgpKTsKKyAgICAgICAgICAgIHNldFByb3RvdHlwZShnbG9iYWxEYXRhLCB3aW5kb3ctPnByb3Rv
dHlwZSgpKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIHNldFdpbmRvdyhQYXNzUmVmUHRyPERP
TVdpbmRvdz4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hU
TUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxE
b2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMTkyZWY1ZGI4NTMzYWZhZTA0ZjNiZjA5MTI5N2IwN2Rm
ZGE2NDdlNy4uYzMzZjg1OWZiMjA1NTQxODBiMzk5NzFlZjM3ZDU2YTZmYmJhM2RjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNw
cApAQCAtODYsNyArODYsNyBAQCBKU1ZhbHVlIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbgogSlNWYWx1ZSBKU0hU
TUxEb2N1bWVudDo6YWxsKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKIHsKICAgICAvLyBJZiAiYWxs
IiBoYXMgYmVlbiBvdmVyd3JpdHRlbiwgcmV0dXJuIHRoZSBvdmVyd3JpdHRlbiB2YWx1ZQotICAg
IEpTVmFsdWUgdiA9IGdldERpcmVjdChJZGVudGlmaWVyKGV4ZWMsICJhbGwiKSk7CisgICAgSlNW
YWx1ZSB2ID0gZ2V0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgSWRlbnRpZmllcihleGVjLCAi
YWxsIikpOwogICAgIGlmICh2KQogICAgICAgICByZXR1cm4gdjsKIAo=
</data>
<flag name="review"
          id="82059"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>